summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2017-10-08 23:54:46 -0400
committerGitHub <noreply@github.com>2017-10-08 23:54:46 -0400
commitb0d49dbbfbfcf39c2a9f88572437b6af77c8f709 (patch)
treebe0dadd4cb3a6c36e27233836a6f104359d49949
parentb21c159b08c57a948edb268ac9b9b5baf6b4332d (diff)
parent3776a9fb4f0531535b0b5879dab7b3b6bd231736 (diff)
Merge branch 'master' into scaninc
-rw-r--r--.gitignore1
-rw-r--r--Makefile23
-rw-r--r--README.md18
-rw-r--r--asm-de/battle_message.s2342
-rw-r--r--asm-de/berry_blender.s9141
-rw-r--r--asm-de/contest_link_80C2020.s4
-rw-r--r--asm-de/easy_chat.s2
-rw-r--r--asm/battle_2.s58
-rw-r--r--asm/battle_3.s12017
-rw-r--r--asm/battle_4.s32351
-rw-r--r--asm/battle_5.s4591
-rw-r--r--asm/battle_9.s1484
-rw-r--r--asm/battle_anim_807B69C.s960
-rw-r--r--asm/battle_anim_80CA710.s2172
-rw-r--r--asm/battle_anim_81258BC.s1420
-rw-r--r--asm/battle_anim_812C144.s454
-rw-r--r--asm/battle_anim_813F0F4.s120
-rw-r--r--asm/battle_message.s2403
-rw-r--r--asm/battle_tower.s14
-rw-r--r--asm/battle_transition.s6254
-rw-r--r--asm/berry_blender.s9164
-rw-r--r--asm/cable_car.s8
-rw-r--r--asm/cable_club.s1671
-rw-r--r--asm/contest.s2
-rw-r--r--asm/contest_link_80C2020.s4
-rw-r--r--asm/cute_sketch.s439
-rw-r--r--asm/daycare.s2399
-rw-r--r--asm/easy_chat.s2
-rw-r--r--asm/egg_hatch.s1630
-rw-r--r--asm/evolution_graphics.s1829
-rw-r--r--asm/evolution_scene.s6717
-rw-r--r--asm/field_effect_helpers.s4349
-rw-r--r--asm/field_fadetransition.s1221
-rw-r--r--asm/field_ground_effect.s1302
-rw-r--r--asm/field_map_obj.s628
-rw-r--r--asm/fldeff_80C5CD4.s68
-rw-r--r--asm/hall_of_fame.s3402
-rw-r--r--asm/intro_credits_graphics.s1166
-rw-r--r--asm/learn_move.s2739
-rw-r--r--asm/macros/event.inc504
-rw-r--r--asm/mauville_old_man.s1522
-rw-r--r--asm/mystery_event_script.s831
-rw-r--r--asm/party_menu.s24
-rw-r--r--asm/pokeblock_feed.s1836
-rw-r--r--asm/pokedex_area_screen.s6
-rw-r--r--asm/pokemon_menu.s3438
-rw-r--r--asm/pokemon_storage_system.s4
-rw-r--r--asm/pokemon_summary_screen.s4
-rw-r--r--asm/pokenav.s8
-rw-r--r--asm/reshow_battle_screen.s1097
-rw-r--r--asm/shop.s2613
-rw-r--r--asm/slot_machine.s4
-rw-r--r--asm/trade.s12050
-rw-r--r--asmdiff.sh7
-rw-r--r--common_syms/battle/battle_anim.txt (renamed from common_syms/battle_anim.txt)0
-rw-r--r--common_syms/debug/mori_debug_menu.txt (renamed from common_syms/mori_debug_menu.txt)0
-rw-r--r--common_syms/debug/sound_check_menu.txt (renamed from common_syms/sound_check_menu.txt)1
-rw-r--r--common_syms/engine/link.txt (renamed from common_syms/link.txt)0
-rw-r--r--common_syms/engine/load_save.txt (renamed from common_syms/load_save.txt)0
-rw-r--r--common_syms/engine/main.txt (renamed from common_syms/main.txt)0
-rw-r--r--common_syms/engine/record_mixing.txt (renamed from common_syms/record_mixing.txt)0
-rw-r--r--common_syms/engine/rng.txt (renamed from common_syms/rng.txt)0
-rw-r--r--common_syms/engine/rtc.txt (renamed from common_syms/rtc.txt)0
-rw-r--r--common_syms/engine/save.txt (renamed from common_syms/save.txt)0
-rw-r--r--common_syms/engine/sound.txt (renamed from common_syms/sound.txt)0
-rw-r--r--common_syms/engine/sprite.txt (renamed from common_syms/sprite.txt)0
-rw-r--r--common_syms/engine/string_util.txt (renamed from common_syms/string_util.txt)0
-rw-r--r--common_syms/engine/task.txt (renamed from common_syms/task.txt)0
-rw-r--r--common_syms/field/field_camera.txt (renamed from common_syms/field_camera.txt)0
-rw-r--r--common_syms/field/field_control_avatar.txt (renamed from common_syms/field_control_avatar.txt)0
-rw-r--r--common_syms/field/field_map_obj.txt (renamed from common_syms/field_map_obj.txt)0
-rw-r--r--common_syms/field/fieldmap.txt (renamed from common_syms/fieldmap.txt)0
-rw-r--r--common_syms/field/overworld.txt (renamed from common_syms/rom4.txt)0
-rw-r--r--common_syms/field/start_menu.txt (renamed from common_syms/start_menu.txt)0
-rw-r--r--common_syms/field/tv.txt (renamed from common_syms/tv.txt)0
-rw-r--r--common_syms/libs/agb_flash.txt (renamed from common_syms/agb_flash.txt)0
-rw-r--r--common_syms/libs/m4a_2.txt (renamed from common_syms/m4a_2.txt)0
-rw-r--r--common_syms/pokemon/pokeblock_feed.txt12
-rw-r--r--common_syms/pokemon/pokedex.txt (renamed from common_syms/pokedex.txt)0
-rw-r--r--common_syms/pokemon/pokemon_1.txt (renamed from common_syms/pokemon_1.txt)0
-rw-r--r--common_syms/pokemon/pokemon_menu.txt2
-rw-r--r--common_syms/scene/berry_blender.txt4
-rw-r--r--common_syms/scene/contest_painting.txt (renamed from common_syms/contest_painting.txt)0
-rw-r--r--common_syms/scene/cute_sketch.txt0
-rw-r--r--common_syms/scene/egg_hatch.txt1
-rw-r--r--common_syms/scene/evolution_scene.txt1
-rw-r--r--common_syms/scene/intro.txt (renamed from common_syms/intro.txt)0
-rw-r--r--data-de/event_scripts.s1313
-rw-r--r--data-de/field_move_scripts.inc162
-rw-r--r--data-de/text/bard.inc18
-rw-r--r--data-de/text/giddy.inc8
-rw-r--r--data-de/text/hipster.inc8
-rw-r--r--data-de/text/storyteller.inc236
-rw-r--r--data-de/text/trader.inc28
-rw-r--r--data/battle_811DA74.s64
-rw-r--r--data/battle_anim_807B69C.s23
-rw-r--r--data/battle_anim_81258BC.s64
-rw-r--r--data/battle_anim_8137220.s64
-rw-r--r--data/battle_moves.s (renamed from data/battle_moves.inc)5
-rw-r--r--data/battle_scripts_1.s386
-rw-r--r--data/battle_scripts_2.s8
-rw-r--r--data/battle_transition.s399
-rw-r--r--data/berry_blender.s456
-rw-r--r--data/data2a.s (renamed from data/data2.s)777
-rw-r--r--data/data2b.s78
-rw-r--r--data/daycare.s17
-rw-r--r--data/egg_hatch.s122
-rw-r--r--data/egg_moves.inc1306
-rw-r--r--data/event_scripts.s1316
-rw-r--r--data/evolution_graphics.s70
-rw-r--r--data/evolution_scene.s14
-rw-r--r--data/field_effect_helpers.s37
-rw-r--r--data/field_ground_effect.s72
-rw-r--r--data/field_move_scripts.inc162
-rw-r--r--data/hall_of_fame.s230
-rw-r--r--data/ingame_trades.inc108
-rw-r--r--data/intro_credits_graphics.s4
-rw-r--r--data/learn_move.s150
-rw-r--r--data/maps/events/FieryPath.inc12
-rw-r--r--data/maps/events/GraniteCave_B2F.inc14
-rw-r--r--data/maps/events/PetalburgWoods.inc4
-rw-r--r--data/maps/events/Route102.inc4
-rw-r--r--data/maps/events/Route103.inc10
-rw-r--r--data/maps/events/Route104.inc22
-rw-r--r--data/maps/events/Route110.inc6
-rw-r--r--data/maps/events/Route110_TrickHousePuzzle1.inc30
-rw-r--r--data/maps/events/Route110_TrickHousePuzzle3.inc12
-rw-r--r--data/maps/events/Route110_TrickHousePuzzle4.inc22
-rw-r--r--data/maps/events/Route111.inc14
-rw-r--r--data/maps/events/Route112.inc8
-rw-r--r--data/maps/events/Route114.inc16
-rw-r--r--data/maps/events/Route115.inc12
-rw-r--r--data/maps/events/Route116.inc16
-rw-r--r--data/maps/events/Route117.inc8
-rw-r--r--data/maps/events/Route118.inc8
-rw-r--r--data/maps/events/Route119.inc14
-rw-r--r--data/maps/events/Route120.inc26
-rw-r--r--data/maps/events/Route121.inc22
-rw-r--r--data/maps/events/Route123.inc42
-rw-r--r--data/maps/events/Route130.inc2
-rw-r--r--data/maps/events/RusturfTunnel.inc4
-rw-r--r--data/maps/events/SafariZone_Northeast.inc12
-rw-r--r--data/maps/events/SeafloorCavern_Room1.inc6
-rw-r--r--data/maps/events/SeafloorCavern_Room2.inc18
-rw-r--r--data/maps/events/SeafloorCavern_Room3.inc18
-rw-r--r--data/maps/events/SeafloorCavern_Room5.inc12
-rw-r--r--data/maps/events/SeafloorCavern_Room8.inc24
-rw-r--r--data/maps/events/ShoalCave_LowTideLowerRoom.inc2
-rw-r--r--data/maps/events/VictoryRoad_B1F.inc28
-rw-r--r--data/mauville_old_man.s101
-rw-r--r--data/mon_pokeblock_anims.inc133
-rw-r--r--data/mystery_event_script_cmd_table.s22
-rw-r--r--data/pokeblock_feed.s225
-rw-r--r--data/pokemon_menu.s82
-rw-r--r--data/rom4.s66
-rw-r--r--data/script_cmd_table.inc398
-rw-r--r--data/script_funcs.s22
-rw-r--r--data/scripts/bard.inc67
-rw-r--r--data/scripts/berry_tree.inc76
-rw-r--r--data/scripts/cable_club.inc352
-rw-r--r--data/scripts/contest_hall.inc700
-rw-r--r--data/scripts/day_care.inc122
-rw-r--r--data/scripts/gabby_and_ty.inc60
-rw-r--r--data/scripts/giddy.inc51
-rw-r--r--data/scripts/hipster.inc25
-rw-r--r--data/scripts/magma_chimney.inc70
-rw-r--r--data/scripts/maps/AbandonedShip_CaptainsOffice.inc6
-rw-r--r--data/scripts/maps/AbandonedShip_Corridors_B1F.inc12
-rw-r--r--data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc42
-rw-r--r--data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc128
-rw-r--r--data/scripts/maps/AbandonedShip_Rooms2_1F.inc8
-rw-r--r--data/scripts/maps/AbandonedShip_Rooms_B1F.inc2
-rw-r--r--data/scripts/maps/AbandonedShip_Underwater1.inc2
-rw-r--r--data/scripts/maps/AbandonedShip_Underwater2.inc2
-rw-r--r--data/scripts/maps/AncientTomb.inc24
-rw-r--r--data/scripts/maps/AquaHideout_1F.inc4
-rw-r--r--data/scripts/maps/AquaHideout_B1F.inc4
-rw-r--r--data/scripts/maps/AquaHideout_B2F.inc44
-rw-r--r--data/scripts/maps/BattleTower_BattleRoom.inc54
-rw-r--r--data/scripts/maps/BattleTower_Corridor.inc18
-rw-r--r--data/scripts/maps/BattleTower_Elevator.inc16
-rw-r--r--data/scripts/maps/BattleTower_Lobby.inc140
-rw-r--r--data/scripts/maps/BattleTower_Outside.inc26
-rw-r--r--data/scripts/maps/CaveOfOrigin_1F.inc2
-rw-r--r--data/scripts/maps/CaveOfOrigin_B1F.inc2
-rw-r--r--data/scripts/maps/CaveOfOrigin_B2F.inc2
-rw-r--r--data/scripts/maps/CaveOfOrigin_B3F.inc2
-rw-r--r--data/scripts/maps/CaveOfOrigin_B4F.inc50
-rw-r--r--data/scripts/maps/DesertRuins.inc24
-rw-r--r--data/scripts/maps/DewfordTown.inc134
-rw-r--r--data/scripts/maps/DewfordTown_Gym.inc74
-rw-r--r--data/scripts/maps/DewfordTown_Hall.inc66
-rw-r--r--data/scripts/maps/DewfordTown_House1.inc4
-rw-r--r--data/scripts/maps/DewfordTown_House2.inc4
-rw-r--r--data/scripts/maps/DewfordTown_PokemonCenter_1F.inc2
-rw-r--r--data/scripts/maps/EverGrandeCity.inc2
-rw-r--r--data/scripts/maps/EverGrandeCity_ChampionsRoom.inc138
-rw-r--r--data/scripts/maps/EverGrandeCity_Corridor1.inc2
-rw-r--r--data/scripts/maps/EverGrandeCity_Corridor2.inc2
-rw-r--r--data/scripts/maps/EverGrandeCity_Corridor3.inc2
-rw-r--r--data/scripts/maps/EverGrandeCity_Corridor4.inc2
-rw-r--r--data/scripts/maps/EverGrandeCity_Corridor5.inc2
-rw-r--r--data/scripts/maps/EverGrandeCity_DrakesRoom.inc12
-rw-r--r--data/scripts/maps/EverGrandeCity_GlaciasRoom.inc12
-rw-r--r--data/scripts/maps/EverGrandeCity_HallOfFame.inc52
-rw-r--r--data/scripts/maps/EverGrandeCity_PhoebesRoom.inc12
-rw-r--r--data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc2
-rw-r--r--data/scripts/maps/EverGrandeCity_PokemonLeague.inc62
-rw-r--r--data/scripts/maps/EverGrandeCity_SidneysRoom.inc12
-rw-r--r--data/scripts/maps/FallarborTown.inc6
-rw-r--r--data/scripts/maps/FallarborTown_ContestLobby.inc36
-rw-r--r--data/scripts/maps/FallarborTown_House1.inc16
-rw-r--r--data/scripts/maps/FallarborTown_House2.inc28
-rw-r--r--data/scripts/maps/FallarborTown_Mart.inc6
-rw-r--r--data/scripts/maps/FallarborTown_PokemonCenter_1F.inc20
-rw-r--r--data/scripts/maps/FortreeCity.inc24
-rw-r--r--data/scripts/maps/FortreeCity_DecorationShop.inc4
-rw-r--r--data/scripts/maps/FortreeCity_Gym.inc18
-rw-r--r--data/scripts/maps/FortreeCity_House1.inc22
-rw-r--r--data/scripts/maps/FortreeCity_House2.inc6
-rw-r--r--data/scripts/maps/FortreeCity_House4.inc32
-rw-r--r--data/scripts/maps/FortreeCity_House5.inc4
-rw-r--r--data/scripts/maps/FortreeCity_Mart.inc2
-rw-r--r--data/scripts/maps/FortreeCity_PokemonCenter_1F.inc2
-rw-r--r--data/scripts/maps/GraniteCave_1F.inc2
-rw-r--r--data/scripts/maps/GraniteCave_B1F.inc2
-rw-r--r--data/scripts/maps/GraniteCave_StevensRoom.inc24
-rw-r--r--data/scripts/maps/InsideOfTruck.inc10
-rw-r--r--data/scripts/maps/IslandCave.inc32
-rw-r--r--data/scripts/maps/JaggedPass.inc10
-rw-r--r--data/scripts/maps/LavaridgeTown.inc152
-rw-r--r--data/scripts/maps/LavaridgeTown_Gym_1F.inc50
-rw-r--r--data/scripts/maps/LavaridgeTown_HerbShop.inc6
-rw-r--r--data/scripts/maps/LavaridgeTown_House.inc4
-rw-r--r--data/scripts/maps/LavaridgeTown_Mart.inc2
-rw-r--r--data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc2
-rw-r--r--data/scripts/maps/LilycoveCity.inc120
-rw-r--r--data/scripts/maps/LilycoveCity_ContestHall.inc114
-rw-r--r--data/scripts/maps/LilycoveCity_ContestLobby.inc298
-rw-r--r--data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc60
-rw-r--r--data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc16
-rw-r--r--data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc42
-rw-r--r--data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc94
-rw-r--r--data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc56
-rw-r--r--data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc4
-rw-r--r--data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc4
-rw-r--r--data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc4
-rw-r--r--data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc8
-rw-r--r--data/scripts/maps/LilycoveCity_Harbor.inc98
-rw-r--r--data/scripts/maps/LilycoveCity_House1.inc4
-rw-r--r--data/scripts/maps/LilycoveCity_House2.inc4
-rw-r--r--data/scripts/maps/LilycoveCity_House3.inc20
-rw-r--r--data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc34
-rw-r--r--data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc88
-rw-r--r--data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc20
-rw-r--r--data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc4
-rw-r--r--data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc182
-rw-r--r--data/scripts/maps/LittlerootTown.inc526
-rw-r--r--data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc60
-rw-r--r--data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc28
-rw-r--r--data/scripts/maps/LittlerootTown_MaysHouse_1F.inc72
-rw-r--r--data/scripts/maps/LittlerootTown_MaysHouse_2F.inc116
-rw-r--r--data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc64
-rw-r--r--data/scripts/maps/MagmaHideout_B1F.inc4
-rw-r--r--data/scripts/maps/MauvilleCity.inc136
-rw-r--r--data/scripts/maps/MauvilleCity_BikeShop.inc68
-rw-r--r--data/scripts/maps/MauvilleCity_GameCorner.inc370
-rw-r--r--data/scripts/maps/MauvilleCity_Gym.inc58
-rw-r--r--data/scripts/maps/MauvilleCity_House1.inc2
-rw-r--r--data/scripts/maps/MauvilleCity_House2.inc20
-rw-r--r--data/scripts/maps/MauvilleCity_Mart.inc2
-rw-r--r--data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc4
-rw-r--r--data/scripts/maps/MeteorFalls_1F_1R.inc116
-rw-r--r--data/scripts/maps/MeteorFalls_1F_2R.inc12
-rw-r--r--data/scripts/maps/MossdeepCity.inc12
-rw-r--r--data/scripts/maps/MossdeepCity_GameCorner_1F.inc74
-rw-r--r--data/scripts/maps/MossdeepCity_GameCorner_B1F.inc24
-rw-r--r--data/scripts/maps/MossdeepCity_Gym.inc96
-rw-r--r--data/scripts/maps/MossdeepCity_House1.inc6
-rw-r--r--data/scripts/maps/MossdeepCity_House2.inc20
-rw-r--r--data/scripts/maps/MossdeepCity_House3.inc4
-rw-r--r--data/scripts/maps/MossdeepCity_House4.inc8
-rw-r--r--data/scripts/maps/MossdeepCity_Mart.inc2
-rw-r--r--data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc2
-rw-r--r--data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc26
-rw-r--r--data/scripts/maps/MossdeepCity_StevensHouse.inc52
-rw-r--r--data/scripts/maps/MtChimney.inc36
-rw-r--r--data/scripts/maps/MtChimney_CableCarStation.inc30
-rw-r--r--data/scripts/maps/MtPyre_1F.inc4
-rw-r--r--data/scripts/maps/MtPyre_2F.inc2
-rw-r--r--data/scripts/maps/MtPyre_6F.inc4
-rw-r--r--data/scripts/maps/MtPyre_Exterior.inc2
-rw-r--r--data/scripts/maps/MtPyre_Summit.inc156
-rw-r--r--data/scripts/maps/NewMauville_Entrance.inc12
-rw-r--r--data/scripts/maps/NewMauville_Inside.inc34
-rw-r--r--data/scripts/maps/OldaleTown.inc126
-rw-r--r--data/scripts/maps/OldaleTown_Mart.inc6
-rw-r--r--data/scripts/maps/OldaleTown_PokemonCenter_1F.inc4
-rw-r--r--data/scripts/maps/PacifidlogTown_House2.inc40
-rw-r--r--data/scripts/maps/PacifidlogTown_House3.inc18
-rw-r--r--data/scripts/maps/PacifidlogTown_House4.inc4
-rw-r--r--data/scripts/maps/PacifidlogTown_House5.inc4
-rw-r--r--data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc2
-rw-r--r--data/scripts/maps/PetalburgCity.inc138
-rw-r--r--data/scripts/maps/PetalburgCity_Gym.inc428
-rw-r--r--data/scripts/maps/PetalburgCity_Mart.inc4
-rw-r--r--data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc12
-rw-r--r--data/scripts/maps/PetalburgCity_WallysHouse.inc16
-rw-r--r--data/scripts/maps/PetalburgWoods.inc128
-rw-r--r--data/scripts/maps/Route101.inc68
-rw-r--r--data/scripts/maps/Route102.inc4
-rw-r--r--data/scripts/maps/Route103.inc94
-rw-r--r--data/scripts/maps/Route104.inc86
-rw-r--r--data/scripts/maps/Route104_MrBrineysHouse.inc40
-rw-r--r--data/scripts/maps/Route104_PrettyPetalFlowerShop.inc28
-rw-r--r--data/scripts/maps/Route104_Prototype.inc34
-rw-r--r--data/scripts/maps/Route105.inc2
-rw-r--r--data/scripts/maps/Route106.inc4
-rw-r--r--data/scripts/maps/Route107.inc4
-rw-r--r--data/scripts/maps/Route109.inc112
-rw-r--r--data/scripts/maps/Route109_SeashoreHouse.inc38
-rw-r--r--data/scripts/maps/Route110.inc184
-rw-r--r--data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc16
-rw-r--r--data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc10
-rw-r--r--data/scripts/maps/Route110_TrickHouseEnd.inc116
-rw-r--r--data/scripts/maps/Route110_TrickHouseEntrance.inc304
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle1.inc8
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle2.inc22
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle3.inc64
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle4.inc6
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle5.inc390
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle6.inc6
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle7.inc80
-rw-r--r--data/scripts/maps/Route110_TrickHousePuzzle8.inc6
-rw-r--r--data/scripts/maps/Route111.inc194
-rw-r--r--data/scripts/maps/Route111_OldLadysRestStop.inc10
-rw-r--r--data/scripts/maps/Route111_WinstrateFamilysHouse.inc24
-rw-r--r--data/scripts/maps/Route112.inc4
-rw-r--r--data/scripts/maps/Route112_CableCarStation.inc32
-rw-r--r--data/scripts/maps/Route113.inc12
-rw-r--r--data/scripts/maps/Route113_GlassWorkshop.inc130
-rw-r--r--data/scripts/maps/Route114.inc22
-rw-r--r--data/scripts/maps/Route114_FossilManiacsHouse.inc4
-rw-r--r--data/scripts/maps/Route114_FossilManiacsTunnel.inc6
-rw-r--r--data/scripts/maps/Route114_LanettesHouse.inc8
-rw-r--r--data/scripts/maps/Route115.inc12
-rw-r--r--data/scripts/maps/Route116.inc88
-rw-r--r--data/scripts/maps/Route116_TunnelersRestHouse.inc2
-rw-r--r--data/scripts/maps/Route117.inc28
-rw-r--r--data/scripts/maps/Route118.inc70
-rw-r--r--data/scripts/maps/Route119.inc138
-rw-r--r--data/scripts/maps/Route119_House.inc4
-rw-r--r--data/scripts/maps/Route119_WeatherInstitute_1F.inc10
-rw-r--r--data/scripts/maps/Route119_WeatherInstitute_2F.inc42
-rw-r--r--data/scripts/maps/Route120.inc150
-rw-r--r--data/scripts/maps/Route121.inc24
-rw-r--r--data/scripts/maps/Route121_SafariZoneEntrance.inc60
-rw-r--r--data/scripts/maps/Route123.inc14
-rw-r--r--data/scripts/maps/Route123_BerryMastersHouse.inc62
-rw-r--r--data/scripts/maps/Route124.inc14
-rw-r--r--data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc78
-rw-r--r--data/scripts/maps/Route125.inc6
-rw-r--r--data/scripts/maps/Route126.inc2
-rw-r--r--data/scripts/maps/Route127.inc2
-rw-r--r--data/scripts/maps/Route128.inc112
-rw-r--r--data/scripts/maps/Route130.inc8
-rw-r--r--data/scripts/maps/Route131.inc4
-rw-r--r--data/scripts/maps/Route134.inc2
-rw-r--r--data/scripts/maps/RustboroCity.inc322
-rw-r--r--data/scripts/maps/RustboroCity_CuttersHouse.inc2
-rw-r--r--data/scripts/maps/RustboroCity_DevonCorp_1F.inc22
-rw-r--r--data/scripts/maps/RustboroCity_DevonCorp_2F.inc82
-rw-r--r--data/scripts/maps/RustboroCity_DevonCorp_3F.inc70
-rw-r--r--data/scripts/maps/RustboroCity_Flat2_1F.inc4
-rw-r--r--data/scripts/maps/RustboroCity_Flat2_2F.inc4
-rw-r--r--data/scripts/maps/RustboroCity_Gym.inc20
-rw-r--r--data/scripts/maps/RustboroCity_House1.inc16
-rw-r--r--data/scripts/maps/RustboroCity_House3.inc4
-rw-r--r--data/scripts/maps/RustboroCity_Mart.inc6
-rw-r--r--data/scripts/maps/RustboroCity_PokemonCenter_1F.inc2
-rw-r--r--data/scripts/maps/RustboroCity_PokemonSchool.inc44
-rw-r--r--data/scripts/maps/RusturfTunnel.inc188
-rw-r--r--data/scripts/maps/SSTidalCorridor.inc54
-rw-r--r--data/scripts/maps/SSTidalRooms.inc6
-rw-r--r--data/scripts/maps/SafariZone_Southeast.inc42
-rw-r--r--data/scripts/maps/SeafloorCavern_Entrance.inc4
-rw-r--r--data/scripts/maps/SeafloorCavern_Room9.inc136
-rw-r--r--data/scripts/maps/SealedChamber_InnerRoom.inc56
-rw-r--r--data/scripts/maps/SealedChamber_OuterRoom.inc56
-rw-r--r--data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc32
-rw-r--r--data/scripts/maps/ShoalCave_LowTideInnerRoom.inc58
-rw-r--r--data/scripts/maps/ShoalCave_LowTideLowerRoom.inc10
-rw-r--r--data/scripts/maps/ShoalCave_LowTideStairsRoom.inc6
-rw-r--r--data/scripts/maps/SkyPillar_2F.inc2
-rw-r--r--data/scripts/maps/SkyPillar_4F.inc2
-rw-r--r--data/scripts/maps/SkyPillar_Top.inc12
-rw-r--r--data/scripts/maps/SlateportCity.inc208
-rw-r--r--data/scripts/maps/SlateportCity_ContestHall.inc44
-rw-r--r--data/scripts/maps/SlateportCity_ContestLobby.inc40
-rw-r--r--data/scripts/maps/SlateportCity_Harbor.inc170
-rw-r--r--data/scripts/maps/SlateportCity_House1.inc26
-rw-r--r--data/scripts/maps/SlateportCity_House2.inc2
-rw-r--r--data/scripts/maps/SlateportCity_Mart.inc2
-rw-r--r--data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc84
-rw-r--r--data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc122
-rw-r--r--data/scripts/maps/SlateportCity_PokemonCenter_1F.inc2
-rw-r--r--data/scripts/maps/SlateportCity_PokemonFanClub.inc90
-rw-r--r--data/scripts/maps/SlateportCity_SternsShipyard_1F.inc40
-rw-r--r--data/scripts/maps/SootopolisCity.inc168
-rw-r--r--data/scripts/maps/SootopolisCity_Gym_1F.inc48
-rw-r--r--data/scripts/maps/SootopolisCity_House1.inc6
-rw-r--r--data/scripts/maps/SootopolisCity_House2.inc4
-rw-r--r--data/scripts/maps/SootopolisCity_House3.inc2
-rw-r--r--data/scripts/maps/SootopolisCity_House4.inc4
-rw-r--r--data/scripts/maps/SootopolisCity_House6.inc8
-rw-r--r--data/scripts/maps/SootopolisCity_House8.inc24
-rw-r--r--data/scripts/maps/SootopolisCity_Mart.inc10
-rw-r--r--data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc10
-rw-r--r--data/scripts/maps/SouthernIsland_Exterior.inc20
-rw-r--r--data/scripts/maps/SouthernIsland_Interior.inc42
-rw-r--r--data/scripts/maps/Underwater_Route134.inc2
-rw-r--r--data/scripts/maps/Underwater_SeafloorCavern.inc6
-rw-r--r--data/scripts/maps/Underwater_SealedChamber.inc14
-rw-r--r--data/scripts/maps/Underwater_SootopolisCity.inc2
-rw-r--r--data/scripts/maps/UnknownMap_25_34.inc156
-rw-r--r--data/scripts/maps/VerdanturfTown.inc12
-rw-r--r--data/scripts/maps/VerdanturfTown_ContestLobby.inc38
-rw-r--r--data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc6
-rw-r--r--data/scripts/maps/VerdanturfTown_Mart.inc2
-rw-r--r--data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc2
-rw-r--r--data/scripts/maps/VerdanturfTown_WandasHouse.inc16
-rw-r--r--data/scripts/maps/VictoryRoad_1F.inc36
-rw-r--r--data/scripts/mauville_man.inc357
-rw-r--r--data/scripts/mystery_event_club.inc34
-rw-r--r--data/scripts/players_house.inc282
-rw-r--r--data/scripts/pokeblocks.inc140
-rw-r--r--data/scripts/safari_zone.inc32
-rw-r--r--data/scripts/secret_power_tm.inc22
-rw-r--r--data/scripts/storyteller.inc82
-rw-r--r--data/scripts/trader.inc88
-rw-r--r--data/scripts/tv.inc50
-rw-r--r--data/shop.s69
-rw-r--r--data/specials.inc90
-rw-r--r--data/text/bard.inc18
-rw-r--r--data/text/giddy.inc8
-rw-r--r--data/text/hipster.inc8
-rw-r--r--data/text/storyteller.inc236
-rw-r--r--data/text/trader.inc28
-rw-r--r--data/trade.s774
-rw-r--r--data/trainer_see.s41
-rw-r--r--include/bard_music.h31
-rw-r--r--include/battle.h599
-rw-r--r--include/battle_anim.h4
-rw-r--r--include/battle_message.h20
-rw-r--r--include/battle_setup.h72
-rw-r--r--include/battle_transition.h40
-rw-r--r--include/berry_blender.h6
-rw-r--r--include/braille_puzzles.h2
-rw-r--r--include/cable_club.h30
-rw-r--r--include/data/field_map_obj/anim_func_ptrs.h2
-rw-r--r--include/data/field_map_obj/base_oam.h2
-rw-r--r--include/data/field_map_obj/berry_tree_graphics_tables.h2
-rw-r--r--include/data/field_map_obj/callback_subroutine_pointers.h4
-rw-r--r--include/data/field_map_obj/field_effect_object_template_pointers.h2
-rw-r--r--include/data/field_map_obj/field_effect_objects.h2
-rw-r--r--include/data/field_map_obj/map_object_anims.h2
-rw-r--r--include/data/field_map_obj/map_object_graphics_info.h2
-rw-r--r--include/data/field_map_obj/map_object_graphics_info_pointers.h2
-rw-r--r--include/data/field_map_obj/map_object_pic_tables.h2
-rw-r--r--include/data/field_map_obj/map_object_subsprites.h2
-rw-r--r--include/data/pokemon/base_stats.h2
-rw-r--r--include/data/pokemon/cry_ids.h2
-rw-r--r--include/data/pokemon/dex_order.h2
-rw-r--r--include/data/pokemon/egg_moves.h1318
-rw-r--r--include/data/pokemon/evolution.h2
-rw-r--r--include/data/pokemon/experience_tables.h2
-rw-r--r--include/data/pokemon/item_effects.h2
-rw-r--r--include/data/pokemon/level_up_learnset_pointers.h2
-rw-r--r--include/data/pokemon/level_up_learnsets.h2
-rw-r--r--include/data/pokemon/nature_stats.h2
-rw-r--r--include/data/pokemon/spinda_spots.h2
-rw-r--r--include/data/pokemon/tmhm_learnsets.h2
-rw-r--r--include/data/pokemon/trainer_class_lookups.h2
-rw-r--r--include/data2.h13
-rw-r--r--include/daycare.h7
-rw-r--r--include/decompress.h4
-rw-r--r--include/diploma.h2
-rw-r--r--include/easy_chat.h1044
-rw-r--r--include/event_data.h2
-rw-r--r--include/evolution_graphics.h15
-rw-r--r--include/evolution_scene.h10
-rw-r--r--include/field_camera.h2
-rw-r--r--include/field_door.h2
-rw-r--r--include/field_effect.h12
-rw-r--r--include/field_effect_helpers.h7
-rw-r--r--include/field_fadetransition.h2
-rw-r--r--include/field_map_obj.h64
-rw-r--r--include/field_map_obj_helpers.h2
-rw-r--r--include/field_poison.h2
-rw-r--r--include/field_special_scene.h1
-rw-r--r--include/gba/m4a_internal.h4
-rw-r--r--include/gba/macro.h34
-rw-r--r--include/gba/types.h10
-rw-r--r--include/global.fieldmap.h20
-rw-r--r--include/global.h159
-rw-r--r--include/graphics.h9
-rw-r--r--include/intro_credits_graphics.h17
-rw-r--r--include/item_menu.h11
-rw-r--r--include/item_use.h3
-rw-r--r--include/m4a.h5
-rw-r--r--include/mail_data.h2
-rw-r--r--include/map_obj_lock.h2
-rw-r--r--include/mauville_man.h18
-rw-r--r--include/mauville_old_man.h11
-rw-r--r--include/menu.h4
-rw-r--r--include/menu_cursor.h4
-rw-r--r--include/money.h16
-rw-r--r--include/mystery_event_script.h6
-rw-r--r--include/overworld.h (renamed from include/rom4.h)95
-rw-r--r--include/party_menu.h46
-rw-r--r--include/pokeball.h1
-rw-r--r--include/pokeblock.h26
-rw-r--r--include/pokeblock_feed.h10
-rw-r--r--include/pokedex.h12
-rw-r--r--include/pokemon.h44
-rw-r--r--include/pokemon_icon.h4
-rw-r--r--include/pokemon_menu.h44
-rw-r--r--include/pokemon_storage_system.h2
-rw-r--r--include/rom3.h78
-rw-r--r--include/rom_8077ABC.h17
-rw-r--r--include/script.h10
-rw-r--r--include/script_menu.h34
-rw-r--r--include/script_movement.h4
-rw-r--r--include/script_pokemon_80C4.h4
-rw-r--r--include/shop.h36
-rw-r--r--include/songs.h190
-rw-r--r--include/species.h3
-rw-r--r--include/sprite.h18
-rw-r--r--include/start_menu.h2
-rw-r--r--include/strings2.h4
-rw-r--r--include/text.h64
-rw-r--r--include/trade.h64
-rw-r--r--include/trader.h3
-rw-r--r--include/trainer_see.h20
-rw-r--r--include/unknown_task.h16
-rw-r--r--include/use_pokeblock.h10
-rw-r--r--include/util.h2
-rw-r--r--include/vars.h1
-rw-r--r--include/wild_encounter.h6
-rw-r--r--ld_script.txt587
-rw-r--r--shared_syms.txt2
-rw-r--r--src/bard_music.c97
-rw-r--r--src/battle/battle_2.c (renamed from src/battle_2.c)141
-rw-r--r--src/battle/battle_3.c6595
-rw-r--r--src/battle/battle_4.c17641
-rw-r--r--src/battle/battle_7.c (renamed from src/battle_7.c)380
-rw-r--r--src/battle/battle_ai.c (renamed from src/battle_ai.c)66
-rw-r--r--src/battle/battle_anim.c (renamed from src/battle_anim.c)162
-rw-r--r--src/battle/battle_anim_807B69C.c353
-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.c18
-rw-r--r--src/battle/battle_controller_linkopponent.c (renamed from src/battle_10.c)695
-rw-r--r--src/battle/battle_controller_linkpartner.c (renamed from src/battle_811DA74.c)256
-rw-r--r--src/battle/battle_controller_opponent.c (renamed from src/battle_8.c)543
-rw-r--r--src/battle/battle_controller_player.c3066
-rw-r--r--src/battle/battle_controller_safari.c709
-rw-r--r--src/battle/battle_controller_wally.c (renamed from src/battle_anim_8137220.c)283
-rw-r--r--src/battle/battle_interface.c (renamed from src/battle_interface.c)2
-rw-r--r--src/battle/battle_message.c959
-rw-r--r--src/battle/battle_party_menu.c (renamed from src/battle_party_menu.c)9
-rw-r--r--src/battle/battle_records.c (renamed from src/battle_records.c)2
-rw-r--r--src/battle/battle_setup.c (renamed from src/battle_setup.c)643
-rw-r--r--src/battle/battle_transition.c2513
-rw-r--r--src/battle/calculate_base_damage.c309
-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)4
-rw-r--r--src/battle/reshow_battle_screen.c332
-rw-r--r--src/battle/smokescreen.c (renamed from src/smokescreen.c)0
-rw-r--r--src/battle_6.c1507
-rw-r--r--src/battle_anim_81258BC.c50
-rw-r--r--src/cable_club.c317
-rw-r--r--src/calculate_base_damage.c1474
-rw-r--r--src/daycare.c350
-rw-r--r--src/de_rom_8040FE0.c202
-rw-r--r--src/debug/matsuda_debug_menu.c (renamed from src/matsuda_debug_menu.c)2
-rw-r--r--src/debug/mori_debug_menu.c (renamed from src/mori_debug_menu.c)10
-rw-r--r--src/debug/sound_check_menu.c1300
-rw-r--r--src/debug/unknown_debug_menu.c (renamed from src/unknown_debug_menu.c)0
-rw-r--r--src/egg_hatch.c52
-rw-r--r--src/engine/blend_palette.c (renamed from src/blend_palette.c)0
-rw-r--r--src/engine/cable_club.c905
-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)2
-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)5
-rw-r--r--src/engine/load_save.c (renamed from src/load_save.c)2
-rw-r--r--src/engine/main.c (renamed from src/main.c)2
-rw-r--r--src/engine/main_menu.c (renamed from src/main_menu.c)412
-rw-r--r--src/engine/menu.c (renamed from src/menu.c)148
-rw-r--r--src/engine/menu_cursor.c (renamed from src/menu_cursor.c)103
-rw-r--r--src/engine/mystery_event_menu.c (renamed from src/mystery_event_menu.c)24
-rw-r--r--src/engine/mystery_event_script.c462
-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)2
-rw-r--r--src/engine/option_menu.c (renamed from src/option_menu.c)102
-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)40
-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)2
-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)88
-rw-r--r--src/engine/sound.c (renamed from src/sound.c)61
-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)20
-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)6
-rw-r--r--src/engine/trade.c5715
-rw-r--r--src/engine/trainer_card.c (renamed from src/trainer_card.c)4
-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.c69
-rw-r--r--src/field/berry.c (renamed from src/berry.c)6
-rw-r--r--src/field/berry_tag_screen.c (renamed from src/berry_tag_screen.c)245
-rw-r--r--src/field/bike.c (renamed from src/bike.c)12
-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)36
-rw-r--r--src/field/choose_party.c (renamed from src/choose_party.c)103
-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.c1690
-rw-r--r--src/field/decoration.c (renamed from src/decoration.c)10
-rw-r--r--src/field/decoration_inventory.c (renamed from src/decoration_inventory.c)2
-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)4
-rw-r--r--src/field/easy_chat.c (renamed from src/easy_chat.c)30
-rw-r--r--src/field/event_data.c (renamed from src/event_data.c)20
-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)48
-rw-r--r--src/field/field_door.c (renamed from src/field_door.c)7
-rw-r--r--src/field/field_effect.c (renamed from src/field_effect.c)121
-rw-r--r--src/field/field_effect_helpers.c1632
-rw-r--r--src/field/field_fadetransition.c626
-rw-r--r--src/field/field_ground_effect.c796
-rw-r--r--src/field/field_map_obj.c (renamed from src/field_map_obj.c)586
-rw-r--r--src/field/field_map_obj_helpers.c (renamed from src/field_map_obj_helpers.c)14
-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)233
-rw-r--r--src/field/field_poison.c (renamed from src/field_poison.c)2
-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)17
-rw-r--r--src/field/field_special_scene.c (renamed from src/field_special_scene.c)14
-rw-r--r--src/field/field_specials.c (renamed from src/field_specials.c)54
-rw-r--r--src/field/field_tasks.c (renamed from src/field_tasks.c)33
-rw-r--r--src/field/field_weather.c (renamed from src/field_weather.c)2
-rw-r--r--src/field/fieldmap.c (renamed from src/fieldmap.c)16
-rw-r--r--src/field/fldeff_cut.c (renamed from src/fldeff_cut.c)31
-rw-r--r--src/field/fldeff_flash.c (renamed from src/fldeff_flash.c)10
-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)16
-rw-r--r--src/field/fldeff_sweetscent.c (renamed from src/fldeff_sweetscent.c)8
-rw-r--r--src/field/fldeff_teleport.c (renamed from src/fldeff_teleport.c)14
-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)8
-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)372
-rw-r--r--src/field/item_use.c (renamed from src/item_use.c)150
-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)2
-rw-r--r--src/field/mauville_man.c1311
-rw-r--r--src/field/menu_helpers.c (renamed from src/menu_helpers.c)4
-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)54
-rw-r--r--src/field/overworld.c (renamed from src/rom4.c)655
-rw-r--r--src/field/party_menu.c (renamed from src/party_menu.c)11
-rw-r--r--src/field/player_pc.c (renamed from src/player_pc.c)10
-rw-r--r--src/field/pokeblock.c (renamed from src/pokeblock.c)53
-rw-r--r--src/field/pokenav.c (renamed from src/pokenav.c)2
-rw-r--r--src/field/region_map.c (renamed from src/region_map.c)20
-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)711
-rw-r--r--src/field/safari_zone.c (renamed from src/safari_zone.c)4
-rw-r--r--src/field/scrcmd.c (renamed from src/scrcmd.c)963
-rw-r--r--src/field/script_menu.c1178
-rw-r--r--src/field/script_movement.c (renamed from src/script_movement.c)62
-rw-r--r--src/field/secret_base.c (renamed from src/secret_base.c)10
-rw-r--r--src/field/shop.c1351
-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)6
-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)47
-rw-r--r--src/field/trainer_see.c519
-rw-r--r--src/field/tv.c (renamed from src/tv.c)57
-rw-r--r--src/field/use_pokeblock.c (renamed from src/use_pokeblock.c)270
-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)59
-rw-r--r--src/field_fadetransition.c87
-rw-r--r--src/field_ground_effect.c240
-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)2
-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/mauville_old_man.c247
-rw-r--r--src/mystery_event_script.c103
-rw-r--r--src/pokemon/learn_move.c1081
-rw-r--r--src/pokemon/mail.c (renamed from src/mail.c)4
-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.c1015
-rw-r--r--src/pokemon/pokedex.c (renamed from src/pokedex.c)108
-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)35
-rw-r--r--src/pokemon/pokemon_2.c (renamed from src/pokemon_2.c)116
-rw-r--r--src/pokemon/pokemon_3.c (renamed from src/pokemon_3.c)32
-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)81
-rw-r--r--src/pokemon/pokemon_menu.c1200
-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/rom3.c565
-rw-r--r--src/rom6.c50
-rw-r--r--src/rom_8077ABC.c204
-rw-r--r--src/scene/berry_blender.c3884
-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.c164
-rw-r--r--src/scene/egg_hatch.c862
-rw-r--r--src/scene/evolution_graphics.c614
-rw-r--r--src/scene/evolution_scene.c3966
-rw-r--r--src/scene/hall_of_fame.c1413
-rw-r--r--src/scene/intro.c (renamed from src/intro.c)2
-rwxr-xr-xsrc/scene/intro_credits_graphics.c532
-rw-r--r--src/scene/new_game.c (renamed from src/new_game.c)8
-rw-r--r--src/scene/title_screen.c (renamed from src/title_screen.c)184
-rw-r--r--src/script_menu.c1134
-rw-r--r--src/script_pokemon_util_80C4BF0.c56
-rw-r--r--src/script_pokemon_util_80F99CC.c65
-rw-r--r--src/shop.c342
-rw-r--r--src/sound_check_menu.c2199
-rw-r--r--src/strings.c4
-rw-r--r--src/trade.c88
-rw-r--r--src/trainer_see.c455
-rw-r--r--src/unknown_task.c15
-rw-r--r--src/unused_8124F94.c6
-rw-r--r--sym_bss.txt173
-rw-r--r--sym_common.txt136
-rw-r--r--sym_ewram.txt196
-rw-r--r--tools/scaninc/asm_file.cpp2
763 files changed, 86551 insertions, 167623 deletions
diff --git a/.gitignore b/.gitignore
index ae9ac207b..4e73c4f17 100644
--- a/.gitignore
+++ b/.gitignore
@@ -38,3 +38,4 @@ Thumbs.db
build/
.idea/
*.DS_Store
+*.pl
diff --git a/Makefile b/Makefile
index f4e4a5e96..9aca31899 100644
--- a/Makefile
+++ b/Makefile
@@ -40,9 +40,9 @@ VERSIONS := ruby sapphire ruby_rev1 sapphire_rev1 ruby_rev2 sapphire_rev2 ruby_d
$(VERSIONS) $(VERSIONS:%=compare_%)
-$(shell mkdir -p build/ $(VERSIONS:%=build/%/{,src,asm,data}))
+$(shell mkdir -p build/ $(VERSIONS:%=build/%/{,asm,data,src{,/battle,/field,/debug,/scene,/pokemon,/engine,/libs}}))
-C_SRCS := $(wildcard src/*.c)
+C_SRCS := $(wildcard src/*/*.c) $(wildcard src/*.c)
ASM_SRCS := $(wildcard asm/*.s)
DATA_ASM_SRCS := $(wildcard data/*.s)
@@ -90,17 +90,17 @@ sound/direct_sound_samples/cry_%.bin: sound/direct_sound_samples/cry_%.aif ; $(A
sound/songs/%.s: sound/songs/%.mid
cd $(@D) && ../../$(MID) $(<F)
-%src/libc.o: CC1 := tools/agbcc/bin/old_agbcc
-%src/libc.o: CFLAGS := -O2
+%src/libs/libc.o: CC1 := tools/agbcc/bin/old_agbcc
+%src/libs/libc.o: CFLAGS := -O2
-%src/siirtc.o: CFLAGS := -mthumb-interwork
+%src/libs/siirtc.o: CFLAGS := -mthumb-interwork
-%src/agb_flash.o: CFLAGS := -O -mthumb-interwork
-%src/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork
-%src/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
+%src/libs/agb_flash.o: CFLAGS := -O -mthumb-interwork
+%src/libs/agb_flash_1m.o: CFLAGS := -O -mthumb-interwork
+%src/libs/agb_flash_mx.o: CFLAGS := -O -mthumb-interwork
-%src/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc
-%src/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc
+%src/libs/m4a_2.o: CC1 := tools/agbcc/bin/old_agbcc
+%src/libs/m4a_4.o: CC1 := tools/agbcc/bin/old_agbcc
$(SONG_OBJS): %.o: %.s
$(AS) $(ASFLAGS) -I sound -o $@ $<
@@ -113,7 +113,8 @@ $1_ASM_OBJS := $$(ASM_SRCS:%.s=build/$1/%.o)
$1_DATA_ASM_OBJS := $$(DATA_ASM_SRCS:%.s=build/$1/%.o)
ifeq ($$(NODEP),)
-build/$1/src/%.o: c_dep = $$(shell $$(SCANINC) -I include src/$$(*F).c)
+build/$1/src/%.o: c_path = $$(*D)/$$(*F).c
+build/$1/src/%.o: c_dep = $$(shell $$(SCANINC) -I include $$(wildcard $$(c_path:build/$1/=)))
build/$1/asm/%.o: asm_dep = $$(shell $$(SCANINC) asm/$$(*F).s)
build/$1/data/%.o: asm_dep = $$(shell $$(SCANINC) data/$$(*F).s)
endif
diff --git a/README.md b/README.md
index 0782f7a12..a840a9a78 100644
--- a/README.md
+++ b/README.md
@@ -9,8 +9,24 @@ It builds the following roms:
To set up the repository, see [INSTALL.md](INSTALL.md).
-### irc: [freenode#pret][irc]
+## See also
+* Disassembly of [**Pokémon Red/Blue**][pokered]
+* Disassembly of [**Pokémon Yellow**][pokeyellow]
+* Disassembly of [**Pokémon Crystal**][pokecrystal]
+* Disassembly of [**Pokémon Pinball**][pokepinball]
+* Disassembly of [**Pokémon TCG**][poketcg]
+* Disassembly of [**Pokémon Emerald**][pokeemerald]
+* Discord: [**pret**][Discord]
+* irc: **irc.freenode.net** [**#pret**][irc]
+
+[pokered]: https://github.com/pret/pokered
+[pokeyellow]: https://github.com/pret/pokeyellow
+[pokecrystal]: https://github.com/pret/pokecrystal
+[pokepinball]: https://github.com/pret/pokepinball
+[poketcg]: https://github.com/pret/poketcg
+[pokeemerald]: https://github.com/pret/pokeemerald
+[Discord]: https://discord.gg/cJxDDVP
[irc]: https://kiwiirc.com/client/irc.freenode.net/?#pret
[travis]: https://travis-ci.org/pret/pokeruby
[travis-badge]: https://travis-ci.org/pret/pokeruby.svg?branch=master
diff --git a/asm-de/battle_message.s b/asm-de/battle_message.s
deleted file mode 100644
index 2f671a766..000000000
--- a/asm-de/battle_message.s
+++ /dev/null
@@ -1,2342 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start BufferStringBattle
-BufferStringBattle: @ 8120AA8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r7, r0, 16
- movs r6, 0
- ldr r5, _08120B70 @ =gSelectedOrderFromParty
- ldr r4, _08120B74 @ =gActiveBank
- ldrb r1, [r4]
- lsls r1, 9
- ldr r0, _08120B78 @ =gUnknown_02023A64
- adds r1, r0
- str r1, [r5]
- ldr r2, _08120B7C @ =gLastUsedItem
- ldrh r0, [r1, 0x4]
- strh r0, [r2]
- ldr r2, _08120B80 @ =gLastUsedAbility
- ldrb r0, [r1, 0x6]
- strb r0, [r2]
- ldr r3, _08120B84 @ =0x02000000
- ldrb r0, [r1, 0x7]
- mov r8, r0
- ldr r2, _08120B88 @ =0x00016003
- adds r0, r3, r2
- mov r2, r8
- strb r2, [r0]
- ldrb r0, [r1, 0x8]
- mov r8, r0
- ldr r2, _08120B8C @ =0x0001605e
- adds r0, r3, r2
- mov r2, r8
- strb r2, [r0]
- ldrb r0, [r1, 0x9]
- mov r8, r0
- ldr r2, _08120B90 @ =0x000160c1
- adds r0, r3, r2
- mov r2, r8
- strb r2, [r0]
- ldr r2, _08120B94 @ =gStringBank
- ldrb r0, [r1, 0xA]
- strb r0, [r2]
- ldrb r1, [r1, 0xB]
- ldr r2, _08120B98 @ =0x000160a0
- adds r0, r3, r2
- strb r1, [r0]
- movs r2, 0
- mov r9, r3
- ldr r3, _08120B9C @ =gBattleTextBuff1
- mov r10, r3
- ldr r3, _08120BA0 @ =gAbilitiesPerBank
-_08120B10:
- adds r0, r2, r3
- ldr r1, [r5]
- adds r1, 0xC
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _08120B10
- movs r2, 0
- ldr r0, _08120B9C @ =gBattleTextBuff1
- mov r8, r0
- ldr r3, _08120B70 @ =gSelectedOrderFromParty
- ldr r1, _08120BA4 @ =gBattleTextBuff2
- mov r12, r1
- ldr r5, _08120BA8 @ =gBattleTextBuff3
-_08120B30:
- mov r0, r8
- adds r1, r2, r0
- ldr r0, [r3]
- adds r0, 0x10
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- mov r0, r12
- adds r1, r2, r0
- ldr r0, [r3]
- adds r0, 0x20
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r2, r5
- ldr r0, [r3]
- adds r0, 0x30
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0xF
- ble _08120B30
- cmp r7, 0x5
- bls _08120B64
- b _08120F50
-_08120B64:
- lsls r0, r7, 2
- ldr r1, _08120BAC @ =_08120BB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08120B70: .4byte gSelectedOrderFromParty
-_08120B74: .4byte gActiveBank
-_08120B78: .4byte gUnknown_02023A64
-_08120B7C: .4byte gLastUsedItem
-_08120B80: .4byte gLastUsedAbility
-_08120B84: .4byte 0x02000000
-_08120B88: .4byte 0x00016003
-_08120B8C: .4byte 0x0001605e
-_08120B90: .4byte 0x000160c1
-_08120B94: .4byte gStringBank
-_08120B98: .4byte 0x000160a0
-_08120B9C: .4byte gBattleTextBuff1
-_08120BA0: .4byte gAbilitiesPerBank
-_08120BA4: .4byte gBattleTextBuff2
-_08120BA8: .4byte gBattleTextBuff3
-_08120BAC: .4byte _08120BB0
- .align 2, 0
-_08120BB0:
- .4byte _08120BC8
- .4byte _08120C40
- .4byte _08120CCC
- .4byte _08120D5C
- .4byte _08120DE8
- .4byte _08120E50
-_08120BC8:
- ldr r0, _08120BEC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08120C00
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08120BF8
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120BF0 @ =gUnknown_084005C7
- cmp r0, 0
- bne _08120BE8
- b _08120F70
-_08120BE8:
- ldr r6, _08120BF4 @ =gUnknown_084005DB
- b _08120F70
- .align 2, 0
-_08120BEC: .4byte gBattleTypeFlags
-_08120BF0: .4byte gUnknown_084005C7
-_08120BF4: .4byte gUnknown_084005DB
-_08120BF8:
- ldr r6, _08120BFC @ =gUnknown_084005AA
- ldr r0, _08120C04 @ =0x0000ffff
- b _08120F9A
- .align 2, 0
-_08120BFC: .4byte gUnknown_084005AA
-_08120C04: .4byte 0x0000ffff
-_08120C00:
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _08120C14
- ldr r6, _08120C10 @ =gUnknown_08400568
- b _08120F70
- .align 2, 0
-_08120C10: .4byte gUnknown_08400568
-_08120C14:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120C24
- ldr r6, _08120C20 @ =gUnknown_08400590
- b _08120F70
- .align 2, 0
-_08120C20: .4byte gUnknown_08400590
-_08120C24:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- ldr r6, _08120C38 @ =gUnknown_08400555
- cmp r0, 0
- bne _08120C32
- b _08120F70
-_08120C32:
- ldr r6, _08120C3C @ =gUnknown_0840057B
- b _08120F70
- .align 2, 0
-_08120C38: .4byte gUnknown_08400555
-_08120C3C: .4byte gUnknown_0840057B
-_08120C40:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08120C7C
- ldr r0, _08120C68 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120C74
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120C6C @ =gUnknown_084006A4
- cmp r0, 0
- bne _08120C64
- b _08120F70
-_08120C64:
- ldr r6, _08120C70 @ =gUnknown_084006F1
- b _08120F70
- .align 2, 0
-_08120C68: .4byte gBattleTypeFlags
-_08120C6C: .4byte gUnknown_084006A4
-_08120C70: .4byte gUnknown_084006F1
-_08120C74:
- ldr r6, _08120C78 @ =gUnknown_0840069C
- b _08120F70
- .align 2, 0
-_08120C78: .4byte gUnknown_0840069C
-_08120C7C:
- ldr r0, _08120C94 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120CB4
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08120C9C
- ldr r6, _08120C98 @ =gUnknown_0840065C
- b _08120F70
- .align 2, 0
-_08120C94: .4byte gBattleTypeFlags
-_08120C98: .4byte gUnknown_0840065C
-_08120C9C:
- movs r0, 0x2
- ands r0, r1
- ldr r6, _08120CB8d @ =gUnknown_08400645
- cmp r0, 0
- beq _08120CA8
- b _08120F70
-_08120CA8:
- ldr r6, _08120CBCd @ =gUnknown_08400608
- ldr r0, _08120CC0d @ =0x0000ffff
- b _08120F9A
- .align 2, 0
-_08120CB8d: .4byte gUnknown_08400645
-_08120CBCd: .4byte gUnknown_08400608
-_08120CC0d: .4byte 0x0000ffff
-_08120CB4:
- movs r0, 0x2
- ands r0, r1
- ldr r6, _08120CD8 @ =gUnknown_08400635
- cmp r0, 0
- beq _08120CC0
- b _08120F70
-_08120CC0:
- ldr r6, _08120CDC @ =gUnknown_084005F5
- ldr r0, _08120CE0 @ =0x0000ffff
- b _08120F9A
- .align 2, 0
-_08120CD8: .4byte gUnknown_08400635
-_08120CDC: .4byte gUnknown_084005F5
-_08120CE0: .4byte 0x0000ffff
-_08120CCC:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08120D24
- ldr r0, _08120CE8 @ =0x02000000
- ldr r1, _08120CEC @ =0x000160c1
- adds r0, r1
- ldrb r2, [r0]
- cmp r2, 0
- bne _08120CF4
- ldr r6, _08120CF0 @ =gUnknown_08400709
- b _08120F70
- .align 2, 0
-_08120CE8: .4byte 0x02000000
-_08120CEC: .4byte 0x000160c1
-_08120CF0: .4byte gUnknown_08400709
-_08120CF4:
- cmp r2, 0x1
- beq _08120D04
- ldr r0, _08120D08 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120D10
-_08120D04:
- ldr r6, _08120D0C @ =gUnknown_08400727
- b _08120F70
- .align 2, 0
-_08120D08: .4byte gBattleTypeFlags
-_08120D0C: .4byte gUnknown_08400727
-_08120D10:
- ldr r6, _08120D1C @ =gUnknown_08400749
- cmp r2, 0x2
- beq _08120D18
- b _08120F70
-_08120D18:
- ldr r6, _08120D20 @ =gUnknown_08400736
- b _08120F70
- .align 2, 0
-_08120D1C: .4byte gUnknown_08400749
-_08120D20: .4byte gUnknown_08400736
-_08120D24:
- ldr r0, _08120D44 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 4
- cmp r1, r0
- bne _08120D54
- ldr r0, _08120D48 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120D4C @ =gUnknown_08400771
- cmp r0, 0
- bne _08120D40
- b _08120F70
-_08120D40:
- ldr r6, _08120D50 @ =gUnknown_08400781
- b _08120F70
- .align 2, 0
-_08120D44: .4byte gTrainerBattleOpponent
-_08120D48: .4byte gBattleTypeFlags
-_08120D4C: .4byte gUnknown_08400771
-_08120D50: .4byte gUnknown_08400781
-_08120D54:
- ldr r6, _08120D58 @ =gUnknown_0840075E
- ldr r0, _d08120D78 @ =0x0000ffff
- b _08120F9A
- .align 2, 0
-_08120D58: .4byte gUnknown_0840075E
-_d08120D78: .4byte 0x0000ffff
-_08120D5C:
- ldr r0, _08120D88 @ =0x00016003
- add r0, r9
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08120DB8
- ldr r0, _08120D8C @ =0x000160c1
- add r0, r9
- ldrb r3, [r0]
- cmp r3, 0
- beq _08120D82
- ldr r0, _08120D90 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120D98
-_08120D82:
- ldr r6, _08120D94 @ =gUnknown_084006B3
- b _08120F70
- .align 2, 0
-_08120D88: .4byte 0x00016003
-_08120D8C: .4byte 0x000160c1
-_08120D90: .4byte gBattleTypeFlags
-_08120D94: .4byte gUnknown_084006B3
-_08120D98:
- cmp r3, 0x1
- bne _08120DA4
- ldr r6, _08120DA0 @ =gUnknown_084006BB
- b _08120F70
- .align 2, 0
-_08120DA0: .4byte gUnknown_084006BB
-_08120DA4:
- ldr r6, _08120DB0 @ =gUnknown_084006D5
- cmp r3, 0x2
- beq _08120DAC
- b _08120F70
-_08120DAC:
- ldr r6, _08120DB4 @ =gUnknown_084006C6
- b _08120F70
- .align 2, 0
-_08120DB0: .4byte gUnknown_084006D5
-_08120DB4: .4byte gUnknown_084006C6
-_08120DB8:
- ldr r0, _08120DD4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08120DE0
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120DD8 @ =gUnknown_0840067C
- cmp r0, 0
- bne _08120DD0
- b _08120F70
-_08120DD0:
- ldr r6, _08120DDC @ =gUnknown_0840068C
- b _08120F70
- .align 2, 0
-_08120DD4: .4byte gBattleTypeFlags
-_08120DD8: .4byte gUnknown_0840067C
-_08120DDC: .4byte gUnknown_0840068C
-_08120DE0:
- ldr r6, _08120DE4 @ =gUnknown_08400622
- ldr r0, _d08120E0C @ =0x0000ffff
- b _08120F9A
- .align 2, 0
-_08120DE4: .4byte gUnknown_08400622
-_d08120E0C: .4byte 0x0000ffff
-_08120DE8:
- mov r0, r10
- bl sub_8121D1C
- ldr r0, _08120E14 @ =gSelectedOrderFromParty
- ldr r2, [r0]
- ldrh r1, [r2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _08120E28
- ldr r0, _08120E18 @ =gBattleTextBuff2
- ldr r2, _08120E1C @ =gUnknown_08401674
- ldr r1, _08120E20 @ =0x02000000
- ldr r3, _08120E24 @ =0x000160a0
- adds r1, r3
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- b _08120E38
- .align 2, 0
-_08120E14: .4byte gSelectedOrderFromParty
-_08120E18: .4byte gBattleTextBuff2
-_08120E1C: .4byte gUnknown_08401674
-_08120E20: .4byte 0x02000000
-_08120E24: .4byte 0x000160a0
-_08120E28:
- ldr r0, _08120E44 @ =gBattleTextBuff2
- ldrh r2, [r2]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _08120E48 @ =gMoveNames
- adds r1, r2
- bl StringCopy
-_08120E38:
- ldr r0, _08120E44 @ =gBattleTextBuff2
- bl sub_8121D74
- ldr r6, _08120E4C @ =gUnknown_084007BD
- b _08120F70
- .align 2, 0
-_08120E44: .4byte gBattleTextBuff2
-_08120E48: .4byte gMoveNames
-_08120E4C: .4byte gUnknown_084007BD
-_08120E50:
- ldr r5, _08120E90 @ =gBattleTextBuff1
- ldrb r1, [r5]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08120EB8
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r5]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08120E7C
- ldrb r1, [r5]
- cmp r1, 0x3
- beq _08120E7C
- movs r0, 0x3
- eors r0, r1
- strb r0, [r5]
-_08120E7C:
- ldr r0, _08120E90 @ =gBattleTextBuff1
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08120E98
- ldr r6, _08120E94 @ =gUnknown_083FFEFC
- b _08120F70
- .align 2, 0
-_08120E90: .4byte gBattleTextBuff1
-_08120E94: .4byte gUnknown_083FFEFC
-_08120E98:
- ldr r0, _08120EAC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120EB0 @ =gUnknown_083FFFEA
- cmp r0, 0
- beq _08120F70
- ldr r6, _08120EB4 @ =gUnknown_083FFFF7
- b _08120F70
- .align 2, 0
-_08120EAC: .4byte gBattleTypeFlags
-_08120EB0: .4byte gUnknown_083FFFEA
-_08120EB4: .4byte gUnknown_083FFFF7
-_08120EB8:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08120ED2
- ldrb r1, [r5]
- cmp r1, 0x3
- beq _08120ED2
- movs r0, 0x3
- eors r0, r1
- strb r0, [r5]
-_08120ED2:
- ldr r0, _08120EF0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08120F18
- ldr r0, _08120EF4 @ =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08120F08
- cmp r0, 0x2
- bgt _08120EF8
- cmp r0, 0x1
- beq _08120EFE
- b _08120F70
- .align 2, 0
-_08120EF0: .4byte gBattleTypeFlags
-_08120EF4: .4byte gBattleTextBuff1
-_08120EF8:
- cmp r0, 0x3
- beq _08120F10
- b _08120F70
-_08120EFE:
- ldr r6, _08120F04 @ =gUnknown_083FFF6A
- b _08120F70
- .align 2, 0
-_08120F04: .4byte gUnknown_083FFF6A
-_08120F08:
- ldr r6, _08120F0C @ =gUnknown_083FFF99
- b _08120F70
- .align 2, 0
-_08120F0C: .4byte gUnknown_083FFF99
-_08120F10:
- ldr r6, _08120F14 @ =gUnknown_083FFFCB
- b _08120F70
- .align 2, 0
-_08120F14: .4byte gUnknown_083FFFCB
-_08120F18:
- ldr r0, _08120F2C @ =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08120F40
- cmp r0, 0x2
- bgt _08120F30
- cmp r0, 0x1
- beq _08120F36
- b _08120F70
- .align 2, 0
-_08120F2C: .4byte gBattleTextBuff1
-_08120F30:
- cmp r0, 0x3
- beq _08120F48
- b _08120F70
-_08120F36:
- ldr r6, _08120F3C @ =gUnknown_083FFF56
- b _08120F70
- .align 2, 0
-_08120F3C: .4byte gUnknown_083FFF56
-_08120F40:
- ldr r6, _08120F44 @ =gUnknown_083FFF81
- b _08120F70
- .align 2, 0
-_08120F44: .4byte gUnknown_083FFF81
-_08120F48:
- ldr r6, _08120F4C @ =gUnknown_083FFFB3
- b _08120F70
- .align 2, 0
-_08120F4C: .4byte gUnknown_083FFFB3
-_08120F50:
- movs r0, 0xB5
- lsls r0, 1
- cmp r7, r0
- bls _08120F64
- ldr r1, _08120F60 @ =gDisplayedStringBattle
- movs r0, 0xFF
- strb r0, [r1]
- b _08120F76
- .align 2, 0
-_08120F60: .4byte gDisplayedStringBattle
-_08120F64:
- ldr r1, _08120F84 @ =gBattleStringsTable
- adds r0, r7, 0
- subs r0, 0xC
- lsls r0, 2
- adds r0, r1
- ldr r6, [r0]
- adds r0, r7, 0
-_08120F9A:
- adds r1, r6, 0
- bl de_sub_804110C
- adds r6, r0, 0
-_08120F70:
- adds r0, r6, 0
- bl StrCpyDecodeToDisplayedStringBattle
-_08120F76:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08120F84: .4byte gBattleStringsTable
- thumb_func_end BufferStringBattle
-
- thumb_func_start StrCpyDecodeToDisplayedStringBattle
-StrCpyDecodeToDisplayedStringBattle: @ 8120F88
- push {lr}
- ldr r1, _08120F94 @ =gDisplayedStringBattle
- bl StrCpyDecodeBattle
- pop {r1}
- bx r1
- .align 2, 0
-_08120F94: .4byte gDisplayedStringBattle
- thumb_func_end StrCpyDecodeToDisplayedStringBattle
-
- thumb_func_start sub_8120F98
-sub_8120F98: @ 8120F98
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r1, _08120FB0 @ =gUnknown_084017A8
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- mov r2, sp
- movs r3, 0
- b _08120FC0
- .align 2, 0
-_08120FB0: .4byte gUnknown_084017A8
-_08120FB4:
- strb r1, [r2]
- adds r4, 0x1
- adds r2, 0x1
- adds r3, 0x1
- cmp r3, 0x7
- bhi _08120FC8
-_08120FC0:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08120FB4
-_08120FC8:
- ldr r5, [sp]
- ldr r4, [sp, 0x4]
- movs r3, 0
- ldr r2, _08120FE4 @ =gUnknown_081FA6D4
-_08120FD0:
- ldr r1, [r2]
- ldr r0, [r1]
- cmp r5, r0
- bne _08120FE8
- ldr r0, [r1, 0x4]
- cmp r4, r0
- bne _08120FE8
- ldr r0, [r2, 0x4]
- b _08120FF2
- .align 2, 0
-_08120FE4: .4byte gUnknown_081FA6D4
-_08120FE8:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, 0x6
- bls _08120FD0
- movs r0, 0
-_08120FF2:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8120F98
-
- thumb_func_start StrCpyDecodeBattle
-StrCpyDecodeBattle: @ 8120FFC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- mov r9, r0
- mov r8, r1
- movs r6, 0
- movs r4, 0
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, r9
- ldrb r1, [r0]
- bl _08121A40
-_0812101E:
- cmp r1, 0xFD
- beq _08121026
- bl _08121A30
-_08121026:
- movs r1, 0x1
- add r9, r1
- mov r2, r9
- ldrb r0, [r2]
- cmp r0, 0x2A
- bls _08121036
- bl _081219E6
-_08121036:
- lsls r0, 2
- ldr r1, _08121040 @ =_08121044
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08121040: .4byte _08121044
- .align 2, 0
-_08121044:
- .4byte _081210F0
- .4byte _0812111E
- .4byte _0812115A
- .4byte _08121180
- .4byte _081211A4
- .4byte _081211C8
- .4byte _081211EC
- .4byte _08121218
- .4byte _08121248
- .4byte _08121278
- .4byte _081212A8
- .4byte _0812133C
- .4byte _081213A8
- .4byte _0812141C
- .4byte _08121490
- .4byte _08121504
- .4byte _08121578
- .4byte _081215F8
- .4byte _08121620
- .4byte _08121660
- .4byte _081216EC
- .4byte _081216F4
- .4byte _08121704
- .4byte _08121714
- .4byte _0812172C
- .4byte _0812174C
- .4byte _081217C0
- .4byte _08121830
- .4byte _08121840
- .4byte _08121854
- .4byte _08121868
- .4byte _0812188C
- .4byte _081218B0
- .4byte _081218B8
- .4byte _081218C0
- .4byte _0812195C
- .4byte _081219A4
- .4byte _081219AC
- .4byte _0812197C
- .4byte _08121984
- .4byte _081219CC
- .4byte _081219D4
- .4byte _08121134
-_081210F0:
- ldr r5, _08121100 @ =gBattleTextBuff1
- ldrb r0, [r5]
- cmp r0, 0xFD
- bne _08121108
- ldr r4, _08121104 @ =gStringVar1
- adds r0, r5, 0
- b _08121140
- .align 2, 0
-_08121100: .4byte gBattleTextBuff1
-_08121104: .4byte gStringVar1
-_08121108:
- adds r0, r5, 0
- bl sub_8120F98
- adds r4, r0, 0
- cmp r4, 0
- beq _08121118
- bl _081219E6
-_08121118:
- adds r4, r5, 0
- bl _081219E6
-_0812111E:
- ldr r1, _0812112C @ =gBattleTextBuff2
- ldrb r0, [r1]
- cmp r0, 0xFD
- bne _08121154
- ldr r4, _08121130 @ =gStringVar2
- b _0812113E
- .align 2, 0
-_0812112C: .4byte gBattleTextBuff2
-_08121130: .4byte gStringVar2
-_08121134:
- ldr r1, _0812114C @ =gBattleTextBuff3
- ldrb r0, [r1]
- cmp r0, 0xFD
- bne _08121154
- ldr r4, _08121150 @ =gStringVar3
-_0812113E:
- adds r0, r1, 0
-_08121140:
- adds r1, r4, 0
- bl sub_8121A68
- bl _081219E6
- .align 2, 0
-_0812114C: .4byte gBattleTextBuff3
-_08121150: .4byte gStringVar3
-_08121154:
- adds r4, r1, 0
- bl _081219E6
-_0812115A:
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, _08de12116C @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08de12116C: .4byte gBattlePartyID
-_08121180:
- movs r0, 0x1
- bl GetBankByPlayerAI
- ldr r1, _0812119C @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081211A0 @ =gEnemyParty
- b _08121940
- .align 2, 0
-_0812119C: .4byte gBattlePartyID
-_081211A0: .4byte gEnemyParty
-_081211A4:
- movs r0, 0x2
- bl GetBankByPlayerAI
- ldr r1, _081211C0 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_081211C0: .4byte gBattlePartyID
-_081211C8:
- movs r0, 0x3
- bl GetBankByPlayerAI
- ldr r1, _081211E4 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081211E8 @ =gEnemyParty
- b _08121940
- .align 2, 0
-_081211E4: .4byte gBattlePartyID
-_081211E8: .4byte gEnemyParty
-_081211EC:
- ldr r2, _0812120C @ =gBattlePartyID
- ldr r1, _08121210 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x18]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_0812120C: .4byte gBattlePartyID
-_08121210: .4byte gLinkPlayers
-_08121218:
- ldr r2, _0812123C @ =gBattlePartyID
- ldr r1, _08121240 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x1
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121244 @ =gEnemyParty
- b _08121940
- .align 2, 0
-_0812123C: .4byte gBattlePartyID
-_08121240: .4byte gLinkPlayers
-_08121244: .4byte gEnemyParty
-_08121248:
- ldr r2, _0812126C @ =gBattlePartyID
- ldr r1, _08121270 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x2
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_0812126C: .4byte gBattlePartyID
-_08121270: .4byte gLinkPlayers
-_08121278:
- ldr r2, _0812129C @ =gBattlePartyID
- ldr r1, _081212A0 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x3
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081212A4 @ =gEnemyParty
- b _08121940
- .align 2, 0
-_0812129C: .4byte gBattlePartyID
-_081212A0: .4byte gLinkPlayers
-_081212A4: .4byte gEnemyParty
-_081212A8:
- ldr r4, _081212CC @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _081212E6
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08121314 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121318 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de1212BE
- .align 2, 0
-_081212CC: .4byte gBankAttacker
-_08121314: .4byte gBattlePartyID
-_08121318: .4byte gEnemyParty
-_08de1212B4:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de1212BE:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de1212B4
- b _08de12184E
-_081212E6:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08121338 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08121338: .4byte gBattlePartyID
-_0812133C:
- ldr r4, _08de121314 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08de12131C
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08de121318 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x4
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08de121314: .4byte gBankAttacker
-_08de121318: .4byte gBattlePartyID
-_08de12131C:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08de12134C @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x4
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de121350 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0812194A
- .align 2, 0
-_08de12134C: .4byte gBattlePartyID
-_08de121350: .4byte gEnemyParty
-_081213A8:
- ldr r4, _08de121388 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08de1213A8
- ldr r1, _08de12138C @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de121390 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de12139E
- .align 2, 0
-_08de121388: .4byte gBankAttacker
-_08de12138C: .4byte gBattlePartyID
-_08de121390: .4byte gEnemyParty
-_08de121394:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de12139E:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de121394
- b _08de12184E
-_08de1213A8:
- ldr r1, _08de1213B4 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08de1213B4: .4byte gBattlePartyID
-_0812141C:
- ldr r4, _08de1213EC @ =gBankTarget
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08de12140C
- ldr r1, _08de1213F0 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de1213F4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de121402
- .align 2, 0
-_08de1213EC: .4byte gBankTarget
-_08de1213F0: .4byte gBattlePartyID
-_08de1213F4: .4byte gEnemyParty
-_08de1213F8:
- mov r2, r8
- adds r0, r2, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de121402:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de1213F8
- b _08de12184E
-_08de12140C:
- ldr r1, _08de121418 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08de121418: .4byte gBattlePartyID
-_08121490:
- ldr r4, _08de121450 @ =gEffectBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08de121470
- ldr r1, _08de121454 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de121458 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de121466
- .align 2, 0
-_08de121450: .4byte gEffectBank
-_08de121454: .4byte gBattlePartyID
-_08de121458: .4byte gEnemyParty
-_08de12145C:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de121466:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de12145C
- b _08de12184E
-_08de121470:
- ldr r1, _08de12147C @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08de12147C: .4byte gBattlePartyID
-_08121504:
- ldr r4, _08de1214B4 @ =gActiveBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08de1214D4
- ldr r1, _08de1214B8 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de1214BC @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de1214CA
- .align 2, 0
-_08de1214B4: .4byte gActiveBank
-_08de1214B8: .4byte gBattlePartyID
-_08de1214BC: .4byte gEnemyParty
-_08de1214C0:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de1214CA:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de1214C0
- b _08de12184E
-_08de1214D4:
- ldr r1, _08de1214E0 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08de1214E0: .4byte gBattlePartyID
-_08121578:
- ldr r0, _08de12151C @ =0x02000000
- ldr r1, _08de121520 @ =0x00016003
- adds r4, r0, r1
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _081215E8
- ldr r1, _08de121524 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de121528 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de121536
- .align 2, 0
-_08de12151C: .4byte 0x02000000
-_08de121520: .4byte 0x00016003
-_08de121524: .4byte gBattlePartyID
-_08de121528: .4byte gEnemyParty
-_08de12152C:
- mov r2, r8
- adds r0, r2, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de121536:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de12152C
- b _08de12184E
-_081215E8:
- ldr r1, _081215F4 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_081215F4: .4byte gBattlePartyID
-_081215F8:
- ldr r0, _08de121568 @ =gSelectedOrderFromParty
- ldr r2, [r0]
- ldrh r1, [r2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _08de121574
- ldr r0, _08de12156C @ =0x02000000
- ldr r3, _08de121570 @ =0x000160a0
- adds r0, r3
- b _08de12158C
- .align 2, 0
-_08de121568: .4byte gSelectedOrderFromParty
-_08de12156C: .4byte 0x02000000
-_08de121570: .4byte 0x000160a0
-_08de121574:
- ldrh r1, [r2]
- b _08de1215AA
-_08121620:
- ldr r0, _08de121598 @ =gSelectedOrderFromParty
- ldr r2, [r0]
- ldrh r1, [r2, 0x2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _08de1215A8
- ldr r0, _08de12159C @ =0x02000000
- ldr r5, _08de1215A0 @ =0x000160a0
- adds r0, r5
-_08de12158C:
- ldrb r0, [r0]
- lsls r0, 2
- ldr r1, _08de1215A4 @ =gUnknown_08401674
- adds r4, r0, r1
- b _081219E6
- .align 2, 0
-_08de121598: .4byte gSelectedOrderFromParty
-_08de12159C: .4byte 0x02000000
-_08de1215A0: .4byte 0x000160a0
-_08de1215A4: .4byte gUnknown_08401674
-_08de1215A8:
- ldrh r1, [r2, 0x2]
-_08de1215AA:
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08de1215B4 @ =gMoveNames
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_08de1215B4: .4byte gMoveNames
-_08121660:
- ldr r0, _08de121604 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08de121630
- ldr r1, _08de121608 @ =gLastUsedItem
- ldrh r0, [r1]
- cmp r0, 0xAF
- bne _08de12162C
- ldr r2, _08de12160C @ =gLinkPlayers
- ldr r0, _08de121610 @ =0x02000000
- ldr r1, _08de121614 @ =0x000160cb
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _08de121618 @ =gStringBank
- ldrb r2, [r1]
- ldrh r0, [r0, 0x18]
- cmp r0, r2
- bne _08de121624
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, _08de12161C @ =gEnigmaBerries
- adds r1, r0
- mov r0, sp
- bl StringCopy
- ldr r1, _08de121620 @ =gUnknown_08400A85
- mov r0, sp
- bl de_sub_8073174
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08de121604: .4byte gBattleTypeFlags
-_08de121608: .4byte gLastUsedItem
-_08de12160C: .4byte gLinkPlayers
-_08de121610: .4byte 0x02000000
-_08de121614: .4byte 0x000160cb
-_08de121618: .4byte gStringBank
-_08de12161C: .4byte gEnigmaBerries
-_08de121620: .4byte gUnknown_08400A85
-_08de121624:
- ldr r4, _08de121628 @ =gUnknown_08400A78
- b _081219E6
- .align 2, 0
-_08de121628: .4byte gUnknown_08400A78
-_08de12162C:
- ldrh r0, [r1]
- b _08de121634
-_08de121630:
- ldr r0, _08de121640 @ =gLastUsedItem
- ldrh r0, [r0]
-_08de121634:
- mov r1, sp
- bl CopyItemName
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08de121640: .4byte gLastUsedItem
-_081216EC:
- ldr r0, _08de121648 @ =gLastUsedAbility
- b _08de12168C
- .align 2, 0
-_08de121648: .4byte gLastUsedAbility
-_081216F4:
- ldr r1, _08de121654 @ =gAbilitiesPerBank
- ldr r0, _08de121658 @ =gBankAttacker
- b _08de121688
- .align 2, 0
-_08de121654: .4byte gAbilitiesPerBank
-_08de121658: .4byte gBankAttacker
-_08121704:
- ldr r1, _08de121664 @ =gAbilitiesPerBank
- ldr r0, _08de121668 @ =gBankTarget
- b _08de121688
- .align 2, 0
-_08de121664: .4byte gAbilitiesPerBank
-_08de121668: .4byte gBankTarget
-_08121714:
- ldr r1, _08de121678 @ =gAbilitiesPerBank
- ldr r0, _08de12167C @ =0x02000000
- ldr r2, _08de121680 @ =0x00016003
- adds r0, r2
- b _08de121688
- .align 2, 0
-_08de121678: .4byte gAbilitiesPerBank
-_08de12167C: .4byte 0x02000000
-_08de121680: .4byte 0x00016003
-_0812172C:
- ldr r1, _08de121698 @ =gAbilitiesPerBank
- ldr r0, _08de12169C @ =gEffectBank
-_08de121688:
- ldrb r0, [r0]
- adds r0, r1
-_08de12168C:
- ldrb r1, [r0]
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08de1216A0 @ =gAbilityNames
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_08de121698: .4byte gAbilitiesPerBank
-_08de12169C: .4byte gEffectBank
-_08de1216A0: .4byte gAbilityNames
-_0812174C:
- ldr r3, _08de1216B8 @ =gTrainerBattleOpponent
- ldrh r1, [r3]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _08de1216BC
- adds r0, r1, 0
- movs r1, 0
- b _08de1216EE
- .align 2, 0
-_08de1216B8: .4byte gTrainerBattleOpponent
-_08de1216BC:
- ldr r0, _08de1216D4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _08de1216D8
- adds r0, r2, 0
- movs r1, 0
- b _08de1216EE
- .align 2, 0
-_08de1216D4: .4byte gBattleTypeFlags
-_08de1216D8:
- movs r2, 0x80
- lsls r2, 4
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _08de1216EA
- adds r0, r2, 0
- movs r1, 0
- b _08de1216EE
-_08de1216EA:
- ldrh r1, [r3]
- movs r0, 0
-_08de1216EE:
- bl de_sub_8041024
- adds r4, r0, 0
- b _081219E6
-_081217C0:
- ldr r2, _08de12171C @ =gTrainerBattleOpponent
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _08de121724
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0x8
- bl memset
- ldr r1, _08de121720 @ =0x02017002
- mov r0, sp
- movs r2, 0x7
- bl memcpy
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08de12171C: .4byte gTrainerBattleOpponent
-_08de121720: .4byte 0x02017002
-_08de121724:
- ldr r0, _08de12173C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08de121740
- mov r0, sp
- bl get_trainer_name
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08de12173C: .4byte gBattleTypeFlags
-_08de121740:
- movs r0, 0x80
- lsls r0, 4
- ands r0, r1
- cmp r0, 0
- beq _08de121754
- mov r0, sp
- bl sub_8135FF4
- mov r4, sp
- b _081219E6
-_08de121754:
- ldrh r0, [r2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08de121764 @ =gTrainers+4
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_08de121764: .4byte gTrainers+4
-_08121830:
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- ldr r1, _08de121774 @ =0x03002988
- adds r4, r0, r1
- b _081219E6
- .align 2, 0
-_08de121774: .4byte 0x03002988
-_08121840:
- ldr r4, _08de121788 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x2
- b _08de1217AE
- .align 2, 0
-_08de121788: .4byte gLinkPlayers
-_08121854:
- ldr r4, _08de12179C @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x1
- b _08de1217AE
- .align 2, 0
-_08de12179C: .4byte gLinkPlayers
-_08121868:
- ldr r4, _08de1217C0 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x3
-_08de1217AE:
- eors r0, r1
- bl sub_803FC34
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r4, 0x8
- adds r4, r1, r4
- b _081219E6
- .align 2, 0
-_08de1217C0: .4byte gLinkPlayers
-_0812188C:
- ldr r0, _08de1217DC @ =0x02000000
- ldr r3, _08de1217E0 @ =0x00016003
- adds r0, r3
- ldrb r0, [r0]
- bl sub_803FC34
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _08de1217E4 @ =0x03002988
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_08de1217DC: .4byte 0x02000000
-_08de1217E0: .4byte 0x00016003
-_08de1217E4: .4byte 0x03002988
-_081218B0:
- ldr r4, _08de1217EC @ =gSaveBlock2
- b _081219E6
- .align 2, 0
-_08de1217EC: .4byte gSaveBlock2
-_081218B8:
- bl sub_8082830
- adds r4, r0, 0
- b _081219E6
-_081218C0:
- ldr r4, _08de12182C @ =0x02000000
- ldr r5, _08de121830 @ =0x00016003
- adds r0, r4, r5
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08121934
- ldr r1, _08de121834 @ =0x0001605e
- adds r0, r4, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de121838 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _08de121846
- .align 2, 0
-_08de12182C: .4byte 0x02000000
-_08de121830: .4byte 0x00016003
-_08de121834: .4byte 0x0001605e
-_08de121838: .4byte gEnemyParty
-_08de12183C:
- mov r2, r8
- adds r0, r2, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_08de121846:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08de12183C
-_08de12184E:
- ldr r0, _08121920 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _08121924 @ =gUnknown_08400791
- cmp r0, 0
- beq _081219E6
- ldr r4, _08121928 @ =gUnknown_08400797
- b _081219E6
- .align 2, 0
-_08121920: .4byte gBattleTypeFlags
-_08121924: .4byte gUnknown_08400791
-_08121928: .4byte gUnknown_08400797
-_08121934:
- ldr r3, _08121954 @ =0x0001605e
- adds r0, r4, r3
- ldrb r1, [r0]
-_0812193A:
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121958 @ =gPlayerParty
-_08121940:
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0812194A:
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08121954: .4byte 0x0001605e
-_08121958: .4byte gPlayerParty
-_0812195C:
- ldr r0, _08121970 @ =0x0000084b
- bl FlagGet
- lsls r0, 24
- ldr r4, _08121974 @ =gUnknown_084009ED
- cmp r0, 0
- beq _081219E6
- ldr r4, _08121978 @ =gUnknown_084009F7
- b _081219E6
- .align 2, 0
-_08121970: .4byte 0x0000084b
-_08121974: .4byte gUnknown_084009ED
-_08121978: .4byte gUnknown_084009F7
-_0812197C:
- ldr r0, _08de1218B8 @ =gBankAttacker
- b _08121986
- .align 2, 0
-_08de1218B8: .4byte gBankAttacker
-_08121984:
- ldr r0, _08121998 @ =gBankTarget
-_08121986:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, _0812199C @ =gUnknown_084007A7
- cmp r0, 0
- bne _081219E6
- ldr r4, _081219A0 @ =gUnknown_084007AC
- b _081219E6
- .align 2, 0
-_08121998: .4byte gBankTarget
-_0812199C: .4byte gUnknown_084007A7
-_081219A0: .4byte gUnknown_084007AC
-_081219A4:
- ldr r0, _081219A8 @ =gBankAttacker
- b _081219AE
- .align 2, 0
-_081219A8: .4byte gBankAttacker
-_081219AC:
- ldr r0, _081219C0 @ =gBankTarget
-_081219AE:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, _081219C4 @ =gUnknown_0840079C
- cmp r0, 0
- bne _081219E6
- ldr r4, _081219C8 @ =gUnknown_084007A1
- b _081219E6
- .align 2, 0
-_081219C0: .4byte gBankTarget
-_081219C4: .4byte gUnknown_0840079C
-_081219C8: .4byte gUnknown_084007A1
-_081219CC:
- ldr r0, _081219D0 @ =gBankAttacker
- b _081219D6
- .align 2, 0
-_081219D0: .4byte gBankAttacker
-_081219D4:
- ldr r0, _08121A24 @ =gBankTarget
-_081219D6:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, _08121A28 @ =gUnknown_084007B2
- cmp r0, 0
- bne _081219E6
- ldr r4, _08121A2C @ =gUnknown_084007B7
-_081219E6:
- ldrb r1, [r4]
- adds r0, r1, 0
- mov r5, r9
- ldrb r2, [r5]
- mov r3, r9
- adds r3, 0x1
- cmp r0, 0xFF
- beq _08121A06
-_081219F4:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081219F4
-_08121A06:
- lsls r0, r2, 24
- lsrs r0, 24
- cmp r0, 0x21
- bne _08121A3C
- mov r0, r8
- adds r1, r0, r6
- movs r0, 0xFC
- strb r0, [r1]
- adds r6, 0x1
- mov r2, r8
- adds r1, r2, r6
- movs r0, 0x9
- strb r0, [r1]
- adds r6, 0x1
- b _08121A3C
- .align 2, 0
-_08121A24: .4byte gBankTarget
-_08121A28: .4byte gUnknown_084007B2
-_08121A2C: .4byte gUnknown_084007B7
-_08121A30:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- mov r3, r9
- adds r3, 0x1
-_08121A3C:
- mov r9, r3
- ldrb r1, [r3]
-_08121A40:
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _08121A4A
- bl _0812101E
-_08121A4A:
- mov r5, r8
- adds r1, r5, r6
- mov r2, r9
- ldrb r0, [r2]
- strb r0, [r1]
- adds r6, 0x1
- adds r0, r6, 0
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end StrCpyDecodeBattle
-
- thumb_func_start sub_8121A68
-sub_8121A68: @ 8121A68
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r7, r0, 0
- adds r6, r1, 0
- movs r5, 0x1
- movs r0, 0
- mov r8, r0
- movs r0, 0xFF
- strb r0, [r6]
- ldrb r0, [r7, 0x1]
- cmp r0, 0xFF
- bne _08121A86
- b _08121D0E
-_08121A86:
- adds r0, r7, r5
- ldrb r1, [r0]
- adds r2, r0, 0
- cmp r1, 0xA
- bls _08121A92
- b _08121D04
-_08121A92:
- lsls r0, r1, 2
- ldr r1, _08121A9C @ =_08121AA0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08121A9C: .4byte _08121AA0
- .align 2, 0
-_08121AA0:
- .4byte _08121ACC
- .4byte _08121AE8
- .4byte _08121B3C
- .4byte _08121B54
- .4byte _08121B64
- .4byte _08121BDC
- .4byte _08121BF0
- .4byte _08121C02
- .4byte _08121C48
- .4byte _08121C5C
- .4byte _08121C78
-_08121ACC:
- adds r0, r5, r7
- ldrb r2, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r2, r0
- cmp r2, 0xD1
- beq _08de121ADA
- cmp r2, 0xD3
- bne _08de121ADC
-_08de121ADA:
- adds r5, 0x3
-_08de121ADC:
- ldr r0, _08121AE4 @ =gBattleStringsTable
- adds r1, r2, 0
- subs r1, 0xC
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- b _08121CE2
- .align 2, 0
-_08121AE4: .4byte gBattleStringsTable
-_08121AE8:
- adds r1, r2, 0
- ldrb r0, [r1, 0x1]
- cmp r0, 0x2
- beq _08121B04
- cmp r0, 0x2
- bgt _08121AF8
- cmp r0, 0x1
- beq _08121AFE
- b _08121B26
-_08121AF8:
- cmp r0, 0x4
- beq _08121B0C
- b _08121B26
-_08121AFE:
- ldrb r1, [r1, 0x3]
- b _08de121B30
-_08121B04:
- ldrb r0, [r1, 0x3]
- mov r8, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 8
- mov r1, r8
- b _08121B22
-_08121B0C:
- ldrb r0, [r2, 0x3]
- mov r8, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 8
- mov r1, r8
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 24
-_08121B22:
- orrs r1, r0
-_08de121B30:
- mov r8, r1
-_08121B26:
- adds r4, r5, r7
- ldrb r3, [r4, 0x2]
- adds r0, r6, 0
- mov r1, r8
- movs r2, 0
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0x3
- ldrb r4, [r4, 0x1]
- adds r5, r0, r4
- b _08121D04
-_08121B3C:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08de121B5C @ =gMoveNames
- adds r1, r0
- b _08121CE2
- .align 2, 0
-_08de121B5C: .4byte gMoveNames
-_08121B54:
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r1, r0, 3
- subs r1, r0
- ldr r0, _08de121B6C @ =gTypeNames
- b _08121C66
- .align 2, 0
-_08de121B6C: .4byte gTypeNames
-_08121B64:
- adds r4, r5, r7
- ldrb r0, [r4, 0x1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08121B88
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121B84 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- b _08121D02
- .align 2, 0
-_08121B84: .4byte gPlayerParty
-_08121B88:
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08de121BD4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- bl StringGetEnd10
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- ldr r0, _08121BA0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08121BA8
- ldr r1, _08121BA4 @ =gUnknown_08400797
- b _08121CE2
- .align 2, 0
-_08de121BD4: .4byte gEnemyParty
-_08121BA0: .4byte gBattleTypeFlags
-_08121BA4: .4byte gUnknown_08400797
-_08121BA8:
- ldr r1, _08121BD4 @ =gUnknown_08400791
- adds r0, r6, 0
- bl StringAppend
- b _08121D02
- .align 2, 0
-_08121BD4: .4byte gUnknown_08400791
-_08121BDC:
- ldr r1, _08121BEC @ =gUnknown_08400F58
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- b _08121C68
- .align 2, 0
-_08121BEC: .4byte gUnknown_08400F58
-_08121BF0:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- adds r0, r6, 0
- bl GetSpeciesName
- b _08121D02
-_08121C02:
- adds r4, r5, r7
- ldrb r0, [r4, 0x1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08121C28
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121C24 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
- b _08121C3A
- .align 2, 0
-_08121C24: .4byte gPlayerParty
-_08121C28:
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121C44 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
-_08121C3A:
- adds r0, r6, 0
- bl StringGetEnd10
- b _08121D02
- .align 2, 0
-_08121C44: .4byte gEnemyParty
-_08121C48:
- ldr r1, _08121C58 @ =gUnknown_08400F78
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- b _08121C68
- .align 2, 0
-_08121C58: .4byte gUnknown_08400F78
-_08121C5C:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08121C74 @ =gAbilityNames
-_08121C66:
- adds r1, r0
-_08121C68:
- adds r0, r6, 0
- bl StringAppend
- adds r5, 0x2
- b _08121D04
- .align 2, 0
-_08121C74: .4byte gAbilityNames
-_08121C78:
- adds r0, r5, r7
- ldrb r2, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r2, r0
- ldr r0, _08121CC4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08121CFA
- cmp r2, 0xAF
- bne _08121CF0
- ldr r2, _08121CC8 @ =gLinkPlayers
- ldr r0, _08121CCC @ =0x02000000
- ldr r1, _08121CD0 @ =0x000160cb
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _08121CD4 @ =gStringBank
- ldrb r2, [r1]
- ldrh r0, [r0, 0x18]
- cmp r0, r2
- bne _08121CE0
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, _08121CD8 @ =gEnigmaBerries
- adds r1, r0
- adds r0, r6, 0
- bl StringCopy
- ldr r1, _08121CDC @ =gUnknown_08400A85
- adds r0, r6, 0
- bl de_sub_8073174
- b _08121D02
- .align 2, 0
-_08121CC4: .4byte gBattleTypeFlags
-_08121CC8: .4byte gLinkPlayers
-_08121CCC: .4byte 0x02000000
-_08121CD0: .4byte 0x000160cb
-_08121CD4: .4byte gStringBank
-_08121CD8: .4byte gEnigmaBerries
-_08121CDC: .4byte gUnknown_08400A85
-_08121CE0:
- ldr r1, _08121CEC @ =gUnknown_08400A78
-_08121CE2:
- adds r0, r6, 0
- bl StringAppend
- b _08121D02
- .align 2, 0
-_08121CEC: .4byte gUnknown_08400A78
-_08121CF0:
- adds r0, r2, 0
- adds r1, r6, 0
- bl CopyItemName
- b _08121D02
-_08121CFA:
- adds r0, r2, 0
- adds r1, r6, 0
- bl CopyItemName
-_08121D02:
- adds r5, 0x3
-_08121D04:
- adds r0, r7, r5
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08121D0E
- b _08121A86
-_08121D0E:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8121A68
-
- thumb_func_start sub_8121D1C
-sub_8121D1C: @ 8121D1C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r2, 0
- ldr r5, _08121D50 @ =gSelectedOrderFromParty
- ldr r3, _08121D54 @ =gUnknown_084016BC
-_08121D26:
- cmp r2, 0x4
- beq _08121D3C
- ldrh r1, [r3]
- cmp r1, 0
- bne _08121D32
- adds r2, 0x1
-_08121D32:
- ldr r0, [r5]
- adds r3, 0x2
- ldrh r0, [r0]
- cmp r1, r0
- bne _08121D26
-_08121D3C:
- cmp r2, 0
- blt _08121D68
- cmp r2, 0x2
- bgt _08121D5C
- ldr r1, _08121D58 @ =gUnknown_08400E5E
- adds r0, r4, 0
- bl StringCopy
- b _08121D68
- .align 2, 0
-_08121D50: .4byte gSelectedOrderFromParty
-_08121D54: .4byte gUnknown_084016BC
-_08121D58: .4byte gUnknown_08400E5E
-_08121D5C:
- cmp r2, 0x4
- bgt _08121D68
- ldr r1, _08121D70 @ =gUnknown_08400E62
- adds r0, r4, 0
- bl StringCopy
-_08121D68:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08121D70: .4byte gUnknown_08400E62
- thumb_func_end sub_8121D1C
-
- thumb_func_start sub_8121D74
-sub_8121D74: @ 8121D74
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r4, 0
- b _08121D7E
-_08121D7C:
- adds r3, 0x1
-_08121D7E:
- ldrb r0, [r3]
- cmp r0, 0xFF
- bne _08121D7C
- ldr r1, _08121DB4 @ =gUnknown_084016BC
- ldr r5, _08121DB8 @ =gSelectedOrderFromParty
- movs r0, 0
- lsls r0, 1
- adds r2, r0, r1
-_08121D8E:
- cmp r4, 0x4
- beq _08121DA8
- ldrh r1, [r2]
- cmp r1, 0
- bne _08121D9A
- adds r4, 0x1
-_08121D9A:
- ldr r0, [r5]
- adds r2, 0x2
- ldrh r0, [r0]
- cmp r1, r0
- bne _08121D8E
- cmp r4, 0x4
- bhi _08121E04
-_08121DA8:
- lsls r0, r4, 2
- ldr r1, _08121DBC @ =_08121DC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08121DB4: .4byte gUnknown_084016BC
-_08121DB8: .4byte gSelectedOrderFromParty
-_08121DBC: .4byte _08121DC0
- .align 2, 0
-_08121DC0:
- .4byte _08121DD4
- .4byte _08121DDC
- .4byte _08121DE4
- .4byte _08121DEC
- .4byte _08121DFC
-_08121DD4:
- ldr r1, _08121DD8 @ =gUnknown_084007C8
- b _08121DEE
- .align 2, 0
-_08121DD8: .4byte gUnknown_084007C8
-_08121DDC:
- ldr r1, _08121DE0 @ =gUnknown_084007CA
- b _08121DEE
- .align 2, 0
-_08121DE0: .4byte gUnknown_084007CA
-_08121DE4:
- ldr r1, _08121DE8 @ =gUnknown_084007CC
- b _08121DEE
- .align 2, 0
-_08121DE8: .4byte gUnknown_084007CC
-_08121DEC:
- ldr r1, _08121DF8 @ =gUnknown_084007CE
-_08121DEE:
- adds r0, r3, 0
- bl StringCopy
- b _08121E04
- .align 2, 0
-_08121DF8: .4byte gUnknown_084007CE
-_08121DFC:
- ldr r1, _08121E0C @ =gUnknown_084007D0
- adds r0, r3, 0
- bl StringCopy
-_08121E04:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08121E0C: .4byte gUnknown_084007D0
- thumb_func_end sub_8121D74
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm-de/berry_blender.s b/asm-de/berry_blender.s
deleted file mode 100644
index 59aa1894a..000000000
--- a/asm-de/berry_blender.s
+++ /dev/null
@@ -1,9141 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_804E290
-sub_804E290: @ 804E290
- push {lr}
- ldr r0, _0804E2B0 @ =gMPlay_SE2
- ldr r1, _0804E2B4 @ =0x0000ffff
- ldr r2, _0804E2B8 @ =gUnknown_03004854
- ldr r2, [r2]
- adds r2, 0x56
- movs r3, 0
- ldrsh r2, [r2, r3]
- subs r2, 0x80
- lsls r2, 17
- asrs r2, 16
- bl m4aMPlayPitchControl
- pop {r0}
- bx r0
- .align 2, 0
-_0804E2B0: .4byte gMPlay_SE2
-_0804E2B4: .4byte 0x0000ffff
-_0804E2B8: .4byte gUnknown_03004854
- thumb_func_end sub_804E290
-
- thumb_func_start sub_804E2BC
-sub_804E2BC: @ 804E2BC
- push {lr}
- bl sub_80514A4
- bl sub_80514F0
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_804E2BC
-
- thumb_func_start sub_804E2D8
-sub_804E2D8: @ 804E2D8
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_804E2D8
-
- thumb_func_start sub_804E2EC
-sub_804E2EC: @ 804E2EC
- push {r4-r7,lr}
- ldr r1, _0804E308 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- mov r12, r1
- cmp r0, 0x9
- bls _0804E2FC
- b _0804E4F4
-_0804E2FC:
- lsls r0, 2
- ldr r1, _0804E30C @ =_0804E310
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804E308: .4byte gUnknown_03004854
-_0804E30C: .4byte _0804E310
- .align 2, 0
-_0804E310:
- .4byte _0804E338
- .4byte _0804E34C
- .4byte _0804E380
- .4byte _0804E3C4
- .4byte _0804E3D8
- .4byte _0804E3EC
- .4byte _0804E410
- .4byte _0804E434
- .4byte _0804E48C
- .4byte _0804E4BC
-_0804E338:
- ldr r0, _0804E344 @ =gUnknown_08E6C100
- ldr r1, _0804E348 @ =0x02010000
- bl sub_800D238
- b _0804E49E
- .align 2, 0
-_0804E344: .4byte gUnknown_08E6C100
-_0804E348: .4byte 0x02010000
-_0804E34C:
- ldr r1, _0804E36C @ =gUnknown_08215C2C
- ldr r2, _0804E370 @ =0x06004000
- ldr r0, _0804E374 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804E378 @ =0x80000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, _0804E37C @ =gUnknown_08215C0C
- movs r2, 0x80
- lsls r2, 1
- movs r1, 0
- bl LoadPalette
- b _0804E49E
- .align 2, 0
-_0804E36C: .4byte gUnknown_08215C2C
-_0804E370: .4byte 0x06004000
-_0804E374: .4byte 0x040000d4
-_0804E378: .4byte 0x80000200
-_0804E37C: .4byte gUnknown_08215C0C
-_0804E380:
- ldr r3, _0804E3B8 @ =0x02010000
- movs r4, 0xC0
- lsls r4, 19
- movs r5, 0x80
- lsls r5, 6
- ldr r1, _0804E3BC @ =0x040000d4
- ldr r6, _0804E3C0 @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_0804E396:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _0804E396
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- mov r0, r12
- b _0804E4A0
- .align 2, 0
-_0804E3B8: .4byte 0x02010000
-_0804E3BC: .4byte 0x040000d4
-_0804E3C0: .4byte 0x80000800
-_0804E3C4:
- ldr r0, _0804E3D0 @ =gUnknown_08E6C920
- ldr r1, _0804E3D4 @ =0x02010000
- bl sub_800D238
- b _0804E49E
- .align 2, 0
-_0804E3D0: .4byte gUnknown_08E6C920
-_0804E3D4: .4byte 0x02010000
-_0804E3D8:
- ldr r0, _0804E3E4 @ =gUnknown_08E6D354
- ldr r1, _0804E3E8 @ =0x02013000
- bl sub_800D238
- b _0804E49E
- .align 2, 0
-_0804E3E4: .4byte gUnknown_08E6D354
-_0804E3E8: .4byte 0x02013000
-_0804E3EC:
- ldr r1, _0804E400 @ =0x02010000
- ldr r2, _0804E404 @ =0x0600e000
- ldr r0, _0804E408 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804E40C @ =0x80000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- mov r0, r12
- b _0804E4A0
- .align 2, 0
-_0804E400: .4byte 0x02010000
-_0804E404: .4byte 0x0600e000
-_0804E408: .4byte 0x040000d4
-_0804E40C: .4byte 0x80000800
-_0804E410:
- ldr r1, _0804E424 @ =0x02011000
- ldr r2, _0804E428 @ =0x0600f000
- ldr r0, _0804E42C @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804E430 @ =0x80000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- mov r0, r12
- b _0804E4A0
- .align 2, 0
-_0804E424: .4byte 0x02011000
-_0804E428: .4byte 0x0600f000
-_0804E42C: .4byte 0x040000d4
-_0804E430: .4byte 0x80000800
-_0804E434:
- ldr r3, _0804E474 @ =0x02013000
- movs r2, 0
- adds r6, r3, 0
- ldr r7, _0804E478 @ =gUnknown_0821602C
- movs r0, 0x80
- lsls r0, 1
- adds r5, r0, 0
- ldr r4, _0804E47C @ =0x0000027f
-_0804E444:
- lsls r0, r2, 1
- adds r0, r3
- ldrh r1, [r0]
- orrs r1, r5
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r4
- bls _0804E444
- ldr r1, _0804E480 @ =0x06006000
- ldr r0, _0804E484 @ =0x040000d4
- str r6, [r0]
- str r1, [r0, 0x4]
- ldr r1, _0804E488 @ =0x80000280
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- adds r0, r7, 0
- movs r1, 0x80
- movs r2, 0x20
- bl LoadPalette
- b _0804E49E
- .align 2, 0
-_0804E474: .4byte 0x02013000
-_0804E478: .4byte gUnknown_0821602C
-_0804E47C: .4byte 0x0000027f
-_0804E480: .4byte 0x06006000
-_0804E484: .4byte 0x040000d4
-_0804E488: .4byte 0x80000280
-_0804E48C:
- ldr r0, _0804E4AC @ =gUnknown_082163DC
- bl LoadSpriteSheet
- ldr r0, _0804E4B0 @ =gUnknown_082164F4
- bl LoadSpriteSheet
- ldr r0, _0804E4B4 @ =gUnknown_08216454
- bl LoadSpriteSheet
-_0804E49E:
- ldr r0, _0804E4B8 @ =gUnknown_03004854
-_0804E4A0:
- ldr r1, [r0]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
- b _0804E4F4
- .align 2, 0
-_0804E4AC: .4byte gUnknown_082163DC
-_0804E4B0: .4byte gUnknown_082164F4
-_0804E4B4: .4byte gUnknown_08216454
-_0804E4B8: .4byte gUnknown_03004854
-_0804E4BC:
- ldr r0, _0804E4E0 @ =gUnknown_08216540
- bl LoadSpriteSheet
- ldr r0, _0804E4E4 @ =gUnknown_08216574
- bl LoadSpriteSheet
- ldr r0, _0804E4E8 @ =gUnknown_082163EC
- bl LoadSpritePalette
- ldr r0, _0804E4EC @ =gUnknown_082163E4
- bl LoadSpritePalette
- ldr r0, _0804E4F0 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x1]
- movs r0, 0x1
- b _0804E4F6
- .align 2, 0
-_0804E4E0: .4byte gUnknown_08216540
-_0804E4E4: .4byte gUnknown_08216574
-_0804E4E8: .4byte gUnknown_082163EC
-_0804E4EC: .4byte gUnknown_082163E4
-_0804E4F0: .4byte gUnknown_03004854
-_0804E4F4:
- movs r0, 0
-_0804E4F6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_804E2EC
-
- thumb_func_start sub_804E4FC
-sub_804E4FC: @ 804E4FC
- movs r1, 0x80
- lsls r1, 19
- ldr r2, _0804E52C @ =0x00001341
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0xC
- movs r2, 0x91
- lsls r2, 7
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _0804E530 @ =0x00000c0d
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0804E534 @ =REG_BG0HOFS
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0804E52C: .4byte 0x00001341
-_0804E530: .4byte 0x00000c0d
-_0804E534: .4byte REG_BG0HOFS
- thumb_func_end sub_804E4FC
-
- thumb_func_start sub_804E538
-sub_804E538: @ 804E538
- push {lr}
- ldr r1, _0804E55C @ =gUnknown_03004854
- ldr r0, _0804E560 @ =0x02018000
- str r0, [r1]
- adds r2, r0, 0
- adds r2, 0x6F
- movs r1, 0
- strb r1, [r0]
- strb r1, [r2]
- ldr r0, _0804E564 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl sub_804E884
- ldr r0, _0804E568 @ =sub_804E56C
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0804E55C: .4byte gUnknown_03004854
-_0804E560: .4byte 0x02018000
-_0804E564: .4byte gSpecialVar_0x8004
-_0804E568: .4byte sub_804E56C
- thumb_func_end sub_804E538
-
- thumb_func_start sub_804E56C
-sub_804E56C: @ 804E56C
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _0804E588 @ =gUnknown_03004854
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x6
- bls _0804E57C
- b _0804E71A
-_0804E57C:
- lsls r0, 2
- ldr r1, _0804E58C @ =_0804E590
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804E588: .4byte gUnknown_03004854
-_0804E58C: .4byte _0804E590
- .align 2, 0
-_0804E590:
- .4byte _0804E5AC
- .4byte _0804E614
- .4byte _0804E67C
- .4byte _0804E692
- .4byte _0804E6A8
- .4byte _0804E6D4
- .4byte _0804E700
-_0804E5AC:
- movs r0, 0x80
- lsls r0, 19
- movs r5, 0
- strh r5, [r0]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r0, 0
- bl SetVBlankCallback
- ldr r4, _0804E60C @ =gWindowConfig_81E6F68
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r3, _0804E610 @ =gUnknown_03004854
- ldr r2, [r3]
- ldrb r0, [r2]
- adds r0, 0x1
- movs r1, 0
- strb r0, [r2]
- ldr r2, [r3]
- movs r3, 0xA0
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- subs r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- movs r0, 0xA1
- lsls r0, 1
- adds r3, r2, r0
- movs r0, 0x50
- strh r0, [r3]
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- strb r5, [r2, 0x1]
- bl sub_8051474
- b _0804E71A
- .align 2, 0
-_0804E60C: .4byte gWindowConfig_81E6F68
-_0804E610: .4byte gUnknown_03004854
-_0804E614:
- bl sub_804E2EC
- lsls r0, 24
- cmp r0, 0
- bne _0804E620
- b _0804E71A
-_0804E620:
- movs r4, 0
- ldr r5, _0804E668 @ =gUnknown_082162E4
- ldr r6, _0804E66C @ =gUnknown_03004854
-_0804E626:
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- ldr r0, _0804E670 @ =gSpriteTemplate_82163F4
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x5C
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x5C
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804E674 @ =gSprites
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804E626
- ldr r0, _0804E678 @ =sub_804E2BC
- bl SetVBlankCallback
- b _0804E6BE
- .align 2, 0
-_0804E668: .4byte gUnknown_082162E4
-_0804E66C: .4byte gUnknown_03004854
-_0804E670: .4byte gSpriteTemplate_82163F4
-_0804E674: .4byte gSprites
-_0804E678: .4byte sub_804E2BC
-_0804E67C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl sub_8051474
- b _0804E6BE
-_0804E692:
- bl sub_804E4FC
- ldr r0, _0804E6A4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804E71A
- b _0804E6BE
- .align 2, 0
-_0804E6A4: .4byte gPaletteFade
-_0804E6A8:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _0804E6CC @ =gOtherText_BlenderChooseBerry
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
-_0804E6BE:
- ldr r0, _0804E6D0 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804E71A
- .align 2, 0
-_0804E6CC: .4byte gOtherText_BlenderChooseBerry
-_0804E6D0: .4byte gUnknown_03004854
-_0804E6D4:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0804E71A
- ldr r0, _0804E6FC @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- movs r0, 0x1
- negs r0, r0
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0804E71A
- .align 2, 0
-_0804E6FC: .4byte gUnknown_03004854
-_0804E700:
- ldr r0, _0804E730 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0804E71A
- bl sub_80A6978
- ldr r0, _0804E734 @ =gUnknown_03004854
- ldr r0, [r0]
- strb r4, [r0]
-_0804E71A:
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E730: .4byte gPaletteFade
-_0804E734: .4byte gUnknown_03004854
- thumb_func_end sub_804E56C
-
- thumb_func_start sub_804E738
-sub_804E738: @ 804E738
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x30]
- adds r0, r1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- subs r1, r2
- ldrh r0, [r4, 0x3C]
- adds r1, r0
- strh r1, [r4, 0x32]
- ldrh r3, [r4, 0x2E]
- adds r0, r3
- strh r0, [r4, 0x2E]
- subs r2, 0x1
- strh r2, [r4, 0x36]
- lsls r0, 16
- lsls r1, 16
- cmp r0, r1
- bge _0804E786
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x36]
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _0804E780
- adds r0, r4, 0
- bl DestroySprite
- b _0804E786
-_0804E780:
- movs r0, 0x74
- bl PlaySE
-_0804E786:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x32]
- strh r0, [r4, 0x22]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804E738
-
- thumb_func_start sub_804E794
-sub_804E794: @ 804E794
- push {r4-r6,lr}
- ldr r5, [sp, 0x10]
- ldr r6, [sp, 0x14]
- lsls r2, 16
- lsrs r2, 16
- movs r4, 0
- strh r2, [r0, 0x2E]
- strh r1, [r0, 0x30]
- strh r2, [r0, 0x32]
- strh r3, [r0, 0x34]
- movs r1, 0xA
- strh r1, [r0, 0x36]
- strh r4, [r0, 0x38]
- strh r5, [r0, 0x3A]
- strh r6, [r0, 0x3C]
- ldr r1, _0804E7BC @ =sub_804E738
- str r1, [r0, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E7BC: .4byte sub_804E738
- thumb_func_end sub_804E794
-
- thumb_func_start sub_804E7C0
-sub_804E7C0: @ 804E7C0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- adds r6, r1, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r0, 24
- movs r1, 0xF6
- lsls r1, 23
- adds r0, r1
- lsrs r0, 24
- movs r3, 0x1
- ands r3, r6
- movs r1, 0
- movs r2, 0x50
- bl sub_80A7DEC
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- mov r8, r2
- add r8, r0
- mov r3, r8
- lsls r3, 2
- mov r8, r3
- ldr r0, _0804E83C @ =gSprites
- add r8, r0
- ldr r5, _0804E840 @ =gUnknown_08216594
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 1
- adds r0, r4, r5
- movs r6, 0
- ldrsh r1, [r0, r6]
- adds r0, r5, 0x2
- adds r0, r4, r0
- movs r3, 0
- ldrsh r2, [r0, r3]
- adds r0, r5, 0x4
- adds r0, r4, r0
- movs r6, 0
- ldrsh r3, [r0, r6]
- adds r0, r5, 0x6
- adds r0, r4, r0
- movs r6, 0
- ldrsh r0, [r0, r6]
- str r0, [sp]
- adds r5, 0x8
- adds r4, r5
- movs r5, 0
- ldrsh r0, [r4, r5]
- str r0, [sp, 0x4]
- mov r0, r8
- bl sub_804E794
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E83C: .4byte gSprites
-_0804E840: .4byte gUnknown_08216594
- thumb_func_end sub_804E7C0
-
- thumb_func_start sub_804E844
-sub_804E844: @ 804E844
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r5, r1, 16
- lsrs r5, 16
- adds r0, r5, 0
- adds r0, 0x7C
- lsls r0, 24
- lsrs r0, 24
- bl GetBerryInfo
- adds r4, r0, 0
- strh r5, [r6]
- adds r0, r6, 0x2
- adds r1, r4, 0
- bl StringCopy
- ldrb r0, [r4, 0x15]
- strb r0, [r6, 0x9]
- ldrb r0, [r4, 0x16]
- strb r0, [r6, 0xA]
- ldrb r0, [r4, 0x17]
- strb r0, [r6, 0xB]
- ldrb r0, [r4, 0x18]
- strb r0, [r6, 0xC]
- ldrb r0, [r4, 0x19]
- strb r0, [r6, 0xD]
- ldrb r0, [r4, 0x1A]
- strb r0, [r6, 0xE]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_804E844
-
- thumb_func_start sub_804E884
-sub_804E884: @ 804E884
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0804E89E
- ldr r2, _0804E8AC @ =gLinkPlayers
- movs r3, 0x5
- adds r0, r2, 0
- adds r0, 0x54
-_0804E896:
- strh r3, [r0, 0x1A]
- subs r0, 0x1C
- cmp r0, r2
- bge _0804E896
-_0804E89E:
- cmp r1, 0x1
- beq _0804E8C4
- cmp r1, 0x1
- bgt _0804E8B0
- cmp r1, 0
- beq _0804E8BA
- b _0804E974
- .align 2, 0
-_0804E8AC: .4byte gLinkPlayers
-_0804E8B0:
- cmp r1, 0x2
- beq _0804E8F8
- cmp r1, 0x3
- beq _0804E93C
- b _0804E974
-_0804E8BA:
- ldr r0, _0804E8C0 @ =gUnknown_03004834
- strb r1, [r0]
- b _0804E974
- .align 2, 0
-_0804E8C0: .4byte gUnknown_03004834
-_0804E8C4:
- ldr r0, _0804E8E4 @ =gUnknown_03004834
- strb r1, [r0]
- ldr r0, _0804E8E8 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x88
- movs r1, 0x2
- strb r1, [r0]
- ldr r4, _0804E8EC @ =gLinkPlayers + 0x8
- ldr r1, _0804E8F0 @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- adds r4, 0x1C
- ldr r0, _0804E8F4 @ =gUnknown_082162B8
- ldr r1, [r0]
- b _0804E920
- .align 2, 0
-_0804E8E4: .4byte gUnknown_03004834
-_0804E8E8: .4byte gUnknown_03004854
-_0804E8EC: .4byte gLinkPlayers + 0x8
-_0804E8F0: .4byte gSaveBlock2
-_0804E8F4: .4byte gUnknown_082162B8
-_0804E8F8:
- ldr r0, _0804E928 @ =gUnknown_03004834
- strb r1, [r0]
- ldr r0, _0804E92C @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x88
- movs r1, 0x3
- strb r1, [r0]
- ldr r4, _0804E930 @ =gLinkPlayers + 0x8
- ldr r1, _0804E934 @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x1C
- ldr r5, _0804E938 @ =gUnknown_082162B8
- ldr r1, [r5]
- bl StringCopy
- adds r4, 0x38
- ldr r1, [r5, 0x4]
-_0804E920:
- adds r0, r4, 0
- bl StringCopy
- b _0804E974
- .align 2, 0
-_0804E928: .4byte gUnknown_03004834
-_0804E92C: .4byte gUnknown_03004854
-_0804E930: .4byte gLinkPlayers + 0x8
-_0804E934: .4byte gSaveBlock2
-_0804E938: .4byte gUnknown_082162B8
-_0804E93C:
- ldr r0, _0804E97C @ =gUnknown_03004834
- strb r1, [r0]
- ldr r0, _0804E980 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x88
- movs r1, 0x4
- strb r1, [r0]
- ldr r4, _0804E984 @ =gLinkPlayers + 0x8
- ldr r1, _0804E988 @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x1C
- ldr r5, _0804E98C @ =gUnknown_082162B8
- ldr r1, [r5]
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x38
- ldr r1, [r5, 0x4]
- bl StringCopy
- adds r4, 0x54
- ldr r1, [r5, 0x8]
- adds r0, r4, 0
- bl StringCopy
-_0804E974:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E97C: .4byte gUnknown_03004834
-_0804E980: .4byte gUnknown_03004854
-_0804E984: .4byte gLinkPlayers + 0x8
-_0804E988: .4byte gSaveBlock2
-_0804E98C: .4byte gUnknown_082162B8
- thumb_func_end sub_804E884
-
- thumb_func_start sub_804E990
-sub_804E990: @ 804E990
- push {r4,r5,lr}
- movs r0, 0x80
- lsls r0, 19
- movs r2, 0
- strh r2, [r0]
- ldr r3, _0804E9D8 @ =gUnknown_03004854
- ldr r0, _0804E9DC @ =0x02018000
- str r0, [r3]
- movs r1, 0
- strb r2, [r0]
- movs r2, 0x9A
- lsls r2, 1
- adds r0, r2
- str r1, [r0]
- movs r2, 0
- ldr r5, _0804E9E0 @ =gSpecialVar_0x8004
- adds r4, r3, 0
- movs r3, 0
-_0804E9B4:
- ldr r0, [r4]
- lsls r1, r2, 1
- adds r0, 0x80
- adds r0, r1
- strh r3, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _0804E9B4
- ldrb r0, [r5]
- bl sub_804E884
- ldrh r0, [r5]
- cmp r0, 0
- bne _0804E9E8
- ldr r0, _0804E9E4 @ =sub_804E9F8
- bl SetMainCallback2
- b _0804E9EE
- .align 2, 0
-_0804E9D8: .4byte gUnknown_03004854
-_0804E9DC: .4byte 0x02018000
-_0804E9E0: .4byte gSpecialVar_0x8004
-_0804E9E4: .4byte sub_804E9F8
-_0804E9E8:
- ldr r0, _0804E9F4 @ =sub_804F378
- bl SetMainCallback2
-_0804E9EE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E9F4: .4byte sub_804F378
- thumb_func_end sub_804E990
-
- thumb_func_start sub_804E9F8
-sub_804E9F8: @ 804E9F8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r1, _0804EA18 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- mov r8, r1
- cmp r0, 0x66
- bls _0804EA0E
- b _0804F0CE
-_0804EA0E:
- lsls r0, 2
- ldr r1, _0804EA1C @ =_0804EA20
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804EA18: .4byte gUnknown_03004854
-_0804EA1C: .4byte _0804EA20
- .align 2, 0
-_0804EA20:
- .4byte _0804EBBC
- .4byte _0804EC74
- .4byte _0804EC94
- .4byte _0804ECE8
- .4byte _0804ECFA
- .4byte _0804ED14
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804ED48
- .4byte _0804ED94
- .4byte _0804EDB8
- .4byte _0804EE46
- .4byte _0804EEA0
- .4byte _0804EF16
- .4byte _0804EF34
- .4byte _0804EFD8
- .4byte _0804F00C
- .4byte _0804F0CE
- .4byte _0804F020
- .4byte _0804F024
- .4byte _0804F02A
- .4byte _0804F03A
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F084
- .4byte _0804F0A0
- .4byte _0804F0BC
-_0804EBBC:
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, _0804EC60 @ =sub_804E2BC
- bl SetVBlankCallback
- ldr r4, _0804EC64 @ =gWindowConfig_81E6F68
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r1, _0804EC68 @ =gLinkType
- ldr r2, _0804EC6C @ =0x00004422
- adds r0, r2, 0
- strh r0, [r1]
- ldr r3, _0804EC70 @ =gUnknown_03004854
- ldr r1, [r3]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, [r3]
- adds r4, r0, 0
- adds r4, 0x4E
- movs r1, 0
- strh r2, [r4]
- adds r0, 0x7E
- strb r1, [r0]
- ldr r1, [r3]
- movs r4, 0xA2
- lsls r4, 1
- adds r0, r1, r4
- strh r2, [r0]
- adds r4, 0x2
- adds r0, r1, r4
- strh r2, [r0]
- movs r5, 0
- movs r6, 0
- mov r8, r3
- movs r7, 0xA6
- lsls r7, 1
-_0804EC18:
- ldr r0, [r3]
- lsls r1, r5, 1
- adds r0, 0x70
- adds r0, r1
- strh r6, [r0]
- adds r4, r5, 0x1
- adds r1, r5
- lsls r1, 1
- movs r2, 0x2
-_0804EC2A:
- ldr r0, [r3]
- adds r0, r7
- adds r0, r1
- strh r6, [r0]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0804EC2A
- adds r5, r4, 0
- cmp r5, 0x3
- ble _0804EC18
- mov r0, r8
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x7C
- movs r2, 0
- movs r1, 0
- strh r1, [r0]
- subs r0, 0x26
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x6
- strh r1, [r0]
- strb r2, [r3, 0x1]
- b _0804F0CE
- .align 2, 0
-_0804EC60: .4byte sub_804E2BC
-_0804EC64: .4byte gWindowConfig_81E6F68
-_0804EC68: .4byte gLinkType
-_0804EC6C: .4byte 0x00004422
-_0804EC70: .4byte gUnknown_03004854
-_0804EC74:
- bl sub_804E2EC
- lsls r0, 24
- cmp r0, 0
- bne _0804EC80
- b _0804F0CE
-_0804EC80:
- ldr r0, _0804EC90 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8051474
- b _0804F0CE
- .align 2, 0
-_0804EC90: .4byte gUnknown_03004854
-_0804EC94:
- movs r5, 0
- ldr r4, _0804ECD8 @ =gUnknown_082162E4
- ldr r6, _0804ECDC @ =gUnknown_03004854
-_0804EC9A:
- ldrb r1, [r4]
- ldrb r2, [r4, 0x1]
- ldr r0, _0804ECE0 @ =gSpriteTemplate_82163F4
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x60
- adds r1, r5
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x60
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804ECE4 @ =gSprites
- adds r0, r1
- adds r1, r5, 0
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x3
- ble _0804EC9A
- b _0804F0AA
- .align 2, 0
-_0804ECD8: .4byte gUnknown_082162E4
-_0804ECDC: .4byte gUnknown_03004854
-_0804ECE0: .4byte gSpriteTemplate_82163F4
-_0804ECE4: .4byte gSprites
-_0804ECE8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _0804F0AA
-_0804ECFA:
- bl sub_804E4FC
- ldr r0, _0804ED10 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804ED0C
- b _0804F0CE
-_0804ED0C:
- b _0804F0AA
- .align 2, 0
-_0804ED10: .4byte gPaletteFade
-_0804ED14:
- movs r0, 0
- movs r1, 0xD
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _0804ED40 @ =gOtherText_LinkStandby3
- movs r1, 0x1
- movs r2, 0xE
- bl MenuPrint
- ldr r2, _0804ED44 @ =gUnknown_03004854
- ldr r1, [r2]
- movs r3, 0
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- str r3, [r0]
- b _0804F0CE
- .align 2, 0
-_0804ED40: .4byte gOtherText_LinkStandby3
-_0804ED44: .4byte gUnknown_03004854
-_0804ED48:
- mov r2, r8
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r5, 0
- strb r0, [r1]
- ldr r0, [r2]
- movs r3, 0x9E
- lsls r3, 1
- adds r0, r3
- strb r5, [r0]
- ldr r0, [r2]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- ldr r1, _0804ED8C @ =gScriptItemId
- ldrh r1, [r1]
- bl sub_804E844
- ldr r0, _0804ED90 @ =gBlockSendBuffer
- mov r2, r8
- ldr r1, [r2]
- adds r1, r4
- movs r2, 0x10
- bl memcpy
- bl sub_80084A4
- mov r3, r8
- ldr r0, [r3]
- subs r4, 0x4C
- adds r0, r4
- str r5, [r0]
- b _0804F0CE
- .align 2, 0
-_0804ED8C: .4byte gScriptItemId
-_0804ED90: .4byte gBlockSendBuffer
-_0804ED94:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _0804EDA0
- b _0804F0CE
-_0804EDA0:
- bl ResetBlockReceivedFlags
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _0804EDB0
- b _0804F0AA
-_0804EDB0:
- movs r0, 0x4
- bl sub_8007E9C
- b _0804F0AA
-_0804EDB8:
- mov r0, r8
- ldr r1, [r0]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- bgt _0804EDCE
- b _0804F0CE
-_0804EDCE:
- bl MenuZeroFillScreen
- bl GetBlockReceivedStatus
- adds r4, r0, 0
- bl sub_8008198
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0804EDE6
- b _0804F0CE
-_0804EDE6:
- movs r5, 0
- mov r7, r8
- movs r6, 0xBE
- lsls r6, 1
- b _0804EE18
-_0804EDF0:
- ldr r0, [r7]
- lsls r4, r5, 4
- adds r0, r4, r0
- adds r0, r6
- lsls r1, r5, 8
- ldr r2, _0804EE2C @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x10
- bl memcpy
- ldr r0, [r7]
- lsls r2, r5, 1
- adds r1, r0, 0
- adds r1, 0x80
- adds r1, r2
- adds r0, r4
- adds r0, r6
- ldrh r0, [r0]
- strh r0, [r1]
- adds r5, 0x1
-_0804EE18:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- blt _0804EDF0
- bl ResetBlockReceivedFlags
- b _0804F0AA
- .align 2, 0
-_0804EE2C: .4byte gBlockRecvBuffer
-_0804EE30:
- ldrb r1, [r4]
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x80
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r5, 24
- lsrs r1, 24
- bl sub_804E7C0
- b _0804EE7A
-_0804EE46:
- bl GetLinkPlayerCount
- ldr r2, _0804EE98 @ =gUnknown_03004854
- ldr r1, [r2]
- adds r1, 0x88
- strb r0, [r1]
- movs r5, 0
- ldr r2, [r2]
- movs r3, 0x9E
- lsls r3, 1
- adds r4, r2, r3
- ldr r1, _0804EE9C @ =gUnknown_082162EC
- adds r0, r2, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- ldrb r3, [r4]
- adds r0, r1
-_0804EE6C:
- ldrb r1, [r0]
- cmp r3, r1
- beq _0804EE30
- adds r0, 0x1
- adds r5, 0x1
- cmp r5, 0x3
- ble _0804EE6C
-_0804EE7A:
- ldr r3, _0804EE98 @ =gUnknown_03004854
- ldr r1, [r3]
- movs r4, 0x98
- lsls r4, 1
- adds r2, r1, r4
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, [r3]
- movs r0, 0x9E
- lsls r0, 1
- adds r1, r0
- b _0804F0AE
- .align 2, 0
-_0804EE98: .4byte gUnknown_03004854
-_0804EE9C: .4byte gUnknown_082162EC
-_0804EEA0:
- mov r1, r8
- ldr r2, [r1]
- movs r3, 0x98
- lsls r3, 1
- adds r1, r2, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _0804EEB6
- b _0804F0CE
-_0804EEB6:
- movs r4, 0x9E
- lsls r4, 1
- adds r0, r2, r4
- adds r1, r2, 0
- adds r1, 0x88
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0804EF00
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- mov r0, r8
- ldr r2, [r0]
- ldr r3, _0804EEF4 @ =gUnknown_082162F8
- ldr r1, _0804EEF8 @ =gUnknown_08216300
- adds r0, r2, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r3
- ldr r3, _0804EEFC @ =0xffffa800
- adds r1, r3, 0
- ldrh r0, [r0]
- adds r1, r0
- adds r2, 0x54
- strh r1, [r2]
- b _0804EF06
- .align 2, 0
-_0804EEF4: .4byte gUnknown_082162F8
-_0804EEF8: .4byte gUnknown_08216300
-_0804EEFC: .4byte 0xffffa800
-_0804EF00:
- ldrb r0, [r2]
- subs r0, 0x1
- strb r0, [r2]
-_0804EF06:
- mov r4, r8
- ldr r0, [r4]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- b _0804F0CE
-_0804EF16:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _0804EF22
- b _0804F0CE
-_0804EF22:
- ldr r2, _0804EF30 @ =gUnknown_03004854
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- b _0804EFBC
- .align 2, 0
-_0804EF30: .4byte gUnknown_03004854
-_0804EF34:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 3
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- mov r4, r8
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0x54
- movs r3, 0x80
- lsls r3, 2
- adds r0, r3, 0
- ldrh r4, [r1]
- adds r0, r4
- strh r0, [r1]
- movs r0, 0xA1
- lsls r0, 1
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x4
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xFF
- bls _0804EFB8
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- mov r1, r8
- ldr r3, [r1]
- movs r2, 0xA1
- lsls r2, 1
- adds r1, r3, r2
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r1]
- ldr r2, _0804EFC8 @ =gUnknown_082162F8
- ldr r1, _0804EFCC @ =gUnknown_08216300
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- adds r0, r3, 0
- adds r0, 0x54
- strh r1, [r0]
- ldr r1, _0804EFD0 @ =REG_BG2CNT
- ldr r4, _0804EFD4 @ =0x00004882
- adds r0, r4, 0
- strh r0, [r1]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r3, r0
- movs r0, 0
- str r0, [r1]
- bl sub_804F238
- bl BuyMenuDrawFieldObjects
-_0804EFB8:
- mov r1, r8
- ldr r0, [r1]
-_0804EFBC:
- movs r2, 0xB4
- lsls r2, 1
- adds r0, r2
- bl sub_8051414
- b _0804F0CE
- .align 2, 0
-_0804EFC8: .4byte gUnknown_082162F8
-_0804EFCC: .4byte gUnknown_08216300
-_0804EFD0: .4byte REG_BG2CNT
-_0804EFD4: .4byte 0x00004882
-_0804EFD8:
- bl sub_8051B8C
- lsls r0, 24
- cmp r0, 0
- beq _0804EFF6
- ldr r0, _0804F008 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r3, 0x98
- lsls r3, 1
- adds r2, r1, r3
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804EFF6:
- ldr r0, _0804F008 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r4, 0xB4
- lsls r4, 1
- adds r0, r4
- bl sub_8051414
- b _0804F0CE
- .align 2, 0
-_0804F008: .4byte gUnknown_03004854
-_0804F00C:
- ldr r0, _0804F01C @ =gSpriteTemplate_8216548
- movs r2, 0x10
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x3
- bl CreateSprite
- b _0804F0AA
- .align 2, 0
-_0804F01C: .4byte gSpriteTemplate_8216548
-_0804F020:
- mov r0, r8
- b _0804F0AC
-_0804F024:
- bl sub_80084A4
- b _0804F0AA
-_0804F02A:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _0804F0CE
- bl sub_8007E24
- b _0804F0AA
-_0804F03A:
- mov r1, r8
- ldr r3, [r1]
- adds r2, r3, 0
- adds r2, 0x56
- movs r1, 0
- movs r0, 0x80
- strh r0, [r2]
- movs r2, 0x96
- lsls r2, 1
- adds r0, r3, r2
- str r1, [r0]
- ldr r0, _0804F07C @ =sub_80501FC
- bl SetMainCallback2
- bl GetCurrentMapMusic
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0804F080 @ =0x00000193
- cmp r0, r4
- beq _0804F074
- bl GetCurrentMapMusic
- mov r3, r8
- ldr r1, [r3]
- movs r2, 0xBC
- lsls r2, 1
- adds r1, r2
- strh r0, [r1]
-_0804F074:
- adds r0, r4, 0
- bl PlayBGM
- b _0804F0CE
- .align 2, 0
-_0804F07C: .4byte sub_80501FC
-_0804F080: .4byte 0x00000193
-_0804F084:
- movs r0, 0
- movs r1, 0xD
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _0804F09C @ =gOtherText_LinkNotFound
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _0804F0AA
- .align 2, 0
-_0804F09C: .4byte gOtherText_LinkNotFound
-_0804F0A0:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0804F0CE
-_0804F0AA:
- ldr r0, _0804F0B8 @ =gUnknown_03004854
-_0804F0AC:
- ldr r1, [r0]
-_0804F0AE:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804F0CE
- .align 2, 0
-_0804F0B8: .4byte gUnknown_03004854
-_0804F0BC:
- ldr r0, _0804F0EC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804F0CE
- ldr r0, _0804F0F0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_0804F0CE:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F0EC: .4byte gPaletteFade
-_0804F0F0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_804E9F8
-
- thumb_func_start sub_804F0F4
-sub_804F0F4: @ 804F0F4
- push {r4,lr}
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, _0804F158 @ =sub_804E2BC
- bl SetVBlankCallback
- ldr r4, _0804F15C @ =gWindowConfig_81E6F68
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r1, _0804F160 @ =gLinkType
- ldr r2, _0804F164 @ =0x00004422
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0804F168 @ =gUnknown_03004854
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x4E
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x8
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x6
- strh r1, [r0]
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F158: .4byte sub_804E2BC
-_0804F15C: .4byte gWindowConfig_81E6F68
-_0804F160: .4byte gLinkType
-_0804F164: .4byte 0x00004422
-_0804F168: .4byte gUnknown_03004854
- thumb_func_end sub_804F0F4
-
- thumb_func_start task_tutorial_oak_boy_girl
-task_tutorial_oak_boy_girl: @ 804F16C
- push {lr}
- lsls r0, 16
- lsls r1, 24
- lsrs r0, 24
- adds r2, r0, 0
- adds r2, 0x18
- ldr r0, _0804F1A8 @ =gUnknown_03004854
- ldr r0, [r0]
- lsrs r1, 23
- adds r0, 0xA2
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0804F1AC @ =gUnknown_08216303
- adds r0, r1
- ldrb r1, [r0]
- cmp r2, r1
- bcc _0804F1B4
- adds r0, r1, 0
- adds r0, 0x30
- cmp r2, r0
- bcs _0804F1B4
- subs r0, 0x1C
- cmp r2, r0
- bcc _0804F1B0
- adds r0, 0x8
- cmp r2, r0
- bcs _0804F1B0
- movs r0, 0x2
- b _0804F1B6
- .align 2, 0
-_0804F1A8: .4byte gUnknown_03004854
-_0804F1AC: .4byte gUnknown_08216303
-_0804F1B0:
- movs r0, 0x1
- b _0804F1B6
-_0804F1B4:
- movs r0, 0
-_0804F1B6:
- pop {r1}
- bx r1
- thumb_func_end task_tutorial_oak_boy_girl
-
- thumb_func_start sub_804F1BC
-sub_804F1BC: @ 804F1BC
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r1, 24
- movs r4, 0
- cmp r0, 0xAF
- bne _0804F1EE
- movs r3, 0
- subs r5, r1, 0x1
- adds r2, 0x9
-_0804F1D2:
- adds r0, r2, r4
- adds r1, r2, r3
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bls _0804F1E0
- adds r4, r3, 0
-_0804F1E0:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x4
- bls _0804F1D2
- adds r0, r4, 0x5
- b _0804F204
-_0804F1EE:
- subs r0, 0x85
- lsls r0, 16
- lsrs r4, r0, 16
- subs r5, r1, 0x1
- cmp r4, 0x4
- bls _0804F208
- adds r0, r4, 0
- movs r1, 0x5
- bl __umodsi3
- adds r0, 0x5
-_0804F204:
- lsls r0, 16
- lsrs r4, r0, 16
-_0804F208:
- movs r3, 0
- cmp r3, r5
- bge _0804F22E
- ldr r7, _0804F234 @ =gUnknown_082165BC
- lsls r0, r4, 1
- adds r6, r0, r4
-_0804F214:
- adds r4, r3, 0x1
- lsls r0, r4, 24
- lsrs r0, 24
- adds r1, r3, r6
- adds r1, r7
- ldrb r1, [r1]
- adds r1, 0x85
- bl sub_80516C4
- lsls r4, 16
- lsrs r3, r4, 16
- cmp r3, r5
- blt _0804F214
-_0804F22E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F234: .4byte gUnknown_082165BC
- thumb_func_end sub_804F1BC
-
- thumb_func_start sub_804F238
-sub_804F238: @ 804F238
- push {r4-r7,lr}
- movs r4, 0
- ldr r7, _0804F2A0 @ =gUnknown_03004854
- movs r6, 0xFF
- ldr r5, _0804F2A4 @ =gUnknown_082162EC
-_0804F242:
- ldr r3, [r7]
- lsls r2, r4, 1
- adds r0, r3, 0
- adds r0, 0xA2
- adds r0, r2
- strh r6, [r0]
- adds r1, r3, 0
- adds r1, 0x9A
- adds r1, r2
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- adds r0, r4, r0
- adds r0, r5
- ldrb r0, [r0]
- strh r0, [r1]
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F242
- movs r3, 0
- ldr r7, _0804F2A0 @ =gUnknown_03004854
-_0804F270:
- movs r4, 0
- adds r6, r3, 0x1
- lsls r5, r3, 1
-_0804F276:
- ldr r2, [r7]
- lsls r0, r4, 1
- adds r1, r2, 0
- adds r1, 0x9A
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, r3
- bne _0804F28E
- adds r0, r2, 0
- adds r0, 0xA2
- adds r0, r5
- strh r4, [r0]
-_0804F28E:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F276
- adds r3, r6, 0
- cmp r3, 0x3
- ble _0804F270
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F2A0: .4byte gUnknown_03004854
-_0804F2A4: .4byte gUnknown_082162EC
- thumb_func_end sub_804F238
-
- thumb_func_start BuyMenuDrawFieldObjects
-BuyMenuDrawFieldObjects: @ 804F2A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- ldr r7, _0804F360 @ =gUnknown_03004854
- ldr r0, _0804F364 @ =gUnknown_082162D4
- mov r8, r0
-_0804F2B6:
- ldr r2, [r7]
- lsls r4, r6, 1
- adds r0, r2, 0
- adds r0, 0x9A
- adds r3, r0, r4
- ldrh r0, [r3]
- cmp r0, 0xFF
- beq _0804F34A
- ldr r5, _0804F368 @ =gStringVar1
- adds r1, r2, 0
- adds r1, 0x5C
- ldrh r3, [r3]
- adds r1, r3
- adds r0, r2, 0
- adds r0, 0x60
- adds r0, r6
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, [r7]
- adds r1, r0, 0
- adds r1, 0x9A
- adds r1, r4
- adds r0, 0x5C
- ldrh r1, [r1]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804F36C @ =gSprites
- adds r0, r1
- lsls r1, r6, 24
- lsrs r1, 24
- bl StartSpriteAnim
- bl GetMultiplayerId
- lsls r0, 24
- ldr r1, [r7]
- adds r1, 0x9A
- adds r1, r4
- lsrs r0, 24
- ldrh r1, [r1]
- cmp r0, r1
- bne _0804F31A
- adds r0, r5, 0
- ldr r1, _0804F370 @ =gUnknown_082162C4
- bl StringCopy
- adds r5, r0, 0
-_0804F31A:
- ldr r0, [r7]
- adds r0, 0x9A
- adds r0, r4
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _0804F374 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r5, 0
- bl StringCopy
- mov r0, r8
- ldrb r1, [r0]
- lsls r1, 3
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0x1]
- lsls r2, 3
- ldr r0, _0804F368 @ =gStringVar1
- movs r3, 0x1
- bl MenuPrint_PixelCoords
-_0804F34A:
- movs r0, 0x2
- add r8, r0
- adds r6, 0x1
- cmp r6, 0x3
- ble _0804F2B6
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F360: .4byte gUnknown_03004854
-_0804F364: .4byte gUnknown_082162D4
-_0804F368: .4byte gStringVar1
-_0804F36C: .4byte gSprites
-_0804F370: .4byte gUnknown_082162C4
-_0804F374: .4byte gLinkPlayers + 0x8
- thumb_func_end BuyMenuDrawFieldObjects
-
- thumb_func_start sub_804F378
-sub_804F378: @ 804F378
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r1, _0804F398 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- mov r8, r1
- cmp r0, 0x15
- bls _0804F38E
- b _0804F7E6
-_0804F38E:
- lsls r0, 2
- ldr r1, _0804F39C @ =_0804F3A0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804F398: .4byte gUnknown_03004854
-_0804F39C: .4byte _0804F3A0
- .align 2, 0
-_0804F3A0:
- .4byte _0804F3F8
- .4byte _0804F474
- .4byte _0804F494
- .4byte _0804F4EC
- .4byte _0804F518
- .4byte _0804F7E6
- .4byte _0804F7E6
- .4byte _0804F7E6
- .4byte _0804F54C
- .4byte _0804F7E6
- .4byte _0804F7E6
- .4byte _0804F578
- .4byte _0804F5C8
- .4byte _0804F636
- .4byte _0804F650
- .4byte _0804F6F8
- .4byte _0804F720
- .4byte _0804F7E6
- .4byte _0804F73C
- .4byte _0804F742
- .4byte _0804F748
- .4byte _0804F754
-_0804F3F8:
- bl sub_804F0F4
- ldr r4, _0804F46C @ =gScriptItemId
- ldrh r1, [r4]
- movs r0, 0
- bl sub_80516C4
- ldr r5, _0804F470 @ =gUnknown_03004854
- ldr r0, [r5]
- movs r6, 0xBE
- lsls r6, 1
- adds r0, r6
- ldrh r1, [r4]
- bl sub_804E844
- ldrh r0, [r4]
- ldr r2, [r5]
- adds r1, r2, 0
- adds r1, 0x88
- ldrb r1, [r1]
- adds r2, r6
- bl sub_804F1BC
- movs r4, 0
- movs r6, 0
- mov r8, r5
- movs r7, 0xA6
- lsls r7, 1
-_0804F430:
- ldr r0, [r5]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- strh r6, [r0]
- adds r3, r4, 0x1
- adds r1, r4
- lsls r1, 1
- movs r2, 0x2
-_0804F442:
- ldr r0, [r5]
- adds r0, r7
- adds r0, r1
- strh r6, [r0]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0804F442
- adds r4, r3, 0
- cmp r4, 0x3
- ble _0804F430
- mov r0, r8
- ldr r3, [r0]
- adds r1, r3, 0
- adds r1, 0x7C
- movs r2, 0
- movs r0, 0
- strh r0, [r1]
- strb r2, [r3, 0x1]
- b _0804F7E6
- .align 2, 0
-_0804F46C: .4byte gScriptItemId
-_0804F470: .4byte gUnknown_03004854
-_0804F474:
- bl sub_804E2EC
- lsls r0, 24
- cmp r0, 0
- bne _0804F480
- b _0804F7E6
-_0804F480:
- ldr r0, _0804F490 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8051474
- b _0804F7E6
- .align 2, 0
-_0804F490: .4byte gUnknown_03004854
-_0804F494:
- movs r4, 0
- ldr r5, _0804F4DC @ =gUnknown_082162E4
- ldr r6, _0804F4E0 @ =gUnknown_03004854
-_0804F49A:
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- ldr r0, _0804F4E4 @ =gSpriteTemplate_82163F4
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x60
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x60
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804F4E8 @ =gSprites
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F49A
- ldr r0, _0804F4E0 @ =gUnknown_03004854
- ldr r1, [r0]
- b _0804F74C
- .align 2, 0
-_0804F4DC: .4byte gUnknown_082162E4
-_0804F4E0: .4byte gUnknown_03004854
-_0804F4E4: .4byte gSpriteTemplate_82163F4
-_0804F4E8: .4byte gSprites
-_0804F4EC:
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r2, _0804F514 @ =gUnknown_03004854
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- str r4, [r0]
- b _0804F7E6
- .align 2, 0
-_0804F514: .4byte gUnknown_03004854
-_0804F518:
- mov r2, r8
- ldr r1, [r2]
- movs r3, 0x98
- lsls r3, 1
- adds r1, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x2
- bne _0804F530
- bl sub_804E4FC
-_0804F530:
- ldr r0, _0804F548 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804F53E
- b _0804F7E6
-_0804F53E:
- mov r5, r8
- ldr r1, [r5]
- movs r0, 0x8
- strb r0, [r1]
- b _0804F7E6
- .align 2, 0
-_0804F548: .4byte gPaletteFade
-_0804F54C:
- mov r0, r8
- ldr r1, [r0]
- movs r2, 0
- movs r0, 0xB
- strb r0, [r1]
- mov r1, r8
- ldr r0, [r1]
- movs r3, 0x9E
- lsls r3, 1
- adds r0, r3
- strb r2, [r0]
- b _0804F7E6
-_0804F564:
- lsls r1, 1
- adds r0, r3, 0
- adds r0, 0x80
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r4, 24
- lsrs r1, 24
- bl sub_804E7C0
- b _0804F5A2
-_0804F578:
- movs r4, 0
- ldr r2, _0804F5C0 @ =gUnknown_082162EC
- ldr r0, _0804F5C4 @ =gUnknown_03004854
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- movs r5, 0x9E
- lsls r5, 1
- adds r1, r3, r5
- ldrb r1, [r1]
- adds r0, r2
-_0804F594:
- ldrb r2, [r0]
- cmp r1, r2
- beq _0804F564
- adds r0, 0x1
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F594
-_0804F5A2:
- ldr r3, _0804F5C4 @ =gUnknown_03004854
- ldr r1, [r3]
- movs r5, 0x98
- lsls r5, 1
- adds r2, r1, r5
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, [r3]
- movs r0, 0x9E
- lsls r0, 1
- adds r1, r0
- b _0804F74C
- .align 2, 0
-_0804F5C0: .4byte gUnknown_082162EC
-_0804F5C4: .4byte gUnknown_03004854
-_0804F5C8:
- mov r1, r8
- ldr r3, [r1]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r3, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _0804F5DE
- b _0804F7E6
-_0804F5DE:
- movs r5, 0x9E
- lsls r5, 1
- adds r0, r3, r5
- adds r4, r3, 0
- adds r4, 0x88
- ldrb r0, [r0]
- ldrb r1, [r4]
- cmp r0, r1
- bcc _0804F620
- ldr r2, _0804F614 @ =gUnknown_082162F8
- ldr r1, _0804F618 @ =gUnknown_08216300
- ldrb r0, [r4]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldr r2, _0804F61C @ =0xffffa800
- adds r1, r2, 0
- ldrh r0, [r0]
- adds r1, r0
- adds r0, r3, 0
- adds r0, 0x54
- strh r1, [r0]
- ldrb r0, [r3]
- adds r0, 0x1
- b _0804F624
- .align 2, 0
-_0804F614: .4byte gUnknown_082162F8
-_0804F618: .4byte gUnknown_08216300
-_0804F61C: .4byte 0xffffa800
-_0804F620:
- ldrb r0, [r3]
- subs r0, 0x1
-_0804F624:
- strb r0, [r3]
- mov r3, r8
- ldr r0, [r3]
- movs r5, 0x98
- lsls r5, 1
- adds r0, r5
- movs r1, 0
- str r1, [r0]
- b _0804F7E6
-_0804F636:
- mov r1, r8
- ldr r0, [r1]
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- bl sub_804F238
- movs r0, 0x2B
- bl PlaySE
- mov r2, r8
- ldr r0, [r2]
- b _0804F710
-_0804F650:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r5, 0x80
- lsls r5, 3
- adds r1, r5, 0
- orrs r0, r1
- strh r0, [r2]
- mov r0, r8
- ldr r2, [r0]
- adds r1, r2, 0
- adds r1, 0x54
- movs r3, 0x80
- lsls r3, 2
- adds r0, r3, 0
- ldrh r5, [r1]
- adds r0, r5
- strh r0, [r1]
- movs r0, 0xA1
- lsls r0, 1
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x4
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xFF
- bls _0804F6D6
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- mov r1, r8
- ldr r3, [r1]
- movs r2, 0xA1
- lsls r2, 1
- adds r1, r3, r2
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r1]
- ldr r2, _0804F6E8 @ =gUnknown_082162F8
- ldr r1, _0804F6EC @ =gUnknown_08216300
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- adds r0, r3, 0
- adds r0, 0x54
- strh r1, [r0]
- ldr r1, _0804F6F0 @ =REG_BG2CNT
- ldr r5, _0804F6F4 @ =0x00004882
- adds r0, r5, 0
- strh r0, [r1]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r3, r0
- movs r0, 0
- str r0, [r1]
- movs r0, 0x34
- bl PlaySE
- bl BuyMenuDrawFieldObjects
-_0804F6D6:
- mov r1, r8
- ldr r0, [r1]
- movs r2, 0xB4
- lsls r2, 1
- adds r0, r2
- bl sub_8051414
- b _0804F7E6
- .align 2, 0
-_0804F6E8: .4byte gUnknown_082162F8
-_0804F6EC: .4byte gUnknown_08216300
-_0804F6F0: .4byte REG_BG2CNT
-_0804F6F4: .4byte 0x00004882
-_0804F6F8:
- bl sub_8051B8C
- lsls r0, 24
- cmp r0, 0
- beq _0804F70C
- ldr r0, _0804F71C @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804F70C:
- ldr r0, _0804F71C @ =gUnknown_03004854
- ldr r0, [r0]
-_0804F710:
- movs r3, 0xB4
- lsls r3, 1
- adds r0, r3
- bl sub_8051414
- b _0804F7E6
- .align 2, 0
-_0804F71C: .4byte gUnknown_03004854
-_0804F720:
- ldr r0, _0804F734 @ =gSpriteTemplate_8216548
- movs r2, 0x10
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x3
- bl CreateSprite
- ldr r0, _0804F738 @ =gUnknown_03004854
- ldr r1, [r0]
- b _0804F74C
- .align 2, 0
-_0804F734: .4byte gSpriteTemplate_8216548
-_0804F738: .4byte gUnknown_03004854
-_0804F73C:
- mov r5, r8
- ldr r1, [r5]
- b _0804F74C
-_0804F742:
- mov r0, r8
- ldr r1, [r0]
- b _0804F74C
-_0804F748:
- mov r2, r8
- ldr r1, [r2]
-_0804F74C:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804F7E6
-_0804F754:
- bl sub_804F81C
- ldr r3, _0804F804 @ =gUnknown_03004854
- ldr r4, [r3]
- adds r5, r4, 0
- adds r5, 0x56
- movs r2, 0
- movs r1, 0
- movs r0, 0x80
- strh r0, [r5]
- movs r5, 0x96
- lsls r5, 1
- adds r0, r4, r5
- str r1, [r0]
- ldr r1, _0804F808 @ =0x0000014b
- adds r0, r4, r1
- strb r2, [r0]
- ldr r0, [r3]
- adds r0, 0x7E
- strb r2, [r0]
- ldr r0, _0804F80C @ =sub_80501FC
- bl SetMainCallback2
- movs r4, 0
- ldr r0, _0804F810 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- bge _0804F7B8
- movs r5, 0xA0
- lsls r5, 20
- ldr r6, _0804F814 @ =gUnknown_08216308
-_0804F792:
- ldm r6!, {r0}
- lsrs r1, r5, 24
- bl CreateTask
- ldr r1, _0804F804 @ =gUnknown_03004854
- ldr r1, [r1]
- movs r2, 0xA4
- lsls r2, 1
- adds r1, r2
- adds r1, r4
- strb r0, [r1]
- movs r3, 0x80
- lsls r3, 17
- adds r5, r3
- adds r4, 0x1
- ldr r0, _0804F810 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- blt _0804F792
-_0804F7B8:
- bl GetCurrentMapMusic
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0804F818 @ =0x00000193
- cmp r0, r4
- beq _0804F7D6
- bl GetCurrentMapMusic
- ldr r1, _0804F804 @ =gUnknown_03004854
- ldr r1, [r1]
- movs r5, 0xBC
- lsls r5, 1
- adds r1, r5
- strh r0, [r1]
-_0804F7D6:
- adds r0, r4, 0
- bl PlayBGM
- movs r0, 0x35
- bl PlaySE
- bl sub_804E290
-_0804F7E6:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F804: .4byte gUnknown_03004854
-_0804F808: .4byte 0x0000014b
-_0804F80C: .4byte sub_80501FC
-_0804F810: .4byte gSpecialVar_0x8004
-_0804F814: .4byte gUnknown_08216308
-_0804F818: .4byte 0x00000193
- thumb_func_end sub_804F378
-
- thumb_func_start sub_804F81C
-sub_804F81C: @ 804F81C
- push {lr}
- ldr r3, _0804F83C @ =gSendCmd
- movs r0, 0
- ldr r1, _0804F840 @ =gRecvCmds
- movs r2, 0x3
-_0804F826:
- strh r0, [r3]
- strh r0, [r3, 0x4]
- strh r0, [r1]
- strh r0, [r1, 0x10]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0804F826
- pop {r0}
- bx r0
- .align 2, 0
-_0804F83C: .4byte gSendCmd
-_0804F840: .4byte gRecvCmds
- thumb_func_end sub_804F81C
-
- thumb_func_start sub_804F844
-sub_804F844: @ 804F844
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _0804F884 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- lsls r0, 16
- asrs r0, 16
- movs r4, 0xA
- ldrsh r1, [r2, r4]
- cmp r0, r1
- ble _0804F87C
- ldr r0, _0804F888 @ =gRecvCmds
- movs r4, 0xC
- ldrsh r1, [r2, r4]
- lsls r1, 1
- adds r0, 0x10
- adds r1, r0
- ldr r0, _0804F88C @ =0x00002345
- strh r0, [r1]
- adds r0, r3, 0
- bl DestroyTask
-_0804F87C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F884: .4byte gTasks
-_0804F888: .4byte gRecvCmds
-_0804F88C: .4byte 0x00002345
- thumb_func_end sub_804F844
-
- thumb_func_start sub_804F890
-sub_804F890: @ 804F890
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0804F8C0 @ =sub_804F844
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0804F8C4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- strh r5, [r1, 0xC]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F8C0: .4byte sub_804F844
-_0804F8C4: .4byte gTasks
- thumb_func_end sub_804F890
-
- thumb_func_start sub_804F8C8
-sub_804F8C8: @ 804F8C8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _0804F934 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0x54
- ldrh r0, [r0]
- movs r1, 0x1
- bl task_tutorial_oak_boy_girl
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _0804F8E6
- b _0804F9DC
-_0804F8E6:
- ldr r2, _0804F938 @ =gTasks
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- adds r0, r2
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r6, r1, 0
- cmp r0, 0
- beq _0804F8FC
- b _0804F9EA
-_0804F8FC:
- ldr r0, [r4]
- ldr r1, _0804F93C @ =0x0000014b
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804F9BE
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0804F940 @ =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r1, r0, 24
- adds r3, r1, 0
- ldr r0, [r4]
- adds r0, 0x56
- movs r4, 0
- ldrsh r2, [r0, r4]
- ldr r0, _0804F944 @ =0x000001f3
- cmp r2, r0
- bgt _0804F964
- cmp r1, 0x4B
- bls _0804F950
- ldr r1, _0804F948 @ =gRecvCmds
- ldr r0, _0804F94C @ =0x00004523
- b _0804F954
- .align 2, 0
-_0804F934: .4byte gUnknown_03004854
-_0804F938: .4byte gTasks
-_0804F93C: .4byte 0x0000014b
-_0804F940: .4byte 0x0000028f
-_0804F944: .4byte 0x000001f3
-_0804F948: .4byte gRecvCmds
-_0804F94C: .4byte 0x00004523
-_0804F950:
- ldr r1, _0804F95C @ =gRecvCmds
- ldr r0, _0804F960 @ =0x00005432
-_0804F954:
- strh r0, [r1, 0x12]
- ldr r0, _0804F960 @ =0x00005432
- b _0804F9C2
- .align 2, 0
-_0804F95C: .4byte gRecvCmds
-_0804F960: .4byte 0x00005432
-_0804F964:
- ldr r0, _0804F980 @ =0x000005db
- cmp r2, r0
- bgt _0804F992
- cmp r1, 0x50
- bhi _0804F9BE
- adds r0, r1, 0
- subs r0, 0x15
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3B
- bhi _0804F98C
- ldr r1, _0804F984 @ =gRecvCmds
- ldr r0, _0804F988 @ =0x00005432
- b _0804F9C2
- .align 2, 0
-_0804F980: .4byte 0x000005db
-_0804F984: .4byte gRecvCmds
-_0804F988: .4byte 0x00005432
-_0804F98C:
- cmp r1, 0x9
- bhi _0804F9C4
- b _0804F9B4
-_0804F992:
- cmp r1, 0x5A
- bhi _0804F9BE
- adds r0, r1, 0
- subs r0, 0x47
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _0804F9B0
- ldr r1, _0804F9A8 @ =gRecvCmds
- ldr r0, _0804F9AC @ =0x00005432
- b _0804F9C2
- .align 2, 0
-_0804F9A8: .4byte gRecvCmds
-_0804F9AC: .4byte 0x00005432
-_0804F9B0:
- cmp r3, 0x1D
- bhi _0804F9C4
-_0804F9B4:
- movs r0, 0x1
- movs r1, 0x5
- bl sub_804F890
- b _0804F9C4
-_0804F9BE:
- ldr r1, _0804F9D0 @ =gRecvCmds
- ldr r0, _0804F9D4 @ =0x00004523
-_0804F9C2:
- strh r0, [r1, 0x12]
-_0804F9C4:
- ldr r0, _0804F9D8 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _0804F9E8
- .align 2, 0
-_0804F9D0: .4byte gRecvCmds
-_0804F9D4: .4byte 0x00004523
-_0804F9D8: .4byte gTasks
-_0804F9DC:
- ldr r0, _0804F9F0 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_0804F9E8:
- strh r0, [r1, 0x8]
-_0804F9EA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F9F0: .4byte gTasks
- thumb_func_end sub_804F8C8
-
- thumb_func_start sub_804F9F4
-sub_804F9F4: @ 804F9F4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r6, _0804FA78 @ =gUnknown_03004854
- ldr r3, [r6]
- adds r0, r3, 0
- adds r0, 0x54
- ldrh r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldr r1, _0804FA7C @ =0x0000ffff
- ands r0, r1
- adds r1, r3, 0
- adds r1, 0xA6
- ldrb r1, [r1]
- lsrs r2, r0, 8
- ldr r0, _0804FA80 @ =gUnknown_08216303
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r1, 0
- adds r0, 0x14
- cmp r2, r0
- bls _0804FB04
- adds r0, 0x14
- cmp r2, r0
- bcs _0804FB04
- ldr r2, _0804FA84 @ =gTasks
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r0, 3
- adds r2, r0, r2
- movs r5, 0x8
- ldrsh r0, [r2, r5]
- adds r5, r1, 0
- cmp r0, 0
- bne _0804FB12
- ldr r1, _0804FA88 @ =0x0000014b
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804FAF0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0804FA8C @ =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- ldr r0, [r6]
- adds r0, 0x56
- movs r6, 0
- ldrsh r1, [r0, r6]
- ldr r0, _0804FA90 @ =0x000001f3
- cmp r1, r0
- bgt _0804FAAC
- cmp r2, 0x42
- bls _0804FA9C
- ldr r1, _0804FA94 @ =gRecvCmds
- ldr r0, _0804FA98 @ =0x00004523
- strh r0, [r1, 0x14]
- b _0804FAD4
- .align 2, 0
-_0804FA78: .4byte gUnknown_03004854
-_0804FA7C: .4byte 0x0000ffff
-_0804FA80: .4byte gUnknown_08216303
-_0804FA84: .4byte gTasks
-_0804FA88: .4byte 0x0000014b
-_0804FA8C: .4byte 0x0000028f
-_0804FA90: .4byte 0x000001f3
-_0804FA94: .4byte gRecvCmds
-_0804FA98: .4byte 0x00004523
-_0804FA9C:
- ldr r1, _0804FAA4 @ =gRecvCmds
- ldr r0, _0804FAA8 @ =0x00005432
- strh r0, [r1, 0x14]
- b _0804FAD4
- .align 2, 0
-_0804FAA4: .4byte gRecvCmds
-_0804FAA8: .4byte 0x00005432
-_0804FAAC:
- cmp r2, 0x41
- bls _0804FAB6
- ldr r1, _0804FAE0 @ =gRecvCmds
- ldr r0, _0804FAE4 @ =0x00004523
- strh r0, [r1, 0x14]
-_0804FAB6:
- adds r0, r2, 0
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x18
- bhi _0804FAC8
- ldr r1, _0804FAE0 @ =gRecvCmds
- ldr r0, _0804FAE8 @ =0x00005432
- strh r0, [r1, 0x14]
-_0804FAC8:
- cmp r3, 0x9
- bhi _0804FAD4
- movs r0, 0x2
- movs r1, 0x5
- bl sub_804F890
-_0804FAD4:
- ldr r0, _0804FAEC @ =gTasks
- adds r1, r5, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _0804FB10
- .align 2, 0
-_0804FAE0: .4byte gRecvCmds
-_0804FAE4: .4byte 0x00004523
-_0804FAE8: .4byte 0x00005432
-_0804FAEC: .4byte gTasks
-_0804FAF0:
- ldr r0, _0804FAFC @ =gRecvCmds
- ldr r1, _0804FB00 @ =0x00004523
- strh r1, [r0, 0x14]
- movs r0, 0x1
- strh r0, [r2, 0x8]
- b _0804FB12
- .align 2, 0
-_0804FAFC: .4byte gRecvCmds
-_0804FB00: .4byte 0x00004523
-_0804FB04:
- ldr r0, _0804FB18 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_0804FB10:
- strh r0, [r1, 0x8]
-_0804FB12:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FB18: .4byte gTasks
- thumb_func_end sub_804F9F4
-
- thumb_func_start sub_804FB1C
-sub_804FB1C: @ 804FB1C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, _0804FB9C @ =gUnknown_03004854
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x54
- ldrh r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldr r1, _0804FBA0 @ =0x0000ffff
- ands r0, r1
- adds r1, r3, 0
- adds r1, 0xA8
- ldrb r1, [r1]
- lsrs r2, r0, 8
- ldr r0, _0804FBA4 @ =gUnknown_08216303
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r1, 0
- adds r0, 0x14
- cmp r2, r0
- bls _0804FC30
- adds r0, 0x14
- cmp r2, r0
- bcs _0804FC30
- ldr r2, _0804FBA8 @ =gTasks
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r0, 3
- adds r2, r0, r2
- movs r6, 0x8
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0
- bne _0804FC3E
- ldr r1, _0804FBAC @ =0x0000014b
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804FC1C
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0804FBB0 @ =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, [r5]
- adds r0, 0x56
- movs r3, 0
- ldrsh r1, [r0, r3]
- ldr r0, _0804FBB4 @ =0x000001f3
- cmp r1, r0
- bgt _0804FBD0
- cmp r2, 0x58
- bls _0804FBC0
- ldr r1, _0804FBB8 @ =gRecvCmds
- ldr r0, _0804FBBC @ =0x00004523
- strh r0, [r1, 0x16]
- b _0804FC02
- .align 2, 0
-_0804FB9C: .4byte gUnknown_03004854
-_0804FBA0: .4byte 0x0000ffff
-_0804FBA4: .4byte gUnknown_08216303
-_0804FBA8: .4byte gTasks
-_0804FBAC: .4byte 0x0000014b
-_0804FBB0: .4byte 0x0000028f
-_0804FBB4: .4byte 0x000001f3
-_0804FBB8: .4byte gRecvCmds
-_0804FBBC: .4byte 0x00004523
-_0804FBC0:
- ldr r1, _0804FBC8 @ =gRecvCmds
- ldr r0, _0804FBCC @ =0x00005432
- strh r0, [r1, 0x16]
- b _0804FC02
- .align 2, 0
-_0804FBC8: .4byte gRecvCmds
-_0804FBCC: .4byte 0x00005432
-_0804FBD0:
- cmp r2, 0x3C
- bls _0804FBE4
- ldr r1, _0804FBDC @ =gRecvCmds
- ldr r0, _0804FBE0 @ =0x00004523
- b _0804FBF4
- .align 2, 0
-_0804FBDC: .4byte gRecvCmds
-_0804FBE0: .4byte 0x00004523
-_0804FBE4:
- adds r0, r2, 0
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _0804FBF6
- ldr r1, _0804FC10 @ =gRecvCmds
- ldr r0, _0804FC14 @ =0x00005432
-_0804FBF4:
- strh r0, [r1, 0x16]
-_0804FBF6:
- cmp r2, 0x4
- bhi _0804FC02
- movs r0, 0x3
- movs r1, 0x5
- bl sub_804F890
-_0804FC02:
- ldr r0, _0804FC18 @ =gTasks
- adds r1, r6, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _0804FC3C
- .align 2, 0
-_0804FC10: .4byte gRecvCmds
-_0804FC14: .4byte 0x00005432
-_0804FC18: .4byte gTasks
-_0804FC1C:
- ldr r0, _0804FC28 @ =gRecvCmds
- ldr r1, _0804FC2C @ =0x00004523
- strh r1, [r0, 0x16]
- movs r0, 0x1
- strh r0, [r2, 0x8]
- b _0804FC3E
- .align 2, 0
-_0804FC28: .4byte gRecvCmds
-_0804FC2C: .4byte 0x00004523
-_0804FC30:
- ldr r0, _0804FC44 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_0804FC3C:
- strh r0, [r1, 0x8]
-_0804FC3E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FC44: .4byte gTasks
- thumb_func_end sub_804FB1C
-
- thumb_func_start sub_804FC48
-sub_804FC48: @ 804FC48
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r7, r0, 16
- mov r8, r7
- lsls r1, 24
- ldr r0, _0804FCBC @ =gSpriteTemplate_821645C
- ldr r4, _0804FCC0 @ =gUnknown_082162E4
- lsrs r1, 23
- adds r2, r1, r4
- ldrb r6, [r2]
- ldr r5, _0804FCC4 @ =gUnknown_082162CC
- adds r2, r1, r5
- movs r3, 0
- ldrsb r3, [r2, r3]
- lsls r2, r3, 2
- adds r2, r3
- lsls r2, 1
- subs r6, r2
- adds r4, 0x1
- adds r4, r1, r4
- ldrb r2, [r4]
- adds r5, 0x1
- adds r1, r5
- movs r3, 0
- ldrsb r3, [r1, r3]
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 1
- subs r2, r1
- adds r1, r6, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- ldr r0, _0804FCC8 @ =0x00004523
- cmp r7, r0
- bne _0804FCD4
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- ldr r5, _0804FCCC @ =gSprites
- adds r0, r4, r5
- movs r1, 0x2
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _0804FCD0 @ =sub_8051684
- str r0, [r4]
- movs r0, 0x28
- bl PlaySE
- b _0804FD18
- .align 2, 0
-_0804FCBC: .4byte gSpriteTemplate_821645C
-_0804FCC0: .4byte gUnknown_082162E4
-_0804FCC4: .4byte gUnknown_082162CC
-_0804FCC8: .4byte 0x00004523
-_0804FCCC: .4byte gSprites
-_0804FCD0: .4byte sub_8051684
-_0804FCD4:
- ldr r0, _0804FCF4 @ =0x00005432
- cmp r7, r0
- bne _0804FCFC
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804FCF8 @ =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAnim
- movs r0, 0x1F
- bl PlaySE
- b _0804FD18
- .align 2, 0
-_0804FCF4: .4byte 0x00005432
-_0804FCF8: .4byte gSprites
-_0804FCFC:
- ldr r0, _0804FD28 @ =0x00002345
- cmp r8, r0
- bne _0804FD18
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- ldr r1, _0804FD2C @ =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0x20
- bl PlaySE
-_0804FD18:
- bl sub_805156C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FD28: .4byte 0x00002345
-_0804FD2C: .4byte gSprites
- thumb_func_end sub_804FC48
-
- thumb_func_start sub_804FD30
-sub_804FD30: @ 804FD30
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r5, r4, 0
- bl sub_804E290
- ldr r0, _0804FD50 @ =0x00004523
- cmp r4, r0
- beq _0804FD64
- cmp r4, r0
- bgt _0804FD58
- ldr r0, _0804FD54 @ =0x00002345
- cmp r4, r0
- beq _0804FE34
- b _0804FE60
- .align 2, 0
-_0804FD50: .4byte 0x00004523
-_0804FD54: .4byte 0x00002345
-_0804FD58:
- ldr r0, _0804FD60 @ =0x00005432
- cmp r5, r0
- beq _0804FDFC
- b _0804FE60
- .align 2, 0
-_0804FD60: .4byte 0x00005432
-_0804FD64:
- ldr r7, _0804FD94 @ =gUnknown_03004854
- ldr r4, [r7]
- adds r5, r4, 0
- adds r5, 0x56
- ldrh r6, [r5]
- movs r0, 0
- ldrsh r1, [r5, r0]
- ldr r0, _0804FD98 @ =0x000005db
- cmp r1, r0
- bgt _0804FDA0
- ldr r1, _0804FD9C @ =gUnknown_082165DA
- adds r0, r4, 0
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0xC0
- lsls r0, 1
- bl __divsi3
- adds r0, r6, r0
- strh r0, [r5]
- b _0804FE60
- .align 2, 0
-_0804FD94: .4byte gUnknown_03004854
-_0804FD98: .4byte 0x000005db
-_0804FD9C: .4byte gUnknown_082165DA
-_0804FDA0:
- ldr r1, _0804FDF8 @ =gUnknown_082165DA
- adds r0, r4, 0
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- bl __divsi3
- adds r0, r6, r0
- strh r0, [r5]
- movs r1, 0xA2
- lsls r1, 1
- adds r4, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- subs r1, 0xA
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8051AC8
- ldr r0, [r7]
- movs r1, 0xA3
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x56
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- subs r1, 0xA
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8051AC8
- b _0804FE60
- .align 2, 0
-_0804FDF8: .4byte gUnknown_082165DA
-_0804FDFC:
- ldr r0, _0804FE28 @ =gUnknown_03004854
- ldr r2, [r0]
- adds r4, r2, 0
- adds r4, 0x56
- ldrh r5, [r4]
- movs r0, 0
- ldrsh r1, [r4, r0]
- ldr r0, _0804FE2C @ =0x000005db
- cmp r1, r0
- bgt _0804FE60
- ldr r1, _0804FE30 @ =gUnknown_082165DA
- adds r0, r2, 0
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- bl __divsi3
- adds r0, r5, r0
- b _0804FE5E
- .align 2, 0
-_0804FE28: .4byte gUnknown_03004854
-_0804FE2C: .4byte 0x000005db
-_0804FE30: .4byte gUnknown_082165DA
-_0804FE34:
- ldr r0, _0804FE68 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r4, r0, 0
- adds r4, 0x56
- ldr r1, _0804FE6C @ =gUnknown_082165DA
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- bl __divsi3
- ldrh r1, [r4]
- subs r1, r0
- strh r1, [r4]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- bgt _0804FE60
- movs r0, 0x80
-_0804FE5E:
- strh r0, [r4]
-_0804FE60:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FE68: .4byte gUnknown_03004854
-_0804FE6C: .4byte gUnknown_082165DA
- thumb_func_end sub_804FD30
-
- thumb_func_start sub_804FE70
-sub_804FE70: @ 804FE70
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _0804FF40 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _0804FEB6
- ldr r3, _0804FF44 @ =gSendCmd
- ldrh r0, [r3, 0x4]
- ldr r2, _0804FF48 @ =gRecvCmds
- cmp r0, 0
- beq _0804FE98
- movs r1, 0
- strh r0, [r2, 0x10]
- ldr r0, _0804FF4C @ =0x00004444
- strh r0, [r2]
- strh r1, [r3, 0x4]
-_0804FE98:
- ldr r0, _0804FF48 @ =gRecvCmds
- ldr r3, _0804FF4C @ =0x00004444
- adds r1, r2, 0x2
- adds r2, r0, 0
- adds r2, 0x12
- movs r6, 0x2
-_0804FEA4:
- ldrh r0, [r2]
- cmp r0, 0
- beq _0804FEAC
- strh r3, [r1]
-_0804FEAC:
- adds r1, 0x2
- adds r2, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _0804FEA4
-_0804FEB6:
- movs r6, 0
- ldr r7, _0804FF50 @ =gUnknown_03004854
- adds r1, r7, 0
- ldr r0, [r1]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- blt _0804FEC8
- b _0805005C
-_0804FEC8:
- movs r2, 0
- str r2, [sp]
- mov r9, r2
- ldr r0, _0804FF48 @ =gRecvCmds
- adds r0, 0x10
- mov r8, r0
- ldr r1, _0804FF54 @ =0x00005432
- mov r10, r1
-_0804FED8:
- ldr r2, [sp]
- ldr r1, _0804FF48 @ =gRecvCmds
- adds r0, r2, r1
- ldrh r1, [r0]
- ldr r0, _0804FF4C @ =0x00004444
- cmp r1, r0
- beq _0804FEE8
- b _0805003E
-_0804FEE8:
- ldr r0, [r7]
- adds r0, 0xA2
- adds r0, r2
- ldrh r5, [r0]
- mov r2, r8
- ldrh r4, [r2]
- ldr r0, _0804FF58 @ =0x00004523
- cmp r4, r0
- bne _0804FF60
- bl sub_804FD30
- ldr r0, [r7]
- movs r1, 0x9F
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x56
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0x37
- bl __divsi3
- ldrh r1, [r4]
- adds r1, r0
- strh r1, [r4]
- lsls r1, 16
- ldr r0, _0804FF5C @ =0x03e70000
- cmp r1, r0
- bls _0804FF26
- movs r0, 0xFA
- lsls r0, 2
- strh r0, [r4]
-_0804FF26:
- lsls r1, r5, 24
- lsrs r1, 24
- ldr r0, _0804FF58 @ =0x00004523
- bl sub_804FC48
- ldr r1, [r7]
- movs r0, 0xA6
- lsls r0, 1
- adds r1, r0
- add r1, r9
- ldrh r0, [r1]
- adds r0, 0x1
- b _0804FFCA
- .align 2, 0
-_0804FF40: .4byte gSpecialVar_0x8004
-_0804FF44: .4byte gSendCmd
-_0804FF48: .4byte gRecvCmds
-_0804FF4C: .4byte 0x00004444
-_0804FF50: .4byte gUnknown_03004854
-_0804FF54: .4byte 0x00005432
-_0804FF58: .4byte 0x00004523
-_0804FF5C: .4byte 0x03e70000
-_0804FF60:
- cmp r4, r10
- bne _0804FF9E
- mov r0, r10
- bl sub_804FD30
- ldr r0, [r7]
- movs r1, 0x9F
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x56
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0x46
- bl __divsi3
- ldrh r1, [r4]
- adds r1, r0
- strh r1, [r4]
- lsls r1, r5, 24
- lsrs r1, 24
- mov r0, r10
- bl sub_804FC48
- ldr r1, [r7]
- movs r0, 0xA7
- lsls r0, 1
- adds r1, r0
- add r1, r9
- ldrh r0, [r1]
- adds r0, 0x1
- b _0804FFCA
-_0804FF9E:
- ldr r0, _08050018 @ =0x00002345
- cmp r4, r0
- bne _0804FFD6
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_804FC48
- adds r0, r4, 0
- bl sub_804FD30
- ldr r0, [r7]
- movs r1, 0xA8
- lsls r1, 1
- adds r0, r1
- mov r2, r9
- adds r1, r0, r2
- ldrh r2, [r1]
- ldr r0, _0805001C @ =0x000003e6
- cmp r2, r0
- bhi _0804FFCC
- adds r0, r2, 0x1
-_0804FFCA:
- strh r0, [r1]
-_0804FFCC:
- mov r0, r8
- ldrh r1, [r0]
- ldr r0, _08050018 @ =0x00002345
- cmp r1, r0
- beq _0804FFE4
-_0804FFD6:
- mov r1, r8
- ldrh r0, [r1]
- ldr r2, _08050020 @ =0x00004523
- cmp r0, r2
- beq _0804FFE4
- cmp r0, r10
- bne _0805003E
-_0804FFE4:
- ldr r0, _08050024 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r2, r0, 0
- adds r2, 0x56
- movs r0, 0
- ldrsh r1, [r2, r0]
- ldr r0, _08050028 @ =0x000005dc
- cmp r1, r0
- ble _08050034
- adds r0, r1, 0
- ldr r2, _0805002C @ =0xfffffd12
- adds r0, r2
- movs r1, 0x14
- bl __divsi3
- adds r1, r0, 0
- movs r0, 0x80
- lsls r0, 1
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _08050030 @ =gMPlay_BGM
- bl m4aMPlayTempoControl
- b _0805003E
- .align 2, 0
-_08050018: .4byte 0x00002345
-_0805001C: .4byte 0x000003e6
-_08050020: .4byte 0x00004523
-_08050024: .4byte gUnknown_03004854
-_08050028: .4byte 0x000005dc
-_0805002C: .4byte 0xfffffd12
-_08050030: .4byte gMPlay_BGM
-_08050034:
- ldr r0, _08050098 @ =gMPlay_BGM
- movs r1, 0x80
- lsls r1, 1
- bl m4aMPlayTempoControl
-_0805003E:
- ldr r1, [sp]
- adds r1, 0x2
- str r1, [sp]
- movs r2, 0x6
- add r9, r2
- movs r0, 0x2
- add r8, r0
- adds r6, 0x1
- ldr r7, _0805009C @ =gUnknown_03004854
- ldr r0, [r7]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- bge _0805005C
- b _0804FED8
-_0805005C:
- ldr r0, _080500A0 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _08050088
- movs r6, 0
- ldr r3, _0805009C @ =gUnknown_03004854
- ldr r0, [r3]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- bge _08050088
- movs r2, 0
- ldr r1, _080500A4 @ =gRecvCmds
-_08050076:
- strh r2, [r1]
- strh r2, [r1, 0x10]
- adds r1, 0x2
- adds r6, 0x1
- ldr r0, [r3]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- blt _08050076
-_08050088:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08050098: .4byte gMPlay_BGM
-_0805009C: .4byte gUnknown_03004854
-_080500A0: .4byte gSpecialVar_0x8004
-_080500A4: .4byte gRecvCmds
- thumb_func_end sub_804FE70
-
- thumb_func_start sub_80500A8
-sub_80500A8: @ 80500A8
- push {r4-r6,lr}
- movs r6, 0
- ldr r5, _080500EC @ =gUnknown_03004854
- ldr r4, [r5]
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 23
- adds r4, 0xA2
- adds r4, r0
- ldrb r3, [r4]
- ldr r0, [r5]
- adds r0, 0x6F
- ldrb r0, [r0]
- cmp r0, 0
- bne _0805018A
- ldr r0, _080500F0 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x2
- bne _080500FC
- ldr r2, _080500F4 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805010A
- ldrh r0, [r2, 0x28]
- ldr r1, _080500F8 @ =0x00000201
- bics r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r6, r0, 31
- b _0805010A
- .align 2, 0
-_080500EC: .4byte gUnknown_03004854
-_080500F0: .4byte gSaveBlock2
-_080500F4: .4byte gMain
-_080500F8: .4byte 0x00000201
-_080500FC:
- ldr r0, _0805015C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805010A
- movs r6, 0x1
-_0805010A:
- cmp r6, 0
- beq _0805018A
- ldr r4, _08050160 @ =gUnknown_03004854
- ldr r1, [r4]
- lsls r2, r3, 1
- adds r0, r1, 0
- adds r0, 0x9A
- adds r0, r2
- adds r1, 0x5C
- ldrh r0, [r0]
- adds r1, r0
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08050164 @ =gSprites
- adds r0, r1
- adds r1, r3, 0x4
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- ldr r0, [r4]
- adds r0, 0x54
- ldrh r4, [r0]
- bl GetMultiplayerId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl task_tutorial_oak_boy_girl
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08050170
- ldr r1, _08050168 @ =gSendCmd
- ldr r0, _0805016C @ =0x00004523
- b _08050188
- .align 2, 0
-_0805015C: .4byte gMain
-_08050160: .4byte gUnknown_03004854
-_08050164: .4byte gSprites
-_08050168: .4byte gSendCmd
-_0805016C: .4byte 0x00004523
-_08050170:
- cmp r0, 0x1
- bne _08050184
- ldr r1, _0805017C @ =gSendCmd
- ldr r0, _08050180 @ =0x00005432
- b _08050188
- .align 2, 0
-_0805017C: .4byte gSendCmd
-_08050180: .4byte 0x00005432
-_08050184:
- ldr r1, _080501E4 @ =gSendCmd
- ldr r0, _080501E8 @ =0x00002345
-_08050188:
- strh r0, [r1, 0x4]
-_0805018A:
- ldr r2, _080501EC @ =gUnknown_03004854
- ldr r1, [r2]
- adds r1, 0x7E
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bls _080501BA
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0x56
- ldrh r3, [r1]
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, 0x80
- ble _080501B2
- subs r0, r3, 0x1
- strh r0, [r1]
-_080501B2:
- ldr r0, [r2]
- adds r0, 0x7E
- movs r1, 0
- strb r1, [r0]
-_080501BA:
- ldr r0, _080501F0 @ =gUnknown_020297ED
- ldrb r0, [r0]
- cmp r0, 0
- beq _080501DE
- ldr r0, _080501F4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _080501DE
- ldr r0, [r2]
- ldr r1, _080501F8 @ =0x0000014b
- adds r2, r0, r1
- ldrb r0, [r2]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r2]
-_080501DE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080501E4: .4byte gSendCmd
-_080501E8: .4byte 0x00002345
-_080501EC: .4byte gUnknown_03004854
-_080501F0: .4byte gUnknown_020297ED
-_080501F4: .4byte gMain
-_080501F8: .4byte 0x0000014b
- thumb_func_end sub_80500A8
-
- thumb_func_start sub_80501FC
-sub_80501FC: @ 80501FC
- push {r4-r6,lr}
- bl sub_8051474
- ldr r4, _08050294 @ =gUnknown_03004854
- ldr r0, [r4]
- movs r1, 0x96
- lsls r1, 1
- adds r2, r0, r1
- ldr r1, [r2]
- ldr r0, _08050298 @ =0x00057e03
- cmp r1, r0
- bhi _08050218
- adds r0, r1, 0x1
- str r0, [r2]
-_08050218:
- bl sub_80500A8
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- movs r5, 0x9F
- lsls r5, 1
- adds r1, r5
- ldrh r1, [r1]
- bl SetLinkDebugValues
- bl sub_804FE70
- ldr r0, [r4]
- adds r0, r5
- ldrh r0, [r0]
- movs r6, 0xFA
- lsls r6, 2
- adds r1, r6, 0
- bl sub_805194C
- ldr r0, [r4]
- adds r0, 0x56
- ldrh r0, [r0]
- bl sub_8051A3C
- bl sub_8051B18
- bl sub_805123C
- ldr r2, [r4]
- adds r3, r2, 0
- adds r3, 0x6F
- ldrb r0, [r3]
- cmp r0, 0
- bne _0805027E
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r2, r1
- ldrh r1, [r0]
- ldr r0, _0805029C @ =0x000003e7
- cmp r1, r0
- bls _0805027E
- adds r0, r2, r5
- strh r6, [r0]
- movs r0, 0x1
- strb r0, [r3]
- ldr r0, _080502A0 @ =sub_8050954
- bl SetMainCallback2
-_0805027E:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08050294: .4byte gUnknown_03004854
-_08050298: .4byte 0x00057e03
-_0805029C: .4byte 0x000003e7
-_080502A0: .4byte sub_8050954
- thumb_func_end sub_80501FC
-
- thumb_func_start help_system_is_not_first_time
-help_system_is_not_first_time: @ 80502A4
- push {r4,r5,lr}
- lsls r1, 24
- lsls r2, 24
- lsrs r1, 20
- adds r4, r1, r0
- lsrs r2, 20
- adds r5, r2, r0
- ldrh r0, [r4]
- ldrh r1, [r5]
- cmp r0, r1
- bne _080502E2
- adds r0, r4, 0x2
- adds r1, r5, 0x2
- bl StringCompare
- cmp r0, 0
- bne _080502F0
- ldr r0, [r4, 0x8]
- ldr r2, _080502E8 @ =0xffffff00
- ands r0, r2
- ldr r1, [r5, 0x8]
- ands r1, r2
- cmp r0, r1
- bne _080502F0
- ldr r0, [r4, 0xC]
- ldr r2, _080502EC @ =0x00ffffff
- ands r0, r2
- ldr r1, [r5, 0xC]
- ands r1, r2
- cmp r0, r1
- bne _080502F0
-_080502E2:
- movs r0, 0x1
- b _080502F2
- .align 2, 0
-_080502E8: .4byte 0xffffff00
-_080502EC: .4byte 0x00ffffff
-_080502F0:
- movs r0, 0
-_080502F2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end help_system_is_not_first_time
-
- thumb_func_start sub_80502F8
-sub_80502F8: @ 80502F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- mov r10, r0
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- mov r2, sp
- movs r4, 0x5
-_08050314:
- ldrh r0, [r1]
- strh r0, [r2]
- adds r1, 0x2
- adds r2, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _08050314
- movs r6, 0
- mov r1, sp
- movs r4, 0x4
-_08050328:
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08050332
- adds r6, 0x1
-_08050332:
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _08050328
- cmp r6, 0x5
- beq _08050386
- cmp r3, 0x3
- bhi _08050386
- movs r4, 0
- ldr r3, [sp, 0x10]
- cmp r4, r3
- bge _0805039E
- mov r3, r10
-_0805034C:
- movs r6, 0
- ldr r7, [sp, 0x10]
- cmp r6, r7
- bge _08050394
- mov r9, r3
- mov r5, r10
- lsls r0, r4, 24
- mov r8, r0
-_0805035C:
- mov r1, r9
- ldrh r0, [r1]
- ldrh r2, [r5]
- cmp r0, r2
- bne _0805038A
- cmp r4, r6
- beq _0805038A
- cmp r0, 0xAF
- bne _08050386
- lsls r2, r6, 24
- lsrs r2, 24
- mov r0, r10
- mov r7, r8
- lsrs r1, r7, 24
- str r3, [sp, 0xC]
- bl help_system_is_not_first_time
- lsls r0, 24
- ldr r3, [sp, 0xC]
- cmp r0, 0
- beq _0805038A
-_08050386:
- movs r0, 0xC
- b _080504DE
-_0805038A:
- adds r5, 0x10
- adds r6, 0x1
- ldr r0, [sp, 0x10]
- cmp r6, r0
- blt _0805035C
-_08050394:
- adds r3, 0x10
- adds r4, 0x1
- ldr r1, [sp, 0x10]
- cmp r4, r1
- blt _0805034C
-_0805039E:
- movs r2, 0
- mov r1, sp
- movs r4, 0x4
-_080503A4:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _080503B2
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080503B2:
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080503A4
- cmp r2, 0x3
- bls _080503C2
- movs r0, 0xD
- b _080504DE
-_080503C2:
- cmp r2, 0x3
- bne _080503CA
- movs r0, 0xB
- b _080504DE
-_080503CA:
- movs r4, 0
- mov r1, sp
-_080503CE:
- movs r7, 0
- ldrsh r0, [r1, r7]
- cmp r0, 0x32
- ble _080503D8
- b _080504D8
-_080503D8:
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x4
- ble _080503CE
- cmp r2, 0x1
- bne _0805042A
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- ble _080503F2
- movs r0, 0x1
- b _080504DE
-_080503F2:
- mov r0, sp
- ldrh r0, [r0, 0x2]
- lsls r0, 16
- cmp r0, 0
- ble _08050400
- movs r0, 0x2
- b _080504DE
-_08050400:
- mov r0, sp
- movs r3, 0x4
- ldrsh r0, [r0, r3]
- cmp r0, 0
- ble _0805040E
- movs r0, 0x3
- b _080504DE
-_0805040E:
- mov r0, sp
- movs r4, 0x6
- ldrsh r0, [r0, r4]
- cmp r0, 0
- ble _0805041C
- movs r0, 0x4
- b _080504DE
-_0805041C:
- mov r0, sp
- movs r7, 0x8
- ldrsh r0, [r0, r7]
- cmp r0, 0
- ble _0805042A
- movs r0, 0x5
- b _080504DE
-_0805042A:
- cmp r2, 0x2
- bne _080504DC
- movs r4, 0
- ldr r5, _08050474 @ =gUnknown_03000520
- mov r1, sp
- adds r2, r5, 0
-_08050436:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08050442
- strh r4, [r2]
- adds r2, 0x2
-_08050442:
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x4
- ble _08050436
- movs r4, 0
- ldrsh r3, [r5, r4]
- lsls r0, r3, 1
- mov r7, sp
- adds r1, r7, r0
- movs r0, 0x2
- ldrsh r2, [r5, r0]
- lsls r0, r2, 1
- add r0, sp
- movs r4, 0
- ldrsh r1, [r1, r4]
- movs r7, 0
- ldrsh r0, [r0, r7]
- cmp r1, r0
- blt _08050498
- adds r0, r3, 0
- cmp r0, 0
- bne _08050478
- lsls r0, r2, 16
- b _080504A2
- .align 2, 0
-_08050474: .4byte gUnknown_03000520
-_08050478:
- cmp r0, 0x1
- bne _08050480
- lsls r0, r2, 16
- b _080504AE
-_08050480:
- cmp r0, 0x2
- bne _08050488
- lsls r0, r2, 16
- b _080504BA
-_08050488:
- cmp r0, 0x3
- bne _08050490
- lsls r0, r2, 16
- b _080504C6
-_08050490:
- cmp r0, 0x4
- bne _080504DC
- lsls r0, r2, 16
- b _080504D2
-_08050498:
- movs r2, 0x2
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bne _080504A8
- lsls r0, r3, 16
-_080504A2:
- movs r1, 0x6
- orrs r0, r1
- b _080504DE
-_080504A8:
- cmp r0, 0x1
- bne _080504B4
- lsls r0, r3, 16
-_080504AE:
- movs r1, 0x7
- orrs r0, r1
- b _080504DE
-_080504B4:
- cmp r0, 0x2
- bne _080504C0
- lsls r0, r3, 16
-_080504BA:
- movs r1, 0x8
- orrs r0, r1
- b _080504DE
-_080504C0:
- cmp r0, 0x3
- bne _080504CC
- lsls r0, r3, 16
-_080504C6:
- movs r1, 0x9
- orrs r0, r1
- b _080504DE
-_080504CC:
- cmp r0, 0x4
- bne _080504DC
- lsls r0, r3, 16
-_080504D2:
- movs r1, 0xA
- orrs r0, r1
- b _080504DE
-_080504D8:
- movs r0, 0xE
- b _080504DE
-_080504DC:
- movs r0, 0
-_080504DE:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80502F8
-
- thumb_func_start sub_80504F0
-sub_80504F0: @ 80504F0
- ldr r1, _080504F8 @ =gUnknown_0300052C
- strh r0, [r1]
- bx lr
- .align 2, 0
-_080504F8: .4byte gUnknown_0300052C
- thumb_func_end sub_80504F0
-
- thumb_func_start unref_sub_80504FC
-unref_sub_80504FC: @ 80504FC
- ldr r0, _08050504 @ =gUnknown_0300052C
- movs r1, 0
- ldrsh r0, [r0, r1]
- bx lr
- .align 2, 0
-_08050504: .4byte gUnknown_0300052C
- thumb_func_end unref_sub_80504FC
-
- thumb_func_start sub_8050508
-sub_8050508: @ 8050508
- ldr r1, _08050510 @ =gUnknown_0300052E
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08050510: .4byte gUnknown_0300052E
- thumb_func_end sub_8050508
-
- thumb_func_start unref_sub_8050514
-unref_sub_8050514: @ 8050514
- ldr r0, _0805051C @ =gUnknown_0300052E
- movs r1, 0
- ldrsh r0, [r0, r1]
- bx lr
- .align 2, 0
-_0805051C: .4byte gUnknown_0300052E
- thumb_func_end unref_sub_8050514
-
- thumb_func_start sub_8050520
-sub_8050520: @ 8050520
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- str r0, [sp]
- mov r8, r1
- str r3, [sp, 0x4]
- ldr r0, [sp, 0x30]
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- ldr r7, _080505DC @ =gUnknown_03000510
- adds r2, r7, 0
- movs r1, 0
- adds r0, r7, 0
- adds r0, 0xA
-_0805054A:
- strh r1, [r0]
- subs r0, 0x2
- cmp r0, r2
- bge _0805054A
- movs r6, 0
- cmp r6, r9
- bge _08050580
- ldr r0, _080505DC @ =gUnknown_03000510
- mov r12, r0
- ldr r5, [sp]
- adds r5, 0x9
-_08050560:
- movs r3, 0
- adds r4, r5, 0
- mov r2, r12
-_08050566:
- adds r1, r4, r3
- ldrh r0, [r2]
- ldrb r1, [r1]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x5
- ble _08050566
- adds r5, 0x10
- adds r6, 0x1
- cmp r6, r9
- blt _08050560
-_08050580:
- movs r1, 0
- ldrsh r3, [r7, r1]
- ldrh r0, [r7]
- ldrh r1, [r7, 0x2]
- subs r0, r1
- strh r0, [r7]
- ldrh r0, [r7, 0x4]
- subs r1, r0
- strh r1, [r7, 0x2]
- ldrh r1, [r7, 0x6]
- subs r0, r1
- strh r0, [r7, 0x4]
- ldrh r0, [r7, 0x8]
- subs r1, r0
- strh r1, [r7, 0x6]
- subs r0, r3
- strh r0, [r7, 0x8]
- movs r3, 0
- movs r2, 0
- adds r1, r7, 0
- movs r6, 0x4
-_080505AA:
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bge _080505B6
- strh r2, [r1]
- adds r3, 0x1
-_080505B6:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080505AA
- lsls r0, r3, 24
- lsrs r0, 24
- mov r10, r0
- movs r4, 0
- ldr r1, _080505DC @ =gUnknown_03000510
- movs r6, 0x4
-_080505CA:
- ldrh r2, [r1]
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r0, 0
- ble _080505E4
- cmp r0, r3
- bge _080505E0
- strh r4, [r1]
- b _080505E4
- .align 2, 0
-_080505DC: .4byte gUnknown_03000510
-_080505E0:
- subs r0, r2, r3
- strh r0, [r1]
-_080505E4:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080505CA
- ldr r1, _080506C4 @ =gUnknown_03000510
- ldr r2, _080506C8 @ =gUnknown_03000530
- movs r6, 0x4
-_080505F2:
- movs r3, 0
- ldrsh r0, [r1, r3]
- stm r2!, {r0}
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080505F2
- ldr r1, _080506CC @ =0x0000014d
- ldr r0, [sp, 0x8]
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 16
- adds r3, r0, 0
- adds r3, 0x64
- ldr r4, _080506D0 @ =gUnknown_0300055C
- str r3, [r4]
- movs r6, 0x4
-_08050616:
- movs r0, 0
- ldrsh r5, [r7, r0]
- adds r0, r5, 0
- muls r0, r3
- movs r1, 0xA
- str r3, [sp, 0xC]
- bl __divsi3
- adds r5, r0, 0
- movs r1, 0xA
- bl __modsi3
- adds r4, r0, 0
- adds r0, r5, 0
- movs r1, 0xA
- bl __divsi3
- adds r5, r0, 0
- ldr r3, [sp, 0xC]
- cmp r4, 0x4
- ble _08050642
- adds r5, 0x1
-_08050642:
- strh r5, [r7]
- adds r7, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08050616
- ldr r1, _080506C4 @ =gUnknown_03000510
- ldr r2, _080506D4 @ =gUnknown_03000548
- movs r6, 0x4
-_08050652:
- movs r3, 0
- ldrsh r0, [r1, r3]
- stm r2!, {r0}
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08050652
- ldr r4, _080506C4 @ =gUnknown_03000510
- ldr r0, [sp]
- adds r1, r4, 0
- mov r2, r9
- mov r3, r10
- bl sub_80502F8
- mov r5, r8
- strb r0, [r5]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- mov r1, r9
- bl __divsi3
- mov r3, r9
- subs r0, r3
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bge _0805068C
- movs r0, 0
- strh r0, [r4, 0xA]
-_0805068C:
- mov r5, r8
- ldrb r0, [r5]
- cmp r0, 0xC
- bne _080506E6
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- lsrs r3, r0, 16
- movs r6, 0
- ldr r0, _080506D8 @ =gUnknown_082165DF
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r1, r4, 0
- movs r4, 0x1
- movs r3, 0x2
-_080506B4:
- adds r2, r0, 0
- asrs r2, r6
- ands r2, r4
- cmp r2, 0
- beq _080506DC
- strh r3, [r1]
- b _080506DE
- .align 2, 0
-_080506C4: .4byte gUnknown_03000510
-_080506C8: .4byte gUnknown_03000530
-_080506CC: .4byte 0x0000014d
-_080506D0: .4byte gUnknown_0300055C
-_080506D4: .4byte gUnknown_03000548
-_080506D8: .4byte gUnknown_082165DF
-_080506DC:
- strh r2, [r1]
-_080506DE:
- adds r1, 0x2
- adds r6, 0x1
- cmp r6, 0x4
- ble _080506B4
-_080506E6:
- ldr r7, _08050740 @ =gUnknown_03000510
- movs r2, 0xFF
- adds r1, r7, 0
- movs r6, 0x5
-_080506EE:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0xFF
- ble _080506F8
- strh r2, [r1]
-_080506F8:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080506EE
- ldrh r0, [r7]
- mov r4, r8
- strb r0, [r4, 0x1]
- ldrh r0, [r7, 0x2]
- strb r0, [r4, 0x2]
- ldrh r0, [r7, 0x4]
- strb r0, [r4, 0x3]
- ldrh r0, [r7, 0x6]
- strb r0, [r4, 0x4]
- ldrh r0, [r7, 0x8]
- strb r0, [r4, 0x5]
- ldrh r0, [r7, 0xA]
- strb r0, [r4, 0x6]
- movs r6, 0
- adds r2, r7, 0
-_0805071E:
- ldr r5, [sp, 0x4]
- adds r1, r5, r6
- ldrh r0, [r2]
- strb r0, [r1]
- adds r2, 0x2
- adds r6, 0x1
- cmp r6, 0x5
- ble _0805071E
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08050740: .4byte gUnknown_03000510
- thumb_func_end sub_8050520
-
- thumb_func_start sub_8050744
-sub_8050744: @ 8050744
- push {r4,lr}
- sub sp, 0x4
- ldr r4, [sp, 0xC]
- lsls r2, 24
- lsrs r2, 24
- lsls r4, 16
- lsrs r4, 16
- str r4, [sp]
- bl sub_8050520
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8050744
-
- thumb_func_start sub_8050760
-sub_8050760: @ 8050760
- push {r4-r6,lr}
- ldr r0, _08050780 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r2, 0x96
- lsls r2, 1
- adds r1, r0, r2
- ldrh r1, [r1]
- adds r0, 0x5A
- ldrh r4, [r0]
- movs r2, 0
- ldr r5, _08050784 @ =0x00000383
- cmp r1, r5
- bhi _08050788
- movs r2, 0x5
- b _080507DA
- .align 2, 0
-_08050780: .4byte gUnknown_03004854
-_08050784: .4byte 0x00000383
-_08050788:
- ldr r3, _0805079C @ =0xfffffc7c
- adds r0, r1, r3
- lsls r0, 16
- lsrs r0, 16
- ldr r3, _080507A0 @ =0x00000257
- cmp r0, r3
- bhi _080507A4
- movs r2, 0x4
- b _080507DA
- .align 2, 0
-_0805079C: .4byte 0xfffffc7c
-_080507A0: .4byte 0x00000257
-_080507A4:
- ldr r6, _080507B4 @ =0xfffffa24
- adds r0, r1, r6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r3
- bhi _080507B8
- movs r2, 0x3
- b _080507DA
- .align 2, 0
-_080507B4: .4byte 0xfffffa24
-_080507B8:
- ldr r3, _080507C8 @ =0xfffff7cc
- adds r0, r1, r3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r5
- bhi _080507CC
- movs r2, 0x2
- b _080507DA
- .align 2, 0
-_080507C8: .4byte 0xfffff7cc
-_080507CC:
- ldr r6, _080507F8 @ =0xfffff31c
- adds r0, r1, r6
- lsls r0, 16
- ldr r1, _080507FC @ =0x012b0000
- cmp r0, r1
- bhi _080507DA
- movs r2, 0x1
-_080507DA:
- lsls r0, r2, 16
- asrs r0, 16
- bl sub_8050508
- movs r2, 0
- cmp r4, 0x40
- bhi _080508BC
- adds r0, r4, 0
- subs r0, 0x32
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050804
- ldr r2, _08050800 @ =0x0000ffff
- b _080508BC
- .align 2, 0
-_080507F8: .4byte 0xfffff31c
-_080507FC: .4byte 0x012b0000
-_08050800: .4byte 0x0000ffff
-_08050804:
- adds r0, r4, 0
- subs r0, 0x64
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050818
- ldr r2, _08050814 @ =0x0000fffe
- b _080508BC
- .align 2, 0
-_08050814: .4byte 0x0000fffe
-_08050818:
- adds r0, r4, 0
- subs r0, 0x96
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _0805082C
- ldr r2, _08050828 @ =0x0000fffd
- b _080508BC
- .align 2, 0
-_08050828: .4byte 0x0000fffd
-_0805082C:
- adds r0, r4, 0
- subs r0, 0xC8
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050840
- ldr r2, _0805083C @ =0x0000fffc
- b _080508BC
- .align 2, 0
-_0805083C: .4byte 0x0000fffc
-_08050840:
- adds r0, r4, 0
- subs r0, 0xFA
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050854
- ldr r2, _08050850 @ =0x0000fffb
- b _080508BC
- .align 2, 0
-_08050850: .4byte 0x0000fffb
-_08050854:
- ldr r1, _08050864 @ =0xfffffea2
- adds r0, r4, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _0805086C
- ldr r2, _08050868 @ =0x0000fffa
- b _080508BC
- .align 2, 0
-_08050864: .4byte 0xfffffea2
-_08050868: .4byte 0x0000fffa
-_0805086C:
- ldr r3, _0805087C @ =0xfffffe70
- adds r0, r4, r3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050884
- ldr r2, _08050880 @ =0x0000fff9
- b _080508BC
- .align 2, 0
-_0805087C: .4byte 0xfffffe70
-_08050880: .4byte 0x0000fff9
-_08050884:
- ldr r6, _08050894 @ =0xfffffe0c
- adds r0, r4, r6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _0805089C
- ldr r2, _08050898 @ =0x0000fff8
- b _080508BC
- .align 2, 0
-_08050894: .4byte 0xfffffe0c
-_08050898: .4byte 0x0000fff8
-_0805089C:
- ldr r1, _080508AC @ =0xfffffdda
- adds r0, r4, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _080508B4
- ldr r2, _080508B0 @ =0x0000fff7
- b _080508BC
- .align 2, 0
-_080508AC: .4byte 0xfffffdda
-_080508B0: .4byte 0x0000fff7
-_080508B4:
- ldr r0, _080508CC @ =0x00000257
- cmp r4, r0
- bls _080508BC
- ldr r2, _080508D0 @ =0x0000fff6
-_080508BC:
- lsls r0, r2, 16
- asrs r0, 16
- bl sub_80504F0
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080508CC: .4byte 0x00000257
-_080508D0: .4byte 0x0000fff6
- thumb_func_end sub_8050760
-
- thumb_func_start sub_80508D4
-sub_80508D4: @ 80508D4
- push {lr}
- ldr r2, _080508F8 @ =gUnknown_03004854
- ldr r1, [r2]
- adds r1, 0xAA
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0xAA
- ldrb r1, [r0]
- lsls r1, 28
- movs r0, 0x90
- lsls r0, 23
- adds r1, r0
- lsrs r1, 24
- movs r0, 0xC0
- bl sub_814A880
- pop {r0}
- bx r0
- .align 2, 0
-_080508F8: .4byte gUnknown_03004854
- thumb_func_end sub_80508D4
-
- thumb_func_start sub_80508FC
-sub_80508FC: @ 80508FC
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _08050944 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0xAA
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuDrawTextWindow
- ldr r1, _08050948 @ =0x0000ffff
- ldr r3, _0805094C @ =0x00002d9f
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0
- movs r2, 0xC
- bl sub_814A5C0
- ldr r0, _08050950 @ =gOtherText_YesNoTerminating
- movs r1, 0x18
- movs r2, 0x9
- bl MenuPrint
- ldr r0, [r4]
- adds r0, 0xAA
- ldrb r0, [r0]
- bl sub_80508D4
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08050944: .4byte gUnknown_03004854
-_08050948: .4byte 0x0000ffff
-_0805094C: .4byte 0x00002d9f
-_08050950: .4byte gOtherText_YesNoTerminating
- thumb_func_end sub_80508FC
-
- thumb_func_start sub_8050954
-sub_8050954: @ 8050954
- push {r4-r7,lr}
- bl sub_8051474
- bl GetMultiplayerId
- ldr r0, _08050978 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x6F
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0xC
- bls _0805096E
- b _08050CB6
-_0805096E:
- lsls r0, 2
- ldr r1, _0805097C @ =_08050980
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050978: .4byte gUnknown_03004854
-_0805097C: .4byte _08050980
- .align 2, 0
-_08050980:
- .4byte _080509B4
- .4byte _080509F8
- .4byte _08050A4C
- .4byte _08050A94
- .4byte _08050AD0
- .4byte _08050ADE
- .4byte _08050B08
- .4byte _08050B34
- .4byte _08050B42
- .4byte _08050B58
- .4byte _08050BE0
- .4byte _08050C64
- .4byte _08050C98
-_080509B4:
- bl ClearLinkCallback
- ldr r0, _080509C8 @ =gMPlay_BGM
- movs r1, 0x80
- lsls r1, 1
- bl m4aMPlayTempoControl
- movs r4, 0
- b _080509E4
- .align 2, 0
-_080509C8: .4byte gMPlay_BGM
-_080509CC:
- ldr r0, _080509F0 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r1, 0xA4
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- bl DestroyTask
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080509E4:
- ldr r0, _080509F4 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- bcc _080509CC
- b _08050C82
- .align 2, 0
-_080509F0: .4byte gUnknown_03004854
-_080509F4: .4byte gSpecialVar_0x8004
-_080509F8:
- ldr r1, _08050A24 @ =gUnknown_03004854
- ldr r3, [r1]
- adds r2, r3, 0
- adds r2, 0x56
- ldrh r0, [r2]
- subs r0, 0x20
- strh r0, [r2]
- lsls r0, 16
- adds r4, r1, 0
- cmp r0, 0
- bgt _08050A40
- movs r0, 0
- strh r0, [r2]
- ldr r0, _08050A28 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050A2C
- adds r1, r3, 0
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- b _08050A32
- .align 2, 0
-_08050A24: .4byte gUnknown_03004854
-_08050A28: .4byte gReceivedRemoteLinkPlayers
-_08050A2C:
- adds r1, r3, 0
- adds r1, 0x6F
- movs r0, 0x5
-_08050A32:
- strb r0, [r1]
- ldr r0, [r4]
- movs r1, 0
- strb r1, [r0]
- ldr r0, _08050A48 @ =gMPlay_SE2
- bl m4aMPlayStop
-_08050A40:
- bl sub_804E290
- b _08050CB6
- .align 2, 0
-_08050A48: .4byte gMPlay_SE2
-_08050A4C:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _08050A58
- b _08050C82
-_08050A58:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _08050A64
- b _08050CB6
-_08050A64:
- ldr r4, _08050A90 @ =gUnknown_03004854
- ldr r3, [r4]
- movs r2, 0xDE
- lsls r2, 1
- adds r1, r3, r2
- movs r5, 0x96
- lsls r5, 1
- adds r0, r3, r5
- ldr r0, [r0]
- str r0, [r1]
- adds r0, r3, 0
- adds r0, 0x5A
- ldrh r2, [r0]
- adds r5, 0x94
- adds r0, r3, r5
- strh r2, [r0]
- movs r0, 0
- movs r2, 0x28
- bl SendBlock
- ldr r1, [r4]
- b _08050C86
- .align 2, 0
-_08050A90: .4byte gUnknown_03004854
-_08050A94:
- bl GetBlockReceivedStatus
- lsls r0, 24
- cmp r0, 0
- bne _08050AA0
- b _08050CB6
-_08050AA0:
- ldr r2, _08050AC8 @ =gBlockRecvBuffer
- ldr r0, _08050ACC @ =gUnknown_03004854
- ldr r3, [r0]
- ldrh r0, [r2, 0x4]
- adds r1, r3, 0
- adds r1, 0x5A
- strh r0, [r1]
- movs r0, 0x96
- lsls r0, 1
- adds r1, r3, r0
- ldr r0, [r2]
- str r0, [r1]
- adds r1, r3, 0
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl ResetBlockReceivedFlags
- b _08050CB6
- .align 2, 0
-_08050AC8: .4byte gBlockRecvBuffer
-_08050ACC: .4byte gUnknown_03004854
-_08050AD0:
- bl sub_8052228
- lsls r0, 24
- cmp r0, 0
- bne _08050ADC
- b _08050CB6
-_08050ADC:
- b _08050C82
-_08050ADE:
- bl sub_8051C58
- lsls r0, 24
- cmp r0, 0
- bne _08050AEA
- b _08050CB6
-_08050AEA:
- ldr r0, _08050AFC @ =gUnknown_03004834
- ldrb r0, [r0]
- cmp r0, 0
- bne _08050B00
- movs r0, 0x22
- bl IncrementGameStat
- b _08050C82
- .align 2, 0
-_08050AFC: .4byte gUnknown_03004834
-_08050B00:
- movs r0, 0x21
- bl IncrementGameStat
- b _08050C82
-_08050B08:
- ldr r0, _08050B2C @ =gUnknown_03004854
- ldr r1, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08050B30 @ =gOtherText_BlendAnotherBerryPrompt
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _08050CB6
- .align 2, 0
-_08050B2C: .4byte gUnknown_03004854
-_08050B30: .4byte gOtherText_BlendAnotherBerryPrompt
-_08050B34:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08050B40
- b _08050CB6
-_08050B40:
- b _08050C82
-_08050B42:
- ldr r4, _08050B54 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0xAA
- movs r1, 0
- strb r1, [r0]
- bl sub_80508FC
- ldr r1, [r4]
- b _08050C86
- .align 2, 0
-_08050B54: .4byte gUnknown_03004854
-_08050B58:
- ldr r0, _08050B80 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08050B88
- ldr r0, _08050B84 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0xAA
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050B76
- movs r0, 0x5
- bl PlaySE
-_08050B76:
- movs r0, 0
- bl sub_80508D4
- b _08050CB6
- .align 2, 0
-_08050B80: .4byte gMain
-_08050B84: .4byte gUnknown_03004854
-_08050B88:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08050BA8
- ldr r0, _08050BA4 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0xAA
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08050BD4
- movs r0, 0x5
- bl PlaySE
- b _08050BD4
- .align 2, 0
-_08050BA4: .4byte gUnknown_03004854
-_08050BA8:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08050BB8
- movs r0, 0x5
- bl PlaySE
- b _08050C82
-_08050BB8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08050BC2
- b _08050CB6
-_08050BC2:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08050BDC @ =gUnknown_03004854
- ldr r1, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08050BD4:
- movs r0, 0x1
- bl sub_80508D4
- b _08050CB6
- .align 2, 0
-_08050BDC: .4byte gUnknown_03004854
-_08050BE0:
- ldr r6, _08050C10 @ =gSendCmd
- movs r7, 0
- ldr r0, _08050C14 @ =0x00002fff
- strh r0, [r6]
- ldr r4, _08050C18 @ =gUnknown_03004854
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0xAA
- ldrb r5, [r0]
- cmp r5, 0
- bne _08050C50
- movs r0, 0x4
- bl IsBagPocketNonEmpty
- lsls r0, 24
- cmp r0, 0
- bne _08050C20
- ldr r0, [r4]
- adds r0, 0x7C
- movs r1, 0x2
- strh r1, [r0]
- ldr r0, _08050C1C @ =0x00009999
- b _08050C48
- .align 2, 0
-_08050C10: .4byte gSendCmd
-_08050C14: .4byte 0x00002fff
-_08050C18: .4byte gUnknown_03004854
-_08050C1C: .4byte 0x00009999
-_08050C20:
- bl sub_810CA00
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _08050C40
- ldr r0, [r4]
- adds r0, 0x7C
- movs r1, 0x3
- strh r1, [r0]
- ldr r0, _08050C3C @ =0x0000aaaa
- b _08050C48
- .align 2, 0
-_08050C3C: .4byte 0x0000aaaa
-_08050C40:
- ldr r0, [r4]
- adds r0, 0x7C
- strh r5, [r0]
- ldr r0, _08050C4C @ =0x00007779
-_08050C48:
- strh r0, [r6, 0x2]
- b _08050C82
- .align 2, 0
-_08050C4C: .4byte 0x00007779
-_08050C50:
- adds r1, r2, 0
- adds r1, 0x7C
- movs r0, 0x1
- strh r0, [r1]
- ldr r0, _08050C60 @ =0x00008888
- strh r0, [r6, 0x2]
- subs r1, 0xD
- b _08050C88
- .align 2, 0
-_08050C60: .4byte 0x00008888
-_08050C64:
- ldr r0, _08050C70 @ =gUnknown_03004834
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050C78
- ldr r0, _08050C74 @ =sub_80510E8
- b _08050CA4
- .align 2, 0
-_08050C70: .4byte gUnknown_03004834
-_08050C74: .4byte sub_80510E8
-_08050C78:
- ldr r0, _08050C90 @ =gOtherText_LinkStandby3
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
-_08050C82:
- ldr r0, _08050C94 @ =gUnknown_03004854
- ldr r1, [r0]
-_08050C86:
- adds r1, 0x6F
-_08050C88:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08050CB6
- .align 2, 0
-_08050C90: .4byte gOtherText_LinkStandby3
-_08050C94: .4byte gUnknown_03004854
-_08050C98:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _08050CB6
- ldr r0, _08050CE0 @ =sub_8050E30
-_08050CA4:
- bl SetMainCallback2
- ldr r2, _08050CE4 @ =gUnknown_03004854
- ldr r0, [r2]
- adds r0, 0x6F
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0]
-_08050CB6:
- bl sub_8051B18
- ldr r0, _08050CE4 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x56
- ldrh r0, [r0]
- bl sub_8051A3C
- bl sub_805123C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08050CE0: .4byte sub_8050E30
-_08050CE4: .4byte gUnknown_03004854
- thumb_func_end sub_8050954
-
- thumb_func_start sub_8050CE8
-sub_8050CE8: @ 8050CE8
- push {r4,lr}
- ldr r1, _08050D08 @ =gUnknown_03004854
- ldr r0, [r1]
- movs r2, 0xE2
- lsls r2, 1
- adds r0, r2
- ldr r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x6
- bls _08050CFE
- b _08050E28
-_08050CFE:
- lsls r0, 2
- ldr r1, _08050D0C @ =_08050D10
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050D08: .4byte gUnknown_03004854
-_08050D0C: .4byte _08050D10
- .align 2, 0
-_08050D10:
- .4byte _08050D2C
- .4byte _08050D44
- .4byte _08050D70
- .4byte _08050D80
- .4byte _08050DA6
- .4byte _08050DEC
- .4byte _08050E06
-_08050D2C:
- bl sub_80084A4
- ldr r0, _08050D40 @ =gUnknown_03004854
- ldr r2, [r0]
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r2, r3
- movs r0, 0x1
- b _08050DF8
- .align 2, 0
-_08050D40: .4byte gUnknown_03004854
-_08050D44:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08050E28
- ldr r0, _08050D68 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r2, 0xE2
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r1, _08050D6C @ =gSoftResetDisabled
- movs r0, 0x1
- strb r0, [r1]
- b _08050E28
- .align 2, 0
-_08050D68: .4byte gUnknown_03004854
-_08050D6C: .4byte gSoftResetDisabled
-_08050D70:
- bl sub_8125E2C
- ldr r0, _08050D7C @ =gUnknown_03004854
- ldr r2, [r0]
- b _08050DEE
- .align 2, 0
-_08050D7C: .4byte gUnknown_03004854
-_08050D80:
- ldr r1, [r4]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0xA
- bne _08050E28
- bl sub_80084A4
- ldr r1, [r4]
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- b _08050E28
-_08050DA6:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08050E28
- bl sub_8125E6C
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _08050DD0
- ldr r0, _08050DCC @ =gUnknown_03004854
- ldr r0, [r0]
- movs r1, 0xE2
- lsls r1, 1
- adds r0, r1
- movs r1, 0x5
- str r1, [r0]
- b _08050E28
- .align 2, 0
-_08050DCC: .4byte gUnknown_03004854
-_08050DD0:
- ldr r0, _08050DE8 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r3, 0x98
- lsls r3, 1
- adds r0, r1, r3
- str r2, [r0]
- movs r0, 0xE2
- lsls r0, 1
- adds r1, r0
- movs r0, 0x3
- str r0, [r1]
- b _08050E28
- .align 2, 0
-_08050DE8: .4byte gUnknown_03004854
-_08050DEC:
- ldr r2, [r4]
-_08050DEE:
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r2, r3
- ldr r0, [r1]
- adds r0, 0x1
-_08050DF8:
- str r0, [r1]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r2, r0
- movs r0, 0
- str r0, [r1]
- b _08050E28
-_08050E06:
- ldr r1, [r4]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x5
- ble _08050E28
- ldr r1, _08050E24 @ =gSoftResetDisabled
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _08050E2A
- .align 2, 0
-_08050E24: .4byte gSoftResetDisabled
-_08050E28:
- movs r0, 0
-_08050E2A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8050CE8
-
- thumb_func_start sub_8050E30
-sub_8050E30: @ 8050E30
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r1, _08050E50 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x6F
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0xC
- bls _08050E44
- b _080510AC
-_08050E44:
- lsls r0, 2
- ldr r1, _08050E54 @ =_08050E58
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050E50: .4byte gUnknown_03004854
-_08050E54: .4byte _08050E58
- .align 2, 0
-_08050E58:
- .4byte _08050E8C
- .4byte _08050ED8
- .4byte _08050F00
- .4byte _08050F54
- .4byte _08050F74
- .4byte _08050F92
- .4byte _08050FBC
- .4byte _08050FEC
- .4byte _08051008
- .4byte _08051018
- .4byte _0805103C
- .4byte _0805107C
- .4byte _0805109E
-_08050E8C:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x70
- ldrh r2, [r0]
- ldr r0, _08050EB8 @ =0x00002222
- cmp r2, r0
- beq _08050F8A
- ldr r0, _08050EBC @ =0x00001111
- cmp r2, r0
- beq _08050EA2
- b _080510AC
-_08050EA2:
- adds r0, r1, 0
- adds r0, 0x78
- ldrh r2, [r0]
- ldr r0, _08050EC0 @ =0x00009999
- cmp r2, r0
- bne _08050EC4
- adds r1, 0x6F
- movs r0, 0x2
- strb r0, [r1]
- b _080510AC
- .align 2, 0
-_08050EB8: .4byte 0x00002222
-_08050EBC: .4byte 0x00001111
-_08050EC0: .4byte 0x00009999
-_08050EC4:
- ldr r0, _08050ED4 @ =0x0000aaaa
- cmp r2, r0
- bne _08050F8A
- adds r1, 0x6F
- movs r0, 0x1
- strb r0, [r1]
- b _080510AC
- .align 2, 0
-_08050ED4: .4byte 0x0000aaaa
-_08050ED8:
- ldr r0, [r5]
- adds r0, 0x6F
- movs r1, 0x3
- strb r1, [r0]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r4, _08050EF8 @ =gStringVar4
- ldr r1, _08050EFC @ =gOtherText_OtherCaseIsFull
- b _08050F1E
- .align 2, 0
-_08050EF8: .4byte gStringVar4
-_08050EFC: .4byte gOtherText_OtherCaseIsFull
-_08050F00:
- ldr r1, [r5]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r4, _08050F48 @ =gStringVar4
- ldr r1, _08050F4C @ =gOtherText_NoBerriesForBlend
-_08050F1E:
- adds r0, r4, 0
- bl StringCopy
- ldr r0, [r5]
- adds r0, 0x7A
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _08050F50 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r4, 0
- bl de_sub_8073110
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _080510AC
- .align 2, 0
-_08050F48: .4byte gStringVar4
-_08050F4C: .4byte gOtherText_NoBerriesForBlend
-_08050F50: .4byte gLinkPlayers + 0x8
-_08050F54:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08050F60
- b _080510AC
-_08050F60:
- ldr r0, _08050F70 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08051094
- .align 2, 0
-_08050F70: .4byte gUnknown_03004854
-_08050F74:
- ldr r2, [r5]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r2, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _08050F88
- b _080510AC
-_08050F88:
- adds r1, r2, 0
-_08050F8A:
- adds r1, 0x6F
- movs r0, 0x5
- strb r0, [r1]
- b _080510AC
-_08050F92:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08050FB4 @ =gMultiText_Saving
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- bl sub_80084A4
- ldr r0, _08050FB8 @ =gUnknown_03004854
- ldr r1, [r0]
- b _08051094
- .align 2, 0
-_08050FB4: .4byte gMultiText_Saving
-_08050FB8: .4byte gUnknown_03004854
-_08050FBC:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080510AC
- ldr r3, _08050FE8 @ =gUnknown_03004854
- ldr r1, [r3]
- movs r2, 0x98
- lsls r2, 1
- adds r0, r1, r2
- movs r2, 0
- str r2, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r3]
- movs r1, 0xE2
- lsls r1, 1
- adds r0, r1
- str r2, [r0]
- b _080510AC
- .align 2, 0
-_08050FE8: .4byte gUnknown_03004854
-_08050FEC:
- bl sub_8050CE8
- lsls r0, 24
- cmp r0, 0
- beq _080510AC
- movs r0, 0x37
- bl PlaySE
- ldr r0, _08051004 @ =gUnknown_03004854
- ldr r1, [r0]
- b _08051094
- .align 2, 0
-_08051004: .4byte gUnknown_03004854
-_08051008:
- ldr r1, [r5]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_80084A4
- b _080510AC
-_08051018:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080510AC
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08051038 @ =gUnknown_03004854
- ldr r1, [r0]
- b _08051094
- .align 2, 0
-_08051038: .4byte gUnknown_03004854
-_0805103C:
- ldr r0, _08051064 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- bne _080510AC
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x70
- ldrh r1, [r0]
- ldr r0, _08051068 @ =0x00002222
- cmp r1, r0
- bne _08051070
- ldr r0, _0805106C @ =sub_804E538
- bl SetMainCallback2
- b _080510AC
- .align 2, 0
-_08051064: .4byte gPaletteFade
-_08051068: .4byte 0x00002222
-_0805106C: .4byte sub_804E538
-_08051070:
- movs r1, 0x98
- lsls r1, 1
- adds r0, r2, r1
- str r3, [r0]
- adds r1, r2, 0
- b _08051094
-_0805107C:
- ldr r1, [r5]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x1E
- ble _080510AC
- bl sub_800832C
- ldr r1, [r5]
-_08051094:
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080510AC
-_0805109E:
- ldr r0, _080510C8 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080510AC
- ldr r0, _080510CC @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_080510AC:
- bl sub_805123C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080510C8: .4byte gReceivedRemoteLinkPlayers
-_080510CC: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_8050E30
-
- thumb_func_start sub_80510E8
-sub_80510E8: @ 80510E8
- push {lr}
- ldr r1, _08051104 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x6F
- ldrb r0, [r0]
- adds r3, r1, 0
- cmp r0, 0xA
- bls _080510FA
- b _0805121E
-_080510FA:
- lsls r0, 2
- ldr r1, _08051108 @ =_0805110C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08051104: .4byte gUnknown_03004854
-_08051108: .4byte _0805110C
- .align 2, 0
-_0805110C:
- .4byte _08051138
- .4byte _0805116E
- .4byte _08051190
- .4byte _080511BC
- .4byte _0805121E
- .4byte _0805121E
- .4byte _0805121E
- .4byte _0805121E
- .4byte _0805121E
- .4byte _080511D8
- .4byte _080511F0
-_08051138:
- ldr r1, [r3]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0x1
- bhi _0805114A
- adds r1, 0x6F
- movs r0, 0x9
- strb r0, [r1]
-_0805114A:
- ldr r2, [r3]
- adds r0, r2, 0
- adds r0, 0x7C
- ldrh r1, [r0]
- cmp r1, 0x2
- bne _0805115A
- subs r0, 0xD
- strb r1, [r0]
-_0805115A:
- ldr r1, [r3]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0x3
- bne _0805121E
- adds r1, 0x6F
- movs r0, 0x1
- strb r0, [r1]
- b _0805121E
-_0805116E:
- ldr r0, [r3]
- adds r0, 0x6F
- movs r1, 0x3
- strb r1, [r0]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _0805118C @ =gOtherText_CaseIsFull
- b _080511AC
- .align 2, 0
-_0805118C: .4byte gOtherText_CaseIsFull
-_08051190:
- ldr r0, [r3]
- adds r0, 0x6F
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080511B8 @ =gOtherText_OutOfBerries
-_080511AC:
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _0805121E
- .align 2, 0
-_080511B8: .4byte gOtherText_OutOfBerries
-_080511BC:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0805121E
- ldr r0, _080511D4 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x9
- strb r1, [r0]
- b _0805121E
- .align 2, 0
-_080511D4: .4byte gUnknown_03004854
-_080511D8:
- movs r0, 0x3
- bl BeginFastPaletteFade
- ldr r0, _080511EC @ =gUnknown_03004854
- ldr r1, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0805121E
- .align 2, 0
-_080511EC: .4byte gUnknown_03004854
-_080511F0:
- ldr r0, _08051210 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0805121E
- ldr r0, [r3]
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- bne _08051218
- ldr r0, _08051214 @ =sub_804E538
- bl SetMainCallback2
- b _0805121E
- .align 2, 0
-_08051210: .4byte gPaletteFade
-_08051214: .4byte sub_804E538
-_08051218:
- ldr r0, _08051238 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_0805121E:
- bl sub_805123C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- .align 2, 0
-_08051238: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_80510E8
-
- thumb_func_start sub_805123C
-sub_805123C: @ 805123C
- push {r4-r6,lr}
- ldr r0, _0805126C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08051248
- b _08051404
-_08051248:
- ldr r4, _08051270 @ =gRecvCmds
- ldrh r1, [r4]
- ldr r0, _08051274 @ =0x00002fff
- cmp r1, r0
- bne _080512C6
- ldrh r1, [r4, 0x8]
- ldr r0, _08051278 @ =0x00001111
- cmp r1, r0
- bne _080512B8
- ldrh r3, [r4, 0x10]
- ldr r0, _0805127C @ =0x00009999
- cmp r3, r0
- beq _08051298
- cmp r3, r0
- bgt _08051284
- ldr r0, _08051280 @ =0x00008888
- b _08051286
- .align 2, 0
-_0805126C: .4byte gReceivedRemoteLinkPlayers
-_08051270: .4byte gRecvCmds
-_08051274: .4byte 0x00002fff
-_08051278: .4byte 0x00001111
-_0805127C: .4byte 0x00009999
-_08051280: .4byte 0x00008888
-_08051284:
- ldr r0, _08051290 @ =0x0000aaaa
-_08051286:
- cmp r3, r0
- beq _08051298
- ldr r2, _08051294 @ =gUnknown_03004854
- b _080512A8
- .align 2, 0
-_08051290: .4byte 0x0000aaaa
-_08051294: .4byte gUnknown_03004854
-_08051298:
- ldr r2, _080512B0 @ =gUnknown_03004854
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0x78
- strh r3, [r1]
- ldrh r1, [r4, 0x18]
- adds r0, 0x7A
- strh r1, [r0]
-_080512A8:
- ldr r0, [r2]
- adds r0, 0x70
- ldr r1, _080512B4 @ =0x00001111
- b _080512C4
- .align 2, 0
-_080512B0: .4byte gUnknown_03004854
-_080512B4: .4byte 0x00001111
-_080512B8:
- ldr r0, _080512F4 @ =0x00002222
- cmp r1, r0
- bne _080512C6
- ldr r0, _080512F8 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x70
-_080512C4:
- strh r1, [r0]
-_080512C6:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _080512D2
- b _08051404
-_080512D2:
- ldr r2, _080512F8 @ =gUnknown_03004854
- ldr r0, [r2]
- adds r0, 0x70
- ldrh r1, [r0]
- ldr r0, _080512FC @ =0x00001111
- cmp r1, r0
- bne _080512E2
- b _08051404
-_080512E2:
- ldr r0, _080512F4 @ =0x00002222
- cmp r1, r0
- bne _080512EA
- b _08051404
-_080512EA:
- movs r4, 0
- ldr r6, _08051300 @ =0x00002fff
- adds r5, r2, 0
- b _0805134E
- .align 2, 0
-_080512F4: .4byte 0x00002222
-_080512F8: .4byte gUnknown_03004854
-_080512FC: .4byte 0x00001111
-_08051300: .4byte 0x00002fff
-_08051304:
- ldr r1, _08051328 @ =gRecvCmds
- lsls r2, r4, 1
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, r6
- bne _08051348
- adds r0, r1, 0
- adds r0, 0x8
- adds r0, r2, r0
- ldrh r1, [r0]
- ldr r0, _0805132C @ =0x00008888
- cmp r1, r0
- beq _08051340
- cmp r1, r0
- bgt _08051334
- ldr r0, _08051330 @ =0x00007779
- b _0805133C
- .align 2, 0
-_08051328: .4byte gRecvCmds
-_0805132C: .4byte 0x00008888
-_08051330: .4byte 0x00007779
-_08051334:
- ldr r0, _08051360 @ =0x00009999
- cmp r1, r0
- beq _08051340
- ldr r0, _08051364 @ =0x0000aaaa
-_0805133C:
- cmp r1, r0
- bne _08051348
-_08051340:
- ldr r0, [r5]
- adds r0, 0x70
- adds r0, r2
- strh r1, [r0]
-_08051348:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0805134E:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _08051304
- movs r4, 0
- b _0805136E
- .align 2, 0
-_08051360: .4byte 0x00009999
-_08051364: .4byte 0x0000aaaa
-_08051368:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0805136E:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _0805138A
- ldr r0, _0805139C @ =gUnknown_03004854
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _08051368
-_0805138A:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _08051404
- movs r4, 0
- ldr r5, _080513A0 @ =0x00007779
- b _080513AA
- .align 2, 0
-_0805139C: .4byte gUnknown_03004854
-_080513A0: .4byte 0x00007779
-_080513A4:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080513AA:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _080513C6
- ldr r0, _080513E0 @ =gUnknown_03004854
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r5
- beq _080513A4
-_080513C6:
- ldr r5, _080513E4 @ =gSendCmd
- movs r6, 0
- ldr r0, _080513E8 @ =0x00002fff
- strh r0, [r5]
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _080513F0
- ldr r0, _080513EC @ =0x00002222
- strh r0, [r5, 0x2]
- b _08051404
- .align 2, 0
-_080513E0: .4byte gUnknown_03004854
-_080513E4: .4byte gSendCmd
-_080513E8: .4byte 0x00002fff
-_080513EC: .4byte 0x00002222
-_080513F0:
- ldr r0, _0805140C @ =0x00001111
- strh r0, [r5, 0x2]
- ldr r0, _08051410 @ =gUnknown_03004854
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r5, 0x4]
- strh r4, [r5, 0x6]
-_08051404:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0805140C: .4byte 0x00001111
-_08051410: .4byte gUnknown_03004854
- thumb_func_end sub_805123C
-
- thumb_func_start sub_8051414
-sub_8051414: @ 8051414
- push {lr}
- sub sp, 0x14
- adds r1, r0, 0
- movs r0, 0xF0
- lsls r0, 7
- str r0, [sp]
- movs r0, 0xA0
- lsls r0, 7
- str r0, [sp, 0x4]
- mov r3, sp
- ldr r0, _08051470 @ =gUnknown_03004854
- ldr r0, [r0]
- mov r12, r0
- movs r0, 0xA2
- lsls r0, 1
- add r0, r12
- ldrh r2, [r0]
- movs r0, 0x78
- subs r0, r2
- strh r0, [r3, 0x8]
- movs r0, 0xA3
- lsls r0, 1
- add r0, r12
- ldrh r2, [r0]
- movs r0, 0x50
- subs r0, r2
- strh r0, [r3, 0xA]
- mov r2, sp
- movs r3, 0xA1
- lsls r3, 1
- add r3, r12
- ldrh r0, [r3]
- strh r0, [r2, 0xC]
- ldrh r0, [r3]
- strh r0, [r2, 0xE]
- mov r0, r12
- adds r0, 0x54
- ldrh r0, [r0]
- strh r0, [r2, 0x10]
- mov r0, sp
- movs r2, 0x1
- bl BgAffineSet
- add sp, 0x14
- pop {r0}
- bx r0
- .align 2, 0
-_08051470: .4byte gUnknown_03004854
- thumb_func_end sub_8051414
-
- thumb_func_start sub_8051474
-sub_8051474: @ 8051474
- push {lr}
- ldr r0, _080514A0 @ =gUnknown_03004854
- ldr r3, [r0]
- adds r1, r3, 0
- adds r1, 0x54
- ldrh r2, [r1]
- adds r0, r3, 0
- adds r0, 0x58
- strh r2, [r0]
- subs r0, 0x2
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- movs r1, 0xB4
- lsls r1, 1
- adds r0, r3, r1
- bl sub_8051414
- pop {r0}
- bx r0
- .align 2, 0
-_080514A0: .4byte gUnknown_03004854
- thumb_func_end sub_8051474
-
- thumb_func_start sub_80514A4
-sub_80514A4: @ 80514A4
- ldr r1, _080514E8 @ =REG_BG2PA
- ldr r0, _080514EC @ =gUnknown_03004854
- ldr r2, [r0]
- movs r3, 0xB4
- lsls r3, 1
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldr r0, [r0]
- str r0, [r1]
- adds r1, 0x4
- adds r3, 0x4
- adds r0, r2, r3
- ldr r0, [r0]
- str r0, [r1]
- bx lr
- .align 2, 0
-_080514E8: .4byte REG_BG2PA
-_080514EC: .4byte gUnknown_03004854
- thumb_func_end sub_80514A4
-
- thumb_func_start sub_80514F0
-sub_80514F0: @ 80514F0
- ldr r1, _0805151C @ =REG_BG1HOFS
- ldr r0, _08051520 @ =gUnknown_03004854
- ldr r3, [r0]
- movs r0, 0xA2
- lsls r0, 1
- adds r2, r3, r0
- ldrh r0, [r2]
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0xA3
- lsls r0, 1
- adds r3, r0
- ldrh r0, [r3]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r3]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0805151C: .4byte REG_BG1HOFS
-_08051520: .4byte gUnknown_03004854
- thumb_func_end sub_80514F0
-
- thumb_func_start sub_8051524
-sub_8051524: @ 8051524
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x34]
- adds r0, r1
- strh r0, [r2, 0x34]
- movs r1, 0x32
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bge _08051542
- adds r0, 0x7
-_08051542:
- asrs r0, 3
- strh r0, [r2, 0x24]
- movs r1, 0x34
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bge _08051550
- adds r0, 0x7
-_08051550:
- asrs r0, 3
- strh r0, [r2, 0x26]
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08051568
- adds r0, r2, 0
- bl DestroySprite
-_08051568:
- pop {r0}
- bx r0
- thumb_func_end sub_8051524
-
- thumb_func_start sub_805156C
-sub_805156C: @ 805156C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- bl Random
- lsls r0, 16
- lsrs r1, r0, 16
- movs r0, 0x1
- ands r1, r0
- adds r0, r1, 0x1
- cmp r0, 0
- beq _08051628
- ldr r0, _08051638 @ =gSineTable
- mov r9, r0
- ldr r2, _0805163C @ =gSprites
- mov r10, r2
- adds r6, r1, 0x1
- movs r3, 0x1F
- mov r8, r3
- movs r7, 0x10
-_08051598:
- bl Random
- ldr r1, _08051640 @ =gUnknown_03004854
- ldr r4, [r1]
- adds r4, 0x54
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x14
- bl __umodsi3
- ldrh r1, [r4]
- adds r1, r0
- lsls r1, 16
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r2, r0, 16
- adds r0, r2, 0
- adds r0, 0x40
- lsls r0, 1
- add r0, r9
- movs r3, 0
- ldrsh r1, [r0, r3]
- cmp r1, 0
- bge _080515CC
- adds r1, 0x3
-_080515CC:
- asrs r1, 2
- lsls r0, r2, 1
- add r0, r9
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bge _080515DC
- adds r0, 0x3
-_080515DC:
- asrs r2, r0, 2
- adds r1, 0x78
- adds r2, 0x50
- ldr r0, _08051644 @ =gSpriteTemplate_82164FC
- movs r3, 0x1
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r5, r4, 4
- adds r5, r4
- lsls r5, 2
- mov r3, r10
- adds r4, r5, r3
- lsls r0, 16
- lsrs r0, 16
- mov r1, r8
- ands r0, r1
- subs r0, r7, r0
- strh r0, [r4, 0x2E]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r2, r8
- ands r0, r2
- subs r0, r7, r0
- strh r0, [r4, 0x30]
- ldr r3, _08051648 @ =gSprites + 0x1C
- adds r5, r3
- ldr r0, _0805164C @ =sub_8051524
- str r0, [r5]
- subs r6, 0x1
- cmp r6, 0
- bne _08051598
-_08051628:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08051638: .4byte gSineTable
-_0805163C: .4byte gSprites
-_08051640: .4byte gUnknown_03004854
-_08051644: .4byte gSpriteTemplate_82164FC
-_08051648: .4byte gSprites + 0x1C
-_0805164C: .4byte sub_8051524
- thumb_func_end sub_805156C
-
- thumb_func_start sub_8051650
-sub_8051650: @ 8051650
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl __divsi3
- negs r0, r0
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0805167C
- adds r0, r4, 0
- bl DestroySprite
-_0805167C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8051650
-
- thumb_func_start sub_8051684
-sub_8051684: @ 8051684
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- lsls r0, 1
- negs r0, r0
- strh r0, [r2, 0x26]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0xC
- negs r1, r1
- cmp r0, r1
- bge _080516A8
- ldr r0, _080516C0 @ =0x0000fff4
- strh r0, [r2, 0x26]
-_080516A8:
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080516BC
- adds r0, r2, 0
- bl DestroySprite
-_080516BC:
- pop {r0}
- bx r0
- .align 2, 0
-_080516C0: .4byte 0x0000fff4
- thumb_func_end sub_8051684
-
- thumb_func_start sub_80516C4
-sub_80516C4: @ 80516C4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _080516F4 @ =gUnknown_03004854
- ldr r3, [r2]
- lsls r4, r0, 1
- adds r2, r3, 0
- adds r2, 0x80
- adds r2, r4
- strh r1, [r2]
- lsls r0, 4
- movs r2, 0xBE
- lsls r2, 1
- adds r0, r2
- adds r3, r0
- adds r0, r3, 0
- bl sub_804E844
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080516F4: .4byte gUnknown_03004854
- thumb_func_end sub_80516C4
-
- thumb_func_start unref_sub_80516F8
-unref_sub_80516F8: @ 80516F8
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080517B8 @ =gTasks
- adds r4, r0, r1
- ldr r6, _080517BC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r6]
- cmp r0, 0
- beq _0805180C
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080517D4
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- ble _08051730
- strh r1, [r4, 0x8]
-_08051730:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x64
- bne _080517A0
- ldr r0, _080517C0 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x4
- movs r1, 0x14
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl ZeroFillWindowRect
- movs r0, 0x4
- movs r1, 0x4
- movs r2, 0xA
- movs r3, 0xC
- bl MenuDrawTextWindow
- movs r2, 0
- ldr r6, _080517C4 @ =gLinkPlayers + 0x4
-_0805175C:
- adds r4, r2, 0x1
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- cmp r0, 0
- beq _08051784
- ldr r1, _080517C8 @ =gUnknown_08216284
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- lsls r2, 25
- movs r1, 0xA0
- lsls r1, 19
- adds r2, r1
- lsrs r2, 24
- movs r1, 0x5
- bl MenuPrint
-_08051784:
- movs r0, 0
- movs r1, 0xD
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _080517CC @ =gOtherText_PressAToStart
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- adds r2, r4, 0
- cmp r2, 0x2
- ble _0805175C
-_080517A0:
- ldr r0, _080517D0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805180C
- bl sub_8007E4C
- adds r0, r5, 0
- bl DestroyTask
- b _0805180C
- .align 2, 0
-_080517B8: .4byte gTasks
-_080517BC: .4byte gReceivedRemoteLinkPlayers
-_080517C0: .4byte gUnknown_03004854
-_080517C4: .4byte gLinkPlayers + 0x4
-_080517C8: .4byte gUnknown_08216284
-_080517CC: .4byte gOtherText_PressAToStart
-_080517D0: .4byte gMain
-_080517D4:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0xA
- bne _080517E6
- ldr r0, _08051814 @ =gOtherText_PleaseWait
- movs r1, 0x3
- movs r2, 0xA
- bl MenuPrint
-_080517E6:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- ble _080517F8
- movs r0, 0
- strh r0, [r4, 0x8]
-_080517F8:
- ldr r0, _08051818 @ =byte_3002A68
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _0805180C
- ldrb r0, [r6]
- cmp r0, 0x1
- bne _0805180C
- adds r0, r5, 0
- bl DestroyTask
-_0805180C:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08051814: .4byte gOtherText_PleaseWait
-_08051818: .4byte byte_3002A68
- thumb_func_end unref_sub_80516F8
-
- thumb_func_start sub_805181C
-sub_805181C: @ 805181C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08051858
- cmp r0, 0x1
- bgt _08051832
- cmp r0, 0
- beq _08051838
- b _080518BE
-_08051832:
- cmp r0, 0x2
- beq _08051872
- b _080518BE
-_08051838:
- ldrh r0, [r4, 0x30]
- adds r0, 0x8
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x58
- ble _080518BE
- movs r0, 0x58
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0x38
- bl PlaySE
- b _080518BE
-_08051858:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080518BE
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0
- strh r0, [r4, 0x32]
- b _080518BE
-_08051872:
- ldrh r0, [r4, 0x30]
- adds r0, 0x4
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB0
- ble _080518BE
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- adds r1, r0, 0
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080518AC
- adds r0, r4, 0
- bl DestroySprite
- ldr r0, _080518A8 @ =gSpriteTemplate_821657C
- movs r2, 0x14
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x2
- bl CreateSprite
- b _080518BE
- .align 2, 0
-_080518A8: .4byte gSpriteTemplate_821657C
-_080518AC:
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, _080518C8 @ =0x0000fff0
- strh r0, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
-_080518BE:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080518C8: .4byte 0x0000fff0
- thumb_func_end sub_805181C
-
- thumb_func_start sub_80518CC
-sub_80518CC: @ 80518CC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08051908
- cmp r0, 0x1
- bgt _080518E2
- cmp r0, 0
- beq _080518E8
- b _0805193C
-_080518E2:
- cmp r0, 0x2
- beq _0805191E
- b _0805193C
-_080518E8:
- ldrh r0, [r4, 0x30]
- adds r0, 0x8
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5C
- ble _0805193C
- movs r0, 0x5C
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0x15
- bl PlaySE
- b _0805193C
-_08051908:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _0805193C
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _0805193C
-_0805191E:
- ldrh r0, [r4, 0x30]
- adds r0, 0x4
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB0
- ble _0805193C
- ldr r0, _08051948 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_0805193C:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08051948: .4byte gUnknown_03004854
- thumb_func_end sub_80518CC
-
- thumb_func_start sub_805194C
-sub_805194C: @ 805194C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r3, r1, 16
- ldr r1, _08051978 @ =gUnknown_03004854
- ldr r1, [r1]
- movs r2, 0xA0
- lsls r2, 1
- adds r1, r2
- ldrh r2, [r1]
- cmp r2, r0
- bcs _08051972
- adds r0, r2, 0x2
- strh r0, [r1]
- ldrh r0, [r1]
- adds r1, r3, 0
- bl sub_805197C
-_08051972:
- pop {r0}
- bx r0
- .align 2, 0
-_08051978: .4byte gUnknown_03004854
- thumb_func_end sub_805194C
-
- thumb_func_start sub_805197C
-sub_805197C: @ 805197C
- push {r4-r7,lr}
- lsls r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r7, _08051A0C @ =0x06006000
- lsrs r0, 10
- bl __divsi3
- adds r1, r0, 0
- cmp r1, 0
- bge _08051994
- adds r0, r1, 0x7
-_08051994:
- asrs r4, r0, 3
- movs r3, 0
- cmp r3, r4
- bge _080519BC
- ldr r0, _08051A10 @ =0x000081e9
- adds r6, r0, 0
- adds r0, 0x10
- adds r5, r0, 0
- adds r2, r7, 0
- adds r2, 0x56
- adds r0, r7, 0
- adds r3, r4, 0
-_080519AC:
- strh r6, [r0, 0x16]
- strh r5, [r2]
- adds r2, 0x2
- adds r0, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _080519AC
- adds r3, r4, 0
-_080519BC:
- adds r0, r1, 0
- cmp r1, 0
- bge _080519C4
- adds r0, r1, 0x7
-_080519C4:
- asrs r2, r0, 3
- lsls r0, r2, 3
- subs r2, r1, r0
- cmp r2, 0
- beq _080519E2
- lsls r0, r3, 1
- adds r0, r7
- ldr r4, _08051A14 @ =0xffff81e1
- adds r1, r2, r4
- strh r1, [r0, 0x16]
- adds r0, 0x56
- adds r4, 0x10
- adds r1, r2, r4
- strh r1, [r0]
- adds r3, 0x1
-_080519E2:
- cmp r3, 0x7
- bgt _08051A06
- ldr r0, _08051A18 @ =0x000081e1
- adds r4, r0, 0
- adds r0, 0x10
- adds r2, r0, 0
- lsls r1, r3, 1
- adds r0, r1, 0
- adds r0, 0x56
- adds r0, r7
- adds r1, r7
-_080519F8:
- strh r4, [r1, 0x16]
- strh r2, [r0]
- adds r0, 0x2
- adds r1, 0x2
- adds r3, 0x1
- cmp r3, 0x7
- ble _080519F8
-_08051A06:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08051A0C: .4byte 0x06006000
-_08051A10: .4byte 0x000081e9
-_08051A14: .4byte 0xffff81e1
-_08051A18: .4byte 0x000081e1
- thumb_func_end sub_805197C
-
- thumb_func_start sub_8051A1C
-sub_8051A1C: @ 8051A1C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08051A34 @ =0x00057e40
- muls r0, r1
- cmp r0, 0
- bge _08051A2E
- ldr r1, _08051A38 @ =0x0000ffff
- adds r0, r1
-_08051A2E:
- asrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_08051A34: .4byte 0x00057e40
-_08051A38: .4byte 0x0000ffff
- thumb_func_end sub_8051A1C
-
- thumb_func_start sub_8051A3C
-sub_8051A3C: @ 8051A3C
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 16
- lsrs r0, 16
- bl sub_8051A1C
- adds r5, r0, 0
- ldr r0, _08051ABC @ =gUnknown_03004854
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x5A
- ldrh r0, [r1]
- cmp r0, r5
- bcs _08051A5A
- strh r5, [r1]
-_08051A5A:
- movs r6, 0
-_08051A5C:
- mov r0, sp
- adds r4, r0, r6
- adds r0, r5, 0
- movs r1, 0xA
- bl __umodsi3
- strb r0, [r4]
- adds r0, r5, 0
- movs r1, 0xA
- bl __udivsi3
- adds r5, r0, 0
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x4
- bls _08051A5C
- ldr r2, _08051AC0 @ =0x06006458
- mov r0, sp
- ldr r3, _08051AC4 @ =0x00008172
- adds r1, r3, 0
- ldrb r0, [r0, 0x4]
- adds r0, r1, r0
- strh r0, [r2]
- adds r2, 0x2
- mov r0, sp
- ldrb r0, [r0, 0x3]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x2
- mov r0, sp
- ldrb r0, [r0, 0x2]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x4
- mov r0, sp
- ldrb r0, [r0, 0x1]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x2
- mov r0, sp
- ldrb r0, [r0]
- adds r1, r0
- strh r1, [r2]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08051ABC: .4byte gUnknown_03004854
-_08051AC0: .4byte 0x06006458
-_08051AC4: .4byte 0x00008172
- thumb_func_end sub_8051A3C
-
- thumb_func_start sub_8051AC8
-sub_8051AC8: @ 8051AC8
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 16
- lsrs r5, r4, 16
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08051AEC
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __umodsi3
- lsrs r1, r4, 17
- subs r0, r1
- strh r0, [r6]
-_08051AEC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8051AC8
-
- thumb_func_start sub_8051AF4
-sub_8051AF4: @ 8051AF4
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bge _08051B06
- adds r0, r2, 0x1
- strh r0, [r1]
-_08051B06:
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08051B14
- subs r0, r2, 0x1
- strh r0, [r1]
-_08051B14:
- pop {r0}
- bx r0
- thumb_func_end sub_8051AF4
-
- thumb_func_start sub_8051B18
-sub_8051B18: @ 8051B18
- push {r4,lr}
- ldr r4, _08051B3C @ =gUnknown_03004854
- ldr r0, [r4]
- movs r1, 0xA2
- lsls r1, 1
- adds r0, r1
- bl sub_8051AF4
- ldr r0, [r4]
- movs r1, 0xA3
- lsls r1, 1
- adds r0, r1
- bl sub_8051AF4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08051B3C: .4byte gUnknown_03004854
- thumb_func_end sub_8051B18
-
- thumb_func_start sub_8051B40
-sub_8051B40: @ 8051B40
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r5, 0x8
- cmp r1, 0x9
- bhi _08051B50
- movs r5, 0x10
-_08051B50:
- ldrh r0, [r4]
- movs r2, 0
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _08051B6E
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __modsi3
- lsrs r1, r5, 1
- subs r0, r1
- b _08051B82
-_08051B6E:
- cmp r1, 0
- bge _08051B76
- adds r0, 0x1
- strh r0, [r4]
-_08051B76:
- ldrh r1, [r4]
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08051B84
- subs r0, r1, 0x1
-_08051B82:
- strh r0, [r4]
-_08051B84:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8051B40
-
- thumb_func_start sub_8051B8C
-sub_8051B8C: @ 8051B8C
- push {r4,r5,lr}
- ldr r5, _08051BE4 @ =gUnknown_03004854
- ldr r2, [r5]
- movs r4, 0x98
- lsls r4, 1
- adds r0, r2, r4
- ldr r1, [r0]
- cmp r1, 0
- bne _08051BAC
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
-_08051BAC:
- ldr r0, [r5]
- adds r2, r0, r4
- ldr r1, [r2]
- adds r1, 0x1
- str r1, [r2]
- movs r2, 0xA2
- lsls r2, 1
- adds r0, r2
- lsls r1, 16
- lsrs r1, 16
- bl sub_8051B40
- ldr r1, [r5]
- movs r3, 0xA3
- lsls r3, 1
- adds r0, r1, r3
- adds r1, r4
- ldrh r1, [r1]
- bl sub_8051B40
- ldr r2, [r5]
- adds r0, r2, r4
- ldr r0, [r0]
- cmp r0, 0x14
- beq _08051BE8
- movs r0, 0
- b _08051BFC
- .align 2, 0
-_08051BE4: .4byte gUnknown_03004854
-_08051BE8:
- movs r1, 0xA2
- lsls r1, 1
- adds r0, r2, r1
- movs r1, 0
- strh r1, [r0]
- movs r3, 0xA3
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- movs r0, 0x1
-_08051BFC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8051B8C
-
- thumb_func_start sub_8051C04
-sub_8051C04: @ 8051C04
- ldr r1, _08051C20 @ =gUnknown_03004854
- ldr r2, [r1]
- movs r3, 0xA2
- lsls r3, 1
- adds r1, r2, r3
- ldrh r1, [r1]
- negs r1, r1
- strh r1, [r0, 0x24]
- adds r3, 0x2
- adds r1, r2, r3
- ldrh r1, [r1]
- negs r1, r1
- strh r1, [r0, 0x26]
- bx lr
- .align 2, 0
-_08051C20: .4byte gUnknown_03004854
- thumb_func_end sub_8051C04
-
- thumb_func_start sub_8051C24
-sub_8051C24: @ 8051C24
- push {lr}
- ldr r2, _08051C4C @ =gSaveBlock1
- ldr r0, _08051C50 @ =gUnknown_03004854
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 1
- ldr r3, _08051C54 @ =0x0000096c
- adds r2, r3
- adds r2, r0, r2
- adds r1, 0x5A
- ldrh r1, [r1]
- ldrh r0, [r2]
- cmp r0, r1
- bcs _08051C48
- strh r1, [r2]
-_08051C48:
- pop {r0}
- bx r0
- .align 2, 0
-_08051C4C: .4byte gSaveBlock1
-_08051C50: .4byte gUnknown_03004854
-_08051C54: .4byte 0x0000096c
- thumb_func_end sub_8051C24
-
- thumb_func_start sub_8051C58
-sub_8051C58: @ 8051C58
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x34
- ldr r1, _08051C7C @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x6
- bls _08051C72
- b _08052006
-_08051C72:
- lsls r0, 2
- ldr r1, _08051C80 @ =_08051C84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08051C7C: .4byte gUnknown_03004854
-_08051C80: .4byte _08051C84
- .align 2, 0
-_08051C84:
- .4byte _08051CA0
- .4byte _08051CB6
- .4byte _08051CD0
- .4byte _08051D20
- .4byte _08051F40
- .4byte _08051F54
- .4byte _08051FF4
-_08051CA0:
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- movs r1, 0x11
- str r1, [r0]
- b _08052006
-_08051CB6:
- ldr r1, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- subs r0, 0xA
- str r0, [r2]
- cmp r0, 0
- blt _08051CCA
- b _08052006
-_08051CCA:
- movs r0, 0
- str r0, [r2]
- b _08051FDE
-_08051CD0:
- ldr r1, [r2]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- bgt _08051CE4
- b _08052006
-_08051CE4:
- movs r6, 0
-_08051CE6:
- ldr r4, _08051D18 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0x50
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08051D1C @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x2
- bls _08051CE6
- ldr r1, [r4]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08051FDE
- .align 2, 0
-_08051D18: .4byte gUnknown_03004854
-_08051D1C: .4byte gSprites
-_08051D20:
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0x19
- movs r3, 0x11
- bl MenuDrawTextWindow
- ldr r0, _08051F10 @ =gOtherText_ResultsOfBlending
- movs r1, 0x5
- movs r2, 0x3
- movs r3, 0xA0
- bl sub_8072BD8
- movs r6, 0
- ldr r1, _08051F14 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x88
- add r2, sp, 0xC
- mov r9, r2
- mov r2, sp
- adds r2, 0x16
- str r2, [sp, 0x30]
- ldrb r0, [r0]
- cmp r6, r0
- bcs _08051E04
- mov r8, r1
- ldr r0, _08051F18 @ =gLinkPlayers
- mov r10, r0
-_08051D56:
- mov r1, r8
- ldr r2, [r1]
- movs r1, 0xB2
- lsls r1, 1
- adds r0, r2, r1
- adds r0, r6
- ldrb r5, [r0]
- mov r7, r9
- lsls r1, r5, 4
- adds r1, r2
- movs r2, 0xBF
- lsls r2, 1
- adds r1, r2
- adds r0, r7, 0
- bl StringCopy
- lsls r4, r5, 3
- subs r4, r5
- lsls r4, 2
- mov r1, r10
- adds r0, r4, r1
- ldrb r1, [r0, 0x1A]
- adds r0, r7, 0
- bl ConvertInternationalString
- adds r0, r7, 0
- ldr r1, _08051F1C @ =gOtherText_Berry
- bl de_sub_8073174
- mov r2, r8
- ldr r0, [r2]
- adds r7, r0, 0
- adds r7, 0xAB
- adds r5, r6, 0x1
- adds r0, r7, 0
- adds r1, r5, 0
- bl ConvertIntToDecimalString
- adds r7, r0, 0
- movs r1, 0
- strb r1, [r7]
- movs r0, 0xAD
- strb r0, [r7, 0x1]
- strb r1, [r7, 0x2]
- adds r7, 0x3
- ldr r0, _08051F20 @ =gLinkPlayers + 0x8
- adds r4, r0
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0x58
- movs r3, 0
- bl sub_8072C74
- adds r7, r0, 0
- add r1, sp, 0xC
- movs r2, 0x9D
- movs r3, 0
- bl sub_8072C74
- mov r2, r8
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0xAB
- ldr r3, _08051F24 @ =gUnknown_082165E9
- adds r1, 0x88
- ldrb r2, [r1]
- adds r3, r2, r3
- ldr r1, _08051F28 @ =gUnknown_082165EE
- adds r2, r1
- ldrb r1, [r2]
- adds r2, r6, 0
- muls r2, r1
- ldrb r3, [r3]
- adds r2, r3
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x5
- bl MenuPrint
- lsls r5, 16
- lsrs r6, r5, 16
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- bcc _08051D56
-_08051E04:
- ldr r6, _08051F14 @ =gUnknown_03004854
- ldr r0, [r6]
- adds r0, 0x5A
- ldrh r0, [r0]
- movs r1, 0x64
- bl __umodsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r0, r9
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r7, r0, 0
- adds r7, 0xAB
- ldr r1, _08051F2C @ =gOtherText_MaxSpeed
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- ldr r0, [r6]
- adds r0, 0x5A
- ldrh r0, [r0]
- movs r1, 0x64
- bl __udivsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r7, 0
- movs r2, 0x79
- movs r3, 0x1
- bl sub_8072C14
- adds r7, r0, 0
- movs r0, 0xB8
- strb r0, [r7]
- adds r7, 0x1
- adds r0, r7, 0
- mov r1, r9
- movs r2, 0x88
- movs r3, 0x1
- bl sub_8072C74
- adds r7, r0, 0
- ldr r1, _08051F30 @ =gOtherText_RPM
- bl StringCopy
- ldr r0, [r6]
- adds r0, 0xAB
- movs r1, 0x5
- movs r2, 0xD
- bl MenuPrint
- ldr r0, [r6]
- movs r2, 0x96
- lsls r2, 1
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0x3C
- bl __udivsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x3C
- bl __umodsi3
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0x3C
- bl __udivsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r0, r9
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [sp, 0x30]
- adds r1, r5, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r7, r0, 0
- adds r7, 0xAB
- ldr r1, _08051F34 @ =gOtherText_RequiredTime
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- mov r1, r9
- movs r2, 0x63
- movs r3, 0x1
- bl sub_8072C74
- adds r7, r0, 0
- ldr r1, _08051F38 @ =gOtherText_Min
- bl StringAppend
- adds r7, r0, 0
- ldr r1, [sp, 0x30]
- movs r2, 0x88
- movs r3, 0x1
- bl sub_8072C74
- adds r7, r0, 0
- ldr r1, _08051F3C @ =gOtherText_Sec
- bl StringCopy
- ldr r0, [r6]
- adds r0, 0xAB
- movs r1, 0x5
- movs r2, 0xF
- bl MenuPrint
- ldr r1, [r6]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08051FDE
- .align 2, 0
-_08051F10: .4byte gOtherText_ResultsOfBlending
-_08051F14: .4byte gUnknown_03004854
-_08051F18: .4byte gLinkPlayers
-_08051F1C: .4byte gOtherText_Berry
-_08051F20: .4byte gLinkPlayers + 0x8
-_08051F24: .4byte gUnknown_082165E9
-_08051F28: .4byte gUnknown_082165EE
-_08051F2C: .4byte gOtherText_MaxSpeed
-_08051F30: .4byte gOtherText_RPM
-_08051F34: .4byte gOtherText_RequiredTime
-_08051F38: .4byte gOtherText_Min
-_08051F3C: .4byte gOtherText_Sec
-_08051F40:
- ldr r0, _08051F50 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08052006
- ldr r1, [r2]
- b _08051FDE
- .align 2, 0
-_08051F50: .4byte gMain
-_08051F54:
- bl MenuZeroFillScreen
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- movs r6, 0
- add r5, sp, 0x28
- ldr r0, _08051FE8 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r3, r0, 0
- adds r3, 0x80
- add r2, sp, 0x20
-_08051F72:
- lsls r1, r6, 1
- adds r0, r3, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _08051F82
- adds r1, r2, r1
- subs r0, 0x85
- strh r0, [r1]
-_08051F82:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08051F72
- bl sub_8050760
- ldr r4, _08051FE8 @ =gUnknown_03004854
- ldr r3, [r4]
- movs r1, 0xBE
- lsls r1, 1
- adds r0, r3, r1
- adds r1, r3, 0
- adds r1, 0x88
- ldrb r2, [r1]
- subs r1, 0x2E
- ldrh r1, [r1]
- str r1, [sp]
- adds r1, r5, 0
- add r3, sp, 0x4
- bl sub_8050520
- ldr r1, [r4]
- adds r1, 0xAB
- adds r0, r5, 0
- bl sub_805201C
- ldr r0, _08051FEC @ =sub_8052BD0
- movs r1, 0x6
- bl CreateTask
- ldr r0, [r4]
- adds r0, 0xAB
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- ldr r0, _08051FF0 @ =gScriptItemId
- ldrh r0, [r0]
- movs r1, 0x1
- bl RemoveBagItem
- adds r0, r5, 0
- bl sub_810CA34
- ldr r1, [r4]
-_08051FDE:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08052006
- .align 2, 0
-_08051FE8: .4byte gUnknown_03004854
-_08051FEC: .4byte sub_8052BD0
-_08051FF0: .4byte gScriptItemId
-_08051FF4:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _08052006
- bl sub_8051C24
- movs r0, 0x1
- b _08052008
-_08052006:
- movs r0, 0
-_08052008:
- add sp, 0x34
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8051C58
-
- thumb_func_start sub_805201C
-sub_805201C: @ 805201C
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- adds r6, r1, 0
- movs r0, 0xFF
- strb r0, [r6]
- ldr r1, _080520B0 @ =gPokeblockNames
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r6, 0
- bl StringCopy
- ldr r1, _080520B4 @ =gOtherText_PokeBlockMade
- adds r0, r6, 0
- bl de_sub_8073174
- ldr r1, _080520B8 @ =gUnknown_082162C8
- adds r0, r6, 0
- bl StringAppend
- adds r0, r5, 0
- bl sub_810C9B0
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl sub_810C9E8
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r1, _080520BC @ =gOtherText_BlockLevelIs
- adds r0, r6, 0
- bl StringAppend
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- ldr r1, _080520C0 @ =gOtherText_BlockFeelIs
- adds r0, r6, 0
- bl StringAppend
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- ldr r1, _080520C4 @ =gOtherText_Period
- adds r0, r6, 0
- bl StringAppend
- ldr r1, _080520C8 @ =gUnknown_08216249
- adds r0, r6, 0
- bl StringAppend
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080520B0: .4byte gPokeblockNames
-_080520B4: .4byte gOtherText_PokeBlockMade
-_080520B8: .4byte gUnknown_082162C8
-_080520BC: .4byte gOtherText_BlockLevelIs
-_080520C0: .4byte gOtherText_BlockFeelIs
-_080520C4: .4byte gOtherText_Period
-_080520C8: .4byte gUnknown_08216249
- thumb_func_end sub_805201C
-
- thumb_func_start sub_80520CC
-sub_80520CC: @ 80520CC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r0
- mov r12, r2
- lsls r1, 24
- lsrs r7, r1, 24
- movs r0, 0
- cmp r0, r7
- bge _08052118
-_080520E2:
- movs r5, 0
- adds r1, r0, 0x1
- mov r8, r1
- cmp r5, r7
- bge _08052112
- mov r1, r9
- adds r6, r1, r0
-_080520F0:
- ldrb r4, [r6]
- lsls r1, r4, 2
- add r1, r12
- mov r0, r9
- adds r2, r0, r5
- ldrb r3, [r2]
- lsls r0, r3, 2
- add r0, r12
- ldr r1, [r1]
- ldr r0, [r0]
- cmp r1, r0
- bls _0805210C
- strb r3, [r6]
- strb r4, [r2]
-_0805210C:
- adds r5, 0x1
- cmp r5, r7
- blt _080520F0
-_08052112:
- mov r0, r8
- cmp r0, r7
- blt _080520E2
-_08052118:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80520CC
-
- thumb_func_start sub_8052124
-sub_8052124: @ 8052124
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- movs r5, 0
- ldr r1, _08052144 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x88
- mov r10, r1
- mov r2, sp
- adds r2, 0x4
- str r2, [sp, 0x14]
- b _08052158
- .align 2, 0
-_08052144: .4byte gUnknown_03004854
-_08052148:
- mov r4, sp
- adds r0, r4, r5
- strb r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r1]
- adds r0, 0x88
-_08052158:
- ldrb r0, [r0]
- cmp r5, r0
- bcc _08052148
- movs r5, 0
- mov r1, r10
- ldr r0, [r1]
- adds r1, r0, 0
- adds r1, 0x88
- ldrb r2, [r1]
- cmp r5, r2
- bcs _080521D6
- ldr r4, [sp, 0x14]
- mov r9, r4
- movs r2, 0xA6
- lsls r2, 1
- adds r2, r0
- mov r8, r2
- mov r12, r1
- movs r4, 0xA7
- lsls r4, 1
- adds r7, r0, r4
- movs r1, 0xA8
- lsls r1, 1
- adds r6, r0, r1
-_08052188:
- lsls r4, r5, 2
- add r4, r9
- lsls r3, r5, 1
- adds r3, r5
- lsls r3, 1
- mov r2, r8
- adds r0, r2, r3
- ldrh r2, [r0]
- lsls r0, r2, 5
- subs r0, r2
- lsls r1, r0, 6
- subs r1, r0
- lsls r1, 3
- adds r1, r2
- lsls r1, 6
- str r1, [r4]
- adds r0, r7, r3
- ldrh r2, [r0]
- lsls r0, r2, 5
- subs r0, r2
- lsls r0, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- str r1, [r4]
- movs r0, 0xFA
- lsls r0, 2
- adds r1, r0
- adds r3, r6, r3
- ldrh r0, [r3]
- subs r1, r0
- str r1, [r4]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r12
- ldrb r1, [r1]
- cmp r5, r1
- bcc _08052188
-_080521D6:
- mov r2, r10
- ldr r0, [r2]
- adds r0, 0x88
- ldrb r1, [r0]
- mov r0, sp
- ldr r2, [sp, 0x14]
- bl sub_80520CC
- movs r5, 0
- mov r4, r10
- ldr r0, [r4]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r5, r0
- bcs _08052218
- mov r2, r10
- movs r3, 0xB2
- lsls r3, 1
-_080521FA:
- ldr r1, [r2]
- adds r1, r3
- adds r1, r5
- mov r4, sp
- adds r0, r4, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r2]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080521FA
-_08052218:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8052124
-
- thumb_func_start sub_8052228
-sub_8052228: @ 8052228
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r1, _08052248 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x6
- bls _0805223C
- b _080524AE
-_0805223C:
- lsls r0, 2
- ldr r1, _0805224C @ =_08052250
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08052248: .4byte gUnknown_03004854
-_0805224C: .4byte _08052250
- .align 2, 0
-_08052250:
- .4byte _0805226C
- .4byte _08052282
- .4byte _0805229C
- .4byte _080522B6
- .4byte _08052464
- .4byte _0805247E
- .4byte _080524A4
-_0805226C:
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- movs r1, 0xFF
- str r1, [r0]
- b _080524AE
-_08052282:
- ldr r1, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- subs r0, 0xA
- str r0, [r2]
- cmp r0, 0
- blt _08052296
- b _080524AE
-_08052296:
- movs r0, 0
- str r0, [r2]
- b _08052494
-_0805229C:
- ldr r1, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- adds r0, 0x1
- str r0, [r2]
- cmp r0, 0x14
- bgt _080522B0
- b _080524AE
-_080522B0:
- movs r0, 0
- str r0, [r2]
- b _08052494
-_080522B6:
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0x19
- movs r3, 0x11
- bl MenuDrawTextWindow
- ldr r0, _0805236C @ =gOtherText_Ranking
- movs r1, 0x5
- movs r2, 0x3
- movs r3, 0xA0
- bl sub_8072BD8
- ldr r6, _08052370 @ =gSpriteTemplate_821645C
- adds r0, r6, 0
- movs r1, 0x8C
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r7, _08052374 @ =gUnknown_03004854
- ldr r1, [r7]
- adds r1, 0x50
- strb r0, [r1]
- ldr r1, _08052378 @ =gSprites
- mov r8, r1
- ldr r2, [r7]
- adds r2, 0x50
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- mov r5, r8
- adds r5, 0x1C
- adds r0, r5
- ldr r4, _0805237C @ =SpriteCallbackDummy
- str r4, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x3
- bl StartSpriteAnim
- adds r0, r6, 0
- movs r1, 0xA4
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x51
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x51
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- str r4, [r0]
- adds r0, r6, 0
- movs r1, 0xBC
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x52
- strb r0, [r1]
- ldr r2, [r7]
- adds r2, 0x52
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- str r4, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x1
- bl StartSpriteAnim
- bl sub_8052124
- movs r2, 0
- mov r8, r2
- b _0805243C
- .align 2, 0
-_0805236C: .4byte gOtherText_Ranking
-_08052370: .4byte gSpriteTemplate_821645C
-_08052374: .4byte gUnknown_03004854
-_08052378: .4byte gSprites
-_0805237C: .4byte SpriteCallbackDummy
-_08052380:
- ldr r1, [r7]
- movs r2, 0xB2
- lsls r2, 1
- adds r0, r1, r2
- add r0, r8
- ldrb r5, [r0]
- adds r2, r1, 0
- adds r2, 0xAB
- movs r0, 0xFC
- strb r0, [r2]
- movs r0, 0x13
- strb r0, [r2, 0x1]
- movs r0, 0x4
- strb r0, [r2, 0x2]
- adds r2, 0x3
- mov r6, r8
- adds r6, 0x1
- adds r0, r2, 0
- adds r1, r6, 0
- bl ConvertIntToDecimalString
- adds r2, r0, 0
- movs r1, 0
- strb r1, [r2]
- movs r0, 0xAD
- strb r0, [r2, 0x1]
- strb r1, [r2, 0x2]
- adds r2, 0x3
- lsls r1, r5, 3
- subs r1, r5
- lsls r1, 2
- ldr r0, _08052458 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- ldr r0, [r7]
- lsls r4, r5, 1
- adds r4, r5
- lsls r4, 1
- movs r1, 0xA6
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x6C
- movs r3, 0x1
- bl sub_8072C14
- adds r2, r0, 0
- ldr r0, [r7]
- movs r1, 0xA7
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x84
- movs r3, 0x1
- bl sub_8072C14
- adds r2, r0, 0
- ldr r0, [r7]
- movs r1, 0xA8
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x9C
- movs r3, 0x1
- bl sub_8072C14
- ldr r1, [r7]
- adds r0, r1, 0
- adds r0, 0xAB
- ldr r2, _0805245C @ =gUnknown_082165F3
- adds r1, 0x88
- ldrb r1, [r1]
- adds r1, r2
- ldrb r1, [r1]
- mov r2, r8
- muls r2, r1
- adds r2, 0x8
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x5
- bl MenuPrint
- lsls r6, 16
- lsrs r6, 16
- mov r8, r6
-_0805243C:
- ldr r0, [r7]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r8, r0
- bcc _08052380
- ldr r0, _08052460 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08052494
- .align 2, 0
-_08052458: .4byte gLinkPlayers + 0x8
-_0805245C: .4byte gUnknown_082165F3
-_08052460: .4byte gUnknown_03004854
-_08052464:
- ldr r2, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r2, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- ble _080524AE
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _080524AE
-_0805247E:
- ldr r0, _0805249C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080524AE
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080524A0 @ =gUnknown_03004854
- ldr r1, [r0]
-_08052494:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080524AE
- .align 2, 0
-_0805249C: .4byte gMain
-_080524A0: .4byte gUnknown_03004854
-_080524A4:
- ldr r1, [r2]
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _080524B0
-_080524AE:
- movs r0, 0
-_080524B0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8052228
-
- thumb_func_start unref_sub_80524BC
-unref_sub_80524BC: @ 80524BC
- push {r4,lr}
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, _0805251C @ =sub_804E2D8
- bl SetVBlankCallback
- ldr r4, _08052520 @ =gWindowConfig_81E6CE4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r0, _08052524 @ =gMain
- ldrh r0, [r0, 0x20]
- bl SeedRng
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xAA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r1, _08052528 @ =gUnknown_03000560
- movs r0, 0xFA
- lsls r0, 5
- strh r0, [r1, 0x1A]
- ldrb r0, [r1, 0x10]
- adds r0, 0x1
- strb r0, [r1, 0x10]
- ldr r0, _0805252C @ =sub_8052AF8
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805251C: .4byte sub_804E2D8
-_08052520: .4byte gWindowConfig_81E6CE4
-_08052524: .4byte gMain
-_08052528: .4byte gUnknown_03000560
-_0805252C: .4byte sub_8052AF8
- thumb_func_end unref_sub_80524BC
-
- thumb_func_start sub_8052530
-sub_8052530: @ 8052530
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x98
- ldr r1, _080525C8 @ =gOtherText_BPMAndDash
- mov r0, sp
- bl StringCopy
- mov r0, sp
- movs r1, 0x2
- movs r2, 0
- bl MenuPrint
- ldr r4, _080525CC @ =gUnknown_03000560
- movs r1, 0x1A
- ldrsh r0, [r4, r1]
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r0, sp
- movs r1, 0x6
- movs r2, 0
- bl MenuPrint
- movs r6, 0
- mov r2, sp
- adds r2, 0x3
- str r2, [sp, 0x84]
- mov r3, sp
- adds r3, 0x6
- str r3, [sp, 0x88]
- mov r0, sp
- adds r0, 0x9
- str r0, [sp, 0x8C]
- mov r1, sp
- adds r1, 0xC
- str r1, [sp, 0x90]
- adds r2, 0xC
- str r2, [sp, 0x94]
- mov r8, r4
- mov r7, sp
- ldr r3, _080525D0 @ =gBerries
- mov r9, r3
- ldr r0, _080525D4 @ =gUnknown_082165F8
- mov r10, r0
-_0805259E:
- mov r1, r8
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, r6
- bne _080525D8
- movs r0, 0xEF
- strb r0, [r7]
- mov r0, r8
- adds r0, 0x1
- adds r0, r6, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, 0x85
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- adds r1, 0x1
- bl CopyItemName
- b _080525F8
- .align 2, 0
-_080525C8: .4byte gOtherText_BPMAndDash
-_080525CC: .4byte gUnknown_03000560
-_080525D0: .4byte gBerries
-_080525D4: .4byte gUnknown_082165F8
-_080525D8:
- mov r0, r8
- adds r0, 0x1
- adds r0, r6, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, 0x85
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- bl CopyItemName
- movs r0, 0
- strb r0, [r7, 0x6]
- movs r0, 0xFF
- strb r0, [r7, 0x7]
-_080525F8:
- lsls r5, r6, 1
- adds r5, r6
- adds r5, 0x3
- lsls r5, 24
- lsrs r5, 24
- mov r0, sp
- movs r1, 0x2
- adds r2, r5, 0
- bl MenuPrint
- mov r4, r8
- adds r4, 0x1
- adds r4, r6, r4
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x15]
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x16]
- ldr r0, [sp, 0x84]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x17]
- ldr r0, [sp, 0x88]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x18]
- ldr r0, [sp, 0x8C]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x19]
- ldr r0, [sp, 0x90]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x1A]
- ldr r0, [sp, 0x94]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- movs r2, 0x1
- negs r2, r2
- add r3, sp, 0x80
- strb r2, [r3]
- movs r0, 0xFF
- strb r0, [r7, 0x11]
- mov r0, sp
- movs r1, 0x7
- adds r2, r5, 0
- bl MenuPrint
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bhi _080526EC
- b _0805259E
-_080526EC:
- mov r1, r8
- ldrb r0, [r1, 0x8]
- cmp r0, 0
- beq _080527A4
- ldr r1, _080527B4 @ =gPokeblockNames
- mov r2, r8
- ldrb r0, [r2, 0x8]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- mov r0, sp
- bl StringCopy
- mov r0, sp
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- mov r3, r8
- ldrb r1, [r3, 0x11]
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- ldr r4, _080527B8 @ =gUnknown_082165F8
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r0, r8
- ldrb r1, [r0, 0x12]
- ldr r0, [sp, 0x84]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r2, r8
- ldrb r1, [r2, 0x13]
- ldr r0, [sp, 0x88]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r3, r8
- ldrb r1, [r3, 0x14]
- ldr r0, [sp, 0x8C]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r0, r8
- ldrb r1, [r0, 0x15]
- ldr r0, [sp, 0x90]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r2, r8
- ldrb r1, [r2, 0x16]
- ldr r0, [sp, 0x94]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r1, sp
- ldrb r0, [r1, 0x11]
- add r3, sp, 0x80
- ldrb r3, [r3]
- orrs r0, r3
- strb r0, [r1, 0x11]
- mov r0, sp
- movs r1, 0x7
- movs r2, 0x11
- bl MenuPrint
-_080527A4:
- add sp, 0x98
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080527B4: .4byte gPokeblockNames
-_080527B8: .4byte gUnknown_082165F8
- thumb_func_end sub_8052530
-
- thumb_func_start sub_80527BC
-sub_80527BC: @ 80527BC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x58
- ldr r0, _08052844 @ =gUnknown_020297DC
- ldrb r0, [r0]
- add r6, sp, 0x48
- cmp r0, 0x1
- bne _08052814
- movs r1, 0
- ldr r3, _08052848 @ =gUnknown_03004840
- movs r2, 0
-_080527D6:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9
- bls _080527D6
- bl Random
- ldr r1, _0805284C @ =gUnknown_03004830
- strh r0, [r1]
- ldr r1, _08052850 @ =gUnknown_020297E0
- movs r0, 0
- str r0, [r1]
- ldr r1, _08052844 @ =gUnknown_020297DC
- movs r0, 0x2
- strb r0, [r1]
- movs r4, 0
- ldr r2, _08052854 @ =0x02000000
- movs r1, 0
-_08052800:
- adds r0, r4, r2
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xC7
- bls _08052800
- ldr r1, _08052858 @ =gUnknown_020297E8
- movs r0, 0
- strb r0, [r1]
-_08052814:
- movs r4, 0
- movs r0, 0x1
- mov r8, r0
- ldr r7, _08052858 @ =gUnknown_020297E8
- ldr r5, _08052850 @ =gUnknown_020297E0
- ldr r1, _08052854 @ =0x02000000
- mov r9, r1
- ldr r3, _0805285C @ =gUnknown_020297E4
-_08052824:
- str r3, [sp, 0x54]
- bl Random
- lsls r0, 16
- lsrs r0, 31
- mov r1, r8
- ands r0, r1
- ldr r3, [sp, 0x54]
- ldrb r1, [r7]
- cmp r0, r1
- bne _08052860
- ldr r0, [r5]
- adds r0, 0x1
- str r0, [r5]
- b _0805287A
- .align 2, 0
-_08052844: .4byte gUnknown_020297DC
-_08052848: .4byte gUnknown_03004840
-_0805284C: .4byte gUnknown_03004830
-_08052850: .4byte gUnknown_020297E0
-_08052854: .4byte 0x02000000
-_08052858: .4byte gUnknown_020297E8
-_0805285C: .4byte gUnknown_020297E4
-_08052860:
- ldr r2, [r3]
- lsls r0, r2, 1
- add r0, r9
- ldr r1, [r5]
- strh r1, [r0]
- adds r2, 0x1
- str r2, [r3]
- movs r0, 0
- str r0, [r5]
- ldrb r0, [r7]
- mov r1, r8
- eors r0, r1
- strb r0, [r7]
-_0805287A:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x63
- bls _08052824
- mov r1, sp
- movs r0, 0xFF
- strb r0, [r1]
- ldr r0, _08052900 @ =gUnknown_03004830
- ldrh r1, [r0]
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x8
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r6, 0
- bl StringAppend
- ldr r1, _08052904 @ =gUnknown_082165F8
- mov r0, sp
- bl StringAppend
- ldr r0, _08052908 @ =gUnknown_020297E0
- ldr r1, [r0]
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x8
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r6, 0
- bl StringAppend
- ldr r1, _0805290C @ =gUnknown_08216600
- mov r0, sp
- bl StringAppend
- ldr r4, _08052910 @ =gUnknown_020297DC
- ldrb r0, [r4]
- cmp r0, 0x3
- bne _080528E8
- ldr r0, _08052914 @ =gUnknown_020297E4
- ldr r1, [r0]
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x10
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r6, 0
- bl StringAppend
- movs r0, 0
- strb r0, [r4]
-_080528E8:
- mov r0, sp
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- add sp, 0x58
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08052900: .4byte gUnknown_03004830
-_08052904: .4byte gUnknown_082165F8
-_08052908: .4byte gUnknown_020297E0
-_0805290C: .4byte gUnknown_08216600
-_08052910: .4byte gUnknown_020297DC
-_08052914: .4byte gUnknown_020297E4
- thumb_func_end sub_80527BC
-
- thumb_func_start sub_8052918
-sub_8052918: @ 8052918
- push {r4-r6,lr}
- sub sp, 0x4C
- ldr r2, _08052A88 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- ldr r4, _08052A8C @ =gUnknown_03000560
- cmp r0, 0
- beq _0805294C
- movs r1, 0xFA
- lsls r1, 2
- adds r0, r1, 0
- ldrh r1, [r4, 0x1A]
- adds r0, r1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- ldr r1, _08052A90 @ =0x75300000
- cmp r0, r1
- ble _08052946
- movs r0, 0xFA
- lsls r0, 2
- strh r0, [r4, 0x1A]
-_08052946:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_0805294C:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _08052972
- ldr r1, _08052A94 @ =0xfffffc18
- adds r0, r1, 0
- ldrh r1, [r4, 0x1A]
- adds r0, r1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- cmp r0, 0
- bge _0805296C
- ldr r0, _08052A98 @ =0x00007530
- strh r0, [r4, 0x1A]
-_0805296C:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_08052972:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08052992
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- lsls r0, 24
- cmp r0, 0
- bge _0805298C
- movs r0, 0x3
- strb r0, [r4]
-_0805298C:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_08052992:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080529B4
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x3
- ble _080529AE
- movs r0, 0
- strb r0, [r4]
-_080529AE:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_080529B4:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080529E4
- adds r3, r4, 0
- movs r1, 0
- ldrsb r1, [r3, r1]
- adds r5, r3, 0x1
- adds r1, r5
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bge _080529DE
- movs r0, 0
- ldrsb r0, [r3, r0]
- adds r0, r5
- movs r1, 0x2A
- strb r1, [r0]
-_080529DE:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_080529E4:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08052A16
- ldr r3, _08052A8C @ =gUnknown_03000560
- movs r1, 0
- ldrsb r1, [r3, r1]
- adds r4, r3, 0x1
- adds r1, r4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x2A
- ble _08052A10
- movs r0, 0
- ldrsb r0, [r3, r0]
- adds r0, r4
- movs r1, 0
- strb r1, [r0]
-_08052A10:
- ldrb r0, [r3, 0x10]
- adds r0, 0x1
- strb r0, [r3, 0x10]
-_08052A16:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08052AA0
- movs r6, 0
- movs r4, 0
- ldr r5, _08052A8C @ =gUnknown_03000560
-_08052A26:
- adds r0, r5, 0x1
- adds r2, r4, r0
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0x2A
- beq _08052A64
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r0, r4, 1
- mov r1, sp
- adds r1, r0
- adds r1, 0x4
- movs r0, 0
- ldrsb r0, [r2, r0]
- strh r0, [r1]
- add r0, sp, 0xC
- lsls r1, r4, 4
- adds r0, r1
- movs r1, 0
- ldrsb r1, [r2, r1]
- adds r1, 0x85
- lsls r1, 16
- lsrs r1, 16
- bl sub_804E844
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08052A26
-_08052A64:
- cmp r6, 0x1
- bls _08052A9C
- add r0, sp, 0xC
- adds r1, r5, 0
- adds r1, 0x8
- lsls r2, r6, 24
- lsrs r2, 24
- adds r3, r5, 0
- adds r3, 0x11
- ldrh r4, [r5, 0x1A]
- str r4, [sp]
- bl sub_8050744
- ldrb r0, [r5, 0x10]
- adds r0, 0x1
- strb r0, [r5, 0x10]
- b _08052AA0
- .align 2, 0
-_08052A88: .4byte gMain
-_08052A8C: .4byte gUnknown_03000560
-_08052A90: .4byte 0x75300000
-_08052A94: .4byte 0xfffffc18
-_08052A98: .4byte 0x00007530
-_08052A9C:
- movs r0, 0xFF
- strb r0, [r5, 0x8]
-_08052AA0:
- ldr r4, _08052AE8 @ =gUnknown_03000560
- ldrb r0, [r4, 0x10]
- cmp r0, 0
- beq _08052AB0
- bl sub_8052530
- movs r0, 0
- strb r0, [r4, 0x10]
-_08052AB0:
- ldr r3, _08052AEC @ =gMain
- ldrh r1, [r3, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08052AD4
- ldr r2, _08052AF0 @ =gUnknown_020297DC
- ldrb r0, [r2]
- adds r1, r0, 0
- cmp r1, 0
- bne _08052ADC
- adds r0, 0x1
- strb r0, [r2]
- ldr r0, _08052AF4 @ =gUnknown_020297E0
- str r1, [r0]
- ldrh r0, [r3, 0x20]
- bl SeedRng
-_08052AD4:
- ldr r0, _08052AF0 @ =gUnknown_020297DC
- ldrb r0, [r0]
- cmp r0, 0
- beq _08052AE0
-_08052ADC:
- bl sub_80527BC
-_08052AE0:
- add sp, 0x4C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08052AE8: .4byte gUnknown_03000560
-_08052AEC: .4byte gMain
-_08052AF0: .4byte gUnknown_020297DC
-_08052AF4: .4byte gUnknown_020297E0
- thumb_func_end sub_8052918
-
- thumb_func_start sub_8052AF8
-sub_8052AF8: @ 8052AF8
- push {lr}
- bl sub_8052918
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8052AF8
-
- thumb_func_start ShowBerryBlenderRecordWindow
-ShowBerryBlenderRecordWindow: @ 8052B14
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x20
- movs r0, 0x6
- movs r1, 0x3
- movs r2, 0x17
- movs r3, 0x10
- bl MenuDrawTextWindow
- ldr r0, _08052BAC @ =gMultiText_BerryBlenderMaxSpeedRecord
- movs r1, 0x8
- movs r2, 0x4
- bl MenuPrint
- ldr r0, _08052BB0 @ =gMultiText_2P3P4P
- movs r1, 0x8
- movs r2, 0x9
- bl MenuPrint
- movs r0, 0
- mov r8, r0
- ldr r0, _08052BB4 @ =gSaveBlock1
- movs r7, 0x90
- lsls r7, 20
- ldr r1, _08052BB8 @ =0x0000096c
- adds r6, r0, r1
-_08052B4A:
- ldrh r4, [r6]
- adds r0, r4, 0
- movs r1, 0x64
- bl __udivsi3
- adds r1, r0, 0
- mov r0, sp
- movs r2, 0x12
- movs r3, 0x1
- bl sub_8072C14
- adds r5, r0, 0
- movs r0, 0xB8
- strb r0, [r5]
- adds r5, 0x1
- adds r0, r4, 0
- movs r1, 0x64
- bl __umodsi3
- adds r1, r0, 0
- adds r0, r5, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- ldr r1, _08052BBC @ =gOtherText_RPM
- bl StringAppend
- lsrs r2, r7, 24
- mov r0, sp
- movs r1, 0xF
- bl MenuPrint
- movs r0, 0x80
- lsls r0, 18
- adds r7, r0
- adds r6, 0x2
- movs r1, 0x1
- add r8, r1
- mov r0, r8
- cmp r0, 0x2
- ble _08052B4A
- add sp, 0x20
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08052BAC: .4byte gMultiText_BerryBlenderMaxSpeedRecord
-_08052BB0: .4byte gMultiText_2P3P4P
-_08052BB4: .4byte gSaveBlock1
-_08052BB8: .4byte 0x0000096c
-_08052BBC: .4byte gOtherText_RPM
- thumb_func_end ShowBerryBlenderRecordWindow
-
- thumb_func_start sub_8052BD0
-sub_8052BD0: @ 8052BD0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _08052C1C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08052BF6
- ldr r0, _08052C20 @ =0x0000016f
- bl PlayFanfare
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08052BF6:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08052C16
- ldr r0, _08052C24 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r1, 0xBC
- lsls r1, 1
- adds r0, r1
- ldrh r0, [r0]
- bl PlayBGM
- adds r0, r5, 0
- bl DestroyTask
-_08052C16:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08052C1C: .4byte gTasks
-_08052C20: .4byte 0x0000016f
-_08052C24: .4byte gUnknown_03004854
- thumb_func_end sub_8052BD0
diff --git a/asm-de/contest_link_80C2020.s b/asm-de/contest_link_80C2020.s
index 646851c2d..65bbf0f22 100644
--- a/asm-de/contest_link_80C2020.s
+++ b/asm-de/contest_link_80C2020.s
@@ -1361,7 +1361,7 @@ _080C2B14:
adds r0, r6, 0
ldr r1, [sp, 0xC]
adds r2, r4, 0
- bl sub_80409C8
+ bl GetMonSpritePalStructFromOtIdPersonality
adds r4, r0, 0
bl LoadCompressedObjectPalette
adds r0, r6, 0
@@ -1601,7 +1601,7 @@ _080C2D42:
lsls r0, 16
lsrs r0, 16
movs r1, 0x2
- bl GetNationalPokedexFlag
+ bl GetSetPokedexFlag
adds r5, 0x40
subs r4, 0x1
cmp r4, 0
diff --git a/asm-de/easy_chat.s b/asm-de/easy_chat.s
index 2f6c28fdb..1d93e36b4 100644
--- a/asm-de/easy_chat.s
+++ b/asm-de/easy_chat.s
@@ -9984,7 +9984,7 @@ _080EAE50:
lsls r0, 16
lsrs r0, 16
movs r1, 0
- bl GetNationalPokedexFlag
+ bl GetSetPokedexFlag
b _080EAE7C
_080EAE62:
ldr r0, _080EAE74 @ =gUnknown_083DB694
diff --git a/asm/battle_2.s b/asm/battle_2.s
index ed4140583..f252e5716 100644
--- a/asm/battle_2.s
+++ b/asm/battle_2.s
@@ -189,7 +189,7 @@ _080124A8:
lsls r0, 8
orrs r2, r0
movs r0, 0
- bl dp01_build_cmdbuf_x12_a_bb
+ bl Emitcmd18
bl _08012E32
.align 2, 0
_080124C0: .4byte gActionForBanks
@@ -262,7 +262,7 @@ _08012538:
.4byte _08012968
.4byte _0801292C
_0801256C:
- bl sub_8015C90
+ bl AreAllMovesUnusable
lsls r0, 24
cmp r0, 0
beq _080125D0
@@ -408,7 +408,7 @@ _0801264E:
movs r0, 0
movs r2, 0
add r3, sp, 0x4
- bl sub_800CBA4
+ bl Emitcmd20
b _0801289E
.align 2, 0
_080126AC: .4byte gBattleMons
@@ -573,7 +573,7 @@ _080127E0:
str r0, [sp]
movs r0, 0
movs r2, 0x6
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
+ bl EmitChoosePokemon
b _0801289E
.align 2, 0
_08012808: .4byte gActiveBank
@@ -624,7 +624,7 @@ _08012854:
movs r1, 0
_0801286C:
movs r3, 0
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
+ bl EmitChoosePokemon
b _0801289E
.align 2, 0
_08012874: .4byte gActionForBanks
@@ -643,7 +643,7 @@ _08012884:
movs r1, 0
movs r2, 0x6
movs r3, 0
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
+ bl EmitChoosePokemon
_0801289E:
ldr r0, _080128A8 @ =gActiveBank
ldrb r0, [r0]
@@ -698,7 +698,7 @@ _08012908:
ldr r0, _08012928 @ =0x0201606c
adds r1, r0
movs r0, 0
- bl sub_800CBE0
+ bl EmitOpenBag
ldrb r0, [r4]
bl MarkBufferBankForExecution
b _08012968
@@ -725,7 +725,7 @@ _0801292C:
adds r0, r4
strb r5, [r0]
movs r0, 0
- bl dp01_build_cmdbuf_x32_32_32_32
+ bl Emitcmd50
mov r4, r8
ldrb r0, [r4]
bl MarkBufferBankForExecution
@@ -1514,8 +1514,8 @@ _08012FE8: .4byte gUnknown_02024A76
_08012FEC: .4byte gTurnOrder
thumb_func_end sub_8012FBC
- thumb_func_start b_first_side
-b_first_side: @ 8012FF0
+ thumb_func_start GetWhoStrikesFirst
+GetWhoStrikesFirst: @ 8012FF0
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -2003,7 +2003,7 @@ _080133B6:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end b_first_side
+ thumb_func_end GetWhoStrikesFirst
thumb_func_start sub_80133C8
sub_80133C8: @ 80133C8
@@ -2285,7 +2285,7 @@ _080135D0:
beq _0801360C
adds r0, r3, 0
movs r2, 0
- bl b_first_side
+ bl GetWhoStrikesFirst
lsls r0, 24
cmp r0, 0
beq _0801360C
@@ -2789,7 +2789,7 @@ _08013A04:
beq _08013A0E
b _08013B42
_08013A0E:
- bl sub_80325B8
+ bl BattleMusicStop
ldr r1, _08013A3C @ =gBattlescriptCurrInstr
ldr r0, _08013A40 @ =gUnknown_081D8DBE
str r0, [r1]
@@ -3144,7 +3144,7 @@ _08013D4C:
ldr r1, _08013D6C @ =gBattleMainFunc
ldr r0, _08013D70 @ =sub_8013DA8
str r0, [r1]
- ldr r1, _08013D74 @ =gUnknown_03005E94
+ ldr r1, _08013D74 @ =gCB2_AfterEvolution
ldr r0, _08013D78 @ =sub_800F808
str r0, [r1]
b _08013D96
@@ -3152,7 +3152,7 @@ _08013D4C:
_08013D68: .4byte gNoOfAllBanks
_08013D6C: .4byte gBattleMainFunc
_08013D70: .4byte sub_8013DA8
-_08013D74: .4byte gUnknown_03005E94
+_08013D74: .4byte gCB2_AfterEvolution
_08013D78: .4byte sub_800F808
_08013D7C:
ldr r0, _08013D9C @ =gBattleExecBuffer
@@ -3558,7 +3558,7 @@ _08014044:
str r0, [r2]
movs r0, 0xA5
movs r1, 0
- bl sub_801B5C0
+ bl GetMoveTarget
ldrb r1, [r7]
ldr r2, _080140EC @ =0x00016010
adds r1, r2
@@ -3646,7 +3646,7 @@ _08014138:
strb r0, [r3]
ldrh r0, [r1]
movs r1, 0
- bl sub_801B5C0
+ bl GetMoveTarget
ldrb r1, [r7]
ldr r4, _0801419C @ =0x00016010
adds r1, r4
@@ -3702,7 +3702,7 @@ _080141A0:
strb r0, [r1, 0xE]
ldrh r0, [r3]
movs r1, 0
- bl sub_801B5C0
+ bl GetMoveTarget
ldrb r1, [r7]
ldr r3, _08014214 @ =0x00016010
adds r1, r3
@@ -3740,7 +3740,7 @@ _08014218:
strh r3, [r1]
ldrh r0, [r1]
movs r1, 0
- bl sub_801B5C0
+ bl GetMoveTarget
ldr r2, _08014270 @ =0x02000000
ldrb r1, [r4]
ldr r3, _08014274 @ =0x00016010
@@ -3936,14 +3936,14 @@ _080143B6:
cmp r0, 0x1F
bne _08014404
adds r0, r2, 0
- bl sub_801E3B4
+ bl BankGetTurnOrder
lsls r0, 24
lsrs r0, 24
ldr r1, [sp]
cmp r0, r1
bcs _08014404
ldrb r0, [r4]
- bl sub_801E3B4
+ bl BankGetTurnOrder
lsls r0, 24
lsrs r0, 24
str r0, [sp]
@@ -4261,7 +4261,7 @@ _0801469A:
strb r0, [r5]
_080146AC:
ldr r4, _080146E0 @ =gBattlescriptCurrInstr
- ldr r3, _080146E4 @ =gUnknown_081D6BBC
+ ldr r3, _080146E4 @ =gBattleScriptsEffectsTable
ldr r2, _080146E8 @ =gBattleMoves
ldr r0, _080146EC @ =gCurrentMove
ldrh r1, [r0]
@@ -4288,7 +4288,7 @@ _080146CC:
bx r0
.align 2, 0
_080146E0: .4byte gBattlescriptCurrInstr
-_080146E4: .4byte gUnknown_081D6BBC
+_080146E4: .4byte gBattleScriptsEffectsTable
_080146E8: .4byte gBattleMoves
_080146EC: .4byte gCurrentMove
_080146F0: .4byte gFightStateTracker
@@ -5528,8 +5528,8 @@ _08015148: .4byte 0x00016112
_0801514C: .4byte 0x00017130
thumb_func_end bsC_8016D70
- thumb_func_start sub_8015150
-sub_8015150: @ 8015150
+ thumb_func_start GetBattleBank
+GetBattleBank: @ 8015150
push {lr}
lsls r0, 24
lsrs r0, 24
@@ -5592,10 +5592,10 @@ _080151C8:
bx r1
.align 2, 0
_080151D0: .4byte gBank1
- thumb_func_end sub_8015150
+ thumb_func_end GetBattleBank
- thumb_func_start sub_80151D4
-sub_80151D4: @ 80151D4
+ thumb_func_start PressurePPLose
+PressurePPLose: @ 80151D4
push {r4-r7,lr}
sub sp, 0x4
lsls r0, 24
@@ -5695,7 +5695,7 @@ _08015286:
_08015290: .4byte gDisableStructs
_08015294: .4byte gBitTable
_08015298: .4byte gActiveBank
- thumb_func_end sub_80151D4
+ thumb_func_end PressurePPLose
thumb_func_start sub_801529C
sub_801529C: @ 801529C
diff --git a/asm/battle_3.s b/asm/battle_3.s
deleted file mode 100644
index 8f3097c3d..000000000
--- a/asm/battle_3.s
+++ /dev/null
@@ -1,12017 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start b_movescr_stack_push
-b_movescr_stack_push: @ 801582C
- push {r4,lr}
- ldr r4, _08015848 @ =0x02017110
- adds r3, r4, 0
- adds r3, 0x20
- ldrb r1, [r3]
- adds r2, r1, 0x1
- strb r2, [r3]
- lsls r1, 24
- lsrs r1, 22
- adds r1, r4
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08015848: .4byte 0x02017110
- thumb_func_end b_movescr_stack_push
-
- thumb_func_start b_movescr_stack_push_cursor
-b_movescr_stack_push_cursor: @ 801584C
- ldr r3, _08015868 @ =0x02017110
- adds r2, r3, 0
- adds r2, 0x20
- ldrb r0, [r2]
- adds r1, r0, 0x1
- strb r1, [r2]
- lsls r0, 24
- lsrs r0, 22
- adds r0, r3
- ldr r1, _0801586C @ =gBattlescriptCurrInstr
- ldr r1, [r1]
- str r1, [r0]
- bx lr
- .align 2, 0
-_08015868: .4byte 0x02017110
-_0801586C: .4byte gBattlescriptCurrInstr
- thumb_func_end b_movescr_stack_push_cursor
-
- thumb_func_start b_movescr_stack_pop_cursor
-b_movescr_stack_pop_cursor: @ 8015870
- ldr r3, _0801588C @ =gBattlescriptCurrInstr
- ldr r2, _08015890 @ =0x02017110
- adds r1, r2, 0
- adds r1, 0x20
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- str r0, [r3]
- bx lr
- .align 2, 0
-_0801588C: .4byte gBattlescriptCurrInstr
-_08015890: .4byte 0x02017110
- thumb_func_end b_movescr_stack_pop_cursor
-
- thumb_func_start sub_8015894
-sub_8015894: @ 8015894
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- ldr r2, _080159AC @ =gBattleMons
- ldr r1, _080159B0 @ =gBattleBufferB
- ldr r5, _080159B4 @ =gActiveBank
- ldrb r3, [r5]
- lsls r0, r3, 9
- adds r1, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- movs r1, 0x58
- muls r1, r3
- adds r0, r1
- adds r2, 0xC
- adds r0, r2
- ldrh r4, [r0]
- lsls r0, r3, 1
- ldr r2, _080159B8 @ =0x020160e8
- adds r0, r2
- mov r8, r0
- ldr r1, _080159BC @ =gDisableStructs
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x4]
- cmp r0, r4
- bne _080158EE
- cmp r4, 0
- beq _080158EE
- adds r0, r2, 0
- subs r0, 0xE5
- strb r3, [r0]
- ldr r0, _080159C0 @ =gCurrentMove
- strh r4, [r0]
- ldr r1, _080159C4 @ =gUnknown_02024C1C
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _080159C8 @ =gUnknown_081D9144
- str r1, [r0]
- movs r6, 0x1
-_080158EE:
- ldr r1, _080159CC @ =gLastUsedMove
- ldr r5, _080159B4 @ =gActiveBank
- ldrb r2, [r5]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- bne _0801592A
- cmp r4, 0xA5
- beq _0801592A
- ldr r1, _080159AC @ =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- bge _0801592A
- adds r0, r2, 0
- bl CancelMultiTurnMoves
- ldr r1, _080159C4 @ =gUnknown_02024C1C
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _080159D0 @ =gUnknown_081D937C
- str r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0801592A:
- ldr r2, _080159BC @ =gDisableStructs
- ldr r3, _080159B4 @ =gActiveBank
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x13]
- lsls r0, 28
- cmp r0, 0
- beq _08015966
- ldr r0, _080159D4 @ =gBattleMoves
- lsls r1, r4, 1
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _08015966
- ldr r0, _080159C0 @ =gCurrentMove
- strh r4, [r0]
- ldr r1, _080159C4 @ =gUnknown_02024C1C
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r1
- ldr r1, _080159D8 @ =gUnknown_081D938B
- str r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_08015966:
- ldr r5, _080159B4 @ =gActiveBank
- ldrb r0, [r5]
- adds r1, r4, 0
- bl sub_8015D5C
- lsls r0, 24
- cmp r0, 0
- beq _0801598C
- ldr r0, _080159C0 @ =gCurrentMove
- strh r4, [r0]
- ldr r1, _080159C4 @ =gUnknown_02024C1C
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _080159DC @ =gUnknown_081D9464
- str r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0801598C:
- ldr r1, _080159AC @ =gBattleMons
- ldrb r2, [r5]
- movs r0, 0x58
- muls r0, r2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _080159E4
- ldr r1, _080159E0 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r3, [r0, 0x7]
- b _080159EE
- .align 2, 0
-_080159AC: .4byte gBattleMons
-_080159B0: .4byte gBattleBufferB
-_080159B4: .4byte gActiveBank
-_080159B8: .4byte 0x020160e8
-_080159BC: .4byte gDisableStructs
-_080159C0: .4byte gCurrentMove
-_080159C4: .4byte gUnknown_02024C1C
-_080159C8: .4byte gUnknown_081D9144
-_080159CC: .4byte gLastUsedMove
-_080159D0: .4byte gUnknown_081D937C
-_080159D4: .4byte gBattleMoves
-_080159D8: .4byte gUnknown_081D938B
-_080159DC: .4byte gUnknown_081D9464
-_080159E0: .4byte gEnigmaBerries
-_080159E4:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r3, r0, 24
-_080159EE:
- ldr r2, _08015A70 @ =gStringBank
- ldr r1, _08015A74 @ =gActiveBank
- ldrb r0, [r1]
- strb r0, [r2]
- ldr r7, _08015A78 @ =gBattleMons
- adds r5, r1, 0
- cmp r3, 0x1D
- bne _08015A36
- mov r0, r8
- ldrh r2, [r0]
- adds r1, r2, 0
- cmp r1, 0
- beq _08015A36
- ldr r0, _08015A7C @ =0x0000ffff
- cmp r1, r0
- beq _08015A36
- cmp r1, r4
- beq _08015A36
- ldr r0, _08015A80 @ =gCurrentMove
- strh r2, [r0]
- ldr r2, _08015A84 @ =gLastUsedItem
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- ldrh r0, [r0, 0x2E]
- strh r0, [r2]
- ldr r1, _08015A88 @ =gUnknown_02024C1C
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08015A8C @ =gUnknown_081D9AC2
- str r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_08015A36:
- ldr r0, _08015A90 @ =gBattleBufferB
- ldrb r2, [r5]
- lsls r1, r2, 9
- adds r0, 0x2
- adds r1, r0
- movs r0, 0x58
- muls r0, r2
- ldrb r1, [r1]
- adds r0, r1
- adds r1, r7, 0
- adds r1, 0x24
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08015A64
- ldr r1, _08015A88 @ =gUnknown_02024C1C
- lsls r0, r2, 2
- adds r0, r1
- ldr r1, _08015A94 @ =gUnknown_081D9369
- str r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_08015A64:
- adds r0, r6, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08015A70: .4byte gStringBank
-_08015A74: .4byte gActiveBank
-_08015A78: .4byte gBattleMons
-_08015A7C: .4byte 0x0000ffff
-_08015A80: .4byte gCurrentMove
-_08015A84: .4byte gLastUsedItem
-_08015A88: .4byte gUnknown_02024C1C
-_08015A8C: .4byte gUnknown_081D9AC2
-_08015A90: .4byte gBattleBufferB
-_08015A94: .4byte gUnknown_081D9369
- thumb_func_end sub_8015894
-
- thumb_func_start sub_8015A98
-sub_8015A98: @ 8015A98
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r2, 24
- lsrs r3, r2, 24
- lsls r1, r7, 1
- ldr r0, _08015AD8 @ =0x020160e8
- adds r1, r0
- str r1, [sp, 0x4]
- ldr r1, _08015ADC @ =gBattleMons
- movs r0, 0x58
- muls r0, r7
- adds r1, r0, r1
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _08015AE4
- ldr r2, _08015AE0 @ =gEnigmaBerries
- lsls r1, r7, 3
- subs r0, r1, r7
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x7]
- str r0, [sp]
- b _08015AF6
- .align 2, 0
-_08015AD8: .4byte 0x020160e8
-_08015ADC: .4byte gBattleMons
-_08015AE0: .4byte gEnigmaBerries
-_08015AE4:
- ldrh r0, [r1, 0x2E]
- str r3, [sp, 0x14]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r1, r7, 3
- ldr r3, [sp, 0x14]
-_08015AF6:
- ldr r0, _08015C70 @ =gStringBank
- strb r7, [r0]
- movs r0, 0
- mov r9, r0
- lsls r2, r7, 1
- str r2, [sp, 0xC]
- ldr r5, _08015C74 @ =gDisableStructs
- mov r12, r5
- ldr r0, _08015C78 @ =gBattleMons
- movs r2, 0x58
- adds r6, r7, 0
- muls r6, r2
- str r6, [sp, 0x8]
- ldr r2, _08015C7C @ =gUnknown_02024A8C
- adds r5, r6, r2
- movs r6, 0
- str r6, [sp, 0x10]
- mov r10, r0
- subs r0, r1, r7
- lsls r0, 2
- mov r8, r0
- ldr r6, _08015C80 @ =gBitTable
-_08015B22:
- ldrh r0, [r5]
- cmp r0, 0
- bne _08015B38
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _08015B38
- ldr r0, [r6]
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_08015B38:
- ldr r0, [sp, 0x8]
- add r0, r9
- mov r1, r10
- adds r1, 0x24
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08015B58
- movs r0, 0x2
- ands r0, r3
- cmp r0, 0
- beq _08015B58
- ldr r0, [r6]
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_08015B58:
- mov r1, r8
- add r1, r12
- ldrh r0, [r5]
- ldrh r1, [r1, 0x4]
- cmp r0, r1
- bne _08015B74
- movs r0, 0x4
- ands r0, r3
- cmp r0, 0
- beq _08015B74
- ldr r0, [r6]
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_08015B74:
- movs r0, 0x58
- adds r2, r7, 0
- muls r2, r0
- ldr r1, [sp, 0x10]
- adds r0, r1, r2
- ldr r1, _08015C7C @ =gUnknown_02024A8C
- adds r0, r1
- mov r12, r0
- ldr r1, _08015C84 @ =gLastUsedMove
- ldr r0, [sp, 0xC]
- adds r1, r0, r1
- str r1, [sp, 0x18]
- mov r1, r12
- ldrh r1, [r1]
- mov r12, r1
- ldr r0, [sp, 0x18]
- ldrh r0, [r0]
- cmp r12, r0
- bne _08015BB6
- movs r0, 0x8
- ands r0, r3
- cmp r0, 0
- beq _08015BB6
- mov r0, r10
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- bge _08015BB6
- ldr r0, [r6]
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_08015BB6:
- ldr r0, _08015C74 @ =gDisableStructs
- add r0, r8
- ldrb r0, [r0, 0x13]
- lsls r0, 28
- cmp r0, 0
- beq _08015BE4
- movs r0, 0x10
- ands r0, r3
- cmp r0, 0
- beq _08015BE4
- ldr r2, _08015C88 @ =gBattleMoves
- ldrh r1, [r5]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08015BE4
- ldr r0, [r6]
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_08015BE4:
- ldrh r1, [r5]
- adds r0, r7, 0
- str r3, [sp, 0x14]
- bl sub_8015D5C
- lsls r0, 24
- ldr r3, [sp, 0x14]
- cmp r0, 0
- beq _08015C06
- movs r0, 0x20
- ands r0, r3
- cmp r0, 0
- beq _08015C06
- ldr r0, [r6]
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_08015C06:
- ldr r1, _08015C74 @ =gDisableStructs
- mov r0, r8
- adds r2, r0, r1
- ldrb r0, [r2, 0xE]
- lsls r0, 28
- mov r12, r1
- cmp r0, 0
- beq _08015C26
- ldrh r0, [r2, 0x6]
- ldrh r1, [r5]
- cmp r0, r1
- beq _08015C26
- ldr r0, [r6]
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_08015C26:
- ldr r2, [sp]
- cmp r2, 0x1D
- bne _08015C48
- ldr r0, [sp, 0x4]
- ldrh r1, [r0]
- cmp r1, 0
- beq _08015C48
- ldr r0, _08015C8C @ =0x0000ffff
- cmp r1, r0
- beq _08015C48
- ldrh r2, [r5]
- cmp r1, r2
- beq _08015C48
- ldr r0, [r6]
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_08015C48:
- adds r6, 0x4
- adds r5, 0x2
- ldr r0, [sp, 0x10]
- adds r0, 0x2
- str r0, [sp, 0x10]
- movs r1, 0x1
- add r9, r1
- mov r2, r9
- cmp r2, 0x3
- bgt _08015C5E
- b _08015B22
-_08015C5E:
- adds r0, r4, 0
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08015C70: .4byte gStringBank
-_08015C74: .4byte gDisableStructs
-_08015C78: .4byte gBattleMons
-_08015C7C: .4byte gUnknown_02024A8C
-_08015C80: .4byte gBitTable
-_08015C84: .4byte gLastUsedMove
-_08015C88: .4byte gBattleMoves
-_08015C8C: .4byte 0x0000ffff
- thumb_func_end sub_8015A98
-
- thumb_func_start sub_8015C90
-sub_8015C90: @ 8015C90
- push {r4-r6,lr}
- ldr r5, _08015CFC @ =gActiveBank
- ldrb r0, [r5]
- movs r1, 0
- movs r2, 0xFF
- bl sub_8015A98
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xF
- bne _08015D38
- ldr r0, _08015D00 @ =gProtectStructs
- ldrb r1, [r5]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- ldr r1, _08015D04 @ =gUnknown_02024C1C
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08015D08 @ =gUnknown_081D9365
- str r1, [r0]
- ldr r0, _08015D0C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08015D14
- ldrb r0, [r5]
- bl GetBankIdentity
- adds r4, r0, 0
- bl Random
- movs r1, 0x1
- eors r4, r1
- movs r1, 0x2
- ands r1, r0
- orrs r4, r1
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl GetBankByPlayerAI
- ldr r2, _08015D10 @ =gBattleBufferB
- ldrb r1, [r5]
- lsls r1, 9
- adds r2, 0x3
- adds r1, r2
- b _08015D48
- .align 2, 0
-_08015CFC: .4byte gActiveBank
-_08015D00: .4byte gProtectStructs
-_08015D04: .4byte gUnknown_02024C1C
-_08015D08: .4byte gUnknown_081D9365
-_08015D0C: .4byte gBattleTypeFlags
-_08015D10: .4byte gBattleBufferB
-_08015D14:
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r2, _08015D34 @ =gBattleBufferB
- ldrb r1, [r5]
- lsls r1, 9
- adds r2, 0x3
- adds r1, r2
- b _08015D48
- .align 2, 0
-_08015D34: .4byte gBattleBufferB
-_08015D38:
- ldr r0, _08015D58 @ =gProtectStructs
- ldrb r1, [r5]
- lsls r1, 4
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
-_08015D48:
- strb r0, [r1]
- movs r0, 0
- cmp r6, 0xF
- bne _08015D52
- movs r0, 0x1
-_08015D52:
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08015D58: .4byte gProtectStructs
- thumb_func_end sub_8015C90
-
- thumb_func_start sub_8015D5C
-sub_8015D5C: @ 8015D5C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r5, r1, 16
- movs r6, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r4, 0
- ldr r0, _08015DF0 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- bge _08015DE0
- ldr r7, _08015DF4 @ =gUnknown_02024A8C
- mov r8, r7
-_08015D86:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- adds r3, r4, 0x1
- cmp r9, r0
- beq _08015DD6
- ldr r1, _08015DF8 @ =gStatuses3
- lsls r0, r4, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _08015DD6
- movs r2, 0
- movs r0, 0x58
- adds r1, r4, 0
- muls r1, r0
- adds r0, r1, r7
- ldrh r0, [r0]
- cmp r5, r0
- beq _08015DCC
- mov r4, r8
- adds r0, r1, r4
-_08015DBE:
- adds r0, 0x2
- adds r2, 0x1
- cmp r2, 0x3
- bgt _08015DD6
- ldrh r1, [r0]
- cmp r5, r1
- bne _08015DBE
-_08015DCC:
- cmp r2, 0x3
- bgt _08015DD6
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_08015DD6:
- adds r4, r3, 0
- ldr r0, _08015DF0 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08015D86
-_08015DE0:
- adds r0, r6, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08015DF0: .4byte gNoOfAllBanks
-_08015DF4: .4byte gUnknown_02024A8C
-_08015DF8: .4byte gStatuses3
- thumb_func_end sub_8015D5C
-
- thumb_func_start UpdateTurnCounters
-UpdateTurnCounters: @ 8015DFC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r0, 0
- mov r9, r0
- ldr r1, _08015EA0 @ =gBankAttacker
- mov r2, r9
- strb r2, [r1]
- ldr r0, _08015EA4 @ =gNoOfAllBanks
- ldrb r4, [r0]
- adds r6, r1, 0
- mov r10, r0
- ldr r7, _08015EA8 @ =gBankTarget
- ldr r3, _08015EAC @ =0x02000000
- mov r12, r3
- cmp r9, r4
- bcs _08015E50
- ldr r2, _08015EB0 @ =gAbsentBankFlags
- ldrb r1, [r2]
- ldr r5, _08015EB4 @ =gBitTable
- ldr r0, [r5]
- ands r1, r0
- cmp r1, 0
- beq _08015E50
- adds r3, r6, 0
-_08015E32:
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r4
- bcs _08015E50
- ldrb r0, [r2]
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r5
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- bne _08015E32
-_08015E50:
- movs r0, 0
- strb r0, [r7]
- mov r0, r10
- ldrb r4, [r0]
- cmp r4, 0
- beq _08015E8A
- ldr r2, _08015EB0 @ =gAbsentBankFlags
- ldrb r1, [r2]
- ldr r5, _08015EB4 @ =gBitTable
- ldr r0, [r5]
- ands r1, r0
- cmp r1, 0
- beq _08015E8A
- adds r3, r7, 0
-_08015E6C:
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r4
- bcs _08015E8A
- ldrb r0, [r2]
- ldrb r1, [r7]
- lsls r1, 2
- adds r1, r5
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- bne _08015E6C
-_08015E8A:
- ldr r0, _08015EB8 @ =0x0001600e
- add r0, r12
- ldrb r0, [r0]
- cmp r0, 0xA
- bls _08015E96
- b _0801652A
-_08015E96:
- lsls r0, 2
- ldr r1, _08015EBC @ =_08015EC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08015EA0: .4byte gBankAttacker
-_08015EA4: .4byte gNoOfAllBanks
-_08015EA8: .4byte gBankTarget
-_08015EAC: .4byte 0x02000000
-_08015EB0: .4byte gAbsentBankFlags
-_08015EB4: .4byte gBitTable
-_08015EB8: .4byte 0x0001600e
-_08015EBC: .4byte _08015EC0
- .align 2, 0
-_08015EC0:
- .4byte _08015EEC
- .4byte _08015F74
- .4byte _08016034
- .4byte _080160F4
- .4byte _080161C8
- .4byte _08016274
- .4byte _08016324
- .4byte _080163A8
- .4byte _08016420
- .4byte _08016494
- .4byte _08016520
-_08015EEC:
- movs r5, 0
- ldr r1, _08015F0C @ =gNoOfAllBanks
- mov r10, r1
- ldrb r2, [r1]
- cmp r5, r2
- bge _08015F06
- ldr r2, _08015F10 @ =gTurnOrder
-_08015EFA:
- adds r0, r5, r2
- strb r5, [r0]
- adds r5, 0x1
- ldrb r3, [r1]
- cmp r5, r3
- blt _08015EFA
-_08015F06:
- movs r5, 0
- b _08015F54
- .align 2, 0
-_08015F0C: .4byte gNoOfAllBanks
-_08015F10: .4byte gTurnOrder
-_08015F14:
- adds r4, r5, 0x1
- adds r6, r4, 0
- ldrb r1, [r1]
- cmp r6, r1
- bge _08015F52
- ldr r7, _08016004 @ =gTurnOrder
- ldr r0, _08016008 @ =gNoOfAllBanks
- mov r10, r0
- lsls r1, r5, 24
- mov r8, r1
-_08015F28:
- adds r0, r5, r7
- ldrb r0, [r0]
- adds r1, r4, r7
- ldrb r1, [r1]
- movs r2, 0
- bl b_first_side
- lsls r0, 24
- cmp r0, 0
- beq _08015F48
- lsls r1, r4, 24
- lsrs r1, 24
- mov r2, r8
- lsrs r0, r2, 24
- bl sub_8012FBC
-_08015F48:
- adds r4, 0x1
- ldr r0, _08016008 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08015F28
-_08015F52:
- adds r5, r6, 0
-_08015F54:
- mov r1, r10
- ldrb r0, [r1]
- subs r0, 0x1
- cmp r5, r0
- blt _08015F14
- ldr r1, _0801600C @ =0x02000000
- ldr r3, _08016010 @ =0x0001600e
- adds r2, r1, r3
- ldrb r0, [r2]
- adds r0, 0x1
- movs r3, 0
- strb r0, [r2]
- ldr r2, _08016014 @ =0x000160fc
- adds r0, r1, r2
- strb r3, [r0]
- mov r12, r1
-_08015F74:
- ldr r1, _08016014 @ =0x000160fc
- add r1, r12
- ldrb r0, [r1]
- cmp r0, 0x1
- bls _08015F80
- b _08016236
-_08015F80:
- ldr r3, _08016018 @ =gActiveBank
- mov r8, r3
- adds r6, r1, 0
- movs r7, 0
- ldr r5, _0801601C @ =gBattleTextBuff1
-_08015F8A:
- ldr r0, _08016020 @ =gBankAttacker
- ldrb r4, [r6]
- strb r4, [r0]
- mov r0, r8
- strb r4, [r0]
- ldr r0, _08016024 @ =gSideAffecting
- lsls r2, r4, 1
- adds r3, r2, r0
- ldrh r1, [r3]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08015FE8
- ldr r0, _08016028 @ =gSideTimer
- adds r1, r2, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- movs r4, 0xFF
- lsls r0, 24
- cmp r0, 0
- bne _08015FE8
- ldrh r0, [r3]
- ldr r2, _0801602C @ =0x0000fffe
- adds r1, r2, 0
- ands r0, r1
- strh r0, [r3]
- ldr r0, _08016030 @ =gUnknown_081D9030
- bl b_call_bc_move_exec
- movs r0, 0xFD
- strb r0, [r5]
- movs r0, 0x2
- strb r0, [r5, 0x1]
- movs r0, 0x73
- strb r0, [r5, 0x2]
- strb r7, [r5, 0x3]
- ldrb r0, [r5, 0x4]
- orrs r0, r4
- strb r0, [r5, 0x4]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08015FE8:
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- ldr r3, _0801600C @ =0x02000000
- mov r12, r3
- mov r1, r9
- cmp r1, 0
- beq _08015FFA
- b _08016532
-_08015FFA:
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _08015F8A
- b _08016236
- .align 2, 0
-_08016004: .4byte gTurnOrder
-_08016008: .4byte gNoOfAllBanks
-_0801600C: .4byte 0x02000000
-_08016010: .4byte 0x0001600e
-_08016014: .4byte 0x000160fc
-_08016018: .4byte gActiveBank
-_0801601C: .4byte gBattleTextBuff1
-_08016020: .4byte gBankAttacker
-_08016024: .4byte gSideAffecting
-_08016028: .4byte gSideTimer
-_0801602C: .4byte 0x0000fffe
-_08016030: .4byte gUnknown_081D9030
-_08016034:
- ldr r1, _080160CC @ =0x000160fc
- add r1, r12
- ldrb r0, [r1]
- cmp r0, 0x1
- bls _08016040
- b _08016182
-_08016040:
- adds r7, r1, 0
- movs r3, 0x2
- mov r10, r3
- movs r0, 0
- mov r8, r0
- ldr r5, _080160D0 @ =gBattleTextBuff1
-_0801604C:
- ldr r0, _080160D4 @ =gBankAttacker
- ldrb r4, [r7]
- strb r4, [r0]
- ldr r1, _080160D8 @ =gActiveBank
- strb r4, [r1]
- ldr r0, _080160DC @ =gSideAffecting
- lsls r2, r4, 1
- adds r3, r2, r0
- ldrh r1, [r3]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080160B0
- ldr r0, _080160E0 @ =gSideTimer
- adds r1, r2, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- subs r0, 0x1
- strb r0, [r1, 0x1]
- movs r6, 0xFF
- lsls r0, 24
- cmp r0, 0
- bne _080160B0
- ldrh r0, [r3]
- ldr r2, _080160E4 @ =0x0000fffd
- adds r1, r2, 0
- ands r0, r1
- strh r0, [r3]
- ldr r0, _080160E8 @ =gUnknown_081D9030
- bl b_call_bc_move_exec
- ldr r0, _080160EC @ =gBattleCommunication
- strb r4, [r0, 0x5]
- movs r0, 0xFD
- strb r0, [r5]
- mov r3, r10
- strb r3, [r5, 0x1]
- movs r0, 0x71
- strb r0, [r5, 0x2]
- mov r0, r8
- strb r0, [r5, 0x3]
- ldrb r0, [r5, 0x4]
- orrs r0, r6
- strb r0, [r5, 0x4]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_080160B0:
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- ldr r1, _080160F0 @ =0x02000000
- mov r12, r1
- mov r2, r9
- cmp r2, 0
- beq _080160C2
- b _08016532
-_080160C2:
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0801604C
- b _08016182
- .align 2, 0
-_080160CC: .4byte 0x000160fc
-_080160D0: .4byte gBattleTextBuff1
-_080160D4: .4byte gBankAttacker
-_080160D8: .4byte gActiveBank
-_080160DC: .4byte gSideAffecting
-_080160E0: .4byte gSideTimer
-_080160E4: .4byte 0x0000fffd
-_080160E8: .4byte gUnknown_081D9030
-_080160EC: .4byte gBattleCommunication
-_080160F0: .4byte 0x02000000
-_080160F4:
- ldr r1, _0801619C @ =0x000160fc
- add r1, r12
- ldrb r0, [r1]
- cmp r0, 0x1
- bhi _08016182
- ldr r0, _080161A0 @ =gActiveBank
- mov r10, r0
- adds r7, r1, 0
- movs r1, 0
- mov r8, r1
- ldr r5, _080161A4 @ =gBattleTextBuff1
-_0801610A:
- ldr r0, _080161A8 @ =gBankAttacker
- ldrb r4, [r7]
- strb r4, [r0]
- mov r2, r10
- strb r4, [r2]
- ldr r1, _080161AC @ =gSideTimer
- lsls r3, r4, 1
- adds r0, r3, r4
- lsls r0, 2
- adds r1, r0, r1
- ldrb r0, [r1, 0x2]
- cmp r0, 0
- beq _08016168
- subs r0, 0x1
- strb r0, [r1, 0x2]
- movs r6, 0xFF
- lsls r0, 24
- cmp r0, 0
- bne _08016168
- ldr r2, _080161B0 @ =gSideAffecting
- adds r2, r3, r2
- ldrh r0, [r2]
- ldr r3, _080161B4 @ =0x0000feff
- adds r1, r3, 0
- ands r0, r1
- strh r0, [r2]
- ldr r0, _080161B8 @ =gUnknown_081D9030
- bl b_call_bc_move_exec
- ldr r0, _080161BC @ =gBattleCommunication
- strb r4, [r0, 0x5]
- movs r0, 0xFD
- strb r0, [r5]
- movs r0, 0x2
- strb r0, [r5, 0x1]
- movs r0, 0x36
- strb r0, [r5, 0x2]
- mov r0, r8
- strb r0, [r5, 0x3]
- ldrb r0, [r5, 0x4]
- orrs r0, r6
- strb r0, [r5, 0x4]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08016168:
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- ldr r1, _080161C0 @ =0x02000000
- mov r12, r1
- mov r2, r9
- cmp r2, 0
- beq _0801617A
- b _08016532
-_0801617A:
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _0801610A
-_08016182:
- mov r3, r9
- cmp r3, 0
- beq _0801618A
- b _08016532
-_0801618A:
- ldr r0, _080161C4 @ =0x0001600e
- add r0, r12
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- ldr r0, _0801619C @ =0x000160fc
- add r0, r12
- strb r3, [r0]
- b _0801652A
- .align 2, 0
-_0801619C: .4byte 0x000160fc
-_080161A0: .4byte gActiveBank
-_080161A4: .4byte gBattleTextBuff1
-_080161A8: .4byte gBankAttacker
-_080161AC: .4byte gSideTimer
-_080161B0: .4byte gSideAffecting
-_080161B4: .4byte 0x0000feff
-_080161B8: .4byte gUnknown_081D9030
-_080161BC: .4byte gBattleCommunication
-_080161C0: .4byte 0x02000000
-_080161C4: .4byte 0x0001600e
-_080161C8:
- ldr r1, _08016250 @ =0x000160fc
- add r1, r12
- ldrb r0, [r1]
- cmp r0, 0x1
- bhi _08016236
- ldr r7, _08016254 @ =gActiveBank
- adds r5, r1, 0
- ldr r6, _08016258 @ =gBankAttacker
-_080161D8:
- ldrb r4, [r5]
- strb r4, [r6]
- strb r4, [r7]
- ldr r0, _0801625C @ =gSideAffecting
- lsls r2, r4, 1
- adds r3, r2, r0
- ldrh r1, [r3]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0801621C
- ldr r0, _08016260 @ =gSideTimer
- adds r1, r2, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x7]
- subs r0, 0x1
- strb r0, [r1, 0x7]
- lsls r0, 24
- cmp r0, 0
- bne _0801621C
- ldrh r0, [r3]
- ldr r2, _08016264 @ =0x0000ffdf
- adds r1, r2, 0
- ands r0, r1
- strh r0, [r3]
- ldr r0, _08016268 @ =gUnknown_081D9041
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_0801621C:
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldr r3, _0801626C @ =0x02000000
- mov r12, r3
- mov r1, r9
- cmp r1, 0
- beq _0801622E
- b _08016532
-_0801622E:
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080161D8
-_08016236:
- mov r2, r9
- cmp r2, 0
- beq _0801623E
- b _08016532
-_0801623E:
- ldr r0, _08016270 @ =0x0001600e
- add r0, r12
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- ldr r0, _08016250 @ =0x000160fc
- add r0, r12
- strb r2, [r0]
- b _0801652A
- .align 2, 0
-_08016250: .4byte 0x000160fc
-_08016254: .4byte gActiveBank
-_08016258: .4byte gBankAttacker
-_0801625C: .4byte gSideAffecting
-_08016260: .4byte gSideTimer
-_08016264: .4byte 0x0000ffdf
-_08016268: .4byte gUnknown_081D9041
-_0801626C: .4byte 0x02000000
-_08016270: .4byte 0x0001600e
-_08016274:
- ldr r2, _080162FC @ =0x000160fc
- add r2, r12
- ldr r1, _08016300 @ =gNoOfAllBanks
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bcs _080162E8
- ldr r5, _08016304 @ =gActiveBank
- adds r4, r2, 0
- ldr r6, _08016308 @ =gUnknown_02024DDC
-_08016288:
- ldr r1, _0801630C @ =gTurnOrder
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r5]
- ldrb r0, [r5]
- adds r1, r0, r6
- ldrb r0, [r1]
- cmp r0, 0
- beq _080162CA
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bne _080162CA
- ldr r1, _08016310 @ =gBattleMons
- ldrb r2, [r5]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _080162CA
- ldr r0, _08016314 @ =gBankTarget
- strb r2, [r0]
- ldr r0, _08016318 @ =gUnknown_081D939A
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_080162CA:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r3, _0801631C @ =0x02000000
- mov r12, r3
- mov r1, r9
- cmp r1, 0
- beq _080162DC
- b _08016532
-_080162DC:
- ldr r1, _08016300 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08016288
-_080162E8:
- mov r2, r9
- cmp r2, 0
- beq _080162F0
- b _08016532
-_080162F0:
- ldr r1, _08016320 @ =0x0001600e
- add r1, r12
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0801652A
- .align 2, 0
-_080162FC: .4byte 0x000160fc
-_08016300: .4byte gNoOfAllBanks
-_08016304: .4byte gActiveBank
-_08016308: .4byte gUnknown_02024DDC
-_0801630C: .4byte gTurnOrder
-_08016310: .4byte gBattleMons
-_08016314: .4byte gBankTarget
-_08016318: .4byte gUnknown_081D939A
-_0801631C: .4byte 0x02000000
-_08016320: .4byte 0x0001600e
-_08016324:
- ldr r3, _0801635C @ =gBattleWeather
- ldrh r2, [r3]
- movs r0, 0x7
- ands r0, r2
- cmp r0, 0
- bne _08016332
- b _080164F8
-_08016332:
- movs r0, 0x4
- ands r0, r2
- cmp r0, 0
- bne _0801637E
- ldr r1, _08016360 @ =gWishFutureKnock
- adds r1, 0x28
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bne _08016370
- ldr r0, _08016364 @ =0x0000fffe
- ands r0, r2
- ldr r1, _08016368 @ =0x0000fffd
- ands r0, r1
- strh r0, [r3]
- ldr r1, _0801636C @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _0801639C
- .align 2, 0
-_0801635C: .4byte gBattleWeather
-_08016360: .4byte gWishFutureKnock
-_08016364: .4byte 0x0000fffe
-_08016368: .4byte 0x0000fffd
-_0801636C: .4byte gBattleCommunication
-_08016370:
- movs r0, 0x2
- ands r0, r2
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- bne _0801638A
- b _08016398
-_0801637E:
- movs r0, 0x2
- ands r0, r2
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _08016398
-_0801638A:
- ldr r1, _08016394 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _0801639C
- .align 2, 0
-_08016394: .4byte gBattleCommunication
-_08016398:
- ldr r0, _080163A0 @ =gBattleCommunication
- strb r1, [r0, 0x5]
-_0801639C:
- ldr r0, _080163A4 @ =gUnknown_081D8F62
- b _080164EA
- .align 2, 0
-_080163A0: .4byte gBattleCommunication
-_080163A4: .4byte gUnknown_081D8F62
-_080163A8:
- ldr r3, _080163DC @ =gBattleWeather
- ldrh r2, [r3]
- movs r0, 0x18
- ands r0, r2
- cmp r0, 0
- bne _080163B6
- b _080164F8
-_080163B6:
- movs r0, 0x10
- ands r0, r2
- cmp r0, 0
- bne _080163F0
- ldr r1, _080163E0 @ =gWishFutureKnock
- adds r1, 0x28
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bne _080163F0
- ldr r0, _080163E4 @ =0x0000fff7
- ands r0, r2
- strh r0, [r3]
- ldr r1, _080163E8 @ =gBattlescriptCurrInstr
- ldr r0, _080163EC @ =gUnknown_081D8FFF
- b _080163F4
- .align 2, 0
-_080163DC: .4byte gBattleWeather
-_080163E0: .4byte gWishFutureKnock
-_080163E4: .4byte 0x0000fff7
-_080163E8: .4byte gBattlescriptCurrInstr
-_080163EC: .4byte gUnknown_081D8FFF
-_080163F0:
- ldr r1, _0801640C @ =gBattlescriptCurrInstr
- ldr r0, _08016410 @ =gUnknown_081D8F7D
-_080163F4:
- str r0, [r1]
- adds r3, r1, 0
- ldr r1, _08016414 @ =0x02000000
- ldr r0, _08016418 @ =0x000160a4
- adds r1, r0
- movs r2, 0
- movs r0, 0xC
- strb r0, [r1]
- ldr r0, _0801641C @ =gBattleCommunication
- strb r2, [r0, 0x5]
- b _080164E8
- .align 2, 0
-_0801640C: .4byte gBattlescriptCurrInstr
-_08016410: .4byte gUnknown_081D8F7D
-_08016414: .4byte 0x02000000
-_08016418: .4byte 0x000160a4
-_0801641C: .4byte gBattleCommunication
-_08016420:
- ldr r3, _08016450 @ =gBattleWeather
- ldrh r2, [r3]
- movs r0, 0x60
- ands r0, r2
- cmp r0, 0
- beq _0801647C
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- bne _08016464
- ldr r1, _08016454 @ =gWishFutureKnock
- adds r1, 0x28
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bne _08016464
- ldr r0, _08016458 @ =0x0000ffdf
- ands r0, r2
- strh r0, [r3]
- ldr r1, _0801645C @ =gBattlescriptCurrInstr
- ldr r0, _08016460 @ =gUnknown_081D9016
- b _08016468
- .align 2, 0
-_08016450: .4byte gBattleWeather
-_08016454: .4byte gWishFutureKnock
-_08016458: .4byte 0x0000ffdf
-_0801645C: .4byte gBattlescriptCurrInstr
-_08016460: .4byte gUnknown_081D9016
-_08016464:
- ldr r1, _08016484 @ =gBattlescriptCurrInstr
- ldr r0, _08016488 @ =gUnknown_081D9008
-_08016468:
- str r0, [r1]
- adds r3, r1, 0
- ldr r0, [r3]
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_0801647C:
- ldr r2, _0801648C @ =0x02000000
- ldr r0, _08016490 @ =0x0001600e
- adds r1, r2, r0
- b _080164FE
- .align 2, 0
-_08016484: .4byte gBattlescriptCurrInstr
-_08016488: .4byte gUnknown_081D9008
-_0801648C: .4byte 0x02000000
-_08016490: .4byte 0x0001600e
-_08016494:
- ldr r3, _080164BC @ =gBattleWeather
- ldrh r2, [r3]
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _080164F8
- ldr r1, _080164C0 @ =gWishFutureKnock
- adds r1, 0x28
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bne _080164D0
- ldr r0, _080164C4 @ =0x0000ff7f
- ands r0, r2
- strh r0, [r3]
- ldr r1, _080164C8 @ =gBattlescriptCurrInstr
- ldr r0, _080164CC @ =gUnknown_081D8FFF
- b _080164D4
- .align 2, 0
-_080164BC: .4byte gBattleWeather
-_080164C0: .4byte gWishFutureKnock
-_080164C4: .4byte 0x0000ff7f
-_080164C8: .4byte gBattlescriptCurrInstr
-_080164CC: .4byte gUnknown_081D8FFF
-_080164D0:
- ldr r1, _08016508 @ =gBattlescriptCurrInstr
- ldr r0, _0801650C @ =gUnknown_081D8F7D
-_080164D4:
- str r0, [r1]
- adds r3, r1, 0
- ldr r0, _08016510 @ =0x02000000
- ldr r1, _08016514 @ =0x000160a4
- adds r0, r1
- movs r1, 0xD
- strb r1, [r0]
- ldr r1, _08016518 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
-_080164E8:
- ldr r0, [r3]
-_080164EA:
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_080164F8:
- ldr r2, _08016510 @ =0x02000000
- ldr r3, _0801651C @ =0x0001600e
- adds r1, r2, r3
-_080164FE:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r12, r2
- b _0801652A
- .align 2, 0
-_08016508: .4byte gBattlescriptCurrInstr
-_0801650C: .4byte gUnknown_081D8F7D
-_08016510: .4byte 0x02000000
-_08016514: .4byte 0x000160a4
-_08016518: .4byte gBattleCommunication
-_0801651C: .4byte 0x0001600e
-_08016520:
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_0801652A:
- mov r0, r9
- cmp r0, 0
- bne _08016532
- b _08015E8A
-_08016532:
- ldr r0, _08016550 @ =gBattleMainFunc
- ldr r1, [r0]
- ldr r0, _08016554 @ =BattleTurnPassed
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08016550: .4byte gBattleMainFunc
-_08016554: .4byte BattleTurnPassed
- thumb_func_end UpdateTurnCounters
-
- thumb_func_start TurnBasedEffects
-TurnBasedEffects: @ 8016558
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r0, 0
- mov r9, r0
- ldr r2, _08016578 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0801657C @ =0x01000020
- orrs r0, r1
- str r0, [r2]
- bl _08017088
- .align 2, 0
-_08016578: .4byte gHitMarker
-_0801657C: .4byte 0x01000020
-_08016580:
- ldr r3, _080165B4 @ =gActiveBank
- ldr r4, _080165B8 @ =gBankAttacker
- ldr r1, _080165BC @ =gTurnOrder
- adds r5, r7, r2
- ldrb r0, [r5]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r4]
- strb r0, [r3]
- ldr r0, _080165C0 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _080165C4 @ =gBitTable
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- adds r6, r3, 0
- cmp r1, 0
- beq _080165C8
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- bl _08017088
- .align 2, 0
-_080165B4: .4byte gActiveBank
-_080165B8: .4byte gBankAttacker
-_080165BC: .4byte gTurnOrder
-_080165C0: .4byte gAbsentBankFlags
-_080165C4: .4byte gBitTable
-_080165C8:
- movs r5, 0xB0
- lsls r5, 9
- adds r0, r7, r5
- ldrb r0, [r0]
- cmp r0, 0x13
- bls _080165D8
- bl _08017078
-_080165D8:
- lsls r0, 2
- ldr r1, _080165E4 @ =_080165E8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080165E4: .4byte _080165E8
- .align 2, 0
-_080165E8:
- .4byte _08016638
- .4byte _080166A8
- .4byte _080166D8
- .4byte _08016730
- .4byte _080167C8
- .4byte _08016828
- .4byte _080168C0
- .4byte _0801691C
- .4byte _0801697C
- .4byte _080169DC
- .4byte _08016B78
- .4byte _08016CA0
- .4byte _08016D58
- .4byte _08016E30
- .4byte _08016EFC
- .4byte _08016F20
- .4byte _08016F6C
- .4byte _08016F9C
- .4byte _08016704
- .4byte _08017064
-_08016638:
- ldr r1, _08016694 @ =gStatuses3
- ldrb r3, [r6]
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 3
- ands r0, r1
- cmp r0, 0
- beq _08016686
- ldr r0, _08016698 @ =gBattleMons
- movs r1, 0x58
- muls r1, r3
- adds r0, r1, r0
- ldrh r2, [r0, 0x28]
- ldrh r7, [r0, 0x2C]
- cmp r2, r7
- beq _08016686
- cmp r2, 0
- beq _08016686
- ldr r1, _0801669C @ =gBattleMoveDamage
- ldrh r0, [r0, 0x2C]
- lsrs r0, 4
- str r0, [r1]
- cmp r0, 0
- bne _08016670
- movs r0, 0x1
- str r0, [r1]
-_08016670:
- ldr r0, [r1]
- negs r0, r0
- str r0, [r1]
- ldr r0, _080166A0 @ =gUnknown_081D93D1
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08016686:
- ldr r1, _080166A4 @ =0x02000000
- movs r0, 0xB0
- lsls r0, 9
- adds r1, r0
- bl _08017072
- .align 2, 0
-_08016694: .4byte gStatuses3
-_08016698: .4byte gBattleMons
-_0801669C: .4byte gBattleMoveDamage
-_080166A0: .4byte gUnknown_081D93D1
-_080166A4: .4byte 0x02000000
-_080166A8:
- ldrb r1, [r6]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _080166C8
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_080166C8:
- ldr r1, _080166D4 @ =0x02000000
- movs r2, 0xB0
- lsls r2, 9
- adds r1, r2
- bl _08017072
- .align 2, 0
-_080166D4: .4byte 0x02000000
-_080166D8:
- ldrb r1, [r6]
- movs r0, 0x1
- movs r2, 0
- bl sub_801A02C
- lsls r0, 24
- cmp r0, 0
- beq _080166F2
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_080166F2:
- ldr r1, _08016700 @ =0x02000000
- movs r3, 0xB0
- lsls r3, 9
- adds r1, r3
- bl _08017072
- .align 2, 0
-_08016700: .4byte 0x02000000
-_08016704:
- ldrb r1, [r6]
- movs r0, 0x1
- movs r2, 0x1
- bl sub_801A02C
- lsls r0, 24
- cmp r0, 0
- beq _0801671E
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_0801671E:
- ldr r1, _0801672C @ =0x02000000
- movs r5, 0xB0
- lsls r5, 9
- adds r1, r5
- bl _08017072
- .align 2, 0
-_0801672C: .4byte 0x02000000
-_08016730:
- ldr r0, _080167A8 @ =gStatuses3
- ldrb r2, [r6]
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801679C
- ldr r3, _080167AC @ =gBattleMons
- movs r5, 0x3
- ands r5, r1
- movs r1, 0x58
- adds r0, r5, 0
- muls r0, r1
- adds r0, r3
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801679C
- adds r0, r2, 0
- muls r0, r1
- adds r0, r3
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801679C
- ldr r0, _080167B0 @ =gBankTarget
- strb r5, [r0]
- ldr r2, _080167B4 @ =gBattleMoveDamage
- ldrb r0, [r6]
- muls r0, r1
- adds r0, r3
- ldrh r0, [r0, 0x2C]
- lsrs r0, 3
- str r0, [r2]
- cmp r0, 0
- bne _0801677C
- movs r0, 0x1
- str r0, [r2]
-_0801677C:
- ldr r1, _080167B8 @ =0x02000000
- ldr r7, _080167BC @ =0x000160a4
- adds r0, r1, r7
- strb r5, [r0]
- ldrb r0, [r4]
- ldr r2, _080167C0 @ =0x000160a5
- adds r1, r2
- strb r0, [r1]
- ldr r0, _080167C4 @ =gUnknown_081D904B
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_0801679C:
- ldr r1, _080167B8 @ =0x02000000
- movs r3, 0xB0
- lsls r3, 9
- adds r1, r3
- bl _08017072
- .align 2, 0
-_080167A8: .4byte gStatuses3
-_080167AC: .4byte gBattleMons
-_080167B0: .4byte gBankTarget
-_080167B4: .4byte gBattleMoveDamage
-_080167B8: .4byte 0x02000000
-_080167BC: .4byte 0x000160a4
-_080167C0: .4byte 0x000160a5
-_080167C4: .4byte gUnknown_081D904B
-_080167C8:
- ldr r2, _08016818 @ =gBattleMons
- ldrb r1, [r6]
- movs r0, 0x58
- adds r3, r1, 0
- muls r3, r0
- adds r0, r2, 0
- adds r0, 0x4C
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0801680A
- adds r1, r3, r2
- ldrh r0, [r1, 0x28]
- cmp r0, 0
- beq _0801680A
- ldr r2, _0801681C @ =gBattleMoveDamage
- ldrh r0, [r1, 0x2C]
- lsrs r0, 3
- str r0, [r2]
- cmp r0, 0
- bne _080167FA
- movs r0, 0x1
- str r0, [r2]
-_080167FA:
- ldr r0, _08016820 @ =gUnknown_081D9518
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_0801680A:
- ldr r1, _08016824 @ =0x02000000
- movs r5, 0xB0
- lsls r5, 9
- adds r1, r5
- bl _08017072
- .align 2, 0
-_08016818: .4byte gBattleMons
-_0801681C: .4byte gBattleMoveDamage
-_08016820: .4byte gUnknown_081D9518
-_08016824: .4byte 0x02000000
-_08016828:
- ldr r4, _080168B0 @ =gBattleMons
- ldrb r0, [r6]
- movs r7, 0x58
- mov r8, r7
- mov r2, r8
- muls r2, r0
- adds r3, r4, 0
- adds r3, 0x4C
- adds r0, r2, r3
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080168A2
- adds r1, r2, r4
- ldrh r0, [r1, 0x28]
- cmp r0, 0
- beq _080168A2
- ldr r5, _080168B4 @ =gBattleMoveDamage
- ldrh r0, [r1, 0x2C]
- lsrs r0, 4
- str r0, [r5]
- cmp r0, 0
- bne _0801685C
- movs r0, 0x1
- str r0, [r5]
-_0801685C:
- ldrb r0, [r6]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r2, r0, r3
- ldr r1, [r2]
- movs r4, 0xF0
- lsls r4, 4
- adds r0, r1, 0
- ands r0, r4
- cmp r0, r4
- beq _0801687C
- movs r7, 0x80
- lsls r7, 1
- adds r0, r1, r7
- str r0, [r2]
-_0801687C:
- ldrb r0, [r6]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r3
- ldr r0, [r0]
- ands r0, r4
- lsrs r0, 8
- ldr r1, [r5]
- muls r0, r1
- str r0, [r5]
- ldr r0, _080168B8 @ =gUnknown_081D9518
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_080168A2:
- ldr r1, _080168BC @ =0x02000000
- movs r2, 0xB0
- lsls r2, 9
- adds r1, r2
- bl _08017072
- .align 2, 0
-_080168B0: .4byte gBattleMons
-_080168B4: .4byte gBattleMoveDamage
-_080168B8: .4byte gUnknown_081D9518
-_080168BC: .4byte 0x02000000
-_080168C0:
- ldr r2, _0801690C @ =gBattleMons
- ldrb r1, [r6]
- movs r0, 0x58
- adds r3, r1, 0
- muls r3, r0
- adds r0, r2, 0
- adds r0, 0x4C
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08016902
- adds r1, r3, r2
- ldrh r0, [r1, 0x28]
- cmp r0, 0
- beq _08016902
- ldr r2, _08016910 @ =gBattleMoveDamage
- ldrh r0, [r1, 0x2C]
- lsrs r0, 3
- str r0, [r2]
- cmp r0, 0
- bne _080168F2
- movs r0, 0x1
- str r0, [r2]
-_080168F2:
- ldr r0, _08016914 @ =gUnknown_081D953A
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08016902:
- ldr r1, _08016918 @ =0x02000000
- movs r3, 0xB0
- lsls r3, 9
- adds r1, r3
- b _08017072
- .align 2, 0
-_0801690C: .4byte gBattleMons
-_08016910: .4byte gBattleMoveDamage
-_08016914: .4byte gUnknown_081D953A
-_08016918: .4byte 0x02000000
-_0801691C:
- ldr r2, _0801696C @ =gBattleMons
- ldrb r1, [r6]
- movs r0, 0x58
- adds r3, r1, 0
- muls r3, r0
- adds r0, r2, 0
- adds r0, 0x50
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 20
- ands r0, r1
- cmp r0, 0
- beq _08016960
- adds r1, r3, r2
- ldrh r0, [r1, 0x28]
- cmp r0, 0
- beq _08016960
- ldr r2, _08016970 @ =gBattleMoveDamage
- ldrh r0, [r1, 0x2C]
- lsrs r0, 2
- str r0, [r2]
- cmp r0, 0
- bne _08016950
- movs r0, 0x1
- str r0, [r2]
-_08016950:
- ldr r0, _08016974 @ =gUnknown_081D9613
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08016960:
- ldr r1, _08016978 @ =0x02000000
- movs r5, 0xB0
- lsls r5, 9
- adds r1, r5
- b _08017072
- .align 2, 0
-_0801696C: .4byte gBattleMons
-_08016970: .4byte gBattleMoveDamage
-_08016974: .4byte gUnknown_081D9613
-_08016978: .4byte 0x02000000
-_0801697C:
- ldr r2, _080169CC @ =gBattleMons
- ldrb r1, [r6]
- movs r0, 0x58
- adds r3, r1, 0
- muls r3, r0
- adds r0, r2, 0
- adds r0, 0x50
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 21
- ands r0, r1
- cmp r0, 0
- beq _080169C0
- adds r1, r3, r2
- ldrh r0, [r1, 0x28]
- cmp r0, 0
- beq _080169C0
- ldr r2, _080169D0 @ =gBattleMoveDamage
- ldrh r0, [r1, 0x2C]
- lsrs r0, 2
- str r0, [r2]
- cmp r0, 0
- bne _080169B0
- movs r0, 0x1
- str r0, [r2]
-_080169B0:
- ldr r0, _080169D4 @ =gUnknown_081D9624
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_080169C0:
- ldr r1, _080169D8 @ =0x02000000
- movs r7, 0xB0
- lsls r7, 9
- adds r1, r7
- b _08017072
- .align 2, 0
-_080169CC: .4byte gBattleMons
-_080169D0: .4byte gBattleMoveDamage
-_080169D4: .4byte gUnknown_081D9624
-_080169D8: .4byte 0x02000000
-_080169DC:
- ldr r0, _08016A8C @ =gBattleMons
- mov r8, r0
- ldrb r0, [r6]
- movs r1, 0x58
- mov r10, r1
- mov r1, r10
- muls r1, r0
- mov r5, r8
- adds r5, 0x50
- adds r3, r1, r5
- ldr r2, [r3]
- movs r4, 0xE0
- lsls r4, 8
- adds r0, r2, 0
- ands r0, r4
- cmp r0, 0
- beq _08016AF6
- mov r7, r8
- adds r0, r1, r7
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08016AF6
- ldr r1, _08016A90 @ =0xffffe000
- adds r0, r2, r1
- str r0, [r3]
- ldrb r1, [r6]
- mov r0, r10
- muls r0, r1
- adds r0, r5
- ldr r0, [r0]
- ands r0, r4
- cmp r0, 0
- beq _08016AB4
- ldr r2, _08016A94 @ =0x02000000
- lsls r0, r1, 1
- ldr r4, _08016A98 @ =0x00016004
- adds r0, r4
- adds r0, r2
- ldrb r1, [r0]
- ldr r3, _08016A9C @ =0x000160a4
- adds r0, r2, r3
- strb r1, [r0]
- ldrb r0, [r6]
- lsls r0, 1
- subs r3, 0x9F
- adds r0, r3
- adds r0, r2
- ldrb r1, [r0]
- ldr r5, _08016AA0 @ =0x000160a5
- adds r0, r2, r5
- strb r1, [r0]
- ldr r1, _08016AA4 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r4
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r3
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _08016AA8 @ =gBattlescriptCurrInstr
- ldr r0, _08016AAC @ =gUnknown_081D95E2
- str r0, [r1]
- ldr r2, _08016AB0 @ =gBattleMoveDamage
- ldrb r0, [r6]
- mov r7, r10
- muls r7, r0
- adds r0, r7, 0
- add r0, r8
- ldrh r0, [r0, 0x2C]
- lsrs r0, 4
- str r0, [r2]
- cmp r0, 0
- bne _08016AE6
- movs r0, 0x1
- str r0, [r2]
- b _08016AE6
- .align 2, 0
-_08016A8C: .4byte gBattleMons
-_08016A90: .4byte 0xffffe000
-_08016A94: .4byte 0x02000000
-_08016A98: .4byte 0x00016004
-_08016A9C: .4byte 0x000160a4
-_08016AA0: .4byte 0x000160a5
-_08016AA4: .4byte gBattleTextBuff1
-_08016AA8: .4byte gBattlescriptCurrInstr
-_08016AAC: .4byte gUnknown_081D95E2
-_08016AB0: .4byte gBattleMoveDamage
-_08016AB4:
- ldr r1, _08016B00 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldr r2, _08016B04 @ =0x02000000
- ldrb r0, [r6]
- lsls r0, 1
- ldr r3, _08016B08 @ =0x00016004
- adds r0, r3
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r6]
- lsls r0, 1
- ldr r5, _08016B0C @ =0x00016005
- adds r0, r5
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _08016B10 @ =gBattlescriptCurrInstr
- ldr r0, _08016B14 @ =gUnknown_081D95F4
- str r0, [r1]
-_08016AE6:
- ldr r0, [r1]
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08016AF6:
- ldr r1, _08016B04 @ =0x02000000
- movs r7, 0xB0
- lsls r7, 9
- adds r1, r7
- b _08017072
- .align 2, 0
-_08016B00: .4byte gBattleTextBuff1
-_08016B04: .4byte 0x02000000
-_08016B08: .4byte 0x00016004
-_08016B0C: .4byte 0x00016005
-_08016B10: .4byte gBattlescriptCurrInstr
-_08016B14: .4byte gUnknown_081D95F4
-_08016B18:
- movs r0, 0x8
- negs r0, r0
- ands r4, r0
- str r4, [r2]
- ldrb r0, [r6]
- mov r2, r8
- muls r2, r0
- mov r0, r10
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- ldr r1, _08016B68 @ =0xf7ffffff
- ands r0, r1
- str r0, [r2]
- ldr r1, _08016B6C @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- ldr r0, _08016B70 @ =gUnknown_081D950F
- bl b_call_bc_move_exec
- ldr r4, _08016B74 @ =gActiveBank
- ldrb r0, [r6]
- strb r0, [r4]
- ldrb r0, [r4]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08016BE0
- .align 2, 0
-_08016B68: .4byte 0xf7ffffff
-_08016B6C: .4byte gBattleCommunication
-_08016B70: .4byte gUnknown_081D950F
-_08016B74: .4byte gActiveBank
-_08016B78:
- ldr r2, _08016BF4 @ =gBattleMons
- ldrb r1, [r6]
- movs r0, 0x58
- muls r0, r1
- adds r1, r2, 0
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x70
- ands r1, r0
- adds r7, r2, 0
- cmp r1, 0
- beq _08016C82
- movs r0, 0
- strb r0, [r4]
- mov r2, r8
- ldrb r1, [r2]
- cmp r1, 0
- beq _08016BE0
- mov r10, r7
- adds r6, r4, 0
- movs r3, 0x58
- mov r8, r3
- movs r5, 0x4C
- adds r5, r7
- mov r9, r5
- str r1, [sp, 0x4]
- movs r0, 0x7
- mov r12, r0
-_08016BB2:
- ldrb r1, [r6]
- mov r3, r8
- muls r3, r1
- mov r5, r9
- adds r2, r3, r5
- ldr r4, [r2]
- adds r0, r4, 0
- mov r5, r12
- ands r0, r5
- cmp r0, 0
- beq _08016BD2
- adds r0, r3, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x2B
- bne _08016B18
-_08016BD2:
- adds r0, r1, 0x1
- strb r0, [r6]
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [sp, 0x4]
- cmp r0, r1
- bcc _08016BB2
-_08016BE0:
- ldr r2, _08016BF8 @ =gBankAttacker
- ldr r1, _08016BFC @ =gNoOfAllBanks
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- beq _08016C00
- movs r2, 0x2
- mov r9, r2
- b _0801707E
- .align 2, 0
-_08016BF4: .4byte gBattleMons
-_08016BF8: .4byte gBankAttacker
-_08016BFC: .4byte gNoOfAllBanks
-_08016C00:
- ldr r5, _08016C38 @ =gActiveBank
- ldrb r0, [r5]
- strb r0, [r2]
- ldr r2, _08016C3C @ =gBattleMons
- ldrb r0, [r5]
- movs r7, 0x58
- adds r1, r0, 0
- muls r1, r7
- adds r6, r2, 0
- adds r6, 0x50
- adds r1, r6
- ldr r0, [r1]
- subs r0, 0x10
- str r0, [r1]
- ldrb r0, [r5]
- bl sub_8015660
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _08016C44
- ldrb r0, [r5]
- bl CancelMultiTurnMoves
- ldr r1, _08016C40 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _08016C78
- .align 2, 0
-_08016C38: .4byte gActiveBank
-_08016C3C: .4byte gBattleMons
-_08016C40: .4byte gBattleCommunication
-_08016C44:
- ldrb r3, [r5]
- adds r0, r3, 0
- muls r0, r7
- adds r2, r0, r6
- ldr r0, [r2]
- movs r1, 0x70
- ands r0, r1
- cmp r0, 0
- beq _08016C6C
- ldr r0, _08016C68 @ =gBattleCommunication
- strb r4, [r0, 0x5]
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 5
- orrs r0, r1
- str r0, [r2]
- b _08016C78
- .align 2, 0
-_08016C68: .4byte gBattleCommunication
-_08016C6C:
- ldr r1, _08016C94 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- adds r0, r3, 0
- bl CancelMultiTurnMoves
-_08016C78:
- ldr r0, _08016C98 @ =gUnknown_081D957E
- bl b_call_bc_move_exec
- movs r3, 0x1
- mov r9, r3
-_08016C82:
- mov r5, r9
- cmp r5, 0x2
- bne _08016C8A
- b _08017078
-_08016C8A:
- ldr r1, _08016C9C @ =0x02000000
- movs r7, 0xB0
- lsls r7, 9
- adds r1, r7
- b _08017072
- .align 2, 0
-_08016C94: .4byte gBattleCommunication
-_08016C98: .4byte gUnknown_081D957E
-_08016C9C: .4byte 0x02000000
-_08016CA0:
- ldr r1, _08016CD8 @ =gBattleMons
- ldrb r0, [r6]
- movs r7, 0x58
- muls r0, r7
- adds r5, r1, 0
- adds r5, 0x50
- adds r2, r0, r5
- ldr r1, [r2]
- movs r4, 0xC0
- lsls r4, 4
- adds r0, r1, 0
- ands r0, r4
- cmp r0, 0
- beq _08016D3C
- ldr r3, _08016CDC @ =0xfffffc00
- adds r0, r1, r3
- str r0, [r2]
- ldrb r0, [r6]
- bl sub_8015660
- lsls r0, 24
- cmp r0, 0
- beq _08016CE0
- ldrb r0, [r6]
- bl CancelMultiTurnMoves
- b _08016D3C
- .align 2, 0
-_08016CD8: .4byte gBattleMons
-_08016CDC: .4byte 0xfffffc00
-_08016CE0:
- ldrb r0, [r6]
- muls r0, r7
- adds r2, r0, r5
- ldr r1, [r2]
- adds r0, r1, 0
- ands r0, r4
- cmp r0, 0
- bne _08016D3C
- movs r0, 0x80
- lsls r0, 5
- ands r0, r1
- cmp r0, 0
- beq _08016D3C
- ldr r0, _08016D48 @ =0xffffefff
- ands r1, r0
- str r1, [r2]
- ldrb r0, [r6]
- muls r0, r7
- adds r0, r5
- ldr r0, [r0]
- movs r4, 0x7
- ands r0, r4
- cmp r0, 0
- bne _08016D3C
- ldr r1, _08016D4C @ =gBattleCommunication
- movs r0, 0x47
- strb r0, [r1, 0x3]
- movs r0, 0x1
- movs r1, 0
- bl sub_801E3EC
- ldrb r0, [r6]
- muls r0, r7
- adds r0, r5
- ldr r0, [r0]
- ands r0, r4
- cmp r0, 0
- beq _08016D32
- ldr r0, _08016D50 @ =gUnknown_081D9587
- bl b_call_bc_move_exec
-_08016D32:
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08016D3C:
- ldr r1, _08016D54 @ =0x02000000
- movs r5, 0xB0
- lsls r5, 9
- adds r1, r5
- b _08017072
- .align 2, 0
-_08016D48: .4byte 0xffffefff
-_08016D4C: .4byte gBattleCommunication
-_08016D50: .4byte gUnknown_081D9587
-_08016D54: .4byte 0x02000000
-_08016D58:
- ldr r0, _08016DD4 @ =gDisableStructs
- ldrb r3, [r6]
- lsls r1, r3, 3
- subs r1, r3
- lsls r1, 2
- adds r5, r1, r0
- ldrb r1, [r5, 0xB]
- lsls r1, 28
- adds r7, r0, 0
- cmp r1, 0
- beq _08016E1E
- movs r4, 0
- ldr r2, _08016DD8 @ =gBattleMons
- movs r0, 0x58
- adds r1, r3, 0
- muls r1, r0
- adds r2, 0xC
- adds r1, r2
- ldrh r0, [r5, 0x4]
- ldrh r1, [r1]
- cmp r0, r1
- beq _08016DAC
- mov r12, r7
- mov r8, r2
- adds r5, r6, 0
- movs r3, 0x58
-_08016D8C:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _08016DAC
- ldrb r2, [r5]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- add r1, r12
- lsls r0, r4, 1
- muls r2, r3
- adds r0, r2
- add r0, r8
- ldrh r1, [r1, 0x4]
- ldrh r0, [r0]
- cmp r1, r0
- bne _08016D8C
-_08016DAC:
- cmp r4, 0x4
- bne _08016DDC
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r7
- movs r1, 0
- strh r1, [r0, 0x4]
- ldrb r0, [r6]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r2, [r1, 0xB]
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0xB]
- b _08016E1E
- .align 2, 0
-_08016DD4: .4byte gDisableStructs
-_08016DD8: .4byte gBattleMons
-_08016DDC:
- ldrb r0, [r6]
- lsls r2, r0, 3
- subs r2, r0
- lsls r2, 2
- adds r2, r7
- ldrb r3, [r2, 0xB]
- lsls r1, r3, 28
- lsrs r1, 28
- subs r1, 0x1
- movs r0, 0xF
- ands r1, r0
- movs r0, 0x10
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0xB]
- adds r2, r1, 0
- cmp r2, 0
- bne _08016E1E
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r7
- strh r2, [r0, 0x4]
- ldr r0, _08016E28 @ =gUnknown_081D9148
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08016E1E:
- ldr r1, _08016E2C @ =0x02000000
- movs r7, 0xB0
- lsls r7, 9
- adds r1, r7
- b _08017072
- .align 2, 0
-_08016E28: .4byte gUnknown_081D9148
-_08016E2C: .4byte 0x02000000
-_08016E30:
- ldr r3, _08016E7C @ =gDisableStructs
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r2, r0, r3
- ldrb r5, [r2, 0xE]
- lsls r4, r5, 28
- cmp r4, 0
- beq _08016EE8
- ldr r0, _08016E80 @ =gBattleMons
- mov r8, r0
- ldrb r0, [r2, 0xC]
- lsls r0, 1
- movs r7, 0x58
- muls r1, r7
- adds r0, r1
- mov r1, r8
- adds r1, 0xC
- adds r0, r1
- ldrh r0, [r0]
- ldrh r1, [r2, 0x6]
- cmp r0, r1
- beq _08016E84
- movs r0, 0
- strh r0, [r2, 0x6]
- ldrb r0, [r6]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r1, 0xE]
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0xE]
- b _08016EE8
- .align 2, 0
-_08016E7C: .4byte gDisableStructs
-_08016E80: .4byte gBattleMons
-_08016E84:
- lsrs r1, r4, 28
- subs r1, 0x1
- movs r0, 0xF
- ands r1, r0
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r5
- orrs r0, r1
- strb r0, [r2, 0xE]
- cmp r1, 0
- beq _08016EB8
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r3
- muls r1, r7
- ldrb r0, [r0, 0xC]
- adds r1, r0
- mov r0, r8
- adds r0, 0x24
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- bne _08016EE8
-_08016EB8:
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r3
- movs r1, 0
- strh r1, [r0, 0x6]
- ldrb r0, [r6]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r1, 0xE]
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r1, 0xE]
- ldr r0, _08016EF4 @ =gUnknown_081D914F
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08016EE8:
- ldr r1, _08016EF8 @ =0x02000000
- movs r2, 0xB0
- lsls r2, 9
- adds r1, r2
- b _08017072
- .align 2, 0
-_08016EF4: .4byte gUnknown_081D914F
-_08016EF8: .4byte 0x02000000
-_08016EFC:
- ldr r0, _08016F1C @ =gStatuses3
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r0
- ldr r2, [r1]
- movs r0, 0x18
- ands r0, r2
- cmp r0, 0
- beq _08016F14
- adds r0, r2, 0
- subs r0, 0x8
- str r0, [r1]
-_08016F14:
- movs r1, 0xB0
- lsls r1, 9
- b _08017070
- .align 2, 0
-_08016F1C: .4byte gStatuses3
-_08016F20:
- ldr r2, _08016F60 @ =gDisableStructs
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r3, r0, r2
- ldrb r2, [r3, 0x12]
- lsls r1, r2, 28
- cmp r1, 0
- beq _08016F5A
- lsrs r1, 28
- subs r1, 0x1
- movs r0, 0xF
- ands r1, r0
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x12]
- cmp r1, 0
- bne _08016F5A
- ldr r0, _08016F64 @ =gStatuses3
- ldrb r2, [r6]
- lsls r2, 2
- adds r2, r0
- ldr r0, [r2]
- ldr r1, _08016F68 @ =0xfffffdff
- ands r0, r1
- str r0, [r2]
-_08016F5A:
- movs r1, 0xB0
- lsls r1, 9
- b _08017070
- .align 2, 0
-_08016F60: .4byte gDisableStructs
-_08016F64: .4byte gStatuses3
-_08016F68: .4byte 0xfffffdff
-_08016F6C:
- ldr r2, _08016F98 @ =gDisableStructs
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r3, r0, r2
- ldrb r2, [r3, 0x13]
- lsls r1, r2, 28
- cmp r1, 0
- beq _08016F92
- lsrs r1, 28
- subs r1, 0x1
- movs r0, 0xF
- ands r1, r0
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x13]
-_08016F92:
- movs r1, 0xB0
- lsls r1, 9
- b _08017070
- .align 2, 0
-_08016F98: .4byte gDisableStructs
-_08016F9C:
- ldr r4, _0801704C @ =gStatuses3
- ldrb r0, [r6]
- lsls r0, 2
- adds r2, r0, r4
- ldr r1, [r2]
- movs r3, 0xC0
- lsls r3, 5
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _08017042
- ldr r5, _08017050 @ =0xfffff800
- adds r0, r1, r5
- str r0, [r2]
- ldrb r2, [r6]
- lsls r0, r2, 2
- adds r0, r4
- ldr r0, [r0]
- ands r0, r3
- cmp r0, 0
- bne _08017042
- ldr r3, _08017054 @ =gBattleMons
- movs r5, 0x58
- adds r1, r2, 0
- muls r1, r5
- adds r4, r3, 0
- adds r4, 0x4C
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _08017042
- adds r0, r1, r3
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x48
- beq _08017042
- cmp r0, 0xF
- beq _08017042
- adds r0, r2, 0
- bl sub_8025A44
- lsls r0, 24
- cmp r0, 0
- bne _08017042
- ldrb r0, [r6]
- bl CancelMultiTurnMoves
- bl Random
- ldrb r1, [r6]
- adds r2, r1, 0
- muls r2, r5
- adds r2, r4
- movs r1, 0x3
- ands r1, r0
- adds r1, 0x2
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r6]
- bl MarkBufferBankForExecution
- ldr r1, _08017058 @ =gEffectBank
- ldrb r0, [r6]
- strb r0, [r1]
- ldr r0, _0801705C @ =gUnknown_081D964C
- bl b_call_bc_move_exec
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08017042:
- ldr r1, _08017060 @ =0x02000000
- movs r7, 0xB0
- lsls r7, 9
- adds r1, r7
- b _08017072
- .align 2, 0
-_0801704C: .4byte gStatuses3
-_08017050: .4byte 0xfffff800
-_08017054: .4byte gBattleMons
-_08017058: .4byte gEffectBank
-_0801705C: .4byte gUnknown_081D964C
-_08017060: .4byte 0x02000000
-_08017064:
- movs r1, 0xB0
- lsls r1, 9
- add r1, r10
- movs r0, 0
- strb r0, [r1]
- ldr r1, _08017084 @ =0x00016001
-_08017070:
- add r1, r10
-_08017072:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08017078:
- mov r0, r9
- cmp r0, 0
- beq _08017088
-_0801707E:
- mov r0, r9
- b _080170B8
- .align 2, 0
-_08017084: .4byte 0x00016001
-_08017088:
- ldr r7, _080170C8 @ =0x02000000
- ldr r2, _080170CC @ =0x00016001
- adds r0, r7, r2
- ldr r1, _080170D0 @ =gNoOfAllBanks
- ldrb r0, [r0]
- mov r10, r7
- mov r8, r1
- ldrb r1, [r1]
- cmp r0, r1
- bcs _080170AC
- movs r3, 0xB0
- lsls r3, 9
- adds r0, r7, r3
- ldrb r0, [r0]
- cmp r0, 0x13
- bhi _080170AC
- bl _08016580
-_080170AC:
- ldr r0, _080170D4 @ =gHitMarker
- ldr r1, [r0]
- ldr r2, _080170D8 @ =0xfeffffdf
- ands r1, r2
- str r1, [r0]
- movs r0, 0
-_080170B8:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080170C8: .4byte 0x02000000
-_080170CC: .4byte 0x00016001
-_080170D0: .4byte gNoOfAllBanks
-_080170D4: .4byte gHitMarker
-_080170D8: .4byte 0xfeffffdf
- thumb_func_end TurnBasedEffects
-
- thumb_func_start sub_80170DC
-sub_80170DC: @ 80170DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r2, _08017108 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0801710C @ =0x01000020
- orrs r0, r1
- str r0, [r2]
- ldr r1, _08017110 @ =0x02000000
- ldr r3, _08017114 @ =0x00016110
- adds r0, r1, r3
- ldrb r0, [r0]
- mov r8, r1
- cmp r0, 0
- beq _08017118
- cmp r0, 0x1
- bne _08017104
- b _08017258
-_08017104:
- b _08017380
- .align 2, 0
-_08017108: .4byte gHitMarker
-_0801710C: .4byte 0x01000020
-_08017110: .4byte 0x02000000
-_08017114: .4byte 0x00016110
-_08017118:
- ldr r2, _0801715C @ =0x00016111
- add r2, r8
- ldr r0, _08017160 @ =gNoOfAllBanks
- ldrb r1, [r2]
- mov r9, r0
- ldrb r0, [r0]
- cmp r1, r0
- bcc _0801712A
- b _08017248
-_0801712A:
- ldr r4, _08017164 @ =gActiveBank
- adds r5, r2, 0
- ldr r1, _08017168 @ =gWishFutureKnock
- mov r12, r1
- movs r2, 0x8
- add r2, r12
- mov r10, r2
- mov r7, r12
- adds r7, 0x18
- ldr r6, _0801716C @ =gBattleTextBuff1
-_0801713E:
- ldrb r3, [r5]
- strb r3, [r4]
- ldr r0, _08017170 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _08017174 @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08017178
- adds r0, r3, 0x1
- strb r0, [r5]
- b _0801723C
- .align 2, 0
-_0801715C: .4byte 0x00016111
-_08017160: .4byte gNoOfAllBanks
-_08017164: .4byte gActiveBank
-_08017168: .4byte gWishFutureKnock
-_0801716C: .4byte gBattleTextBuff1
-_08017170: .4byte gAbsentBankFlags
-_08017174: .4byte gBitTable
-_08017178:
- adds r0, r3, 0x1
- strb r0, [r5]
- ldr r1, _080171B4 @ =gWishFutureKnock
- ldrb r0, [r4]
- adds r1, r0, r1
- ldrb r0, [r1]
- cmp r0, 0
- beq _0801723C
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- bne _0801723C
- ldr r1, _080171B8 @ =gBattleMons
- ldrb r2, [r4]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801723C
- lsls r0, r2, 1
- adds r0, r7
- ldrh r0, [r0]
- cmp r0, 0xF8
- bne _080171C0
- ldr r0, _080171BC @ =gBattleCommunication
- strb r3, [r0, 0x5]
- b _080171C6
- .align 2, 0
-_080171B4: .4byte gWishFutureKnock
-_080171B8: .4byte gBattleMons
-_080171BC: .4byte gBattleCommunication
-_080171C0:
- ldr r1, _08017220 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
-_080171C6:
- movs r0, 0xFD
- strb r0, [r6]
- movs r0, 0x2
- strb r0, [r6, 0x1]
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- strb r0, [r6, 0x2]
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r6, 0x3]
- movs r0, 0xFF
- strb r0, [r6, 0x4]
- ldr r3, _08017224 @ =gBankTarget
- ldrb r0, [r4]
- strb r0, [r3]
- ldr r1, _08017228 @ =gBankAttacker
- mov r0, r12
- adds r0, 0x4
- ldrb r2, [r4]
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r1, _0801722C @ =gBattleMoveDamage
- ldrb r0, [r4]
- lsls r0, 2
- add r0, r10
- ldr r0, [r0]
- str r0, [r1]
- ldr r2, _08017230 @ =gSpecialStatuses
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, 0x4
- adds r0, r2
- ldr r1, _08017234 @ =0x0000ffff
- str r1, [r0]
- ldr r0, _08017238 @ =gUnknown_081D92D7
- b _08017364
- .align 2, 0
-_08017220: .4byte gBattleCommunication
-_08017224: .4byte gBankTarget
-_08017228: .4byte gBankAttacker
-_0801722C: .4byte gBattleMoveDamage
-_08017230: .4byte gSpecialStatuses
-_08017234: .4byte 0x0000ffff
-_08017238: .4byte gUnknown_081D92D7
-_0801723C:
- ldrb r0, [r5]
- mov r3, r9
- ldrb r3, [r3]
- cmp r0, r3
- bcs _08017248
- b _0801713E
-_08017248:
- ldr r1, _0801729C @ =0x00016110
- add r1, r8
- movs r2, 0
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, _080172A0 @ =0x00016111
- add r0, r8
- strb r2, [r0]
-_08017258:
- ldr r2, _080172A0 @ =0x00016111
- add r2, r8
- ldr r0, _080172A4 @ =gNoOfAllBanks
- ldrb r1, [r2]
- mov r9, r0
- ldrb r0, [r0]
- cmp r1, r0
- bcc _0801726A
- b _08017380
-_0801726A:
- ldr r5, _080172A8 @ =gActiveBank
- adds r3, r2, 0
- ldr r4, _080172AC @ =gBattleTextBuff1
- ldr r7, _080172B0 @ =gDisableStructs
-_08017272:
- ldr r2, _080172B4 @ =gBankAttacker
- ldr r1, _080172B8 @ =gTurnOrder
- ldrb r0, [r3]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- strb r0, [r5]
- ldr r0, _080172BC @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _080172C0 @ =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _080172C4
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- b _08017374
- .align 2, 0
-_0801729C: .4byte 0x00016110
-_080172A0: .4byte 0x00016111
-_080172A4: .4byte gNoOfAllBanks
-_080172A8: .4byte gActiveBank
-_080172AC: .4byte gBattleTextBuff1
-_080172B0: .4byte gDisableStructs
-_080172B4: .4byte gBankAttacker
-_080172B8: .4byte gTurnOrder
-_080172BC: .4byte gAbsentBankFlags
-_080172C0: .4byte gBitTable
-_080172C4:
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- ldr r6, _08017334 @ =gStatuses3
- ldrb r2, [r5]
- lsls r0, r2, 2
- adds r0, r6
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08017374
- movs r0, 0xFD
- strb r0, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- strb r0, [r4, 0x2]
- strb r0, [r4, 0x3]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0, 0xF]
- lsls r0, 28
- lsrs r0, 28
- strb r0, [r4, 0x4]
- movs r0, 0xFF
- strb r0, [r4, 0x5]
- ldrb r2, [r5]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r4, r0, r7
- ldrb r3, [r4, 0xF]
- lsls r1, r3, 28
- cmp r1, 0
- bne _08017348
- lsls r2, 2
- adds r2, r6
- ldr r0, [r2]
- movs r1, 0x21
- negs r1, r1
- ands r0, r1
- str r0, [r2]
- ldr r3, _08017338 @ =gBattleMoveDamage
- ldr r2, _0801733C @ =gBattleMons
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- str r0, [r3]
- ldr r1, _08017340 @ =gBattlescriptCurrInstr
- ldr r0, _08017344 @ =gUnknown_081D9202
- b _08017360
- .align 2, 0
-_08017334: .4byte gStatuses3
-_08017338: .4byte gBattleMoveDamage
-_0801733C: .4byte gBattleMons
-_08017340: .4byte gBattlescriptCurrInstr
-_08017344: .4byte gUnknown_081D9202
-_08017348:
- lsrs r1, 28
- subs r1, 0x1
- movs r0, 0xF
- ands r1, r0
- movs r2, 0x10
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4, 0xF]
- ldr r1, _0801736C @ =gBattlescriptCurrInstr
- ldr r0, _08017370 @ =gUnknown_081D921D
-_08017360:
- str r0, [r1]
- ldr r0, [r1]
-_08017364:
- bl b_call_bc_move_exec
- movs r0, 0x1
- b _0801738C
- .align 2, 0
-_0801736C: .4byte gBattlescriptCurrInstr
-_08017370: .4byte gUnknown_081D921D
-_08017374:
- ldrb r0, [r3]
- mov r1, r9
- ldrb r1, [r1]
- cmp r0, r1
- bcs _08017380
- b _08017272
-_08017380:
- ldr r2, _0801739C @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _080173A0 @ =0xfeffffdf
- ands r0, r1
- str r0, [r2]
- movs r0, 0
-_0801738C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0801739C: .4byte gHitMarker
-_080173A0: .4byte 0xfeffffdf
- thumb_func_end sub_80170DC
-
- thumb_func_start sub_80173A4
-sub_80173A4: @ 80173A4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _080173C0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080173F8
- b _080176AC
- .align 2, 0
-_080173C0: .4byte gBattleTypeFlags
-_080173C4:
- ldr r0, _080173D4 @ =gUnknown_081D8C72
- bl b_call_bc_move_exec
- ldr r1, _080173D8 @ =0x00016059
- add r1, r10
- movs r0, 0x2
- b _080173E8
- .align 2, 0
-_080173D4: .4byte gUnknown_081D8C72
-_080173D8: .4byte 0x00016059
-_080173DC:
- ldr r0, _080173F0 @ =gUnknown_081D8C7B
- bl b_call_bc_move_exec
- ldr r1, _080173F4 @ =0x00016059
- add r1, r8
- movs r0, 0x5
-_080173E8:
- strb r0, [r1]
-_080173EA:
- movs r0, 0x1
- b _080176AE
- .align 2, 0
-_080173F0: .4byte gUnknown_081D8C7B
-_080173F4: .4byte 0x00016059
-_080173F8:
- ldr r0, _08017414 @ =0x02000000
- mov r9, r0
-_080173FC:
- ldr r0, _08017418 @ =0x00016059
- add r0, r9
- ldrb r0, [r0]
- cmp r0, 0x7
- bls _08017408
- b _080176A0
-_08017408:
- lsls r0, 2
- ldr r1, _0801741C @ =_08017420
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08017414: .4byte 0x02000000
-_08017418: .4byte 0x00016059
-_0801741C: .4byte _08017420
- .align 2, 0
-_08017420:
- .4byte _08017440
- .4byte _08017490
- .4byte _08017534
- .4byte _0801757C
- .4byte _0801758E
- .4byte _080175FC
- .4byte _08017638
- .4byte _080176A0
-_08017440:
- ldr r1, _08017508 @ =0x0001605a
- add r1, r9
- movs r0, 0
- strb r0, [r1]
- ldr r1, _0801750C @ =0x00016059
- add r1, r9
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r5, 0
- ldr r0, _08017510 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- bge _08017490
- ldr r6, _08017514 @ =gAbsentBankFlags
-_0801745E:
- ldrb r0, [r6]
- ldr r2, _08017518 @ =gBitTable
- lsls r1, r5, 2
- adds r1, r2
- ldr r4, [r1]
- ands r0, r4
- cmp r0, 0
- beq _08017486
- lsls r0, r5, 24
- lsrs r0, 24
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- bne _08017486
- ldrb r0, [r6]
- bics r0, r4
- strb r0, [r6]
-_08017486:
- adds r5, 0x1
- ldr r0, _08017510 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- blt _0801745E
-_08017490:
- ldr r1, _0801751C @ =0x02000000
- mov r9, r1
- ldr r0, _08017520 @ =gBank1
- mov r12, r0
- ldr r1, _08017524 @ =gBankTarget
- mov r8, r1
- mov r10, r9
- ldr r5, _08017508 @ =0x0001605a
- add r5, r9
- ldr r7, _08017528 @ =gBattleMons
- ldr r6, _0801752C @ =0x00016113
- add r6, r9
-_080174A8:
- ldrb r0, [r5]
- mov r1, r8
- strb r0, [r1]
- mov r1, r12
- strb r0, [r1]
- ldrb r3, [r5]
- movs r0, 0x58
- muls r0, r3
- adds r0, r7
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _080174EA
- ldrb r2, [r6]
- ldr r4, _08017518 @ =gBitTable
- ldr r1, _08017530 @ =gBattlePartyID
- lsls r0, r3, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ands r2, r0
- cmp r2, 0
- bne _080174EA
- ldr r0, _08017514 @ =gAbsentBankFlags
- ldrb r1, [r0]
- lsls r0, r3, 2
- adds r0, r4
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _080174EA
- b _080173C4
-_080174EA:
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldr r1, _08017510 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bne _080174A8
- ldr r1, _0801750C @ =0x00016059
- add r1, r9
- movs r0, 0x3
- strb r0, [r1]
- b _080176A0
- .align 2, 0
-_08017508: .4byte 0x0001605a
-_0801750C: .4byte 0x00016059
-_08017510: .4byte gNoOfAllBanks
-_08017514: .4byte gAbsentBankFlags
-_08017518: .4byte gBitTable
-_0801751C: .4byte 0x02000000
-_08017520: .4byte gBank1
-_08017524: .4byte gBankTarget
-_08017528: .4byte gBattleMons
-_0801752C: .4byte 0x00016113
-_08017530: .4byte gBattlePartyID
-_08017534:
- ldr r0, _0801755C @ =gBank1
- ldrb r0, [r0]
- bl sub_8015740
- ldr r2, _08017560 @ =0x02000000
- ldr r0, _08017564 @ =0x0001605a
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, _08017568 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bne _08017570
- ldr r0, _0801756C @ =0x00016059
- adds r1, r2, r0
- movs r0, 0x3
- b _0801769C
- .align 2, 0
-_0801755C: .4byte gBank1
-_08017560: .4byte 0x02000000
-_08017564: .4byte 0x0001605a
-_08017568: .4byte gNoOfAllBanks
-_0801756C: .4byte 0x00016059
-_08017570:
- ldr r0, _08017578 @ =0x00016059
- adds r1, r2, r0
- movs r0, 0x1
- b _0801769C
- .align 2, 0
-_08017578: .4byte 0x00016059
-_0801757C:
- ldr r1, _080175D8 @ =0x0001605a
- add r1, r9
- movs r0, 0
- strb r0, [r1]
- ldr r1, _080175DC @ =0x00016059
- add r1, r9
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0801758E:
- ldr r7, _080175E0 @ =gBank1
- ldr r6, _080175E4 @ =gBankTarget
- ldr r1, _080175E8 @ =0x02000000
- mov r8, r1
- ldr r3, _080175D8 @ =0x0001605a
- add r3, r8
- ldr r5, _080175EC @ =gBattleMons
- ldr r4, _080175F0 @ =gBitTable
-_0801759E:
- ldrb r0, [r3]
- strb r0, [r6]
- strb r0, [r7]
- ldrb r2, [r3]
- movs r0, 0x58
- muls r0, r2
- adds r0, r5
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _080175C4
- ldr r0, _080175F4 @ =gAbsentBankFlags
- ldrb r1, [r0]
- lsls r0, r2, 2
- adds r0, r4
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _080175C4
- b _080173DC
-_080175C4:
- adds r0, r2, 0x1
- strb r0, [r3]
- ldr r1, _080175F8 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bne _0801759E
- b _08017612
- .align 2, 0
-_080175D8: .4byte 0x0001605a
-_080175DC: .4byte 0x00016059
-_080175E0: .4byte gBank1
-_080175E4: .4byte gBankTarget
-_080175E8: .4byte 0x02000000
-_080175EC: .4byte gBattleMons
-_080175F0: .4byte gBitTable
-_080175F4: .4byte gAbsentBankFlags
-_080175F8: .4byte gNoOfAllBanks
-_080175FC:
- ldr r0, _0801761C @ =0x0001605a
- add r0, r9
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- ldr r0, _08017620 @ =gNoOfAllBanks
- lsls r1, 24
- lsrs r1, 24
- ldrb r0, [r0]
- cmp r1, r0
- bne _08017628
-_08017612:
- ldr r1, _08017624 @ =0x00016059
- add r1, r9
- movs r0, 0x6
- strb r0, [r1]
- b _080176A0
- .align 2, 0
-_0801761C: .4byte 0x0001605a
-_08017620: .4byte gNoOfAllBanks
-_08017624: .4byte 0x00016059
-_08017628:
- ldr r1, _08017634 @ =0x00016059
- add r1, r9
- movs r0, 0x4
- strb r0, [r1]
- b _080176A0
- .align 2, 0
-_08017634: .4byte 0x00016059
-_08017638:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x9
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08017652
- b _080173EA
-_08017652:
- str r0, [sp]
- movs r0, 0xB
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08017668
- b _080173EA
-_08017668:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x1
- bl sub_801A02C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0801767C
- b _080173EA
-_0801767C:
- str r0, [sp]
- movs r0, 0x6
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08017692
- b _080173EA
-_08017692:
- ldr r2, _080176C0 @ =0x02000000
- ldr r0, _080176C4 @ =0x00016059
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
-_0801769C:
- strb r0, [r1]
- mov r9, r2
-_080176A0:
- ldr r0, _080176C4 @ =0x00016059
- add r0, r9
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _080176AC
- b _080173FC
-_080176AC:
- movs r0, 0
-_080176AE:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080176C0: .4byte 0x02000000
-_080176C4: .4byte 0x00016059
- thumb_func_end sub_80173A4
-
- thumb_func_start b_clear_atk_up_if_hit_flag_unless_enraged
-b_clear_atk_up_if_hit_flag_unless_enraged: @ 80176C8
- push {r4-r6,lr}
- movs r3, 0
- ldr r0, _08017708 @ =gNoOfAllBanks
- adds r5, r0, 0
- ldrb r0, [r5]
- cmp r3, r0
- bge _08017700
- ldr r4, _0801770C @ =gChosenMovesByBanks
- movs r6, 0x80
- lsls r6, 16
- ldr r2, _08017710 @ =gUnknown_02024AD0
-_080176DE:
- ldr r1, [r2]
- adds r0, r1, 0
- ands r0, r6
- cmp r0, 0
- beq _080176F4
- ldrh r0, [r4]
- cmp r0, 0x63
- beq _080176F4
- ldr r0, _08017714 @ =0xff7fffff
- ands r1, r0
- str r1, [r2]
-_080176F4:
- adds r4, 0x2
- adds r2, 0x58
- adds r3, 0x1
- ldrb r0, [r5]
- cmp r3, r0
- blt _080176DE
-_08017700:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08017708: .4byte gNoOfAllBanks
-_0801770C: .4byte gChosenMovesByBanks
-_08017710: .4byte gUnknown_02024AD0
-_08017714: .4byte 0xff7fffff
- thumb_func_end b_clear_atk_up_if_hit_flag_unless_enraged
-
- thumb_func_start sub_8017718
-sub_8017718: @ 8017718
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- movs r0, 0
- mov r9, r0
- ldr r1, _08017734 @ =0x02016090
- mov r10, r1
- ldr r2, _08017738 @ =0xfffe9f70
- add r2, r10
- mov r8, r2
- b _08017746
- .align 2, 0
-_08017734: .4byte 0x02016090
-_08017738: .4byte 0xfffe9f70
-_0801773C:
- mov r4, r9
- cmp r4, 0
- beq _08017746
- bl _08017FAC
-_08017746:
- ldr r0, _08017760 @ =0x000160e7
- add r0, r8
- ldrb r0, [r0]
- cmp r0, 0xE
- bls _08017754
- bl _08017F9E
-_08017754:
- lsls r0, 2
- ldr r1, _08017764 @ =_08017768
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08017760: .4byte 0x000160e7
-_08017764: .4byte _08017768
- .align 2, 0
-_08017768:
- .4byte _080177A4
- .4byte _080177E4
- .4byte _08017920
- .4byte _080179D8
- .4byte _08017A50
- .4byte _08017AC8
- .4byte _08017B1C
- .4byte _08017B98
- .4byte _08017C1C
- .4byte _08017C60
- .4byte _08017D3C
- .4byte _08017DC0
- .4byte _08017E5C
- .4byte _08017F48
- .4byte _08017F9E
-_080177A4:
- ldr r1, _080177D0 @ =gBattleMons
- ldr r3, _080177D4 @ =gBankAttacker
- ldrb r2, [r3]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x50
- adds r2, r1
- ldr r0, [r2]
- ldr r1, _080177D8 @ =0xfdffffff
- ands r0, r1
- str r0, [r2]
- ldr r0, _080177DC @ =gStatuses3
- ldrb r2, [r3]
- lsls r2, 2
- adds r2, r0
- ldr r0, [r2]
- ldr r1, _080177E0 @ =0xffffbfff
- ands r0, r1
- str r0, [r2]
- bl _08017F94
- .align 2, 0
-_080177D0: .4byte gBattleMons
-_080177D4: .4byte gBankAttacker
-_080177D8: .4byte 0xfdffffff
-_080177DC: .4byte gStatuses3
-_080177E0: .4byte 0xffffbfff
-_080177E4:
- ldr r7, _0801784C @ =gBattleMons
- ldr r4, _08017850 @ =gBankAttacker
- ldrb r1, [r4]
- movs r5, 0x58
- adds r0, r1, 0
- muls r0, r5
- adds r6, r7, 0
- adds r6, 0x4C
- adds r0, r6
- ldr r0, [r0]
- movs r2, 0x7
- mov r8, r2
- ands r0, r2
- cmp r0, 0
- bne _08017804
- b _08017D90
-_08017804:
- adds r0, r1, 0
- bl sub_8025A44
- lsls r0, 24
- cmp r0, 0
- beq _08017864
- ldrb r0, [r4]
- adds r2, r0, 0
- muls r2, r5
- adds r2, r6
- ldr r0, [r2]
- movs r1, 0x8
- negs r1, r1
- ands r0, r1
- str r0, [r2]
- ldrb r0, [r4]
- adds r2, r0, 0
- muls r2, r5
- adds r0, r7, 0
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- ldr r1, _08017854 @ =0xf7ffffff
- ands r0, r1
- str r0, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _08017858 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- ldr r1, _0801785C @ =gBattlescriptCurrInstr
- ldr r0, _08017860 @ =gUnknown_081D94FB
- str r0, [r1]
- movs r4, 0x2
- mov r9, r4
- b _08017D90
- .align 2, 0
-_0801784C: .4byte gBattleMons
-_08017850: .4byte gBankAttacker
-_08017854: .4byte 0xf7ffffff
-_08017858: .4byte gBattleCommunication
-_0801785C: .4byte gBattlescriptCurrInstr
-_08017860: .4byte gUnknown_081D94FB
-_08017864:
- ldrb r0, [r4]
- adds r1, r0, 0
- muls r1, r5
- adds r0, r1, r7
- adds r0, 0x20
- ldrb r0, [r0]
- movs r3, 0x1
- cmp r0, 0x30
- bne _08017878
- movs r3, 0x2
-_08017878:
- adds r2, r1, r6
- ldr r1, [r2]
- adds r0, r1, 0
- mov r7, r8
- ands r0, r7
- cmp r0, r3
- bcs _08017890
- movs r0, 0x8
- negs r0, r0
- ands r1, r0
- str r1, [r2]
- b _08017894
-_08017890:
- subs r0, r1, r3
- str r0, [r2]
-_08017894:
- ldr r2, _080178D8 @ =gBattleMons
- ldr r0, _080178DC @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r0, r2, 0
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r4, [r0]
- movs r0, 0x7
- ands r4, r0
- cmp r4, 0
- beq _080178F0
- ldr r0, _080178E0 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xAD
- bne _080178B8
- b _08017D90
-_080178B8:
- cmp r0, 0xD6
- bne _080178BE
- b _08017D90
-_080178BE:
- ldr r1, _080178E4 @ =gBattlescriptCurrInstr
- ldr r0, _080178E8 @ =gUnknown_081D94EE
- str r0, [r1]
- ldr r2, _080178EC @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 12
- orrs r0, r1
- str r0, [r2]
- movs r0, 0x2
- mov r9, r0
- b _08017D90
- .align 2, 0
-_080178D8: .4byte gBattleMons
-_080178DC: .4byte gBankAttacker
-_080178E0: .4byte gCurrentMove
-_080178E4: .4byte gBattlescriptCurrInstr
-_080178E8: .4byte gUnknown_081D94EE
-_080178EC: .4byte gHitMarker
-_080178F0:
- adds r2, 0x50
- adds r2, r1, r2
- ldr r0, [r2]
- ldr r1, _08017910 @ =0xf7ffffff
- ands r0, r1
- str r0, [r2]
- bl b_movescr_stack_push_cursor
- ldr r0, _08017914 @ =gBattleCommunication
- strb r4, [r0, 0x5]
- ldr r1, _08017918 @ =gBattlescriptCurrInstr
- ldr r0, _0801791C @ =gUnknown_081D94FB
- str r0, [r1]
- movs r1, 0x2
- b _08017D8E
- .align 2, 0
-_08017910: .4byte 0xf7ffffff
-_08017914: .4byte gBattleCommunication
-_08017918: .4byte gBattlescriptCurrInstr
-_0801791C: .4byte gUnknown_081D94FB
-_08017920:
- ldr r1, _0801797C @ =gBattleMons
- ldr r7, _08017980 @ =gBankAttacker
- ldrb r0, [r7]
- movs r6, 0x58
- muls r0, r6
- adds r5, r1, 0
- adds r5, 0x4C
- adds r0, r5
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0801793C
- b _08017F94
-_0801793C:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x5
- bl __umodsi3
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _080179A8
- ldr r2, _08017984 @ =gBattleMoves
- ldr r0, _08017988 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x7D
- beq _08017998
- ldr r1, _0801798C @ =gBattlescriptCurrInstr
- ldr r0, _08017990 @ =gUnknown_081D9545
- str r0, [r1]
- ldr r2, _08017994 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 2
- orrs r0, r1
- str r0, [r2]
- b _080179C8
- .align 2, 0
-_0801797C: .4byte gBattleMons
-_08017980: .4byte gBankAttacker
-_08017984: .4byte gBattleMoves
-_08017988: .4byte gCurrentMove
-_0801798C: .4byte gBattlescriptCurrInstr
-_08017990: .4byte gUnknown_081D9545
-_08017994: .4byte gHitMarker
-_08017998:
- ldr r2, _080179A0 @ =0x02000000
- ldr r7, _080179A4 @ =0x000160e7
- adds r1, r2, r7
- b _08017D96
- .align 2, 0
-_080179A0: .4byte 0x02000000
-_080179A4: .4byte 0x000160e7
-_080179A8:
- ldrb r0, [r7]
- adds r2, r0, 0
- muls r2, r6
- adds r2, r5
- ldr r0, [r2]
- movs r1, 0x21
- negs r1, r1
- ands r0, r1
- str r0, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _080179CC @ =gBattlescriptCurrInstr
- ldr r0, _080179D0 @ =gUnknown_081D9552
- str r0, [r1]
- ldr r0, _080179D4 @ =gBattleCommunication
- strb r4, [r0, 0x5]
-_080179C8:
- movs r0, 0x2
- b _08017E3C
- .align 2, 0
-_080179CC: .4byte gBattlescriptCurrInstr
-_080179D0: .4byte gUnknown_081D9552
-_080179D4: .4byte gBattleCommunication
-_080179D8:
- ldr r1, _08017A30 @ =gBattleMons
- ldr r0, _08017A34 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x36
- beq _080179EE
- b _08017D90
-_080179EE:
- ldr r0, _08017A38 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x18]
- lsls r0, 31
- cmp r0, 0
- bne _08017A02
- b _08017D90
-_08017A02:
- adds r0, r2, 0
- bl CancelMultiTurnMoves
- ldr r2, _08017A3C @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 12
- orrs r0, r1
- str r0, [r2]
- ldr r1, _08017A40 @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
- ldr r1, _08017A44 @ =gBattlescriptCurrInstr
- ldr r0, _08017A48 @ =gUnknown_081D9977
- str r0, [r1]
- ldr r2, _08017A4C @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- movs r2, 0x1
- mov r9, r2
- b _08017D90
- .align 2, 0
-_08017A30: .4byte gBattleMons
-_08017A34: .4byte gBankAttacker
-_08017A38: .4byte gDisableStructs
-_08017A3C: .4byte gHitMarker
-_08017A40: .4byte gBattleCommunication
-_08017A44: .4byte gBattlescriptCurrInstr
-_08017A48: .4byte gUnknown_081D9977
-_08017A4C: .4byte gBattleMoveFlags
-_08017A50:
- ldr r1, _08017AA4 @ =gBattleMons
- ldr r3, _08017AA8 @ =gBankAttacker
- ldrb r2, [r3]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r2, r0, r1
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 15
- ands r0, r1
- cmp r0, 0
- beq _08017A9C
- ldr r0, _08017AAC @ =0xffbfffff
- ands r1, r0
- str r1, [r2]
- ldr r2, _08017AB0 @ =gDisableStructs
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strb r1, [r0, 0x19]
- ldrb r0, [r3]
- bl CancelMultiTurnMoves
- ldr r1, _08017AB4 @ =gBattlescriptCurrInstr
- ldr r0, _08017AB8 @ =gUnknown_081D7956
- str r0, [r1]
- ldr r2, _08017ABC @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 12
- orrs r0, r1
- str r0, [r2]
- movs r7, 0x1
- mov r9, r7
-_08017A9C:
- ldr r2, _08017AC0 @ =0x02000000
- ldr r0, _08017AC4 @ =0x000160e7
- adds r1, r2, r0
- b _08017D96
- .align 2, 0
-_08017AA4: .4byte gBattleMons
-_08017AA8: .4byte gBankAttacker
-_08017AAC: .4byte 0xffbfffff
-_08017AB0: .4byte gDisableStructs
-_08017AB4: .4byte gBattlescriptCurrInstr
-_08017AB8: .4byte gUnknown_081D7956
-_08017ABC: .4byte gHitMarker
-_08017AC0: .4byte 0x02000000
-_08017AC4: .4byte 0x000160e7
-_08017AC8:
- ldr r1, _08017B08 @ =gBattleMons
- ldr r3, _08017B0C @ =gBankAttacker
- ldrb r2, [r3]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r2, r0, r1
- ldr r1, [r2]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _08017AE2
- b _08017D90
-_08017AE2:
- movs r0, 0x9
- negs r0, r0
- ands r1, r0
- str r1, [r2]
- ldr r0, _08017B10 @ =gProtectStructs
- ldrb r2, [r3]
- lsls r2, 4
- adds r2, r0
- ldrb r0, [r2, 0x2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2, 0x2]
- ldrb r0, [r3]
- bl CancelMultiTurnMoves
- ldr r1, _08017B14 @ =gBattlescriptCurrInstr
- ldr r0, _08017B18 @ =gUnknown_081D9573
- b _08017D7E
- .align 2, 0
-_08017B08: .4byte gBattleMons
-_08017B0C: .4byte gBankAttacker
-_08017B10: .4byte gProtectStructs
-_08017B14: .4byte gBattlescriptCurrInstr
-_08017B18: .4byte gUnknown_081D9573
-_08017B1C:
- ldr r0, _08017B74 @ =gDisableStructs
- ldr r3, _08017B78 @ =gBankAttacker
- ldrb r2, [r3]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldr r0, _08017B7C @ =gCurrentMove
- ldrh r1, [r1, 0x4]
- ldrh r0, [r0]
- cmp r1, r0
- beq _08017B36
- b _08017D90
-_08017B36:
- cmp r1, 0
- bne _08017B3C
- b _08017D90
-_08017B3C:
- ldr r0, _08017B80 @ =gProtectStructs
- lsls r2, 4
- adds r2, r0
- ldrb r0, [r2, 0x1]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldr r0, _08017B84 @ =0x02000000
- ldrb r1, [r3]
- ldr r7, _08017B88 @ =0x00016003
- adds r0, r7
- strb r1, [r0]
- ldrb r0, [r3]
- bl CancelMultiTurnMoves
- ldr r1, _08017B8C @ =gBattlescriptCurrInstr
- ldr r0, _08017B90 @ =gUnknown_081D9139
- str r0, [r1]
- ldr r2, _08017B94 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 12
- orrs r0, r1
- str r0, [r2]
- movs r0, 0x1
- mov r9, r0
- b _08017D90
- .align 2, 0
-_08017B74: .4byte gDisableStructs
-_08017B78: .4byte gBankAttacker
-_08017B7C: .4byte gCurrentMove
-_08017B80: .4byte gProtectStructs
-_08017B84: .4byte 0x02000000
-_08017B88: .4byte 0x00016003
-_08017B8C: .4byte gBattlescriptCurrInstr
-_08017B90: .4byte gUnknown_081D9139
-_08017B94: .4byte gHitMarker
-_08017B98:
- ldr r0, _08017BF4 @ =gDisableStructs
- ldr r4, _08017BF8 @ =gBankAttacker
- ldrb r3, [r4]
- lsls r1, r3, 3
- subs r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x13]
- lsls r0, 28
- cmp r0, 0
- beq _08017BEC
- ldr r2, _08017BFC @ =gBattleMoves
- ldr r0, _08017C00 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08017BEC
- ldr r0, _08017C04 @ =gProtectStructs
- lsls r2, r3, 4
- adds r2, r0
- ldrb r0, [r2, 0x2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x2]
- ldrb r0, [r4]
- bl CancelMultiTurnMoves
- ldr r1, _08017C08 @ =gBattlescriptCurrInstr
- ldr r0, _08017C0C @ =gUnknown_081D938F
- str r0, [r1]
- ldr r2, _08017C10 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 12
- orrs r0, r1
- str r0, [r2]
- movs r7, 0x1
- mov r9, r7
-_08017BEC:
- ldr r2, _08017C14 @ =0x02000000
- ldr r0, _08017C18 @ =0x000160e7
- adds r1, r2, r0
- b _08017D96
- .align 2, 0
-_08017BF4: .4byte gDisableStructs
-_08017BF8: .4byte gBankAttacker
-_08017BFC: .4byte gBattleMoves
-_08017C00: .4byte gCurrentMove
-_08017C04: .4byte gProtectStructs
-_08017C08: .4byte gBattlescriptCurrInstr
-_08017C0C: .4byte gUnknown_081D938F
-_08017C10: .4byte gHitMarker
-_08017C14: .4byte 0x02000000
-_08017C18: .4byte 0x000160e7
-_08017C1C:
- ldr r4, _08017C4C @ =gBankAttacker
- ldrb r0, [r4]
- ldr r1, _08017C50 @ =gCurrentMove
- ldrh r1, [r1]
- bl sub_8015D5C
- lsls r0, 24
- cmp r0, 0
- bne _08017C30
- b _08017D90
-_08017C30:
- ldr r0, _08017C54 @ =gProtectStructs
- ldrb r2, [r4]
- lsls r2, 4
- adds r2, r0
- ldrb r0, [r2, 0x1]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r0, [r4]
- bl CancelMultiTurnMoves
- ldr r1, _08017C58 @ =gBattlescriptCurrInstr
- ldr r0, _08017C5C @ =gUnknown_081D9459
- b _08017D7E
- .align 2, 0
-_08017C4C: .4byte gBankAttacker
-_08017C50: .4byte gCurrentMove
-_08017C54: .4byte gProtectStructs
-_08017C58: .4byte gBattlescriptCurrInstr
-_08017C5C: .4byte gUnknown_081D9459
-_08017C60:
- ldr r7, _08017CAC @ =gBattleMons
- ldr r5, _08017CB0 @ =gBankAttacker
- ldrb r0, [r5]
- movs r6, 0x58
- muls r0, r6
- adds r4, r7, 0
- adds r4, 0x50
- adds r2, r0, r4
- ldr r1, [r2]
- movs r3, 0x7
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- bne _08017C7E
- b _08017F94
-_08017C7E:
- subs r0, r1, 0x1
- str r0, [r2]
- ldrb r0, [r5]
- muls r0, r6
- adds r0, r4
- ldr r0, [r0]
- ands r0, r3
- cmp r0, 0
- beq _08017D24
- bl Random
- movs r1, 0x1
- movs r2, 0x1
- ands r2, r0
- cmp r2, 0
- beq _08017CB8
- ldr r1, _08017CB4 @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
- bl b_movescr_stack_push_cursor
- b _08017D02
- .align 2, 0
-_08017CAC: .4byte gBattleMons
-_08017CB0: .4byte gBankAttacker
-_08017CB4: .4byte gBattleCommunication
-_08017CB8:
- ldr r0, _08017D08 @ =gBattleCommunication
- movs r4, 0x1
- strb r1, [r0, 0x5]
- ldr r1, _08017D0C @ =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- ldrb r0, [r5]
- adds r1, r0, 0
- muls r1, r6
- adds r1, r7
- movs r0, 0x28
- str r0, [sp]
- str r2, [sp, 0x4]
- ldrb r0, [r5]
- str r0, [sp, 0x8]
- ldrb r0, [r5]
- str r0, [sp, 0xC]
- adds r0, r1, 0
- movs r2, 0x1
- movs r3, 0
- bl CalculateBaseDamage
- ldr r1, _08017D10 @ =gBattleMoveDamage
- str r0, [r1]
- ldr r0, _08017D14 @ =gProtectStructs
- ldrb r1, [r5]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1, 0x1]
- orrs r0, r4
- strb r0, [r1, 0x1]
- ldr r2, _08017D18 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 12
- orrs r0, r1
- str r0, [r2]
-_08017D02:
- ldr r1, _08017D1C @ =gBattlescriptCurrInstr
- ldr r0, _08017D20 @ =gUnknown_081D9595
- b _08017D2C
- .align 2, 0
-_08017D08: .4byte gBattleCommunication
-_08017D0C: .4byte gBankTarget
-_08017D10: .4byte gBattleMoveDamage
-_08017D14: .4byte gProtectStructs
-_08017D18: .4byte gHitMarker
-_08017D1C: .4byte gBattlescriptCurrInstr
-_08017D20: .4byte gUnknown_081D9595
-_08017D24:
- bl b_movescr_stack_push_cursor
- ldr r1, _08017D34 @ =gBattlescriptCurrInstr
- ldr r0, _08017D38 @ =gUnknown_081D95D4
-_08017D2C:
- str r0, [r1]
- movs r7, 0x1
- b _08017F8E
- .align 2, 0
-_08017D34: .4byte gBattlescriptCurrInstr
-_08017D38: .4byte gUnknown_081D95D4
-_08017D3C:
- ldr r1, _08017DA0 @ =gBattleMons
- ldr r4, _08017DA4 @ =gBankAttacker
- ldrb r2, [r4]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08017D90
- bl Random
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- cmp r1, 0
- bne _08017D90
- ldr r0, _08017DA8 @ =gProtectStructs
- ldrb r2, [r4]
- lsls r2, 4
- adds r2, r0
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4]
- bl CancelMultiTurnMoves
- ldr r1, _08017DAC @ =gBattlescriptCurrInstr
- ldr r0, _08017DB0 @ =gUnknown_081D9566
-_08017D7E:
- str r0, [r1]
- ldr r2, _08017DB4 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 12
- orrs r0, r1
- str r0, [r2]
- movs r1, 0x1
-_08017D8E:
- mov r9, r1
-_08017D90:
- ldr r2, _08017DB8 @ =0x02000000
- ldr r4, _08017DBC @ =0x000160e7
- adds r1, r2, r4
-_08017D96:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r8, r2
- b _08017F9E
- .align 2, 0
-_08017DA0: .4byte gBattleMons
-_08017DA4: .4byte gBankAttacker
-_08017DA8: .4byte gProtectStructs
-_08017DAC: .4byte gBattlescriptCurrInstr
-_08017DB0: .4byte gUnknown_081D9566
-_08017DB4: .4byte gHitMarker
-_08017DB8: .4byte 0x02000000
-_08017DBC: .4byte 0x000160e7
-_08017DC0:
- ldr r1, _08017DFC @ =gBattleMons
- ldr r4, _08017E00 @ =gBankAttacker
- ldrb r2, [r4]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0xF0
- lsls r0, 12
- ands r1, r0
- cmp r1, 0
- bne _08017DDC
- b _08017F94
-_08017DDC:
- lsrs r0, r1, 16
- bl CountTrailingZeroBits
- ldr r1, _08017E04 @ =0x02000000
- ldr r7, _08017E08 @ =0x00016003
- adds r1, r7
- strb r0, [r1]
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08017E0C
- bl b_movescr_stack_push_cursor
- b _08017E34
- .align 2, 0
-_08017DFC: .4byte gBattleMons
-_08017E00: .4byte gBankAttacker
-_08017E04: .4byte 0x02000000
-_08017E08: .4byte 0x00016003
-_08017E0C:
- ldr r0, _08017E44 @ =gUnknown_081D9608
- bl b_movescr_stack_push
- ldr r2, _08017E48 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 12
- orrs r0, r1
- str r0, [r2]
- ldr r0, _08017E4C @ =gProtectStructs
- ldrb r2, [r4]
- lsls r2, 4
- adds r2, r0
- ldrb r0, [r2, 0x1]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r0, [r4]
- bl CancelMultiTurnMoves
-_08017E34:
- ldr r1, _08017E50 @ =gBattlescriptCurrInstr
- ldr r0, _08017E54 @ =gUnknown_081D95FB
- str r0, [r1]
- movs r0, 0x1
-_08017E3C:
- mov r9, r0
- ldr r1, _08017E58 @ =0x02000000
- mov r8, r1
- b _08017F94
- .align 2, 0
-_08017E44: .4byte gUnknown_081D9608
-_08017E48: .4byte gHitMarker
-_08017E4C: .4byte gProtectStructs
-_08017E50: .4byte gBattlescriptCurrInstr
-_08017E54: .4byte gUnknown_081D95FB
-_08017E58: .4byte 0x02000000
-_08017E5C:
- ldr r1, _08017E98 @ =gBattleMons
- ldr r6, _08017E9C @ =gBankAttacker
- ldrb r0, [r6]
- movs r5, 0x58
- muls r0, r5
- adds r1, 0x50
- adds r3, r0, r1
- ldr r2, [r3]
- movs r4, 0xC0
- lsls r4, 2
- adds r0, r2, 0
- ands r0, r4
- cmp r0, 0
- bne _08017E7A
- b _08017F94
-_08017E7A:
- ldr r7, _08017EA0 @ =0xffffff00
- adds r0, r2, r7
- str r0, [r3]
- ldrb r0, [r6]
- muls r0, r5
- adds r1, r0, r1
- ldr r2, [r1]
- adds r0, r2, 0
- ands r0, r4
- cmp r0, 0
- beq _08017EAC
- ldr r1, _08017EA4 @ =gBattlescriptCurrInstr
- ldr r0, _08017EA8 @ =gUnknown_081D90A7
- b _08017F38
- .align 2, 0
-_08017E98: .4byte gBattleMons
-_08017E9C: .4byte gBankAttacker
-_08017EA0: .4byte 0xffffff00
-_08017EA4: .4byte gBattlescriptCurrInstr
-_08017EA8: .4byte gUnknown_081D90A7
-_08017EAC:
- ldr r0, _08017F0C @ =0xffffefff
- ands r2, r0
- str r2, [r1]
- ldr r2, _08017F10 @ =gTakenDmg
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- cmp r0, 0
- beq _08017F34
- ldr r1, _08017F14 @ =gCurrentMove
- movs r0, 0x75
- strh r0, [r1]
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- lsls r0, 1
- mov r1, r10
- str r0, [r1]
- ldr r4, _08017F18 @ =gBankTarget
- ldr r1, _08017F1C @ =gTakenDmgBanks
- ldrb r0, [r6]
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r0, _08017F20 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _08017F24 @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08017EFE
- movs r0, 0x75
- movs r1, 0x1
- bl sub_801B5C0
- strb r0, [r4]
-_08017EFE:
- ldr r1, _08017F28 @ =gBattlescriptCurrInstr
- ldr r0, _08017F2C @ =gUnknown_081D90B2
- str r0, [r1]
- ldr r2, _08017F30 @ =0x02000000
- mov r8, r2
- b _08017F3A
- .align 2, 0
-_08017F0C: .4byte 0xffffefff
-_08017F10: .4byte gTakenDmg
-_08017F14: .4byte gCurrentMove
-_08017F18: .4byte gBankTarget
-_08017F1C: .4byte gTakenDmgBanks
-_08017F20: .4byte gAbsentBankFlags
-_08017F24: .4byte gBitTable
-_08017F28: .4byte gBattlescriptCurrInstr
-_08017F2C: .4byte gUnknown_081D90B2
-_08017F30: .4byte 0x02000000
-_08017F34:
- ldr r1, _08017F40 @ =gBattlescriptCurrInstr
- ldr r0, _08017F44 @ =gUnknown_081D90F1
-_08017F38:
- str r0, [r1]
-_08017F3A:
- movs r4, 0x1
- mov r9, r4
- b _08017F94
- .align 2, 0
-_08017F40: .4byte gBattlescriptCurrInstr
-_08017F44: .4byte gUnknown_081D90F1
-_08017F48:
- ldr r1, _08017FEC @ =gBattleMons
- ldr r0, _08017FF0 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r4, r0, r1
- ldr r3, [r4]
- movs r0, 0x20
- ands r0, r3
- cmp r0, 0
- beq _08017F94
- ldr r2, _08017FF4 @ =gBattleMoves
- ldr r0, _08017FF8 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x7D
- bne _08017F8C
- movs r0, 0x21
- negs r0, r0
- ands r3, r0
- str r3, [r4]
- bl b_movescr_stack_push_cursor
- ldr r1, _08017FFC @ =gBattlescriptCurrInstr
- ldr r0, _08018000 @ =gUnknown_081D9552
- str r0, [r1]
- ldr r1, _08018004 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
-_08017F8C:
- movs r7, 0x2
-_08017F8E:
- mov r9, r7
- ldr r0, _08018008 @ =0x02000000
- mov r8, r0
-_08017F94:
- ldr r1, _0801800C @ =0x000160e7
- add r1, r8
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08017F9E:
- ldr r0, _0801800C @ =0x000160e7
- add r0, r8
- ldrb r0, [r0]
- cmp r0, 0xE
- beq _08017FAC
- bl _0801773C
-_08017FAC:
- mov r1, r9
- cmp r1, 0x2
- bne _08017FD8
- ldr r4, _08018010 @ =gActiveBank
- ldr r0, _08017FF0 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- ldr r1, _08018014 @ =gUnknown_02024ACC
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08017FD8:
- mov r0, r9
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08017FEC: .4byte gBattleMons
-_08017FF0: .4byte gBankAttacker
-_08017FF4: .4byte gBattleMoves
-_08017FF8: .4byte gCurrentMove
-_08017FFC: .4byte gBattlescriptCurrInstr
-_08018000: .4byte gUnknown_081D9552
-_08018004: .4byte gBattleCommunication
-_08018008: .4byte 0x02000000
-_0801800C: .4byte 0x000160e7
-_08018010: .4byte gActiveBank
-_08018014: .4byte gUnknown_02024ACC
- thumb_func_end sub_8017718
-
- thumb_func_start sub_8018018
-sub_8018018: @ 8018018
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r3, r4, 0
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- ldr r0, _08018044 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08018048
- movs r0, 0
- b _08018198
- .align 2, 0
-_08018044: .4byte gBattleTypeFlags
-_08018048:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080180D4
- adds r0, r4, 0
- bl sub_803FC34
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- ldr r1, _080180CC @ =gEnemyParty
- mov r8, r1
- cmp r0, 0
- bne _0801806E
- ldr r2, _080180D0 @ =gPlayerParty
- mov r8, r2
-_0801806E:
- adds r0, r7, 0
- bl sub_803FBFC
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 1
- adds r5, r0, r6
- adds r0, r5, 0x3
- cmp r5, r0
- bge _080180BA
- adds r7, r0, 0
-_08018084:
- movs r0, 0x64
- muls r0, r5
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080180B4
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _080180B4
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _080180BA
-_080180B4:
- adds r5, 0x1
- cmp r5, r7
- blt _08018084
-_080180BA:
- movs r1, 0
- lsls r0, r6, 1
- adds r0, r6
- adds r0, 0x3
- cmp r5, r0
- bne _080180C8
- movs r1, 0x1
-_080180C8:
- adds r0, r1, 0
- b _08018198
- .align 2, 0
-_080180CC: .4byte gEnemyParty
-_080180D0: .4byte gPlayerParty
-_080180D4:
- adds r0, r3, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08018100
- movs r0, 0x1
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0x3
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r2, _080180FC @ =gEnemyParty
- mov r8, r2
- b _08018118
- .align 2, 0
-_080180FC: .4byte gEnemyParty
-_08018100:
- movs r0, 0
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0x2
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _080181A8 @ =gPlayerParty
- mov r8, r0
-_08018118:
- mov r1, r10
- cmp r1, 0x6
- bne _08018128
- ldr r1, _080181AC @ =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrb r0, [r0]
- mov r10, r0
-_08018128:
- mov r2, r9
- cmp r2, 0x6
- bne _08018138
- ldr r1, _080181AC @ =gBattlePartyID
- lsls r0, r6, 1
- adds r0, r1
- ldrb r0, [r0]
- mov r9, r0
-_08018138:
- movs r5, 0
-_0801813A:
- movs r0, 0x64
- muls r0, r5
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0801818A
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _0801818A
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _0801818A
- cmp r5, r10
- beq _0801818A
- cmp r5, r9
- beq _0801818A
- ldr r1, _080181B0 @ =0x02000000
- ldr r2, _080181B4 @ =0x00016068
- adds r0, r7, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r5, r0
- beq _0801818A
- adds r0, r6, r2
- adds r0, r1
- ldrb r0, [r0]
- cmp r5, r0
- bne _08018190
-_0801818A:
- adds r5, 0x1
- cmp r5, 0x5
- ble _0801813A
-_08018190:
- movs r0, 0
- cmp r5, 0x6
- bne _08018198
- movs r0, 0x1
-_08018198:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080181A8: .4byte gPlayerParty
-_080181AC: .4byte gBattlePartyID
-_080181B0: .4byte 0x02000000
-_080181B4: .4byte 0x00016068
- thumb_func_end sub_8018018
-
- thumb_func_start castform_switch
-castform_switch: @ 80181B8
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
- ldr r1, _08018228 @ =gBattleMons
- movs r0, 0x58
- muls r0, r6
- adds r4, r0, r1
- ldrh r1, [r4]
- ldr r0, _0801822C @ =SPECIES_CASTFORM
- cmp r1, r0
- bne _0801825C
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x3B
- bne _0801825C
- ldrh r0, [r4, 0x28]
- cmp r0, 0
- beq _0801825C
- str r5, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801820A
- str r5, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08018230
-_0801820A:
- adds r2, r4, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0
- beq _08018230
- adds r1, r4, 0
- adds r1, 0x22
- ldrb r0, [r1]
- cmp r0, 0
- beq _08018230
- strb r5, [r2]
- strb r5, [r1]
- movs r0, 0x1
- b _08018314
- .align 2, 0
-_08018228: .4byte gBattleMons
-_0801822C: .4byte SPECIES_CASTFORM
-_08018230:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0801825C
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08018260
-_0801825C:
- movs r0, 0
- b _08018314
-_08018260:
- ldr r1, _0801831C @ =gBattleWeather
- ldrh r0, [r1]
- movs r2, 0xE7
- ands r2, r0
- adds r4, r1, 0
- cmp r2, 0
- bne _0801828E
- ldr r1, _08018320 @ =gBattleMons
- movs r0, 0x58
- muls r0, r6
- adds r1, r0, r1
- adds r3, r1, 0
- adds r3, 0x21
- ldrb r0, [r3]
- cmp r0, 0
- beq _0801828E
- adds r1, 0x22
- ldrb r0, [r1]
- cmp r0, 0
- beq _0801828E
- strb r2, [r3]
- strb r2, [r1]
- movs r5, 0x1
-_0801828E:
- ldrh r1, [r4]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _080182BA
- ldr r1, _08018320 @ =gBattleMons
- movs r0, 0x58
- muls r0, r6
- adds r1, r0, r1
- adds r2, r1, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0xA
- beq _080182BA
- adds r1, 0x22
- ldrb r0, [r1]
- cmp r0, 0xA
- beq _080182BA
- movs r0, 0xA
- strb r0, [r2]
- strb r0, [r1]
- movs r5, 0x2
-_080182BA:
- ldrh r1, [r4]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _080182E6
- ldr r1, _08018320 @ =gBattleMons
- movs r0, 0x58
- muls r0, r6
- adds r1, r0, r1
- adds r2, r1, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0xB
- beq _080182E6
- adds r1, 0x22
- ldrb r0, [r1]
- cmp r0, 0xB
- beq _080182E6
- movs r0, 0xB
- strb r0, [r2]
- strb r0, [r1]
- movs r5, 0x3
-_080182E6:
- ldrh r1, [r4]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08018312
- ldr r1, _08018320 @ =gBattleMons
- movs r0, 0x58
- muls r0, r6
- adds r1, r0, r1
- adds r2, r1, 0
- adds r2, 0x21
- ldrb r0, [r2]
- cmp r0, 0xF
- beq _08018312
- adds r1, 0x22
- ldrb r0, [r1]
- cmp r0, 0xF
- beq _08018312
- movs r0, 0xF
- strb r0, [r2]
- strb r0, [r1]
- movs r5, 0x4
-_08018312:
- adds r0, r5, 0
-_08018314:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0801831C: .4byte gBattleWeather
-_08018320: .4byte gBattleMons
- thumb_func_end castform_switch
-
- thumb_func_start AbilityBattleEffects
-AbilityBattleEffects: @ 8018324
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- ldr r4, [sp, 0x48]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r6, r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- lsls r4, 16
- lsrs r4, 16
- movs r0, 0
- mov r9, r0
- ldr r5, _08018380 @ =gBankAttacker
- ldr r1, _08018384 @ =gNoOfAllBanks
- ldrb r0, [r5]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08018360
- mov r1, r10
- strb r1, [r5]
-_08018360:
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08018390
- ldr r1, _08018388 @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0801838C @ =gPlayerParty
- b _080183A0
- .align 2, 0
-_08018380: .4byte gBankAttacker
-_08018384: .4byte gNoOfAllBanks
-_08018388: .4byte gBattlePartyID
-_0801838C: .4byte gPlayerParty
-_08018390:
- ldr r1, _080183D0 @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _080183D4 @ =gEnemyParty
-_080183A0:
- adds r7, r1, r0
- ldr r5, _080183D8 @ =gBankTarget
- ldr r1, _080183DC @ =gNoOfAllBanks
- ldrb r0, [r5]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _080183B2
- mov r2, r10
- strb r2, [r5]
-_080183B2:
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080183E4
- ldr r1, _080183D0 @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _080183E0 @ =gPlayerParty
- b _080183F4
- .align 2, 0
-_080183D0: .4byte gBattlePartyID
-_080183D4: .4byte gEnemyParty
-_080183D8: .4byte gBankTarget
-_080183DC: .4byte gNoOfAllBanks
-_080183E0: .4byte gPlayerParty
-_080183E4:
- ldr r1, _08018444 @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08018448 @ =gEnemyParty
-_080183F4:
- adds r5, r1, r0
- adds r0, r7, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- adds r0, r7, 0
- movs r1, 0
- bl GetMonData
- str r0, [sp, 0x10]
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0xC]
- adds r0, r5, 0
- movs r1, 0
- bl GetMonData
- str r0, [sp, 0x14]
- ldr r0, _0801844C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08018436
- bl _08019F92
-_08018436:
- mov r3, r8
- cmp r3, 0
- beq _08018454
- ldr r0, _08018450 @ =gLastUsedAbility
- strb r3, [r0]
- mov r8, r0
- b _0801846A
- .align 2, 0
-_08018444: .4byte gBattlePartyID
-_08018448: .4byte gEnemyParty
-_0801844C: .4byte gBattleTypeFlags
-_08018450: .4byte gLastUsedAbility
-_08018454:
- ldr r2, _08018474 @ =gLastUsedAbility
- ldr r1, _08018478 @ =gBattleMons
- movs r0, 0x58
- mov r5, r10
- muls r5, r0
- adds r0, r5, 0
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r2]
- mov r8, r2
-_0801846A:
- cmp r4, 0
- beq _0801847C
- adds r3, r4, 0
- b _08018480
- .align 2, 0
-_08018474: .4byte gLastUsedAbility
-_08018478: .4byte gBattleMons
-_0801847C:
- ldr r0, _08018494 @ =gCurrentMove
- ldrh r3, [r0]
-_08018480:
- ldr r1, _08018498 @ =0x02000000
- ldr r2, _0801849C @ =0x0001601c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0
- beq _080184A0
- movs r4, 0x3F
- ands r4, r0
- b _080184AC
- .align 2, 0
-_08018494: .4byte gCurrentMove
-_08018498: .4byte 0x02000000
-_0801849C: .4byte 0x0001601c
-_080184A0:
- ldr r1, _080184C0 @ =gBattleMoves
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x2]
-_080184AC:
- ldr r5, [sp, 0x4]
- cmp r5, 0x13
- bls _080184B6
- bl _08019F76
-_080184B6:
- lsls r0, r5, 2
- ldr r1, _080184C4 @ =_080184C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080184C0: .4byte gBattleMoves
-_080184C4: .4byte _080184C8
- .align 2, 0
-_080184C8:
- .4byte _08018518
- .4byte _08018814
- .4byte _08018A40
- .4byte _08018AD8
- .4byte _08018CF0
- .4byte _08019448
- .4byte _080197B4
- .4byte _08019804
- .4byte _08019880
- .4byte _080198FC
- .4byte _08019B1C
- .4byte _08019940
- .4byte _08019B60
- .4byte _08019BBC
- .4byte _08019C18
- .4byte _08019D18
- .4byte _08019D5C
- .4byte _08019DB8
- .4byte _08019F44
- .4byte _08019CD4
-_08018518:
- ldr r2, _0801854C @ =gBankAttacker
- ldr r0, _08018550 @ =gNoOfAllBanks
- ldrb r1, [r2]
- adds r5, r0, 0
- ldrb r0, [r5]
- cmp r1, r0
- bcc _0801852A
- mov r1, r10
- strb r1, [r2]
-_0801852A:
- mov r2, r8
- ldrb r0, [r2]
- cmp r0, 0x2D
- bne _08018534
- b _080186B8
-_08018534:
- cmp r0, 0x2D
- bgt _08018564
- cmp r0, 0xD
- bne _0801853E
- b _080187DC
-_0801853E:
- cmp r0, 0xD
- bgt _08018554
- cmp r0, 0x2
- bne _08018548
- b _08018680
-_08018548:
- bl _08019F76
- .align 2, 0
-_0801854C: .4byte gBankAttacker
-_08018550: .4byte gNoOfAllBanks
-_08018554:
- cmp r0, 0x16
- bne _0801855A
- b _08018728
-_0801855A:
- cmp r0, 0x24
- bne _08018560
- b _080187A0
-_08018560:
- bl _08019F76
-_08018564:
- cmp r0, 0x46
- bne _0801856A
- b _080186F0
-_0801856A:
- cmp r0, 0x46
- bgt _08018578
- cmp r0, 0x3B
- bne _08018574
- b _0801875C
-_08018574:
- bl _08019F76
-_08018578:
- cmp r0, 0x4D
- bne _0801857E
- b _080187DC
-_0801857E:
- cmp r0, 0xFF
- beq _08018586
- bl _08019F76
-_08018586:
- bl weather_get_current
- lsls r0, 24
- lsrs r0, 24
- subs r0, 0x3
- cmp r0, 0xA
- bhi _0801864C
- lsls r0, 2
- ldr r1, _080185A0 @ =_080185A4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080185A0: .4byte _080185A4
- .align 2, 0
-_080185A4:
- .4byte _080185D0
- .4byte _0801864C
- .4byte _080185D0
- .4byte _0801864C
- .4byte _0801864C
- .4byte _080185F8
- .4byte _0801864C
- .4byte _0801864C
- .4byte _0801864C
- .4byte _08018620
- .4byte _080185D0
-_080185D0:
- ldr r2, _080185EC @ =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0801864C
- movs r0, 0x5
- strh r0, [r2]
- ldr r0, _080185F0 @ =0x02000000
- ldr r3, _080185F4 @ =0x000160a4
- adds r2, r0, r3
- movs r1, 0xA
- b _08018638
- .align 2, 0
-_080185EC: .4byte gBattleWeather
-_080185F0: .4byte 0x02000000
-_080185F4: .4byte 0x000160a4
-_080185F8:
- ldr r3, _08018614 @ =gBattleWeather
- ldrh r1, [r3]
- movs r2, 0x18
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _0801864C
- strh r2, [r3]
- ldr r0, _08018618 @ =0x02000000
- ldr r3, _0801861C @ =0x000160a4
- adds r2, r0, r3
- movs r1, 0xC
- b _08018638
- .align 2, 0
-_08018614: .4byte gBattleWeather
-_08018618: .4byte 0x02000000
-_0801861C: .4byte 0x000160a4
-_08018620:
- ldr r3, _08018668 @ =gBattleWeather
- ldrh r1, [r3]
- movs r2, 0x60
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _0801864C
- strh r2, [r3]
- ldr r0, _0801866C @ =0x02000000
- ldr r3, _08018670 @ =0x000160a4
- adds r2, r0, r3
- movs r1, 0xB
-_08018638:
- strb r1, [r2]
- ldr r5, _08018674 @ =0x00016003
- adds r0, r5
- mov r1, r10
- strb r1, [r0]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_0801864C:
- mov r2, r9
- cmp r2, 0
- bne _08018656
- bl _08019F92
-_08018656:
- bl weather_get_current
- ldr r1, _08018678 @ =gBattleCommunication
- strb r0, [r1, 0x5]
- ldr r0, _0801867C @ =gUnknown_081D901D
- bl b_push_move_exec
- bl _08019F76
- .align 2, 0
-_08018668: .4byte gBattleWeather
-_0801866C: .4byte 0x02000000
-_08018670: .4byte 0x000160a4
-_08018674: .4byte 0x00016003
-_08018678: .4byte gBattleCommunication
-_0801867C: .4byte gUnknown_081D901D
-_08018680:
- ldr r2, _080186A8 @ =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08018690
- bl _08019F76
-_08018690:
- movs r0, 0x5
- strh r0, [r2]
- ldr r0, _080186AC @ =gUnknown_081D9704
- bl b_push_move_exec
- ldr r0, _080186B0 @ =0x02000000
- ldr r3, _080186B4 @ =0x00016003
- adds r0, r3
- mov r5, r10
- strb r5, [r0]
- bl _08019F22
- .align 2, 0
-_080186A8: .4byte gBattleWeather
-_080186AC: .4byte gUnknown_081D9704
-_080186B0: .4byte 0x02000000
-_080186B4: .4byte 0x00016003
-_080186B8:
- ldr r2, _080186E0 @ =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080186C8
- bl _08019F76
-_080186C8:
- movs r0, 0x18
- strh r0, [r2]
- ldr r0, _080186E4 @ =gUnknown_081D9744
- bl b_push_move_exec
- ldr r0, _080186E8 @ =0x02000000
- ldr r1, _080186EC @ =0x00016003
- adds r0, r1
- mov r2, r10
- strb r2, [r0]
- bl _08019F22
- .align 2, 0
-_080186E0: .4byte gBattleWeather
-_080186E4: .4byte gUnknown_081D9744
-_080186E8: .4byte 0x02000000
-_080186EC: .4byte 0x00016003
-_080186F0:
- ldr r2, _08018718 @ =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08018700
- bl _08019F76
-_08018700:
- movs r0, 0x60
- strh r0, [r2]
- ldr r0, _0801871C @ =gUnknown_081D97FE
- bl b_push_move_exec
- ldr r0, _08018720 @ =0x02000000
- ldr r3, _08018724 @ =0x00016003
- adds r0, r3
- mov r5, r10
- strb r5, [r0]
- bl _08019F22
- .align 2, 0
-_08018718: .4byte gBattleWeather
-_0801871C: .4byte gUnknown_081D97FE
-_08018720: .4byte 0x02000000
-_08018724: .4byte 0x00016003
-_08018728:
- ldr r0, _08018754 @ =gSpecialStatuses
- mov r1, r10
- lsls r2, r1, 2
- adds r1, r2, r1
- lsls r1, 2
- adds r3, r1, r0
- ldrb r0, [r3]
- lsls r0, 28
- cmp r0, 0
- bge _08018740
- bl _08019F76
-_08018740:
- ldr r1, _08018758 @ =gStatuses3
- adds r1, r2, r1
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 12
- orrs r0, r2
- str r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x8
- b _080187CA
- .align 2, 0
-_08018754: .4byte gSpecialStatuses
-_08018758: .4byte gStatuses3
-_0801875C:
- mov r0, r10
- bl castform_switch
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- cmp r0, 0
- bne _08018770
- bl _08019F92
-_08018770:
- ldr r0, _08018790 @ =gUnknown_081D977D
- bl b_push_move_exec
- ldr r0, _08018794 @ =0x02000000
- ldr r2, _08018798 @ =0x00016003
- adds r1, r0, r2
- mov r3, r10
- strb r3, [r1]
- mov r1, r9
- subs r1, 0x1
- ldr r5, _0801879C @ =0x0001609b
- adds r0, r5
- strb r1, [r0]
- bl _08019F76
- .align 2, 0
-_08018790: .4byte gUnknown_081D977D
-_08018794: .4byte 0x02000000
-_08018798: .4byte 0x00016003
-_0801879C: .4byte 0x0001609b
-_080187A0:
- ldr r0, _080187D4 @ =gSpecialStatuses
- mov r1, r10
- lsls r2, r1, 2
- adds r1, r2, r1
- lsls r1, 2
- adds r3, r1, r0
- ldrb r0, [r3]
- lsls r0, 27
- cmp r0, 0
- bge _080187B8
- bl _08019F76
-_080187B8:
- ldr r1, _080187D8 @ =gStatuses3
- adds r1, r2, r1
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 13
- orrs r0, r2
- str r0, [r1]
- ldrb r0, [r3]
- movs r1, 0x10
-_080187CA:
- orrs r0, r1
- strb r0, [r3]
- bl _08019F76
- .align 2, 0
-_080187D4: .4byte gSpecialStatuses
-_080187D8: .4byte gStatuses3
-_080187DC:
- movs r6, 0
- ldrb r5, [r5]
- cmp r6, r5
- bcc _080187E8
- bl _08019F76
-_080187E8:
- adds r0, r6, 0
- bl castform_switch
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- cmp r0, 0
- beq _080187FC
- bl _08019E14
-_080187FC:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08018810 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- bcc _080187E8
- bl _08019F76
- .align 2, 0
-_08018810: .4byte gNoOfAllBanks
-_08018814:
- ldr r2, _08018844 @ =gBattleMons
- movs r0, 0x58
- mov r1, r10
- muls r1, r0
- adds r4, r1, r2
- ldrh r0, [r4, 0x28]
- cmp r0, 0
- bne _08018828
- bl _08019F76
-_08018828:
- ldr r0, _08018848 @ =gBankAttacker
- mov r3, r10
- strb r3, [r0]
- mov r3, r8
- ldrb r5, [r3]
- cmp r5, 0x2C
- beq _0801885A
- cmp r5, 0x2C
- bgt _0801884C
- cmp r5, 0x3
- bne _08018840
- b _080189B8
-_08018840:
- bl _08019F76
- .align 2, 0
-_08018844: .4byte gBattleMons
-_08018848: .4byte gBankAttacker
-_0801884C:
- cmp r5, 0x36
- bne _08018852
- b _08018A18
-_08018852:
- cmp r5, 0x3D
- beq _080188DC
- bl _08019F76
-_0801885A:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08018876
- bl _08019F76
-_08018876:
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _0801888E
- bl _08019F76
-_0801888E:
- ldr r0, _080188D0 @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0801889E
- bl _08019F76
-_0801889E:
- ldrh r0, [r4, 0x2C]
- ldrh r1, [r4, 0x28]
- cmp r0, r1
- bhi _080188AA
- bl _08019F76
-_080188AA:
- mov r2, r8
- strb r5, [r2]
- ldr r0, _080188D4 @ =gUnknown_081D9730
- bl b_push_move_exec
- ldr r1, _080188D8 @ =gBattleMoveDamage
- ldrh r0, [r4, 0x2C]
- lsrs r0, 4
- str r0, [r1]
- cmp r0, 0
- bne _080188C4
- movs r0, 0x1
- str r0, [r1]
-_080188C4:
- ldr r0, [r1]
- negs r0, r0
- str r0, [r1]
- bl _08019F22
- .align 2, 0
-_080188D0: .4byte gBattleWeather
-_080188D4: .4byte gUnknown_081D9730
-_080188D8: .4byte gBattleMoveDamage
-_080188DC:
- adds r0, r2, 0
- adds r0, 0x4C
- adds r5, r1, r0
- ldrb r0, [r5]
- cmp r0, 0
- bne _080188EC
- bl _08019F76
-_080188EC:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _08018906
- bl _08019F76
-_08018906:
- ldr r0, [r5]
- movs r1, 0x88
- ands r0, r1
- cmp r0, 0
- beq _08018918
- ldr r0, _08018990 @ =gBattleTextBuff1
- ldr r1, _08018994 @ =gStatusConditionString_PoisonJpn
- bl StringCopy
-_08018918:
- ldr r0, [r5]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0801892A
- ldr r0, _08018990 @ =gBattleTextBuff1
- ldr r1, _08018998 @ =gStatusConditionString_SleepJpn
- bl StringCopy
-_0801892A:
- ldr r0, [r5]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0801893C
- ldr r0, _08018990 @ =gBattleTextBuff1
- ldr r1, _0801899C @ =gStatusConditionString_ParalysisJpn
- bl StringCopy
-_0801893C:
- ldr r0, [r5]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0801894E
- ldr r0, _08018990 @ =gBattleTextBuff1
- ldr r1, _080189A0 @ =gStatusConditionString_BurnJpn
- bl StringCopy
-_0801894E:
- ldr r0, [r5]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08018960
- ldr r0, _08018990 @ =gBattleTextBuff1
- ldr r1, _080189A4 @ =gStatusConditionString_IceJpn
- bl StringCopy
-_08018960:
- str r4, [r5]
- ldr r0, _080189A8 @ =0x02000000
- ldr r4, _080189AC @ =gActiveBank
- mov r3, r10
- strb r3, [r4]
- ldr r1, _080189B0 @ =0x00016003
- adds r0, r1
- strb r3, [r0]
- ldr r0, _080189B4 @ =gUnknown_081D9758
- bl b_push_move_exec
- str r5, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- bl _08019F22
- .align 2, 0
-_08018990: .4byte gBattleTextBuff1
-_08018994: .4byte gStatusConditionString_PoisonJpn
-_08018998: .4byte gStatusConditionString_SleepJpn
-_0801899C: .4byte gStatusConditionString_ParalysisJpn
-_080189A0: .4byte gStatusConditionString_BurnJpn
-_080189A4: .4byte gStatusConditionString_IceJpn
-_080189A8: .4byte 0x02000000
-_080189AC: .4byte gActiveBank
-_080189B0: .4byte 0x00016003
-_080189B4: .4byte gUnknown_081D9758
-_080189B8:
- ldrb r2, [r4, 0x1B]
- movs r0, 0x1B
- ldrsb r0, [r4, r0]
- cmp r0, 0xB
- ble _080189C6
- bl _08019F76
-_080189C6:
- ldr r0, _08018A04 @ =gDisableStructs
- mov r3, r10
- lsls r1, r3, 3
- subs r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x16]
- cmp r0, 0x2
- bne _080189DC
- bl _08019F76
-_080189DC:
- adds r0, r2, 0x1
- movs r2, 0
- strb r0, [r4, 0x1B]
- ldr r5, _08018A08 @ =0x000160a4
- adds r1, r7, r5
- movs r0, 0x11
- strb r0, [r1]
- ldr r1, _08018A0C @ =0x000160a5
- adds r0, r7, r1
- strb r2, [r0]
- ldr r0, _08018A10 @ =gUnknown_081D9718
- bl b_push_move_exec
- ldr r2, _08018A14 @ =0x00016003
- adds r0, r7, r2
- mov r3, r10
- strb r3, [r0]
- bl _08019F22
- .align 2, 0
-_08018A04: .4byte gDisableStructs
-_08018A08: .4byte 0x000160a4
-_08018A0C: .4byte 0x000160a5
-_08018A10: .4byte gUnknown_081D9718
-_08018A14: .4byte 0x00016003
-_08018A18:
- ldr r2, _08018A3C @ =gDisableStructs
- ldrb r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r3, [r1, 0x18]
- lsls r0, r3, 31
- lsrs r0, 31
- movs r2, 0x1
- eors r2, r0
- movs r0, 0x2
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x18]
- bl _08019F76
- .align 2, 0
-_08018A3C: .4byte gDisableStructs
-_08018A40:
- mov r5, r8
- ldrb r0, [r5]
- cmp r0, 0x2B
- beq _08018A4C
- bl _08019F76
-_08018A4C:
- movs r4, 0
- ldr r0, _08018ABC @ =gUnknown_081FA724
- ldrh r2, [r0]
- ldr r5, _08018AC0 @ =0x0000ffff
- adds r1, r0, 0
- cmp r2, r5
- bne _08018A5E
- bl _08019F76
-_08018A5E:
- cmp r2, r3
- beq _08018A76
- adds r2, r1, 0
-_08018A64:
- adds r2, 0x2
- adds r4, 0x1
- ldrh r0, [r2]
- cmp r0, r5
- bne _08018A72
- bl _08019F76
-_08018A72:
- cmp r0, r3
- bne _08018A64
-_08018A76:
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _08018AC0 @ =0x0000ffff
- cmp r1, r0
- bne _08018A86
- bl _08019F76
-_08018A86:
- ldr r1, _08018AC4 @ =gBattleMons
- ldr r0, _08018AC8 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 5
- ands r0, r1
- cmp r0, 0
- beq _08018AAC
- ldr r0, _08018ACC @ =gHitMarker
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 4
- orrs r1, r2
- str r1, [r0]
-_08018AAC:
- ldr r1, _08018AD0 @ =gBattlescriptCurrInstr
- ldr r0, _08018AD4 @ =gUnknown_081D98F3
- str r0, [r1]
- movs r0, 0x1
- mov r9, r0
- bl _08019F7C
- .align 2, 0
-_08018ABC: .4byte gUnknown_081FA724
-_08018AC0: .4byte 0x0000ffff
-_08018AC4: .4byte gBattleMons
-_08018AC8: .4byte gBankAttacker
-_08018ACC: .4byte gHitMarker
-_08018AD0: .4byte gBattlescriptCurrInstr
-_08018AD4: .4byte gUnknown_081D98F3
-_08018AD8:
- cmp r3, 0
- bne _08018AE0
- bl _08019F76
-_08018AE0:
- mov r1, r8
- ldrb r0, [r1]
- cmp r0, 0xB
- beq _08018B50
- cmp r0, 0xB
- bgt _08018AF2
- cmp r0, 0xA
- beq _08018AF8
- b _08018C6A
-_08018AF2:
- cmp r0, 0x12
- beq _08018BA8
- b _08018C6A
-_08018AF8:
- cmp r4, 0xD
- beq _08018AFE
- b _08018C6A
-_08018AFE:
- ldr r0, _08018B28 @ =gBattleMoves
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _08018B10
- b _08018C6A
-_08018B10:
- ldr r1, _08018B2C @ =gProtectStructs
- ldr r0, _08018B30 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x2]
- lsls r0, 28
- cmp r0, 0
- bge _08018B3C
- ldr r1, _08018B34 @ =gBattlescriptCurrInstr
- ldr r0, _08018B38 @ =gUnknown_081D9843
- b _08018B40
- .align 2, 0
-_08018B28: .4byte gBattleMoves
-_08018B2C: .4byte gProtectStructs
-_08018B30: .4byte gBankAttacker
-_08018B34: .4byte gBattlescriptCurrInstr
-_08018B38: .4byte gUnknown_081D9843
-_08018B3C:
- ldr r1, _08018B48 @ =gBattlescriptCurrInstr
- ldr r0, _08018B4C @ =gUnknown_081D9842
-_08018B40:
- str r0, [r1]
- movs r2, 0x1
- b _08018C68
- .align 2, 0
-_08018B48: .4byte gBattlescriptCurrInstr
-_08018B4C: .4byte gUnknown_081D9842
-_08018B50:
- cmp r4, 0xB
- beq _08018B56
- b _08018C6A
-_08018B56:
- ldr r0, _08018B80 @ =gBattleMoves
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _08018B68
- b _08018C6A
-_08018B68:
- ldr r1, _08018B84 @ =gProtectStructs
- ldr r0, _08018B88 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x2]
- lsls r0, 28
- cmp r0, 0
- bge _08018B94
- ldr r1, _08018B8C @ =gBattlescriptCurrInstr
- ldr r0, _08018B90 @ =gUnknown_081D9843
- b _08018B98
- .align 2, 0
-_08018B80: .4byte gBattleMoves
-_08018B84: .4byte gProtectStructs
-_08018B88: .4byte gBankAttacker
-_08018B8C: .4byte gBattlescriptCurrInstr
-_08018B90: .4byte gUnknown_081D9843
-_08018B94:
- ldr r1, _08018BA0 @ =gBattlescriptCurrInstr
- ldr r0, _08018BA4 @ =gUnknown_081D9842
-_08018B98:
- str r0, [r1]
- movs r3, 0x1
- mov r9, r3
- b _08018C6A
- .align 2, 0
-_08018BA0: .4byte gBattlescriptCurrInstr
-_08018BA4: .4byte gUnknown_081D9842
-_08018BA8:
- cmp r4, 0xA
- bne _08018C6A
- ldr r1, _08018BF4 @ =gBattleMons
- movs r0, 0x58
- mov r5, r10
- muls r5, r0
- adds r0, r5, 0
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- bne _08018C6A
- ldr r2, _08018BF8 @ =0x02017100
- mov r0, r10
- lsls r1, r0, 2
- adds r0, r1, r2
- ldr r3, [r0]
- movs r4, 0x1
- ands r3, r4
- adds r5, r1, 0
- cmp r3, 0
- bne _08018C30
- ldr r0, _08018BFC @ =gBattleCommunication
- strb r3, [r0, 0x5]
- ldr r1, _08018C00 @ =gProtectStructs
- ldr r0, _08018C04 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x2]
- lsls r0, 28
- cmp r0, 0
- bge _08018C10
- ldr r1, _08018C08 @ =gBattlescriptCurrInstr
- ldr r0, _08018C0C @ =gUnknown_081D987C
- b _08018C14
- .align 2, 0
-_08018BF4: .4byte gBattleMons
-_08018BF8: .4byte 0x02017100
-_08018BFC: .4byte gBattleCommunication
-_08018C00: .4byte gProtectStructs
-_08018C04: .4byte gBankAttacker
-_08018C08: .4byte gBattlescriptCurrInstr
-_08018C0C: .4byte gUnknown_081D987C
-_08018C10:
- ldr r1, _08018C28 @ =gBattlescriptCurrInstr
- ldr r0, _08018C2C @ =gUnknown_081D987B
-_08018C14:
- str r0, [r1]
- adds r0, r5, r2
- ldr r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- str r1, [r0]
- movs r1, 0x2
- mov r9, r1
- b _08018C6A
- .align 2, 0
-_08018C28: .4byte gBattlescriptCurrInstr
-_08018C2C: .4byte gUnknown_081D987B
-_08018C30:
- ldr r0, _08018C4C @ =gBattleCommunication
- strb r4, [r0, 0x5]
- ldr r1, _08018C50 @ =gProtectStructs
- ldr r0, _08018C54 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x2]
- lsls r0, 28
- cmp r0, 0
- bge _08018C60
- ldr r1, _08018C58 @ =gBattlescriptCurrInstr
- ldr r0, _08018C5C @ =gUnknown_081D987C
- b _08018C64
- .align 2, 0
-_08018C4C: .4byte gBattleCommunication
-_08018C50: .4byte gProtectStructs
-_08018C54: .4byte gBankAttacker
-_08018C58: .4byte gBattlescriptCurrInstr
-_08018C5C: .4byte gUnknown_081D987C
-_08018C60:
- ldr r1, _08018CA4 @ =gBattlescriptCurrInstr
- ldr r0, _08018CA8 @ =gUnknown_081D987B
-_08018C64:
- str r0, [r1]
- movs r2, 0x2
-_08018C68:
- mov r9, r2
-_08018C6A:
- mov r3, r9
- cmp r3, 0x1
- beq _08018C74
- bl _08019F76
-_08018C74:
- ldr r1, _08018CAC @ =gBattleMons
- movs r0, 0x58
- mov r5, r10
- muls r5, r0
- adds r0, r5, 0
- adds r1, r0, r1
- ldrh r0, [r1, 0x2C]
- ldrh r2, [r1, 0x28]
- cmp r0, r2
- bne _08018CD0
- ldr r1, _08018CB0 @ =gProtectStructs
- ldr r0, _08018CB4 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x2]
- lsls r0, 28
- cmp r0, 0
- bge _08018CBC
- ldr r1, _08018CA4 @ =gBattlescriptCurrInstr
- ldr r0, _08018CB8 @ =gUnknown_081D9866
- str r0, [r1]
- bl _08019F76
- .align 2, 0
-_08018CA4: .4byte gBattlescriptCurrInstr
-_08018CA8: .4byte gUnknown_081D987B
-_08018CAC: .4byte gBattleMons
-_08018CB0: .4byte gProtectStructs
-_08018CB4: .4byte gBankAttacker
-_08018CB8: .4byte gUnknown_081D9866
-_08018CBC:
- ldr r1, _08018CC8 @ =gBattlescriptCurrInstr
- ldr r0, _08018CCC @ =gUnknown_081D9865
- str r0, [r1]
- bl _08019F76
- .align 2, 0
-_08018CC8: .4byte gBattlescriptCurrInstr
-_08018CCC: .4byte gUnknown_081D9865
-_08018CD0:
- ldr r2, _08018CEC @ =gBattleMoveDamage
- ldrh r0, [r1, 0x2C]
- lsrs r0, 2
- str r0, [r2]
- cmp r0, 0
- bne _08018CE0
- mov r3, r9
- str r3, [r2]
-_08018CE0:
- ldr r0, [r2]
- negs r0, r0
- str r0, [r2]
- bl _08019F76
- .align 2, 0
-_08018CEC: .4byte gBattleMoveDamage
-_08018CF0:
- mov r5, r8
- ldrb r0, [r5]
- subs r0, 0x9
- cmp r0, 0x2F
- bls _08018CFE
- bl _08019F76
-_08018CFE:
- lsls r0, 2
- ldr r1, _08018D08 @ =_08018D0C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08018D08: .4byte _08018D0C
- .align 2, 0
-_08018D0C:
- .4byte _08019128
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08018DCC
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08018E94
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08018F54
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _0801904C
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019204
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _08019F76
- .4byte _080192E0
-_08018DCC:
- ldr r0, _08018E74 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08018DDC
- bl _08019F76
-_08018DDC:
- cmp r3, 0xA5
- bne _08018DE4
- bl _08019F76
-_08018DE4:
- ldr r0, _08018E78 @ =gBattleMoves
- lsls r1, r3, 1
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _08018DF8
- bl _08019F76
-_08018DF8:
- ldr r2, _08018E7C @ =gSpecialStatuses
- ldr r0, _08018E80 @ =gBankTarget
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r1, r0, 2
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08018E20
- adds r0, r2, 0
- adds r0, 0xC
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08018E20
- bl _08019F76
-_08018E20:
- ldr r1, _08018E84 @ =gBattleMons
- movs r0, 0x58
- mov r2, r10
- muls r2, r0
- adds r0, r2, 0
- adds r1, r0, r1
- adds r3, r1, 0
- adds r3, 0x21
- ldrb r0, [r3]
- cmp r0, r4
- bne _08018E3A
- bl _08019F76
-_08018E3A:
- adds r2, r1, 0
- adds r2, 0x22
- ldrb r0, [r2]
- cmp r0, r4
- bne _08018E48
- bl _08019F76
-_08018E48:
- ldrh r0, [r1, 0x28]
- cmp r0, 0
- bne _08018E52
- bl _08019F76
-_08018E52:
- strb r4, [r3]
- strb r4, [r2]
- ldr r1, _08018E88 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x3
- strb r0, [r1, 0x1]
- strb r4, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- bl b_movescr_stack_push_cursor
- ldr r1, _08018E8C @ =gBattlescriptCurrInstr
- ldr r0, _08018E90 @ =gUnknown_081D9921
- str r0, [r1]
- bl _08019F22
- .align 2, 0
-_08018E74: .4byte gBattleMoveFlags
-_08018E78: .4byte gBattleMoves
-_08018E7C: .4byte gSpecialStatuses
-_08018E80: .4byte gBankTarget
-_08018E84: .4byte gBattleMons
-_08018E88: .4byte gBattleTextBuff1
-_08018E8C: .4byte gBattlescriptCurrInstr
-_08018E90: .4byte gUnknown_081D9921
-_08018E94:
- ldr r0, _08018F2C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08018EA4
- bl _08019F76
-_08018EA4:
- ldr r1, _08018F30 @ =gBattleMons
- ldr r0, _08018F34 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r4, r0, r1
- ldrh r0, [r4, 0x28]
- cmp r0, 0
- bne _08018EBA
- bl _08019F76
-_08018EBA:
- ldr r0, _08018F38 @ =gProtectStructs
- lsls r1, r2, 4
- adds r1, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 31
- cmp r0, 0
- beq _08018ECC
- bl _08019F76
-_08018ECC:
- ldr r2, _08018F3C @ =gSpecialStatuses
- ldr r0, _08018F40 @ =gBankTarget
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r1, r0, 2
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08018EF4
- adds r0, r2, 0
- adds r0, 0xC
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08018EF4
- bl _08019F76
-_08018EF4:
- ldr r1, _08018F44 @ =gBattleMoves
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _08018F0E
- bl _08019F76
-_08018F0E:
- ldr r1, _08018F48 @ =gBattleMoveDamage
- ldrh r0, [r4, 0x2C]
- lsrs r0, 4
- str r0, [r1]
- cmp r0, 0
- bne _08018F1C
- str r2, [r1]
-_08018F1C:
- bl b_movescr_stack_push_cursor
- ldr r1, _08018F4C @ =gBattlescriptCurrInstr
- ldr r0, _08018F50 @ =gUnknown_081D9928
- str r0, [r1]
- bl _08019F22
- .align 2, 0
-_08018F2C: .4byte gBattleMoveFlags
-_08018F30: .4byte gBattleMons
-_08018F34: .4byte gBankAttacker
-_08018F38: .4byte gProtectStructs
-_08018F3C: .4byte gSpecialStatuses
-_08018F40: .4byte gBankTarget
-_08018F44: .4byte gBattleMoves
-_08018F48: .4byte gBattleMoveDamage
-_08018F4C: .4byte gBattlescriptCurrInstr
-_08018F50: .4byte gUnknown_081D9928
-_08018F54:
- ldr r0, _08019020 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08018F64
- bl _08019F76
-_08018F64:
- ldr r1, _08019024 @ =gBattleMons
- ldr r0, _08019028 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _08018F7A
- bl _08019F76
-_08018F7A:
- ldr r0, _0801902C @ =gProtectStructs
- lsls r1, r2, 4
- adds r1, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 31
- cmp r0, 0
- beq _08018F8C
- bl _08019F76
-_08018F8C:
- ldr r2, _08019030 @ =gSpecialStatuses
- ldr r0, _08019034 @ =gBankTarget
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r1, r0, 2
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08018FB4
- adds r0, r2, 0
- adds r0, 0xC
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08018FB4
- bl _08019F76
-_08018FB4:
- ldr r1, _08019038 @ =gBattleMoves
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08018FCC
- bl _08019F76
-_08018FCC:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- beq _08018FE4
- bl _08019F76
-_08018FE4:
- ldr r5, _0801903C @ =gBattleCommunication
- movs r4, 0x3
-_08018FE8:
- bl Random
- ands r0, r4
- strb r0, [r5, 0x3]
- cmp r0, 0
- beq _08018FE8
- ldr r1, _0801903C @ =gBattleCommunication
- ldrb r0, [r1, 0x3]
- cmp r0, 0x3
- bne _08019000
- adds r0, 0x2
- strb r0, [r1, 0x3]
-_08019000:
- ldrb r0, [r1, 0x3]
- adds r0, 0x40
- strb r0, [r1, 0x3]
- bl b_movescr_stack_push_cursor
- ldr r1, _08019040 @ =gBattlescriptCurrInstr
- ldr r0, _08019044 @ =gUnknown_081D9950
- str r0, [r1]
- ldr r2, _08019048 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 6
- orrs r0, r1
- str r0, [r2]
- bl _08019F22
- .align 2, 0
-_08019020: .4byte gBattleMoveFlags
-_08019024: .4byte gBattleMons
-_08019028: .4byte gBankAttacker
-_0801902C: .4byte gProtectStructs
-_08019030: .4byte gSpecialStatuses
-_08019034: .4byte gBankTarget
-_08019038: .4byte gBattleMoves
-_0801903C: .4byte gBattleCommunication
-_08019040: .4byte gBattlescriptCurrInstr
-_08019044: .4byte gUnknown_081D9950
-_08019048: .4byte gHitMarker
-_0801904C:
- ldr r0, _080190FC @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0801905C
- bl _08019F76
-_0801905C:
- ldr r1, _08019100 @ =gBattleMons
- ldr r0, _08019104 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _08019072
- bl _08019F76
-_08019072:
- ldr r0, _08019108 @ =gProtectStructs
- lsls r1, r2, 4
- adds r1, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 31
- cmp r0, 0
- beq _08019084
- bl _08019F76
-_08019084:
- ldr r2, _0801910C @ =gSpecialStatuses
- ldr r0, _08019110 @ =gBankTarget
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r1, r0, 2
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _080190AC
- adds r0, r2, 0
- adds r0, 0xC
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _080190AC
- bl _08019F76
-_080190AC:
- ldr r1, _08019114 @ =gBattleMoves
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080190C4
- bl _08019F76
-_080190C4:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- beq _080190DC
- bl _08019F76
-_080190DC:
- ldr r1, _08019118 @ =gBattleCommunication
- movs r0, 0x42
- strb r0, [r1, 0x3]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801911C @ =gBattlescriptCurrInstr
- ldr r0, _08019120 @ =gUnknown_081D9950
- str r0, [r1]
- ldr r2, _08019124 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 6
- orrs r0, r1
- str r0, [r2]
- bl _08019F22
- .align 2, 0
-_080190FC: .4byte gBattleMoveFlags
-_08019100: .4byte gBattleMons
-_08019104: .4byte gBankAttacker
-_08019108: .4byte gProtectStructs
-_0801910C: .4byte gSpecialStatuses
-_08019110: .4byte gBankTarget
-_08019114: .4byte gBattleMoves
-_08019118: .4byte gBattleCommunication
-_0801911C: .4byte gBattlescriptCurrInstr
-_08019120: .4byte gUnknown_081D9950
-_08019124: .4byte gHitMarker
-_08019128:
- ldr r0, _080191D8 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08019138
- bl _08019F76
-_08019138:
- ldr r1, _080191DC @ =gBattleMons
- ldr r0, _080191E0 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _0801914E
- bl _08019F76
-_0801914E:
- ldr r0, _080191E4 @ =gProtectStructs
- lsls r1, r2, 4
- adds r1, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 31
- cmp r0, 0
- beq _08019160
- bl _08019F76
-_08019160:
- ldr r2, _080191E8 @ =gSpecialStatuses
- ldr r0, _080191EC @ =gBankTarget
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r1, r0, 2
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08019188
- adds r0, r2, 0
- adds r0, 0xC
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08019188
- bl _08019F76
-_08019188:
- ldr r1, _080191F0 @ =gBattleMoves
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080191A0
- bl _08019F76
-_080191A0:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- beq _080191B8
- bl _08019F76
-_080191B8:
- ldr r1, _080191F4 @ =gBattleCommunication
- movs r0, 0x45
- strb r0, [r1, 0x3]
- bl b_movescr_stack_push_cursor
- ldr r1, _080191F8 @ =gBattlescriptCurrInstr
- ldr r0, _080191FC @ =gUnknown_081D9950
- str r0, [r1]
- ldr r2, _08019200 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 6
- orrs r0, r1
- str r0, [r2]
- bl _08019F22
- .align 2, 0
-_080191D8: .4byte gBattleMoveFlags
-_080191DC: .4byte gBattleMons
-_080191E0: .4byte gBankAttacker
-_080191E4: .4byte gProtectStructs
-_080191E8: .4byte gSpecialStatuses
-_080191EC: .4byte gBankTarget
-_080191F0: .4byte gBattleMoves
-_080191F4: .4byte gBattleCommunication
-_080191F8: .4byte gBattlescriptCurrInstr
-_080191FC: .4byte gUnknown_081D9950
-_08019200: .4byte gHitMarker
-_08019204:
- ldr r0, _080192B4 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08019214
- bl _08019F76
-_08019214:
- ldr r1, _080192B8 @ =gBattleMons
- ldr r0, _080192BC @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _0801922A
- bl _08019F76
-_0801922A:
- ldr r0, _080192C0 @ =gProtectStructs
- lsls r1, r2, 4
- adds r1, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 31
- cmp r0, 0
- beq _0801923C
- bl _08019F76
-_0801923C:
- ldr r1, _080192C4 @ =gBattleMoves
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08019254
- bl _08019F76
-_08019254:
- ldr r2, _080192C8 @ =gSpecialStatuses
- ldr r0, _080192CC @ =gBankTarget
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r1, r0, 2
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _0801927C
- adds r0, r2, 0
- adds r0, 0xC
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _0801927C
- bl _08019F76
-_0801927C:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- beq _08019294
- bl _08019F76
-_08019294:
- ldr r1, _080192D0 @ =gBattleCommunication
- movs r0, 0x43
- strb r0, [r1, 0x3]
- bl b_movescr_stack_push_cursor
- ldr r1, _080192D4 @ =gBattlescriptCurrInstr
- ldr r0, _080192D8 @ =gUnknown_081D9950
- str r0, [r1]
- ldr r2, _080192DC @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 6
- orrs r0, r1
- str r0, [r2]
- bl _08019F22
- .align 2, 0
-_080192B4: .4byte gBattleMoveFlags
-_080192B8: .4byte gBattleMons
-_080192BC: .4byte gBankAttacker
-_080192C0: .4byte gProtectStructs
-_080192C4: .4byte gBattleMoves
-_080192C8: .4byte gSpecialStatuses
-_080192CC: .4byte gBankTarget
-_080192D0: .4byte gBattleCommunication
-_080192D4: .4byte gBattlescriptCurrInstr
-_080192D8: .4byte gUnknown_081D9950
-_080192DC: .4byte gHitMarker
-_080192E0:
- ldr r0, _08019420 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _080192F0
- bl _08019F76
-_080192F0:
- ldr r5, _08019424 @ =gBattleMons
- ldr r7, _08019428 @ =gBankAttacker
- ldrb r1, [r7]
- movs r6, 0x58
- adds r0, r1, 0
- muls r0, r6
- adds r0, r5
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _08019308
- bl _08019F76
-_08019308:
- ldr r0, _0801942C @ =gProtectStructs
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1, 0x1]
- lsls r0, 31
- cmp r0, 0
- beq _0801931A
- bl _08019F76
-_0801931A:
- ldr r1, _08019430 @ =gBattleMoves
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _08019332
- bl _08019F76
-_08019332:
- ldr r3, _08019434 @ =gSpecialStatuses
- ldr r0, _08019438 @ =gBankTarget
- mov r8, r0
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r2, r0, 2
- adds r0, r3, 0
- adds r0, 0x8
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _0801935C
- adds r0, r3, 0
- adds r0, 0xC
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _0801935C
- bl _08019F76
-_0801935C:
- adds r0, r1, 0
- muls r0, r6
- adds r0, r5
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _0801936C
- bl _08019F76
-_0801936C:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- beq _08019384
- bl _08019F76
-_08019384:
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0xC
- bne _08019396
- bl _08019F76
-_08019396:
- ldr r0, [sp, 0x8]
- ldr r1, [sp, 0x10]
- bl GetGenderFromSpeciesAndPersonality
- adds r4, r0, 0
- ldr r0, [sp, 0xC]
- ldr r1, [sp, 0x14]
- bl GetGenderFromSpeciesAndPersonality
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080193B4
- bl _08019F76
-_080193B4:
- ldrb r0, [r7]
- muls r0, r6
- adds r4, r5, 0
- adds r4, 0x50
- adds r0, r4
- ldr r0, [r0]
- movs r1, 0xF0
- lsls r1, 12
- ands r0, r1
- cmp r0, 0
- beq _080193CE
- bl _08019F76
-_080193CE:
- ldr r0, [sp, 0x8]
- ldr r1, [sp, 0x10]
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _080193E2
- bl _08019F76
-_080193E2:
- ldr r0, [sp, 0xC]
- ldr r1, [sp, 0x14]
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _080193F6
- bl _08019F76
-_080193F6:
- ldrb r0, [r7]
- adds r2, r0, 0
- muls r2, r6
- adds r2, r4
- ldr r1, _0801943C @ =gBitTable
- mov r3, r8
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 16
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _08019440 @ =gBattlescriptCurrInstr
- ldr r0, _08019444 @ =gUnknown_081D9943
- str r0, [r1]
- bl _08019F22
- .align 2, 0
-_08019420: .4byte gBattleMoveFlags
-_08019424: .4byte gBattleMons
-_08019428: .4byte gBankAttacker
-_0801942C: .4byte gProtectStructs
-_08019430: .4byte gBattleMoves
-_08019434: .4byte gSpecialStatuses
-_08019438: .4byte gBankTarget
-_0801943C: .4byte gBitTable
-_08019440: .4byte gBattlescriptCurrInstr
-_08019444: .4byte gUnknown_081D9943
-_08019448:
- movs r5, 0
- mov r10, r5
- ldr r0, _0801947C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r10, r0
- bcc _08019458
- bl _08019F76
-_08019458:
- ldr r1, _08019480 @ =gBattleMons
- movs r0, 0x58
- mov r2, r10
- muls r2, r0
- adds r0, r2, 0
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- subs r0, 0x7
- adds r2, r1, 0
- cmp r0, 0x41
- bls _08019472
- b _080196D6
-_08019472:
- lsls r0, 2
- ldr r1, _08019484 @ =_08019488
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0801947C: .4byte gNoOfAllBanks
-_08019480: .4byte gBattleMons
-_08019484: .4byte _08019488
- .align 2, 0
-_08019488:
- .4byte _080195EC
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196B0
- .4byte _080196D6
- .4byte _080196D6
- .4byte _08019614
- .4byte _080196D6
- .4byte _08019590
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080195BC
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _08019680
- .4byte _08019650
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _080196D6
- .4byte _08019614
-_08019590:
- movs r0, 0x58
- mov r3, r10
- muls r3, r0
- adds r0, r3, 0
- adds r1, r2, 0
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080195B0 @ =0x00000f88
- ands r0, r1
- cmp r0, 0
- bne _080195AA
- b _080196D6
-_080195AA:
- ldr r0, _080195B4 @ =gBattleTextBuff1
- ldr r1, _080195B8 @ =gStatusConditionString_PoisonJpn
- b _0801969C
- .align 2, 0
-_080195B0: .4byte 0x00000f88
-_080195B4: .4byte gBattleTextBuff1
-_080195B8: .4byte gStatusConditionString_PoisonJpn
-_080195BC:
- movs r0, 0x58
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- adds r1, r2, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _080195D6
- b _080196D6
-_080195D6:
- ldr r0, _080195E4 @ =gBattleTextBuff1
- ldr r1, _080195E8 @ =gStatusConditionString_ConfusionJpn
- bl StringCopy
- movs r2, 0x2
- mov r9, r2
- b _080196DC
- .align 2, 0
-_080195E4: .4byte gBattleTextBuff1
-_080195E8: .4byte gStatusConditionString_ConfusionJpn
-_080195EC:
- movs r0, 0x58
- mov r3, r10
- muls r3, r0
- adds r0, r3, 0
- adds r1, r2, 0
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080196D6
- ldr r0, _0801960C @ =gBattleTextBuff1
- ldr r1, _08019610 @ =gStatusConditionString_ParalysisJpn
- b _0801969C
- .align 2, 0
-_0801960C: .4byte gBattleTextBuff1
-_08019610: .4byte gStatusConditionString_ParalysisJpn
-_08019614:
- movs r0, 0x58
- mov r3, r10
- muls r3, r0
- adds r0, r2, 0
- adds r0, 0x4C
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _080196D6
- adds r2, 0x50
- adds r2, r3, r2
- ldr r0, [r2]
- ldr r1, _08019644 @ =0xf7ffffff
- ands r0, r1
- str r0, [r2]
- ldr r0, _08019648 @ =gBattleTextBuff1
- ldr r1, _0801964C @ =gStatusConditionString_SleepJpn
- bl StringCopy
- movs r0, 0x1
- mov r9, r0
- b _080196DC
- .align 2, 0
-_08019644: .4byte 0xf7ffffff
-_08019648: .4byte gBattleTextBuff1
-_0801964C: .4byte gStatusConditionString_SleepJpn
-_08019650:
- movs r0, 0x58
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- adds r1, r2, 0
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080196D6
- ldr r0, _08019678 @ =gBattleTextBuff1
- ldr r1, _0801967C @ =gStatusConditionString_BurnJpn
- bl StringCopy
- movs r2, 0x1
- mov r9, r2
- b _080196DC
- .align 2, 0
-_08019678: .4byte gBattleTextBuff1
-_0801967C: .4byte gStatusConditionString_BurnJpn
-_08019680:
- movs r0, 0x58
- mov r3, r10
- muls r3, r0
- adds r0, r3, 0
- adds r1, r2, 0
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080196D6
- ldr r0, _080196A8 @ =gBattleTextBuff1
- ldr r1, _080196AC @ =gStatusConditionString_IceJpn
-_0801969C:
- bl StringCopy
- movs r5, 0x1
- mov r9, r5
- b _080196DC
- .align 2, 0
-_080196A8: .4byte gBattleTextBuff1
-_080196AC: .4byte gStatusConditionString_IceJpn
-_080196B0:
- movs r0, 0x58
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- adds r1, r2, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0xF0
- lsls r1, 12
- ands r0, r1
- cmp r0, 0
- beq _080196D6
- ldr r0, _080196EC @ =gBattleTextBuff1
- ldr r1, _080196F0 @ =gStatusConditionString_LoveJpn
- bl StringCopy
- movs r2, 0x3
- mov r9, r2
-_080196D6:
- mov r3, r9
- cmp r3, 0
- beq _08019798
-_080196DC:
- mov r5, r9
- cmp r5, 0x2
- beq _08019710
- cmp r5, 0x2
- bgt _080196F4
- cmp r5, 0x1
- beq _080196FC
- b _0801973C
- .align 2, 0
-_080196EC: .4byte gBattleTextBuff1
-_080196F0: .4byte gStatusConditionString_LoveJpn
-_080196F4:
- mov r0, r9
- cmp r0, 0x3
- beq _08019728
- b _0801973C
-_080196FC:
- ldr r1, _0801970C @ =gBattleMons
- movs r0, 0x58
- mov r2, r10
- muls r2, r0
- adds r1, 0x4C
- adds r2, r1
- movs r0, 0
- b _0801973A
- .align 2, 0
-_0801970C: .4byte gBattleMons
-_08019710:
- ldr r1, _08019724 @ =gBattleMons
- movs r0, 0x58
- mov r2, r10
- muls r2, r0
- adds r1, 0x50
- adds r2, r1
- ldr r0, [r2]
- movs r1, 0x8
- negs r1, r1
- b _08019738
- .align 2, 0
-_08019724: .4byte gBattleMons
-_08019728:
- ldr r1, _08019778 @ =gBattleMons
- movs r0, 0x58
- mov r2, r10
- muls r2, r0
- adds r1, 0x50
- adds r2, r1
- ldr r0, [r2]
- ldr r1, _0801977C @ =0xfff0ffff
-_08019738:
- ands r0, r1
-_0801973A:
- str r0, [r2]
-_0801973C:
- bl b_movescr_stack_push_cursor
- ldr r1, _08019780 @ =gBattlescriptCurrInstr
- ldr r0, _08019784 @ =gUnknown_081D9956
- str r0, [r1]
- ldr r0, _08019788 @ =0x02000000
- ldr r1, _0801978C @ =0x00016003
- adds r0, r1
- mov r2, r10
- strb r2, [r0]
- ldr r4, _08019790 @ =gActiveBank
- strb r2, [r4]
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- ldr r1, _08019794 @ =gUnknown_02024ACC
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- bl _08019F92
- .align 2, 0
-_08019778: .4byte gBattleMons
-_0801977C: .4byte 0xfff0ffff
-_08019780: .4byte gBattlescriptCurrInstr
-_08019784: .4byte gUnknown_081D9956
-_08019788: .4byte 0x02000000
-_0801978C: .4byte 0x00016003
-_08019790: .4byte gActiveBank
-_08019794: .4byte gUnknown_02024ACC
-_08019798:
- mov r0, r10
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, _080197B0 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r10, r0
- bcs _080197AC
- b _08019458
-_080197AC:
- bl _08019F76
- .align 2, 0
-_080197B0: .4byte gNoOfAllBanks
-_080197B4:
- movs r3, 0
- mov r10, r3
- ldr r0, _080197FC @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r10, r0
- bcc _080197C2
- b _08019F76
-_080197C2:
- ldr r4, _08019800 @ =gBattleMons
-_080197C4:
- movs r0, 0x58
- mov r5, r10
- muls r5, r0
- adds r0, r5, 0
- adds r0, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x3B
- bne _080197E8
- mov r0, r10
- bl castform_switch
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- cmp r0, 0
- beq _080197E8
- b _08019E40
-_080197E8:
- mov r0, r10
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, _080197FC @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r10, r0
- bcc _080197C4
- b _08019F76
- .align 2, 0
-_080197FC: .4byte gNoOfAllBanks
-_08019800: .4byte gBattleMons
-_08019804:
- mov r1, r8
- ldrb r0, [r1]
- cmp r0, 0x1C
- beq _0801980E
- b _08019F76
-_0801980E:
- ldr r4, _08019860 @ =gHitMarker
- ldr r1, [r4]
- movs r0, 0x80
- lsls r0, 7
- ands r0, r1
- cmp r0, 0
- bne _0801981E
- b _08019F76
-_0801981E:
- ldr r0, _08019864 @ =0xffffbfff
- ands r1, r0
- str r1, [r4]
- ldr r3, _08019868 @ =0x000160ca
- adds r2, r7, r3
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2]
- cmp r0, 0x6
- bne _08019838
- movs r0, 0x2
- strb r0, [r2]
-_08019838:
- ldr r1, _0801986C @ =gBattleCommunication
- ldrb r0, [r2]
- adds r0, 0x40
- strb r0, [r1, 0x3]
- ldr r0, _08019870 @ =gBankTarget
- ldrb r1, [r0]
- ldr r5, _08019874 @ =0x00016003
- adds r0, r7, r5
- strb r1, [r0]
- bl b_movescr_stack_push_cursor
- ldr r1, _08019878 @ =gBattlescriptCurrInstr
- ldr r0, _0801987C @ =gUnknown_081D9953
- str r0, [r1]
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 6
- orrs r0, r1
- str r0, [r4]
- b _08019F22
- .align 2, 0
-_08019860: .4byte gHitMarker
-_08019864: .4byte 0xffffbfff
-_08019868: .4byte 0x000160ca
-_0801986C: .4byte gBattleCommunication
-_08019870: .4byte gBankTarget
-_08019874: .4byte 0x00016003
-_08019878: .4byte gBattlescriptCurrInstr
-_0801987C: .4byte gUnknown_081D9953
-_08019880:
- mov r1, r8
- ldrb r0, [r1]
- cmp r0, 0x1C
- beq _0801988A
- b _08019F76
-_0801988A:
- ldr r4, _080198DC @ =gHitMarker
- ldr r1, [r4]
- movs r0, 0x80
- lsls r0, 7
- ands r0, r1
- cmp r0, 0
- bne _0801989A
- b _08019F76
-_0801989A:
- ldr r0, _080198E0 @ =0xffffbfff
- ands r1, r0
- str r1, [r4]
- ldr r3, _080198E4 @ =0x000160ca
- adds r2, r7, r3
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2]
- cmp r0, 0x6
- bne _080198B4
- movs r0, 0x2
- strb r0, [r2]
-_080198B4:
- ldr r1, _080198E8 @ =gBattleCommunication
- ldrb r0, [r2]
- strb r0, [r1, 0x3]
- ldr r0, _080198EC @ =gBankAttacker
- ldrb r1, [r0]
- ldr r5, _080198F0 @ =0x00016003
- adds r0, r7, r5
- strb r1, [r0]
- bl b_movescr_stack_push_cursor
- ldr r1, _080198F4 @ =gBattlescriptCurrInstr
- ldr r0, _080198F8 @ =gUnknown_081D9953
- str r0, [r1]
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 6
- orrs r0, r1
- str r0, [r4]
- b _08019F22
- .align 2, 0
-_080198DC: .4byte gHitMarker
-_080198E0: .4byte 0xffffbfff
-_080198E4: .4byte 0x000160ca
-_080198E8: .4byte gBattleCommunication
-_080198EC: .4byte gBankAttacker
-_080198F0: .4byte 0x00016003
-_080198F4: .4byte gBattlescriptCurrInstr
-_080198F8: .4byte gUnknown_081D9953
-_080198FC:
- movs r4, 0
- ldr r0, _08019934 @ =gNoOfAllBanks
- ldrb r1, [r0]
- cmp r4, r1
- blt _08019908
- b _08019F76
-_08019908:
- ldr r0, _08019938 @ =gBattleMons
- adds r5, r1, 0
- ldr r2, _0801993C @ =gStatuses3
- adds r3, r0, 0
- adds r3, 0x20
- movs r6, 0x80
- lsls r6, 12
-_08019916:
- ldrb r1, [r3]
- cmp r1, 0x16
- bne _08019926
- ldr r0, [r2]
- ands r0, r6
- cmp r0, 0
- beq _08019926
- b _08019E6C
-_08019926:
- adds r2, 0x4
- adds r3, 0x58
- adds r4, 0x1
- cmp r4, r5
- blt _08019916
- b _08019F76
- .align 2, 0
-_08019934: .4byte gNoOfAllBanks
-_08019938: .4byte gBattleMons
-_0801993C: .4byte gStatuses3
-_08019940:
- movs r4, 0
- ldr r0, _08019A1C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _0801994C
- b _08019F76
-_0801994C:
- ldr r0, _08019A20 @ =gActiveBank
- mov r8, r0
- ldr r1, _08019A24 @ =gBattleMons
- adds r1, 0x20
- str r1, [sp, 0x1C]
- movs r2, 0
- str r2, [sp, 0x20]
-_0801995A:
- ldr r3, [sp, 0x1C]
- ldrb r0, [r3]
- cmp r0, 0x24
- beq _08019964
- b _08019AF6
-_08019964:
- ldr r0, _08019A28 @ =gStatuses3
- ldr r5, [sp, 0x20]
- adds r0, r5, r0
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 13
- ands r1, r0
- str r5, [sp, 0x18]
- cmp r1, 0
- bne _0801997A
- b _08019AF6
-_0801997A:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBankIdentity
- movs r1, 0x1
- adds r5, r0, 0
- eors r5, r1
- ands r5, r1
- adds r0, r5, 0
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r5, 0x2
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08019A2C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _080199AE
- b _08019ABC
-_080199AE:
- movs r1, 0x58
- adds r0, r6, 0
- muls r0, r1
- ldr r3, _08019A24 @ =gBattleMons
- adds r1, r0, r3
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0
- beq _08019A78
- ldrh r0, [r1, 0x28]
- cmp r0, 0
- beq _08019A34
- movs r1, 0x58
- adds r0, r7, 0
- muls r0, r1
- adds r1, r0, r3
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0
- beq _08019A34
- ldrh r0, [r1, 0x28]
- cmp r0, 0
- beq _08019A34
- str r2, [sp, 0x24]
- bl Random
- ldr r2, [sp, 0x24]
- adds r1, r2, 0
- ands r1, r0
- lsls r1, 1
- orrs r5, r1
- adds r0, r5, 0
- bl GetBankByPlayerAI
- mov r2, r8
- strb r0, [r2]
- ldrb r0, [r2]
- movs r3, 0x58
- muls r0, r3
- ldr r5, _08019A24 @ =gBattleMons
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- ldr r1, [sp, 0x1C]
- strb r0, [r1]
- ldrb r0, [r2]
- muls r0, r3
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- ldr r2, _08019A30 @ =gLastUsedAbility
- strb r0, [r2]
- b _08019AE4
- .align 2, 0
-_08019A1C: .4byte gNoOfAllBanks
-_08019A20: .4byte gActiveBank
-_08019A24: .4byte gBattleMons
-_08019A28: .4byte gStatuses3
-_08019A2C: .4byte gBattleTypeFlags
-_08019A30: .4byte gLastUsedAbility
-_08019A34:
- ldr r3, _08019A74 @ =gBattleMons
- movs r2, 0x58
- adds r0, r6, 0
- muls r0, r2
- adds r1, r0, r3
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0
- beq _08019A78
- ldrh r0, [r1, 0x28]
- cmp r0, 0
- beq _08019A78
- mov r5, r8
- strb r6, [r5]
- adds r1, r4, 0
- muls r1, r2
- adds r1, r3
- ldrb r0, [r5]
- muls r0, r2
- adds r0, r3
- adds r0, 0x20
- ldrb r0, [r0]
- adds r1, 0x20
- strb r0, [r1]
- ldrb r0, [r5]
- muls r0, r2
- adds r0, r3
- adds r0, 0x20
- ldrb r0, [r0]
- b _08019AE0
- .align 2, 0
-_08019A74: .4byte gBattleMons
-_08019A78:
- ldr r3, _08019AB8 @ =gBattleMons
- movs r2, 0x58
- adds r0, r7, 0
- muls r0, r2
- adds r1, r0, r3
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0
- beq _08019AEE
- ldrh r0, [r1, 0x28]
- cmp r0, 0
- beq _08019AEE
- mov r5, r8
- strb r7, [r5]
- adds r1, r4, 0
- muls r1, r2
- adds r1, r3
- ldrb r0, [r5]
- muls r0, r2
- adds r0, r3
- adds r0, 0x20
- ldrb r0, [r0]
- adds r1, 0x20
- strb r0, [r1]
- ldrb r0, [r5]
- muls r0, r2
- adds r0, r3
- adds r0, 0x20
- ldrb r0, [r0]
- b _08019AE0
- .align 2, 0
-_08019AB8: .4byte gBattleMons
-_08019ABC:
- mov r2, r8
- strb r6, [r2]
- movs r3, 0x58
- adds r0, r6, 0
- muls r0, r3
- ldr r5, _08019B10 @ =gBattleMons
- adds r0, r5
- adds r2, r0, 0
- adds r2, 0x20
- ldrb r1, [r2]
- cmp r1, 0
- beq _08019AEE
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08019AEE
- ldr r0, [sp, 0x1C]
- strb r1, [r0]
- ldrb r0, [r2]
-_08019AE0:
- ldr r1, _08019B14 @ =gLastUsedAbility
- strb r0, [r1]
-_08019AE4:
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08019AEE:
- mov r2, r9
- cmp r2, 0
- beq _08019AF6
- b _08019E88
-_08019AF6:
- ldr r3, [sp, 0x1C]
- adds r3, 0x58
- str r3, [sp, 0x1C]
- ldr r5, [sp, 0x20]
- adds r5, 0x4
- str r5, [sp, 0x20]
- adds r4, 0x1
- ldr r0, _08019B18 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- bge _08019B0E
- b _0801995A
-_08019B0E:
- b _08019F76
- .align 2, 0
-_08019B10: .4byte gBattleMons
-_08019B14: .4byte gLastUsedAbility
-_08019B18: .4byte gNoOfAllBanks
-_08019B1C:
- movs r4, 0
- ldr r0, _08019B54 @ =gNoOfAllBanks
- ldrb r1, [r0]
- cmp r4, r1
- blt _08019B28
- b _08019F76
-_08019B28:
- ldr r0, _08019B58 @ =gBattleMons
- adds r5, r1, 0
- ldr r2, _08019B5C @ =gStatuses3
- adds r3, r0, 0
- adds r3, 0x20
- movs r6, 0x80
- lsls r6, 12
-_08019B36:
- ldrb r1, [r3]
- cmp r1, 0x16
- bne _08019B46
- ldr r0, [r2]
- ands r0, r6
- cmp r0, 0
- beq _08019B46
- b _08019F04
-_08019B46:
- adds r2, 0x4
- adds r3, 0x58
- adds r4, 0x1
- cmp r4, r5
- blt _08019B36
- b _08019F76
- .align 2, 0
-_08019B54: .4byte gNoOfAllBanks
-_08019B58: .4byte gBattleMons
-_08019B5C: .4byte gStatuses3
-_08019B60:
- mov r0, r10
- bl GetBankSide
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _08019BB0 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08019B76
- b _08019F76
-_08019B76:
- ldr r7, _08019BB4 @ =gBattleMons
-_08019B78:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- adds r3, r4, 0x1
- cmp r0, r5
- beq _08019BA2
- movs r0, 0x58
- muls r0, r4
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, r6
- bne _08019BA2
- ldr r0, _08019BB8 @ =gLastUsedAbility
- strb r6, [r0]
- lsls r0, r3, 24
- lsrs r0, 24
- mov r9, r0
-_08019BA2:
- adds r4, r3, 0
- ldr r0, _08019BB0 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08019B78
- b _08019F76
- .align 2, 0
-_08019BB0: .4byte gNoOfAllBanks
-_08019BB4: .4byte gBattleMons
-_08019BB8: .4byte gLastUsedAbility
-_08019BBC:
- mov r0, r10
- bl GetBankSide
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _08019C0C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08019BD2
- b _08019F76
-_08019BD2:
- ldr r7, _08019C10 @ =gBattleMons
-_08019BD4:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- adds r3, r4, 0x1
- cmp r0, r5
- bne _08019BFE
- movs r0, 0x58
- muls r0, r4
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, r6
- bne _08019BFE
- ldr r0, _08019C14 @ =gLastUsedAbility
- strb r6, [r0]
- lsls r0, r3, 24
- lsrs r0, 24
- mov r9, r0
-_08019BFE:
- adds r4, r3, 0
- ldr r0, _08019C0C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08019BD4
- b _08019F76
- .align 2, 0
-_08019C0C: .4byte gNoOfAllBanks
-_08019C10: .4byte gBattleMons
-_08019C14: .4byte gLastUsedAbility
-_08019C18:
- mov r1, r8
- ldrb r0, [r1]
- cmp r0, 0xFD
- beq _08019C40
- cmp r0, 0xFE
- beq _08019C78
- movs r4, 0
- ldr r0, _08019C38 @ =gNoOfAllBanks
- adds r5, r0, 0
- ldrb r2, [r5]
- cmp r4, r2
- blt _08019C32
- b _08019F76
-_08019C32:
- ldr r2, _08019C3C @ =gBattleMons
- b _08019CB0
- .align 2, 0
-_08019C38: .4byte gNoOfAllBanks
-_08019C3C: .4byte gBattleMons
-_08019C40:
- movs r4, 0
- ldr r0, _08019C70 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08019C4C
- b _08019F76
-_08019C4C:
- ldr r5, _08019C74 @ =gStatuses3
- movs r2, 0x80
- lsls r2, 9
- adds r1, r0, 0
-_08019C54:
- lsls r0, r4, 2
- adds r0, r5
- ldr r0, [r0]
- ands r0, r2
- adds r3, r4, 0x1
- cmp r0, 0
- beq _08019C68
- lsls r0, r3, 24
- lsrs r0, 24
- mov r9, r0
-_08019C68:
- adds r4, r3, 0
- cmp r4, r1
- blt _08019C54
- b _08019F76
- .align 2, 0
-_08019C70: .4byte gNoOfAllBanks
-_08019C74: .4byte gStatuses3
-_08019C78:
- movs r4, 0
- ldr r0, _08019CA8 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08019C84
- b _08019F76
-_08019C84:
- ldr r5, _08019CAC @ =gStatuses3
- movs r2, 0x80
- lsls r2, 10
- adds r1, r0, 0
-_08019C8C:
- lsls r0, r4, 2
- adds r0, r5
- ldr r0, [r0]
- ands r0, r2
- adds r3, r4, 0x1
- cmp r0, 0
- beq _08019CA0
- lsls r0, r3, 24
- lsrs r0, 24
- mov r9, r0
-_08019CA0:
- adds r4, r3, 0
- cmp r4, r1
- blt _08019C8C
- b _08019F76
- .align 2, 0
-_08019CA8: .4byte gNoOfAllBanks
-_08019CAC: .4byte gStatuses3
-_08019CB0:
- movs r0, 0x58
- muls r0, r4
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- adds r3, r4, 0x1
- cmp r0, r6
- bne _08019CCA
- mov r0, r8
- strb r6, [r0]
- lsls r0, r3, 24
- lsrs r0, 24
- mov r9, r0
-_08019CCA:
- adds r4, r3, 0
- ldrb r1, [r5]
- cmp r4, r1
- blt _08019CB0
- b _08019F76
-_08019CD4:
- movs r4, 0
- ldr r0, _08019D10 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08019CE0
- b _08019F76
-_08019CE0:
- ldr r7, _08019D14 @ =gBattleMons
- adds r2, r0, 0
- movs r5, 0x58
-_08019CE6:
- adds r0, r4, 0
- muls r0, r5
- adds r1, r0, r7
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- adds r3, r4, 0x1
- cmp r0, r6
- bne _08019D08
- ldrh r0, [r1, 0x28]
- cmp r0, 0
- beq _08019D08
- mov r0, r8
- strb r6, [r0]
- lsls r0, r3, 24
- lsrs r0, 24
- mov r9, r0
-_08019D08:
- adds r4, r3, 0
- cmp r4, r2
- blt _08019CE6
- b _08019F76
- .align 2, 0
-_08019D10: .4byte gNoOfAllBanks
-_08019D14: .4byte gBattleMons
-_08019D18:
- movs r4, 0
- ldr r0, _08019D50 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08019D24
- b _08019F76
-_08019D24:
- ldr r7, _08019D54 @ =gBattleMons
- adds r1, r0, 0
- movs r5, 0x58
- ldr r2, _08019D58 @ =gLastUsedAbility
-_08019D2C:
- adds r0, r4, 0
- muls r0, r5
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- adds r3, r4, 0x1
- cmp r0, r6
- bne _08019D48
- cmp r4, r10
- beq _08019D48
- strb r6, [r2]
- lsls r0, r3, 24
- lsrs r0, 24
- mov r9, r0
-_08019D48:
- adds r4, r3, 0
- cmp r4, r1
- blt _08019D2C
- b _08019F76
- .align 2, 0
-_08019D50: .4byte gNoOfAllBanks
-_08019D54: .4byte gBattleMons
-_08019D58: .4byte gLastUsedAbility
-_08019D5C:
- mov r0, r10
- bl GetBankSide
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _08019DAC @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08019D72
- b _08019F76
-_08019D72:
- ldr r7, _08019DB0 @ =gBattleMons
-_08019D74:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r5
- beq _08019DA0
- movs r0, 0x58
- muls r0, r4
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, r6
- bne _08019DA0
- ldr r0, _08019DB4 @ =gLastUsedAbility
- strb r6, [r0]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08019DA0:
- adds r4, 0x1
- ldr r0, _08019DAC @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08019D74
- b _08019F76
- .align 2, 0
-_08019DAC: .4byte gNoOfAllBanks
-_08019DB0: .4byte gBattleMons
-_08019DB4: .4byte gLastUsedAbility
-_08019DB8:
- mov r0, r10
- bl GetBankSide
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- ldr r0, _08019E08 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08019DCE
- b _08019F76
-_08019DCE:
- ldr r7, _08019E0C @ =gBattleMons
-_08019DD0:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r5
- bne _08019DFC
- movs r0, 0x58
- muls r0, r4
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, r6
- bne _08019DFC
- ldr r0, _08019E10 @ =gLastUsedAbility
- strb r6, [r0]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08019DFC:
- adds r4, 0x1
- ldr r0, _08019E08 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08019DD0
- b _08019F76
- .align 2, 0
-_08019E08: .4byte gNoOfAllBanks
-_08019E0C: .4byte gBattleMons
-_08019E10: .4byte gLastUsedAbility
-_08019E14:
- ldr r0, _08019E30 @ =gUnknown_081D977D
- bl b_push_move_exec
- ldr r0, _08019E34 @ =0x02000000
- ldr r2, _08019E38 @ =0x00016003
- adds r1, r0, r2
- strb r6, [r1]
- mov r1, r9
- subs r1, 0x1
- ldr r3, _08019E3C @ =0x0001609b
- adds r0, r3
- strb r1, [r0]
- b _08019F76
- .align 2, 0
-_08019E30: .4byte gUnknown_081D977D
-_08019E34: .4byte 0x02000000
-_08019E38: .4byte 0x00016003
-_08019E3C: .4byte 0x0001609b
-_08019E40:
- ldr r0, _08019E5C @ =gUnknown_081D977D
- bl b_push_move_exec
- ldr r0, _08019E60 @ =0x02000000
- ldr r5, _08019E64 @ =0x00016003
- adds r1, r0, r5
- mov r2, r10
- strb r2, [r1]
- mov r1, r9
- subs r1, 0x1
- ldr r3, _08019E68 @ =0x0001609b
- adds r0, r3
- strb r1, [r0]
- b _08019F92
- .align 2, 0
-_08019E5C: .4byte gUnknown_081D977D
-_08019E60: .4byte 0x02000000
-_08019E64: .4byte 0x00016003
-_08019E68: .4byte 0x0001609b
-_08019E6C:
- mov r5, r8
- strb r1, [r5]
- ldr r0, [r2]
- ldr r1, _08019E80 @ =0xfff7ffff
- ands r0, r1
- str r0, [r2]
- ldr r0, _08019E84 @ =gUnknown_081D978C
- bl b_push_move_exec
- b _08019F1A
- .align 2, 0
-_08019E80: .4byte 0xfff7ffff
-_08019E84: .4byte gUnknown_081D978C
-_08019E88:
- ldr r0, _08019EDC @ =gUnknown_081D9726
- bl b_push_move_exec
- ldr r1, _08019EE0 @ =gStatuses3
- ldr r2, [sp, 0x18]
- adds r1, r2, r1
- ldr r0, [r1]
- ldr r2, _08019EE4 @ =0xffefffff
- ands r0, r2
- str r0, [r1]
- ldr r0, _08019EE8 @ =0x02000000
- ldr r3, _08019EEC @ =0x00016003
- adds r0, r3
- strb r4, [r0]
- ldr r1, _08019EF0 @ =gBattleTextBuff1
- movs r4, 0xFD
- strb r4, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r2, _08019EF4 @ =gActiveBank
- ldrb r0, [r2]
- strb r0, [r1, 0x2]
- ldr r3, _08019EF8 @ =gBattlePartyID
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _08019EFC @ =gBattleTextBuff2
- strb r4, [r1]
- movs r0, 0x9
- strb r0, [r1, 0x1]
- ldr r0, _08019F00 @ =gLastUsedAbility
- ldrb r0, [r0]
- strb r0, [r1, 0x2]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x3]
- b _08019F76
- .align 2, 0
-_08019EDC: .4byte gUnknown_081D9726
-_08019EE0: .4byte gStatuses3
-_08019EE4: .4byte 0xffefffff
-_08019EE8: .4byte 0x02000000
-_08019EEC: .4byte 0x00016003
-_08019EF0: .4byte gBattleTextBuff1
-_08019EF4: .4byte gActiveBank
-_08019EF8: .4byte gBattlePartyID
-_08019EFC: .4byte gBattleTextBuff2
-_08019F00: .4byte gLastUsedAbility
-_08019F04:
- mov r5, r8
- strb r1, [r5]
- ldr r0, [r2]
- ldr r1, _08019F30 @ =0xfff7ffff
- ands r0, r1
- str r0, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _08019F34 @ =gBattlescriptCurrInstr
- ldr r0, _08019F38 @ =gUnknown_081D9795
- str r0, [r1]
-_08019F1A:
- ldr r0, _08019F3C @ =0x02000000
- ldr r1, _08019F40 @ =0x000160dd
- adds r0, r1
- strb r4, [r0]
-_08019F22:
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- b _08019F76
- .align 2, 0
-_08019F30: .4byte 0xfff7ffff
-_08019F34: .4byte gBattlescriptCurrInstr
-_08019F38: .4byte gUnknown_081D9795
-_08019F3C: .4byte 0x02000000
-_08019F40: .4byte 0x000160dd
-_08019F44:
- movs r4, 0
- ldr r0, _08019FA4 @ =gNoOfAllBanks
- ldrb r1, [r0]
- cmp r4, r1
- bge _08019F76
- ldr r0, _08019FA8 @ =gBattleMons
- adds r2, r1, 0
- adds r1, r0, 0
- adds r1, 0x20
- ldr r3, _08019FAC @ =gLastUsedAbility
-_08019F58:
- ldrb r0, [r1]
- cmp r0, r6
- bne _08019F6E
- cmp r4, r10
- beq _08019F6E
- strb r6, [r3]
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08019F6E:
- adds r1, 0x58
- adds r4, 0x1
- cmp r4, r2
- blt _08019F58
-_08019F76:
- mov r2, r9
- cmp r2, 0
- beq _08019F92
-_08019F7C:
- ldr r3, [sp, 0x4]
- cmp r3, 0xB
- bhi _08019F92
- ldr r1, _08019FAC @ =gLastUsedAbility
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _08019F92
- adds r1, r0, 0
- mov r0, r10
- bl RecordAbilityBattle
-_08019F92:
- mov r0, r9
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08019FA4: .4byte gNoOfAllBanks
-_08019FA8: .4byte gBattleMons
-_08019FAC: .4byte gLastUsedAbility
- thumb_func_end AbilityBattleEffects
-
- thumb_func_start b_call_bc_move_exec
-b_call_bc_move_exec: @ 8019FB0
- ldr r1, _08019FD8 @ =gBattlescriptCurrInstr
- str r0, [r1]
- ldr r3, _08019FDC @ =0x02017140
- adds r2, r3, 0
- adds r2, 0x20
- ldrb r0, [r2]
- adds r1, r0, 0x1
- strb r1, [r2]
- lsls r0, 24
- lsrs r0, 22
- adds r0, r3
- ldr r2, _08019FE0 @ =gBattleMainFunc
- ldr r1, [r2]
- str r1, [r0]
- ldr r0, _08019FE4 @ =sub_8013F54
- str r0, [r2]
- ldr r1, _08019FE8 @ =gFightStateTracker
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08019FD8: .4byte gBattlescriptCurrInstr
-_08019FDC: .4byte 0x02017140
-_08019FE0: .4byte gBattleMainFunc
-_08019FE4: .4byte sub_8013F54
-_08019FE8: .4byte gFightStateTracker
- thumb_func_end b_call_bc_move_exec
-
- thumb_func_start b_push_move_exec
-b_push_move_exec: @ 8019FEC
- push {r4,lr}
- adds r4, r0, 0
- bl b_movescr_stack_push_cursor
- ldr r0, _0801A01C @ =gBattlescriptCurrInstr
- str r4, [r0]
- ldr r3, _0801A020 @ =0x02017140
- adds r2, r3, 0
- adds r2, 0x20
- ldrb r0, [r2]
- adds r1, r0, 0x1
- strb r1, [r2]
- lsls r0, 24
- lsrs r0, 22
- adds r0, r3
- ldr r2, _0801A024 @ =gBattleMainFunc
- ldr r1, [r2]
- str r1, [r0]
- ldr r0, _0801A028 @ =sub_8013FBC
- str r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801A01C: .4byte gBattlescriptCurrInstr
-_0801A020: .4byte 0x02017140
-_0801A024: .4byte gBattleMainFunc
-_0801A028: .4byte sub_8013FBC
- thumb_func_end b_push_move_exec
-
- thumb_func_start sub_801A02C
-sub_801A02C: @ 801A02C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- movs r0, 0
- mov r10, r0
- movs r1, 0
- str r1, [sp, 0xC]
- add r0, sp, 0x4
- strb r1, [r0]
- ldr r4, _0801A078 @ =gLastUsedItem
- ldr r1, _0801A07C @ =gBattleMons
- movs r0, 0x58
- muls r0, r7
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- strh r0, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _0801A084
- ldr r1, _0801A080 @ =gEnigmaBerries
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrb r5, [r0, 0x7]
- ldrb r0, [r0, 0x1A]
- b _0801A098
- .align 2, 0
-_0801A078: .4byte gLastUsedItem
-_0801A07C: .4byte gBattleMons
-_0801A080: .4byte gEnigmaBerries
-_0801A084:
- ldrh r0, [r4]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r4]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r0, 24
-_0801A098:
- mov r9, r0
- ldr r1, _0801A0C0 @ =gBattleMons
- ldr r0, _0801A0C4 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- str r0, [sp, 0x14]
- cmp r0, 0xAF
- bne _0801A0CC
- ldr r1, _0801A0C8 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r3, [r0, 0x7]
- mov r8, r3
- ldrb r0, [r0, 0x1A]
- b _0801A0E2
- .align 2, 0
-_0801A0C0: .4byte gBattleMons
-_0801A0C4: .4byte gBankAttacker
-_0801A0C8: .4byte gEnigmaBerries
-_0801A0CC:
- ldr r0, [sp, 0x14]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, [sp, 0x14]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r0, 24
-_0801A0E2:
- str r0, [sp, 0x10]
- ldr r2, _0801A118 @ =gBattleMons
- ldr r0, _0801A11C @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r4, [r0, 0x2E]
- cmp r4, 0xAF
- beq _0801A102
- adds r0, r4, 0
- bl ItemId_GetHoldEffect
- adds r0, r4, 0
- bl ItemId_GetHoldEffectParam
-_0801A102:
- ldr r4, [sp, 0x8]
- cmp r4, 0x4
- bls _0801A10C
- bl _0801B3CA
-_0801A10C:
- lsls r0, r4, 2
- ldr r1, _0801A120 @ =_0801A124
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0801A118: .4byte gBattleMons
-_0801A11C: .4byte gBankTarget
-_0801A120: .4byte _0801A124
- .align 2, 0
-_0801A124:
- .4byte _0801A138
- .4byte _0801A1D4
- .4byte _0801B3CA
- .4byte _0801AE0C
- .4byte _0801B26C
-_0801A138:
- cmp r5, 0x17
- beq _0801A15C
- cmp r5, 0x20
- beq _0801A144
- bl _0801B3CA
-_0801A144:
- ldr r0, _0801A154 @ =0x02000000
- ldr r5, _0801A158 @ =0x00016056
- adds r0, r5
- movs r1, 0x2
- strb r1, [r0]
- bl _0801B3CA
- .align 2, 0
-_0801A154: .4byte 0x02000000
-_0801A158: .4byte 0x00016056
-_0801A15C:
- ldr r0, _0801A1B8 @ =gBattleMons
- mov r8, r0
- movs r0, 0x58
- adds r1, r7, 0
- muls r1, r0
- mov r0, r8
- adds r0, 0x18
- adds r1, r0
- movs r2, 0x6
- movs r3, 0x7
- mov r10, r3
-_0801A172:
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, 0x5
- bgt _0801A180
- strb r2, [r1]
- movs r4, 0x5
- str r4, [sp, 0xC]
-_0801A180:
- adds r1, 0x1
- movs r5, 0x1
- negs r5, r5
- add r10, r5
- mov r0, r10
- cmp r0, 0
- bge _0801A172
- ldr r1, [sp, 0xC]
- cmp r1, 0
- bne _0801A198
- bl _0801B3CA
-_0801A198:
- ldr r0, _0801A1BC @ =0x02000000
- ldr r2, _0801A1C0 @ =0x00016003
- adds r0, r2
- strb r7, [r0]
- ldr r0, _0801A1C4 @ =gStringBank
- strb r7, [r0]
- ldr r1, _0801A1C8 @ =gActiveBank
- ldr r0, _0801A1CC @ =gBankAttacker
- strb r7, [r0]
- strb r7, [r1]
- ldr r0, _0801A1D0 @ =gUnknown_081D9A5E
- bl b_call_bc_move_exec
- bl _0801B3CA
- .align 2, 0
-_0801A1B8: .4byte gBattleMons
-_0801A1BC: .4byte 0x02000000
-_0801A1C0: .4byte 0x00016003
-_0801A1C4: .4byte gStringBank
-_0801A1C8: .4byte gActiveBank
-_0801A1CC: .4byte gBankAttacker
-_0801A1D0: .4byte gUnknown_081D9A5E
-_0801A1D4:
- ldr r1, _0801A1FC @ =gBattleMons
- movs r0, 0x58
- muls r0, r7
- adds r0, r1
- ldrh r0, [r0, 0x28]
- mov r8, r1
- cmp r0, 0
- bne _0801A1E8
- bl _0801B3CA
-_0801A1E8:
- subs r0, r5, 0x1
- cmp r0, 0x2A
- bls _0801A1F2
- bl _0801AD5A
-_0801A1F2:
- lsls r0, 2
- ldr r1, _0801A200 @ =_0801A204
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0801A1FC: .4byte gBattleMons
-_0801A200: .4byte _0801A204
- .align 2, 0
-_0801A204:
- .4byte _0801A2B0
- .4byte _0801AAC8
- .4byte _0801AB84
- .4byte _0801AAF8
- .4byte _0801AB2C
- .4byte _0801AB5C
- .4byte _0801A2F8
- .4byte _0801ABC8
- .4byte _0801ABF8
- .4byte _0801A4CC
- .4byte _0801A548
- .4byte _0801A5C4
- .4byte _0801A634
- .4byte _0801A6C8
- .4byte _0801A75C
- .4byte _0801A7D4
- .4byte _0801A838
- .4byte _0801A89C
- .4byte _0801A900
- .4byte _0801A97C
- .4byte _0801A9C8
- .4byte _0801AD5A
- .4byte _0801A3F8
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD24
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801AD5A
- .4byte _0801A46C
-_0801A2B0:
- movs r0, 0x58
- muls r0, r7
- mov r3, r8
- adds r2, r0, r3
- ldrh r0, [r2, 0x2C]
- ldrh r1, [r2, 0x28]
- lsrs r0, 1
- cmp r1, r0
- bls _0801A2C6
- bl _0801AD5A
-_0801A2C6:
- cmp r6, 0
- beq _0801A2CE
- bl _0801AD5A
-_0801A2CE:
- ldr r4, _0801A2F0 @ =gBattleMoveDamage
- mov r5, r9
- str r5, [r4]
- ldrh r3, [r2, 0x28]
- adds r0, r3, r5
- ldrh r1, [r2, 0x2C]
- cmp r0, r1
- ble _0801A2E2
- subs r0, r1, r3
- str r0, [r4]
-_0801A2E2:
- ldr r0, [r4]
- negs r0, r0
- str r0, [r4]
- ldr r0, _0801A2F4 @ =gUnknown_081D9A74
- bl b_call_bc_move_exec
- b _0801A752
- .align 2, 0
-_0801A2F0: .4byte gBattleMoveDamage
-_0801A2F4: .4byte gUnknown_081D9A74
-_0801A2F8:
- cmp r6, 0
- beq _0801A300
- bl _0801AD5A
-_0801A300:
- adds r0, r7, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0801A324
- ldr r1, _0801A31C @ =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0801A320 @ =gPlayerParty
- b _0801A332
- .align 2, 0
-_0801A31C: .4byte gBattlePartyID
-_0801A320: .4byte gPlayerParty
-_0801A324:
- ldr r1, _0801A3A0 @ =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0801A3A4 @ =gEnemyParty
-_0801A332:
- adds r4, r1, r0
- movs r1, 0
- mov r10, r1
- add r5, sp, 0x4
-_0801A33A:
- mov r1, r10
- adds r1, 0xD
- adds r0, r4, 0
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- mov r1, r10
- adds r1, 0x11
- adds r0, r4, 0
- bl GetMonData
- strb r0, [r5]
- adds r0, r4, 0
- movs r1, 0x15
- bl GetMonData
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r6, 0
- beq _0801A36A
- ldrb r0, [r5]
- cmp r0, 0
- beq _0801A374
-_0801A36A:
- movs r2, 0x1
- add r10, r2
- mov r3, r10
- cmp r3, 0x3
- ble _0801A33A
-_0801A374:
- mov r4, r10
- cmp r4, 0x4
- bne _0801A37E
- bl _0801AD5A
-_0801A37E:
- lsls r2, r4, 24
- lsrs r2, 24
- adds r0, r6, 0
- bl CalculatePPWithBonus
- lsls r0, 24
- lsrs r2, r0, 24
- add r0, sp, 0x4
- ldrb r0, [r0]
- mov r5, r9
- adds r1, r0, r5
- cmp r1, r2
- ble _0801A3A8
- add r0, sp, 0x4
- strb r2, [r0]
- b _0801A3AC
- .align 2, 0
-_0801A3A0: .4byte gBattlePartyID
-_0801A3A4: .4byte gEnemyParty
-_0801A3A8:
- add r0, sp, 0x4
- strb r1, [r0]
-_0801A3AC:
- ldr r1, _0801A3EC @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- strb r6, [r1, 0x2]
- lsrs r0, r6, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r0, _0801A3F0 @ =gUnknown_081D9A91
- bl b_call_bc_move_exec
- mov r1, r10
- adds r1, 0x9
- lsls r1, 24
- lsrs r1, 24
- add r0, sp, 0x4
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0x1
- bl EmitSetAttributes
- ldr r0, _0801A3F4 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- movs r1, 0x3
- str r1, [sp, 0xC]
- bl _0801AD62
- .align 2, 0
-_0801A3EC: .4byte gBattleTextBuff1
-_0801A3F0: .4byte gUnknown_081D9A91
-_0801A3F4: .4byte gActiveBank
-_0801A3F8:
- ldr r0, _0801A450 @ =gBattleMons
- movs r1, 0x58
- muls r1, r7
- adds r0, 0x18
- adds r1, r0
- movs r2, 0x6
- movs r3, 0x7
- mov r10, r3
-_0801A408:
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, 0x5
- bgt _0801A416
- strb r2, [r1]
- movs r4, 0x5
- str r4, [sp, 0xC]
-_0801A416:
- adds r1, 0x1
- movs r5, 0x1
- negs r5, r5
- add r10, r5
- mov r0, r10
- cmp r0, 0
- bge _0801A408
- movs r1, 0x8
- mov r10, r1
- ldr r2, [sp, 0xC]
- cmp r2, 0
- bne _0801A432
- bl _0801B3CA
-_0801A432:
- ldr r0, _0801A454 @ =0x02000000
- ldr r3, _0801A458 @ =0x00016003
- adds r0, r3
- strb r7, [r0]
- ldr r0, _0801A45C @ =gStringBank
- strb r7, [r0]
- ldr r1, _0801A460 @ =gActiveBank
- ldr r0, _0801A464 @ =gBankAttacker
- strb r7, [r0]
- strb r7, [r1]
- ldr r0, _0801A468 @ =gUnknown_081D9A5E
- bl b_call_bc_move_exec
- bl _0801AD5A
- .align 2, 0
-_0801A450: .4byte gBattleMons
-_0801A454: .4byte 0x02000000
-_0801A458: .4byte 0x00016003
-_0801A45C: .4byte gStringBank
-_0801A460: .4byte gActiveBank
-_0801A464: .4byte gBankAttacker
-_0801A468: .4byte gUnknown_081D9A5E
-_0801A46C:
- movs r0, 0x58
- muls r0, r7
- mov r4, r8
- adds r1, r0, r4
- ldrh r0, [r1, 0x28]
- ldrh r2, [r1, 0x2C]
- cmp r0, r2
- bcc _0801A480
- bl _0801AD5A
-_0801A480:
- cmp r6, 0
- beq _0801A488
- bl _0801AD5A
-_0801A488:
- ldr r3, _0801A4C4 @ =gBattleMoveDamage
- ldrh r0, [r1, 0x2C]
- lsrs r0, 4
- str r0, [r3]
- cmp r0, 0
- bne _0801A498
- movs r0, 0x1
- str r0, [r3]
-_0801A498:
- ldrh r2, [r1, 0x28]
- ldr r0, [r3]
- adds r0, r2, r0
- ldrh r1, [r1, 0x2C]
- cmp r0, r1
- ble _0801A4A8
- subs r0, r1, r2
- str r0, [r3]
-_0801A4A8:
- ldr r0, [r3]
- negs r0, r0
- str r0, [r3]
- ldr r0, _0801A4C8 @ =gUnknown_081D9AA1
- bl b_call_bc_move_exec
- movs r3, 0x4
- str r3, [sp, 0xC]
- adds r0, r7, 0
- adds r1, r5, 0
- bl RecordItemBattle
- bl _0801AD5A
- .align 2, 0
-_0801A4C4: .4byte gBattleMoveDamage
-_0801A4C8: .4byte gUnknown_081D9AA1
-_0801A4CC:
- movs r0, 0x58
- adds r4, r7, 0
- muls r4, r0
- str r4, [sp, 0x18]
- add r4, r8
- ldrh r0, [r4, 0x2C]
- ldrh r1, [r4, 0x28]
- lsrs r0, 1
- cmp r1, r0
- bls _0801A4E4
- bl _0801AD5A
-_0801A4E4:
- cmp r6, 0
- beq _0801A4EC
- bl _0801AD5A
-_0801A4EC:
- ldr r1, _0801A540 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x8
- strb r0, [r1, 0x1]
- strb r6, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r5, _0801A544 @ =gBattleMoveDamage
- ldrh r0, [r4, 0x2C]
- mov r1, r9
- bl __divsi3
- str r0, [r5]
- cmp r0, 0
- bne _0801A510
- movs r0, 0x1
- str r0, [r5]
-_0801A510:
- ldrh r2, [r4, 0x28]
- ldr r0, [r5]
- adds r0, r2, r0
- ldrh r1, [r4, 0x2C]
- cmp r0, r1
- ble _0801A520
- subs r0, r1, r2
- str r0, [r5]
-_0801A520:
- ldr r0, [r5]
- negs r0, r0
- str r0, [r5]
- mov r0, r8
- adds r0, 0x48
- ldr r5, [sp, 0x18]
- adds r0, r5, r0
- ldr r0, [r0]
- movs r1, 0
-_0801A532:
- bl sub_8040A7C
- lsls r0, 24
- cmp r0, 0
- bge _0801A53E
- b _0801A738
-_0801A53E:
- b _0801A74C
- .align 2, 0
-_0801A540: .4byte gBattleTextBuff1
-_0801A544: .4byte gBattleMoveDamage
-_0801A548:
- movs r0, 0x58
- adds r1, r7, 0
- muls r1, r0
- str r1, [sp, 0x1C]
- adds r5, r1, 0
- add r5, r8
- ldrh r0, [r5, 0x2C]
- ldrh r1, [r5, 0x28]
- lsrs r0, 1
- cmp r1, r0
- bls _0801A562
- bl _0801AD5A
-_0801A562:
- cmp r6, 0
- beq _0801A56A
- bl _0801AD5A
-_0801A56A:
- ldr r1, _0801A5BC @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x8
- strb r0, [r1, 0x1]
- movs r6, 0x1
- strb r6, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r4, _0801A5C0 @ =gBattleMoveDamage
- ldrh r0, [r5, 0x2C]
- mov r1, r9
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801A58E
- str r6, [r4]
-_0801A58E:
- ldrh r2, [r5, 0x28]
- ldr r0, [r4]
- adds r0, r2, r0
- ldrh r1, [r5, 0x2C]
- cmp r0, r1
- ble _0801A59E
- subs r0, r1, r2
- str r0, [r4]
-_0801A59E:
- ldr r0, [r4]
- negs r0, r0
- str r0, [r4]
- mov r0, r8
- adds r0, 0x48
- ldr r2, [sp, 0x1C]
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x1
- bl sub_8040A7C
- lsls r0, 24
- cmp r0, 0
- blt _0801A6A4
- b _0801A6B8
- .align 2, 0
-_0801A5BC: .4byte gBattleTextBuff1
-_0801A5C0: .4byte gBattleMoveDamage
-_0801A5C4:
- movs r0, 0x58
- adds r4, r7, 0
- muls r4, r0
- str r4, [sp, 0x20]
- adds r5, r4, 0
- add r5, r8
- ldrh r0, [r5, 0x2C]
- ldrh r1, [r5, 0x28]
- lsrs r0, 1
- cmp r1, r0
- bls _0801A5DC
- b _0801AD5A
-_0801A5DC:
- cmp r6, 0
- beq _0801A5E2
- b _0801AD5A
-_0801A5E2:
- ldr r1, _0801A62C @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x8
- strb r0, [r1, 0x1]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r4, _0801A630 @ =gBattleMoveDamage
- ldrh r0, [r5, 0x2C]
- mov r1, r9
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801A608
- movs r0, 0x1
- str r0, [r4]
-_0801A608:
- ldrh r2, [r5, 0x28]
- ldr r0, [r4]
- adds r0, r2, r0
- ldrh r1, [r5, 0x2C]
- cmp r0, r1
- ble _0801A618
- subs r0, r1, r2
- str r0, [r4]
-_0801A618:
- ldr r0, [r4]
- negs r0, r0
- str r0, [r4]
- mov r0, r8
- adds r0, 0x48
- ldr r5, [sp, 0x20]
- adds r0, r5, r0
- ldr r0, [r0]
- movs r1, 0x2
- b _0801A532
- .align 2, 0
-_0801A62C: .4byte gBattleTextBuff1
-_0801A630: .4byte gBattleMoveDamage
-_0801A634:
- movs r0, 0x58
- adds r1, r7, 0
- muls r1, r0
- str r1, [sp, 0x24]
- adds r5, r1, 0
- add r5, r8
- ldrh r0, [r5, 0x2C]
- ldrh r1, [r5, 0x28]
- lsrs r0, 1
- cmp r1, r0
- bls _0801A64C
- b _0801AD5A
-_0801A64C:
- cmp r6, 0
- beq _0801A652
- b _0801AD5A
-_0801A652:
- ldr r1, _0801A6AC @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x8
- strb r0, [r1, 0x1]
- movs r0, 0x3
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r4, _0801A6B0 @ =gBattleMoveDamage
- ldrh r0, [r5, 0x2C]
- mov r1, r9
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801A678
- movs r0, 0x1
- str r0, [r4]
-_0801A678:
- ldrh r2, [r5, 0x28]
- ldr r0, [r4]
- adds r0, r2, r0
- ldrh r1, [r5, 0x2C]
- cmp r0, r1
- ble _0801A688
- subs r0, r1, r2
- str r0, [r4]
-_0801A688:
- ldr r0, [r4]
- negs r0, r0
- str r0, [r4]
- mov r0, r8
- adds r0, 0x48
- ldr r2, [sp, 0x24]
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x3
- bl sub_8040A7C
- lsls r0, 24
- cmp r0, 0
- bge _0801A6B8
-_0801A6A4:
- ldr r0, _0801A6B4 @ =gUnknown_081D9AD4
- bl b_call_bc_move_exec
- b _0801A6BE
- .align 2, 0
-_0801A6AC: .4byte gBattleTextBuff1
-_0801A6B0: .4byte gBattleMoveDamage
-_0801A6B4: .4byte gUnknown_081D9AD4
-_0801A6B8:
- ldr r0, _0801A6C4 @ =gUnknown_081D9A74
- bl b_call_bc_move_exec
-_0801A6BE:
- movs r3, 0x4
- str r3, [sp, 0xC]
- b _0801AD62
- .align 2, 0
-_0801A6C4: .4byte gUnknown_081D9A74
-_0801A6C8:
- movs r0, 0x58
- adds r4, r7, 0
- muls r4, r0
- str r4, [sp, 0x28]
- adds r5, r4, 0
- add r5, r8
- ldrh r0, [r5, 0x2C]
- ldrh r1, [r5, 0x28]
- lsrs r0, 1
- cmp r1, r0
- bls _0801A6E0
- b _0801AD5A
-_0801A6E0:
- cmp r6, 0
- beq _0801A6E6
- b _0801AD5A
-_0801A6E6:
- ldr r1, _0801A740 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x8
- strb r0, [r1, 0x1]
- movs r0, 0x4
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r4, _0801A744 @ =gBattleMoveDamage
- ldrh r0, [r5, 0x2C]
- mov r1, r9
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801A70C
- movs r0, 0x1
- str r0, [r4]
-_0801A70C:
- ldrh r2, [r5, 0x28]
- ldr r0, [r4]
- adds r0, r2, r0
- ldrh r1, [r5, 0x2C]
- cmp r0, r1
- ble _0801A71C
- subs r0, r1, r2
- str r0, [r4]
-_0801A71C:
- ldr r0, [r4]
- negs r0, r0
- str r0, [r4]
- mov r0, r8
- adds r0, 0x48
- ldr r5, [sp, 0x28]
- adds r0, r5, r0
- ldr r0, [r0]
- movs r1, 0x4
- bl sub_8040A7C
- lsls r0, 24
- cmp r0, 0
- bge _0801A74C
-_0801A738:
- ldr r0, _0801A748 @ =gUnknown_081D9AD4
- bl b_call_bc_move_exec
- b _0801A752
- .align 2, 0
-_0801A740: .4byte gBattleTextBuff1
-_0801A744: .4byte gBattleMoveDamage
-_0801A748: .4byte gUnknown_081D9AD4
-_0801A74C:
- ldr r0, _0801A758 @ =gUnknown_081D9A74
- bl b_call_bc_move_exec
-_0801A752:
- movs r0, 0x4
- str r0, [sp, 0xC]
- b _0801AD62
- .align 2, 0
-_0801A758: .4byte gUnknown_081D9A74
-_0801A75C:
- movs r0, 0x58
- muls r0, r7
- mov r1, r8
- adds r5, r0, r1
- ldrh r4, [r5, 0x28]
- ldrh r0, [r5, 0x2C]
- mov r1, r9
- bl __divsi3
- cmp r4, r0
- ble _0801A774
- b _0801AD5A
-_0801A774:
- cmp r6, 0
- beq _0801A77A
- b _0801AD5A
-_0801A77A:
- movs r0, 0x19
- ldrsb r0, [r5, r0]
- cmp r0, 0xB
- ble _0801A784
- b _0801AD5A
-_0801A784:
- ldr r1, _0801A7BC @ =gBattleTextBuff1
- movs r2, 0xFD
- strb r2, [r1]
- movs r0, 0x5
- strb r0, [r1, 0x1]
- movs r0, 0x1
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r1, _0801A7C0 @ =gBattleTextBuff2
- strb r2, [r1]
- strb r6, [r1, 0x1]
- movs r0, 0xD2
- strb r0, [r1, 0x2]
- strb r6, [r1, 0x3]
- subs r0, 0xD3
- strb r0, [r1, 0x4]
- ldr r0, _0801A7C4 @ =gEffectBank
- strb r7, [r0]
- ldr r1, _0801A7C8 @ =0x02000000
- ldr r3, _0801A7CC @ =0x0001601e
- adds r2, r1, r3
- movs r0, 0x11
- strb r0, [r2]
- ldr r4, _0801A7D0 @ =0x000160a4
- adds r2, r1, r4
- movs r0, 0xF
- b _0801A94C
- .align 2, 0
-_0801A7BC: .4byte gBattleTextBuff1
-_0801A7C0: .4byte gBattleTextBuff2
-_0801A7C4: .4byte gEffectBank
-_0801A7C8: .4byte 0x02000000
-_0801A7CC: .4byte 0x0001601e
-_0801A7D0: .4byte 0x000160a4
-_0801A7D4:
- movs r0, 0x58
- muls r0, r7
- mov r1, r8
- adds r5, r0, r1
- ldrh r4, [r5, 0x28]
- ldrh r0, [r5, 0x2C]
- mov r1, r9
- bl __divsi3
- cmp r4, r0
- ble _0801A7EC
- b _0801AD5A
-_0801A7EC:
- cmp r6, 0
- beq _0801A7F2
- b _0801AD5A
-_0801A7F2:
- movs r0, 0x1A
- ldrsb r0, [r5, r0]
- cmp r0, 0xB
- ble _0801A7FC
- b _0801AD5A
-_0801A7FC:
- ldr r1, _0801A824 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x5
- strb r0, [r1, 0x1]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r0, _0801A828 @ =gEffectBank
- strb r7, [r0]
- ldr r1, _0801A82C @ =0x02000000
- ldr r3, _0801A830 @ =0x0001601e
- adds r2, r1, r3
- movs r0, 0x12
- strb r0, [r2]
- ldr r4, _0801A834 @ =0x000160a4
- adds r2, r1, r4
- movs r0, 0x10
- b _0801A94C
- .align 2, 0
-_0801A824: .4byte gBattleTextBuff1
-_0801A828: .4byte gEffectBank
-_0801A82C: .4byte 0x02000000
-_0801A830: .4byte 0x0001601e
-_0801A834: .4byte 0x000160a4
-_0801A838:
- movs r0, 0x58
- muls r0, r7
- mov r1, r8
- adds r5, r0, r1
- ldrh r4, [r5, 0x28]
- ldrh r0, [r5, 0x2C]
- mov r1, r9
- bl __divsi3
- cmp r4, r0
- ble _0801A850
- b _0801AD5A
-_0801A850:
- cmp r6, 0
- beq _0801A856
- b _0801AD5A
-_0801A856:
- movs r0, 0x1B
- ldrsb r0, [r5, r0]
- cmp r0, 0xB
- ble _0801A860
- b _0801AD5A
-_0801A860:
- ldr r1, _0801A888 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x5
- strb r0, [r1, 0x1]
- movs r0, 0x3
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r0, _0801A88C @ =gEffectBank
- strb r7, [r0]
- ldr r1, _0801A890 @ =0x02000000
- ldr r3, _0801A894 @ =0x0001601e
- adds r2, r1, r3
- movs r0, 0x13
- strb r0, [r2]
- ldr r4, _0801A898 @ =0x000160a4
- adds r2, r1, r4
- movs r0, 0x11
- b _0801A94C
- .align 2, 0
-_0801A888: .4byte gBattleTextBuff1
-_0801A88C: .4byte gEffectBank
-_0801A890: .4byte 0x02000000
-_0801A894: .4byte 0x0001601e
-_0801A898: .4byte 0x000160a4
-_0801A89C:
- movs r0, 0x58
- muls r0, r7
- mov r1, r8
- adds r5, r0, r1
- ldrh r4, [r5, 0x28]
- ldrh r0, [r5, 0x2C]
- mov r1, r9
- bl __divsi3
- cmp r4, r0
- ble _0801A8B4
- b _0801AD5A
-_0801A8B4:
- cmp r6, 0
- beq _0801A8BA
- b _0801AD5A
-_0801A8BA:
- movs r0, 0x1C
- ldrsb r0, [r5, r0]
- cmp r0, 0xB
- ble _0801A8C4
- b _0801AD5A
-_0801A8C4:
- ldr r1, _0801A8EC @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x5
- strb r0, [r1, 0x1]
- movs r0, 0x4
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r0, _0801A8F0 @ =gEffectBank
- strb r7, [r0]
- ldr r1, _0801A8F4 @ =0x02000000
- ldr r3, _0801A8F8 @ =0x0001601e
- adds r2, r1, r3
- movs r0, 0x14
- strb r0, [r2]
- ldr r4, _0801A8FC @ =0x000160a4
- adds r2, r1, r4
- movs r0, 0x12
- b _0801A94C
- .align 2, 0
-_0801A8EC: .4byte gBattleTextBuff1
-_0801A8F0: .4byte gEffectBank
-_0801A8F4: .4byte 0x02000000
-_0801A8F8: .4byte 0x0001601e
-_0801A8FC: .4byte 0x000160a4
-_0801A900:
- movs r0, 0x58
- muls r0, r7
- mov r1, r8
- adds r5, r0, r1
- ldrh r4, [r5, 0x28]
- ldrh r0, [r5, 0x2C]
- mov r1, r9
- bl __divsi3
- cmp r4, r0
- ble _0801A918
- b _0801AD5A
-_0801A918:
- cmp r6, 0
- beq _0801A91E
- b _0801AD5A
-_0801A91E:
- movs r0, 0x1D
- ldrsb r0, [r5, r0]
- cmp r0, 0xB
- ble _0801A928
- b _0801AD5A
-_0801A928:
- ldr r1, _0801A960 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x5
- strb r0, [r1, 0x1]
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r0, _0801A964 @ =gEffectBank
- strb r7, [r0]
- ldr r1, _0801A968 @ =0x02000000
- ldr r3, _0801A96C @ =0x0001601e
- adds r2, r1, r3
- movs r0, 0x15
- strb r0, [r2]
- ldr r4, _0801A970 @ =0x000160a4
- adds r2, r1, r4
- movs r0, 0x13
-_0801A94C:
- strb r0, [r2]
- ldr r5, _0801A974 @ =0x000160a5
- adds r1, r5
- strb r6, [r1]
- ldr r0, _0801A978 @ =gUnknown_081D9AFE
- bl b_call_bc_move_exec
- movs r0, 0x5
- str r0, [sp, 0xC]
- b _0801AD62
- .align 2, 0
-_0801A960: .4byte gBattleTextBuff1
-_0801A964: .4byte gEffectBank
-_0801A968: .4byte 0x02000000
-_0801A96C: .4byte 0x0001601e
-_0801A970: .4byte 0x000160a4
-_0801A974: .4byte 0x000160a5
-_0801A978: .4byte gUnknown_081D9AFE
-_0801A97C:
- movs r0, 0x58
- adds r5, r7, 0
- muls r5, r0
- mov r1, r8
- adds r0, r5, r1
- ldrh r4, [r0, 0x28]
- ldrh r0, [r0, 0x2C]
- mov r1, r9
- bl __divsi3
- cmp r4, r0
- ble _0801A996
- b _0801AD5A
-_0801A996:
- cmp r6, 0
- beq _0801A99C
- b _0801AD5A
-_0801A99C:
- mov r0, r8
- adds r0, 0x50
- adds r1, r5, r0
- ldr r2, [r1]
- movs r3, 0x80
- lsls r3, 13
- adds r0, r2, 0
- ands r0, r3
- cmp r0, 0
- beq _0801A9B2
- b _0801AD5A
-_0801A9B2:
- orrs r2, r3
- str r2, [r1]
- ldr r0, _0801A9C4 @ =gUnknown_081D9B19
- bl b_call_bc_move_exec
- movs r2, 0x2
- str r2, [sp, 0xC]
- b _0801AD62
- .align 2, 0
-_0801A9C4: .4byte gUnknown_081D9B19
-_0801A9C8:
- cmp r6, 0
- beq _0801A9CE
- b _0801AD5A
-_0801A9CE:
- movs r0, 0x58
- adds r5, r7, 0
- muls r5, r0
- mov r3, r8
- adds r0, r5, r3
- ldrh r4, [r0, 0x28]
- ldrh r0, [r0, 0x2C]
- mov r1, r9
- bl __divsi3
- cmp r4, r0
- ble _0801A9E8
- b _0801AD5A
-_0801A9E8:
- movs r4, 0
- mov r10, r4
- adds r0, r5, 0x1
- mov r1, r8
- adds r1, 0x18
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0xB
- ble _0801AA18
- mov r0, r8
- adds r0, 0x19
- adds r1, r5, r0
-_0801AA04:
- adds r1, 0x1
- movs r5, 0x1
- add r10, r5
- mov r0, r10
- cmp r0, 0x4
- bgt _0801AA18
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, 0xB
- bgt _0801AA04
-_0801AA18:
- mov r1, r10
- cmp r1, 0x5
- bne _0801AA20
- b _0801AD5A
-_0801AA20:
- movs r0, 0x58
- muls r0, r7
- adds r4, r0, 0x1
- ldr r5, _0801AAA4 @ =gUnknown_02024A98
-_0801AA28:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x5
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- adds r0, r4
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0xC
- beq _0801AA28
- ldr r1, _0801AAA8 @ =gBattleTextBuff1
- movs r3, 0
- movs r2, 0xFD
- strb r2, [r1]
- movs r0, 0x5
- strb r0, [r1, 0x1]
- mov r0, r10
- adds r0, 0x1
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r0, _0801AAAC @ =gBattleTextBuff2
- strb r2, [r0]
- strb r3, [r0, 0x1]
- movs r1, 0xD1
- strb r1, [r0, 0x2]
- strb r3, [r0, 0x3]
- strb r3, [r0, 0x4]
- movs r1, 0xD2
- strb r1, [r0, 0x5]
- strb r3, [r0, 0x6]
- subs r1, 0xD3
- strb r1, [r0, 0x7]
- ldr r0, _0801AAB0 @ =gEffectBank
- strb r7, [r0]
- ldr r1, _0801AAB4 @ =0x02000000
- mov r2, r10
- adds r2, 0x21
- ldr r4, _0801AAB8 @ =0x0001601e
- adds r0, r1, r4
- strb r2, [r0]
- adds r2, 0x6
- ldr r5, _0801AABC @ =0x000160a4
- adds r0, r1, r5
- strb r2, [r0]
- ldr r0, _0801AAC0 @ =0x000160a5
- adds r1, r0
- strb r3, [r1]
- ldr r0, _0801AAC4 @ =gUnknown_081D9AFE
- bl b_call_bc_move_exec
- movs r1, 0x5
- str r1, [sp, 0xC]
- b _0801AD62
- .align 2, 0
-_0801AAA4: .4byte gUnknown_02024A98
-_0801AAA8: .4byte gBattleTextBuff1
-_0801AAAC: .4byte gBattleTextBuff2
-_0801AAB0: .4byte gEffectBank
-_0801AAB4: .4byte 0x02000000
-_0801AAB8: .4byte 0x0001601e
-_0801AABC: .4byte 0x000160a4
-_0801AAC0: .4byte 0x000160a5
-_0801AAC4: .4byte gUnknown_081D9AFE
-_0801AAC8:
- movs r0, 0x58
- adds r1, r7, 0
- muls r1, r0
- mov r0, r8
- adds r0, 0x4C
- adds r1, r0
- ldr r2, [r1]
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- bne _0801AAE0
- b _0801AD5A
-_0801AAE0:
- movs r0, 0x41
- negs r0, r0
- ands r2, r0
- str r2, [r1]
- ldr r0, _0801AAF4 @ =gUnknown_081D99B6
- bl b_call_bc_move_exec
- movs r2, 0x1
- str r2, [sp, 0xC]
- b _0801AD62
- .align 2, 0
-_0801AAF4: .4byte gUnknown_081D99B6
-_0801AAF8:
- movs r0, 0x58
- adds r1, r7, 0
- muls r1, r0
- mov r0, r8
- adds r0, 0x4C
- adds r1, r0
- ldr r2, [r1]
- movs r0, 0x88
- ands r0, r2
- cmp r0, 0
- bne _0801AB10
- b _0801AD5A
-_0801AB10:
- ldr r0, _0801AB24 @ =0xfffff077
- ands r2, r0
- str r2, [r1]
- ldr r0, _0801AB28 @ =gUnknown_081D99CE
- bl b_call_bc_move_exec
- movs r3, 0x1
- str r3, [sp, 0xC]
- b _0801AD62
- .align 2, 0
-_0801AB24: .4byte 0xfffff077
-_0801AB28: .4byte gUnknown_081D99CE
-_0801AB2C:
- movs r0, 0x58
- adds r1, r7, 0
- muls r1, r0
- mov r0, r8
- adds r0, 0x4C
- adds r1, r0
- ldr r2, [r1]
- movs r0, 0x10
- ands r0, r2
- cmp r0, 0
- bne _0801AB44
- b _0801AD5A
-_0801AB44:
- movs r0, 0x11
- negs r0, r0
- ands r2, r0
- str r2, [r1]
- ldr r0, _0801AB58 @ =gUnknown_081D99E6
- bl b_call_bc_move_exec
- movs r4, 0x1
- str r4, [sp, 0xC]
- b _0801AD62
- .align 2, 0
-_0801AB58: .4byte gUnknown_081D99E6
-_0801AB5C:
- movs r0, 0x58
- adds r1, r7, 0
- muls r1, r0
- mov r0, r8
- adds r0, 0x4C
- adds r1, r0
- ldr r2, [r1]
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- bne _0801AB74
- b _0801AD5A
-_0801AB74:
- movs r0, 0x21
- negs r0, r0
- ands r2, r0
- str r2, [r1]
- ldr r0, _0801AB80 @ =gUnknown_081D99FE
- b _0801AD0E
- .align 2, 0
-_0801AB80: .4byte gUnknown_081D99FE
-_0801AB84:
- movs r0, 0x58
- adds r3, r7, 0
- muls r3, r0
- mov r0, r8
- adds r0, 0x4C
- adds r2, r3, r0
- ldr r1, [r2]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0801AB9C
- b _0801AD5A
-_0801AB9C:
- movs r0, 0x8
- negs r0, r0
- ands r1, r0
- str r1, [r2]
- mov r1, r8
- adds r1, 0x50
- adds r1, r3, r1
- ldr r0, [r1]
- ldr r2, _0801ABC0 @ =0xf7ffffff
- ands r0, r2
- str r0, [r1]
- ldr r0, _0801ABC4 @ =gUnknown_081D9A16
- bl b_call_bc_move_exec
- movs r0, 0x1
- str r0, [sp, 0xC]
- b _0801AD62
- .align 2, 0
-_0801ABC0: .4byte 0xf7ffffff
-_0801ABC4: .4byte gUnknown_081D9A16
-_0801ABC8:
- movs r0, 0x58
- adds r1, r7, 0
- muls r1, r0
- mov r0, r8
- adds r0, 0x50
- adds r1, r0
- ldr r2, [r1]
- movs r0, 0x7
- ands r0, r2
- cmp r0, 0
- bne _0801ABE0
- b _0801AD5A
-_0801ABE0:
- movs r0, 0x8
- negs r0, r0
- ands r2, r0
- str r2, [r1]
- ldr r0, _0801ABF4 @ =gUnknown_081D9A2E
- bl b_call_bc_move_exec
- movs r1, 0x2
- str r1, [sp, 0xC]
- b _0801AD62
- .align 2, 0
-_0801ABF4: .4byte gUnknown_081D9A2E
-_0801ABF8:
- movs r0, 0x58
- adds r5, r7, 0
- muls r5, r0
- mov r0, r8
- adds r0, 0x4C
- adds r4, r5, r0
- ldr r2, [r4]
- ldrb r0, [r4]
- cmp r0, 0
- bne _0801AC1E
- mov r0, r8
- adds r0, 0x50
- adds r0, r5, r0
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0801AC1E
- b _0801AD5A
-_0801AC1E:
- movs r3, 0
- mov r10, r3
- movs r0, 0x88
- ands r2, r0
- cmp r2, 0
- beq _0801AC36
- ldr r0, _0801ACC4 @ =gBattleTextBuff1
- ldr r1, _0801ACC8 @ =gStatusConditionString_PoisonJpn
- bl StringCopy
- movs r0, 0x1
- mov r10, r0
-_0801AC36:
- ldr r0, [r4]
- movs r1, 0x7
- mov r9, r1
- ands r0, r1
- mov r6, r8
- adds r6, 0x50
- cmp r0, 0
- beq _0801AC5C
- adds r2, r5, r6
- ldr r0, [r2]
- ldr r1, _0801ACCC @ =0xf7ffffff
- ands r0, r1
- str r0, [r2]
- ldr r0, _0801ACC4 @ =gBattleTextBuff1
- ldr r1, _0801ACD0 @ =gStatusConditionString_SleepJpn
- bl StringCopy
- movs r2, 0x1
- add r10, r2
-_0801AC5C:
- ldr r0, [r4]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0801AC72
- ldr r0, _0801ACC4 @ =gBattleTextBuff1
- ldr r1, _0801ACD4 @ =gStatusConditionString_ParalysisJpn
- bl StringCopy
- movs r3, 0x1
- add r10, r3
-_0801AC72:
- ldr r0, [r4]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0801AC88
- ldr r0, _0801ACC4 @ =gBattleTextBuff1
- ldr r1, _0801ACD8 @ =gStatusConditionString_BurnJpn
- bl StringCopy
- movs r0, 0x1
- add r10, r0
-_0801AC88:
- ldr r0, [r4]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0801AC9E
- ldr r0, _0801ACC4 @ =gBattleTextBuff1
- ldr r1, _0801ACDC @ =gStatusConditionString_IceJpn
- bl StringCopy
- movs r1, 0x1
- add r10, r1
-_0801AC9E:
- adds r0, r5, r6
- ldr r0, [r0]
- mov r2, r9
- ands r0, r2
- cmp r0, 0
- beq _0801ACB6
- ldr r0, _0801ACC4 @ =gBattleTextBuff1
- ldr r1, _0801ACE0 @ =gStatusConditionString_ConfusionJpn
- bl StringCopy
- movs r3, 0x1
- add r10, r3
-_0801ACB6:
- mov r4, r10
- cmp r4, 0x1
- bgt _0801ACE8
- ldr r1, _0801ACE4 @ =gBattleCommunication
- movs r0, 0
- b _0801ACEC
- .align 2, 0
-_0801ACC4: .4byte gBattleTextBuff1
-_0801ACC8: .4byte gStatusConditionString_PoisonJpn
-_0801ACCC: .4byte 0xf7ffffff
-_0801ACD0: .4byte gStatusConditionString_SleepJpn
-_0801ACD4: .4byte gStatusConditionString_ParalysisJpn
-_0801ACD8: .4byte gStatusConditionString_BurnJpn
-_0801ACDC: .4byte gStatusConditionString_IceJpn
-_0801ACE0: .4byte gStatusConditionString_ConfusionJpn
-_0801ACE4: .4byte gBattleCommunication
-_0801ACE8:
- ldr r1, _0801AD18 @ =gBattleCommunication
- movs r0, 0x1
-_0801ACEC:
- strb r0, [r1, 0x5]
- ldr r2, _0801AD1C @ =gBattleMons
- movs r0, 0x58
- adds r3, r7, 0
- muls r3, r0
- adds r0, r2, 0
- adds r0, 0x4C
- adds r0, r3, r0
- movs r1, 0
- str r1, [r0]
- adds r2, 0x50
- adds r3, r2
- ldr r0, [r3]
- subs r1, 0x8
- ands r0, r1
- str r0, [r3]
- ldr r0, _0801AD20 @ =gUnknown_081D9A44
-_0801AD0E:
- bl b_call_bc_move_exec
- movs r5, 0x1
- str r5, [sp, 0xC]
- b _0801AD62
- .align 2, 0
-_0801AD18: .4byte gBattleCommunication
-_0801AD1C: .4byte gBattleMons
-_0801AD20: .4byte gUnknown_081D9A44
-_0801AD24:
- movs r0, 0x58
- adds r1, r7, 0
- muls r1, r0
- mov r0, r8
- adds r0, 0x50
- adds r1, r0
- ldr r2, [r1]
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r2
- cmp r0, 0
- beq _0801AD5A
- ldr r0, _0801AD84 @ =0xfff0ffff
- ands r2, r0
- str r2, [r1]
- ldr r0, _0801AD88 @ =gBattleTextBuff1
- ldr r1, _0801AD8C @ =gStatusConditionString_LoveJpn
- bl StringCopy
- ldr r0, _0801AD90 @ =gUnknown_081D9A44
- bl b_call_bc_move_exec
- ldr r1, _0801AD94 @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
- movs r0, 0x2
- str r0, [sp, 0xC]
-_0801AD5A:
- ldr r1, [sp, 0xC]
- cmp r1, 0
- bne _0801AD62
- b _0801B3CA
-_0801AD62:
- ldr r0, _0801AD98 @ =0x02000000
- ldr r2, _0801AD9C @ =0x00016003
- adds r0, r2
- strb r7, [r0]
- ldr r0, _0801ADA0 @ =gStringBank
- strb r7, [r0]
- ldr r4, _0801ADA4 @ =gActiveBank
- ldr r0, _0801ADA8 @ =gBankAttacker
- strb r7, [r0]
- strb r7, [r4]
- ldr r3, [sp, 0xC]
- cmp r3, 0x1
- beq _0801ADAC
- cmp r3, 0x3
- beq _0801ADB2
- b _0801B3CA
- .align 2, 0
-_0801AD84: .4byte 0xfff0ffff
-_0801AD88: .4byte gBattleTextBuff1
-_0801AD8C: .4byte gStatusConditionString_LoveJpn
-_0801AD90: .4byte gUnknown_081D9A44
-_0801AD94: .4byte gBattleCommunication
-_0801AD98: .4byte 0x02000000
-_0801AD9C: .4byte 0x00016003
-_0801ADA0: .4byte gStringBank
-_0801ADA4: .4byte gActiveBank
-_0801ADA8: .4byte gBankAttacker
-_0801ADAC:
- movs r0, 0x58
- muls r0, r7
- b _0801B224
-_0801ADB2:
- ldr r4, _0801AE00 @ =gBattleMons
- movs r0, 0x58
- adds r3, r7, 0
- muls r3, r0
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- beq _0801ADCE
- b _0801B3CA
-_0801ADCE:
- ldr r1, _0801AE04 @ =gDisableStructs
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, _0801AE08 @ =gBitTable
- mov r5, r10
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0801ADEE
- b _0801B3CA
-_0801ADEE:
- adds r1, r5, r3
- adds r0, r4, 0
- adds r0, 0x24
- adds r1, r0
- add r0, sp, 0x4
- ldrb r0, [r0]
- strb r0, [r1]
- b _0801B3CA
- .align 2, 0
-_0801AE00: .4byte gBattleMons
-_0801AE04: .4byte gDisableStructs
-_0801AE08: .4byte gBitTable
-_0801AE0C:
- movs r7, 0
- ldr r0, _0801AE3C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r7, r0
- bcc _0801AE18
- b _0801B3CA
-_0801AE18:
- ldr r4, _0801AE40 @ =gLastUsedItem
- ldr r1, _0801AE44 @ =gBattleMons
- movs r0, 0x58
- muls r0, r7
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- strh r0, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _0801AE4C
- ldr r1, _0801AE48 @ =gEnigmaBerries
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrb r5, [r0, 0x7]
- b _0801AE5C
- .align 2, 0
-_0801AE3C: .4byte gNoOfAllBanks
-_0801AE40: .4byte gLastUsedItem
-_0801AE44: .4byte gBattleMons
-_0801AE48: .4byte gEnigmaBerries
-_0801AE4C:
- ldrh r0, [r4]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r4]
- bl ItemId_GetHoldEffectParam
-_0801AE5C:
- subs r0, r5, 0x2
- cmp r0, 0x1A
- bls _0801AE64
- b _0801B208
-_0801AE64:
- lsls r0, 2
- ldr r1, _0801AE70 @ =_0801AE74
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0801AE70: .4byte _0801AE74
- .align 2, 0
-_0801AE74:
- .4byte _0801AEE0
- .4byte _0801AFC8
- .4byte _0801AF1C
- .4byte _0801AF58
- .4byte _0801AF94
- .4byte _0801B208
- .4byte _0801B018
- .4byte _0801B0AC
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B1A0
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B208
- .4byte _0801B054
-_0801AEE0:
- ldr r1, _0801AF10 @ =gBattleMons
- movs r0, 0x58
- muls r0, r7
- adds r1, 0x4C
- adds r2, r0, r1
- ldr r1, [r2]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0801AEF6
- b _0801B208
-_0801AEF6:
- movs r0, 0x41
- negs r0, r0
- ands r1, r0
- str r1, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801AF14 @ =gBattlescriptCurrInstr
- ldr r0, _0801AF18 @ =gUnknown_081D99BC
- str r0, [r1]
- movs r0, 0x1
- str r0, [sp, 0xC]
- b _0801B20E
- .align 2, 0
-_0801AF10: .4byte gBattleMons
-_0801AF14: .4byte gBattlescriptCurrInstr
-_0801AF18: .4byte gUnknown_081D99BC
-_0801AF1C:
- ldr r1, _0801AF48 @ =gBattleMons
- movs r0, 0x58
- muls r0, r7
- adds r1, 0x4C
- adds r2, r0, r1
- ldr r1, [r2]
- movs r0, 0x88
- ands r0, r1
- cmp r0, 0
- bne _0801AF32
- b _0801B208
-_0801AF32:
- ldr r0, _0801AF4C @ =0xfffff077
- ands r1, r0
- str r1, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801AF50 @ =gBattlescriptCurrInstr
- ldr r0, _0801AF54 @ =gUnknown_081D99D4
- str r0, [r1]
- movs r1, 0x1
- str r1, [sp, 0xC]
- b _0801B20E
- .align 2, 0
-_0801AF48: .4byte gBattleMons
-_0801AF4C: .4byte 0xfffff077
-_0801AF50: .4byte gBattlescriptCurrInstr
-_0801AF54: .4byte gUnknown_081D99D4
-_0801AF58:
- ldr r1, _0801AF88 @ =gBattleMons
- movs r0, 0x58
- muls r0, r7
- adds r1, 0x4C
- adds r2, r0, r1
- ldr r1, [r2]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0801AF6E
- b _0801B208
-_0801AF6E:
- movs r0, 0x11
- negs r0, r0
- ands r1, r0
- str r1, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801AF8C @ =gBattlescriptCurrInstr
- ldr r0, _0801AF90 @ =gUnknown_081D99EC
- str r0, [r1]
- movs r2, 0x1
- str r2, [sp, 0xC]
- b _0801B20E
- .align 2, 0
-_0801AF88: .4byte gBattleMons
-_0801AF8C: .4byte gBattlescriptCurrInstr
-_0801AF90: .4byte gUnknown_081D99EC
-_0801AF94:
- ldr r1, _0801AFBC @ =gBattleMons
- movs r0, 0x58
- muls r0, r7
- adds r1, 0x4C
- adds r2, r0, r1
- ldr r1, [r2]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0801AFAA
- b _0801B208
-_0801AFAA:
- movs r0, 0x21
- negs r0, r0
- ands r1, r0
- str r1, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801AFC0 @ =gBattlescriptCurrInstr
- ldr r0, _0801AFC4 @ =gUnknown_081D9A04
- b _0801B168
- .align 2, 0
-_0801AFBC: .4byte gBattleMons
-_0801AFC0: .4byte gBattlescriptCurrInstr
-_0801AFC4: .4byte gUnknown_081D9A04
-_0801AFC8:
- ldr r2, _0801B008 @ =gBattleMons
- movs r0, 0x58
- adds r4, r7, 0
- muls r4, r0
- adds r0, r2, 0
- adds r0, 0x4C
- adds r3, r4, r0
- ldr r1, [r3]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0801AFE2
- b _0801B208
-_0801AFE2:
- movs r0, 0x8
- negs r0, r0
- ands r1, r0
- str r1, [r3]
- adds r2, 0x50
- adds r2, r4, r2
- ldr r0, [r2]
- ldr r1, _0801B00C @ =0xf7ffffff
- ands r0, r1
- str r0, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801B010 @ =gBattlescriptCurrInstr
- ldr r0, _0801B014 @ =gUnknown_081D9A1C
- str r0, [r1]
- movs r4, 0x1
- str r4, [sp, 0xC]
- b _0801B20E
- .align 2, 0
-_0801B008: .4byte gBattleMons
-_0801B00C: .4byte 0xf7ffffff
-_0801B010: .4byte gBattlescriptCurrInstr
-_0801B014: .4byte gUnknown_081D9A1C
-_0801B018:
- ldr r1, _0801B048 @ =gBattleMons
- movs r0, 0x58
- muls r0, r7
- adds r1, 0x50
- adds r2, r0, r1
- ldr r1, [r2]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0801B02E
- b _0801B208
-_0801B02E:
- movs r0, 0x8
- negs r0, r0
- ands r1, r0
- str r1, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801B04C @ =gBattlescriptCurrInstr
- ldr r0, _0801B050 @ =gUnknown_081D9A34
- str r0, [r1]
- movs r5, 0x2
- str r5, [sp, 0xC]
- b _0801B20E
- .align 2, 0
-_0801B048: .4byte gBattleMons
-_0801B04C: .4byte gBattlescriptCurrInstr
-_0801B050: .4byte gUnknown_081D9A34
-_0801B054:
- ldr r1, _0801B090 @ =gBattleMons
- movs r0, 0x58
- muls r0, r7
- adds r1, 0x50
- adds r2, r0, r1
- ldr r1, [r2]
- movs r0, 0xF0
- lsls r0, 12
- ands r0, r1
- cmp r0, 0
- bne _0801B06C
- b _0801B208
-_0801B06C:
- ldr r0, _0801B094 @ =0xfff0ffff
- ands r1, r0
- str r1, [r2]
- ldr r0, _0801B098 @ =gBattleTextBuff1
- ldr r1, _0801B09C @ =gStatusConditionString_LoveJpn
- bl StringCopy
- bl b_movescr_stack_push_cursor
- ldr r1, _0801B0A0 @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
- ldr r1, _0801B0A4 @ =gBattlescriptCurrInstr
- ldr r0, _0801B0A8 @ =gUnknown_081D9A4A
- str r0, [r1]
- movs r0, 0x2
- str r0, [sp, 0xC]
- b _0801B20E
- .align 2, 0
-_0801B090: .4byte gBattleMons
-_0801B094: .4byte 0xfff0ffff
-_0801B098: .4byte gBattleTextBuff1
-_0801B09C: .4byte gStatusConditionString_LoveJpn
-_0801B0A0: .4byte gBattleCommunication
-_0801B0A4: .4byte gBattlescriptCurrInstr
-_0801B0A8: .4byte gUnknown_081D9A4A
-_0801B0AC:
- ldr r4, _0801B170 @ =gBattleMons
- movs r0, 0x58
- adds r5, r7, 0
- muls r5, r0
- adds r0, r4, 0
- adds r0, 0x4C
- adds r6, r5, r0
- ldr r2, [r6]
- ldrb r0, [r6]
- cmp r0, 0
- bne _0801B0D4
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r5, r0
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0801B0D4
- b _0801B208
-_0801B0D4:
- movs r0, 0x88
- ands r2, r0
- cmp r2, 0
- beq _0801B0E4
- ldr r0, _0801B174 @ =gBattleTextBuff1
- ldr r1, _0801B178 @ =gStatusConditionString_PoisonJpn
- bl StringCopy
-_0801B0E4:
- ldr r0, [r6]
- movs r1, 0x7
- mov r8, r1
- ands r0, r1
- adds r4, 0x50
- cmp r0, 0
- beq _0801B104
- adds r2, r5, r4
- ldr r0, [r2]
- ldr r1, _0801B17C @ =0xf7ffffff
- ands r0, r1
- str r0, [r2]
- ldr r0, _0801B174 @ =gBattleTextBuff1
- ldr r1, _0801B180 @ =gStatusConditionString_SleepJpn
- bl StringCopy
-_0801B104:
- ldr r0, [r6]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0801B116
- ldr r0, _0801B174 @ =gBattleTextBuff1
- ldr r1, _0801B184 @ =gStatusConditionString_ParalysisJpn
- bl StringCopy
-_0801B116:
- ldr r0, [r6]
- movs r1, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0801B128
- ldr r0, _0801B174 @ =gBattleTextBuff1
- ldr r1, _0801B188 @ =gStatusConditionString_BurnJpn
- bl StringCopy
-_0801B128:
- ldr r0, [r6]
- movs r1, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0801B13A
- ldr r0, _0801B174 @ =gBattleTextBuff1
- ldr r1, _0801B18C @ =gStatusConditionString_IceJpn
- bl StringCopy
-_0801B13A:
- adds r5, r4
- ldr r0, [r5]
- mov r2, r8
- ands r0, r2
- cmp r0, 0
- beq _0801B14E
- ldr r0, _0801B174 @ =gBattleTextBuff1
- ldr r1, _0801B190 @ =gStatusConditionString_ConfusionJpn
- bl StringCopy
-_0801B14E:
- movs r4, 0
- str r4, [r6]
- ldr r0, [r5]
- movs r1, 0x8
- negs r1, r1
- ands r0, r1
- str r0, [r5]
- bl b_movescr_stack_push_cursor
- ldr r0, _0801B194 @ =gBattleCommunication
- strb r4, [r0, 0x5]
- ldr r1, _0801B198 @ =gBattlescriptCurrInstr
- ldr r0, _0801B19C @ =gUnknown_081D9A4A
-_0801B168:
- str r0, [r1]
- movs r3, 0x1
- str r3, [sp, 0xC]
- b _0801B20E
- .align 2, 0
-_0801B170: .4byte gBattleMons
-_0801B174: .4byte gBattleTextBuff1
-_0801B178: .4byte gStatusConditionString_PoisonJpn
-_0801B17C: .4byte 0xf7ffffff
-_0801B180: .4byte gStatusConditionString_SleepJpn
-_0801B184: .4byte gStatusConditionString_ParalysisJpn
-_0801B188: .4byte gStatusConditionString_BurnJpn
-_0801B18C: .4byte gStatusConditionString_IceJpn
-_0801B190: .4byte gStatusConditionString_ConfusionJpn
-_0801B194: .4byte gBattleCommunication
-_0801B198: .4byte gBattlescriptCurrInstr
-_0801B19C: .4byte gUnknown_081D9A4A
-_0801B1A0:
- ldr r4, _0801B1F0 @ =gBattleMons
- mov r8, r4
- movs r0, 0x58
- adds r1, r7, 0
- muls r1, r0
- mov r0, r8
- adds r0, 0x18
- adds r1, r0
- movs r2, 0x6
- movs r5, 0x7
- mov r10, r5
-_0801B1B6:
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, 0x5
- bgt _0801B1C4
- strb r2, [r1]
- movs r0, 0x5
- str r0, [sp, 0xC]
-_0801B1C4:
- adds r1, 0x1
- movs r3, 0x1
- negs r3, r3
- add r10, r3
- mov r4, r10
- cmp r4, 0
- bge _0801B1B6
- ldr r5, [sp, 0xC]
- cmp r5, 0
- beq _0801B254
- ldr r0, _0801B1F4 @ =0x02000000
- ldr r1, _0801B1F8 @ =0x00016003
- adds r0, r1
- strb r7, [r0]
- ldr r0, _0801B1FC @ =gStringBank
- strb r7, [r0]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801B200 @ =gBattlescriptCurrInstr
- ldr r0, _0801B204 @ =gUnknown_081D9A64
- str r0, [r1]
- b _0801B3CA
- .align 2, 0
-_0801B1F0: .4byte gBattleMons
-_0801B1F4: .4byte 0x02000000
-_0801B1F8: .4byte 0x00016003
-_0801B1FC: .4byte gStringBank
-_0801B200: .4byte gBattlescriptCurrInstr
-_0801B204: .4byte gUnknown_081D9A64
-_0801B208:
- ldr r2, [sp, 0xC]
- cmp r2, 0
- beq _0801B254
-_0801B20E:
- ldr r0, _0801B240 @ =0x02000000
- ldr r3, _0801B244 @ =0x00016003
- adds r0, r3
- strb r7, [r0]
- ldr r0, _0801B248 @ =gStringBank
- strb r7, [r0]
- ldr r4, _0801B24C @ =gActiveBank
- strb r7, [r4]
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
-_0801B224:
- ldr r1, _0801B250 @ =gUnknown_02024ACC
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _0801B3CA
- .align 2, 0
-_0801B240: .4byte 0x02000000
-_0801B244: .4byte 0x00016003
-_0801B248: .4byte gStringBank
-_0801B24C: .4byte gActiveBank
-_0801B250: .4byte gUnknown_02024ACC
-_0801B254:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _0801B268 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r7, r0
- bcs _0801B264
- b _0801AE18
-_0801B264:
- b _0801B3CA
- .align 2, 0
-_0801B268: .4byte gNoOfAllBanks
-_0801B26C:
- ldr r7, _0801B284 @ =gBattleMoveDamage
- ldr r0, [r7]
- cmp r0, 0
- bne _0801B276
- b _0801B3CA
-_0801B276:
- mov r4, r8
- cmp r4, 0x1E
- beq _0801B288
- cmp r4, 0x3E
- beq _0801B330
- b _0801B3CA
- .align 2, 0
-_0801B284: .4byte gBattleMoveDamage
-_0801B288:
- ldr r0, _0801B314 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0801B296
- b _0801B3CA
-_0801B296:
- ldr r2, _0801B318 @ =gSpecialStatuses
- ldr r4, _0801B31C @ =gBankTarget
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r1, r0, 2
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _0801B2BC
- adds r0, r2, 0
- adds r0, 0xC
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _0801B2BC
- b _0801B3CA
-_0801B2BC:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r9
- bcs _0801B3CA
- ldr r2, _0801B320 @ =gBattleMoves
- ldr r0, _0801B324 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x8]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0801B3CA
- ldr r2, _0801B328 @ =gBattleMons
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801B3CA
- ldr r1, _0801B32C @ =gBattleCommunication
- movs r0, 0x8
- strb r0, [r1, 0x3]
- bl b_movescr_stack_push_cursor
- movs r0, 0
- movs r1, 0
- bl sub_801E3EC
- bl b_movescr_stack_pop_cursor
- b _0801B3CA
- .align 2, 0
-_0801B314: .4byte gBattleMoveFlags
-_0801B318: .4byte gSpecialStatuses
-_0801B31C: .4byte gBankTarget
-_0801B320: .4byte gBattleMoves
-_0801B324: .4byte gCurrentMove
-_0801B328: .4byte gBattleMons
-_0801B32C: .4byte gBattleCommunication
-_0801B330:
- ldr r0, _0801B3DC @ =gBattleMoveFlags
- ldrb r0, [r0]
- movs r4, 0x29
- ands r4, r0
- cmp r4, 0
- bne _0801B3CA
- ldr r1, _0801B3E0 @ =gSpecialStatuses
- ldr r5, _0801B3E4 @ =gBankTarget
- ldrb r2, [r5]
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 2
- adds r6, r1, 0x4
- adds r0, r6
- ldr r1, [r0]
- cmp r1, 0
- beq _0801B3CA
- ldr r0, _0801B3E8 @ =0x0000ffff
- cmp r1, r0
- beq _0801B3CA
- ldr r0, _0801B3EC @ =gBankAttacker
- ldrb r3, [r0]
- cmp r3, r2
- beq _0801B3CA
- ldr r2, _0801B3F0 @ =gBattleMons
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r1, [r0, 0x28]
- ldrh r0, [r0, 0x2C]
- cmp r1, r0
- beq _0801B3CA
- cmp r1, 0
- beq _0801B3CA
- ldr r0, _0801B3F4 @ =gLastUsedItem
- mov r1, sp
- ldrh r1, [r1, 0x14]
- strh r1, [r0]
- ldr r0, _0801B3F8 @ =gStringBank
- strb r3, [r0]
- ldr r0, _0801B3FC @ =0x02000000
- ldr r2, _0801B400 @ =0x00016003
- adds r0, r2
- strb r3, [r0]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldr r1, [sp, 0x10]
- bl __divsi3
- negs r0, r0
- str r0, [r7]
- ldrb r1, [r5]
- cmp r0, 0
- bne _0801B3AC
- movs r0, 0x1
- negs r0, r0
- str r0, [r7]
-_0801B3AC:
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- str r4, [r0]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801B404 @ =gBattlescriptCurrInstr
- ldr r0, _0801B408 @ =gUnknown_081D9AA7
- str r0, [r1]
- ldr r0, [sp, 0xC]
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
-_0801B3CA:
- ldr r0, [sp, 0xC]
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0801B3DC: .4byte gBattleMoveFlags
-_0801B3E0: .4byte gSpecialStatuses
-_0801B3E4: .4byte gBankTarget
-_0801B3E8: .4byte 0x0000ffff
-_0801B3EC: .4byte gBankAttacker
-_0801B3F0: .4byte gBattleMons
-_0801B3F4: .4byte gLastUsedItem
-_0801B3F8: .4byte gStringBank
-_0801B3FC: .4byte 0x02000000
-_0801B400: .4byte 0x00016003
-_0801B404: .4byte gBattlescriptCurrInstr
-_0801B408: .4byte gUnknown_081D9AA7
- thumb_func_end sub_801A02C
-
- thumb_func_start unref_sub_801B40C
-unref_sub_801B40C: @ 801B40C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r0, 0
- str r0, [sp]
- ldr r0, _0801B464 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0801B42A
- b _0801B56E
-_0801B42A:
- movs r1, 0x1
- mov r9, r1
-_0801B42E:
- movs r5, 0
- ldr r4, _0801B468 @ =gUnknown_081FC1D0
- ldr r2, [sp]
- adds r2, 0x1
- str r2, [sp, 0x4]
-_0801B438:
- ldr r0, _0801B46C @ =gAbsentBankFlags
- ldrb r2, [r0]
- ldr r3, _0801B470 @ =gBitTable
- lsls r0, r5, 2
- adds r0, r3
- ldr r0, [r0]
- ands r0, r2
- cmp r0, 0
- bne _0801B45A
- adds r0, r5, 0x2
- lsls r1, r0, 2
- adds r1, r3
- ldr r1, [r1]
- ands r2, r1
- adds r7, r0, 0
- cmp r2, 0
- beq _0801B474
-_0801B45A:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- b _0801B556
- .align 2, 0
-_0801B464: .4byte gBattleTypeFlags
-_0801B468: .4byte gUnknown_081FC1D0
-_0801B46C: .4byte gAbsentBankFlags
-_0801B470: .4byte gBitTable
-_0801B474:
- ldr r0, _0801B580 @ =gUnknown_081FC1D0
- ldr r2, [sp]
- lsls r1, r2, 3
- adds r6, r1, r0
- ldr r4, _0801B584 @ =gChosenMovesByBanks
- lsls r0, r5, 1
- adds r3, r0, r4
- ldrh r2, [r6]
- mov r8, r1
- mov r10, r0
- ldrh r3, [r3]
- cmp r2, r3
- bne _0801B4E4
- lsls r0, r7, 1
- adds r0, r4
- ldrh r1, [r6, 0x2]
- ldrh r0, [r0]
- cmp r1, r0
- bne _0801B4E4
- adds r0, r5, 0
- bl GetBankIdentity
- mov r2, r9
- ands r2, r0
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- ldr r0, _0801B588 @ =gSideTimer
- adds r1, r0
- lsls r0, r7, 4
- orrs r0, r5
- strb r0, [r1, 0x3]
- adds r0, r5, 0
- bl GetBankIdentity
- mov r1, r9
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0801B588 @ =gSideTimer
- adds r0, r1
- ldrh r1, [r6, 0x4]
- strh r1, [r0, 0x4]
- adds r0, r5, 0
- bl GetBankIdentity
- mov r1, r9
- ands r1, r0
- lsls r1, 1
- ldr r2, _0801B58C @ =gSideAffecting
- adds r1, r2
- ldrh r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strh r0, [r1]
-_0801B4E4:
- ldr r0, _0801B580 @ =gUnknown_081FC1D0
- mov r1, r8
- adds r4, r1, r0
- ldr r2, _0801B584 @ =gChosenMovesByBanks
- lsls r0, r7, 1
- adds r0, r2
- ldrh r1, [r4]
- ldrh r0, [r0]
- cmp r1, r0
- bne _0801B54E
- mov r0, r10
- adds r1, r0, r2
- ldrh r0, [r4, 0x2]
- ldrh r1, [r1]
- cmp r0, r1
- bne _0801B54E
- adds r0, r5, 0
- bl GetBankIdentity
- mov r2, r9
- ands r2, r0
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 2
- ldr r2, _0801B588 @ =gSideTimer
- adds r1, r2
- lsls r0, r5, 4
- orrs r0, r7
- strb r0, [r1, 0x3]
- adds r0, r5, 0
- bl GetBankIdentity
- mov r1, r9
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0801B588 @ =gSideTimer
- adds r0, r1
- ldrh r1, [r4, 0x4]
- strh r1, [r0, 0x4]
- adds r0, r5, 0
- bl GetBankIdentity
- mov r1, r9
- ands r1, r0
- lsls r1, 1
- ldr r2, _0801B58C @ =gSideAffecting
- adds r1, r2
- ldrh r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strh r0, [r1]
-_0801B54E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _0801B580 @ =gUnknown_081FC1D0
-_0801B556:
- cmp r5, 0x1
- bhi _0801B55C
- b _0801B438
-_0801B55C:
- ldr r0, [sp, 0x4]
- str r0, [sp]
- lsls r0, 3
- adds r0, r4
- ldrh r1, [r0]
- ldr r0, _0801B590 @ =0x0000ffff
- cmp r1, r0
- beq _0801B56E
- b _0801B42E
-_0801B56E:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801B580: .4byte gUnknown_081FC1D0
-_0801B584: .4byte gChosenMovesByBanks
-_0801B588: .4byte gSideTimer
-_0801B58C: .4byte gSideAffecting
-_0801B590: .4byte 0x0000ffff
- thumb_func_end unref_sub_801B40C
-
- thumb_func_start sub_801B594
-sub_801B594: @ 801B594
- push {lr}
- ldr r0, _0801B5B4 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801B5B0
- ldr r1, _0801B5B8 @ =gBattleScriptingCommandsTable
- ldr r0, _0801B5BC @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
-_0801B5B0:
- pop {r0}
- bx r0
- .align 2, 0
-_0801B5B4: .4byte gBattleExecBuffer
-_0801B5B8: .4byte gBattleScriptingCommandsTable
-_0801B5BC: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_801B594
-
- thumb_func_start sub_801B5C0
-sub_801B5C0: @ 801B5C0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 16
- lsrs r7, r0, 16
- lsls r1, 24
- lsrs r0, r1, 24
- movs r5, 0
- cmp r0, 0
- beq _0801B5DE
- subs r0, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- b _0801B5EA
-_0801B5DE:
- ldr r1, _0801B5FC @ =gBattleMoves
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 2
- adds r0, r1
- ldrb r6, [r0, 0x6]
-_0801B5EA:
- cmp r6, 0x40
- bls _0801B5F0
- b _0801B900
-_0801B5F0:
- lsls r0, r6, 2
- ldr r1, _0801B600 @ =_0801B604
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0801B5FC: .4byte gBattleMoves
-_0801B600: .4byte _0801B604
- .align 2, 0
-_0801B604:
- .4byte _0801B708
- .4byte _0801B808
- .4byte _0801B8FC
- .4byte _0801B900
- .4byte _0801B820
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B808
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B8FC
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B808
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B900
- .4byte _0801B808
-_0801B708:
- ldr r0, _0801B7E8 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0801B7EC @ =gSideTimer
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r2, r0, r1
- ldrb r0, [r2, 0x8]
- cmp r0, 0
- beq _0801B73A
- ldr r1, _0801B7F0 @ =gBattleMons
- ldrb r4, [r2, 0x9]
- movs r0, 0x58
- muls r0, r4
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801B73A
- b _0801B850
-_0801B73A:
- ldr r0, _0801B7E8 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r7, 1
- mov r8, r0
-_0801B74A:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0801B7F4 @ =gNoOfAllBanks
- ldrb r1, [r1]
- bl __modsi3
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r6, _0801B7E8 @ =gBankAttacker
- ldrb r2, [r6]
- cmp r5, r2
- beq _0801B74A
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _0801B74A
- ldr r0, _0801B7F8 @ =gAbsentBankFlags
- ldrb r2, [r0]
- ldr r1, _0801B7FC @ =gBitTable
- lsls r0, r5, 2
- adds r0, r1
- ldr r0, [r0]
- ands r2, r0
- cmp r2, 0
- bne _0801B74A
- ldr r0, _0801B800 @ =gBattleMoves
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x2]
- cmp r0, 0xD
- beq _0801B798
- b _0801B900
-_0801B798:
- ldrb r1, [r6]
- str r2, [sp]
- movs r0, 0x10
- movs r2, 0x1F
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801B7AE
- b _0801B900
-_0801B7AE:
- ldr r2, _0801B7F0 @ =gBattleMons
- movs r1, 0x58
- adds r0, r5, 0
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1F
- bne _0801B7C2
- b _0801B900
-_0801B7C2:
- movs r4, 0x2
- eors r5, r4
- adds r0, r5, 0
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r1, [r0]
- adds r0, r5, 0
- bl RecordAbilityBattle
- ldr r1, _0801B804 @ =gSpecialStatuses
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0]
- orrs r1, r4
- strb r1, [r0]
- b _0801B900
- .align 2, 0
-_0801B7E8: .4byte gBankAttacker
-_0801B7EC: .4byte gSideTimer
-_0801B7F0: .4byte gBattleMons
-_0801B7F4: .4byte gNoOfAllBanks
-_0801B7F8: .4byte gAbsentBankFlags
-_0801B7FC: .4byte gBitTable
-_0801B800: .4byte gBattleMoves
-_0801B804: .4byte gSpecialStatuses
-_0801B808:
- ldr r0, _0801B81C @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r2, 0x1
- movs r0, 0x1
- ands r0, r1
- eors r0, r2
- b _0801B8B2
- .align 2, 0
-_0801B81C: .4byte gBankAttacker
-_0801B820:
- ldr r0, _0801B854 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0801B858 @ =gSideTimer
- lsls r0, r4, 1
- adds r0, r4
- lsls r0, 2
- adds r2, r0, r1
- ldrb r0, [r2, 0x8]
- cmp r0, 0
- beq _0801B860
- ldr r1, _0801B85C @ =gBattleMons
- ldrb r4, [r2, 0x9]
- movs r0, 0x58
- muls r0, r4
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801B860
-_0801B850:
- adds r5, r4, 0
- b _0801B900
- .align 2, 0
-_0801B854: .4byte gBankAttacker
-_0801B858: .4byte gSideTimer
-_0801B85C: .4byte gBattleMons
-_0801B860:
- ldr r0, _0801B894 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _0801B8DC
- movs r0, 0x4
- ands r6, r0
- cmp r6, 0
- beq _0801B8DC
- ldr r0, _0801B898 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0801B8A0
- bl Random
- adds r1, r4, 0
- ands r1, r0
- cmp r1, 0
- beq _0801B89C
- movs r0, 0x1
- b _0801B8B2
- .align 2, 0
-_0801B894: .4byte gBattleTypeFlags
-_0801B898: .4byte gBankAttacker
-_0801B89C:
- movs r0, 0x3
- b _0801B8B2
-_0801B8A0:
- bl Random
- adds r1, r4, 0
- ands r1, r0
- cmp r1, 0
- beq _0801B8B0
- movs r0, 0
- b _0801B8B2
-_0801B8B0:
- movs r0, 0x2
-_0801B8B2:
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0801B8D4 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _0801B8D8 @ =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0801B900
- movs r0, 0x2
- eors r5, r0
- b _0801B900
- .align 2, 0
-_0801B8D4: .4byte gAbsentBankFlags
-_0801B8D8: .4byte gBitTable
-_0801B8DC:
- ldr r0, _0801B8F8 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r2, 0x1
- movs r0, 0x1
- ands r0, r1
- eors r0, r2
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r5, r0, 24
- b _0801B900
- .align 2, 0
-_0801B8F8: .4byte gBankAttacker
-_0801B8FC:
- ldr r0, _0801B91C @ =gBankAttacker
- ldrb r5, [r0]
-_0801B900:
- ldr r1, _0801B920 @ =0x02000000
- ldr r0, _0801B91C @ =gBankAttacker
- ldrb r0, [r0]
- ldr r2, _0801B924 @ =0x00016010
- adds r0, r2
- adds r0, r1
- strb r5, [r0]
- adds r0, r5, 0
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0801B91C: .4byte gBankAttacker
-_0801B920: .4byte 0x02000000
-_0801B924: .4byte 0x00016010
- thumb_func_end sub_801B5C0
-
- thumb_func_start sub_801B928
-sub_801B928: @ 801B928
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- ldr r0, _0801B9E0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0801B9DA
- ldr r7, _0801B9E4 @ =gBankAttacker
- ldrb r0, [r7]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0801B9DA
- ldr r5, _0801B9E8 @ =gBattleMons
- ldrb r0, [r7]
- movs r1, 0x58
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r5, 0
- adds r0, 0x54
- adds r0, r1, r0
- ldr r0, [r0]
- adds r2, r5, 0
- adds r2, 0x3C
- adds r1, r2
- bl IsOtherTrainer
- lsls r0, 24
- cmp r0, 0
- beq _0801B9DA
- ldr r0, _0801B9EC @ =0x0000080e
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- bne _0801B9DA
- movs r6, 0xA
- ldr r0, _0801B9F0 @ =0x00000808
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0801B98E
- movs r6, 0x1E
-_0801B98E:
- ldr r0, _0801B9F4 @ =0x0000080a
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0801B99C
- movs r6, 0x32
-_0801B99C:
- ldr r0, _0801B9F8 @ =0x0000080c
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0801B9AA
- movs r6, 0x46
-_0801B9AA:
- ldrb r0, [r7]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r5
- adds r0, 0x2A
- ldrb r0, [r0]
- cmp r0, r6
- bls _0801B9DA
- bl Random
- movs r1, 0xFF
- ands r1, r0
- ldrb r0, [r7]
- mov r2, r8
- muls r2, r0
- adds r0, r2, r5
- adds r0, 0x2A
- ldrb r0, [r0]
- adds r0, r6
- muls r0, r1
- asrs r4, r0, 8
- cmp r4, r6
- bge _0801B9FC
-_0801B9DA:
- movs r0, 0
- b _0801BC24
- .align 2, 0
-_0801B9E0: .4byte gBattleTypeFlags
-_0801B9E4: .4byte gBankAttacker
-_0801B9E8: .4byte gBattleMons
-_0801B9EC: .4byte 0x0000080e
-_0801B9F0: .4byte 0x00000808
-_0801B9F4: .4byte 0x0000080a
-_0801B9F8: .4byte 0x0000080c
-_0801B9FC:
- ldr r3, _0801BA3C @ =gCurrentMove
- ldrh r0, [r3]
- cmp r0, 0x63
- bne _0801BA12
- adds r0, r5, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r1, [r0]
- ldr r2, _0801BA40 @ =0xff7fffff
- ands r1, r2
- str r1, [r0]
-_0801BA12:
- ldrb r0, [r7]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r1, r5, 0
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0801BA4C
- ldrh r0, [r3]
- cmp r0, 0xAD
- beq _0801BA34
- cmp r0, 0xD6
- bne _0801BA4C
-_0801BA34:
- ldr r1, _0801BA44 @ =gBattlescriptCurrInstr
- ldr r0, _0801BA48 @ =gUnknown_081D995F
- b _0801BBCE
- .align 2, 0
-_0801BA3C: .4byte gCurrentMove
-_0801BA40: .4byte 0xff7fffff
-_0801BA44: .4byte gBattlescriptCurrInstr
-_0801BA48: .4byte gUnknown_081D995F
-_0801BA4C:
- bl Random
- movs r5, 0xFF
- adds r1, r5, 0
- ands r1, r0
- ldr r7, _0801BB04 @ =gBattleMons
- ldr r2, _0801BB08 @ =gBankAttacker
- mov r9, r2
- ldrb r3, [r2]
- movs r0, 0x58
- mov r8, r0
- mov r0, r8
- muls r0, r3
- adds r0, r7
- adds r0, 0x2A
- ldrb r2, [r0]
- adds r0, r2, r6
- muls r0, r1
- asrs r4, r0, 8
- cmp r4, r6
- bge _0801BB3C
- ldr r7, _0801BB0C @ =gBitTable
- ldr r5, _0801BB10 @ =gCurrMovePos
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r7
- ldrb r1, [r0]
- adds r0, r3, 0
- movs r2, 0xFF
- bl sub_8015A98
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bne _0801BA94
- b _0801BBBE
-_0801BA94:
- adds r6, r5, 0
- ldr r1, _0801BB14 @ =gUnknown_02024BE5
- mov r9, r1
- movs r2, 0x3
- mov r8, r2
-_0801BA9E:
- bl Random
- mov r1, r8
- ands r0, r1
- mov r2, r9
- strb r0, [r2]
- strb r0, [r6]
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r7
- ldr r5, [r0]
- ands r5, r4
- cmp r5, 0
- bne _0801BA9E
- ldr r4, _0801BB18 @ =gUnknown_02024BEA
- ldr r3, _0801BB04 @ =gBattleMons
- ldr r0, _0801BB10 @ =gCurrMovePos
- ldrb r0, [r0]
- lsls r0, 1
- ldr r1, _0801BB08 @ =gBankAttacker
- ldrb r2, [r1]
- movs r1, 0x58
- muls r1, r2
- adds r0, r1
- adds r3, 0xC
- adds r0, r3
- ldrh r0, [r0]
- strh r0, [r4]
- ldr r0, _0801BB1C @ =gBattleCommunication
- strb r5, [r0, 0x3]
- ldr r0, _0801BB20 @ =gDynamicBasePower
- movs r1, 0
- strh r5, [r0]
- ldr r0, _0801BB24 @ =0x02000000
- ldr r2, _0801BB28 @ =0x0001601c
- adds r0, r2
- strb r1, [r0]
- ldr r1, _0801BB2C @ =gBattlescriptCurrInstr
- ldr r0, _0801BB30 @ =gUnknown_081D996F
- str r0, [r1]
- ldrh r0, [r4]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _0801BB34 @ =gBankTarget
- strb r0, [r1]
- ldr r2, _0801BB38 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 14
- b _0801BC1E
- .align 2, 0
-_0801BB04: .4byte gBattleMons
-_0801BB08: .4byte gBankAttacker
-_0801BB0C: .4byte gBitTable
-_0801BB10: .4byte gCurrMovePos
-_0801BB14: .4byte gUnknown_02024BE5
-_0801BB18: .4byte gUnknown_02024BEA
-_0801BB1C: .4byte gBattleCommunication
-_0801BB20: .4byte gDynamicBasePower
-_0801BB24: .4byte 0x02000000
-_0801BB28: .4byte 0x0001601c
-_0801BB2C: .4byte gBattlescriptCurrInstr
-_0801BB30: .4byte gUnknown_081D996F
-_0801BB34: .4byte gBankTarget
-_0801BB38: .4byte gHitMarker
-_0801BB3C:
- subs r0, r2, r6
- lsls r0, 24
- lsrs r6, r0, 24
- bl Random
- adds r4, r5, 0
- ands r4, r0
- cmp r4, r6
- bge _0801BBB8
- mov r1, r9
- ldrb r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r7, 0
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r0, [r0]
- ands r0, r5
- cmp r0, 0
- bne _0801BBB8
- adds r0, r1, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x48
- beq _0801BBB8
- cmp r0, 0xF
- beq _0801BBB8
- movs r2, 0
- ldr r0, _0801BBAC @ =gNoOfAllBanks
- ldrb r3, [r0]
- mov r8, r0
- cmp r2, r3
- bge _0801BB9E
- ldr r0, [r7, 0x50]
- movs r1, 0x70
- ands r0, r1
- cmp r0, 0
- bne _0801BB9E
- adds r1, r7, 0
- adds r1, 0x50
- movs r5, 0x70
-_0801BB8E:
- adds r1, 0x58
- adds r2, 0x1
- cmp r2, r3
- bge _0801BB9E
- ldr r0, [r1]
- ands r0, r5
- cmp r0, 0
- beq _0801BB8E
-_0801BB9E:
- mov r0, r8
- ldrb r0, [r0]
- cmp r2, r0
- bne _0801BBB8
- ldr r1, _0801BBB0 @ =gBattlescriptCurrInstr
- ldr r0, _0801BBB4 @ =gUnknown_081D9989
- b _0801BBCE
- .align 2, 0
-_0801BBAC: .4byte gNoOfAllBanks
-_0801BBB0: .4byte gBattlescriptCurrInstr
-_0801BBB4: .4byte gUnknown_081D9989
-_0801BBB8:
- subs r4, r6
- cmp r4, r6
- blt _0801BBE0
-_0801BBBE:
- bl Random
- ldr r2, _0801BBD4 @ =gBattleCommunication
- movs r1, 0x3
- ands r1, r0
- strb r1, [r2, 0x5]
- ldr r1, _0801BBD8 @ =gBattlescriptCurrInstr
- ldr r0, _0801BBDC @ =gUnknown_081D9977
-_0801BBCE:
- str r0, [r1]
- movs r0, 0x1
- b _0801BC24
- .align 2, 0
-_0801BBD4: .4byte gBattleCommunication
-_0801BBD8: .4byte gBattlescriptCurrInstr
-_0801BBDC: .4byte gUnknown_081D9977
-_0801BBE0:
- ldr r4, _0801BC34 @ =gBankAttacker
- ldrb r1, [r4]
- movs r0, 0x58
- muls r1, r0
- ldr r0, _0801BC38 @ =gBattleMons
- adds r1, r0
- movs r0, 0x28
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- ldrb r0, [r4]
- str r0, [sp, 0x8]
- ldrb r0, [r4]
- str r0, [sp, 0xC]
- adds r0, r1, 0
- movs r2, 0x1
- movs r3, 0
- bl CalculateBaseDamage
- ldr r1, _0801BC3C @ =gBattleMoveDamage
- str r0, [r1]
- ldr r1, _0801BC40 @ =gBankTarget
- ldrb r0, [r4]
- strb r0, [r1]
- ldr r1, _0801BC44 @ =gBattlescriptCurrInstr
- ldr r0, _0801BC48 @ =gUnknown_081D99A0
- str r0, [r1]
- ldr r2, _0801BC4C @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 12
-_0801BC1E:
- orrs r0, r1
- str r0, [r2]
- movs r0, 0x2
-_0801BC24:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0801BC34: .4byte gBankAttacker
-_0801BC38: .4byte gBattleMons
-_0801BC3C: .4byte gBattleMoveDamage
-_0801BC40: .4byte gBankTarget
-_0801BC44: .4byte gBattlescriptCurrInstr
-_0801BC48: .4byte gUnknown_081D99A0
-_0801BC4C: .4byte gHitMarker
- thumb_func_end sub_801B928
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_4.s b/asm/battle_4.s
deleted file mode 100644
index 6747abc6c..000000000
--- a/asm/battle_4.s
+++ /dev/null
@@ -1,32351 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start atk00_attackcanceler
-atk00_attackcanceler: @ 801BC50
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r0, _0801BC6C @ =gBattleOutcome
- ldrb r0, [r0]
- cmp r0, 0
- beq _0801BC74
- ldr r1, _0801BC70 @ =gFightStateTracker
- movs r0, 0xC
- strb r0, [r1]
- b _0801BFF4
- .align 2, 0
-_0801BC6C: .4byte gBattleOutcome
-_0801BC70: .4byte gFightStateTracker
-_0801BC74:
- ldr r2, _0801BCA4 @ =gBattleMons
- ldr r0, _0801BCA8 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _0801BCB8
- ldr r2, _0801BCAC @ =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- bne _0801BCB8
- movs r0, 0x80
- lsls r0, 12
- orrs r1, r0
- str r1, [r2]
- ldr r1, _0801BCB0 @ =gBattlescriptCurrInstr
- ldr r0, _0801BCB4 @ =BattleScript_EndTurn
- b _0801BFF2
- .align 2, 0
-_0801BCA4: .4byte gBattleMons
-_0801BCA8: .4byte gBankAttacker
-_0801BCAC: .4byte gHitMarker
-_0801BCB0: .4byte gBattlescriptCurrInstr
-_0801BCB4: .4byte BattleScript_EndTurn
-_0801BCB8:
- bl sub_8017718
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0801BCC6
- b _0801BFF4
-_0801BCC6:
- ldr r0, _0801BD34 @ =gBankTarget
- ldrb r1, [r0]
- str r2, [sp]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _0801BCDE
- b _0801BFF4
-_0801BCDE:
- ldr r4, _0801BD38 @ =gBattleMons
- ldr r0, _0801BD3C @ =gCurrMovePos
- ldrb r1, [r0]
- ldr r3, _0801BD40 @ =gBankAttacker
- ldrb r2, [r3]
- movs r0, 0x58
- muls r2, r0
- adds r1, r2
- adds r0, r4, 0
- adds r0, 0x24
- adds r1, r0
- ldrb r0, [r1]
- ldr r5, _0801BD44 @ =gHitMarker
- cmp r0, 0
- bne _0801BD5C
- ldr r0, _0801BD48 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xA5
- beq _0801BD5C
- ldr r0, [r5]
- ldr r1, _0801BD4C @ =0x00800200
- ands r0, r1
- cmp r0, 0
- bne _0801BD5C
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 5
- ands r0, r1
- cmp r0, 0
- bne _0801BD5C
- ldr r1, _0801BD50 @ =gBattlescriptCurrInstr
- ldr r0, _0801BD54 @ =BattleScript_NoPPForMove
- str r0, [r1]
- ldr r2, _0801BD58 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- b _0801BFF4
- .align 2, 0
-_0801BD34: .4byte gBankTarget
-_0801BD38: .4byte gBattleMons
-_0801BD3C: .4byte gCurrMovePos
-_0801BD40: .4byte gBankAttacker
-_0801BD44: .4byte gHitMarker
-_0801BD48: .4byte gCurrentMove
-_0801BD4C: .4byte 0x00800200
-_0801BD50: .4byte gBattlescriptCurrInstr
-_0801BD54: .4byte BattleScript_NoPPForMove
-_0801BD58: .4byte gBattleMoveFlags
-_0801BD5C:
- ldr r0, [r5]
- ldr r1, _0801BDA0 @ =0xff7fffff
- ands r0, r1
- str r0, [r5]
- movs r6, 0x80
- lsls r6, 18
- ands r0, r6
- cmp r0, 0
- bne _0801BDB4
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r1, r4, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 5
- ands r0, r1
- cmp r0, 0
- bne _0801BDB4
- bl sub_801B928
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _0801BDB4
- cmp r2, 0x2
- bne _0801BDA4
- ldr r0, [r5]
- orrs r0, r6
- str r0, [r5]
- b _0801BFF4
- .align 2, 0
-_0801BDA0: .4byte 0xff7fffff
-_0801BDA4:
- ldr r0, _0801BDB0 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _0801BFF4
- .align 2, 0
-_0801BDB0: .4byte gBattleMoveFlags
-_0801BDB4:
- ldr r2, _0801BE18 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 18
- orrs r0, r1
- str r0, [r2]
- ldr r2, _0801BE1C @ =gProtectStructs
- ldr r1, _0801BE20 @ =gBankTarget
- ldrb r3, [r1]
- lsls r0, r3, 4
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 27
- mov r8, r1
- mov r9, r2
- cmp r0, 0
- bge _0801BE3C
- ldr r2, _0801BE24 @ =gBattleMoves
- ldr r0, _0801BE28 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x8]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801BE3C
- ldr r0, _0801BE2C @ =gBankAttacker
- ldrb r0, [r0]
- ldr r2, _0801BE30 @ =0x00000115
- adds r1, r3, 0
- bl sub_80151D4
- mov r0, r8
- ldrb r1, [r0]
- lsls r1, 4
- add r1, r9
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801BE34 @ =gBattlescriptCurrInstr
- ldr r0, _0801BE38 @ =BattleScript_MagicCoatBounce
- b _0801BFF2
- .align 2, 0
-_0801BE18: .4byte gHitMarker
-_0801BE1C: .4byte gProtectStructs
-_0801BE20: .4byte gBankTarget
-_0801BE24: .4byte gBattleMoves
-_0801BE28: .4byte gCurrentMove
-_0801BE2C: .4byte gBankAttacker
-_0801BE30: .4byte 0x00000115
-_0801BE34: .4byte gBattlescriptCurrInstr
-_0801BE38: .4byte BattleScript_MagicCoatBounce
-_0801BE3C:
- movs r2, 0
- ldr r0, _0801BEB8 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r2, r0
- bge _0801BE7E
- ldr r6, _0801BEBC @ =gProtectStructs
- ldr r1, _0801BEC0 @ =gBattleMoves
- mov r12, r1
- adds r5, r0, 0
- ldr r7, _0801BEC4 @ =gTurnOrder
-_0801BE50:
- adds r4, r2, r7
- ldrb r3, [r4]
- lsls r0, r3, 4
- adds r0, r6
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _0801BE78
- ldr r0, _0801BEC8 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r1, [r0, 0x8]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0801BE78
- b _0801BFA4
-_0801BE78:
- adds r2, 0x1
- cmp r2, r5
- blt _0801BE50
-_0801BE7E:
- ldr r0, _0801BECC @ =gSpecialStatuses
- mov r1, r8
- ldrb r2, [r1]
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r3, [r1]
- lsls r0, r3, 30
- cmp r0, 0
- bge _0801BEDC
- movs r0, 0x3
- negs r0, r0
- ands r0, r3
- strb r0, [r1]
- ldr r4, _0801BED0 @ =gLastUsedAbility
- movs r0, 0x1F
- strb r0, [r4]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801BED4 @ =gBattlescriptCurrInstr
- ldr r0, _0801BED8 @ =BattleScript_TookAttack
- str r0, [r1]
- mov r2, r8
- ldrb r0, [r2]
- ldrb r1, [r4]
- bl RecordAbilityBattle
- b _0801BFF4
- .align 2, 0
-_0801BEB8: .4byte gNoOfAllBanks
-_0801BEBC: .4byte gProtectStructs
-_0801BEC0: .4byte gBattleMoves
-_0801BEC4: .4byte gTurnOrder
-_0801BEC8: .4byte gCurrentMove
-_0801BECC: .4byte gSpecialStatuses
-_0801BED0: .4byte gLastUsedAbility
-_0801BED4: .4byte gBattlescriptCurrInstr
-_0801BED8: .4byte BattleScript_TookAttack
-_0801BEDC:
- lsls r0, r2, 4
- add r0, r9
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- bne _0801BEEA
- b _0801BFEC
-_0801BEEA:
- ldr r1, _0801BF80 @ =gBattleMoves
- ldr r2, _0801BF84 @ =gCurrentMove
- ldrh r3, [r2]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x2
- ands r0, r1
- adds r4, r2, 0
- cmp r0, 0
- beq _0801BFEC
- cmp r3, 0xAE
- bne _0801BF28
- ldr r2, _0801BF88 @ =gBattleMons
- ldr r0, _0801BF8C @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _0801BF28
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x7
- bne _0801BFEC
-_0801BF28:
- ldrh r0, [r4]
- bl sub_8028350
- lsls r0, 24
- cmp r0, 0
- beq _0801BF4E
- ldr r1, _0801BF88 @ =gBattleMons
- ldr r0, _0801BF8C @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 5
- ands r0, r1
- cmp r0, 0
- beq _0801BFEC
-_0801BF4E:
- ldr r0, _0801BF8C @ =gBankAttacker
- ldrb r0, [r0]
- bl CancelMultiTurnMoves
- ldr r2, _0801BF90 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801BF94 @ =gMoveHitWith
- ldr r3, _0801BF98 @ =gBankTarget
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, _0801BF9C @ =gUnknown_02024C44
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldr r1, _0801BFA0 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x6]
- b _0801BFEC
- .align 2, 0
-_0801BF80: .4byte gBattleMoves
-_0801BF84: .4byte gCurrentMove
-_0801BF88: .4byte gBattleMons
-_0801BF8C: .4byte gBankAttacker
-_0801BF90: .4byte gBattleMoveFlags
-_0801BF94: .4byte gMoveHitWith
-_0801BF98: .4byte gBankTarget
-_0801BF9C: .4byte gUnknown_02024C44
-_0801BFA0: .4byte gBattleCommunication
-_0801BFA4:
- ldr r0, _0801BFD4 @ =gBankAttacker
- ldrb r0, [r0]
- ldr r2, _0801BFD8 @ =0x00000121
- adds r1, r3, 0
- bl sub_80151D4
- ldrb r1, [r4]
- lsls r1, 4
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0x21
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldr r0, _0801BFDC @ =0x02000000
- ldrb r1, [r4]
- ldr r2, _0801BFE0 @ =0x00016003
- adds r0, r2
- strb r1, [r0]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801BFE4 @ =gBattlescriptCurrInstr
- ldr r0, _0801BFE8 @ =BattleScript_SnatchedMove
- b _0801BFF2
- .align 2, 0
-_0801BFD4: .4byte gBankAttacker
-_0801BFD8: .4byte 0x00000121
-_0801BFDC: .4byte 0x02000000
-_0801BFE0: .4byte 0x00016003
-_0801BFE4: .4byte gBattlescriptCurrInstr
-_0801BFE8: .4byte BattleScript_SnatchedMove
-_0801BFEC:
- ldr r1, _0801C004 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
-_0801BFF2:
- str r0, [r1]
-_0801BFF4:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801C004: .4byte gBattlescriptCurrInstr
- thumb_func_end atk00_attackcanceler
-
- thumb_func_start mcmd_jump_if_move_not_executed
-mcmd_jump_if_move_not_executed: @ 801C008
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r6, r1, 16
- ldr r1, _0801C054 @ =gBattlescriptCurrInstr
- ldr r5, [r1]
- adds r4, r5, r0
- ldr r0, _0801C058 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0801C068
- ldr r1, _0801C05C @ =gMoveHitWith
- ldr r3, _0801C060 @ =gBankTarget
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, _0801C064 @ =gUnknown_02024C44
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldrb r4, [r5, 0x1]
- ldrb r0, [r5, 0x2]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r5, 0x3]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r5, 0x4]
- lsls r0, 24
- orrs r4, r0
- b _0801C082
- .align 2, 0
-_0801C054: .4byte gBattlescriptCurrInstr
-_0801C058: .4byte gBattleMoveFlags
-_0801C05C: .4byte gMoveHitWith
-_0801C060: .4byte gBankTarget
-_0801C064: .4byte gUnknown_02024C44
-_0801C068:
- bl b_feature_update_destiny_bond
- ldr r0, _0801C090 @ =gBankTarget
- ldrb r1, [r0]
- str r6, [sp]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801C086
-_0801C082:
- ldr r0, _0801C094 @ =gBattlescriptCurrInstr
- str r4, [r0]
-_0801C086:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801C090: .4byte gBankTarget
-_0801C094: .4byte gBattlescriptCurrInstr
- thumb_func_end mcmd_jump_if_move_not_executed
-
- thumb_func_start atk40_jump_if_move_affected_by_protect
-atk40_jump_if_move_affected_by_protect: @ 801C098
- push {lr}
- ldr r1, _0801C0E0 @ =gProtectStructs
- ldr r0, _0801C0E4 @ =gBankTarget
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0801C0F8
- ldr r2, _0801C0E8 @ =gBattleMoves
- ldr r0, _0801C0EC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x8]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801C0F8
- ldr r2, _0801C0F0 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x5
- movs r1, 0
- bl mcmd_jump_if_move_not_executed
- ldr r1, _0801C0F4 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x6]
- b _0801C100
- .align 2, 0
-_0801C0E0: .4byte gProtectStructs
-_0801C0E4: .4byte gBankTarget
-_0801C0E8: .4byte gBattleMoves
-_0801C0EC: .4byte gCurrentMove
-_0801C0F0: .4byte gBattleMoveFlags
-_0801C0F4: .4byte gBattleCommunication
-_0801C0F8:
- ldr r1, _0801C104 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0801C100:
- pop {r0}
- bx r0
- .align 2, 0
-_0801C104: .4byte gBattlescriptCurrInstr
- thumb_func_end atk40_jump_if_move_affected_by_protect
-
- thumb_func_start sub_801C108
-sub_801C108: @ 801C108
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- movs r4, 0
- ldr r1, _0801C15C @ =gProtectStructs
- ldr r0, _0801C160 @ =gBankTarget
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _0801C154
- ldr r2, _0801C164 @ =gBattleMoves
- ldr r0, _0801C168 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x8]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801C154
- ldr r2, _0801C16C @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x7
- adds r1, r3, 0
- bl mcmd_jump_if_move_not_executed
- ldr r1, _0801C170 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x6]
- movs r4, 0x1
-_0801C154:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0801C15C: .4byte gProtectStructs
-_0801C160: .4byte gBankTarget
-_0801C164: .4byte gBattleMoves
-_0801C168: .4byte gCurrentMove
-_0801C16C: .4byte gBattleMoveFlags
-_0801C170: .4byte gBattleCommunication
- thumb_func_end sub_801C108
-
- thumb_func_start sub_801C174
-sub_801C174: @ 801C174
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r2, _0801C1D4 @ =gStatuses3
- ldr r3, _0801C1D8 @ =gBankTarget
- ldrb r4, [r3]
- lsls r0, r4, 2
- adds r0, r2
- ldr r1, [r0]
- movs r0, 0x18
- ands r1, r0
- adds r6, r2, 0
- cmp r1, 0
- beq _0801C1A6
- ldr r1, _0801C1DC @ =gDisableStructs
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r1
- ldr r1, _0801C1E0 @ =gBankAttacker
- ldrb r0, [r0, 0x15]
- ldrb r1, [r1]
- cmp r0, r1
- beq _0801C290
-_0801C1A6:
- ldr r0, _0801C1E4 @ =gHitMarker
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 9
- ands r1, r2
- adds r2, r0, 0
- cmp r1, 0
- bne _0801C1EC
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0801C1EC
-_0801C1C6:
- ldr r0, _0801C1E8 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _0801C290
- .align 2, 0
-_0801C1D4: .4byte gStatuses3
-_0801C1D8: .4byte gBankTarget
-_0801C1DC: .4byte gDisableStructs
-_0801C1E0: .4byte gBankAttacker
-_0801C1E4: .4byte gHitMarker
-_0801C1E8: .4byte gBattleMoveFlags
-_0801C1EC:
- ldr r0, [r2]
- ldr r1, _0801C29C @ =0xfffeffff
- ands r0, r1
- str r0, [r2]
- movs r1, 0x80
- lsls r1, 10
- ands r0, r1
- cmp r0, 0
- bne _0801C20E
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0801C1C6
-_0801C20E:
- ldr r0, [r2]
- ldr r1, _0801C2A0 @ =0xfffdffff
- ands r0, r1
- str r0, [r2]
- movs r1, 0x80
- lsls r1, 11
- ands r0, r1
- cmp r0, 0
- bne _0801C22E
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ands r0, r1
- cmp r0, 0
- bne _0801C1C6
-_0801C22E:
- ldr r0, [r2]
- ldr r1, _0801C2A4 @ =0xfffbffff
- ands r0, r1
- str r0, [r2]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r5, 1
- cmp r0, 0
- bne _0801C27E
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801C27E
- ldr r0, _0801C2A8 @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0801C27E
- ldr r0, _0801C2AC @ =gBattleMoves
- adds r1, r4, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x98
- beq _0801C290
-_0801C27E:
- ldr r1, _0801C2AC @ =gBattleMoves
- adds r0, r4, r5
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x11
- beq _0801C290
- cmp r0, 0x4E
- bne _0801C2B0
-_0801C290:
- movs r0, 0x7
- adds r1, r5, 0
- bl mcmd_jump_if_move_not_executed
- movs r0, 0x1
- b _0801C2B2
- .align 2, 0
-_0801C29C: .4byte 0xfffeffff
-_0801C2A0: .4byte 0xfffdffff
-_0801C2A4: .4byte 0xfffbffff
-_0801C2A8: .4byte gBattleWeather
-_0801C2AC: .4byte gBattleMoves
-_0801C2B0:
- movs r0, 0
-_0801C2B2:
- add sp, 0x4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_801C174
-
- thumb_func_start atk01_accuracycheck
-atk01_accuracycheck: @ 801C2BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, _0801C314 @ =gBattlescriptCurrInstr
- ldr r5, [r0]
- ldrb r6, [r5, 0x5]
- ldrb r1, [r5, 0x6]
- lsls r1, 8
- orrs r6, r1
- adds r1, r6, 0x2
- lsls r1, 16
- lsrs r1, 16
- adds r7, r0, 0
- cmp r1, 0x1
- bhi _0801C378
- ldr r2, _0801C318 @ =gStatuses3
- ldr r3, _0801C31C @ =gBankTarget
- ldrb r4, [r3]
- lsls r0, r4, 2
- adds r0, r2
- ldr r1, [r0]
- movs r0, 0x18
- ands r1, r0
- cmp r1, 0
- beq _0801C32C
- ldr r0, _0801C320 @ =0x0000ffff
- cmp r6, r0
- bne _0801C32C
- ldr r1, _0801C324 @ =gDisableStructs
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r1
- ldr r1, _0801C328 @ =gBankAttacker
- ldrb r0, [r0, 0x15]
- ldrb r1, [r1]
- cmp r0, r1
- bne _0801C32C
- adds r0, r5, 0x7
- str r0, [r7]
- b _0801C632
- .align 2, 0
-_0801C314: .4byte gBattlescriptCurrInstr
-_0801C318: .4byte gStatuses3
-_0801C31C: .4byte gBankTarget
-_0801C320: .4byte 0x0000ffff
-_0801C324: .4byte gDisableStructs
-_0801C328: .4byte gBankAttacker
-_0801C32C:
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ldr r1, _0801C358 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _0801C35C
- ldr r2, [r7]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r7]
- b _0801C632
- .align 2, 0
-_0801C358: .4byte 0x000400c0
-_0801C35C:
- movs r0, 0
- bl sub_801C108
- lsls r0, 24
- cmp r0, 0
- beq _0801C36A
- b _0801C632
-_0801C36A:
- ldr r1, _0801C374 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x7
- str r0, [r1]
- b _0801C632
- .align 2, 0
-_0801C374: .4byte gBattlescriptCurrInstr
-_0801C378:
- cmp r6, 0
- bne _0801C380
- ldr r0, _0801C398 @ =gCurrentMove
- ldrh r6, [r0]
-_0801C380:
- ldr r0, _0801C39C @ =0x02000000
- ldr r1, _0801C3A0 @ =0x0001601c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0801C3A4
- movs r2, 0x3F
- mov r10, r2
- mov r3, r10
- ands r3, r0
- mov r10, r3
- b _0801C3B2
- .align 2, 0
-_0801C398: .4byte gCurrentMove
-_0801C39C: .4byte 0x02000000
-_0801C3A0: .4byte 0x0001601c
-_0801C3A4:
- ldr r1, _0801C3F8 @ =gBattleMoves
- lsls r0, r6, 1
- adds r0, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x2]
- mov r10, r0
-_0801C3B2:
- adds r0, r6, 0
- bl sub_801C108
- lsls r0, 24
- cmp r0, 0
- beq _0801C3C0
- b _0801C632
-_0801C3C0:
- adds r0, r6, 0
- bl sub_801C174
- lsls r0, 24
- cmp r0, 0
- beq _0801C3CE
- b _0801C632
-_0801C3CE:
- ldr r3, _0801C3FC @ =gBattleMons
- ldr r0, _0801C400 @ =gBankTarget
- ldrb r0, [r0]
- movs r2, 0x58
- adds r4, r0, 0
- muls r4, r2
- adds r0, r3, 0
- adds r0, 0x50
- adds r0, r4, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0801C408
- ldr r0, _0801C404 @ =gBankAttacker
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- ldrb r5, [r0, 0x1E]
- b _0801C41E
- .align 2, 0
-_0801C3F8: .4byte gBattleMoves
-_0801C3FC: .4byte gBattleMons
-_0801C400: .4byte gBankTarget
-_0801C404: .4byte gBankAttacker
-_0801C408:
- ldr r0, _0801C56C @ =gBankAttacker
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- ldrb r0, [r0, 0x1E]
- adds r0, 0x6
- adds r1, r4, r3
- ldrb r1, [r1, 0x1F]
- subs r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
-_0801C41E:
- lsls r0, r5, 24
- cmp r0, 0
- bge _0801C426
- movs r5, 0
-_0801C426:
- lsls r0, r5, 24
- asrs r0, 24
- cmp r0, 0xC
- ble _0801C430
- movs r5, 0xC
-_0801C430:
- ldr r1, _0801C570 @ =gBattleMoves
- lsls r4, r6, 1
- adds r0, r4, r6
- lsls r0, 2
- adds r7, r0, r1
- ldrb r0, [r7, 0x3]
- mov r8, r0
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- str r4, [sp, 0x4]
- cmp r0, 0
- bne _0801C482
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801C482
- ldr r0, _0801C574 @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _0801C482
- ldrb r0, [r7]
- cmp r0, 0x98
- bne _0801C482
- movs r1, 0x32
- mov r8, r1
-_0801C482:
- ldr r1, _0801C578 @ =gAccuracyStageRatios
- lsls r0, r5, 24
- asrs r0, 22
- adds r0, r1
- ldrb r1, [r0]
- mov r4, r8
- muls r4, r1
- ldrb r1, [r0, 0x1]
- adds r0, r4, 0
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r7, _0801C57C @ =gBattleMons
- ldr r0, _0801C56C @ =gBankAttacker
- ldrb r0, [r0]
- movs r5, 0x58
- muls r0, r5
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0xE
- bne _0801C4C0
- lsls r0, r4, 6
- adds r0, r4
- lsls r0, 1
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_0801C4C0:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0801C518
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801C518
- ldr r0, _0801C580 @ =gBankTarget
- ldrb r0, [r0]
- muls r0, r5
- adds r0, r7
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x8
- bne _0801C518
- ldr r0, _0801C574 @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _0801C518
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_0801C518:
- ldr r2, _0801C57C @ =gBattleMons
- ldr r0, _0801C56C @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- mov r9, r2
- cmp r0, 0x37
- bne _0801C544
- mov r2, r10
- cmp r2, 0x8
- bhi _0801C544
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_0801C544:
- ldr r3, _0801C580 @ =gBankTarget
- mov r8, r3
- ldrb r2, [r3]
- movs r7, 0x58
- adds r0, r2, 0
- muls r0, r7
- mov r3, r9
- adds r1, r0, r3
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0801C588
- ldr r1, _0801C584 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r5, [r0, 0x7]
- ldrb r2, [r0, 0x1A]
- b _0801C5A4
- .align 2, 0
-_0801C56C: .4byte gBankAttacker
-_0801C570: .4byte gBattleMoves
-_0801C574: .4byte gBattleWeather
-_0801C578: .4byte gAccuracyStageRatios
-_0801C57C: .4byte gBattleMons
-_0801C580: .4byte gBankTarget
-_0801C584: .4byte gEnigmaBerries
-_0801C588:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r8
- ldrb r0, [r1]
- muls r0, r7
- add r0, r9
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r2, r0, 24
-_0801C5A4:
- ldr r0, _0801C608 @ =gStringBank
- ldr r1, _0801C60C @ =gBankTarget
- ldrb r1, [r1]
- strb r1, [r0]
- cmp r5, 0x16
- bne _0801C5C0
- movs r0, 0x64
- subs r0, r2
- muls r0, r4
- movs r1, 0x64
- bl __divsi3
- lsls r0, 16
- lsrs r4, r0, 16
-_0801C5C0:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- adds r0, 0x1
- cmp r0, r4
- ble _0801C62A
- ldr r2, _0801C610 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _0801C614 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0801C620
- ldr r1, _0801C618 @ =gBattleMoves
- ldr r2, [sp, 0x4]
- adds r0, r2, r6
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x6]
- cmp r0, 0x8
- beq _0801C602
- cmp r0, 0x20
- bne _0801C620
-_0801C602:
- ldr r1, _0801C61C @ =gBattleCommunication
- movs r0, 0x2
- b _0801C624
- .align 2, 0
-_0801C608: .4byte gStringBank
-_0801C60C: .4byte gBankTarget
-_0801C610: .4byte gBattleMoveFlags
-_0801C614: .4byte gBattleTypeFlags
-_0801C618: .4byte gBattleMoves
-_0801C61C: .4byte gBattleCommunication
-_0801C620:
- ldr r1, _0801C644 @ =gBattleCommunication
- movs r0, 0
-_0801C624:
- strb r0, [r1, 0x6]
- bl b_wonderguard_and_levitate
-_0801C62A:
- movs r0, 0x7
- adds r1, r6, 0
- bl mcmd_jump_if_move_not_executed
-_0801C632:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801C644: .4byte gBattleCommunication
- thumb_func_end atk01_accuracycheck
-
- thumb_func_start atk02_attackstring
-atk02_attackstring: @ 801C648
- push {r4,r5,lr}
- ldr r0, _0801C688 @ =gBattleExecBuffer
- ldr r5, [r0]
- cmp r5, 0
- bne _0801C680
- ldr r4, _0801C68C @ =gHitMarker
- ldr r0, [r4]
- movs r1, 0xC0
- lsls r1, 3
- ands r0, r1
- cmp r0, 0
- bne _0801C674
- ldr r0, _0801C690 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x4
- bl PrepareStringBattle
- ldr r0, [r4]
- movs r1, 0x80
- lsls r1, 3
- orrs r0, r1
- str r0, [r4]
-_0801C674:
- ldr r0, _0801C694 @ =gBattlescriptCurrInstr
- ldr r1, [r0]
- adds r1, 0x1
- str r1, [r0]
- ldr r0, _0801C698 @ =gBattleCommunication
- strb r5, [r0, 0x7]
-_0801C680:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801C688: .4byte gBattleExecBuffer
-_0801C68C: .4byte gHitMarker
-_0801C690: .4byte gBankAttacker
-_0801C694: .4byte gBattlescriptCurrInstr
-_0801C698: .4byte gBattleCommunication
- thumb_func_end atk02_attackstring
-
- thumb_func_start atk03_ppreduce
-atk03_ppreduce: @ 801C69C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r6, 0x1
- ldr r0, _0801C6EC @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0801C6B4
- b _0801C84E
-_0801C6B4:
- ldr r1, _0801C6F0 @ =gSpecialStatuses
- ldr r2, _0801C6F4 @ =gBankAttacker
- ldrb r3, [r2]
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 26
- lsrs r4, r0, 31
- mov r9, r2
- cmp r4, 0
- bne _0801C756
- ldr r2, _0801C6F8 @ =gBattleMoves
- ldr r0, _0801C6FC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x6]
- cmp r0, 0x20
- beq _0801C706
- cmp r0, 0x20
- bgt _0801C700
- cmp r0, 0x8
- beq _0801C71C
- b _0801C736
- .align 2, 0
-_0801C6EC: .4byte gBattleExecBuffer
-_0801C6F0: .4byte gSpecialStatuses
-_0801C6F4: .4byte gBankAttacker
-_0801C6F8: .4byte gBattleMoves
-_0801C6FC: .4byte gCurrentMove
-_0801C700:
- cmp r0, 0x40
- beq _0801C71C
- b _0801C736
-_0801C706:
- str r4, [sp]
- movs r0, 0x12
- adds r1, r3, 0
- movs r2, 0x2E
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0x1
- b _0801C756
-_0801C71C:
- mov r0, r9
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x10
- movs r2, 0x2E
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0
- b _0801C756
-_0801C736:
- ldr r1, _0801C7B8 @ =gBankTarget
- mov r2, r9
- ldrb r0, [r2]
- ldrb r7, [r1]
- cmp r0, r7
- beq _0801C756
- ldr r2, _0801C7BC @ =gBattleMons
- ldrb r1, [r1]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x2E
- bne _0801C756
- adds r6, 0x1
-_0801C756:
- ldr r0, _0801C7C0 @ =gHitMarker
- ldr r4, [r0]
- movs r0, 0xA0
- lsls r0, 4
- ands r4, r0
- cmp r4, 0
- bne _0801C83C
- ldr r2, _0801C7BC @ =gBattleMons
- ldr r3, _0801C7C4 @ =gCurrMovePos
- ldr r1, _0801C7C8 @ =gBankAttacker
- ldrb r5, [r1]
- movs r0, 0x58
- mov r8, r0
- mov r0, r8
- muls r0, r5
- ldrb r7, [r3]
- adds r0, r7
- movs r7, 0x24
- adds r7, r2
- mov r12, r7
- add r0, r12
- ldrb r0, [r0]
- mov r9, r1
- mov r10, r2
- adds r7, r3, 0
- cmp r0, 0
- beq _0801C83C
- ldr r0, _0801C7CC @ =gProtectStructs
- lsls r1, r5, 4
- adds r1, r0
- ldrb r0, [r1, 0x2]
- movs r2, 0x8
- orrs r0, r2
- strb r0, [r1, 0x2]
- mov r1, r9
- ldrb r0, [r1]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- ldrb r1, [r7]
- adds r0, r1
- mov r1, r12
- adds r2, r0, r1
- ldrb r0, [r2]
- cmp r0, r6
- ble _0801C7D0
- subs r0, r6
- strb r0, [r2]
- b _0801C7D2
- .align 2, 0
-_0801C7B8: .4byte gBankTarget
-_0801C7BC: .4byte gBattleMons
-_0801C7C0: .4byte gHitMarker
-_0801C7C4: .4byte gCurrMovePos
-_0801C7C8: .4byte gBankAttacker
-_0801C7CC: .4byte gProtectStructs
-_0801C7D0:
- strb r4, [r2]
-_0801C7D2:
- mov r2, r9
- ldrb r3, [r2]
- movs r4, 0x58
- adds r0, r3, 0
- muls r0, r4
- mov r1, r10
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _0801C83C
- ldr r1, _0801C860 @ =gDisableStructs
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, _0801C864 @ =gBitTable
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0801C83C
- ldr r0, _0801C868 @ =gActiveBank
- strb r3, [r0]
- ldrb r1, [r7]
- adds r1, 0x9
- lsls r1, 24
- lsrs r1, 24
- mov r2, r9
- ldrb r0, [r2]
- muls r0, r4
- mov r2, r10
- adds r2, 0x24
- adds r0, r2
- ldrb r7, [r7]
- adds r0, r7
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0x1
- bl EmitSetAttributes
- mov r7, r9
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
-_0801C83C:
- ldr r2, _0801C86C @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0801C870 @ =0xfffff7ff
- ands r0, r1
- str r0, [r2]
- ldr r1, _0801C874 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801C84E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801C860: .4byte gDisableStructs
-_0801C864: .4byte gBitTable
-_0801C868: .4byte gActiveBank
-_0801C86C: .4byte gHitMarker
-_0801C870: .4byte 0xfffff7ff
-_0801C874: .4byte gBattlescriptCurrInstr
- thumb_func_end atk03_ppreduce
-
- thumb_func_start atk04_critcalc
-atk04_critcalc: @ 801C878
- push {r4-r7,lr}
- ldr r1, _0801C89C @ =gBattleMons
- ldr r0, _0801C8A0 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x2E]
- cmp r0, 0xAF
- bne _0801C8A8
- ldr r1, _0801C8A4 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r6, [r0, 0x7]
- b _0801C8B0
- .align 2, 0
-_0801C89C: .4byte gBattleMons
-_0801C8A0: .4byte gBankAttacker
-_0801C8A4: .4byte gEnigmaBerries
-_0801C8A8:
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r6, r0, 24
-_0801C8B0:
- ldr r1, _0801C93C @ =gStringBank
- ldr r3, _0801C940 @ =gBankAttacker
- ldrb r0, [r3]
- strb r0, [r1]
- ldr r4, _0801C944 @ =gBattleMons
- ldrb r1, [r3]
- movs r0, 0x58
- adds r7, r1, 0
- muls r7, r0
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r7, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- negs r0, r0
- asrs r5, r0, 31
- movs r0, 0x2
- ands r5, r0
- ldr r2, _0801C948 @ =gBattleMoves
- ldr r0, _0801C94C @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- mov r12, r3
- cmp r1, 0x2B
- bne _0801C8F0
- adds r5, 0x1
-_0801C8F0:
- adds r0, r5, 0
- cmp r1, 0x4B
- bne _0801C8F8
- adds r0, 0x1
-_0801C8F8:
- cmp r1, 0xC8
- bne _0801C8FE
- adds r0, 0x1
-_0801C8FE:
- adds r2, r0, 0
- cmp r1, 0xD1
- bne _0801C906
- adds r2, 0x1
-_0801C906:
- movs r1, 0
- cmp r6, 0x3F
- bne _0801C916
- adds r0, r7, r4
- ldrh r0, [r0]
- cmp r0, 0x71
- bne _0801C916
- movs r1, 0x1
-_0801C916:
- lsls r5, r1, 1
- movs r3, 0
- cmp r6, 0x42
- bne _0801C930
- mov r0, r12
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0x53
- bne _0801C930
- movs r3, 0x1
-_0801C930:
- lsls r1, r3, 1
- cmp r6, 0x29
- bne _0801C950
- adds r0, r5, 0x1
- adds r0, r2, r0
- b _0801C952
- .align 2, 0
-_0801C93C: .4byte gStringBank
-_0801C940: .4byte gBankAttacker
-_0801C944: .4byte gBattleMons
-_0801C948: .4byte gBattleMoves
-_0801C94C: .4byte gCurrentMove
-_0801C950:
- adds r0, r2, r5
-_0801C952:
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- adds r5, r0, 0
- cmp r5, 0x4
- bls _0801C960
- movs r5, 0x4
-_0801C960:
- ldr r0, _0801C9BC @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r4
- adds r0, 0x20
- ldrb r4, [r0]
- cmp r4, 0x4
- beq _0801C9D0
- cmp r4, 0x4B
- beq _0801C9D0
- ldr r1, _0801C9C0 @ =gStatuses3
- mov r2, r12
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 8
- ands r0, r1
- cmp r0, 0
- bne _0801C9D0
- ldr r0, _0801C9C4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x84
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- bne _0801C9D0
- bl Random
- ldr r2, _0801C9C8 @ =gCriticalHitChance
- lsls r1, r5, 1
- adds r1, r2
- lsls r0, 16
- lsrs r0, 16
- ldrh r1, [r1]
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _0801C9D0
- ldr r1, _0801C9CC @ =gCritMultiplier
- movs r0, 0x2
- b _0801C9D4
- .align 2, 0
-_0801C9BC: .4byte gBankTarget
-_0801C9C0: .4byte gStatuses3
-_0801C9C4: .4byte gBattleTypeFlags
-_0801C9C8: .4byte gCriticalHitChance
-_0801C9CC: .4byte gCritMultiplier
-_0801C9D0:
- ldr r1, _0801C9E4 @ =gCritMultiplier
- movs r0, 0x1
-_0801C9D4:
- strb r0, [r1]
- ldr r1, _0801C9E8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801C9E4: .4byte gCritMultiplier
-_0801C9E8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk04_critcalc
-
- thumb_func_start atk05_damagecalc1
-atk05_damagecalc1: @ 801C9EC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- ldr r4, _0801CABC @ =gSideAffecting
- ldr r6, _0801CAC0 @ =gBankTarget
- ldrb r0, [r6]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- ldr r0, _0801CAC4 @ =gBankAttacker
- mov r8, r0
- ldrb r0, [r0]
- movs r4, 0x58
- muls r0, r4
- ldr r2, _0801CAC8 @ =gBattleMons
- adds r0, r2
- ldrb r1, [r6]
- muls r1, r4
- adds r1, r2
- ldr r2, _0801CACC @ =gCurrentMove
- mov r9, r2
- ldrh r2, [r2]
- ldr r4, _0801CAD0 @ =gDynamicBasePower
- ldrh r4, [r4]
- str r4, [sp]
- ldr r5, _0801CAD4 @ =0x02000000
- ldr r7, _0801CAD8 @ =0x0001601c
- adds r4, r5, r7
- ldrb r4, [r4]
- str r4, [sp, 0x4]
- mov r7, r8
- ldrb r4, [r7]
- str r4, [sp, 0x8]
- ldrb r4, [r6]
- str r4, [sp, 0xC]
- bl CalculateBaseDamage
- ldr r4, _0801CADC @ =gBattleMoveDamage
- ldr r1, _0801CAE0 @ =gCritMultiplier
- ldrb r1, [r1]
- muls r1, r0
- ldr r0, _0801CAE4 @ =0x0001601f
- adds r5, r0
- ldrb r0, [r5]
- adds r3, r1, 0
- muls r3, r0
- str r3, [r4]
- ldr r1, _0801CAE8 @ =gStatuses3
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _0801CA82
- ldr r2, _0801CAEC @ =gBattleMoves
- mov r7, r9
- ldrh r1, [r7]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- cmp r0, 0xD
- bne _0801CA82
- lsls r0, r3, 1
- str r0, [r4]
-_0801CA82:
- ldr r1, _0801CAF0 @ =gProtectStructs
- ldr r0, _0801CAC4 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _0801CAA4
- ldr r4, _0801CADC @ =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_0801CAA4:
- ldr r1, _0801CAF4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801CABC: .4byte gSideAffecting
-_0801CAC0: .4byte gBankTarget
-_0801CAC4: .4byte gBankAttacker
-_0801CAC8: .4byte gBattleMons
-_0801CACC: .4byte gCurrentMove
-_0801CAD0: .4byte gDynamicBasePower
-_0801CAD4: .4byte 0x02000000
-_0801CAD8: .4byte 0x0001601c
-_0801CADC: .4byte gBattleMoveDamage
-_0801CAE0: .4byte gCritMultiplier
-_0801CAE4: .4byte 0x0001601f
-_0801CAE8: .4byte gStatuses3
-_0801CAEC: .4byte gBattleMoves
-_0801CAF0: .4byte gProtectStructs
-_0801CAF4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk05_damagecalc1
-
- thumb_func_start AI_CalcDmg
-AI_CalcDmg: @ 801CAF8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- adds r5, r1, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r4, _0801CBBC @ =gSideAffecting
- adds r0, r5, 0
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- movs r1, 0x58
- adds r0, r7, 0
- muls r0, r1
- ldr r2, _0801CBC0 @ =gBattleMons
- adds r0, r2
- muls r1, r5
- adds r1, r2
- ldr r2, _0801CBC4 @ =gCurrentMove
- mov r9, r2
- ldrh r2, [r2]
- ldr r4, _0801CBC8 @ =gDynamicBasePower
- mov r8, r4
- ldrh r4, [r4]
- str r4, [sp]
- ldr r6, _0801CBCC @ =0x02000000
- ldr r4, _0801CBD0 @ =0x0001601c
- ldrb r4, [r4, r6]
- str r4, [sp, 0x4]
- str r7, [sp, 0x8]
- str r5, [sp, 0xC]
- bl CalculateBaseDamage
- ldr r4, _0801CBD4 @ =gBattleMoveDamage
- movs r1, 0
- mov r2, r8
- strh r1, [r2]
- ldr r1, _0801CBD8 @ =gCritMultiplier
- ldrb r1, [r1]
- muls r1, r0
- ldr r0, _0801CBDC @ =0x0001601f
- adds r6, r0
- ldrb r0, [r6]
- adds r3, r1, 0
- muls r3, r0
- str r3, [r4]
- ldr r1, _0801CBE0 @ =gStatuses3
- lsls r0, r7, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 2
- ands r0, r1
- cmp r0, 0
- beq _0801CB8E
- ldr r2, _0801CBE4 @ =gBattleMoves
- mov r6, r9
- ldrh r1, [r6]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- cmp r0, 0xD
- bne _0801CB8E
- lsls r0, r3, 1
- str r0, [r4]
-_0801CB8E:
- ldr r0, _0801CBE8 @ =gProtectStructs
- lsls r1, r7, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 28
- cmp r0, 0
- bge _0801CBAC
- ldr r4, _0801CBD4 @ =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_0801CBAC:
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801CBBC: .4byte gSideAffecting
-_0801CBC0: .4byte gBattleMons
-_0801CBC4: .4byte gCurrentMove
-_0801CBC8: .4byte gDynamicBasePower
-_0801CBCC: .4byte 0x02000000
-_0801CBD0: .4byte 0x0001601c
-_0801CBD4: .4byte gBattleMoveDamage
-_0801CBD8: .4byte gCritMultiplier
-_0801CBDC: .4byte 0x0001601f
-_0801CBE0: .4byte gStatuses3
-_0801CBE4: .4byte gBattleMoves
-_0801CBE8: .4byte gProtectStructs
- thumb_func_end AI_CalcDmg
-
- thumb_func_start battle_attack_damage_modulate_by_effectivity
-battle_attack_damage_modulate_by_effectivity: @ 801CBEC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, _0801CC1C @ =gBattleMoveDamage
- ldr r0, [r5]
- muls r0, r4
- movs r1, 0xA
- bl __divsi3
- str r0, [r5]
- cmp r0, 0
- bne _0801CC0C
- cmp r4, 0
- beq _0801CC0C
- movs r0, 0x1
- str r0, [r5]
-_0801CC0C:
- cmp r4, 0x5
- beq _0801CC3C
- cmp r4, 0x5
- bgt _0801CC20
- cmp r4, 0
- beq _0801CC26
- b _0801CCBE
- .align 2, 0
-_0801CC1C: .4byte gBattleMoveDamage
-_0801CC20:
- cmp r4, 0x14
- beq _0801CC7C
- b _0801CCBE
-_0801CC26:
- ldr r2, _0801CC38 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- movs r1, 0xFB
- ands r0, r1
- movs r1, 0xFD
- ands r0, r1
- b _0801CCBC
- .align 2, 0
-_0801CC38: .4byte gBattleMoveFlags
-_0801CC3C:
- ldr r2, _0801CC6C @ =gBattleMoves
- ldr r0, _0801CC70 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0801CCBE
- ldr r2, _0801CC74 @ =gBattleMoveFlags
- ldrb r1, [r2]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801CCBE
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801CC78
- movs r0, 0xFD
- ands r0, r1
- b _0801CCBC
- .align 2, 0
-_0801CC6C: .4byte gBattleMoves
-_0801CC70: .4byte gCurrentMove
-_0801CC74: .4byte gBattleMoveFlags
-_0801CC78:
- movs r0, 0x4
- b _0801CCBA
-_0801CC7C:
- ldr r2, _0801CCAC @ =gBattleMoves
- ldr r0, _0801CCB0 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0801CCBE
- ldr r2, _0801CCB4 @ =gBattleMoveFlags
- ldrb r1, [r2]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801CCBE
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801CCB8
- movs r0, 0xFB
- ands r0, r1
- b _0801CCBC
- .align 2, 0
-_0801CCAC: .4byte gBattleMoves
-_0801CCB0: .4byte gCurrentMove
-_0801CCB4: .4byte gBattleMoveFlags
-_0801CCB8:
- movs r0, 0x2
-_0801CCBA:
- orrs r0, r1
-_0801CCBC:
- strb r0, [r2]
-_0801CCBE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end battle_attack_damage_modulate_by_effectivity
-
- thumb_func_start atk06_typecalc
-atk06_typecalc: @ 801CCC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r3, 0
- ldr r1, _0801CCF0 @ =gCurrentMove
- ldrh r0, [r1]
- cmp r0, 0xA5
- bne _0801CCD8
- b _0801CEF4
-_0801CCD8:
- ldr r0, _0801CCF4 @ =0x02000000
- ldr r2, _0801CCF8 @ =0x0001601c
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0801CCFC
- movs r1, 0x3F
- mov r8, r1
- mov r2, r8
- ands r2, r0
- mov r8, r2
- b _0801CD0C
- .align 2, 0
-_0801CCF0: .4byte gCurrentMove
-_0801CCF4: .4byte 0x02000000
-_0801CCF8: .4byte 0x0001601c
-_0801CCFC:
- ldr r2, _0801CD94 @ =gBattleMoves
- ldrh r1, [r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- mov r8, r0
-_0801CD0C:
- ldr r2, _0801CD98 @ =gBattleMons
- ldr r0, _0801CD9C @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- adds r5, r2, 0
- cmp r0, r8
- beq _0801CD2E
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r8
- bne _0801CD44
-_0801CD2E:
- ldr r4, _0801CDA0 @ =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- str r0, [r4]
- movs r1, 0xA
- str r3, [sp, 0x4]
- bl __divsi3
- str r0, [r4]
- ldr r3, [sp, 0x4]
-_0801CD44:
- ldr r2, _0801CDA4 @ =gBankTarget
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- adds r4, r2, 0
- cmp r0, 0x1A
- bne _0801CDBC
- mov r1, r8
- cmp r1, 0x4
- bne _0801CDBC
- ldr r3, _0801CDA8 @ =gLastUsedAbility
- strb r0, [r3]
- ldr r2, _0801CDAC @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x9
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801CDB0 @ =gMoveHitWith
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, _0801CDB4 @ =gUnknown_02024C44
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldr r0, _0801CDB8 @ =gBattleCommunication
- mov r2, r8
- strb r2, [r0, 0x6]
- ldrb r0, [r4]
- ldrb r1, [r3]
- bl RecordAbilityBattle
- b _0801CE58
- .align 2, 0
-_0801CD94: .4byte gBattleMoves
-_0801CD98: .4byte gBattleMons
-_0801CD9C: .4byte gBankAttacker
-_0801CDA0: .4byte gBattleMoveDamage
-_0801CDA4: .4byte gBankTarget
-_0801CDA8: .4byte gLastUsedAbility
-_0801CDAC: .4byte gBattleMoveFlags
-_0801CDB0: .4byte gMoveHitWith
-_0801CDB4: .4byte gUnknown_02024C44
-_0801CDB8: .4byte gBattleCommunication
-_0801CDBC:
- ldr r1, _0801CDC8 @ =gTypeEffectiveness
- adds r0, r3, r1
- ldrb r0, [r0]
- adds r2, r1, 0
- b _0801CE38
- .align 2, 0
-_0801CDC8: .4byte gTypeEffectiveness
-_0801CDCC:
- adds r3, 0x3
- b _0801CE34
-_0801CDD0:
- ldr r5, _0801CF08 @ =gTypeEffectiveness
- adds r0, r3, r5
- ldrb r0, [r0]
- cmp r0, r8
- bne _0801CE2C
- adds r1, r3, 0x1
- adds r1, r5
- ldr r2, _0801CF0C @ =gBattleMons
- ldr r7, _0801CF10 @ =gBankTarget
- ldrb r0, [r7]
- movs r6, 0x58
- muls r0, r6
- adds r0, r2
- adds r0, 0x21
- ldrb r4, [r1]
- ldrb r0, [r0]
- cmp r4, r0
- bne _0801CE06
- adds r0, r3, 0x2
- adds r0, r5
- ldrb r0, [r0]
- str r2, [sp]
- str r3, [sp, 0x4]
- bl battle_attack_damage_modulate_by_effectivity
- ldr r3, [sp, 0x4]
- ldr r2, [sp]
-_0801CE06:
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r2
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r1, [r1]
- cmp r4, r1
- bne _0801CE2C
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r4
- beq _0801CE2C
- adds r0, r3, 0x2
- adds r0, r5
- ldrb r0, [r0]
- str r3, [sp, 0x4]
- bl battle_attack_damage_modulate_by_effectivity
- ldr r3, [sp, 0x4]
-_0801CE2C:
- adds r3, 0x3
- ldr r5, _0801CF0C @ =gBattleMons
- ldr r4, _0801CF10 @ =gBankTarget
- ldr r2, _0801CF08 @ =gTypeEffectiveness
-_0801CE34:
- adds r0, r3, r2
- ldrb r0, [r0]
-_0801CE38:
- cmp r0, 0xFF
- beq _0801CE58
- cmp r0, 0xFE
- bne _0801CDD0
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r1, r5, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0801CDCC
-_0801CE58:
- ldr r2, _0801CF0C @ =gBattleMons
- ldr r5, _0801CF10 @ =gBankTarget
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r6, [r0]
- cmp r6, 0x19
- bne _0801CED6
- ldr r0, _0801CF14 @ =gBankAttacker
- ldrb r0, [r0]
- ldr r7, _0801CF18 @ =gCurrentMove
- ldrh r1, [r7]
- bl move_weather_interaction
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0801CED6
- ldr r1, _0801CF1C @ =gBattleMoveFlags
- mov r8, r1
- ldrb r4, [r1]
- ands r0, r4
- cmp r0, 0
- beq _0801CE94
- movs r0, 0x6
- ands r0, r4
- cmp r0, 0x6
- bne _0801CED6
-_0801CE94:
- ldr r2, _0801CF20 @ =gBattleMoves
- ldrh r1, [r7]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0801CED6
- ldr r3, _0801CF24 @ =gLastUsedAbility
- strb r6, [r3]
- movs r0, 0x1
- orrs r0, r4
- mov r2, r8
- strb r0, [r2]
- ldr r1, _0801CF28 @ =gMoveHitWith
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- movs r2, 0
- strh r2, [r0]
- ldr r1, _0801CF2C @ =gUnknown_02024C44
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- ldr r1, _0801CF30 @ =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x6]
- ldrb r0, [r5]
- ldrb r1, [r3]
- bl RecordAbilityBattle
-_0801CED6:
- ldr r0, _0801CF1C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0801CEF4
- ldr r2, _0801CF34 @ =gProtectStructs
- ldr r0, _0801CF14 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 4
- adds r1, r2
- ldrb r0, [r1, 0x1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1, 0x1]
-_0801CEF4:
- ldr r1, _0801CF38 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801CF08: .4byte gTypeEffectiveness
-_0801CF0C: .4byte gBattleMons
-_0801CF10: .4byte gBankTarget
-_0801CF14: .4byte gBankAttacker
-_0801CF18: .4byte gCurrentMove
-_0801CF1C: .4byte gBattleMoveFlags
-_0801CF20: .4byte gBattleMoves
-_0801CF24: .4byte gLastUsedAbility
-_0801CF28: .4byte gMoveHitWith
-_0801CF2C: .4byte gUnknown_02024C44
-_0801CF30: .4byte gBattleCommunication
-_0801CF34: .4byte gProtectStructs
-_0801CF38: .4byte gBattlescriptCurrInstr
- thumb_func_end atk06_typecalc
-
- thumb_func_start b_wonderguard_and_levitate
-b_wonderguard_and_levitate: @ 801CF3C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r6, 0
- movs r5, 0
- ldr r0, _0801CF80 @ =gCurrentMove
- ldrh r1, [r0]
- mov r9, r0
- cmp r1, 0xA5
- bne _0801CF54
- b _0801D1A4
-_0801CF54:
- ldr r2, _0801CF84 @ =gBattleMoves
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _0801CF66
- b _0801D1A4
-_0801CF66:
- ldr r0, _0801CF88 @ =0x02000000
- ldr r2, _0801CF8C @ =0x0001601c
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0801CF90
- movs r1, 0x3F
- mov r12, r1
- mov r2, r12
- ands r2, r0
- mov r12, r2
- b _0801CF94
- .align 2, 0
-_0801CF80: .4byte gCurrentMove
-_0801CF84: .4byte gBattleMoves
-_0801CF88: .4byte 0x02000000
-_0801CF8C: .4byte 0x0001601c
-_0801CF90:
- ldrb r1, [r1, 0x2]
- mov r12, r1
-_0801CF94:
- ldr r2, _0801CFC8 @ =gBattleMons
- ldr r3, _0801CFCC @ =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r1, [r0]
- adds r7, r2, 0
- mov r8, r3
- cmp r1, 0x1A
- bne _0801CFD8
- mov r0, r12
- cmp r0, 0x4
- bne _0801CFD8
- ldr r0, _0801CFD0 @ =gLastUsedAbility
- strb r1, [r0]
- ldr r0, _0801CFD4 @ =gBattleCommunication
- mov r1, r12
- strb r1, [r0, 0x6]
- ldrb r0, [r3]
- movs r1, 0x1A
- bl RecordAbilityBattle
- b _0801D1A4
- .align 2, 0
-_0801CFC8: .4byte gBattleMons
-_0801CFCC: .4byte gBankTarget
-_0801CFD0: .4byte gLastUsedAbility
-_0801CFD4: .4byte gBattleCommunication
-_0801CFD8:
- ldr r1, _0801CFE4 @ =gTypeEffectiveness
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r4, r1, 0
- b _0801D12A
- .align 2, 0
-_0801CFE4: .4byte gTypeEffectiveness
-_0801CFE8:
- adds r0, r5, r4
- ldrb r0, [r0]
- cmp r0, r12
- beq _0801CFF2
- b _0801D124
-_0801CFF2:
- adds r2, r5, 0x1
- adds r3, r2, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r0, 0x21
- ldrb r1, [r3]
- adds r3, r2, 0
- ldrb r0, [r0]
- cmp r1, r0
- bne _0801D032
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _0801D032
- ldr r2, _0801D1B0 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801D1B4 @ =gProtectStructs
- ldr r0, _0801D1B8 @ =gBankAttacker
- ldrb r2, [r0]
- lsls r2, 4
- adds r2, r1
- ldrb r0, [r2, 0x1]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x1]
-_0801D032:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0801D078
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0801D078
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _0801D078
- ldr r2, _0801D1B0 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801D1B4 @ =gProtectStructs
- ldr r0, _0801D1B8 @ =gBankAttacker
- ldrb r2, [r0]
- lsls r2, 4
- adds r2, r1
- ldrb r0, [r2, 0x1]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x1]
-_0801D078:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r0, 0x21
- ldrb r1, [r2]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0801D09C
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _0801D09C
- movs r0, 0x1
- orrs r6, r0
-_0801D09C:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0801D0CA
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0801D0CA
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _0801D0CA
- movs r0, 0x1
- orrs r6, r0
-_0801D0CA:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r0, 0x21
- ldrb r1, [r2]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0801D0F2
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _0801D0F2
- movs r0, 0x2
- orrs r6, r0
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_0801D0F2:
- adds r2, r3, r4
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0801D124
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0801D124
- adds r0, r5, 0x2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _0801D124
- movs r0, 0x2
- orrs r6, r0
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_0801D124:
- adds r5, 0x3
- adds r0, r5, r4
- ldrb r0, [r0]
-_0801D12A:
- cmp r0, 0xFF
- beq _0801D14E
- cmp r0, 0xFE
- beq _0801D134
- b _0801CFE8
-_0801D134:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- adds r1, r7, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0801D124
-_0801D14E:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7
- adds r0, 0x20
- ldrb r4, [r0]
- cmp r4, 0x19
- bne _0801D1A4
- ldr r0, _0801D1B8 @ =gBankAttacker
- ldrb r0, [r0]
- mov r2, r9
- ldrh r1, [r2]
- bl move_weather_interaction
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0801D1A4
- movs r0, 0x3
- ands r6, r0
- cmp r6, 0x1
- beq _0801D1A4
- ldr r2, _0801D1BC @ =gBattleMoves
- mov r0, r9
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _0801D1A4
- ldr r0, _0801D1C0 @ =gLastUsedAbility
- strb r4, [r0]
- ldr r1, _0801D1C4 @ =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x6]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x19
- bl RecordAbilityBattle
-_0801D1A4:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801D1B0: .4byte gBattleMoveFlags
-_0801D1B4: .4byte gProtectStructs
-_0801D1B8: .4byte gBankAttacker
-_0801D1BC: .4byte gBattleMoves
-_0801D1C0: .4byte gLastUsedAbility
-_0801D1C4: .4byte gBattleCommunication
- thumb_func_end b_wonderguard_and_levitate
-
- thumb_func_start b_attack_effectivity_adapt
-b_attack_effectivity_adapt: @ 801D1C8
- push {r4-r7,lr}
- adds r6, r2, 0
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsrs r5, r1, 16
- ldr r7, _0801D1FC @ =gBattleMoveDamage
- ldr r0, [r7]
- muls r0, r4
- movs r1, 0xA
- bl __divsi3
- str r0, [r7]
- cmp r0, 0
- bne _0801D1EE
- cmp r4, 0
- beq _0801D1EE
- movs r0, 0x1
- str r0, [r7]
-_0801D1EE:
- cmp r4, 0x5
- beq _0801D216
- cmp r4, 0x5
- bgt _0801D200
- cmp r4, 0
- beq _0801D206
- b _0801D27A
- .align 2, 0
-_0801D1FC: .4byte gBattleMoveDamage
-_0801D200:
- cmp r4, 0x14
- beq _0801D248
- b _0801D27A
-_0801D206:
- ldrb r0, [r6]
- movs r1, 0x8
- orrs r0, r1
- movs r1, 0xFB
- ands r0, r1
- movs r1, 0xFD
- ands r0, r1
- b _0801D278
-_0801D216:
- ldr r0, _0801D240 @ =gBattleMoves
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801D27A
- ldrb r1, [r6]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801D27A
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801D244
- movs r0, 0xFD
- ands r0, r1
- b _0801D278
- .align 2, 0
-_0801D240: .4byte gBattleMoves
-_0801D244:
- movs r0, 0x4
- b _0801D276
-_0801D248:
- ldr r0, _0801D270 @ =gBattleMoves
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801D27A
- ldrb r1, [r6]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801D27A
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801D274
- movs r0, 0xFB
- ands r0, r1
- b _0801D278
- .align 2, 0
-_0801D270: .4byte gBattleMoves
-_0801D274:
- movs r0, 0x2
-_0801D276:
- orrs r0, r1
-_0801D278:
- strb r0, [r6]
-_0801D27A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end b_attack_effectivity_adapt
-
- thumb_func_start TypeCalc
-TypeCalc: @ 801D280
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x4]
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- movs r7, 0
- mov r0, sp
- strb r7, [r0]
- mov r0, r10
- cmp r0, 0xA5
- bne _0801D2AE
- movs r0, 0
- b _0801D43A
-_0801D2AE:
- ldr r1, _0801D31C @ =gBattleMoves
- mov r3, r10
- lsls r2, r3, 1
- adds r0, r2, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x2]
- str r0, [sp, 0x8]
- ldr r1, _0801D320 @ =gBattleMons
- movs r0, 0x58
- ldr r3, [sp, 0x4]
- muls r0, r3
- adds r3, r0, r1
- adds r0, r3, 0
- adds r0, 0x21
- ldrb r0, [r0]
- str r2, [sp, 0xC]
- adds r5, r1, 0
- ldr r1, [sp, 0x8]
- cmp r0, r1
- beq _0801D2E2
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- bne _0801D2F4
-_0801D2E2:
- ldr r4, _0801D324 @ =gBattleMoveDamage
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- str r0, [r4]
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_0801D2F4:
- movs r0, 0x58
- mov r2, r9
- muls r2, r0
- adds r0, r2, 0
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1A
- bne _0801D328
- ldr r3, [sp, 0x8]
- cmp r3, 0x4
- bne _0801D328
- movs r1, 0x9
- mov r0, sp
- ldrb r0, [r0]
- orrs r0, r1
- mov r1, sp
- strb r0, [r1]
- b _0801D3DC
- .align 2, 0
-_0801D31C: .4byte gBattleMoves
-_0801D320: .4byte gBattleMons
-_0801D324: .4byte gBattleMoveDamage
-_0801D328:
- ldr r1, _0801D344 @ =gTypeEffectiveness
- adds r0, r7, r1
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0xFF
- beq _0801D3DC
- cmp r0, 0xFE
- bne _0801D34C
- movs r0, 0x58
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- b _0801D3CA
- .align 2, 0
-_0801D344: .4byte gTypeEffectiveness
-_0801D348:
- adds r7, 0x3
- b _0801D3B6
-_0801D34C:
- ldr r6, _0801D44C @ =gTypeEffectiveness
- adds r0, r7, r6
- ldrb r0, [r0]
- ldr r2, [sp, 0x8]
- cmp r0, r2
- bne _0801D3B0
- adds r1, r7, 0x1
- adds r1, r6
- ldr r3, _0801D450 @ =gBattleMons
- mov r8, r3
- movs r3, 0x58
- mov r0, r9
- muls r0, r3
- mov r2, r8
- adds r5, r0, r2
- adds r0, r5, 0
- adds r0, 0x21
- ldrb r4, [r1]
- ldrb r0, [r0]
- cmp r4, r0
- bne _0801D388
- adds r0, r7, 0x2
- adds r0, r6
- ldrb r0, [r0]
- mov r1, r10
- mov r2, sp
- str r3, [sp, 0x10]
- bl b_attack_effectivity_adapt
- ldr r3, [sp, 0x10]
-_0801D388:
- adds r0, r5, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r4, r0
- bne _0801D3B0
- ldr r0, _0801D454 @ =gBankTarget
- ldrb r0, [r0]
- muls r0, r3
- add r0, r8
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r4
- beq _0801D3B0
- adds r0, r7, 0x2
- adds r0, r6
- ldrb r0, [r0]
- mov r1, r10
- mov r2, sp
- bl b_attack_effectivity_adapt
-_0801D3B0:
- adds r7, 0x3
- ldr r5, _0801D450 @ =gBattleMons
- ldr r2, _0801D44C @ =gTypeEffectiveness
-_0801D3B6:
- adds r0, r7, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _0801D3DC
- cmp r0, 0xFE
- bne _0801D34C
- movs r0, 0x58
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
-_0801D3CA:
- adds r1, r5, 0
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0801D348
-_0801D3DC:
- movs r0, 0x58
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x19
- bne _0801D436
- mov r0, sp
- ldrb r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0801D436
- ldr r0, [sp, 0x4]
- mov r1, r10
- bl move_weather_interaction
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bne _0801D436
- mov r0, sp
- ldrb r3, [r0]
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _0801D41E
- movs r0, 0x6
- ands r0, r3
- cmp r0, 0x6
- bne _0801D436
-_0801D41E:
- ldr r0, _0801D458 @ =gBattleMoves
- ldr r1, [sp, 0xC]
- add r1, r10
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801D436
- mov r0, sp
- movs r1, 0x1
- orrs r1, r3
- strb r1, [r0]
-_0801D436:
- mov r0, sp
- ldrb r0, [r0]
-_0801D43A:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0801D44C: .4byte gTypeEffectiveness
-_0801D450: .4byte gBattleMons
-_0801D454: .4byte gBankTarget
-_0801D458: .4byte gBattleMoves
- thumb_func_end TypeCalc
-
- thumb_func_start ai_rate_move
-ai_rate_move: @ 801D45C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x4]
- movs r7, 0
- mov r0, sp
- strb r7, [r0]
- ldr r2, _0801D498 @ =gBaseStats
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x6]
- str r1, [sp, 0x8]
- ldrb r0, [r0, 0x7]
- mov r8, r0
- cmp r6, 0xA5
- bne _0801D49C
- movs r0, 0
- b _0801D554
- .align 2, 0
-_0801D498: .4byte gBaseStats
-_0801D49C:
- ldr r2, _0801D4C0 @ =gBattleMoves
- lsls r1, r6, 1
- adds r0, r1, r6
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- mov r9, r0
- str r1, [sp, 0xC]
- ldr r3, [sp, 0x4]
- cmp r3, 0x1A
- bne _0801D4C4
- cmp r0, 0x4
- bne _0801D4C4
- movs r1, 0x9
- mov r0, sp
- strb r1, [r0]
- b _0801D51E
- .align 2, 0
-_0801D4C0: .4byte gBattleMoves
-_0801D4C4:
- ldr r0, _0801D564 @ =gTypeEffectiveness
- mov r10, r0
- adds r1, r7, r0
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0801D51E
- adds r4, r1, 0
-_0801D4D2:
- ldrb r0, [r4]
- cmp r0, 0xFE
- beq _0801D510
- cmp r0, r9
- bne _0801D510
- ldrb r5, [r4, 0x1]
- ldr r1, [sp, 0x8]
- cmp r5, r1
- bne _0801D4EE
- ldrb r0, [r4, 0x2]
- adds r1, r6, 0
- mov r2, sp
- bl b_attack_effectivity_adapt
-_0801D4EE:
- cmp r5, r8
- bne _0801D510
- ldr r0, _0801D568 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- ldr r3, _0801D56C @ =gBattleMons
- adds r0, r3
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r8
- beq _0801D510
- ldrb r0, [r4, 0x2]
- adds r1, r6, 0
- mov r2, sp
- bl b_attack_effectivity_adapt
-_0801D510:
- adds r4, 0x3
- adds r7, 0x3
- mov r1, r10
- adds r0, r7, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _0801D4D2
-_0801D51E:
- ldr r3, [sp, 0x4]
- cmp r3, 0x19
- bne _0801D550
- mov r0, sp
- ldrb r2, [r0]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _0801D538
- movs r0, 0x6
- ands r0, r2
- cmp r0, 0x6
- bne _0801D550
-_0801D538:
- ldr r0, _0801D570 @ =gBattleMoves
- ldr r3, [sp, 0xC]
- adds r1, r3, r6
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- beq _0801D550
- mov r0, sp
- movs r1, 0x8
- orrs r1, r2
- strb r1, [r0]
-_0801D550:
- mov r0, sp
- ldrb r0, [r0]
-_0801D554:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0801D564: .4byte gTypeEffectiveness
-_0801D568: .4byte gBankTarget
-_0801D56C: .4byte gBattleMons
-_0801D570: .4byte gBattleMoves
- thumb_func_end ai_rate_move
-
- thumb_func_start unref_sub_801D574
-unref_sub_801D574: @ 801D574
- push {r4,lr}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x64
- subs r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r4, _0801D5AC @ =gBattleMoveDamage
- ldr r0, [r4]
- cmp r0, 0
- beq _0801D5A6
- muls r0, r1
- str r0, [r4]
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801D5A6
- movs r0, 0x1
- str r0, [r4]
-_0801D5A6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801D5AC: .4byte gBattleMoveDamage
- thumb_func_end unref_sub_801D574
-
- thumb_func_start atk07_dmg_adjustment
-atk07_dmg_adjustment: @ 801D5B0
- push {r4-r7,lr}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x64
- subs r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r4, _0801D608 @ =gBattleMoveDamage
- ldr r0, [r4]
- cmp r0, 0
- beq _0801D5E2
- muls r0, r1
- str r0, [r4]
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801D5E2
- movs r0, 0x1
- str r0, [r4]
-_0801D5E2:
- ldr r7, _0801D60C @ =gBattleMons
- ldr r6, _0801D610 @ =gBankTarget
- ldrb r2, [r6]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r0, r7
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0801D618
- ldr r1, _0801D614 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _0801D632
- .align 2, 0
-_0801D608: .4byte gBattleMoveDamage
-_0801D60C: .4byte gBattleMons
-_0801D610: .4byte gBankTarget
-_0801D614: .4byte gEnigmaBerries
-_0801D618:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r6, r0, 24
-_0801D632:
- ldr r1, _0801D6F4 @ =gStringBank
- ldr r5, _0801D6F8 @ =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _0801D670
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _0801D670
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemBattle
- ldr r2, _0801D6FC @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
-_0801D670:
- ldr r2, _0801D700 @ =gBattleMons
- ldr r3, _0801D6F8 @ =gBankTarget
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, r2, 0
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r1, r0
- adds r5, r2, 0
- cmp r1, 0
- bne _0801D740
- ldr r2, _0801D704 @ =gBattleMoves
- ldr r0, _0801D708 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x65
- beq _0801D6C2
- ldr r0, _0801D70C @ =gProtectStructs
- lsls r1, r4, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- cmp r0, 0
- blt _0801D6C2
- ldr r0, _0801D6FC @ =gSpecialStatuses
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0801D740
-_0801D6C2:
- ldrb r0, [r3]
- movs r4, 0x58
- muls r0, r4
- adds r0, r5
- ldrh r1, [r0, 0x28]
- ldr r2, _0801D710 @ =gBattleMoveDamage
- ldr r0, [r2]
- cmp r1, r0
- bgt _0801D740
- subs r0, r1, 0x1
- str r0, [r2]
- ldr r1, _0801D70C @ =gProtectStructs
- ldrb r3, [r3]
- lsls r0, r3, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- bge _0801D718
- ldr r0, _0801D714 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _0801D740
- .align 2, 0
-_0801D6F4: .4byte gStringBank
-_0801D6F8: .4byte gBankTarget
-_0801D6FC: .4byte gSpecialStatuses
-_0801D700: .4byte gBattleMons
-_0801D704: .4byte gBattleMoves
-_0801D708: .4byte gCurrentMove
-_0801D70C: .4byte gProtectStructs
-_0801D710: .4byte gBattleMoveDamage
-_0801D714: .4byte gBattleMoveFlags
-_0801D718:
- ldr r0, _0801D750 @ =gSpecialStatuses
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0801D740
- ldr r2, _0801D754 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801D758 @ =gLastUsedItem
- adds r0, r3, 0
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
-_0801D740:
- ldr r1, _0801D75C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801D750: .4byte gSpecialStatuses
-_0801D754: .4byte gBattleMoveFlags
-_0801D758: .4byte gLastUsedItem
-_0801D75C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk07_dmg_adjustment
-
- thumb_func_start atk08_dmg_adjustment2
-atk08_dmg_adjustment2: @ 801D760
- push {r4-r7,lr}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x64
- subs r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r4, _0801D7B8 @ =gBattleMoveDamage
- ldr r0, [r4]
- cmp r0, 0
- beq _0801D792
- muls r0, r1
- str r0, [r4]
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801D792
- movs r0, 0x1
- str r0, [r4]
-_0801D792:
- ldr r7, _0801D7BC @ =gBattleMons
- ldr r6, _0801D7C0 @ =gBankTarget
- ldrb r2, [r6]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r0, r7
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0801D7C8
- ldr r1, _0801D7C4 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _0801D7E2
- .align 2, 0
-_0801D7B8: .4byte gBattleMoveDamage
-_0801D7BC: .4byte gBattleMons
-_0801D7C0: .4byte gBankTarget
-_0801D7C4: .4byte gEnigmaBerries
-_0801D7C8:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r6, r0, 24
-_0801D7E2:
- ldr r1, _0801D888 @ =gStringBank
- ldr r5, _0801D88C @ =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _0801D820
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _0801D820
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemBattle
- ldr r2, _0801D890 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
-_0801D820:
- ldr r4, _0801D894 @ =gBattleMons
- ldr r6, _0801D88C @ =gBankTarget
- ldrb r2, [r6]
- movs r7, 0x58
- adds r3, r2, 0
- muls r3, r7
- adds r0, r4, 0
- adds r0, 0x50
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- bne _0801D8CC
- ldr r5, _0801D898 @ =gProtectStructs
- lsls r0, r2, 4
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- blt _0801D85E
- ldr r0, _0801D890 @ =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0801D8CC
-_0801D85E:
- adds r0, r3, r4
- ldrh r1, [r0, 0x28]
- ldr r2, _0801D89C @ =gBattleMoveDamage
- ldr r0, [r2]
- cmp r1, r0
- bgt _0801D8CC
- subs r0, r1, 0x1
- str r0, [r2]
- ldrb r3, [r6]
- lsls r0, r3, 4
- adds r0, r5
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- bge _0801D8A4
- ldr r0, _0801D8A0 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _0801D8CC
- .align 2, 0
-_0801D888: .4byte gStringBank
-_0801D88C: .4byte gBankTarget
-_0801D890: .4byte gSpecialStatuses
-_0801D894: .4byte gBattleMons
-_0801D898: .4byte gProtectStructs
-_0801D89C: .4byte gBattleMoveDamage
-_0801D8A0: .4byte gBattleMoveFlags
-_0801D8A4:
- ldr r0, _0801D8DC @ =gSpecialStatuses
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _0801D8CC
- ldr r2, _0801D8E0 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0801D8E4 @ =gLastUsedItem
- adds r0, r3, 0
- muls r0, r7
- adds r0, r4
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
-_0801D8CC:
- ldr r1, _0801D8E8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801D8DC: .4byte gSpecialStatuses
-_0801D8E0: .4byte gBattleMoveFlags
-_0801D8E4: .4byte gLastUsedItem
-_0801D8E8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk08_dmg_adjustment2
-
- thumb_func_start atk09_attackanimation
-atk09_attackanimation: @ 801D8EC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0xC
- ldr r0, _0801D940 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0801D900
- b _0801DA4A
-_0801D900:
- ldr r0, _0801D944 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- ldr r3, _0801D948 @ =gCurrentMove
- cmp r0, 0
- beq _0801D960
- ldrh r0, [r3]
- cmp r0, 0x90
- beq _0801D960
- cmp r0, 0xA4
- beq _0801D960
- ldr r4, _0801D94C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801D950 @ =BattleScript_Pausex20
- str r0, [r4]
- ldr r1, _0801D954 @ =0x02000000
- ldr r0, _0801D958 @ =0x00016002
- adds r2, r1, r0
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- ldr r2, _0801D95C @ =0x000160a1
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0801DA4A
- .align 2, 0
-_0801D940: .4byte gBattleExecBuffer
-_0801D944: .4byte gHitMarker
-_0801D948: .4byte gCurrentMove
-_0801D94C: .4byte gBattlescriptCurrInstr
-_0801D950: .4byte BattleScript_Pausex20
-_0801D954: .4byte 0x02000000
-_0801D958: .4byte 0x00016002
-_0801D95C: .4byte 0x000160a1
-_0801D960:
- ldr r2, _0801DA0C @ =gBattleMoves
- ldrh r1, [r3]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x6]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0801D986
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0801D986
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0801D992
-_0801D986:
- ldr r0, _0801DA10 @ =0x02000000
- ldr r1, _0801DA14 @ =0x000160a1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0801DA00
-_0801D992:
- ldr r0, _0801DA18 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801DA3C
- ldr r1, _0801DA1C @ =gActiveBank
- ldr r2, _0801DA20 @ =gBankAttacker
- mov r9, r2
- ldrb r0, [r2]
- strb r0, [r1]
- ldrh r1, [r3]
- ldr r6, _0801DA10 @ =0x02000000
- ldr r0, _0801DA24 @ =0x00016002
- adds r0, r6
- mov r8, r0
- ldrb r2, [r0]
- ldr r0, _0801DA28 @ =gBattleMovePower
- ldrh r3, [r0]
- ldr r0, _0801DA2C @ =gBattleMoveDamage
- ldr r0, [r0]
- str r0, [sp]
- ldr r5, _0801DA30 @ =gBattleMons
- mov r0, r9
- ldrb r4, [r0]
- movs r0, 0x58
- muls r0, r4
- adds r0, r5
- adds r0, 0x2B
- ldrb r0, [r0]
- str r0, [sp, 0x4]
- mov r0, r9
- ldrb r4, [r0]
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- ldr r4, _0801DA34 @ =gDisableStructs
- adds r0, r4
- str r0, [sp, 0x8]
- movs r0, 0
- bl EmitMoveAnimation
- mov r1, r8
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r2, _0801DA14 @ =0x000160a1
- adds r6, r2
- ldrb r0, [r6]
- adds r0, 0x1
- strb r0, [r6]
- mov r1, r9
- ldrb r0, [r1]
- bl MarkBufferBankForExecution
-_0801DA00:
- ldr r1, _0801DA38 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- b _0801DA4A
- .align 2, 0
-_0801DA0C: .4byte gBattleMoves
-_0801DA10: .4byte 0x02000000
-_0801DA14: .4byte 0x000160a1
-_0801DA18: .4byte gBattleMoveFlags
-_0801DA1C: .4byte gActiveBank
-_0801DA20: .4byte gBankAttacker
-_0801DA24: .4byte 0x00016002
-_0801DA28: .4byte gBattleMovePower
-_0801DA2C: .4byte gBattleMoveDamage
-_0801DA30: .4byte gBattleMons
-_0801DA34: .4byte gDisableStructs
-_0801DA38: .4byte gBattlescriptCurrInstr
-_0801DA3C:
- ldr r4, _0801DA58 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801DA5C @ =BattleScript_Pausex20
- str r0, [r4]
-_0801DA4A:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801DA58: .4byte gBattlescriptCurrInstr
-_0801DA5C: .4byte BattleScript_Pausex20
- thumb_func_end atk09_attackanimation
-
- thumb_func_start atk0A_waitanimation
-atk0A_waitanimation: @ 801DA60
- push {lr}
- ldr r0, _0801DA78 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801DA72
- ldr r1, _0801DA7C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801DA72:
- pop {r0}
- bx r0
- .align 2, 0
-_0801DA78: .4byte gBattleExecBuffer
-_0801DA7C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0A_waitanimation
-
- thumb_func_start atk0B_healthbarupdate
-atk0B_healthbarupdate: @ 801DA80
- push {r4,r5,lr}
- ldr r0, _0801DAE4 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801DB36
- ldr r0, _0801DAE8 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801DB2E
- ldr r0, _0801DAEC @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r2, _0801DAF0 @ =gActiveBank
- strb r0, [r2]
- ldr r1, _0801DAF4 @ =gBattleMons
- ldrb r2, [r2]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _0801DB00
- ldr r0, _0801DAF8 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- beq _0801DB00
- ldr r0, _0801DAFC @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 1
- ands r0, r1
- cmp r0, 0
- bne _0801DB00
- movs r0, 0x80
- adds r1, r2, 0
- bl PrepareStringBattle
- b _0801DB2E
- .align 2, 0
-_0801DAE4: .4byte gBattleExecBuffer
-_0801DAE8: .4byte gBattleMoveFlags
-_0801DAEC: .4byte gBattlescriptCurrInstr
-_0801DAF0: .4byte gActiveBank
-_0801DAF4: .4byte gBattleMons
-_0801DAF8: .4byte gDisableStructs
-_0801DAFC: .4byte gHitMarker
-_0801DB00:
- ldr r5, _0801DB3C @ =gBattleMoveDamage
- ldrh r1, [r5]
- movs r0, 0
- bl EmitHealthBarUpdate
- ldr r4, _0801DB40 @ =gActiveBank
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0801DB2E
- ldr r0, [r5]
- cmp r0, 0
- ble _0801DB2E
- ldr r0, _0801DB44 @ =gBattleResults
- ldrb r1, [r0, 0x5]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x5]
-_0801DB2E:
- ldr r1, _0801DB48 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0801DB36:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801DB3C: .4byte gBattleMoveDamage
-_0801DB40: .4byte gActiveBank
-_0801DB44: .4byte gBattleResults
-_0801DB48: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0B_healthbarupdate
-
- thumb_func_start atk0C_datahpupdate
-atk0C_datahpupdate: @ 801DB4C
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r0, _0801DB74 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0801DB5A
- b _0801DF2E
-_0801DB5A:
- ldr r0, _0801DB78 @ =0x02000000
- ldr r1, _0801DB7C @ =0x0001601c
- adds r0, r1
- ldrb r1, [r0]
- cmp r1, 0
- beq _0801DB80
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0801DB80
- movs r6, 0x3F
- ands r6, r1
- b _0801DB90
- .align 2, 0
-_0801DB74: .4byte gBattleExecBuffer
-_0801DB78: .4byte 0x02000000
-_0801DB7C: .4byte 0x0001601c
-_0801DB80:
- ldr r2, _0801DC1C @ =gBattleMoves
- ldr r0, _0801DC20 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r6, [r0, 0x2]
-_0801DB90:
- ldr r0, _0801DC24 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0801DB9E
- b _0801DF00
-_0801DB9E:
- ldr r0, _0801DC28 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r7, _0801DC2C @ =gActiveBank
- strb r0, [r7]
- ldr r1, _0801DC30 @ =gBattleMons
- ldrb r2, [r7]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _0801DCB4
- ldr r0, _0801DC34 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r4, r1, r0
- ldrb r1, [r4, 0xA]
- mov r12, r0
- cmp r1, 0
- beq _0801DCB4
- ldr r0, _0801DC38 @ =gHitMarker
- ldr r3, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r3, r0
- cmp r3, 0
- bne _0801DCB4
- adds r5, r1, 0
- ldr r6, _0801DC3C @ =gBattleMoveDamage
- ldr r4, [r6]
- cmp r5, r4
- blt _0801DC48
- ldr r0, _0801DC40 @ =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- bne _0801DC02
- str r4, [r1]
-_0801DC02:
- ldrb r0, [r7]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- add r1, r12
- ldr r2, [r6]
- ldrb r0, [r1, 0xA]
- subs r0, r2
- strb r0, [r1, 0xA]
- ldr r1, _0801DC44 @ =gHP_dealt
- ldr r0, [r6]
- str r0, [r1]
- b _0801DC78
- .align 2, 0
-_0801DC1C: .4byte gBattleMoves
-_0801DC20: .4byte gCurrentMove
-_0801DC24: .4byte gBattleMoveFlags
-_0801DC28: .4byte gBattlescriptCurrInstr
-_0801DC2C: .4byte gActiveBank
-_0801DC30: .4byte gBattleMons
-_0801DC34: .4byte gDisableStructs
-_0801DC38: .4byte gHitMarker
-_0801DC3C: .4byte gBattleMoveDamage
-_0801DC40: .4byte gSpecialStatuses
-_0801DC44: .4byte gHP_dealt
-_0801DC48:
- ldr r0, _0801DCA0 @ =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r0, 0x4
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- bne _0801DC5C
- str r5, [r1]
-_0801DC5C:
- ldr r2, _0801DCA4 @ =gHP_dealt
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r0, [r0, 0xA]
- str r0, [r2]
- ldrb r1, [r7]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- strb r3, [r0, 0xA]
-_0801DC78:
- ldr r0, _0801DCA8 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r0, [r0, 0xA]
- cmp r0, 0
- beq _0801DC8C
- b _0801DF26
-_0801DC8C:
- ldr r4, _0801DCAC @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- bl b_movescr_stack_push_cursor
- ldr r0, _0801DCB0 @ =BattleScript_SubstituteFade
- str r0, [r4]
- b _0801DF2E
- .align 2, 0
-_0801DCA0: .4byte gSpecialStatuses
-_0801DCA4: .4byte gHP_dealt
-_0801DCA8: .4byte gActiveBank
-_0801DCAC: .4byte gBattlescriptCurrInstr
-_0801DCB0: .4byte BattleScript_SubstituteFade
-_0801DCB4:
- ldr r0, _0801DCF4 @ =gHitMarker
- ldr r2, [r0]
- ldr r1, _0801DCF8 @ =0xfffffeff
- ands r2, r1
- str r2, [r0]
- ldr r1, _0801DCFC @ =gBattleMoveDamage
- ldr r5, [r1]
- mov r12, r0
- adds r7, r1, 0
- cmp r5, 0
- bge _0801DD08
- ldr r4, _0801DD00 @ =gBattleMons
- ldr r2, _0801DD04 @ =gActiveBank
- ldrb r0, [r2]
- movs r3, 0x58
- adds r1, r0, 0
- muls r1, r3
- adds r1, r4
- ldrh r0, [r1, 0x28]
- subs r0, r5
- strh r0, [r1, 0x28]
- ldrb r0, [r2]
- muls r0, r3
- adds r1, r0, r4
- ldrh r3, [r1, 0x2C]
- ldrh r0, [r1, 0x28]
- adds r5, r2, 0
- cmp r0, r3
- bhi _0801DCF0
- b _0801DEC6
-_0801DCF0:
- strh r3, [r1, 0x28]
- b _0801DEC6
- .align 2, 0
-_0801DCF4: .4byte gHitMarker
-_0801DCF8: .4byte 0xfffffeff
-_0801DCFC: .4byte gBattleMoveDamage
-_0801DD00: .4byte gBattleMons
-_0801DD04: .4byte gActiveBank
-_0801DD08:
- movs r0, 0x20
- ands r0, r2
- cmp r0, 0
- beq _0801DD24
- movs r0, 0x21
- negs r0, r0
- ands r2, r0
- mov r0, r12
- str r2, [r0]
- ldr r5, _0801DD20 @ =gActiveBank
- b _0801DD6C
- .align 2, 0
-_0801DD20: .4byte gActiveBank
-_0801DD24:
- ldr r0, _0801DD4C @ =gTakenDmg
- ldr r2, _0801DD50 @ =gActiveBank
- ldrb r1, [r2]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- adds r0, r5
- str r0, [r1]
- ldr r0, _0801DD54 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- adds r5, r2, 0
- cmp r0, 0
- bne _0801DD60
- ldr r1, _0801DD58 @ =gTakenDmgBanks
- ldrb r0, [r5]
- adds r0, r1
- ldr r1, _0801DD5C @ =gBankAttacker
- b _0801DD68
- .align 2, 0
-_0801DD4C: .4byte gTakenDmg
-_0801DD50: .4byte gActiveBank
-_0801DD54: .4byte gBattlescriptCurrInstr
-_0801DD58: .4byte gTakenDmgBanks
-_0801DD5C: .4byte gBankAttacker
-_0801DD60:
- ldr r1, _0801DD8C @ =gTakenDmgBanks
- ldrb r0, [r5]
- adds r0, r1
- ldr r1, _0801DD90 @ =gBankTarget
-_0801DD68:
- ldrb r1, [r1]
- strb r1, [r0]
-_0801DD6C:
- ldr r4, _0801DD94 @ =gBattleMons
- ldrb r0, [r5]
- movs r3, 0x58
- muls r0, r3
- adds r2, r0, r4
- ldrh r0, [r2, 0x28]
- ldr r1, [r7]
- cmp r0, r1
- ble _0801DD9C
- subs r0, r1
- strh r0, [r2, 0x28]
- ldr r0, _0801DD98 @ =gHP_dealt
- str r1, [r0]
- adds r7, r0, 0
- b _0801DDAC
- .align 2, 0
-_0801DD8C: .4byte gTakenDmgBanks
-_0801DD90: .4byte gBankTarget
-_0801DD94: .4byte gBattleMons
-_0801DD98: .4byte gHP_dealt
-_0801DD9C:
- ldr r2, _0801DE20 @ =gHP_dealt
- str r0, [r2]
- ldrb r0, [r5]
- muls r0, r3
- adds r0, r4
- movs r1, 0
- strh r1, [r0, 0x28]
- adds r7, r2, 0
-_0801DDAC:
- ldr r2, _0801DE24 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r1, r2, 0x4
- adds r3, r0, r1
- ldr r0, [r3]
- adds r4, r2, 0
- cmp r0, 0
- bne _0801DDD4
- mov r1, r12
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- cmp r0, 0
- bne _0801DDD4
- ldr r0, [r7]
- str r0, [r3]
-_0801DDD4:
- cmp r6, 0x8
- bhi _0801DE5C
- mov r1, r12
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- cmp r0, 0
- bne _0801DE58
- ldr r0, _0801DE28 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xDC
- beq _0801DE58
- ldr r3, _0801DE2C @ =gProtectStructs
- ldrb r0, [r5]
- lsls r0, 4
- adds r1, r3, 0x4
- adds r0, r1
- ldr r2, [r7]
- str r2, [r0]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x8
- adds r0, r1
- str r2, [r0]
- ldr r0, _0801DE30 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0801DE38
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, _0801DE34 @ =gBankAttacker
- b _0801DE40
- .align 2, 0
-_0801DE20: .4byte gHP_dealt
-_0801DE24: .4byte gSpecialStatuses
-_0801DE28: .4byte gCurrentMove
-_0801DE2C: .4byte gProtectStructs
-_0801DE30: .4byte gBattlescriptCurrInstr
-_0801DE34: .4byte gBankAttacker
-_0801DE38:
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, _0801DE54 @ =gBankTarget
-_0801DE40:
- ldrb r1, [r2]
- strb r1, [r0, 0xC]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r2]
- strb r1, [r0, 0x10]
- b _0801DEC6
- .align 2, 0
-_0801DE54: .4byte gBankTarget
-_0801DE58:
- cmp r6, 0x8
- bls _0801DEC6
-_0801DE5C:
- mov r1, r12
- ldr r0, [r1]
- movs r1, 0x80
- lsls r1, 13
- ands r0, r1
- cmp r0, 0
- bne _0801DEC6
- ldr r3, _0801DEA0 @ =gProtectStructs
- ldrb r0, [r5]
- lsls r0, 4
- adds r1, r3, 0
- adds r1, 0x8
- adds r0, r1
- ldr r2, [r7]
- str r2, [r0]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0xC
- adds r0, r1
- str r2, [r0]
- ldr r0, _0801DEA4 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0801DEAC
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, _0801DEA8 @ =gBankAttacker
- b _0801DEB4
- .align 2, 0
-_0801DEA0: .4byte gProtectStructs
-_0801DEA4: .4byte gBattlescriptCurrInstr
-_0801DEA8: .4byte gBankAttacker
-_0801DEAC:
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r3
- ldr r2, _0801DEF4 @ =gBankTarget
-_0801DEB4:
- ldrb r1, [r2]
- strb r1, [r0, 0xD]
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r2]
- strb r1, [r0, 0x11]
-_0801DEC6:
- mov r1, r12
- ldr r0, [r1]
- ldr r1, _0801DEF8 @ =0xffefffff
- ands r0, r1
- mov r1, r12
- str r0, [r1]
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- ldr r1, _0801DEFC @ =gUnknown_02024AA8
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2A
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- b _0801DF26
- .align 2, 0
-_0801DEF4: .4byte gBankTarget
-_0801DEF8: .4byte 0xffefffff
-_0801DEFC: .4byte gUnknown_02024AA8
-_0801DF00:
- ldr r0, _0801DF38 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _0801DF3C @ =gActiveBank
- strb r0, [r1]
- ldr r2, _0801DF40 @ =gSpecialStatuses
- ldrb r1, [r1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, 0x4
- adds r1, r0, r2
- ldr r0, [r1]
- cmp r0, 0
- bne _0801DF26
- ldr r0, _0801DF44 @ =0x0000ffff
- str r0, [r1]
-_0801DF26:
- ldr r1, _0801DF38 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0801DF2E:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801DF38: .4byte gBattlescriptCurrInstr
-_0801DF3C: .4byte gActiveBank
-_0801DF40: .4byte gSpecialStatuses
-_0801DF44: .4byte 0x0000ffff
- thumb_func_end atk0C_datahpupdate
-
- thumb_func_start atk0D_critmessage
-atk0D_critmessage: @ 801DF48
- push {lr}
- ldr r0, _0801DF84 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801DF7E
- ldr r0, _0801DF88 @ =gCritMultiplier
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0801DF76
- ldr r0, _0801DF8C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801DF76
- ldr r0, _0801DF90 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0xD9
- bl PrepareStringBattle
- ldr r1, _0801DF94 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x7]
-_0801DF76:
- ldr r1, _0801DF98 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801DF7E:
- pop {r0}
- bx r0
- .align 2, 0
-_0801DF84: .4byte gBattleExecBuffer
-_0801DF88: .4byte gCritMultiplier
-_0801DF8C: .4byte gBattleMoveFlags
-_0801DF90: .4byte gBankAttacker
-_0801DF94: .4byte gBattleCommunication
-_0801DF98: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0D_critmessage
-
- thumb_func_start atk0E_effectiveness_sound
-atk0E_effectiveness_sound: @ 801DF9C
- push {r4,lr}
- ldr r0, _0801DFD4 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801E05C
- ldr r4, _0801DFD8 @ =gActiveBank
- ldr r0, _0801DFDC @ =gBankTarget
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r1, _0801DFE0 @ =gBattleMoveFlags
- ldrb r2, [r1]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- bne _0801E054
- movs r0, 0xFE
- ands r0, r2
- cmp r0, 0x10
- beq _0801E00E
- cmp r0, 0x10
- bgt _0801DFEA
- cmp r0, 0x4
- beq _0801DFFE
- cmp r0, 0x4
- bgt _0801DFE4
- cmp r0, 0x2
- beq _0801DFF8
- b _0801E00E
- .align 2, 0
-_0801DFD4: .4byte gBattleExecBuffer
-_0801DFD8: .4byte gActiveBank
-_0801DFDC: .4byte gBankTarget
-_0801DFE0: .4byte gBattleMoveFlags
-_0801DFE4:
- cmp r0, 0x8
- beq _0801E054
- b _0801E00E
-_0801DFEA:
- cmp r0, 0x40
- beq _0801E00E
- cmp r0, 0x40
- bgt _0801E00E
- cmp r0, 0x20
- beq _0801E054
- b _0801E00E
-_0801DFF8:
- movs r0, 0
- movs r1, 0xE
- b _0801E002
-_0801DFFE:
- movs r0, 0
- movs r1, 0xC
-_0801E002:
- bl EmitEffectivenessSound
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _0801E054
-_0801E00E:
- ldrb r1, [r1]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0801E01E
- movs r0, 0
- movs r1, 0xE
- b _0801E02A
-_0801E01E:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0801E03C
- movs r0, 0
- movs r1, 0xC
-_0801E02A:
- bl EmitEffectivenessSound
- ldr r0, _0801E038 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- b _0801E054
- .align 2, 0
-_0801E038: .4byte gActiveBank
-_0801E03C:
- movs r0, 0x28
- ands r0, r1
- cmp r0, 0
- bne _0801E054
- movs r0, 0
- movs r1, 0xD
- bl EmitEffectivenessSound
- ldr r0, _0801E064 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
-_0801E054:
- ldr r1, _0801E068 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801E05C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E064: .4byte gActiveBank
-_0801E068: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0E_effectiveness_sound
-
- thumb_func_start atk0F_resultmessage
-atk0F_resultmessage: @ 801E06C
- push {r4-r7,lr}
- movs r3, 0
- ldr r0, _0801E0A8 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E07A
- b _0801E20C
-_0801E07A:
- ldr r1, _0801E0AC @ =gBattleMoveFlags
- ldrb r2, [r1]
- movs r4, 0x1
- adds r0, r4, 0
- ands r0, r2
- adds r6, r1, 0
- ldr r7, _0801E0B0 @ =gBattleCommunication
- cmp r0, 0
- beq _0801E0B8
- movs r0, 0x8
- ands r0, r2
- cmp r0, 0
- beq _0801E09A
- ldrb r0, [r7, 0x6]
- cmp r0, 0x2
- bls _0801E0B8
-_0801E09A:
- ldr r1, _0801E0B4 @ =gMissStrings
- ldrb r0, [r7, 0x6]
- lsls r0, 1
- adds r0, r1
- ldrh r3, [r0]
- strb r4, [r7, 0x7]
- b _0801E1F6
- .align 2, 0
-_0801E0A8: .4byte gBattleExecBuffer
-_0801E0AC: .4byte gBattleMoveFlags
-_0801E0B0: .4byte gBattleCommunication
-_0801E0B4: .4byte gMissStrings
-_0801E0B8:
- movs r0, 0x1
- strb r0, [r7, 0x7]
- ldrb r5, [r6]
- movs r0, 0xFE
- ands r0, r5
- cmp r0, 0x10
- beq _0801E0FC
- cmp r0, 0x10
- bgt _0801E0DE
- cmp r0, 0x4
- beq _0801E0F8
- cmp r0, 0x4
- bgt _0801E0D8
- cmp r0, 0x2
- beq _0801E0F4
- b _0801E144
-_0801E0D8:
- cmp r0, 0x8
- beq _0801E150
- b _0801E144
-_0801E0DE:
- cmp r0, 0x40
- beq _0801E100
- cmp r0, 0x40
- bgt _0801E0EE
- cmp r0, 0x20
- bne _0801E0EC
- b _0801E1F0
-_0801E0EC:
- b _0801E144
-_0801E0EE:
- cmp r0, 0x80
- beq _0801E104
- b _0801E144
-_0801E0F4:
- movs r3, 0xDE
- b _0801E1FA
-_0801E0F8:
- movs r3, 0xDD
- b _0801E1FA
-_0801E0FC:
- movs r3, 0xDA
- b _0801E1FA
-_0801E100:
- movs r3, 0x99
- b _0801E1FA
-_0801E104:
- ldr r4, _0801E12C @ =gLastUsedItem
- ldr r2, _0801E130 @ =gBattleMons
- ldr r3, _0801E134 @ =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2E]
- strh r0, [r4]
- ldr r1, _0801E138 @ =gStringBank
- ldrb r0, [r3]
- strb r0, [r1]
- movs r0, 0x3F
- ands r0, r5
- strb r0, [r6]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801E13C @ =gBattlescriptCurrInstr
- ldr r0, _0801E140 @ =BattleScript_HangedOnMsg
- b _0801E20A
- .align 2, 0
-_0801E12C: .4byte gLastUsedItem
-_0801E130: .4byte gBattleMons
-_0801E134: .4byte gBankTarget
-_0801E138: .4byte gStringBank
-_0801E13C: .4byte gBattlescriptCurrInstr
-_0801E140: .4byte BattleScript_HangedOnMsg
-_0801E144:
- adds r2, r6, 0
- ldrb r5, [r2]
- movs r0, 0x8
- ands r0, r5
- cmp r0, 0
- beq _0801E154
-_0801E150:
- movs r3, 0x1B
- b _0801E1FA
-_0801E154:
- movs r0, 0x10
- ands r0, r5
- cmp r0, 0
- beq _0801E17C
- movs r0, 0xEF
- ands r0, r5
- movs r1, 0xFD
- ands r0, r1
- movs r1, 0xFB
- ands r0, r1
- strb r0, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801E174 @ =gBattlescriptCurrInstr
- ldr r0, _0801E178 @ =BattleScript_OneHitKOMsg
- b _0801E20A
- .align 2, 0
-_0801E174: .4byte gBattlescriptCurrInstr
-_0801E178: .4byte BattleScript_OneHitKOMsg
-_0801E17C:
- movs r0, 0x40
- ands r0, r5
- cmp r0, 0
- beq _0801E19C
- movs r0, 0x3F
- ands r0, r5
- strb r0, [r2]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801E194 @ =gBattlescriptCurrInstr
- ldr r0, _0801E198 @ =BattleScript_EnduredMsg
- b _0801E20A
- .align 2, 0
-_0801E194: .4byte gBattlescriptCurrInstr
-_0801E198: .4byte BattleScript_EnduredMsg
-_0801E19C:
- movs r0, 0x80
- ands r0, r5
- cmp r0, 0
- beq _0801E1E4
- ldr r4, _0801E1CC @ =gLastUsedItem
- ldr r2, _0801E1D0 @ =gBattleMons
- ldr r3, _0801E1D4 @ =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2E]
- strh r0, [r4]
- ldr r1, _0801E1D8 @ =gStringBank
- ldrb r0, [r3]
- strb r0, [r1]
- movs r0, 0x3F
- ands r0, r5
- strb r0, [r6]
- bl b_movescr_stack_push_cursor
- ldr r1, _0801E1DC @ =gBattlescriptCurrInstr
- ldr r0, _0801E1E0 @ =BattleScript_HangedOnMsg
- b _0801E20A
- .align 2, 0
-_0801E1CC: .4byte gLastUsedItem
-_0801E1D0: .4byte gBattleMons
-_0801E1D4: .4byte gBankTarget
-_0801E1D8: .4byte gStringBank
-_0801E1DC: .4byte gBattlescriptCurrInstr
-_0801E1E0: .4byte BattleScript_HangedOnMsg
-_0801E1E4:
- movs r0, 0x20
- ands r0, r5
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0801E1F4
-_0801E1F0:
- movs r3, 0xE5
- b _0801E1FA
-_0801E1F4:
- strb r0, [r7, 0x7]
-_0801E1F6:
- cmp r3, 0
- beq _0801E204
-_0801E1FA:
- adds r0, r3, 0
- ldr r1, _0801E214 @ =gBankAttacker
- ldrb r1, [r1]
- bl PrepareStringBattle
-_0801E204:
- ldr r1, _0801E218 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
-_0801E20A:
- str r0, [r1]
-_0801E20C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E214: .4byte gBankAttacker
-_0801E218: .4byte gBattlescriptCurrInstr
- thumb_func_end atk0F_resultmessage
-
- thumb_func_start atk10_printstring
-atk10_printstring: @ 801E21C
- push {r4,lr}
- ldr r0, _0801E24C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801E246
- ldr r4, _0801E250 @ =gBattlescriptCurrInstr
- ldr r1, [r4]
- ldrb r0, [r1, 0x1]
- ldrb r1, [r1, 0x2]
- lsls r1, 8
- orrs r0, r1
- ldr r1, _0801E254 @ =gBankAttacker
- ldrb r1, [r1]
- bl PrepareStringBattle
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- ldr r1, _0801E258 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x7]
-_0801E246:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E24C: .4byte gBattleExecBuffer
-_0801E250: .4byte gBattlescriptCurrInstr
-_0801E254: .4byte gBankAttacker
-_0801E258: .4byte gBattleCommunication
- thumb_func_end atk10_printstring
-
- thumb_func_start atk11_printstring_playeronly
-atk11_printstring_playeronly: @ 801E25C
- push {r4,r5,lr}
- ldr r5, _0801E290 @ =gActiveBank
- ldr r0, _0801E294 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r4, _0801E298 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0
- bl EmitPrintStringPlayerOnly
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- ldr r1, _0801E29C @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x7]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E290: .4byte gActiveBank
-_0801E294: .4byte gBankAttacker
-_0801E298: .4byte gBattlescriptCurrInstr
-_0801E29C: .4byte gBattleCommunication
- thumb_func_end atk11_printstring_playeronly
-
- thumb_func_start atk12_waitmessage
-atk12_waitmessage: @ 801E2A0
- push {r4-r6,lr}
- ldr r0, _0801E2BC @ =gBattleExecBuffer
- ldr r4, [r0]
- cmp r4, 0
- bne _0801E2EE
- ldr r6, _0801E2C0 @ =gBattleCommunication
- ldrb r0, [r6, 0x7]
- cmp r0, 0
- bne _0801E2C8
- ldr r1, _0801E2C4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
- str r0, [r1]
- b _0801E2EE
- .align 2, 0
-_0801E2BC: .4byte gBattleExecBuffer
-_0801E2C0: .4byte gBattleCommunication
-_0801E2C4: .4byte gBattlescriptCurrInstr
-_0801E2C8:
- ldr r5, _0801E2F4 @ =gBattlescriptCurrInstr
- ldr r2, [r5]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r3, _0801E2F8 @ =gPauseCounterBattle
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r1
- bcc _0801E2EE
- movs r1, 0
- strh r4, [r3]
- adds r0, r2, 0x3
- str r0, [r5]
- strb r1, [r6, 0x7]
-_0801E2EE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E2F4: .4byte gBattlescriptCurrInstr
-_0801E2F8: .4byte gPauseCounterBattle
- thumb_func_end atk12_waitmessage
-
- thumb_func_start atk13_printfromtable
-atk13_printfromtable: @ 801E2FC
- push {r4,r5,lr}
- ldr r0, _0801E340 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801E33A
- ldr r4, _0801E344 @ =gBattlescriptCurrInstr
- ldr r2, [r4]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- ldr r5, _0801E348 @ =gBattleCommunication
- ldrb r0, [r5, 0x5]
- lsls r0, 1
- adds r1, r0
- ldrh r0, [r1]
- ldr r1, _0801E34C @ =gBankAttacker
- ldrb r1, [r1]
- bl PrepareStringBattle
- ldr r0, [r4]
- adds r0, 0x5
- str r0, [r4]
- movs r0, 0x1
- strb r0, [r5, 0x7]
-_0801E33A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E340: .4byte gBattleExecBuffer
-_0801E344: .4byte gBattlescriptCurrInstr
-_0801E348: .4byte gBattleCommunication
-_0801E34C: .4byte gBankAttacker
- thumb_func_end atk13_printfromtable
-
- thumb_func_start atk14_printfromtable_playeronly
-atk14_printfromtable_playeronly: @ 801E350
- push {r4-r6,lr}
- ldr r0, _0801E3A0 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801E39A
- ldr r5, _0801E3A4 @ =gBattlescriptCurrInstr
- ldr r2, [r5]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- ldr r6, _0801E3A8 @ =gBattleCommunication
- ldrb r0, [r6, 0x5]
- lsls r0, 1
- adds r1, r0
- ldr r4, _0801E3AC @ =gActiveBank
- ldr r0, _0801E3B0 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldrh r1, [r1]
- movs r0, 0
- bl EmitPrintStringPlayerOnly
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x5
- str r0, [r5]
- movs r0, 0x1
- strb r0, [r6, 0x7]
-_0801E39A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801E3A0: .4byte gBattleExecBuffer
-_0801E3A4: .4byte gBattlescriptCurrInstr
-_0801E3A8: .4byte gBattleCommunication
-_0801E3AC: .4byte gActiveBank
-_0801E3B0: .4byte gBankAttacker
- thumb_func_end atk14_printfromtable_playeronly
-
- thumb_func_start sub_801E3B4
-sub_801E3B4: @ 801E3B4
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- movs r1, 0
- ldr r0, _0801E3E4 @ =gNoOfAllBanks
- ldrb r3, [r0]
- cmp r1, r3
- bge _0801E3DA
- ldr r4, _0801E3E8 @ =gTurnOrder
- ldrb r0, [r4]
- cmp r0, r2
- beq _0801E3DA
-_0801E3CC:
- adds r1, 0x1
- cmp r1, r3
- bge _0801E3DA
- adds r0, r1, r4
- ldrb r0, [r0]
- cmp r0, r2
- bne _0801E3CC
-_0801E3DA:
- lsls r0, r1, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0801E3E4: .4byte gNoOfAllBanks
-_0801E3E8: .4byte gTurnOrder
- thumb_func_end sub_801E3B4
-
- thumb_func_start sub_801E3EC
-sub_801E3EC: @ 801E3EC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- movs r0, 0
- mov r10, r0
- movs r6, 0
- movs r1, 0x1
- str r1, [sp, 0x4]
- ldr r1, _0801E430 @ =gBattleCommunication
- ldrb r3, [r1, 0x3]
- movs r0, 0x40
- ands r0, r3
- adds r7, r1, 0
- cmp r0, 0
- beq _0801E444
- ldr r2, _0801E434 @ =gEffectBank
- ldr r0, _0801E438 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r2]
- movs r0, 0xBF
- ands r0, r3
- strb r0, [r7, 0x3]
- movs r6, 0x40
- ldr r0, _0801E43C @ =0x02000000
- ldr r1, _0801E440 @ =gBankTarget
- b _0801E450
- .align 2, 0
-_0801E430: .4byte gBattleCommunication
-_0801E434: .4byte gEffectBank
-_0801E438: .4byte gBankAttacker
-_0801E43C: .4byte 0x02000000
-_0801E440: .4byte gBankTarget
-_0801E444:
- ldr r2, _0801E538 @ =gEffectBank
- ldr r0, _0801E53C @ =gBankTarget
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r0, _0801E540 @ =0x02000000
- ldr r1, _0801E544 @ =gBankAttacker
-_0801E450:
- ldrb r1, [r1]
- ldr r3, _0801E548 @ =0x00016003
- adds r0, r3
- strb r1, [r0]
- mov r8, r2
- ldr r2, _0801E54C @ =gBattleMons
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x13
- bne _0801E48A
- ldr r0, _0801E550 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- bne _0801E48A
- cmp r4, 0
- bne _0801E48A
- ldrb r0, [r7, 0x3]
- cmp r0, 0x9
- bhi _0801E48A
- bl _0801F5DC
-_0801E48A:
- mov r1, r8
- ldrb r0, [r1]
- bl GetBankIdentity
- ldr r2, _0801E554 @ =gSideAffecting
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- adds r1, r2
- ldrh r1, [r1]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0801E4C4
- ldr r0, _0801E550 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- bne _0801E4C4
- cmp r4, 0
- bne _0801E4C4
- ldr r0, _0801E558 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- cmp r0, 0x7
- bhi _0801E4C4
- bl _0801F5DC
-_0801E4C4:
- ldr r3, _0801E54C @ =gBattleMons
- ldr r2, _0801E538 @ =gEffectBank
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- adds r0, r3
- ldrh r0, [r0, 0x28]
- mov r8, r2
- mov r9, r3
- cmp r0, 0
- bne _0801E4EA
- ldr r0, _0801E558 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- cmp r0, 0xB
- beq _0801E4EA
- cmp r0, 0x1F
- beq _0801E4EA
- bl _0801F5DC
-_0801E4EA:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- mov r1, r9
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _0801E50C
- cmp r6, 0x40
- beq _0801E50C
- bl _0801F5DC
-_0801E50C:
- ldr r0, _0801E558 @ =gBattleCommunication
- ldrb r1, [r0, 0x3]
- adds r7, r0, 0
- cmp r1, 0x6
- bls _0801E518
- b _0801EB4A
-_0801E518:
- ldr r1, _0801E55C @ =gStatusFlagsForMoveEffects
- ldrb r0, [r7, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0x10
- bne _0801E528
- b _0801E714
-_0801E528:
- cmp r0, 0x10
- bhi _0801E560
- cmp r0, 0x7
- beq _0801E57A
- cmp r0, 0x8
- bne _0801E536
- b _0801E630
-_0801E536:
- b _0801EA14
- .align 2, 0
-_0801E538: .4byte gEffectBank
-_0801E53C: .4byte gBankTarget
-_0801E540: .4byte 0x02000000
-_0801E544: .4byte gBankAttacker
-_0801E548: .4byte 0x00016003
-_0801E54C: .4byte gBattleMons
-_0801E550: .4byte gHitMarker
-_0801E554: .4byte gSideAffecting
-_0801E558: .4byte gBattleCommunication
-_0801E55C: .4byte gStatusFlagsForMoveEffects
-_0801E560:
- cmp r0, 0x40
- bne _0801E566
- b _0801E888
-_0801E566:
- cmp r0, 0x40
- bhi _0801E572
- cmp r0, 0x20
- bne _0801E570
- b _0801E7EA
-_0801E570:
- b _0801EA14
-_0801E572:
- cmp r0, 0x80
- bne _0801E578
- b _0801E8E4
-_0801E578:
- b _0801EA14
-_0801E57A:
- mov r3, r8
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- add r0, r9
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x2B
- beq _0801E5DC
- ldr r0, _0801E5D4 @ =gActiveBank
- movs r1, 0
- strb r1, [r0]
- ldr r1, _0801E5D8 @ =gNoOfAllBanks
- ldrb r3, [r1]
- adds r7, r0, 0
- mov r12, r1
- cmp r3, 0
- beq _0801E5E8
- mov r4, r9
- ldr r0, [r4, 0x50]
- movs r1, 0x70
- ands r0, r1
- cmp r0, 0
- bne _0801E5E8
- adds r1, r7, 0
- mov r6, r9
- adds r6, 0x50
- movs r5, 0x58
- movs r4, 0x70
-_0801E5B4:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r3
- bcs _0801E5E8
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r6
- ldr r0, [r0]
- ands r0, r4
- cmp r0, 0
- beq _0801E5B4
- b _0801E5E8
- .align 2, 0
-_0801E5D4: .4byte gActiveBank
-_0801E5D8: .4byte gNoOfAllBanks
-_0801E5DC:
- ldr r0, _0801E628 @ =gActiveBank
- ldr r2, _0801E62C @ =gNoOfAllBanks
- ldrb r1, [r2]
- strb r1, [r0]
- adds r7, r0, 0
- mov r12, r2
-_0801E5E8:
- mov r0, r8
- ldrb r2, [r0]
- movs r0, 0x58
- adds r1, r2, 0
- muls r1, r0
- mov r0, r9
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E600
- b _0801EA14
-_0801E600:
- ldrb r0, [r7]
- mov r3, r12
- ldrb r3, [r3]
- cmp r0, r3
- beq _0801E60C
- b _0801EA14
-_0801E60C:
- mov r4, r9
- adds r0, r1, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x48
- bne _0801E61A
- b _0801EA14
-_0801E61A:
- cmp r0, 0xF
- bne _0801E620
- b _0801EA14
-_0801E620:
- adds r0, r2, 0
- bl CancelMultiTurnMoves
- b _0801EA04
- .align 2, 0
-_0801E628: .4byte gActiveBank
-_0801E62C: .4byte gNoOfAllBanks
-_0801E630:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- add r0, r9
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, 0x11
- bne _0801E688
- cmp r4, 0x1
- beq _0801E64A
- cmp r5, 0x80
- bne _0801E688
-_0801E64A:
- ldr r0, _0801E678 @ =gLastUsedAbility
- strb r1, [r0]
- mov r3, r8
- ldrb r0, [r3]
- movs r1, 0x11
- bl RecordAbilityBattle
- ldr r4, _0801E67C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801E680 @ =BattleScript_PSNPrevention
-_0801E664:
- str r0, [r4]
- ldr r2, _0801E684 @ =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _0801E676
- b _0801E928
-_0801E676:
- b _0801E94C
- .align 2, 0
-_0801E678: .4byte gLastUsedAbility
-_0801E67C: .4byte gBattlescriptCurrInstr
-_0801E680: .4byte BattleScript_PSNPrevention
-_0801E684: .4byte gHitMarker
-_0801E688:
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x58
- muls r0, r1
- add r0, r9
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r1, 0x3
- beq _0801E6AC
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _0801E6AC
- cmp r1, 0x8
- beq _0801E6AC
- cmp r0, 0x8
- bne _0801E6C6
-_0801E6AC:
- ldr r0, _0801E710 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _0801E6C6
- cmp r4, 0x1
- bne _0801E6C0
- b _0801E98C
-_0801E6C0:
- cmp r5, 0x80
- bne _0801E6C6
- b _0801E98C
-_0801E6C6:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- muls r1, r0
- mov r4, r9
- adds r3, r1, r4
- adds r0, r3, 0
- adds r0, 0x21
- ldrb r4, [r0]
- cmp r4, 0x3
- bne _0801E6DE
- b _0801EA14
-_0801E6DE:
- adds r0, 0x1
- ldrb r0, [r0]
- cmp r0, 0x3
- bne _0801E6E8
- b _0801EA14
-_0801E6E8:
- cmp r4, 0x8
- bne _0801E6EE
- b _0801EA14
-_0801E6EE:
- cmp r0, 0x8
- bne _0801E6F4
- b _0801EA14
-_0801E6F4:
- mov r0, r9
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E702
- b _0801EA14
-_0801E702:
- adds r0, r3, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x11
- bne _0801E70E
- b _0801EA14
-_0801E70E:
- b _0801EA04
- .align 2, 0
-_0801E710: .4byte gHitMarker
-_0801E714:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- add r0, r9
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, 0x29
- bne _0801E758
- cmp r4, 0x1
- beq _0801E72E
- cmp r5, 0x80
- bne _0801E758
-_0801E72E:
- ldr r0, _0801E74C @ =gLastUsedAbility
- strb r1, [r0]
- mov r3, r8
- ldrb r0, [r3]
- movs r1, 0x29
- bl RecordAbilityBattle
- ldr r4, _0801E750 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801E754 @ =BattleScript_BRNPrevention
- b _0801E664
- .align 2, 0
-_0801E74C: .4byte gLastUsedAbility
-_0801E750: .4byte gBattlescriptCurrInstr
-_0801E754: .4byte BattleScript_BRNPrevention
-_0801E758:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- mov r2, r9
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0xA
- beq _0801E778
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xA
- bne _0801E7A8
-_0801E778:
- ldr r0, _0801E79C @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _0801E7A8
- cmp r4, 0x1
- beq _0801E78E
- cmp r5, 0x80
- bne _0801E7A8
-_0801E78E:
- ldr r4, _0801E7A0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801E7A4 @ =BattleScript_BRNPrevention
- b _0801E998
- .align 2, 0
-_0801E79C: .4byte gHitMarker
-_0801E7A0: .4byte gBattlescriptCurrInstr
-_0801E7A4: .4byte BattleScript_BRNPrevention
-_0801E7A8:
- mov r3, r8
- ldrb r0, [r3]
- movs r1, 0x58
- adds r2, r0, 0
- muls r2, r1
- mov r4, r9
- adds r1, r2, r4
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0xA
- bne _0801E7C2
- b _0801EA14
-_0801E7C2:
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xA
- bne _0801E7CE
- b _0801EA14
-_0801E7CE:
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x29
- bne _0801E7DA
- b _0801EA14
-_0801E7DA:
- mov r0, r9
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E7E8
- b _0801EA14
-_0801E7E8:
- b _0801EA04
-_0801E7EA:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0801E826
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0801E826
- ldr r0, _0801E87C @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _0801E826
- movs r1, 0
- str r1, [sp, 0x4]
-_0801E826:
- ldr r4, _0801E880 @ =gBattleMons
- ldr r0, _0801E884 @ =gEffectBank
- ldrb r3, [r0]
- movs r0, 0x58
- adds r2, r3, 0
- muls r2, r0
- adds r1, r2, r4
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0xF
- bne _0801E840
- b _0801EA14
-_0801E840:
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xF
- bne _0801E84C
- b _0801EA14
-_0801E84C:
- adds r0, r4, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E85A
- b _0801EA14
-_0801E85A:
- ldr r2, [sp, 0x4]
- cmp r2, 0
- bne _0801E862
- b _0801EA14
-_0801E862:
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x28
- bne _0801E86E
- b _0801EA14
-_0801E86E:
- adds r0, r3, 0
- bl CancelMultiTurnMoves
- movs r3, 0x1
- mov r10, r3
- b _0801EA14
- .align 2, 0
-_0801E87C: .4byte gBattleWeather
-_0801E880: .4byte gBattleMons
-_0801E884: .4byte gEffectBank
-_0801E888:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- mov r2, r9
- adds r0, r1, r2
- adds r0, 0x20
- ldrb r2, [r0]
- cmp r2, 0x7
- bne _0801E8D0
- cmp r4, 0x1
- beq _0801E8A6
- cmp r5, 0x80
- beq _0801E8A6
- b _0801EA14
-_0801E8A6:
- ldr r0, _0801E8C4 @ =gLastUsedAbility
- strb r2, [r0]
- mov r3, r8
- ldrb r0, [r3]
- movs r1, 0x7
- bl RecordAbilityBattle
- ldr r4, _0801E8C8 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801E8CC @ =BattleScript_PRLZPrevention
- b _0801E664
- .align 2, 0
-_0801E8C4: .4byte gLastUsedAbility
-_0801E8C8: .4byte gBattlescriptCurrInstr
-_0801E8CC: .4byte BattleScript_PRLZPrevention
-_0801E8D0:
- mov r0, r9
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0801E8DE
- b _0801EA14
-_0801E8DE:
- movs r4, 0x1
- mov r10, r4
- b _0801EA14
-_0801E8E4:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- add r0, r9
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, 0x11
- bne _0801E952
- cmp r4, 0x1
- beq _0801E8FE
- cmp r5, 0x80
- bne _0801E952
-_0801E8FE:
- ldr r0, _0801E938 @ =gLastUsedAbility
- strb r1, [r0]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x11
- bl RecordAbilityBattle
- ldr r4, _0801E93C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801E940 @ =BattleScript_PSNPrevention
- str r0, [r4]
- ldr r2, _0801E944 @ =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _0801E94C
-_0801E928:
- movs r0, 0x1
- strb r0, [r7, 0x5]
- ldr r0, _0801E948 @ =0xffffdfff
- ands r1, r0
- str r1, [r2]
- bl _0801F5FA
- .align 2, 0
-_0801E938: .4byte gLastUsedAbility
-_0801E93C: .4byte gBattlescriptCurrInstr
-_0801E940: .4byte BattleScript_PSNPrevention
-_0801E944: .4byte gHitMarker
-_0801E948: .4byte 0xffffdfff
-_0801E94C:
- strb r0, [r7, 0x5]
- bl _0801F5FA
-_0801E952:
- mov r2, r8
- ldrb r0, [r2]
- movs r1, 0x58
- muls r0, r1
- add r0, r9
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r1, 0x3
- beq _0801E976
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _0801E976
- cmp r1, 0x8
- beq _0801E976
- cmp r0, 0x8
- bne _0801E9B4
-_0801E976:
- ldr r0, _0801E9A4 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _0801E9B4
- cmp r4, 0x1
- beq _0801E98C
- cmp r5, 0x80
- bne _0801E9B4
-_0801E98C:
- ldr r4, _0801E9A8 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801E9AC @ =BattleScript_PSNPrevention
-_0801E998:
- str r0, [r4]
- ldr r1, _0801E9B0 @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- bl _0801F5FA
- .align 2, 0
-_0801E9A4: .4byte gHitMarker
-_0801E9A8: .4byte gBattlescriptCurrInstr
-_0801E9AC: .4byte BattleScript_PSNPrevention
-_0801E9B0: .4byte gBattleCommunication
-_0801E9B4:
- mov r3, r8
- ldrb r0, [r3]
- movs r6, 0x58
- muls r0, r6
- mov r2, r9
- adds r2, 0x4C
- adds r5, r0, r2
- ldr r4, [r5]
- cmp r4, 0
- bne _0801EA14
- mov r3, r9
- adds r1, r0, r3
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r3, [r0]
- cmp r3, 0x3
- beq _0801EA0A
- adds r0, 0x1
- ldrb r0, [r0]
- cmp r0, 0x3
- beq _0801EA0A
- cmp r3, 0x8
- beq _0801EA0A
- cmp r0, 0x8
- beq _0801EA0A
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x11
- beq _0801EA14
- mov r4, r8
- ldrb r0, [r4]
- adds r1, r0, 0
- muls r1, r6
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x9
- negs r2, r2
- ands r0, r2
- str r0, [r1]
-_0801EA04:
- movs r0, 0x1
- mov r10, r0
- b _0801EA14
-_0801EA0A:
- ldr r0, _0801EA58 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
-_0801EA14:
- mov r1, r10
- cmp r1, 0x1
- beq _0801EA1C
- b _0801EB3C
-_0801EA1C:
- ldr r0, _0801EA5C @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801EA60 @ =gStatusFlagsForMoveEffects
- ldr r0, _0801EA64 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r3, [r0]
- cmp r3, 0x7
- bne _0801EA70
- bl Random
- ldr r2, _0801EA68 @ =gBattleMons
- ldr r1, _0801EA6C @ =gEffectBank
- ldrb r3, [r1]
- movs r1, 0x58
- muls r3, r1
- adds r2, 0x4C
- adds r3, r2
- movs r1, 0x3
- ands r1, r0
- adds r1, 0x2
- ldr r0, [r3]
- orrs r0, r1
- str r0, [r3]
- b _0801EA84
- .align 2, 0
-_0801EA58: .4byte gBattleMoveFlags
-_0801EA5C: .4byte gBattlescriptCurrInstr
-_0801EA60: .4byte gStatusFlagsForMoveEffects
-_0801EA64: .4byte gBattleCommunication
-_0801EA68: .4byte gBattleMons
-_0801EA6C: .4byte gEffectBank
-_0801EA70:
- ldr r2, _0801EAD4 @ =gBattleMons
- ldr r0, _0801EAD8 @ =gEffectBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r2, 0x4C
- adds r1, r2
- ldr r0, [r1]
- orrs r0, r3
- str r0, [r1]
-_0801EA84:
- ldr r2, _0801EADC @ =gBattlescriptCurrInstr
- ldr r1, _0801EAE0 @ =gMoveEffectBS_Ptrs
- ldr r5, _0801EAE4 @ =gBattleCommunication
- ldrb r0, [r5, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- ldr r4, _0801EAE8 @ =gActiveBank
- ldr r1, _0801EAD8 @ =gEffectBank
- ldrb r0, [r1]
- strb r0, [r4]
- ldrb r1, [r1]
- movs r0, 0x58
- muls r0, r1
- ldr r1, _0801EAEC @ =gUnknown_02024ACC
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r2, _0801EAF0 @ =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _0801EAF8
- movs r0, 0x1
- strb r0, [r5, 0x5]
- ldr r0, _0801EAF4 @ =0xffffdfff
- ands r1, r0
- str r1, [r2]
- b _0801EAFA
- .align 2, 0
-_0801EAD4: .4byte gBattleMons
-_0801EAD8: .4byte gEffectBank
-_0801EADC: .4byte gBattlescriptCurrInstr
-_0801EAE0: .4byte gMoveEffectBS_Ptrs
-_0801EAE4: .4byte gBattleCommunication
-_0801EAE8: .4byte gActiveBank
-_0801EAEC: .4byte gUnknown_02024ACC
-_0801EAF0: .4byte gHitMarker
-_0801EAF4: .4byte 0xffffdfff
-_0801EAF8:
- strb r0, [r5, 0x5]
-_0801EAFA:
- ldr r0, _0801EB2C @ =gBattleCommunication
- ldrb r2, [r0, 0x3]
- adds r7, r0, 0
- cmp r2, 0x2
- beq _0801EB14
- cmp r2, 0x6
- beq _0801EB14
- cmp r2, 0x5
- beq _0801EB14
- cmp r2, 0x3
- beq _0801EB14
- bl _0801F5FA
-_0801EB14:
- ldr r0, _0801EB30 @ =0x02000000
- ldrb r1, [r7, 0x3]
- ldr r2, _0801EB34 @ =0x000160ca
- adds r0, r2
- strb r1, [r0]
- ldr r2, _0801EB38 @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 7
- bl _0801F4F2
- .align 2, 0
-_0801EB2C: .4byte gBattleCommunication
-_0801EB30: .4byte 0x02000000
-_0801EB34: .4byte 0x000160ca
-_0801EB38: .4byte gHitMarker
-_0801EB3C:
- mov r3, r10
- cmp r3, 0
- beq _0801EB46
- bl _0801F5FA
-_0801EB46:
- bl _0801F5DC
-_0801EB4A:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- mov r0, r9
- adds r0, 0x50
- adds r1, r0
- ldr r2, _0801EB84 @ =gStatusFlagsForMoveEffects
- ldrb r3, [r7, 0x3]
- lsls r0, r3, 2
- adds r0, r2
- ldr r1, [r1]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0801EB6E
- bl _0801F5DC
-_0801EB6E:
- subs r0, r3, 0x7
- cmp r0, 0x34
- bls _0801EB78
- bl _0801F5FA
-_0801EB78:
- lsls r0, 2
- ldr r1, _0801EB88 @ =_0801EB8C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0801EB84: .4byte gStatusFlagsForMoveEffects
-_0801EB88: .4byte _0801EB8C
- .align 2, 0
-_0801EB8C:
- .4byte _0801EC60
- .4byte _0801ECD4
- .4byte _0801EE4C
- .4byte _0801ED60
- .4byte _0801EDDC
- .4byte _0801EE84
- .4byte _0801EECC
- .4byte _0801EFA8
- .4byte _0801EFEC
- .4byte _0801EFEC
- .4byte _0801EFEC
- .4byte _0801EFEC
- .4byte _0801EFEC
- .4byte _0801EFEC
- .4byte _0801EFEC
- .4byte _0801F040
- .4byte _0801F040
- .4byte _0801F040
- .4byte _0801F040
- .4byte _0801F040
- .4byte _0801F040
- .4byte _0801F040
- .4byte _0801F13C
- .4byte _0801F184
- .4byte _0801F1A4
- .4byte _0801F364
- .4byte _0801F3A0
- .4byte _0801F3BC
- .4byte _0801F3D4
- .4byte _0801F3EC
- .4byte _0801F44C
- .4byte _0801F464
- .4byte _0801F094
- .4byte _0801F094
- .4byte _0801F094
- .4byte _0801F094
- .4byte _0801F094
- .4byte _0801F094
- .4byte _0801F094
- .4byte _0801F0E8
- .4byte _0801F0E8
- .4byte _0801F0E8
- .4byte _0801F0E8
- .4byte _0801F0E8
- .4byte _0801F0E8
- .4byte _0801F0E8
- .4byte _0801F4A8
- .4byte _0801F500
- .4byte _0801F5FA
- .4byte _0801F5FA
- .4byte _0801F5FA
- .4byte _0801F5FA
- .4byte _0801F5EC
-_0801EC60:
- mov r1, r8
- ldrb r0, [r1]
- movs r5, 0x58
- adds r1, r0, 0
- muls r1, r5
- mov r2, r9
- adds r0, r1, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _0801EC7A
- bl _0801F5DC
-_0801EC7A:
- mov r4, r9
- adds r4, 0x50
- adds r0, r1, r4
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0801EC8E
- bl _0801F5DC
-_0801EC8E:
- bl Random
- mov r3, r8
- ldrb r1, [r3]
- adds r2, r1, 0
- muls r2, r5
- adds r2, r4
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- lsrs r1, 16
- adds r1, 0x2
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- ldr r4, _0801ECC8 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801ECCC @ =gMoveEffectBS_Ptrs
- ldr r0, _0801ECD0 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _0801F5F8
- .align 2, 0
-_0801ECC8: .4byte gBattlescriptCurrInstr
-_0801ECCC: .4byte gMoveEffectBS_Ptrs
-_0801ECD0: .4byte gBattleCommunication
-_0801ECD4:
- mov r0, r8
- ldrb r2, [r0]
- movs r6, 0x58
- adds r0, r2, 0
- muls r0, r6
- add r0, r9
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, 0x27
- bne _0801ED18
- cmp r4, 0x1
- beq _0801ECF4
- cmp r5, 0x80
- beq _0801ECF4
- bl _0801F5DC
-_0801ECF4:
- ldr r0, _0801ED0C @ =gLastUsedAbility
- strb r1, [r0]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x27
- bl RecordAbilityBattle
- ldr r1, _0801ED10 @ =gBattlescriptCurrInstr
- ldr r0, _0801ED14 @ =BattleScript_FlinchPrevention
- str r0, [r1]
- bl _0801F5FA
- .align 2, 0
-_0801ED0C: .4byte gLastUsedAbility
-_0801ED10: .4byte gBattlescriptCurrInstr
-_0801ED14: .4byte BattleScript_FlinchPrevention
-_0801ED18:
- adds r0, r2, 0
- bl sub_801E3B4
- ldr r1, _0801ED54 @ =gCurrentMoveTurn
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bhi _0801ED2E
- bl _0801F5DC
-_0801ED2E:
- mov r2, r8
- ldrb r0, [r2]
- adds r2, r0, 0
- muls r2, r6
- mov r0, r9
- adds r0, 0x50
- adds r2, r0
- ldr r1, _0801ED58 @ =gStatusFlagsForMoveEffects
- ldr r0, _0801ED5C @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- orrs r1, r0
- str r1, [r2]
- bl _0801F5DC
- .align 2, 0
-_0801ED54: .4byte gCurrentMoveTurn
-_0801ED58: .4byte gStatusFlagsForMoveEffects
-_0801ED5C: .4byte gBattleCommunication
-_0801ED60:
- mov r3, r8
- ldrb r0, [r3]
- movs r5, 0x58
- muls r0, r5
- mov r4, r9
- adds r4, 0x50
- adds r2, r0, r4
- ldr r1, [r2]
- movs r0, 0x70
- ands r0, r1
- cmp r0, 0
- beq _0801ED7C
- bl _0801F5DC
-_0801ED7C:
- movs r0, 0x80
- lsls r0, 5
- orrs r1, r0
- str r1, [r2]
- ldr r1, _0801EDC8 @ =gLockedMove
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldr r1, _0801EDCC @ =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0]
- bl Random
- mov r2, r8
- ldrb r1, [r2]
- adds r2, r1, 0
- muls r2, r5
- adds r2, r4
- movs r1, 0x3
- ands r1, r0
- adds r1, 0x2
- lsls r1, 4
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- ldr r4, _0801EDD0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801EDD4 @ =gMoveEffectBS_Ptrs
- ldr r0, _0801EDD8 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _0801F5F8
- .align 2, 0
-_0801EDC8: .4byte gLockedMove
-_0801EDCC: .4byte gCurrentMove
-_0801EDD0: .4byte gBattlescriptCurrInstr
-_0801EDD4: .4byte gMoveEffectBS_Ptrs
-_0801EDD8: .4byte gBattleCommunication
-_0801EDDC:
- ldr r5, _0801EE30 @ =gBankAttacker
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- bne _0801EE14
- ldr r4, _0801EE34 @ =gPaydayMoney
- ldrh r3, [r4]
- ldr r2, _0801EE38 @ =gBattleMons
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2A
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- adds r0, r3, r0
- strh r0, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r3, r0
- bls _0801EE14
- ldr r3, _0801EE3C @ =0x0000ffff
- adds r0, r3, 0
- strh r0, [r4]
-_0801EE14:
- ldr r4, _0801EE40 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801EE44 @ =gMoveEffectBS_Ptrs
- ldr r0, _0801EE48 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl _0801F5F8
- .align 2, 0
-_0801EE30: .4byte gBankAttacker
-_0801EE34: .4byte gPaydayMoney
-_0801EE38: .4byte gBattleMons
-_0801EE3C: .4byte 0x0000ffff
-_0801EE40: .4byte gBattlescriptCurrInstr
-_0801EE44: .4byte gMoveEffectBS_Ptrs
-_0801EE48: .4byte gBattleCommunication
-_0801EE4C:
- mov r4, r8
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- mov r1, r9
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- beq _0801EE62
- b _0801F5DC
-_0801EE62:
- bl Random
- ldr r4, _0801EE80 @ =gBattleCommunication
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- adds r0, 0x3
- strb r0, [r4, 0x3]
- movs r0, 0
- movs r1, 0
- bl sub_801E3EC
- b _0801F5FA
- .align 2, 0
-_0801EE80: .4byte gBattleCommunication
-_0801EE84:
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r9
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 5
- orrs r0, r1
- str r0, [r2]
- ldr r1, _0801EEC0 @ =gLockedMove
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- ldr r1, _0801EEC4 @ =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0]
- ldr r0, _0801EEC8 @ =gProtectStructs
- ldrb r1, [r2]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1, 0x1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1, 0x1]
- b _0801F5DC
- .align 2, 0
-_0801EEC0: .4byte gLockedMove
-_0801EEC4: .4byte gCurrentMove
-_0801EEC8: .4byte gProtectStructs
-_0801EECC:
- mov r3, r8
- ldrb r0, [r3]
- movs r6, 0x58
- muls r0, r6
- mov r4, r9
- adds r4, 0x50
- adds r0, r4
- ldr r5, [r0]
- movs r0, 0xE0
- lsls r0, 8
- ands r5, r0
- cmp r5, 0
- beq _0801EEE8
- b _0801F5DC
-_0801EEE8:
- bl Random
- mov r2, r8
- ldrb r1, [r2]
- adds r2, r1, 0
- muls r2, r6
- adds r2, r4
- movs r1, 0x3
- ands r1, r0
- adds r1, 0x3
- lsls r1, 13
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- ldr r2, _0801EF80 @ =0x02000000
- mov r3, r8
- ldrb r0, [r3]
- lsls r0, 1
- ldr r4, _0801EF84 @ =0x00016004
- adds r0, r4
- adds r0, r2
- ldr r6, _0801EF88 @ =gCurrentMove
- ldrh r1, [r6]
- strb r1, [r0]
- ldrb r0, [r3]
- lsls r0, 1
- ldr r1, _0801EF8C @ =0x00016005
- adds r0, r1
- adds r0, r2
- ldrh r1, [r6]
- lsrs r1, 8
- strb r1, [r0]
- ldrb r0, [r3]
- ldr r3, _0801EF90 @ =0x00016020
- adds r0, r3
- adds r0, r2
- ldr r1, _0801EF94 @ =gBankAttacker
- ldrb r1, [r1]
- strb r1, [r0]
- ldr r4, _0801EF98 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801EF9C @ =gMoveEffectBS_Ptrs
- ldr r2, _0801EFA0 @ =gBattleCommunication
- ldrb r0, [r2, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [r4]
- strb r5, [r2, 0x5]
- ldr r1, _0801EFA4 @ =gTrappingMoves
- ldrh r0, [r1]
- ldrh r4, [r6]
- cmp r0, r4
- bne _0801EF5C
- b _0801F5FA
-_0801EF5C:
- adds r3, r1, 0
- adds r1, r6, 0
-_0801EF60:
- ldrb r0, [r2, 0x5]
- adds r0, 0x1
- strb r0, [r2, 0x5]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bls _0801EF70
- b _0801F5FA
-_0801EF70:
- ldrb r0, [r2, 0x5]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- ldrh r4, [r1]
- cmp r0, r4
- bne _0801EF60
- b _0801F5FA
- .align 2, 0
-_0801EF80: .4byte 0x02000000
-_0801EF84: .4byte 0x00016004
-_0801EF88: .4byte gCurrentMove
-_0801EF8C: .4byte 0x00016005
-_0801EF90: .4byte 0x00016020
-_0801EF94: .4byte gBankAttacker
-_0801EF98: .4byte gBattlescriptCurrInstr
-_0801EF9C: .4byte gMoveEffectBS_Ptrs
-_0801EFA0: .4byte gBattleCommunication
-_0801EFA4: .4byte gTrappingMoves
-_0801EFA8:
- ldr r1, _0801EFD8 @ =gBattleMoveDamage
- ldr r0, _0801EFDC @ =gHP_dealt
- ldr r0, [r0]
- cmp r0, 0
- bge _0801EFB4
- adds r0, 0x3
-_0801EFB4:
- asrs r0, 2
- str r0, [r1]
- cmp r0, 0
- bne _0801EFC0
- movs r0, 0x1
- str r0, [r1]
-_0801EFC0:
- ldr r4, _0801EFE0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801EFE4 @ =gMoveEffectBS_Ptrs
- ldr r0, _0801EFE8 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- b _0801F5F8
- .align 2, 0
-_0801EFD8: .4byte gBattleMoveDamage
-_0801EFDC: .4byte gHP_dealt
-_0801EFE0: .4byte gBattlescriptCurrInstr
-_0801EFE4: .4byte gMoveEffectBS_Ptrs
-_0801EFE8: .4byte gBattleCommunication
-_0801EFEC:
- ldrb r1, [r7, 0x3]
- adds r1, 0xF2
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x10
- adds r2, r6, 0
- movs r3, 0
- bl sub_8025E20
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _0801F008
- b _0801F5DC
-_0801F008:
- ldr r2, _0801F02C @ =0x02000000
- ldrb r1, [r7, 0x3]
- movs r0, 0x3F
- ands r0, r1
- ldr r4, _0801F030 @ =0x000160a4
- adds r1, r2, r4
- strb r0, [r1]
- ldr r0, _0801F034 @ =0x000160a5
- adds r2, r0
- strb r3, [r2]
- ldr r4, _0801F038 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F03C @ =BattleScript_StatUp
- b _0801F5F8
- .align 2, 0
-_0801F02C: .4byte 0x02000000
-_0801F030: .4byte 0x000160a4
-_0801F034: .4byte 0x000160a5
-_0801F038: .4byte gBattlescriptCurrInstr
-_0801F03C: .4byte BattleScript_StatUp
-_0801F040:
- movs r0, 0x70
- negs r0, r0
- ldrb r1, [r7, 0x3]
- adds r1, 0xEB
- lsls r1, 24
- lsrs r1, 24
- adds r2, r6, 0
- movs r3, 0
- bl sub_8025E20
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _0801F05E
- b _0801F5DC
-_0801F05E:
- ldr r2, _0801F080 @ =0x02000000
- ldrb r1, [r7, 0x3]
- movs r0, 0x3F
- ands r0, r1
- ldr r4, _0801F084 @ =0x000160a4
- adds r1, r2, r4
- strb r0, [r1]
- ldr r0, _0801F088 @ =0x000160a5
- adds r2, r0
- strb r3, [r2]
- ldr r4, _0801F08C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F090 @ =BattleScript_StatDown
- b _0801F5F8
- .align 2, 0
-_0801F080: .4byte 0x02000000
-_0801F084: .4byte 0x000160a4
-_0801F088: .4byte 0x000160a5
-_0801F08C: .4byte gBattlescriptCurrInstr
-_0801F090: .4byte BattleScript_StatDown
-_0801F094:
- ldrb r1, [r7, 0x3]
- adds r1, 0xDA
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x20
- adds r2, r6, 0
- movs r3, 0
- bl sub_8025E20
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _0801F0B0
- b _0801F5DC
-_0801F0B0:
- ldr r2, _0801F0D4 @ =0x02000000
- ldrb r1, [r7, 0x3]
- movs r0, 0x3F
- ands r0, r1
- ldr r4, _0801F0D8 @ =0x000160a4
- adds r1, r2, r4
- strb r0, [r1]
- ldr r0, _0801F0DC @ =0x000160a5
- adds r2, r0
- strb r3, [r2]
- ldr r4, _0801F0E0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F0E4 @ =BattleScript_StatUp
- b _0801F5F8
- .align 2, 0
-_0801F0D4: .4byte 0x02000000
-_0801F0D8: .4byte 0x000160a4
-_0801F0DC: .4byte 0x000160a5
-_0801F0E0: .4byte gBattlescriptCurrInstr
-_0801F0E4: .4byte BattleScript_StatUp
-_0801F0E8:
- movs r0, 0x60
- negs r0, r0
- ldrb r1, [r7, 0x3]
- adds r1, 0xD3
- lsls r1, 24
- lsrs r1, 24
- adds r2, r6, 0
- movs r3, 0
- bl sub_8025E20
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _0801F106
- b _0801F5DC
-_0801F106:
- ldr r2, _0801F128 @ =0x02000000
- ldrb r1, [r7, 0x3]
- movs r0, 0x3F
- ands r0, r1
- ldr r4, _0801F12C @ =0x000160a4
- adds r1, r2, r4
- strb r0, [r1]
- ldr r0, _0801F130 @ =0x000160a5
- adds r2, r0
- strb r3, [r2]
- ldr r4, _0801F134 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F138 @ =BattleScript_StatDown
- b _0801F5F8
- .align 2, 0
-_0801F128: .4byte 0x02000000
-_0801F12C: .4byte 0x000160a4
-_0801F130: .4byte 0x000160a5
-_0801F134: .4byte gBattlescriptCurrInstr
-_0801F138: .4byte BattleScript_StatDown
-_0801F13C:
- mov r2, r8
- ldrb r1, [r2]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r9
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 15
- orrs r0, r1
- str r0, [r2]
- ldr r2, _0801F178 @ =gDisableStructs
- mov r3, r8
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x2
- strb r1, [r0, 0x19]
- ldr r1, _0801F17C @ =gLockedMove
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldr r1, _0801F180 @ =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0]
- b _0801F5DC
- .align 2, 0
-_0801F178: .4byte gDisableStructs
-_0801F17C: .4byte gLockedMove
-_0801F180: .4byte gCurrentMove
-_0801F184:
- ldr r0, _0801F1A0 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r9
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 16
-_0801F19A:
- orrs r0, r1
- str r0, [r2]
- b _0801F5DC
- .align 2, 0
-_0801F1A0: .4byte gBankAttacker
-_0801F1A4:
- ldr r4, _0801F254 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r6, r0, 24
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0801F1D8
- ldr r0, _0801F258 @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _0801F25C @ =0x00000902
- ands r0, r1
- cmp r0, 0
- bne _0801F214
- ldr r0, _0801F260 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _0801F1D8
- b _0801F5DC
-_0801F1D8:
- ldr r0, _0801F258 @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _0801F25C @ =0x00000902
- ands r0, r1
- cmp r0, 0
- bne _0801F214
- ldr r0, _0801F260 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _0801F214
- ldr r0, _0801F264 @ =gWishFutureKnock
- adds r0, 0x29
- adds r0, r6, r0
- ldrb r1, [r0]
- ldr r3, _0801F268 @ =gBitTable
- ldr r2, _0801F26C @ =gBattlePartyID
- ldr r0, _0801F254 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0801F214
- b _0801F5DC
-_0801F214:
- ldr r2, _0801F270 @ =gBattleMons
- ldr r1, _0801F274 @ =gBankTarget
- ldrb r0, [r1]
- movs r3, 0x58
- muls r0, r3
- adds r4, r0, r2
- ldrh r0, [r4, 0x2E]
- adds r7, r1, 0
- mov r9, r2
- cmp r0, 0
- beq _0801F284
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x3C
- bne _0801F284
- ldr r1, _0801F278 @ =gBattlescriptCurrInstr
- ldr r0, _0801F27C @ =BattleScript_NoItemSteal
- str r0, [r1]
- ldr r1, _0801F280 @ =gLastUsedAbility
- ldrb r0, [r7]
- muls r0, r3
- add r0, r9
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- b _0801F5FA
- .align 2, 0
-_0801F254: .4byte gBankAttacker
-_0801F258: .4byte gBattleTypeFlags
-_0801F25C: .4byte 0x00000902
-_0801F260: .4byte gTrainerBattleOpponent
-_0801F264: .4byte gWishFutureKnock
-_0801F268: .4byte gBitTable
-_0801F26C: .4byte gBattlePartyID
-_0801F270: .4byte gBattleMons
-_0801F274: .4byte gBankTarget
-_0801F278: .4byte gBattlescriptCurrInstr
-_0801F27C: .4byte BattleScript_NoItemSteal
-_0801F280: .4byte gLastUsedAbility
-_0801F284:
- ldr r4, _0801F340 @ =gBankAttacker
- mov r10, r4
- ldrb r1, [r4]
- movs r0, 0x58
- mov r8, r0
- mov r0, r8
- muls r0, r1
- add r0, r9
- ldrh r3, [r0, 0x2E]
- cmp r3, 0
- beq _0801F29C
- b _0801F5DC
-_0801F29C:
- ldrb r0, [r7]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- add r0, r9
- ldrh r2, [r0, 0x2E]
- adds r0, r2, 0
- cmp r0, 0xAF
- bne _0801F2B0
- b _0801F5DC
-_0801F2B0:
- cmp r0, 0
- bne _0801F2B6
- b _0801F5DC
-_0801F2B6:
- lsls r0, r1, 1
- ldr r5, _0801F344 @ =0x020160f0
- adds r0, r5
- ldr r1, _0801F348 @ =gLastUsedItem
- strh r2, [r0]
- strh r2, [r1]
- ldrb r0, [r7]
- mov r4, r8
- muls r4, r0
- adds r0, r4, 0
- add r0, r9
- movs r6, 0
- strh r3, [r0, 0x2E]
- ldr r4, _0801F34C @ =gActiveBank
- mov r2, r10
- ldrb r0, [r2]
- strb r0, [r4]
- str r1, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- mov r3, r10
- ldrb r0, [r3]
- bl MarkBufferBankForExecution
- ldrb r0, [r7]
- strb r0, [r4]
- ldrb r0, [r7]
- mov r4, r8
- muls r4, r0
- adds r0, r4, 0
- mov r1, r9
- adds r1, 0x2E
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
- ldr r4, _0801F350 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F354 @ =BattleScript_ItemSteal
- str r0, [r4]
- ldr r0, _0801F358 @ =0xfffe9f10
- adds r5, r0
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _0801F35C @ =0x000160e8
- adds r0, r1
- adds r0, r5
- strb r6, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r2, _0801F360 @ =0x000160e9
- adds r0, r2
- adds r0, r5
- strb r6, [r0]
- b _0801F5FA
- .align 2, 0
-_0801F340: .4byte gBankAttacker
-_0801F344: .4byte 0x020160f0
-_0801F348: .4byte gLastUsedItem
-_0801F34C: .4byte gActiveBank
-_0801F350: .4byte gBattlescriptCurrInstr
-_0801F354: .4byte BattleScript_ItemSteal
-_0801F358: .4byte 0xfffe9f10
-_0801F35C: .4byte 0x000160e8
-_0801F360: .4byte 0x000160e9
-_0801F364:
- ldr r3, _0801F394 @ =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r9
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 19
- orrs r0, r1
- str r0, [r2]
- ldr r2, _0801F398 @ =gDisableStructs
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _0801F39C @ =gBankAttacker
- ldrb r1, [r1]
- strb r1, [r0, 0x14]
- b _0801F5DC
- .align 2, 0
-_0801F394: .4byte gBankTarget
-_0801F398: .4byte gDisableStructs
-_0801F39C: .4byte gBankAttacker
-_0801F3A0:
- ldr r0, _0801F3B8 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- mov r0, r9
- adds r0, 0x50
- adds r2, r0
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 20
- b _0801F19A
- .align 2, 0
-_0801F3B8: .4byte gBankTarget
-_0801F3BC:
- ldr r4, _0801F3CC @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F3D0 @ =gUnknown_081D9224
- b _0801F5F8
- .align 2, 0
-_0801F3CC: .4byte gBattlescriptCurrInstr
-_0801F3D0: .4byte gUnknown_081D9224
-_0801F3D4:
- ldr r4, _0801F3E4 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F3E8 @ =BattleScript_RapidSpinAway
- b _0801F5F8
- .align 2, 0
-_0801F3E4: .4byte gBattlescriptCurrInstr
-_0801F3E8: .4byte BattleScript_RapidSpinAway
-_0801F3EC:
- ldr r6, _0801F43C @ =gBankTarget
- ldrb r0, [r6]
- movs r2, 0x58
- muls r0, r2
- mov r1, r9
- adds r1, 0x4C
- adds r5, r0, r1
- ldr r4, [r5]
- movs r0, 0x40
- ands r0, r4
- cmp r0, 0
- bne _0801F406
- b _0801F5DC
-_0801F406:
- movs r0, 0x41
- negs r0, r0
- ands r4, r0
- str r4, [r5]
- ldr r4, _0801F440 @ =gActiveBank
- ldrb r0, [r6]
- strb r0, [r4]
- ldrb r0, [r4]
- muls r0, r2
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r4, _0801F444 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F448 @ =BattleScript_TargetPRLZHeal
- b _0801F5F8
- .align 2, 0
-_0801F43C: .4byte gBankTarget
-_0801F440: .4byte gActiveBank
-_0801F444: .4byte gBattlescriptCurrInstr
-_0801F448: .4byte BattleScript_TargetPRLZHeal
-_0801F44C:
- ldr r4, _0801F45C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F460 @ =gUnknown_081D93FA
- b _0801F5F8
- .align 2, 0
-_0801F45C: .4byte gBattlescriptCurrInstr
-_0801F460: .4byte gUnknown_081D93FA
-_0801F464:
- ldr r4, _0801F494 @ =gBattleMoveDamage
- ldr r0, _0801F498 @ =gHP_dealt
- ldr r0, [r0]
- movs r1, 0x3
- bl __divsi3
- str r0, [r4]
- cmp r0, 0
- bne _0801F47A
- movs r0, 0x1
- str r0, [r4]
-_0801F47A:
- ldr r4, _0801F49C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r1, _0801F4A0 @ =gMoveEffectBS_Ptrs
- ldr r0, _0801F4A4 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- b _0801F5F8
- .align 2, 0
-_0801F494: .4byte gBattleMoveDamage
-_0801F498: .4byte gHP_dealt
-_0801F49C: .4byte gBattlescriptCurrInstr
-_0801F4A0: .4byte gMoveEffectBS_Ptrs
-_0801F4A4: .4byte gBattleCommunication
-_0801F4A8:
- mov r3, r8
- ldrb r0, [r3]
- movs r5, 0x58
- muls r0, r5
- mov r4, r9
- adds r4, 0x50
- adds r2, r0, r4
- ldr r1, [r2]
- movs r0, 0xC0
- lsls r0, 4
- ands r0, r1
- cmp r0, 0
- beq _0801F4C4
- b _0801F5DC
-_0801F4C4:
- movs r0, 0x80
- lsls r0, 5
- orrs r1, r0
- str r1, [r2]
- ldr r1, _0801F4F8 @ =gLockedMove
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldr r1, _0801F4FC @ =gCurrentMove
- ldrh r1, [r1]
- strh r1, [r0]
- bl Random
- mov r2, r8
- ldrb r1, [r2]
- adds r2, r1, 0
- muls r2, r5
- adds r2, r4
- movs r1, 0x1
- ands r1, r0
- adds r1, 0x2
- lsls r1, 10
- ldr r0, [r2]
-_0801F4F2:
- orrs r0, r1
- str r0, [r2]
- b _0801F5FA
- .align 2, 0
-_0801F4F8: .4byte gLockedMove
-_0801F4FC: .4byte gCurrentMove
-_0801F500:
- mov r5, r8
- ldrb r3, [r5]
- movs r4, 0x58
- adds r0, r3, 0
- muls r0, r4
- mov r2, r9
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r2, [r0]
- cmp r2, 0x3C
- bne _0801F540
- ldrh r0, [r1, 0x2E]
- cmp r0, 0
- beq _0801F5DC
- ldr r0, _0801F534 @ =gLastUsedAbility
- strb r2, [r0]
- ldr r1, _0801F538 @ =gBattlescriptCurrInstr
- ldr r0, _0801F53C @ =BattleScript_NoItemSteal
- str r0, [r1]
- ldrb r0, [r5]
- movs r1, 0x3C
- bl RecordAbilityBattle
- b _0801F5FA
- .align 2, 0
-_0801F534: .4byte gLastUsedAbility
-_0801F538: .4byte gBattlescriptCurrInstr
-_0801F53C: .4byte BattleScript_NoItemSteal
-_0801F540:
- ldrh r0, [r1, 0x2E]
- cmp r0, 0
- beq _0801F5DC
- adds r0, r3, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _0801F5B8 @ =gLastUsedItem
- mov r3, r8
- ldrb r0, [r3]
- muls r0, r4
- add r0, r9
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
- ldrb r0, [r3]
- muls r0, r4
- add r0, r9
- movs r5, 0
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldr r2, _0801F5BC @ =gWishFutureKnock
- adds r2, 0x29
- adds r2, r6, r2
- ldr r3, _0801F5C0 @ =gBitTable
- ldr r1, _0801F5C4 @ =gBattlePartyID
- mov r4, r8
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r4, _0801F5C8 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F5CC @ =BattleScript_KnockedOff
- str r0, [r4]
- ldr r1, _0801F5D0 @ =0x02000000
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 1
- ldr r3, _0801F5D4 @ =0x000160e8
- adds r0, r3
- adds r0, r1
- strb r5, [r0]
- ldrb r0, [r2]
- lsls r0, 1
- ldr r4, _0801F5D8 @ =0x000160e9
- adds r0, r4
- adds r0, r1
- strb r5, [r0]
- b _0801F5FA
- .align 2, 0
-_0801F5B8: .4byte gLastUsedItem
-_0801F5BC: .4byte gWishFutureKnock
-_0801F5C0: .4byte gBitTable
-_0801F5C4: .4byte gBattlePartyID
-_0801F5C8: .4byte gBattlescriptCurrInstr
-_0801F5CC: .4byte BattleScript_KnockedOff
-_0801F5D0: .4byte 0x02000000
-_0801F5D4: .4byte 0x000160e8
-_0801F5D8: .4byte 0x000160e9
-_0801F5DC:
- ldr r1, _0801F5E8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- b _0801F5FA
- .align 2, 0
-_0801F5E8: .4byte gBattlescriptCurrInstr
-_0801F5EC:
- ldr r4, _0801F60C @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _0801F610 @ =gUnknown_081D94B0
-_0801F5F8:
- str r0, [r4]
-_0801F5FA:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0801F60C: .4byte gBattlescriptCurrInstr
-_0801F610: .4byte gUnknown_081D94B0
- thumb_func_end sub_801E3EC
-
- thumb_func_start atk15_seteffectwithchancetarget
-atk15_seteffectwithchancetarget: @ 801F614
- push {r4,lr}
- ldr r2, _0801F640 @ =gBattleMons
- ldr r0, _0801F644 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x20
- bne _0801F650
- ldr r2, _0801F648 @ =gBattleMoves
- ldr r0, _0801F64C @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x5]
- lsls r4, r0, 1
- b _0801F660
- .align 2, 0
-_0801F640: .4byte gBattleMons
-_0801F644: .4byte gBankAttacker
-_0801F648: .4byte gBattleMoves
-_0801F64C: .4byte gCurrentMove
-_0801F650:
- ldr r2, _0801F680 @ =gBattleMoves
- ldr r0, _0801F684 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r4, [r0, 0x5]
-_0801F660:
- ldr r3, _0801F688 @ =gBattleCommunication
- ldrb r2, [r3, 0x3]
- movs r0, 0x80
- ands r0, r2
- cmp r0, 0
- beq _0801F690
- ldr r0, _0801F68C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801F690
- movs r0, 0x7F
- ands r0, r2
- strb r0, [r3, 0x3]
- b _0801F6BE
- .align 2, 0
-_0801F680: .4byte gBattleMoves
-_0801F684: .4byte gCurrentMove
-_0801F688: .4byte gBattleCommunication
-_0801F68C: .4byte gBattleMoveFlags
-_0801F690:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r4
- bhi _0801F6DA
- ldr r0, _0801F6C8 @ =gBattleCommunication
- ldrb r0, [r0, 0x3]
- cmp r0, 0
- beq _0801F6DA
- ldr r0, _0801F6CC @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0801F6DA
- cmp r4, 0x63
- bls _0801F6D0
-_0801F6BE:
- movs r0, 0
- movs r1, 0x80
- bl sub_801E3EC
- b _0801F6E2
- .align 2, 0
-_0801F6C8: .4byte gBattleCommunication
-_0801F6CC: .4byte gBattleMoveFlags
-_0801F6D0:
- movs r0, 0
- movs r1, 0
- bl sub_801E3EC
- b _0801F6E2
-_0801F6DA:
- ldr r1, _0801F6F8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0801F6E2:
- ldr r0, _0801F6FC @ =gBattleCommunication
- movs r1, 0
- strb r1, [r0, 0x3]
- ldr r0, _0801F700 @ =0x02000000
- ldr r2, _0801F704 @ =0x00016112
- adds r0, r2
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0801F6F8: .4byte gBattlescriptCurrInstr
-_0801F6FC: .4byte gBattleCommunication
-_0801F700: .4byte 0x02000000
-_0801F704: .4byte 0x00016112
- thumb_func_end atk15_seteffectwithchancetarget
-
- thumb_func_start atk16_seteffectprimary
-atk16_seteffectprimary: @ 801F708
- push {lr}
- movs r0, 0x1
- movs r1, 0
- bl sub_801E3EC
- pop {r0}
- bx r0
- thumb_func_end atk16_seteffectprimary
-
- thumb_func_start atk17_seteffectsecondary
-atk17_seteffectsecondary: @ 801F718
- push {lr}
- movs r0, 0
- movs r1, 0
- bl sub_801E3EC
- pop {r0}
- bx r0
- thumb_func_end atk17_seteffectsecondary
-
- thumb_func_start atk18_status_effect_clear
-atk18_status_effect_clear: @ 801F728
- push {lr}
- ldr r0, _0801F74C @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r2, _0801F750 @ =gActiveBank
- strb r0, [r2]
- ldr r3, _0801F754 @ =gBattleCommunication
- ldrb r0, [r3, 0x3]
- cmp r0, 0x6
- bhi _0801F75C
- ldr r1, _0801F758 @ =gBattleMons
- ldrb r2, [r2]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x4C
- b _0801F766
- .align 2, 0
-_0801F74C: .4byte gBattlescriptCurrInstr
-_0801F750: .4byte gActiveBank
-_0801F754: .4byte gBattleCommunication
-_0801F758: .4byte gBattleMons
-_0801F75C:
- ldr r1, _0801F794 @ =gBattleMons
- ldrb r2, [r2]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x50
-_0801F766:
- adds r2, r1
- ldr r1, _0801F798 @ =gStatusFlagsForMoveEffects
- ldrb r0, [r3, 0x3]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- ldr r0, _0801F79C @ =gBattleCommunication
- movs r2, 0
- strb r2, [r0, 0x3]
- ldr r1, _0801F7A0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- ldr r0, _0801F7A4 @ =0x02000000
- ldr r1, _0801F7A8 @ =0x00016112
- adds r0, r1
- strb r2, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_0801F794: .4byte gBattleMons
-_0801F798: .4byte gStatusFlagsForMoveEffects
-_0801F79C: .4byte gBattleCommunication
-_0801F7A0: .4byte gBattlescriptCurrInstr
-_0801F7A4: .4byte 0x02000000
-_0801F7A8: .4byte 0x00016112
- thumb_func_end atk18_status_effect_clear
-
- thumb_func_start atk19_faint_pokemon
-atk19_faint_pokemon: @ 801F7AC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _0801F81C @ =gBattlescriptCurrInstr
- ldr r2, [r0]
- ldrb r1, [r2, 0x2]
- adds r6, r0, 0
- cmp r1, 0
- beq _0801F834
- ldrb r0, [r2, 0x1]
- bl sub_8015150
- ldr r5, _0801F820 @ =gActiveBank
- strb r0, [r5]
- ldr r2, _0801F824 @ =gHitMarker
- ldr r1, _0801F828 @ =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- ands r0, r1
- cmp r0, 0
- bne _0801F7E6
- b _0801FB1C
-_0801F7E6:
- ldr r1, [r6]
- ldrb r4, [r1, 0x3]
- ldrb r0, [r1, 0x4]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r1, 0x6]
- lsls r0, 24
- orrs r4, r0
- bl b_movescr_stack_pop_cursor
- str r4, [r6]
- ldrb r0, [r5]
- bl GetBankSide
- ldr r1, _0801F82C @ =gSideAffecting
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r2, [r0]
- ldr r1, _0801F830 @ =0x0000fdff
- ands r1, r2
- strh r1, [r0]
- b _0801FB22
- .align 2, 0
-_0801F81C: .4byte gBattlescriptCurrInstr
-_0801F820: .4byte gActiveBank
-_0801F824: .4byte gHitMarker
-_0801F828: .4byte gBitTable
-_0801F82C: .4byte gSideAffecting
-_0801F830: .4byte 0x0000fdff
-_0801F834:
- ldrb r0, [r2, 0x1]
- cmp r0, 0x1
- bne _0801F85C
- ldr r1, _0801F84C @ =gActiveBank
- ldr r0, _0801F850 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _0801F854 @ =gBankTarget
- ldrb r7, [r0]
- ldr r4, _0801F858 @ =gUnknown_081D8C58
- b _0801F86A
- .align 2, 0
-_0801F84C: .4byte gActiveBank
-_0801F850: .4byte gBankAttacker
-_0801F854: .4byte gBankTarget
-_0801F858: .4byte gUnknown_081D8C58
-_0801F85C:
- ldr r1, _0801F954 @ =gActiveBank
- ldr r0, _0801F958 @ =gBankTarget
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _0801F95C @ =gBankAttacker
- ldrb r7, [r0]
- ldr r4, _0801F960 @ =gUnknown_081D8C65
-_0801F86A:
- ldr r0, _0801F964 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r0, _0801F968 @ =gBitTable
- mov r12, r0
- ldr r2, _0801F954 @ =gActiveBank
- mov r8, r2
- ldrb r2, [r2]
- lsls r0, r2, 2
- add r0, r12
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0801F886
- b _0801FB1C
-_0801F886:
- ldr r3, _0801F96C @ =gBattleMons
- mov r10, r3
- movs r5, 0x58
- mov r9, r5
- mov r0, r9
- muls r0, r2
- add r0, r10
- ldrh r3, [r0, 0x28]
- cmp r3, 0
- beq _0801F89C
- b _0801FB1C
-_0801F89C:
- ldr r2, _0801F970 @ =0x02000000
- lsls r1, r7, 1
- ldr r5, _0801F974 @ =0x000160ac
- adds r0, r1, r5
- adds r0, r2
- strb r3, [r0]
- ldr r0, _0801F978 @ =0x000160ad
- adds r1, r0
- adds r1, r2
- strb r3, [r1]
- lsls r1, r7, 2
- adds r5, 0x54
- adds r0, r1, r5
- adds r0, r2
- strb r3, [r0]
- adds r5, 0x1
- adds r0, r1, r5
- adds r0, r2
- strb r3, [r0]
- adds r5, 0x1
- adds r0, r1, r5
- adds r0, r2
- strb r3, [r0]
- ldr r0, _0801F97C @ =0x00016103
- adds r1, r0
- adds r1, r2
- strb r3, [r1]
- ldr r5, _0801F980 @ =gHitMarker
- mov r1, r8
- ldrb r0, [r1]
- lsls r0, 2
- add r0, r12
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r5]
- orrs r0, r1
- str r0, [r5]
- ldr r0, [r6]
- adds r0, 0x7
- bl b_movescr_stack_push
- str r4, [r6]
- mov r2, r8
- ldrb r0, [r2]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0801F9B0
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 15
- orrs r0, r1
- str r0, [r5]
- ldr r1, _0801F984 @ =gBattleResults
- ldrb r0, [r1]
- cmp r0, 0xFE
- bhi _0801F914
- adds r0, 0x1
- strb r0, [r1]
-_0801F914:
- mov r0, r9
- muls r0, r7
- add r0, r10
- adds r3, r0, 0
- adds r3, 0x2A
- mov r4, r8
- ldrb r2, [r4]
- mov r0, r9
- muls r0, r2
- add r0, r10
- adds r1, r0, 0
- adds r1, 0x2A
- ldrb r0, [r3]
- ldrb r5, [r1]
- cmp r0, r5
- bls _0801F9CC
- ldrb r1, [r1]
- subs r0, r1
- cmp r0, 0x1D
- ble _0801F990
- ldr r1, _0801F988 @ =gBattlePartyID
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0801F98C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x8
- bl AdjustFriendship
- b _0801F9CC
- .align 2, 0
-_0801F954: .4byte gActiveBank
-_0801F958: .4byte gBankTarget
-_0801F95C: .4byte gBankAttacker
-_0801F960: .4byte gUnknown_081D8C65
-_0801F964: .4byte gAbsentBankFlags
-_0801F968: .4byte gBitTable
-_0801F96C: .4byte gBattleMons
-_0801F970: .4byte 0x02000000
-_0801F974: .4byte 0x000160ac
-_0801F978: .4byte 0x000160ad
-_0801F97C: .4byte 0x00016103
-_0801F980: .4byte gHitMarker
-_0801F984: .4byte gBattleResults
-_0801F988: .4byte gBattlePartyID
-_0801F98C: .4byte gPlayerParty
-_0801F990:
- ldr r1, _0801F9A8 @ =gBattlePartyID
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0801F9AC @ =gPlayerParty
- adds r0, r1
- movs r1, 0x6
- bl AdjustFriendship
- b _0801F9CC
- .align 2, 0
-_0801F9A8: .4byte gBattlePartyID
-_0801F9AC: .4byte gPlayerParty
-_0801F9B0:
- ldr r1, _0801FAE0 @ =gBattleResults
- ldrb r0, [r1, 0x1]
- cmp r0, 0xFE
- bhi _0801F9BC
- adds r0, 0x1
- strb r0, [r1, 0x1]
-_0801F9BC:
- ldr r2, _0801FAE4 @ =gActiveBank
- ldrb r0, [r2]
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- add r0, r10
- ldrh r0, [r0]
- strh r0, [r1, 0x20]
-_0801F9CC:
- ldr r0, _0801FAE8 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0801FA02
- ldr r6, _0801FAEC @ =gBattleMons
- ldr r0, _0801FAF0 @ =gBankAttacker
- ldrb r0, [r0]
- movs r5, 0x58
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801FA02
- ldr r4, _0801FAF4 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- bl b_movescr_stack_push
- ldr r1, _0801FAF8 @ =gBattleMoveDamage
- adds r0, r7, 0
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0, 0x28]
- str r0, [r1]
- ldr r0, _0801FAFC @ =gUnknown_081D9156
- str r0, [r4]
-_0801FA02:
- ldr r1, _0801FB00 @ =gStatuses3
- ldr r6, _0801FB04 @ =gBankTarget
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 7
- ands r0, r1
- cmp r0, 0
- bne _0801FA1A
- b _0801FB22
-_0801FA1A:
- ldr r0, _0801FAE8 @ =gHitMarker
- ldr r5, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r5, r0
- cmp r5, 0
- bne _0801FB22
- ldr r4, _0801FAF0 @ =gBankAttacker
- mov r8, r4
- ldrb r0, [r4]
- bl GetBankSide
- adds r4, r0, 0
- ldrb r0, [r6]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0801FB22
- ldr r0, _0801FAEC @ =gBattleMons
- mov r9, r0
- mov r1, r8
- ldrb r2, [r1]
- movs r7, 0x58
- adds r3, r2, 0
- muls r3, r7
- adds r0, r3, r0
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801FB22
- ldr r0, _0801FB08 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xA5
- beq _0801FB22
- ldr r1, _0801FB0C @ =0x02000000
- ldr r4, _0801FB10 @ =0x0001608c
- adds r0, r2, r4
- adds r0, r1
- ldrb r4, [r0]
- adds r0, r4, r3
- mov r6, r9
- adds r6, 0x24
- adds r0, r6
- strb r5, [r0]
- ldr r5, _0801FAF4 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- bl b_movescr_stack_push
- ldr r0, _0801FB14 @ =gUnknown_081D9468
- str r0, [r5]
- ldr r5, _0801FAE4 @ =gActiveBank
- mov r1, r8
- ldrb r0, [r1]
- strb r0, [r5]
- adds r1, r4, 0
- adds r1, 0x9
- lsls r1, 24
- lsrs r1, 24
- ldrb r0, [r5]
- muls r0, r7
- adds r0, r6
- adds r0, r4
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0x1
- bl EmitSetAttributes
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r1, _0801FB18 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- lsls r4, 1
- mov r2, r8
- ldrb r0, [r2]
- muls r0, r7
- adds r0, r4, r0
- mov r2, r9
- adds r2, 0xC
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- mov r3, r8
- ldrb r0, [r3]
- muls r0, r7
- adds r4, r0
- adds r4, r2
- ldrh r0, [r4]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- b _0801FB22
- .align 2, 0
-_0801FAE0: .4byte gBattleResults
-_0801FAE4: .4byte gActiveBank
-_0801FAE8: .4byte gHitMarker
-_0801FAEC: .4byte gBattleMons
-_0801FAF0: .4byte gBankAttacker
-_0801FAF4: .4byte gBattlescriptCurrInstr
-_0801FAF8: .4byte gBattleMoveDamage
-_0801FAFC: .4byte gUnknown_081D9156
-_0801FB00: .4byte gStatuses3
-_0801FB04: .4byte gBankTarget
-_0801FB08: .4byte gCurrentMove
-_0801FB0C: .4byte 0x02000000
-_0801FB10: .4byte 0x0001608c
-_0801FB14: .4byte gUnknown_081D9468
-_0801FB18: .4byte gBattleTextBuff1
-_0801FB1C:
- ldr r0, [r6]
- adds r0, 0x7
- str r0, [r6]
-_0801FB22:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk19_faint_pokemon
-
- thumb_func_start atk1A_faint_animation
-atk1A_faint_animation: @ 801FB34
- push {r4,r5,lr}
- ldr r0, _0801FB64 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0801FB5E
- ldr r5, _0801FB68 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _0801FB6C @ =gActiveBank
- strb r0, [r4]
- movs r0, 0
- bl EmitFaintAnimation
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
-_0801FB5E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FB64: .4byte gBattleExecBuffer
-_0801FB68: .4byte gBattlescriptCurrInstr
-_0801FB6C: .4byte gActiveBank
- thumb_func_end atk1A_faint_animation
-
- thumb_func_start atk1B_faint_effects_clear
-atk1B_faint_effects_clear: @ 801FB70
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _0801FBC4 @ =gBattleExecBuffer
- ldr r6, [r0]
- cmp r6, 0
- bne _0801FBBC
- ldr r5, _0801FBC8 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _0801FBCC @ =gActiveBank
- strb r0, [r4]
- ldr r1, _0801FBD0 @ =gBattleMons
- ldrb r0, [r4]
- movs r2, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r0, r1
- str r6, [r0]
- ldrb r0, [r4]
- muls r0, r2
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- bl UndoEffectsAfterFainting
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
-_0801FBBC:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FBC4: .4byte gBattleExecBuffer
-_0801FBC8: .4byte gBattlescriptCurrInstr
-_0801FBCC: .4byte gActiveBank
-_0801FBD0: .4byte gBattleMons
- thumb_func_end atk1B_faint_effects_clear
-
- thumb_func_start atk1C_jumpifstatus
-atk1C_jumpifstatus: @ 801FBD4
- push {r4,r5,lr}
- ldr r5, _0801FC30 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [r5]
- ldrb r4, [r2, 0x2]
- ldrb r1, [r2, 0x3]
- lsls r1, 8
- adds r4, r1
- ldrb r1, [r2, 0x4]
- lsls r1, 16
- adds r4, r1
- ldrb r1, [r2, 0x5]
- lsls r1, 24
- adds r4, r1
- ldrb r3, [r2, 0x6]
- ldrb r1, [r2, 0x7]
- lsls r1, 8
- adds r3, r1
- ldrb r1, [r2, 0x8]
- lsls r1, 16
- adds r3, r1
- ldrb r1, [r2, 0x9]
- lsls r1, 24
- adds r3, r1
- ldr r2, _0801FC34 @ =gBattleMons
- movs r1, 0x58
- muls r1, r0
- adds r0, r2, 0
- adds r0, 0x4C
- adds r0, r1, r0
- ldr r0, [r0]
- ands r0, r4
- cmp r0, 0
- beq _0801FC38
- adds r0, r1, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801FC38
- str r3, [r5]
- b _0801FC40
- .align 2, 0
-_0801FC30: .4byte gBattlescriptCurrInstr
-_0801FC34: .4byte gBattleMons
-_0801FC38:
- ldr r1, _0801FC48 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
-_0801FC40:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FC48: .4byte gBattlescriptCurrInstr
- thumb_func_end atk1C_jumpifstatus
-
- thumb_func_start atk1D_jumpifstatus2
-atk1D_jumpifstatus2: @ 801FC4C
- push {r4,r5,lr}
- ldr r5, _0801FCA8 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [r5]
- ldrb r4, [r2, 0x2]
- ldrb r1, [r2, 0x3]
- lsls r1, 8
- adds r4, r1
- ldrb r1, [r2, 0x4]
- lsls r1, 16
- adds r4, r1
- ldrb r1, [r2, 0x5]
- lsls r1, 24
- adds r4, r1
- ldrb r3, [r2, 0x6]
- ldrb r1, [r2, 0x7]
- lsls r1, 8
- adds r3, r1
- ldrb r1, [r2, 0x8]
- lsls r1, 16
- adds r3, r1
- ldrb r1, [r2, 0x9]
- lsls r1, 24
- adds r3, r1
- ldr r2, _0801FCAC @ =gBattleMons
- movs r1, 0x58
- muls r1, r0
- adds r0, r2, 0
- adds r0, 0x50
- adds r0, r1, r0
- ldr r0, [r0]
- ands r0, r4
- cmp r0, 0
- beq _0801FCB0
- adds r0, r1, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0801FCB0
- str r3, [r5]
- b _0801FCB8
- .align 2, 0
-_0801FCA8: .4byte gBattlescriptCurrInstr
-_0801FCAC: .4byte gBattleMons
-_0801FCB0:
- ldr r1, _0801FCC0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
-_0801FCB8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FCC0: .4byte gBattlescriptCurrInstr
- thumb_func_end atk1D_jumpifstatus2
-
- thumb_func_start atk1E_jumpifability
-atk1E_jumpifability: @ 801FCC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r6, _0801FD18 @ =gBattlescriptCurrInstr
- ldr r2, [r6]
- ldrb r5, [r2, 0x2]
- mov r8, r5
- ldrb r1, [r2, 0x3]
- ldrb r0, [r2, 0x4]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 24
- adds r7, r1, r0
- ldrb r0, [r2, 0x1]
- cmp r0, 0x8
- bne _0801FD24
- ldr r0, _0801FD1C @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0xD
- adds r2, r5, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0801FDA0
- ldr r1, _0801FD20 @ =gLastUsedAbility
- strb r5, [r1]
- str r7, [r6]
- subs r4, 0x1
- lsls r0, r4, 24
- lsrs r0, 24
- ldrb r1, [r1]
- b _0801FD80
- .align 2, 0
-_0801FD18: .4byte gBattlescriptCurrInstr
-_0801FD1C: .4byte gBankAttacker
-_0801FD20: .4byte gLastUsedAbility
-_0801FD24:
- cmp r0, 0x9
- bne _0801FD5C
- ldr r0, _0801FD54 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0xC
- adds r2, r5, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0801FDA0
- ldr r1, _0801FD58 @ =gLastUsedAbility
- strb r5, [r1]
- str r7, [r6]
- subs r4, 0x1
- lsls r0, r4, 24
- lsrs r0, 24
- ldrb r1, [r1]
- b _0801FD80
- .align 2, 0
-_0801FD54: .4byte gBankAttacker
-_0801FD58: .4byte gLastUsedAbility
-_0801FD5C:
- ldrb r0, [r2, 0x1]
- bl sub_8015150
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0801FD90 @ =gBattleMons
- movs r0, 0x58
- muls r0, r4
- adds r0, r1
- adds r0, 0x20
- ldrb r1, [r0]
- cmp r1, r8
- bne _0801FDA0
- ldr r0, _0801FD94 @ =gLastUsedAbility
- strb r1, [r0]
- str r7, [r6]
- ldrb r1, [r0]
- adds r0, r4, 0
-_0801FD80:
- bl RecordAbilityBattle
- ldr r0, _0801FD98 @ =0x02000000
- ldr r1, _0801FD9C @ =0x000160f8
- adds r0, r1
- strb r4, [r0]
- b _0801FDA6
- .align 2, 0
-_0801FD90: .4byte gBattleMons
-_0801FD94: .4byte gLastUsedAbility
-_0801FD98: .4byte 0x02000000
-_0801FD9C: .4byte 0x000160f8
-_0801FDA0:
- ldr r0, [r6]
- adds r0, 0x7
- str r0, [r6]
-_0801FDA6:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk1E_jumpifability
-
- thumb_func_start atk1F_jumpifsideaffecting
-atk1F_jumpifsideaffecting: @ 801FDB4
- push {r4-r6,lr}
- ldr r0, _0801FDCC @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r4, [r0, 0x1]
- cmp r4, 0x1
- bne _0801FDD4
- ldr r0, _0801FDD0 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity
- b _0801FDDE
- .align 2, 0
-_0801FDCC: .4byte gBattlescriptCurrInstr
-_0801FDD0: .4byte gBankAttacker
-_0801FDD4:
- ldr r0, _0801FE14 @ =gBankTarget
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r4, 0x1
-_0801FDDE:
- ands r4, r0
- ldr r6, _0801FE18 @ =gBattlescriptCurrInstr
- ldr r3, [r6]
- ldrb r2, [r3, 0x2]
- ldrb r0, [r3, 0x3]
- lsls r0, 8
- orrs r2, r0
- ldrb r1, [r3, 0x4]
- ldrb r0, [r3, 0x5]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x7]
- lsls r0, 24
- adds r5, r1, r0
- ldr r1, _0801FE1C @ =gSideAffecting
- lsls r0, r4, 1
- adds r0, r1
- ldrh r0, [r0]
- ands r2, r0
- cmp r2, 0
- beq _0801FE20
- str r5, [r6]
- b _0801FE26
- .align 2, 0
-_0801FE14: .4byte gBankTarget
-_0801FE18: .4byte gBattlescriptCurrInstr
-_0801FE1C: .4byte gSideAffecting
-_0801FE20:
- adds r0, r3, 0
- adds r0, 0x8
- str r0, [r6]
-_0801FE26:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk1F_jumpifsideaffecting
-
- thumb_func_start atk20_jumpifstat
-atk20_jumpifstat: @ 801FE2C
- push {r4,r5,lr}
- movs r5, 0
- ldr r4, _0801FE60 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0801FE64 @ =gBattleMons
- ldr r3, [r4]
- movs r1, 0x58
- muls r0, r1
- ldrb r1, [r3, 0x3]
- adds r0, r1
- adds r2, 0x18
- adds r0, r2
- ldrb r2, [r0]
- ldrb r0, [r3, 0x2]
- cmp r0, 0x5
- bhi _0801FEEA
- lsls r0, 2
- ldr r1, _0801FE68 @ =_0801FE6C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0801FE60: .4byte gBattlescriptCurrInstr
-_0801FE64: .4byte gBattleMons
-_0801FE68: .4byte _0801FE6C
- .align 2, 0
-_0801FE6C:
- .4byte _0801FE84
- .4byte _0801FE94
- .4byte _0801FEA4
- .4byte _0801FEB4
- .4byte _0801FEC4
- .4byte _0801FED8
-_0801FE84:
- ldr r0, _0801FE90 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- bne _0801FEEA
- b _0801FEE4
- .align 2, 0
-_0801FE90: .4byte gBattlescriptCurrInstr
-_0801FE94:
- ldr r0, _0801FEA0 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- beq _0801FEEA
- b _0801FEE4
- .align 2, 0
-_0801FEA0: .4byte gBattlescriptCurrInstr
-_0801FEA4:
- ldr r0, _0801FEB0 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- bls _0801FEEA
- b _0801FEE4
- .align 2, 0
-_0801FEB0: .4byte gBattlescriptCurrInstr
-_0801FEB4:
- ldr r0, _0801FEC0 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- cmp r2, r0
- bcs _0801FEEA
- b _0801FEE4
- .align 2, 0
-_0801FEC0: .4byte gBattlescriptCurrInstr
-_0801FEC4:
- ldr r0, _0801FED4 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- ands r2, r0
- cmp r2, 0
- beq _0801FEEA
- b _0801FEE4
- .align 2, 0
-_0801FED4: .4byte gBattlescriptCurrInstr
-_0801FED8:
- ldr r0, _0801FF0C @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- ands r2, r0
- cmp r2, 0
- bne _0801FEEA
-_0801FEE4:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
-_0801FEEA:
- cmp r5, 0
- beq _0801FF10
- ldr r3, _0801FF0C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x5]
- ldrb r0, [r2, 0x6]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 24
- adds r1, r0
- str r1, [r3]
- b _0801FF18
- .align 2, 0
-_0801FF0C: .4byte gBattlescriptCurrInstr
-_0801FF10:
- ldr r1, _0801FF20 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x9
- str r0, [r1]
-_0801FF18:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0801FF20: .4byte gBattlescriptCurrInstr
- thumb_func_end atk20_jumpifstat
-
- thumb_func_start atk21_jumpifstatus3
-atk21_jumpifstatus3: @ 801FF24
- push {r4-r6,lr}
- ldr r4, _0801FF78 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r5, _0801FF7C @ =gActiveBank
- strb r0, [r5]
- ldr r2, [r4]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- adds r6, r1, r0
- ldrb r1, [r2, 0x7]
- ldrb r0, [r2, 0x8]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x9]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0xA]
- lsls r0, 24
- adds r3, r1, r0
- ldrb r0, [r2, 0x6]
- cmp r0, 0
- beq _0801FF84
- ldr r0, _0801FF80 @ =gStatuses3
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- ands r0, r6
- cmp r0, 0
- bne _0801FF9C
- b _0801FF94
- .align 2, 0
-_0801FF78: .4byte gBattlescriptCurrInstr
-_0801FF7C: .4byte gActiveBank
-_0801FF80: .4byte gStatuses3
-_0801FF84:
- ldr r0, _0801FF98 @ =gStatuses3
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- ands r0, r6
- cmp r0, 0
- beq _0801FF9C
-_0801FF94:
- str r3, [r4]
- b _0801FFA2
- .align 2, 0
-_0801FF98: .4byte gStatuses3
-_0801FF9C:
- adds r0, r2, 0
- adds r0, 0xB
- str r0, [r4]
-_0801FFA2:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk21_jumpifstatus3
-
- thumb_func_start atk22_jumpiftype
-atk22_jumpiftype: @ 801FFA8
- push {r4-r6,lr}
- ldr r4, _0801FFF0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- lsls r0, 24
- lsrs r0, 24
- ldr r3, [r4]
- ldrb r5, [r3, 0x2]
- ldrb r2, [r3, 0x3]
- ldrb r1, [r3, 0x4]
- lsls r1, 8
- adds r2, r1
- ldrb r1, [r3, 0x5]
- lsls r1, 16
- adds r2, r1
- ldrb r1, [r3, 0x6]
- lsls r1, 24
- adds r6, r2, r1
- ldr r2, _0801FFF4 @ =gBattleMons
- movs r1, 0x58
- muls r0, r1
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r5
- beq _0801FFEC
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r5
- bne _0801FFF8
-_0801FFEC:
- str r6, [r4]
- b _0801FFFC
- .align 2, 0
-_0801FFF0: .4byte gBattlescriptCurrInstr
-_0801FFF4: .4byte gBattleMons
-_0801FFF8:
- adds r0, r3, 0x7
- str r0, [r4]
-_0801FFFC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk22_jumpiftype
-
- thumb_func_start atk23_getexp
-atk23_getexp: @ 8020004
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r6, 0
- ldr r0, _0802004C @ =0x0201605c
- mov r10, r0
- ldr r0, _08020050 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _08020054 @ =gBank1
- strb r0, [r1]
- ldr r2, _08020058 @ =gSentPokesToOpponent
- movs r1, 0x2
- ands r1, r0
- lsls r1, 24
- lsrs r1, 25
- adds r1, r2
- ldrb r1, [r1]
- mov r8, r1
- mov r0, r10
- subs r0, 0x4D
- ldrb r0, [r0]
- cmp r0, 0x6
- bls _08020040
- bl _08020996
-_08020040:
- lsls r0, 2
- ldr r1, _0802005C @ =_08020060
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802004C: .4byte 0x0201605c
-_08020050: .4byte gBattlescriptCurrInstr
-_08020054: .4byte gBank1
-_08020058: .4byte gSentPokesToOpponent
-_0802005C: .4byte _08020060
- .align 2, 0
-_08020060:
- .4byte _0802007C
- .4byte _080200FC
- .4byte _08020216
- .4byte _0802055C
- .4byte _08020648
- .4byte _08020910
- .4byte _0802096C
-_0802007C:
- ldr r4, _080200A8 @ =gBank1
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08020098
- ldr r0, _080200AC @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _080200B0 @ =0x00000982
- ands r0, r1
- cmp r0, 0
- beq _080200BC
-_08020098:
- ldr r0, _080200B4 @ =0x02000000
- ldr r1, _080200B8 @ =0x0001600f
- adds r0, r1
- movs r1, 0x6
- strb r1, [r0]
- bl _08020996
- .align 2, 0
-_080200A8: .4byte gBank1
-_080200AC: .4byte gBattleTypeFlags
-_080200B0: .4byte 0x00000982
-_080200B4: .4byte 0x02000000
-_080200B8: .4byte 0x0001600f
-_080200BC:
- ldr r2, _080200E8 @ =0x02000000
- ldr r3, _080200EC @ =0x0001600f
- adds r1, r2, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, _080200F0 @ =0x00016113
- adds r2, r0
- ldr r3, _080200F4 @ =gBitTable
- ldr r1, _080200F8 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- bl _08020996
- .align 2, 0
-_080200E8: .4byte 0x02000000
-_080200EC: .4byte 0x0001600f
-_080200F0: .4byte 0x00016113
-_080200F4: .4byte gBitTable
-_080200F8: .4byte gBattlePartyID
-_080200FC:
- movs r5, 0
- movs r7, 0
- ldr r1, _08020150 @ =gSaveBlock1 + 0x3688
- mov r9, r1
-_08020104:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _08020154 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0802016A
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0802016A
- ldr r0, _08020158 @ =gBitTable
- lsls r1, r7, 2
- adds r1, r0
- ldr r0, [r1]
- mov r2, r8
- ands r0, r2
- cmp r0, 0
- beq _08020138
- adds r5, 0x1
-_08020138:
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _0802015C
- mov r3, r9
- ldrb r4, [r3]
- b _08020164
- .align 2, 0
-_08020150: .4byte gSaveBlock1 + 0x3688
-_08020154: .4byte gPlayerParty
-_08020158: .4byte gBitTable
-_0802015C:
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
-_08020164:
- cmp r4, 0x19
- bne _0802016A
- adds r6, 0x1
-_0802016A:
- adds r7, 0x1
- cmp r7, 0x5
- ble _08020104
- ldr r3, _080201D0 @ =gBaseStats
- ldr r2, _080201D4 @ =gBattleMons
- ldr r0, _080201D8 @ =gBank1
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r1, r2
- ldrh r2, [r1]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r3
- ldrb r2, [r0, 0x9]
- adds r1, 0x2A
- ldrb r0, [r1]
- muls r0, r2
- movs r1, 0x7
- bl __divsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r6, 0
- beq _080201E0
- lsrs r4, r0, 17
- adds r0, r4, 0
- adds r1, r5, 0
- bl __divsi3
- mov r1, r10
- strh r0, [r1]
- lsls r0, 16
- cmp r0, 0
- bne _080201B6
- movs r0, 0x1
- strh r0, [r1]
-_080201B6:
- ldr r5, _080201DC @ =gExpShareExp
- adds r0, r4, 0
- adds r1, r6, 0
- bl __divsi3
- strh r0, [r5]
- lsls r0, 16
- cmp r0, 0
- bne _080201FA
- movs r0, 0x1
- strh r0, [r5]
- b _080201FA
- .align 2, 0
-_080201D0: .4byte gBaseStats
-_080201D4: .4byte gBattleMons
-_080201D8: .4byte gBank1
-_080201DC: .4byte gExpShareExp
-_080201E0:
- adds r0, r1, 0
- adds r1, r5, 0
- bl __divsi3
- mov r2, r10
- strh r0, [r2]
- lsls r0, 16
- cmp r0, 0
- bne _080201F6
- movs r0, 0x1
- strh r0, [r2]
-_080201F6:
- ldr r0, _08020248 @ =gExpShareExp
- strh r6, [r0]
-_080201FA:
- ldr r1, _0802024C @ =0x02000000
- ldr r3, _08020250 @ =0x0001600f
- adds r2, r1, r3
- ldrb r0, [r2]
- adds r0, 0x1
- movs r3, 0
- strb r0, [r2]
- ldr r2, _08020254 @ =0x00016018
- adds r0, r1, r2
- strb r3, [r0]
- ldr r3, _08020258 @ =0x0001605f
- adds r1, r3
- mov r0, r8
- strb r0, [r1]
-_08020216:
- ldr r0, _0802025C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _08020220
- b _08020996
-_08020220:
- ldr r0, _0802024C @ =0x02000000
- ldr r1, _08020254 @ =0x00016018
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08020260 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xAF
- bne _0802026C
- ldr r0, _08020264 @ =gSaveBlock1
- ldr r2, _08020268 @ =0x00003688
- adds r0, r2
- ldrb r4, [r0]
- b _08020274
- .align 2, 0
-_08020248: .4byte gExpShareExp
-_0802024C: .4byte 0x02000000
-_08020250: .4byte 0x0001600f
-_08020254: .4byte 0x00016018
-_08020258: .4byte 0x0001605f
-_0802025C: .4byte gBattleExecBuffer
-_08020260: .4byte gPlayerParty
-_08020264: .4byte gSaveBlock1
-_08020268: .4byte 0x00003688
-_0802026C:
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
-_08020274:
- ldr r5, _08020294 @ =0x02000000
- cmp r4, 0x19
- beq _080202A0
- ldr r3, _08020298 @ =0x0001605f
- adds r1, r5, r3
- ldrb r0, [r1]
- movs r2, 0x1
- ands r2, r0
- cmp r2, 0
- bne _080202A0
- lsrs r0, 1
- strb r0, [r1]
- ldr r0, _0802029C @ =0x0001600f
- adds r1, r5, r0
- b _080202C8
- .align 2, 0
-_08020294: .4byte 0x02000000
-_08020298: .4byte 0x0001605f
-_0802029C: .4byte 0x0001600f
-_080202A0:
- ldr r1, _080202D4 @ =0x00016018
- adds r0, r5, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080202D8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x64
- bne _080202E8
- ldr r2, _080202DC @ =0x0001605f
- adds r1, r5, r2
- ldrb r0, [r1]
- lsrs r0, 1
- movs r2, 0
- strb r0, [r1]
- ldr r3, _080202E0 @ =0x0001600f
- adds r1, r5, r3
-_080202C8:
- movs r0, 0x5
- strb r0, [r1]
- ldr r0, _080202E4 @ =gBattleMoveDamage
- str r2, [r0]
- b _08020996
- .align 2, 0
-_080202D4: .4byte 0x00016018
-_080202D8: .4byte gPlayerParty
-_080202DC: .4byte 0x0001605f
-_080202E0: .4byte 0x0001600f
-_080202E4: .4byte gBattleMoveDamage
-_080202E8:
- ldr r0, _0802034C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _08020316
- ldr r0, _08020350 @ =gBattleMons
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08020316
- ldr r0, _08020354 @ =0x0001601b
- adds r5, r0
- ldrb r0, [r5]
- cmp r0, 0
- bne _08020316
- bl sub_80325B8
- ldr r0, _08020358 @ =0x00000161
- bl PlayBGM
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
-_08020316:
- ldr r5, _0802035C @ =0x02000000
- ldr r1, _08020360 @ =0x00016018
- adds r0, r5, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08020364 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _08020332
- b _0802051E
-_08020332:
- ldr r2, _08020368 @ =0x0001605f
- adds r0, r5, r2
- ldrb r0, [r0]
- movs r3, 0x1
- ands r3, r0
- cmp r3, 0
- beq _08020370
- ldr r1, _0802036C @ =gBattleMoveDamage
- mov r3, r10
- ldrh r0, [r3]
- str r0, [r1]
- mov r8, r1
- b _08020376
- .align 2, 0
-_0802034C: .4byte gBattleTypeFlags
-_08020350: .4byte gBattleMons
-_08020354: .4byte 0x0001601b
-_08020358: .4byte 0x00000161
-_0802035C: .4byte 0x02000000
-_08020360: .4byte 0x00016018
-_08020364: .4byte gPlayerParty
-_08020368: .4byte 0x0001605f
-_0802036C: .4byte gBattleMoveDamage
-_08020370:
- ldr r0, _080203EC @ =gBattleMoveDamage
- str r3, [r0]
- mov r8, r0
-_08020376:
- cmp r4, 0x19
- bne _08020386
- ldr r0, _080203F0 @ =gExpShareExp
- ldrh r1, [r0]
- mov r2, r8
- ldr r0, [r2]
- adds r0, r1
- str r0, [r2]
-_08020386:
- cmp r4, 0x28
- bne _0802039C
- mov r3, r8
- ldr r1, [r3]
- movs r0, 0x96
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- mov r1, r8
- str r0, [r1]
-_0802039C:
- ldr r0, _080203F4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080203B8
- ldr r4, _080203EC @ =gBattleMoveDamage
- ldr r1, [r4]
- movs r0, 0x96
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
-_080203B8:
- ldr r0, _080203F8 @ =0x02000000
- ldr r2, _080203FC @ =0x00016018
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08020400 @ =gPlayerParty
- adds r0, r1
- bl IsTradedMon
- lsls r0, 24
- cmp r0, 0
- beq _08020404
- ldr r4, _080203EC @ =gBattleMoveDamage
- ldr r1, [r4]
- movs r0, 0x96
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- movs r7, 0xA5
- lsls r7, 1
- mov r8, r4
- b _0802040A
- .align 2, 0
-_080203EC: .4byte gBattleMoveDamage
-_080203F0: .4byte gExpShareExp
-_080203F4: .4byte gBattleTypeFlags
-_080203F8: .4byte 0x02000000
-_080203FC: .4byte 0x00016018
-_08020400: .4byte gPlayerParty
-_08020404:
- ldr r7, _0802043C @ =0x00000149
- ldr r3, _08020440 @ =gBattleMoveDamage
- mov r8, r3
-_0802040A:
- ldr r0, _08020444 @ =gBattleTypeFlags
- ldrh r0, [r0]
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _08020488
- ldr r1, _08020448 @ =gBattlePartyID
- ldr r0, _0802044C @ =0x02000000
- ldr r3, _08020450 @ =0x00016018
- adds r2, r0, r3
- ldrh r1, [r1, 0x4]
- adds r5, r0, 0
- ldr r4, _08020454 @ =gBitTable
- ldr r3, _08020458 @ =gAbsentBankFlags
- ldrb r2, [r2]
- cmp r1, r2
- bne _08020460
- ldrb r1, [r3]
- ldr r0, [r4, 0x8]
- ands r1, r0
- cmp r1, 0
- bne _08020460
- ldr r0, _0802045C @ =0x000160a2
- adds r1, r5, r0
- b _0802047C
- .align 2, 0
-_0802043C: .4byte 0x00000149
-_08020440: .4byte gBattleMoveDamage
-_08020444: .4byte gBattleTypeFlags
-_08020448: .4byte gBattlePartyID
-_0802044C: .4byte 0x02000000
-_08020450: .4byte 0x00016018
-_08020454: .4byte gBitTable
-_08020458: .4byte gAbsentBankFlags
-_0802045C: .4byte 0x000160a2
-_08020460:
- ldrb r2, [r3]
- ldr r0, [r4]
- ands r2, r0
- cmp r2, 0
- bne _08020478
- ldr r1, _08020474 @ =0x000160a2
- adds r0, r5, r1
- strb r2, [r0]
- b _08020490
- .align 2, 0
-_08020474: .4byte 0x000160a2
-_08020478:
- ldr r2, _08020484 @ =0x000160a2
- adds r1, r5, r2
-_0802047C:
- movs r0, 0x2
- strb r0, [r1]
- b _08020490
- .align 2, 0
-_08020484: .4byte 0x000160a2
-_08020488:
- ldr r0, _08020530 @ =0x02000000
- ldr r3, _08020534 @ =0x000160a2
- adds r0, r3
- strb r1, [r0]
-_08020490:
- ldr r1, _08020538 @ =gBattleTextBuff1
- movs r3, 0
- movs r2, 0xFD
- strb r2, [r1]
- movs r5, 0x4
- strb r5, [r1, 0x1]
- ldr r4, _08020530 @ =0x02000000
- ldr r0, _08020534 @ =0x000160a2
- adds r6, r4, r0
- ldrb r0, [r6]
- strb r0, [r1, 0x2]
- ldr r0, _0802053C @ =0x00016018
- adds r4, r0
- ldrb r0, [r4]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _08020540 @ =gBattleTextBuff2
- strb r2, [r1]
- strb r3, [r1, 0x1]
- strb r7, [r1, 0x2]
- movs r3, 0xFF
- lsls r3, 8
- ands r7, r3
- asrs r0, r7, 8
- strb r0, [r1, 0x3]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x4]
- ldr r1, _08020544 @ =gBattleTextBuff3
- strb r2, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- strb r5, [r1, 0x2]
- movs r0, 0x5
- strb r0, [r1, 0x3]
- mov r0, r8
- ldr r2, [r0]
- strb r2, [r1, 0x4]
- adds r0, r2, 0
- ands r0, r3
- asrs r0, 8
- strb r0, [r1, 0x5]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r2
- asrs r0, 16
- strb r0, [r1, 0x6]
- lsrs r2, 24
- strb r2, [r1, 0x7]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x8]
- ldrb r1, [r6]
- movs r0, 0xD
- bl PrepareStringBattle
- ldrb r1, [r4]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08020548 @ =gPlayerParty
- adds r0, r1
- ldr r3, _0802054C @ =gBattleMons
- ldr r1, _08020550 @ =gBank1
- ldrb r2, [r1]
- movs r1, 0x58
- muls r1, r2
- adds r1, r3
- ldrh r1, [r1]
- bl MonGainEVs
-_0802051E:
- ldr r1, _08020530 @ =0x02000000
- ldr r3, _08020554 @ =0x0001605f
- adds r2, r1, r3
- ldrb r0, [r2]
- lsrs r0, 1
- strb r0, [r2]
- ldr r0, _08020558 @ =0x0001600f
- adds r1, r0
- b _08020618
- .align 2, 0
-_08020530: .4byte 0x02000000
-_08020534: .4byte 0x000160a2
-_08020538: .4byte gBattleTextBuff1
-_0802053C: .4byte 0x00016018
-_08020540: .4byte gBattleTextBuff2
-_08020544: .4byte gBattleTextBuff3
-_08020548: .4byte gPlayerParty
-_0802054C: .4byte gBattleMons
-_08020550: .4byte gBank1
-_08020554: .4byte 0x0001605f
-_08020558: .4byte 0x0001600f
-_0802055C:
- ldr r0, _08020620 @ =gBattleExecBuffer
- ldr r2, [r0]
- cmp r2, 0
- beq _08020566
- b _08020996
-_08020566:
- ldr r1, _08020624 @ =gBattleBufferB
- ldr r4, _08020628 @ =0x02000000
- ldr r3, _0802062C @ =0x000160a2
- adds r3, r4
- mov r8, r3
- ldrb r0, [r3]
- lsls r0, 9
- adds r0, r1
- strb r2, [r0]
- ldr r0, _08020630 @ =0x00016018
- adds r7, r4, r0
- ldrb r0, [r7]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08020634 @ =gPlayerParty
- adds r0, r5
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08020612
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x38
- bl GetMonData
- cmp r0, 0x64
- beq _08020612
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3A
- bl GetMonData
- ldr r1, _08020638 @ =0x00017180
- adds r4, r1
- strh r0, [r4]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3B
- bl GetMonData
- strh r0, [r4, 0x2]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3C
- bl GetMonData
- strh r0, [r4, 0x4]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3D
- bl GetMonData
- strh r0, [r4, 0x6]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3E
- bl GetMonData
- strh r0, [r4, 0x8]
- ldrb r0, [r7]
- muls r0, r6
- adds r0, r5
- movs r1, 0x3F
- bl GetMonData
- strh r0, [r4, 0xA]
- ldr r4, _0802063C @ =gActiveBank
- mov r2, r8
- ldrb r0, [r2]
- strb r0, [r4]
- ldrb r1, [r7]
- ldr r0, _08020640 @ =gBattleMoveDamage
- ldrh r2, [r0]
- movs r0, 0
- bl EmitExpBarUpdate
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08020612:
- ldr r1, _08020628 @ =0x02000000
- ldr r3, _08020644 @ =0x0001600f
- adds r1, r3
-_08020618:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08020996
- .align 2, 0
-_08020620: .4byte gBattleExecBuffer
-_08020624: .4byte gBattleBufferB
-_08020628: .4byte 0x02000000
-_0802062C: .4byte 0x000160a2
-_08020630: .4byte 0x00016018
-_08020634: .4byte gPlayerParty
-_08020638: .4byte 0x00017180
-_0802063C: .4byte gActiveBank
-_08020640: .4byte gBattleMoveDamage
-_08020644: .4byte 0x0001600f
-_08020648:
- ldr r0, _080208AC @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _08020652
- b _08020996
-_08020652:
- ldr r1, _080208B0 @ =gActiveBank
- ldr r4, _080208B4 @ =0x02000000
- ldr r2, _080208B8 @ =0x000160a2
- adds r0, r4, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r2, _080208BC @ =gBattleBufferB
- ldrb r3, [r1]
- lsls r1, r3, 9
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x21
- beq _0802066E
- b _080208F0
-_0802066E:
- adds r0, r2, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0xB
- beq _0802067A
- b _080208F0
-_0802067A:
- ldr r0, _080208C0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080206A8
- ldr r1, _080208C4 @ =gBattlePartyID
- lsls r0, r3, 1
- adds r2, r0, r1
- ldr r0, _080208C8 @ =0x00016018
- adds r1, r4, r0
- ldrh r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bne _080206A8
- adds r1, r0, 0
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080208CC @ =gPlayerParty
- adds r0, r1
- adds r1, r3, 0
- bl sub_80324F8
-_080206A8:
- ldr r1, _080208D0 @ =gBattleTextBuff1
- movs r2, 0xFD
- strb r2, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r5, _080208B0 @ =gActiveBank
- ldrb r0, [r5]
- strb r0, [r1, 0x2]
- ldr r0, _080208B4 @ =0x02000000
- ldr r3, _080208C8 @ =0x00016018
- adds r6, r0, r3
- ldrb r0, [r6]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r4, _080208D4 @ =gBattleTextBuff2
- strb r2, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- strb r0, [r4, 0x2]
- movs r0, 0x3
- strb r0, [r4, 0x3]
- ldrb r0, [r6]
- movs r1, 0x64
- mov r8, r1
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- ldr r7, _080208CC @ =gPlayerParty
- adds r0, r7
- movs r1, 0x38
- bl GetMonData
- strb r0, [r4, 0x4]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r4, 0x5]
- bl b_movescr_stack_push_cursor
- ldr r2, _080208D8 @ =gLeveledUpInBattle
- ldr r1, _080208DC @ =gBitTable
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080208E0 @ =gBattlescriptCurrInstr
- ldr r0, _080208E4 @ =BattleScript_LevelUp
- str r0, [r1]
- ldr r4, _080208E8 @ =gBattleMoveDamage
- ldr r2, _080208BC @ =gBattleBufferB
- ldrb r1, [r5]
- lsls r1, 9
- adds r0, r2, 0x2
- adds r0, r1, r0
- ldrb r3, [r0]
- adds r2, 0x3
- adds r1, r2
- ldrb r0, [r1]
- lsls r0, 8
- orrs r3, r0
- str r3, [r4]
- ldrb r0, [r6]
- mov r3, r8
- muls r3, r0
- adds r0, r3, 0
- adds r0, r7
- movs r1, 0
- bl AdjustFriendship
- ldr r0, _080208C4 @ =gBattlePartyID
- ldrb r1, [r6]
- ldrh r0, [r0]
- cmp r0, r1
- bne _080207EC
- ldr r4, _080208EC @ =gBattleMons
- ldrh r0, [r4, 0x28]
- cmp r0, 0
- beq _080207EC
- mov r0, r8
- muls r0, r1
- adds r0, r7
- movs r1, 0x38
- bl GetMonData
- adds r1, r4, 0
- adds r1, 0x2A
- strb r0, [r1]
- ldrb r0, [r6]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- movs r1, 0x39
- bl GetMonData
- strh r0, [r4, 0x28]
- ldrb r0, [r6]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3A
- bl GetMonData
- strh r0, [r4, 0x2C]
- ldrb r0, [r6]
- mov r3, r8
- muls r3, r0
- adds r0, r3, 0
- adds r0, r7
- movs r1, 0x3B
- bl GetMonData
- strh r0, [r4, 0x2]
- ldrb r0, [r6]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- movs r1, 0x3C
- bl GetMonData
- strh r0, [r4, 0x4]
- ldrb r0, [r6]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3D
- bl GetMonData
- strh r0, [r4, 0x6]
- ldrb r0, [r6]
- mov r3, r8
- muls r3, r0
- adds r0, r3, 0
- adds r0, r7
- movs r1, 0x3D
- bl GetMonData
- strh r0, [r4, 0x6]
- ldrb r0, [r6]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- movs r1, 0x3E
- bl GetMonData
- strh r0, [r4, 0x8]
- ldrb r0, [r6]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- movs r1, 0x3F
- bl GetMonData
- strh r0, [r4, 0xA]
-_080207EC:
- ldr r0, _080208C4 @ =gBattlePartyID
- ldr r1, _080208B4 @ =0x02000000
- ldr r3, _080208C8 @ =0x00016018
- adds r7, r1, r3
- ldrb r2, [r7]
- ldrh r0, [r0, 0x4]
- cmp r0, r2
- bne _080208F6
- ldr r6, _080208EC @ =gBattleMons
- movs r0, 0xD8
- adds r0, r6
- mov r8, r0
- ldrh r0, [r0]
- cmp r0, 0
- beq _080208F6
- ldr r0, _080208C0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080208F6
- movs r5, 0x64
- adds r0, r2, 0
- muls r0, r5
- ldr r4, _080208CC @ =gPlayerParty
- adds r0, r4
- movs r1, 0x38
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xDA
- strb r0, [r1]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x39
- bl GetMonData
- mov r1, r8
- strh r0, [r1]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3A
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xDC
- strh r0, [r1]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3B
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xB2
- strh r0, [r1]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3C
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xB4
- strh r0, [r1]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3D
- bl GetMonData
- movs r2, 0xB6
- adds r2, r6
- mov r8, r2
- strh r0, [r2]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3D
- bl GetMonData
- mov r3, r8
- strh r0, [r3]
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r4
- movs r1, 0x3E
- bl GetMonData
- adds r1, r6, 0
- adds r1, 0xB8
- strh r0, [r1]
- b _080208F6
- .align 2, 0
-_080208AC: .4byte gBattleExecBuffer
-_080208B0: .4byte gActiveBank
-_080208B4: .4byte 0x02000000
-_080208B8: .4byte 0x000160a2
-_080208BC: .4byte gBattleBufferB
-_080208C0: .4byte gBattleTypeFlags
-_080208C4: .4byte gBattlePartyID
-_080208C8: .4byte 0x00016018
-_080208CC: .4byte gPlayerParty
-_080208D0: .4byte gBattleTextBuff1
-_080208D4: .4byte gBattleTextBuff2
-_080208D8: .4byte gLeveledUpInBattle
-_080208DC: .4byte gBitTable
-_080208E0: .4byte gBattlescriptCurrInstr
-_080208E4: .4byte BattleScript_LevelUp
-_080208E8: .4byte gBattleMoveDamage
-_080208EC: .4byte gBattleMons
-_080208F0:
- ldr r1, _08020904 @ =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
-_080208F6:
- ldr r0, _08020908 @ =0x02000000
- ldr r1, _0802090C @ =0x0001600f
- adds r0, r1
- movs r1, 0x5
- strb r1, [r0]
- b _08020996
- .align 2, 0
-_08020904: .4byte gBattleMoveDamage
-_08020908: .4byte 0x02000000
-_0802090C: .4byte 0x0001600f
-_08020910:
- ldr r0, _08020924 @ =gBattleMoveDamage
- ldr r0, [r0]
- cmp r0, 0
- beq _08020930
- ldr r0, _08020928 @ =0x02000000
- ldr r2, _0802092C @ =0x0001600f
- adds r0, r2
- movs r1, 0x3
- strb r1, [r0]
- b _08020996
- .align 2, 0
-_08020924: .4byte gBattleMoveDamage
-_08020928: .4byte 0x02000000
-_0802092C: .4byte 0x0001600f
-_08020930:
- ldr r2, _08020950 @ =0x02000000
- ldr r3, _08020954 @ =0x00016018
- adds r1, r2, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bhi _0802095C
- ldr r0, _08020958 @ =0x0001600f
- adds r1, r2, r0
- movs r0, 0x2
- strb r0, [r1]
- b _08020996
- .align 2, 0
-_08020950: .4byte 0x02000000
-_08020954: .4byte 0x00016018
-_08020958: .4byte 0x0001600f
-_0802095C:
- ldr r3, _08020968 @ =0x0001600f
- adds r1, r2, r3
- movs r0, 0x6
- strb r0, [r1]
- b _08020996
- .align 2, 0
-_08020968: .4byte 0x0001600f
-_0802096C:
- ldr r0, _080209A4 @ =gBattleExecBuffer
- ldr r5, [r0]
- cmp r5, 0
- bne _08020996
- ldr r4, _080209A8 @ =gBattleMons
- ldr r2, _080209AC @ =gBank1
- ldrb r0, [r2]
- movs r1, 0x58
- muls r0, r1
- adds r0, r4
- movs r3, 0
- strh r5, [r0, 0x2E]
- ldrb r0, [r2]
- muls r0, r1
- adds r0, r4
- adds r0, 0x20
- strb r3, [r0]
- ldr r1, _080209B0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08020996:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080209A4: .4byte gBattleExecBuffer
-_080209A8: .4byte gBattleMons
-_080209AC: .4byte gBank1
-_080209B0: .4byte gBattlescriptCurrInstr
- thumb_func_end atk23_getexp
-
- thumb_func_start atk24
-atk24: @ 80209B4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- ldr r0, _08020AF0 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _080209C6
- b _08020B46
-_080209C6:
- movs r5, 0
-_080209C8:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08020AF4 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080209F8
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080209F8
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- adds r0, r6, r0
- lsls r0, 16
- lsrs r6, r0, 16
-_080209F8:
- adds r5, 0x1
- cmp r5, 0x5
- ble _080209C8
- cmp r6, 0
- bne _08020A0C
- ldr r0, _08020AF8 @ =gBattleOutcome
- ldrb r1, [r0]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0]
-_08020A0C:
- movs r6, 0
- movs r5, 0
-_08020A10:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _08020AFC @ =gEnemyParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08020A40
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _08020A40
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- adds r0, r6, r0
- lsls r0, 16
- lsrs r6, r0, 16
-_08020A40:
- adds r5, 0x1
- cmp r5, 0x5
- ble _08020A10
- ldr r2, _08020AF8 @ =gBattleOutcome
- cmp r6, 0
- bne _08020A54
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_08020A54:
- ldrb r0, [r2]
- cmp r0, 0
- bne _08020B3E
- ldr r2, _08020B00 @ =gBattleTypeFlags
- ldrh r1, [r2]
- movs r0, 0x2
- ands r0, r1
- mov r8, r2
- cmp r0, 0
- beq _08020B3E
- movs r2, 0
- movs r5, 0
- ldr r0, _08020B04 @ =gNoOfAllBanks
- ldrb r3, [r0]
- mov r12, r0
- ldr r7, _08020B08 @ =gBattlescriptCurrInstr
- cmp r2, r3
- bge _08020AA0
- ldr r0, _08020B0C @ =gHitMarker
- movs r1, 0x80
- lsls r1, 21
- ldr r6, [r0]
- adds r4, r3, 0
- ldr r3, _08020B10 @ =gSpecialStatuses
-_08020A84:
- adds r0, r1, 0
- lsls r0, r5
- ands r0, r6
- cmp r0, 0
- beq _08020A98
- ldrb r0, [r3]
- lsls r0, 25
- cmp r0, 0
- blt _08020A98
- adds r2, 0x1
-_08020A98:
- adds r3, 0x28
- adds r5, 0x2
- cmp r5, r4
- blt _08020A84
-_08020AA0:
- movs r4, 0
- movs r5, 0x1
- mov r0, r12
- ldrb r3, [r0]
- cmp r5, r3
- bge _08020ADA
- ldr r0, _08020B0C @ =gHitMarker
- movs r1, 0x80
- lsls r1, 21
- mov r12, r1
- ldr r1, [r0]
- ldr r0, _08020B10 @ =gSpecialStatuses
- adds r6, r3, 0
- adds r3, r0, 0
- adds r3, 0x14
-_08020ABE:
- mov r0, r12
- lsls r0, r5
- ands r0, r1
- cmp r0, 0
- beq _08020AD2
- ldrb r0, [r3]
- lsls r0, 25
- cmp r0, 0
- blt _08020AD2
- adds r4, 0x1
-_08020AD2:
- adds r3, 0x28
- adds r5, 0x2
- cmp r5, r6
- blt _08020ABE
-_08020ADA:
- mov r0, r8
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08020B14
- adds r0, r4, r2
- cmp r0, 0x1
- bgt _08020B1C
- b _08020B36
- .align 2, 0
-_08020AF0: .4byte gBattleExecBuffer
-_08020AF4: .4byte gPlayerParty
-_08020AF8: .4byte gBattleOutcome
-_08020AFC: .4byte gEnemyParty
-_08020B00: .4byte gBattleTypeFlags
-_08020B04: .4byte gNoOfAllBanks
-_08020B08: .4byte gBattlescriptCurrInstr
-_08020B0C: .4byte gHitMarker
-_08020B10: .4byte gSpecialStatuses
-_08020B14:
- cmp r4, 0
- beq _08020B36
- cmp r2, 0
- beq _08020B36
-_08020B1C:
- ldr r2, [r7]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- str r1, [r7]
- b _08020B46
-_08020B36:
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- b _08020B46
-_08020B3E:
- ldr r1, _08020B50 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08020B46:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08020B50: .4byte gBattlescriptCurrInstr
- thumb_func_end atk24
-
- thumb_func_start sub_8020B54
-sub_8020B54: @ 8020B54
- ldr r1, _08020B80 @ =gBattleMoveFlags
- movs r0, 0
- strb r0, [r1]
- ldr r0, _08020B84 @ =0x02000000
- ldr r1, _08020B88 @ =0x0001601f
- adds r0, r1
- movs r2, 0
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _08020B8C @ =gCritMultiplier
- strb r1, [r0]
- ldr r0, _08020B90 @ =gBattleCommunication
- strb r2, [r0, 0x3]
- strb r2, [r0, 0x6]
- ldr r2, _08020B94 @ =gHitMarker
- ldr r0, [r2]
- subs r1, 0x42
- ands r0, r1
- ldr r1, _08020B98 @ =0xffffbfff
- ands r0, r1
- str r0, [r2]
- bx lr
- .align 2, 0
-_08020B80: .4byte gBattleMoveFlags
-_08020B84: .4byte 0x02000000
-_08020B88: .4byte 0x0001601f
-_08020B8C: .4byte gCritMultiplier
-_08020B90: .4byte gBattleCommunication
-_08020B94: .4byte gHitMarker
-_08020B98: .4byte 0xffffbfff
- thumb_func_end sub_8020B54
-
- thumb_func_start atk25_move_values_cleanup
-atk25_move_values_cleanup: @ 8020B9C
- push {lr}
- bl sub_8020B54
- ldr r1, _08020BB0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08020BB0: .4byte gBattlescriptCurrInstr
- thumb_func_end atk25_move_values_cleanup
-
- thumb_func_start atk26_set_multihit
-atk26_set_multihit: @ 8020BB4
- ldr r3, _08020BC4 @ =gMultiHitCounter
- ldr r2, _08020BC8 @ =gBattlescriptCurrInstr
- ldr r0, [r2]
- ldrb r1, [r0, 0x1]
- strb r1, [r3]
- adds r0, 0x2
- str r0, [r2]
- bx lr
- .align 2, 0
-_08020BC4: .4byte gMultiHitCounter
-_08020BC8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk26_set_multihit
-
- thumb_func_start atk27_decrement_multihit
-atk27_decrement_multihit: @ 8020BCC
- push {lr}
- ldr r1, _08020BE8 @ =gMultiHitCounter
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bne _08020BF0
- ldr r1, _08020BEC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08020C0A
- .align 2, 0
-_08020BE8: .4byte gMultiHitCounter
-_08020BEC: .4byte gBattlescriptCurrInstr
-_08020BF0:
- ldr r3, _08020C10 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- str r1, [r3]
-_08020C0A:
- pop {r0}
- bx r0
- .align 2, 0
-_08020C10: .4byte gBattlescriptCurrInstr
- thumb_func_end atk27_decrement_multihit
-
- thumb_func_start atk28_goto
-atk28_goto: @ 8020C14
- ldr r3, _08020C30 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- str r1, [r3]
- bx lr
- .align 2, 0
-_08020C30: .4byte gBattlescriptCurrInstr
- thumb_func_end atk28_goto
-
- thumb_func_start atk29_jumpifbyte
-atk29_jumpifbyte: @ 8020C34
- push {r4-r6,lr}
- ldr r3, _08020C78 @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r6, [r1, 0x1]
- ldrb r2, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- adds r5, r2, r0
- ldrb r4, [r1, 0x6]
- ldrb r2, [r1, 0x7]
- ldrb r0, [r1, 0x8]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x9]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0xA]
- lsls r0, 24
- adds r2, r0
- adds r1, 0xB
- str r1, [r3]
- cmp r6, 0x5
- bhi _08020CCC
- lsls r0, r6, 2
- ldr r1, _08020C7C @ =_08020C80
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08020C78: .4byte gBattlescriptCurrInstr
-_08020C7C: .4byte _08020C80
- .align 2, 0
-_08020C80:
- .4byte _08020C98
- .4byte _08020CA0
- .4byte _08020CA8
- .4byte _08020CB0
- .4byte _08020CB8
- .4byte _08020CC2
-_08020C98:
- ldrb r0, [r5]
- cmp r0, r4
- bne _08020CCC
- b _08020CCA
-_08020CA0:
- ldrb r0, [r5]
- cmp r0, r4
- beq _08020CCC
- b _08020CCA
-_08020CA8:
- ldrb r0, [r5]
- cmp r0, r4
- bls _08020CCC
- b _08020CCA
-_08020CB0:
- ldrb r0, [r5]
- cmp r0, r4
- bcs _08020CCC
- b _08020CCA
-_08020CB8:
- ldrb r0, [r5]
- ands r4, r0
- cmp r4, 0
- beq _08020CCC
- b _08020CCA
-_08020CC2:
- ldrb r0, [r5]
- ands r4, r0
- cmp r4, 0
- bne _08020CCC
-_08020CCA:
- str r2, [r3]
-_08020CCC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk29_jumpifbyte
-
- thumb_func_start atk2A_jumpifhalfword
-atk2A_jumpifhalfword: @ 8020CD4
- push {r4-r6,lr}
- ldr r3, _08020D20 @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r6, [r1, 0x1]
- ldrb r2, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- adds r5, r2, r0
- ldrb r4, [r1, 0x6]
- ldrb r0, [r1, 0x7]
- lsls r0, 8
- orrs r4, r0
- ldrb r2, [r1, 0x8]
- ldrb r0, [r1, 0x9]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0xA]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0xB]
- lsls r0, 24
- adds r2, r0
- adds r1, 0xC
- str r1, [r3]
- cmp r6, 0x5
- bhi _08020D74
- lsls r0, r6, 2
- ldr r1, _08020D24 @ =_08020D28
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08020D20: .4byte gBattlescriptCurrInstr
-_08020D24: .4byte _08020D28
- .align 2, 0
-_08020D28:
- .4byte _08020D40
- .4byte _08020D48
- .4byte _08020D50
- .4byte _08020D58
- .4byte _08020D60
- .4byte _08020D6A
-_08020D40:
- ldrh r0, [r5]
- cmp r0, r4
- bne _08020D74
- b _08020D72
-_08020D48:
- ldrh r0, [r5]
- cmp r0, r4
- beq _08020D74
- b _08020D72
-_08020D50:
- ldrh r0, [r5]
- cmp r0, r4
- bls _08020D74
- b _08020D72
-_08020D58:
- ldrh r0, [r5]
- cmp r0, r4
- bcs _08020D74
- b _08020D72
-_08020D60:
- ldrh r0, [r5]
- ands r4, r0
- cmp r4, 0
- beq _08020D74
- b _08020D72
-_08020D6A:
- ldrh r0, [r5]
- ands r4, r0
- cmp r4, 0
- bne _08020D74
-_08020D72:
- str r2, [r3]
-_08020D74:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk2A_jumpifhalfword
-
- thumb_func_start atk2B_jumpifword
-atk2B_jumpifword: @ 8020D7C
- push {r4-r6,lr}
- ldr r3, _08020DD4 @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r6, [r1, 0x1]
- ldrb r2, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- adds r5, r2, r0
- ldrb r4, [r1, 0x6]
- ldrb r0, [r1, 0x7]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r1, 0x8]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r1, 0x9]
- lsls r0, 24
- orrs r4, r0
- ldrb r2, [r1, 0xA]
- ldrb r0, [r1, 0xB]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0xC]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0xD]
- lsls r0, 24
- adds r2, r0
- adds r1, 0xE
- str r1, [r3]
- cmp r6, 0x5
- bhi _08020E28
- lsls r0, r6, 2
- ldr r1, _08020DD8 @ =_08020DDC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08020DD4: .4byte gBattlescriptCurrInstr
-_08020DD8: .4byte _08020DDC
- .align 2, 0
-_08020DDC:
- .4byte _08020DF4
- .4byte _08020DFC
- .4byte _08020E04
- .4byte _08020E0C
- .4byte _08020E14
- .4byte _08020E1E
-_08020DF4:
- ldr r0, [r5]
- cmp r0, r4
- bne _08020E28
- b _08020E26
-_08020DFC:
- ldr r0, [r5]
- cmp r0, r4
- beq _08020E28
- b _08020E26
-_08020E04:
- ldr r0, [r5]
- cmp r0, r4
- bls _08020E28
- b _08020E26
-_08020E0C:
- ldr r0, [r5]
- cmp r0, r4
- bcs _08020E28
- b _08020E26
-_08020E14:
- ldr r0, [r5]
- ands r0, r4
- cmp r0, 0
- beq _08020E28
- b _08020E26
-_08020E1E:
- ldr r0, [r5]
- ands r0, r4
- cmp r0, 0
- bne _08020E28
-_08020E26:
- str r2, [r3]
-_08020E28:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk2B_jumpifword
-
- thumb_func_start atk2C_jumpifarrayequal
-atk2C_jumpifarrayequal: @ 8020E30
- push {r4-r7,lr}
- ldr r2, _08020E88 @ =gBattlescriptCurrInstr
- ldr r3, [r2]
- ldrb r1, [r3, 0x1]
- ldrb r0, [r3, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 24
- adds r5, r1, r0
- ldrb r1, [r3, 0x5]
- ldrb r0, [r3, 0x6]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x7]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x8]
- lsls r0, 24
- adds r4, r1, r0
- ldrb r6, [r3, 0x9]
- ldrb r1, [r3, 0xA]
- ldrb r0, [r3, 0xB]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0xC]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0xD]
- lsls r0, 24
- adds r1, r0
- mov r12, r1
- movs r1, 0
- cmp r1, r6
- bcs _08020EA8
- ldrb r0, [r5]
- ldrb r7, [r4]
- cmp r0, r7
- beq _08020E8C
- adds r0, r3, 0
- b _08020EA4
- .align 2, 0
-_08020E88: .4byte gBattlescriptCurrInstr
-_08020E8C:
- adds r5, 0x1
- adds r4, 0x1
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r6
- bcs _08020EA8
- ldrb r0, [r5]
- ldrb r3, [r4]
- cmp r0, r3
- beq _08020E8C
- ldr r0, [r2]
-_08020EA4:
- adds r0, 0xE
- str r0, [r2]
-_08020EA8:
- cmp r1, r6
- bne _08020EB0
- mov r7, r12
- str r7, [r2]
-_08020EB0:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk2C_jumpifarrayequal
-
- thumb_func_start atk2D_jumpifarraynotequal
-atk2D_jumpifarraynotequal: @ 8020EB8
- push {r4-r7,lr}
- movs r7, 0
- ldr r3, _08020F2C @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- adds r5, r2, r0
- ldrb r2, [r1, 0x5]
- ldrb r0, [r1, 0x6]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x7]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x8]
- lsls r0, 24
- adds r4, r2, r0
- ldrb r6, [r1, 0x9]
- ldrb r2, [r1, 0xA]
- ldrb r0, [r1, 0xB]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0xC]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0xD]
- lsls r0, 24
- adds r2, r0
- mov r12, r2
- movs r1, 0
- cmp r7, r6
- bcs _08020F22
-_08020F06:
- ldrb r0, [r5]
- ldrb r2, [r4]
- cmp r0, r2
- bne _08020F14
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_08020F14:
- adds r5, 0x1
- adds r4, 0x1
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, r6
- bcc _08020F06
-_08020F22:
- cmp r7, r6
- beq _08020F30
- mov r0, r12
- b _08020F34
- .align 2, 0
-_08020F2C: .4byte gBattlescriptCurrInstr
-_08020F30:
- ldr r0, [r3]
- adds r0, 0xE
-_08020F34:
- str r0, [r3]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk2D_jumpifarraynotequal
-
- thumb_func_start atk2E_setbyte
-atk2E_setbyte: @ 8020F3C
- ldr r3, _08020F60 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- ldrb r0, [r2, 0x5]
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x6
- str r0, [r3]
- bx lr
- .align 2, 0
-_08020F60: .4byte gBattlescriptCurrInstr
- thumb_func_end atk2E_setbyte
-
- thumb_func_start atk2F_addbyte
-atk2F_addbyte: @ 8020F64
- ldr r3, _08020F8C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- ldrb r0, [r2, 0x5]
- ldrb r2, [r1]
- adds r0, r2
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x6
- str r0, [r3]
- bx lr
- .align 2, 0
-_08020F8C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk2F_addbyte
-
- thumb_func_start atk30_subbyte
-atk30_subbyte: @ 8020F90
- ldr r3, _08020FB8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- ldrb r0, [r1]
- ldrb r2, [r2, 0x5]
- subs r0, r2
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x6
- str r0, [r3]
- bx lr
- .align 2, 0
-_08020FB8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk30_subbyte
-
- thumb_func_start atk31_copyarray
-atk31_copyarray: @ 8020FBC
- push {r4-r6,lr}
- ldr r3, _0802100C @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- adds r6, r2, r0
- ldrb r2, [r1, 0x5]
- ldrb r0, [r1, 0x6]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x7]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x8]
- lsls r0, 24
- adds r5, r2, r0
- ldrb r4, [r1, 0x9]
- movs r2, 0
- cmp r2, r4
- bge _08021000
-_08020FF2:
- adds r0, r6, r2
- adds r1, r5, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, r4
- blt _08020FF2
-_08021000:
- ldr r0, [r3]
- adds r0, 0xA
- str r0, [r3]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802100C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk31_copyarray
-
- thumb_func_start atk32_copyarray_withindex
-atk32_copyarray_withindex: @ 8021010
- push {r4-r7,lr}
- ldr r3, _08021078 @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- adds r7, r2, r0
- ldrb r2, [r1, 0x5]
- ldrb r0, [r1, 0x6]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0x7]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0x8]
- lsls r0, 24
- adds r6, r2, r0
- ldrb r2, [r1, 0x9]
- ldrb r0, [r1, 0xA]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r1, 0xB]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r1, 0xC]
- lsls r0, 24
- adds r5, r2, r0
- ldrb r4, [r1, 0xD]
- movs r2, 0
- cmp r2, r4
- bge _0802106C
-_0802105A:
- adds r0, r7, r2
- ldrb r1, [r5]
- adds r1, r2, r1
- adds r1, r6, r1
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, r4
- blt _0802105A
-_0802106C:
- ldr r0, [r3]
- adds r0, 0xE
- str r0, [r3]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08021078: .4byte gBattlescriptCurrInstr
- thumb_func_end atk32_copyarray_withindex
-
- thumb_func_start atk33_orbyte
-atk33_orbyte: @ 802107C
- ldr r3, _080210A4 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- ldrb r0, [r1]
- ldrb r2, [r2, 0x5]
- orrs r0, r2
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x6
- str r0, [r3]
- bx lr
- .align 2, 0
-_080210A4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk33_orbyte
-
- thumb_func_start atk34_orhalfword
-atk34_orhalfword: @ 80210A8
- push {r4,lr}
- ldr r4, _080210DC @ =gBattlescriptCurrInstr
- ldr r3, [r4]
- ldrb r2, [r3, 0x1]
- ldrb r0, [r3, 0x2]
- lsls r0, 8
- adds r2, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 16
- adds r2, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 24
- adds r2, r0
- ldrb r1, [r3, 0x5]
- ldrb r0, [r3, 0x6]
- lsls r0, 8
- orrs r1, r0
- ldrh r0, [r2]
- orrs r1, r0
- strh r1, [r2]
- ldr r0, [r4]
- adds r0, 0x7
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080210DC: .4byte gBattlescriptCurrInstr
- thumb_func_end atk34_orhalfword
-
- thumb_func_start atk35_orword
-atk35_orword: @ 80210E0
- push {r4,lr}
- ldr r4, _08021120 @ =gBattlescriptCurrInstr
- ldr r2, [r4]
- ldrb r3, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r3, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r3, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r3, r0
- ldrb r1, [r2, 0x5]
- ldrb r0, [r2, 0x6]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 24
- adds r1, r0
- ldr r0, [r3]
- orrs r0, r1
- str r0, [r3]
- ldr r0, [r4]
- adds r0, 0x9
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08021120: .4byte gBattlescriptCurrInstr
- thumb_func_end atk35_orword
-
- thumb_func_start atk36_bicbyte
-atk36_bicbyte: @ 8021124
- ldr r3, _0802114C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r1, r0
- ldrb r2, [r2, 0x5]
- ldrb r0, [r1]
- bics r0, r2
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x6
- str r0, [r3]
- bx lr
- .align 2, 0
-_0802114C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk36_bicbyte
-
- thumb_func_start atk37_bichalfword
-atk37_bichalfword: @ 8021150
- push {r4,lr}
- ldr r4, _08021184 @ =gBattlescriptCurrInstr
- ldr r3, [r4]
- ldrb r1, [r3, 0x1]
- ldrb r0, [r3, 0x2]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r3, 0x3]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r3, 0x4]
- lsls r0, 24
- adds r1, r0
- ldrb r2, [r3, 0x5]
- ldrb r0, [r3, 0x6]
- lsls r0, 8
- orrs r2, r0
- ldrh r0, [r1]
- bics r0, r2
- strh r0, [r1]
- ldr r0, [r4]
- adds r0, 0x7
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08021184: .4byte gBattlescriptCurrInstr
- thumb_func_end atk37_bichalfword
-
- thumb_func_start atk38_bicword
-atk38_bicword: @ 8021188
- push {r4,lr}
- ldr r4, _080211C8 @ =gBattlescriptCurrInstr
- ldr r2, [r4]
- ldrb r3, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- adds r3, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- adds r3, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- adds r3, r0
- ldrb r1, [r2, 0x5]
- ldrb r0, [r2, 0x6]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 24
- adds r1, r0
- ldr r0, [r3]
- bics r0, r1
- str r0, [r3]
- ldr r0, [r4]
- adds r0, 0x9
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080211C8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk38_bicword
-
- thumb_func_start atk39_pause
-atk39_pause: @ 80211CC
- push {r4,r5,lr}
- ldr r0, _08021200 @ =gBattleExecBuffer
- ldr r4, [r0]
- cmp r4, 0
- bne _080211F8
- ldr r5, _08021204 @ =gBattlescriptCurrInstr
- ldr r2, [r5]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r3, _08021208 @ =gPauseCounterBattle
- ldrh r0, [r3]
- adds r0, 0x1
- strh r0, [r3]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r1
- bcc _080211F8
- strh r4, [r3]
- adds r0, r2, 0x3
- str r0, [r5]
-_080211F8:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08021200: .4byte gBattleExecBuffer
-_08021204: .4byte gBattlescriptCurrInstr
-_08021208: .4byte gPauseCounterBattle
- thumb_func_end atk39_pause
-
- thumb_func_start atk3A_waitstate
-atk3A_waitstate: @ 802120C
- push {lr}
- ldr r0, _08021224 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0802121E
- ldr r1, _08021228 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0802121E:
- pop {r0}
- bx r0
- .align 2, 0
-_08021224: .4byte gBattleExecBuffer
-_08021228: .4byte gBattlescriptCurrInstr
- thumb_func_end atk3A_waitstate
-
- thumb_func_start atk3B_healthbar_update
-atk3B_healthbar_update: @ 802122C
- push {lr}
- ldr r0, _08021240 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _0802124C
- ldr r0, _08021244 @ =gActiveBank
- ldr r1, _08021248 @ =gBankTarget
- b _08021250
- .align 2, 0
-_08021240: .4byte gBattlescriptCurrInstr
-_08021244: .4byte gActiveBank
-_08021248: .4byte gBankTarget
-_0802124C:
- ldr r0, _08021274 @ =gActiveBank
- ldr r1, _08021278 @ =gBankAttacker
-_08021250:
- ldrb r1, [r1]
- strb r1, [r0]
- ldr r0, _0802127C @ =gBattleMoveDamage
- ldrh r1, [r0]
- movs r0, 0
- bl EmitHealthBarUpdate
- ldr r0, _08021274 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _08021280 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08021274: .4byte gActiveBank
-_08021278: .4byte gBankAttacker
-_0802127C: .4byte gBattleMoveDamage
-_08021280: .4byte gBattlescriptCurrInstr
- thumb_func_end atk3B_healthbar_update
-
- thumb_func_start atk3C_return
-atk3C_return: @ 8021284
- push {lr}
- bl b_movescr_stack_pop_cursor
- pop {r0}
- bx r0
- thumb_func_end atk3C_return
-
- thumb_func_start atk3D_end
-atk3D_end: @ 8021290
- ldr r0, _080212A4 @ =gBattleMoveFlags
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080212A8 @ =gActiveBank
- strb r1, [r0]
- ldr r1, _080212AC @ =gFightStateTracker
- movs r0, 0xB
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080212A4: .4byte gBattleMoveFlags
-_080212A8: .4byte gActiveBank
-_080212AC: .4byte gFightStateTracker
- thumb_func_end atk3D_end
-
- thumb_func_start atk3E_end2
-atk3E_end2: @ 80212B0
- ldr r1, _080212C0 @ =gActiveBank
- movs r0, 0
- strb r0, [r1]
- ldr r1, _080212C4 @ =gFightStateTracker
- movs r0, 0xB
- strb r0, [r1]
- bx lr
- .align 2, 0
-_080212C0: .4byte gActiveBank
-_080212C4: .4byte gFightStateTracker
- thumb_func_end atk3E_end2
-
- thumb_func_start atk3F_end3
-atk3F_end3: @ 80212C8
- push {lr}
- bl b_movescr_stack_pop_cursor
- ldr r2, _080212F0 @ =0x02017140
- adds r1, r2, 0
- adds r1, 0x20
- ldrb r0, [r1]
- cmp r0, 0
- beq _080212DE
- subs r0, 0x1
- strb r0, [r1]
-_080212DE:
- ldr r0, _080212F4 @ =gBattleMainFunc
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- str r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_080212F0: .4byte 0x02017140
-_080212F4: .4byte gBattleMainFunc
- thumb_func_end atk3F_end3
-
- thumb_func_start atk41_call
-atk41_call: @ 80212F8
- push {r4,lr}
- ldr r4, _08021324 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x5
- bl b_movescr_stack_push
- ldr r2, [r4]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08021324: .4byte gBattlescriptCurrInstr
- thumb_func_end atk41_call
-
- thumb_func_start atk42_jumpiftype2
-atk42_jumpiftype2: @ 8021328
- push {r4,lr}
- ldr r4, _08021370 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- lsls r0, 24
- lsrs r0, 24
- ldr r3, [r4]
- ldr r2, _08021374 @ =gBattleMons
- movs r1, 0x58
- muls r0, r1
- adds r0, r2
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r2, [r3, 0x2]
- ldrb r1, [r1]
- cmp r2, r1
- beq _08021356
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r2, r0
- bne _08021378
-_08021356:
- ldrb r1, [r3, 0x3]
- ldrb r0, [r3, 0x4]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r3, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r3, 0x6]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0802137C
- .align 2, 0
-_08021370: .4byte gBattlescriptCurrInstr
-_08021374: .4byte gBattleMons
-_08021378:
- adds r0, r3, 0x7
- str r0, [r4]
-_0802137C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atk42_jumpiftype2
-
- thumb_func_start atk43_jumpifabilitypresent
-atk43_jumpifabilitypresent: @ 8021384
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _080213BC @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r2, [r0, 0x1]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _080213C0
- ldr r2, [r4]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _080213C6
- .align 2, 0
-_080213BC: .4byte gBattlescriptCurrInstr
-_080213C0:
- ldr r0, [r4]
- adds r0, 0x6
- str r0, [r4]
-_080213C6:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atk43_jumpifabilitypresent
-
- thumb_func_start atk44
-atk44: @ 80213D0
- ldr r1, _080213E4 @ =0x02000000
- ldr r0, _080213E8 @ =gBankAttacker
- ldrb r0, [r0]
- ldr r2, _080213EC @ =0x00016060
- adds r0, r2
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- bx lr
- .align 2, 0
-_080213E4: .4byte 0x02000000
-_080213E8: .4byte gBankAttacker
-_080213EC: .4byte 0x00016060
- thumb_func_end atk44
-
- thumb_func_start atk45_playanimation
-atk45_playanimation: @ 80213F0
- push {r4-r6,lr}
- ldr r5, _08021444 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r6, _08021448 @ =gActiveBank
- strb r0, [r6]
- ldr r2, [r5]
- ldrb r1, [r2, 0x3]
- ldrb r0, [r2, 0x4]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x6]
- lsls r0, 24
- adds r3, r1, r0
- ldrb r4, [r2, 0x2]
- adds r0, r4, 0
- cmp r0, 0x1
- beq _08021426
- cmp r0, 0x11
- beq _08021426
- cmp r0, 0x2
- bne _0802144C
-_08021426:
- ldr r4, _08021444 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x2]
- ldrh r2, [r3]
- movs r0, 0
- bl EmitBattleAnimation
- ldr r0, _08021448 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x7
- str r0, [r4]
- b _080214AE
- .align 2, 0
-_08021444: .4byte gBattlescriptCurrInstr
-_08021448: .4byte gActiveBank
-_0802144C:
- ldr r0, _08021464 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802146C
- adds r0, r2, 0x7
- bl b_movescr_stack_push
- ldr r0, _08021468 @ =BattleScript_Pausex20
- b _080214AC
- .align 2, 0
-_08021464: .4byte gHitMarker
-_08021468: .4byte BattleScript_Pausex20
-_0802146C:
- adds r0, r4, 0
- subs r0, 0xA
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _08021498
- ldr r1, _08021490 @ =gStatuses3
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08021494 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _08021498
- adds r0, r2, 0x7
- b _080214AC
- .align 2, 0
-_08021490: .4byte gStatuses3
-_08021494: .4byte 0x000400c0
-_08021498:
- ldrb r1, [r2, 0x2]
- ldrh r2, [r3]
- movs r0, 0
- bl EmitBattleAnimation
- ldrb r0, [r6]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x7
-_080214AC:
- str r0, [r5]
-_080214AE:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end atk45_playanimation
-
- thumb_func_start atk46_playanimation2
-atk46_playanimation2: @ 80214B4
- push {r4-r7,lr}
- ldr r6, _0802151C @ =gBattlescriptCurrInstr
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r7, _08021520 @ =gActiveBank
- strb r0, [r7]
- ldr r2, [r6]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- adds r3, r1, r0
- ldrb r1, [r2, 0x6]
- ldrb r0, [r2, 0x7]
- lsls r0, 8
- adds r1, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 16
- adds r1, r0
- ldrb r0, [r2, 0x9]
- lsls r0, 24
- adds r4, r1, r0
- ldrb r5, [r3]
- adds r0, r5, 0
- cmp r0, 0x1
- beq _080214FE
- cmp r0, 0x11
- beq _080214FE
- cmp r0, 0x2
- bne _08021524
-_080214FE:
- ldrb r1, [r3]
- ldrh r2, [r4]
- movs r0, 0
- bl EmitBattleAnimation
- ldr r0, _08021520 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _0802151C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
- b _0802157A
- .align 2, 0
-_0802151C: .4byte gBattlescriptCurrInstr
-_08021520: .4byte gActiveBank
-_08021524:
- ldr r0, _08021534 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08021538
- adds r0, r2, 0
- b _08021576
- .align 2, 0
-_08021534: .4byte gHitMarker
-_08021538:
- adds r0, r5, 0
- subs r0, 0xA
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bls _08021564
- ldr r1, _0802155C @ =gStatuses3
- ldrb r0, [r7]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08021560 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _08021564
- adds r0, r2, 0
- b _08021576
- .align 2, 0
-_0802155C: .4byte gStatuses3
-_08021560: .4byte 0x000400c0
-_08021564:
- ldrb r1, [r3]
- ldrh r2, [r4]
- movs r0, 0
- bl EmitBattleAnimation
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
- ldr r0, [r6]
-_08021576:
- adds r0, 0xA
- str r0, [r6]
-_0802157A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk46_playanimation2
-
- thumb_func_start atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues
-atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues: @ 8021580
- push {r4,lr}
- movs r3, 0
- ldr r0, _080215A0 @ =0x02000000
- ldr r2, _080215A4 @ =0x0001601e
- adds r1, r0, r2
- ldrb r1, [r1]
- movs r2, 0xF0
- ands r2, r1
- adds r4, r0, 0
- cmp r2, 0x20
- beq _080215B6
- cmp r2, 0x20
- bgt _080215A8
- cmp r2, 0x10
- beq _080215B2
- b _080215C0
- .align 2, 0
-_080215A0: .4byte 0x02000000
-_080215A4: .4byte 0x0001601e
-_080215A8:
- cmp r2, 0x90
- beq _080215BA
- cmp r2, 0xA0
- beq _080215BE
- b _080215C0
-_080215B2:
- movs r3, 0xF
- b _080215C0
-_080215B6:
- movs r3, 0x27
- b _080215C0
-_080215BA:
- movs r3, 0x16
- b _080215C0
-_080215BE:
- movs r3, 0x2E
-_080215C0:
- ldr r1, _080215EC @ =0x0001601e
- adds r0, r4, r1
- ldrb r1, [r0]
- movs r0, 0xF
- ands r0, r1
- adds r0, r3, r0
- subs r0, 0x1
- ldr r2, _080215F0 @ =0x000160a4
- adds r1, r4, r2
- movs r2, 0
- strb r0, [r1]
- ldr r1, _080215F4 @ =0x000160a5
- adds r0, r4, r1
- strb r2, [r0]
- ldr r1, _080215F8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080215EC: .4byte 0x0001601e
-_080215F0: .4byte 0x000160a4
-_080215F4: .4byte 0x000160a5
-_080215F8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues
-
- thumb_func_start atk48_playstatchangeanimation
-atk48_playstatchangeanimation: @ 80215FC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r7, 0
- movs r0, 0
- mov r8, r0
- movs r3, 0
- ldr r5, _08021670 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- str r3, [sp]
- bl sub_8015150
- ldr r2, _08021674 @ =gActiveBank
- strb r0, [r2]
- ldr r0, [r5]
- ldrb r4, [r0, 0x2]
- ldrb r1, [r0, 0x3]
- movs r0, 0x1
- ands r0, r1
- ldr r3, [sp]
- cmp r0, 0
- beq _08021710
- movs r0, 0x2
- ands r0, r1
- movs r1, 0x15
- cmp r0, 0
- beq _0802163C
- movs r1, 0x2D
-_0802163C:
- cmp r4, 0
- beq _080216E4
- movs r0, 0x1
- mov r10, r0
- ldr r0, _08021678 @ =gUnknown_02024A98
- mov r9, r0
- lsls r5, r1, 16
-_0802164A:
- adds r0, r4, 0
- mov r1, r10
- ands r0, r1
- cmp r0, 0
- beq _080216D6
- ldr r0, _08021670 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r1, [r0, 0x3]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0802167C
- ldr r0, _08021674 @ =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7, r0
- b _080216C4
- .align 2, 0
-_08021670: .4byte gBattlescriptCurrInstr
-_08021674: .4byte gActiveBank
-_08021678: .4byte gUnknown_02024A98
-_0802167C:
- ldr r6, _08021700 @ =gActiveBank
- ldrb r0, [r6]
- str r3, [sp]
- bl GetBankIdentity
- mov r1, r10
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08021704 @ =gSideTimer
- adds r0, r1
- ldrb r0, [r0, 0x2]
- ldr r3, [sp]
- cmp r0, 0
- bne _080216D6
- ldr r0, _08021708 @ =gBattleMons
- ldrb r2, [r6]
- movs r1, 0x58
- muls r2, r1
- adds r0, r2, r0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1D
- beq _080216D6
- cmp r0, 0x49
- beq _080216D6
- cmp r0, 0x33
- bne _080216BA
- cmp r7, 0x6
- beq _080216D6
-_080216BA:
- cmp r0, 0x34
- bne _080216C2
- cmp r7, 0x1
- beq _080216D6
-_080216C2:
- adds r0, r7, r2
-_080216C4:
- add r0, r9
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- ble _080216D6
- lsrs r0, r5, 16
- mov r8, r0
- adds r3, 0x1
-_080216D6:
- lsrs r4, 1
- movs r1, 0x80
- lsls r1, 9
- adds r5, r1
- adds r7, 0x1
- cmp r4, 0
- bne _0802164A
-_080216E4:
- ldr r0, _0802170C @ =gBattlescriptCurrInstr
- mov r9, r0
- cmp r3, 0x1
- ble _08021772
- ldr r0, [r0]
- ldrb r1, [r0, 0x3]
- movs r0, 0x2
- ands r0, r1
- movs r1, 0x39
- mov r8, r1
- cmp r0, 0
- beq _08021772
- movs r0, 0x3A
- b _08021770
- .align 2, 0
-_08021700: .4byte gActiveBank
-_08021704: .4byte gSideTimer
-_08021708: .4byte gBattleMons
-_0802170C: .4byte gBattlescriptCurrInstr
-_08021710:
- movs r0, 0x2
- ands r0, r1
- movs r1, 0xE
- cmp r0, 0
- beq _0802171C
- movs r1, 0x26
-_0802171C:
- mov r9, r5
- cmp r4, 0
- beq _08021758
- ldr r6, _0802178C @ =gUnknown_02024A98
- adds r5, r2, 0
- lsls r2, r1, 16
-_08021728:
- movs r0, 0x1
- ands r0, r4
- cmp r0, 0
- beq _0802174A
- ldrb r1, [r5]
- movs r0, 0x58
- muls r0, r1
- adds r0, r7, r0
- adds r0, r6
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0xB
- bgt _0802174A
- lsrs r1, r2, 16
- mov r8, r1
- adds r3, 0x1
-_0802174A:
- lsrs r4, 1
- movs r0, 0x80
- lsls r0, 9
- adds r2, r0
- adds r7, 0x1
- cmp r4, 0
- bne _08021728
-_08021758:
- cmp r3, 0x1
- ble _08021772
- mov r1, r9
- ldr r0, [r1]
- ldrb r1, [r0, 0x3]
- movs r0, 0x2
- ands r0, r1
- movs r1, 0x37
- mov r8, r1
- cmp r0, 0
- beq _08021772
- movs r0, 0x38
-_08021770:
- mov r8, r0
-_08021772:
- mov r1, r9
- ldr r2, [r1]
- ldrb r1, [r2, 0x3]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08021790
- cmp r3, 0x1
- bgt _08021790
- adds r0, r2, 0x4
- mov r1, r9
- b _080217E6
- .align 2, 0
-_0802178C: .4byte gUnknown_02024A98
-_08021790:
- cmp r3, 0
- beq _080217E0
- ldr r0, _080217D0 @ =0x02000000
- ldr r1, _080217D4 @ =0x000160dc
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- bne _080217E0
- movs r0, 0
- movs r1, 0x1
- mov r2, r8
- str r3, [sp]
- bl EmitBattleAnimation
- ldr r0, _080217D8 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r0, _080217DC @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r1, [r0, 0x3]
- movs r0, 0x4
- ands r0, r1
- ldr r3, [sp]
- cmp r0, 0
- beq _080217CC
- cmp r3, 0x1
- ble _080217CC
- movs r0, 0x1
- strb r0, [r4]
-_080217CC:
- ldr r1, _080217DC @ =gBattlescriptCurrInstr
- b _080217E2
- .align 2, 0
-_080217D0: .4byte 0x02000000
-_080217D4: .4byte 0x000160dc
-_080217D8: .4byte gActiveBank
-_080217DC: .4byte gBattlescriptCurrInstr
-_080217E0:
- mov r1, r9
-_080217E2:
- ldr r0, [r1]
- adds r0, 0x4
-_080217E6:
- str r0, [r1]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk48_playstatchangeanimation
-
- thumb_func_start sub_80217F8
-sub_80217F8: @ 80217F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- movs r0, 0
- mov r10, r0
- ldr r0, _08021834 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- str r1, [sp, 0x10]
- ldrb r0, [r0, 0x2]
- str r0, [sp, 0x14]
- ldr r1, _08021838 @ =gBattleMons
- ldr r0, _0802183C @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, r0, r1
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _08021844
- ldr r1, _08021840 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0, 0x7]
- b _0802184E
- .align 2, 0
-_08021834: .4byte gBattlescriptCurrInstr
-_08021838: .4byte gBattleMons
-_0802183C: .4byte gBankAttacker
-_08021840: .4byte gEnigmaBerries
-_08021844:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r0, 24
-_0802184E:
- str r0, [sp, 0x8]
- ldr r0, _0802186C @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 1
- ldr r0, _08021870 @ =0x020160e8
- adds r1, r0
- str r1, [sp, 0xC]
- subs r0, 0xCC
- ldrb r0, [r0]
- cmp r0, 0
- beq _080218C0
- movs r2, 0x3F
- ands r2, r0
- str r2, [sp, 0x4]
- b _080218D2
- .align 2, 0
-_0802186C: .4byte gBankAttacker
-_08021870: .4byte 0x020160e8
-_08021874:
- strb r2, [r7]
- ldr r0, [r5]
- orrs r0, r6
- str r0, [r5]
- ldr r0, _080218AC @ =0x02000000
- ldr r3, _080218B0 @ =0x0001600c
- adds r0, r3
- strb r4, [r0]
- bl sub_8020B54
- ldr r2, _080218B4 @ =gUnknown_081D6BBC
- mov r4, r8
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- bl b_movescr_stack_push
- ldr r1, _080218B8 @ =gBattlescriptCurrInstr
- ldr r0, _080218BC @ =gUnknown_081D9B2D
- bl _0802229C
- .align 2, 0
-_080218AC: .4byte 0x02000000
-_080218B0: .4byte 0x0001600c
-_080218B4: .4byte gUnknown_081D6BBC
-_080218B8: .4byte gBattlescriptCurrInstr
-_080218BC: .4byte gUnknown_081D9B2D
-_080218C0:
- ldr r2, _080218D8 @ =gBattleMoves
- ldr r0, _080218DC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- str r0, [sp, 0x4]
-_080218D2:
- ldr r5, _080218E0 @ =0x02000000
- mov r12, r5
- b _080218EE
- .align 2, 0
-_080218D8: .4byte gBattleMoves
-_080218DC: .4byte gCurrentMove
-_080218E0: .4byte 0x02000000
-_080218E4:
- mov r0, r10
- cmp r0, 0
- beq _080218EE
- bl _08022286
-_080218EE:
- ldr r0, _08021908 @ =0x0001600c
- add r0, r12
- ldrb r0, [r0]
- cmp r0, 0x11
- bls _080218FC
- bl _0802224E
-_080218FC:
- lsls r0, 2
- ldr r1, _0802190C @ =_08021910
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08021908: .4byte 0x0001600c
-_0802190C: .4byte _08021910
- .align 2, 0
-_08021910:
- .4byte _08021958
- .4byte _08021A34
- .4byte _08021AF0
- .4byte _08021B20
- .4byte _08021B44
- .4byte _08021B78
- .4byte _08021B9C
- .4byte _08021C40
- .4byte _08021C78
- .4byte _08021CA8
- .4byte _08021CCC
- .4byte _08021D18
- .4byte _08021DAC
- .4byte _08021E30
- .4byte _08021E70
- .4byte _08022068
- .4byte _080221C0
- .4byte _0802224E
-_08021958:
- ldr r5, _08021A08 @ =gBattleMons
- ldr r2, _08021A0C @ =gBankTarget
- ldrb r4, [r2]
- movs r6, 0x58
- adds r3, r4, 0
- muls r3, r6
- adds r0, r5, 0
- adds r0, 0x50
- adds r0, r3, r0
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 16
- ands r1, r0
- cmp r1, 0
- beq _080219FE
- adds r0, r3, r5
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _080219FE
- ldr r0, _08021A10 @ =gBankAttacker
- ldrb r1, [r0]
- cmp r1, r4
- beq _080219FE
- adds r0, r1, 0
- bl GetBankSide
- adds r4, r0, 0
- ldr r1, _08021A0C @ =gBankTarget
- ldrb r0, [r1]
- bl GetBankSide
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _080219FE
- ldr r0, _08021A14 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _080219FE
- ldr r2, _08021A18 @ =gProtectStructs
- ldr r4, _08021A0C @ =gBankTarget
- ldrb r3, [r4]
- lsls r1, r3, 4
- adds r0, r2, 0x4
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _080219C8
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _080219FE
-_080219C8:
- ldr r2, _08021A1C @ =gBattleMoves
- ldr r0, _08021A20 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _080219FE
- adds r0, r3, 0
- muls r0, r6
- adds r1, r0, r5
- ldrb r2, [r1, 0x19]
- movs r0, 0x19
- ldrsb r0, [r1, r0]
- cmp r0, 0xB
- bgt _080219FE
- adds r0, r2, 0x1
- strb r0, [r1, 0x19]
- bl b_movescr_stack_push_cursor
- ldr r1, _08021A24 @ =gBattlescriptCurrInstr
- ldr r0, _08021A28 @ =gUnknown_081D9132
- str r0, [r1]
- movs r5, 0x1
- mov r10, r5
-_080219FE:
- ldr r2, _08021A2C @ =0x02000000
- ldr r0, _08021A30 @ =0x0001600c
- adds r1, r2, r0
- b _08021E00
- .align 2, 0
-_08021A08: .4byte gBattleMons
-_08021A0C: .4byte gBankTarget
-_08021A10: .4byte gBankAttacker
-_08021A14: .4byte gBattleMoveFlags
-_08021A18: .4byte gProtectStructs
-_08021A1C: .4byte gBattleMoves
-_08021A20: .4byte gCurrentMove
-_08021A24: .4byte gBattlescriptCurrInstr
-_08021A28: .4byte gUnknown_081D9132
-_08021A2C: .4byte 0x02000000
-_08021A30: .4byte 0x0001600c
-_08021A34:
- ldr r2, _08021AD0 @ =gBattleMons
- ldr r1, _08021AD4 @ =gBankTarget
- ldrb r4, [r1]
- movs r3, 0x58
- mov r12, r3
- mov r3, r12
- muls r3, r4
- adds r7, r2, 0
- adds r7, 0x4C
- adds r6, r3, r7
- ldr r5, [r6]
- movs r0, 0x20
- ands r0, r5
- cmp r0, 0
- bne _08021A54
- b _08021DFA
-_08021A54:
- adds r0, r3, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _08021A5E
- b _08021DFA
-_08021A5E:
- ldr r0, _08021AD8 @ =gBankAttacker
- ldrb r0, [r0]
- cmp r0, r4
- bne _08021A68
- b _08021DFA
-_08021A68:
- ldr r0, _08021ADC @ =gSpecialStatuses
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 2
- adds r0, 0xC
- adds r1, r0
- ldr r0, [r1]
- cmp r0, 0
- bne _08021A7C
- b _08021DFA
-_08021A7C:
- ldr r0, _08021AE0 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08021A8A
- b _08021DFA
-_08021A8A:
- ldr r4, [sp, 0x4]
- cmp r4, 0xA
- beq _08021A92
- b _08021DFA
-_08021A92:
- movs r0, 0x21
- negs r0, r0
- ands r5, r0
- str r5, [r6]
- ldr r4, _08021AE4 @ =gActiveBank
- ldr r5, _08021AD4 @ =gBankTarget
- ldrb r0, [r5]
- strb r0, [r4]
- ldrb r0, [r5]
- mov r1, r12
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- bl b_movescr_stack_push_cursor
- ldr r1, _08021AE8 @ =gBattlescriptCurrInstr
- ldr r0, _08021AEC @ =gUnknown_081D955D
- str r0, [r1]
- movs r2, 0x1
- mov r10, r2
- b _08021DFA
- .align 2, 0
-_08021AD0: .4byte gBattleMons
-_08021AD4: .4byte gBankTarget
-_08021AD8: .4byte gBankAttacker
-_08021ADC: .4byte gSpecialStatuses
-_08021AE0: .4byte gBattleMoveFlags
-_08021AE4: .4byte gActiveBank
-_08021AE8: .4byte gBattlescriptCurrInstr
-_08021AEC: .4byte gUnknown_081D955D
-_08021AF0:
- ldr r0, _08021B14 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x7
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08021B0C
- movs r4, 0x1
- mov r10, r4
-_08021B0C:
- ldr r2, _08021B18 @ =0x02000000
- ldr r5, _08021B1C @ =0x0001600c
- adds r1, r2, r5
- b _08021E00
- .align 2, 0
-_08021B14: .4byte gBankTarget
-_08021B18: .4byte 0x02000000
-_08021B1C: .4byte 0x0001600c
-_08021B20:
- ldr r0, _08021B40 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x4
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _08021B3A
- b _08021DFA
-_08021B3A:
- movs r0, 0x1
- mov r10, r0
- b _08021DFA
- .align 2, 0
-_08021B40: .4byte gBankTarget
-_08021B44:
- movs r0, 0
- str r0, [sp]
- movs r0, 0x5
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08021B68
- movs r4, 0x1
- mov r10, r4
- ldr r5, _08021B64 @ =0x02000000
- mov r12, r5
- b _0802224E
- .align 2, 0
-_08021B64: .4byte 0x02000000
-_08021B68:
- ldr r2, _08021B70 @ =0x02000000
- ldr r0, _08021B74 @ =0x0001600c
- adds r1, r2, r0
- b _08021E00
- .align 2, 0
-_08021B70: .4byte 0x02000000
-_08021B74: .4byte 0x0001600c
-_08021B78:
- ldr r0, _08021B98 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0
- str r0, [sp]
- movs r0, 0x8
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _08021B92
- b _08021DFA
-_08021B92:
- movs r1, 0x1
- mov r10, r1
- b _08021DFA
- .align 2, 0
-_08021B98: .4byte gBankAttacker
-_08021B9C:
- ldr r0, _08021C28 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _08021BE0
- ldr r4, [sp, 0x8]
- cmp r4, 0x1D
- bne _08021BE0
- ldr r0, _08021C2C @ =gUnknown_02024BE8
- ldrh r2, [r0]
- adds r7, r0, 0
- cmp r2, 0xA5
- beq _08021BE0
- ldr r5, [sp, 0xC]
- ldrh r1, [r5]
- cmp r1, 0
- beq _08021BC8
- ldr r0, _08021C30 @ =0x0000ffff
- cmp r1, r0
- bne _08021BE0
-_08021BC8:
- cmp r2, 0xE2
- bne _08021BDA
- ldr r0, _08021C34 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _08021BDA
- b _08022244
-_08021BDA:
- ldrh r0, [r7]
- ldr r1, [sp, 0xC]
- strh r0, [r1]
-_08021BE0:
- movs r4, 0
- ldr r2, _08021C38 @ =gBattleMons
- ldr r3, _08021C3C @ =gBankAttacker
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r2, 0xC
- adds r0, r2
- ldrh r0, [r0]
- ldr r5, [sp, 0xC]
- ldrh r1, [r5]
- mov r9, r3
- cmp r0, r1
- beq _08021C18
- mov r6, r9
- movs r3, 0x58
- adds r5, r1, 0
-_08021C02:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _08021C18
- lsls r0, r4, 1
- ldrb r1, [r6]
- muls r1, r3
- adds r0, r1
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, r5
- bne _08021C02
-_08021C18:
- cmp r4, 0x4
- beq _08021C1E
- b _08022244
-_08021C1E:
- movs r0, 0
- ldr r1, [sp, 0xC]
-_08021C22:
- strh r0, [r1]
- b _08022244
- .align 2, 0
-_08021C28: .4byte gHitMarker
-_08021C2C: .4byte gUnknown_02024BE8
-_08021C30: .4byte 0x0000ffff
-_08021C34: .4byte gBattleMoveFlags
-_08021C38: .4byte gBattleMons
-_08021C3C: .4byte gBankAttacker
-_08021C40:
- movs r4, 0
- ldr r0, _08021C6C @ =gNoOfAllBanks
- ldrb r2, [r0]
- cmp r4, r2
- blt _08021C4C
- b _08022244
-_08021C4C:
- movs r5, 0
- ldr r2, _08021C70 @ =0x020160f0
- ldr r3, _08021C74 @ =gBattleMons
-_08021C52:
- ldrh r1, [r2]
- cmp r1, 0
- beq _08021C5C
- strh r1, [r3, 0x2E]
- strh r5, [r2]
-_08021C5C:
- adds r2, 0x2
- adds r3, 0x58
- adds r4, 0x1
- ldrb r1, [r0]
- cmp r4, r1
- blt _08021C52
- b _08022244
- .align 2, 0
-_08021C6C: .4byte gNoOfAllBanks
-_08021C70: .4byte 0x020160f0
-_08021C74: .4byte gBattleMons
-_08021C78:
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl sub_801A02C
- lsls r0, 24
- cmp r0, 0
- beq _08021C98
- movs r2, 0x1
- mov r10, r2
- ldr r3, _08021C94 @ =0x02000000
- mov r12, r3
- b _0802224E
- .align 2, 0
-_08021C94: .4byte 0x02000000
-_08021C98:
- ldr r2, _08021CA0 @ =0x02000000
- ldr r4, _08021CA4 @ =0x0001600c
- adds r1, r2, r4
- b _08021E00
- .align 2, 0
-_08021CA0: .4byte 0x02000000
-_08021CA4: .4byte 0x0001600c
-_08021CA8:
- movs r0, 0x4
- movs r1, 0
- movs r2, 0
- bl sub_801A02C
- lsls r0, 24
- cmp r0, 0
- beq _08021CBC
- movs r5, 0x1
- mov r10, r5
-_08021CBC:
- ldr r2, _08021CC4 @ =0x02000000
- ldr r0, _08021CC8 @ =0x0001600c
- adds r1, r2, r0
- b _08021E00
- .align 2, 0
-_08021CC4: .4byte 0x02000000
-_08021CC8: .4byte 0x0001600c
-_08021CCC:
- ldr r1, _08021D04 @ =gStatuses3
- ldr r0, _08021D08 @ =gBankAttacker
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08021D0C @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _08021CE2
- b _08021DFA
-_08021CE2:
- ldr r0, _08021D10 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08021CF0
- b _08021DFA
-_08021CF0:
- ldr r4, _08021D14 @ =gActiveBank
- strb r2, [r4]
- movs r0, 0
- movs r1, 0x1
- bl EmitSpriteInvisibility
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08021DFA
- .align 2, 0
-_08021D04: .4byte gStatuses3
-_08021D08: .4byte gBankAttacker
-_08021D0C: .4byte 0x000400c0
-_08021D10: .4byte gHitMarker
-_08021D14: .4byte gActiveBank
-_08021D18:
- ldr r0, _08021D88 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _08021D44
- ldr r1, _08021D8C @ =gStatuses3
- ldr r0, _08021D90 @ =gBankAttacker
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08021D94 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _08021D44
- adds r0, r2, 0
- bl sub_8015660
- lsls r0, 24
- cmp r0, 0
- beq _08021D7E
-_08021D44:
- ldr r4, _08021D98 @ =gActiveBank
- ldr r5, _08021D90 @ =gBankAttacker
- ldrb r0, [r5]
- strb r0, [r4]
- movs r0, 0
- movs r1, 0
- bl EmitSpriteInvisibility
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, _08021D8C @ =gStatuses3
- ldrb r2, [r5]
- lsls r2, 2
- adds r2, r0
- ldr r0, [r2]
- ldr r1, _08021D9C @ =0xfffbff3f
- ands r0, r1
- str r0, [r2]
- ldr r2, _08021DA0 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
-_08021D7E:
- ldr r2, _08021DA4 @ =0x02000000
- ldr r4, _08021DA8 @ =0x0001600c
- adds r1, r2, r4
- b _08021E00
- .align 2, 0
-_08021D88: .4byte gBattleMoveFlags
-_08021D8C: .4byte gStatuses3
-_08021D90: .4byte gBankAttacker
-_08021D94: .4byte 0x000400c0
-_08021D98: .4byte gActiveBank
-_08021D9C: .4byte 0xfffbff3f
-_08021DA0: .4byte gSpecialStatuses
-_08021DA4: .4byte 0x02000000
-_08021DA8: .4byte 0x0001600c
-_08021DAC:
- ldr r2, _08021E0C @ =gSpecialStatuses
- ldr r1, _08021E10 @ =gBankTarget
- ldrb r3, [r1]
- lsls r4, r3, 2
- adds r0, r4, r3
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 29
- cmp r0, 0
- blt _08021DFA
- ldr r0, _08021E14 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r3, r0
- bcs _08021DFA
- ldr r5, _08021E18 @ =gStatuses3
- adds r0, r4, r5
- ldr r0, [r0]
- ldr r1, _08021E1C @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _08021DFA
- ldr r4, _08021E20 @ =gActiveBank
- strb r3, [r4]
- movs r0, 0
- movs r1, 0
- bl EmitSpriteInvisibility
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, _08021E10 @ =gBankTarget
- ldrb r2, [r0]
- lsls r2, 2
- adds r2, r5
- ldr r0, [r2]
- ldr r1, _08021E24 @ =0xfffbff3f
- ands r0, r1
- str r0, [r2]
-_08021DFA:
- ldr r2, _08021E28 @ =0x02000000
- ldr r3, _08021E2C @ =0x0001600c
- adds r1, r2, r3
-_08021E00:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- mov r12, r2
- b _0802224E
- .align 2, 0
-_08021E0C: .4byte gSpecialStatuses
-_08021E10: .4byte gBankTarget
-_08021E14: .4byte gNoOfAllBanks
-_08021E18: .4byte gStatuses3
-_08021E1C: .4byte 0x000400c0
-_08021E20: .4byte gActiveBank
-_08021E24: .4byte 0xfffbff3f
-_08021E28: .4byte 0x02000000
-_08021E2C: .4byte 0x0001600c
-_08021E30:
- movs r4, 0
- ldr r0, _08021E60 @ =gNoOfAllBanks
- ldrb r5, [r0]
- cmp r4, r5
- blt _08021E3C
- b _08022244
-_08021E3C:
- ldr r2, _08021E64 @ =gDisableStructs
- ldr r5, _08021E68 @ =0xfeffffff
- adds r3, r0, 0
- ldr r1, _08021E6C @ =gUnknown_02024AD0
-_08021E44:
- ldrb r0, [r2, 0xA]
- cmp r0, 0
- bne _08021E50
- ldr r0, [r1]
- ands r0, r5
- str r0, [r1]
-_08021E50:
- adds r2, 0x1C
- adds r1, 0x58
- adds r4, 0x1
- ldrb r0, [r3]
- cmp r4, r0
- blt _08021E44
- b _08022244
- .align 2, 0
-_08021E60: .4byte gNoOfAllBanks
-_08021E64: .4byte gDisableStructs
-_08021E68: .4byte 0xfeffffff
-_08021E6C: .4byte gUnknown_02024AD0
-_08021E70:
- ldr r1, _08021F2C @ =gHitMarker
- ldr r3, [r1]
- movs r0, 0x80
- lsls r0, 5
- ands r0, r3
- ldr r2, _08021F30 @ =gBankAttacker
- mov r9, r2
- adds r5, r1, 0
- cmp r0, 0
- beq _08021E9A
- ldr r0, _08021F34 @ =gActiveBank
- ldrb r2, [r2]
- strb r2, [r0]
- ldr r1, _08021F38 @ =gBankTarget
- ldrb r0, [r1]
- mov r4, r9
- strb r0, [r4]
- strb r2, [r1]
- ldr r0, _08021F3C @ =0xffffefff
- ands r3, r0
- str r3, [r5]
-_08021E9A:
- ldr r1, _08021F40 @ =gBattleMoves
- ldr r2, _08021F44 @ =gUnknown_02024BE8
- ldrh r3, [r2]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- mov r8, r1
- adds r7, r2, 0
- cmp r0, 0x7F
- bne _08021EBE
- ldr r0, _08021F48 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08021ECA
-_08021EBE:
- ldr r1, _08021F4C @ =gUnknown_02024C2C
- mov r2, r9
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- strh r3, [r0]
-_08021ECA:
- ldr r0, _08021F50 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _08021F54 @ =gBitTable
- mov r3, r9
- ldrb r4, [r3]
- lsls r0, r4, 2
- adds r0, r2
- ldr r3, [r0]
- ands r1, r3
- adds r6, r2, 0
- cmp r1, 0
- beq _08021EE4
- b _08022244
-_08021EE4:
- ldr r0, _08021F58 @ =0x000160a6
- add r0, r12
- ldrb r0, [r0]
- ands r0, r3
- cmp r0, 0
- beq _08021EF2
- b _08022244
-_08021EF2:
- ldrh r2, [r7]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0]
- cmp r0, 0x7F
- bne _08021F04
- b _08022244
-_08021F04:
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _08021F68
- ldr r1, _08021F5C @ =gLastUsedMove
- lsls r0, r4, 1
- adds r0, r1
- strh r2, [r0]
- ldr r0, _08021F60 @ =gUnknown_02024C4C
- mov r4, r9
- ldrb r1, [r4]
- lsls r1, 1
- adds r1, r0
- ldr r0, _08021F64 @ =gCurrentMove
- ldrh r0, [r0]
- strh r0, [r1]
- b _08021F82
- .align 2, 0
-_08021F2C: .4byte gHitMarker
-_08021F30: .4byte gBankAttacker
-_08021F34: .4byte gActiveBank
-_08021F38: .4byte gBankTarget
-_08021F3C: .4byte 0xffffefff
-_08021F40: .4byte gBattleMoves
-_08021F44: .4byte gUnknown_02024BE8
-_08021F48: .4byte gBattleMoveFlags
-_08021F4C: .4byte gUnknown_02024C2C
-_08021F50: .4byte gAbsentBankFlags
-_08021F54: .4byte gBitTable
-_08021F58: .4byte 0x000160a6
-_08021F5C: .4byte gLastUsedMove
-_08021F60: .4byte gUnknown_02024C4C
-_08021F64: .4byte gCurrentMove
-_08021F68:
- ldr r1, _08021FD0 @ =gLastUsedMove
- lsls r0, r4, 1
- adds r0, r1
- ldr r1, _08021FD4 @ =0x0000ffff
- strh r1, [r0]
- ldr r1, _08021FD8 @ =gUnknown_02024C4C
- mov r2, r9
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- movs r1, 0x1
- negs r1, r1
- strh r1, [r0]
-_08021F82:
- ldr r2, _08021FDC @ =gBankTarget
- ldrb r3, [r2]
- lsls r0, r3, 2
- adds r0, r6
- ldr r0, [r0]
- lsls r0, 28
- ldr r1, [r5]
- ands r1, r0
- cmp r1, 0
- bne _08021FA0
- ldr r0, _08021FE0 @ =gUnknown_02024C5C
- adds r0, r3, r0
- mov r3, r9
- ldrb r1, [r3]
- strb r1, [r0]
-_08021FA0:
- ldr r0, [r5]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _0802204C
- ldr r0, _08021FE4 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0802204C
- ldrh r2, [r7]
- ldr r0, _08021FD4 @ =0x0000ffff
- cmp r2, r0
- bne _08021FEC
- ldr r1, _08021FE8 @ =gMoveHitWith
- ldr r4, _08021FDC @ =gBankTarget
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- strh r2, [r0]
- b _08022244
- .align 2, 0
-_08021FD0: .4byte gLastUsedMove
-_08021FD4: .4byte 0x0000ffff
-_08021FD8: .4byte gUnknown_02024C4C
-_08021FDC: .4byte gBankTarget
-_08021FE0: .4byte gUnknown_02024C5C
-_08021FE4: .4byte gBattleMoveFlags
-_08021FE8: .4byte gMoveHitWith
-_08021FEC:
- ldr r0, _08022014 @ =gMoveHitWith
- ldr r5, _08022018 @ =gBankTarget
- ldrb r1, [r5]
- lsls r1, 1
- adds r1, r0
- ldr r4, _0802201C @ =gCurrentMove
- ldrh r0, [r4]
- strh r0, [r1]
- ldr r0, _08022020 @ =0x0001601c
- add r0, r12
- ldrb r3, [r0]
- cmp r3, 0
- beq _08022028
- ldr r0, _08022024 @ =gUnknown_02024C44
- ldrb r1, [r5]
- lsls r1, 1
- adds r1, r0
- movs r0, 0x3F
- ands r0, r3
- b _08021C22
- .align 2, 0
-_08022014: .4byte gMoveHitWith
-_08022018: .4byte gBankTarget
-_0802201C: .4byte gCurrentMove
-_08022020: .4byte 0x0001601c
-_08022024: .4byte gUnknown_02024C44
-_08022028:
- ldr r0, _08022044 @ =gUnknown_02024C44
- ldr r1, _08022048 @ =gBankTarget
- ldrb r2, [r1]
- lsls r2, 1
- adds r2, r0
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0, 0x2]
- strh r0, [r2]
- b _08022244
- .align 2, 0
-_08022044: .4byte gUnknown_02024C44
-_08022048: .4byte gBankTarget
-_0802204C:
- ldr r0, _0802205C @ =gMoveHitWith
- ldr r2, _08022060 @ =gBankTarget
- ldrb r1, [r2]
- lsls r1, 1
- adds r1, r0
- ldr r0, _08022064 @ =0x0000ffff
- b _08021C22
- .align 2, 0
-_0802205C: .4byte gMoveHitWith
-_08022060: .4byte gBankTarget
-_08022064: .4byte 0x0000ffff
-_08022068:
- ldr r0, _0802212C @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r6, _08022130 @ =gBitTable
- ldr r2, _08022134 @ =gBankAttacker
- ldrb r5, [r2]
- lsls r0, r5, 2
- adds r0, r6
- ldr r4, [r0]
- ands r1, r4
- mov r9, r2
- cmp r1, 0
- beq _08022082
- b _08022244
-_08022082:
- ldr r0, _08022138 @ =0x000160a6
- add r0, r12
- ldrb r0, [r0]
- ands r0, r4
- cmp r0, 0
- beq _08022090
- b _08022244
-_08022090:
- ldr r1, _0802213C @ =gBattleMoves
- ldr r4, _08022140 @ =gUnknown_02024BE8
- ldrh r3, [r4]
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x8]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0802215C
- ldr r0, _08022144 @ =gHitMarker
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 18
- ands r0, r1
- cmp r0, 0
- beq _0802215C
- ldr r2, _08022148 @ =gBankTarget
- ldrb r0, [r2]
- cmp r5, r0
- bne _080220C0
- b _08022244
-_080220C0:
- adds r2, r0, 0
- lsls r0, r2, 2
- adds r0, r6
- ldr r0, [r0]
- lsls r0, 28
- ands r1, r0
- cmp r1, 0
- bne _0802215C
- ldr r0, _0802214C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _0802215C
- lsls r0, r2, 1
- ldr r5, _08022150 @ =0x000160ac
- adds r0, r5
- add r0, r12
- strb r3, [r0]
- ldr r0, _08022148 @ =gBankTarget
- ldrb r1, [r0]
- lsls r1, 1
- ldr r2, _08022154 @ =0x000160ad
- adds r1, r2
- add r1, r12
- ldrh r0, [r4]
- lsrs r0, 8
- strb r0, [r1]
- ldr r3, _08022148 @ =gBankTarget
- ldrb r2, [r3]
- lsls r2, 2
- mov r5, r9
- ldrb r0, [r5]
- lsrs r0, 1
- lsls r0, 1
- ldr r1, _08022158 @ =0x00016100
- adds r0, r1
- adds r2, r0
- add r2, r12
- ldrh r0, [r4]
- strb r0, [r2]
- ldrb r2, [r3]
- lsls r2, 2
- ldrb r0, [r5]
- lsrs r0, 1
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- adds r2, r0
- add r2, r12
- ldrh r0, [r4]
- lsrs r0, 8
- strb r0, [r2]
- b _08022244
- .align 2, 0
-_0802212C: .4byte gAbsentBankFlags
-_08022130: .4byte gBitTable
-_08022134: .4byte gBankAttacker
-_08022138: .4byte 0x000160a6
-_0802213C: .4byte gBattleMoves
-_08022140: .4byte gUnknown_02024BE8
-_08022144: .4byte gHitMarker
-_08022148: .4byte gBankTarget
-_0802214C: .4byte gBattleMoveFlags
-_08022150: .4byte 0x000160ac
-_08022154: .4byte 0x000160ad
-_08022158: .4byte 0x00016100
-_0802215C:
- mov r1, r9
- ldrb r0, [r1]
- ldr r2, _080221B4 @ =gBankTarget
- ldrb r2, [r2]
- cmp r0, r2
- beq _08022244
- ldr r3, _080221B4 @ =gBankTarget
- ldrb r0, [r3]
- lsls r0, 1
- ldr r4, _080221B8 @ =0x000160ac
- adds r0, r4
- add r0, r12
- movs r3, 0
- strb r3, [r0]
- ldr r5, _080221B4 @ =gBankTarget
- ldrb r0, [r5]
- lsls r0, 1
- ldr r1, _080221BC @ =0x000160ad
- adds r0, r1
- add r0, r12
- strb r3, [r0]
- ldrb r2, [r5]
- lsls r2, 2
- mov r4, r9
- ldrb r0, [r4]
- lsrs r0, 1
- lsls r0, 1
- adds r1, 0x53
- adds r0, r1
- adds r2, r0
- add r2, r12
- strb r3, [r2]
- ldrb r2, [r5]
- lsls r2, 2
- ldrb r0, [r4]
- lsrs r0, 1
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- adds r2, r0
- add r2, r12
- strb r3, [r2]
- b _08022244
- .align 2, 0
-_080221B4: .4byte gBankTarget
-_080221B8: .4byte 0x000160ac
-_080221BC: .4byte 0x000160ad
-_080221C0:
- ldr r5, _080222B0 @ =gHitMarker
- ldr r2, [r5]
- movs r0, 0x80
- lsls r0, 12
- ands r0, r2
- cmp r0, 0
- bne _08022244
- ldr r0, _080222B4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08022244
- ldr r1, _080222B8 @ =gProtectStructs
- ldr r0, _080222BC @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- cmp r0, 0
- blt _08022244
- ldr r0, _080222C0 @ =gBattleMoves
- mov r9, r0
- ldr r1, _080222C4 @ =gCurrentMove
- mov r8, r1
- ldrh r0, [r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- add r1, r9
- ldrb r0, [r1, 0x6]
- cmp r0, 0x8
- bne _08022244
- movs r6, 0x80
- lsls r6, 2
- adds r4, r6, 0
- ands r4, r2
- cmp r4, 0
- bne _08022244
- ldr r7, _080222C8 @ =gBankTarget
- ldrb r0, [r7]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _080222CC @ =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _0802223A
- bl _08021874
-_0802223A:
- ldr r0, [r5]
- orrs r0, r6
- str r0, [r5]
- ldr r2, _080222D0 @ =0x02000000
- mov r12, r2
-_08022244:
- ldr r1, _080222D4 @ =0x0001600c
- add r1, r12
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0802224E:
- ldr r3, [sp, 0x10]
- cmp r3, 0x1
- bne _08022262
- mov r4, r10
- cmp r4, 0
- bne _08022262
- ldr r1, _080222D4 @ =0x0001600c
- add r1, r12
- movs r0, 0x11
- strb r0, [r1]
-_08022262:
- ldr r5, [sp, 0x10]
- cmp r5, 0x2
- bne _08022278
- ldr r1, _080222D4 @ =0x0001600c
- add r1, r12
- ldr r0, [sp, 0x14]
- ldrb r2, [r1]
- cmp r0, r2
- bne _08022278
- movs r0, 0x11
- strb r0, [r1]
-_08022278:
- ldr r0, _080222D4 @ =0x0001600c
- add r0, r12
- ldrb r0, [r0]
- cmp r0, 0x11
- beq _08022286
- bl _080218E4
-_08022286:
- ldr r0, _080222D4 @ =0x0001600c
- add r0, r12
- ldrb r0, [r0]
- cmp r0, 0x11
- bne _0802229E
- mov r3, r10
- cmp r3, 0
- bne _0802229E
- ldr r1, _080222D8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
-_0802229C:
- str r0, [r1]
-_0802229E:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080222B0: .4byte gHitMarker
-_080222B4: .4byte gBattleTypeFlags
-_080222B8: .4byte gProtectStructs
-_080222BC: .4byte gBankAttacker
-_080222C0: .4byte gBattleMoves
-_080222C4: .4byte gCurrentMove
-_080222C8: .4byte gBankTarget
-_080222CC: .4byte gBattleMons
-_080222D0: .4byte 0x02000000
-_080222D4: .4byte 0x0001600c
-_080222D8: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80217F8
-
- thumb_func_start atk4A_damageflags
-atk4A_damageflags: @ 80222DC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r4, 0
- movs r5, 0
- ldr r2, _08022340 @ =gBattleMoves
- ldr r0, _08022344 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- mov r8, r0
- ldr r2, _08022348 @ =gBattleMons
- ldr r3, _0802234C @ =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- mov r12, r2
- adds r7, r3, 0
- cmp r0, 0x1A
- bne _08022370
- mov r1, r8
- cmp r1, 0x4
- bne _08022370
- ldr r3, _08022350 @ =gLastUsedAbility
- strb r0, [r3]
- ldr r2, _08022354 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x9
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08022358 @ =gMoveHitWith
- ldrb r0, [r7]
- lsls r0, 1
- adds r0, r1
- strh r4, [r0]
- ldr r0, _0802235C @ =gBattleCommunication
- mov r2, r8
- strb r2, [r0, 0x6]
- ldrb r0, [r7]
- ldrb r1, [r3]
- bl RecordAbilityBattle
- b _08022452
- .align 2, 0
-_08022340: .4byte gBattleMoves
-_08022344: .4byte gCurrentMove
-_08022348: .4byte gBattleMons
-_0802234C: .4byte gBankTarget
-_08022350: .4byte gLastUsedAbility
-_08022354: .4byte gBattleMoveFlags
-_08022358: .4byte gMoveHitWith
-_0802235C: .4byte gBattleCommunication
-_08022360:
- ldr r0, _0802236C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x8
- orrs r1, r2
- strb r1, [r0]
- b _08022452
- .align 2, 0
-_0802236C: .4byte gBattleMoveFlags
-_08022370:
- ldr r1, _0802237C @ =gTypeEffectiveness
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r6, r1, 0
- b _08022432
- .align 2, 0
-_0802237C: .4byte gTypeEffectiveness
-_08022380:
- adds r0, r5, r6
- ldrb r0, [r0]
- cmp r0, r8
- bne _0802242C
- adds r2, r5, 0x1
- adds r3, r2, r6
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- add r0, r12
- adds r0, 0x21
- ldrb r1, [r3]
- adds r3, r2, 0
- ldrb r0, [r0]
- cmp r1, r0
- bne _080223BE
- adds r0, r5, 0x2
- adds r0, r6
- ldrb r1, [r0]
- cmp r1, 0
- beq _08022360
- cmp r1, 0x5
- bne _080223B2
- movs r0, 0x4
- orrs r4, r0
-_080223B2:
- cmp r1, 0x14
- bne _080223BE
- movs r0, 0x2
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080223BE:
- adds r2, r3, r6
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- add r0, r12
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0802242C
- adds r0, 0x21
- ldrb r1, [r0]
- cmp r1, r2
- beq _080223E6
- adds r0, r5, 0x2
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0
- beq _08022360
-_080223E6:
- cmp r1, r2
- beq _080223FC
- adds r0, r5, 0x2
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0x5
- bne _080223FC
- movs r0, 0x4
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_080223FC:
- adds r2, r3, r6
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- add r0, r12
- adds r1, r0, 0
- adds r1, 0x22
- ldrb r2, [r2]
- ldrb r1, [r1]
- cmp r2, r1
- bne _0802242C
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, r2
- beq _0802242C
- adds r0, r5, 0x2
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0x14
- bne _0802242C
- movs r0, 0x2
- orrs r4, r0
- lsls r0, r4, 24
- lsrs r4, r0, 24
-_0802242C:
- adds r5, 0x3
- adds r0, r5, r6
- ldrb r0, [r0]
-_08022432:
- cmp r0, 0xFF
- beq _08022452
- cmp r0, 0xFE
- bne _08022380
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- mov r1, r12
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 22
- ands r0, r1
- cmp r0, 0
- beq _0802242C
-_08022452:
- ldr r2, _08022500 @ =gBattleMons
- ldr r0, _08022504 @ =gBankTarget
- mov r8, r0
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x20
- ldrb r6, [r0]
- cmp r6, 0x19
- bne _080224CE
- movs r5, 0x29
- ands r5, r4
- cmp r5, 0
- bne _080224CE
- ldr r0, _08022508 @ =gBankAttacker
- ldrb r0, [r0]
- ldr r7, _0802250C @ =gCurrentMove
- ldrh r1, [r7]
- bl move_weather_interaction
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bne _080224CE
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _08022494
- movs r0, 0x6
- ands r4, r0
- cmp r4, 0x6
- bne _080224CE
-_08022494:
- ldr r2, _08022510 @ =gBattleMoves
- ldrh r1, [r7]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _080224CE
- ldr r3, _08022514 @ =gLastUsedAbility
- strb r6, [r3]
- ldr r2, _08022518 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0802251C @ =gMoveHitWith
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r1
- strh r5, [r0]
- ldr r1, _08022520 @ =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x6]
- ldrb r0, [r2]
- ldrb r1, [r3]
- bl RecordAbilityBattle
-_080224CE:
- ldr r0, _08022518 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _080224EC
- ldr r2, _08022524 @ =gProtectStructs
- ldr r0, _08022508 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 4
- adds r1, r2
- ldrb r0, [r1, 0x1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1, 0x1]
-_080224EC:
- ldr r1, _08022528 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08022500: .4byte gBattleMons
-_08022504: .4byte gBankTarget
-_08022508: .4byte gBankAttacker
-_0802250C: .4byte gCurrentMove
-_08022510: .4byte gBattleMoves
-_08022514: .4byte gLastUsedAbility
-_08022518: .4byte gBattleMoveFlags
-_0802251C: .4byte gMoveHitWith
-_08022520: .4byte gBattleCommunication
-_08022524: .4byte gProtectStructs
-_08022528: .4byte gBattlescriptCurrInstr
- thumb_func_end atk4A_damageflags
-
- thumb_func_start atk4B_cmd4b
-atk4B_cmd4b: @ 802252C
- push {r4,lr}
- ldr r4, _08022568 @ =gActiveBank
- ldr r0, _0802256C @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r2, _08022570 @ =gHitMarker
- ldr r1, _08022574 @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- ands r0, r1
- cmp r0, 0
- bne _0802255A
- movs r0, 0
- movs r1, 0
- bl dp01_build_cmdbuf_x06_a
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0802255A:
- ldr r1, _08022578 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08022568: .4byte gActiveBank
-_0802256C: .4byte gBankAttacker
-_08022570: .4byte gHitMarker
-_08022574: .4byte gBitTable
-_08022578: .4byte gBattlescriptCurrInstr
- thumb_func_end atk4B_cmd4b
-
- thumb_func_start atk4C_switch1
-atk4C_switch1: @ 802257C
- push {r4-r6,lr}
- ldr r0, _080225D4 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _080225CC
- ldr r5, _080225D8 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _080225DC @ =gActiveBank
- strb r0, [r4]
- ldr r3, _080225E0 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r1, r0, 1
- adds r1, r3
- ldr r2, _080225E4 @ =0x02000000
- ldr r6, _080225E8 @ =0x00016068
- adds r0, r6
- adds r0, r2
- ldrb r0, [r0]
- strh r0, [r1]
- ldr r1, _080225EC @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0]
- movs r0, 0
- movs r1, 0
- bl EmitGetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
-_080225CC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080225D4: .4byte gBattleExecBuffer
-_080225D8: .4byte gBattlescriptCurrInstr
-_080225DC: .4byte gActiveBank
-_080225E0: .4byte gBattlePartyID
-_080225E4: .4byte 0x02000000
-_080225E8: .4byte 0x00016068
-_080225EC: .4byte gBitTable
- thumb_func_end atk4C_switch1
-
- thumb_func_start sub_80225F0
-sub_80225F0: @ 80225F0
- push {r4-r7,lr}
- sub sp, 0x58
- ldr r0, _0802274C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _080225FE
- b _08022744
-_080225FE:
- ldr r0, _08022750 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _08022754 @ =gActiveBank
- strb r0, [r4]
- ldr r6, _08022758 @ =gBattleMons
- ldrb r0, [r4]
- movs r5, 0x58
- adds r1, r0, 0
- muls r1, r5
- adds r1, r6
- mov r0, sp
- movs r2, 0x58
- bl memcpy
- ldrb r0, [r4]
- muls r0, r5
- adds r3, r0, r6
- movs r2, 0
- ldr r5, _0802275C @ =gBattleBufferB
- adds r7, r4, 0
-_0802262C:
- adds r0, r3, r2
- ldrb r1, [r4]
- lsls r1, 9
- adds r1, 0x4
- adds r1, r2, r1
- adds r1, r5
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x57
- bls _0802262C
- ldr r4, _08022758 @ =gBattleMons
- ldrb r0, [r7]
- movs r6, 0x58
- adds r2, r0, 0
- muls r2, r6
- adds r2, r4
- ldr r3, _08022760 @ =gBaseStats
- ldrh r1, [r2]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x6]
- adds r2, 0x21
- strb r0, [r2]
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r6
- adds r1, r4
- ldrh r2, [r1]
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x7]
- adds r1, 0x22
- strb r0, [r1]
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r6
- adds r1, r4
- ldrh r0, [r1]
- ldrb r1, [r1, 0x17]
- lsrs r1, 7
- bl GetAbilityBySpecies
- ldrb r1, [r7]
- muls r1, r6
- adds r1, r4
- adds r1, 0x20
- strb r0, [r1]
- ldrb r0, [r7]
- bl GetBankSide
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _08022764 @ =gWishFutureKnock
- adds r0, 0x29
- adds r0, r2, r0
- ldrb r1, [r0]
- ldr r3, _08022768 @ =gBitTable
- ldr r2, _0802276C @ =gBattlePartyID
- ldrb r5, [r7]
- lsls r0, r5, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ands r1, r0
- mov r12, r4
- cmp r1, 0
- beq _080226CA
- adds r0, r5, 0
- muls r0, r6
- add r0, r12
- movs r1, 0
- strh r1, [r0, 0x2E]
-_080226CA:
- ldr r2, _08022770 @ =gBattleMoves
- ldr r0, _08022774 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x7F
- bne _08022710
- movs r2, 0
- adds r4, r7, 0
- movs r6, 0x58
- mov r5, r12
- adds r5, 0x18
- add r3, sp, 0x18
-_080226EA:
- ldrb r0, [r4]
- adds r1, r0, 0
- muls r1, r6
- adds r1, r2, r1
- adds r1, r5
- adds r0, r3, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0x7
- ble _080226EA
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- mov r1, r12
- adds r1, 0x50
- adds r0, r1
- ldr r1, [sp, 0x50]
- str r1, [r0]
-_08022710:
- bl SwitchInClearStructs
- ldr r0, _08022778 @ =0x02000000
- ldr r3, _08022754 @ =gActiveBank
- ldrb r2, [r3]
- ldr r1, _0802277C @ =0x00016003
- adds r0, r1
- strb r2, [r0]
- ldr r1, _08022780 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x7
- strb r0, [r1, 0x1]
- strb r2, [r1, 0x2]
- ldr r2, _0802276C @ =gBattlePartyID
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _08022750 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08022744:
- add sp, 0x58
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802274C: .4byte gBattleExecBuffer
-_08022750: .4byte gBattlescriptCurrInstr
-_08022754: .4byte gActiveBank
-_08022758: .4byte gBattleMons
-_0802275C: .4byte gBattleBufferB
-_08022760: .4byte gBaseStats
-_08022764: .4byte gWishFutureKnock
-_08022768: .4byte gBitTable
-_0802276C: .4byte gBattlePartyID
-_08022770: .4byte gBattleMoves
-_08022774: .4byte gCurrentMove
-_08022778: .4byte 0x02000000
-_0802277C: .4byte 0x00016003
-_08022780: .4byte gBattleTextBuff1
- thumb_func_end sub_80225F0
-
- thumb_func_start sub_8022784
-sub_8022784: @ 8022784
- push {r4,r5,lr}
- ldr r0, _0802280C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08022806
- ldr r0, _08022810 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _08022814 @ =gActiveBank
- strb r0, [r4]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080227D0
- ldr r0, _08022818 @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _0802281C @ =0x00000902
- ands r0, r1
- cmp r0, 0
- bne _080227D0
- ldr r2, _08022820 @ =gBattleMons
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl GetNationalPokedexFlag
-_080227D0:
- ldr r2, _08022824 @ =gAbsentBankFlags
- ldr r1, _08022828 @ =gBitTable
- ldr r5, _08022814 @ =gActiveBank
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- ldrb r0, [r2]
- bics r0, r1
- strb r0, [r2]
- ldr r1, _0802282C @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrb r1, [r0]
- ldr r4, _08022810 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r2, [r0, 0x2]
- movs r0, 0
- bl sub_800C704
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
-_08022806:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802280C: .4byte gBattleExecBuffer
-_08022810: .4byte gBattlescriptCurrInstr
-_08022814: .4byte gActiveBank
-_08022818: .4byte gBattleTypeFlags
-_0802281C: .4byte 0x00000902
-_08022820: .4byte gBattleMons
-_08022824: .4byte gAbsentBankFlags
-_08022828: .4byte gBitTable
-_0802282C: .4byte gBattlePartyID
- thumb_func_end sub_8022784
-
- thumb_func_start sub_8022830
-sub_8022830: @ 8022830
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, _08022894 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- movs r0, 0x7F
- ands r0, r1
- bl sub_8015150
- ldr r3, _08022898 @ =gActiveBank
- strb r0, [r3]
- ldr r2, [r4]
- ldrb r1, [r2, 0x1]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080228A8
- ldr r1, _0802289C @ =gBattleMons
- ldrb r3, [r3]
- movs r0, 0x58
- muls r0, r3
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080228A0 @ =0x0400e000
- ands r0, r1
- cmp r0, 0
- bne _0802287C
- ldr r1, _080228A4 @ =gStatuses3
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 3
- ands r0, r1
- cmp r0, 0
- beq _080228A8
-_0802287C:
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08022A2C
- .align 2, 0
-_08022894: .4byte gBattlescriptCurrInstr
-_08022898: .4byte gActiveBank
-_0802289C: .4byte gBattleMons
-_080228A0: .4byte 0x0400e000
-_080228A4: .4byte gStatuses3
-_080228A8:
- ldr r5, _08022934 @ =gBattleTypeFlags
- ldrh r1, [r5]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08022948
- ldr r4, _08022938 @ =gActiveBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0802293C @ =gPlayerParty
- mov r8, r1
- cmp r0, 0x1
- bne _080228CC
- ldr r0, _08022940 @ =gEnemyParty
- mov r8, r0
-_080228CC:
- movs r5, 0
- ldrb r0, [r4]
- bl sub_803FC34
- lsls r0, 24
- lsrs r0, 24
- bl sub_803FBFC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _080228E6
- movs r5, 0x3
-_080228E6:
- adds r6, r5, 0x3
- cmp r5, r6
- bge _0802292E
- ldr r7, _08022944 @ =gBattlePartyID
-_080228EE:
- movs r0, 0x64
- muls r0, r5
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08022928
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _08022928
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08022928
- ldr r0, _08022938 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- cmp r0, r5
- bne _0802292E
-_08022928:
- adds r5, 0x1
- cmp r5, r6
- blt _080228EE
-_0802292E:
- cmp r5, r6
- beq _080229FC
- b _08022A24
- .align 2, 0
-_08022934: .4byte gBattleTypeFlags
-_08022938: .4byte gActiveBank
-_0802293C: .4byte gPlayerParty
-_08022940: .4byte gEnemyParty
-_08022944: .4byte gBattlePartyID
-_08022948:
- ldr r0, _08022978 @ =gActiveBank
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- bne _08022988
- movs r0, 0x1
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r1, [r5]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _0802297C
- movs r0, 0x3
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r6, r0, 24
- b _0802297E
- .align 2, 0
-_08022978: .4byte gActiveBank
-_0802297C:
- adds r6, r7, 0
-_0802297E:
- ldr r0, _08022984 @ =gEnemyParty
- mov r8, r0
- b _080229AE
- .align 2, 0
-_08022984: .4byte gEnemyParty
-_08022988:
- movs r0, 0
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r1, [r5]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080229A8
- movs r0, 0x2
- bl GetBankByPlayerAI
- lsls r0, 24
- lsrs r6, r0, 24
- b _080229AA
-_080229A8:
- adds r6, r7, 0
-_080229AA:
- ldr r1, _08022A18 @ =gPlayerParty
- mov r8, r1
-_080229AE:
- movs r5, 0
-_080229B0:
- movs r0, 0x64
- muls r0, r5
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080229F2
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080229F2
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080229F2
- ldr r1, _08022A1C @ =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- beq _080229F2
- lsls r0, r6, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r5, r0
- bne _080229F8
-_080229F2:
- adds r5, 0x1
- cmp r5, 0x5
- ble _080229B0
-_080229F8:
- cmp r5, 0x6
- bne _08022A24
-_080229FC:
- ldr r3, _08022A20 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08022A2C
- .align 2, 0
-_08022A18: .4byte gPlayerParty
-_08022A1C: .4byte gBattlePartyID
-_08022A20: .4byte gBattlescriptCurrInstr
-_08022A24:
- ldr r1, _08022A38 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
-_08022A2C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08022A38: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8022830
-
- thumb_func_start sub_8022A3C
-sub_8022A3C: @ 8022A3C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r4, _08022A84 @ =0x02000000
- ldr r5, _08022A88 @ =gActiveBank
- ldrb r0, [r5]
- ldr r3, _08022A8C @ =0x00016064
- adds r1, r0, r3
- adds r1, r4
- ldr r3, _08022A90 @ =gBattlePartyID
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strb r0, [r1]
- ldrb r1, [r5]
- lsls r0, r1, 1
- adds r0, r1
- ldr r1, _08022A94 @ =0x0001606c
- adds r4, r1
- adds r0, r4
- str r0, [sp]
- movs r0, 0
- movs r1, 0x1
- movs r3, 0
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08022A84: .4byte 0x02000000
-_08022A88: .4byte gActiveBank
-_08022A8C: .4byte 0x00016064
-_08022A90: .4byte gBattlePartyID
-_08022A94: .4byte 0x0001606c
- thumb_func_end sub_8022A3C
-
- thumb_func_start atk50_openpartyscreen
-atk50_openpartyscreen: @ 8022A98
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- movs r7, 0
- movs r0, 0
- mov r9, r0
- ldr r6, _08022B44 @ =gBattlescriptCurrInstr
- ldr r1, [r6]
- ldrb r2, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- orrs r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- orrs r2, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- orrs r2, r0
- mov r8, r2
- ldrb r2, [r1, 0x1]
- adds r0, r2, 0
- mov r12, r6
- cmp r0, 0x5
- beq _08022ACE
- b _08022F74
-_08022ACE:
- ldr r0, _08022B48 @ =gBattleTypeFlags
- ldrh r0, [r0]
- movs r1, 0x41
- ands r1, r0
- cmp r1, 0x1
- beq _08022BBC
- ldr r1, _08022B4C @ =gActiveBank
- strb r7, [r1]
- ldr r0, _08022B50 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r7, r0
- bcc _08022AE8
- b _08022F62
-_08022AE8:
- ldr r7, _08022B54 @ =gHitMarker
- ldr r6, _08022B58 @ =gBitTable
- adds r4, r1, 0
- ldr r0, _08022B5C @ =gAbsentBankFlags
- mov r8, r0
-_08022AF2:
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r7]
- ands r0, r1
- cmp r0, 0
- beq _08022B94
- adds r0, r2, 0
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _08022B60
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- mov r2, r8
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r7]
- bics r0, r1
- str r0, [r7]
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08022BA2
- .align 2, 0
-_08022B44: .4byte gBattlescriptCurrInstr
-_08022B48: .4byte gBattleTypeFlags
-_08022B4C: .4byte gActiveBank
-_08022B50: .4byte gNoOfAllBanks
-_08022B54: .4byte gHitMarker
-_08022B58: .4byte gBitTable
-_08022B5C: .4byte gAbsentBankFlags
-_08022B60:
- ldr r5, _08022B90 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08022BA2
- movs r0, 0x6
- bl sub_8022A3C
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08022BA2
- .align 2, 0
-_08022B90: .4byte gSpecialStatuses
-_08022B94:
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08022BA2:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _08022BB8 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08022AF2
- b _08022F62
- .align 2, 0
-_08022BB8: .4byte gNoOfAllBanks
-_08022BBC:
- ands r1, r0
- cmp r1, 0
- bne _08022BC4
- b _08022F62
-_08022BC4:
- ldr r0, _08022C1C @ =gHitMarker
- mov r8, r0
- ldr r0, [r0]
- lsrs r5, r0, 28
- ldr r6, _08022C20 @ =gBitTable
- ldr r0, [r6]
- ands r0, r5
- cmp r0, 0
- beq _08022C7E
- ldr r4, _08022C24 @ =gActiveBank
- strb r7, [r4]
- movs r0, 0
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _08022C2C
- ldr r2, _08022C28 @ =gAbsentBankFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- mov r2, r8
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl dp01_build_cmdbuf_x2A_2A_2A_2A
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08022C7E
- .align 2, 0
-_08022C1C: .4byte gHitMarker
-_08022C20: .4byte gBitTable
-_08022C24: .4byte gActiveBank
-_08022C28: .4byte gAbsentBankFlags
-_08022C2C:
- ldr r6, _08022C60 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08022C6C
- ldr r0, _08022C64 @ =0x02000000
- ldr r1, _08022C68 @ =0x0001606a
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8022A3C
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08022C7E
- .align 2, 0
-_08022C60: .4byte gSpecialStatuses
-_08022C64: .4byte 0x02000000
-_08022C68: .4byte 0x0001606a
-_08022C6C:
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- movs r2, 0x1
- mov r9, r2
-_08022C7E:
- ldr r6, _08022CD8 @ =gBitTable
- ldr r0, [r6, 0x8]
- ands r0, r5
- cmp r0, 0
- beq _08022D40
- ldr r0, [r6]
- ands r0, r5
- cmp r0, 0
- bne _08022D40
- ldr r4, _08022CDC @ =gActiveBank
- movs r0, 0x2
- strb r0, [r4]
- movs r0, 0x2
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _08022CE8
- ldr r2, _08022CE0 @ =gAbsentBankFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _08022CE4 @ =gHitMarker
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl dp01_build_cmdbuf_x2A_2A_2A_2A
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08022D40
- .align 2, 0
-_08022CD8: .4byte gBitTable
-_08022CDC: .4byte gActiveBank
-_08022CE0: .4byte gAbsentBankFlags
-_08022CE4: .4byte gHitMarker
-_08022CE8:
- ldr r6, _08022D1C @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08022D28
- ldr r0, _08022D20 @ =0x02000000
- ldr r1, _08022D24 @ =0x00016068
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8022A3C
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08022D40
- .align 2, 0
-_08022D1C: .4byte gSpecialStatuses
-_08022D20: .4byte 0x02000000
-_08022D24: .4byte 0x00016068
-_08022D28:
- movs r0, 0x1
- mov r2, r9
- ands r0, r2
- cmp r0, 0
- bne _08022D40
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08022D40:
- ldr r6, _08022D90 @ =gBitTable
- ldr r0, [r6, 0x4]
- ands r0, r5
- cmp r0, 0
- beq _08022DF6
- ldr r4, _08022D94 @ =gActiveBank
- movs r0, 0x1
- strb r0, [r4]
- movs r0, 0x1
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _08022DA0
- ldr r2, _08022D98 @ =gAbsentBankFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _08022D9C @ =gHitMarker
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl dp01_build_cmdbuf_x2A_2A_2A_2A
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08022DF6
- .align 2, 0
-_08022D90: .4byte gBitTable
-_08022D94: .4byte gActiveBank
-_08022D98: .4byte gAbsentBankFlags
-_08022D9C: .4byte gHitMarker
-_08022DA0:
- ldr r6, _08022DD4 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08022DE0
- ldr r0, _08022DD8 @ =0x02000000
- ldr r1, _08022DDC @ =0x0001606b
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8022A3C
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08022DF6
- .align 2, 0
-_08022DD4: .4byte gSpecialStatuses
-_08022DD8: .4byte 0x02000000
-_08022DDC: .4byte 0x0001606b
-_08022DE0:
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- movs r0, 0x2
- mov r2, r9
- orrs r2, r0
- mov r9, r2
-_08022DF6:
- ldr r6, _08022E50 @ =gBitTable
- ldr r0, [r6, 0xC]
- ands r0, r5
- cmp r0, 0
- beq _08022EB8
- ldr r0, [r6, 0x4]
- ands r0, r5
- cmp r0, 0
- bne _08022EB8
- ldr r4, _08022E54 @ =gActiveBank
- movs r0, 0x3
- strb r0, [r4]
- movs r0, 0x3
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _08022E60
- ldr r2, _08022E58 @ =gAbsentBankFlags
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _08022E5C @ =gHitMarker
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl dp01_build_cmdbuf_x2A_2A_2A_2A
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _08022EB8
- .align 2, 0
-_08022E50: .4byte gBitTable
-_08022E54: .4byte gActiveBank
-_08022E58: .4byte gAbsentBankFlags
-_08022E5C: .4byte gHitMarker
-_08022E60:
- ldr r6, _08022E94 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08022EA0
- ldr r0, _08022E98 @ =0x02000000
- ldr r1, _08022E9C @ =0x00016069
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8022A3C
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08022EB8
- .align 2, 0
-_08022E94: .4byte gSpecialStatuses
-_08022E98: .4byte 0x02000000
-_08022E9C: .4byte 0x00016069
-_08022EA0:
- movs r0, 0x2
- mov r2, r9
- ands r2, r0
- cmp r2, 0
- bne _08022EB8
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08022EB8:
- ldr r1, _08022EE8 @ =gSpecialStatuses
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _08022F0C
- adds r0, r1, 0
- adds r0, 0x28
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- blt _08022F0C
- cmp r5, 0
- beq _08022F0C
- ldr r0, _08022EEC @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r0, _08022EF0 @ =gBitTable
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08022EF8
- ldr r1, _08022EF4 @ =gActiveBank
- movs r0, 0x2
- strb r0, [r1]
- b _08022EFC
- .align 2, 0
-_08022EE8: .4byte gSpecialStatuses
-_08022EEC: .4byte gAbsentBankFlags
-_08022EF0: .4byte gBitTable
-_08022EF4: .4byte gActiveBank
-_08022EF8:
- ldr r0, _08022F3C @ =gActiveBank
- strb r1, [r0]
-_08022EFC:
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldr r0, _08022F3C @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
-_08022F0C:
- ldr r1, _08022F40 @ =gSpecialStatuses
- ldrb r0, [r1, 0x14]
- lsls r0, 25
- cmp r0, 0
- blt _08022F62
- adds r0, r1, 0
- adds r0, 0x3C
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- blt _08022F62
- cmp r5, 0
- beq _08022F62
- ldr r0, _08022F44 @ =gAbsentBankFlags
- ldrb r0, [r0]
- ldr r1, _08022F48 @ =gBitTable
- ldr r1, [r1, 0x4]
- ands r0, r1
- cmp r0, 0
- beq _08022F4C
- ldr r1, _08022F3C @ =gActiveBank
- movs r0, 0x3
- b _08022F50
- .align 2, 0
-_08022F3C: .4byte gActiveBank
-_08022F40: .4byte gSpecialStatuses
-_08022F44: .4byte gAbsentBankFlags
-_08022F48: .4byte gBitTable
-_08022F4C:
- ldr r1, _08022F6C @ =gActiveBank
- movs r0, 0x1
-_08022F50:
- strb r0, [r1]
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldr r0, _08022F6C @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
-_08022F62:
- ldr r1, _08022F70 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
- b _08023302
- .align 2, 0
-_08022F6C: .4byte gActiveBank
-_08022F70: .4byte gBattlescriptCurrInstr
-_08022F74:
- cmp r0, 0x6
- beq _08022F7A
- b _08023170
-_08022F7A:
- ldr r0, _08022FF0 @ =gBattleTypeFlags
- ldrh r2, [r0]
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- beq _08022F88
- b _0802310C
-_08022F88:
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- bne _08022F92
- b _0802310C
-_08022F92:
- ldr r7, _08022FF4 @ =gHitMarker
- ldr r0, [r7]
- lsrs r5, r0, 28
- ldr r4, _08022FF8 @ =gBitTable
- ldr r0, [r4, 0x8]
- ands r0, r5
- cmp r0, 0
- beq _0802303A
- ldr r0, [r4]
- ands r0, r5
- cmp r0, 0
- beq _0802303A
- ldr r6, _08022FFC @ =gActiveBank
- movs r0, 0x2
- strb r0, [r6]
- ldr r0, _08023000 @ =gBattleBufferB
- ldrb r1, [r0, 0x1]
- movs r0, 0x2
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _08023008
- ldr r2, _08023004 @ =gAbsentBankFlags
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r6]
- lsls r0, 2
- adds r0, r4
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r7]
- bics r0, r1
- str r0, [r7]
- movs r0, 0
- bl dp01_build_cmdbuf_x2A_2A_2A_2A
- ldrb r0, [r6]
- bl MarkBufferBankForExecution
- b _0802303A
- .align 2, 0
-_08022FF0: .4byte gBattleTypeFlags
-_08022FF4: .4byte gHitMarker
-_08022FF8: .4byte gBitTable
-_08022FFC: .4byte gActiveBank
-_08023000: .4byte gBattleBufferB
-_08023004: .4byte gAbsentBankFlags
-_08023008:
- ldr r4, _08023098 @ =gSpecialStatuses
- ldrb r0, [r6]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _0802303A
- ldr r0, _0802309C @ =0x02000000
- ldr r1, _080230A0 @ =0x00016068
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8022A3C
- ldrb r1, [r6]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
-_0802303A:
- ldr r4, _080230A4 @ =gBitTable
- ldr r0, [r4, 0xC]
- ands r0, r5
- cmp r0, 0
- beq _080230EE
- ldr r0, [r4, 0x4]
- ands r5, r0
- cmp r5, 0
- beq _080230EE
- ldr r5, _080230A8 @ =gActiveBank
- movs r0, 0x3
- strb r0, [r5]
- ldr r0, _080230AC @ =gBattleBufferB
- ldr r2, _080230B0 @ =0x00000201
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x3
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _080230BC
- ldr r2, _080230B4 @ =gAbsentBankFlags
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ldrb r1, [r2]
- orrs r0, r1
- strb r0, [r2]
- ldr r2, _080230B8 @ =gHitMarker
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r4
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- movs r0, 0
- bl dp01_build_cmdbuf_x2A_2A_2A_2A
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- b _080230EE
- .align 2, 0
-_08023098: .4byte gSpecialStatuses
-_0802309C: .4byte 0x02000000
-_080230A0: .4byte 0x00016068
-_080230A4: .4byte gBitTable
-_080230A8: .4byte gActiveBank
-_080230AC: .4byte gBattleBufferB
-_080230B0: .4byte 0x00000201
-_080230B4: .4byte gAbsentBankFlags
-_080230B8: .4byte gHitMarker
-_080230BC:
- ldr r4, _080230FC @ =gSpecialStatuses
- ldrb r0, [r5]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- lsls r0, 25
- cmp r0, 0
- blt _080230EE
- ldr r0, _08023100 @ =0x02000000
- ldr r1, _08023104 @ =0x00016069
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8022A3C
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
-_080230EE:
- ldr r1, _08023108 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
- mov r12, r1
- b _08023110
- .align 2, 0
-_080230FC: .4byte gSpecialStatuses
-_08023100: .4byte 0x02000000
-_08023104: .4byte 0x00016069
-_08023108: .4byte gBattlescriptCurrInstr
-_0802310C:
- adds r0, r1, 0x6
- str r0, [r6]
-_08023110:
- ldr r0, _08023160 @ =gHitMarker
- ldr r0, [r0]
- lsrs r5, r0, 28
- ldr r1, _08023164 @ =gBank1
- movs r0, 0
- strb r0, [r1]
- ldr r4, _08023168 @ =gBitTable
- ldr r2, [r4]
- ands r2, r5
- ldr r6, _0802316C @ =gNoOfAllBanks
- cmp r2, 0
- bne _0802314C
- adds r7, r6, 0
- ldrb r0, [r6]
- cmp r2, r0
- bcs _0802314C
- adds r3, r1, 0
-_08023132:
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- ldrb r2, [r3]
- lsls r0, r2, 2
- adds r0, r4
- ldr r0, [r0]
- ands r0, r5
- cmp r0, 0
- bne _0802314C
- ldrb r0, [r7]
- cmp r2, r0
- bcc _08023132
-_0802314C:
- ldrb r0, [r1]
- ldrb r6, [r6]
- cmp r0, r6
- beq _08023156
- b _08023302
-_08023156:
- mov r1, r8
- mov r2, r12
- str r1, [r2]
- b _08023302
- .align 2, 0
-_08023160: .4byte gHitMarker
-_08023164: .4byte gBank1
-_08023168: .4byte gBitTable
-_0802316C: .4byte gNoOfAllBanks
-_08023170:
- movs r0, 0x80
- ands r0, r2
- movs r5, 0x1
- cmp r0, 0
- beq _0802317C
- movs r5, 0
-_0802317C:
- movs r0, 0x7F
- ands r0, r2
- bl sub_8015150
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r1, _080231A4 @ =gSpecialStatuses
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 25
- cmp r0, 0
- bge _080231A8
- ldr r0, [r6]
- adds r0, 0x6
- str r0, [r6]
- b _08023302
- .align 2, 0
-_080231A4: .4byte gSpecialStatuses
-_080231A8:
- adds r0, r7, 0
- movs r1, 0x6
- movs r2, 0x6
- bl sub_8018018
- lsls r0, 24
- cmp r0, 0
- beq _080231F8
- ldr r2, _080231E8 @ =gActiveBank
- strb r7, [r2]
- ldr r3, _080231EC @ =gAbsentBankFlags
- ldr r4, _080231F0 @ =gBitTable
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r4
- ldr r0, [r0]
- ldrb r1, [r3]
- orrs r0, r1
- strb r0, [r3]
- ldr r3, _080231F4 @ =gHitMarker
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r4
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r3]
- bics r0, r1
- str r0, [r3]
- mov r0, r8
- str r0, [r6]
- b _08023302
- .align 2, 0
-_080231E8: .4byte gActiveBank
-_080231EC: .4byte gAbsentBankFlags
-_080231F0: .4byte gBitTable
-_080231F4: .4byte gHitMarker
-_080231F8:
- ldr r4, _080232A0 @ =gActiveBank
- strb r7, [r4]
- ldr r3, _080232A4 @ =0x02000000
- ldrb r0, [r4]
- ldr r2, _080232A8 @ =0x00016064
- adds r1, r0, r2
- adds r1, r3
- ldr r2, _080232AC @ =gBattlePartyID
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- ldr r1, _080232B0 @ =0x00016068
- adds r0, r1
- adds r0, r3
- ldrb r2, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- ldr r1, _080232B4 @ =0x0001606c
- adds r3, r1
- adds r0, r3
- str r0, [sp]
- movs r0, 0
- adds r1, r5, 0
- movs r3, 0
- bl dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r6]
- adds r0, 0x6
- str r0, [r6]
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- cmp r0, 0
- bne _0802325A
- ldr r1, _080232B8 @ =gBattleResults
- ldrb r0, [r1, 0x2]
- cmp r0, 0xFE
- bhi _0802325A
- adds r0, 0x1
- strb r0, [r1, 0x2]
-_0802325A:
- ldr r0, _080232BC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080232C4
- ldr r1, _080232A0 @ =gActiveBank
- movs r0, 0
- strb r0, [r1]
- ldr r0, _080232C0 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r0, 0
- beq _08023302
- adds r4, r1, 0
-_08023276:
- ldrb r0, [r4]
- cmp r0, r7
- beq _0802328A
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0802328A:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _080232C0 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08023276
- b _08023302
- .align 2, 0
-_080232A0: .4byte gActiveBank
-_080232A4: .4byte 0x02000000
-_080232A8: .4byte 0x00016064
-_080232AC: .4byte gBattlePartyID
-_080232B0: .4byte 0x00016068
-_080232B4: .4byte 0x0001606c
-_080232B8: .4byte gBattleResults
-_080232BC: .4byte gBattleTypeFlags
-_080232C0: .4byte gNoOfAllBanks
-_080232C4:
- adds r0, r7, 0
- bl GetBankIdentity
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r4, _08023310 @ =gActiveBank
- strb r0, [r4]
- ldr r0, _08023314 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _08023318 @ =gBitTable
- ldrb r3, [r4]
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _080232F4
- movs r0, 0x2
- eors r3, r0
- strb r3, [r4]
-_080232F4:
- movs r0, 0
- movs r1, 0x2
- bl EmitLinkStandbyMsg
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08023302:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08023310: .4byte gActiveBank
-_08023314: .4byte gAbsentBankFlags
-_08023318: .4byte gBitTable
- thumb_func_end atk50_openpartyscreen
-
- thumb_func_start sub_802331C
-sub_802331C: @ 802331C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _0802334C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0802332C
- b _080234FE
-_0802332C:
- ldr r4, _08023350 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r7, _08023354 @ =gActiveBank
- strb r0, [r7]
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- cmp r0, 0x1
- beq _080233A0
- cmp r0, 0x1
- bgt _08023358
- cmp r0, 0
- beq _0802335E
- b _080234F6
- .align 2, 0
-_0802334C: .4byte gBattleExecBuffer
-_08023350: .4byte gBattlescriptCurrInstr
-_08023354: .4byte gActiveBank
-_08023358:
- cmp r0, 0x2
- beq _080233BC
- b _080234F6
-_0802335E:
- movs r3, 0
- ldr r2, _08023390 @ =gNoOfAllBanks
- ldrb r0, [r2]
- cmp r3, r0
- blt _0802336A
- b _080234F6
-_0802336A:
- ldr r0, _08023394 @ =0x02000000
- ldr r1, _08023398 @ =gBattleBufferB
- movs r5, 0x80
- lsls r5, 2
- adds r4, r2, 0
- ldr r6, _0802339C @ =0x00016068
- adds r2, r0, r6
-_08023378:
- ldrb r0, [r1]
- cmp r0, 0x22
- bne _08023382
- ldrb r0, [r1, 0x1]
- strb r0, [r2]
-_08023382:
- adds r1, r5
- adds r2, 0x1
- adds r3, 0x1
- ldrb r0, [r4]
- cmp r3, r0
- blt _08023378
- b _080234F6
- .align 2, 0
-_08023390: .4byte gNoOfAllBanks
-_08023394: .4byte 0x02000000
-_08023398: .4byte gBattleBufferB
-_0802339C: .4byte 0x00016068
-_080233A0:
- ldr r0, _080233B8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080233AE
- b _080234F6
-_080233AE:
- ldrb r0, [r7]
- bl sub_8012258
- b _080234F6
- .align 2, 0
-_080233B8: .4byte gBattleTypeFlags
-_080233BC:
- ldr r1, _08023484 @ =gBattleCommunication
- ldr r4, _08023488 @ =gBattleBufferB
- ldrb r0, [r7]
- lsls r0, 9
- adds r2, r4, 0x1
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r6, _0802348C @ =0x02000000
- ldrb r0, [r7]
- ldr r3, _08023490 @ =0x00016068
- adds r1, r0, r3
- adds r1, r6
- lsls r0, 9
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _08023494 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080234A4
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- ldr r5, _08023498 @ =0x0001606c
- adds r1, r5
- adds r1, r6
- ldrb r2, [r1]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r5
- adds r1, r6
- lsls r0, 9
- adds r2, r4, 0x2
- mov r12, r2
- add r0, r12
- ldrb r2, [r0]
- movs r3, 0xF0
- adds r0, r3, 0
- ands r0, r2
- ldrb r2, [r1]
- orrs r0, r2
- strb r0, [r1]
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- ldr r2, _0802349C @ =0x0001606d
- adds r1, r2
- adds r1, r6
- lsls r0, 9
- adds r4, 0x3
- mov r8, r4
- add r0, r8
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- movs r4, 0x2
- eors r0, r4
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r5
- adds r1, r6
- ldrb r2, [r1]
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r7]
- eors r0, r4
- lsls r1, r0, 1
- adds r1, r0
- adds r1, r5
- adds r1, r6
- ldrb r0, [r7]
- lsls r0, 9
- add r0, r12
- ldrb r0, [r0]
- ands r3, r0
- lsrs r3, 4
- ldrb r0, [r1]
- orrs r3, r0
- strb r3, [r1]
- ldrb r0, [r7]
- eors r4, r0
- lsls r1, r4, 1
- adds r1, r4
- ldr r3, _080234A0 @ =0x0001606e
- adds r1, r3
- adds r1, r6
- ldrb r0, [r7]
- lsls r0, 9
- add r0, r8
- ldrb r0, [r0]
- strb r0, [r1]
- b _080234AA
- .align 2, 0
-_08023484: .4byte gBattleCommunication
-_08023488: .4byte gBattleBufferB
-_0802348C: .4byte 0x02000000
-_08023490: .4byte 0x00016068
-_08023494: .4byte gBattleTypeFlags
-_08023498: .4byte 0x0001606c
-_0802349C: .4byte 0x0001606d
-_080234A0: .4byte 0x0001606e
-_080234A4:
- ldrb r0, [r7]
- bl sub_8012258
-_080234AA:
- ldr r1, _08023508 @ =gBattleTextBuff1
- movs r5, 0xFD
- strb r5, [r1]
- movs r0, 0x6
- strb r0, [r1, 0x1]
- ldr r4, _0802350C @ =gBattleMons
- ldr r3, _08023510 @ =gBankAttacker
- ldrb r0, [r3]
- movs r2, 0x58
- muls r0, r2
- adds r0, r4
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r3]
- muls r0, r2
- adds r0, r4
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r2, _08023514 @ =gBattleTextBuff2
- strb r5, [r2]
- movs r0, 0x7
- strb r0, [r2, 0x1]
- ldr r3, _08023518 @ =gActiveBank
- ldrb r0, [r3]
- strb r0, [r2, 0x2]
- ldr r1, _0802351C @ =gBattleBufferB
- ldrb r0, [r3]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2, 0x3]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r2, 0x4]
-_080234F6:
- ldr r1, _08023520 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
- str r0, [r1]
-_080234FE:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08023508: .4byte gBattleTextBuff1
-_0802350C: .4byte gBattleMons
-_08023510: .4byte gBankAttacker
-_08023514: .4byte gBattleTextBuff2
-_08023518: .4byte gActiveBank
-_0802351C: .4byte gBattleBufferB
-_08023520: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802331C
-
- thumb_func_start sub_8023524
-sub_8023524: @ 8023524
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r6, _08023630 @ =gBattlescriptCurrInstr
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _08023634 @ =gActiveBank
- strb r0, [r4]
- ldrb r0, [r4]
- bl sub_80157C4
- ldr r2, _08023638 @ =gHitMarker
- ldr r1, _0802363C @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 28
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
- ldr r2, _08023640 @ =gSpecialStatuses
- ldrb r0, [r4]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1]
- movs r0, 0x41
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r4]
- bl GetBankSide
- ldr r5, _08023644 @ =gSideAffecting
- lsls r0, 24
- lsrs r0, 23
- adds r0, r5
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 2
- mov r8, r0
- ands r0, r1
- cmp r0, 0
- bne _0802367C
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- adds r0, r5
- ldrh r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0802367C
- ldr r1, _08023648 @ =gBattleMons
- mov r9, r1
- ldrb r2, [r4]
- movs r7, 0x58
- adds r0, r2, 0
- muls r0, r7
- adds r1, r0, r1
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0802367C
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0802367C
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1A
- beq _0802367C
- adds r0, r2, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- adds r0, r5
- ldrh r2, [r0]
- mov r1, r8
- orrs r1, r2
- strh r1, [r0]
- ldrb r0, [r4]
- bl GetBankSide
- ldr r2, _0802364C @ =gSideTimer
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x6]
- movs r1, 0x5
- subs r1, r0
- lsls r1, 25
- lsrs r1, 24
- ldr r5, _08023650 @ =gBattleMoveDamage
- ldrb r0, [r4]
- muls r0, r7
- add r0, r9
- ldrh r0, [r0, 0x2C]
- bl __divsi3
- str r0, [r5]
- cmp r0, 0
- bne _08023614
- movs r0, 0x1
- str r0, [r5]
-_08023614:
- ldr r0, _08023654 @ =0x02000000
- ldrb r1, [r4]
- ldr r2, _08023658 @ =0x00016003
- adds r0, r2
- strb r1, [r0]
- bl b_movescr_stack_push_cursor
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _08023660
- ldr r0, _0802365C @ =gUnknown_081D919F
- str r0, [r6]
- b _080237B6
- .align 2, 0
-_08023630: .4byte gBattlescriptCurrInstr
-_08023634: .4byte gActiveBank
-_08023638: .4byte gHitMarker
-_0802363C: .4byte gBitTable
-_08023640: .4byte gSpecialStatuses
-_08023644: .4byte gSideAffecting
-_08023648: .4byte gBattleMons
-_0802364C: .4byte gSideTimer
-_08023650: .4byte gBattleMoveDamage
-_08023654: .4byte 0x02000000
-_08023658: .4byte 0x00016003
-_0802365C: .4byte gUnknown_081D919F
-_08023660:
- cmp r0, 0x1
- bne _08023670
- ldr r0, _0802366C @ =gUnknown_081D9171
- str r0, [r6]
- b _080237B6
- .align 2, 0
-_0802366C: .4byte gUnknown_081D9171
-_08023670:
- ldr r0, _08023678 @ =gUnknown_081D91CD
- str r0, [r6]
- b _080237B6
- .align 2, 0
-_08023678: .4byte gUnknown_081D91CD
-_0802367C:
- ldr r1, _08023754 @ =gBattleMons
- ldr r5, _08023758 @ =gActiveBank
- ldrb r2, [r5]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x36
- bne _080236A2
- ldr r1, _0802375C @ =gDisableStructs
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x18]
-_080236A2:
- ldrb r1, [r5]
- movs r0, 0
- str r0, [sp]
- movs r2, 0
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _080236B8
- b _080237B6
-_080236B8:
- ldrb r1, [r5]
- movs r0, 0
- movs r2, 0
- bl sub_801A02C
- lsls r0, 24
- cmp r0, 0
- bne _080237B6
- ldrb r0, [r5]
- bl GetBankSide
- ldr r1, _08023760 @ =gSideAffecting
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r2, [r0]
- ldr r1, _08023764 @ =0x0000fdff
- ands r1, r2
- strh r1, [r0]
- movs r4, 0
- ldr r0, _08023768 @ =gNoOfAllBanks
- ldrb r3, [r0]
- cmp r4, r3
- bge _08023706
- ldr r6, _0802376C @ =gTurnOrder
- ldr r3, _08023770 @ =gUnknown_02024A76
- movs r2, 0xC
- adds r1, r0, 0
-_080236F0:
- adds r0, r4, r6
- ldrb r0, [r0]
- ldrb r7, [r5]
- cmp r0, r7
- bne _080236FE
- adds r0, r4, r3
- strb r2, [r0]
-_080236FE:
- adds r4, 0x1
- ldrb r0, [r1]
- cmp r4, r0
- blt _080236F0
-_08023706:
- movs r4, 0
- ldr r0, _08023768 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- bge _08023736
- ldr r5, _08023754 @ =gBattleMons
-_08023712:
- lsls r0, r4, 24
- lsrs r0, 24
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- ldr r1, _08023774 @ =0x020160bc
- adds r0, r1
- movs r1, 0x58
- muls r1, r4
- adds r1, r5
- ldrh r1, [r1, 0x28]
- strh r1, [r0]
- adds r4, 0x1
- ldr r0, _08023768 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _08023712
-_08023736:
- ldr r0, _08023778 @ =gBattlescriptCurrInstr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r5, r0, 0
- cmp r1, 0x5
- bne _080237B0
- ldr r0, _0802377C @ =gHitMarker
- ldr r0, [r0]
- lsrs r4, r0, 28
- ldr r1, _08023780 @ =gBank1
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r2, _08023784 @ =gBitTable
- b _08023796
- .align 2, 0
-_08023754: .4byte gBattleMons
-_08023758: .4byte gActiveBank
-_0802375C: .4byte gDisableStructs
-_08023760: .4byte gSideAffecting
-_08023764: .4byte 0x0000fdff
-_08023768: .4byte gNoOfAllBanks
-_0802376C: .4byte gTurnOrder
-_08023770: .4byte gUnknown_02024A76
-_08023774: .4byte 0x020160bc
-_08023778: .4byte gBattlescriptCurrInstr
-_0802377C: .4byte gHitMarker
-_08023780: .4byte gBank1
-_08023784: .4byte gBitTable
-_08023788:
- ldr r0, _080237C4 @ =gNoOfAllBanks
- ldrb r3, [r1]
- ldrb r0, [r0]
- cmp r3, r0
- bcs _080237B0
- adds r0, r3, 0x1
- strb r0, [r1]
-_08023796:
- ldrb r0, [r1]
- lsls r0, 2
- adds r0, r2
- ldr r3, [r0]
- adds r0, r4, 0
- ands r0, r3
- cmp r0, 0
- beq _08023788
- ldr r0, _080237C8 @ =gAbsentBankFlags
- ldrb r0, [r0]
- ands r0, r3
- cmp r0, 0
- bne _08023788
-_080237B0:
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
-_080237B6:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080237C4: .4byte gNoOfAllBanks
-_080237C8: .4byte gAbsentBankFlags
- thumb_func_end sub_8023524
-
- thumb_func_start sub_80237CC
-sub_80237CC: @ 80237CC
- push {lr}
- ldr r0, _080237DC @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- bne _080237E0
- movs r0, 0
- b _080237E2
- .align 2, 0
-_080237DC: .4byte gBattlescriptCurrInstr
-_080237E0:
- movs r0, 0x1
-_080237E2:
- bl GetBankByPlayerAI
- ldr r1, _08023804 @ =gActiveBank
- strb r0, [r1]
- movs r0, 0
- bl dp01_build_cmdbuf_x08_8_8_8
- ldr r0, _08023804 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _08023808 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08023804: .4byte gActiveBank
-_08023808: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80237CC
-
- thumb_func_start atk54_802511C
-atk54_802511C: @ 802380C
- push {r4,r5,lr}
- ldr r5, _0802383C @ =gActiveBank
- ldr r0, _08023840 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r4, _08023844 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0
- bl EmitEffectivenessSound
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802383C: .4byte gActiveBank
-_08023840: .4byte gBankAttacker
-_08023844: .4byte gBattlescriptCurrInstr
- thumb_func_end atk54_802511C
-
- thumb_func_start sub_8023848
-sub_8023848: @ 8023848
- push {r4,r5,lr}
- ldr r5, _08023878 @ =gActiveBank
- ldr r0, _0802387C @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r4, _08023880 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0
- bl sub_800D074
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r4]
- adds r0, 0x3
- str r0, [r4]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08023878: .4byte gActiveBank
-_0802387C: .4byte gBankAttacker
-_08023880: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8023848
-
- thumb_func_start atk56_8025194
-atk56_8025194: @ 8023884
- push {r4,r5,lr}
- ldr r5, _080238AC @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _080238B0 @ =gActiveBank
- strb r0, [r4]
- movs r0, 0
- bl EmitFaintingCry
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080238AC: .4byte gBattlescriptCurrInstr
-_080238B0: .4byte gActiveBank
- thumb_func_end atk56_8025194
-
- thumb_func_start atk57_80251C4_flee
-atk57_80251C4_flee: @ 80238B4
- push {r4,lr}
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r4, _080238E0 @ =gActiveBank
- strb r0, [r4]
- ldr r0, _080238E4 @ =gBattleOutcome
- ldrb r1, [r0]
- movs r0, 0
- bl dp01_build_cmdbuf_x37_a
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, _080238E8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080238E0: .4byte gActiveBank
-_080238E4: .4byte gBattleOutcome
-_080238E8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk57_80251C4_flee
-
- thumb_func_start atk58_cmd58
-atk58_cmd58: @ 80238EC
- push {r4,r5,lr}
- ldr r5, _08023918 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _0802391C @ =gActiveBank
- strb r0, [r4]
- movs r0, 0
- movs r1, 0x1
- bl dp01_build_cmdbuf_x06_a
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08023918: .4byte gBattlescriptCurrInstr
-_0802391C: .4byte gActiveBank
- thumb_func_end atk58_cmd58
-
- thumb_func_start atk59_8025230
-atk59_8025230: @ 8023920
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _0802399C @ =gBattlescriptCurrInstr
- ldr r2, [r0]
- ldrb r6, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r6, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r6, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r6, r0
- ldrb r4, [r2, 0x5]
- ldrb r0, [r2, 0x6]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r2, 0x8]
- lsls r0, 24
- orrs r4, r0
- ldr r0, _080239A0 @ =0x02000000
- ldr r1, _080239A4 @ =0x00016018
- adds r7, r0, r1
- ldrb r1, [r7]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080239A8 @ =gPlayerParty
- adds r0, r1
- ldrb r1, [r2, 0x9]
- bl sub_803B7C8
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, _080239AC @ =0x0000fffe
- cmp r5, r0
- bne _08023992
- mov r9, r7
- mov r8, r5
- movs r7, 0x64
-_0802397A:
- mov r3, r9
- ldrb r0, [r3]
- muls r0, r7
- ldr r1, _080239A8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0
- bl sub_803B7C8
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r8
- beq _0802397A
-_08023992:
- cmp r5, 0
- bne _080239B0
- ldr r0, _0802399C @ =gBattlescriptCurrInstr
- str r4, [r0]
- b _08023A58
- .align 2, 0
-_0802399C: .4byte gBattlescriptCurrInstr
-_080239A0: .4byte 0x02000000
-_080239A4: .4byte 0x00016018
-_080239A8: .4byte gPlayerParty
-_080239AC: .4byte 0x0000fffe
-_080239B0:
- ldr r0, _080239C0 @ =0x0000ffff
- cmp r5, r0
- bne _080239C8
- ldr r1, _080239C4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0xA
- str r0, [r1]
- b _08023A58
- .align 2, 0
-_080239C0: .4byte 0x0000ffff
-_080239C4: .4byte gBattlescriptCurrInstr
-_080239C8:
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, _08023A64 @ =gActiveBank
- strb r0, [r1]
- ldr r0, _08023A68 @ =gBattlePartyID
- ldrb r2, [r1]
- lsls r1, r2, 1
- adds r1, r0
- ldr r0, _08023A6C @ =0x02000000
- ldr r3, _08023A70 @ =0x00016018
- adds r0, r3
- ldrh r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bne _08023A08
- ldr r3, _08023A74 @ =gBattleMons
- movs r0, 0x58
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _08023A08
- adds r0, r2, r3
- adds r1, r5, 0
- bl GiveMoveToBattleMon
-_08023A08:
- ldr r0, _08023A78 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08023A54
- movs r0, 0x2
- bl GetBankByPlayerAI
- ldr r1, _08023A64 @ =gActiveBank
- strb r0, [r1]
- ldr r0, _08023A68 @ =gBattlePartyID
- ldrb r2, [r1]
- lsls r1, r2, 1
- adds r1, r0
- ldr r0, _08023A6C @ =0x02000000
- ldr r3, _08023A70 @ =0x00016018
- adds r0, r3
- ldrh r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bne _08023A54
- ldr r3, _08023A74 @ =gBattleMons
- movs r0, 0x58
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _08023A54
- adds r0, r2, r3
- adds r1, r5, 0
- bl GiveMoveToBattleMon
-_08023A54:
- ldr r0, _08023A7C @ =gBattlescriptCurrInstr
- str r6, [r0]
-_08023A58:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08023A64: .4byte gActiveBank
-_08023A68: .4byte gBattlePartyID
-_08023A6C: .4byte 0x02000000
-_08023A70: .4byte 0x00016018
-_08023A74: .4byte gBattleMons
-_08023A78: .4byte gBattleTypeFlags
-_08023A7C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk59_8025230
-
- thumb_func_start sub_8023A80
-sub_8023A80: @ 8023A80
- push {r4,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_802BBD4
- ldr r4, _08023AC8 @ =gUnknown_03004210
- ldr r1, _08023ACC @ =gUnknown_08400D7A
- movs r2, 0x80
- lsls r2, 1
- movs r0, 0x9
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x19
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- ldr r1, _08023AD0 @ =0x0000ffff
- ldr r3, _08023AD4 @ =0x00002d9f
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0
- movs r2, 0xC
- bl sub_814A5C0
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08023AC8: .4byte gUnknown_03004210
-_08023ACC: .4byte gUnknown_08400D7A
-_08023AD0: .4byte 0x0000ffff
-_08023AD4: .4byte 0x00002d9f
- thumb_func_end sub_8023A80
-
- thumb_func_start sub_8023AD8
-sub_8023AD8: @ 8023AD8
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0x18
- movs r1, 0x8
- movs r2, 0x1D
- movs r3, 0xD
- bl sub_802BBD4
- bl DestroyMenuCursor
- add sp, 0x4
- pop {r0}
- bx r0
- thumb_func_end sub_8023AD8
-
- thumb_func_start sub_8023AF8
-sub_8023AF8: @ 8023AF8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r1, _08023B24 @ =gActiveBank
- movs r0, 0
- strb r0, [r1]
- ldr r1, _08023B28 @ =0x02000000
- ldr r2, _08023B2C @ =0x0001601a
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0x5
- bls _08023B18
- b _08023E5C
-_08023B18:
- lsls r0, 2
- ldr r1, _08023B30 @ =_08023B34
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08023B24: .4byte gActiveBank
-_08023B28: .4byte 0x02000000
-_08023B2C: .4byte 0x0001601a
-_08023B30: .4byte _08023B34
- .align 2, 0
-_08023B34:
- .4byte _08023B4C
- .4byte _08023B74
- .4byte _08023C30
- .4byte _08023C84
- .4byte _08023E38
- .4byte _08023E4C
-_08023B4C:
- bl sub_8023A80
- ldr r1, _08023B68 @ =0x02000000
- ldr r0, _08023B6C @ =0x0001601a
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, _08023B70 @ =gBattleCommunication
- strb r2, [r0, 0x1]
- bl sub_802BC6C
- b _08023E5C
- .align 2, 0
-_08023B68: .4byte 0x02000000
-_08023B6C: .4byte 0x0001601a
-_08023B70: .4byte gBattleCommunication
-_08023B74:
- ldr r0, _08023BFC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08023B9A
- ldr r4, _08023C00 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08023B9A
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08023B9A:
- ldr r0, _08023BFC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08023BC0
- ldr r4, _08023C00 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08023BC0
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08023BC0:
- ldr r0, _08023BFC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08023C0C
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08023C00 @ =gBattleCommunication
- ldrb r4, [r0, 0x1]
- cmp r4, 0
- bne _08023C1C
- bl sub_8023AD8
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _08023C04 @ =0x02000000
- ldr r2, _08023C08 @ =0x0001601a
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- b _08023E5A
- .align 2, 0
-_08023BFC: .4byte gMain
-_08023C00: .4byte gBattleCommunication
-_08023C04: .4byte 0x02000000
-_08023C08: .4byte 0x0001601a
-_08023C0C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08023C16
- b _08023E5C
-_08023C16:
- movs r0, 0x5
- bl PlaySE
-_08023C1C:
- ldr r0, _08023C28 @ =0x02000000
- ldr r1, _08023C2C @ =0x0001601a
- adds r0, r1
- movs r1, 0x4
- strb r1, [r0]
- b _08023E5C
- .align 2, 0
-_08023C28: .4byte 0x02000000
-_08023C2C: .4byte 0x0001601a
-_08023C30:
- ldr r0, _08023C68 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08023C3E
- b _08023E5C
-_08023C3E:
- ldr r0, _08023C6C @ =gPlayerParty
- ldr r2, _08023C70 @ =0x00016018
- adds r1, r5, r2
- ldrb r1, [r1]
- ldr r2, _08023C74 @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _08023C78 @ =ReshowBattleScreenAfterMenu
- ldr r4, _08023C7C @ =word_2024E82
- ldrh r4, [r4]
- str r4, [sp]
- bl sub_809D9F0
- ldr r0, _08023C80 @ =0x0001601a
- adds r1, r5, r0
- ldrb r0, [r1]
- adds r0, 0x1
- b _08023E5A
- .align 2, 0
-_08023C68: .4byte gPaletteFade
-_08023C6C: .4byte gPlayerParty
-_08023C70: .4byte 0x00016018
-_08023C74: .4byte gPlayerPartyCount
-_08023C78: .4byte ReshowBattleScreenAfterMenu
-_08023C7C: .4byte word_2024E82
-_08023C80: .4byte 0x0001601a
-_08023C84:
- ldr r0, _08023CB4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08023C92
- b _08023E5C
-_08023C92:
- ldr r0, _08023CB8 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _08023CBC @ =sub_800F808
- cmp r1, r0
- beq _08023C9E
- b _08023E5C
-_08023C9E:
- bl sub_809FA30
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bne _08023CC8
- ldr r0, _08023CC0 @ =0x02000000
- ldr r1, _08023CC4 @ =0x0001601a
- adds r0, r1
- strb r5, [r0]
- b _08023E5C
- .align 2, 0
-_08023CB4: .4byte gPaletteFade
-_08023CB8: .4byte gMain
-_08023CBC: .4byte sub_800F808
-_08023CC0: .4byte 0x02000000
-_08023CC4: .4byte 0x0001601a
-_08023CC8:
- ldr r2, _08023D08 @ =0x02000000
- mov r9, r2
- ldr r6, _08023D0C @ =0x00016018
- add r6, r9
- ldrb r0, [r6]
- movs r1, 0x64
- mov r8, r1
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- ldr r7, _08023D10 @ =gPlayerParty
- adds r0, r7
- adds r1, r5, 0
- adds r1, 0xD
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl IsHMMove2
- cmp r0, 0
- beq _08023D20
- ldr r0, _08023D14 @ =0x0000013f
- ldr r1, _08023D18 @ =gActiveBank
- ldrb r1, [r1]
- bl PrepareStringBattle
- ldr r1, _08023D1C @ =0x0001601a
- add r1, r9
- movs r0, 0x5
- b _08023E5A
- .align 2, 0
-_08023D08: .4byte 0x02000000
-_08023D0C: .4byte 0x00016018
-_08023D10: .4byte gPlayerParty
-_08023D14: .4byte 0x0000013f
-_08023D18: .4byte gActiveBank
-_08023D1C: .4byte 0x0001601a
-_08023D20:
- ldr r3, _08023E10 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- ldr r1, _08023E14 @ =gBattleTextBuff2
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- strb r4, [r1, 0x2]
- lsrs r0, r4, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldrb r0, [r6]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- adds r1, r5, 0
- bl RemoveMonPPBonus
- ldrb r0, [r6]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- ldr r7, _08023E18 @ =word_2024E82
- ldrh r1, [r7]
- adds r2, r5, 0
- bl SetMonMoveSlot
- ldr r0, _08023E1C @ =gBattlePartyID
- ldrh r0, [r0]
- ldrb r6, [r6]
- cmp r0, r6
- bne _08023DB0
- ldr r4, _08023E20 @ =gBattleMons
- ldr r0, [r4, 0x50]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _08023DB0
- ldr r0, _08023E24 @ =gDisableStructs
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, _08023E28 @ =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08023DB0
- adds r0, r4, 0
- adds r1, r5, 0
- bl RemoveBattleMonPPBonus
- ldrh r1, [r7]
- adds r0, r4, 0
- adds r2, r5, 0
- bl SetBattleMonMoveSlot
-_08023DB0:
- ldr r0, _08023E2C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08023E5C
- ldr r0, _08023E1C @ =gBattlePartyID
- ldr r1, _08023E30 @ =0x02000000
- ldr r2, _08023E34 @ =0x00016018
- adds r1, r2
- ldrh r0, [r0, 0x4]
- ldrb r1, [r1]
- cmp r0, r1
- bne _08023E5C
- ldr r4, _08023E20 @ =gBattleMons
- movs r1, 0x80
- lsls r1, 1
- adds r0, r4, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _08023E5C
- ldr r0, _08023E24 @ =gDisableStructs
- adds r0, 0x50
- ldrb r1, [r0]
- lsrs r1, 4
- ldr r2, _08023E28 @ =gBitTable
- lsls r0, r5, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08023E5C
- adds r4, 0xB0
- adds r0, r4, 0
- adds r1, r5, 0
- bl RemoveBattleMonPPBonus
- ldr r0, _08023E18 @ =word_2024E82
- ldrh r1, [r0]
- adds r0, r4, 0
- adds r2, r5, 0
- bl SetBattleMonMoveSlot
- b _08023E5C
- .align 2, 0
-_08023E10: .4byte gBattlescriptCurrInstr
-_08023E14: .4byte gBattleTextBuff2
-_08023E18: .4byte word_2024E82
-_08023E1C: .4byte gBattlePartyID
-_08023E20: .4byte gBattleMons
-_08023E24: .4byte gDisableStructs
-_08023E28: .4byte gBitTable
-_08023E2C: .4byte gBattleTypeFlags
-_08023E30: .4byte 0x02000000
-_08023E34: .4byte 0x00016018
-_08023E38:
- bl sub_8023AD8
- ldr r1, _08023E48 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08023E5C
- .align 2, 0
-_08023E48: .4byte gBattlescriptCurrInstr
-_08023E4C:
- ldr r0, _08023E6C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08023E5C
- ldr r2, _08023E70 @ =0x0001601a
- adds r1, r5, r2
- movs r0, 0x2
-_08023E5A:
- strb r0, [r1]
-_08023E5C:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08023E6C: .4byte gBattleExecBuffer
-_08023E70: .4byte 0x0001601a
- thumb_func_end sub_8023AF8
-
- thumb_func_start atk5B_80256E0
-atk5B_80256E0: @ 8023E74
- push {r4,r5,lr}
- ldr r0, _08023E88 @ =0x02000000
- ldr r1, _08023E8C @ =0x0001601a
- adds r5, r0, r1
- ldrb r4, [r5]
- cmp r4, 0
- beq _08023E90
- cmp r4, 0x1
- beq _08023EA8
- b _08023F78
- .align 2, 0
-_08023E88: .4byte 0x02000000
-_08023E8C: .4byte 0x0001601a
-_08023E90:
- bl sub_8023A80
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- ldr r0, _08023EA4 @ =gBattleCommunication
- strb r4, [r0, 0x1]
- bl sub_802BC6C
- b _08023F78
- .align 2, 0
-_08023EA4: .4byte gBattleCommunication
-_08023EA8:
- ldr r0, _08023F2C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08023ECE
- ldr r4, _08023F30 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08023ECE
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08023ECE:
- ldr r0, _08023F2C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08023EF4
- ldr r4, _08023F30 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08023EF4
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08023EF4:
- ldr r0, _08023F2C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08023F4C
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08023F30 @ =gBattleCommunication
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _08023F38
- ldr r3, _08023F34 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08023F40
- .align 2, 0
-_08023F2C: .4byte gMain
-_08023F30: .4byte gBattleCommunication
-_08023F34: .4byte gBattlescriptCurrInstr
-_08023F38:
- ldr r1, _08023F48 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08023F40:
- bl sub_8023AD8
- b _08023F78
- .align 2, 0
-_08023F48: .4byte gBattlescriptCurrInstr
-_08023F4C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08023F78
- movs r0, 0x5
- bl PlaySE
- ldr r3, _08023F80 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- bl sub_8023AD8
-_08023F78:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08023F80: .4byte gBattlescriptCurrInstr
- thumb_func_end atk5B_80256E0
-
- thumb_func_start atk5C_cmd5c
-atk5C_cmd5c: @ 8023F84
- push {r4,lr}
- ldr r4, _08023FF0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r2, _08023FF4 @ =gActiveBank
- strb r0, [r2]
- ldr r0, _08023FF8 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- bne _08024008
- ldr r0, _08023FFC @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 1
- ands r0, r1
- cmp r0, 0
- beq _08023FD6
- ldr r1, _08024000 @ =gBattleMons
- ldrb r2, [r2]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _08023FD6
- ldr r0, _08024004 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _08024008
-_08023FD6:
- movs r0, 0
- bl EmitHitAnimation
- ldr r0, _08023FF4 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _08023FF0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- b _0802400E
- .align 2, 0
-_08023FF0: .4byte gBattlescriptCurrInstr
-_08023FF4: .4byte gActiveBank
-_08023FF8: .4byte gBattleMoveFlags
-_08023FFC: .4byte gHitMarker
-_08024000: .4byte gBattleMons
-_08024004: .4byte gDisableStructs
-_08024008:
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
-_0802400E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atk5C_cmd5c
-
- thumb_func_start sub_8024014
-sub_8024014: @ 8024014
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- movs r5, 0
- ldr r0, _08024048 @ =gTrainerBattleOpponent
- ldrh r2, [r0]
- movs r1, 0x80
- lsls r1, 3
- cmp r2, r1
- bne _08024058
- ldr r0, _0802404C @ =0x02017000
- adds r1, r0, 0
- adds r1, 0x94
- ldrb r2, [r1]
- ldr r1, _08024050 @ =0xfffff056
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r4, r2, 0
- muls r4, r0
- ldr r0, _08024054 @ =gSaveBlock1 + 0x490
- mov r8, r0
- b _08024140
- .align 2, 0
-_08024048: .4byte gTrainerBattleOpponent
-_0802404C: .4byte 0x02017000
-_08024050: .4byte 0xfffff056
-_08024054: .4byte gSaveBlock1 + 0x490
-_08024058:
- ldr r2, _08024074 @ =gTrainers
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r3, r0, 3
- adds r4, r3, r2
- ldrb r1, [r4]
- cmp r1, 0x1
- beq _080240AE
- cmp r1, 0x1
- bgt _08024078
- cmp r1, 0
- beq _08024082
- b _080240C4
- .align 2, 0
-_08024074: .4byte gTrainers
-_08024078:
- cmp r1, 0x2
- beq _08024098
- cmp r1, 0x3
- beq _080240AE
- b _080240C4
-_08024082:
- adds r0, r2, 0
- adds r0, 0x24
- adds r0, r3, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, r1
- subs r0, 0x8
- b _080240C2
-_08024098:
- adds r0, r2, 0
- adds r0, 0x24
- adds r0, r3, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, r1
- subs r0, 0x8
- b _080240C2
-_080240AE:
- adds r0, r2, 0
- adds r0, 0x24
- adds r0, r3, r0
- ldr r1, [r0]
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- subs r0, 0x10
-_080240C2:
- ldrb r5, [r0, 0x2]
-_080240C4:
- ldr r0, _08024120 @ =gTrainerMoney
- lsls r1, r6, 2
- adds r3, r1, r0
- ldrb r1, [r3]
- mov r12, r0
- lsls r4, r5, 2
- ldr r5, _08024124 @ =0x02000000
- ldr r7, _08024128 @ =gBattleTypeFlags
- ldr r0, _0802412C @ =gSaveBlock1 + 0x490
- mov r8, r0
- cmp r1, 0xFF
- beq _080240FE
- ldr r2, _08024130 @ =gTrainers
- ldr r0, _08024134 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r2, [r0, 0x1]
- adds r1, r3, 0
-_080240EE:
- ldrb r0, [r1]
- cmp r0, r2
- beq _080240FE
- adds r1, 0x4
- adds r6, 0x1
- ldrb r0, [r1]
- cmp r0, 0xFF
- bne _080240EE
-_080240FE:
- ldr r1, _08024138 @ =0x00016056
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r3, r4, 0
- muls r3, r0
- lsls r0, r6, 2
- add r0, r12
- ldrb r2, [r0, 0x1]
- ldrh r1, [r7]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802413C
- lsls r0, r2, 1
- adds r4, r3, 0
- muls r4, r0
- b _08024140
- .align 2, 0
-_08024120: .4byte gTrainerMoney
-_08024124: .4byte 0x02000000
-_08024128: .4byte gBattleTypeFlags
-_0802412C: .4byte gSaveBlock1 + 0x490
-_08024130: .4byte gTrainers
-_08024134: .4byte gTrainerBattleOpponent
-_08024138: .4byte 0x00016056
-_0802413C:
- adds r4, r3, 0
- muls r4, r2
-_08024140:
- mov r0, r8
- adds r1, r4, 0
- bl sub_80B79B8
- ldr r1, _0802418C @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x4
- strb r0, [r1, 0x2]
- movs r0, 0x5
- strb r0, [r1, 0x3]
- strb r4, [r1, 0x4]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r4
- lsrs r0, 8
- strb r0, [r1, 0x5]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r4
- lsrs r0, 16
- strb r0, [r1, 0x6]
- lsrs r0, r4, 24
- strb r0, [r1, 0x7]
- movs r0, 0xFF
- strb r0, [r1, 0x8]
- ldr r1, _08024190 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802418C: .4byte gBattleTextBuff1
-_08024190: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8024014
-
- thumb_func_start atk5E_8025A70
-atk5E_8025A70: @ 8024194
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, _080241B8 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r6, _080241BC @ =gActiveBank
- strb r0, [r6]
- ldr r5, _080241C0 @ =gBattleCommunication
- ldrb r0, [r5]
- mov r8, r4
- cmp r0, 0
- beq _080241C4
- cmp r0, 0x1
- beq _080241DC
- b _08024230
- .align 2, 0
-_080241B8: .4byte gBattlescriptCurrInstr
-_080241BC: .4byte gActiveBank
-_080241C0: .4byte gBattleCommunication
-_080241C4:
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl EmitGetAttributes
- ldrb r0, [r6]
- bl MarkBufferBankForExecution
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- b _08024230
-_080241DC:
- ldr r0, _0802423C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08024230
- ldrb r0, [r6]
- lsls r0, 9
- ldr r1, _08024240 @ =gUnknown_02024264
- adds r0, r1
- mov r12, r0
- movs r2, 0
- adds r4, r6, 0
- movs r5, 0x58
- ldr r6, _08024244 @ =gUnknown_02024AA4
- adds r7, r6, 0
- subs r7, 0x18
- mov r3, r12
- adds r3, 0xC
-_080241FE:
- lsls r1, r2, 1
- ldrb r0, [r4]
- muls r0, r5
- adds r1, r0
- adds r1, r7
- ldrh r0, [r3]
- strh r0, [r1]
- ldrb r0, [r4]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r2, r1
- adds r1, r6
- mov r0, r12
- adds r0, 0x24
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r3, 0x2
- adds r2, 0x1
- cmp r2, 0x3
- ble _080241FE
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08024230:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802423C: .4byte gBattleExecBuffer
-_08024240: .4byte gUnknown_02024264
-_08024244: .4byte gUnknown_02024AA4
- thumb_func_end atk5E_8025A70
-
- thumb_func_start atk5F_8025B24
-atk5F_8025B24: @ 8024248
- push {lr}
- ldr r0, _08024270 @ =gActiveBank
- ldr r2, _08024274 @ =gBankAttacker
- ldrb r3, [r2]
- strb r3, [r0]
- ldr r1, _08024278 @ =gBankTarget
- ldrb r0, [r1]
- strb r0, [r2]
- strb r3, [r1]
- ldr r2, _0802427C @ =gHitMarker
- ldr r1, [r2]
- movs r3, 0x80
- lsls r3, 5
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _08024284
- ldr r0, _08024280 @ =0xffffefff
- ands r1, r0
- b _08024286
- .align 2, 0
-_08024270: .4byte gActiveBank
-_08024274: .4byte gBankAttacker
-_08024278: .4byte gBankTarget
-_0802427C: .4byte gHitMarker
-_08024280: .4byte 0xffffefff
-_08024284:
- orrs r1, r3
-_08024286:
- str r1, [r2]
- ldr r1, _08024294 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08024294: .4byte gBattlescriptCurrInstr
- thumb_func_end atk5F_8025B24
-
- thumb_func_start atk60_cmd60
-atk60_cmd60: @ 8024298
- push {lr}
- ldr r0, _080242C0 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080242B2
- ldr r0, _080242C4 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl IncrementGameStat
-_080242B2:
- ldr r1, _080242C4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080242C0: .4byte gBankAttacker
-_080242C4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk60_cmd60
-
- thumb_func_start atk61_8025BA4
-atk61_8025BA4: @ 80242C8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x30
- ldr r0, _0802432C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0802437C
- ldr r0, _08024330 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _08024334 @ =gActiveBank
- strb r0, [r1]
- ldrb r0, [r1]
- bl GetBankSide
- lsls r0, 24
- ldr r1, _08024338 @ =gEnemyParty
- mov r8, r1
- cmp r0, 0
- bne _080242FA
- ldr r0, _0802433C @ =gPlayerParty
- mov r8, r0
-_080242FA:
- movs r7, 0
- add r6, sp, 0x4
- mov r5, sp
-_08024300:
- movs r0, 0x64
- muls r0, r7
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08024324
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- bne _08024344
-_08024324:
- ldr r0, _08024340 @ =0x0000ffff
- strh r0, [r5]
- movs r0, 0
- b _08024356
- .align 2, 0
-_0802432C: .4byte gBattleExecBuffer
-_08024330: .4byte gBattlescriptCurrInstr
-_08024334: .4byte gActiveBank
-_08024338: .4byte gEnemyParty
-_0802433C: .4byte gPlayerParty
-_08024340: .4byte 0x0000ffff
-_08024344:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x37
- bl GetMonData
-_08024356:
- str r0, [r6]
- adds r6, 0x8
- adds r5, 0x8
- adds r7, 0x1
- cmp r7, 0x5
- ble _08024300
- movs r0, 0
- mov r1, sp
- movs r2, 0x1
- bl dp01_build_cmdbuf_x30_TODO
- ldr r0, _08024388 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _0802438C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0802437C:
- add sp, 0x30
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08024388: .4byte gActiveBank
-_0802438C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk61_8025BA4
-
- thumb_func_start atk62_08025C6C
-atk62_08025C6C: @ 8024390
- push {r4,r5,lr}
- ldr r5, _080243B8 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _080243BC @ =gActiveBank
- strb r0, [r4]
- movs r0, 0
- bl dp01_build_cmdbuf_x31_31_31_31
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080243B8: .4byte gBattlescriptCurrInstr
-_080243BC: .4byte gActiveBank
- thumb_func_end atk62_08025C6C
-
- thumb_func_start atk63_jumptoattack
-atk63_jumptoattack: @ 80243C0
- push {r4,lr}
- ldr r0, _080243D8 @ =gBattlescriptCurrInstr
- ldr r1, [r0]
- ldrb r1, [r1, 0x1]
- adds r4, r0, 0
- cmp r1, 0
- beq _080243E4
- ldr r0, _080243DC @ =gCurrentMove
- ldr r1, _080243E0 @ =gUnknown_02024BEA
- ldrh r1, [r1]
- strh r1, [r0]
- b _080243F2
- .align 2, 0
-_080243D8: .4byte gBattlescriptCurrInstr
-_080243DC: .4byte gCurrentMove
-_080243E0: .4byte gUnknown_02024BEA
-_080243E4:
- ldr r2, _08024410 @ =gUnknown_02024BE8
- ldr r1, _08024414 @ =gCurrentMove
- ldr r0, _08024418 @ =gUnknown_02024BEA
- ldrh r0, [r0]
- strh r0, [r1]
- strh r0, [r2]
- adds r0, r1, 0
-_080243F2:
- ldr r3, _0802441C @ =gUnknown_081D6BBC
- ldr r2, _08024420 @ =gBattleMoves
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08024410: .4byte gUnknown_02024BE8
-_08024414: .4byte gCurrentMove
-_08024418: .4byte gUnknown_02024BEA
-_0802441C: .4byte gUnknown_081D6BBC
-_08024420: .4byte gBattleMoves
- thumb_func_end atk63_jumptoattack
-
- thumb_func_start atk64_statusanimation
-atk64_statusanimation: @ 8024424
- push {r4,lr}
- ldr r0, _08024494 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _0802448C
- ldr r0, _08024498 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _0802449C @ =gActiveBank
- strb r0, [r4]
- ldr r1, _080244A0 @ =gStatuses3
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080244A4 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _08024484
- ldr r0, _080244A8 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _08024484
- ldr r0, _080244AC @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08024484
- ldr r1, _080244B0 @ =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r0, r1
- ldr r2, [r0]
- movs r0, 0
- movs r1, 0
- bl EmitStatusAnimation
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_08024484:
- ldr r1, _08024498 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_0802448C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08024494: .4byte gBattleExecBuffer
-_08024498: .4byte gBattlescriptCurrInstr
-_0802449C: .4byte gActiveBank
-_080244A0: .4byte gStatuses3
-_080244A4: .4byte 0x000400c0
-_080244A8: .4byte gDisableStructs
-_080244AC: .4byte gHitMarker
-_080244B0: .4byte gBattleMons
- thumb_func_end atk64_statusanimation
-
- thumb_func_start atk65_8025D90
-atk65_8025D90: @ 80244B4
- push {r4,r5,lr}
- ldr r0, _0802453C @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08024534
- ldr r4, _08024540 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r5, _08024544 @ =gActiveBank
- strb r0, [r5]
- ldr r1, [r4]
- ldrb r3, [r1, 0x2]
- ldrb r0, [r1, 0x3]
- lsls r0, 8
- orrs r3, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 16
- orrs r3, r0
- ldrb r0, [r1, 0x5]
- lsls r0, 24
- orrs r3, r0
- ldr r1, _08024548 @ =gStatuses3
- ldrb r2, [r5]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _0802454C @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _0802452C
- ldr r0, _08024550 @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _0802452C
- ldr r0, _08024554 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802452C
- ldr r1, _08024558 @ =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r2, [r0]
- ands r2, r3
- movs r0, 0
- movs r1, 0x1
- bl EmitStatusAnimation
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
-_0802452C:
- ldr r1, _08024540 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x6
- str r0, [r1]
-_08024534:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802453C: .4byte gBattleExecBuffer
-_08024540: .4byte gBattlescriptCurrInstr
-_08024544: .4byte gActiveBank
-_08024548: .4byte gStatuses3
-_0802454C: .4byte 0x000400c0
-_08024550: .4byte gDisableStructs
-_08024554: .4byte gHitMarker
-_08024558: .4byte gBattleMons
- thumb_func_end atk65_8025D90
-
- thumb_func_start atk66_8025E38
-atk66_8025E38: @ 802455C
- push {r4,r5,lr}
- ldr r0, _080245D4 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _080245CE
- ldr r4, _080245D8 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r5, _080245DC @ =gActiveBank
- strb r0, [r5]
- ldr r4, [r4]
- ldrb r2, [r4, 0x3]
- ldrb r0, [r4, 0x4]
- lsls r0, 8
- orrs r2, r0
- ldrb r0, [r4, 0x5]
- lsls r0, 16
- orrs r2, r0
- ldrb r0, [r4, 0x6]
- lsls r0, 24
- orrs r2, r0
- ldr r1, _080245E0 @ =gStatuses3
- ldrb r3, [r5]
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080245E4 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _080245C6
- ldr r0, _080245E8 @ =gDisableStructs
- lsls r1, r3, 3
- subs r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0xA]
- cmp r0, 0
- bne _080245C6
- ldr r0, _080245EC @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080245C6
- ldrb r1, [r4, 0x2]
- movs r0, 0
- bl EmitStatusAnimation
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
-_080245C6:
- ldr r1, _080245D8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x7
- str r0, [r1]
-_080245CE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080245D4: .4byte gBattleExecBuffer
-_080245D8: .4byte gBattlescriptCurrInstr
-_080245DC: .4byte gActiveBank
-_080245E0: .4byte gStatuses3
-_080245E4: .4byte 0x000400c0
-_080245E8: .4byte gDisableStructs
-_080245EC: .4byte gHitMarker
- thumb_func_end atk66_8025E38
-
- thumb_func_start atk67_8025ECC
-atk67_8025ECC: @ 80245F0
- push {r4,r5,lr}
- ldr r5, _08024600 @ =gBattleCommunication
- ldrb r4, [r5]
- cmp r4, 0
- beq _08024604
- cmp r4, 0x1
- beq _08024616
- b _08024696
- .align 2, 0
-_08024600: .4byte gBattleCommunication
-_08024604:
- bl sub_8023A80
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
- strb r4, [r5, 0x1]
- bl sub_802BC6C
- b _08024696
-_08024616:
- ldr r0, _08024674 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802463A
- ldrb r0, [r5, 0x1]
- cmp r0, 0
- beq _0802463A
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0
- strb r0, [r5, 0x1]
- bl sub_802BC6C
-_0802463A:
- ldr r0, _08024674 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08024660
- ldr r4, _08024678 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08024660
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08024660:
- ldr r0, _08024674 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802467C
- ldr r1, _08024678 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x1]
- b _08024684
- .align 2, 0
-_08024674: .4byte gMain
-_08024678: .4byte gBattleCommunication
-_0802467C:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08024696
-_08024684:
- movs r0, 0x5
- bl PlaySE
- bl sub_8023AD8
- ldr r1, _0802469C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08024696:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802469C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk67_8025ECC
-
- thumb_func_start sub_80246A0
-sub_80246A0: @ 80246A0
- push {r4,r5,lr}
- movs r1, 0
- ldr r2, _080246CC @ =gNoOfAllBanks
- ldr r5, _080246D0 @ =gBattlescriptCurrInstr
- ldrb r0, [r2]
- cmp r1, r0
- bge _080246BE
- ldr r4, _080246D4 @ =gUnknown_02024A76
- movs r3, 0xC
-_080246B2:
- adds r0, r1, r4
- strb r3, [r0]
- adds r1, 0x1
- ldrb r0, [r2]
- cmp r1, r0
- blt _080246B2
-_080246BE:
- ldr r0, [r5]
- adds r0, 0x1
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080246CC: .4byte gNoOfAllBanks
-_080246D0: .4byte gBattlescriptCurrInstr
-_080246D4: .4byte gUnknown_02024A76
- thumb_func_end sub_80246A0
-
- thumb_func_start atk69_8025FE0
-atk69_8025FE0: @ 80246D8
- push {r4-r7,lr}
- ldr r7, _08024700 @ =gBattleMons
- ldr r6, _08024704 @ =gBankTarget
- ldrb r2, [r6]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r0, r7
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _0802470C
- ldr r1, _08024708 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _08024726
- .align 2, 0
-_08024700: .4byte gBattleMons
-_08024704: .4byte gBankTarget
-_08024708: .4byte gEnigmaBerries
-_0802470C:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r6, r0, 24
-_08024726:
- ldr r1, _080247E8 @ =gStringBank
- ldr r5, _080247EC @ =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _08024764
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _08024764
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemBattle
- ldr r2, _080247F0 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
-_08024764:
- ldr r2, _080247F4 @ =gBattleMons
- ldr r3, _080247EC @ =gBankTarget
- ldrb r4, [r3]
- movs r0, 0x58
- muls r0, r4
- adds r1, r2, 0
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 17
- ands r1, r0
- adds r5, r2, 0
- cmp r1, 0
- bne _08024834
- ldr r2, _080247F8 @ =gBattleMoves
- ldr r0, _080247FC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x65
- beq _080247B6
- ldr r0, _08024800 @ =gProtectStructs
- lsls r1, r4, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- cmp r0, 0
- blt _080247B6
- ldr r0, _080247F0 @ =gSpecialStatuses
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _08024834
-_080247B6:
- ldrb r0, [r3]
- movs r4, 0x58
- muls r0, r4
- adds r0, r5
- ldrh r1, [r0, 0x28]
- ldr r2, _08024804 @ =gBattleMoveDamage
- ldr r0, [r2]
- cmp r1, r0
- bgt _08024834
- subs r0, r1, 0x1
- str r0, [r2]
- ldr r1, _08024800 @ =gProtectStructs
- ldrb r3, [r3]
- lsls r0, r3, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- bge _0802480C
- ldr r0, _08024808 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x40
- orrs r1, r2
- strb r1, [r0]
- b _08024834
- .align 2, 0
-_080247E8: .4byte gStringBank
-_080247EC: .4byte gBankTarget
-_080247F0: .4byte gSpecialStatuses
-_080247F4: .4byte gBattleMons
-_080247F8: .4byte gBattleMoves
-_080247FC: .4byte gCurrentMove
-_08024800: .4byte gProtectStructs
-_08024804: .4byte gBattleMoveDamage
-_08024808: .4byte gBattleMoveFlags
-_0802480C:
- ldr r0, _08024844 @ =gSpecialStatuses
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _08024834
- ldr r2, _08024848 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0802484C @ =gLastUsedItem
- adds r0, r3, 0
- muls r0, r4
- adds r0, r5
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
-_08024834:
- ldr r1, _08024850 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08024844: .4byte gSpecialStatuses
-_08024848: .4byte gBattleMoveFlags
-_0802484C: .4byte gLastUsedItem
-_08024850: .4byte gBattlescriptCurrInstr
- thumb_func_end atk69_8025FE0
-
- thumb_func_start atk6A_stash_item_for_side
-atk6A_stash_item_for_side: @ 8024854
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r6, _080248B0 @ =gBattlescriptCurrInstr
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r5, _080248B4 @ =gActiveBank
- strb r0, [r5]
- ldrb r4, [r5]
- lsls r1, r4, 1
- ldr r0, _080248B8 @ =0x020160cc
- adds r1, r0
- ldr r2, _080248BC @ =gBattleMons
- movs r3, 0x58
- adds r0, r4, 0
- muls r0, r3
- adds r0, r2
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
- ldrb r0, [r5]
- muls r0, r3
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldrb r0, [r5]
- muls r0, r3
- adds r2, 0x2E
- adds r0, r2
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r0, [r6]
- adds r0, 0x2
- str r0, [r6]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080248B0: .4byte gBattlescriptCurrInstr
-_080248B4: .4byte gActiveBank
-_080248B8: .4byte 0x020160cc
-_080248BC: .4byte gBattleMons
- thumb_func_end atk6A_stash_item_for_side
-
- thumb_func_start sub_80248C0
-sub_80248C0: @ 80248C0
- ldr r1, _080248EC @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x7
- strb r0, [r1, 0x1]
- ldr r2, _080248F0 @ =gBankAttacker
- ldrb r0, [r2]
- strb r0, [r1, 0x2]
- ldr r3, _080248F4 @ =gBattlePartyID
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _080248F8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_080248EC: .4byte gBattleTextBuff1
-_080248F0: .4byte gBankAttacker
-_080248F4: .4byte gBattlePartyID
-_080248F8: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80248C0
-
- thumb_func_start sub_80248FC
-sub_80248FC: @ 80248FC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r1, 0
- movs r7, 0
- ldr r0, _08024928 @ =0x02000000
- mov r10, r0
- ldr r4, _0802492C @ =0x0001609c
- add r4, r10
- ldrb r0, [r4]
- cmp r0, 0x1
- bne _0802491C
- b _08024AF4
-_0802491C:
- cmp r0, 0x1
- bgt _08024930
- cmp r0, 0
- beq _0802493E
- b _08024C38
- .align 2, 0
-_08024928: .4byte 0x02000000
-_0802492C: .4byte 0x0001609c
-_08024930:
- cmp r0, 0x2
- bne _08024936
- b _08024C04
-_08024936:
- cmp r0, 0x3
- bne _0802493C
- b _08024C30
-_0802493C:
- b _08024C38
-_0802493E:
- str r1, [sp]
- movs r0, 0xB
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x7
- bl sub_802BBD4
- ldr r0, _0802499C @ =gStringVar4
- ldr r1, _080249A0 @ =gUnknown_08400D9F
- bl StringCopy
- adds r5, r0, 0
- movs r1, 0
- mov r8, r1
-_0802495A:
- movs r2, 0
- mov r9, r2
- ldr r0, _080249A4 @ =gUnknown_0840165C
- mov r1, r8
- lsls r4, r1, 2
- adds r0, r4, r0
- ldr r1, [r0]
- adds r0, r5, 0
- bl StringAppend
- adds r5, r0, 0
- ldr r0, _080249A8 @ =0x02000000
- ldr r2, _080249AC @ =0x00016018
- adds r0, r2
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080249B0 @ =gPlayerParty
- adds r0, r1
- ldr r1, _080249B4 @ =gLevelUpStatBoxStats
- add r1, r8
- ldrb r1, [r1]
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- mov r0, r8
- cmp r0, 0x5
- bhi _08024A1A
- ldr r0, _080249B8 @ =_080249BC
- adds r0, r4, r0
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802499C: .4byte gStringVar4
-_080249A0: .4byte gUnknown_08400D9F
-_080249A4: .4byte gUnknown_0840165C
-_080249A8: .4byte 0x02000000
-_080249AC: .4byte 0x00016018
-_080249B0: .4byte gPlayerParty
-_080249B4: .4byte gLevelUpStatBoxStats
-_080249B8: .4byte _080249BC
- .align 2, 0
-_080249BC:
- .4byte _080249D4
- .4byte _080249E0
- .4byte _080249EC
- .4byte _080249F8
- .4byte _08024A04
- .4byte _08024A10
-_080249D4:
- ldr r0, _080249DC @ =0x02017180
- ldrh r0, [r0]
- b _08024A14
- .align 2, 0
-_080249DC: .4byte 0x02017180
-_080249E0:
- ldr r0, _080249E8 @ =0x02017180
- ldrh r0, [r0, 0x8]
- b _08024A14
- .align 2, 0
-_080249E8: .4byte 0x02017180
-_080249EC:
- ldr r0, _080249F4 @ =0x02017180
- ldrh r0, [r0, 0x2]
- b _08024A14
- .align 2, 0
-_080249F4: .4byte 0x02017180
-_080249F8:
- ldr r0, _08024A00 @ =0x02017180
- ldrh r0, [r0, 0xA]
- b _08024A14
- .align 2, 0
-_08024A00: .4byte 0x02017180
-_08024A04:
- ldr r0, _08024A0C @ =0x02017180
- ldrh r0, [r0, 0x4]
- b _08024A14
- .align 2, 0
-_08024A0C: .4byte 0x02017180
-_08024A10:
- ldr r0, _08024A54 @ =0x02017180
- ldrh r0, [r0, 0x6]
-_08024A14:
- subs r0, r1, r0
- lsls r0, 16
- lsrs r7, r0, 16
-_08024A1A:
- lsls r0, r7, 16
- asrs r0, 16
- cmp r0, 0
- bge _08024A2C
- negs r0, r0
- lsls r0, 16
- lsrs r7, r0, 16
- movs r1, 0x1
- add r9, r1
-_08024A2C:
- movs r0, 0xFC
- strb r0, [r5]
- movs r0, 0x13
- strb r0, [r5, 0x1]
- movs r1, 0x1
- mov r2, r8
- ands r1, r2
- lsls r0, r1, 3
- adds r0, r1
- adds r0, 0x5
- lsls r0, 3
- adds r0, 0x6
- strb r0, [r5, 0x2]
- adds r5, 0x3
- mov r0, r9
- cmp r0, 0
- beq _08024A5C
- ldr r1, _08024A58 @ =gUnknown_08400DAC
- b _08024A5E
- .align 2, 0
-_08024A54: .4byte 0x02017180
-_08024A58: .4byte gUnknown_08400DAC
-_08024A5C:
- ldr r1, _08024AA4 @ =gUnknown_08400DAA
-_08024A5E:
- adds r0, r5, 0
- bl StringCopy
- adds r5, r0, 0
- movs r6, 0xFC
- strb r6, [r5]
- movs r4, 0x14
- strb r4, [r5, 0x1]
- movs r0, 0x6
- strb r0, [r5, 0x2]
- adds r5, 0x3
- lsls r1, r7, 16
- asrs r1, 16
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- strb r6, [r5]
- strb r4, [r5, 0x1]
- movs r0, 0
- strb r0, [r5, 0x2]
- adds r5, 0x3
- movs r0, 0x1
- mov r1, r8
- ands r0, r1
- cmp r0, 0
- beq _08024AA8
- movs r0, 0xFE
- strb r0, [r5]
- movs r0, 0xFF
- strb r0, [r5, 0x1]
- adds r5, 0x1
- b _08024AB8
- .align 2, 0
-_08024AA4: .4byte gUnknown_08400DAA
-_08024AA8:
- strb r6, [r5]
- movs r0, 0x11
- strb r0, [r5, 0x1]
- movs r0, 0x8
- strb r0, [r5, 0x2]
- adds r5, 0x3
- movs r0, 0xFF
- strb r0, [r5]
-_08024AB8:
- movs r2, 0x1
- add r8, r2
- mov r0, r8
- cmp r0, 0x5
- bgt _08024AC4
- b _0802495A
-_08024AC4:
- ldr r4, _08024AE4 @ =gUnknown_03004210
- ldr r1, _08024AE8 @ =gStringVar4
- adds r2, 0xFF
- movs r0, 0x1
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0xC
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- ldr r1, _08024AEC @ =0x02000000
- ldr r2, _08024AF0 @ =0x0001609c
- adds r1, r2
- b _08024BEA
- .align 2, 0
-_08024AE4: .4byte gUnknown_03004210
-_08024AE8: .4byte gStringVar4
-_08024AEC: .4byte 0x02000000
-_08024AF0: .4byte 0x0001609c
-_08024AF4:
- ldr r0, _08024B94 @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0
- bne _08024AFE
- b _08024C38
-_08024AFE:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08024B98 @ =gStringVar4
- ldr r1, _08024B9C @ =gUnknown_08400D9F
- bl StringCopy
- adds r5, r0, 0
- movs r0, 0
- mov r8, r0
- mov r9, r0
- movs r6, 0xFC
- movs r7, 0x14
- ldr r1, _08024BA0 @ =0x00016018
- add r10, r1
-_08024B1C:
- ldr r1, _08024BA4 @ =gUnknown_0840165C
- mov r2, r8
- lsls r0, r2, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r5, 0
- bl StringAppend
- adds r5, r0, 0
- mov r0, r10
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08024BA8 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08024BAC @ =gLevelUpStatBoxStats
- add r1, r8
- ldrb r1, [r1]
- bl GetMonData
- adds r1, r0, 0
- strb r6, [r5]
- movs r0, 0x13
- strb r0, [r5, 0x1]
- movs r4, 0x1
- mov r2, r8
- ands r4, r2
- lsls r0, r4, 3
- adds r0, r4
- adds r0, 0x5
- lsls r0, 3
- adds r0, 0x6
- strb r0, [r5, 0x2]
- adds r5, 0x3
- strb r6, [r5]
- strb r7, [r5, 0x1]
- movs r0, 0x6
- strb r0, [r5, 0x2]
- adds r5, 0x3
- lsls r1, 16
- asrs r1, 16
- adds r0, r5, 0
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- strb r6, [r5]
- strb r7, [r5, 0x1]
- mov r0, r9
- strb r0, [r5, 0x2]
- adds r5, 0x3
- cmp r4, 0
- beq _08024BB0
- movs r0, 0xFE
- strb r0, [r5]
- movs r0, 0xFF
- strb r0, [r5, 0x1]
- adds r5, 0x1
- b _08024BC0
- .align 2, 0
-_08024B94: .4byte gMain
-_08024B98: .4byte gStringVar4
-_08024B9C: .4byte gUnknown_08400D9F
-_08024BA0: .4byte 0x00016018
-_08024BA4: .4byte gUnknown_0840165C
-_08024BA8: .4byte gPlayerParty
-_08024BAC: .4byte gLevelUpStatBoxStats
-_08024BB0:
- strb r6, [r5]
- movs r0, 0x11
- strb r0, [r5, 0x1]
- movs r0, 0x8
- strb r0, [r5, 0x2]
- adds r5, 0x3
- movs r0, 0xFF
- strb r0, [r5]
-_08024BC0:
- movs r1, 0x1
- add r8, r1
- mov r2, r8
- cmp r2, 0x5
- ble _08024B1C
- ldr r4, _08024BF4 @ =gUnknown_03004210
- ldr r1, _08024BF8 @ =gStringVar4
- movs r2, 0x80
- lsls r2, 1
- movs r0, 0x1
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0xC
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- ldr r1, _08024BFC @ =0x02000000
- ldr r0, _08024C00 @ =0x0001609c
- adds r1, r0
-_08024BEA:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08024C38
- .align 2, 0
-_08024BF4: .4byte gUnknown_03004210
-_08024BF8: .4byte gStringVar4
-_08024BFC: .4byte 0x02000000
-_08024C00: .4byte 0x0001609c
-_08024C04:
- ldr r0, _08024C2C @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0
- beq _08024C38
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xB
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x7
- bl sub_802BBD4
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- b _08024C38
- .align 2, 0
-_08024C2C: .4byte gMain
-_08024C30:
- ldr r1, _08024C48 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08024C38:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08024C48: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80248FC
-
- thumb_func_start sub_8024C4C
-sub_8024C4C: @ 8024C4C
- push {lr}
- bl sub_80156DC
- ldr r1, _08024C60 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08024C60: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8024C4C
-
- thumb_func_start atk6E_state0_side_becomes_attacker
-atk6E_state0_side_becomes_attacker: @ 8024C64
- push {lr}
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, _08024C7C @ =gBankAttacker
- strb r0, [r1]
- ldr r1, _08024C80 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08024C7C: .4byte gBankAttacker
-_08024C80: .4byte gBattlescriptCurrInstr
- thumb_func_end atk6E_state0_side_becomes_attacker
-
- thumb_func_start atk6F_8026810
-atk6F_8026810: @ 8024C84
- push {r4,r5,lr}
- ldr r5, _08024CB0 @ =gBattlescriptCurrInstr
- ldr r0, [r5]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r4, _08024CB4 @ =gActiveBank
- strb r0, [r4]
- movs r0, 0
- movs r1, 0
- bl EmitSpriteInvisibility
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08024CB0: .4byte gBattlescriptCurrInstr
-_08024CB4: .4byte gActiveBank
- thumb_func_end atk6F_8026810
-
- thumb_func_start atk70_record_ability_usage_of_side
-atk70_record_ability_usage_of_side: @ 8024CB8
- push {r4,lr}
- ldr r4, _08024CE0 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _08024CE4 @ =gActiveBank
- strb r0, [r1]
- ldrb r0, [r1]
- ldr r1, _08024CE8 @ =gLastUsedAbility
- ldrb r1, [r1]
- bl RecordAbilityBattle
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08024CE0: .4byte gBattlescriptCurrInstr
-_08024CE4: .4byte gActiveBank
-_08024CE8: .4byte gLastUsedAbility
- thumb_func_end atk70_record_ability_usage_of_side
-
- thumb_func_start sub_8024CEC
-sub_8024CEC: @ 8024CEC
- ldr r2, _08024D0C @ =gBattleTextBuff2
- movs r0, 0xFD
- strb r0, [r2]
- movs r0, 0x2
- strb r0, [r2, 0x1]
- ldr r0, _08024D10 @ =word_2024E82
- ldrh r1, [r0]
- strb r1, [r2, 0x2]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r0, 8
- strb r0, [r2, 0x3]
- movs r0, 0xFF
- strb r0, [r2, 0x4]
- bx lr
- .align 2, 0
-_08024D0C: .4byte gBattleTextBuff2
-_08024D10: .4byte word_2024E82
- thumb_func_end sub_8024CEC
-
- thumb_func_start atk71_80268A0
-atk71_80268A0: @ 8024D14
- push {lr}
- bl sub_8024CEC
- ldr r1, _08024D28 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08024D28: .4byte gBattlescriptCurrInstr
- thumb_func_end atk71_80268A0
-
- thumb_func_start atk72_flee
-atk72_flee: @ 8024D2C
- push {lr}
- ldr r0, _08024D58 @ =gBank1
- ldrb r0, [r0]
- bl sub_8014AB8
- lsls r0, 24
- cmp r0, 0
- beq _08024D60
- ldr r3, _08024D5C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08024D68
- .align 2, 0
-_08024D58: .4byte gBank1
-_08024D5C: .4byte gBattlescriptCurrInstr
-_08024D60:
- ldr r1, _08024D6C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08024D68:
- pop {r0}
- bx r0
- .align 2, 0
-_08024D6C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk72_flee
-
- thumb_func_start atk73_cmd73
-atk73_cmd73: @ 8024D70
- push {r4,r5,lr}
- ldr r0, _08024DC0 @ =gBattleTypeFlags
- ldrh r0, [r0]
- movs r5, 0x1
- ands r5, r0
- cmp r5, 0
- bne _08024E12
- ldr r0, _08024DC4 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _08024DC8 @ =gActiveBank
- strb r0, [r1]
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08024DCC @ =gBattleMons
- movs r1, 0x58
- muls r1, r0
- adds r1, r2
- ldrh r4, [r1, 0x28]
- movs r0, 0x64
- muls r0, r4
- ldrh r1, [r1, 0x2C]
- bl __divsi3
- cmp r0, 0
- bne _08024DAE
- movs r0, 0x1
-_08024DAE:
- cmp r0, 0x45
- bgt _08024DB6
- cmp r4, 0
- bne _08024DD8
-_08024DB6:
- ldr r0, _08024DD0 @ =0x02000000
- ldr r1, _08024DD4 @ =0x000160c1
- adds r0, r1
- strb r5, [r0]
- b _08024E12
- .align 2, 0
-_08024DC0: .4byte gBattleTypeFlags
-_08024DC4: .4byte gBattlescriptCurrInstr
-_08024DC8: .4byte gActiveBank
-_08024DCC: .4byte gBattleMons
-_08024DD0: .4byte 0x02000000
-_08024DD4: .4byte 0x000160c1
-_08024DD8:
- cmp r0, 0x27
- ble _08024DF0
- ldr r0, _08024DE8 @ =0x02000000
- ldr r1, _08024DEC @ =0x000160c1
- adds r0, r1
- movs r1, 0x1
- b _08024E10
- .align 2, 0
-_08024DE8: .4byte 0x02000000
-_08024DEC: .4byte 0x000160c1
-_08024DF0:
- cmp r0, 0x9
- ble _08024E08
- ldr r0, _08024E00 @ =0x02000000
- ldr r1, _08024E04 @ =0x000160c1
- adds r0, r1
- movs r1, 0x2
- b _08024E10
- .align 2, 0
-_08024E00: .4byte 0x02000000
-_08024E04: .4byte 0x000160c1
-_08024E08:
- ldr r0, _08024E20 @ =0x02000000
- ldr r1, _08024E24 @ =0x000160c1
- adds r0, r1
- movs r1, 0x3
-_08024E10:
- strb r1, [r0]
-_08024E12:
- ldr r1, _08024E28 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08024E20: .4byte 0x02000000
-_08024E24: .4byte 0x000160c1
-_08024E28: .4byte gBattlescriptCurrInstr
- thumb_func_end atk73_cmd73
-
- thumb_func_start atk74_hp_tresholds_2
-atk74_hp_tresholds_2: @ 8024E2C
- push {r4-r7,lr}
- ldr r0, _08024E8C @ =gBattleTypeFlags
- ldrh r0, [r0]
- movs r7, 0x1
- ands r7, r0
- cmp r7, 0
- bne _08024ED0
- ldr r0, _08024E90 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- adds r4, r0, 0
- ldr r0, _08024E94 @ =gActiveBank
- strb r4, [r0]
- movs r0, 0x1
- eors r4, r0
- lsls r4, 24
- lsrs r4, 24
- ldr r6, _08024E98 @ =0x02000000
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- ldr r1, _08024E9C @ =0x000160bc
- adds r0, r1
- adds r0, r6
- ldrb r5, [r0]
- ldr r1, _08024EA0 @ =gBattleMons
- movs r0, 0x58
- muls r0, r4
- adds r0, r1
- ldrh r4, [r0, 0x28]
- subs r1, r5, r4
- movs r0, 0x64
- muls r0, r1
- adds r1, r5, 0
- bl __divsi3
- adds r1, r0, 0
- cmp r4, r5
- bcc _08024EA8
- ldr r1, _08024EA4 @ =0x000160c1
- adds r0, r6, r1
- strb r7, [r0]
- b _08024ED0
- .align 2, 0
-_08024E8C: .4byte gBattleTypeFlags
-_08024E90: .4byte gBattlescriptCurrInstr
-_08024E94: .4byte gActiveBank
-_08024E98: .4byte 0x02000000
-_08024E9C: .4byte 0x000160bc
-_08024EA0: .4byte gBattleMons
-_08024EA4: .4byte 0x000160c1
-_08024EA8:
- cmp r0, 0x1D
- bgt _08024EB8
- ldr r0, _08024EB4 @ =0x000160c1
- adds r1, r6, r0
- movs r0, 0x1
- b _08024ECE
- .align 2, 0
-_08024EB4: .4byte 0x000160c1
-_08024EB8:
- cmp r1, 0x45
- bgt _08024EC8
- ldr r0, _08024EC4 @ =0x000160c1
- adds r1, r6, r0
- movs r0, 0x2
- b _08024ECE
- .align 2, 0
-_08024EC4: .4byte 0x000160c1
-_08024EC8:
- ldr r0, _08024EE0 @ =0x000160c1
- adds r1, r6, r0
- movs r0, 0x3
-_08024ECE:
- strb r0, [r1]
-_08024ED0:
- ldr r1, _08024EE4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08024EE0: .4byte 0x000160c1
-_08024EE4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk74_hp_tresholds_2
-
- thumb_func_start atk75_8026A58
-atk75_8026A58: @ 8024EE8
- push {lr}
- sub sp, 0x4
- ldr r2, _08024F28 @ =gBankInMenu
- ldr r1, _08024F2C @ =gBankAttacker
- ldrb r0, [r1]
- strb r0, [r2]
- ldr r2, _08024F30 @ =gBattlePartyID
- ldrb r0, [r1]
- lsls r0, 1
- adds r0, r2
- ldrh r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r1, _08024F34 @ =gEnemyParty
- adds r0, r1
- ldr r1, _08024F38 @ =gLastUsedItem
- ldrh r1, [r1]
- lsls r2, 24
- lsrs r2, 24
- movs r3, 0x1
- str r3, [sp]
- movs r3, 0
- bl sub_803E1B0
- ldr r1, _08024F3C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08024F28: .4byte gBankInMenu
-_08024F2C: .4byte gBankAttacker
-_08024F30: .4byte gBattlePartyID
-_08024F34: .4byte gEnemyParty
-_08024F38: .4byte gLastUsedItem
-_08024F3C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk75_8026A58
-
- thumb_func_start sub_8024F40
-sub_8024F40: @ 8024F40
- push {r4-r6,lr}
- ldr r4, _08024F64 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _08024F68 @ =gActiveBank
- strb r0, [r1]
- ldr r0, [r4]
- ldrb r0, [r0, 0x2]
- cmp r0, 0x6
- bls _08024F5A
- b _08025112
-_08024F5A:
- lsls r0, 2
- ldr r1, _08024F6C @ =_08024F70
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08024F64: .4byte gBattlescriptCurrInstr
-_08024F68: .4byte gActiveBank
-_08024F6C: .4byte _08024F70
- .align 2, 0
-_08024F70:
- .4byte _08024F8C
- .4byte _08024F9C
- .4byte _08024FFC
- .4byte _0802500C
- .4byte _08025024
- .4byte _08025060
- .4byte _08025098
-_08024F8C:
- ldr r0, _08024F98 @ =gActiveBank
- ldrb r0, [r0]
- bl CancelMultiTurnMoves
- b _08025112
- .align 2, 0
-_08024F98: .4byte gActiveBank
-_08024F9C:
- ldr r1, _08024FD8 @ =gBankAttacker
- ldr r4, _08024FDC @ =gBankTarget
- ldrb r0, [r4]
- strb r0, [r1]
- ldrb r0, [r1]
- bl GetBankSide
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08024FE0 @ =gSideTimer
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r2, r1, r2
- ldrb r0, [r2, 0x8]
- cmp r0, 0
- beq _08024FE8
- ldr r1, _08024FE4 @ =gBattleMons
- ldrb r2, [r2, 0x9]
- movs r0, 0x58
- muls r0, r2
- adds r0, r1
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08024FE8
- strb r2, [r4]
- b _08025112
- .align 2, 0
-_08024FD8: .4byte gBankAttacker
-_08024FDC: .4byte gBankTarget
-_08024FE0: .4byte gSideTimer
-_08024FE4: .4byte gBattleMons
-_08024FE8:
- ldr r0, _08024FF4 @ =gBankTarget
- ldr r1, _08024FF8 @ =gActiveBank
- ldrb r1, [r1]
- strb r1, [r0]
- b _08025112
- .align 2, 0
-_08024FF4: .4byte gBankTarget
-_08024FF8: .4byte gActiveBank
-_08024FFC:
- bl CanRunFromBattle
- ldr r1, _08025008 @ =gBattleCommunication
- strb r0, [r1]
- b _08025112
- .align 2, 0
-_08025008: .4byte gBattleCommunication
-_0802500C:
- ldr r0, _0802501C @ =gCurrentMove
- ldrh r0, [r0]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _08025020 @ =gBankTarget
- strb r0, [r1]
- b _08025112
- .align 2, 0
-_0802501C: .4byte gCurrentMove
-_08025020: .4byte gBankTarget
-_08025024:
- ldr r2, _08025044 @ =gHitMarker
- ldr r1, _08025048 @ =gBitTable
- ldr r0, _0802504C @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- lsls r0, 28
- ldr r2, [r2]
- ands r2, r0
- cmp r2, 0
- beq _08025054
- ldr r1, _08025050 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1]
- b _08025112
- .align 2, 0
-_08025044: .4byte gHitMarker
-_08025048: .4byte gBitTable
-_0802504C: .4byte gActiveBank
-_08025050: .4byte gBattleCommunication
-_08025054:
- ldr r0, _0802505C @ =gBattleCommunication
- strb r2, [r0]
- b _08025112
- .align 2, 0
-_0802505C: .4byte gBattleCommunication
-_08025060:
- ldr r4, _08025090 @ =gSpecialStatuses
- ldr r3, _08025094 @ =gActiveBank
- ldrb r0, [r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1]
- movs r0, 0x9
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- ldrb r0, [r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- b _08025112
- .align 2, 0
-_08025090: .4byte gSpecialStatuses
-_08025094: .4byte gActiveBank
-_08025098:
- ldr r3, _080250B8 @ =gBattlePartyID
- ldr r0, _080250BC @ =0x02000000
- ldr r1, _080250C0 @ =0x00016018
- adds r0, r1
- ldrh r2, [r3]
- ldrb r1, [r0]
- cmp r2, r1
- beq _080250B2
- ldrh r0, [r3, 0x4]
- cmp r0, r1
- bne _08025112
- cmp r2, r0
- bne _080250C8
-_080250B2:
- ldr r1, _080250C4 @ =gActiveBank
- movs r0, 0
- b _080250CC
- .align 2, 0
-_080250B8: .4byte gBattlePartyID
-_080250BC: .4byte 0x02000000
-_080250C0: .4byte 0x00016018
-_080250C4: .4byte gActiveBank
-_080250C8:
- ldr r1, _08025120 @ =gActiveBank
- movs r0, 0x2
-_080250CC:
- strb r0, [r1]
- adds r5, r1, 0
- ldrb r2, [r5]
- lsls r1, r2, 1
- ldr r0, _08025124 @ =0x020160e8
- adds r4, r1, r0
- movs r3, 0
- ldr r1, _08025128 @ =gBattleMons
- movs r0, 0x58
- muls r0, r2
- adds r1, 0xC
- adds r0, r1
- ldrh r0, [r0]
- ldrh r2, [r4]
- cmp r0, r2
- beq _0802510A
- adds r6, r5, 0
- movs r5, 0x58
- adds r2, r1, 0
-_080250F2:
- adds r3, 0x1
- cmp r3, 0x3
- bgt _0802510A
- lsls r1, r3, 1
- ldrb r0, [r6]
- muls r0, r5
- adds r1, r0
- adds r1, r2
- ldrh r0, [r1]
- ldrh r1, [r4]
- cmp r0, r1
- bne _080250F2
-_0802510A:
- cmp r3, 0x4
- bne _08025112
- movs r0, 0
- strh r0, [r4]
-_08025112:
- ldr r1, _0802512C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x3
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08025120: .4byte gActiveBank
-_08025124: .4byte 0x020160e8
-_08025128: .4byte gBattleMons
-_0802512C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8024F40
-
- thumb_func_start atk77_setprotect
-atk77_setprotect: @ 8025130
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0x1
- ldr r2, _080251FC @ =gUnknown_02024C4C
- ldr r1, _08025200 @ =gBankAttacker
- ldrb r3, [r1]
- lsls r0, r3, 1
- adds r0, r2
- ldrh r0, [r0]
- mov r8, r1
- ldr r7, _08025204 @ =gDisableStructs
- cmp r0, 0xB6
- beq _08025160
- cmp r0, 0xC5
- beq _08025160
- cmp r0, 0xCB
- beq _08025160
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r7
- movs r1, 0
- strb r1, [r0, 0x8]
-_08025160:
- ldr r0, _08025208 @ =gCurrentMoveTurn
- ldrb r1, [r0]
- ldr r0, _0802520C @ =gNoOfAllBanks
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bne _08025170
- movs r6, 0
-_08025170:
- ldr r2, _08025210 @ =gProtectSuccessRates
- mov r5, r8
- ldrb r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r4, [r0, 0x8]
- lsls r4, 1
- adds r4, r2
- bl Random
- ldrh r1, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r1, r0
- bls _08025224
- cmp r6, 0
- beq _08025224
- ldr r4, _08025214 @ =gBattleMoves
- ldr r3, _08025218 @ =gCurrentMove
- ldrh r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- cmp r0, 0x6F
- bne _080251C0
- ldr r0, _0802521C @ =gProtectStructs
- ldrb r1, [r5]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x1
- orrs r0, r2
- strb r0, [r1]
- ldr r1, _08025220 @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
-_080251C0:
- ldrh r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- cmp r0, 0x74
- bne _080251E6
- ldr r0, _0802521C @ =gProtectStructs
- ldrb r1, [r5]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1]
- ldr r1, _08025220 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
-_080251E6:
- mov r1, r8
- ldrb r0, [r1]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r0, [r1, 0x8]
- adds r0, 0x1
- strb r0, [r1, 0x8]
- b _08025246
- .align 2, 0
-_080251FC: .4byte gUnknown_02024C4C
-_08025200: .4byte gBankAttacker
-_08025204: .4byte gDisableStructs
-_08025208: .4byte gCurrentMoveTurn
-_0802520C: .4byte gNoOfAllBanks
-_08025210: .4byte gProtectSuccessRates
-_08025214: .4byte gBattleMoves
-_08025218: .4byte gCurrentMove
-_0802521C: .4byte gProtectStructs
-_08025220: .4byte gBattleCommunication
-_08025224:
- ldr r2, _08025258 @ =gDisableStructs
- ldr r0, _0802525C @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strb r1, [r0, 0x8]
- ldr r1, _08025260 @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- ldr r2, _08025264 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
-_08025246:
- ldr r1, _08025268 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08025258: .4byte gDisableStructs
-_0802525C: .4byte gBankAttacker
-_08025260: .4byte gBattleCommunication
-_08025264: .4byte gBattleMoveFlags
-_08025268: .4byte gBattlescriptCurrInstr
- thumb_func_end atk77_setprotect
-
- thumb_func_start atk78_faintifabilitynotdamp
-atk78_faintifabilitynotdamp: @ 802526C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _08025328 @ =gBattleExecBuffer
- ldr r2, [r0]
- cmp r2, 0
- bne _08025370
- ldr r1, _0802532C @ =gBankTarget
- strb r2, [r1]
- ldr r0, _08025330 @ =gNoOfAllBanks
- ldrb r3, [r0]
- adds r5, r1, 0
- mov r8, r0
- ldr r6, _08025334 @ =gBattleMons
- cmp r2, r3
- bcs _080252B8
- adds r0, r6, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x6
- beq _080252B8
- adds r2, r3, 0
- adds r4, r6, 0
- movs r3, 0x58
-_0802529C:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r2
- bcs _080252B8
- ldrb r0, [r5]
- muls r0, r3
- adds r0, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _0802529C
-_080252B8:
- ldrb r0, [r5]
- mov r1, r8
- ldrb r1, [r1]
- cmp r0, r1
- bne _08025354
- ldr r4, _08025338 @ =gActiveBank
- ldr r7, _0802533C @ =gBankAttacker
- ldrb r0, [r7]
- strb r0, [r4]
- ldr r2, _08025340 @ =gBattleMoveDamage
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r6
- ldrh r0, [r0, 0x28]
- str r0, [r2]
- ldr r1, _08025344 @ =0x00007fff
- movs r0, 0
- bl EmitHealthBarUpdate
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, _08025348 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- movs r0, 0
- strb r0, [r5]
- mov r2, r8
- ldrb r0, [r2]
- cmp r0, 0
- beq _08025370
- adds r3, r5, 0
- ldrb r5, [r7]
- ldr r7, _0802534C @ =gBitTable
- adds r4, r0, 0
- ldr r6, _08025350 @ =gAbsentBankFlags
-_08025304:
- ldrb r2, [r3]
- cmp r2, r5
- beq _0802531A
- ldrb r0, [r6]
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r7
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- beq _08025370
-_0802531A:
- adds r0, r2, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r4
- bcc _08025304
- b _08025370
- .align 2, 0
-_08025328: .4byte gBattleExecBuffer
-_0802532C: .4byte gBankTarget
-_08025330: .4byte gNoOfAllBanks
-_08025334: .4byte gBattleMons
-_08025338: .4byte gActiveBank
-_0802533C: .4byte gBankAttacker
-_08025340: .4byte gBattleMoveDamage
-_08025344: .4byte 0x00007fff
-_08025348: .4byte gBattlescriptCurrInstr
-_0802534C: .4byte gBitTable
-_08025350: .4byte gAbsentBankFlags
-_08025354:
- ldr r1, _0802537C @ =gLastUsedAbility
- movs r0, 0x6
- strb r0, [r1]
- ldrb r0, [r5]
- movs r1, 0x58
- muls r1, r0
- adds r1, r6
- adds r1, 0x20
- ldrb r1, [r1]
- bl RecordAbilityBattle
- ldr r1, _08025380 @ =gBattlescriptCurrInstr
- ldr r0, _08025384 @ =gUnknown_081D9834
- str r0, [r1]
-_08025370:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802537C: .4byte gLastUsedAbility
-_08025380: .4byte gBattlescriptCurrInstr
-_08025384: .4byte gUnknown_081D9834
- thumb_func_end atk78_faintifabilitynotdamp
-
- thumb_func_start atk79_setuserhptozero
-atk79_setuserhptozero: @ 8025388
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080253D4 @ =gBattleExecBuffer
- ldr r3, [r0]
- cmp r3, 0
- bne _080253CC
- ldr r4, _080253D8 @ =gActiveBank
- ldr r0, _080253DC @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r1, _080253E0 @ =gBattleMons
- ldrb r0, [r4]
- movs r2, 0x58
- muls r0, r2
- adds r0, r1
- strh r3, [r0, 0x28]
- ldrb r0, [r4]
- muls r0, r2
- adds r1, 0x28
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2A
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, _080253E4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_080253CC:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080253D4: .4byte gBattleExecBuffer
-_080253D8: .4byte gActiveBank
-_080253DC: .4byte gBankAttacker
-_080253E0: .4byte gBattleMons
-_080253E4: .4byte gBattlescriptCurrInstr
- thumb_func_end atk79_setuserhptozero
-
- thumb_func_start sub_80253E8
-sub_80253E8: @ 80253E8
- push {r4-r7,lr}
- ldr r3, _08025460 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r4, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r4, r0
- ldr r0, _08025464 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- adds r7, r3, 0
- cmp r0, 0
- beq _08025480
- ldr r0, _08025468 @ =gBankTarget
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- ldr r2, _0802546C @ =gBankAttacker
- lsls r1, 24
- lsrs r1, 24
- adds r3, r0, 0
- ldr r6, _08025470 @ =gAbsentBankFlags
- ldr r5, _08025474 @ =gBitTable
- ldr r0, _08025478 @ =gNoOfAllBanks
- mov r12, r0
- ldrb r0, [r2]
- cmp r1, r0
- bne _0802543E
-_0802542E:
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r2]
- cmp r0, r1
- beq _0802542E
-_0802543E:
- ldrb r0, [r6]
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r5
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- bne _0802542E
- ldrb r0, [r3]
- mov r2, r12
- ldrb r2, [r2]
- cmp r0, r2
- bcc _0802547C
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- b _08025484
- .align 2, 0
-_08025460: .4byte gBattlescriptCurrInstr
-_08025464: .4byte gBattleTypeFlags
-_08025468: .4byte gBankTarget
-_0802546C: .4byte gBankAttacker
-_08025470: .4byte gAbsentBankFlags
-_08025474: .4byte gBitTable
-_08025478: .4byte gNoOfAllBanks
-_0802547C:
- str r4, [r7]
- b _08025484
-_08025480:
- adds r0, r2, 0x5
- str r0, [r3]
-_08025484:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80253E8
-
- thumb_func_start sub_802548C
-sub_802548C: @ 802548C
- push {r4-r6,lr}
- ldr r4, _080254E8 @ =gBattlescriptCurrInstr
- ldr r1, [r4]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- orrs r2, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- orrs r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- orrs r2, r0
- ldrb r0, [r1, 0x5]
- ldr r3, _080254EC @ =gBankTarget
- cmp r0, 0x1
- bne _080254B4
- ldr r0, _080254F0 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r3]
-_080254B4:
- ldr r1, _080254F4 @ =gBattleMoveDamage
- ldr r6, _080254F8 @ =gBattleMons
- ldrb r0, [r3]
- movs r5, 0x58
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0, 0x2C]
- lsrs r0, 1
- str r0, [r1]
- cmp r0, 0
- bne _080254CE
- movs r0, 0x1
- str r0, [r1]
-_080254CE:
- ldr r0, [r1]
- negs r0, r0
- str r0, [r1]
- ldrb r0, [r3]
- muls r0, r5
- adds r0, r6
- ldrh r1, [r0, 0x28]
- ldrh r0, [r0, 0x2C]
- cmp r1, r0
- bne _080254FC
- str r2, [r4]
- b _08025502
- .align 2, 0
-_080254E8: .4byte gBattlescriptCurrInstr
-_080254EC: .4byte gBankTarget
-_080254F0: .4byte gBankAttacker
-_080254F4: .4byte gBattleMoveDamage
-_080254F8: .4byte gBattleMons
-_080254FC:
- ldr r0, [r4]
- adds r0, 0x6
- str r0, [r4]
-_08025502:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_802548C
-
- thumb_func_start sub_8025508
-sub_8025508: @ 8025508
- push {r4-r7,lr}
- ldr r3, _0802556C @ =0x02000000
- ldr r4, _08025570 @ =gBankAttacker
- ldrb r2, [r4]
- lsls r1, r2, 1
- ldr r5, _08025574 @ =0x000160ac
- adds r0, r1, r5
- adds r0, r3
- ldrb r7, [r0]
- ldr r0, _08025578 @ =0x000160ad
- adds r1, r0
- adds r1, r3
- ldrb r0, [r1]
- lsls r0, 8
- orrs r7, r0
- lsls r2, 2
- ldr r1, _0802557C @ =0x00016100
- adds r0, r2, r1
- adds r0, r3
- ldrb r6, [r0]
- adds r5, 0x55
- adds r0, r2, r5
- adds r0, r3
- ldrb r0, [r0]
- lsls r0, 8
- orrs r6, r0
- adds r1, 0x2
- adds r0, r2, r1
- adds r0, r3
- ldrb r5, [r0]
- ldr r0, _08025580 @ =0x00016103
- adds r2, r0
- adds r2, r3
- ldrb r0, [r2]
- lsls r0, 8
- orrs r5, r0
- cmp r7, 0
- beq _08025594
- ldr r0, _08025584 @ =0x0000ffff
- cmp r7, r0
- beq _08025594
- ldr r2, _08025588 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0802558C @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, _08025590 @ =gCurrentMove
- strh r7, [r4]
- b _0802565C
- .align 2, 0
-_0802556C: .4byte 0x02000000
-_08025570: .4byte gBankAttacker
-_08025574: .4byte 0x000160ac
-_08025578: .4byte 0x000160ad
-_0802557C: .4byte 0x00016100
-_08025580: .4byte 0x00016103
-_08025584: .4byte 0x0000ffff
-_08025588: .4byte gHitMarker
-_0802558C: .4byte 0xfffffbff
-_08025590: .4byte gCurrentMove
-_08025594:
- cmp r6, 0
- beq _08025644
- cmp r5, 0
- beq _08025618
- ldr r0, _080255C4 @ =0x0000ffff
- cmp r6, r0
- beq _08025618
- cmp r5, r0
- beq _08025618
- ldr r2, _080255C8 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _080255CC @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- bl Random
- movs r1, 0x1
- ands r1, r0
- cmp r1, 0
- beq _080255D4
- ldr r0, _080255D0 @ =gCurrentMove
- strh r6, [r0]
- b _080255D8
- .align 2, 0
-_080255C4: .4byte 0x0000ffff
-_080255C8: .4byte gHitMarker
-_080255CC: .4byte 0xfffffbff
-_080255D0: .4byte gCurrentMove
-_080255D4:
- ldr r0, _08025604 @ =gCurrentMove
- strh r5, [r0]
-_080255D8:
- adds r5, r0, 0
- ldrh r0, [r5]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _08025608 @ =gBankTarget
- strb r0, [r1]
- ldr r4, _0802560C @ =gBattlescriptCurrInstr
- ldr r3, _08025610 @ =gUnknown_081D6BBC
- ldr r2, _08025614 @ =gBattleMoves
- ldrh r1, [r5]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- str r0, [r4]
- b _080256C0
- .align 2, 0
-_08025604: .4byte gCurrentMove
-_08025608: .4byte gBankTarget
-_0802560C: .4byte gBattlescriptCurrInstr
-_08025610: .4byte gUnknown_081D6BBC
-_08025614: .4byte gBattleMoves
-_08025618:
- cmp r6, 0
- beq _08025644
- ldr r0, _08025634 @ =0x0000ffff
- cmp r6, r0
- beq _08025644
- ldr r2, _08025638 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0802563C @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, _08025640 @ =gCurrentMove
- strh r6, [r4]
- b _0802565C
- .align 2, 0
-_08025634: .4byte 0x0000ffff
-_08025638: .4byte gHitMarker
-_0802563C: .4byte 0xfffffbff
-_08025640: .4byte gCurrentMove
-_08025644:
- cmp r5, 0
- beq _080256A4
- ldr r0, _08025684 @ =0x0000ffff
- cmp r5, r0
- beq _080256A4
- ldr r2, _08025688 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0802568C @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, _08025690 @ =gCurrentMove
- strh r5, [r4]
-_0802565C:
- ldrh r0, [r4]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _08025694 @ =gBankTarget
- strb r0, [r1]
- ldr r5, _08025698 @ =gBattlescriptCurrInstr
- ldr r3, _0802569C @ =gUnknown_081D6BBC
- ldr r2, _080256A0 @ =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- str r0, [r5]
- b _080256C0
- .align 2, 0
-_08025684: .4byte 0x0000ffff
-_08025688: .4byte gHitMarker
-_0802568C: .4byte 0xfffffbff
-_08025690: .4byte gCurrentMove
-_08025694: .4byte gBankTarget
-_08025698: .4byte gBattlescriptCurrInstr
-_0802569C: .4byte gUnknown_081D6BBC
-_080256A0: .4byte gBattleMoves
-_080256A4:
- ldr r2, _080256C8 @ =gSpecialStatuses
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
- ldr r1, _080256CC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_080256C0:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080256C8: .4byte gSpecialStatuses
-_080256CC: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8025508
-
- thumb_func_start sub_80256D0
-sub_80256D0: @ 80256D0
- push {lr}
- ldr r2, _080256F0 @ =gBattleWeather
- ldrh r0, [r2]
- movs r1, 0x7
- ands r1, r0
- cmp r1, 0
- beq _080256FC
- ldr r2, _080256F4 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080256F8 @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _0802570C
- .align 2, 0
-_080256F0: .4byte gBattleWeather
-_080256F4: .4byte gBattleMoveFlags
-_080256F8: .4byte gBattleCommunication
-_080256FC:
- movs r0, 0x1
- strh r0, [r2]
- ldr r0, _08025718 @ =gBattleCommunication
- strb r1, [r0, 0x5]
- ldr r0, _0802571C @ =gWishFutureKnock
- adds r0, 0x28
- movs r1, 0x5
- strb r1, [r0]
-_0802570C:
- ldr r1, _08025720 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08025718: .4byte gBattleCommunication
-_0802571C: .4byte gWishFutureKnock
-_08025720: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80256D0
-
- thumb_func_start atk7E_setreflect
-atk7E_setreflect: @ 8025724
- push {r4-r6,lr}
- ldr r5, _08025754 @ =gBankAttacker
- ldrb r0, [r5]
- bl GetBankIdentity
- ldr r6, _08025758 @ =gSideAffecting
- movs r4, 0x1
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r6
- ldrh r1, [r1]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _08025764
- ldr r2, _0802575C @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08025760 @ =gBattleCommunication
- movs r0, 0
- b _080257C4
- .align 2, 0
-_08025754: .4byte gBankAttacker
-_08025758: .4byte gSideAffecting
-_0802575C: .4byte gBattleMoveFlags
-_08025760: .4byte gBattleCommunication
-_08025764:
- ldrb r0, [r5]
- bl GetBankIdentity
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r6
- ldrh r0, [r1]
- movs r2, 0x1
- orrs r0, r2
- strh r0, [r1]
- ldrb r0, [r5]
- bl GetBankIdentity
- ldr r2, _080257B4 @ =gSideTimer
- adds r1, r4, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x5
- strb r1, [r0]
- ldr r0, _080257B8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _080257C0
- movs r0, 0x1
- bl CountAliveMons
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x2
- bne _080257C0
- ldr r0, _080257BC @ =gBattleCommunication
- strb r1, [r0, 0x5]
- b _080257C6
- .align 2, 0
-_080257B4: .4byte gSideTimer
-_080257B8: .4byte gBattleTypeFlags
-_080257BC: .4byte gBattleCommunication
-_080257C0:
- ldr r1, _080257D4 @ =gBattleCommunication
- movs r0, 0x1
-_080257C4:
- strb r0, [r1, 0x5]
-_080257C6:
- ldr r1, _080257D8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080257D4: .4byte gBattleCommunication
-_080257D8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk7E_setreflect
-
- thumb_func_start sub_80257DC
-sub_80257DC: @ 80257DC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r7, _0802581C @ =gBattleMoveFlags
- ldrb r5, [r7]
- movs r0, 0x29
- ands r0, r5
- cmp r0, 0
- bne _0802580E
- ldr r0, _08025820 @ =gStatuses3
- mov r9, r0
- ldr r1, _08025824 @ =gBankTarget
- mov r8, r1
- ldrb r4, [r1]
- lsls r0, r4, 2
- mov r2, r9
- adds r6, r0, r2
- ldr r2, [r6]
- movs r0, 0x4
- mov r12, r0
- adds r3, r2, 0
- ands r3, r0
- cmp r3, 0
- beq _0802582C
-_0802580E:
- movs r0, 0x1
- orrs r0, r5
- strb r0, [r7]
- ldr r1, _08025828 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _0802587C
- .align 2, 0
-_0802581C: .4byte gBattleMoveFlags
-_08025820: .4byte gStatuses3
-_08025824: .4byte gBankTarget
-_08025828: .4byte gBattleCommunication
-_0802582C:
- ldr r1, _08025858 @ =gBattleMons
- movs r0, 0x58
- muls r0, r4
- adds r1, r0, r1
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0xC
- beq _08025848
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xC
- bne _08025860
-_08025848:
- movs r0, 0x1
- orrs r0, r5
- strb r0, [r7]
- ldr r1, _0802585C @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _0802587C
- .align 2, 0
-_08025858: .4byte gBattleMons
-_0802585C: .4byte gBattleCommunication
-_08025860:
- ldr r0, _08025890 @ =gBankAttacker
- ldrb r0, [r0]
- orrs r2, r0
- str r2, [r6]
- mov r2, r8
- ldrb r1, [r2]
- lsls r1, 2
- add r1, r9
- ldr r0, [r1]
- mov r2, r12
- orrs r0, r2
- str r0, [r1]
- ldr r0, _08025894 @ =gBattleCommunication
- strb r3, [r0, 0x5]
-_0802587C:
- ldr r1, _08025898 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08025890: .4byte gBankAttacker
-_08025894: .4byte gBattleCommunication
-_08025898: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80257DC
-
- thumb_func_start atk80_manipulatedamage
-atk80_manipulatedamage: @ 802589C
- push {r4,lr}
- ldr r1, _080258B4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- ldrb r2, [r0, 0x1]
- adds r4, r1, 0
- cmp r2, 0x1
- beq _080258CC
- cmp r2, 0x1
- bgt _080258B8
- cmp r2, 0
- beq _080258BE
- b _0802590C
- .align 2, 0
-_080258B4: .4byte gBattlescriptCurrInstr
-_080258B8:
- cmp r2, 0x2
- beq _08025904
- b _0802590C
-_080258BE:
- ldr r1, _080258C8 @ =gBattleMoveDamage
- ldr r0, [r1]
- negs r0, r0
- b _0802590A
- .align 2, 0
-_080258C8: .4byte gBattleMoveDamage
-_080258CC:
- ldr r3, _080258F8 @ =gBattleMoveDamage
- ldr r0, [r3]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- str r0, [r3]
- cmp r0, 0
- bne _080258DE
- str r2, [r3]
-_080258DE:
- ldr r2, _080258FC @ =gBattleMons
- ldr r0, _08025900 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2C]
- lsrs r1, r0, 1
- ldr r0, [r3]
- cmp r1, r0
- bge _0802590C
- str r1, [r3]
- b _0802590C
- .align 2, 0
-_080258F8: .4byte gBattleMoveDamage
-_080258FC: .4byte gBattleMons
-_08025900: .4byte gBankTarget
-_08025904:
- ldr r1, _08025918 @ =gBattleMoveDamage
- ldr r0, [r1]
- lsls r0, 1
-_0802590A:
- str r0, [r1]
-_0802590C:
- ldr r0, [r4]
- adds r0, 0x2
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08025918: .4byte gBattleMoveDamage
- thumb_func_end atk80_manipulatedamage
-
- thumb_func_start atk81_setrest
-atk81_setrest: @ 802591C
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r0, _08025974 @ =gBattlescriptCurrInstr
- mov r12, r0
- ldr r1, [r0]
- ldrb r6, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- orrs r6, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- orrs r6, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- orrs r6, r0
- ldr r5, _08025978 @ =gActiveBank
- ldr r2, _0802597C @ =gBankTarget
- ldr r0, _08025980 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r2]
- strb r0, [r5]
- ldr r4, _08025984 @ =gBattleMoveDamage
- ldr r1, _08025988 @ =gBattleMons
- ldrb r0, [r2]
- movs r3, 0x58
- muls r0, r3
- adds r0, r1
- ldrh r0, [r0, 0x2C]
- negs r0, r0
- str r0, [r4]
- ldrb r0, [r2]
- adds r4, r0, 0
- muls r4, r3
- adds r0, r4, r1
- ldrh r3, [r0, 0x28]
- adds r7, r5, 0
- adds r5, r2, 0
- adds r2, r1, 0
- ldrh r0, [r0, 0x2C]
- cmp r3, r0
- bne _0802598C
- mov r0, r12
- str r6, [r0]
- b _080259DC
- .align 2, 0
-_08025974: .4byte gBattlescriptCurrInstr
-_08025978: .4byte gActiveBank
-_0802597C: .4byte gBankTarget
-_08025980: .4byte gBankAttacker
-_08025984: .4byte gBattleMoveDamage
-_08025988: .4byte gBattleMons
-_0802598C:
- adds r0, r2, 0
- adds r0, 0x4C
- adds r0, r4, r0
- ldr r1, [r0]
- movs r0, 0xF8
- ands r1, r0
- cmp r1, 0
- beq _080259A8
- ldr r1, _080259A4 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _080259AC
- .align 2, 0
-_080259A4: .4byte gBattleCommunication
-_080259A8:
- ldr r0, _080259E4 @ =gBattleCommunication
- strb r1, [r0, 0x5]
-_080259AC:
- ldrb r0, [r5]
- movs r3, 0x58
- muls r0, r3
- adds r2, 0x4C
- adds r0, r2
- movs r1, 0x3
- str r1, [r0]
- ldrb r0, [r7]
- muls r0, r3
- adds r0, r2
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
- ldr r1, _080259E8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_080259DC:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080259E4: .4byte gBattleCommunication
-_080259E8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk81_setrest
-
- thumb_func_start atk82_jumpifnotfirstturn
-atk82_jumpifnotfirstturn: @ 80259EC
- push {r4,r5,lr}
- ldr r5, _08025A20 @ =gBattlescriptCurrInstr
- ldr r4, [r5]
- ldrb r3, [r4, 0x1]
- ldrb r0, [r4, 0x2]
- lsls r0, 8
- orrs r3, r0
- ldrb r0, [r4, 0x3]
- lsls r0, 16
- orrs r3, r0
- ldrb r0, [r4, 0x4]
- lsls r0, 24
- orrs r3, r0
- ldr r2, _08025A24 @ =gDisableStructs
- ldr r0, _08025A28 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x16]
- cmp r0, 0
- beq _08025A2C
- adds r0, r4, 0x5
- str r0, [r5]
- b _08025A2E
- .align 2, 0
-_08025A20: .4byte gBattlescriptCurrInstr
-_08025A24: .4byte gDisableStructs
-_08025A28: .4byte gBankAttacker
-_08025A2C:
- str r3, [r5]
-_08025A2E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end atk82_jumpifnotfirstturn
-
- thumb_func_start sub_8025A34
-sub_8025A34: @ 8025A34
- ldr r1, _08025A40 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08025A40: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8025A34
-
- thumb_func_start sub_8025A44
-sub_8025A44: @ 8025A44
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r3, r0, 24
- movs r2, 0
- ldr r0, _08025A9C @ =gNoOfAllBanks
- ldrb r1, [r0]
- mov r8, r0
- cmp r2, r1
- bge _08025AB8
- ldr r0, _08025AA0 @ =gBattleMons
- mov r12, r0
- movs r0, 0x58
- muls r0, r3
- add r0, r12
- adds r5, r0, 0
- adds r5, 0x20
- ldr r6, _08025AA4 @ =0x02016003
- movs r3, 0
- ldr r7, _08025AA8 @ =gBattleCommunication
- adds r4, r1, 0
-_08025A70:
- mov r0, r12
- adds r0, 0x50
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x70
- ands r0, r1
- cmp r0, 0
- beq _08025AB0
- ldrb r0, [r5]
- cmp r0, 0x2B
- beq _08025AB0
- movs r3, 0
- strb r2, [r6]
- ldr r1, _08025AAC @ =gBankTarget
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _08025AD0
- cmp r0, r2
- beq _08025AC4
- movs r0, 0x1
- strb r0, [r7, 0x5]
- b _08025AB8
- .align 2, 0
-_08025A9C: .4byte gNoOfAllBanks
-_08025AA0: .4byte gBattleMons
-_08025AA4: .4byte 0x02016003
-_08025AA8: .4byte gBattleCommunication
-_08025AAC: .4byte gBankTarget
-_08025AB0:
- adds r3, 0x58
- adds r2, 0x1
- cmp r2, r4
- blt _08025A70
-_08025AB8:
- mov r1, r8
- ldrb r1, [r1]
- cmp r2, r1
- beq _08025AD4
- movs r0, 0x1
- b _08025AD6
-_08025AC4:
- ldr r0, _08025ACC @ =gBattleCommunication
- strb r3, [r0, 0x5]
- b _08025AB8
- .align 2, 0
-_08025ACC: .4byte gBattleCommunication
-_08025AD0:
- strb r2, [r1]
- b _08025AB8
-_08025AD4:
- movs r0, 0
-_08025AD6:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8025A44
-
- thumb_func_start sub_8025AE0
-sub_8025AE0: @ 8025AE0
- push {r4-r6,lr}
- ldr r5, _08025B0C @ =gBattlescriptCurrInstr
- ldr r1, [r5]
- ldrb r4, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- orrs r4, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- orrs r4, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- orrs r4, r0
- ldr r6, _08025B10 @ =gBankTarget
- ldrb r0, [r6]
- bl sub_8025A44
- lsls r0, 24
- cmp r0, 0
- beq _08025B14
- str r4, [r5]
- b _08025B56
- .align 2, 0
-_08025B0C: .4byte gBattlescriptCurrInstr
-_08025B10: .4byte gBankTarget
-_08025B14:
- ldr r1, _08025B44 @ =gBattleMons
- ldrb r3, [r6]
- movs r0, 0x58
- muls r0, r3
- adds r0, r1
- adds r0, 0x20
- ldrb r0, [r0]
- adds r1, r0, 0
- cmp r1, 0xF
- beq _08025B2C
- cmp r1, 0x48
- bne _08025B50
-_08025B2C:
- ldr r2, _08025B48 @ =gLastUsedAbility
- strb r0, [r2]
- ldr r1, _08025B4C @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- str r4, [r5]
- ldrb r1, [r2]
- adds r0, r3, 0
- bl RecordAbilityBattle
- b _08025B56
- .align 2, 0
-_08025B44: .4byte gBattleMons
-_08025B48: .4byte gLastUsedAbility
-_08025B4C: .4byte gBattleCommunication
-_08025B50:
- ldr r0, [r5]
- adds r0, 0x5
- str r0, [r5]
-_08025B56:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8025AE0
-
- thumb_func_start sub_8025B5C
-sub_8025B5C: @ 8025B5C
- push {r4,r5,lr}
- ldr r5, _08025B84 @ =gDisableStructs
- ldr r4, _08025B88 @ =gBankAttacker
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r1, r0, r5
- ldrb r0, [r1, 0x9]
- cmp r0, 0x3
- bne _08025B94
- ldr r2, _08025B8C @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08025B90 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _08025BBE
- .align 2, 0
-_08025B84: .4byte gDisableStructs
-_08025B88: .4byte gBankAttacker
-_08025B8C: .4byte gBattleMoveFlags
-_08025B90: .4byte gBattleCommunication
-_08025B94:
- adds r0, 0x1
- movs r3, 0
- strb r0, [r1, 0x9]
- ldr r2, _08025BCC @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r2]
- movs r0, 0x1
- strb r0, [r2, 0x1]
- strb r0, [r2, 0x2]
- strb r0, [r2, 0x3]
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r0, [r0, 0x9]
- strb r0, [r2, 0x4]
- movs r0, 0xFF
- strb r0, [r2, 0x5]
- ldr r0, _08025BD0 @ =gBattleCommunication
- strb r3, [r0, 0x5]
-_08025BBE:
- ldr r1, _08025BD4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08025BCC: .4byte gBattleTextBuff1
-_08025BD0: .4byte gBattleCommunication
-_08025BD4: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8025B5C
-
- thumb_func_start atk86_stockpiletobasedamage
-atk86_stockpiletobasedamage: @ 8025BD8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- ldr r3, _08025C10 @ =gBattlescriptCurrInstr
- ldr r1, [r3]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- orrs r2, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- orrs r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- orrs r2, r0
- ldr r7, _08025C14 @ =gDisableStructs
- ldr r6, _08025C18 @ =gBankAttacker
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0, 0x9]
- cmp r0, 0
- bne _08025C1C
- str r2, [r3]
- b _08025CC2
- .align 2, 0
-_08025C10: .4byte gBattlescriptCurrInstr
-_08025C14: .4byte gDisableStructs
-_08025C18: .4byte gBankAttacker
-_08025C1C:
- ldr r0, _08025CD0 @ =gBattleCommunication
- ldrb r0, [r0, 0x6]
- cmp r0, 0x1
- beq _08025CA8
- ldr r0, _08025CD4 @ =gBattleMoveDamage
- mov r8, r0
- ldr r4, _08025CD8 @ =gSideAffecting
- ldr r5, _08025CDC @ =gBankTarget
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- ldrb r0, [r6]
- movs r4, 0x58
- muls r0, r4
- ldr r2, _08025CE0 @ =gBattleMons
- adds r0, r2
- ldrb r1, [r5]
- muls r1, r4
- adds r1, r2
- ldr r2, _08025CE4 @ =gCurrentMove
- ldrh r2, [r2]
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- ldrb r4, [r6]
- str r4, [sp, 0x8]
- ldrb r4, [r5]
- str r4, [sp, 0xC]
- bl CalculateBaseDamage
- ldrb r2, [r6]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r7
- ldrb r1, [r1, 0x9]
- adds r3, r0, 0
- muls r3, r1
- mov r1, r8
- str r3, [r1]
- ldr r2, _08025CE8 @ =0x02000000
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0, 0x9]
- ldr r1, _08025CEC @ =0x00016002
- adds r2, r1
- strb r0, [r2]
- ldr r1, _08025CF0 @ =gProtectStructs
- ldrb r0, [r6]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _08025CA8
- lsls r0, r3, 4
- subs r0, r3
- movs r1, 0xA
- bl __divsi3
- mov r1, r8
- str r0, [r1]
-_08025CA8:
- ldr r2, _08025CF4 @ =gDisableStructs
- ldr r0, _08025CF8 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strb r1, [r0, 0x9]
- ldr r1, _08025CFC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08025CC2:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08025CD0: .4byte gBattleCommunication
-_08025CD4: .4byte gBattleMoveDamage
-_08025CD8: .4byte gSideAffecting
-_08025CDC: .4byte gBankTarget
-_08025CE0: .4byte gBattleMons
-_08025CE4: .4byte gCurrentMove
-_08025CE8: .4byte 0x02000000
-_08025CEC: .4byte 0x00016002
-_08025CF0: .4byte gProtectStructs
-_08025CF4: .4byte gDisableStructs
-_08025CF8: .4byte gBankAttacker
-_08025CFC: .4byte gBattlescriptCurrInstr
- thumb_func_end atk86_stockpiletobasedamage
-
- thumb_func_start sub_8025D00
-sub_8025D00: @ 8025D00
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r7, _08025D40 @ =gBattlescriptCurrInstr
- ldr r1, [r7]
- ldrb r2, [r1, 0x1]
- ldrb r0, [r1, 0x2]
- lsls r0, 8
- orrs r2, r0
- ldrb r0, [r1, 0x3]
- lsls r0, 16
- orrs r2, r0
- ldrb r0, [r1, 0x4]
- lsls r0, 24
- orrs r2, r0
- ldr r0, _08025D44 @ =gDisableStructs
- mov r8, r0
- ldr r6, _08025D48 @ =gBankAttacker
- ldrb r3, [r6]
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- mov r1, r8
- adds r4, r0, r1
- ldrb r1, [r4, 0x9]
- cmp r1, 0
- bne _08025D50
- str r2, [r7]
- ldr r0, _08025D4C @ =gBattleCommunication
- strb r1, [r0, 0x5]
- b _08025DD0
- .align 2, 0
-_08025D40: .4byte gBattlescriptCurrInstr
-_08025D44: .4byte gDisableStructs
-_08025D48: .4byte gBankAttacker
-_08025D4C: .4byte gBattleCommunication
-_08025D50:
- ldr r1, _08025D74 @ =gBattleMons
- movs r0, 0x58
- muls r0, r3
- adds r1, r0, r1
- ldrh r0, [r1, 0x2C]
- ldrh r3, [r1, 0x28]
- cmp r0, r3
- bne _08025D80
- movs r0, 0
- strb r0, [r4, 0x9]
- str r2, [r7]
- ldr r1, _08025D78 @ =gBankTarget
- ldrb r0, [r6]
- strb r0, [r1]
- ldr r1, _08025D7C @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _08025DD0
- .align 2, 0
-_08025D74: .4byte gBattleMons
-_08025D78: .4byte gBankTarget
-_08025D7C: .4byte gBattleCommunication
-_08025D80:
- ldr r5, _08025DDC @ =gBattleMoveDamage
- ldrh r0, [r1, 0x2C]
- ldrb r1, [r4, 0x9]
- movs r2, 0x3
- subs r2, r1
- movs r4, 0x1
- adds r1, r4, 0
- lsls r1, r2
- bl __divsi3
- str r0, [r5]
- cmp r0, 0
- bne _08025D9C
- str r4, [r5]
-_08025D9C:
- ldr r0, [r5]
- negs r0, r0
- str r0, [r5]
- ldr r2, _08025DE0 @ =0x02000000
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0, 0x9]
- ldr r1, _08025DE4 @ =0x00016002
- adds r2, r1
- movs r3, 0
- strb r0, [r2]
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r8
- strb r3, [r0, 0x9]
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- ldr r1, _08025DE8 @ =gBankTarget
- ldrb r0, [r6]
- strb r0, [r1]
-_08025DD0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08025DDC: .4byte gBattleMoveDamage
-_08025DE0: .4byte 0x02000000
-_08025DE4: .4byte 0x00016002
-_08025DE8: .4byte gBankTarget
- thumb_func_end sub_8025D00
-
- thumb_func_start atk88_negativedamage
-atk88_negativedamage: @ 8025DEC
- push {lr}
- ldr r2, _08025E14 @ =gBattleMoveDamage
- ldr r0, _08025E18 @ =gHP_dealt
- ldr r0, [r0]
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- negs r0, r0
- str r0, [r2]
- cmp r0, 0
- bne _08025E08
- movs r0, 0x1
- negs r0, r0
- str r0, [r2]
-_08025E08:
- ldr r1, _08025E1C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08025E14: .4byte gBattleMoveDamage
-_08025E18: .4byte gHP_dealt
-_08025E1C: .4byte gBattlescriptCurrInstr
- thumb_func_end atk88_negativedamage
-
- thumb_func_start sub_8025E20
-sub_8025E20: @ 8025E20
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r8, r3
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- movs r0, 0
- mov r9, r0
- mov r10, r0
- movs r0, 0x40
- ands r0, r5
- cmp r0, 0
- beq _08025E54
- ldr r0, _08025E4C @ =gActiveBank
- ldr r1, _08025E50 @ =gBankAttacker
- b _08025E58
- .align 2, 0
-_08025E4C: .4byte gActiveBank
-_08025E50: .4byte gBankAttacker
-_08025E54:
- ldr r0, _08025EF8 @ =gActiveBank
- ldr r1, _08025EFC @ =gBankTarget
-_08025E58:
- ldrb r1, [r1]
- strb r1, [r0]
- movs r0, 0xBF
- ands r5, r0
- movs r0, 0x80
- ands r0, r5
- cmp r0, 0
- beq _08025E72
- mov r0, r9
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
-_08025E72:
- movs r0, 0x7F
- ands r5, r0
- movs r0, 0x20
- ands r0, r5
- cmp r0, 0
- beq _08025E88
- mov r0, r10
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
-_08025E88:
- movs r0, 0xDF
- ands r5, r0
- ldr r1, _08025F00 @ =gBattleTextBuff1
- movs r4, 0
- movs r2, 0xFD
- strb r2, [r1]
- movs r0, 0x5
- strb r0, [r1, 0x1]
- strb r7, [r1, 0x2]
- movs r3, 0x1
- negs r3, r3
- mov r12, r3
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- lsls r0, r6, 24
- cmp r0, 0
- blt _08025EAC
- b _080261B0
-_08025EAC:
- ldr r4, _08025F04 @ =gSideTimer
- ldr r1, _08025EF8 @ =gActiveBank
- ldrb r0, [r1]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x2]
- cmp r0, 0
- beq _08025F54
- mov r2, r9
- cmp r2, 0
- bne _08025F54
- ldr r0, _08025F08 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xAE
- beq _08025F84
- cmp r5, 0x1
- bne _08025F74
- ldr r4, _08025F0C @ =gSpecialStatuses
- ldr r3, _08025EF8 @ =gActiveBank
- ldrb r0, [r3]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r0, [r1]
- lsls r0, 31
- cmp r0, 0
- beq _08025F14
- ldr r0, _08025F10 @ =gBattlescriptCurrInstr
- mov r4, r8
- str r4, [r0]
- b _08025F74
- .align 2, 0
-_08025EF8: .4byte gActiveBank
-_08025EFC: .4byte gBankTarget
-_08025F00: .4byte gBattleTextBuff1
-_08025F04: .4byte gSideTimer
-_08025F08: .4byte gCurrentMove
-_08025F0C: .4byte gSpecialStatuses
-_08025F10: .4byte gBattlescriptCurrInstr
-_08025F14:
- mov r0, r8
- bl b_movescr_stack_push
- ldr r0, _08025F40 @ =0x02000000
- ldr r6, _08025F44 @ =gActiveBank
- ldrb r1, [r6]
- ldr r2, _08025F48 @ =0x00016003
- adds r0, r2
- strb r1, [r0]
- ldr r1, _08025F4C @ =gBattlescriptCurrInstr
- ldr r0, _08025F50 @ =gUnknown_081D9128
- str r0, [r1]
- ldrb r1, [r6]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _08025F74
- .align 2, 0
-_08025F40: .4byte 0x02000000
-_08025F44: .4byte gActiveBank
-_08025F48: .4byte 0x00016003
-_08025F4C: .4byte gBattlescriptCurrInstr
-_08025F50: .4byte gUnknown_081D9128
-_08025F54:
- ldr r0, _08025F78 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xAE
- beq _08025F84
- mov r3, r10
- cmp r3, 0x1
- beq _08025F84
- movs r0, 0
- bl sub_801C108
- lsls r0, 24
- cmp r0, 0
- beq _08025F84
- ldr r1, _08025F7C @ =gBattlescriptCurrInstr
- ldr r0, _08025F80 @ =BattleScript_1D83D6
- str r0, [r1]
-_08025F74:
- movs r0, 0x1
- b _080262A4
- .align 2, 0
-_08025F78: .4byte gCurrentMove
-_08025F7C: .4byte gBattlescriptCurrInstr
-_08025F80: .4byte BattleScript_1D83D6
-_08025F84:
- ldr r2, _08025FCC @ =gBattleMons
- ldr r1, _08025FD0 @ =gActiveBank
- ldrb r3, [r1]
- movs r4, 0x58
- adds r0, r3, 0
- muls r0, r4
- adds r0, r2
- adds r0, 0x20
- ldrb r0, [r0]
- mov r10, r2
- cmp r0, 0x1D
- beq _08025FA0
- cmp r0, 0x49
- bne _08026040
-_08025FA0:
- mov r0, r9
- cmp r0, 0
- bne _08026040
- ldr r0, _08025FD4 @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xAE
- beq _08026040
- cmp r5, 0x1
- bne _08025F74
- ldr r4, _08025FD8 @ =gSpecialStatuses
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _08025FE0
- ldr r0, _08025FDC @ =gBattlescriptCurrInstr
- mov r1, r8
- str r1, [r0]
- b _08025F74
- .align 2, 0
-_08025FCC: .4byte gBattleMons
-_08025FD0: .4byte gActiveBank
-_08025FD4: .4byte gCurrentMove
-_08025FD8: .4byte gSpecialStatuses
-_08025FDC: .4byte gBattlescriptCurrInstr
-_08025FE0:
- mov r0, r8
- bl b_movescr_stack_push
- ldr r0, _08026028 @ =0x02000000
- ldr r2, _0802602C @ =gActiveBank
- ldrb r1, [r2]
- ldr r3, _08026030 @ =0x00016003
- adds r0, r3
- strb r1, [r0]
- ldr r1, _08026034 @ =gBattlescriptCurrInstr
- ldr r0, _08026038 @ =gUnknown_081D989B
- str r0, [r1]
- ldr r1, _0802603C @ =gLastUsedAbility
- ldrb r0, [r2]
- movs r6, 0x58
- muls r0, r6
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r2]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- ldr r0, _0802602C @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
- b _08025F74
- .align 2, 0
-_08026028: .4byte 0x02000000
-_0802602C: .4byte gActiveBank
-_08026030: .4byte 0x00016003
-_08026034: .4byte gBattlescriptCurrInstr
-_08026038: .4byte gUnknown_081D989B
-_0802603C: .4byte gLastUsedAbility
-_08026040:
- ldr r1, _08026090 @ =gActiveBank
- ldrb r0, [r1]
- movs r4, 0x58
- muls r0, r4
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x33
- bne _080260A8
- mov r2, r9
- cmp r2, 0
- bne _080260A8
- cmp r7, 0x6
- bne _080260A8
- cmp r5, 0x1
- bne _08025F74
- mov r0, r8
- bl b_movescr_stack_push
- ldr r0, _08026094 @ =0x02000000
- ldr r3, _08026090 @ =gActiveBank
- ldrb r1, [r3]
- ldr r6, _08026098 @ =0x00016003
- adds r0, r6
- strb r1, [r0]
- ldr r1, _0802609C @ =gBattlescriptCurrInstr
- ldr r0, _080260A0 @ =gUnknown_081D9903
- str r0, [r1]
- ldr r1, _080260A4 @ =gLastUsedAbility
- ldrb r0, [r3]
- muls r0, r4
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r3]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- b _08025F74
- .align 2, 0
-_08026090: .4byte gActiveBank
-_08026094: .4byte 0x02000000
-_08026098: .4byte 0x00016003
-_0802609C: .4byte gBattlescriptCurrInstr
-_080260A0: .4byte gUnknown_081D9903
-_080260A4: .4byte gLastUsedAbility
-_080260A8:
- ldr r1, _080260FC @ =gActiveBank
- ldrb r0, [r1]
- movs r4, 0x58
- muls r0, r4
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x34
- bne _08026114
- mov r2, r9
- cmp r2, 0
- bne _08026114
- cmp r7, 0x1
- bne _08026114
- cmp r5, 0x1
- beq _080260CA
- b _08025F74
-_080260CA:
- mov r0, r8
- bl b_movescr_stack_push
- ldr r0, _08026100 @ =0x02000000
- ldr r3, _080260FC @ =gActiveBank
- ldrb r1, [r3]
- ldr r6, _08026104 @ =0x00016003
- adds r0, r6
- strb r1, [r0]
- ldr r1, _08026108 @ =gBattlescriptCurrInstr
- ldr r0, _0802610C @ =gUnknown_081D9903
- str r0, [r1]
- ldr r1, _08026110 @ =gLastUsedAbility
- ldrb r0, [r3]
- muls r0, r4
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r3]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- b _08025F74
- .align 2, 0
-_080260FC: .4byte gActiveBank
-_08026100: .4byte 0x02000000
-_08026104: .4byte 0x00016003
-_08026108: .4byte gBattlescriptCurrInstr
-_0802610C: .4byte gUnknown_081D9903
-_08026110: .4byte gLastUsedAbility
-_08026114:
- ldr r0, _080261A0 @ =gActiveBank
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- add r0, r10
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x13
- bne _0802612C
- cmp r5, 0
- bne _0802612C
- b _08025F74
-_0802612C:
- lsls r0, r6, 24
- asrs r0, 28
- movs r1, 0x7
- ands r0, r1
- negs r0, r0
- lsls r0, 24
- ldr r3, _080261A4 @ =gBattleTextBuff2
- movs r4, 0
- movs r1, 0xFD
- strb r1, [r3]
- movs r2, 0x1
- lsrs r6, r0, 24
- asrs r0, 24
- subs r1, 0xFF
- cmp r0, r1
- bne _08026156
- strb r4, [r3, 0x1]
- movs r0, 0xD3
- strb r0, [r3, 0x2]
- strb r4, [r3, 0x3]
- movs r2, 0x4
-_08026156:
- adds r0, r2, r3
- strb r4, [r0]
- adds r2, 0x1
- adds r1, r2, r3
- movs r0, 0xD4
- strb r0, [r1]
- adds r2, 0x1
- adds r0, r2, r3
- strb r4, [r0]
- adds r2, 0x1
- adds r1, r2, r3
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, _080261A0 @ =gActiveBank
- ldrb r2, [r1]
- movs r0, 0x58
- muls r0, r2
- adds r0, r7, r0
- mov r1, r10
- adds r1, 0x18
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0
- beq _08026206
- movs r1, 0
- ldr r0, _080261A8 @ =gBankTarget
- ldrb r0, [r0]
- ldr r3, _080261AC @ =gBattleCommunication
- mov r8, r3
- cmp r0, r2
- bne _0802619A
- movs r1, 0x1
-_0802619A:
- mov r4, r8
- strb r1, [r4, 0x5]
- b _08026234
- .align 2, 0
-_080261A0: .4byte gActiveBank
-_080261A4: .4byte gBattleTextBuff2
-_080261A8: .4byte gBankTarget
-_080261AC: .4byte gBattleCommunication
-_080261B0:
- asrs r6, r0, 28
- movs r0, 0x7
- ands r6, r0
- ldr r3, _08026210 @ =gBattleTextBuff2
- strb r2, [r3]
- movs r2, 0x1
- cmp r6, 0x2
- bne _080261CA
- strb r4, [r3, 0x1]
- movs r0, 0xD1
- strb r0, [r3, 0x2]
- strb r4, [r3, 0x3]
- movs r2, 0x4
-_080261CA:
- adds r0, r2, r3
- strb r4, [r0]
- adds r2, 0x1
- adds r1, r2, r3
- movs r0, 0xD2
- strb r0, [r1]
- adds r2, 0x1
- adds r0, r2, r3
- strb r4, [r0]
- adds r2, 0x1
- adds r1, r2, r3
- ldrb r0, [r1]
- mov r2, r12
- orrs r0, r2
- strb r0, [r1]
- ldr r2, _08026214 @ =gBattleMons
- ldr r4, _08026218 @ =gActiveBank
- ldrb r3, [r4]
- movs r0, 0x58
- muls r0, r3
- adds r0, r7, r0
- adds r1, r2, 0
- adds r1, 0x18
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- mov r10, r2
- cmp r0, 0xC
- bne _08026220
-_08026206:
- ldr r1, _0802621C @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- mov r8, r1
- b _08026234
- .align 2, 0
-_08026210: .4byte gBattleTextBuff2
-_08026214: .4byte gBattleMons
-_08026218: .4byte gActiveBank
-_0802621C: .4byte gBattleCommunication
-_08026220:
- movs r1, 0
- ldr r0, _080262B4 @ =gBankTarget
- ldrb r0, [r0]
- ldr r2, _080262B8 @ =gBattleCommunication
- mov r8, r2
- cmp r0, r3
- bne _08026230
- movs r1, 0x1
-_08026230:
- mov r3, r8
- strb r1, [r3, 0x5]
-_08026234:
- ldr r2, _080262BC @ =gActiveBank
- ldrb r0, [r2]
- movs r4, 0x58
- adds r1, r0, 0
- muls r1, r4
- adds r1, r7, r1
- mov r3, r10
- adds r3, 0x18
- adds r1, r3
- lsls r0, r6, 24
- asrs r0, 24
- ldrb r6, [r1]
- adds r0, r6
- strb r0, [r1]
- ldrb r0, [r2]
- muls r0, r4
- adds r0, r7, r0
- adds r1, r0, r3
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bge _08026264
- movs r0, 0
- strb r0, [r1]
-_08026264:
- ldr r1, _080262BC @ =gActiveBank
- ldrb r0, [r1]
- muls r0, r4
- adds r0, r7, r0
- adds r1, r0, r3
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, 0xC
- ble _0802627A
- movs r0, 0xC
- strb r0, [r1]
-_0802627A:
- mov r2, r8
- ldrb r0, [r2, 0x5]
- cmp r0, 0x2
- bne _080262A2
- movs r3, 0x1
- ands r3, r5
- cmp r3, 0
- beq _08026294
- ldr r0, _080262C0 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0]
-_08026294:
- mov r4, r8
- ldrb r0, [r4, 0x5]
- cmp r0, 0x2
- bne _080262A2
- cmp r3, 0
- bne _080262A2
- b _08025F74
-_080262A2:
- movs r0, 0
-_080262A4:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080262B4: .4byte gBankTarget
-_080262B8: .4byte gBattleCommunication
-_080262BC: .4byte gActiveBank
-_080262C0: .4byte gBattleMoveFlags
- thumb_func_end sub_8025E20
-
- thumb_func_start atk89_statbuffchange
-atk89_statbuffchange: @ 80262C4
- push {r4,r5,lr}
- ldr r5, _0802630C @ =gBattlescriptCurrInstr
- ldr r2, [r5]
- ldrb r3, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r3, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r3, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r3, r0
- ldr r0, _08026310 @ =0x02000000
- ldr r1, _08026314 @ =0x0001601e
- adds r0, r1
- ldrb r4, [r0]
- movs r0, 0xF0
- ands r0, r4
- lsls r0, 24
- asrs r0, 24
- movs r1, 0xF
- ands r1, r4
- ldrb r2, [r2, 0x1]
- bl sub_8025E20
- lsls r0, 24
- cmp r0, 0
- bne _08026304
- ldr r0, [r5]
- adds r0, 0x6
- str r0, [r5]
-_08026304:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802630C: .4byte gBattlescriptCurrInstr
-_08026310: .4byte 0x02000000
-_08026314: .4byte 0x0001601e
- thumb_func_end atk89_statbuffchange
-
- thumb_func_start atk8A_normalisebuffs
-atk8A_normalisebuffs: @ 8026318
- push {r4-r7,lr}
- movs r2, 0
- ldr r0, _08026360 @ =gNoOfAllBanks
- ldrb r1, [r0]
- ldr r0, _08026364 @ =gBattlescriptCurrInstr
- mov r12, r0
- cmp r2, r1
- bge _08026350
- ldr r0, _08026368 @ =gBattleMons
- movs r4, 0x6
- adds r5, r1, 0
- movs r7, 0x58
- adds r6, r0, 0
- adds r6, 0x18
-_08026334:
- adds r3, r2, 0x1
- movs r1, 0x7
- adds r0, r2, 0
- muls r0, r7
- adds r0, r6
- adds r0, 0x7
-_08026340:
- strb r4, [r0]
- subs r0, 0x1
- subs r1, 0x1
- cmp r1, 0
- bge _08026340
- adds r2, r3, 0
- cmp r2, r5
- blt _08026334
-_08026350:
- mov r1, r12
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08026360: .4byte gNoOfAllBanks
-_08026364: .4byte gBattlescriptCurrInstr
-_08026368: .4byte gBattleMons
- thumb_func_end atk8A_normalisebuffs
-
- thumb_func_start atk8B_setbide
-atk8B_setbide: @ 802636C
- push {r4,r5,lr}
- ldr r4, _080263C4 @ =gBattleMons
- ldr r3, _080263C8 @ =gBankAttacker
- ldrb r0, [r3]
- movs r5, 0x58
- adds r2, r0, 0
- muls r2, r5
- adds r4, 0x50
- adds r2, r4
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 5
- orrs r0, r1
- str r0, [r2]
- ldr r1, _080263CC @ =gLockedMove
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- ldr r1, _080263D0 @ =gCurrentMove
- ldrh r1, [r1]
- movs r2, 0
- strh r1, [r0]
- ldr r1, _080263D4 @ =gTakenDmg
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r1
- str r2, [r0]
- ldrb r0, [r3]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r4
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 2
- orrs r0, r2
- str r0, [r1]
- ldr r1, _080263D8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080263C4: .4byte gBattleMons
-_080263C8: .4byte gBankAttacker
-_080263CC: .4byte gLockedMove
-_080263D0: .4byte gCurrentMove
-_080263D4: .4byte gTakenDmg
-_080263D8: .4byte gBattlescriptCurrInstr
- thumb_func_end atk8B_setbide
-
- thumb_func_start atk8C_confuseifrepeatingattackends
-atk8C_confuseifrepeatingattackends: @ 80263DC
- push {lr}
- ldr r1, _0802640C @ =gBattleMons
- ldr r0, _08026410 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0xC0
- lsls r1, 4
- ands r0, r1
- cmp r0, 0
- bne _080263FE
- ldr r1, _08026414 @ =gBattleCommunication
- movs r0, 0x75
- strb r0, [r1, 0x3]
-_080263FE:
- ldr r1, _08026418 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0802640C: .4byte gBattleMons
-_08026410: .4byte gBankAttacker
-_08026414: .4byte gBattleCommunication
-_08026418: .4byte gBattlescriptCurrInstr
- thumb_func_end atk8C_confuseifrepeatingattackends
-
- thumb_func_start atk8D_setloopcounter
-atk8D_setloopcounter: @ 802641C
- push {r4,r5,lr}
- ldr r0, _08026430 @ =gBattlescriptCurrInstr
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- cmp r1, 0
- beq _08026438
- ldr r0, _08026434 @ =gMultiHitCounter
- strb r1, [r0]
- b _08026452
- .align 2, 0
-_08026430: .4byte gBattlescriptCurrInstr
-_08026434: .4byte gMultiHitCounter
-_08026438:
- ldr r4, _08026460 @ =gMultiHitCounter
- bl Random
- movs r5, 0x3
- ands r0, r5
- strb r0, [r4]
- cmp r0, 0x1
- bls _0802644E
- bl Random
- ands r0, r5
-_0802644E:
- adds r0, 0x2
- strb r0, [r4]
-_08026452:
- ldr r1, _08026464 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08026460: .4byte gMultiHitCounter
-_08026464: .4byte gBattlescriptCurrInstr
- thumb_func_end atk8D_setloopcounter
-
- thumb_func_start sub_8026468
-sub_8026468: @ 8026468
- push {r4,lr}
- ldr r1, _080264A8 @ =0x02000000
- ldr r0, _080264AC @ =0x000160e0
- adds r2, r1, r0
- movs r3, 0
- movs r0, 0xFD
- strb r0, [r2]
- ldr r2, _080264B0 @ =0x000160e1
- adds r0, r1, r2
- movs r2, 0x1
- strb r2, [r0]
- ldr r4, _080264B4 @ =0x000160e2
- adds r0, r1, r4
- strb r2, [r0]
- adds r4, 0x1
- adds r0, r1, r4
- strb r2, [r0]
- ldr r2, _080264B8 @ =0x000160e4
- adds r0, r1, r2
- strb r3, [r0]
- adds r4, 0x2
- adds r1, r4
- movs r0, 0xFF
- strb r0, [r1]
- ldr r1, _080264BC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080264A8: .4byte 0x02000000
-_080264AC: .4byte 0x000160e0
-_080264B0: .4byte 0x000160e1
-_080264B4: .4byte 0x000160e2
-_080264B8: .4byte 0x000160e4
-_080264BC: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8026468
-
- thumb_func_start sub_80264C0
-sub_80264C0: @ 80264C0
- push {r4-r7,lr}
- ldr r6, _080264F4 @ =gBattleMons
- ldr r7, _080264F8 @ =gBankAttacker
- ldrb r0, [r7]
- movs r5, 0x58
- adds r1, r0, 0
- muls r1, r5
- adds r1, r6
- adds r1, 0x2A
- ldr r4, _080264FC @ =gBankTarget
- ldrb r3, [r4]
- adds r0, r3, 0
- muls r0, r5
- adds r0, r6
- adds r0, 0x2A
- ldrb r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bcc _0802650C
- ldr r0, _08026500 @ =0x02000000
- ldr r2, _08026504 @ =0x00016064
- adds r1, r3, r2
- adds r1, r0
- ldr r2, _08026508 @ =gBattlePartyID
- lsls r0, r3, 1
- b _08026568
- .align 2, 0
-_080264F4: .4byte gBattleMons
-_080264F8: .4byte gBankAttacker
-_080264FC: .4byte gBankTarget
-_08026500: .4byte 0x02000000
-_08026504: .4byte 0x00016064
-_08026508: .4byte gBattlePartyID
-_0802650C:
- bl Random
- movs r3, 0xFF
- ands r3, r0
- ldrb r0, [r7]
- muls r0, r5
- adds r0, r6
- adds r0, 0x2A
- ldrb r2, [r0]
- ldrb r4, [r4]
- adds r0, r4, 0
- muls r0, r5
- adds r0, r6
- adds r0, 0x2A
- ldrb r1, [r0]
- adds r2, r1
- adds r0, r3, 0
- muls r0, r2
- asrs r0, 8
- adds r0, 0x1
- lsrs r1, 2
- cmp r0, r1
- bhi _0802655C
- ldr r3, _08026558 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- movs r0, 0
- b _08026576
- .align 2, 0
-_08026558: .4byte gBattlescriptCurrInstr
-_0802655C:
- ldr r0, _0802657C @ =0x02000000
- ldr r2, _08026580 @ =0x00016064
- adds r1, r4, r2
- adds r1, r0
- ldr r2, _08026584 @ =gBattlePartyID
- lsls r0, r4, 1
-_08026568:
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldr r1, _08026588 @ =gBattlescriptCurrInstr
- ldr r0, _0802658C @ =gUnknown_081D90FC
- str r0, [r1]
- movs r0, 0x1
-_08026576:
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0802657C: .4byte 0x02000000
-_08026580: .4byte 0x00016064
-_08026584: .4byte gBattlePartyID
-_08026588: .4byte gBattlescriptCurrInstr
-_0802658C: .4byte gUnknown_081D90FC
- thumb_func_end sub_80264C0
-
- thumb_func_start sub_8026590
-sub_8026590: @ 8026590
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, _08026628 @ =gBattleTypeFlags
- ldrh r1, [r4]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _080265A4
- b _0802687C
-_080265A4:
- ldr r5, _0802662C @ =gBankTarget
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- ldr r1, _08026630 @ =gEnemyParty
- mov r8, r1
- cmp r0, 0
- bne _080265BA
- ldr r2, _08026634 @ =gPlayerParty
- mov r8, r2
-_080265BA:
- ldrh r1, [r4]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08026638
- movs r7, 0
- movs r6, 0
- ldrb r0, [r5]
- bl sub_803FC34
- lsls r0, 24
- lsrs r0, 24
- bl sub_803FBFC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _080265E0
- movs r6, 0x3
-_080265E0:
- adds r5, r6, 0
- adds r0, r5, 0x3
- cmp r5, r0
- bge _08026678
-_080265E8:
- movs r0, 0x64
- muls r0, r5
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0802661A
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0802661A
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0802661A
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_0802661A:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r6, 0x3
- cmp r5, r0
- blt _080265E8
- b _08026678
- .align 2, 0
-_08026628: .4byte gBattleTypeFlags
-_0802662C: .4byte gBankTarget
-_08026630: .4byte gEnemyParty
-_08026634: .4byte gPlayerParty
-_08026638:
- movs r7, 0
- movs r5, 0
-_0802663C:
- movs r0, 0x64
- muls r0, r5
- mov r2, r8
- adds r4, r2, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0802666E
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0802666E
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0802666E
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
-_0802666E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _0802663C
-_08026678:
- cmp r7, 0x1
- bhi _08026688
- ldr r0, _080266BC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x41
- ands r0, r1
- cmp r0, 0x1
- bne _080266A0
-_08026688:
- cmp r7, 0x2
- bhi _080266C4
- ldr r0, _080266BC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080266C4
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _080266C4
-_080266A0:
- ldr r3, _080266C0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08026880
- .align 2, 0
-_080266BC: .4byte gBattleTypeFlags
-_080266C0: .4byte gBattlescriptCurrInstr
-_080266C4:
- bl sub_80264C0
- lsls r0, 24
- cmp r0, 0
- bne _080266D0
- b _08026880
-_080266D0:
- ldr r0, _08026710 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08026774
-_080266DC:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _08026714 @ =gBankTarget
- ldrb r0, [r0]
- bl sub_803FC34
- lsls r0, 24
- lsrs r0, 24
- bl sub_803FBFC
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bne _08026718
- adds r0, r6, 0x3
- lsls r0, 24
- lsrs r5, r0, 24
- b _0802671A
- .align 2, 0
-_08026710: .4byte gBattleTypeFlags
-_08026714: .4byte gBankTarget
-_08026718:
- adds r5, r6, 0
-_0802671A:
- ldr r4, _0802676C @ =gBattlePartyID
- ldr r0, _08026770 @ =gBankTarget
- ldrb r2, [r0]
- lsls r1, r2, 1
- adds r1, r4
- lsls r0, r5, 16
- lsrs r3, r0, 16
- ldrh r1, [r1]
- cmp r3, r1
- beq _080266DC
- movs r0, 0x2
- eors r2, r0
- lsls r0, r2, 1
- adds r0, r4
- ldrh r0, [r0]
- cmp r3, r0
- beq _080266DC
- movs r0, 0x64
- muls r0, r5
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080266DC
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0x1
- beq _080266DC
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080266DC
- b _08026832
- .align 2, 0
-_0802676C: .4byte gBattlePartyID
-_08026770: .4byte gBankTarget
-_08026774:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080267E4
- ldr r6, _080267DC @ =gBattlePartyID
-_0802677E:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080267E0 @ =gBankTarget
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r6
- adds r2, r5, 0
- ldrh r0, [r0]
- cmp r2, r0
- beq _0802677E
- movs r0, 0x2
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r6
- ldrh r0, [r0]
- cmp r2, r0
- beq _0802677E
- movs r0, 0x64
- muls r0, r5
- mov r2, r8
- adds r4, r2, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0802677E
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0x1
- beq _0802677E
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0802677E
- b _08026832
- .align 2, 0
-_080267DC: .4byte gBattlePartyID
-_080267E0: .4byte gBankTarget
-_080267E4:
- ldr r6, _0802686C @ =gBattlePartyID
-_080267E6:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _08026870 @ =gBankTarget
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r6
- ldrh r0, [r0]
- cmp r5, r0
- beq _080267E6
- movs r0, 0x64
- muls r0, r5
- mov r1, r8
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _080267E6
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0x1
- beq _080267E6
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _080267E6
-_08026832:
- ldr r0, _08026874 @ =0x02000000
- ldr r4, _08026870 @ =gBankTarget
- ldrb r1, [r4]
- ldr r2, _08026878 @ =0x00016068
- adds r1, r2
- adds r1, r0
- strb r5, [r1]
- bl IsLinkDoubleBattle
- lsls r0, 24
- cmp r0, 0
- bne _08026850
- ldrb r0, [r4]
- bl sub_8012258
-_08026850:
- ldrb r0, [r4]
- adds r1, r5, 0
- movs r2, 0
- bl sub_8094B6C
- ldrb r1, [r4]
- movs r0, 0x2
- eors r0, r1
- adds r1, r5, 0
- movs r2, 0x1
- bl sub_8094B6C
- b _08026880
- .align 2, 0
-_0802686C: .4byte gBattlePartyID
-_08026870: .4byte gBankTarget
-_08026874: .4byte 0x02000000
-_08026878: .4byte 0x00016068
-_0802687C:
- bl sub_80264C0
-_08026880:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8026590
-
- thumb_func_start sub_802688C
-sub_802688C: @ 802688C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r6, 0
- ldr r2, _08026920 @ =gBattleMons
- ldr r3, _08026924 @ =gBankAttacker
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r1, r2, 0
- adds r1, 0xC
- adds r0, r1
- ldrh r0, [r0]
- mov r8, r2
- cmp r0, 0
- beq _080268CE
- movs r5, 0x58
- adds r2, r1, 0
-_080268B4:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bhi _080268CE
- lsls r1, r6, 1
- ldrb r0, [r3]
- muls r0, r5
- adds r1, r0
- adds r1, r2
- ldrh r0, [r1]
- cmp r0, 0
- bne _080268B4
-_080268CE:
- movs r3, 0
- cmp r3, r6
- bcs _08026950
- ldr r0, _08026928 @ =gBattleMoves
- mov r10, r0
- ldr r5, _08026920 @ =gBattleMons
- mov r12, r5
- ldr r7, _08026924 @ =gBankAttacker
- ldrb r0, [r7]
- movs r4, 0x58
- adds r5, r0, 0
- muls r5, r4
- movs r0, 0xC
- add r0, r12
- mov r9, r0
-_080268EC:
- lsls r0, r3, 1
- adds r0, r5
- add r0, r9
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- add r0, r10
- ldrb r2, [r0, 0x2]
- cmp r2, 0x9
- bne _0802692E
- mov r0, r8
- adds r1, r5, r0
- adds r0, r1, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _0802691A
- adds r0, r1, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x7
- bne _0802692C
-_0802691A:
- movs r2, 0x7
- b _0802692E
- .align 2, 0
-_08026920: .4byte gBattleMons
-_08026924: .4byte gBankAttacker
-_08026928: .4byte gBattleMoves
-_0802692C:
- movs r2, 0
-_0802692E:
- ldrb r0, [r7]
- muls r0, r4
- add r0, r12
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r2, r1
- beq _08026946
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r2, r0
- bne _08026950
-_08026946:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r6
- bcc _080268EC
-_08026950:
- cmp r3, r6
- bne _08026974
- ldr r3, _08026970 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08026A18
- .align 2, 0
-_08026970: .4byte gBattlescriptCurrInstr
-_08026974:
- movs r7, 0x3
- ldr r5, _080269CC @ =gBattleMoves
- mov r9, r5
-_0802697A:
- bl Random
- adds r3, r0, 0
- ands r3, r7
- cmp r3, r6
- bcs _0802697A
- ldr r4, _080269D0 @ =gBattleMons
- lsls r1, r3, 1
- ldr r3, _080269D4 @ =gBankAttacker
- ldrb r2, [r3]
- movs r0, 0x58
- adds r5, r2, 0
- muls r5, r0
- adds r1, r5
- adds r0, r4, 0
- adds r0, 0xC
- adds r1, r0
- ldrh r1, [r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r2, [r0, 0x2]
- mov r8, r4
- adds r4, r3, 0
- cmp r2, 0x9
- bne _080269DA
- mov r0, r8
- adds r2, r5, r0
- adds r0, r2, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x7
- beq _080269C8
- adds r0, r2, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x7
- bne _080269D8
-_080269C8:
- movs r2, 0x7
- b _080269DA
- .align 2, 0
-_080269CC: .4byte gBattleMoves
-_080269D0: .4byte gBattleMons
-_080269D4: .4byte gBankAttacker
-_080269D8:
- movs r2, 0
-_080269DA:
- ldrb r0, [r4]
- movs r3, 0x58
- muls r0, r3
- add r0, r8
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r5, [r1]
- cmp r2, r5
- beq _0802697A
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r2, r0
- beq _0802697A
- strb r2, [r1]
- ldrb r0, [r4]
- muls r0, r3
- add r0, r8
- adds r0, 0x22
- strb r2, [r0]
- ldr r1, _08026A28 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x3
- strb r0, [r1, 0x1]
- strb r2, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r1, _08026A2C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08026A18:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08026A28: .4byte gBattleTextBuff1
-_08026A2C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802688C
-
- thumb_func_start atk91_givemoney
-atk91_givemoney: @ 8026A30
- push {r4,lr}
- ldr r0, _08026A8C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08026AAC
- ldr r4, _08026A90 @ =gPaydayMoney
- ldrh r0, [r4]
- cmp r0, 0
- beq _08026AAC
- ldr r0, _08026A94 @ =gSaveBlock1 + 0x490
- ldrh r2, [r4]
- ldr r1, _08026A98 @ =0x02000000
- ldr r3, _08026A9C @ =0x00016056
- adds r1, r3
- ldrb r1, [r1]
- muls r1, r2
- bl sub_80B79B8
- ldr r1, _08026AA0 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- movs r0, 0x5
- strb r0, [r1, 0x3]
- ldrh r2, [r4]
- strb r2, [r1, 0x4]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r2
- lsrs r0, 8
- strb r0, [r1, 0x5]
- movs r0, 0xFF
- strb r0, [r1, 0x6]
- ldr r4, _08026AA4 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- adds r0, 0x1
- bl b_movescr_stack_push
- ldr r0, _08026AA8 @ =gUnknown_081D95DB
- str r0, [r4]
- b _08026AB4
- .align 2, 0
-_08026A8C: .4byte gBattleTypeFlags
-_08026A90: .4byte gPaydayMoney
-_08026A94: .4byte gSaveBlock1 + 0x490
-_08026A98: .4byte 0x02000000
-_08026A9C: .4byte 0x00016056
-_08026AA0: .4byte gBattleTextBuff1
-_08026AA4: .4byte gBattlescriptCurrInstr
-_08026AA8: .4byte gUnknown_081D95DB
-_08026AAC:
- ldr r1, _08026ABC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_08026AB4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08026ABC: .4byte gBattlescriptCurrInstr
- thumb_func_end atk91_givemoney
-
- thumb_func_start atk92_setlightscreen
-atk92_setlightscreen: @ 8026AC0
- push {r4-r6,lr}
- ldr r4, _08026AF0 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankIdentity
- ldr r6, _08026AF4 @ =gSideAffecting
- movs r5, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r6
- ldrh r1, [r1]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08026B00
- ldr r2, _08026AF8 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08026AFC @ =gBattleCommunication
- movs r0, 0
- b _08026B60
- .align 2, 0
-_08026AF0: .4byte gBankAttacker
-_08026AF4: .4byte gSideAffecting
-_08026AF8: .4byte gBattleMoveFlags
-_08026AFC: .4byte gBattleCommunication
-_08026B00:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r6
- ldrh r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strh r0, [r1]
- ldrb r0, [r4]
- bl GetBankIdentity
- ldr r2, _08026B50 @ =gSideTimer
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x5
- strb r1, [r0, 0x1]
- ldr r0, _08026B54 @ =gBattleTypeFlags
- ldrh r1, [r0]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _08026B5C
- movs r0, 0x1
- bl CountAliveMons
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08026B5C
- ldr r1, _08026B58 @ =gBattleCommunication
- movs r0, 0x4
- b _08026B60
- .align 2, 0
-_08026B50: .4byte gSideTimer
-_08026B54: .4byte gBattleTypeFlags
-_08026B58: .4byte gBattleCommunication
-_08026B5C:
- ldr r1, _08026B70 @ =gBattleCommunication
- movs r0, 0x3
-_08026B60:
- strb r0, [r1, 0x5]
- ldr r1, _08026B74 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08026B70: .4byte gBattleCommunication
-_08026B74: .4byte gBattlescriptCurrInstr
- thumb_func_end atk92_setlightscreen
-
- thumb_func_start sub_8026B78
-sub_8026B78: @ 8026B78
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r7, _08026BA8 @ =gBattleMons
- ldr r6, _08026BAC @ =gBankTarget
- ldrb r2, [r6]
- movs r5, 0x58
- adds r0, r2, 0
- muls r0, r5
- adds r1, r0, r7
- ldrh r0, [r1, 0x2E]
- cmp r0, 0xAF
- bne _08026BB4
- ldr r1, _08026BB0 @ =gEnigmaBerries
- lsls r0, r2, 3
- subs r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r4, [r0, 0x7]
- ldrb r6, [r0, 0x1A]
- b _08026BCE
- .align 2, 0
-_08026BA8: .4byte gBattleMons
-_08026BAC: .4byte gBankTarget
-_08026BB0: .4byte gEnigmaBerries
-_08026BB4:
- ldrh r0, [r1, 0x2E]
- bl ItemId_GetHoldEffect
- lsls r0, 24
- lsrs r4, r0, 24
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7
- ldrh r0, [r0, 0x2E]
- bl ItemId_GetHoldEffectParam
- lsls r0, 24
- lsrs r6, r0, 24
-_08026BCE:
- ldr r1, _08026C4C @ =gStringBank
- ldr r5, _08026C50 @ =gBankTarget
- ldrb r0, [r5]
- strb r0, [r1]
- cmp r4, 0x27
- bne _08026C0C
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcs _08026C0C
- ldrb r0, [r5]
- movs r1, 0x27
- bl RecordItemBattle
- ldr r2, _08026C54 @ =gSpecialStatuses
- ldrb r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0]
-_08026C0C:
- ldr r0, _08026C58 @ =gBattleMons
- mov r8, r0
- ldr r1, _08026C50 @ =gBankTarget
- ldrb r2, [r1]
- movs r6, 0x58
- adds r0, r2, 0
- muls r0, r6
- mov r3, r8
- adds r5, r0, r3
- adds r0, r5, 0
- adds r0, 0x20
- ldrb r3, [r0]
- mov r10, r8
- cmp r3, 0x5
- bne _08026C6C
- ldr r2, _08026C5C @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _08026C60 @ =gLastUsedAbility
- strb r3, [r0]
- ldr r1, _08026C64 @ =gBattlescriptCurrInstr
- ldr r0, _08026C68 @ =gUnknown_081D9826
- str r0, [r1]
- ldr r1, _08026C50 @ =gBankTarget
- ldrb r0, [r1]
- movs r1, 0x5
- bl RecordAbilityBattle
- b _08026E40
- .align 2, 0
-_08026C4C: .4byte gStringBank
-_08026C50: .4byte gBankTarget
-_08026C54: .4byte gSpecialStatuses
-_08026C58: .4byte gBattleMons
-_08026C5C: .4byte gBattleMoveFlags
-_08026C60: .4byte gLastUsedAbility
-_08026C64: .4byte gBattlescriptCurrInstr
-_08026C68: .4byte gUnknown_081D9826
-_08026C6C:
- ldr r1, _08026CE0 @ =gStatuses3
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x18
- ands r0, r1
- cmp r0, 0
- bne _08026CF4
- ldr r1, _08026CE4 @ =gBattleMoves
- ldr r0, _08026CE8 @ =gCurrentMove
- ldrh r0, [r0]
- lsls r2, r0, 1
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldr r7, _08026CEC @ =gBankAttacker
- ldrb r0, [r7]
- muls r0, r6
- add r0, r10
- adds r0, 0x2A
- ldrb r0, [r0]
- adds r1, r5, 0
- adds r1, 0x2A
- ldrb r1, [r1]
- subs r0, r1
- ldrb r2, [r2, 0x3]
- adds r0, r2
- lsls r0, 16
- lsrs r4, r0, 16
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- adds r0, 0x1
- cmp r0, r4
- bge _08026CDC
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r6
- add r1, r10
- adds r1, 0x2A
- ldr r2, _08026CF0 @ =gBankTarget
- ldrb r0, [r2]
- muls r0, r6
- add r0, r10
- adds r0, 0x2A
- ldrb r1, [r1]
- movs r4, 0x1
- ldrb r0, [r0]
- cmp r1, r0
- bcs _08026D20
-_08026CDC:
- mov r10, r8
- b _08026DE0
- .align 2, 0
-_08026CE0: .4byte gStatuses3
-_08026CE4: .4byte gBattleMoves
-_08026CE8: .4byte gCurrentMove
-_08026CEC: .4byte gBankAttacker
-_08026CF0: .4byte gBankTarget
-_08026CF4:
- ldr r0, _08026D4C @ =gDisableStructs
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r0
- ldr r2, _08026D50 @ =gBankAttacker
- ldrb r0, [r1, 0x15]
- movs r4, 0
- ldrb r3, [r2]
- cmp r0, r3
- bne _08026D20
- ldrb r0, [r2]
- muls r0, r6
- add r0, r10
- adds r0, 0x2A
- adds r1, r5, 0
- adds r1, 0x2A
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08026D20
- movs r4, 0x1
-_08026D20:
- cmp r4, 0
- beq _08026DE0
- ldr r0, _08026D54 @ =gProtectStructs
- ldr r1, _08026D58 @ =gBankTarget
- ldrb r2, [r1]
- lsls r1, r2, 4
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- cmp r0, 0
- bge _08026D64
- ldr r1, _08026D5C @ =gBattleMoveDamage
- movs r0, 0x58
- muls r0, r2
- add r0, r10
- ldrh r0, [r0, 0x28]
- subs r0, 0x1
- str r0, [r1]
- ldr r2, _08026D60 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x40
- b _08026DC6
- .align 2, 0
-_08026D4C: .4byte gDisableStructs
-_08026D50: .4byte gBankAttacker
-_08026D54: .4byte gProtectStructs
-_08026D58: .4byte gBankTarget
-_08026D5C: .4byte gBattleMoveDamage
-_08026D60: .4byte gBattleMoveFlags
-_08026D64:
- ldr r0, _08026DA0 @ =gSpecialStatuses
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1]
- lsrs r0, 7
- cmp r0, 0
- beq _08026DB4
- ldr r1, _08026DA4 @ =gBattleMoveDamage
- movs r3, 0x58
- adds r0, r2, 0
- muls r0, r3
- add r0, r10
- ldrh r0, [r0, 0x28]
- subs r0, 0x1
- str r0, [r1]
- ldr r2, _08026DA8 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08026DAC @ =gLastUsedItem
- ldr r2, _08026DB0 @ =gBankTarget
- ldrb r0, [r2]
- muls r0, r3
- add r0, r10
- ldrh r0, [r0, 0x2E]
- strh r0, [r1]
- b _08026DCA
- .align 2, 0
-_08026DA0: .4byte gSpecialStatuses
-_08026DA4: .4byte gBattleMoveDamage
-_08026DA8: .4byte gBattleMoveFlags
-_08026DAC: .4byte gLastUsedItem
-_08026DB0: .4byte gBankTarget
-_08026DB4:
- ldr r1, _08026DD4 @ =gBattleMoveDamage
- movs r0, 0x58
- muls r0, r2
- add r0, r10
- ldrh r0, [r0, 0x28]
- str r0, [r1]
- ldr r2, _08026DD8 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x10
-_08026DC6:
- orrs r0, r1
- strb r0, [r2]
-_08026DCA:
- ldr r1, _08026DDC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08026E40
- .align 2, 0
-_08026DD4: .4byte gBattleMoveDamage
-_08026DD8: .4byte gBattleMoveFlags
-_08026DDC: .4byte gBattlescriptCurrInstr
-_08026DE0:
- ldr r2, _08026E10 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _08026E14 @ =gBankAttacker
- ldrb r0, [r0]
- movs r2, 0x58
- adds r1, r0, 0
- muls r1, r2
- add r1, r10
- adds r1, 0x2A
- ldr r3, _08026E18 @ =gBankTarget
- ldrb r0, [r3]
- muls r0, r2
- add r0, r10
- adds r0, 0x2A
- ldrb r1, [r1]
- ldrb r0, [r0]
- cmp r1, r0
- bcc _08026E20
- ldr r1, _08026E1C @ =gBattleCommunication
- movs r0, 0
- b _08026E24
- .align 2, 0
-_08026E10: .4byte gBattleMoveFlags
-_08026E14: .4byte gBankAttacker
-_08026E18: .4byte gBankTarget
-_08026E1C: .4byte gBattleCommunication
-_08026E20:
- ldr r1, _08026E50 @ =gBattleCommunication
- movs r0, 0x1
-_08026E24:
- strb r0, [r1, 0x5]
- ldr r3, _08026E54 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08026E40:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08026E50: .4byte gBattleCommunication
-_08026E54: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8026B78
-
- thumb_func_start atk94_gethalfcurrentenemyhp
-atk94_gethalfcurrentenemyhp: @ 8026E58
- push {lr}
- ldr r3, _08026E84 @ =gBattleMoveDamage
- ldr r2, _08026E88 @ =gBattleMons
- ldr r0, _08026E8C @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- lsrs r0, 1
- str r0, [r3]
- cmp r0, 0
- bne _08026E76
- movs r0, 0x1
- str r0, [r3]
-_08026E76:
- ldr r1, _08026E90 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08026E84: .4byte gBattleMoveDamage
-_08026E88: .4byte gBattleMons
-_08026E8C: .4byte gBankTarget
-_08026E90: .4byte gBattlescriptCurrInstr
- thumb_func_end atk94_gethalfcurrentenemyhp
-
- thumb_func_start sub_8026E94
-sub_8026E94: @ 8026E94
- push {lr}
- ldr r2, _08026EB4 @ =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _08026EC0
- ldr r2, _08026EB8 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08026EBC @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _08026ED2
- .align 2, 0
-_08026EB4: .4byte gBattleWeather
-_08026EB8: .4byte gBattleMoveFlags
-_08026EBC: .4byte gBattleCommunication
-_08026EC0:
- movs r0, 0x8
- strh r0, [r2]
- ldr r1, _08026EE0 @ =gBattleCommunication
- movs r0, 0x3
- strb r0, [r1, 0x5]
- ldr r0, _08026EE4 @ =gWishFutureKnock
- adds r0, 0x28
- movs r1, 0x5
- strb r1, [r0]
-_08026ED2:
- ldr r1, _08026EE8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08026EE0: .4byte gBattleCommunication
-_08026EE4: .4byte gWishFutureKnock
-_08026EE8: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8026E94
-
- thumb_func_start sub_8026EEC
-sub_8026EEC: @ 8026EEC
- push {r4,r5,lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08026F0A
- b _0802701C
-_08026F0A:
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _08026F20
- b _0802701C
-_08026F20:
- ldr r2, _08026F94 @ =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x18
- ands r0, r1
- adds r4, r2, 0
- ldr r5, _08026F98 @ =gBankAttacker
- cmp r0, 0
- beq _08026FAE
- ldr r0, _08026F9C @ =gBattleMons
- ldrb r2, [r5]
- movs r1, 0x58
- muls r1, r2
- adds r3, r1, r0
- adds r0, r3, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x5
- beq _08026FA8
- cmp r0, 0x8
- beq _08026FA8
- cmp r0, 0x4
- beq _08026FA8
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0x5
- beq _08026FA8
- cmp r0, 0x8
- beq _08026FA8
- cmp r0, 0x4
- beq _08026FA8
- adds r0, r3, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x8
- beq _08026FA8
- ldr r0, _08026FA0 @ =gStatuses3
- lsls r1, r2, 2
- adds r1, r0
- ldr r1, [r1]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08026FA8
- movs r0, 0x80
- lsls r0, 11
- ands r1, r0
- cmp r1, 0
- bne _08026FA8
- ldr r1, _08026FA4 @ =gBattleMoveDamage
- ldrh r0, [r3, 0x2C]
- lsrs r0, 4
- str r0, [r1]
- cmp r0, 0
- bne _08026FAE
- movs r0, 0x1
- b _08026FAC
- .align 2, 0
-_08026F94: .4byte gBattleWeather
-_08026F98: .4byte gBankAttacker
-_08026F9C: .4byte gBattleMons
-_08026FA0: .4byte gStatuses3
-_08026FA4: .4byte gBattleMoveDamage
-_08026FA8:
- ldr r1, _08027004 @ =gBattleMoveDamage
- movs r0, 0
-_08026FAC:
- str r0, [r1]
-_08026FAE:
- ldrh r1, [r4]
- movs r4, 0x80
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _08027024
- ldr r1, _08027008 @ =gBattleMons
- ldrb r3, [r5]
- movs r0, 0x58
- muls r0, r3
- adds r2, r0, r1
- adds r0, r2, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0xF
- beq _08027010
- adds r0, r2, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xF
- beq _08027010
- ldr r0, _0802700C @ =gStatuses3
- lsls r1, r3, 2
- adds r1, r0
- ldr r1, [r1]
- adds r0, r1, 0
- ands r0, r4
- cmp r0, 0
- bne _08027010
- movs r0, 0x80
- lsls r0, 11
- ands r1, r0
- cmp r1, 0
- bne _08027010
- ldr r1, _08027004 @ =gBattleMoveDamage
- ldrh r0, [r2, 0x2C]
- lsrs r0, 4
- str r0, [r1]
- cmp r0, 0
- bne _08027024
- movs r0, 0x1
- str r0, [r1]
- b _08027024
- .align 2, 0
-_08027004: .4byte gBattleMoveDamage
-_08027008: .4byte gBattleMons
-_0802700C: .4byte gStatuses3
-_08027010:
- ldr r1, _08027018 @ =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
- b _08027024
- .align 2, 0
-_08027018: .4byte gBattleMoveDamage
-_0802701C:
- ldr r1, _08027050 @ =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
- ldr r5, _08027054 @ =gBankAttacker
-_08027024:
- ldr r0, _08027058 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _0802705C @ =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0802703E
- ldr r1, _08027050 @ =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
-_0802703E:
- ldr r1, _08027060 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08027050: .4byte gBattleMoveDamage
-_08027054: .4byte gBankAttacker
-_08027058: .4byte gAbsentBankFlags
-_0802705C: .4byte gBitTable
-_08027060: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8026EEC
-
- thumb_func_start sub_8027064
-sub_8027064: @ 8027064
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, _08027090 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0802709C
- ldr r1, _08027094 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08027098 @ =gPlayerParty
- b _080270AC
- .align 2, 0
-_08027090: .4byte gBankAttacker
-_08027094: .4byte gBattlePartyID
-_08027098: .4byte gPlayerParty
-_0802709C:
- ldr r1, _080270D0 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _080270D4 @ =gEnemyParty
-_080270AC:
- adds r5, r1, r0
- ldr r4, _080270D8 @ =gBankTarget
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080270E0
- ldr r1, _080270D0 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _080270DC @ =gPlayerParty
- b _080270F0
- .align 2, 0
-_080270D0: .4byte gBattlePartyID
-_080270D4: .4byte gEnemyParty
-_080270D8: .4byte gBankTarget
-_080270DC: .4byte gPlayerParty
-_080270E0:
- ldr r1, _0802714C @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08027150 @ =gEnemyParty
-_080270F0:
- adds r4, r1, r0
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- adds r0, r5, 0
- movs r1, 0
- bl GetMonData
- mov r9, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r7, r0, 0
- ldr r5, _08027154 @ =gBankTarget
- ldrb r0, [r5]
- movs r6, 0x58
- muls r0, r6
- ldr r1, _08027158 @ =gBattleMons
- adds r0, r1
- adds r0, 0x20
- ldrb r2, [r0]
- cmp r2, 0xC
- bne _08027168
- ldr r1, _0802715C @ =gBattlescriptCurrInstr
- ldr r0, _08027160 @ =gUnknown_081D98C9
- str r0, [r1]
- ldr r0, _08027164 @ =gLastUsedAbility
- strb r2, [r0]
- ldrb r0, [r5]
- movs r1, 0xC
- bl RecordAbilityBattle
- b _0802721C
- .align 2, 0
-_0802714C: .4byte gBattlePartyID
-_08027150: .4byte gEnemyParty
-_08027154: .4byte gBankTarget
-_08027158: .4byte gBattleMons
-_0802715C: .4byte gBattlescriptCurrInstr
-_08027160: .4byte gUnknown_081D98C9
-_08027164: .4byte gLastUsedAbility
-_08027168:
- mov r0, r10
- mov r1, r9
- bl GetGenderFromSpeciesAndPersonality
- adds r4, r0, 0
- mov r0, r8
- adds r1, r7, 0
- bl GetGenderFromSpeciesAndPersonality
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _080271CA
- ldr r1, _080271E8 @ =gStatuses3
- ldrb r2, [r5]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080271EC @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- bne _080271CA
- adds r0, r2, 0
- muls r0, r6
- ldr r4, _080271F0 @ =gBattleMons
- adds r4, 0x50
- adds r0, r4
- ldr r0, [r0]
- movs r1, 0xF0
- lsls r1, 12
- ands r0, r1
- cmp r0, 0
- bne _080271CA
- mov r0, r10
- mov r1, r9
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _080271CA
- mov r0, r8
- adds r1, r7, 0
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _080271F8
-_080271CA:
- ldr r3, _080271F4 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802721C
- .align 2, 0
-_080271E8: .4byte gStatuses3
-_080271EC: .4byte 0x000400c0
-_080271F0: .4byte gBattleMons
-_080271F4: .4byte gBattlescriptCurrInstr
-_080271F8:
- ldrb r0, [r5]
- adds r2, r0, 0
- muls r2, r6
- adds r2, r4
- ldr r1, _0802722C @ =gBitTable
- ldr r0, _08027230 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- lsls r1, 16
- ldr r0, [r2]
- orrs r0, r1
- str r0, [r2]
- ldr r1, _08027234 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802721C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802722C: .4byte gBitTable
-_08027230: .4byte gBankAttacker
-_08027234: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8027064
-
- thumb_func_start sub_8027238
-sub_8027238: @ 8027238
- push {r4-r7,lr}
- ldr r0, _08027280 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- bne _08027324
- ldr r5, _08027284 @ =gBattlescriptCurrInstr
- ldr r1, [r5]
- ldrb r0, [r1, 0x1]
- cmp r0, 0x4
- beq _08027290
- bl sub_8015150
- ldr r4, _08027288 @ =gActiveBank
- strb r0, [r4]
- ldr r3, _0802728C @ =gBattleMons
- ldrb r1, [r4]
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r1, [r0]
- adds r3, 0x50
- adds r2, r3
- ldr r2, [r2]
- movs r0, 0
- bl EmitStatusIconUpdate
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r0, [r5]
- adds r0, 0x2
- str r0, [r5]
- b _08027324
- .align 2, 0
-_08027280: .4byte gBattleExecBuffer
-_08027284: .4byte gBattlescriptCurrInstr
-_08027288: .4byte gActiveBank
-_0802728C: .4byte gBattleMons
-_08027290:
- ldr r4, _0802732C @ =gActiveBank
- ldr r5, _08027330 @ =gBankAttacker
- ldrb r0, [r5]
- strb r0, [r4]
- ldr r6, _08027334 @ =gAbsentBankFlags
- ldrb r1, [r6]
- ldr r7, _08027338 @ =gBitTable
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r7
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _080272CC
- ldr r3, _0802733C @ =gBattleMons
- movs r0, 0x58
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r1, [r0]
- adds r3, 0x50
- adds r2, r3
- ldr r2, [r2]
- movs r0, 0
- bl EmitStatusIconUpdate
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_080272CC:
- ldr r0, _08027340 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802731C
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- strb r0, [r4]
- ldrb r1, [r6]
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r0, r7
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0802731C
- ldr r3, _0802733C @ =gBattleMons
- movs r0, 0x58
- muls r2, r0
- adds r0, r3, 0
- adds r0, 0x4C
- adds r0, r2, r0
- ldr r1, [r0]
- adds r3, 0x50
- adds r2, r3
- ldr r2, [r2]
- movs r0, 0
- bl EmitStatusIconUpdate
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_0802731C:
- ldr r1, _08027344 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x2
- str r0, [r1]
-_08027324:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802732C: .4byte gActiveBank
-_08027330: .4byte gBankAttacker
-_08027334: .4byte gAbsentBankFlags
-_08027338: .4byte gBitTable
-_0802733C: .4byte gBattleMons
-_08027340: .4byte gBattleTypeFlags
-_08027344: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8027238
-
- thumb_func_start sub_8027348
-sub_8027348: @ 8027348
- push {r4-r6,lr}
- ldr r6, _08027378 @ =gSideTimer
- ldr r4, _0802737C @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankIdentity
- movs r5, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0, 0x2]
- cmp r0, 0
- beq _08027388
- ldr r2, _08027380 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _08027384 @ =gBattleCommunication
- strb r5, [r0, 0x5]
- b _080273C0
- .align 2, 0
-_08027378: .4byte gSideTimer
-_0802737C: .4byte gBankAttacker
-_08027380: .4byte gBattleMoveFlags
-_08027384: .4byte gBattleCommunication
-_08027388:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x5
- strb r1, [r0, 0x2]
- ldrb r0, [r4]
- bl GetBankIdentity
- ldr r2, _080273D0 @ =gSideAffecting
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r3, 0x80
- lsls r3, 1
- adds r0, r3, 0
- movs r3, 0
- orrs r0, r2
- strh r0, [r1]
- ldr r0, _080273D4 @ =gBattleCommunication
- strb r3, [r0, 0x5]
-_080273C0:
- ldr r1, _080273D8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080273D0: .4byte gSideAffecting
-_080273D4: .4byte gBattleCommunication
-_080273D8: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8027348
-
- thumb_func_start atk9A_setincreasedcriticalchance
-atk9A_setincreasedcriticalchance: @ 80273DC
- push {lr}
- ldr r1, _0802740C @ =gBattleMons
- ldr r0, _08027410 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- movs r3, 0x80
- lsls r3, 13
- adds r2, r1, 0
- ands r2, r3
- cmp r2, 0
- beq _0802741C
- ldr r2, _08027414 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08027418 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _08027424
- .align 2, 0
-_0802740C: .4byte gBattleMons
-_08027410: .4byte gBankAttacker
-_08027414: .4byte gBattleMoveFlags
-_08027418: .4byte gBattleCommunication
-_0802741C:
- orrs r1, r3
- str r1, [r0]
- ldr r0, _08027430 @ =gBattleCommunication
- strb r2, [r0, 0x5]
-_08027424:
- ldr r1, _08027434 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08027430: .4byte gBattleCommunication
-_08027434: .4byte gBattlescriptCurrInstr
- thumb_func_end atk9A_setincreasedcriticalchance
-
- thumb_func_start atk9B_transformdataexecution
-atk9B_transformdataexecution: @ 8027438
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r1, _08027490 @ =gUnknown_02024BE8
- ldr r2, _08027494 @ =0x0000ffff
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08027498 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r7, _0802749C @ =gBattleMons
- ldr r0, _080274A0 @ =gBankTarget
- mov r12, r0
- ldrb r1, [r0]
- movs r6, 0x58
- adds r0, r1, 0
- muls r0, r6
- adds r5, r7, 0
- adds r5, 0x50
- adds r0, r5
- ldr r0, [r0]
- movs r4, 0x80
- lsls r4, 14
- ands r0, r4
- cmp r0, 0
- bne _0802747E
- ldr r0, _080274A4 @ =gStatuses3
- lsls r1, 2
- adds r1, r0
- ldr r2, [r1]
- ldr r0, _080274A8 @ =0x000400c0
- ands r2, r0
- cmp r2, 0
- beq _080274B4
-_0802747E:
- ldr r2, _080274AC @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080274B0 @ =gBattleCommunication
- movs r0, 0x1
- b _080275C8
- .align 2, 0
-_08027490: .4byte gUnknown_02024BE8
-_08027494: .4byte 0x0000ffff
-_08027498: .4byte gBattlescriptCurrInstr
-_0802749C: .4byte gBattleMons
-_080274A0: .4byte gBankTarget
-_080274A4: .4byte gStatuses3
-_080274A8: .4byte 0x000400c0
-_080274AC: .4byte gBattleMoveFlags
-_080274B0: .4byte gBattleCommunication
-_080274B4:
- ldr r3, _08027588 @ =gBankAttacker
- ldrb r0, [r3]
- adds r1, r0, 0
- muls r1, r6
- adds r1, r5
- ldr r0, [r1]
- orrs r0, r4
- str r0, [r1]
- ldr r4, _0802758C @ =gDisableStructs
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r4
- strh r2, [r0, 0x4]
- ldrb r0, [r3]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0xB]
- movs r0, 0x10
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0xB]
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r4
- mov r2, r12
- ldrb r1, [r2]
- muls r1, r6
- adds r2, r7, 0
- adds r2, 0x48
- adds r1, r2
- ldr r1, [r1]
- str r1, [r0]
- ldrb r0, [r3]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x18]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1, 0x18]
- ldr r1, _08027590 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x6
- strb r0, [r1, 0x1]
- mov r2, r12
- ldrb r0, [r2]
- muls r0, r6
- adds r0, r7
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r2]
- muls r0, r6
- adds r0, r7
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldrb r0, [r3]
- muls r0, r6
- adds r5, r0, r7
- ldrb r0, [r2]
- muls r0, r6
- adds r2, r0, r7
- movs r4, 0
- adds r6, r3, 0
- ldr r0, _08027594 @ =gActiveBank
- mov r8, r0
-_0802754C:
- adds r0, r5, r4
- adds r1, r2, r4
- ldrb r1, [r1]
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0x23
- bls _0802754C
- movs r4, 0
- ldr r7, _08027598 @ =gBattleMoves
- ldr r3, _0802759C @ =gUnknown_02024A8C
- adds r5, r3, 0
- adds r5, 0x18
-_08027564:
- lsls r1, r4, 1
- ldrb r2, [r6]
- movs r0, 0x58
- muls r2, r0
- adds r1, r2
- adds r1, r3
- ldrh r1, [r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r1, [r0, 0x4]
- cmp r1, 0x4
- bhi _080275A0
- adds r0, r4, r2
- adds r0, r5
- b _080275A6
- .align 2, 0
-_08027588: .4byte gBankAttacker
-_0802758C: .4byte gDisableStructs
-_08027590: .4byte gBattleTextBuff1
-_08027594: .4byte gActiveBank
-_08027598: .4byte gBattleMoves
-_0802759C: .4byte gUnknown_02024A8C
-_080275A0:
- adds r0, r4, r2
- adds r0, r5
- movs r1, 0x5
-_080275A6:
- strb r1, [r0]
- adds r4, 0x1
- cmp r4, 0x3
- ble _08027564
- ldrb r0, [r6]
- mov r1, r8
- strb r0, [r1]
- movs r0, 0
- movs r1, 0x2
- bl EmitResetActionMoveSelection
- mov r2, r8
- ldrb r0, [r2]
- bl MarkBufferBankForExecution
- ldr r1, _080275D4 @ =gBattleCommunication
- movs r0, 0
-_080275C8:
- strb r0, [r1, 0x5]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080275D4: .4byte gBattleCommunication
- thumb_func_end atk9B_transformdataexecution
-
- thumb_func_start sub_80275D8
-sub_80275D8: @ 80275D8
- push {r4-r7,lr}
- ldr r7, _08027608 @ =gBattleMons
- ldr r6, _0802760C @ =gBankAttacker
- ldrb r0, [r6]
- movs r5, 0x58
- muls r0, r5
- adds r3, r0, r7
- ldrh r0, [r3, 0x2C]
- lsrs r1, r0, 2
- adds r2, r1, 0
- cmp r1, 0
- bne _080275F2
- movs r2, 0x1
-_080275F2:
- ldrh r0, [r3, 0x28]
- cmp r0, r2
- bhi _08027618
- ldr r1, _08027610 @ =gBattleMoveDamage
- movs r0, 0
- str r0, [r1]
- ldr r1, _08027614 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _0802766C
- .align 2, 0
-_08027608: .4byte gBattleMons
-_0802760C: .4byte gBankAttacker
-_08027610: .4byte gBattleMoveDamage
-_08027614: .4byte gBattleCommunication
-_08027618:
- ldr r4, _0802767C @ =gBattleMoveDamage
- str r1, [r4]
- cmp r1, 0
- bne _08027624
- movs r0, 0x1
- str r0, [r4]
-_08027624:
- ldrb r0, [r6]
- adds r2, r0, 0
- muls r2, r5
- adds r3, r7, 0
- adds r3, 0x50
- adds r2, r3
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 17
- orrs r0, r1
- str r0, [r2]
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r3
- ldr r0, [r1]
- ldr r2, _08027680 @ =0xffff1fff
- ands r0, r2
- str r0, [r1]
- ldr r2, _08027684 @ =gDisableStructs
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, [r4]
- movs r2, 0
- strb r1, [r0, 0xA]
- ldr r0, _08027688 @ =gBattleCommunication
- strb r2, [r0, 0x5]
- ldr r2, _0802768C @ =gHitMarker
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 1
- orrs r0, r1
- str r0, [r2]
-_0802766C:
- ldr r1, _08027690 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802767C: .4byte gBattleMoveDamage
-_08027680: .4byte 0xffff1fff
-_08027684: .4byte gDisableStructs
-_08027688: .4byte gBattleCommunication
-_0802768C: .4byte gHitMarker
-_08027690: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80275D8
-
- thumb_func_start sub_8027694
-sub_8027694: @ 8027694
- push {r4,r5,lr}
- lsls r0, 16
- lsrs r2, r0, 16
- movs r3, 0
- ldr r0, _080276D4 @ =gUnknown_081FACFE
- ldrh r1, [r0]
- ldr r4, _080276D8 @ =0x0000fffe
- adds r5, r0, 0
- cmp r1, r4
- beq _080276BC
- cmp r1, r2
- beq _080276BC
- adds r1, r5, 0
-_080276AE:
- adds r1, 0x2
- adds r3, 0x1
- ldrh r0, [r1]
- cmp r0, r4
- beq _080276BC
- cmp r0, r2
- bne _080276AE
-_080276BC:
- lsls r0, r3, 1
- adds r0, r5
- ldrh r1, [r0]
- ldr r0, _080276D8 @ =0x0000fffe
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_080276D4: .4byte gUnknown_081FACFE
-_080276D8: .4byte 0x0000fffe
- thumb_func_end sub_8027694
-
- thumb_func_start atk9D_copyattack
-atk9D_copyattack: @ 80276DC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _08027754 @ =gUnknown_02024BE8
- ldr r1, _08027758 @ =0x0000ffff
- adds r7, r1, 0
- strh r7, [r0]
- ldr r5, _0802775C @ =gLastUsedMove
- ldr r6, _08027760 @ =gBankTarget
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- bl sub_8027694
- lsls r0, 24
- cmp r0, 0
- bne _08027736
- ldr r3, _08027764 @ =gBattleMons
- ldr r2, _08027768 @ =gBankAttacker
- ldrb r1, [r2]
- movs r0, 0x58
- adds r4, r1, 0
- muls r4, r0
- adds r0, r3, 0
- adds r0, 0x50
- adds r0, r4, r0
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 14
- ands r1, r0
- mov r12, r3
- mov r9, r2
- cmp r1, 0
- bne _08027736
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r5
- ldrh r1, [r0]
- cmp r1, 0
- beq _08027736
- cmp r1, r7
- bne _08027770
-_08027736:
- ldr r3, _0802776C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _080278A8
- .align 2, 0
-_08027754: .4byte gUnknown_02024BE8
-_08027758: .4byte 0x0000ffff
-_0802775C: .4byte gLastUsedMove
-_08027760: .4byte gBankTarget
-_08027764: .4byte gBattleMons
-_08027768: .4byte gBankAttacker
-_0802776C: .4byte gBattlescriptCurrInstr
-_08027770:
- movs r2, 0
- mov r3, r12
- adds r3, 0xC
- adds r0, r4, r3
- ldrh r0, [r0]
- ldr r4, _08027800 @ =gBattlescriptCurrInstr
- mov r10, r4
- cmp r0, r1
- beq _080277AA
- mov r8, r3
- adds r7, r5, 0
- adds r5, r6, 0
- mov r4, r9
- movs r3, 0x58
-_0802778C:
- adds r2, 0x1
- cmp r2, 0x3
- bgt _080277AA
- lsls r1, r2, 1
- ldrb r0, [r4]
- muls r0, r3
- adds r1, r0
- add r1, r8
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r7
- ldrh r1, [r1]
- ldrh r0, [r0]
- cmp r1, r0
- bne _0802778C
-_080277AA:
- cmp r2, 0x4
- bne _0802788C
- ldr r5, _08027804 @ =gCurrMovePos
- ldrb r1, [r5]
- lsls r1, 1
- mov r2, r9
- ldrb r0, [r2]
- movs r6, 0x58
- muls r0, r6
- adds r1, r0
- mov r0, r12
- adds r0, 0xC
- adds r1, r0
- ldr r2, _08027808 @ =gLastUsedMove
- ldr r3, _0802780C @ =gBankTarget
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strh r0, [r1]
- ldr r4, _08027810 @ =gBattleMoves
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r4, [r0, 0x4]
- cmp r4, 0x4
- bhi _08027814
- mov r1, r9
- ldrb r0, [r1]
- muls r0, r6
- ldrb r1, [r5]
- adds r0, r1
- mov r1, r12
- adds r1, 0x24
- adds r0, r1
- strb r4, [r0]
- b _08027828
- .align 2, 0
-_08027800: .4byte gBattlescriptCurrInstr
-_08027804: .4byte gCurrMovePos
-_08027808: .4byte gLastUsedMove
-_0802780C: .4byte gBankTarget
-_08027810: .4byte gBattleMoves
-_08027814:
- mov r4, r9
- ldrb r0, [r4]
- muls r0, r6
- ldrb r1, [r5]
- adds r0, r1
- mov r1, r12
- adds r1, 0x24
- adds r0, r1
- movs r1, 0x5
- strb r1, [r0]
-_08027828:
- ldr r1, _08027880 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _08027884 @ =gDisableStructs
- mov r2, r9
- ldrb r0, [r2]
- lsls r2, r0, 3
- subs r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r4, [r2, 0x18]
- lsrs r3, r4, 4
- ldr r1, _08027888 @ =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- orrs r1, r3
- lsls r1, 4
- movs r0, 0xF
- ands r0, r4
- orrs r0, r1
- strb r0, [r2, 0x18]
- mov r4, r10
- ldr r0, [r4]
- adds r0, 0x5
- str r0, [r4]
- b _080278A8
- .align 2, 0
-_08027880: .4byte gBattleTextBuff1
-_08027884: .4byte gDisableStructs
-_08027888: .4byte gBitTable
-_0802788C:
- mov r0, r10
- ldr r2, [r0]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- mov r2, r10
- str r1, [r2]
-_080278A8:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atk9D_copyattack
-
- thumb_func_start sub_80278B8
-sub_80278B8: @ 80278B8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r7, _08027938 @ =gCurrentMove
- movs r6, 0xB1
- lsls r6, 1
- ldr r5, _0802793C @ =gUnknown_081FACFE
- ldr r0, _08027940 @ =gBattlescriptCurrInstr
- mov r8, r0
-_080278CA:
- bl Random
- ldr r2, _08027944 @ =0x000001ff
- adds r1, r2, 0
- ands r0, r1
- adds r0, 0x1
- strh r0, [r7]
- cmp r0, r6
- bhi _080278CA
- movs r0, 0x3
-_080278DE:
- subs r0, 0x1
- cmp r0, 0
- bge _080278DE
- ldr r4, _08027938 @ =gCurrentMove
- ldrh r2, [r4]
- ldr r3, _08027948 @ =0x0000ffff
- subs r0, r5, 0x2
-_080278EC:
- adds r0, 0x2
- ldrh r1, [r0]
- cmp r1, r2
- beq _080278F8
- cmp r1, r3
- bne _080278EC
-_080278F8:
- ldr r0, _08027948 @ =0x0000ffff
- cmp r1, r0
- bne _080278CA
- ldr r2, _0802794C @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _08027950 @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r3, _08027954 @ =gUnknown_081D6BBC
- ldr r2, _08027958 @ =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- mov r1, r8
- str r0, [r1]
- ldrh r0, [r4]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _0802795C @ =gBankTarget
- strb r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08027938: .4byte gCurrentMove
-_0802793C: .4byte gUnknown_081FACFE
-_08027940: .4byte gBattlescriptCurrInstr
-_08027944: .4byte 0x000001ff
-_08027948: .4byte 0x0000ffff
-_0802794C: .4byte gHitMarker
-_08027950: .4byte 0xfffffbff
-_08027954: .4byte gUnknown_081D6BBC
-_08027958: .4byte gBattleMoves
-_0802795C: .4byte gBankTarget
- thumb_func_end sub_80278B8
-
- thumb_func_start sub_8027960
-sub_8027960: @ 8027960
- ldr r3, _08027980 @ =gBattleMoveDamage
- ldr r2, _08027984 @ =gBattleMons
- ldr r0, _08027988 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2A
- ldrb r0, [r0]
- str r0, [r3]
- ldr r1, _0802798C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08027980: .4byte gBattleMoveDamage
-_08027984: .4byte gBattleMons
-_08027988: .4byte gBankAttacker
-_0802798C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8027960
-
- thumb_func_start atkA0_psywavedamageeffect
-atkA0_psywavedamageeffect: @ 8027990
- push {r4,lr}
- movs r4, 0xF
-_08027994:
- bl Random
- adds r3, r4, 0
- ands r3, r0
- cmp r3, 0xA
- bgt _08027994
- lsls r0, r3, 2
- adds r0, r3
- lsls r3, r0, 1
- ldr r4, _080279D4 @ =gBattleMoveDamage
- ldr r2, _080279D8 @ =gBattleMons
- ldr r0, _080279DC @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2A
- ldrb r1, [r0]
- adds r0, r3, 0
- adds r0, 0x32
- muls r0, r1
- movs r1, 0x64
- bl __divsi3
- str r0, [r4]
- ldr r1, _080279E0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080279D4: .4byte gBattleMoveDamage
-_080279D8: .4byte gBattleMons
-_080279DC: .4byte gBankAttacker
-_080279E0: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA0_psywavedamageeffect
-
- thumb_func_start atkA1_counterdamagecalculator
-atkA1_counterdamagecalculator: @ 80279E4
- push {r4-r6,lr}
- ldr r4, _08027A54 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, _08027A58 @ =gProtectStructs
- ldrb r0, [r4]
- lsls r0, 4
- adds r0, r5
- ldrb r0, [r0, 0xC]
- bl GetBankSide
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r0, r5, 0x4
- adds r0, r1, r0
- ldr r3, [r0]
- cmp r3, 0
- beq _08027A98
- cmp r6, r2
- beq _08027A98
- ldr r6, _08027A5C @ =gBattleMons
- adds r0, r1, r5
- ldrb r0, [r0, 0xC]
- movs r4, 0x58
- muls r0, r4
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08027A98
- ldr r1, _08027A60 @ =gBattleMoveDamage
- lsls r0, r3, 1
- str r0, [r1]
- ldr r1, _08027A64 @ =gSideTimer
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r1
- ldrb r0, [r1, 0x8]
- cmp r0, 0
- beq _08027A6C
- ldrb r1, [r1, 0x9]
- adds r0, r1, 0
- muls r0, r4
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08027A6C
- ldr r0, _08027A68 @ =gBankTarget
- strb r1, [r0]
- b _08027A7C
- .align 2, 0
-_08027A54: .4byte gBankAttacker
-_08027A58: .4byte gProtectStructs
-_08027A5C: .4byte gBattleMons
-_08027A60: .4byte gBattleMoveDamage
-_08027A64: .4byte gSideTimer
-_08027A68: .4byte gBankTarget
-_08027A6C:
- ldr r2, _08027A88 @ =gBankTarget
- ldr r1, _08027A8C @ =gProtectStructs
- ldr r0, _08027A90 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0xC]
- strb r0, [r2]
-_08027A7C:
- ldr r1, _08027A94 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08027AC8
- .align 2, 0
-_08027A88: .4byte gBankTarget
-_08027A8C: .4byte gProtectStructs
-_08027A90: .4byte gBankAttacker
-_08027A94: .4byte gBattlescriptCurrInstr
-_08027A98:
- ldr r2, _08027AD0 @ =gSpecialStatuses
- ldr r0, _08027AD4 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
- ldr r3, _08027AD8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08027AC8:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08027AD0: .4byte gSpecialStatuses
-_08027AD4: .4byte gBankAttacker
-_08027AD8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA1_counterdamagecalculator
-
- thumb_func_start atkA2_mirrorcoatdamagecalculator
-atkA2_mirrorcoatdamagecalculator: @ 8027ADC
- push {r4-r6,lr}
- ldr r4, _08027B4C @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r5, _08027B50 @ =gProtectStructs
- ldrb r0, [r4]
- lsls r0, 4
- adds r0, r5
- ldrb r0, [r0, 0xD]
- bl GetBankSide
- lsls r0, 24
- lsrs r2, r0, 24
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r0, r5, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r3, [r0]
- cmp r3, 0
- beq _08027B90
- cmp r6, r2
- beq _08027B90
- ldr r6, _08027B54 @ =gBattleMons
- adds r0, r1, r5
- ldrb r0, [r0, 0xD]
- movs r4, 0x58
- muls r0, r4
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08027B90
- ldr r1, _08027B58 @ =gBattleMoveDamage
- lsls r0, r3, 1
- str r0, [r1]
- ldr r1, _08027B5C @ =gSideTimer
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r1, r0, r1
- ldrb r0, [r1, 0x8]
- cmp r0, 0
- beq _08027B64
- ldrb r1, [r1, 0x9]
- adds r0, r1, 0
- muls r0, r4
- adds r0, r6
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _08027B64
- ldr r0, _08027B60 @ =gBankTarget
- strb r1, [r0]
- b _08027B74
- .align 2, 0
-_08027B4C: .4byte gBankAttacker
-_08027B50: .4byte gProtectStructs
-_08027B54: .4byte gBattleMons
-_08027B58: .4byte gBattleMoveDamage
-_08027B5C: .4byte gSideTimer
-_08027B60: .4byte gBankTarget
-_08027B64:
- ldr r2, _08027B80 @ =gBankTarget
- ldr r1, _08027B84 @ =gProtectStructs
- ldr r0, _08027B88 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0, 0xD]
- strb r0, [r2]
-_08027B74:
- ldr r1, _08027B8C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08027BC0
- .align 2, 0
-_08027B80: .4byte gBankTarget
-_08027B84: .4byte gProtectStructs
-_08027B88: .4byte gBankAttacker
-_08027B8C: .4byte gBattlescriptCurrInstr
-_08027B90:
- ldr r2, _08027BC8 @ =gSpecialStatuses
- ldr r0, _08027BCC @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
- ldr r3, _08027BD0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08027BC0:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08027BC8: .4byte gSpecialStatuses
-_08027BCC: .4byte gBankAttacker
-_08027BD0: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA2_mirrorcoatdamagecalculator
-
- thumb_func_start atkA3_disablelastusedattack
-atkA3_disablelastusedattack: @ 8027BD4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r4, 0
- ldr r2, _08027CD4 @ =gBattleMons
- ldr r3, _08027CD8 @ =gBankTarget
- ldrb r1, [r3]
- movs r0, 0x58
- muls r0, r1
- adds r7, r2, 0
- adds r7, 0xC
- adds r0, r7
- ldr r5, _08027CDC @ =gLastUsedMove
- lsls r1, 1
- adds r1, r5
- ldrh r0, [r0]
- mov r9, r2
- adds r6, r3, 0
- ldr r2, _08027CE0 @ =gDisableStructs
- mov r8, r2
- ldrh r1, [r1]
- cmp r0, r1
- beq _08027C28
- mov r12, r6
- movs r3, 0x58
-_08027C08:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _08027C28
- lsls r2, r4, 1
- mov r0, r12
- ldrb r1, [r0]
- adds r0, r1, 0
- muls r0, r3
- adds r2, r0
- adds r2, r7
- lsls r1, 1
- adds r1, r5
- ldrh r0, [r2]
- ldrh r1, [r1]
- cmp r0, r1
- bne _08027C08
-_08027C28:
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r8
- ldrh r0, [r0, 0x4]
- cmp r0, 0
- bne _08027CEC
- cmp r4, 0x4
- beq _08027CEC
- movs r5, 0x58
- adds r0, r1, 0
- muls r0, r5
- adds r0, r4, r0
- mov r1, r9
- adds r1, 0x24
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08027CEC
- ldr r1, _08027CE4 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- lsls r2, r4, 1
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r2, r0
- mov r3, r9
- adds r3, 0xC
- adds r0, r3
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r2, r0
- adds r0, r3
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r8
- muls r1, r5
- adds r2, r1
- adds r2, r3
- ldrh r1, [r2]
- strh r1, [r0, 0x4]
- bl Random
- ldrb r2, [r6]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- add r1, r8
- movs r2, 0x3
- ands r2, r0
- adds r2, 0x2
- ldrb r3, [r1, 0xB]
- movs r0, 0x10
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0xB]
- ldrb r0, [r6]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- add r1, r8
- ldrb r3, [r1, 0xB]
- lsls r2, r3, 28
- lsrs r2, 24
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0xB]
- ldr r1, _08027CE8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08027D06
- .align 2, 0
-_08027CD4: .4byte gBattleMons
-_08027CD8: .4byte gBankTarget
-_08027CDC: .4byte gLastUsedMove
-_08027CE0: .4byte gDisableStructs
-_08027CE4: .4byte gBattleTextBuff1
-_08027CE8: .4byte gBattlescriptCurrInstr
-_08027CEC:
- ldr r3, _08027D14 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08027D06:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08027D14: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA3_disablelastusedattack
-
- thumb_func_start atkA4_setencore
-atkA4_setencore: @ 8027D18
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r5, 0
- ldr r3, _08027E0C @ =gBattleMons
- ldr r4, _08027E10 @ =gBankTarget
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r6, r3, 0
- adds r6, 0xC
- adds r0, r6
- ldr r2, _08027E14 @ =gLastUsedMove
- lsls r1, 1
- adds r1, r2
- ldrh r0, [r0]
- mov r10, r3
- mov r8, r2
- ldr r2, _08027E18 @ =gDisableStructs
- mov r9, r2
- ldrh r1, [r1]
- cmp r0, r1
- beq _08027D72
- mov r12, r4
- adds r7, r6, 0
- mov r6, r8
- movs r3, 0x58
-_08027D52:
- adds r5, 0x1
- cmp r5, 0x3
- bgt _08027D72
- lsls r2, r5, 1
- mov r0, r12
- ldrb r1, [r0]
- adds r0, r1, 0
- muls r0, r3
- adds r2, r0
- adds r2, r7
- lsls r1, 1
- adds r1, r6
- ldrh r0, [r2]
- ldrh r1, [r1]
- cmp r0, r1
- bne _08027D52
-_08027D72:
- ldrb r0, [r4]
- lsls r0, 1
- add r0, r8
- ldrh r2, [r0]
- cmp r2, 0xA5
- beq _08027D86
- cmp r2, 0xE3
- beq _08027D86
- cmp r2, 0x77
- bne _08027D88
-_08027D86:
- movs r5, 0x4
-_08027D88:
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- mov r2, r9
- adds r3, r0, r2
- ldrh r0, [r3, 0x6]
- cmp r0, 0
- bne _08027E20
- cmp r5, 0x4
- beq _08027E20
- movs r0, 0x58
- adds r2, r1, 0
- muls r2, r0
- adds r0, r5, r2
- mov r1, r10
- adds r1, 0x24
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08027E20
- lsls r0, r5, 1
- adds r0, r2
- subs r1, 0x18
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r3, 0x6]
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- strb r5, [r0, 0xC]
- bl Random
- ldrb r2, [r4]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- add r1, r9
- movs r2, 0x3
- ands r2, r0
- adds r2, 0x3
- ldrb r3, [r1, 0xE]
- movs r0, 0x10
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0xE]
- ldrb r0, [r4]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- add r1, r9
- ldrb r3, [r1, 0xE]
- lsls r2, r3, 28
- lsrs r2, 24
- movs r0, 0xF
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0xE]
- ldr r1, _08027E1C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08027E3A
- .align 2, 0
-_08027E0C: .4byte gBattleMons
-_08027E10: .4byte gBankTarget
-_08027E14: .4byte gLastUsedMove
-_08027E18: .4byte gDisableStructs
-_08027E1C: .4byte gBattlescriptCurrInstr
-_08027E20:
- ldr r3, _08027E48 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08027E3A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08027E48: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA4_setencore
-
- thumb_func_start sub_8027E4C
-sub_8027E4C: @ 8027E4C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r7, _08027EEC @ =gBattleMons
- ldr r0, _08027EF0 @ =gBankTarget
- mov r8, r0
- ldrb r0, [r0]
- movs r6, 0x58
- adds r2, r0, 0
- muls r2, r6
- adds r0, r7, 0
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- bne _08027F18
- ldr r1, _08027EF4 @ =gBankAttacker
- mov r12, r1
- ldrb r0, [r1]
- muls r0, r6
- adds r0, r7
- ldrh r4, [r0, 0x28]
- adds r0, r2, r7
- ldrh r2, [r0, 0x28]
- adds r4, r2
- asrs r4, 1
- ldr r5, _08027EF8 @ =gBattleMoveDamage
- mov r9, r5
- subs r2, r4
- str r2, [r5]
- ldr r3, _08027EFC @ =0x02000000
- ldr r1, _08027F00 @ =0x00016014
- adds r0, r3, r1
- strb r2, [r0]
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r2
- asrs r0, 8
- ldr r5, _08027F04 @ =0x00016015
- adds r1, r3, r5
- strb r0, [r1]
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r2
- asrs r0, 16
- adds r5, 0x1
- adds r1, r3, r5
- strb r0, [r1]
- lsrs r2, 24
- ldr r0, _08027F08 @ =0x00016017
- adds r3, r0
- strb r2, [r3]
- mov r1, r12
- ldrb r0, [r1]
- muls r0, r6
- adds r0, r7
- ldrh r0, [r0, 0x28]
- subs r0, r4
- mov r5, r9
- str r0, [r5]
- ldr r2, _08027F0C @ =gSpecialStatuses
- mov r0, r8
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, 0x4
- adds r0, r2
- ldr r1, _08027F10 @ =0x0000ffff
- str r1, [r0]
- ldr r1, _08027F14 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08027F32
- .align 2, 0
-_08027EEC: .4byte gBattleMons
-_08027EF0: .4byte gBankTarget
-_08027EF4: .4byte gBankAttacker
-_08027EF8: .4byte gBattleMoveDamage
-_08027EFC: .4byte 0x02000000
-_08027F00: .4byte 0x00016014
-_08027F04: .4byte 0x00016015
-_08027F08: .4byte 0x00016017
-_08027F0C: .4byte gSpecialStatuses
-_08027F10: .4byte 0x0000ffff
-_08027F14: .4byte gBattlescriptCurrInstr
-_08027F18:
- ldr r3, _08027F40 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08027F32:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08027F40: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8027E4C
-
- thumb_func_start sub_8027F44
-sub_8027F44: @ 8027F44
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r1, _08027FA8 @ =gMoveHitWith
- ldr r4, _08027FAC @ =gBankAttacker
- ldrb r0, [r4]
- lsls r0, 1
- adds r2, r0, r1
- ldrh r1, [r2]
- cmp r1, 0
- beq _08027F8C
- ldr r0, _08027FB0 @ =0x0000ffff
- cmp r1, r0
- beq _08027F8C
- ldrh r0, [r2]
- bl sub_8028350
- lsls r0, 24
- cmp r0, 0
- beq _08028024
- ldr r2, _08027FB4 @ =gProtectStructs
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r0, r2, 0x4
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08028024
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _08028024
-_08027F8C:
- ldr r3, _08027FB8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08028110
- .align 2, 0
-_08027FA8: .4byte gMoveHitWith
-_08027FAC: .4byte gBankAttacker
-_08027FB0: .4byte 0x0000ffff
-_08027FB4: .4byte gProtectStructs
-_08027FB8: .4byte gBattlescriptCurrInstr
-_08027FBC:
- mov r0, r12
- strb r5, [r0]
- mov r1, r10
- ldrb r0, [r1]
- muls r0, r2
- adds r0, r7
- adds r0, 0x22
- strb r5, [r0]
- ldr r1, _08027FE0 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x3
- strb r0, [r1, 0x1]
- strb r5, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r1, _08027FE4 @ =gBattlescriptCurrInstr
- b _08028012
- .align 2, 0
-_08027FE0: .4byte gBattleTextBuff1
-_08027FE4: .4byte gBattlescriptCurrInstr
-_08027FE8:
- mov r0, r8
- adds r0, 0x1
- adds r0, r3
- ldrb r2, [r0]
- strb r2, [r4]
- mov r4, r10
- ldrb r0, [r4]
- muls r0, r6
- ldr r7, _0802801C @ =gBattleMons
- adds r0, r7
- adds r0, 0x22
- strb r2, [r0]
- ldr r1, _08028020 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x3
- strb r0, [r1, 0x1]
- strb r2, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- mov r1, r12
-_08028012:
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08028110
- .align 2, 0
-_0802801C: .4byte gBattleMons
-_08028020: .4byte gBattleTextBuff1
-_08028024:
- movs r4, 0
- mov r8, r4
- movs r7, 0x7F
- mov r9, r7
-_0802802C:
- bl Random
- mov r4, r9
- ands r4, r0
- cmp r4, 0x70
- bhi _0802802C
- lsls r0, r4, 1
- adds r4, r0, r4
- ldr r6, _08028120 @ =gTypeEffectiveness
- adds r3, r4, r6
- ldr r1, _08028124 @ =gUnknown_02024C44
- ldr r2, _08028128 @ =gBankAttacker
- ldrb r5, [r2]
- lsls r0, r5, 1
- adds r0, r1
- ldrb r1, [r3]
- mov r10, r2
- ldrh r0, [r0]
- cmp r1, r0
- bne _08028088
- adds r0, r4, 0x2
- adds r0, r6
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _08028088
- ldr r7, _0802812C @ =gBattleMons
- movs r2, 0x58
- adds r0, r5, 0
- muls r0, r2
- adds r3, r0, r7
- movs r0, 0x21
- adds r0, r3
- mov r12, r0
- adds r0, r4, 0x1
- adds r0, r6
- ldrb r5, [r0]
- mov r1, r12
- ldrb r0, [r1]
- adds r1, r5, 0
- cmp r0, r1
- beq _08028088
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- bne _08027FBC
-_08028088:
- movs r7, 0x1
- add r8, r7
- ldr r0, _08028130 @ =0x000003e7
- cmp r8, r0
- ble _0802802C
- movs r0, 0
- mov r8, r0
- ldr r1, _08028134 @ =gBattlescriptCurrInstr
- mov r12, r1
- ldr r3, _08028120 @ =gTypeEffectiveness
- adds r0, r4, 0x1
- adds r0, r3
- mov r9, r0
- adds r5, r3, 0
-_080280A4:
- ldrb r1, [r5]
- cmp r1, 0xFF
- bgt _080280AE
- cmp r1, 0xFE
- bge _080280E8
-_080280AE:
- mov r4, r10
- ldrb r2, [r4]
- lsls r0, r2, 1
- ldr r7, _08028124 @ =gUnknown_02024C44
- adds r0, r7
- ldrh r0, [r0]
- cmp r1, r0
- bne _080280E8
- ldrb r0, [r5, 0x2]
- cmp r0, 0x5
- bhi _080280E8
- movs r6, 0x58
- adds r0, r2, 0
- muls r0, r6
- ldr r1, _0802812C @ =gBattleMons
- adds r2, r0, r1
- adds r4, r2, 0
- adds r4, 0x21
- ldrb r0, [r4]
- mov r7, r9
- ldrb r1, [r7]
- cmp r0, r1
- beq _080280E8
- adds r0, r2, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- beq _080280E8
- b _08027FE8
-_080280E8:
- adds r5, 0x3
- movs r0, 0x3
- add r8, r0
- ldr r0, _08028138 @ =0x0000014f
- cmp r8, r0
- bls _080280A4
- mov r1, r12
- ldr r2, [r1]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- mov r4, r12
- str r1, [r4]
-_08028110:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028120: .4byte gTypeEffectiveness
-_08028124: .4byte gUnknown_02024C44
-_08028128: .4byte gBankAttacker
-_0802812C: .4byte gBattleMons
-_08028130: .4byte 0x000003e7
-_08028134: .4byte gBattlescriptCurrInstr
-_08028138: .4byte 0x0000014f
- thumb_func_end sub_8027F44
-
- thumb_func_start atkA7_setalwayshitflag
-atkA7_setalwayshitflag: @ 802813C
- push {r4,lr}
- ldr r4, _08028180 @ =gStatuses3
- ldr r3, _08028184 @ =gBankTarget
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r4
- ldr r0, [r1]
- movs r2, 0x19
- negs r2, r2
- ands r0, r2
- str r0, [r1]
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r4
- ldr r0, [r1]
- movs r2, 0x10
- orrs r0, r2
- str r0, [r1]
- ldr r2, _08028188 @ =gDisableStructs
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _0802818C @ =gBankAttacker
- ldrb r1, [r1]
- strb r1, [r0, 0x15]
- ldr r1, _08028190 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08028180: .4byte gStatuses3
-_08028184: .4byte gBankTarget
-_08028188: .4byte gDisableStructs
-_0802818C: .4byte gBankAttacker
-_08028190: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA7_setalwayshitflag
-
- thumb_func_start atkA8_copymovepermanently
-atkA8_copymovepermanently: @ 8028194
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- ldr r0, _080282F4 @ =gUnknown_02024BE8
- ldr r1, _080282F8 @ =0x0000ffff
- adds r5, r1, 0
- strh r5, [r0]
- ldr r3, _080282FC @ =gBattleMons
- ldr r2, _08028300 @ =gBankAttacker
- ldrb r1, [r2]
- movs r0, 0x58
- adds r4, r1, 0
- muls r4, r0
- adds r0, r3, 0
- adds r0, 0x50
- adds r0, r4, r0
- ldr r1, [r0]
- movs r0, 0x80
- lsls r0, 14
- ands r1, r0
- mov r12, r3
- mov r10, r2
- cmp r1, 0
- beq _080281CC
- b _08028320
-_080281CC:
- ldr r0, _08028304 @ =gUnknown_02024C2C
- ldr r2, _08028308 @ =gBankTarget
- ldrb r1, [r2]
- lsls r1, 1
- adds r1, r0
- ldrh r1, [r1]
- mov r9, r0
- mov r8, r2
- cmp r1, 0xA5
- bne _080281E2
- b _08028320
-_080281E2:
- cmp r1, 0
- bne _080281E8
- b _08028320
-_080281E8:
- cmp r1, r5
- bne _080281EE
- b _08028320
-_080281EE:
- cmp r1, 0xA6
- bne _080281F4
- b _08028320
-_080281F4:
- movs r7, 0
- mov r5, r9
- mov r0, r12
- adds r0, 0xC
- adds r1, r4, r0
- mov r3, r8
-_08028200:
- ldrh r2, [r1]
- cmp r2, 0xA6
- beq _08028212
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r2, r0
- beq _0802821A
-_08028212:
- adds r1, 0x2
- adds r7, 0x1
- cmp r7, 0x3
- ble _08028200
-_0802821A:
- cmp r7, 0x4
- beq _08028220
- b _08028320
-_08028220:
- ldr r4, _0802830C @ =gCurrMovePos
- ldrb r1, [r4]
- lsls r1, 1
- mov r2, r10
- ldrb r0, [r2]
- movs r3, 0x58
- muls r0, r3
- adds r1, r0
- mov r6, r12
- adds r6, 0xC
- adds r1, r6
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- strh r0, [r1]
- mov r1, r10
- ldrb r0, [r1]
- adds r2, r0, 0
- muls r2, r3
- ldrb r4, [r4]
- adds r2, r4
- mov r5, r12
- adds r5, 0x24
- adds r2, r5
- ldr r4, _08028310 @ =gBattleMoves
- mov r1, r8
- ldrb r0, [r1]
- lsls r0, 1
- add r0, r9
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x4]
- strb r0, [r2]
- ldr r1, _08028314 @ =gActiveBank
- mov r2, r10
- ldrb r0, [r2]
- strb r0, [r1]
- movs r7, 0
- ldrb r0, [r2]
- muls r0, r3
- adds r4, r0, r5
- adds r3, r0, 0
- add r2, sp, 0x4
- add r5, sp, 0xC
-_08028282:
- adds r0, r3, r6
- ldrh r0, [r0]
- strh r0, [r2]
- adds r1, r5, r7
- ldrb r0, [r4]
- strb r0, [r1]
- adds r4, 0x1
- adds r3, 0x2
- adds r2, 0x2
- adds r7, 0x1
- cmp r7, 0x3
- ble _08028282
- add r2, sp, 0x4
- mov r0, r10
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- add r0, r12
- adds r0, 0x3B
- ldrb r0, [r0]
- strb r0, [r2, 0xC]
- str r2, [sp]
- movs r0, 0
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x10
- bl EmitSetAttributes
- ldr r0, _08028314 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _08028318 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldr r3, _08028304 @ =gUnknown_02024C2C
- ldr r2, _08028308 @ =gBankTarget
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _0802831C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802833A
- .align 2, 0
-_080282F4: .4byte gUnknown_02024BE8
-_080282F8: .4byte 0x0000ffff
-_080282FC: .4byte gBattleMons
-_08028300: .4byte gBankAttacker
-_08028304: .4byte gUnknown_02024C2C
-_08028308: .4byte gBankTarget
-_0802830C: .4byte gCurrMovePos
-_08028310: .4byte gBattleMoves
-_08028314: .4byte gActiveBank
-_08028318: .4byte gBattleTextBuff1
-_0802831C: .4byte gBattlescriptCurrInstr
-_08028320:
- ldr r3, _0802834C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802833A:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802834C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkA8_copymovepermanently
-
- thumb_func_start sub_8028350
-sub_8028350: @ 8028350
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08028380 @ =gBattleMoves
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1]
- cmp r0, 0x91
- beq _0802837A
- cmp r0, 0x27
- beq _0802837A
- cmp r0, 0x4B
- beq _0802837A
- cmp r0, 0x97
- beq _0802837A
- cmp r0, 0x9B
- beq _0802837A
- cmp r0, 0x1A
- bne _08028384
-_0802837A:
- movs r0, 0x1
- b _08028386
- .align 2, 0
-_08028380: .4byte gBattleMoves
-_08028384:
- movs r0, 0
-_08028386:
- pop {r1}
- bx r1
- thumb_func_end sub_8028350
-
- thumb_func_start sub_802838C
-sub_802838C: @ 802838C
- push {lr}
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0
- beq _080283AA
- cmp r1, 0xD6
- beq _080283AA
- movs r0, 0x89
- lsls r0, 1
- cmp r1, r0
- beq _080283AA
- cmp r1, 0x77
- beq _080283AA
- cmp r1, 0x76
- bne _080283AE
-_080283AA:
- movs r0, 0x1
- b _080283B0
-_080283AE:
- movs r0, 0
-_080283B0:
- pop {r1}
- bx r1
- thumb_func_end sub_802838C
-
- thumb_func_start move_weather_interaction
-move_weather_interaction: @ 80283B4
- push {lr}
- lsls r1, 16
- lsrs r2, r1, 16
- ldr r1, _0802840C @ =gBattleMoves
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- adds r3, r1, 0
- cmp r0, 0x97
- bne _080283D8
- ldr r0, _08028410 @ =gBattleWeather
- ldrh r1, [r0]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- bne _08028418
-_080283D8:
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0]
- cmp r0, 0x91
- beq _080283FA
- cmp r0, 0x27
- beq _080283FA
- cmp r0, 0x4B
- beq _080283FA
- cmp r0, 0x97
- beq _080283FA
- cmp r0, 0x9B
- beq _080283FA
- cmp r0, 0x1A
- bne _08028418
-_080283FA:
- ldr r0, _08028414 @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 20
- ands r0, r1
- cmp r0, 0
- beq _08028418
- movs r0, 0x1
- b _0802841A
- .align 2, 0
-_0802840C: .4byte gBattleMoves
-_08028410: .4byte gBattleWeather
-_08028414: .4byte gHitMarker
-_08028418:
- movs r0, 0x2
-_0802841A:
- pop {r1}
- bx r1
- thumb_func_end move_weather_interaction
-
- thumb_func_start sub_8028420
-sub_8028420: @ 8028420
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- movs r6, 0
- movs r5, 0
- ldr r0, _080284B0 @ =gBankAttacker
- mov r9, r0
- movs r1, 0x58
- mov r8, r1
- ldr r7, _080284B4 @ =gUnknown_02024A8C
- movs r0, 0x84
- lsls r0, 1
- mov r10, r0
-_0802843E:
- lsls r4, r5, 1
- mov r1, r9
- ldrb r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r4, r0
- adds r0, r7
- ldrh r0, [r0]
- bl sub_802838C
- lsls r0, 24
- cmp r0, 0
- bne _0802847E
- mov r1, r9
- ldrb r0, [r1]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r4, r0
- adds r0, r7
- ldrh r1, [r0]
- cmp r1, r10
- beq _0802847E
- cmp r1, 0xFD
- beq _0802847E
- adds r0, r1, 0
- bl sub_8028350
- lsls r0, 24
- cmp r0, 0
- beq _0802848C
-_0802847E:
- ldr r1, _080284B8 @ =gBitTable
- lsls r0, r5, 2
- adds r0, r1
- ldr r0, [r0]
- orrs r6, r0
- lsls r0, r6, 24
- lsrs r6, r0, 24
-_0802848C:
- adds r5, 0x1
- cmp r5, 0x3
- ble _0802843E
- ldr r0, _080284B0 @ =gBankAttacker
- ldrb r0, [r0]
- adds r1, r6, 0
- movs r2, 0xFD
- bl sub_8015A98
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xF
- bne _080284C0
- ldr r1, _080284BC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08028524
- .align 2, 0
-_080284B0: .4byte gBankAttacker
-_080284B4: .4byte gUnknown_02024A8C
-_080284B8: .4byte gBitTable
-_080284BC: .4byte gBattlescriptCurrInstr
-_080284C0:
- movs r7, 0x3
- ldr r4, _08028534 @ =gBitTable
-_080284C4:
- bl Random
- adds r5, r7, 0
- ands r5, r0
- lsls r0, r5, 2
- adds r0, r4
- ldr r0, [r0]
- ands r0, r6
- cmp r0, 0
- bne _080284C4
- ldr r4, _08028538 @ =gUnknown_02024BEA
- ldr r2, _0802853C @ =gBattleMons
- lsls r1, r5, 1
- ldr r0, _08028540 @ =gBankAttacker
- ldrb r3, [r0]
- movs r0, 0x58
- muls r0, r3
- adds r1, r0
- adds r2, 0xC
- adds r1, r2
- ldrh r0, [r1]
- strh r0, [r4]
- ldr r0, _08028544 @ =gCurrMovePos
- strb r5, [r0]
- ldr r2, _08028548 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0802854C @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldrh r0, [r4]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _08028550 @ =gBankTarget
- strb r0, [r1]
- ldr r3, _08028554 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08028524:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028534: .4byte gBitTable
-_08028538: .4byte gUnknown_02024BEA
-_0802853C: .4byte gBattleMons
-_08028540: .4byte gBankAttacker
-_08028544: .4byte gCurrMovePos
-_08028548: .4byte gHitMarker
-_0802854C: .4byte 0xfffffbff
-_08028550: .4byte gBankTarget
-_08028554: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028420
-
- thumb_func_start sub_8028558
-sub_8028558: @ 8028558
- ldr r1, _0802857C @ =gBattleMons
- ldr r0, _08028580 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x50
- adds r2, r1
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 18
- orrs r0, r1
- str r0, [r2]
- ldr r1, _08028584 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_0802857C: .4byte gBattleMons
-_08028580: .4byte gBankAttacker
-_08028584: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028558
-
- thumb_func_start b_feature_update_destiny_bond
-b_feature_update_destiny_bond: @ 8028588
- push {r4,r5,lr}
- ldr r0, _080285D8 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _080285DC @ =gBankTarget
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _080285E0 @ =gBattleMons
- ldrb r2, [r4]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _080285D2
- cmp r5, r3
- beq _080285D2
- ldr r2, _080285E4 @ =gHitMarker
- ldr r1, [r2]
- movs r0, 0x80
- lsls r0, 17
- ands r0, r1
- cmp r0, 0
- bne _080285D2
- movs r0, 0x40
- orrs r1, r0
- str r1, [r2]
-_080285D2:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080285D8: .4byte gBankAttacker
-_080285DC: .4byte gBankTarget
-_080285E0: .4byte gBattleMons
-_080285E4: .4byte gHitMarker
- thumb_func_end b_feature_update_destiny_bond
-
- thumb_func_start atkAB_802A458
-atkAB_802A458: @ 80285E8
- push {lr}
- bl b_feature_update_destiny_bond
- ldr r1, _080285FC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080285FC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkAB_802A458
-
- thumb_func_start atkAC_remaininghptopower
-atkAC_remaininghptopower: @ 8028600
- push {lr}
- ldr r2, _08028654 @ =gBattleMons
- ldr r0, _08028658 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r1, r2
- movs r2, 0x28
- ldrsh r0, [r1, r2]
- movs r2, 0x2C
- ldrsh r1, [r1, r2]
- movs r2, 0x30
- bl GetScaledHPFraction
- lsls r0, 24
- lsrs r1, r0, 24
- movs r3, 0
- ldr r0, _0802865C @ =gUnknown_081FAD26
- ldrb r2, [r0]
- cmp r1, r2
- ble _0802863A
- adds r2, r0, 0
-_0802862C:
- adds r3, 0x2
- cmp r3, 0xB
- bgt _0802863A
- adds r0, r3, r2
- ldrb r0, [r0]
- cmp r1, r0
- bgt _0802862C
-_0802863A:
- ldr r2, _08028660 @ =gDynamicBasePower
- ldr r1, _0802865C @ =gUnknown_081FAD26
- adds r0, r3, 0x1
- adds r0, r1
- ldrb r0, [r0]
- strh r0, [r2]
- ldr r1, _08028664 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08028654: .4byte gBattleMons
-_08028658: .4byte gBankAttacker
-_0802865C: .4byte gUnknown_081FAD26
-_08028660: .4byte gDynamicBasePower
-_08028664: .4byte gBattlescriptCurrInstr
- thumb_func_end atkAC_remaininghptopower
-
- thumb_func_start sub_8028668
-sub_8028668: @ 8028668
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, _080287F8 @ =gLastUsedMove
- ldr r1, _080287FC @ =gBankTarget
- ldrb r2, [r1]
- lsls r0, r2, 1
- adds r0, r4
- ldrh r3, [r0]
- mov r8, r1
- cmp r3, 0
- bne _08028688
- b _08028828
-_08028688:
- ldr r0, _08028800 @ =0x0000ffff
- cmp r3, r0
- bne _08028690
- b _08028828
-_08028690:
- ldr r1, _08028804 @ =gStatuses3
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08028808 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _080286A2
- b _08028828
-_080286A2:
- movs r7, 0
- ldr r0, _0802880C @ =gBattleMons
- movs r1, 0x58
- muls r1, r2
- adds r2, r0, 0
- adds r2, 0xC
- adds r1, r2
- ldrh r1, [r1]
- cmp r3, r1
- beq _080286DA
- adds r6, r4, 0
- mov r5, r8
- adds r4, r2, 0
- movs r3, 0x58
-_080286BE:
- adds r7, 0x1
- cmp r7, 0x3
- bgt _080286DA
- ldrb r0, [r5]
- lsls r2, r0, 1
- adds r2, r6
- lsls r1, r7, 1
- muls r0, r3
- adds r1, r0
- adds r1, r4
- ldrh r0, [r2]
- ldrh r1, [r1]
- cmp r0, r1
- bne _080286BE
-_080286DA:
- cmp r7, 0x4
- bne _080286E0
- b _08028828
-_080286E0:
- mov r4, r8
- ldrb r0, [r4]
- movs r1, 0x58
- mov r9, r1
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- adds r0, r7, r0
- ldr r1, _0802880C @ =gBattleMons
- adds r1, 0x24
- mov r10, r1
- add r0, r10
- ldrb r0, [r0]
- cmp r0, 0x1
- bhi _08028700
- b _08028828
-_08028700:
- bl Random
- movs r1, 0x3
- ands r1, r0
- adds r6, r1, 0x2
- ldrb r0, [r4]
- mov r3, r9
- muls r3, r0
- adds r0, r3, 0
- adds r0, r7, r0
- add r0, r10
- ldrb r0, [r0]
- cmp r0, r6
- bge _0802871E
- adds r6, r0, 0
-_0802871E:
- ldr r1, _08028810 @ =gBattleTextBuff1
- movs r5, 0xFD
- strb r5, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldr r2, _080287F8 @ =gLastUsedMove
- mov r3, r8
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r4, _08028814 @ =gBattleTextBuff2
- adds r0, r4, 0
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- strb r5, [r4]
- movs r0, 0x1
- strb r0, [r4, 0x1]
- strb r0, [r4, 0x2]
- strb r0, [r4, 0x3]
- strb r6, [r4, 0x4]
- subs r0, 0x2
- strb r0, [r4, 0x5]
- mov r1, r8
- ldrb r0, [r1]
- mov r1, r9
- muls r1, r0
- adds r1, r7, r1
- add r1, r10
- ldrb r0, [r1]
- subs r0, r6
- strb r0, [r1]
- ldr r4, _08028818 @ =gActiveBank
- mov r3, r8
- ldrb r0, [r3]
- strb r0, [r4]
- ldr r1, _0802881C @ =gDisableStructs
- ldrb r3, [r4]
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- adds r0, r1
- ldrb r1, [r0, 0x18]
- lsrs r1, 4
- ldr r2, _08028820 @ =gBitTable
- lsls r0, r7, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _080287D2
- mov r2, r9
- muls r2, r3
- ldr r0, _0802880C @ =gBattleMons
- adds r0, 0x50
- adds r0, r2, r0
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- bne _080287D2
- adds r1, r7, 0
- adds r1, 0x9
- lsls r1, 24
- lsrs r1, 24
- mov r3, r10
- adds r0, r2, r3
- adds r0, r7
- str r0, [sp]
- movs r0, 0
- movs r2, 0
- movs r3, 0x1
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
-_080287D2:
- ldr r1, _08028824 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- ldr r1, _0802880C @ =gBattleMons
- ldr r0, _080287FC @ =gBankTarget
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r0, r7, r0
- adds r1, 0x24
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08028842
- adds r0, r2, 0
- bl CancelMultiTurnMoves
- b _08028842
- .align 2, 0
-_080287F8: .4byte gLastUsedMove
-_080287FC: .4byte gBankTarget
-_08028800: .4byte 0x0000ffff
-_08028804: .4byte gStatuses3
-_08028808: .4byte 0x000400c0
-_0802880C: .4byte gBattleMons
-_08028810: .4byte gBattleTextBuff1
-_08028814: .4byte gBattleTextBuff2
-_08028818: .4byte gActiveBank
-_0802881C: .4byte gDisableStructs
-_08028820: .4byte gBitTable
-_08028824: .4byte gBattlescriptCurrInstr
-_08028828:
- ldr r3, _08028854 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08028842:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028854: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028668
-
- thumb_func_start sub_8028858
-sub_8028858: @ 8028858
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- movs r4, 0
- str r4, [sp, 0x4]
- movs r7, 0
- ldr r0, _080288AC @ =gCurrentMove
- ldrh r0, [r0]
- cmp r0, 0xD7
- beq _08028872
- b _08028A26
-_08028872:
- ldr r5, _080288B0 @ =gBattleCommunication
- strb r7, [r5, 0x5]
- ldr r6, _080288B4 @ =gBankAttacker
- ldrb r0, [r6]
- bl GetBankSide
- lsls r0, 24
- ldr r1, _080288B8 @ =gEnemyParty
- mov r9, r1
- cmp r0, 0
- bne _0802888C
- ldr r2, _080288BC @ =gPlayerParty
- mov r9, r2
-_0802888C:
- ldr r4, _080288C0 @ =gBattleMons
- ldrb r3, [r6]
- movs r0, 0x58
- adds r2, r3, 0
- muls r2, r0
- adds r0, r2, r4
- adds r1, r0, 0
- adds r1, 0x20
- ldrb r0, [r1]
- cmp r0, 0x2B
- beq _080288C4
- adds r0, r4, 0
- adds r0, 0x4C
- adds r0, r2, r0
- str r7, [r0]
- b _080288D4
- .align 2, 0
-_080288AC: .4byte gCurrentMove
-_080288B0: .4byte gBattleCommunication
-_080288B4: .4byte gBankAttacker
-_080288B8: .4byte gEnemyParty
-_080288BC: .4byte gPlayerParty
-_080288C0: .4byte gBattleMons
-_080288C4:
- ldrb r1, [r1]
- adds r0, r3, 0
- bl RecordAbilityBattle
- ldrb r0, [r5, 0x5]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r5, 0x5]
-_080288D4:
- ldr r4, _08028934 @ =gActiveBank
- ldr r0, _08028938 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r6, 0x2
- eors r0, r6
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r1, _0802893C @ =0x02000000
- ldr r2, _08028940 @ =0x00016003
- adds r1, r2
- strb r0, [r1]
- strb r0, [r4]
- ldr r0, _08028944 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08028964
- ldr r0, _08028948 @ =gAbsentBankFlags
- ldrb r2, [r0]
- ldr r1, _0802894C @ =gBitTable
- ldrb r3, [r4]
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ands r2, r0
- cmp r2, 0
- bne _08028964
- ldr r5, _08028950 @ =gBattleMons
- movs r0, 0x58
- adds r4, r3, 0
- muls r4, r0
- adds r0, r4, r5
- adds r1, r0, 0
- adds r1, 0x20
- ldrb r0, [r1]
- cmp r0, 0x2B
- beq _08028954
- adds r0, r5, 0
- adds r0, 0x4C
- adds r0, r4, r0
- str r2, [r0]
- b _08028964
- .align 2, 0
-_08028934: .4byte gActiveBank
-_08028938: .4byte gBankAttacker
-_0802893C: .4byte 0x02000000
-_08028940: .4byte 0x00016003
-_08028944: .4byte gBattleTypeFlags
-_08028948: .4byte gAbsentBankFlags
-_0802894C: .4byte gBitTable
-_08028950: .4byte gBattleMons
-_08028954:
- ldrb r1, [r1]
- adds r0, r3, 0
- bl RecordAbilityBattle
- ldr r1, _080289AC @ =gBattleCommunication
- ldrb r0, [r1, 0x5]
- orrs r0, r6
- strb r0, [r1, 0x5]
-_08028964:
- movs r6, 0
- ldr r0, _080289B0 @ =gBattleMons
- mov r8, r0
-_0802896A:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- add r4, r9
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r5, 0
- beq _08028A1E
- movs r0, 0xCE
- lsls r0, 1
- cmp r5, r0
- beq _08028A1E
- ldr r2, _080289B4 @ =gBattlePartyID
- ldr r0, _080289B8 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, r6
- bne _080289BC
- movs r0, 0x58
- muls r0, r1
- b _080289EC
- .align 2, 0
-_080289AC: .4byte gBattleCommunication
-_080289B0: .4byte gBattleMons
-_080289B4: .4byte gBattlePartyID
-_080289B8: .4byte gBankAttacker
-_080289BC:
- ldr r0, _080289F4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08028A04
- ldr r0, _080289F8 @ =gActiveBank
- ldrb r3, [r0]
- lsls r0, r3, 1
- adds r0, r2
- ldrh r0, [r0]
- cmp r0, r6
- bne _08028A04
- ldr r0, _080289FC @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _08028A00 @ =gBitTable
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _08028A04
- movs r0, 0x58
- muls r0, r3
-_080289EC:
- add r0, r8
- adds r0, 0x20
- ldrb r0, [r0]
- b _08028A10
- .align 2, 0
-_080289F4: .4byte gBattleTypeFlags
-_080289F8: .4byte gActiveBank
-_080289FC: .4byte gAbsentBankFlags
-_08028A00: .4byte gBitTable
-_08028A04:
- adds r0, r5, 0
- adds r1, r4, 0
- bl GetAbilityBySpecies
- lsls r0, 24
- lsrs r0, 24
-_08028A10:
- cmp r0, 0x2B
- beq _08028A1E
- movs r0, 0x1
- lsls r0, r6
- orrs r7, r0
- lsls r0, r7, 24
- lsrs r7, r0, 24
-_08028A1E:
- adds r6, 0x1
- cmp r6, 0x5
- ble _0802896A
- b _08028A7E
-_08028A26:
- ldr r1, _08028AB4 @ =gBattleCommunication
- movs r0, 0x4
- strb r0, [r1, 0x5]
- movs r7, 0x3F
- ldr r2, _08028AB8 @ =gBattleMons
- ldr r1, _08028ABC @ =gBankAttacker
- ldrb r0, [r1]
- movs r6, 0x58
- muls r0, r6
- adds r5, r2, 0
- adds r5, 0x4C
- adds r0, r5
- str r4, [r0]
- ldrb r0, [r1]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r3, _08028AC0 @ =gActiveBank
- strb r0, [r3]
- ldr r0, _08028AC4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08028A7E
- ldr r0, _08028AC8 @ =gAbsentBankFlags
- ldrb r2, [r0]
- ldr r1, _08028ACC @ =gBitTable
- ldrb r3, [r3]
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ands r2, r0
- cmp r2, 0
- bne _08028A7E
- adds r0, r3, 0
- muls r0, r6
- adds r0, r5
- str r2, [r0]
-_08028A7E:
- ldr r4, _08028AC0 @ =gActiveBank
- ldr r0, _08028ABC @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- add r1, sp, 0x4
- str r1, [sp]
- movs r0, 0
- movs r1, 0x28
- adds r2, r7, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, _08028AD0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028AB4: .4byte gBattleCommunication
-_08028AB8: .4byte gBattleMons
-_08028ABC: .4byte gBankAttacker
-_08028AC0: .4byte gActiveBank
-_08028AC4: .4byte gBattleTypeFlags
-_08028AC8: .4byte gAbsentBankFlags
-_08028ACC: .4byte gBitTable
-_08028AD0: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028858
-
- thumb_func_start sub_8028AD4
-sub_8028AD4: @ 8028AD4
- push {r4-r7,lr}
- ldr r7, _08028B24 @ =gBattleMons
- ldr r0, _08028B28 @ =gBankTarget
- ldrb r3, [r0]
- movs r6, 0x58
- adds r1, r3, 0
- muls r1, r6
- adds r0, r7, 0
- adds r0, 0x50
- adds r4, r1, r0
- ldr r2, [r4]
- movs r5, 0x80
- lsls r5, 21
- adds r0, r2, 0
- ands r0, r5
- cmp r0, 0
- bne _08028B06
- ldr r1, _08028B2C @ =gStatuses3
- lsls r0, r3, 2
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _08028B30 @ =0x000400c0
- ands r0, r1
- cmp r0, 0
- beq _08028B38
-_08028B06:
- ldr r3, _08028B34 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08028B5C
- .align 2, 0
-_08028B24: .4byte gBattleMons
-_08028B28: .4byte gBankTarget
-_08028B2C: .4byte gStatuses3
-_08028B30: .4byte 0x000400c0
-_08028B34: .4byte gBattlescriptCurrInstr
-_08028B38:
- orrs r2, r5
- str r2, [r4]
- ldr r1, _08028B64 @ =gBattleMoveDamage
- ldr r0, _08028B68 @ =gBankAttacker
- ldrb r0, [r0]
- muls r0, r6
- adds r0, r7
- ldrh r0, [r0, 0x2C]
- lsrs r0, 1
- str r0, [r1]
- cmp r0, 0
- bne _08028B54
- movs r0, 0x1
- str r0, [r1]
-_08028B54:
- ldr r1, _08028B6C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08028B5C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028B64: .4byte gBattleMoveDamage
-_08028B68: .4byte gBankAttacker
-_08028B6C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028AD4
-
- thumb_func_start sub_8028B70
-sub_8028B70: @ 8028B70
- push {r4,lr}
- ldr r4, _08028BC4 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08028BC8 @ =gSideTimer
- lsls r2, r0, 1
- adds r0, r2, r0
- lsls r0, 2
- adds r3, r0, r1
- ldrb r0, [r3, 0x6]
- cmp r0, 0x3
- bne _08028BD4
- ldr r2, _08028BCC @ =gSpecialStatuses
- ldrb r1, [r4]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
- ldr r3, _08028BD0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08028BEE
- .align 2, 0
-_08028BC4: .4byte gBankAttacker
-_08028BC8: .4byte gSideTimer
-_08028BCC: .4byte gSpecialStatuses
-_08028BD0: .4byte gBattlescriptCurrInstr
-_08028BD4:
- ldr r1, _08028BF4 @ =gSideAffecting
- adds r1, r2, r1
- ldrh r2, [r1]
- movs r0, 0x10
- orrs r0, r2
- strh r0, [r1]
- ldrb r0, [r3, 0x6]
- adds r0, 0x1
- strb r0, [r3, 0x6]
- ldr r1, _08028BF8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08028BEE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08028BF4: .4byte gSideAffecting
-_08028BF8: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028B70
-
- thumb_func_start sub_8028BFC
-sub_8028BFC: @ 8028BFC
- ldr r1, _08028C20 @ =gBattleMons
- ldr r0, _08028C24 @ =gBankTarget
- ldrb r2, [r0]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x50
- adds r2, r1
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 22
- orrs r0, r1
- str r0, [r2]
- ldr r1, _08028C28 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08028C20: .4byte gBattleMons
-_08028C24: .4byte gBankTarget
-_08028C28: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028BFC
-
- thumb_func_start atkB2_setperishsong
-atkB2_setperishsong: @ 8028C2C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r6, 0
- movs r3, 0
- ldr r0, _08028C70 @ =gNoOfAllBanks
- adds r7, r0, 0
- ldr r0, _08028C74 @ =gBankAttacker
- mov r8, r0
- ldrb r1, [r7]
- cmp r6, r1
- bge _08028C98
- movs r5, 0x20
- ldr r0, _08028C78 @ =gBattleMons
- mov r12, r0
- ldr r0, _08028C7C @ =gDisableStructs
- adds r4, r0, 0
- adds r4, 0xF
- ldr r2, _08028C80 @ =gStatuses3
-_08028C54:
- ldr r1, [r2]
- adds r0, r1, 0
- ands r0, r5
- cmp r0, 0
- bne _08028C6C
- movs r0, 0x58
- muls r0, r3
- add r0, r12
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x2B
- bne _08028C84
-_08028C6C:
- adds r6, 0x1
- b _08028C8C
- .align 2, 0
-_08028C70: .4byte gNoOfAllBanks
-_08028C74: .4byte gBankAttacker
-_08028C78: .4byte gBattleMons
-_08028C7C: .4byte gDisableStructs
-_08028C80: .4byte gStatuses3
-_08028C84:
- orrs r1, r5
- str r1, [r2]
- movs r0, 0x33
- strb r0, [r4]
-_08028C8C:
- adds r4, 0x1C
- adds r2, 0x4
- adds r3, 0x1
- ldrb r0, [r7]
- cmp r3, r0
- blt _08028C54
-_08028C98:
- mov r1, r8
- ldrb r0, [r1]
- bl sub_80153D0
- ldr r0, _08028CC4 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- bne _08028CCC
- ldr r3, _08028CC8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08028CD4
- .align 2, 0
-_08028CC4: .4byte gNoOfAllBanks
-_08028CC8: .4byte gBattlescriptCurrInstr
-_08028CCC:
- ldr r1, _08028CE0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08028CD4:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028CE0: .4byte gBattlescriptCurrInstr
- thumb_func_end atkB2_setperishsong
-
- thumb_func_start atkB3_rolloutdamagecalculation
-atkB3_rolloutdamagecalculation: @ 8028CE4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _08028D08 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08028D18
- ldr r0, _08028D0C @ =gBankAttacker
- ldrb r0, [r0]
- bl CancelMultiTurnMoves
- ldr r1, _08028D10 @ =gBattlescriptCurrInstr
- ldr r0, _08028D14 @ =BattleScript_1D6F74
- str r0, [r1]
- b _08028E30
- .align 2, 0
-_08028D08: .4byte gBattleMoveFlags
-_08028D0C: .4byte gBankAttacker
-_08028D10: .4byte gBattlescriptCurrInstr
-_08028D14: .4byte BattleScript_1D6F74
-_08028D18:
- ldr r2, _08028E3C @ =gBattleMons
- ldr r1, _08028E40 @ =gBankAttacker
- ldrb r3, [r1]
- movs r5, 0x58
- adds r0, r3, 0
- muls r0, r5
- adds r4, r2, 0
- adds r4, 0x50
- adds r0, r4
- ldr r0, [r0]
- movs r7, 0x80
- lsls r7, 5
- ands r0, r7
- adds r6, r1, 0
- mov r9, r2
- ldr r1, _08028E44 @ =gDisableStructs
- mov r12, r1
- ldr r2, _08028E48 @ =gCurrentMove
- mov r8, r2
- cmp r0, 0
- bne _08028D8A
- lsls r0, r3, 3
- subs r0, r3
- lsls r0, 2
- add r0, r12
- ldrb r2, [r0, 0x11]
- movs r1, 0x10
- negs r1, r1
- ands r1, r2
- movs r2, 0x5
- orrs r1, r2
- strb r1, [r0, 0x11]
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r2, [r0, 0x11]
- movs r1, 0xF
- ands r1, r2
- movs r2, 0x50
- orrs r1, r2
- strb r1, [r0, 0x11]
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r4
- ldr r0, [r1]
- orrs r0, r7
- str r0, [r1]
- ldr r1, _08028E4C @ =gLockedMove
- ldrb r0, [r6]
- lsls r0, 1
- adds r0, r1
- mov r2, r8
- ldrh r1, [r2]
- strh r1, [r0]
-_08028D8A:
- ldrb r0, [r6]
- lsls r2, r0, 3
- subs r2, r0
- lsls r2, 2
- add r2, r12
- ldrb r3, [r2, 0x11]
- lsls r1, r3, 28
- lsrs r1, 28
- subs r1, 0x1
- movs r0, 0xF
- ands r1, r0
- movs r0, 0x10
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x11]
- cmp r1, 0
- bne _08028DBE
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r5
- adds r1, r4
- ldr r0, [r1]
- ldr r2, _08028E50 @ =0xffffefff
- ands r0, r2
- str r0, [r1]
-_08028DBE:
- ldr r3, _08028E54 @ =gDynamicBasePower
- ldr r2, _08028E58 @ =gBattleMoves
- mov r0, r8
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- strh r0, [r3]
- movs r2, 0x1
- ldrb r1, [r6]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- mov r1, r12
- adds r4, r0, r1
- ldrb r0, [r4, 0x11]
- lsls r0, 28
- lsrs r0, 28
- movs r1, 0x5
- subs r1, r0
- ldr r7, _08028E5C @ =gBattlescriptCurrInstr
- adds r5, r3, 0
- cmp r2, r1
- bge _08028E0C
- adds r1, r5, 0
- adds r3, r4, 0
- movs r4, 0x5
-_08028DF8:
- ldrh r0, [r1]
- lsls r0, 1
- strh r0, [r1]
- adds r2, 0x1
- ldrb r0, [r3, 0x11]
- lsls r0, 28
- lsrs r0, 28
- subs r0, r4, r0
- cmp r2, r0
- blt _08028DF8
-_08028E0C:
- ldrb r1, [r6]
- movs r0, 0x58
- muls r0, r1
- mov r1, r9
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 23
- ands r0, r1
- cmp r0, 0
- beq _08028E2A
- ldrh r0, [r5]
- lsls r0, 1
- strh r0, [r5]
-_08028E2A:
- ldr r0, [r7]
- adds r0, 0x1
- str r0, [r7]
-_08028E30:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08028E3C: .4byte gBattleMons
-_08028E40: .4byte gBankAttacker
-_08028E44: .4byte gDisableStructs
-_08028E48: .4byte gCurrentMove
-_08028E4C: .4byte gLockedMove
-_08028E50: .4byte 0xffffefff
-_08028E54: .4byte gDynamicBasePower
-_08028E58: .4byte gBattleMoves
-_08028E5C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkB3_rolloutdamagecalculation
-
- thumb_func_start atkB4_jumpifconfusedandattackmaxed
-atkB4_jumpifconfusedandattackmaxed: @ 8028E60
- push {r4,r5,lr}
- ldr r5, _08028EB0 @ =gBattleMons
- ldr r0, _08028EB4 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- adds r3, r1, 0
- muls r3, r0
- adds r0, r5, 0
- adds r0, 0x50
- adds r0, r3, r0
- ldr r0, [r0]
- movs r1, 0x7
- ands r0, r1
- ldr r4, _08028EB8 @ =gBattlescriptCurrInstr
- cmp r0, 0
- beq _08028EBC
- ldr r2, [r4]
- ldrb r0, [r2, 0x1]
- adds r0, r3
- adds r1, r5, 0
- adds r1, 0x18
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0xC
- bne _08028EBC
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _08028EC2
- .align 2, 0
-_08028EB0: .4byte gBattleMons
-_08028EB4: .4byte gBankTarget
-_08028EB8: .4byte gBattlescriptCurrInstr
-_08028EBC:
- ldr r0, [r4]
- adds r0, 0x6
- str r0, [r4]
-_08028EC2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end atkB4_jumpifconfusedandattackmaxed
-
- thumb_func_start sub_8028EC8
-sub_8028EC8: @ 8028EC8
- push {r4,r5,lr}
- ldr r0, _08028EF0 @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _08028F04
- ldr r2, _08028EF4 @ =gDisableStructs
- ldr r0, _08028EF8 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strb r1, [r0, 0x10]
- ldr r1, _08028EFC @ =gBattlescriptCurrInstr
- ldr r0, _08028F00 @ =BattleScript_1D6F74
- str r0, [r1]
- b _08028F5C
- .align 2, 0
-_08028EF0: .4byte gBattleMoveFlags
-_08028EF4: .4byte gDisableStructs
-_08028EF8: .4byte gBankAttacker
-_08028EFC: .4byte gBattlescriptCurrInstr
-_08028F00: .4byte BattleScript_1D6F74
-_08028F04:
- ldr r5, _08028F64 @ =gDisableStructs
- ldr r4, _08028F68 @ =gBankAttacker
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r1, r0, r5
- ldrb r0, [r1, 0x10]
- cmp r0, 0x5
- beq _08028F1C
- adds r0, 0x1
- strb r0, [r1, 0x10]
-_08028F1C:
- ldr r3, _08028F6C @ =gDynamicBasePower
- ldr r2, _08028F70 @ =gBattleMoves
- ldr r0, _08028F74 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- strh r0, [r3]
- movs r2, 0x1
- ldrb r1, [r4]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r4, _08028F78 @ =gBattlescriptCurrInstr
- ldrb r1, [r0, 0x10]
- cmp r2, r1
- bge _08028F56
- adds r1, r3, 0
- adds r3, r0, 0
-_08028F48:
- ldrh r0, [r1]
- lsls r0, 1
- strh r0, [r1]
- adds r2, 0x1
- ldrb r0, [r3, 0x10]
- cmp r2, r0
- blt _08028F48
-_08028F56:
- ldr r0, [r4]
- adds r0, 0x1
- str r0, [r4]
-_08028F5C:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08028F64: .4byte gDisableStructs
-_08028F68: .4byte gBankAttacker
-_08028F6C: .4byte gDynamicBasePower
-_08028F70: .4byte gBattleMoves
-_08028F74: .4byte gCurrentMove
-_08028F78: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8028EC8
-
- thumb_func_start atkB6_happinesstodamagecalculation
-atkB6_happinesstodamagecalculation: @ 8028F7C
- push {r4,lr}
- ldr r2, _08028FA8 @ =gBattleMoves
- ldr r0, _08028FAC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x79
- bne _08028FBC
- ldr r4, _08028FB0 @ =gDynamicBasePower
- ldr r2, _08028FB4 @ =gBattleMons
- ldr r0, _08028FB8 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2B
- ldrb r1, [r0]
- b _08028FD2
- .align 2, 0
-_08028FA8: .4byte gBattleMoves
-_08028FAC: .4byte gCurrentMove
-_08028FB0: .4byte gDynamicBasePower
-_08028FB4: .4byte gBattleMons
-_08028FB8: .4byte gBankAttacker
-_08028FBC:
- ldr r4, _08028FF0 @ =gDynamicBasePower
- ldr r2, _08028FF4 @ =gBattleMons
- ldr r0, _08028FF8 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2B
- ldrb r0, [r0]
- movs r1, 0xFF
- subs r1, r0
-_08028FD2:
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- movs r1, 0x19
- bl __divsi3
- strh r0, [r4]
- ldr r1, _08028FFC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08028FF0: .4byte gDynamicBasePower
-_08028FF4: .4byte gBattleMons
-_08028FF8: .4byte gBankAttacker
-_08028FFC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkB6_happinesstodamagecalculation
-
- thumb_func_start atkB7_presentdamagecalculation
-atkB7_presentdamagecalculation: @ 8029000
- push {r4,lr}
- bl Random
- movs r4, 0xFF
- ands r4, r0
- cmp r4, 0x65
- bgt _0802901C
- ldr r1, _08029018 @ =gDynamicBasePower
- movs r0, 0x28
- strh r0, [r1]
- b _0802905E
- .align 2, 0
-_08029018: .4byte gDynamicBasePower
-_0802901C:
- cmp r4, 0xB1
- bgt _0802902C
- ldr r1, _08029028 @ =gDynamicBasePower
- movs r0, 0x50
- strh r0, [r1]
- b _0802905E
- .align 2, 0
-_08029028: .4byte gDynamicBasePower
-_0802902C:
- cmp r4, 0xCB
- bgt _0802903C
- ldr r1, _08029038 @ =gDynamicBasePower
- movs r0, 0x78
- strh r0, [r1]
- b _0802905E
- .align 2, 0
-_08029038: .4byte gDynamicBasePower
-_0802903C:
- ldr r3, _08029068 @ =gBattleMoveDamage
- ldr r2, _0802906C @ =gBattleMons
- ldr r0, _08029070 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2C]
- lsrs r0, 2
- str r0, [r3]
- cmp r0, 0
- bne _08029058
- movs r0, 0x1
- str r0, [r3]
-_08029058:
- ldr r0, [r3]
- negs r0, r0
- str r0, [r3]
-_0802905E:
- cmp r4, 0xCB
- bgt _0802907C
- ldr r1, _08029074 @ =gBattlescriptCurrInstr
- ldr r0, _08029078 @ =BattleScript_1D6F44
- b _080290AC
- .align 2, 0
-_08029068: .4byte gBattleMoveDamage
-_0802906C: .4byte gBattleMons
-_08029070: .4byte gBankTarget
-_08029074: .4byte gBattlescriptCurrInstr
-_08029078: .4byte BattleScript_1D6F44
-_0802907C:
- ldr r2, _08029098 @ =gBattleMons
- ldr r0, _0802909C @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r1, [r0, 0x2C]
- ldrh r0, [r0, 0x28]
- cmp r1, r0
- bne _080290A8
- ldr r1, _080290A0 @ =gBattlescriptCurrInstr
- ldr r0, _080290A4 @ =BattleScript_1D83B5
- b _080290AC
- .align 2, 0
-_08029098: .4byte gBattleMons
-_0802909C: .4byte gBankTarget
-_080290A0: .4byte gBattlescriptCurrInstr
-_080290A4: .4byte BattleScript_1D83B5
-_080290A8:
- ldr r1, _080290B4 @ =gBattlescriptCurrInstr
- ldr r0, _080290B8 @ =BattleScript_1D839B
-_080290AC:
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080290B4: .4byte gBattlescriptCurrInstr
-_080290B8: .4byte BattleScript_1D839B
- thumb_func_end atkB7_presentdamagecalculation
-
- thumb_func_start sub_80290BC
-sub_80290BC: @ 80290BC
- push {r4-r6,lr}
- ldr r4, _080290F0 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankIdentity
- ldr r6, _080290F4 @ =gSideAffecting
- movs r5, 0x1
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r6
- ldrh r1, [r1]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _08029100
- ldr r2, _080290F8 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _080290FC @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
- b _08029132
- .align 2, 0
-_080290F0: .4byte gBankAttacker
-_080290F4: .4byte gSideAffecting
-_080290F8: .4byte gBattleMoveFlags
-_080290FC: .4byte gBattleCommunication
-_08029100:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r5, 0
- ands r1, r0
- lsls r1, 1
- adds r1, r6
- ldrh r0, [r1]
- movs r2, 0x20
- orrs r0, r2
- strh r0, [r1]
- ldrb r0, [r4]
- bl GetBankIdentity
- ldr r2, _08029140 @ =gSideTimer
- adds r1, r5, 0
- ands r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x5
- strb r1, [r0, 0x7]
- ldr r0, _08029144 @ =gBattleCommunication
- strb r1, [r0, 0x5]
-_08029132:
- ldr r1, _08029148 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08029140: .4byte gSideTimer
-_08029144: .4byte gBattleCommunication
-_08029148: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80290BC
-
- thumb_func_start atkB9_magnitudedamagecalculation
-atkB9_magnitudedamagecalculation: @ 802914C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x4
- bgt _08029178
- ldr r1, _08029174 @ =gDynamicBasePower
- movs r0, 0xA
- strh r0, [r1]
- movs r3, 0x4
- b _080291E4
- .align 2, 0
-_08029174: .4byte gDynamicBasePower
-_08029178:
- cmp r3, 0xE
- bgt _0802918C
- ldr r1, _08029188 @ =gDynamicBasePower
- movs r0, 0x1E
- strh r0, [r1]
- movs r3, 0x5
- b _080291E4
- .align 2, 0
-_08029188: .4byte gDynamicBasePower
-_0802918C:
- cmp r3, 0x22
- bgt _080291A0
- ldr r1, _0802919C @ =gDynamicBasePower
- movs r0, 0x32
- strh r0, [r1]
- movs r3, 0x6
- b _080291E4
- .align 2, 0
-_0802919C: .4byte gDynamicBasePower
-_080291A0:
- cmp r3, 0x40
- bgt _080291B4
- ldr r1, _080291B0 @ =gDynamicBasePower
- movs r0, 0x46
- strh r0, [r1]
- movs r3, 0x7
- b _080291E4
- .align 2, 0
-_080291B0: .4byte gDynamicBasePower
-_080291B4:
- cmp r3, 0x54
- bgt _080291C8
- ldr r1, _080291C4 @ =gDynamicBasePower
- movs r0, 0x5A
- strh r0, [r1]
- movs r3, 0x8
- b _080291E4
- .align 2, 0
-_080291C4: .4byte gDynamicBasePower
-_080291C8:
- cmp r3, 0x5E
- bgt _080291DC
- ldr r1, _080291D8 @ =gDynamicBasePower
- movs r0, 0x6E
- strh r0, [r1]
- movs r3, 0x9
- b _080291E4
- .align 2, 0
-_080291D8: .4byte gDynamicBasePower
-_080291DC:
- ldr r1, _08029250 @ =gDynamicBasePower
- movs r0, 0x96
- strh r0, [r1]
- movs r3, 0xA
-_080291E4:
- ldr r1, _08029254 @ =gBattleTextBuff1
- movs r2, 0
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- strb r0, [r1, 0x2]
- movs r0, 0x2
- strb r0, [r1, 0x3]
- strb r3, [r1, 0x4]
- movs r0, 0xFF
- strb r0, [r1, 0x5]
- ldr r1, _08029258 @ =gBankTarget
- strb r2, [r1]
- ldr r0, _0802925C @ =gNoOfAllBanks
- ldrb r3, [r0]
- adds r6, r1, 0
- ldr r0, _08029260 @ =gBattlescriptCurrInstr
- mov r8, r0
- cmp r2, r3
- bcs _0802923C
- adds r4, r6, 0
- ldr r0, _08029264 @ =gBankAttacker
- ldrb r5, [r0]
- ldr r1, _08029268 @ =gBitTable
- mov r12, r1
- ldr r7, _0802926C @ =gAbsentBankFlags
-_0802921A:
- ldrb r2, [r4]
- cmp r2, r5
- beq _08029230
- ldrb r0, [r7]
- ldrb r1, [r6]
- lsls r1, 2
- add r1, r12
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- beq _0802923C
-_08029230:
- adds r0, r2, 0x1
- strb r0, [r4]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r3
- bcc _0802921A
-_0802923C:
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08029250: .4byte gDynamicBasePower
-_08029254: .4byte gBattleTextBuff1
-_08029258: .4byte gBankTarget
-_0802925C: .4byte gNoOfAllBanks
-_08029260: .4byte gBattlescriptCurrInstr
-_08029264: .4byte gBankAttacker
-_08029268: .4byte gBitTable
-_0802926C: .4byte gAbsentBankFlags
- thumb_func_end atkB9_magnitudedamagecalculation
-
- thumb_func_start sub_8029270
-sub_8029270: @ 8029270
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r0, _08029294 @ =gMultiHitCounter
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _080292A0
- ldr r0, _08029298 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0802929C
- movs r0, 0x1
- b _080292BA
- .align 2, 0
-_08029294: .4byte gMultiHitCounter
-_08029298: .4byte gBankAttacker
-_0802929C:
- movs r0, 0
- b _080292BA
-_080292A0:
- ldr r0, _080292B4 @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _080292B8
- movs r0, 0x3
- b _080292BA
- .align 2, 0
-_080292B4: .4byte gBankAttacker
-_080292B8:
- movs r0, 0x2
-_080292BA:
- bl GetBankByPlayerAI
- ldr r1, _0802937C @ =gBankTarget
- strb r0, [r1]
- ldr r0, _08029380 @ =gActionForBanks
- ldr r1, _0802937C @ =gBankTarget
- mov r9, r1
- ldrb r3, [r1]
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _080293BC
- ldr r5, _08029384 @ =gBankAttacker
- ldr r0, _08029388 @ =0x02000000
- ldr r2, _0802938C @ =0x00016010
- adds r1, r3, r2
- adds r1, r0
- ldrb r2, [r5]
- mov r10, r0
- ldrb r1, [r1]
- cmp r2, r1
- bne _080293BC
- ldr r4, _08029390 @ =gBattleMons
- movs r2, 0x58
- adds r0, r3, 0
- muls r0, r2
- adds r1, r4, 0
- adds r1, 0x4C
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x27
- ands r0, r1
- cmp r0, 0
- bne _080293BC
- ldrb r0, [r5]
- muls r0, r2
- adds r0, r4
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- beq _080293BC
- ldr r0, _08029394 @ =gDisableStructs
- lsls r1, r3, 3
- subs r1, r3
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x18]
- lsls r0, 31
- cmp r0, 0
- bne _080293BC
- ldr r0, _08029398 @ =gChosenMovesByBanks
- lsls r1, r3, 1
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, 0xE4
- bne _080293BC
- movs r1, 0
- ldr r0, _0802939C @ =gNoOfAllBanks
- ldr r7, _080293A0 @ =gCurrentMove
- mov r8, r7
- ldr r2, _080293A4 @ =gHitMarker
- mov r12, r2
- ldrb r7, [r0]
- cmp r1, r7
- bge _0802935A
- ldr r6, _080293A8 @ =gTurnOrder
- mov r5, r9
- ldr r4, _080293AC @ =gUnknown_02024A76
- movs r3, 0xB
- adds r2, r0, 0
-_08029344:
- adds r0, r1, r6
- ldrb r0, [r0]
- ldrb r7, [r5]
- cmp r0, r7
- bne _08029352
- adds r0, r1, r4
- strb r3, [r0]
-_08029352:
- adds r1, 0x1
- ldrb r0, [r2]
- cmp r1, r0
- blt _08029344
-_0802935A:
- movs r0, 0xE4
- mov r1, r8
- strh r0, [r1]
- ldr r2, _080293B0 @ =gBattlescriptCurrInstr
- ldr r0, [r2]
- adds r0, 0x5
- str r0, [r2]
- ldr r1, _080293B4 @ =0x00016002
- add r1, r10
- movs r0, 0x1
- strb r0, [r1]
- mov r7, r12
- ldr r0, [r7]
- ldr r1, _080293B8 @ =0xfffffbff
- ands r0, r1
- str r0, [r7]
- b _080293D6
- .align 2, 0
-_0802937C: .4byte gBankTarget
-_08029380: .4byte gActionForBanks
-_08029384: .4byte gBankAttacker
-_08029388: .4byte 0x02000000
-_0802938C: .4byte 0x00016010
-_08029390: .4byte gBattleMons
-_08029394: .4byte gDisableStructs
-_08029398: .4byte gChosenMovesByBanks
-_0802939C: .4byte gNoOfAllBanks
-_080293A0: .4byte gCurrentMove
-_080293A4: .4byte gHitMarker
-_080293A8: .4byte gTurnOrder
-_080293AC: .4byte gUnknown_02024A76
-_080293B0: .4byte gBattlescriptCurrInstr
-_080293B4: .4byte 0x00016002
-_080293B8: .4byte 0xfffffbff
-_080293BC:
- ldr r3, _080293E4 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_080293D6:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080293E4: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8029270
-
- thumb_func_start sub_80293E8
-sub_80293E8: @ 80293E8
- push {lr}
- ldr r2, _08029408 @ =gBattleWeather
- ldrh r1, [r2]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _08029414
- ldr r2, _0802940C @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08029410 @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _08029426
- .align 2, 0
-_08029408: .4byte gBattleWeather
-_0802940C: .4byte gBattleMoveFlags
-_08029410: .4byte gBattleCommunication
-_08029414:
- movs r0, 0x20
- strh r0, [r2]
- ldr r1, _08029434 @ =gBattleCommunication
- movs r0, 0x4
- strb r0, [r1, 0x5]
- ldr r0, _08029438 @ =gWishFutureKnock
- adds r0, 0x28
- movs r1, 0x5
- strb r1, [r0]
-_08029426:
- ldr r1, _0802943C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08029434: .4byte gBattleCommunication
-_08029438: .4byte gWishFutureKnock
-_0802943C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_80293E8
-
- thumb_func_start atkBC_maxattackhalvehp
-atkBC_maxattackhalvehp: @ 8029440
- push {r4,r5,lr}
- ldr r5, _0802948C @ =gBattleMons
- ldr r4, _08029490 @ =gBankAttacker
- ldrb r0, [r4]
- movs r3, 0x58
- muls r0, r3
- adds r2, r0, r5
- ldrh r0, [r2, 0x2C]
- lsrs r1, r0, 1
- cmp r1, 0
- bne _08029458
- movs r1, 0x1
-_08029458:
- movs r0, 0x19
- ldrsb r0, [r2, r0]
- cmp r0, 0xB
- bgt _0802949C
- ldrh r0, [r2, 0x28]
- cmp r0, r1
- bls _0802949C
- movs r0, 0xC
- strb r0, [r2, 0x19]
- ldr r1, _08029494 @ =gBattleMoveDamage
- ldrb r0, [r4]
- muls r0, r3
- adds r0, r5
- ldrh r0, [r0, 0x2C]
- lsrs r0, 1
- str r0, [r1]
- cmp r0, 0
- bne _08029480
- movs r0, 0x1
- str r0, [r1]
-_08029480:
- ldr r1, _08029498 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _080294B6
- .align 2, 0
-_0802948C: .4byte gBattleMons
-_08029490: .4byte gBankAttacker
-_08029494: .4byte gBattleMoveDamage
-_08029498: .4byte gBattlescriptCurrInstr
-_0802949C:
- ldr r3, _080294BC @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_080294B6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080294BC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkBC_maxattackhalvehp
-
- thumb_func_start atkBD_copyfoestats
-atkBD_copyfoestats: @ 80294C0
- push {r4-r7,lr}
- movs r2, 0
- ldr r7, _080294F8 @ =gBattlescriptCurrInstr
- ldr r6, _080294FC @ =gBankAttacker
- movs r4, 0x58
- ldr r3, _08029500 @ =gUnknown_02024A98
- ldr r5, _08029504 @ =gBankTarget
-_080294CE:
- ldrb r0, [r6]
- adds r1, r0, 0
- muls r1, r4
- adds r1, r2, r1
- adds r1, r3
- ldrb r0, [r5]
- muls r0, r4
- adds r0, r2, r0
- adds r0, r3
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0x7
- ble _080294CE
- ldr r0, [r7]
- adds r0, 0x5
- str r0, [r7]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080294F8: .4byte gBattlescriptCurrInstr
-_080294FC: .4byte gBankAttacker
-_08029500: .4byte gUnknown_02024A98
-_08029504: .4byte gBankTarget
- thumb_func_end atkBD_copyfoestats
-
- thumb_func_start atkBE_breakfree
-atkBE_breakfree: @ 8029508
- push {r4,r5,lr}
- ldr r1, _08029570 @ =gBattleMons
- ldr r5, _08029574 @ =gBankAttacker
- ldrb r2, [r5]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r3, r0, r1
- ldr r1, [r3]
- movs r0, 0xE0
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08029594
- ldr r0, _08029578 @ =0xffff1fff
- ands r1, r0
- str r1, [r3]
- ldr r1, _0802957C @ =gBankTarget
- ldr r2, _08029580 @ =0x02000000
- ldrb r0, [r5]
- ldr r3, _08029584 @ =0x00016020
- adds r0, r3
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r1, _08029588 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- ldrb r0, [r5]
- lsls r0, 1
- subs r3, 0x1C
- adds r0, r3
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1, 0x2]
- ldrb r0, [r5]
- lsls r0, 1
- adds r3, 0x1
- adds r0, r3
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- bl b_movescr_stack_push_cursor
- ldr r1, _0802958C @ =gBattlescriptCurrInstr
- ldr r0, _08029590 @ =gUnknown_081D92C2
- b _0802963E
- .align 2, 0
-_08029570: .4byte gBattleMons
-_08029574: .4byte gBankAttacker
-_08029578: .4byte 0xffff1fff
-_0802957C: .4byte gBankTarget
-_08029580: .4byte 0x02000000
-_08029584: .4byte 0x00016020
-_08029588: .4byte gBattleTextBuff1
-_0802958C: .4byte gBattlescriptCurrInstr
-_08029590: .4byte gUnknown_081D92C2
-_08029594:
- ldr r4, _080295C8 @ =gStatuses3
- lsls r0, r2, 2
- adds r3, r0, r4
- ldr r1, [r3]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _080295D4
- movs r0, 0x5
- negs r0, r0
- ands r1, r0
- str r1, [r3]
- ldrb r1, [r5]
- lsls r1, 2
- adds r1, r4
- ldr r0, [r1]
- movs r2, 0x4
- negs r2, r2
- ands r0, r2
- str r0, [r1]
- bl b_movescr_stack_push_cursor
- ldr r1, _080295CC @ =gBattlescriptCurrInstr
- ldr r0, _080295D0 @ =gUnknown_081D92C9
- b _0802963E
- .align 2, 0
-_080295C8: .4byte gStatuses3
-_080295CC: .4byte gBattlescriptCurrInstr
-_080295D0: .4byte gUnknown_081D92C9
-_080295D4:
- adds r0, r2, 0
- bl GetBankSide
- ldr r4, _08029624 @ =gSideAffecting
- lsls r0, 24
- lsrs r0, 23
- adds r0, r4
- ldrh r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08029638
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 23
- adds r0, r4
- ldrh r2, [r0]
- ldr r1, _08029628 @ =0x0000ffef
- ands r1, r2
- movs r4, 0
- strh r1, [r0]
- ldrb r0, [r5]
- bl GetBankSide
- ldr r2, _0802962C @ =gSideTimer
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- strb r4, [r1, 0x6]
- bl b_movescr_stack_push_cursor
- ldr r1, _08029630 @ =gBattlescriptCurrInstr
- ldr r0, _08029634 @ =gUnknown_081D92D0
- b _0802963E
- .align 2, 0
-_08029624: .4byte gSideAffecting
-_08029628: .4byte 0x0000ffef
-_0802962C: .4byte gSideTimer
-_08029630: .4byte gBattlescriptCurrInstr
-_08029634: .4byte gUnknown_081D92D0
-_08029638:
- ldr r1, _08029648 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
-_0802963E:
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08029648: .4byte gBattlescriptCurrInstr
- thumb_func_end atkBE_breakfree
-
- thumb_func_start sub_802964C
-sub_802964C: @ 802964C
- ldr r1, _08029670 @ =gBattleMons
- ldr r0, _08029674 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r2, r0
- adds r1, 0x50
- adds r2, r1
- ldr r0, [r2]
- movs r1, 0x80
- lsls r1, 23
- orrs r0, r1
- str r0, [r2]
- ldr r1, _08029678 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_08029670: .4byte gBattleMons
-_08029674: .4byte gBankAttacker
-_08029678: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802964C
-
- thumb_func_start atkC0_recoverbasedonsunlight
-atkC0_recoverbasedonsunlight: @ 802967C
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r1, _080296E8 @ =gBankTarget
- ldr r5, _080296EC @ =gBankAttacker
- ldrb r0, [r5]
- strb r0, [r1]
- ldr r7, _080296F0 @ =gBattleMons
- ldrb r0, [r5]
- movs r6, 0x58
- muls r0, r6
- adds r0, r7
- ldrh r1, [r0, 0x28]
- ldrh r0, [r0, 0x2C]
- cmp r1, r0
- beq _0802975C
- ldr r4, _080296F4 @ =gBattleWeather
- ldrh r0, [r4]
- cmp r0, 0
- beq _080296CE
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _080296CE
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- beq _080296FC
-_080296CE:
- ldr r3, _080296F8 @ =gBattleMoveDamage
- ldr r2, _080296F0 @ =gBattleMons
- ldr r0, _080296EC @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x2C]
- lsrs r0, 1
- str r0, [r3]
- adds r1, r3, 0
- b _08029736
- .align 2, 0
-_080296E8: .4byte gBankTarget
-_080296EC: .4byte gBankAttacker
-_080296F0: .4byte gBattleMons
-_080296F4: .4byte gBattleWeather
-_080296F8: .4byte gBattleMoveDamage
-_080296FC:
- ldrh r1, [r4]
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _08029728
- ldr r4, _08029724 @ =gBattleMoveDamage
- ldrb r0, [r5]
- muls r0, r6
- adds r0, r7
- ldrh r1, [r0, 0x2C]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- movs r1, 0x1E
- bl __divsi3
- str r0, [r4]
- adds r1, r4, 0
- b _08029736
- .align 2, 0
-_08029724: .4byte gBattleMoveDamage
-_08029728:
- ldr r1, _08029754 @ =gBattleMoveDamage
- ldrb r0, [r5]
- muls r0, r6
- adds r0, r7
- ldrh r0, [r0, 0x2C]
- lsrs r0, 2
- str r0, [r1]
-_08029736:
- adds r2, r1, 0
- ldr r0, [r2]
- cmp r0, 0
- bne _08029742
- movs r0, 0x1
- str r0, [r2]
-_08029742:
- ldr r0, [r1]
- negs r0, r0
- str r0, [r1]
- ldr r1, _08029758 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _08029776
- .align 2, 0
-_08029754: .4byte gBattleMoveDamage
-_08029758: .4byte gBattlescriptCurrInstr
-_0802975C:
- ldr r3, _08029780 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08029776:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08029780: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC0_recoverbasedonsunlight
-
- thumb_func_start sub_8029784
-sub_8029784: @ 8029784
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r2, _08029894 @ =gBattleMons
- ldr r0, _08029898 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- adds r4, r1, 0
- muls r4, r0
- adds r4, r2
- ldrb r0, [r4, 0x14]
- mov r10, r0
- mov r7, r10
- lsls r7, 27
- adds r0, r7, 0
- lsrs r0, 27
- mov r10, r0
- movs r1, 0x2
- mov r2, r10
- ands r2, r1
- asrs r2, 1
- ldrh r7, [r4, 0x14]
- mov r9, r7
- mov r0, r9
- lsls r0, 22
- mov r9, r0
- lsrs r3, r0, 27
- adds r0, r1, 0
- ands r0, r3
- orrs r2, r0
- ldrb r7, [r4, 0x15]
- mov r8, r7
- mov r0, r8
- lsls r0, 25
- mov r8, r0
- lsrs r3, r0, 27
- adds r0, r1, 0
- ands r0, r3
- lsls r0, 1
- orrs r2, r0
- ldr r6, [r4, 0x14]
- lsls r6, 12
- lsrs r3, r6, 27
- adds r0, r1, 0
- ands r0, r3
- lsls r0, 2
- orrs r2, r0
- ldrh r5, [r4, 0x16]
- lsls r5, 23
- lsrs r3, r5, 27
- adds r0, r1, 0
- ands r0, r3
- lsls r0, 3
- orrs r2, r0
- ldrb r3, [r4, 0x17]
- lsls r3, 26
- lsrs r0, r3, 27
- ands r1, r0
- lsls r1, 4
- orrs r2, r1
- movs r1, 0x1
- adds r4, r1, 0
- mov r7, r10
- ands r4, r7
- mov r0, r9
- lsrs r0, 27
- mov r9, r0
- adds r0, r1, 0
- mov r7, r9
- ands r0, r7
- lsls r0, 1
- orrs r4, r0
- mov r0, r8
- lsrs r0, 27
- mov r8, r0
- adds r0, r1, 0
- mov r7, r8
- ands r0, r7
- lsls r0, 2
- orrs r4, r0
- lsrs r6, 27
- adds r0, r1, 0
- ands r0, r6
- lsls r0, 3
- orrs r4, r0
- lsrs r5, 27
- adds r0, r1, 0
- ands r0, r5
- lsls r0, 4
- orrs r4, r0
- lsrs r3, 27
- ands r1, r3
- lsls r1, 5
- orrs r4, r1
- ldr r5, _0802989C @ =gDynamicBasePower
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- movs r1, 0x3F
- bl __divsi3
- adds r0, 0x1E
- strh r0, [r5]
- ldr r5, _080298A0 @ =0x02000000
- lsls r0, r4, 4
- subs r0, r4
- movs r1, 0x3F
- bl __divsi3
- adds r1, r0, 0x1
- ldr r0, _080298A4 @ =0x0001601c
- adds r5, r0
- strb r1, [r5]
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, 0x8
- bls _08029876
- adds r0, r1, 0x1
- strb r0, [r5]
-_08029876:
- ldrb r0, [r5]
- movs r1, 0xC0
- orrs r0, r1
- strb r0, [r5]
- ldr r1, _080298A8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08029894: .4byte gBattleMons
-_08029898: .4byte gBankAttacker
-_0802989C: .4byte gDynamicBasePower
-_080298A0: .4byte 0x02000000
-_080298A4: .4byte 0x0001601c
-_080298A8: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8029784
-
- thumb_func_start atkC2_selectnexttarget
-atkC2_selectnexttarget: @ 80298AC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _08029908 @ =gBankTarget
- movs r1, 0
- strb r1, [r0]
- ldr r1, _0802990C @ =gNoOfAllBanks
- ldrb r1, [r1]
- adds r6, r0, 0
- ldr r0, _08029910 @ =gBattlescriptCurrInstr
- mov r8, r0
- cmp r1, 0
- beq _080298F6
- adds r3, r6, 0
- ldr r0, _08029914 @ =gBankAttacker
- ldrb r5, [r0]
- ldr r0, _08029918 @ =gBitTable
- mov r12, r0
- adds r4, r1, 0
- ldr r7, _0802991C @ =gAbsentBankFlags
-_080298D4:
- ldrb r2, [r3]
- cmp r2, r5
- beq _080298EA
- ldrb r0, [r7]
- ldrb r1, [r6]
- lsls r1, 2
- add r1, r12
- ldr r1, [r1]
- ands r0, r1
- cmp r0, 0
- beq _080298F6
-_080298EA:
- adds r0, r2, 0x1
- strb r0, [r3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r4
- bcc _080298D4
-_080298F6:
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08029908: .4byte gBankTarget
-_0802990C: .4byte gNoOfAllBanks
-_08029910: .4byte gBattlescriptCurrInstr
-_08029914: .4byte gBankAttacker
-_08029918: .4byte gBitTable
-_0802991C: .4byte gAbsentBankFlags
- thumb_func_end atkC2_selectnexttarget
-
- thumb_func_start atkC3_setfutureattack
-atkC3_setfutureattack: @ 8029920
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- ldr r0, _08029958 @ =gWishFutureKnock
- mov r8, r0
- ldr r7, _0802995C @ =gBankTarget
- ldrb r1, [r7]
- adds r0, r1, r0
- ldrb r6, [r0]
- cmp r6, 0
- beq _08029964
- ldr r3, _08029960 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08029A2E
- .align 2, 0
-_08029958: .4byte gWishFutureKnock
-_0802995C: .4byte gBankTarget
-_08029960: .4byte gBattlescriptCurrInstr
-_08029964:
- lsls r1, 1
- mov r0, r8
- adds r0, 0x18
- adds r1, r0
- ldr r2, _08029A04 @ =gCurrentMove
- mov r9, r2
- ldrh r0, [r2]
- strh r0, [r1]
- mov r0, r8
- adds r0, 0x4
- ldrb r4, [r7]
- adds r0, r4
- ldr r5, _08029A08 @ =gBankAttacker
- ldrb r1, [r5]
- strb r1, [r0]
- ldrb r0, [r7]
- add r0, r8
- movs r1, 0x3
- strb r1, [r0]
- ldr r4, _08029A0C @ =gSideAffecting
- ldrb r0, [r7]
- bl GetBankIdentity
- movs r1, 0x1
- mov r10, r1
- ands r1, r0
- lsls r1, 1
- adds r1, r4
- ldrh r3, [r1]
- ldrb r0, [r5]
- movs r4, 0x58
- muls r0, r4
- ldr r2, _08029A10 @ =gBattleMons
- adds r0, r2
- ldrb r1, [r7]
- muls r1, r4
- adds r1, r2
- mov r4, r9
- ldrh r2, [r4]
- str r6, [sp]
- str r6, [sp, 0x4]
- ldrb r4, [r5]
- str r4, [sp, 0x8]
- ldrb r4, [r7]
- str r4, [sp, 0xC]
- bl CalculateBaseDamage
- ldrb r1, [r7]
- lsls r1, 2
- mov r2, r8
- adds r2, 0x8
- adds r1, r2
- str r0, [r1]
- ldr r1, _08029A14 @ =gProtectStructs
- ldrb r0, [r5]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _080299F2
- ldrb r4, [r7]
- lsls r4, 2
- adds r4, r2
- ldr r1, [r4]
- lsls r0, r1, 4
- subs r0, r1
- movs r1, 0xA
- bl __divsi3
- str r0, [r4]
-_080299F2:
- mov r0, r9
- ldrh r1, [r0]
- ldr r0, _08029A18 @ =0x00000161
- cmp r1, r0
- bne _08029A20
- ldr r0, _08029A1C @ =gBattleCommunication
- mov r1, r10
- strb r1, [r0, 0x5]
- b _08029A26
- .align 2, 0
-_08029A04: .4byte gCurrentMove
-_08029A08: .4byte gBankAttacker
-_08029A0C: .4byte gSideAffecting
-_08029A10: .4byte gBattleMons
-_08029A14: .4byte gProtectStructs
-_08029A18: .4byte 0x00000161
-_08029A1C: .4byte gBattleCommunication
-_08029A20:
- ldr r1, _08029A40 @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
-_08029A26:
- ldr r1, _08029A44 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08029A2E:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08029A40: .4byte gBattleCommunication
-_08029A44: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC3_setfutureattack
-
- thumb_func_start atkC4_802B910
-atkC4_802B910: @ 8029A48
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- ldr r0, _08029A8C @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r7, _08029A90 @ =gEnemyParty
- cmp r0, 0
- bne _08029A62
- ldr r7, _08029A94 @ =gPlayerParty
-_08029A62:
- ldr r2, _08029A98 @ =gBattleMons
- ldr r0, _08029A9C @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _08029AA4
- ldr r3, _08029AA0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- b _08029C40
- .align 2, 0
-_08029A8C: .4byte gBankAttacker
-_08029A90: .4byte gEnemyParty
-_08029A94: .4byte gPlayerParty
-_08029A98: .4byte gBattleMons
-_08029A9C: .4byte gBankTarget
-_08029AA0: .4byte gBattlescriptCurrInstr
-_08029AA4:
- ldr r6, _08029BE0 @ =gBattleCommunication
- ldrb r0, [r6]
- mov r8, r0
- cmp r0, 0x5
- bls _08029AB0
- b _08029C0C
-_08029AB0:
- adds r4, r6, 0
- movs r5, 0x64
-_08029AB4:
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r7, r0
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _08029AF8
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r7, r0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _08029AF8
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r7, r0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08029AF8
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r7, r0
- movs r1, 0x37
- bl GetMonData
- cmp r0, 0
- beq _08029B08
-_08029AF8:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- adds r6, r4, 0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bls _08029AB4
-_08029B08:
- ldr r1, _08029BE0 @ =gBattleCommunication
- mov r9, r1
- ldrb r2, [r1]
- cmp r2, 0x5
- bhi _08029C0C
- ldr r1, _08029BE4 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r6, _08029BE8 @ =gBankAttacker
- ldrb r0, [r6]
- strb r0, [r1, 0x2]
- strb r2, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _08029BEC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x9
- str r0, [r1]
- ldr r2, _08029BF0 @ =gBattleMoveDamage
- mov r8, r2
- ldr r5, _08029BF4 @ =gBaseStats
- mov r1, r9
- ldrb r0, [r1]
- movs r4, 0x64
- muls r0, r4
- adds r0, r7, r0
- movs r1, 0xB
- bl GetMonData
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r3, [r1, 0x1]
- mov r2, r8
- str r3, [r2]
- ldr r2, _08029BF8 @ =gBattleMoves
- ldr r0, _08029BFC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- muls r0, r3
- mov r1, r8
- str r0, [r1]
- mov r2, r9
- ldrb r0, [r2]
- muls r0, r4
- adds r0, r7, r0
- movs r1, 0x38
- bl GetMonData
- lsls r0, 1
- movs r1, 0x5
- bl __udivsi3
- adds r0, 0x2
- mov r2, r8
- ldr r1, [r2]
- muls r0, r1
- str r0, [r2]
- ldr r3, _08029C00 @ =gBattleMons
- ldr r1, _08029C04 @ =gBankTarget
- ldrb r2, [r1]
- movs r1, 0x58
- muls r1, r2
- adds r1, r3
- ldrh r2, [r1]
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- adds r1, r5
- ldrb r1, [r1, 0x2]
- bl __divsi3
- mov r1, r8
- str r0, [r1]
- movs r1, 0x32
- bl __divsi3
- adds r2, r0, 0x2
- mov r0, r8
- str r2, [r0]
- ldr r1, _08029C08 @ =gProtectStructs
- ldrb r0, [r6]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- bge _08029BD4
- lsls r0, r2, 4
- subs r0, r2
- movs r1, 0xA
- bl __divsi3
- mov r1, r8
- str r0, [r1]
-_08029BD4:
- mov r2, r9
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _08029C46
- .align 2, 0
-_08029BE0: .4byte gBattleCommunication
-_08029BE4: .4byte gBattleTextBuff1
-_08029BE8: .4byte gBankAttacker
-_08029BEC: .4byte gBattlescriptCurrInstr
-_08029BF0: .4byte gBattleMoveDamage
-_08029BF4: .4byte gBaseStats
-_08029BF8: .4byte gBattleMoves
-_08029BFC: .4byte gCurrentMove
-_08029C00: .4byte gBattleMons
-_08029C04: .4byte gBankTarget
-_08029C08: .4byte gProtectStructs
-_08029C0C:
- mov r0, r8
- cmp r0, 0
- beq _08029C2C
- ldr r3, _08029C28 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- b _08029C40
- .align 2, 0
-_08029C28: .4byte gBattlescriptCurrInstr
-_08029C2C:
- ldr r3, _08029C54 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x5]
- ldrb r0, [r2, 0x6]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x7]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x8]
-_08029C40:
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_08029C46:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08029C54: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC4_802B910
-
- thumb_func_start atkC5_hidepreattack
-atkC5_hidepreattack: @ 8029C58
- push {lr}
- ldr r0, _08029C6C @ =gCurrentMove
- ldrh r1, [r0]
- cmp r1, 0x5B
- beq _08029C98
- cmp r1, 0x5B
- bgt _08029C70
- cmp r1, 0x13
- beq _08029C7C
- b _08029CC4
- .align 2, 0
-_08029C6C: .4byte gCurrentMove
-_08029C70:
- ldr r0, _08029C8C @ =0x00000123
- cmp r1, r0
- beq _08029CB0
- adds r0, 0x31
- cmp r1, r0
- bne _08029CC4
-_08029C7C:
- ldr r2, _08029C90 @ =gStatuses3
- ldr r0, _08029C94 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x40
- b _08029CC0
- .align 2, 0
-_08029C8C: .4byte 0x00000123
-_08029C90: .4byte gStatuses3
-_08029C94: .4byte gBankAttacker
-_08029C98:
- ldr r2, _08029CA8 @ =gStatuses3
- ldr r0, _08029CAC @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x80
- b _08029CC0
- .align 2, 0
-_08029CA8: .4byte gStatuses3
-_08029CAC: .4byte gBankAttacker
-_08029CB0:
- ldr r2, _08029CD0 @ =gStatuses3
- ldr r0, _08029CD4 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 11
-_08029CC0:
- orrs r0, r2
- str r0, [r1]
-_08029CC4:
- ldr r1, _08029CD8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08029CD0: .4byte gStatuses3
-_08029CD4: .4byte gBankAttacker
-_08029CD8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC5_hidepreattack
-
- thumb_func_start atkC6_unhidepostattack
-atkC6_unhidepostattack: @ 8029CDC
- push {lr}
- ldr r0, _08029CF0 @ =gCurrentMove
- ldrh r1, [r0]
- cmp r1, 0x5B
- beq _08029D20
- cmp r1, 0x5B
- bgt _08029CF4
- cmp r1, 0x13
- beq _08029D00
- b _08029D4E
- .align 2, 0
-_08029CF0: .4byte gCurrentMove
-_08029CF4:
- ldr r0, _08029D14 @ =0x00000123
- cmp r1, r0
- beq _08029D3C
- adds r0, 0x31
- cmp r1, r0
- bne _08029D4E
-_08029D00:
- ldr r2, _08029D18 @ =gStatuses3
- ldr r0, _08029D1C @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x41
- negs r2, r2
- b _08029D4A
- .align 2, 0
-_08029D14: .4byte 0x00000123
-_08029D18: .4byte gStatuses3
-_08029D1C: .4byte gBankAttacker
-_08029D20:
- ldr r2, _08029D34 @ =gStatuses3
- ldr r0, _08029D38 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x81
- negs r2, r2
- b _08029D4A
- .align 2, 0
-_08029D34: .4byte gStatuses3
-_08029D38: .4byte gBankAttacker
-_08029D3C:
- ldr r2, _08029D5C @ =gStatuses3
- ldr r0, _08029D60 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- ldr r2, _08029D64 @ =0xfffbffff
-_08029D4A:
- ands r0, r2
- str r0, [r1]
-_08029D4E:
- ldr r1, _08029D68 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08029D5C: .4byte gStatuses3
-_08029D60: .4byte gBankAttacker
-_08029D64: .4byte 0xfffbffff
-_08029D68: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC6_unhidepostattack
-
- thumb_func_start atkC7_setminimize
-atkC7_setminimize: @ 8029D6C
- push {lr}
- ldr r0, _08029D9C @ =gHitMarker
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 18
- ands r0, r1
- cmp r0, 0
- beq _08029D90
- ldr r2, _08029DA0 @ =gStatuses3
- ldr r0, _08029DA4 @ =gBankAttacker
- ldrb r1, [r0]
- lsls r1, 2
- adds r1, r2
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 1
- orrs r0, r2
- str r0, [r1]
-_08029D90:
- ldr r1, _08029DA8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08029D9C: .4byte gHitMarker
-_08029DA0: .4byte gStatuses3
-_08029DA4: .4byte gBankAttacker
-_08029DA8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC7_setminimize
-
- thumb_func_start sub_8029DAC
-sub_8029DAC: @ 8029DAC
- push {lr}
- ldr r3, _08029DD0 @ =gBattleWeather
- ldrh r1, [r3]
- movs r2, 0x80
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _08029DDC
- ldr r2, _08029DD4 @ =gBattleMoveFlags
- ldrb r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _08029DD8 @ =gBattleCommunication
- movs r0, 0x2
- strb r0, [r1, 0x5]
- b _08029DEA
- .align 2, 0
-_08029DD0: .4byte gBattleWeather
-_08029DD4: .4byte gBattleMoveFlags
-_08029DD8: .4byte gBattleCommunication
-_08029DDC:
- strh r2, [r3]
- ldr r0, _08029DF8 @ =gBattleCommunication
- movs r1, 0x5
- strb r1, [r0, 0x5]
- ldr r0, _08029DFC @ =gWishFutureKnock
- adds r0, 0x28
- strb r1, [r0]
-_08029DEA:
- ldr r1, _08029E00 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08029DF8: .4byte gBattleCommunication
-_08029DFC: .4byte gWishFutureKnock
-_08029E00: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_8029DAC
-
- thumb_func_start atkC9_jumpifattackandspecialattackcannotfall
-atkC9_jumpifattackandspecialattackcannotfall: @ 8029E04
- push {r4,lr}
- ldr r2, _08029E48 @ =gBattleMons
- ldr r0, _08029E4C @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r1, r0, r2
- movs r0, 0x19
- ldrsb r0, [r1, r0]
- adds r3, r2, 0
- cmp r0, 0
- bne _08029E58
- movs r0, 0x1C
- ldrsb r0, [r1, r0]
- cmp r0, 0
- bne _08029E58
- ldr r0, _08029E50 @ =gBattleCommunication
- ldrb r0, [r0, 0x6]
- cmp r0, 0x1
- beq _08029E58
- ldr r3, _08029E54 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _08029E84
- .align 2, 0
-_08029E48: .4byte gBattleMons
-_08029E4C: .4byte gBankTarget
-_08029E50: .4byte gBattleCommunication
-_08029E54: .4byte gBattlescriptCurrInstr
-_08029E58:
- ldr r4, _08029E8C @ =gActiveBank
- ldr r0, _08029E90 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r2, _08029E94 @ =gBattleMoveDamage
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r3
- ldrh r0, [r0, 0x28]
- str r0, [r2]
- ldr r1, _08029E98 @ =0x00007fff
- movs r0, 0
- bl EmitHealthBarUpdate
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, _08029E9C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_08029E84:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08029E8C: .4byte gActiveBank
-_08029E90: .4byte gBankAttacker
-_08029E94: .4byte gBattleMoveDamage
-_08029E98: .4byte 0x00007fff
-_08029E9C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkC9_jumpifattackandspecialattackcannotfall
-
- thumb_func_start atkCA_setforcedtarget
-atkCA_setforcedtarget: @ 8029EA0
- push {r4,r5,lr}
- ldr r4, _08029EE0 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- ldr r5, _08029EE4 @ =gSideTimer
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- movs r0, 0x1
- strb r0, [r1, 0x8]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r0, [r4]
- strb r0, [r1, 0x9]
- ldr r1, _08029EE8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08029EE0: .4byte gBankAttacker
-_08029EE4: .4byte gSideTimer
-_08029EE8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkCA_setforcedtarget
-
- thumb_func_start atkCB_setcharge
-atkCB_setcharge: @ 8029EEC
- push {r4,lr}
- ldr r0, _08029F40 @ =gStatuses3
- ldr r3, _08029F44 @ =gBankAttacker
- ldrb r1, [r3]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 2
- orrs r0, r2
- str r0, [r1]
- ldr r4, _08029F48 @ =gDisableStructs
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r2, [r0, 0x12]
- movs r1, 0x10
- negs r1, r1
- ands r1, r2
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0, 0x12]
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r2, [r0, 0x12]
- movs r1, 0xF
- ands r1, r2
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0, 0x12]
- ldr r1, _08029F4C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08029F40: .4byte gStatuses3
-_08029F44: .4byte gBankAttacker
-_08029F48: .4byte gDisableStructs
-_08029F4C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkCB_setcharge
-
- thumb_func_start atkCC_callterrainattack
-atkCC_callterrainattack: @ 8029F50
- push {r4,lr}
- ldr r2, _08029FA0 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _08029FA4 @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, _08029FA8 @ =gCurrentMove
- ldr r1, _08029FAC @ =gNaturePowerMoves
- ldr r0, _08029FB0 @ =gBattleTerrain
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r4]
- ldrh r0, [r4]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _08029FB4 @ =gBankTarget
- strb r0, [r1]
- ldr r3, _08029FB8 @ =gUnknown_081D6BBC
- ldr r2, _08029FBC @ =gBattleMoves
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- bl b_movescr_stack_push
- ldr r1, _08029FC0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08029FA0: .4byte gHitMarker
-_08029FA4: .4byte 0xfffffbff
-_08029FA8: .4byte gCurrentMove
-_08029FAC: .4byte gNaturePowerMoves
-_08029FB0: .4byte gBattleTerrain
-_08029FB4: .4byte gBankTarget
-_08029FB8: .4byte gUnknown_081D6BBC
-_08029FBC: .4byte gBattleMoves
-_08029FC0: .4byte gBattlescriptCurrInstr
- thumb_func_end atkCC_callterrainattack
-
- thumb_func_start atkCD_cureifburnedparalysedorpoisoned
-atkCD_cureifburnedparalysedorpoisoned: @ 8029FC4
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r1, _0802A010 @ =gBattleMons
- ldr r3, _0802A014 @ =gBankAttacker
- ldrb r0, [r3]
- movs r6, 0x58
- muls r0, r6
- adds r5, r1, 0
- adds r5, 0x4C
- adds r2, r0, r5
- ldr r0, [r2]
- movs r1, 0xD8
- ands r0, r1
- cmp r0, 0
- beq _0802A020
- movs r0, 0
- str r0, [r2]
- ldr r1, _0802A018 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- ldr r4, _0802A01C @ =gActiveBank
- ldrb r0, [r3]
- strb r0, [r4]
- ldrb r0, [r4]
- muls r0, r6
- adds r0, r5
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r2, 0
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- b _0802A03A
- .align 2, 0
-_0802A010: .4byte gBattleMons
-_0802A014: .4byte gBankAttacker
-_0802A018: .4byte gBattlescriptCurrInstr
-_0802A01C: .4byte gActiveBank
-_0802A020:
- ldr r3, _0802A044 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802A03A:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A044: .4byte gBattlescriptCurrInstr
- thumb_func_end atkCD_cureifburnedparalysedorpoisoned
-
- thumb_func_start atkCE_settorment
-atkCE_settorment: @ 802A048
- push {lr}
- ldr r1, _0802A080 @ =gBattleMons
- ldr r0, _0802A084 @ =gBankTarget
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r1, [r0]
- movs r2, 0x80
- lsls r2, 24
- cmp r1, 0
- bge _0802A08C
- ldr r3, _0802A088 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A098
- .align 2, 0
-_0802A080: .4byte gBattleMons
-_0802A084: .4byte gBankTarget
-_0802A088: .4byte gBattlescriptCurrInstr
-_0802A08C:
- orrs r1, r2
- str r1, [r0]
- ldr r1, _0802A09C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802A098:
- pop {r0}
- bx r0
- .align 2, 0
-_0802A09C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkCE_settorment
-
- thumb_func_start atkCF_jumpifnodamage
-atkCF_jumpifnodamage: @ 802A0A0
- push {lr}
- ldr r2, _0802A0CC @ =gProtectStructs
- ldr r0, _0802A0D0 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r0, r2, 0x4
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- bne _0802A0C0
- adds r0, r2, 0
- adds r0, 0x8
- adds r0, r1, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0802A0D8
-_0802A0C0:
- ldr r1, _0802A0D4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802A0F2
- .align 2, 0
-_0802A0CC: .4byte gProtectStructs
-_0802A0D0: .4byte gBankAttacker
-_0802A0D4: .4byte gBattlescriptCurrInstr
-_0802A0D8:
- ldr r3, _0802A0F8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802A0F2:
- pop {r0}
- bx r0
- .align 2, 0
-_0802A0F8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkCF_jumpifnodamage
-
- thumb_func_start atkD0_settaunt
-atkD0_settaunt: @ 802A0FC
- push {r4,lr}
- ldr r4, _0802A140 @ =gDisableStructs
- ldr r3, _0802A144 @ =gBankTarget
- ldrb r0, [r3]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r2, r1, r4
- ldrb r1, [r2, 0x13]
- lsls r0, r1, 28
- cmp r0, 0
- bne _0802A14C
- movs r0, 0x10
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x13]
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r2, [r0, 0x13]
- movs r1, 0xF
- ands r1, r2
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0, 0x13]
- ldr r1, _0802A148 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802A166
- .align 2, 0
-_0802A140: .4byte gDisableStructs
-_0802A144: .4byte gBankTarget
-_0802A148: .4byte gBattlescriptCurrInstr
-_0802A14C:
- ldr r3, _0802A16C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802A166:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A16C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkD0_settaunt
-
- thumb_func_start sub_802A170
-sub_802A170: @ 802A170
- push {r4,lr}
- ldr r4, _0802A1D8 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r3, _0802A1DC @ =gBankTarget
- strb r0, [r3]
- ldr r0, _0802A1E0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802A1F4
- ldr r0, _0802A1E4 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _0802A1E8 @ =gBitTable
- ldrb r3, [r3]
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0802A1F4
- ldr r1, _0802A1EC @ =gProtectStructs
- ldrb r0, [r4]
- lsls r0, 4
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 28
- cmp r0, 0
- blt _0802A1F4
- lsls r0, r3, 4
- adds r2, r0, r1
- ldrb r1, [r2]
- lsls r0, r1, 28
- cmp r0, 0
- blt _0802A1F4
- movs r0, 0x8
- orrs r0, r1
- strb r0, [r2]
- ldr r1, _0802A1F0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802A20E
- .align 2, 0
-_0802A1D8: .4byte gBankAttacker
-_0802A1DC: .4byte gBankTarget
-_0802A1E0: .4byte gBattleTypeFlags
-_0802A1E4: .4byte gAbsentBankFlags
-_0802A1E8: .4byte gBitTable
-_0802A1EC: .4byte gProtectStructs
-_0802A1F0: .4byte gBattlescriptCurrInstr
-_0802A1F4:
- ldr r3, _0802A214 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802A20E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A214: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802A170
-
- thumb_func_start sub_802A218
-sub_802A218: @ 802A218
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _0802A30C @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0802A24C
- ldr r0, _0802A310 @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _0802A314 @ =0x00000902
- ands r0, r1
- cmp r0, 0
- bne _0802A24C
- ldr r0, _0802A318 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _0802A2EE
-_0802A24C:
- ldr r4, _0802A30C @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0802A310 @ =gBattleTypeFlags
- ldrh r1, [r0]
- ldr r0, _0802A314 @ =0x00000902
- ands r0, r1
- cmp r0, 0
- bne _0802A290
- ldr r0, _0802A318 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- beq _0802A290
- ldr r0, _0802A31C @ =gWishFutureKnock
- adds r0, 0x29
- adds r0, r2, r0
- ldrb r1, [r0]
- ldr r3, _0802A320 @ =gBitTable
- ldr r2, _0802A324 @ =gBattlePartyID
- ldrb r0, [r4]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r3
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0802A2EE
-_0802A290:
- ldr r0, _0802A328 @ =gBattleMons
- mov r9, r0
- ldr r1, _0802A30C @ =gBankAttacker
- ldrb r4, [r1]
- movs r2, 0x58
- mov r8, r2
- mov r0, r8
- muls r0, r4
- mov r3, r9
- adds r5, r0, r3
- ldrh r3, [r5, 0x2E]
- adds r1, r3, 0
- cmp r1, 0
- bne _0802A2BE
- ldr r0, _0802A32C @ =gBankTarget
- ldrb r0, [r0]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- add r0, r9
- ldrh r0, [r0, 0x2E]
- cmp r0, 0
- beq _0802A2EE
-_0802A2BE:
- cmp r1, 0xAF
- beq _0802A2EE
- ldr r7, _0802A32C @ =gBankTarget
- ldrb r0, [r7]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- mov r1, r9
- adds r2, r0, r1
- ldrh r1, [r2, 0x2E]
- cmp r1, 0xAF
- beq _0802A2EE
- adds r0, r3, 0
- subs r0, 0x79
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB
- bls _0802A2EE
- adds r0, r1, 0
- subs r0, 0x79
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xB
- bhi _0802A334
-_0802A2EE:
- ldr r3, _0802A330 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A49A
- .align 2, 0
-_0802A30C: .4byte gBankAttacker
-_0802A310: .4byte gBattleTypeFlags
-_0802A314: .4byte 0x00000902
-_0802A318: .4byte gTrainerBattleOpponent
-_0802A31C: .4byte gWishFutureKnock
-_0802A320: .4byte gBitTable
-_0802A324: .4byte gBattlePartyID
-_0802A328: .4byte gBattleMons
-_0802A32C: .4byte gBankTarget
-_0802A330: .4byte gBattlescriptCurrInstr
-_0802A334:
- adds r0, r2, 0
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x3C
- bne _0802A36C
- ldr r1, _0802A360 @ =gBattlescriptCurrInstr
- ldr r0, _0802A364 @ =BattleScript_NoItemSteal
- str r0, [r1]
- ldr r1, _0802A368 @ =gLastUsedAbility
- ldrb r0, [r7]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- add r0, r9
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r7]
- ldrb r1, [r1]
- bl RecordAbilityBattle
- b _0802A49A
- .align 2, 0
-_0802A360: .4byte gBattlescriptCurrInstr
-_0802A364: .4byte BattleScript_NoItemSteal
-_0802A368: .4byte gLastUsedAbility
-_0802A36C:
- lsls r0, r4, 1
- ldr r4, _0802A458 @ =0x020160f0
- adds r6, r0, r4
- ldrh r5, [r5, 0x2E]
- mov r10, r5
- strh r1, [r6]
- ldr r3, _0802A45C @ =gBankAttacker
- ldrb r0, [r3]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0
- strh r1, [r0, 0x2E]
- ldrb r0, [r7]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- add r0, r9
- mov r3, r10
- strh r3, [r0, 0x2E]
- ldr r5, _0802A460 @ =gActiveBank
- ldr r1, _0802A45C @ =gBankAttacker
- ldrb r0, [r1]
- strb r0, [r5]
- str r6, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldr r2, _0802A45C @ =gBankAttacker
- ldrb r0, [r2]
- bl MarkBufferBankForExecution
- ldrb r0, [r7]
- strb r0, [r5]
- ldrb r0, [r7]
- mov r3, r8
- muls r3, r0
- adds r0, r3, 0
- mov r1, r9
- adds r1, 0x2E
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
- ldr r0, _0802A464 @ =0xfffe9f10
- adds r4, r0
- ldrb r0, [r7]
- lsls r0, 1
- ldr r2, _0802A468 @ =0x000160e8
- adds r0, r2
- adds r0, r4
- movs r1, 0
- strb r1, [r0]
- ldrb r0, [r7]
- lsls r0, 1
- ldr r1, _0802A46C @ =0x000160e9
- adds r0, r1
- adds r0, r4
- movs r3, 0
- strb r3, [r0]
- ldr r3, _0802A45C @ =gBankAttacker
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r2
- adds r0, r4
- movs r2, 0
- strb r2, [r0]
- ldrb r0, [r3]
- lsls r0, 1
- adds r0, r1
- adds r0, r4
- strb r2, [r0]
- ldr r1, _0802A470 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- ldr r1, _0802A474 @ =gBattleTextBuff1
- movs r3, 0xFD
- strb r3, [r1]
- movs r2, 0xA
- strb r2, [r1, 0x1]
- ldrh r0, [r6]
- strb r0, [r1, 0x2]
- ldrh r0, [r6]
- lsrs r0, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _0802A478 @ =gBattleTextBuff2
- strb r3, [r1]
- strb r2, [r1, 0x1]
- mov r3, r10
- strb r3, [r1, 0x2]
- mov r2, r10
- lsrs r0, r2, 8
- strb r0, [r1, 0x3]
- movs r0, 0x1
- negs r0, r0
- strb r0, [r1, 0x4]
- cmp r2, 0
- beq _0802A480
- ldrh r0, [r6]
- cmp r0, 0
- beq _0802A494
- ldr r1, _0802A47C @ =gBattleCommunication
- movs r0, 0x2
- b _0802A498
- .align 2, 0
-_0802A458: .4byte 0x020160f0
-_0802A45C: .4byte gBankAttacker
-_0802A460: .4byte gActiveBank
-_0802A464: .4byte 0xfffe9f10
-_0802A468: .4byte 0x000160e8
-_0802A46C: .4byte 0x000160e9
-_0802A470: .4byte gBattlescriptCurrInstr
-_0802A474: .4byte gBattleTextBuff1
-_0802A478: .4byte gBattleTextBuff2
-_0802A47C: .4byte gBattleCommunication
-_0802A480:
- ldrh r0, [r6]
- cmp r0, 0
- beq _0802A494
- ldr r0, _0802A490 @ =gBattleCommunication
- movs r3, 0
- strb r3, [r0, 0x5]
- b _0802A49A
- .align 2, 0
-_0802A490: .4byte gBattleCommunication
-_0802A494:
- ldr r1, _0802A4AC @ =gBattleCommunication
- movs r0, 0x1
-_0802A498:
- strb r0, [r1, 0x5]
-_0802A49A:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A4AC: .4byte gBattleCommunication
- thumb_func_end sub_802A218
-
- thumb_func_start sub_802A4B0
-sub_802A4B0: @ 802A4B0
- push {r4,lr}
- ldr r3, _0802A4F0 @ =gBattleMons
- ldr r4, _0802A4F4 @ =gBankTarget
- ldrb r0, [r4]
- movs r2, 0x58
- muls r0, r2
- adds r0, r3
- adds r0, 0x20
- ldrb r1, [r0]
- adds r0, r1, 0
- cmp r0, 0
- beq _0802A504
- cmp r0, 0x19
- beq _0802A504
- ldr r0, _0802A4F8 @ =gBankAttacker
- ldrb r0, [r0]
- muls r0, r2
- adds r0, r3
- adds r0, 0x20
- strb r1, [r0]
- ldr r1, _0802A4FC @ =gLastUsedAbility
- ldrb r0, [r4]
- muls r0, r2
- adds r0, r3
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r1, _0802A500 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802A51E
- .align 2, 0
-_0802A4F0: .4byte gBattleMons
-_0802A4F4: .4byte gBankTarget
-_0802A4F8: .4byte gBankAttacker
-_0802A4FC: .4byte gLastUsedAbility
-_0802A500: .4byte gBattlescriptCurrInstr
-_0802A504:
- ldr r3, _0802A524 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802A51E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A524: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802A4B0
-
- thumb_func_start atkD4_802C408
-atkD4_802C408: @ 802A528
- push {r4-r7,lr}
- ldr r7, _0802A53C @ =gBattlescriptCurrInstr
- ldr r2, [r7]
- ldrb r3, [r2, 0x1]
- cmp r3, 0
- beq _0802A540
- cmp r3, 0x1
- beq _0802A578
- b _0802A5F4
- .align 2, 0
-_0802A53C: .4byte gBattlescriptCurrInstr
-_0802A540:
- ldr r1, _0802A56C @ =gWishFutureKnock
- ldr r4, _0802A570 @ =gBankAttacker
- adds r0, r1, 0
- adds r0, 0x20
- ldrb r5, [r4]
- adds r3, r0, r5
- ldrb r0, [r3]
- cmp r0, 0
- bne _0802A5C4
- movs r0, 0x2
- strb r0, [r3]
- ldrb r0, [r4]
- adds r1, 0x24
- adds r1, r0, r1
- ldr r2, _0802A574 @ =gBattlePartyID
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x6
- b _0802A5F2
- .align 2, 0
-_0802A56C: .4byte gWishFutureKnock
-_0802A570: .4byte gBankAttacker
-_0802A574: .4byte gBattlePartyID
-_0802A578:
- ldr r1, _0802A5DC @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x4
- strb r0, [r1, 0x1]
- ldr r4, _0802A5E0 @ =gBankTarget
- ldrb r0, [r4]
- strb r0, [r1, 0x2]
- ldr r0, _0802A5E4 @ =gWishFutureKnock
- adds r0, 0x24
- ldrb r5, [r4]
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- ldr r1, _0802A5E8 @ =gBattleMoveDamage
- ldr r6, _0802A5EC @ =gBattleMons
- ldrb r0, [r4]
- movs r5, 0x58
- muls r0, r5
- adds r0, r6
- ldrh r0, [r0, 0x2C]
- lsrs r0, 1
- str r0, [r1]
- cmp r0, 0
- bne _0802A5B0
- str r3, [r1]
-_0802A5B0:
- ldr r0, [r1]
- negs r0, r0
- str r0, [r1]
- ldrb r0, [r4]
- muls r0, r5
- adds r0, r6
- ldrh r1, [r0, 0x28]
- ldrh r0, [r0, 0x2C]
- cmp r1, r0
- bne _0802A5F0
-_0802A5C4:
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r7]
- b _0802A5F4
- .align 2, 0
-_0802A5DC: .4byte gBattleTextBuff1
-_0802A5E0: .4byte gBankTarget
-_0802A5E4: .4byte gWishFutureKnock
-_0802A5E8: .4byte gBattleMoveDamage
-_0802A5EC: .4byte gBattleMons
-_0802A5F0:
- adds r0, r2, 0x6
-_0802A5F2:
- str r0, [r7]
-_0802A5F4:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end atkD4_802C408
-
- thumb_func_start sub_802A5FC
-sub_802A5FC: @ 802A5FC
- push {lr}
- ldr r1, _0802A634 @ =gStatuses3
- ldr r0, _0802A638 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 2
- adds r2, r0, r1
- ldr r1, [r2]
- movs r3, 0x80
- lsls r3, 3
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _0802A640
- ldr r3, _0802A63C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A64C
- .align 2, 0
-_0802A634: .4byte gStatuses3
-_0802A638: .4byte gBankAttacker
-_0802A63C: .4byte gBattlescriptCurrInstr
-_0802A640:
- orrs r1, r3
- str r1, [r2]
- ldr r1, _0802A650 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802A64C:
- pop {r0}
- bx r0
- .align 2, 0
-_0802A650: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802A5FC
-
- thumb_func_start atkD6_doubledamagedealtifdamaged
-atkD6_doubledamagedealtifdamaged: @ 802A654
- push {lr}
- ldr r3, _0802A6A4 @ =gProtectStructs
- ldr r0, _0802A6A8 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r0, r3, 0x4
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0802A674
- adds r0, r2, r3
- ldr r1, _0802A6AC @ =gBankTarget
- ldrb r0, [r0, 0xC]
- ldrb r1, [r1]
- cmp r0, r1
- beq _0802A68C
-_0802A674:
- adds r0, r3, 0
- adds r0, 0x8
- adds r0, r2, r0
- ldr r0, [r0]
- cmp r0, 0
- beq _0802A696
- adds r0, r2, r3
- ldr r1, _0802A6AC @ =gBankTarget
- ldrb r0, [r0, 0xD]
- ldrb r1, [r1]
- cmp r0, r1
- bne _0802A696
-_0802A68C:
- ldr r0, _0802A6B0 @ =0x02000000
- ldr r1, _0802A6B4 @ =0x0001601f
- adds r0, r1
- movs r1, 0x2
- strb r1, [r0]
-_0802A696:
- ldr r1, _0802A6B8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0802A6A4: .4byte gProtectStructs
-_0802A6A8: .4byte gBankAttacker
-_0802A6AC: .4byte gBankTarget
-_0802A6B0: .4byte 0x02000000
-_0802A6B4: .4byte 0x0001601f
-_0802A6B8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkD6_doubledamagedealtifdamaged
-
- thumb_func_start sub_802A6BC
-sub_802A6BC: @ 802A6BC
- push {r4,lr}
- ldr r1, _0802A700 @ =gStatuses3
- ldr r0, _0802A704 @ =gBankTarget
- ldrb r3, [r0]
- lsls r0, r3, 2
- adds r4, r0, r1
- ldr r2, [r4]
- movs r0, 0xC0
- lsls r0, 5
- ands r0, r2
- cmp r0, 0
- bne _0802A6E4
- ldr r1, _0802A708 @ =gBattleMons
- movs r0, 0x58
- muls r0, r3
- adds r1, 0x4C
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802A710
-_0802A6E4:
- ldr r3, _0802A70C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A720
- .align 2, 0
-_0802A700: .4byte gStatuses3
-_0802A704: .4byte gBankTarget
-_0802A708: .4byte gBattleMons
-_0802A70C: .4byte gBattlescriptCurrInstr
-_0802A710:
- movs r0, 0x80
- lsls r0, 5
- orrs r2, r0
- str r2, [r4]
- ldr r1, _0802A728 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802A720:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A728: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802A6BC
-
- thumb_func_start atkD8_setdamagetohealthdifference
-atkD8_setdamagetohealthdifference: @ 802A72C
- push {lr}
- ldr r2, _0802A768 @ =gBattleMons
- ldr r0, _0802A76C @ =gBankTarget
- ldrb r0, [r0]
- movs r1, 0x58
- muls r0, r1
- adds r3, r0, r2
- ldr r0, _0802A770 @ =gBankAttacker
- ldrb r0, [r0]
- muls r0, r1
- adds r1, r0, r2
- ldrh r0, [r3, 0x28]
- ldrh r2, [r1, 0x28]
- cmp r0, r2
- bhi _0802A778
- ldr r3, _0802A774 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A78A
- .align 2, 0
-_0802A768: .4byte gBattleMons
-_0802A76C: .4byte gBankTarget
-_0802A770: .4byte gBankAttacker
-_0802A774: .4byte gBattlescriptCurrInstr
-_0802A778:
- ldr r2, _0802A790 @ =gBattleMoveDamage
- ldrh r0, [r3, 0x28]
- ldrh r1, [r1, 0x28]
- subs r0, r1
- str r0, [r2]
- ldr r1, _0802A794 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802A78A:
- pop {r0}
- bx r0
- .align 2, 0
-_0802A790: .4byte gBattleMoveDamage
-_0802A794: .4byte gBattlescriptCurrInstr
- thumb_func_end atkD8_setdamagetohealthdifference
-
- thumb_func_start atkD9_scaledamagebyhealthratio
-atkD9_scaledamagebyhealthratio: @ 802A798
- push {r4,lr}
- ldr r4, _0802A7E4 @ =gDynamicBasePower
- ldrh r0, [r4]
- cmp r0, 0
- bne _0802A7D4
- ldr r2, _0802A7E8 @ =gBattleMoves
- ldr r0, _0802A7EC @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r3, [r0, 0x1]
- ldr r2, _0802A7F0 @ =gBattleMons
- ldr r0, _0802A7F4 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r1, r2
- ldrh r0, [r1, 0x28]
- muls r0, r3
- ldrh r1, [r1, 0x2C]
- bl __divsi3
- strh r0, [r4]
- lsls r0, 16
- cmp r0, 0
- bne _0802A7D4
- movs r0, 0x1
- strh r0, [r4]
-_0802A7D4:
- ldr r1, _0802A7F8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A7E4: .4byte gDynamicBasePower
-_0802A7E8: .4byte gBattleMoves
-_0802A7EC: .4byte gCurrentMove
-_0802A7F0: .4byte gBattleMons
-_0802A7F4: .4byte gBankAttacker
-_0802A7F8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkD9_scaledamagebyhealthratio
-
- thumb_func_start atkDA_abilityswap
-atkDA_abilityswap: @ 802A7FC
- push {r4-r6,lr}
- ldr r5, _0802A860 @ =gBattleMons
- ldr r0, _0802A864 @ =gBankAttacker
- ldrb r0, [r0]
- movs r4, 0x58
- muls r0, r4
- adds r0, r5
- adds r2, r0, 0
- adds r2, 0x20
- ldrb r1, [r2]
- cmp r1, 0
- bne _0802A824
- ldr r0, _0802A868 @ =gBankTarget
- ldrb r0, [r0]
- muls r0, r4
- adds r0, r5
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802A844
-_0802A824:
- cmp r1, 0x19
- beq _0802A844
- ldr r6, _0802A868 @ =gBankTarget
- ldrb r0, [r6]
- muls r0, r4
- adds r0, r5
- adds r0, 0x20
- ldrb r3, [r0]
- cmp r3, 0x19
- beq _0802A844
- ldr r0, _0802A86C @ =gBattleMoveFlags
- ldrb r1, [r0]
- movs r0, 0x29
- ands r0, r1
- cmp r0, 0
- beq _0802A874
-_0802A844:
- ldr r3, _0802A870 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A88A
- .align 2, 0
-_0802A860: .4byte gBattleMons
-_0802A864: .4byte gBankAttacker
-_0802A868: .4byte gBankTarget
-_0802A86C: .4byte gBattleMoveFlags
-_0802A870: .4byte gBattlescriptCurrInstr
-_0802A874:
- ldrb r1, [r2]
- strb r3, [r2]
- ldrb r0, [r6]
- muls r0, r4
- adds r0, r5
- adds r0, 0x20
- strb r1, [r0]
- ldr r1, _0802A890 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802A88A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A890: .4byte gBattlescriptCurrInstr
- thumb_func_end atkDA_abilityswap
-
- thumb_func_start atkDB_imprisoneffect
-atkDB_imprisoneffect: @ 802A894
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r0, 0
- mov r8, r0
- ldr r1, _0802A8B8 @ =gStatuses3
- ldr r0, _0802A8BC @ =gBankAttacker
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 6
- ands r0, r1
- cmp r0, 0
- beq _0802A8E8
- b _0802A95E
- .align 2, 0
-_0802A8B8: .4byte gStatuses3
-_0802A8BC: .4byte gBankAttacker
-_0802A8C0:
- ldr r0, _0802A8E0 @ =gStatuses3
- mov r2, r9
- ldrb r1, [r2]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- movs r2, 0x80
- lsls r2, 6
- orrs r0, r2
- str r0, [r1]
- ldr r1, _0802A8E4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802A956
- .align 2, 0
-_0802A8E0: .4byte gStatuses3
-_0802A8E4: .4byte gBattlescriptCurrInstr
-_0802A8E8:
- adds r0, r2, 0
- bl sub_801529C
- movs r6, 0
- b _0802A94E
-_0802A8F2:
- adds r0, r6, 0
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r8, r0
- beq _0802A948
- movs r4, 0
- ldr r7, _0802A984 @ =gBankAttacker
- mov r9, r7
- ldr r0, _0802A988 @ =gBattleMons
- mov r12, r0
- mov r1, r9
- ldrb r0, [r1]
- mov r2, r12
- adds r2, 0xC
- movs r1, 0x58
- muls r0, r1
- adds r3, r0, r2
- adds r5, r6, 0
- muls r5, r1
-_0802A91C:
- movs r2, 0
- ldrh r1, [r3]
- mov r0, r12
- adds r0, 0xC
- adds r0, r5, r0
-_0802A926:
- ldrh r7, [r0]
- cmp r1, r7
- bne _0802A930
- cmp r1, 0
- bne _0802A938
-_0802A930:
- adds r0, 0x2
- adds r2, 0x1
- cmp r2, 0x3
- ble _0802A926
-_0802A938:
- cmp r2, 0x4
- bne _0802A944
- adds r3, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0802A91C
-_0802A944:
- cmp r4, 0x4
- bne _0802A8C0
-_0802A948:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0802A94E:
- ldr r0, _0802A98C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- bcc _0802A8F2
-_0802A956:
- ldr r0, _0802A98C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r6, r0
- bne _0802A978
-_0802A95E:
- ldr r3, _0802A990 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802A978:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802A984: .4byte gBankAttacker
-_0802A988: .4byte gBattleMons
-_0802A98C: .4byte gNoOfAllBanks
-_0802A990: .4byte gBattlescriptCurrInstr
- thumb_func_end atkDB_imprisoneffect
-
- thumb_func_start atkDC_setgrudge
-atkDC_setgrudge: @ 802A994
- push {lr}
- ldr r1, _0802A9CC @ =gStatuses3
- ldr r0, _0802A9D0 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 2
- adds r2, r0, r1
- ldr r1, [r2]
- movs r3, 0x80
- lsls r3, 7
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- beq _0802A9D8
- ldr r3, _0802A9D4 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802A9E4
- .align 2, 0
-_0802A9CC: .4byte gStatuses3
-_0802A9D0: .4byte gBankAttacker
-_0802A9D4: .4byte gBattlescriptCurrInstr
-_0802A9D8:
- orrs r1, r3
- str r1, [r2]
- ldr r1, _0802A9E8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802A9E4:
- pop {r0}
- bx r0
- .align 2, 0
-_0802A9E8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkDC_setgrudge
-
- thumb_func_start atkDD_weightdamagecalculation
-atkDD_weightdamagecalculation: @ 802A9EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r5, 0
- ldr r2, _0802AA50 @ =gWeightDamage
- ldrh r0, [r2]
- ldr r1, _0802AA54 @ =0x0000ffff
- cmp r0, r1
- beq _0802AA64
- adds r6, r2, 0
- ldr r0, _0802AA58 @ =gBattleMons
- mov r8, r0
- adds r7, r1, 0
- adds r4, r6, 0
-_0802AA08:
- ldr r0, _0802AA5C @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- add r0, r8
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetPokedexHeightWeight
- ldrh r1, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r1, r0
- bhi _0802AA36
- adds r4, 0x4
- adds r5, 0x2
- ldrh r0, [r4]
- cmp r0, r7
- bne _0802AA08
-_0802AA36:
- lsls r0, r5, 1
- adds r0, r6
- ldrh r1, [r0]
- ldr r0, _0802AA54 @ =0x0000ffff
- cmp r1, r0
- beq _0802AA64
- ldr r0, _0802AA60 @ =gDynamicBasePower
- adds r1, r5, 0x1
- lsls r1, 1
- adds r1, r6
- ldrh r1, [r1]
- strh r1, [r0]
- b _0802AA6A
- .align 2, 0
-_0802AA50: .4byte gWeightDamage
-_0802AA54: .4byte 0x0000ffff
-_0802AA58: .4byte gBattleMons
-_0802AA5C: .4byte gBankTarget
-_0802AA60: .4byte gDynamicBasePower
-_0802AA64:
- ldr r1, _0802AA7C @ =gDynamicBasePower
- movs r0, 0x78
- strh r0, [r1]
-_0802AA6A:
- ldr r1, _0802AA80 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802AA7C: .4byte gDynamicBasePower
-_0802AA80: .4byte gBattlescriptCurrInstr
- thumb_func_end atkDD_weightdamagecalculation
-
- thumb_func_start atkDE_asistattackselect
-atkDE_asistattackselect: @ 802AA84
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r0, 0
- mov r10, r0
- ldr r0, _0802AB9C @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankIdentity
- movs r1, 0x1
- ands r1, r0
- ldr r0, _0802ABA0 @ =gPlayerParty
- str r0, [sp]
- cmp r1, 0
- beq _0802AAAC
- ldr r1, _0802ABA4 @ =gEnemyParty
- str r1, [sp]
-_0802AAAC:
- movs r2, 0
-_0802AAAE:
- ldr r1, _0802ABA8 @ =gBattlePartyID
- ldr r0, _0802AB9C @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- adds r1, r2, 0x1
- str r1, [sp, 0x4]
- ldrh r0, [r0]
- cmp r2, r0
- beq _0802AB54
- movs r0, 0x64
- adds r6, r2, 0
- muls r6, r0
- ldr r0, [sp]
- adds r4, r0, r6
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- cmp r0, 0
- beq _0802AB54
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _0802AB54
- movs r5, 0
- ldr r1, _0802ABAC @ =0x0000ffff
- mov r8, r1
- mov r9, r6
- mov r1, r10
- lsls r0, r1, 1
- ldr r1, _0802ABB0 @ =0x02016024
- adds r6, r0, r1
-_0802AAF8:
- movs r7, 0
- adds r1, r5, 0
- adds r1, 0xD
- ldr r0, [sp]
- add r0, r9
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl sub_802838C
- lsls r0, 24
- adds r1, r5, 0x1
- cmp r0, 0
- bne _0802AB4E
- ldr r0, _0802ABB4 @ =gUnknown_081FACFE
- ldrh r2, [r0]
- adds r3, r0, 0
- cmp r2, r8
- beq _0802AB42
- cmp r4, r2
- beq _0802AB38
- ldr r5, _0802ABAC @ =0x0000ffff
- adds r2, r3, 0
-_0802AB2A:
- adds r2, 0x2
- adds r7, 0x1
- ldrh r0, [r2]
- cmp r0, r5
- beq _0802AB42
- cmp r4, r0
- bne _0802AB2A
-_0802AB38:
- lsls r0, r7, 1
- adds r0, r3
- ldrh r0, [r0]
- cmp r0, r8
- bne _0802AB4E
-_0802AB42:
- cmp r4, 0
- beq _0802AB4E
- strh r4, [r6]
- adds r6, 0x2
- movs r0, 0x1
- add r10, r0
-_0802AB4E:
- adds r5, r1, 0
- cmp r5, 0x3
- ble _0802AAF8
-_0802AB54:
- ldr r2, [sp, 0x4]
- cmp r2, 0x5
- ble _0802AAAE
- mov r1, r10
- cmp r1, 0
- beq _0802ABCC
- ldr r2, _0802ABB8 @ =gHitMarker
- ldr r0, [r2]
- ldr r1, _0802ABBC @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
- ldr r4, _0802ABC0 @ =gUnknown_02024BEA
- bl Random
- movs r1, 0xFF
- ands r1, r0
- mov r0, r10
- muls r0, r1
- asrs r0, 8
- lsls r0, 1
- ldr r1, _0802ABB0 @ =0x02016024
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r4]
- ldrh r0, [r4]
- movs r1, 0
- bl sub_801B5C0
- ldr r1, _0802ABC4 @ =gBankTarget
- strb r0, [r1]
- ldr r1, _0802ABC8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802ABE6
- .align 2, 0
-_0802AB9C: .4byte gBankAttacker
-_0802ABA0: .4byte gPlayerParty
-_0802ABA4: .4byte gEnemyParty
-_0802ABA8: .4byte gBattlePartyID
-_0802ABAC: .4byte 0x0000ffff
-_0802ABB0: .4byte 0x02016024
-_0802ABB4: .4byte gUnknown_081FACFE
-_0802ABB8: .4byte gHitMarker
-_0802ABBC: .4byte 0xfffffbff
-_0802ABC0: .4byte gUnknown_02024BEA
-_0802ABC4: .4byte gBankTarget
-_0802ABC8: .4byte gBattlescriptCurrInstr
-_0802ABCC:
- ldr r3, _0802ABF8 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802ABE6:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802ABF8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkDE_asistattackselect
-
- thumb_func_start atkDF_setmagiccoat
-atkDF_setmagiccoat: @ 802ABFC
- push {lr}
- ldr r1, _0802AC44 @ =gBankTarget
- ldr r3, _0802AC48 @ =gBankAttacker
- ldrb r0, [r3]
- strb r0, [r1]
- ldr r2, _0802AC4C @ =gSpecialStatuses
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
- ldr r0, _0802AC50 @ =gCurrentMoveTurn
- ldrb r1, [r0]
- ldr r0, _0802AC54 @ =gNoOfAllBanks
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bne _0802AC5C
- ldr r3, _0802AC58 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802AC74
- .align 2, 0
-_0802AC44: .4byte gBankTarget
-_0802AC48: .4byte gBankAttacker
-_0802AC4C: .4byte gSpecialStatuses
-_0802AC50: .4byte gCurrentMoveTurn
-_0802AC54: .4byte gNoOfAllBanks
-_0802AC58: .4byte gBattlescriptCurrInstr
-_0802AC5C:
- ldr r0, _0802AC78 @ =gProtectStructs
- ldrb r1, [r3]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- movs r2, 0x10
- orrs r0, r2
- strb r0, [r1]
- ldr r1, _0802AC7C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802AC74:
- pop {r0}
- bx r0
- .align 2, 0
-_0802AC78: .4byte gProtectStructs
-_0802AC7C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkDF_setmagiccoat
-
- thumb_func_start atkE0_setstealstatchange
-atkE0_setstealstatchange: @ 802AC80
- push {lr}
- ldr r2, _0802ACC4 @ =gSpecialStatuses
- ldr r3, _0802ACC8 @ =gBankAttacker
- ldrb r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x20
- orrs r1, r2
- strb r1, [r0]
- ldr r0, _0802ACCC @ =gCurrentMoveTurn
- ldrb r1, [r0]
- ldr r0, _0802ACD0 @ =gNoOfAllBanks
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r1, r0
- bne _0802ACD8
- ldr r3, _0802ACD4 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802ACEE
- .align 2, 0
-_0802ACC4: .4byte gSpecialStatuses
-_0802ACC8: .4byte gBankAttacker
-_0802ACCC: .4byte gCurrentMoveTurn
-_0802ACD0: .4byte gNoOfAllBanks
-_0802ACD4: .4byte gBattlescriptCurrInstr
-_0802ACD8:
- ldr r0, _0802ACF4 @ =gProtectStructs
- ldrb r1, [r3]
- lsls r1, 4
- adds r1, r0
- ldrb r0, [r1]
- orrs r0, r2
- strb r0, [r1]
- ldr r1, _0802ACF8 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802ACEE:
- pop {r0}
- bx r0
- .align 2, 0
-_0802ACF4: .4byte gProtectStructs
-_0802ACF8: .4byte gBattlescriptCurrInstr
- thumb_func_end atkE0_setstealstatchange
-
- thumb_func_start atkE1_802CBE4
-atkE1_802CBE4: @ 802ACFC
- push {r4-r6,lr}
- ldr r4, _0802ADA0 @ =0x02000000
- ldr r1, _0802ADA4 @ =0x000160dd
- adds r0, r4, r1
- ldrb r0, [r0]
- subs r1, 0xDA
- adds r4, r1
- strb r0, [r4]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, _0802ADA8 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r2]
- movs r0, 0x9
- strb r0, [r2, 0x1]
- ldr r3, _0802ADAC @ =gBattleMons
- ldrb r1, [r4]
- movs r0, 0x58
- muls r0, r1
- adds r0, r3
- adds r0, 0x20
- ldrb r0, [r0]
- strb r0, [r2, 0x2]
- movs r0, 0xFF
- strb r0, [r2, 0x3]
- ldr r2, _0802ADB0 @ =gBankTarget
- ldr r1, _0802ADB4 @ =gNoOfAllBanks
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bcs _0802AD84
- adds r4, r2, 0
- ldr r6, _0802ADB8 @ =gBitTable
-_0802AD44:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, r5
- beq _0802AD66
- ldr r0, _0802ADBC @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- ands r1, r0
- ldr r2, _0802ADB4 @ =gNoOfAllBanks
- cmp r1, 0
- beq _0802AD7A
-_0802AD66:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r1, _0802ADB4 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- adds r2, r1, 0
- ldrb r1, [r2]
- cmp r0, r1
- bcc _0802AD44
-_0802AD7A:
- ldr r0, _0802ADB0 @ =gBankTarget
- ldrb r0, [r0]
- ldrb r2, [r2]
- cmp r0, r2
- bcc _0802ADC4
-_0802AD84:
- ldr r3, _0802ADC0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802ADCC
- .align 2, 0
-_0802ADA0: .4byte 0x02000000
-_0802ADA4: .4byte 0x000160dd
-_0802ADA8: .4byte gBattleTextBuff1
-_0802ADAC: .4byte gBattleMons
-_0802ADB0: .4byte gBankTarget
-_0802ADB4: .4byte gNoOfAllBanks
-_0802ADB8: .4byte gBitTable
-_0802ADBC: .4byte gAbsentBankFlags
-_0802ADC0: .4byte gBattlescriptCurrInstr
-_0802ADC4:
- ldr r1, _0802ADD4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802ADCC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802ADD4: .4byte gBattlescriptCurrInstr
- thumb_func_end atkE1_802CBE4
-
- thumb_func_start sub_802ADD8
-sub_802ADD8: @ 802ADD8
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r6, _0802AE44 @ =gBattlescriptCurrInstr
- ldr r0, [r6]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r5, _0802AE48 @ =gActiveBank
- strb r0, [r5]
- ldr r4, _0802AE4C @ =gBattleMons
- ldrb r0, [r5]
- movs r1, 0x58
- mov r12, r1
- mov r1, r12
- muls r1, r0
- adds r0, r1, r4
- adds r0, 0x20
- ldrb r0, [r0]
- cmp r0, 0x1E
- bne _0802AE34
- adds r4, 0x4C
- adds r1, r4
- movs r0, 0
- str r0, [r1]
- ldr r2, _0802AE50 @ =gBitTable
- ldr r1, _0802AE54 @ =0x02000000
- ldrb r3, [r5]
- ldr r7, _0802AE58 @ =0x00016064
- adds r0, r3, r7
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0]
- mov r0, r12
- muls r0, r3
- adds r0, r4
- str r0, [sp]
- movs r0, 0
- movs r1, 0x28
- movs r3, 0x4
- bl EmitSetAttributes
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
-_0802AE34:
- ldr r0, [r6]
- adds r0, 0x2
- str r0, [r6]
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802AE44: .4byte gBattlescriptCurrInstr
-_0802AE48: .4byte gActiveBank
-_0802AE4C: .4byte gBattleMons
-_0802AE50: .4byte gBitTable
-_0802AE54: .4byte 0x02000000
-_0802AE58: .4byte 0x00016064
- thumb_func_end sub_802ADD8
-
- thumb_func_start atkE3_jumpiffainted
-atkE3_jumpiffainted: @ 802AE5C
- push {r4,lr}
- ldr r4, _0802AE98 @ =gBattlescriptCurrInstr
- ldr r0, [r4]
- ldrb r0, [r0, 0x1]
- bl sub_8015150
- ldr r1, _0802AE9C @ =gActiveBank
- strb r0, [r1]
- ldr r2, _0802AEA0 @ =gBattleMons
- ldrb r1, [r1]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0, 0x28]
- cmp r0, 0
- bne _0802AEA4
- ldr r2, [r4]
- ldrb r1, [r2, 0x2]
- ldrb r0, [r2, 0x3]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x5]
- lsls r0, 24
- orrs r1, r0
- str r1, [r4]
- b _0802AEAA
- .align 2, 0
-_0802AE98: .4byte gBattlescriptCurrInstr
-_0802AE9C: .4byte gActiveBank
-_0802AEA0: .4byte gBattleMons
-_0802AEA4:
- ldr r0, [r4]
- adds r0, 0x6
- str r0, [r4]
-_0802AEAA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end atkE3_jumpiffainted
-
- thumb_func_start sub_802AEB0
-sub_802AEB0: @ 802AEB0
- push {lr}
- ldr r0, _0802AEC4 @ =gBattleTerrain
- ldrb r0, [r0]
- cmp r0, 0x7
- bhi _0802AF4C
- lsls r0, 2
- ldr r1, _0802AEC8 @ =_0802AECC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802AEC4: .4byte gBattleTerrain
-_0802AEC8: .4byte _0802AECC
- .align 2, 0
-_0802AECC:
- .4byte _0802AEEC
- .4byte _0802AEF8
- .4byte _0802AF04
- .4byte _0802AF10
- .4byte _0802AF1C
- .4byte _0802AF28
- .4byte _0802AF34
- .4byte _0802AF40
-_0802AEEC:
- ldr r1, _0802AEF4 @ =gBattleCommunication
- movs r0, 0x2
- b _0802AF50
- .align 2, 0
-_0802AEF4: .4byte gBattleCommunication
-_0802AEF8:
- ldr r1, _0802AF00 @ =gBattleCommunication
- movs r0, 0x1
- b _0802AF50
- .align 2, 0
-_0802AF00: .4byte gBattleCommunication
-_0802AF04:
- ldr r1, _0802AF0C @ =gBattleCommunication
- movs r0, 0x1B
- b _0802AF50
- .align 2, 0
-_0802AF0C: .4byte gBattleCommunication
-_0802AF10:
- ldr r1, _0802AF18 @ =gBattleCommunication
- movs r0, 0x17
- b _0802AF50
- .align 2, 0
-_0802AF18: .4byte gBattleCommunication
-_0802AF1C:
- ldr r1, _0802AF24 @ =gBattleCommunication
- movs r0, 0x16
- b _0802AF50
- .align 2, 0
-_0802AF24: .4byte gBattleCommunication
-_0802AF28:
- ldr r1, _0802AF30 @ =gBattleCommunication
- movs r0, 0x18
- b _0802AF50
- .align 2, 0
-_0802AF30: .4byte gBattleCommunication
-_0802AF34:
- ldr r1, _0802AF3C @ =gBattleCommunication
- movs r0, 0x7
- b _0802AF50
- .align 2, 0
-_0802AF3C: .4byte gBattleCommunication
-_0802AF40:
- ldr r1, _0802AF48 @ =gBattleCommunication
- movs r0, 0x8
- b _0802AF50
- .align 2, 0
-_0802AF48: .4byte gBattleCommunication
-_0802AF4C:
- ldr r1, _0802AF60 @ =gBattleCommunication
- movs r0, 0x5
-_0802AF50:
- strb r0, [r1, 0x3]
- ldr r1, _0802AF64 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0802AF60: .4byte gBattleCommunication
-_0802AF64: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802AEB0
-
- thumb_func_start sub_802AF68
-sub_802AF68: @ 802AF68
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r7, 0
- ldr r0, _0802AFB4 @ =gBaseStats
- mov r9, r0
- ldr r1, _0802AFB8 @ =gPickupItems
- mov r8, r1
-_0802AF7A:
- movs r0, 0x64
- adds r4, r7, 0
- muls r4, r0
- ldr r0, _0802AFBC @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r4, 0
- movs r1, 0x2E
- bl GetMonData
- cmp r0, 0
- beq _0802AFC0
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x17]
- b _0802AFCA
- .align 2, 0
-_0802AFB4: .4byte gBaseStats
-_0802AFB8: .4byte gPickupItems
-_0802AFBC: .4byte gPlayerParty
-_0802AFC0:
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x16]
-_0802AFCA:
- adds r4, r7, 0x1
- cmp r0, 0x35
- bne _0802B032
- cmp r5, 0
- beq _0802B032
- movs r0, 0xCE
- lsls r0, 1
- cmp r5, r0
- beq _0802B032
- cmp r6, 0
- bne _0802B032
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- cmp r0, 0
- bne _0802B032
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- bl __umodsi3
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- mov r1, r8
- ldrh r0, [r1, 0x2]
- cmp r0, r3
- bgt _0802B020
- adds r1, 0x2
-_0802B012:
- adds r1, 0x4
- adds r2, 0x2
- cmp r2, 0x11
- bgt _0802B020
- ldrh r0, [r1]
- cmp r0, r3
- ble _0802B012
-_0802B020:
- movs r0, 0x64
- muls r0, r7
- ldr r1, _0802B04C @ =gPlayerParty
- adds r0, r1
- lsls r2, 1
- add r2, r8
- movs r1, 0xC
- bl SetMonData
-_0802B032:
- adds r7, r4, 0
- cmp r7, 0x5
- ble _0802AF7A
- ldr r1, _0802B050 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B04C: .4byte gPlayerParty
-_0802B050: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802AF68
-
- thumb_func_start atkE6_castform_transform
-atkE6_castform_transform: @ 802B054
- push {r4,lr}
- ldr r4, _0802B0A8 @ =gActiveBank
- ldr r3, _0802B0AC @ =0x02000000
- ldr r1, _0802B0B0 @ =0x00016003
- adds r0, r3, r1
- ldrb r0, [r0]
- strb r0, [r4]
- ldr r1, _0802B0B4 @ =gBattleMons
- ldrb r2, [r4]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 17
- ands r0, r1
- cmp r0, 0
- beq _0802B086
- ldr r0, _0802B0B8 @ =0x0001609b
- adds r2, r3, r0
- ldrb r1, [r2]
- movs r0, 0x80
- orrs r0, r1
- strb r0, [r2]
-_0802B086:
- ldr r1, _0802B0B8 @ =0x0001609b
- adds r0, r3, r1
- ldrb r2, [r0]
- movs r0, 0
- movs r1, 0
- bl EmitBattleAnimation
- ldrb r0, [r4]
- bl MarkBufferBankForExecution
- ldr r1, _0802B0BC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B0A8: .4byte gActiveBank
-_0802B0AC: .4byte 0x02000000
-_0802B0B0: .4byte 0x00016003
-_0802B0B4: .4byte gBattleMons
-_0802B0B8: .4byte 0x0001609b
-_0802B0BC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkE6_castform_transform
-
- thumb_func_start atkE7_castform_switch
-atkE7_castform_switch: @ 802B0C0
- push {r4,r5,lr}
- ldr r1, _0802B0F4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r5, _0802B0F8 @ =0x02000000
- ldr r1, _0802B0FC @ =0x00016003
- adds r0, r5, r1
- ldrb r0, [r0]
- bl castform_switch
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _0802B0EC
- ldr r0, _0802B100 @ =gUnknown_081D977D
- bl b_push_move_exec
- subs r1, r4, 0x1
- ldr r2, _0802B104 @ =0x0001609b
- adds r0, r5, r2
- strb r1, [r0]
-_0802B0EC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B0F4: .4byte gBattlescriptCurrInstr
-_0802B0F8: .4byte 0x02000000
-_0802B0FC: .4byte 0x00016003
-_0802B100: .4byte gUnknown_081D977D
-_0802B104: .4byte 0x0001609b
- thumb_func_end atkE7_castform_switch
-
- thumb_func_start atkE8_settypebasedhalvers
-atkE8_settypebasedhalvers: @ 802B108
- push {r4,lr}
- movs r4, 0
- ldr r2, _0802B144 @ =gBattleMoves
- ldr r0, _0802B148 @ =gCurrentMove
- ldrh r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0xC9
- bne _0802B158
- ldr r1, _0802B14C @ =gStatuses3
- ldr r0, _0802B150 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 2
- adds r2, r0, r1
- ldr r1, [r2]
- movs r3, 0x80
- lsls r3, 9
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- bne _0802B17C
- orrs r1, r3
- str r1, [r2]
- ldr r0, _0802B154 @ =gBattleCommunication
- strb r4, [r0, 0x5]
- b _0802B180
- .align 2, 0
-_0802B144: .4byte gBattleMoves
-_0802B148: .4byte gCurrentMove
-_0802B14C: .4byte gStatuses3
-_0802B150: .4byte gBankAttacker
-_0802B154: .4byte gBattleCommunication
-_0802B158:
- ldr r1, _0802B18C @ =gStatuses3
- ldr r0, _0802B190 @ =gBankAttacker
- ldrb r0, [r0]
- lsls r0, 2
- adds r2, r0, r1
- ldr r1, [r2]
- movs r3, 0x80
- lsls r3, 10
- adds r0, r1, 0
- ands r0, r3
- cmp r0, 0
- bne _0802B17C
- orrs r1, r3
- str r1, [r2]
- ldr r1, _0802B194 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- movs r4, 0x1
-_0802B17C:
- cmp r4, 0
- beq _0802B19C
-_0802B180:
- ldr r1, _0802B198 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802B1B6
- .align 2, 0
-_0802B18C: .4byte gStatuses3
-_0802B190: .4byte gBankAttacker
-_0802B194: .4byte gBattleCommunication
-_0802B198: .4byte gBattlescriptCurrInstr
-_0802B19C:
- ldr r3, _0802B1BC @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802B1B6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B1BC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkE8_settypebasedhalvers
-
- thumb_func_start sub_802B1C0
-sub_802B1C0: @ 802B1C0
- push {lr}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0xD
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0802B276
- str r0, [sp]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x4D
- movs r3, 0
- bl AbilityBattleEffects
- lsls r0, 24
- cmp r0, 0
- bne _0802B276
- ldr r3, _0802B218 @ =gBattleWeather
- ldrb r0, [r3]
- ldr r2, _0802B21C @ =0x02000000
- cmp r0, 0
- beq _0802B202
- ldr r0, _0802B220 @ =0x0001601f
- adds r1, r2, r0
- movs r0, 0x2
- strb r0, [r1]
-_0802B202:
- ldrh r1, [r3]
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- beq _0802B228
- ldr r0, _0802B224 @ =0x0001601c
- adds r1, r2, r0
- movs r0, 0x8B
- strb r0, [r1]
- b _0802B276
- .align 2, 0
-_0802B218: .4byte gBattleWeather
-_0802B21C: .4byte 0x02000000
-_0802B220: .4byte 0x0001601f
-_0802B224: .4byte 0x0001601c
-_0802B228:
- movs r0, 0x18
- ands r0, r1
- cmp r0, 0
- beq _0802B240
- ldr r0, _0802B23C @ =0x0001601c
- adds r1, r2, r0
- movs r0, 0x85
- strb r0, [r1]
- b _0802B276
- .align 2, 0
-_0802B23C: .4byte 0x0001601c
-_0802B240:
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- beq _0802B258
- ldr r0, _0802B254 @ =0x0001601c
- adds r1, r2, r0
- movs r0, 0x8A
- strb r0, [r1]
- b _0802B276
- .align 2, 0
-_0802B254: .4byte 0x0001601c
-_0802B258:
- movs r3, 0x80
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0802B270
- ldr r0, _0802B26C @ =0x0001601c
- adds r1, r2, r0
- movs r0, 0x8F
- strb r0, [r1]
- b _0802B276
- .align 2, 0
-_0802B26C: .4byte 0x0001601c
-_0802B270:
- ldr r1, _0802B284 @ =0x0001601c
- adds r0, r2, r1
- strb r3, [r0]
-_0802B276:
- ldr r1, _0802B288 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0802B284: .4byte 0x0001601c
-_0802B288: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802B1C0
-
- thumb_func_start atkEA_recycleitem
-atkEA_recycleitem: @ 802B28C
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r7, _0802B2F0 @ =gActiveBank
- ldr r0, _0802B2F4 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r7]
- ldrb r2, [r7]
- lsls r1, r2, 1
- ldr r0, _0802B2F8 @ =0x020160cc
- adds r6, r1, r0
- ldrh r5, [r6]
- cmp r5, 0
- beq _0802B308
- ldr r4, _0802B2FC @ =gBattleMons
- movs r3, 0x58
- adds r0, r2, 0
- muls r0, r3
- adds r0, r4
- ldrh r0, [r0, 0x2E]
- cmp r0, 0
- bne _0802B308
- ldr r1, _0802B300 @ =gLastUsedItem
- strh r5, [r1]
- strh r0, [r6]
- ldrb r0, [r7]
- muls r0, r3
- adds r0, r4
- ldrh r1, [r1]
- strh r1, [r0, 0x2E]
- ldrb r0, [r7]
- muls r0, r3
- adds r1, r4, 0
- adds r1, 0x2E
- adds r0, r1
- str r0, [sp]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl EmitSetAttributes
- ldrb r0, [r7]
- bl MarkBufferBankForExecution
- ldr r1, _0802B304 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802B322
- .align 2, 0
-_0802B2F0: .4byte gActiveBank
-_0802B2F4: .4byte gBankAttacker
-_0802B2F8: .4byte 0x020160cc
-_0802B2FC: .4byte gBattleMons
-_0802B300: .4byte gLastUsedItem
-_0802B304: .4byte gBattlescriptCurrInstr
-_0802B308:
- ldr r3, _0802B32C @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802B322:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B32C: .4byte gBattlescriptCurrInstr
- thumb_func_end atkEA_recycleitem
-
- thumb_func_start atkEB_settypetoterrain
-atkEB_settypetoterrain: @ 802B330
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _0802B3A0 @ =gBattleMons
- mov r8, r0
- ldr r7, _0802B3A4 @ =gBankAttacker
- ldrb r0, [r7]
- movs r6, 0x58
- muls r0, r6
- mov r1, r8
- adds r3, r0, r1
- movs r0, 0x21
- adds r0, r3
- mov r12, r0
- ldr r5, _0802B3A8 @ =gTerrainToType
- ldr r4, _0802B3AC @ =gBattleTerrain
- ldrb r0, [r4]
- adds r0, r5
- ldrb r2, [r0]
- mov r1, r12
- ldrb r0, [r1]
- adds r1, r2, 0
- cmp r0, r1
- beq _0802B3B8
- adds r0, r3, 0
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, r1
- beq _0802B3B8
- mov r0, r12
- strb r2, [r0]
- ldrb r0, [r7]
- adds r1, r0, 0
- muls r1, r6
- add r1, r8
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- adds r1, 0x22
- strb r0, [r1]
- ldr r1, _0802B3B0 @ =gBattleTextBuff1
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x3
- strb r0, [r1, 0x1]
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1, 0x2]
- movs r0, 0xFF
- strb r0, [r1, 0x3]
- ldr r1, _0802B3B4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802B3D2
- .align 2, 0
-_0802B3A0: .4byte gBattleMons
-_0802B3A4: .4byte gBankAttacker
-_0802B3A8: .4byte gTerrainToType
-_0802B3AC: .4byte gBattleTerrain
-_0802B3B0: .4byte gBattleTextBuff1
-_0802B3B4: .4byte gBattlescriptCurrInstr
-_0802B3B8:
- ldr r3, _0802B3DC @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802B3D2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B3DC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkEB_settypetoterrain
-
- thumb_func_start sub_802B3E0
-sub_802B3E0: @ 802B3E0
- push {r4,r5,lr}
- ldr r5, _0802B45C @ =gBankAttacker
- ldrb r0, [r5]
- bl GetBankIdentity
- movs r1, 0x2
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl GetBankByPlayerAI
- ldr r4, _0802B460 @ =gActiveBank
- strb r0, [r4]
- ldr r0, _0802B464 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802B490
- ldr r0, _0802B468 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _0802B46C @ =gBitTable
- ldrb r3, [r4]
- lsls r0, r3, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0802B490
- ldr r0, _0802B470 @ =gActionForBanks
- adds r0, r3, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802B490
- ldr r1, _0802B474 @ =gChosenMovesByBanks
- lsls r0, r3, 1
- adds r0, r1
- ldrh r2, [r0]
- cmp r2, 0xE4
- bne _0802B490
- ldr r0, _0802B478 @ =gUnknown_02024A76
- adds r0, r3, r0
- movs r1, 0xB
- strb r1, [r0]
- ldr r0, _0802B47C @ =gCurrentMove
- strh r2, [r0]
- ldr r1, _0802B480 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- ldr r1, _0802B484 @ =0x02000000
- ldr r0, _0802B488 @ =0x00016002
- adds r2, r1, r0
- movs r0, 0x1
- strb r0, [r2]
- ldrb r0, [r5]
- ldr r2, _0802B48C @ =0x000160a7
- adds r1, r2
- strb r0, [r1]
- ldrb r0, [r4]
- strb r0, [r5]
- b _0802B4AA
- .align 2, 0
-_0802B45C: .4byte gBankAttacker
-_0802B460: .4byte gActiveBank
-_0802B464: .4byte gBattleTypeFlags
-_0802B468: .4byte gAbsentBankFlags
-_0802B46C: .4byte gBitTable
-_0802B470: .4byte gActionForBanks
-_0802B474: .4byte gChosenMovesByBanks
-_0802B478: .4byte gUnknown_02024A76
-_0802B47C: .4byte gCurrentMove
-_0802B480: .4byte gBattlescriptCurrInstr
-_0802B484: .4byte 0x02000000
-_0802B488: .4byte 0x00016002
-_0802B48C: .4byte 0x000160a7
-_0802B490:
- ldr r3, _0802B4B0 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802B4AA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B4B0: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802B3E0
-
- thumb_func_start sub_802B4B4
-sub_802B4B4: @ 802B4B4
- push {r4,r5,lr}
- ldr r1, _0802B4DC @ =gEffectBank
- ldr r3, _0802B4E0 @ =gBankAttacker
- ldrb r0, [r3]
- strb r0, [r1]
- ldr r2, _0802B4E4 @ =gBankTarget
- lsls r0, 24
- lsrs r0, 24
- adds r4, r1, 0
- ldrb r1, [r2]
- cmp r0, r1
- bne _0802B4F0
- ldr r0, _0802B4E8 @ =0x02000000
- ldr r5, _0802B4EC @ =0x00016003
- adds r1, r0, r5
- ldrb r1, [r1]
- strb r1, [r2]
- strb r1, [r3]
- b _0802B4FA
- .align 2, 0
-_0802B4DC: .4byte gEffectBank
-_0802B4E0: .4byte gBankAttacker
-_0802B4E4: .4byte gBankTarget
-_0802B4E8: .4byte 0x02000000
-_0802B4EC: .4byte 0x00016003
-_0802B4F0:
- ldr r0, _0802B510 @ =0x02000000
- ldr r3, _0802B514 @ =0x00016003
- adds r1, r0, r3
- ldrb r1, [r1]
- strb r1, [r2]
-_0802B4FA:
- ldrb r1, [r4]
- ldr r5, _0802B514 @ =0x00016003
- adds r0, r5
- strb r1, [r0]
- ldr r1, _0802B518 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B510: .4byte 0x02000000
-_0802B514: .4byte 0x00016003
-_0802B518: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802B4B4
-
- thumb_func_start sub_802B51C
-sub_802B51C: @ 802B51C
- push {r4,lr}
- ldr r0, _0802B56C @ =gBankAttacker
- ldrb r0, [r0]
- bl GetBankSide
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0802B570 @ =gSideTimer
- lsls r3, r0, 1
- adds r0, r3, r0
- lsls r0, 2
- adds r4, r0, r1
- ldrb r0, [r4]
- cmp r0, 0
- bne _0802B544
- ldrb r2, [r4, 0x1]
- cmp r2, 0
- beq _0802B58C
-_0802B544:
- ldr r2, _0802B574 @ =gSideAffecting
- adds r2, r3, r2
- ldrh r1, [r2]
- ldr r0, _0802B578 @ =0x0000fffe
- ands r0, r1
- movs r3, 0
- ldr r1, _0802B57C @ =0x0000fffd
- ands r0, r1
- strh r0, [r2]
- strb r3, [r4]
- strb r3, [r4, 0x1]
- ldr r0, _0802B580 @ =0x02000000
- ldr r2, _0802B584 @ =0x00016002
- adds r1, r0, r2
- movs r2, 0x1
- strb r2, [r1]
- ldr r3, _0802B588 @ =0x000160a1
- adds r0, r3
- b _0802B598
- .align 2, 0
-_0802B56C: .4byte gBankAttacker
-_0802B570: .4byte gSideTimer
-_0802B574: .4byte gSideAffecting
-_0802B578: .4byte 0x0000fffe
-_0802B57C: .4byte 0x0000fffd
-_0802B580: .4byte 0x02000000
-_0802B584: .4byte 0x00016002
-_0802B588: .4byte 0x000160a1
-_0802B58C:
- ldr r0, _0802B5A8 @ =0x02000000
- ldr r3, _0802B5AC @ =0x00016002
- adds r1, r0, r3
- strb r2, [r1]
- ldr r1, _0802B5B0 @ =0x000160a1
- adds r0, r1
-_0802B598:
- strb r2, [r0]
- ldr r1, _0802B5B4 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B5A8: .4byte 0x02000000
-_0802B5AC: .4byte 0x00016002
-_0802B5B0: .4byte 0x000160a1
-_0802B5B4: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802B51C
-
- thumb_func_start sub_802B5B8
-sub_802B5B8: @ 802B5B8
- push {r4-r7,lr}
- movs r4, 0
- ldr r0, _0802B5F8 @ =gBattleExecBuffer
- ldr r0, [r0]
- cmp r0, 0
- beq _0802B5C6
- b _0802B94E
-_0802B5C6:
- ldr r5, _0802B5FC @ =gActiveBank
- ldr r0, _0802B600 @ =gBankAttacker
- ldrb r0, [r0]
- strb r0, [r5]
- ldr r6, _0802B604 @ =gBankTarget
- movs r1, 0x1
- eors r0, r1
- strb r0, [r6]
- ldr r0, _0802B608 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0802B614
- movs r0, 0
- movs r1, 0x5
- bl dp01_build_cmdbuf_x0D_a
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r1, _0802B60C @ =gBattlescriptCurrInstr
- ldr r0, _0802B610 @ =gUnknown_081D9F35
- b _0802B94C
- .align 2, 0
-_0802B5F8: .4byte gBattleExecBuffer
-_0802B5FC: .4byte gActiveBank
-_0802B600: .4byte gBankAttacker
-_0802B604: .4byte gBankTarget
-_0802B608: .4byte gBattleTypeFlags
-_0802B60C: .4byte gBattlescriptCurrInstr
-_0802B610: .4byte gUnknown_081D9F35
-_0802B614:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _0802B63C
- movs r0, 0
- movs r1, 0x4
- bl dp01_build_cmdbuf_x0D_a
- ldrb r0, [r5]
- bl MarkBufferBankForExecution
- ldr r1, _0802B634 @ =gBattlescriptCurrInstr
- ldr r0, _0802B638 @ =gUnknown_081D9F00
- b _0802B94C
- .align 2, 0
-_0802B634: .4byte gBattlescriptCurrInstr
-_0802B638: .4byte gUnknown_081D9F00
-_0802B63C:
- ldr r0, _0802B660 @ =gLastUsedItem
- ldrh r0, [r0]
- cmp r0, 0x5
- bne _0802B66C
- ldr r0, _0802B664 @ =0x02000000
- ldr r1, _0802B668 @ =0x00016089
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 2
- adds r1, r0
- lsls r0, r1, 8
- subs r0, r1
- movs r1, 0x64
- bl __divsi3
- lsls r0, 24
- lsrs r5, r0, 24
- b _0802B684
- .align 2, 0
-_0802B660: .4byte gLastUsedItem
-_0802B664: .4byte 0x02000000
-_0802B668: .4byte 0x00016089
-_0802B66C:
- ldr r3, _0802B6A0 @ =gBaseStats
- ldr r2, _0802B6A4 @ =gBattleMons
- ldrb r1, [r6]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r3
- ldrb r5, [r0, 0x8]
-_0802B684:
- ldr r2, _0802B6A8 @ =gLastUsedItem
- ldrh r0, [r2]
- cmp r0, 0x5
- bhi _0802B68E
- b _0802B784
-_0802B68E:
- subs r0, 0x6
- cmp r0, 0x6
- bls _0802B696
- b _0802B78E
-_0802B696:
- lsls r0, 2
- ldr r1, _0802B6AC @ =_0802B6B0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802B6A0: .4byte gBaseStats
-_0802B6A4: .4byte gBattleMons
-_0802B6A8: .4byte gLastUsedItem
-_0802B6AC: .4byte _0802B6B0
- .align 2, 0
-_0802B6B0:
- .4byte _0802B6CC
- .4byte _0802B6FC
- .4byte _0802B70E
- .4byte _0802B73C
- .4byte _0802B76C
- .4byte _0802B72E
- .4byte _0802B72E
-_0802B6CC:
- ldr r2, _0802B6F4 @ =gBattleMons
- ldr r0, _0802B6F8 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r1, r0, 0
- adds r1, 0x21
- ldrb r1, [r1]
- cmp r1, 0xB
- beq _0802B760
- adds r0, 0x22
- ldrb r0, [r0]
- cmp r0, 0xB
- beq _0802B760
- cmp r1, 0x6
- beq _0802B760
- cmp r0, 0x6
- beq _0802B760
- b _0802B72E
- .align 2, 0
-_0802B6F4: .4byte gBattleMons
-_0802B6F8: .4byte gBankTarget
-_0802B6FC:
- bl sav1_map_get_light_level
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0xA
- cmp r0, 0x5
- bne _0802B78E
- movs r4, 0x23
- b _0802B78E
-_0802B70E:
- ldr r2, _0802B734 @ =gBattleMons
- ldr r0, _0802B738 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r0, 0x2A
- ldrb r1, [r0]
- cmp r1, 0x27
- bhi _0802B72E
- movs r0, 0x28
- subs r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bhi _0802B78E
-_0802B72E:
- movs r4, 0xA
- b _0802B78E
- .align 2, 0
-_0802B734: .4byte gBattleMons
-_0802B738: .4byte gBankTarget
-_0802B73C:
- ldr r2, _0802B764 @ =gBattleMons
- ldr r0, _0802B768 @ =gBankTarget
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetNationalPokedexFlag
- lsls r0, 24
- movs r4, 0xA
- cmp r0, 0
- beq _0802B78E
-_0802B760:
- movs r4, 0x1E
- b _0802B78E
- .align 2, 0
-_0802B764: .4byte gBattleMons
-_0802B768: .4byte gBankTarget
-_0802B76C:
- ldr r0, _0802B780 @ =gBattleResults
- ldrb r0, [r0, 0x13]
- adds r0, 0xA
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x28
- bls _0802B78E
- movs r4, 0x28
- b _0802B78E
- .align 2, 0
-_0802B780: .4byte gBattleResults
-_0802B784:
- ldr r1, _0802B7F4 @ =gBallCatchBonuses
- ldrh r0, [r2]
- subs r0, 0x2
- adds r0, r1
- ldrb r4, [r0]
-_0802B78E:
- adds r0, r5, 0
- muls r0, r4
- movs r1, 0xA
- bl __divsi3
- ldr r5, _0802B7F8 @ =gBattleMons
- ldr r1, _0802B7FC @ =gBankTarget
- ldrb r1, [r1]
- movs r7, 0x58
- adds r4, r1, 0
- muls r4, r7
- adds r3, r4, r5
- ldrh r2, [r3, 0x2C]
- lsls r1, r2, 1
- adds r1, r2
- ldrh r2, [r3, 0x28]
- lsls r2, 1
- subs r2, r1, r2
- muls r0, r2
- bl __divsi3
- adds r6, r0, 0
- adds r5, 0x4C
- adds r4, r5
- ldr r4, [r4]
- movs r0, 0x27
- ands r0, r4
- cmp r0, 0
- beq _0802B7CA
- lsls r6, 1
-_0802B7CA:
- ands r4, r7
- cmp r4, 0
- beq _0802B7DC
- lsls r0, r6, 4
- subs r0, r6
- movs r1, 0xA
- bl __udivsi3
- adds r6, r0, 0
-_0802B7DC:
- ldr r1, _0802B800 @ =gLastUsedItem
- ldrh r0, [r1]
- cmp r0, 0x5
- beq _0802B81C
- cmp r0, 0x1
- bne _0802B808
- ldr r0, _0802B804 @ =gBattleResults
- ldrb r1, [r0, 0x5]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r0, 0x5]
- b _0802B81C
- .align 2, 0
-_0802B7F4: .4byte gBallCatchBonuses
-_0802B7F8: .4byte gBattleMons
-_0802B7FC: .4byte gBankTarget
-_0802B800: .4byte gLastUsedItem
-_0802B804: .4byte gBattleResults
-_0802B808:
- ldr r0, _0802B860 @ =gBattleResults
- ldrh r1, [r1]
- adds r0, r1
- adds r1, r0, 0
- adds r1, 0x34
- ldrb r0, [r1]
- cmp r0, 0xFE
- bhi _0802B81C
- adds r0, 0x1
- strb r0, [r1]
-_0802B81C:
- cmp r6, 0xFE
- bls _0802B880
- movs r0, 0
- movs r1, 0x4
- bl dp01_build_cmdbuf_x0D_a
- ldr r0, _0802B864 @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- ldr r1, _0802B868 @ =gBattlescriptCurrInstr
- ldr r0, _0802B86C @ =gUnknown_081D9EC2
- str r0, [r1]
- ldr r1, _0802B870 @ =gBattlePartyID
- ldr r0, _0802B874 @ =gBankTarget
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802B878 @ =gEnemyParty
- adds r0, r1
- ldr r2, _0802B87C @ =gLastUsedItem
- movs r1, 0x26
- bl SetMonData
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- beq _0802B90E
- b _0802B938
- .align 2, 0
-_0802B860: .4byte gBattleResults
-_0802B864: .4byte gActiveBank
-_0802B868: .4byte gBattlescriptCurrInstr
-_0802B86C: .4byte gUnknown_081D9EC2
-_0802B870: .4byte gBattlePartyID
-_0802B874: .4byte gBankTarget
-_0802B878: .4byte gEnemyParty
-_0802B87C: .4byte gLastUsedItem
-_0802B880:
- movs r0, 0xFF
- lsls r0, 16
- adds r1, r6, 0
- bl __udivsi3
- bl Sqrt
- lsls r0, 16
- lsrs r0, 16
- bl Sqrt
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _0802B8A8 @ =0x000ffff0
- adds r1, r6, 0
- bl __udivsi3
- adds r6, r0, 0
- movs r4, 0
- b _0802B8B2
- .align 2, 0
-_0802B8A8: .4byte 0x000ffff0
-_0802B8AC:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0802B8B2:
- cmp r4, 0x3
- bhi _0802B8C2
- bl Random
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bcc _0802B8AC
-_0802B8C2:
- ldr r5, _0802B918 @ =gLastUsedItem
- ldrh r0, [r5]
- cmp r0, 0x1
- bne _0802B8CC
- movs r4, 0x4
-_0802B8CC:
- movs r0, 0
- adds r1, r4, 0
- bl dp01_build_cmdbuf_x0D_a
- ldr r0, _0802B91C @ =gActiveBank
- ldrb r0, [r0]
- bl MarkBufferBankForExecution
- cmp r4, 0x4
- bne _0802B944
- ldr r1, _0802B920 @ =gBattlescriptCurrInstr
- ldr r0, _0802B924 @ =gUnknown_081D9EC2
- str r0, [r1]
- ldr r1, _0802B928 @ =gBattlePartyID
- ldr r0, _0802B92C @ =gBankTarget
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802B930 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x26
- adds r2, r5, 0
- bl SetMonData
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bne _0802B938
-_0802B90E:
- ldr r1, _0802B934 @ =gBattleCommunication
- movs r0, 0
- strb r0, [r1, 0x5]
- b _0802B94E
- .align 2, 0
-_0802B918: .4byte gLastUsedItem
-_0802B91C: .4byte gActiveBank
-_0802B920: .4byte gBattlescriptCurrInstr
-_0802B924: .4byte gUnknown_081D9EC2
-_0802B928: .4byte gBattlePartyID
-_0802B92C: .4byte gBankTarget
-_0802B930: .4byte gEnemyParty
-_0802B934: .4byte gBattleCommunication
-_0802B938:
- ldr r1, _0802B940 @ =gBattleCommunication
- movs r0, 0x1
- strb r0, [r1, 0x5]
- b _0802B94E
- .align 2, 0
-_0802B940: .4byte gBattleCommunication
-_0802B944:
- ldr r0, _0802B954 @ =gBattleCommunication
- strb r4, [r0, 0x5]
- ldr r1, _0802B958 @ =gBattlescriptCurrInstr
- ldr r0, _0802B95C @ =gUnknown_081D9F0A
-_0802B94C:
- str r0, [r1]
-_0802B94E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B954: .4byte gBattleCommunication
-_0802B958: .4byte gBattlescriptCurrInstr
-_0802B95C: .4byte gUnknown_081D9F0A
- thumb_func_end sub_802B5B8
-
- thumb_func_start sub_802B960
-sub_802B960: @ 802B960
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- ldr r0, _0802B9C8 @ =gBattlePartyID
- mov r9, r0
- ldr r5, _0802B9CC @ =gBankAttacker
- ldrb r0, [r5]
- movs r4, 0x1
- eors r0, r4
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- movs r1, 0x64
- mov r8, r1
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- ldr r6, _0802B9D0 @ =gEnemyParty
- adds r0, r6
- bl GiveMonToPlayer
- ldr r2, _0802B9D4 @ =gBattleResults
- ldr r1, _0802B9D8 @ =gBattleMons
- ldrb r0, [r5]
- eors r4, r0
- movs r0, 0x58
- muls r0, r4
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2, 0x28]
- lsls r4, 1
- add r4, r9
- ldrh r0, [r4]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- adds r2, 0x2A
- movs r1, 0x2
- bl GetMonData
- ldr r1, _0802B9DC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802B9C8: .4byte gBattlePartyID
-_0802B9CC: .4byte gBankAttacker
-_0802B9D0: .4byte gEnemyParty
-_0802B9D4: .4byte gBattleResults
-_0802B9D8: .4byte gBattleMons
-_0802B9DC: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802B960
-
- thumb_func_start sub_802B9E0
-sub_802B9E0: @ 802B9E0
- push {r4-r6,lr}
- ldr r4, _0802BA20 @ =gBattleMons
- ldr r6, _0802BA24 @ =gBankTarget
- ldrb r0, [r6]
- movs r5, 0x58
- muls r0, r5
- adds r0, r4
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl GetNationalPokedexFlag
- lsls r0, 24
- cmp r0, 0
- beq _0802BA2C
- ldr r3, _0802BA28 @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
- b _0802BA82
- .align 2, 0
-_0802BA20: .4byte gBattleMons
-_0802BA24: .4byte gBankTarget
-_0802BA28: .4byte gBattlescriptCurrInstr
-_0802BA2C:
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl GetNationalPokedexFlag
- ldrb r0, [r6]
- adds r2, r0, 0
- muls r2, r5
- adds r0, r2, r4
- ldrh r0, [r0]
- cmp r0, 0xC9
- bne _0802BA5C
- ldr r0, _0802BA88 @ =gSaveBlock2
- adds r1, r4, 0
- adds r1, 0x48
- adds r1, r2, r1
- ldr r1, [r1]
- str r1, [r0, 0x1C]
-_0802BA5C:
- ldrb r0, [r6]
- adds r2, r0, 0
- muls r2, r5
- adds r0, r2, r4
- ldrh r1, [r0]
- movs r0, 0x9A
- lsls r0, 1
- cmp r1, r0
- bne _0802BA7A
- ldr r0, _0802BA88 @ =gSaveBlock2
- adds r1, r4, 0
- adds r1, 0x48
- adds r1, r2, r1
- ldr r1, [r1]
- str r1, [r0, 0x20]
-_0802BA7A:
- ldr r1, _0802BA8C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
-_0802BA82:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802BA88: .4byte gSaveBlock2
-_0802BA8C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802B9E0
-
- thumb_func_start sub_802BA90
-sub_802BA90: @ 802BA90
- push {r4-r7,lr}
- sub sp, 0x4
- ldr r7, _0802BAA8 @ =gBattleCommunication
- ldrb r1, [r7]
- cmp r1, 0x1
- beq _0802BAC6
- cmp r1, 0x1
- bgt _0802BAAC
- cmp r1, 0
- beq _0802BAB8
- b _0802BBC4
- .align 2, 0
-_0802BAA8: .4byte gBattleCommunication
-_0802BAAC:
- cmp r1, 0x2
- beq _0802BB10
- cmp r1, 0x3
- bne _0802BAB6
- b _0802BBB0
-_0802BAB6:
- b _0802BBC4
-_0802BAB8:
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- b _0802BB6E
-_0802BAC6:
- ldr r0, _0802BB04 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802BBC4
- ldr r4, _0802BB08 @ =gBattleMons
- ldr r6, _0802BB0C @ =gBankTarget
- ldrb r0, [r6]
- movs r5, 0x58
- muls r0, r5
- adds r0, r4
- ldrh r0, [r0]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- ldrb r1, [r6]
- adds r2, r1, 0
- muls r2, r5
- adds r1, r4, 0
- adds r1, 0x54
- adds r1, r2, r1
- ldr r1, [r1]
- adds r4, 0x48
- adds r2, r4
- ldr r2, [r2]
- bl sub_809070C
- strb r0, [r7, 0x1]
- b _0802BB72
- .align 2, 0
-_0802BB04: .4byte gPaletteFade
-_0802BB08: .4byte gBattleMons
-_0802BB0C: .4byte gBankTarget
-_0802BB10:
- ldr r0, _0802BB7C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802BBC4
- ldr r0, _0802BB80 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _0802BB84 @ =sub_800F808
- cmp r1, r0
- bne _0802BBC4
- ldr r2, _0802BB88 @ =gTasks
- ldrb r1, [r7, 0x1]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r4, [r0, 0x4]
- cmp r4, 0
- bne _0802BBC4
- ldr r0, _0802BB8C @ =gBattleTerrainTiles_Building
- ldr r1, _0802BB90 @ =0x06008000
- bl LZDecompressVram
- ldr r0, _0802BB94 @ =gBattleTerrainTilemap_Building
- ldr r1, _0802BB98 @ =0x0600d000
- bl LZDecompressVram
- ldr r0, _0802BB9C @ =gBattleTerrainPalette_BattleTower
- movs r1, 0x20
- movs r2, 0x60
- bl LoadCompressedPalette
- ldr r1, _0802BBA0 @ =REG_BG3CNT
- ldr r2, _0802BBA4 @ =0x00005a0b
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _0802BBA8 @ =gUnknown_030041B0
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0802BBAC @ =0x0000fffc
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
-_0802BB6E:
- bl BeginNormalPaletteFade
-_0802BB72:
- ldrb r0, [r7]
- adds r0, 0x1
- strb r0, [r7]
- b _0802BBC4
- .align 2, 0
-_0802BB7C: .4byte gPaletteFade
-_0802BB80: .4byte gMain
-_0802BB84: .4byte sub_800F808
-_0802BB88: .4byte gTasks
-_0802BB8C: .4byte gBattleTerrainTiles_Building
-_0802BB90: .4byte 0x06008000
-_0802BB94: .4byte gBattleTerrainTilemap_Building
-_0802BB98: .4byte 0x0600d000
-_0802BB9C: .4byte gBattleTerrainPalette_BattleTower
-_0802BBA0: .4byte REG_BG3CNT
-_0802BBA4: .4byte 0x00005a0b
-_0802BBA8: .4byte gUnknown_030041B0
-_0802BBAC: .4byte 0x0000fffc
-_0802BBB0:
- ldr r0, _0802BBCC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802BBC4
- ldr r1, _0802BBD0 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
-_0802BBC4:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802BBCC: .4byte gPaletteFade
-_0802BBD0: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802BA90
-
- thumb_func_start sub_802BBD4
-sub_802BBD4: @ 802BBD4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, [sp, 0x20]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r12, r1
- lsls r2, 24
- lsrs r5, r2, 24
- lsls r3, 24
- lsrs r7, r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- mov r2, r12
- cmp r2, r7
- bgt _0802BC5A
- lsls r1, r6, 1
- ldr r0, _0802BC20 @ =0x0600c000
- adds r1, r0
- mov r9, r1
-_0802BC06:
- adds r1, r6, 0
- adds r0, r2, 0x1
- mov r10, r0
- cmp r1, r5
- bgt _0802BC54
- lsls r0, r2, 6
- mov r4, r9
- adds r3, r4, r0
-_0802BC16:
- cmp r2, r12
- bne _0802BC28
- ldr r0, _0802BC24 @ =0x00001022
- b _0802BC36
- .align 2, 0
-_0802BC20: .4byte 0x0600c000
-_0802BC24: .4byte 0x00001022
-_0802BC28:
- cmp r2, r7
- bne _0802BC34
- ldr r0, _0802BC30 @ =0x00001028
- b _0802BC36
- .align 2, 0
-_0802BC30: .4byte 0x00001028
-_0802BC34:
- ldr r0, _0802BC68 @ =0x00001025
-_0802BC36:
- cmp r1, r6
- beq _0802BC42
- adds r0, 0x1
- cmp r1, r5
- bne _0802BC42
- adds r0, 0x1
-_0802BC42:
- mov r4, r8
- cmp r4, 0
- beq _0802BC4A
- movs r0, 0
-_0802BC4A:
- strh r0, [r3]
- adds r3, 0x2
- adds r1, 0x1
- cmp r1, r5
- ble _0802BC16
-_0802BC54:
- mov r2, r10
- cmp r2, r7
- ble _0802BC06
-_0802BC5A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802BC68: .4byte 0x00001025
- thumb_func_end sub_802BBD4
-
- thumb_func_start sub_802BC6C
-sub_802BC6C: @ 802BC6C
- push {lr}
- ldr r0, _0802BC88 @ =gBattleCommunication
- ldrb r1, [r0, 0x1]
- lsls r1, 28
- movs r0, 0x90
- lsls r0, 23
- adds r1, r0
- lsrs r1, 24
- movs r0, 0xC8
- bl sub_814A880
- pop {r0}
- bx r0
- .align 2, 0
-_0802BC88: .4byte gBattleCommunication
- thumb_func_end sub_802BC6C
-
- thumb_func_start nullsub_6
-nullsub_6: @ 802BC8C
- bx lr
- thumb_func_end nullsub_6
-
- thumb_func_start atkF3_receive_new_pokemon_maybe
-atkF3_receive_new_pokemon_maybe: @ 802BC90
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r0, _0802BCB4 @ =gBattleCommunication
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0x4
- bls _0802BCA8
- b _0802BEDA
-_0802BCA8:
- lsls r0, r1, 2
- ldr r1, _0802BCB8 @ =_0802BCBC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0802BCB4: .4byte gBattleCommunication
-_0802BCB8: .4byte _0802BCBC
- .align 2, 0
-_0802BCBC:
- .4byte _0802BCD0
- .4byte _0802BCEC
- .4byte _0802BD84
- .4byte _0802BE50
- .4byte _0802BEA4
-_0802BCD0:
- bl sub_8023A80
- ldr r0, _0802BCE8 @ =gBattleCommunication
- ldrb r1, [r0]
- adds r1, 0x1
- movs r2, 0
- strb r1, [r0]
- strb r2, [r0, 0x1]
- bl sub_802BC6C
- b _0802BEDA
- .align 2, 0
-_0802BCE8: .4byte gBattleCommunication
-_0802BCEC:
- ldr r0, _0802BD60 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802BD10
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _0802BD10
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_0802BD10:
- ldr r0, _0802BD60 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802BD36
- ldr r4, _0802BD64 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _0802BD36
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_0802BD36:
- ldr r0, _0802BD60 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802BD68
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802BD64 @ =gBattleCommunication
- ldrb r0, [r1, 0x1]
- cmp r0, 0
- bne _0802BD7A
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0x3
- bl BeginFastPaletteFade
- b _0802BEDA
- .align 2, 0
-_0802BD60: .4byte gMain
-_0802BD64: .4byte gBattleCommunication
-_0802BD68:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0802BD72
- b _0802BEDA
-_0802BD72:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802BD80 @ =gBattleCommunication
-_0802BD7A:
- movs r0, 0x4
- strb r0, [r1]
- b _0802BEDA
- .align 2, 0
-_0802BD80: .4byte gBattleCommunication
-_0802BD84:
- ldr r0, _0802BE34 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802BD92
- b _0802BEDA
-_0802BD92:
- ldr r7, _0802BE38 @ =gBattlePartyID
- ldr r0, _0802BE3C @ =gBankAttacker
- mov r10, r0
- ldrb r0, [r0]
- movs r4, 0x1
- eors r0, r4
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r1, 0x64
- mov r9, r1
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- ldr r1, _0802BE40 @ =gEnemyParty
- mov r8, r1
- add r0, r8
- movs r1, 0x2
- ldr r2, _0802BE44 @ =0x02016079
- bl GetMonData
- mov r1, r10
- ldrb r0, [r1]
- eors r0, r4
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- add r0, r8
- movs r1, 0xB
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- mov r1, r10
- ldrb r0, [r1]
- eors r0, r4
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- add r0, r8
- bl GetMonGender
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- mov r1, r10
- ldrb r0, [r1]
- eors r4, r0
- lsls r4, 1
- adds r4, r7
- ldrh r0, [r4]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- add r0, r8
- movs r1, 0
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- ldr r0, _0802BE48 @ =sub_800F808
- str r0, [sp, 0x4]
- movs r0, 0x2
- ldr r1, _0802BE44 @ =0x02016079
- adds r2, r6, 0
- adds r3, r5, 0
- bl DoNamingScreen
- ldr r1, _0802BE4C @ =gBattleCommunication
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0802BEDA
- .align 2, 0
-_0802BE34: .4byte gPaletteFade
-_0802BE38: .4byte gBattlePartyID
-_0802BE3C: .4byte gBankAttacker
-_0802BE40: .4byte gEnemyParty
-_0802BE44: .4byte 0x02016079
-_0802BE48: .4byte sub_800F808
-_0802BE4C: .4byte gBattleCommunication
-_0802BE50:
- ldr r0, _0802BE88 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _0802BE8C @ =sub_800F808
- cmp r1, r0
- bne _0802BEDA
- ldr r0, _0802BE90 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802BEDA
- ldr r2, _0802BE94 @ =gBattlePartyID
- ldr r0, _0802BE98 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x1
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802BE9C @ =gEnemyParty
- adds r0, r1
- ldr r2, _0802BEA0 @ =0x02016079
- movs r1, 0x2
- bl SetMonData
- b _0802BEC0
- .align 2, 0
-_0802BE88: .4byte gMain
-_0802BE8C: .4byte sub_800F808
-_0802BE90: .4byte gPaletteFade
-_0802BE94: .4byte gBattlePartyID
-_0802BE98: .4byte gBankAttacker
-_0802BE9C: .4byte gEnemyParty
-_0802BEA0: .4byte 0x02016079
-_0802BEA4:
- bl CalculatePlayerPartyCount
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x6
- bne _0802BEC0
- ldr r1, _0802BEBC @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x5
- str r0, [r1]
- b _0802BEDA
- .align 2, 0
-_0802BEBC: .4byte gBattlescriptCurrInstr
-_0802BEC0:
- ldr r3, _0802BEEC @ =gBattlescriptCurrInstr
- ldr r2, [r3]
- ldrb r1, [r2, 0x1]
- ldrb r0, [r2, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldrb r0, [r2, 0x3]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r2, 0x4]
- lsls r0, 24
- orrs r1, r0
- str r1, [r3]
-_0802BEDA:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802BEEC: .4byte gBattlescriptCurrInstr
- thumb_func_end atkF3_receive_new_pokemon_maybe
-
- thumb_func_start sub_802BEF0
-sub_802BEF0: @ 802BEF0
- ldr r2, _0802BF10 @ =gBattleMons
- ldr r0, _0802BF14 @ =gBankAttacker
- ldrb r1, [r0]
- movs r0, 0x58
- muls r1, r0
- adds r1, r2
- ldr r0, _0802BF18 @ =gBattleMoveDamage
- ldr r2, [r0]
- ldrh r0, [r1, 0x28]
- subs r0, r2
- strh r0, [r1, 0x28]
- ldr r1, _0802BF1C @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_0802BF10: .4byte gBattleMons
-_0802BF14: .4byte gBankAttacker
-_0802BF18: .4byte gBattleMoveDamage
-_0802BF1C: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802BEF0
-
- thumb_func_start sub_802BF20
-sub_802BF20: @ 802BF20
- ldr r1, _0802BF3C @ =gBattleMons
- ldr r0, _0802BF40 @ =gBankAttacker
- ldrb r2, [r0]
- movs r0, 0x58
- muls r0, r2
- adds r1, 0x4C
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- ldr r1, _0802BF44 @ =gBattlescriptCurrInstr
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- bx lr
- .align 2, 0
-_0802BF3C: .4byte gBattleMons
-_0802BF40: .4byte gBankAttacker
-_0802BF44: .4byte gBattlescriptCurrInstr
- thumb_func_end sub_802BF20
-
- thumb_func_start sub_802BF48
-sub_802BF48: @ 802BF48
- ldr r1, _0802BF50 @ =gFightStateTracker
- movs r0, 0xC
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0802BF50: .4byte gFightStateTracker
- thumb_func_end sub_802BF48
-
- thumb_func_start sub_802BF54
-sub_802BF54: @ 802BF54
- ldr r1, _0802BF64 @ =gFightStateTracker
- movs r0, 0xC
- strb r0, [r1]
- ldr r1, _0802BF68 @ =gCurrentMoveTurn
- ldr r0, _0802BF6C @ =gNoOfAllBanks
- ldrb r0, [r0]
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0802BF64: .4byte gFightStateTracker
-_0802BF68: .4byte gCurrentMoveTurn
-_0802BF6C: .4byte gNoOfAllBanks
- thumb_func_end sub_802BF54
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_5.s b/asm/battle_5.s
deleted file mode 100644
index b72266193..000000000
--- a/asm/battle_5.s
+++ /dev/null
@@ -1,4591 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_91
-nullsub_91: @ 802BF70
- bx lr
- thumb_func_end nullsub_91
-
- thumb_func_start SetBankFuncToPlayerBufferRunCommand
-SetBankFuncToPlayerBufferRunCommand: @ 802BF74
- ldr r1, _0802BF8C @ =gBattleBankFunc
- ldr r0, _0802BF90 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802BF94 @ =PlayerBufferRunCommand
- str r1, [r0]
- ldr r1, _0802BF98 @ =gDoingBattleAnim
- movs r0, 0
- strb r0, [r1]
- bx lr
- .align 2, 0
-_0802BF8C: .4byte gBattleBankFunc
-_0802BF90: .4byte gActiveBank
-_0802BF94: .4byte PlayerBufferRunCommand
-_0802BF98: .4byte gDoingBattleAnim
- thumb_func_end SetBankFuncToPlayerBufferRunCommand
-
- thumb_func_start PlayerBufferExecCompleted
-PlayerBufferExecCompleted: @ 802BF9C
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _0802BFDC @ =gBattleBankFunc
- ldr r4, _0802BFE0 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802BFE4 @ =PlayerBufferRunCommand
- str r1, [r0]
- ldr r0, _0802BFE8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802BFF0
- bl GetMultiplayerId
- mov r1, sp
- strb r0, [r1]
- movs r0, 0x2
- movs r1, 0x4
- mov r2, sp
- bl dp01_prepare_buffer_wireless_probably
- ldr r1, _0802BFEC @ =gBattleBufferA
- ldrb r0, [r4]
- lsls r0, 9
- adds r0, r1
- movs r1, 0x38
- strb r1, [r0]
- b _0802C002
- .align 2, 0
-_0802BFDC: .4byte gBattleBankFunc
-_0802BFE0: .4byte gActiveBank
-_0802BFE4: .4byte PlayerBufferRunCommand
-_0802BFE8: .4byte gBattleTypeFlags
-_0802BFEC: .4byte gBattleBufferA
-_0802BFF0:
- ldr r2, _0802C00C @ =gBattleExecBuffer
- ldr r1, _0802C010 @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
-_0802C002:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802C00C: .4byte gBattleExecBuffer
-_0802C010: .4byte gBitTable
- thumb_func_end PlayerBufferExecCompleted
-
- thumb_func_start PlayerBufferRunCommand
-PlayerBufferRunCommand: @ 802C014
- push {lr}
- ldr r2, _0802C048 @ =gBattleExecBuffer
- ldr r1, _0802C04C @ =gBitTable
- ldr r0, _0802C050 @ =gActiveBank
- ldrb r3, [r0]
- lsls r0, r3, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0802C060
- ldr r0, _0802C054 @ =gBattleBufferA
- lsls r1, r3, 9
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x38
- bhi _0802C05C
- ldr r0, _0802C058 @ =gPlayerBufferCommands
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
- b _0802C060
- .align 2, 0
-_0802C048: .4byte gBattleExecBuffer
-_0802C04C: .4byte gBitTable
-_0802C050: .4byte gActiveBank
-_0802C054: .4byte gBattleBufferA
-_0802C058: .4byte gPlayerBufferCommands
-_0802C05C:
- bl PlayerBufferExecCompleted
-_0802C060:
- pop {r0}
- bx r0
- thumb_func_end PlayerBufferRunCommand
-
- thumb_func_start bx_0802E404
-bx_0802E404: @ 802C064
- push {lr}
- ldr r2, _0802C08C @ =gSprites
- ldr r1, _0802C090 @ =gObjectBankIDs
- ldr r0, _0802C094 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x24
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0802C086
- bl PlayerBufferExecCompleted
-_0802C086:
- pop {r0}
- bx r0
- .align 2, 0
-_0802C08C: .4byte gSprites
-_0802C090: .4byte gObjectBankIDs
-_0802C094: .4byte gActiveBank
- thumb_func_end bx_0802E404
-
- thumb_func_start sub_802C098
-sub_802C098: @ 802C098
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r7, _0802C0FC @ =gBattleBufferA
- ldr r4, _0802C100 @ =gActiveBank
- ldrb r0, [r4]
- lsls r2, r0, 9
- adds r1, r7, 0x2
- adds r1, r2, r1
- ldrb r5, [r1]
- adds r1, r7, 0x3
- adds r2, r1
- ldrb r1, [r2]
- lsls r1, 8
- orrs r5, r1
- movs r1, 0x1
- movs r2, 0x7
- movs r3, 0x1
- bl dp11b_obj_instanciate
- ldrb r0, [r4]
- movs r1, 0
- movs r2, 0x7
- movs r3, 0x1
- bl dp11b_obj_instanciate
- ldr r0, _0802C104 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0802C13E
- movs r0, 0x5
- bl PlaySE
- bl DestroyMenuCursor
- ldr r1, _0802C108 @ =gActionSelectionCursor
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0802C11C
- cmp r0, 0x1
- bgt _0802C10C
- cmp r0, 0
- beq _0802C116
- b _0802C138
- .align 2, 0
-_0802C0FC: .4byte gBattleBufferA
-_0802C100: .4byte gActiveBank
-_0802C104: .4byte gMain
-_0802C108: .4byte gActionSelectionCursor
-_0802C10C:
- cmp r0, 0x2
- beq _0802C122
- cmp r0, 0x3
- beq _0802C12E
- b _0802C138
-_0802C116:
- movs r0, 0x1
- movs r1, 0
- b _0802C126
-_0802C11C:
- movs r0, 0x1
- movs r1, 0x1
- b _0802C126
-_0802C122:
- movs r0, 0x1
- movs r1, 0x2
-_0802C126:
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- b _0802C138
-_0802C12E:
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
-_0802C138:
- bl PlayerBufferExecCompleted
- b _0802C2AC
-_0802C13E:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0802C178
- ldr r5, _0802C174 @ =gActionSelectionCursor
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _0802C158
- b _0802C2AC
-_0802C158:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x1
- b _0802C200
- .align 2, 0
-_0802C174: .4byte gActionSelectionCursor
-_0802C178:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0802C1B0
- ldr r5, _0802C1AC @ =gActionSelectionCursor
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0802C192
- b _0802C2AC
-_0802C192:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x1
- b _0802C200
- .align 2, 0
-_0802C1AC: .4byte gActionSelectionCursor
-_0802C1B0:
- movs r0, 0x40
- mov r8, r0
- ands r0, r1
- cmp r0, 0
- beq _0802C1D0
- ldr r5, _0802C1CC @ =gActionSelectionCursor
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802C2AC
- b _0802C1E8
- .align 2, 0
-_0802C1CC: .4byte gActionSelectionCursor
-_0802C1D0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802C218
- ldr r5, _0802C214 @ =gActionSelectionCursor
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0802C2AC
-_0802C1E8:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x2
-_0802C200:
- eors r0, r2
- strb r0, [r1]
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3E4
- b _0802C2AC
- .align 2, 0
-_0802C214: .4byte gActionSelectionCursor
-_0802C218:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802C2A0
- ldr r6, _0802C294 @ =gBattleTypeFlags
- ldrh r1, [r6]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0802C2AC
- ldrb r0, [r4]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0802C2AC
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, _0802C298 @ =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, _0802C29C @ =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _0802C2AC
- ldrh r1, [r6]
- mov r0, r8
- ands r0, r1
- cmp r0, 0
- bne _0802C2AC
- ldrb r0, [r4]
- lsls r0, 9
- adds r1, r7, 0x1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0802C278
- cmp r5, 0xC
- bhi _0802C2AC
- adds r0, r5, 0
- movs r1, 0x1
- bl AddBagItem
-_0802C278:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- movs r1, 0xC
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- bl PlayerBufferExecCompleted
- bl DestroyMenuCursor
- b _0802C2AC
- .align 2, 0
-_0802C294: .4byte gBattleTypeFlags
-_0802C298: .4byte gAbsentBankFlags
-_0802C29C: .4byte gBitTable
-_0802C2A0:
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0802C2AC
- bl sub_804454C
-_0802C2AC:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_802C098
-
- thumb_func_start unref_sub_802C2B8
-unref_sub_802C2B8: @ 802C2B8
- push {r4,lr}
- ldr r4, _0802C2E0 @ =gActiveBank
- ldrb r0, [r4]
- movs r1, 0x1
- bl dp11b_obj_free
- ldrb r0, [r4]
- movs r1, 0
- bl dp11b_obj_free
- ldr r1, _0802C2E4 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802C2E8 @ =sub_802C2EC
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802C2E0: .4byte gActiveBank
-_0802C2E4: .4byte gBattleBankFunc
-_0802C2E8: .4byte sub_802C2EC
- thumb_func_end unref_sub_802C2B8
-
- thumb_func_start sub_802C2EC
-sub_802C2EC: @ 802C2EC
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r1, _0802C384 @ =gUnknown_081FAE7C
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- ldr r0, _0802C388 @ =gUnknown_03004344
- ldrb r0, [r0]
- movs r1, 0x1
- movs r2, 0xF
- movs r3, 0x1
- bl dp11b_obj_instanciate
- movs r4, 0
- ldr r0, _0802C38C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802C32E
-_0802C312:
- ldr r0, _0802C388 @ =gUnknown_03004344
- ldrb r0, [r0]
- cmp r4, r0
- beq _0802C324
- lsls r0, r4, 24
- lsrs r0, 24
- movs r1, 0x1
- bl dp11b_obj_free
-_0802C324:
- adds r4, 0x1
- ldr r0, _0802C38C @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- blt _0802C312
-_0802C32E:
- ldr r0, _0802C390 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802C3A8
- bl DestroyMenuCursor
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0802C394 @ =gSprites
- ldr r1, _0802C398 @ =gObjectBankIDs
- ldr r4, _0802C388 @ =gUnknown_03004344
- ldrb r0, [r4]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _0802C39C @ =sub_8010574
- str r1, [r0]
- ldr r1, _0802C3A0 @ =gMoveSelectionCursor
- ldr r0, _0802C3A4 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldrb r0, [r4]
- lsls r0, 8
- orrs r2, r0
- movs r0, 0x1
- movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
- ldrb r0, [r4]
- movs r1, 0x1
- bl dp11b_obj_free
- bl PlayerBufferExecCompleted
- b _0802C658
- .align 2, 0
-_0802C384: .4byte gUnknown_081FAE7C
-_0802C388: .4byte gUnknown_03004344
-_0802C38C: .4byte gNoOfAllBanks
-_0802C390: .4byte gMain
-_0802C394: .4byte gSprites
-_0802C398: .4byte gObjectBankIDs
-_0802C39C: .4byte sub_8010574
-_0802C3A0: .4byte gMoveSelectionCursor
-_0802C3A4: .4byte gActiveBank
-_0802C3A8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802C41C
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0802C400 @ =gSprites
- ldr r1, _0802C404 @ =gObjectBankIDs
- ldr r5, _0802C408 @ =gUnknown_03004344
- ldrb r0, [r5]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _0802C40C @ =sub_8010574
- str r1, [r0]
- ldr r1, _0802C410 @ =gBattleBankFunc
- ldr r4, _0802C414 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802C418 @ =sub_802C68C
- str r1, [r0]
- ldrb r0, [r4]
- movs r1, 0x1
- movs r2, 0x7
- movs r3, 0x1
- bl dp11b_obj_instanciate
- ldrb r0, [r4]
- movs r1, 0
- movs r2, 0x7
- movs r3, 0x1
- bl dp11b_obj_instanciate
- ldrb r0, [r5]
- movs r1, 0x1
- bl dp11b_obj_free
- b _0802C658
- .align 2, 0
-_0802C400: .4byte gSprites
-_0802C404: .4byte gObjectBankIDs
-_0802C408: .4byte gUnknown_03004344
-_0802C40C: .4byte sub_8010574
-_0802C410: .4byte gBattleBankFunc
-_0802C414: .4byte gActiveBank
-_0802C418: .4byte sub_802C68C
-_0802C41C:
- movs r0, 0x60
- ands r0, r1
- cmp r0, 0
- bne _0802C426
- b _0802C540
-_0802C426:
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0802C458 @ =gSprites
- ldr r1, _0802C45C @ =gObjectBankIDs
- ldr r3, _0802C460 @ =gUnknown_03004344
- ldrb r0, [r3]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _0802C464 @ =sub_8010574
- str r1, [r0]
- adds r5, r3, 0
-_0802C448:
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r1, r0, 24
- movs r4, 0
- mov r0, sp
- b _0802C472
- .align 2, 0
-_0802C458: .4byte gSprites
-_0802C45C: .4byte gObjectBankIDs
-_0802C460: .4byte gUnknown_03004344
-_0802C464: .4byte sub_8010574
-_0802C468:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _0802C478
- mov r2, sp
- adds r0, r2, r4
-_0802C472:
- ldrb r0, [r0]
- cmp r1, r0
- bne _0802C468
-_0802C478:
- subs r4, 0x1
- cmp r4, 0
- bge _0802C480
- movs r4, 0x3
-_0802C480:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- bl GetBankByPlayerAI
- strb r0, [r5]
- ldr r1, _0802C4B4 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- beq _0802C478
- movs r4, 0
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0802C4FE
- cmp r0, 0x1
- bgt _0802C4B8
- cmp r0, 0
- beq _0802C4C2
- b _0802C500
- .align 2, 0
-_0802C4B4: .4byte gNoOfAllBanks
-_0802C4B8:
- cmp r0, 0x2
- beq _0802C4C2
- cmp r0, 0x3
- beq _0802C4FE
- b _0802C500
-_0802C4C2:
- ldr r2, _0802C520 @ =gActiveBank
- ldrb r0, [r2]
- ldrb r1, [r5]
- cmp r0, r1
- bne _0802C4FE
- ldr r1, _0802C524 @ =gBattlePartyID
- ldrb r2, [r2]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802C528 @ =gPlayerParty
- adds r0, r1
- ldr r1, _0802C52C @ =gMoveSelectionCursor
- adds r2, r1
- ldrb r1, [r2]
- adds r1, 0xD
- bl GetMonData
- ldr r2, _0802C530 @ =gBattleMoves
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x6]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802C500
-_0802C4FE:
- adds r4, 0x1
-_0802C500:
- ldr r0, _0802C534 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _0802C538 @ =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- ldr r0, _0802C53C @ =gUnknown_03004344
- cmp r1, 0
- beq _0802C518
- movs r4, 0
-_0802C518:
- cmp r4, 0
- beq _0802C448
- b _0802C640
- .align 2, 0
-_0802C520: .4byte gActiveBank
-_0802C524: .4byte gBattlePartyID
-_0802C528: .4byte gPlayerParty
-_0802C52C: .4byte gMoveSelectionCursor
-_0802C530: .4byte gBattleMoves
-_0802C534: .4byte gAbsentBankFlags
-_0802C538: .4byte gBitTable
-_0802C53C: .4byte gUnknown_03004344
-_0802C540:
- movs r0, 0x90
- ands r0, r1
- cmp r0, 0
- bne _0802C54A
- b _0802C658
-_0802C54A:
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0802C57C @ =gSprites
- ldr r1, _0802C580 @ =gObjectBankIDs
- ldr r3, _0802C584 @ =gUnknown_03004344
- ldrb r0, [r3]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _0802C588 @ =sub_8010574
- str r1, [r0]
- adds r5, r3, 0
-_0802C56C:
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r1, r0, 24
- movs r4, 0
- mov r0, sp
- b _0802C596
- .align 2, 0
-_0802C57C: .4byte gSprites
-_0802C580: .4byte gObjectBankIDs
-_0802C584: .4byte gUnknown_03004344
-_0802C588: .4byte sub_8010574
-_0802C58C:
- adds r4, 0x1
- cmp r4, 0x3
- bgt _0802C59C
- mov r2, sp
- adds r0, r2, r4
-_0802C596:
- ldrb r0, [r0]
- cmp r1, r0
- bne _0802C58C
-_0802C59C:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0802C5A4
- movs r4, 0
-_0802C5A4:
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- bl GetBankByPlayerAI
- strb r0, [r5]
- ldr r1, _0802C5D8 @ =gNoOfAllBanks
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r1]
- cmp r0, r1
- beq _0802C59C
- movs r4, 0
- ldrb r0, [r5]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0802C622
- cmp r0, 0x1
- bgt _0802C5DC
- cmp r0, 0
- beq _0802C5E6
- b _0802C624
- .align 2, 0
-_0802C5D8: .4byte gNoOfAllBanks
-_0802C5DC:
- cmp r0, 0x2
- beq _0802C5E6
- cmp r0, 0x3
- beq _0802C622
- b _0802C624
-_0802C5E6:
- ldr r2, _0802C660 @ =gActiveBank
- ldrb r0, [r2]
- ldrb r1, [r5]
- cmp r0, r1
- bne _0802C622
- ldr r1, _0802C664 @ =gBattlePartyID
- ldrb r2, [r2]
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802C668 @ =gPlayerParty
- adds r0, r1
- ldr r1, _0802C66C @ =gMoveSelectionCursor
- adds r2, r1
- ldrb r1, [r2]
- adds r1, 0xD
- bl GetMonData
- ldr r2, _0802C670 @ =gBattleMoves
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x6]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802C624
-_0802C622:
- adds r4, 0x1
-_0802C624:
- ldr r0, _0802C674 @ =gAbsentBankFlags
- ldrb r1, [r0]
- ldr r2, _0802C678 @ =gBitTable
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- ldr r0, _0802C67C @ =gUnknown_03004344
- cmp r1, 0
- beq _0802C63C
- movs r4, 0
-_0802C63C:
- cmp r4, 0
- beq _0802C56C
-_0802C640:
- ldr r2, _0802C680 @ =gSprites
- ldr r1, _0802C684 @ =gObjectBankIDs
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _0802C688 @ =sub_8010520
- str r1, [r0]
-_0802C658:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802C660: .4byte gActiveBank
-_0802C664: .4byte gBattlePartyID
-_0802C668: .4byte gPlayerParty
-_0802C66C: .4byte gMoveSelectionCursor
-_0802C670: .4byte gBattleMoves
-_0802C674: .4byte gAbsentBankFlags
-_0802C678: .4byte gBitTable
-_0802C67C: .4byte gUnknown_03004344
-_0802C680: .4byte gSprites
-_0802C684: .4byte gObjectBankIDs
-_0802C688: .4byte sub_8010520
- thumb_func_end sub_802C2EC
-
- thumb_func_start sub_802C68C
-sub_802C68C: @ 802C68C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r0, 0
- mov r8, r0
- ldr r7, _0802C6E4 @ =gActiveBank
- ldrb r2, [r7]
- lsls r0, r2, 9
- ldr r1, _0802C6E8 @ =gUnknown_02023A64
- adds r6, r0, r1
- ldr r0, _0802C6EC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r5, 0x1
- adds r4, r5, 0
- ands r4, r1
- cmp r4, 0
- bne _0802C6B2
- b _0802C864
-_0802C6B2:
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802C6F0 @ =gMoveSelectionCursor
- ldrb r0, [r7]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, r6, r0
- ldrh r0, [r1]
- cmp r0, 0xAE
- bne _0802C6F4
- ldrb r0, [r6, 0x12]
- movs r4, 0
- cmp r0, 0x7
- beq _0802C702
- ldrb r1, [r6, 0x13]
- movs r0, 0x7
- eors r1, r0
- negs r0, r1
- orrs r0, r1
- asrs r4, r0, 31
- movs r0, 0x10
- ands r4, r0
- b _0802C702
- .align 2, 0
-_0802C6E4: .4byte gActiveBank
-_0802C6E8: .4byte gUnknown_02023A64
-_0802C6EC: .4byte gMain
-_0802C6F0: .4byte gMoveSelectionCursor
-_0802C6F4:
- ldr r2, _0802C714 @ =gBattleMoves
- ldrh r1, [r1]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r4, [r0, 0x6]
-_0802C702:
- movs r0, 0x10
- ands r0, r4
- cmp r0, 0
- beq _0802C720
- ldr r0, _0802C718 @ =gUnknown_03004344
- ldr r1, _0802C71C @ =gActiveBank
- ldrb r1, [r1]
- strb r1, [r0]
- b _0802C73A
- .align 2, 0
-_0802C714: .4byte gBattleMoves
-_0802C718: .4byte gUnknown_03004344
-_0802C71C: .4byte gActiveBank
-_0802C720:
- ldr r0, _0802C764 @ =gActiveBank
- ldrb r0, [r0]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r2, 0x1
- movs r0, 0x1
- ands r0, r1
- eors r0, r2
- bl GetBankByPlayerAI
- ldr r1, _0802C768 @ =gUnknown_03004344
- strb r0, [r1]
-_0802C73A:
- ldr r3, _0802C76C @ =gBattleBufferA
- ldr r5, _0802C764 @ =gActiveBank
- ldrb r2, [r5]
- lsls r1, r2, 9
- adds r0, r3, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802C770
- movs r0, 0x2
- ands r0, r4
- cmp r0, 0
- beq _0802C7B2
- adds r0, r3, 0x2
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802C7B2
- movs r2, 0x1
- add r8, r2
- b _0802C7B2
- .align 2, 0
-_0802C764: .4byte gActiveBank
-_0802C768: .4byte gUnknown_03004344
-_0802C76C: .4byte gBattleBufferA
-_0802C770:
- movs r0, 0x7D
- ands r0, r4
- cmp r0, 0
- bne _0802C77C
- movs r0, 0x1
- add r8, r0
-_0802C77C:
- ldr r0, _0802C7D0 @ =gMoveSelectionCursor
- adds r0, r2, r0
- adds r1, r6, 0
- adds r1, 0x8
- ldrb r0, [r0]
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _0802C7B8
- movs r0, 0x12
- ands r0, r4
- cmp r0, 0
- bne _0802C7B2
- movs r0, 0
- bl CountAliveMons
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _0802C7B2
- ldrb r0, [r5]
- bl sub_803C434
- ldr r1, _0802C7D4 @ =gUnknown_03004344
- strb r0, [r1]
- movs r2, 0
- mov r8, r2
-_0802C7B2:
- mov r0, r8
- cmp r0, 0
- bne _0802C7DC
-_0802C7B8:
- bl DestroyMenuCursor
- ldr r1, _0802C7D0 @ =gMoveSelectionCursor
- ldr r0, _0802C7D8 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r2, [r0]
- ldr r0, _0802C7D4 @ =gUnknown_03004344
- ldrb r0, [r0]
- lsls r0, 8
- orrs r2, r0
- b _0802C888
- .align 2, 0
-_0802C7D0: .4byte gMoveSelectionCursor
-_0802C7D4: .4byte gUnknown_03004344
-_0802C7D8: .4byte gActiveBank
-_0802C7DC:
- ldr r1, _0802C7F8 @ =gBattleBankFunc
- ldr r2, _0802C7FC @ =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802C800 @ =sub_802C2EC
- str r1, [r0]
- movs r0, 0x12
- ands r4, r0
- cmp r4, 0
- beq _0802C808
- ldr r1, _0802C804 @ =gUnknown_03004344
- ldrb r0, [r2]
- b _0802C838
- .align 2, 0
-_0802C7F8: .4byte gBattleBankFunc
-_0802C7FC: .4byte gActiveBank
-_0802C800: .4byte sub_802C2EC
-_0802C804: .4byte gUnknown_03004344
-_0802C808:
- movs r0, 0x1
- bl GetBankByPlayerAI
- ldr r1, _0802C828 @ =gAbsentBankFlags
- ldrb r1, [r1]
- ldr r2, _0802C82C @ =gBitTable
- lsls r0, 24
- lsrs r0, 22
- adds r0, r2
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0802C830
- movs r0, 0x3
- b _0802C832
- .align 2, 0
-_0802C828: .4byte gAbsentBankFlags
-_0802C82C: .4byte gBitTable
-_0802C830:
- movs r0, 0x1
-_0802C832:
- bl GetBankByPlayerAI
- ldr r1, _0802C854 @ =gUnknown_03004344
-_0802C838:
- strb r0, [r1]
- ldr r2, _0802C858 @ =gSprites
- ldr r1, _0802C85C @ =gObjectBankIDs
- ldr r0, _0802C854 @ =gUnknown_03004344
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _0802C860 @ =sub_8010520
- b _0802CA36
- .align 2, 0
-_0802C854: .4byte gUnknown_03004344
-_0802C858: .4byte gSprites
-_0802C85C: .4byte gObjectBankIDs
-_0802C860: .4byte sub_8010520
-_0802C864:
- movs r6, 0x2
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0802C8A4
- bl DestroyMenuCursor
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0802C898 @ =gUnknown_030042A4
- strh r4, [r0]
- ldr r1, _0802C89C @ =gUnknown_030042A0
- movs r2, 0xA0
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r2, _0802C8A0 @ =0x0000ffff
-_0802C888:
- movs r0, 0x1
- movs r1, 0xA
- bl dp01_build_cmdbuf_x21_a_bb
- bl PlayerBufferExecCompleted
- b _0802CA38
- .align 2, 0
-_0802C898: .4byte gUnknown_030042A4
-_0802C89C: .4byte gUnknown_030042A0
-_0802C8A0: .4byte 0x0000ffff
-_0802C8A4:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0802C8D4
- ldr r4, _0802C8D0 @ =gMoveSelectionCursor
- adds r2, r4
- ldrb r1, [r2]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _0802C8BC
- b _0802CA38
-_0802C8BC:
- ldrb r0, [r2]
- bl nullsub_7
- ldrb r1, [r7]
- adds r1, r4
- ldrb r0, [r1]
- movs r2, 0x1
- eors r0, r2
- b _0802C976
- .align 2, 0
-_0802C8D0: .4byte gMoveSelectionCursor
-_0802C8D4:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0802C914
- ldr r4, _0802C90C @ =gMoveSelectionCursor
- adds r3, r2, r4
- ldrb r2, [r3]
- movs r6, 0x1
- adds r0, r5, 0
- ands r0, r2
- cmp r0, 0
- beq _0802C8EE
- b _0802CA38
-_0802C8EE:
- ldr r1, _0802C910 @ =gUnknown_03004348
- adds r0, r6, 0
- eors r0, r2
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0802C8FC
- b _0802CA38
-_0802C8FC:
- ldrb r0, [r3]
- bl nullsub_7
- ldrb r1, [r7]
- adds r1, r4
- ldrb r0, [r1]
- eors r0, r6
- b _0802C976
- .align 2, 0
-_0802C90C: .4byte gMoveSelectionCursor
-_0802C910: .4byte gUnknown_03004348
-_0802C914:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802C944
- ldr r4, _0802C940 @ =gMoveSelectionCursor
- adds r2, r4
- ldrb r1, [r2]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- bne _0802C92C
- b _0802CA38
-_0802C92C:
- ldrb r0, [r2]
- bl nullsub_7
- ldrb r1, [r7]
- adds r1, r4
- ldrb r0, [r1]
- movs r2, 0x2
- eors r0, r2
- b _0802C976
- .align 2, 0
-_0802C940: .4byte gMoveSelectionCursor
-_0802C944:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802C99C
- ldr r4, _0802C994 @ =gMoveSelectionCursor
- adds r3, r2, r4
- ldrb r2, [r3]
- movs r5, 0x2
- adds r0, r6, 0
- ands r0, r2
- cmp r0, 0
- bne _0802CA38
- ldr r1, _0802C998 @ =gUnknown_03004348
- adds r0, r5, 0
- eors r0, r2
- ldrb r1, [r1]
- cmp r0, r1
- bcs _0802CA38
- ldrb r0, [r3]
- bl nullsub_7
- ldrb r1, [r7]
- adds r1, r4
- ldrb r0, [r1]
- eors r0, r5
-_0802C976:
- strb r0, [r1]
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r7]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3B4
- bl sub_802E220
- bl sub_802E2D4
- b _0802CA38
- .align 2, 0
-_0802C994: .4byte gMoveSelectionCursor
-_0802C998: .4byte gUnknown_03004348
-_0802C99C:
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0802CA38
- ldr r0, _0802C9D8 @ =gUnknown_03004348
- ldrb r0, [r0]
- cmp r0, 0x1
- bls _0802CA38
- ldr r0, _0802C9DC @ =gBattleTypeFlags
- ldrh r1, [r0]
- adds r0, r6, 0
- ands r0, r1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0
- bne _0802CA38
- ldr r4, _0802C9E0 @ =gMoveSelectionCursor
- adds r0, r2, r4
- ldrb r0, [r0]
- ldr r1, _0802C9E4 @ =gUnknown_081FAE80
- bl sub_802E12C
- ldrb r0, [r7]
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802C9EC
- ldr r0, _0802C9E8 @ =gUnknown_03004344
- strb r5, [r0]
- b _0802C9F4
- .align 2, 0
-_0802C9D8: .4byte gUnknown_03004348
-_0802C9DC: .4byte gBattleTypeFlags
-_0802C9E0: .4byte gMoveSelectionCursor
-_0802C9E4: .4byte gUnknown_081FAE80
-_0802C9E8: .4byte gUnknown_03004344
-_0802C9EC:
- ldr r1, _0802CA44 @ =gUnknown_03004344
- adds r0, 0x1
- strb r0, [r1]
- adds r0, r1, 0
-_0802C9F4:
- ldrb r0, [r0]
- movs r1, 0x1B
- bl sub_802E3B4
- ldr r4, _0802CA48 @ =gUnknown_03004210
- ldr r1, _0802CA4C @ =0x00001016
- movs r0, 0x1C
- str r0, [sp]
- movs r0, 0x3A
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0x17
- movs r3, 0x37
- bl FillWindowRect
- ldr r1, _0802CA50 @ =gUnknown_08400D89
- movs r2, 0xA4
- lsls r2, 2
- movs r0, 0x37
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x17
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- ldr r1, _0802CA54 @ =gBattleBankFunc
- ldr r0, _0802CA58 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802CA5C @ =sub_802CA60
-_0802CA36:
- str r1, [r0]
-_0802CA38:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802CA44: .4byte gUnknown_03004344
-_0802CA48: .4byte gUnknown_03004210
-_0802CA4C: .4byte 0x00001016
-_0802CA50: .4byte gUnknown_08400D89
-_0802CA54: .4byte gBattleBankFunc
-_0802CA58: .4byte gActiveBank
-_0802CA5C: .4byte sub_802CA60
- thumb_func_end sub_802C68C
-
- thumb_func_start sub_802CA60
-sub_802CA60: @ 802CA60
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- ldr r0, _0802CDEC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x5
- ands r0, r1
- cmp r0, 0
- bne _0802CA7A
- b _0802CE78
-_0802CA7A:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0802CDF0 @ =gMoveSelectionCursor
- mov r10, r0
- ldr r1, _0802CDF4 @ =gActiveBank
- mov r8, r1
- ldrb r1, [r1]
- adds r2, r1, r0
- ldr r5, _0802CDF8 @ =gUnknown_03004344
- ldrb r0, [r2]
- ldrb r3, [r5]
- cmp r0, r3
- bne _0802CA98
- b _0802CE14
-_0802CA98:
- lsls r1, 9
- ldr r0, _0802CDFC @ =gUnknown_02023A64
- adds r1, r0
- mov r9, r1
- ldrb r1, [r2]
- lsls r1, 1
- add r1, r9
- ldrh r6, [r1]
- ldrb r0, [r5]
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- strh r0, [r1]
- ldrb r0, [r5]
- lsls r0, 1
- add r0, r9
- strh r6, [r0]
- mov r1, r8
- ldrb r0, [r1]
- add r0, r10
- ldrb r1, [r0]
- mov r7, r9
- adds r7, 0x8
- adds r1, r7, r1
- ldrb r6, [r1]
- ldrb r0, [r5]
- adds r0, r7, r0
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r5]
- adds r0, r7, r0
- strb r6, [r0]
- mov r2, r8
- ldrb r0, [r2]
- add r0, r10
- ldrb r1, [r0]
- mov r2, r9
- adds r2, 0xC
- adds r1, r2, r1
- ldrb r6, [r1]
- ldrb r0, [r5]
- adds r0, r2, r0
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r5]
- adds r2, r0
- strb r6, [r2]
- mov r3, r8
- ldrb r1, [r3]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r2, _0802CE00 @ =gDisableStructs
- adds r6, r0, r2
- ldrb r4, [r6, 0x18]
- lsls r3, r4, 24
- lsrs r2, r3, 28
- ldr r0, _0802CE04 @ =gBitTable
- mov r12, r0
- add r1, r10
- ldrb r0, [r1]
- lsls r0, 2
- add r0, r12
- ldr r0, [r0]
- ands r2, r0
- cmp r2, 0
- beq _0802CB52
- lsrs r1, r3, 28
- bics r1, r0
- lsls r1, 4
- movs r2, 0xF
- adds r0, r2, 0
- ands r0, r4
- orrs r0, r1
- strb r0, [r6, 0x18]
- mov r1, r8
- ldrb r0, [r1]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r3, _0802CE00 @ =gDisableStructs
- adds r1, r3
- ldrb r4, [r1, 0x18]
- lsrs r3, r4, 4
- ldrb r0, [r5]
- lsls r0, 2
- add r0, r12
- ldr r0, [r0]
- orrs r0, r3
- lsls r0, 4
- ands r2, r4
- orrs r2, r0
- strb r2, [r1, 0x18]
-_0802CB52:
- bl sub_802E1B0
- movs r6, 0
- mov r12, r7
- mov r5, sp
- adds r5, 0x20
- str r5, [sp, 0x28]
- ldr r2, _0802CE08 @ =gBattleMons
- mov r0, r8
- ldrb r1, [r0]
- movs r0, 0x58
- muls r0, r1
- adds r0, r2
- adds r4, r0, 0
- adds r4, 0x3B
- mov r7, r8
- mov r10, r2
- movs r5, 0x3
-_0802CB76:
- mov r3, sp
- adds r3, r6
- adds r3, 0x8
- ldrb r1, [r4]
- lsls r2, r6, 1
- adds r0, r5, 0
- lsls r0, r2
- ands r1, r0
- asrs r1, r2
- strb r1, [r3]
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CB76
- ldr r1, _0802CDF0 @ =gMoveSelectionCursor
- ldrb r0, [r7]
- adds r0, r1
- ldrb r0, [r0]
- add r0, sp
- adds r0, 0x8
- ldrb r0, [r0]
- ldr r2, [sp, 0x28]
- strb r0, [r2]
- ldrb r0, [r7]
- adds r0, r1
- ldrb r0, [r0]
- mov r2, sp
- adds r2, r0
- adds r2, 0x8
- ldr r1, _0802CDF8 @ =gUnknown_03004344
- ldrb r0, [r1]
- add r0, sp
- adds r0, 0x8
- ldrb r0, [r0]
- movs r3, 0
- strb r0, [r2]
- ldrb r0, [r1]
- mov r1, sp
- adds r1, r0
- adds r1, 0x8
- ldr r5, [sp, 0x28]
- ldrb r0, [r5]
- strb r0, [r1]
- strb r3, [r5]
- movs r6, 0
- ldr r2, [sp, 0x28]
-_0802CBD0:
- mov r0, sp
- adds r0, r6
- adds r0, 0x8
- ldrb r1, [r0]
- lsls r0, r6, 1
- lsls r1, r0
- ldrb r0, [r2]
- orrs r0, r1
- strb r0, [r2]
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CBD0
- ldrb r1, [r7]
- movs r0, 0x58
- muls r0, r1
- add r0, r10
- adds r0, 0x3B
- ldr r2, [sp, 0x28]
- ldrb r1, [r2]
- strb r1, [r0]
- movs r6, 0
- adds r4, r7, 0
- movs r3, 0x58
- movs r5, 0x24
- add r5, r10
- mov r8, r5
- mov r2, r9
- mov r7, r10
- adds r7, 0xC
- mov r5, r12
-_0802CC0C:
- lsls r1, r6, 1
- ldrb r0, [r4]
- muls r0, r3
- adds r1, r0
- adds r1, r7
- ldrh r0, [r2]
- strh r0, [r1]
- ldrb r0, [r4]
- adds r1, r0, 0
- muls r1, r3
- adds r1, r6, r1
- add r1, r8
- adds r0, r5, r6
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CC0C
- ldr r2, _0802CDF4 @ =gActiveBank
- ldrb r1, [r2]
- movs r0, 0x58
- muls r0, r1
- mov r1, r10
- adds r1, 0x50
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x80
- lsls r1, 14
- ands r0, r1
- cmp r0, 0
- beq _0802CC4E
- b _0802CE1C
-_0802CC4E:
- movs r6, 0
- mov r0, sp
- adds r0, 0xC
- str r0, [sp, 0x24]
- add r1, sp, 0x14
- mov r10, r1
- ldr r3, _0802CE0C @ =gBattlePartyID
- mov r9, r3
- mov r8, r2
- movs r7, 0x64
- ldr r5, _0802CE10 @ =gPlayerParty
- adds r4, r0, 0
-_0802CC66:
- mov r1, r8
- ldrb r0, [r1]
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- muls r0, r7
- adds r0, r5
- adds r1, r6, 0
- adds r1, 0xD
- bl GetMonData
- strh r0, [r4]
- mov r2, r8
- ldrb r0, [r2]
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- muls r0, r7
- adds r0, r5
- adds r1, r6, 0
- adds r1, 0x11
- bl GetMonData
- mov r3, r10
- adds r1, r3, r6
- strb r0, [r1]
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CC66
- ldr r1, _0802CE0C @ =gBattlePartyID
- ldr r0, _0802CDF4 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802CE10 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x15
- bl GetMonData
- ldr r5, [sp, 0x28]
- strb r0, [r5]
- movs r6, 0
- movs r5, 0x3
- ldr r4, [sp, 0x28]
-_0802CCC6:
- mov r3, sp
- adds r3, r6
- adds r3, 0x8
- lsls r2, r6, 1
- adds r1, r5, 0
- lsls r1, r2
- ldrb r0, [r4]
- ands r0, r1
- asrs r0, r2
- strb r0, [r3]
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CCC6
- ldr r4, _0802CDF0 @ =gMoveSelectionCursor
- ldr r3, _0802CDF4 @ =gActiveBank
- ldrb r0, [r3]
- adds r0, r4
- ldrb r1, [r0]
- lsls r1, 1
- ldr r0, [sp, 0x24]
- adds r1, r0, r1
- ldrh r6, [r1]
- ldr r2, _0802CDF8 @ =gUnknown_03004344
- ldrb r0, [r2]
- lsls r0, 1
- ldr r5, [sp, 0x24]
- adds r0, r5, r0
- ldrh r0, [r0]
- movs r5, 0
- strh r0, [r1]
- ldrb r0, [r2]
- lsls r0, 1
- ldr r1, [sp, 0x24]
- adds r0, r1, r0
- strh r6, [r0]
- ldrb r0, [r3]
- adds r0, r4
- ldrb r1, [r0]
- add r1, r10
- ldrb r6, [r1]
- ldrb r0, [r2]
- add r0, r10
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r2]
- add r0, r10
- strb r6, [r0]
- ldrb r0, [r3]
- adds r0, r4
- ldrb r0, [r0]
- add r0, sp
- adds r0, 0x8
- ldrb r0, [r0]
- ldr r1, [sp, 0x28]
- strb r0, [r1]
- ldrb r0, [r3]
- adds r0, r4
- ldrb r0, [r0]
- mov r1, sp
- adds r1, r0
- adds r1, 0x8
- ldrb r0, [r2]
- add r0, sp
- adds r0, 0x8
- ldrb r0, [r0]
- strb r0, [r1]
- ldrb r0, [r2]
- mov r1, sp
- adds r1, r0
- adds r1, 0x8
- ldr r2, [sp, 0x28]
- ldrb r0, [r2]
- strb r0, [r1]
- strb r5, [r2]
- movs r6, 0
- ldr r2, [sp, 0x28]
-_0802CD5E:
- mov r0, sp
- adds r0, r6
- adds r0, 0x8
- ldrb r1, [r0]
- lsls r0, r6, 1
- lsls r1, r0
- ldrb r0, [r2]
- orrs r0, r1
- strb r0, [r2]
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CD5E
- movs r6, 0
- ldr r3, _0802CE0C @ =gBattlePartyID
- mov r10, r3
- ldr r5, _0802CDF4 @ =gActiveBank
- mov r9, r5
- movs r0, 0x64
- mov r8, r0
- ldr r7, _0802CE10 @ =gPlayerParty
- ldr r5, [sp, 0x24]
- adds r5, 0x8
- ldr r4, [sp, 0x24]
-_0802CD8C:
- mov r1, r9
- ldrb r0, [r1]
- lsls r0, 1
- add r0, r10
- ldrh r0, [r0]
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- adds r0, r7
- adds r1, r6, 0
- adds r1, 0xD
- adds r2, r4, 0
- bl SetMonData
- mov r3, r9
- ldrb r0, [r3]
- lsls r0, 1
- add r0, r10
- ldrh r0, [r0]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r7
- adds r1, r6, 0
- adds r1, 0x11
- adds r2, r5, 0
- bl SetMonData
- adds r5, 0x1
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802CD8C
- ldr r1, _0802CE0C @ =gBattlePartyID
- ldr r0, _0802CDF4 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802CE10 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x15
- ldr r2, [sp, 0x28]
- bl SetMonData
- b _0802CE1C
- .align 2, 0
-_0802CDEC: .4byte gMain
-_0802CDF0: .4byte gMoveSelectionCursor
-_0802CDF4: .4byte gActiveBank
-_0802CDF8: .4byte gUnknown_03004344
-_0802CDFC: .4byte gUnknown_02023A64
-_0802CE00: .4byte gDisableStructs
-_0802CE04: .4byte gBitTable
-_0802CE08: .4byte gBattleMons
-_0802CE0C: .4byte gBattlePartyID
-_0802CE10: .4byte gPlayerParty
-_0802CE14:
- ldrb r0, [r5]
- ldr r1, _0802CF20 @ =gUnknown_08400D49
- bl sub_802E12C
-_0802CE1C:
- ldr r1, _0802CF24 @ =gBattleBankFunc
- ldr r2, _0802CF28 @ =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802CF2C @ =sub_802C68C
- str r1, [r0]
- ldr r3, _0802CF30 @ =gMoveSelectionCursor
- ldrb r0, [r2]
- adds r0, r3
- ldr r1, _0802CF34 @ =gUnknown_03004344
- ldrb r1, [r1]
- strb r1, [r0]
- ldrb r0, [r2]
- adds r0, r3
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3B4
- ldr r4, _0802CF38 @ =gUnknown_03004210
- ldr r1, _0802CF3C @ =0x00001016
- movs r0, 0x1C
- str r0, [sp]
- movs r0, 0x3A
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0x17
- movs r3, 0x37
- bl FillWindowRect
- ldr r1, _0802CF40 @ =gUnknown_08400D38
- movs r2, 0xA4
- lsls r2, 2
- movs r0, 0x37
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x17
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- bl sub_802E220
- bl sub_802E2D4
-_0802CE78:
- ldr r6, _0802CF44 @ =gMain
- ldrh r1, [r6, 0x2E]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0
- beq _0802CEF0
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0802CF34 @ =gUnknown_03004344
- ldrb r0, [r0]
- bl nullsub_7
- ldr r5, _0802CF30 @ =gMoveSelectionCursor
- ldr r4, _0802CF28 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3B4
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- ldr r1, _0802CF20 @ =gUnknown_08400D49
- bl sub_802E12C
- ldr r1, _0802CF24 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802CF2C @ =sub_802C68C
- str r1, [r0]
- ldr r4, _0802CF38 @ =gUnknown_03004210
- ldr r1, _0802CF3C @ =0x00001016
- movs r0, 0x1C
- str r0, [sp]
- movs r0, 0x3A
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0x17
- movs r3, 0x37
- bl FillWindowRect
- ldr r1, _0802CF40 @ =gUnknown_08400D38
- movs r2, 0xA4
- lsls r2, 2
- movs r0, 0x37
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x17
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
- bl sub_802E220
- bl sub_802E2D4
-_0802CEF0:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0802CF8C
- ldr r3, _0802CF34 @ =gUnknown_03004344
- ldrb r2, [r3]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- beq _0802CF8C
- ldr r0, _0802CF30 @ =gMoveSelectionCursor
- ldr r1, _0802CF28 @ =gActiveBank
- ldrb r1, [r1]
- adds r1, r0
- ldrb r5, [r1]
- cmp r2, r5
- bne _0802CF48
- ldrb r0, [r1]
- movs r1, 0x1D
- bl sub_802E3B4
- b _0802CF4E
- .align 2, 0
-_0802CF20: .4byte gUnknown_08400D49
-_0802CF24: .4byte gBattleBankFunc
-_0802CF28: .4byte gActiveBank
-_0802CF2C: .4byte sub_802C68C
-_0802CF30: .4byte gMoveSelectionCursor
-_0802CF34: .4byte gUnknown_03004344
-_0802CF38: .4byte gUnknown_03004210
-_0802CF3C: .4byte 0x00001016
-_0802CF40: .4byte gUnknown_08400D38
-_0802CF44: .4byte gMain
-_0802CF48:
- ldrb r0, [r3]
- bl nullsub_7
-_0802CF4E:
- ldr r4, _0802CF78 @ =gUnknown_03004344
- ldrb r0, [r4]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r4]
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802CF7C @ =gMoveSelectionCursor
- ldr r0, _0802CF80 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0802CF84
- adds r0, r1, 0
- movs r1, 0
- bl sub_802E3B4
- b _0802CF8C
- .align 2, 0
-_0802CF78: .4byte gUnknown_03004344
-_0802CF7C: .4byte gMoveSelectionCursor
-_0802CF80: .4byte gActiveBank
-_0802CF84:
- ldrb r0, [r4]
- movs r1, 0x1B
- bl sub_802E3B4
-_0802CF8C:
- ldr r0, _0802CFC8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0802D020
- ldr r3, _0802CFCC @ =gUnknown_03004344
- ldrb r2, [r3]
- movs r0, 0x1
- ands r0, r2
- cmp r0, 0
- bne _0802D020
- ldr r1, _0802CFD0 @ =gUnknown_03004348
- movs r0, 0x1
- eors r0, r2
- ldrb r1, [r1]
- cmp r0, r1
- bcs _0802D020
- ldr r0, _0802CFD4 @ =gMoveSelectionCursor
- ldr r1, _0802CFD8 @ =gActiveBank
- ldrb r1, [r1]
- adds r1, r0
- ldrb r0, [r1]
- cmp r2, r0
- bne _0802CFDC
- ldrb r0, [r1]
- movs r1, 0x1D
- bl sub_802E3B4
- b _0802CFE2
- .align 2, 0
-_0802CFC8: .4byte gMain
-_0802CFCC: .4byte gUnknown_03004344
-_0802CFD0: .4byte gUnknown_03004348
-_0802CFD4: .4byte gMoveSelectionCursor
-_0802CFD8: .4byte gActiveBank
-_0802CFDC:
- ldrb r0, [r3]
- bl nullsub_7
-_0802CFE2:
- ldr r4, _0802D00C @ =gUnknown_03004344
- ldrb r0, [r4]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r4]
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802D010 @ =gMoveSelectionCursor
- ldr r0, _0802D014 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0802D018
- adds r0, r1, 0
- movs r1, 0
- bl sub_802E3B4
- b _0802D020
- .align 2, 0
-_0802D00C: .4byte gUnknown_03004344
-_0802D010: .4byte gMoveSelectionCursor
-_0802D014: .4byte gActiveBank
-_0802D018:
- ldrb r0, [r4]
- movs r1, 0x1B
- bl sub_802E3B4
-_0802D020:
- ldr r0, _0802D050 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802D0A4
- ldr r3, _0802D054 @ =gUnknown_03004344
- ldrb r2, [r3]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _0802D0A4
- ldr r0, _0802D058 @ =gMoveSelectionCursor
- ldr r1, _0802D05C @ =gActiveBank
- ldrb r1, [r1]
- adds r1, r0
- ldrb r5, [r1]
- cmp r2, r5
- bne _0802D060
- ldrb r0, [r1]
- movs r1, 0x1D
- bl sub_802E3B4
- b _0802D066
- .align 2, 0
-_0802D050: .4byte gMain
-_0802D054: .4byte gUnknown_03004344
-_0802D058: .4byte gMoveSelectionCursor
-_0802D05C: .4byte gActiveBank
-_0802D060:
- ldrb r0, [r3]
- bl nullsub_7
-_0802D066:
- ldr r4, _0802D090 @ =gUnknown_03004344
- ldrb r0, [r4]
- movs r1, 0x2
- eors r0, r1
- strb r0, [r4]
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802D094 @ =gMoveSelectionCursor
- ldr r0, _0802D098 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0802D09C
- adds r0, r1, 0
- movs r1, 0
- bl sub_802E3B4
- b _0802D0A4
- .align 2, 0
-_0802D090: .4byte gUnknown_03004344
-_0802D094: .4byte gMoveSelectionCursor
-_0802D098: .4byte gActiveBank
-_0802D09C:
- ldrb r0, [r4]
- movs r1, 0x1B
- bl sub_802E3B4
-_0802D0A4:
- ldr r0, _0802D0E0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0802D138
- ldr r3, _0802D0E4 @ =gUnknown_03004344
- ldrb r2, [r3]
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- bne _0802D138
- ldr r1, _0802D0E8 @ =gUnknown_03004348
- movs r0, 0x2
- eors r0, r2
- ldrb r1, [r1]
- cmp r0, r1
- bcs _0802D138
- ldr r0, _0802D0EC @ =gMoveSelectionCursor
- ldr r1, _0802D0F0 @ =gActiveBank
- ldrb r1, [r1]
- adds r1, r0
- ldrb r0, [r1]
- cmp r2, r0
- bne _0802D0F4
- ldrb r0, [r1]
- movs r1, 0x1D
- bl sub_802E3B4
- b _0802D0FA
- .align 2, 0
-_0802D0E0: .4byte gMain
-_0802D0E4: .4byte gUnknown_03004344
-_0802D0E8: .4byte gUnknown_03004348
-_0802D0EC: .4byte gMoveSelectionCursor
-_0802D0F0: .4byte gActiveBank
-_0802D0F4:
- ldrb r0, [r3]
- bl nullsub_7
-_0802D0FA:
- ldr r4, _0802D124 @ =gUnknown_03004344
- ldrb r0, [r4]
- movs r1, 0x2
- eors r0, r1
- strb r0, [r4]
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0802D128 @ =gMoveSelectionCursor
- ldr r0, _0802D12C @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bne _0802D130
- adds r0, r1, 0
- movs r1, 0
- bl sub_802E3B4
- b _0802D138
- .align 2, 0
-_0802D124: .4byte gUnknown_03004344
-_0802D128: .4byte gMoveSelectionCursor
-_0802D12C: .4byte gActiveBank
-_0802D130:
- ldrb r0, [r4]
- movs r1, 0x1B
- bl sub_802E3B4
-_0802D138:
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_802CA60
-
- thumb_func_start sub_802D148
-sub_802D148: @ 802D148
- push {lr}
- ldr r0, _0802D178 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0802D174
- movs r0, 0x5A
- bl m4aSongNumStop
- ldr r3, _0802D17C @ =gMain
- ldr r0, _0802D180 @ =0x0000043d
- adds r2, r3, r0
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, _0802D184 @ =gPreBattleCallback1
- ldr r0, [r0]
- str r0, [r3]
- ldr r0, _0802D188 @ =c2_8011A1C
- bl SetMainCallback2
-_0802D174:
- pop {r0}
- bx r0
- .align 2, 0
-_0802D178: .4byte gReceivedRemoteLinkPlayers
-_0802D17C: .4byte gMain
-_0802D180: .4byte 0x0000043d
-_0802D184: .4byte gPreBattleCallback1
-_0802D188: .4byte c2_8011A1C
- thumb_func_end sub_802D148
-
- thumb_func_start sub_802D18C
-sub_802D18C: @ 802D18C
- push {lr}
- ldr r0, _0802D1BC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802D1F2
- ldr r0, _0802D1C0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802D1D0
- bl sub_800832C
- ldr r1, _0802D1C4 @ =gBattleBankFunc
- ldr r0, _0802D1C8 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802D1CC @ =sub_802D148
- str r1, [r0]
- b _0802D1F2
- .align 2, 0
-_0802D1BC: .4byte gPaletteFade
-_0802D1C0: .4byte gBattleTypeFlags
-_0802D1C4: .4byte gBattleBankFunc
-_0802D1C8: .4byte gActiveBank
-_0802D1CC: .4byte sub_802D148
-_0802D1D0:
- movs r0, 0x5A
- bl m4aSongNumStop
- ldr r2, _0802D1F8 @ =gMain
- ldr r0, _0802D1FC @ =0x0000043d
- adds r3, r2, r0
- ldrb r1, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldr r0, _0802D200 @ =gPreBattleCallback1
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, [r2, 0x8]
- bl SetMainCallback2
-_0802D1F2:
- pop {r0}
- bx r0
- .align 2, 0
-_0802D1F8: .4byte gMain
-_0802D1FC: .4byte 0x0000043d
-_0802D200: .4byte gPreBattleCallback1
- thumb_func_end sub_802D18C
-
- thumb_func_start sub_802D204
-sub_802D204: @ 802D204
- push {lr}
- ldr r2, _0802D22C @ =gSprites
- ldr r1, _0802D230 @ =gObjectBankIDs
- ldr r0, _0802D234 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0802D238 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0802D228
- bl PlayerBufferExecCompleted
-_0802D228:
- pop {r0}
- bx r0
- .align 2, 0
-_0802D22C: .4byte gSprites
-_0802D230: .4byte gObjectBankIDs
-_0802D234: .4byte gActiveBank
-_0802D238: .4byte SpriteCallbackDummy
- thumb_func_end sub_802D204
-
- thumb_func_start sub_802D23C
-sub_802D23C: @ 802D23C
- push {lr}
- ldr r2, _0802D264 @ =gSprites
- ldr r1, _0802D268 @ =gObjectBankIDs
- ldr r0, _0802D26C @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0802D270 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0802D260
- bl PlayerBufferExecCompleted
-_0802D260:
- pop {r0}
- bx r0
- .align 2, 0
-_0802D264: .4byte gSprites
-_0802D268: .4byte gObjectBankIDs
-_0802D26C: .4byte gActiveBank
-_0802D270: .4byte SpriteCallbackDummy
- thumb_func_end sub_802D23C
-
- thumb_func_start sub_802D274
-sub_802D274: @ 802D274
- push {r4-r6,lr}
- ldr r6, _0802D2CC @ =gSprites
- ldr r5, _0802D2D0 @ =gObjectBankIDs
- ldr r4, _0802D2D4 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r6, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, [r0]
- ldr r0, _0802D2D8 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0802D2C6
- ldr r0, _0802D2DC @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- bl nullsub_10
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl FreeSpriteOamMatrix
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- bl PlayerBufferExecCompleted
-_0802D2C6:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D2CC: .4byte gSprites
-_0802D2D0: .4byte gObjectBankIDs
-_0802D2D4: .4byte gActiveBank
-_0802D2D8: .4byte SpriteCallbackDummy
-_0802D2DC: .4byte gSaveBlock2
- thumb_func_end sub_802D274
-
- thumb_func_start sub_802D2E0
-sub_802D2E0: @ 802D2E0
- push {lr}
- ldr r3, _0802D314 @ =gActiveBank
- ldrb r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r2, _0802D318 @ =0x02017810
- adds r1, r2
- ldrb r0, [r1, 0x9]
- subs r0, 0x1
- strb r0, [r1, 0x9]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0802D310
- ldrb r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0
- strb r0, [r1, 0x9]
- bl PlayerBufferExecCompleted
-_0802D310:
- pop {r0}
- bx r0
- .align 2, 0
-_0802D314: .4byte gActiveBank
-_0802D318: .4byte 0x02017810
- thumb_func_end sub_802D2E0
-
- thumb_func_start sub_802D31C
-sub_802D31C: @ 802D31C
- push {r4-r7,lr}
- movs r6, 0
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0802D340
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0802D374
- ldr r0, _0802D360 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802D374
-_0802D340:
- ldr r2, _0802D364 @ =gSprites
- ldr r1, _0802D368 @ =gHealthboxIDs
- ldr r0, _0802D36C @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0802D370 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0802D3AA
- b _0802D3A8
- .align 2, 0
-_0802D360: .4byte gBattleTypeFlags
-_0802D364: .4byte gSprites
-_0802D368: .4byte gHealthboxIDs
-_0802D36C: .4byte gActiveBank
-_0802D370: .4byte SpriteCallbackDummy
-_0802D374:
- ldr r2, _0802D45C @ =gSprites
- ldr r5, _0802D460 @ =gHealthboxIDs
- ldr r0, _0802D464 @ =gActiveBank
- ldrb r3, [r0]
- adds r0, r3, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r4, [r0]
- ldr r0, _0802D468 @ =SpriteCallbackDummy
- cmp r4, r0
- bne _0802D3AA
- movs r0, 0x2
- eors r3, r0
- adds r0, r3, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- cmp r0, r4
- bne _0802D3AA
-_0802D3A8:
- movs r6, 0x1
-_0802D3AA:
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _0802D3B6
- movs r6, 0
-_0802D3B6:
- cmp r6, 0
- bne _0802D3BC
- b _0802D4DA
-_0802D3BC:
- ldr r7, _0802D464 @ =gActiveBank
- ldrb r2, [r7]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r5, _0802D46C @ =0x02017810
- adds r4, r0, r5
- ldrb r1, [r4, 0x1]
- movs r3, 0x1
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _0802D3D8
- b _0802D4DA
-_0802D3D8:
- movs r6, 0x2
- adds r1, r6, 0
- eors r1, r2
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _0802D4DA
- ldrb r1, [r4]
- movs r3, 0x7F
- adds r0, r3, 0
- ands r0, r1
- strb r0, [r4]
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r2, [r1, 0x1]
- movs r4, 0x2
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrb r0, [r7]
- adds r1, r6, 0
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- ands r3, r1
- strb r3, [r0]
- ldrb r0, [r7]
- adds r1, r6, 0
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- ands r4, r1
- strb r4, [r0, 0x1]
- ldr r4, _0802D470 @ =0x000027f9
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- ldr r0, _0802D474 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0802D47C
- ldr r0, _0802D478 @ =gMPlay_BGM
- bl m4aMPlayContinue
- b _0802D488
- .align 2, 0
-_0802D45C: .4byte gSprites
-_0802D460: .4byte gHealthboxIDs
-_0802D464: .4byte gActiveBank
-_0802D468: .4byte SpriteCallbackDummy
-_0802D46C: .4byte 0x02017810
-_0802D470: .4byte 0x000027f9
-_0802D474: .4byte gBattleTypeFlags
-_0802D478: .4byte gMPlay_BGM
-_0802D47C:
- ldr r0, _0802D4E0 @ =gMPlay_BGM
- ldr r1, _0802D4E4 @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_0802D488:
- ldr r7, _0802D4E8 @ =gBattlePartyID
- ldr r4, _0802D4EC @ =gActiveBank
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _0802D4F0 @ =gPlayerParty
- adds r0, r5
- bl sub_80324F8
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0802D4BE
- ldrb r0, [r4]
- movs r1, 0x2
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- bl sub_80324F8
-_0802D4BE:
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802D4F4 @ =0x02017810
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0, 0x9]
- ldr r1, _0802D4F8 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802D4FC @ =sub_802D2E0
- str r1, [r0]
-_0802D4DA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D4E0: .4byte gMPlay_BGM
-_0802D4E4: .4byte 0x0000ffff
-_0802D4E8: .4byte gBattlePartyID
-_0802D4EC: .4byte gActiveBank
-_0802D4F0: .4byte gPlayerParty
-_0802D4F4: .4byte 0x02017810
-_0802D4F8: .4byte gBattleBankFunc
-_0802D4FC: .4byte sub_802D2E0
- thumb_func_end sub_802D31C
-
- thumb_func_start sub_802D500
-sub_802D500: @ 802D500
- push {r4-r7,lr}
- ldr r5, _0802D654 @ =gActiveBank
- ldrb r2, [r5]
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- ldr r4, _0802D658 @ =0x02017810
- adds r0, r4
- ldrb r1, [r0]
- movs r7, 0x88
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- bne _0802D530
- ldr r0, _0802D65C @ =gBattlePartyID
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0802D660 @ =gPlayerParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_0802D530:
- ldrb r0, [r5]
- movs r6, 0x2
- adds r2, r6, 0
- eors r2, r0
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r7, 0
- ands r0, r1
- cmp r0, 0
- bne _0802D55E
- ldr r0, _0802D65C @ =gBattlePartyID
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0802D660 @ =gPlayerParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_0802D55E:
- ldrb r2, [r5]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- movs r3, 0x8
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _0802D64C
- adds r1, r6, 0
- eors r1, r2
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _0802D64C
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0802D5EE
- ldr r0, _0802D664 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0802D5EE
- ldr r1, _0802D668 @ =gUnknown_0300434C
- ldrb r0, [r5]
- eors r0, r6
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802D66C @ =gSprites
- adds r0, r1
- bl DestroySprite
- ldr r4, _0802D670 @ =gHealthboxIDs
- ldrb r0, [r5]
- adds r1, r6, 0
- eors r1, r0
- adds r0, r1, r4
- ldrb r0, [r0]
- ldr r2, _0802D65C @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0802D660 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r5]
- eors r0, r6
- bl sub_804777C
- ldrb r0, [r5]
- eors r0, r6
- adds r0, r4
- ldrb r0, [r0]
- bl sub_8043DFC
-_0802D5EE:
- ldr r1, _0802D668 @ =gUnknown_0300434C
- ldr r4, _0802D654 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802D66C @ =gSprites
- adds r0, r1
- bl DestroySprite
- ldr r5, _0802D670 @ =gHealthboxIDs
- ldrb r1, [r4]
- adds r0, r1, r5
- ldrb r0, [r0]
- ldr r2, _0802D65C @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0802D660 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r4]
- bl sub_804777C
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl sub_8043DFC
- ldr r2, _0802D674 @ =0x02017840
- ldrb r1, [r2, 0x9]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x9]
- ldr r1, _0802D678 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802D67C @ =sub_802D31C
- str r1, [r0]
-_0802D64C:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D654: .4byte gActiveBank
-_0802D658: .4byte 0x02017810
-_0802D65C: .4byte gBattlePartyID
-_0802D660: .4byte gPlayerParty
-_0802D664: .4byte gBattleTypeFlags
-_0802D668: .4byte gUnknown_0300434C
-_0802D66C: .4byte gSprites
-_0802D670: .4byte gHealthboxIDs
-_0802D674: .4byte 0x02017840
-_0802D678: .4byte gBattleBankFunc
-_0802D67C: .4byte sub_802D31C
- thumb_func_end sub_802D500
-
- thumb_func_start sub_802D680
-sub_802D680: @ 802D680
- push {r4-r6,lr}
- ldr r2, _0802D710 @ =gSprites
- ldr r0, _0802D714 @ =gHealthboxIDs
- ldr r6, _0802D718 @ =gActiveBank
- ldrb r3, [r6]
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0802D71C @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0802D708
- lsls r0, r3, 1
- adds r0, r3
- lsls r0, 2
- ldr r5, _0802D720 @ =0x02017810
- adds r2, r0, r5
- ldrb r1, [r2, 0x1]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0802D708
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrb r0, [r6]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r2, [r1, 0x1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldr r4, _0802D724 @ =0x000027f9
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- ldrb r2, [r6]
- lsls r0, r2, 2
- adds r1, r5, 0
- subs r1, 0x10
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0802D6FC
- adds r0, r2, 0
- adds r1, r2, 0
- movs r3, 0x6
- bl move_anim_start_t4
-_0802D6FC:
- ldr r0, _0802D728 @ =gBattleBankFunc
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r0
- ldr r0, _0802D72C @ =sub_802D730
- str r0, [r1]
-_0802D708:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D710: .4byte gSprites
-_0802D714: .4byte gHealthboxIDs
-_0802D718: .4byte gActiveBank
-_0802D71C: .4byte SpriteCallbackDummy
-_0802D720: .4byte 0x02017810
-_0802D724: .4byte 0x000027f9
-_0802D728: .4byte gBattleBankFunc
-_0802D72C: .4byte sub_802D730
- thumb_func_end sub_802D680
-
- thumb_func_start sub_802D730
-sub_802D730: @ 802D730
- push {r4,lr}
- ldr r4, _0802D780 @ =gActiveBank
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802D784 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0802D77A
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- bne _0802D77A
- ldr r0, _0802D788 @ =gMPlay_BGM
- ldr r1, _0802D78C @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- ldr r2, _0802D790 @ =gBattlePartyID
- ldrb r1, [r4]
- lsls r0, r1, 1
- adds r0, r2
- ldrh r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r2, _0802D794 @ =gPlayerParty
- adds r0, r2
- bl sub_80324F8
- bl PlayerBufferExecCompleted
-_0802D77A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D780: .4byte gActiveBank
-_0802D784: .4byte 0x02017810
-_0802D788: .4byte gMPlay_BGM
-_0802D78C: .4byte 0x0000ffff
-_0802D790: .4byte gBattlePartyID
-_0802D794: .4byte gPlayerParty
- thumb_func_end sub_802D730
-
- thumb_func_start sub_802D798
-sub_802D798: @ 802D798
- push {r4-r6,lr}
- ldr r5, _0802D844 @ =gActiveBank
- ldrb r2, [r5]
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- ldr r6, _0802D848 @ =0x02017810
- adds r0, r6
- ldrb r1, [r0]
- movs r0, 0x88
- ands r0, r1
- cmp r0, 0
- bne _0802D7C6
- ldr r0, _0802D84C @ =gBattlePartyID
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0802D850 @ =gPlayerParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_0802D7C6:
- ldr r4, _0802D854 @ =gSprites
- ldr r0, _0802D858 @ =gUnknown_0300434C
- ldrb r2, [r5]
- adds r0, r2, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r3, r0, 2
- adds r0, r4, 0
- adds r0, 0x1C
- adds r0, r3, r0
- ldr r1, [r0]
- ldr r0, _0802D85C @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0802D83C
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _0802D83C
- adds r0, r3, r4
- bl DestroySprite
- ldr r4, _0802D860 @ =gHealthboxIDs
- ldrb r1, [r5]
- adds r0, r1, r4
- ldrb r0, [r0]
- ldr r2, _0802D84C @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0802D850 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r5]
- bl sub_804777C
- ldrb r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- bl sub_8043DFC
- ldrb r0, [r5]
- bl sub_8031F88
- ldr r1, _0802D864 @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802D868 @ =sub_802D680
- str r1, [r0]
-_0802D83C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D844: .4byte gActiveBank
-_0802D848: .4byte 0x02017810
-_0802D84C: .4byte gBattlePartyID
-_0802D850: .4byte gPlayerParty
-_0802D854: .4byte gSprites
-_0802D858: .4byte gUnknown_0300434C
-_0802D85C: .4byte SpriteCallbackDummy
-_0802D860: .4byte gHealthboxIDs
-_0802D864: .4byte gBattleBankFunc
-_0802D868: .4byte sub_802D680
- thumb_func_end sub_802D798
-
- thumb_func_start c3_0802FDF4
-c3_0802FDF4: @ 802D86C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- bne _0802D88E
- ldr r0, _0802D894 @ =gMPlay_BGM
- ldr r1, _0802D898 @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- adds r0, r4, 0
- bl DestroyTask
-_0802D88E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D894: .4byte gMPlay_BGM
-_0802D898: .4byte 0x0000ffff
- thumb_func_end c3_0802FDF4
-
- thumb_func_start bx_t1_healthbar_update
-bx_t1_healthbar_update: @ 802D89C
- push {r4-r6,lr}
- ldr r5, _0802D8DC @ =gActiveBank
- ldrb r0, [r5]
- ldr r6, _0802D8E0 @ =gHealthboxIDs
- adds r1, r0, r6
- ldrb r1, [r1]
- movs r2, 0
- movs r3, 0
- bl sub_8045C78
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r5]
- adds r0, r6
- ldrb r0, [r0]
- bl sub_8043DFC
- lsls r4, 16
- asrs r1, r4, 16
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0802D8E4
- ldrb r0, [r5]
- adds r0, r6
- ldrb r0, [r0]
- movs r2, 0
- bl sub_80440EC
- b _0802D8FE
- .align 2, 0
-_0802D8DC: .4byte gActiveBank
-_0802D8E0: .4byte gHealthboxIDs
-_0802D8E4:
- ldr r2, _0802D904 @ =gBattlePartyID
- ldrb r1, [r5]
- lsls r0, r1, 1
- adds r0, r2
- ldrh r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r2, _0802D908 @ =gPlayerParty
- adds r0, r2
- bl sub_80324F8
- bl PlayerBufferExecCompleted
-_0802D8FE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802D904: .4byte gBattlePartyID
-_0802D908: .4byte gPlayerParty
- thumb_func_end bx_t1_healthbar_update
-
- thumb_func_start sub_802D90C
-sub_802D90C: @ 802D90C
- push {lr}
- ldr r0, _0802D920 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- bne _0802D91A
- bl PlayerBufferExecCompleted
-_0802D91A:
- pop {r0}
- bx r0
- .align 2, 0
-_0802D920: .4byte gUnknown_03004210
- thumb_func_end sub_802D90C
-
- thumb_func_start sub_802D924
-sub_802D924: @ 802D924
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r1, _0802DA24 @ =gTasks
- lsls r0, 2
- add r0, r9
- lsls r0, 3
- adds r0, r1
- mov r8, r0
- ldrb r0, [r0, 0x8]
- mov r10, r0
- mov r1, r8
- ldrb r7, [r1, 0xC]
- str r7, [sp, 0x8]
- ldrh r2, [r1, 0xA]
- str r2, [sp, 0xC]
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0802D96A
- ldr r1, _0802DA28 @ =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r10, r0
- bne _0802D96A
- b _0802DA80
-_0802D96A:
- movs r0, 0x64
- mov r1, r10
- muls r1, r0
- ldr r0, _0802DA2C @ =gPlayerParty
- adds r6, r1, r0
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- movs r1, 0x19
- bl GetMonData
- str r0, [sp, 0x4]
- ldr r3, _0802DA30 @ =gExperienceTables
- adds r4, 0x1
- lsls r4, 2
- ldr r2, _0802DA34 @ =gBaseStats
- lsls r1, r5, 3
- subs r1, r5
- lsls r1, 2
- adds r1, r2
- ldrb r2, [r1, 0x13]
- movs r1, 0xCA
- lsls r1, 1
- muls r1, r2
- adds r4, r1
- adds r4, r3
- ldr r2, [r4]
- str r2, [sp]
- ldr r3, [sp, 0xC]
- lsls r1, r3, 16
- asrs r1, 16
- adds r0, r1
- cmp r0, r2
- bcc _0802DA58
- adds r0, r6, 0
- movs r1, 0x19
- mov r2, sp
- bl SetMonData
- adds r0, r6, 0
- bl CalculateMonStats
- ldr r2, [sp]
- add r0, sp, 0x4
- ldrh r0, [r0]
- subs r2, r0
- ldr r0, [sp, 0xC]
- subs r2, r0, r2
- ldr r4, _0802DA38 @ =gActiveBank
- ldrb r5, [r4]
- strb r7, [r4]
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x1
- movs r1, 0xB
- bl dp01_build_cmdbuf_x21_a_bb
- strb r5, [r4]
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0802DA40
- ldr r2, _0802DA28 @ =gBattlePartyID
- lsls r0, r7, 1
- adds r0, r2
- mov r1, r10
- ldrh r0, [r0]
- cmp r1, r0
- beq _0802DA1E
- movs r0, 0x2
- eors r7, r0
- lsls r0, r7, 1
- adds r0, r2
- ldrh r0, [r0]
- cmp r1, r0
- bne _0802DA40
-_0802DA1E:
- ldr r0, _0802DA3C @ =sub_802DCB0
- b _0802DA82
- .align 2, 0
-_0802DA24: .4byte gTasks
-_0802DA28: .4byte gBattlePartyID
-_0802DA2C: .4byte gPlayerParty
-_0802DA30: .4byte gExperienceTables
-_0802DA34: .4byte gBaseStats
-_0802DA38: .4byte gActiveBank
-_0802DA3C: .4byte sub_802DCB0
-_0802DA40:
- ldr r0, _0802DA50 @ =gTasks
- mov r2, r9
- lsls r1, r2, 2
- add r1, r9
- lsls r1, 3
- adds r1, r0
- ldr r0, _0802DA54 @ =sub_802DDC4
- b _0802DA84
- .align 2, 0
-_0802DA50: .4byte gTasks
-_0802DA54: .4byte sub_802DDC4
-_0802DA58:
- str r0, [sp, 0x4]
- add r2, sp, 0x4
- adds r0, r6, 0
- movs r1, 0x19
- bl SetMonData
- ldr r1, _0802DA78 @ =gBattleBankFunc
- ldr r3, [sp, 0x8]
- lsls r0, r3, 2
- adds r0, r1
- ldr r1, _0802DA7C @ =sub_802D90C
- str r1, [r0]
- mov r0, r9
- bl DestroyTask
- b _0802DA86
- .align 2, 0
-_0802DA78: .4byte gBattleBankFunc
-_0802DA7C: .4byte sub_802D90C
-_0802DA80:
- ldr r0, _0802DA98 @ =sub_802DA9C
-_0802DA82:
- mov r1, r8
-_0802DA84:
- str r0, [r1]
-_0802DA86:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DA98: .4byte sub_802DA9C
- thumb_func_end sub_802D924
-
- thumb_func_start sub_802DA9C
-sub_802DA9C: @ 802DA9C
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0802DB54 @ =gTasks
- lsls r2, r0, 2
- mov r8, r2
- add r8, r0
- mov r0, r8
- lsls r0, 3
- mov r8, r0
- add r8, r1
- mov r2, r8
- ldrb r1, [r2, 0x8]
- movs r0, 0xA
- ldrsh r2, [r2, r0]
- mov r9, r2
- mov r2, r8
- ldrb r2, [r2, 0xC]
- mov r10, r2
- movs r0, 0x64
- adds r6, r1, 0
- muls r6, r0
- ldr r0, _0802DB58 @ =gPlayerParty
- adds r6, r0
- adds r0, r6, 0
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r6, 0
- movs r1, 0x19
- bl GetMonData
- adds r3, r0, 0
- ldr r6, _0802DB5C @ =gExperienceTables
- lsls r1, r4, 2
- ldr r2, _0802DB60 @ =gBaseStats
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 2
- adds r0, r2
- ldrb r2, [r0, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r0, r2
- adds r1, r0
- adds r1, r6
- ldr r1, [r1]
- subs r3, r1
- adds r4, 0x1
- lsls r4, 2
- adds r4, r0
- adds r4, r6
- ldr r2, [r4]
- subs r2, r1
- ldr r0, _0802DB64 @ =gHealthboxIDs
- add r0, r10
- ldrb r1, [r0]
- mov r0, r9
- negs r0, r0
- str r0, [sp]
- mov r0, r10
- bl sub_8043D84
- movs r0, 0x21
- bl PlaySE
- ldr r0, _0802DB68 @ =sub_802DB6C
- mov r1, r8
- str r0, [r1]
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DB54: .4byte gTasks
-_0802DB58: .4byte gPlayerParty
-_0802DB5C: .4byte gExperienceTables
-_0802DB60: .4byte gBaseStats
-_0802DB64: .4byte gHealthboxIDs
-_0802DB68: .4byte sub_802DB6C
- thumb_func_end sub_802DA9C
-
- thumb_func_start sub_802DB6C
-sub_802DB6C: @ 802DB6C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r1, _0802DB98 @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r6, r0, r1
- ldrh r1, [r6, 0x1C]
- movs r2, 0x1C
- ldrsh r0, [r6, r2]
- cmp r0, 0xC
- bgt _0802DB9C
- adds r0, r1, 0x1
- strh r0, [r6, 0x1C]
- b _0802DC98
- .align 2, 0
-_0802DB98: .4byte gTasks
-_0802DB9C:
- ldrb r0, [r6, 0x8]
- mov r9, r0
- ldrh r2, [r6, 0xA]
- mov r10, r2
- ldrb r7, [r6, 0xC]
- ldr r5, _0802DC64 @ =gHealthboxIDs
- adds r5, r7, r5
- ldrb r1, [r5]
- adds r0, r7, 0
- movs r2, 0x1
- movs r3, 0
- bl sub_8045C78
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r5]
- bl sub_8043DFC
- lsls r4, 16
- asrs r4, 16
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- bne _0802DC98
- movs r0, 0x21
- bl m4aSongNumStop
- movs r0, 0x64
- mov r1, r9
- muls r1, r0
- ldr r0, _0802DC68 @ =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x38
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x19
- bl GetMonData
- str r0, [sp, 0x4]
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r3, _0802DC6C @ =gExperienceTables
- adds r4, 0x1
- lsls r4, 2
- ldr r2, _0802DC70 @ =gBaseStats
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x13]
- movs r0, 0xCA
- lsls r0, 1
- muls r0, r1
- adds r4, r0
- adds r4, r3
- ldr r1, [r4]
- str r1, [sp]
- mov r2, r10
- lsls r0, r2, 16
- asrs r4, r0, 16
- ldr r0, [sp, 0x4]
- adds r0, r4
- cmp r0, r1
- blt _0802DC7C
- adds r0, r5, 0
- movs r1, 0x19
- mov r2, sp
- bl SetMonData
- adds r0, r5, 0
- bl CalculateMonStats
- ldr r2, [sp]
- add r0, sp, 0x4
- ldrh r0, [r0]
- subs r2, r0
- subs r2, r4, r2
- ldr r4, _0802DC74 @ =gActiveBank
- ldrb r5, [r4]
- strb r7, [r4]
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x1
- movs r1, 0xB
- bl dp01_build_cmdbuf_x21_a_bb
- strb r5, [r4]
- ldr r0, _0802DC78 @ =sub_802DCB0
- str r0, [r6]
- b _0802DC98
- .align 2, 0
-_0802DC64: .4byte gHealthboxIDs
-_0802DC68: .4byte gPlayerParty
-_0802DC6C: .4byte gExperienceTables
-_0802DC70: .4byte gBaseStats
-_0802DC74: .4byte gActiveBank
-_0802DC78: .4byte sub_802DCB0
-_0802DC7C:
- str r0, [sp, 0x4]
- add r2, sp, 0x4
- adds r0, r5, 0
- movs r1, 0x19
- bl SetMonData
- ldr r1, _0802DCA8 @ =gBattleBankFunc
- lsls r0, r7, 2
- adds r0, r1
- ldr r1, _0802DCAC @ =sub_802D90C
- str r1, [r0]
- mov r0, r8
- bl DestroyTask
-_0802DC98:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DCA8: .4byte gBattleBankFunc
-_0802DCAC: .4byte sub_802D90C
- thumb_func_end sub_802DB6C
-
- thumb_func_start sub_802DCB0
-sub_802DCB0: @ 802DCB0
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0802DD04 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldrb r4, [r0, 0xC]
- ldrb r6, [r0, 0x8]
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0802DCE4
- ldr r1, _0802DD08 @ =gBattlePartyID
- movs r0, 0x2
- adds r2, r4, 0
- eors r2, r0
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r6, r0
- bne _0802DCE4
- adds r4, r2, 0
-_0802DCE4:
- adds r0, r4, 0
- adds r1, r4, 0
- adds r2, r4, 0
- movs r3, 0
- bl move_anim_start_t4
- ldr r0, _0802DD04 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _0802DD0C @ =sub_802DD10
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DD04: .4byte gTasks
-_0802DD08: .4byte gBattlePartyID
-_0802DD0C: .4byte sub_802DD10
- thumb_func_end sub_802DCB0
-
- thumb_func_start sub_802DD10
-sub_802DD10: @ 802DD10
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _0802DD78 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r2, r0, r1
- ldrb r5, [r2, 0xC]
- lsls r0, r5, 1
- adds r0, r5
- lsls r0, 2
- ldr r1, _0802DD7C @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0802DDAE
- ldrb r4, [r2, 0x8]
- movs r0, 0x64
- adds r1, r4, 0
- muls r1, r0
- ldr r0, _0802DD80 @ =gPlayerParty
- adds r7, r1, r0
- adds r0, r7, 0
- movs r1, 0x38
- bl GetMonData
- bl IsDoubleBattle
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0802DD8C
- ldr r1, _0802DD84 @ =gBattlePartyID
- movs r0, 0x2
- adds r2, r5, 0
- eors r2, r0
- lsls r0, r2, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r4, r0
- bne _0802DD8C
- ldr r0, _0802DD88 @ =gHealthboxIDs
- adds r0, r2, r0
- ldrb r0, [r0]
- adds r1, r7, 0
- movs r2, 0
- bl sub_8045A5C
- b _0802DDA0
- .align 2, 0
-_0802DD78: .4byte gTasks
-_0802DD7C: .4byte 0x02017810
-_0802DD80: .4byte gPlayerParty
-_0802DD84: .4byte gBattlePartyID
-_0802DD88: .4byte gHealthboxIDs
-_0802DD8C:
- ldr r0, _0802DDB4 @ =gHealthboxIDs
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0x64
- muls r1, r4
- ldr r2, _0802DDB8 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
-_0802DDA0:
- ldr r0, _0802DDBC @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _0802DDC0 @ =sub_802DDC4
- str r0, [r1]
-_0802DDAE:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DDB4: .4byte gHealthboxIDs
-_0802DDB8: .4byte gPlayerParty
-_0802DDBC: .4byte gTasks
-_0802DDC0: .4byte sub_802DDC4
- thumb_func_end sub_802DD10
-
- thumb_func_start sub_802DDC4
-sub_802DDC4: @ 802DDC4
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _0802DE00 @ =gTasks
- lsls r4, r5, 2
- adds r4, r5
- lsls r4, 3
- adds r4, r0
- ldrb r1, [r4, 0x8]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802DE04 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x38
- bl GetMonData
- ldrb r0, [r4, 0xC]
- ldr r1, _0802DE08 @ =gBattleBankFunc
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802DE0C @ =sub_802D90C
- str r1, [r0]
- adds r0, r5, 0
- bl DestroyTask
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DE00: .4byte gTasks
-_0802DE04: .4byte gPlayerParty
-_0802DE08: .4byte gBattleBankFunc
-_0802DE0C: .4byte sub_802D90C
- thumb_func_end sub_802DDC4
-
- thumb_func_start sub_802DE10
-sub_802DE10: @ 802DE10
- push {r4-r6,lr}
- ldr r6, _0802DE94 @ =gSprites
- ldr r5, _0802DE98 @ =gObjectBankIDs
- ldr r4, _0802DE9C @ =gActiveBank
- ldrb r2, [r4]
- adds r0, r2, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r3, 0x22
- ldrsh r1, [r0, r3]
- movs r3, 0x26
- ldrsh r0, [r0, r3]
- adds r1, r0
- cmp r1, 0xA0
- ble _0802DE8C
- ldr r1, _0802DEA0 @ =gBattlePartyID
- lsls r0, r2, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0802DEA4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl nullsub_9
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- bl DestroySprite
- ldr r1, _0802DEA8 @ =gHealthboxIDs
- ldrb r0, [r4]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8043DB0
- bl PlayerBufferExecCompleted
-_0802DE8C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DE94: .4byte gSprites
-_0802DE98: .4byte gObjectBankIDs
-_0802DE9C: .4byte gActiveBank
-_0802DEA0: .4byte gBattlePartyID
-_0802DEA4: .4byte gPlayerParty
-_0802DEA8: .4byte gHealthboxIDs
- thumb_func_end sub_802DE10
-
- thumb_func_start sub_802DEAC
-sub_802DEAC: @ 802DEAC
- push {r4-r6,lr}
- ldr r6, _0802DF04 @ =gActiveBank
- ldrb r2, [r6]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r1, _0802DF08 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0802DEFC
- ldr r5, _0802DF0C @ =gObjectBankIDs
- adds r0, r2, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _0802DF10 @ =gSprites
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldr r1, _0802DF14 @ =gHealthboxIDs
- ldrb r0, [r6]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8043DB0
- bl PlayerBufferExecCompleted
-_0802DEFC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DF04: .4byte gActiveBank
-_0802DF08: .4byte 0x02017810
-_0802DF0C: .4byte gObjectBankIDs
-_0802DF10: .4byte gSprites
-_0802DF14: .4byte gHealthboxIDs
- thumb_func_end sub_802DEAC
-
- thumb_func_start sub_802DF18
-sub_802DF18: @ 802DF18
- push {lr}
- ldr r0, _0802DF2C @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- bne _0802DF26
- bl PlayerBufferExecCompleted
-_0802DF26:
- pop {r0}
- bx r0
- .align 2, 0
-_0802DF2C: .4byte gUnknown_03004210
- thumb_func_end sub_802DF18
-
- thumb_func_start sub_802DF30
-sub_802DF30: @ 802DF30
- push {r4,lr}
- ldr r0, _0802DF70 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802DF6A
- ldr r1, _0802DF74 @ =gBattleBankFunc
- ldr r2, _0802DF78 @ =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802DF7C @ =sub_802DF88
- str r1, [r0]
- ldr r3, _0802DF80 @ =gTasks
- ldr r1, _0802DF84 @ =gUnknown_0300434C
- ldrb r0, [r2]
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r3
- ldrb r4, [r1, 0x8]
- bl DestroyTask
- adds r0, r4, 0
- bl sub_8094E20
-_0802DF6A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802DF70: .4byte gPaletteFade
-_0802DF74: .4byte gBattleBankFunc
-_0802DF78: .4byte gActiveBank
-_0802DF7C: .4byte sub_802DF88
-_0802DF80: .4byte gTasks
-_0802DF84: .4byte gUnknown_0300434C
- thumb_func_end sub_802DF30
-
- thumb_func_start sub_802DF88
-sub_802DF88: @ 802DF88
- push {lr}
- ldr r0, _0802DFB8 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _0802DFBC @ =sub_800F808
- cmp r1, r0
- bne _0802DFF8
- ldr r0, _0802DFC0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802DFF8
- ldr r0, _0802DFC4 @ =gUnknown_0202E8F4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0802DFD0
- ldr r0, _0802DFC8 @ =gUnknown_0202E8F5
- ldrb r1, [r0]
- ldr r2, _0802DFCC @ =gUnknown_02038470
- movs r0, 0x1
- bl dp01_build_cmdbuf_x22_a_three_bytes
- b _0802DFDA
- .align 2, 0
-_0802DFB8: .4byte gMain
-_0802DFBC: .4byte sub_800F808
-_0802DFC0: .4byte gPaletteFade
-_0802DFC4: .4byte gUnknown_0202E8F4
-_0802DFC8: .4byte gUnknown_0202E8F5
-_0802DFCC: .4byte gUnknown_02038470
-_0802DFD0:
- movs r0, 0x1
- movs r1, 0x6
- movs r2, 0
- bl dp01_build_cmdbuf_x22_a_three_bytes
-_0802DFDA:
- ldr r1, _0802DFFC @ =gBattleBufferA
- ldr r0, _0802E000 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0x1
- bne _0802DFF4
- bl b_link_standby_message
-_0802DFF4:
- bl PlayerBufferExecCompleted
-_0802DFF8:
- pop {r0}
- bx r0
- .align 2, 0
-_0802DFFC: .4byte gBattleBufferA
-_0802E000: .4byte gActiveBank
- thumb_func_end sub_802DF88
-
- thumb_func_start sub_802E004
-sub_802E004: @ 802E004
- push {lr}
- ldr r0, _0802E02C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802E028
- ldr r1, _0802E030 @ =gBattleBankFunc
- ldr r0, _0802E034 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0802E038 @ =sub_802E03C
- str r1, [r0]
- bl nullsub_14
- bl sub_80A6DCC
-_0802E028:
- pop {r0}
- bx r0
- .align 2, 0
-_0802E02C: .4byte gPaletteFade
-_0802E030: .4byte gBattleBankFunc
-_0802E034: .4byte gActiveBank
-_0802E038: .4byte sub_802E03C
- thumb_func_end sub_802E004
-
- thumb_func_start sub_802E03C
-sub_802E03C: @ 802E03C
- push {lr}
- ldr r0, _0802E068 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _0802E06C @ =sub_800F808
- cmp r1, r0
- bne _0802E062
- ldr r0, _0802E070 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0802E062
- ldr r0, _0802E074 @ =gScriptItemId
- ldrh r1, [r0]
- movs r0, 0x1
- bl dp01_build_cmdbuf_x23_aa_0
- bl PlayerBufferExecCompleted
-_0802E062:
- pop {r0}
- bx r0
- .align 2, 0
-_0802E068: .4byte gMain
-_0802E06C: .4byte sub_800F808
-_0802E070: .4byte gPaletteFade
-_0802E074: .4byte gScriptItemId
- thumb_func_end sub_802E03C
-
- thumb_func_start bx_wait_t1
-bx_wait_t1: @ 802E078
- push {lr}
- ldr r0, _0802E0A4 @ =gDoingBattleAnim
- ldrb r0, [r0]
- cmp r0, 0
- beq _0802E09A
- ldr r0, _0802E0A8 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802E0AC @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0802E09E
-_0802E09A:
- bl PlayerBufferExecCompleted
-_0802E09E:
- pop {r0}
- bx r0
- .align 2, 0
-_0802E0A4: .4byte gDoingBattleAnim
-_0802E0A8: .4byte gActiveBank
-_0802E0AC: .4byte 0x02017810
- thumb_func_end bx_wait_t1
-
- thumb_func_start bx_blink_t1
-bx_blink_t1: @ 802E0B0
- push {r4,lr}
- ldr r1, _0802E0EC @ =gObjectBankIDs
- ldr r0, _0802E0F0 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- ldr r2, _0802E0F4 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r2
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x20
- bne _0802E0FC
- movs r3, 0
- movs r0, 0
- strh r0, [r4, 0x30]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- subs r0, 0x5
- ands r0, r1
- strb r0, [r2]
- ldr r0, _0802E0F8 @ =gDoingBattleAnim
- strb r3, [r0]
- bl PlayerBufferExecCompleted
- b _0802E126
- .align 2, 0
-_0802E0EC: .4byte gObjectBankIDs
-_0802E0F0: .4byte gActiveBank
-_0802E0F4: .4byte gSprites
-_0802E0F8: .4byte gDoingBattleAnim
-_0802E0FC:
- ldrh r0, [r4, 0x30]
- movs r1, 0x3
- ands r0, r1
- cmp r0, 0
- bne _0802E120
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_0802E120:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
-_0802E126:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end bx_blink_t1
-
- thumb_func_start sub_802E12C
-sub_802E12C: @ 802E12C
- push {r4-r6,lr}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r0, _0802E180 @ =gActiveBank
- ldrb r4, [r0]
- lsls r4, 9
- ldr r0, _0802E184 @ =gUnknown_02023A64
- adds r4, r0
- ldr r5, _0802E188 @ =gDisplayedStringBattle
- adds r0, r5, 0
- bl StringCopy
- lsls r0, r6, 1
- adds r4, r0
- ldrh r1, [r4]
- movs r0, 0xD
- muls r1, r0
- ldr r0, _0802E18C @ =gMoveNames
- adds r1, r0
- adds r0, r5, 0
- bl StringAppend
- ldr r4, _0802E190 @ =gUnknown_03004210
- adds r1, r5, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 18
- movs r2, 0xC0
- lsls r2, 18
- adds r0, r2
- lsrs r2, r0, 16
- movs r0, 0x1
- ands r0, r6
- movs r3, 0x1
- cmp r0, 0
- beq _0802E176
- movs r3, 0xB
-_0802E176:
- cmp r6, 0x1
- bgt _0802E194
- movs r0, 0x37
- b _0802E196
- .align 2, 0
-_0802E180: .4byte gActiveBank
-_0802E184: .4byte gUnknown_02023A64
-_0802E188: .4byte gDisplayedStringBattle
-_0802E18C: .4byte gMoveNames
-_0802E190: .4byte gUnknown_03004210
-_0802E194:
- movs r0, 0x39
-_0802E196:
- str r0, [sp]
- adds r0, r4, 0
- bl InitWindow
- ldr r0, _0802E1AC @ =gUnknown_03004210
- bl sub_8002F44
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E1AC: .4byte gUnknown_03004210
- thumb_func_end sub_802E12C
-
- thumb_func_start sub_802E1B0
-sub_802E1B0: @ 802E1B0
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r0, _0802E208 @ =gActiveBank
- ldrb r4, [r0]
- lsls r4, 9
- ldr r0, _0802E20C @ =gUnknown_02023A64
- adds r4, r0
- ldr r5, _0802E210 @ =gUnknown_03004348
- movs r0, 0
- strb r0, [r5]
- ldr r0, _0802E214 @ =gUnknown_03004210
- ldr r1, _0802E218 @ =0x00001016
- movs r2, 0x14
- str r2, [sp]
- movs r2, 0x3A
- str r2, [sp, 0x4]
- movs r2, 0x1
- movs r3, 0x37
- bl FillWindowRect
- movs r6, 0
-_0802E1DA:
- lsls r0, r6, 24
- lsrs r0, 24
- bl nullsub_7
- adds r0, r6, 0
- ldr r1, _0802E21C @ =gUnknown_08400D49
- bl sub_802E12C
- ldrh r0, [r4]
- cmp r0, 0
- beq _0802E1F6
- ldrb r0, [r5]
- adds r0, 0x1
- strb r0, [r5]
-_0802E1F6:
- adds r4, 0x2
- adds r6, 0x1
- cmp r6, 0x3
- ble _0802E1DA
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E208: .4byte gActiveBank
-_0802E20C: .4byte gUnknown_02023A64
-_0802E210: .4byte gUnknown_03004348
-_0802E214: .4byte gUnknown_03004210
-_0802E218: .4byte 0x00001016
-_0802E21C: .4byte gUnknown_08400D49
- thumb_func_end sub_802E1B0
-
- thumb_func_start sub_802E220
-sub_802E220: @ 802E220
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r4, _0802E2B8 @ =gBattleBufferA
- ldr r6, _0802E2BC @ =gActiveBank
- ldrb r0, [r6]
- lsls r1, r0, 9
- adds r0, r4, 0x2
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0802E2B0
- adds r4, 0x4
- adds r4, r1, r4
- ldr r2, _0802E2C0 @ =gDisplayedStringBattle
- ldr r1, _0802E2C4 @ =gUnknown_08400D49
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- movs r1, 0xFC
- strb r1, [r2]
- movs r0, 0x11
- strb r0, [r2, 0x1]
- movs r0, 0x2
- strb r0, [r2, 0x2]
- adds r2, 0x3
- strb r1, [r2]
- movs r0, 0x14
- strb r0, [r2, 0x1]
- movs r0, 0x6
- strb r0, [r2, 0x2]
- adds r2, 0x3
- ldr r5, _0802E2C8 @ =gMoveSelectionCursor
- ldrb r1, [r6]
- adds r1, r5
- adds r0, r4, 0
- adds r0, 0x8
- ldrb r1, [r1]
- adds r0, r1
- ldrb r1, [r0]
- adds r0, r2, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r2, r0, 0
- movs r0, 0xBA
- strb r0, [r2]
- adds r2, 0x1
- ldrb r0, [r6]
- adds r0, r5
- adds r4, 0xC
- ldrb r0, [r0]
- adds r4, r0
- ldrb r1, [r4]
- adds r0, r2, 0
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r4, _0802E2CC @ =gUnknown_03004210
- ldr r1, _0802E2C0 @ =gDisplayedStringBattle
- ldr r2, _0802E2D0 @ =0x000002a2
- movs r0, 0x37
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x19
- bl InitWindow
- adds r0, r4, 0
- bl sub_8002F44
-_0802E2B0:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E2B8: .4byte gBattleBufferA
-_0802E2BC: .4byte gActiveBank
-_0802E2C0: .4byte gDisplayedStringBattle
-_0802E2C4: .4byte gUnknown_08400D49
-_0802E2C8: .4byte gMoveSelectionCursor
-_0802E2CC: .4byte gUnknown_03004210
-_0802E2D0: .4byte 0x000002a2
- thumb_func_end sub_802E220
-
- thumb_func_start sub_802E2D4
-sub_802E2D4: @ 802E2D4
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r4, _0802E314 @ =gBattleBufferA
- ldr r5, _0802E318 @ =gActiveBank
- ldrb r0, [r5]
- lsls r1, r0, 9
- adds r0, r4, 0x2
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0802E328
- ldr r4, _0802E31C @ =gUnknown_03004210
- ldr r1, _0802E320 @ =0x00001016
- movs r0, 0x1C
- str r0, [sp]
- movs r0, 0x3A
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0x17
- movs r3, 0x37
- bl FillWindowRect
- ldr r1, _0802E324 @ =gUnknown_08400D52
- movs r2, 0xA4
- lsls r2, 2
- movs r0, 0x37
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x13
- bl InitWindow
- b _0802E388
- .align 2, 0
-_0802E314: .4byte gBattleBufferA
-_0802E318: .4byte gActiveBank
-_0802E31C: .4byte gUnknown_03004210
-_0802E320: .4byte 0x00001016
-_0802E324: .4byte gUnknown_08400D52
-_0802E328:
- adds r4, 0x4
- adds r4, r1, r4
- ldr r3, _0802E398 @ =gDisplayedStringBattle
- ldr r1, _0802E39C @ =gUnknown_08400D49
- adds r0, r3, 0
- bl StringCopy
- adds r3, r0, 0
- ldr r2, _0802E3A0 @ =gBattleMoves
- ldr r1, _0802E3A4 @ =gMoveSelectionCursor
- ldrb r0, [r5]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r0
- ldrh r1, [r4]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- lsls r1, r0, 3
- subs r1, r0
- ldr r0, _0802E3A8 @ =gTypeNames
- adds r1, r0
- adds r0, r3, 0
- bl StringCopy
- ldr r4, _0802E3AC @ =gUnknown_03004210
- ldr r1, _0802E3B0 @ =0x00001016
- movs r0, 0x1C
- str r0, [sp]
- movs r0, 0x3A
- str r0, [sp, 0x4]
- adds r0, r4, 0
- movs r2, 0x17
- movs r3, 0x39
- bl FillWindowRect
- ldr r1, _0802E398 @ =gDisplayedStringBattle
- movs r2, 0xB0
- lsls r2, 2
- movs r0, 0x39
- str r0, [sp]
- adds r0, r4, 0
- movs r3, 0x17
- bl InitWindow
-_0802E388:
- ldr r0, _0802E3AC @ =gUnknown_03004210
- bl sub_8002F44
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E398: .4byte gDisplayedStringBattle
-_0802E39C: .4byte gUnknown_08400D49
-_0802E3A0: .4byte gBattleMoves
-_0802E3A4: .4byte gMoveSelectionCursor
-_0802E3A8: .4byte gTypeNames
-_0802E3AC: .4byte gUnknown_03004210
-_0802E3B0: .4byte 0x00001016
- thumb_func_end sub_802E2D4
-
- thumb_func_start sub_802E3B4
-sub_802E3B4: @ 802E3B4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x48
- bl sub_814A958
- ldr r1, _0802E3DC @ =gUnknown_081FAE89
- lsls r4, 1
- adds r0, r4, r1
- ldrb r0, [r0]
- adds r1, 0x1
- adds r4, r1
- ldrb r1, [r4]
- bl sub_814A880
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E3DC: .4byte gUnknown_081FAE89
- thumb_func_end sub_802E3B4
-
- thumb_func_start nullsub_7
-nullsub_7: @ 802E3E0
- bx lr
- thumb_func_end nullsub_7
-
- thumb_func_start sub_802E3E4
-sub_802E3E4: @ 802E3E4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2A
- bl sub_814A958
- ldr r1, _0802E40C @ =gUnknown_081FAE91
- lsls r4, 1
- adds r0, r4, r1
- ldrb r0, [r0]
- adds r1, 0x1
- adds r4, r1
- ldrb r1, [r4]
- bl sub_814A880
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0802E40C: .4byte gUnknown_081FAE91
- thumb_func_end sub_802E3E4
-
- thumb_func_start nullsub_8
-nullsub_8: @ 802E410
- bx lr
- thumb_func_end nullsub_8
-
- thumb_func_start sub_802E414
-sub_802E414: @ 802E414
- push {lr}
- ldr r0, _0802E420 @ =ReshowBattleScreenAfterMenu
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0802E420: .4byte ReshowBattleScreenAfterMenu
- thumb_func_end sub_802E414
-
- thumb_func_start sub_802E424
-sub_802E424: @ 802E424
- push {lr}
- ldr r0, _0802E430 @ =ReshowBattleScreenAfterMenu
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0802E430: .4byte ReshowBattleScreenAfterMenu
- thumb_func_end sub_802E424
-
- thumb_func_start sub_802E434
-sub_802E434: @ 802E434
- push {lr}
- ldr r0, _0802E458 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802E45C @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0802E452
- bl PlayerBufferExecCompleted
-_0802E452:
- pop {r0}
- bx r0
- .align 2, 0
-_0802E458: .4byte gActiveBank
-_0802E45C: .4byte 0x02017810
- thumb_func_end sub_802E434
-
- thumb_func_start sub_802E460
-sub_802E460: @ 802E460
- push {lr}
- ldr r0, _0802E484 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0802E488 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0802E47E
- bl PlayerBufferExecCompleted
-_0802E47E:
- pop {r0}
- bx r0
- .align 2, 0
-_0802E484: .4byte gActiveBank
-_0802E488: .4byte 0x02017810
- thumb_func_end sub_802E460
-
- thumb_func_start b_link_standby_message
-b_link_standby_message: @ 802E48C
- push {lr}
- sub sp, 0x4
- ldr r0, _0802E4BC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0802E4B6
- ldr r0, _0802E4C0 @ =gUnknown_030042A4
- movs r1, 0
- strh r1, [r0]
- ldr r0, _0802E4C4 @ =gUnknown_030042A0
- strh r1, [r0]
- ldr r0, _0802E4C8 @ =gUnknown_03004210
- ldr r1, _0802E4CC @ =gUnknown_08400CE0
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
-_0802E4B6:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0802E4BC: .4byte gBattleTypeFlags
-_0802E4C0: .4byte gUnknown_030042A4
-_0802E4C4: .4byte gUnknown_030042A0
-_0802E4C8: .4byte gUnknown_03004210
-_0802E4CC: .4byte gUnknown_08400CE0
- thumb_func_end b_link_standby_message
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_9.s b/asm/battle_9.s
index fffb56dc9..e92c2db33 100644
--- a/asm/battle_9.s
+++ b/asm/battle_9.s
@@ -6,8 +6,8 @@
.text
- thumb_func_start ai_switch_perish_song
-ai_switch_perish_song: @ 8035FEC
+ thumb_func_start AI_SwitchIfPerishSong
+AI_SwitchIfPerishSong: @ 8035FEC
push {lr}
ldr r1, _08036038 @ =gStatuses3
ldr r0, _0803603C @ =gActiveBank
@@ -41,7 +41,7 @@ ai_switch_perish_song: @ 8035FEC
movs r0, 0x1
movs r1, 0x2
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
movs r0, 0x1
b _0803604E
.align 2, 0
@@ -55,10 +55,10 @@ _0803604C:
_0803604E:
pop {r1}
bx r1
- thumb_func_end ai_switch_perish_song
+ thumb_func_end AI_SwitchIfPerishSong
- thumb_func_start sub_8036054
-sub_8036054: @ 8036054
+ thumb_func_start AI_SwitchIfWonderguard
+AI_SwitchIfWonderguard: @ 8036054
push {r4-r7,lr}
mov r7, r9
mov r6, r8
@@ -86,7 +86,7 @@ _08036070:
movs r0, 0x1
movs r1, 0x2
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
movs r0, 0x1
b _080361CA
.align 2, 0
@@ -136,7 +136,7 @@ _080360D8:
ldrh r1, [r4]
mov r3, r8
ldrb r2, [r3]
- bl ai_rate_move
+ bl AI_TypeCalc
lsls r0, 24
lsrs r1, r0, 24
movs r0, 0x2
@@ -211,7 +211,7 @@ _0803617C:
beq _080361BC
ldrh r1, [r5]
ldrb r2, [r7]
- bl ai_rate_move
+ bl AI_TypeCalc
lsls r0, 24
lsrs r1, r0, 24
movs r0, 0x2
@@ -250,7 +250,7 @@ _080361D8: .4byte gBattleMons
_080361DC: .4byte gActiveBank
_080361E0: .4byte gEnemyParty
_080361E4: .4byte gBattlePartyID
- thumb_func_end sub_8036054
+ thumb_func_end AI_SwitchIfWonderguard
thumb_func_start sub_80361E8
sub_80361E8: @ 80361E8
@@ -410,7 +410,7 @@ _0803630C:
movs r0, 0x1
movs r1, 0x2
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
movs r0, 0x1
b _08036402
.align 2, 0
@@ -521,8 +521,8 @@ _08036402:
bx r1
thumb_func_end sub_80361E8
- thumb_func_start ai_switchout_natural_cure
-ai_switchout_natural_cure: @ 8036410
+ thumb_func_start AI_SwitchIfNaturalCure
+AI_SwitchIfNaturalCure: @ 8036410
push {r4,r5,lr}
ldr r3, _08036468 @ =gBattleMons
ldr r5, _0803646C @ =gActiveBank
@@ -634,7 +634,7 @@ _080364E0:
movs r0, 0x1
movs r1, 0x2
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
_080364FE:
movs r0, 0x1
_08036500:
@@ -645,7 +645,7 @@ _08036500:
_08036508: .4byte gActiveBank
_0803650C: .4byte 0x02000000
_08036510: .4byte 0x000160c8
- thumb_func_end ai_switchout_natural_cure
+ thumb_func_end AI_SwitchIfNaturalCure
thumb_func_start ai_has_super_effective_move_on_field
ai_has_super_effective_move_on_field: @ 8036514
@@ -693,7 +693,7 @@ _08036550:
ldrh r1, [r5]
mov r3, r9
ldrb r2, [r3]
- bl ai_rate_move
+ bl AI_TypeCalc
lsls r0, 24
lsrs r1, r0, 24
movs r0, 0x2
@@ -770,7 +770,7 @@ _080365F2:
ldrh r1, [r5]
mov r3, r9
ldrb r2, [r3]
- bl ai_rate_move
+ bl AI_TypeCalc
lsls r0, 24
lsrs r1, r0, 24
movs r0, 0x2
@@ -808,8 +808,8 @@ _08036654: .4byte gBattleMons
_08036658: .4byte gActiveBank
thumb_func_end ai_has_super_effective_move_on_field
- thumb_func_start ai_is_too_invested_in_stat_buffs
-ai_is_too_invested_in_stat_buffs: @ 803665C
+ thumb_func_start AI_AreStatsRaised
+AI_AreStatsRaised: @ 803665C
push {r4,lr}
movs r4, 0
ldr r1, _0803669C @ =gBattleMons
@@ -848,7 +848,7 @@ _08036696:
.align 2, 0
_0803669C: .4byte gBattleMons
_080366A0: .4byte gActiveBank
- thumb_func_end ai_is_too_invested_in_stat_buffs
+ thumb_func_end AI_AreStatsRaised
thumb_func_start sub_80366A4
sub_80366A4: @ 80366A4
@@ -958,7 +958,7 @@ _08036768:
movs r0, 0x1
movs r1, 0x2
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
movs r0, 0x1
b _080368DA
.align 2, 0
@@ -1061,7 +1061,7 @@ _08036850:
adds r0, r1
ldrh r0, [r0]
adds r1, r4, 0
- bl ai_rate_move
+ bl AI_TypeCalc
ldr r1, [sp]
ands r1, r0
cmp r1, 0
@@ -1096,7 +1096,7 @@ _0803688E:
beq _080368CA
ldrh r1, [r5]
ldrb r2, [r7]
- bl ai_rate_move
+ bl AI_TypeCalc
lsls r0, 24
lsrs r1, r0, 24
movs r0, 0x2
@@ -1140,8 +1140,8 @@ _080368FC: .4byte gBattleMons
_08036900: .4byte gEnemyParty
thumb_func_end sub_80366A4
- thumb_func_start sub_8036904
-sub_8036904: @ 8036904
+ thumb_func_start AI_ShouldSwitch
+AI_ShouldSwitch: @ 8036904
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -1331,11 +1331,11 @@ _08036A7E:
mov r2, r8
cmp r2, 0
beq _08036AFC
- bl ai_switch_perish_song
+ bl AI_SwitchIfPerishSong
lsls r0, 24
cmp r0, 0
bne _08036AE4
- bl sub_8036054
+ bl AI_SwitchIfWonderguard
lsls r0, 24
cmp r0, 0
bne _08036AE4
@@ -1343,7 +1343,7 @@ _08036A7E:
lsls r0, 24
cmp r0, 0
bne _08036AE4
- bl ai_switchout_natural_cure
+ bl AI_SwitchIfNaturalCure
lsls r0, 24
cmp r0, 0
bne _08036AE4
@@ -1352,7 +1352,7 @@ _08036A7E:
lsls r0, 24
cmp r0, 0
bne _08036AFC
- bl ai_is_too_invested_in_stat_buffs
+ bl AI_AreStatsRaised
lsls r0, 24
cmp r0, 0
bne _08036AFC
@@ -1386,7 +1386,7 @@ _08036AFE:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_8036904
+ thumb_func_end AI_ShouldSwitch
thumb_func_start sub_8036B0C
sub_8036B0C: @ 8036B0C
@@ -1399,7 +1399,7 @@ sub_8036B0C: @ 8036B0C
bne _08036B1C
b _08036C2E
_08036B1C:
- bl sub_8036904
+ bl AI_ShouldSwitch
lsls r0, 24
cmp r0, 0
bne _08036B28
@@ -1521,7 +1521,7 @@ _08036C18: .4byte 0x00016068
_08036C1C: .4byte gActiveBank
_08036C20: .4byte 0x000160c8
_08036C24:
- bl sub_803708C
+ bl AI_ShouldUseItem
lsls r0, 24
cmp r0, 0
bne _08036C40
@@ -1533,7 +1533,7 @@ _08036C2E:
lsls r2, 8
movs r0, 0x1
movs r1, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
_08036C40:
pop {r4-r6}
pop {r0}
@@ -2083,8 +2083,8 @@ _08037086:
bx r1
thumb_func_end ai_identify_item_effect
- thumb_func_start sub_803708C
-sub_803708C: @ 803708C
+ thumb_func_start AI_ShouldUseItem
+AI_ShouldUseItem: @ 803708C
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -2623,7 +2623,7 @@ _080374AE:
movs r0, 0x1
movs r1, 0x1
movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
+ bl Emitcmd33
ldr r1, _080374DC @ =0x02000000
ldr r0, _080374E0 @ =gActiveBank
ldrb r0, [r0]
@@ -2665,1416 +2665,6 @@ _080374FA:
pop {r4-r7}
pop {r1}
bx r1
- thumb_func_end sub_803708C
-
- thumb_func_start nullsub_47
-nullsub_47: @ 803750C
- bx lr
- thumb_func_end nullsub_47
-
- thumb_func_start SetBankFuncToLinkOpponentBufferRunCommand
-SetBankFuncToLinkOpponentBufferRunCommand: @ 8037510
- ldr r1, _08037520 @ =gBattleBankFunc
- ldr r0, _08037524 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08037528 @ =sub_803752C
- str r1, [r0]
- bx lr
- .align 2, 0
-_08037520: .4byte gBattleBankFunc
-_08037524: .4byte gActiveBank
-_08037528: .4byte sub_803752C
- thumb_func_end SetBankFuncToLinkOpponentBufferRunCommand
-
- thumb_func_start sub_803752C
-sub_803752C: @ 803752C
- push {lr}
- ldr r2, _08037560 @ =gBattleExecBuffer
- ldr r1, _08037564 @ =gBitTable
- ldr r0, _08037568 @ =gActiveBank
- ldrb r3, [r0]
- lsls r0, r3, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _08037578
- ldr r0, _0803756C @ =gBattleBufferA
- lsls r1, r3, 9
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x38
- bhi _08037574
- ldr r0, _08037570 @ =gLinkOpponentBufferCommands
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
- b _08037578
- .align 2, 0
-_08037560: .4byte gBattleExecBuffer
-_08037564: .4byte gBitTable
-_08037568: .4byte gActiveBank
-_0803756C: .4byte gBattleBufferA
-_08037570: .4byte gLinkOpponentBufferCommands
-_08037574:
- bl dp01_tbl4_exec_completed
-_08037578:
- pop {r0}
- bx r0
- thumb_func_end sub_803752C
-
- thumb_func_start sub_803757C
-sub_803757C: @ 803757C
- push {lr}
- ldr r2, _080375A4 @ =gSprites
- ldr r1, _080375A8 @ =gObjectBankIDs
- ldr r0, _080375AC @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _080375B0 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _080375A0
- bl dp01_tbl4_exec_completed
-_080375A0:
- pop {r0}
- bx r0
- .align 2, 0
-_080375A4: .4byte gSprites
-_080375A8: .4byte gObjectBankIDs
-_080375AC: .4byte gActiveBank
-_080375B0: .4byte SpriteCallbackDummy
- thumb_func_end sub_803757C
-
- thumb_func_start sub_80375B4
-sub_80375B4: @ 80375B4
- push {r4-r6,lr}
- ldr r4, _0803762C @ =gSprites
- ldr r6, _08037630 @ =gObjectBankIDs
- ldr r5, _08037634 @ =gActiveBank
- ldrb r0, [r5]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r2, r0, 2
- adds r0, r4, 0
- adds r0, 0x1C
- adds r0, r2, r0
- ldr r1, [r0]
- ldr r0, _08037638 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _08037624
- adds r0, r2, r4
- ldrh r0, [r0, 0x6]
- bl sub_8031B74
- ldrb r0, [r5]
- adds r0, r6
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrh r0, [r1, 0x38]
- ldr r2, _0803763C @ =0x000003ff
- ands r2, r0
- ldrh r3, [r1, 0x4]
- ldr r0, _08037640 @ =0xfffffc00
- ands r0, r3
- orrs r0, r2
- strh r0, [r1, 0x4]
- ldrb r0, [r5]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldrb r0, [r5]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- bl dp01_tbl4_exec_completed
-_08037624:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0803762C: .4byte gSprites
-_08037630: .4byte gObjectBankIDs
-_08037634: .4byte gActiveBank
-_08037638: .4byte SpriteCallbackDummy
-_0803763C: .4byte 0x000003ff
-_08037640: .4byte 0xfffffc00
- thumb_func_end sub_80375B4
-
- thumb_func_start sub_8037644
-sub_8037644: @ 8037644
- push {lr}
- ldr r3, _08037678 @ =gActiveBank
- ldrb r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r2, _0803767C @ =0x02017810
- adds r1, r2
- ldrb r0, [r1, 0x9]
- subs r0, 0x1
- strb r0, [r1, 0x9]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _08037674
- ldrb r0, [r3]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r0, 0
- strb r0, [r1, 0x9]
- bl dp01_tbl4_exec_completed
-_08037674:
- pop {r0}
- bx r0
- .align 2, 0
-_08037678: .4byte gActiveBank
-_0803767C: .4byte 0x02017810
- thumb_func_end sub_8037644
-
- thumb_func_start sub_8037680
-sub_8037680: @ 8037680
- push {r4-r7,lr}
- movs r6, 0
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080376A4
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080376D8
- ldr r0, _080376C4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080376D8
-_080376A4:
- ldr r2, _080376C8 @ =gSprites
- ldr r1, _080376CC @ =gHealthboxIDs
- ldr r0, _080376D0 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _080376D4 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0803770E
- b _0803770C
- .align 2, 0
-_080376C4: .4byte gBattleTypeFlags
-_080376C8: .4byte gSprites
-_080376CC: .4byte gHealthboxIDs
-_080376D0: .4byte gActiveBank
-_080376D4: .4byte SpriteCallbackDummy
-_080376D8:
- ldr r2, _080377D8 @ =gSprites
- ldr r5, _080377DC @ =gHealthboxIDs
- ldr r0, _080377E0 @ =gActiveBank
- ldrb r3, [r0]
- adds r0, r3, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r4, [r0]
- ldr r0, _080377E4 @ =SpriteCallbackDummy
- cmp r4, r0
- bne _0803770E
- movs r0, 0x2
- eors r3, r0
- adds r0, r3, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- cmp r0, r4
- bne _0803770E
-_0803770C:
- movs r6, 0x1
-_0803770E:
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _0803771A
- movs r6, 0
-_0803771A:
- cmp r6, 0
- bne _08037720
- b _08037822
-_08037720:
- ldr r7, _080377E0 @ =gActiveBank
- ldrb r0, [r7]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0x1
- bne _080377B4
- ldrb r2, [r7]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r5, _080377E8 @ =0x02017810
- adds r4, r0, r5
- ldrb r1, [r4, 0x1]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08037822
- movs r6, 0x2
- adds r1, r6, 0
- eors r1, r2
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _08037822
- ldrb r1, [r4]
- movs r3, 0x7F
- adds r0, r3, 0
- ands r0, r1
- strb r0, [r4]
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r2, [r1, 0x1]
- movs r4, 0x2
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldrb r0, [r7]
- adds r1, r6, 0
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- ands r3, r1
- strb r3, [r0]
- ldrb r0, [r7]
- adds r1, r6, 0
- eors r1, r0
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x1]
- ands r4, r1
- strb r4, [r0, 0x1]
- ldr r4, _080377EC @ =0x000027f9
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
-_080377B4:
- ldr r0, _080377F0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080377F8
- ldrb r0, [r7]
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08037804
- ldr r0, _080377F4 @ =gMPlay_BGM
- bl m4aMPlayContinue
- b _08037804
- .align 2, 0
-_080377D8: .4byte gSprites
-_080377DC: .4byte gHealthboxIDs
-_080377E0: .4byte gActiveBank
-_080377E4: .4byte SpriteCallbackDummy
-_080377E8: .4byte 0x02017810
-_080377EC: .4byte 0x000027f9
-_080377F0: .4byte gBattleTypeFlags
-_080377F4: .4byte gMPlay_BGM
-_080377F8:
- ldr r0, _08037828 @ =gMPlay_BGM
- ldr r1, _0803782C @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_08037804:
- ldr r2, _08037830 @ =gActiveBank
- ldrb r1, [r2]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08037834 @ =0x02017810
- adds r0, r1
- movs r1, 0x3
- strb r1, [r0, 0x9]
- ldr r1, _08037838 @ =gBattleBankFunc
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0803783C @ =sub_8037644
- str r1, [r0]
-_08037822:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08037828: .4byte gMPlay_BGM
-_0803782C: .4byte 0x0000ffff
-_08037830: .4byte gActiveBank
-_08037834: .4byte 0x02017810
-_08037838: .4byte gBattleBankFunc
-_0803783C: .4byte sub_8037644
- thumb_func_end sub_8037680
-
- thumb_func_start sub_8037840
-sub_8037840: @ 8037840
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r6, _08037A48 @ =gActiveBank
- ldrb r2, [r6]
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- ldr r5, _08037A4C @ =0x02017810
- adds r0, r5
- ldrb r1, [r0]
- movs r4, 0x88
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _08037878
- ldr r0, _08037A50 @ =gBattlePartyID
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08037A54 @ =gEnemyParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_08037878:
- ldrb r0, [r6]
- movs r7, 0x2
- adds r2, r7, 0
- eors r2, r0
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _080378A6
- ldr r0, _08037A50 @ =gBattlePartyID
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08037A54 @ =gEnemyParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_080378A6:
- ldrb r2, [r6]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- movs r3, 0x8
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- beq _080378BE
- b _08037A3A
-_080378BE:
- adds r1, r2, 0
- eors r1, r7
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r3, 0
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _080378DA
- b _08037A3A
-_080378DA:
- ldr r0, _08037A58 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0803791A
- adds r0, r2, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0803791A
- ldrb r0, [r6]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldrb r0, [r1, 0x9]
- adds r0, 0x1
- strb r0, [r1, 0x9]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0803790E
- b _08037A3A
-_0803790E:
- ldrb r1, [r6]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strb r4, [r0, 0x9]
-_0803791A:
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _080379B2
- ldr r0, _08037A58 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _080379B2
- ldr r1, _08037A5C @ =gUnknown_0300434C
- ldr r5, _08037A48 @ =gActiveBank
- ldrb r0, [r5]
- movs r4, 0x2
- eors r0, r4
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08037A60 @ =gSprites
- adds r0, r1
- bl DestroySprite
- ldr r0, _08037A64 @ =gHealthboxIDs
- mov r8, r0
- ldrb r0, [r5]
- adds r1, r4, 0
- eors r1, r0
- mov r2, r8
- adds r0, r1, r2
- ldrb r0, [r0]
- ldr r2, _08037A50 @ =gBattlePartyID
- mov r10, r2
- lsls r1, 1
- add r1, r10
- ldrh r1, [r1]
- movs r2, 0x64
- mov r9, r2
- mov r2, r9
- muls r2, r1
- adds r1, r2, 0
- ldr r6, _08037A54 @ =gEnemyParty
- adds r1, r6
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r5]
- eors r0, r4
- bl sub_804777C
- ldrb r0, [r5]
- eors r0, r4
- add r0, r8
- ldrb r0, [r0]
- bl sub_8043DFC
- ldrb r0, [r5]
- eors r4, r0
- lsls r0, r4, 1
- add r0, r10
- ldrh r0, [r0]
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8032984
-_080379B2:
- ldr r1, _08037A5C @ =gUnknown_0300434C
- ldr r4, _08037A48 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08037A60 @ =gSprites
- adds r0, r1
- bl DestroySprite
- ldr r5, _08037A64 @ =gHealthboxIDs
- ldrb r1, [r4]
- adds r0, r1, r5
- ldrb r0, [r0]
- ldr r2, _08037A50 @ =gBattlePartyID
- mov r9, r2
- lsls r1, 1
- add r1, r9
- ldrh r1, [r1]
- movs r2, 0x64
- mov r8, r2
- mov r2, r8
- muls r2, r1
- adds r1, r2, 0
- ldr r6, _08037A54 @ =gEnemyParty
- adds r1, r6
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r4]
- bl sub_804777C
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl sub_8043DFC
- ldrb r5, [r4]
- lsls r0, r5, 1
- add r0, r9
- ldrh r0, [r0]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r5, 0
- bl sub_8032984
- ldr r2, _08037A68 @ =0x02017840
- ldrb r1, [r2, 0x9]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x9]
- ldr r1, _08037A6C @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08037A70 @ =sub_8037680
- str r1, [r0]
-_08037A3A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08037A48: .4byte gActiveBank
-_08037A4C: .4byte 0x02017810
-_08037A50: .4byte gBattlePartyID
-_08037A54: .4byte gEnemyParty
-_08037A58: .4byte gBattleTypeFlags
-_08037A5C: .4byte gUnknown_0300434C
-_08037A60: .4byte gSprites
-_08037A64: .4byte gHealthboxIDs
-_08037A68: .4byte 0x02017840
-_08037A6C: .4byte gBattleBankFunc
-_08037A70: .4byte sub_8037680
- thumb_func_end sub_8037840
-
- thumb_func_start sub_8037A74
-sub_8037A74: @ 8037A74
- push {r4-r7,lr}
- ldr r2, _08037ACC @ =gSprites
- ldr r0, _08037AD0 @ =gObjectBankIDs
- ldr r7, _08037AD4 @ =gActiveBank
- ldrb r3, [r7]
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- lsrs r2, r0, 31
- cmp r2, 0x1
- bne _08037B18
- movs r4, 0x24
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bne _08037B18
- lsls r4, r3, 1
- adds r0, r4, r3
- lsls r0, 2
- ldr r6, _08037AD8 @ =0x02017810
- adds r1, r0, r6
- ldrb r5, [r1]
- movs r0, 0x80
- ands r0, r5
- cmp r0, 0
- bne _08037AE4
- ldr r0, _08037ADC @ =gBattlePartyID
- adds r0, r4, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08037AE0 @ =gEnemyParty
- adds r1, r0
- adds r0, r3, 0
- bl sub_8141828
- b _08037B18
- .align 2, 0
-_08037ACC: .4byte gSprites
-_08037AD0: .4byte gObjectBankIDs
-_08037AD4: .4byte gActiveBank
-_08037AD8: .4byte 0x02017810
-_08037ADC: .4byte gBattlePartyID
-_08037AE0: .4byte gEnemyParty
-_08037AE4:
- ldrb r0, [r1, 0x1]
- ands r2, r0
- cmp r2, 0
- beq _08037B18
- movs r0, 0x7F
- ands r0, r5
- strb r0, [r1]
- ldrb r0, [r7]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r2, [r1, 0x1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldr r4, _08037B20 @ =0x000027f9
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- bl dp01_tbl4_exec_completed
-_08037B18:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08037B20: .4byte 0x000027f9
- thumb_func_end sub_8037A74
-
- thumb_func_start sub_8037B24
-sub_8037B24: @ 8037B24
- push {r4-r6,lr}
- ldr r6, _08037B64 @ =gActiveBank
- ldrb r0, [r6]
- ldr r5, _08037B68 @ =gHealthboxIDs
- adds r1, r0, r5
- ldrb r1, [r1]
- movs r2, 0
- movs r3, 0
- bl sub_8045C78
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldrb r0, [r6]
- adds r0, r5
- ldrb r0, [r0]
- bl sub_8043DFC
- lsls r4, 16
- asrs r1, r4, 16
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08037B6C
- ldrb r0, [r6]
- adds r0, r5
- ldrb r0, [r0]
- movs r2, 0
- bl sub_80440EC
- b _08037B70
- .align 2, 0
-_08037B64: .4byte gActiveBank
-_08037B68: .4byte gHealthboxIDs
-_08037B6C:
- bl dp01_tbl4_exec_completed
-_08037B70:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8037B24
-
- thumb_func_start sub_8037B78
-sub_8037B78: @ 8037B78
- push {lr}
- ldr r2, _08037BAC @ =gSprites
- ldr r0, _08037BB0 @ =gObjectBankIDs
- ldr r1, _08037BB4 @ =gActiveBank
- ldrb r3, [r1]
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- bne _08037BA6
- ldr r0, _08037BB8 @ =gHealthboxIDs
- adds r0, r3, r0
- ldrb r0, [r0]
- bl sub_8043DB0
- bl dp01_tbl4_exec_completed
-_08037BA6:
- pop {r0}
- bx r0
- .align 2, 0
-_08037BAC: .4byte gSprites
-_08037BB0: .4byte gObjectBankIDs
-_08037BB4: .4byte gActiveBank
-_08037BB8: .4byte gHealthboxIDs
- thumb_func_end sub_8037B78
-
- thumb_func_start sub_8037BBC
-sub_8037BBC: @ 8037BBC
- push {r4-r6,lr}
- ldr r6, _08037C18 @ =gActiveBank
- ldrb r2, [r6]
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- ldr r1, _08037C1C @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _08037C12
- ldr r5, _08037C20 @ =gObjectBankIDs
- adds r0, r2, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08037C24 @ =gSprites
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldrb r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldrb r0, [r6]
- bl sub_8032A08
- ldr r1, _08037C28 @ =gHealthboxIDs
- ldrb r0, [r6]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8043DB0
- bl dp01_tbl4_exec_completed
-_08037C12:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08037C18: .4byte gActiveBank
-_08037C1C: .4byte 0x02017810
-_08037C20: .4byte gObjectBankIDs
-_08037C24: .4byte gSprites
-_08037C28: .4byte gHealthboxIDs
- thumb_func_end sub_8037BBC
-
- thumb_func_start sub_8037C2C
-sub_8037C2C: @ 8037C2C
- push {lr}
- ldr r0, _08037C40 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- bne _08037C3A
- bl dp01_tbl4_exec_completed
-_08037C3A:
- pop {r0}
- bx r0
- .align 2, 0
-_08037C40: .4byte gUnknown_03004210
- thumb_func_end sub_8037C2C
-
- thumb_func_start dp01t_0F_4_move_anim
-dp01t_0F_4_move_anim: @ 8037C44
- push {r4,lr}
- ldr r1, _08037C80 @ =gObjectBankIDs
- ldr r0, _08037C84 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- ldr r2, _08037C88 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r0, r2
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x20
- bne _08037C90
- movs r3, 0
- movs r0, 0
- strh r0, [r4, 0x30]
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- subs r0, 0x5
- ands r0, r1
- strb r0, [r2]
- ldr r0, _08037C8C @ =gDoingBattleAnim
- strb r3, [r0]
- bl dp01_tbl4_exec_completed
- b _08037CBA
- .align 2, 0
-_08037C80: .4byte gObjectBankIDs
-_08037C84: .4byte gActiveBank
-_08037C88: .4byte gSprites
-_08037C8C: .4byte gDoingBattleAnim
-_08037C90:
- ldrh r0, [r4, 0x30]
- movs r1, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08037CB4
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
-_08037CB4:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
-_08037CBA:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end dp01t_0F_4_move_anim
-
- thumb_func_start sub_8037CC0
-sub_8037CC0: @ 8037CC0
- push {r4,lr}
- ldr r2, _08037D10 @ =gSprites
- ldr r0, _08037D14 @ =gHealthboxIDs
- ldr r4, _08037D18 @ =gActiveBank
- ldrb r3, [r4]
- adds r0, r3, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _08037D1C @ =SpriteCallbackDummy
- cmp r1, r0
- bne _08037D08
- lsls r0, r3, 2
- ldr r1, _08037D20 @ =0x02017800
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08037CFC
- adds r0, r3, 0
- adds r1, r3, 0
- adds r2, r3, 0
- movs r3, 0x6
- bl move_anim_start_t4
-_08037CFC:
- ldr r0, _08037D24 @ =gBattleBankFunc
- ldrb r1, [r4]
- lsls r1, 2
- adds r1, r0
- ldr r0, _08037D28 @ =sub_8037D2C
- str r0, [r1]
-_08037D08:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08037D10: .4byte gSprites
-_08037D14: .4byte gHealthboxIDs
-_08037D18: .4byte gActiveBank
-_08037D1C: .4byte SpriteCallbackDummy
-_08037D20: .4byte 0x02017800
-_08037D24: .4byte gBattleBankFunc
-_08037D28: .4byte sub_8037D2C
- thumb_func_end sub_8037CC0
-
- thumb_func_start sub_8037D2C
-sub_8037D2C: @ 8037D2C
- push {lr}
- ldr r0, _08037D58 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08037D5C @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _08037D52
- ldr r0, _08037D60 @ =c3_0802FDF4
- movs r1, 0xA
- bl CreateTask
- bl dp01_tbl4_exec_completed
-_08037D52:
- pop {r0}
- bx r0
- .align 2, 0
-_08037D58: .4byte gActiveBank
-_08037D5C: .4byte 0x02017810
-_08037D60: .4byte c3_0802FDF4
- thumb_func_end sub_8037D2C
-
- thumb_func_start sub_8037D64
-sub_8037D64: @ 8037D64
- push {r4,r5,lr}
- ldr r5, _08037E08 @ =gActiveBank
- ldrb r1, [r5]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r3, _08037E0C @ =0x02017810
- adds r2, r0, r3
- ldrb r1, [r2, 0x1]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08037E00
- ldrb r1, [r2]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2]
- ldrb r0, [r5]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldrb r2, [r1, 0x1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x1]
- ldr r4, _08037E10 @ =0x000027f9
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- ldr r1, _08037E14 @ =gObjectBankIDs
- ldrb r0, [r5]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08037E18 @ =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAnim
- ldr r4, _08037E1C @ =gHealthboxIDs
- ldrb r1, [r5]
- adds r0, r1, r4
- ldrb r0, [r0]
- ldr r2, _08037E20 @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _08037E24 @ =gEnemyParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
- ldrb r0, [r5]
- bl sub_804777C
- ldrb r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- bl sub_8043DFC
- ldrb r0, [r5]
- bl sub_8031F88
- ldr r1, _08037E28 @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08037E2C @ =sub_8037CC0
- str r1, [r0]
-_08037E00:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08037E08: .4byte gActiveBank
-_08037E0C: .4byte 0x02017810
-_08037E10: .4byte 0x000027f9
-_08037E14: .4byte gObjectBankIDs
-_08037E18: .4byte gSprites
-_08037E1C: .4byte gHealthboxIDs
-_08037E20: .4byte gBattlePartyID
-_08037E24: .4byte gEnemyParty
-_08037E28: .4byte gBattleBankFunc
-_08037E2C: .4byte sub_8037CC0
- thumb_func_end sub_8037D64
-
- thumb_func_start sub_8037E30
-sub_8037E30: @ 8037E30
- push {r4-r6,lr}
- ldr r5, _08037ECC @ =gActiveBank
- ldrb r2, [r5]
- lsls r3, r2, 1
- adds r0, r3, r2
- lsls r0, 2
- ldr r6, _08037ED0 @ =0x02017810
- adds r0, r6
- ldrb r1, [r0]
- movs r0, 0x88
- ands r0, r1
- cmp r0, 0
- bne _08037E5E
- ldr r0, _08037ED4 @ =gBattlePartyID
- adds r0, r3, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08037ED8 @ =gEnemyParty
- adds r1, r0
- adds r0, r2, 0
- bl sub_8141828
-_08037E5E:
- ldr r4, _08037EDC @ =gSprites
- ldr r0, _08037EE0 @ =gUnknown_0300434C
- ldrb r2, [r5]
- adds r0, r2, r0
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r3, r0, 2
- adds r0, r4, 0
- adds r0, 0x1C
- adds r0, r3, r0
- ldr r1, [r0]
- ldr r0, _08037EE4 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _08037EC4
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 2
- adds r0, r6
- ldrb r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- bne _08037EC4
- adds r0, r3, r4
- bl DestroySprite
- ldrb r4, [r5]
- ldr r1, _08037ED4 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08037ED8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8032984
- ldr r1, _08037EE8 @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08037EEC @ =sub_8037D64
- str r1, [r0]
-_08037EC4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08037ECC: .4byte gActiveBank
-_08037ED0: .4byte 0x02017810
-_08037ED4: .4byte gBattlePartyID
-_08037ED8: .4byte gEnemyParty
-_08037EDC: .4byte gSprites
-_08037EE0: .4byte gUnknown_0300434C
-_08037EE4: .4byte SpriteCallbackDummy
-_08037EE8: .4byte gBattleBankFunc
-_08037EEC: .4byte sub_8037D64
- thumb_func_end sub_8037E30
-
- thumb_func_start sub_8037EF0
-sub_8037EF0: @ 8037EF0
- push {lr}
- ldr r0, _08037F20 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08037F1C
- movs r0, 0x5A
- bl m4aSongNumStop
- ldr r3, _08037F24 @ =gMain
- ldr r0, _08037F28 @ =0x0000043d
- adds r2, r3, r0
- ldrb r1, [r2]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- ldr r0, _08037F2C @ =gPreBattleCallback1
- ldr r0, [r0]
- str r0, [r3]
- ldr r0, _08037F30 @ =c2_8011A1C
- bl SetMainCallback2
-_08037F1C:
- pop {r0}
- bx r0
- .align 2, 0
-_08037F20: .4byte gReceivedRemoteLinkPlayers
-_08037F24: .4byte gMain
-_08037F28: .4byte 0x0000043d
-_08037F2C: .4byte gPreBattleCallback1
-_08037F30: .4byte c2_8011A1C
- thumb_func_end sub_8037EF0
-
- thumb_func_start sub_8037F34
-sub_8037F34: @ 8037F34
- push {lr}
- ldr r0, _08037F64 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08037F9A
- ldr r0, _08037F68 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08037F78
- bl sub_800832C
- ldr r1, _08037F6C @ =gBattleBankFunc
- ldr r0, _08037F70 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _08037F74 @ =sub_8037EF0
- str r1, [r0]
- b _08037F9A
- .align 2, 0
-_08037F64: .4byte gPaletteFade
-_08037F68: .4byte gBattleTypeFlags
-_08037F6C: .4byte gBattleBankFunc
-_08037F70: .4byte gActiveBank
-_08037F74: .4byte sub_8037EF0
-_08037F78:
- movs r0, 0x5A
- bl m4aSongNumStop
- ldr r2, _08037FA0 @ =gMain
- ldr r0, _08037FA4 @ =0x0000043d
- adds r3, r2, r0
- ldrb r1, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldr r0, _08037FA8 @ =gPreBattleCallback1
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, [r2, 0x8]
- bl SetMainCallback2
-_08037F9A:
- pop {r0}
- bx r0
- .align 2, 0
-_08037FA0: .4byte gMain
-_08037FA4: .4byte 0x0000043d
-_08037FA8: .4byte gPreBattleCallback1
- thumb_func_end sub_8037F34
-
- thumb_func_start sub_8037FAC
-sub_8037FAC: @ 8037FAC
- push {lr}
- ldr r0, _08037FD0 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08037FD4 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08037FCA
- bl dp01_tbl4_exec_completed
-_08037FCA:
- pop {r0}
- bx r0
- .align 2, 0
-_08037FD0: .4byte gActiveBank
-_08037FD4: .4byte 0x02017810
- thumb_func_end sub_8037FAC
-
- thumb_func_start sub_8037FD8
-sub_8037FD8: @ 8037FD8
- push {lr}
- ldr r0, _08037FFC @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _08038000 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _08037FF6
- bl dp01_tbl4_exec_completed
-_08037FF6:
- pop {r0}
- bx r0
- .align 2, 0
-_08037FFC: .4byte gActiveBank
-_08038000: .4byte 0x02017810
- thumb_func_end sub_8037FD8
-
- thumb_func_start dp01_tbl4_exec_completed
-dp01_tbl4_exec_completed: @ 8038004
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _08038044 @ =gBattleBankFunc
- ldr r4, _08038048 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0803804C @ =sub_803752C
- str r1, [r0]
- ldr r0, _08038050 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08038058
- bl GetMultiplayerId
- mov r1, sp
- strb r0, [r1]
- movs r0, 0x2
- movs r1, 0x4
- mov r2, sp
- bl dp01_prepare_buffer_wireless_probably
- ldr r1, _08038054 @ =gBattleBufferA
- ldrb r0, [r4]
- lsls r0, 9
- adds r0, r1
- movs r1, 0x38
- strb r1, [r0]
- b _0803806A
- .align 2, 0
-_08038044: .4byte gBattleBankFunc
-_08038048: .4byte gActiveBank
-_0803804C: .4byte sub_803752C
-_08038050: .4byte gBattleTypeFlags
-_08038054: .4byte gBattleBufferA
-_08038058:
- ldr r2, _08038074 @ =gBattleExecBuffer
- ldr r1, _08038078 @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
-_0803806A:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08038074: .4byte gBattleExecBuffer
-_08038078: .4byte gBitTable
- thumb_func_end dp01_tbl4_exec_completed
+ thumb_func_end AI_ShouldUseItem
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_807B69C.s b/asm/battle_anim_807B69C.s
deleted file mode 100644
index e34f47f1c..000000000
--- a/asm/battle_anim_807B69C.s
+++ /dev/null
@@ -1,960 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start unref_sub_807B69C
-unref_sub_807B69C: @ 807B69C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _0807B740 @ =gObjectBankIDs
- adds r0, r4, r0
- ldrb r6, [r0]
- ldr r0, _0807B744 @ =sub_807B7E0
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _0807B748 @ =gBattleAnimPicTable + (136 * 8)
- bl LoadCompressedObjectPic
- ldr r0, _0807B74C @ =gBattleAnimPaletteTable + (136 * 8)
- bl LoadCompressedObjectPalette
- ldr r1, _0807B750 @ =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r1, r0, r1
- strh r4, [r1, 0x8]
- cmp r5, 0
- beq _0807B75C
- movs r0, 0x1F
- strh r0, [r1, 0xA]
- movs r5, 0
- lsls r0, r6, 4
- ldr r7, _0807B754 @ =gSprites
- adds r0, r6
- lsls r0, 2
- adds r6, r0, r7
-_0807B6F0:
- movs r0, 0x20
- ldrsh r1, [r6, r0]
- ldrh r2, [r6, 0x22]
- adds r2, 0x20
- lsls r2, 16
- asrs r2, 16
- ldr r0, _0807B758 @ =gSpriteTemplate_83931F8
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r3, r0, r7
- lsls r0, r5, 1
- adds r0, r5
- lsls r1, r0, 4
- adds r0, r1
- strh r0, [r3, 0x2E]
- movs r0, 0xFF
- lsls r0, 8
- strh r0, [r3, 0x30]
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- cmp r5, 0x4
- bls _0807B734
- movs r0, 0x15
- strh r0, [r3, 0x3A]
-_0807B734:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x9
- bls _0807B6F0
- b _0807B7BC
- .align 2, 0
-_0807B740: .4byte gObjectBankIDs
-_0807B744: .4byte sub_807B7E0
-_0807B748: .4byte gBattleAnimPicTable + (136 * 8)
-_0807B74C: .4byte gBattleAnimPaletteTable + (136 * 8)
-_0807B750: .4byte gTasks
-_0807B754: .4byte gSprites
-_0807B758: .4byte gSpriteTemplate_83931F8
-_0807B75C:
- movs r0, 0xF8
- lsls r0, 7
- strh r0, [r1, 0xA]
- movs r5, 0
- lsls r0, r6, 4
- ldr r7, _0807B7D8 @ =gSprites
- adds r0, r6
- lsls r0, 2
- adds r6, r0, r7
-_0807B76E:
- movs r2, 0x20
- ldrsh r1, [r6, r2]
- ldrh r2, [r6, 0x22]
- subs r2, 0x20
- lsls r2, 16
- asrs r2, 16
- ldr r0, _0807B7DC @ =gSpriteTemplate_83931F8
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r3, r0, r7
- lsls r0, r5, 1
- adds r0, r5
- lsls r1, r0, 4
- adds r0, r1
- strh r0, [r3, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r3, 0x30]
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- cmp r5, 0x4
- bls _0807B7B2
- movs r0, 0x15
- strh r0, [r3, 0x3A]
-_0807B7B2:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x9
- bls _0807B76E
-_0807B7BC:
- ldr r0, _0807B7D8 @ =gSprites
- lsls r1, r4, 4
- adds r1, r4
- lsls r1, 2
- adds r1, r0
- movs r0, 0x1
- strh r0, [r1, 0x3C]
- mov r0, r8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0807B7D8: .4byte gSprites
-_0807B7DC: .4byte gSpriteTemplate_83931F8
- thumb_func_end unref_sub_807B69C
-
- thumb_func_start sub_807B7E0
-sub_807B7E0: @ 807B7E0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0807B838 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- ldrh r1, [r4, 0xC]
- movs r2, 0xC
- ldrsh r0, [r4, r2]
- cmp r0, 0x2
- bne _0807B866
- movs r0, 0
- strh r0, [r4, 0xC]
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 20
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r0, 16
- ldrb r2, [r4, 0x10]
- ldrh r3, [r4, 0xA]
- movs r1, 0x10
- bl BlendPalette
- ldrh r2, [r4, 0x12]
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0807B83C
- ldrh r0, [r4, 0x10]
- adds r0, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x8
- ble _0807B86A
- movs r0, 0x1
- eors r0, r2
- strh r0, [r4, 0x12]
- b _0807B86A
- .align 2, 0
-_0807B838: .4byte gTasks
-_0807B83C:
- ldrh r1, [r4, 0x10]
- subs r0, r1, 0x1
- strh r0, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bge _0807B86A
- strh r1, [r4, 0x10]
- movs r0, 0x1
- eors r0, r2
- strh r0, [r4, 0x12]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _0807B86A
- adds r0, r5, 0
- bl DestroyTask
- b _0807B86A
-_0807B866:
- adds r0, r1, 0x1
- strh r0, [r4, 0xC]
-_0807B86A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_807B7E0
-
- thumb_func_start sub_807B870
-sub_807B870: @ 807B870
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x3A]
- movs r3, 0x3A
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bne _0807B89C
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x5
- negs r1, r1
- ands r1, r0
- strb r1, [r3]
- ldr r1, _0807B898 @ =sub_807B8A4
- str r1, [r2, 0x1C]
- adds r0, r2, 0
- bl _call_via_r1
- b _0807B8A0
- .align 2, 0
-_0807B898: .4byte sub_807B8A4
-_0807B89C:
- subs r0, r1, 0x1
- strh r0, [r2, 0x3A]
-_0807B8A0:
- pop {r0}
- bx r0
- thumb_func_end sub_807B870
-
- thumb_func_start sub_807B8A4
-sub_807B8A4: @ 807B8A4
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x20
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x8
- bl Sin
- strh r0, [r4, 0x26]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x7F
- bgt _0807B8D0
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1D
- b _0807B8D6
-_0807B8D0:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1F
-_0807B8D6:
- strb r0, [r1]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x8
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x2E]
- ldrh r0, [r4, 0x30]
- ldrh r1, [r4, 0x38]
- adds r0, r1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x34
- bne _0807B918
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0807B912
- adds r0, r4, 0
- bl DestroySpriteAndFreeResources
- b _0807B918
-_0807B912:
- adds r0, r4, 0
- bl DestroySprite
-_0807B918:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_807B8A4
-
- thumb_func_start sub_807B920
-sub_807B920: @ 807B920
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, _0807B9B0 @ =gBattleAnimEnemyMonIndex
- ldrb r0, [r4]
- movs r1, 0x2
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 8
- ldr r1, _0807B9B4 @ =0xffe00000
- adds r0, r1
- lsrs r5, r0, 16
- ldrb r0, [r4]
- movs r1, 0x3
- bl sub_8077ABC
- lsls r0, 24
- lsrs r0, 8
- ldr r2, _0807B9B8 @ =0xffdc0000
- adds r0, r2
- lsrs r4, r0, 16
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0807B95E
- lsls r0, r5, 16
- ldr r1, _0807B9BC @ =0xfffa0000
- adds r0, r1
- lsrs r5, r0, 16
-_0807B95E:
- ldr r1, _0807B9C0 @ =REG_BLDCNT
- movs r2, 0xFD
- lsls r2, 6
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r2, 0x80
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0807B9C4 @ =gSpriteTemplate_83931E0
- lsls r1, r5, 16
- asrs r1, 16
- lsls r2, r4, 16
- asrs r2, 16
- movs r3, 0x4
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r1, _0807B9C8 @ =gSprites
- adds r0, r1
- ldr r1, _0807B9CC @ =gSubspriteTables_83931D8
- bl SetSubspriteTables
- ldr r1, _0807B9D0 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x26]
- ldr r1, _0807B9D4 @ =sub_807B9D8
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807B9B0: .4byte gBattleAnimEnemyMonIndex
-_0807B9B4: .4byte 0xffe00000
-_0807B9B8: .4byte 0xffdc0000
-_0807B9BC: .4byte 0xfffa0000
-_0807B9C0: .4byte REG_BLDCNT
-_0807B9C4: .4byte gSpriteTemplate_83931E0
-_0807B9C8: .4byte gSprites
-_0807B9CC: .4byte gSubspriteTables_83931D8
-_0807B9D0: .4byte gTasks
-_0807B9D4: .4byte sub_807B9D8
- thumb_func_end sub_807B920
-
- thumb_func_start sub_807B9D8
-sub_807B9D8: @ 807B9D8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0807BA04 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- adds r2, r0, 0
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _0807BA0C
- ldr r0, _0807BA08 @ =sub_807BA24
- str r0, [r1]
- movs r0, 0
- strh r0, [r1, 0xA]
- b _0807BA1C
- .align 2, 0
-_0807BA04: .4byte gTasks
-_0807BA08: .4byte sub_807BA24
-_0807BA0C:
- lsls r0, r2, 24
- lsrs r0, 24
- ldr r2, _0807BA20 @ =REG_BLDALPHA
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- strh r1, [r2]
-_0807BA1C:
- pop {r0}
- bx r0
- .align 2, 0
-_0807BA20: .4byte REG_BLDALPHA
- thumb_func_end sub_807B9D8
-
- thumb_func_start sub_807BA24
-sub_807BA24: @ 807BA24
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0807BABC @ =0x0000271a
- bl IndexOfSpritePaletteTag
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _0807BAC0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r5, r0, r1
- ldrh r0, [r5, 0xA]
- adds r1, r0, 0x1
- strh r1, [r5, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xD
- ble _0807BAB4
- ldrh r0, [r5, 0xC]
- adds r0, 0x1
- movs r6, 0
- strh r0, [r5, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _0807BAB4
- ldr r3, _0807BAC4 @ =gPlttBufferFaded
- lsls r2, 4
- mov r12, r2
- ldr r1, _0807BAC8 @ =0x0000010d
- add r1, r12
- lsls r1, 1
- adds r1, r3
- ldrh r4, [r1]
- movs r2, 0x87
- lsls r2, 1
- add r2, r12
- lsls r2, 1
- adds r2, r3
- ldrh r0, [r2]
- strh r0, [r1]
- ldr r0, _0807BACC @ =0x0000010f
- add r0, r12
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- strh r1, [r2]
- strh r4, [r0]
- strh r6, [r5, 0xC]
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- strh r0, [r5, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _0807BAB4
- strh r6, [r5, 0xE]
- strh r6, [r5, 0xA]
- ldrh r0, [r5, 0x10]
- adds r0, 0x1
- strh r0, [r5, 0x10]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2
- bne _0807BAB4
- movs r0, 0x9
- strh r0, [r5, 0xA]
- ldr r0, _0807BAD0 @ =sub_807BAD4
- str r0, [r5]
-_0807BAB4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807BABC: .4byte 0x0000271a
-_0807BAC0: .4byte gTasks
-_0807BAC4: .4byte gPlttBufferFaded
-_0807BAC8: .4byte 0x0000010d
-_0807BACC: .4byte 0x0000010f
-_0807BAD0: .4byte sub_807BAD4
- thumb_func_end sub_807BA24
-
- thumb_func_start sub_807BAD4
-sub_807BAD4: @ 807BAD4
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0807BB04 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r2
- ldrh r0, [r2, 0xA]
- subs r0, 0x1
- adds r3, r0, 0
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _0807BB0C
- ldr r0, _0807BB08 @ =sub_807BB24
- str r0, [r2]
- movs r0, 0
- strh r0, [r2, 0xA]
- b _0807BB1C
- .align 2, 0
-_0807BB04: .4byte gTasks
-_0807BB08: .4byte sub_807BB24
-_0807BB0C:
- lsls r0, r3, 24
- lsrs r0, 24
- ldr r2, _0807BB20 @ =REG_BLDALPHA
- movs r1, 0x10
- subs r1, r0
- lsls r1, 8
- orrs r1, r0
- strh r1, [r2]
-_0807BB1C:
- pop {r0}
- bx r0
- .align 2, 0
-_0807BB20: .4byte REG_BLDALPHA
- thumb_func_end sub_807BAD4
-
- thumb_func_start sub_807BB24
-sub_807BB24: @ 807BB24
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- ldr r1, _0807BB64 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0, r1
- ldrh r0, [r1, 0xA]
- adds r0, 0x1
- movs r3, 0
- strh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x25
- bne _0807BB6C
- ldrh r0, [r1, 0x26]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- ldr r0, _0807BB68 @ =gSprites
- adds r4, r0
- adds r0, r4, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- b _0807BB7E
- .align 2, 0
-_0807BB64: .4byte gTasks
-_0807BB68: .4byte gSprites
-_0807BB6C:
- cmp r0, 0x27
- bne _0807BB7E
- ldr r0, _0807BB84 @ =REG_BLDCNT
- strh r3, [r0]
- adds r0, 0x2
- strh r3, [r0]
- adds r0, r2, 0
- bl DestroyAnimVisualTask
-_0807BB7E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0807BB84: .4byte REG_BLDCNT
- thumb_func_end sub_807BB24
-
- thumb_func_start sub_807BB88
-sub_807BB88: @ 807BB88
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r3, 0
- ldr r0, _0807BBA8 @ =0x02017840
- ldrh r0, [r0]
- subs r0, 0xF
- cmp r0, 0x2B
- bls _0807BB9C
- b _0807BD20
-_0807BB9C:
- lsls r0, 2
- ldr r1, _0807BBAC @ =_0807BBB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807BBA8: .4byte 0x02017840
-_0807BBAC: .4byte _0807BBB0
- .align 2, 0
-_0807BBB0:
- .4byte _0807BC60
- .4byte _0807BC66
- .4byte _0807BC6C
- .4byte _0807BC72
- .4byte _0807BC78
- .4byte _0807BC7E
- .4byte _0807BC84
- .4byte _0807BC8A
- .4byte _0807BC90
- .4byte _0807BC96
- .4byte _0807BC9C
- .4byte _0807BCA2
- .4byte _0807BCA8
- .4byte _0807BCAE
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BCB4
- .4byte _0807BCB8
- .4byte _0807BCBC
- .4byte _0807BCC0
- .4byte _0807BCC4
- .4byte _0807BCC8
- .4byte _0807BCCC
- .4byte _0807BCD0
- .4byte _0807BCD8
- .4byte _0807BCE0
- .4byte _0807BCE8
- .4byte _0807BCF0
- .4byte _0807BCF8
- .4byte _0807BD00
- .4byte _0807BD20
- .4byte _0807BD20
- .4byte _0807BD08
- .4byte _0807BD0C
- .4byte _0807BD10
- .4byte _0807BD18
-_0807BC60:
- movs r5, 0
- movs r2, 0
- b _0807BD28
-_0807BC66:
- movs r5, 0
- movs r2, 0x1
- b _0807BD28
-_0807BC6C:
- movs r5, 0
- movs r2, 0x3
- b _0807BD28
-_0807BC72:
- movs r5, 0
- movs r2, 0x5
- b _0807BD28
-_0807BC78:
- movs r5, 0
- movs r2, 0x6
- b _0807BD28
-_0807BC7E:
- movs r5, 0
- movs r2, 0x2
- b _0807BD28
-_0807BC84:
- movs r5, 0
- movs r2, 0x4
- b _0807BD28
-_0807BC8A:
- movs r5, 0x1
- movs r2, 0
- b _0807BD28
-_0807BC90:
- movs r5, 0x1
- movs r2, 0x1
- b _0807BD28
-_0807BC96:
- movs r5, 0x1
- movs r2, 0x3
- b _0807BD28
-_0807BC9C:
- movs r5, 0x1
- movs r2, 0x5
- b _0807BD28
-_0807BCA2:
- movs r5, 0x1
- movs r2, 0x6
- b _0807BD28
-_0807BCA8:
- movs r5, 0x1
- movs r2, 0x2
- b _0807BD28
-_0807BCAE:
- movs r5, 0x1
- movs r2, 0x4
- b _0807BD28
-_0807BCB4:
- movs r5, 0
- b _0807BCD2
-_0807BCB8:
- movs r5, 0
- b _0807BCDA
-_0807BCBC:
- movs r5, 0
- b _0807BCE2
-_0807BCC0:
- movs r5, 0
- b _0807BCEA
-_0807BCC4:
- movs r5, 0
- b _0807BCF2
-_0807BCC8:
- movs r5, 0
- b _0807BCFA
-_0807BCCC:
- movs r5, 0
- b _0807BD02
-_0807BCD0:
- movs r5, 0x1
-_0807BCD2:
- movs r2, 0
- movs r3, 0x1
- b _0807BD28
-_0807BCD8:
- movs r5, 0x1
-_0807BCDA:
- movs r2, 0x1
- movs r3, 0x1
- b _0807BD28
-_0807BCE0:
- movs r5, 0x1
-_0807BCE2:
- movs r2, 0x3
- movs r3, 0x1
- b _0807BD28
-_0807BCE8:
- movs r5, 0x1
-_0807BCEA:
- movs r2, 0x5
- movs r3, 0x1
- b _0807BD28
-_0807BCF0:
- movs r5, 0x1
-_0807BCF2:
- movs r2, 0x6
- movs r3, 0x1
- b _0807BD28
-_0807BCF8:
- movs r5, 0x1
-_0807BCFA:
- movs r2, 0x2
- movs r3, 0x1
- b _0807BD28
-_0807BD00:
- movs r5, 0x1
-_0807BD02:
- movs r2, 0x4
- movs r3, 0x1
- b _0807BD28
-_0807BD08:
- movs r5, 0
- b _0807BD12
-_0807BD0C:
- movs r5, 0
- b _0807BD1A
-_0807BD10:
- movs r5, 0x1
-_0807BD12:
- movs r2, 0xFF
- movs r3, 0
- b _0807BD28
-_0807BD18:
- movs r5, 0x1
-_0807BD1A:
- movs r2, 0xFF
- movs r3, 0x1
- b _0807BD28
-_0807BD20:
- adds r0, r4, 0
- bl DestroyAnimVisualTask
- b _0807BD4A
-_0807BD28:
- ldr r0, _0807BD50 @ =gBattleAnimArgs
- movs r1, 0
- strh r5, [r0]
- strh r2, [r0, 0x2]
- strh r1, [r0, 0x4]
- strh r1, [r0, 0x6]
- strh r3, [r0, 0x8]
- ldr r1, _0807BD54 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0807BD58 @ =sub_80E32E0
- str r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
-_0807BD4A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0807BD50: .4byte gBattleAnimArgs
-_0807BD54: .4byte gTasks
-_0807BD58: .4byte sub_80E32E0
- thumb_func_end sub_807BB88
-
- thumb_func_start move_anim_start_t2
-move_anim_start_t2: @ 807BD5C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _0807BD98 @ =gBattleAnimPlayerMonIndex
- strb r4, [r0]
- ldr r0, _0807BD9C @ =gBattleAnimEnemyMonIndex
- strb r4, [r0]
- ldr r0, _0807BDA0 @ =gBattleAnims_StatusConditions
- movs r2, 0
- bl DoMoveAnim
- ldr r0, _0807BDA4 @ =sub_807BDAC
- movs r1, 0xA
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0807BDA8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0807BD98: .4byte gBattleAnimPlayerMonIndex
-_0807BD9C: .4byte gBattleAnimEnemyMonIndex
-_0807BDA0: .4byte gBattleAnims_StatusConditions
-_0807BDA4: .4byte sub_807BDAC
-_0807BDA8: .4byte gTasks
- thumb_func_end move_anim_start_t2
-
- thumb_func_start sub_807BDAC
-sub_807BDAC: @ 807BDAC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0807BDF0 @ =gAnimScriptCallback
- ldr r0, [r0]
- bl _call_via_r0
- ldr r0, _0807BDF4 @ =gAnimScriptActive
- ldrb r0, [r0]
- cmp r0, 0
- bne _0807BDEA
- ldr r1, _0807BDF8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 2
- ldr r0, _0807BDFC @ =0x02017810
- adds r1, r0
- ldrb r2, [r1]
- movs r0, 0x11
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
-_0807BDEA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0807BDF0: .4byte gAnimScriptCallback
-_0807BDF4: .4byte gAnimScriptActive
-_0807BDF8: .4byte gTasks
-_0807BDFC: .4byte 0x02017810
- thumb_func_end sub_807BDAC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_anim_80CA710.s b/asm/battle_anim_80CA710.s
index fd5b9fb88..7b506ac24 100644
--- a/asm/battle_anim_80CA710.s
+++ b/asm/battle_anim_80CA710.s
@@ -23,7 +23,7 @@ sub_80CA710: @ 80CA710
strh r0, [r4, 0x2E]
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x30]
- ldr r0, _080CA748 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CA748 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -34,7 +34,7 @@ sub_80CA710: @ 80CA710
b _080CA74E
.align 2, 0
_080CA744: .4byte gBattleAnimArgs
-_080CA748: .4byte gBattleAnimPlayerMonIndex
+_080CA748: .4byte gBattleAnimBankAttacker
_080CA74C:
ldrh r0, [r5, 0x8]
_080CA74E:
@@ -101,7 +101,7 @@ sub_80CA7B0: @ 80CA7B0
ldr r0, _080CA7F0 @ =gBattleAnimArgs
ldrh r0, [r0, 0x4]
strh r0, [r4, 0x2E]
- ldr r5, _080CA7F4 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080CA7F4 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -118,13 +118,13 @@ sub_80CA7B0: @ 80CA7B0
str r0, [r4, 0x1C]
ldr r1, _080CA7FC @ =move_anim_8074EE0
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080CA7F0: .4byte gBattleAnimArgs
-_080CA7F4: .4byte gBattleAnimPlayerMonIndex
+_080CA7F4: .4byte gBattleAnimBankAttacker
_080CA7F8: .4byte sub_8078B34
_080CA7FC: .4byte move_anim_8074EE0
thumb_func_end sub_80CA7B0
@@ -141,7 +141,7 @@ sub_80CA800: @ 80CA800
bl StartSpriteAnim
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2E]
- ldr r5, _080CA84C @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080CA84C @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -158,13 +158,13 @@ sub_80CA800: @ 80CA800
str r0, [r4, 0x1C]
ldr r1, _080CA854 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
_080CA848: .4byte gBattleAnimArgs
-_080CA84C: .4byte gBattleAnimEnemyMonIndex
+_080CA84C: .4byte gBattleAnimBankTarget
_080CA850: .4byte sub_8078B34
_080CA854: .4byte move_anim_8072740
thumb_func_end sub_80CA800
@@ -180,7 +180,7 @@ sub_80CA858: @ 80CA858
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
- ldr r5, _080CA8AC @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080CA8AC @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -208,7 +208,7 @@ sub_80CA858: @ 80CA858
bx r0
.align 2, 0
_080CA8A8: .4byte gBattleAnimArgs
-_080CA8AC: .4byte gBattleAnimEnemyMonIndex
+_080CA8AC: .4byte gBattleAnimBankTarget
_080CA8B0: .4byte sub_80CA8B4
thumb_func_end sub_80CA858
@@ -228,15 +228,15 @@ _080CA8CA:
ldrsh r0, [r4, r1]
cmp r0, 0x7F
ble _080CA8E4
- ldr r0, _080CA8E0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CA8E0 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079E90
adds r0, 0x1
b _080CA8EE
.align 2, 0
-_080CA8E0: .4byte gBattleAnimEnemyMonIndex
+_080CA8E0: .4byte gBattleAnimBankTarget
_080CA8E4:
- ldr r0, _080CA924 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CA924 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079E90
adds r0, 0x6
@@ -268,7 +268,7 @@ _080CA91E:
pop {r0}
bx r0
.align 2, 0
-_080CA924: .4byte gBattleAnimEnemyMonIndex
+_080CA924: .4byte gBattleAnimBankTarget
thumb_func_end sub_80CA8B4
thumb_func_start sub_80CA928
@@ -305,7 +305,7 @@ sub_80CA928: @ 80CA928
strh r0, [r1, 0x4]
strh r2, [r1, 0x6]
ldr r4, _080CA9A0 @ =gSpriteTemplate_83D631C
- ldr r0, _080CA9A4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CA9A4 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079E90
adds r3, r0, 0
@@ -331,7 +331,7 @@ _080CA990:
_080CA998: .4byte gTasks
_080CA99C: .4byte gBattleAnimArgs
_080CA9A0: .4byte gSpriteTemplate_83D631C
-_080CA9A4: .4byte gBattleAnimEnemyMonIndex
+_080CA9A4: .4byte gBattleAnimBankTarget
thumb_func_end sub_80CA928
thumb_func_start sub_80CA9A8
@@ -343,7 +343,7 @@ sub_80CA9A8: @ 80CA9A8
ldr r6, _080CA9EC @ =gBattleAnimArgs
ldrh r0, [r6, 0x6]
strh r0, [r4, 0x2E]
- ldr r5, _080CA9F0 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080CA9F0 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -367,7 +367,7 @@ sub_80CA9A8: @ 80CA9A8
bx r0
.align 2, 0
_080CA9EC: .4byte gBattleAnimArgs
-_080CA9F0: .4byte gBattleAnimPlayerMonIndex
+_080CA9F0: .4byte gBattleAnimBankAttacker
_080CA9F4: .4byte sub_80CA9F8
thumb_func_end sub_80CA9A8
@@ -399,7 +399,7 @@ sub_80CAA14: @ 80CAA14
ands r1, r0
adds r0, r5, 0
bl StartSpriteAnim
- ldr r4, _080CAA5C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CAA5C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -421,7 +421,7 @@ sub_80CAA14: @ 80CAA14
subs r0, 0x14
b _080CAA64
.align 2, 0
-_080CAA5C: .4byte gBattleAnimPlayerMonIndex
+_080CAA5C: .4byte gBattleAnimBankAttacker
_080CAA60:
ldrh r0, [r5, 0x20]
adds r0, 0x14
@@ -436,7 +436,7 @@ _080CAA64:
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, _080CAAC4 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CAAC4 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -469,7 +469,7 @@ _080CAA64:
pop {r0}
bx r0
.align 2, 0
-_080CAAC4: .4byte gBattleAnimEnemyMonIndex
+_080CAAC4: .4byte gBattleAnimBankTarget
_080CAAC8: .4byte sub_80CAACC
thumb_func_end sub_80CAA14
@@ -522,7 +522,7 @@ sub_80CAB18: @ 80CAB18
adds r6, r0, 0
movs r1, 0x1
bl sub_80787B0
- ldr r0, _080CAB78 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CAB78 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -536,7 +536,7 @@ _080CAB38:
ldr r4, _080CAB7C @ =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
- ldr r5, _080CAB80 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080CAB80 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0
bl sub_8077ABC
@@ -563,9 +563,9 @@ _080CAB38:
pop {r0}
bx r0
.align 2, 0
-_080CAB78: .4byte gBattleAnimPlayerMonIndex
+_080CAB78: .4byte gBattleAnimBankAttacker
_080CAB7C: .4byte gBattleAnimArgs
-_080CAB80: .4byte gBattleAnimEnemyMonIndex
+_080CAB80: .4byte gBattleAnimBankTarget
_080CAB84: .4byte sub_80CAB88
thumb_func_end sub_80CAB18
@@ -589,7 +589,7 @@ sub_80CAB88: @ 80CAB88
str r0, [r4, 0x1C]
ldr r1, _080CABBC @ =sub_80CABC0
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
_080CABB2:
pop {r4}
pop {r0}
@@ -619,7 +619,7 @@ sub_80CABC0: @ 80CABC0
str r0, [r4, 0x1C]
ldr r1, _080CABF4 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
@@ -693,7 +693,7 @@ sub_80CAC44: @ 80CAC44
lsrs r0, 16
cmp r0, 0x7F
bhi _080CAC98
- ldr r0, _080CAC94 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CAC94 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079ED4
movs r1, 0x3
@@ -706,9 +706,9 @@ sub_80CAC44: @ 80CAC44
orrs r0, r1
b _080CACBC
.align 2, 0
-_080CAC94: .4byte gBattleAnimEnemyMonIndex
+_080CAC94: .4byte gBattleAnimBankTarget
_080CAC98:
- ldr r0, _080CACE8 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CACE8 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079ED4
adds r0, 0x1
@@ -749,7 +749,7 @@ _080CACE0:
pop {r0}
bx r0
.align 2, 0
-_080CACE8: .4byte gBattleAnimEnemyMonIndex
+_080CACE8: .4byte gBattleAnimBankTarget
thumb_func_end sub_80CAC44
thumb_func_start sub_80CACEC
@@ -770,7 +770,7 @@ _080CAD06:
bl DestroyAnimVisualTask
b _080CAD4A
_080CAD0E:
- ldr r0, _080CAD2C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CAD2C @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -784,7 +784,7 @@ _080CAD0E:
strb r1, [r0]
b _080CAD44
.align 2, 0
-_080CAD2C: .4byte gBattleAnimEnemyMonIndex
+_080CAD2C: .4byte gBattleAnimBankTarget
_080CAD30: .4byte REG_BG2CNT
_080CAD34:
ldr r2, _080CAD50 @ =REG_BG1CNT
@@ -820,7 +820,7 @@ sub_80CAD54: @ 80CAD54
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
- ldr r0, _080CADA0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CADA0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x3
bl sub_8077ABC
@@ -842,7 +842,7 @@ sub_80CAD54: @ 80CAD54
bx r0
.align 2, 0
_080CAD9C: .4byte gBattleAnimArgs
-_080CADA0: .4byte gBattleAnimPlayerMonIndex
+_080CADA0: .4byte gBattleAnimBankAttacker
_080CADA4: .4byte sub_80CADA8
thumb_func_end sub_80CAD54
@@ -875,15 +875,15 @@ sub_80CADA8: @ 80CADA8
lsrs r0, 16
cmp r0, 0x7F
bhi _080CADF4
- ldr r0, _080CADF0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CADF0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8079E90
subs r0, 0x1
b _080CADFE
.align 2, 0
-_080CADF0: .4byte gBattleAnimPlayerMonIndex
+_080CADF0: .4byte gBattleAnimBankAttacker
_080CADF4:
- ldr r0, _080CAE10 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CAE10 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8079E90
adds r0, 0x1
@@ -898,7 +898,7 @@ _080CADFE:
strh r0, [r4, 0x38]
b _080CAE1A
.align 2, 0
-_080CAE10: .4byte gBattleAnimPlayerMonIndex
+_080CAE10: .4byte gBattleAnimBankAttacker
_080CAE14:
adds r0, r4, 0
bl move_anim_8072740
@@ -922,7 +922,7 @@ sub_80CAE20: @ 80CAE20
strh r0, [r4, 0x32]
ldrh r0, [r4, 0x22]
strh r0, [r4, 0x34]
- ldr r0, _080CAE6C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CAE6C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x3
bl sub_8077ABC
@@ -944,7 +944,7 @@ sub_80CAE20: @ 80CAE20
bx r0
.align 2, 0
_080CAE68: .4byte gBattleAnimArgs
-_080CAE6C: .4byte gBattleAnimPlayerMonIndex
+_080CAE6C: .4byte gBattleAnimBankAttacker
_080CAE70: .4byte sub_80CAE74
thumb_func_end sub_80CAE20
@@ -1007,7 +1007,7 @@ _080CAED2:
sub_80CAED8: @ 80CAED8
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, _080CAF14 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080CAF14 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -1033,7 +1033,7 @@ sub_80CAED8: @ 80CAED8
pop {r0}
bx r0
.align 2, 0
-_080CAF14: .4byte gBattleAnimPlayerMonIndex
+_080CAF14: .4byte gBattleAnimBankAttacker
_080CAF18: .4byte gBattleAnimArgs
_080CAF1C: .4byte sub_80CAF20
thumb_func_end sub_80CAED8
@@ -1087,7 +1087,7 @@ _080CAF68:
sub_80CAF6C: @ 80CAF6C
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080CAF8C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CAF8C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -1100,7 +1100,7 @@ sub_80CAF6C: @ 80CAF6C
negs r0, r0
b _080CAF9A
.align 2, 0
-_080CAF8C: .4byte gBattleAnimPlayerMonIndex
+_080CAF8C: .4byte gBattleAnimBankAttacker
_080CAF90:
movs r1, 0x2E
ldrsh r0, [r4, r1]
@@ -1142,7 +1142,7 @@ sub_80CAFD0: @ 80CAFD0
adds r5, r0, 0
movs r1, 0x1
bl sub_80787B0
- ldr r0, _080CB024 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CB024 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -1160,7 +1160,7 @@ _080CAFF0:
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080CB030
- ldr r4, _080CB02C @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CB02C @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -1178,11 +1178,11 @@ _080CAFF0:
adds r0, r6
b _080CB050
.align 2, 0
-_080CB024: .4byte gBattleAnimPlayerMonIndex
+_080CB024: .4byte gBattleAnimBankAttacker
_080CB028: .4byte gBattleAnimArgs
-_080CB02C: .4byte gBattleAnimEnemyMonIndex
+_080CB02C: .4byte gBattleAnimBankTarget
_080CB030:
- ldr r0, _080CB07C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CB07C @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -1204,11 +1204,11 @@ _080CB050:
strh r0, [r5, 0x38]
adds r0, r5, 0
bl sub_80786EC
- ldr r0, _080CB084 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CB084 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
adds r4, r0, 0
- ldr r0, _080CB07C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CB07C @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r4, 24
@@ -1218,9 +1218,9 @@ _080CB050:
movs r0, 0x1
b _080CB08A
.align 2, 0
-_080CB07C: .4byte gBattleAnimEnemyMonIndex
+_080CB07C: .4byte gBattleAnimBankTarget
_080CB080: .4byte gBattleAnimArgs
-_080CB084: .4byte gBattleAnimPlayerMonIndex
+_080CB084: .4byte gBattleAnimBankAttacker
_080CB088:
movs r0, 0
_080CB08A:
@@ -1338,7 +1338,7 @@ sub_80CB144: @ 80CB144
lsrs r0, 24
cmp r0, 0x1
bne _080CB170
- ldr r0, _080CB198 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CB198 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -1367,7 +1367,7 @@ _080CB170:
pop {r0}
bx r0
.align 2, 0
-_080CB198: .4byte gBattleAnimEnemyMonIndex
+_080CB198: .4byte gBattleAnimBankTarget
_080CB19C: .4byte gBattleAnimArgs
_080CB1A0: .4byte sub_80CB1A4
thumb_func_end sub_80CB144
@@ -1426,7 +1426,7 @@ _080CB1E0:
ldrsh r0, [r4, r1]
cmp r0, 0x7F
bgt _080CB220
- ldr r0, _080CB21C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CB21C @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079ED4
lsls r0, 24
@@ -1434,9 +1434,9 @@ _080CB1E0:
subs r0, 0x1
b _080CB22E
.align 2, 0
-_080CB21C: .4byte gBattleAnimEnemyMonIndex
+_080CB21C: .4byte gBattleAnimBankTarget
_080CB220:
- ldr r0, _080CB258 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CB258 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079ED4
lsls r0, 24
@@ -1465,7 +1465,7 @@ _080CB252:
pop {r0}
bx r0
.align 2, 0
-_080CB258: .4byte gBattleAnimEnemyMonIndex
+_080CB258: .4byte gBattleAnimBankTarget
thumb_func_end sub_80CB1A4
thumb_func_start sub_80CB25C
@@ -1514,7 +1514,7 @@ sub_80CB298: @ 80CB298
ands r0, r1
strb r0, [r2]
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
movs r0, 0x80
lsls r0, 1
strh r0, [r4, 0x2E]
@@ -1535,7 +1535,7 @@ sub_80CB2D4: @ 80CB2D4
push {r4,lr}
adds r4, r0, 0
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
movs r1, 0x32
ldrsh r0, [r4, r1]
cmp r0, 0
@@ -1596,7 +1596,7 @@ sub_80CB340: @ 80CB340
lsls r0, 24
lsrs r4, r0, 24
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r2, r0, 24
ldr r1, _080CB36C @ =gSprites
@@ -1650,7 +1650,7 @@ sub_80CB3A8: @ 80CB3A8
lsls r4, 24
lsrs r4, 24
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
adds r6, r0, 0
@@ -1671,7 +1671,7 @@ sub_80CB3A8: @ 80CB3A8
lsls r1, 16
asrs r1, 24
strh r1, [r5, 0x24]
- ldr r0, _080CB430 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CB430 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -1709,7 +1709,7 @@ _080CB420:
.align 2, 0
_080CB428: .4byte gTasks
_080CB42C: .4byte gSprites
-_080CB430: .4byte gBattleAnimEnemyMonIndex
+_080CB430: .4byte gBattleAnimBankTarget
_080CB434: .4byte sub_80CB438
thumb_func_end sub_80CB3A8
@@ -1734,7 +1734,7 @@ sub_80CB438: @ 80CB438
cmp r5, 0
bne _080CB4A8
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -1800,7 +1800,7 @@ sub_80CB4CC: @ 80CB4CC
beq _080CB538
b _080CB58A
_080CB4DE:
- ldr r6, _080CB530 @ =gBattleAnimEnemyMonIndex
+ ldr r6, _080CB530 @ =gBattleAnimBankTarget
ldrb r0, [r6]
bl GetBankSide
lsls r0, 24
@@ -1840,7 +1840,7 @@ _080CB4F6:
strh r0, [r5, 0x2E]
b _080CB58A
.align 2, 0
-_080CB530: .4byte gBattleAnimEnemyMonIndex
+_080CB530: .4byte gBattleAnimBankTarget
_080CB534: .4byte gBattleAnimArgs
_080CB538:
adds r2, r5, 0
@@ -1862,7 +1862,7 @@ _080CB538:
bl ChangeSpriteAffineAnim
movs r0, 0x19
strh r0, [r5, 0x2E]
- ldr r4, _080CB590 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CB590 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -1879,13 +1879,13 @@ _080CB538:
str r0, [r5, 0x1C]
ldr r1, _080CB598 @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
_080CB58A:
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080CB590: .4byte gBattleAnimPlayerMonIndex
+_080CB590: .4byte gBattleAnimBankAttacker
_080CB594: .4byte sub_8078CC0
_080CB598: .4byte move_anim_8072740
thumb_func_end sub_80CB4CC
@@ -1898,7 +1898,7 @@ sub_80CB59C: @ 80CB59C
ldrsh r0, [r5, r1]
cmp r0, 0
bne _080CB608
- ldr r4, _080CB614 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CB614 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -1950,7 +1950,7 @@ _080CB608:
pop {r0}
bx r0
.align 2, 0
-_080CB614: .4byte gBattleAnimPlayerMonIndex
+_080CB614: .4byte gBattleAnimBankAttacker
_080CB618: .4byte gBattleAnimArgs
_080CB61C: .4byte sub_80CB710
thumb_func_end sub_80CB59C
@@ -1964,7 +1964,7 @@ sub_80CB620: @ 80CB620
push {r4-r6}
sub sp, 0x4
mov r9, r0
- ldr r4, _080CB6FC @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CB6FC @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -1979,7 +1979,7 @@ sub_80CB620: @ 80CB620
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r6, _080CB700 @ =gBattleAnimEnemyMonIndex
+ ldr r6, _080CB700 @ =gBattleAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
bl sub_8077ABC
@@ -2060,8 +2060,8 @@ sub_80CB620: @ 80CB620
pop {r0}
bx r0
.align 2, 0
-_080CB6FC: .4byte gBattleAnimPlayerMonIndex
-_080CB700: .4byte gBattleAnimEnemyMonIndex
+_080CB6FC: .4byte gBattleAnimBankAttacker
+_080CB700: .4byte gBattleAnimBankTarget
_080CB704: .4byte gBattleAnimArgs
_080CB708: .4byte sub_80CB710
_080CB70C: .4byte gUnknown_03000728
@@ -2123,7 +2123,7 @@ sub_80CB768: @ 80CB768
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080CB7A8
- ldr r5, _080CB7E4 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080CB7E4 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -2178,7 +2178,7 @@ _080CB7DE:
pop {r0}
bx r0
.align 2, 0
-_080CB7E4: .4byte gBattleAnimPlayerMonIndex
+_080CB7E4: .4byte gBattleAnimBankAttacker
_080CB7E8: .4byte gBattleAnimArgs
thumb_func_end sub_80CB768
@@ -2380,7 +2380,7 @@ sub_80CB94C: @ 80CB94C
adds r5, r0, 0
movs r1, 0
bl sub_80787B0
- ldr r4, _080CB994 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CB994 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -2391,7 +2391,7 @@ sub_80CB94C: @ 80CB94C
bl sub_8077ABC
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, _080CB998 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CB998 @ =gBattleAnimBankAttacker
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
@@ -2408,8 +2408,8 @@ sub_80CB94C: @ 80CB94C
movs r0, 0x1
b _080CB9AE
.align 2, 0
-_080CB994: .4byte gBattleAnimEnemyMonIndex
-_080CB998: .4byte gBattleAnimPlayerMonIndex
+_080CB994: .4byte gBattleAnimBankTarget
+_080CB998: .4byte gBattleAnimBankAttacker
_080CB99C:
strh r6, [r5, 0x3A]
adds r0, r2, 0
@@ -2487,7 +2487,7 @@ _080CBA20:
sub_80CBA28: @ 80CBA28
push {r4-r6,lr}
adds r5, r0, 0
- ldr r4, _080CBA64 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CBA64 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x1
bl sub_8077ABC
@@ -2513,7 +2513,7 @@ sub_80CBA28: @ 80CBA28
ldr r0, _080CBA68 @ =sub_80CB8E8
b _080CBA96
.align 2, 0
-_080CBA64: .4byte gBattleAnimEnemyMonIndex
+_080CBA64: .4byte gBattleAnimBankTarget
_080CBA68: .4byte sub_80CB8E8
_080CBA6C:
movs r0, 0xFF
@@ -2589,7 +2589,7 @@ sub_80CBAE8: @ 80CBAE8
adds r5, r0, 0
movs r1, 0
bl sub_8078764
- ldr r4, _080CBB30 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CBB30 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -2600,7 +2600,7 @@ sub_80CBAE8: @ 80CBAE8
bl sub_8077ABC
lsls r0, 24
lsrs r2, r0, 24
- ldr r0, _080CBB34 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CBB34 @ =gBattleAnimBankTarget
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
@@ -2617,8 +2617,8 @@ sub_80CBAE8: @ 80CBAE8
movs r0, 0x1
b _080CBB4A
.align 2, 0
-_080CBB30: .4byte gBattleAnimPlayerMonIndex
-_080CBB34: .4byte gBattleAnimEnemyMonIndex
+_080CBB30: .4byte gBattleAnimBankAttacker
+_080CBB34: .4byte gBattleAnimBankTarget
_080CBB38:
strh r6, [r5, 0x3A]
adds r0, r2, 0
@@ -3002,7 +3002,7 @@ sub_80CBDF4: @ 80CBDF4
lsls r0, 3
ldr r1, _080CBF48 @ =gTasks
adds r5, r0, r1
- ldr r4, _080CBF4C @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CBF4C @ =gBattleAnimBankTarget
ldrb r0, [r4]
bl sub_8079E90
lsls r0, 24
@@ -3156,7 +3156,7 @@ _080CBE94:
bx r0
.align 2, 0
_080CBF48: .4byte gTasks
-_080CBF4C: .4byte gBattleAnimEnemyMonIndex
+_080CBF4C: .4byte gBattleAnimBankTarget
_080CBF50: .4byte gSpriteTemplate_83D6884
_080CBF54: .4byte gSprites
_080CBF58: .4byte sub_80CBF5C
@@ -3832,13 +3832,13 @@ sub_80CC474: @ 80CC474
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080CC490
- ldr r0, _080CC48C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CC48C @ =gBattleAnimBankAttacker
b _080CC492
.align 2, 0
_080CC488: .4byte gBattleAnimArgs
-_080CC48C: .4byte gBattleAnimPlayerMonIndex
+_080CC48C: .4byte gBattleAnimBankAttacker
_080CC490:
- ldr r0, _080CC4B0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CC4B0 @ =gBattleAnimBankTarget
_080CC492:
ldrb r6, [r0]
adds r0, r6, 0
@@ -3854,7 +3854,7 @@ _080CC492:
ldr r0, _080CC4B8 @ =0x0000fff0
b _080CC4CC
.align 2, 0
-_080CC4B0: .4byte gBattleAnimEnemyMonIndex
+_080CC4B0: .4byte gBattleAnimBankTarget
_080CC4B4: .4byte gBattleAnimArgs
_080CC4B8: .4byte 0x0000fff0
_080CC4BC:
@@ -3923,7 +3923,7 @@ _080CC518:
strb r0, [r4, 0x5]
b _080CC56C
_080CC534:
- ldr r0, _080CC578 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CC578 @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0x3
bl sub_8077ABC
@@ -3933,7 +3933,7 @@ _080CC534:
adds r0, r7
strh r0, [r4, 0x22]
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
_080CC54E:
adds r0, r6, 0
bl sub_8079ED4
@@ -3956,7 +3956,7 @@ _080CC56C:
pop {r0}
bx r0
.align 2, 0
-_080CC578: .4byte gBattleAnimEnemyMonIndex
+_080CC578: .4byte gBattleAnimBankTarget
_080CC57C: .4byte sub_80CC580
thumb_func_end sub_80CC474
@@ -4149,12 +4149,12 @@ _080CC6E8:
ldrsh r0, [r1, r3]
cmp r0, 0
bne _080CC6F8
- ldr r4, _080CC6F4 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CC6F4 @ =gBattleAnimBankAttacker
b _080CC6FA
.align 2, 0
-_080CC6F4: .4byte gBattleAnimPlayerMonIndex
+_080CC6F4: .4byte gBattleAnimBankAttacker
_080CC6F8:
- ldr r4, _080CC734 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CC734 @ =gBattleAnimBankTarget
_080CC6FA:
ldrb r0, [r4]
movs r1, 0x2
@@ -4184,7 +4184,7 @@ _080CC6FA:
strh r2, [r6, 0x3A]
b _080CC74C
.align 2, 0
-_080CC734: .4byte gBattleAnimEnemyMonIndex
+_080CC734: .4byte gBattleAnimBankTarget
_080CC738: .4byte gBattleAnimArgs
_080CC73C:
strh r5, [r6, 0x20]
@@ -4317,7 +4317,7 @@ _080CC826:
sub_80CC82C: @ 80CC82C
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080CC84C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CC84C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4331,7 +4331,7 @@ sub_80CC82C: @ 80CC82C
ldrh r0, [r2, 0x2]
b _080CC860
.align 2, 0
-_080CC84C: .4byte gBattleAnimPlayerMonIndex
+_080CC84C: .4byte gBattleAnimBankAttacker
_080CC850: .4byte gBattleAnimArgs
_080CC854:
ldr r0, _080CC878 @ =gBattleAnimArgs
@@ -4348,7 +4348,7 @@ _080CC860:
str r0, [r4, 0x1C]
ldr r1, _080CC880 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
@@ -4362,7 +4362,7 @@ _080CC880: .4byte move_anim_8072740
sub_80CC884: @ 80CC884
push {r4,r5,lr}
adds r5, r0, 0
- ldr r0, _080CC8BC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CC8BC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4387,7 +4387,7 @@ _080CC89E:
pop {r0}
bx r0
.align 2, 0
-_080CC8BC: .4byte gBattleAnimPlayerMonIndex
+_080CC8BC: .4byte gBattleAnimBankAttacker
_080CC8C0: .4byte sub_80CC810
_080CC8C4: .4byte gBattleAnimArgs
thumb_func_end sub_80CC884
@@ -4418,7 +4418,7 @@ sub_80CC8C8: @ 80CC8C8
bl StartSpriteAffineAnim
ldr r1, _080CC90C @ =move_anim_8074EE0
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CC910 @ =sub_8078504
str r0, [r4, 0x1C]
pop {r4}
@@ -4434,7 +4434,7 @@ _080CC910: .4byte sub_8078504
sub_80CC914: @ 80CC914
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, _080CC964 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CC964 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -4470,7 +4470,7 @@ _080CC948:
strh r0, [r5, 0x20]
b _080CC984
.align 2, 0
-_080CC964: .4byte gBattleAnimEnemyMonIndex
+_080CC964: .4byte gBattleAnimBankTarget
_080CC968: .4byte sub_80CCB00
_080CC96C: .4byte gBattleAnimArgs
_080CC970:
@@ -4535,7 +4535,7 @@ sub_80CC9BC: @ 80CC9BC
.align 2, 0
_080CC9D8: .4byte gBattleAnimArgs
_080CC9DC:
- ldr r5, _080CC9F8 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080CC9F8 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r4, 0x2
eors r0, r4
@@ -4548,9 +4548,9 @@ _080CC9DC:
adds r0, r4, 0
b _080CCA68
.align 2, 0
-_080CC9F8: .4byte gBattleAnimEnemyMonIndex
+_080CC9F8: .4byte gBattleAnimBankTarget
_080CC9FC:
- ldr r5, _080CCA54 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080CCA54 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0
bl sub_8077ABC
@@ -4566,7 +4566,7 @@ _080CC9FC:
mov r8, r2
mov r1, r8
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080CCA72
@@ -4590,9 +4590,9 @@ _080CC9FC:
lsrs r4, r0, 1
b _080CCA72
.align 2, 0
-_080CCA54: .4byte gBattleAnimEnemyMonIndex
+_080CCA54: .4byte gBattleAnimBankTarget
_080CCA58:
- ldr r4, _080CCAA4 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CCAA4 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -4607,7 +4607,7 @@ _080CCA68:
_080CCA72:
strh r7, [r6, 0x20]
strh r4, [r6, 0x22]
- ldr r0, _080CCAA4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CCAA4 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4631,7 +4631,7 @@ _080CCA8A:
strh r0, [r6, 0x20]
b _080CCAC4
.align 2, 0
-_080CCAA4: .4byte gBattleAnimEnemyMonIndex
+_080CCAA4: .4byte gBattleAnimBankTarget
_080CCAA8: .4byte sub_80CCB00
_080CCAAC: .4byte gBattleAnimArgs
_080CCAB0:
@@ -4723,7 +4723,7 @@ _080CCB26:
bne _080CCB5C
ldr r1, _080CCB64 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
movs r0, 0x3
strh r0, [r4, 0x2E]
ldr r0, _080CCB68 @ =sub_80782D8
@@ -4861,7 +4861,7 @@ sub_80CCC50: @ 80CCC50
ldr r4, _080CCC70 @ =gBattleAnimArgs
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x2E]
- ldr r0, _080CCC74 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CCC74 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4873,7 +4873,7 @@ sub_80CCC50: @ 80CCC50
b _080CCC7E
.align 2, 0
_080CCC70: .4byte gBattleAnimArgs
-_080CCC74: .4byte gBattleAnimPlayerMonIndex
+_080CCC74: .4byte gBattleAnimBankAttacker
_080CCC78:
ldrh r0, [r4]
ldrh r1, [r5, 0x20]
@@ -4977,7 +4977,7 @@ sub_80CCD24: @ 80CCD24
adds r0, 0x8
strh r0, [r1, 0x2]
_080CCD3A:
- ldr r6, _080CCD9C @ =gBattleAnimPlayerMonIndex
+ ldr r6, _080CCD9C @ =gBattleAnimBankAttacker
ldrb r0, [r6]
movs r1, 0
bl sub_8077EE4
@@ -5022,7 +5022,7 @@ _080CCD78:
b _080CCDB8
.align 2, 0
_080CCD98: .4byte gBattleAnimArgs
-_080CCD9C: .4byte gBattleAnimPlayerMonIndex
+_080CCD9C: .4byte gBattleAnimBankAttacker
_080CCDA0:
ldrb r0, [r6]
bl sub_8079ED4
@@ -5207,7 +5207,7 @@ _080CCF00: .4byte sub_807861C
sub_80CCF04: @ 80CCF04
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, _080CCF5C @ =gBattleAnimEnemyMonIndex
+ ldr r6, _080CCF5C @ =gBattleAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
bl sub_8077ABC
@@ -5248,7 +5248,7 @@ sub_80CCF04: @ 80CCF04
pop {r0}
bx r0
.align 2, 0
-_080CCF5C: .4byte gBattleAnimEnemyMonIndex
+_080CCF5C: .4byte gBattleAnimBankTarget
_080CCF60: .4byte 0x0000ffe8
_080CCF64: .4byte REG_BLDCNT
_080CCF68: .4byte REG_BLDALPHA
@@ -5531,7 +5531,7 @@ _080CD154:
strh r0, [r4, 0x32]
ldr r1, _080CD188 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CD18C @ =sub_8078394
str r0, [r4, 0x1C]
pop {r4,r5}
@@ -5552,13 +5552,13 @@ sub_80CD190: @ 80CD190
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080CD1AC
- ldr r0, _080CD1A8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CD1A8 @ =gBattleAnimBankAttacker
b _080CD1AE
.align 2, 0
_080CD1A4: .4byte gBattleAnimArgs
-_080CD1A8: .4byte gBattleAnimPlayerMonIndex
+_080CD1A8: .4byte gBattleAnimBankAttacker
_080CD1AC:
- ldr r0, _080CD1F0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CD1F0 @ =gBattleAnimBankTarget
_080CD1AE:
ldrb r6, [r0]
bl IsDoubleBattle
@@ -5568,7 +5568,7 @@ _080CD1AE:
movs r1, 0x2
adds r0, r6, 0
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080CD1F8
@@ -5590,7 +5590,7 @@ _080CD1AE:
strh r0, [r5, 0x22]
b _080CD248
.align 2, 0
-_080CD1F0: .4byte gBattleAnimEnemyMonIndex
+_080CD1F0: .4byte gBattleAnimBankTarget
_080CD1F4: .4byte gBattleAnimArgs
_080CD1F8:
ldr r4, _080CD218 @ =gBattleAnimArgs
@@ -5640,7 +5640,7 @@ _080CD248:
strh r0, [r5, 0x32]
ldr r1, _080CD26C @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CD270 @ =sub_8078394
str r0, [r5, 0x1C]
pop {r4-r6}
@@ -5657,7 +5657,7 @@ sub_80CD274: @ 80CD274
push {r4,lr}
adds r4, r0, 0
bl sub_8078650
- ldr r0, _080CD2A0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CD2A0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -5674,7 +5674,7 @@ sub_80CD274: @ 80CD274
strh r0, [r4, 0x22]
b _080CD2C2
.align 2, 0
-_080CD2A0: .4byte gBattleAnimPlayerMonIndex
+_080CD2A0: .4byte gBattleAnimBankAttacker
_080CD2A4: .4byte gBattleAnimArgs
_080CD2A8:
ldr r2, _080CD2CC @ =gBattleAnimArgs
@@ -5749,7 +5749,7 @@ sub_80CD328: @ 80CD328
push {r4,lr}
adds r4, r0, 0
bl sub_8078650
- ldr r0, _080CD358 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CD358 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -5768,7 +5768,7 @@ sub_80CD328: @ 80CD328
strh r0, [r4, 0x34]
b _080CD37E
.align 2, 0
-_080CD358: .4byte gBattleAnimPlayerMonIndex
+_080CD358: .4byte gBattleAnimBankAttacker
_080CD35C: .4byte gBattleAnimArgs
_080CD360:
ldr r2, _080CD388 @ =gBattleAnimArgs
@@ -5850,7 +5850,7 @@ sub_80CD3E0: @ 80CD3E0
ldr r1, _080CD400 @ =sub_80782D8
str r1, [r0, 0x1C]
ldr r1, _080CD404 @ =sub_80CD408
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
@@ -5877,7 +5877,7 @@ _080CD41E:
str r0, [r5, 0x1C]
ldr r1, _080CD434 @ =sub_80CD408
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
b _080CD49E
.align 2, 0
_080CD430: .4byte sub_80782D8
@@ -5917,7 +5917,7 @@ _080CD438:
str r0, [r5, 0x1C]
ldr r1, _080CD4B4 @ =sub_80CD4B8
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
movs r1, 0x80
lsls r1, 1
adds r0, r1, 0
@@ -5960,7 +5960,7 @@ sub_80CD4B8: @ 80CD4B8
str r0, [r2, 0x1C]
ldr r1, _080CD4DC @ =sub_80CD4EC
adds r0, r2, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
b _080CD4E4
.align 2, 0
_080CD4D8: .4byte sub_80782D8
@@ -5990,7 +5990,7 @@ sub_80CD4EC: @ 80CD4EC
str r0, [r5, 0x1C]
ldr r1, _080CD510 @ =sub_80CD5A8
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
b _080CD594
.align 2, 0
_080CD50C: .4byte sub_80782D8
@@ -6043,7 +6043,7 @@ _080CD54C:
strh r1, [r5, 0x24]
movs r0, 0x6
strh r0, [r5, 0x2E]
- ldr r4, _080CD59C @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CD59C @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -6062,13 +6062,13 @@ _080CD54C:
str r0, [r5, 0x1C]
ldr r1, _080CD5A4 @ =sub_80CD654
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
_080CD594:
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
-_080CD59C: .4byte gBattleAnimEnemyMonIndex
+_080CD59C: .4byte gBattleAnimBankTarget
_080CD5A0: .4byte sub_8078B34
_080CD5A4: .4byte sub_80CD654
thumb_func_end sub_80CD4EC
@@ -6376,7 +6376,7 @@ sub_80CD7CC: @ 80CD7CC
adds r4, r0, 0
movs r0, 0x6
strh r0, [r4, 0x2E]
- ldr r5, _080CD80C @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080CD80C @ =gBattleAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
@@ -6397,14 +6397,14 @@ _080CD7EA:
strh r0, [r4, 0x34]
ldr r1, _080CD814 @ =sub_80CD81C
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CD818 @ =sub_8078458
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080CD80C: .4byte gBattleAnimPlayerMonIndex
+_080CD80C: .4byte gBattleAnimBankAttacker
_080CD810: .4byte gObjectBankIDs
_080CD814: .4byte sub_80CD81C
_080CD818: .4byte sub_8078458
@@ -6419,7 +6419,7 @@ sub_80CD81C: @ 80CD81C
cmp r6, 0
bne _080CD858
ldr r1, _080CD898 @ =gObjectBankIDs
- ldr r4, _080CD89C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CD89C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
@@ -6475,7 +6475,7 @@ _080CD892:
bx r0
.align 2, 0
_080CD898: .4byte gObjectBankIDs
-_080CD89C: .4byte gBattleAnimPlayerMonIndex
+_080CD89C: .4byte gBattleAnimBankAttacker
_080CD8A0: .4byte 0xfffffd00
_080CD8A4: .4byte sub_80CD9B8
thumb_func_end sub_80CD81C
@@ -6486,7 +6486,7 @@ sub_80CD8A8: @ 80CD8A8
adds r4, r0, 0
movs r0, 0x4
strh r0, [r4, 0x2E]
- ldr r5, _080CD8E8 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080CD8E8 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
@@ -6507,14 +6507,14 @@ _080CD8C6:
strh r0, [r4, 0x34]
ldr r1, _080CD8F0 @ =sub_80CD9B8
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CD8F4 @ =sub_8078458
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080CD8E8: .4byte gBattleAnimPlayerMonIndex
+_080CD8E8: .4byte gBattleAnimBankAttacker
_080CD8EC: .4byte gObjectBankIDs
_080CD8F0: .4byte sub_80CD9B8
_080CD8F4: .4byte sub_8078458
@@ -6551,7 +6551,7 @@ sub_80CD91C: @ 80CD91C
cmp r0, 0
bne _080CD96C
ldr r1, _080CD958 @ =gObjectBankIDs
- ldr r4, _080CD95C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CD95C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
adds r0, r1
ldrb r0, [r0]
@@ -6574,7 +6574,7 @@ sub_80CD91C: @ 80CD91C
b _080CD96A
.align 2, 0
_080CD958: .4byte gObjectBankIDs
-_080CD95C: .4byte gBattleAnimPlayerMonIndex
+_080CD95C: .4byte gBattleAnimBankAttacker
_080CD960:
movs r0, 0x80
lsls r0, 3
@@ -6660,7 +6660,7 @@ _080CD9EA:
_080CD9F0:
strh r5, [r4, 0x30]
ldr r1, _080CDA74 @ =gObjectBankIDs
- ldr r2, _080CDA78 @ =gBattleAnimPlayerMonIndex
+ ldr r2, _080CDA78 @ =gBattleAnimBankAttacker
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
@@ -6724,7 +6724,7 @@ _080CDA2E:
b _080CDAC2
.align 2, 0
_080CDA74: .4byte gObjectBankIDs
-_080CDA78: .4byte gBattleAnimPlayerMonIndex
+_080CDA78: .4byte gBattleAnimBankAttacker
_080CDA7C: .4byte 0xfffffe00
_080CDA80:
ldrh r0, [r4, 0x36]
@@ -6773,7 +6773,7 @@ sub_80CDAC8: @ 80CDAC8
lsls r0, 3
adds r5, r0, r1
ldr r1, _080CDB10 @ =gObjectBankIDs
- ldr r2, _080CDB14 @ =gBattleAnimPlayerMonIndex
+ ldr r2, _080CDB14 @ =gBattleAnimBankAttacker
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
@@ -6798,7 +6798,7 @@ sub_80CDAC8: @ 80CDAC8
.align 2, 0
_080CDB0C: .4byte gTasks
_080CDB10: .4byte gObjectBankIDs
-_080CDB14: .4byte gBattleAnimPlayerMonIndex
+_080CDB14: .4byte gBattleAnimBankAttacker
_080CDB18: .4byte gBattleAnimArgs
_080CDB1C:
strh r1, [r5, 0xC]
@@ -7134,13 +7134,13 @@ sub_80CDD74: @ 80CDD74
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080CDD90
- ldr r4, _080CDD8C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CDD8C @ =gBattleAnimBankAttacker
b _080CDD92
.align 2, 0
_080CDD88: .4byte gBattleAnimArgs
-_080CDD8C: .4byte gBattleAnimPlayerMonIndex
+_080CDD8C: .4byte gBattleAnimBankAttacker
_080CDD90:
- ldr r4, _080CDDD0 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CDDD0 @ =gBattleAnimBankTarget
_080CDD92:
ldrb r0, [r4]
movs r1, 0x2
@@ -7163,14 +7163,14 @@ _080CDD92:
strh r0, [r5, 0x30]
ldr r1, _080CDDD4 @ =sub_80CDEC0
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CDDD8 @ =sub_8078600
str r0, [r5, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080CDDD0: .4byte gBattleAnimEnemyMonIndex
+_080CDDD0: .4byte gBattleAnimBankTarget
_080CDDD4: .4byte sub_80CDEC0
_080CDDD8: .4byte sub_8078600
thumb_func_end sub_80CDD74
@@ -7179,7 +7179,7 @@ _080CDDD8: .4byte sub_8078600
sub_80CDDDC: @ 80CDDDC
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, _080CDE14 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080CDE14 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -7196,14 +7196,14 @@ sub_80CDDDC: @ 80CDDDC
strh r0, [r4, 0x22]
ldr r1, _080CDE1C @ =sub_80CDE78
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CDE20 @ =sub_8078600
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080CDE14: .4byte gBattleAnimEnemyMonIndex
+_080CDE14: .4byte gBattleAnimBankTarget
_080CDE18: .4byte 0x0000ffd0
_080CDE1C: .4byte sub_80CDE78
_080CDE20: .4byte sub_8078600
@@ -7213,7 +7213,7 @@ _080CDE20: .4byte sub_8078600
sub_80CDE24: @ 80CDE24
push {r4-r6,lr}
adds r4, r0, 0
- ldr r5, _080CDE68 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080CDE68 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -7243,7 +7243,7 @@ sub_80CDE24: @ 80CDE24
pop {r0}
bx r0
.align 2, 0
-_080CDE68: .4byte gBattleAnimEnemyMonIndex
+_080CDE68: .4byte gBattleAnimBankTarget
_080CDE6C: .4byte gBattleAnimArgs
_080CDE70: .4byte 0x0000ffd0
_080CDE74: .4byte sub_80CDEC0
@@ -7268,7 +7268,7 @@ sub_80CDE78: @ 80CDE78
strh r0, [r4, 0x32]
ldr r1, _080CDEA8 @ =sub_80CDEB0
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CDEAC @ =sub_8078364
str r0, [r4, 0x1C]
_080CDEA2:
@@ -7343,13 +7343,13 @@ sub_80CDF0C: @ 80CDF0C
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080CDF28
- ldr r4, _080CDF24 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CDF24 @ =gBattleAnimBankAttacker
b _080CDF2A
.align 2, 0
_080CDF20: .4byte gBattleAnimArgs
-_080CDF24: .4byte gBattleAnimPlayerMonIndex
+_080CDF24: .4byte gBattleAnimBankAttacker
_080CDF28:
- ldr r4, _080CDF64 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CDF64 @ =gBattleAnimBankTarget
_080CDF2A:
ldrb r0, [r4]
movs r1, 0
@@ -7378,7 +7378,7 @@ _080CDF2A:
pop {r0}
bx r0
.align 2, 0
-_080CDF64: .4byte gBattleAnimEnemyMonIndex
+_080CDF64: .4byte gBattleAnimBankTarget
_080CDF68: .4byte gBattleAnimArgs
_080CDF6C: .4byte sub_80CDF70
thumb_func_end sub_80CDF0C
@@ -7424,7 +7424,7 @@ _080CDFAC:
sub_80CDFB0: @ 80CDFB0
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, _080CDFF8 @ =gBattleAnimPlayerMonIndex
+ ldr r6, _080CDFF8 @ =gBattleAnimBankAttacker
ldrb r0, [r6]
movs r1, 0x2
bl sub_8077ABC
@@ -7456,7 +7456,7 @@ sub_80CDFB0: @ 80CDFB0
pop {r0}
bx r0
.align 2, 0
-_080CDFF8: .4byte gBattleAnimPlayerMonIndex
+_080CDFF8: .4byte gBattleAnimBankAttacker
_080CDFFC: .4byte sub_80CE000
thumb_func_end sub_80CDFB0
@@ -7551,7 +7551,7 @@ sub_80CE09C: @ 80CE09C
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080CE0E6
- ldr r4, _080CE0FC @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CE0FC @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -7593,7 +7593,7 @@ _080CE0F6:
pop {r0}
bx r0
.align 2, 0
-_080CE0FC: .4byte gBattleAnimPlayerMonIndex
+_080CE0FC: .4byte gBattleAnimBankAttacker
_080CE100: .4byte gBattleAnimArgs
_080CE104: .4byte 0x0000ffff
thumb_func_end sub_80CE09C
@@ -7708,7 +7708,7 @@ _080CE1C0:
strb r0, [r2]
movs r0, 0x1E
strh r0, [r5, 0x2E]
- ldr r4, _080CE204 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CE204 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -7725,13 +7725,13 @@ _080CE1C0:
str r0, [r5, 0x1C]
ldr r1, _080CE20C @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
_080CE1FC:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080CE204: .4byte gBattleAnimPlayerMonIndex
+_080CE204: .4byte gBattleAnimBankAttacker
_080CE208: .4byte sub_8078B34
_080CE20C: .4byte move_anim_8072740
thumb_func_end sub_80CE1AC
@@ -7926,7 +7926,7 @@ _080CE366:
sub_80CE36C: @ 80CE36C
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080CE3A4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CE3A4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x2
bl sub_8077ABC
@@ -7951,7 +7951,7 @@ sub_80CE36C: @ 80CE36C
pop {r0}
bx r0
.align 2, 0
-_080CE3A4: .4byte gBattleAnimPlayerMonIndex
+_080CE3A4: .4byte gBattleAnimBankAttacker
_080CE3A8: .4byte gBattleAnimArgs
_080CE3AC: .4byte sub_80CE3B0
thumb_func_end sub_80CE36C
@@ -8339,7 +8339,7 @@ _080CE68E:
strh r0, [r5, 0x2E]
ldrh r0, [r6, 0x4]
strh r0, [r5, 0x30]
- ldr r4, _080CE6F8 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CE6F8 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -8384,10 +8384,10 @@ _080CE68E:
b _080CE726
.align 2, 0
_080CE6F4: .4byte gBattleAnimArgs
-_080CE6F8: .4byte gBattleAnimEnemyMonIndex
+_080CE6F8: .4byte gBattleAnimBankTarget
_080CE6FC: .4byte 0xffffec00
_080CE700:
- ldr r0, _080CE740 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CE740 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -8417,7 +8417,7 @@ _080CE726:
strh r0, [r5, 0x38]
b _080CE784
.align 2, 0
-_080CE740: .4byte gBattleAnimPlayerMonIndex
+_080CE740: .4byte gBattleAnimBankAttacker
_080CE744: .4byte 0xfffff600
_080CE748:
ldrh r0, [r5, 0x20]
@@ -8515,7 +8515,7 @@ sub_80CE7E0: @ 80CE7E0
ldr r1, _080CE870 @ =gTasks
adds r6, r0, r1
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x8]
@@ -8615,7 +8615,7 @@ _080CE8B4:
_080CE8C6:
ldr r0, _080CE8E8 @ =sub_80CE910
str r0, [r6]
- ldr r0, _080CE8EC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CE8EC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -8630,7 +8630,7 @@ _080CE8C6:
.align 2, 0
_080CE8E4: .4byte sub_80CE974
_080CE8E8: .4byte sub_80CE910
-_080CE8EC: .4byte gBattleAnimPlayerMonIndex
+_080CE8EC: .4byte gBattleAnimBankAttacker
_080CE8F0: .4byte 0x0000fdff
_080CE8F4:
movs r2, 0x80
@@ -8664,7 +8664,7 @@ sub_80CE910: @ 80CE910
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080CE968
- ldr r0, _080CE948 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CE948 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -8679,7 +8679,7 @@ sub_80CE910: @ 80CE910
b _080CE956
.align 2, 0
_080CE944: .4byte gTasks
-_080CE948: .4byte gBattleAnimPlayerMonIndex
+_080CE948: .4byte gBattleAnimBankAttacker
_080CE94C:
movs r0, 0x80
lsls r0, 19
@@ -8782,7 +8782,7 @@ sub_80CEA04: @ 80CEA04
push {r4,lr}
adds r4, r0, 0
ldr r1, _080CEA18 @ =move_anim_8072740
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CEA1C @ =sub_8078600
str r0, [r4, 0x1C]
pop {r4}
@@ -8964,7 +8964,7 @@ _080CEB48:
_080CEB64: .4byte gBattleAnimArgs
_080CEB68: .4byte gUnknown_083D712C
_080CEB6C:
- ldr r4, _080CEBBC @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CEBBC @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -9002,7 +9002,7 @@ _080CEB86:
pop {r0}
bx r0
.align 2, 0
-_080CEBBC: .4byte gBattleAnimEnemyMonIndex
+_080CEBBC: .4byte gBattleAnimBankTarget
_080CEBC0: .4byte sub_80CEC1C
thumb_func_end sub_80CEB0C
@@ -9165,7 +9165,7 @@ _080CECE4: .4byte gUnknown_083D712C
sub_80CECE8: @ 80CECE8
push {r4-r7,lr}
adds r6, r0, 0
- ldr r7, _080CED6C @ =gBattleAnimPlayerMonIndex
+ ldr r7, _080CED6C @ =gBattleAnimBankAttacker
ldrb r0, [r7]
bl GetBankSide
lsls r0, 24
@@ -9225,7 +9225,7 @@ _080CED06:
pop {r0}
bx r0
.align 2, 0
-_080CED6C: .4byte gBattleAnimPlayerMonIndex
+_080CED6C: .4byte gBattleAnimBankAttacker
_080CED70: .4byte gBattleAnimArgs
_080CED74: .4byte sub_80CED78
thumb_func_end sub_80CECE8
@@ -9316,7 +9316,7 @@ _080CEE10: .4byte gBattleAnimArgs
_080CEE14:
ldr r6, _080CEE50 @ =0x0000fff0
_080CEE16:
- ldr r4, _080CEE54 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CEE54 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -9337,13 +9337,13 @@ _080CEE16:
str r0, [r5, 0x1C]
ldr r1, _080CEE5C @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
_080CEE50: .4byte 0x0000fff0
-_080CEE54: .4byte gBattleAnimPlayerMonIndex
+_080CEE54: .4byte gBattleAnimBankAttacker
_080CEE58: .4byte sub_80782D8
_080CEE5C: .4byte move_anim_8072740
thumb_func_end sub_80CEDF0
@@ -9519,13 +9519,13 @@ sub_80CEF9C: @ 80CEF9C
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080CEFB8
- ldr r0, _080CEFB4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CEFB4 @ =gBattleAnimBankAttacker
b _080CEFBA
.align 2, 0
_080CEFB0: .4byte gBattleAnimArgs
-_080CEFB4: .4byte gBattleAnimPlayerMonIndex
+_080CEFB4: .4byte gBattleAnimBankAttacker
_080CEFB8:
- ldr r0, _080CEFF8 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CEFF8 @ =gBattleAnimBankTarget
_080CEFBA:
ldrb r4, [r0]
adds r0, r4, 0
@@ -9547,14 +9547,14 @@ _080CEFBA:
bl StartSpriteAnim
ldr r1, _080CF000 @ =sub_80CF008
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CF004 @ =sub_8078600
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080CEFF8: .4byte gBattleAnimEnemyMonIndex
+_080CEFF8: .4byte gBattleAnimBankTarget
_080CEFFC: .4byte gBattleAnimArgs
_080CF000: .4byte sub_80CF008
_080CF004: .4byte sub_8078600
@@ -9572,7 +9572,7 @@ sub_80CF008: @ 80CF008
bne _080CF030
ldr r1, _080CF038 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldrh r1, [r4, 0x30]
lsls r1, 24
lsrs r1, 24
@@ -9598,13 +9598,13 @@ sub_80CF040: @ 80CF040
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080CF05C
- ldr r0, _080CF058 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CF058 @ =gBattleAnimBankAttacker
b _080CF05E
.align 2, 0
_080CF054: .4byte gBattleAnimArgs
-_080CF058: .4byte gBattleAnimPlayerMonIndex
+_080CF058: .4byte gBattleAnimBankAttacker
_080CF05C:
- ldr r0, _080CF07C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CF07C @ =gBattleAnimBankTarget
_080CF05E:
ldrb r0, [r0]
adds r1, r4, 0
@@ -9613,14 +9613,14 @@ _080CF05E:
strh r0, [r4, 0x2E]
ldr r1, _080CF080 @ =sub_80CF088
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CF084 @ =sub_80785E4
str r0, [r4, 0x1C]
pop {r4}
pop {r0}
bx r0
.align 2, 0
-_080CF07C: .4byte gBattleAnimEnemyMonIndex
+_080CF07C: .4byte gBattleAnimBankTarget
_080CF080: .4byte sub_80CF088
_080CF084: .4byte sub_80785E4
thumb_func_end sub_80CF040
@@ -9641,7 +9641,7 @@ sub_80CF088: @ 80CF088
bl StartSpriteAffineAnim
ldr r1, _080CF0B4 @ =move_anim_8074EE0
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CF0B8 @ =sub_80785E4
str r0, [r4, 0x1C]
_080CF0AE:
@@ -9662,13 +9662,13 @@ sub_80CF0BC: @ 80CF0BC
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080CF0D8
- ldr r0, _080CF0D4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CF0D4 @ =gBattleAnimBankAttacker
b _080CF0DA
.align 2, 0
_080CF0D0: .4byte gBattleAnimArgs
-_080CF0D4: .4byte gBattleAnimPlayerMonIndex
+_080CF0D4: .4byte gBattleAnimBankAttacker
_080CF0D8:
- ldr r0, _080CF12C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CF12C @ =gBattleAnimBankTarget
_080CF0DA:
ldrb r5, [r0]
adds r0, r5, 0
@@ -9702,14 +9702,14 @@ _080CF102:
strh r6, [r4, 0x36]
ldr r1, _080CF130 @ =sub_80CF138
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CF134 @ =sub_80785E4
str r0, [r4, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080CF12C: .4byte gBattleAnimEnemyMonIndex
+_080CF12C: .4byte gBattleAnimBankTarget
_080CF130: .4byte sub_80CF138
_080CF134: .4byte sub_80785E4
thumb_func_end sub_80CF0BC
@@ -9808,13 +9808,13 @@ sub_80CF1C8: @ 80CF1C8
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080CF1E4
- ldr r0, _080CF1E0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CF1E0 @ =gBattleAnimBankAttacker
b _080CF1E6
.align 2, 0
_080CF1DC: .4byte gBattleAnimArgs
-_080CF1E0: .4byte gBattleAnimPlayerMonIndex
+_080CF1E0: .4byte gBattleAnimBankAttacker
_080CF1E4:
- ldr r0, _080CF208 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CF208 @ =gBattleAnimBankTarget
_080CF1E6:
ldrb r4, [r0]
adds r0, r4, 0
@@ -9831,7 +9831,7 @@ _080CF1E6:
movs r0, 0x2
b _080CF216
.align 2, 0
-_080CF208: .4byte gBattleAnimEnemyMonIndex
+_080CF208: .4byte gBattleAnimBankTarget
_080CF20C:
adds r0, r5, 0
movs r1, 0x1
@@ -9868,7 +9868,7 @@ sub_80CF228: @ 80CF228
bl StartSpriteAnim
ldr r1, _080CF25C @ =sub_80CF264
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080CF260 @ =sub_8078600
str r0, [r4, 0x1C]
_080CF256:
@@ -9922,7 +9922,7 @@ sub_80CF280: @ 80CF280
strh r0, [r4, 0x36]
ldr r1, _080CF2C8 @ =move_anim_8074EE0
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r1, _080CF2CC @ =sub_8078278
str r1, [r4, 0x1C]
adds r0, r4, 0
@@ -9945,13 +9945,13 @@ sub_80CF2D0: @ 80CF2D0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080CF2EC
- ldr r0, _080CF2E8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CF2E8 @ =gBattleAnimBankAttacker
b _080CF2EE
.align 2, 0
_080CF2E4: .4byte gBattleAnimArgs
-_080CF2E8: .4byte gBattleAnimPlayerMonIndex
+_080CF2E8: .4byte gBattleAnimBankAttacker
_080CF2EC:
- ldr r0, _080CF308 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CF308 @ =gBattleAnimBankTarget
_080CF2EE:
ldrb r0, [r0]
adds r1, r4, 0
@@ -9965,7 +9965,7 @@ _080CF2EE:
pop {r0}
bx r0
.align 2, 0
-_080CF308: .4byte gBattleAnimEnemyMonIndex
+_080CF308: .4byte gBattleAnimBankTarget
_080CF30C: .4byte sub_80CF310
thumb_func_end sub_80CF2D0
@@ -10075,7 +10075,7 @@ _080CF3C0: .4byte gSprites
sub_80CF3C4: @ 80CF3C4
push {r4-r6,lr}
adds r5, r0, 0
- ldr r4, _080CF40C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080CF40C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -10089,7 +10089,7 @@ sub_80CF3C4: @ 80CF3C4
lsrs r0, 24
strh r0, [r5, 0x22]
ldr r1, _080CF410 @ =gObjectBankIDs
- ldr r0, _080CF414 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CF414 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r0, r1
ldrb r6, [r0]
@@ -10106,9 +10106,9 @@ sub_80CF3C4: @ 80CF3C4
adds r1, r0, 0
b _080CF426
.align 2, 0
-_080CF40C: .4byte gBattleAnimPlayerMonIndex
+_080CF40C: .4byte gBattleAnimBankAttacker
_080CF410: .4byte gObjectBankIDs
-_080CF414: .4byte gBattleAnimEnemyMonIndex
+_080CF414: .4byte gBattleAnimBankTarget
_080CF418: .4byte gBattleAnimArgs
_080CF41C:
ldr r1, _080CF450 @ =gBattleAnimArgs
@@ -10159,7 +10159,7 @@ sub_80CF458: @ 80CF458
str r0, [r4, 0x1C]
ldr r1, _080CF48C @ =sub_80CF490
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
@@ -10182,7 +10182,7 @@ sub_80CF490: @ 80CF490
ldr r1, _080CF4B0 @ =sub_8078B34
str r1, [r0, 0x1C]
ldr r1, _080CF4B4 @ =sub_80CF4B8
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
@@ -10217,7 +10217,7 @@ sub_80CF4D8: @ 80CF4D8
lsls r4, 24
lsrs r4, 24
ldr r1, _080CF504 @ =gObjectBankIDs
- ldr r0, _080CF508 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CF508 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -10235,7 +10235,7 @@ sub_80CF4D8: @ 80CF4D8
bx r0
.align 2, 0
_080CF504: .4byte gObjectBankIDs
-_080CF508: .4byte gBattleAnimPlayerMonIndex
+_080CF508: .4byte gBattleAnimBankAttacker
_080CF50C: .4byte gTasks
_080CF510: .4byte sub_80CF514
thumb_func_end sub_80CF4D8
@@ -10246,7 +10246,7 @@ sub_80CF514: @ 80CF514
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _080CF544 @ =gObjectBankIDs
- ldr r0, _080CF548 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CF548 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r1, r0, r1
ldrb r4, [r1]
@@ -10267,7 +10267,7 @@ sub_80CF514: @ 80CF514
b _080CF55E
.align 2, 0
_080CF544: .4byte gObjectBankIDs
-_080CF548: .4byte gBattleAnimPlayerMonIndex
+_080CF548: .4byte gBattleAnimBankAttacker
_080CF54C: .4byte gTasks
_080CF550:
ldr r2, _080CF590 @ =gTasks
@@ -10382,7 +10382,7 @@ sub_80CF610: @ 80CF610
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
- ldr r0, _080CF65C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CF65C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -10404,7 +10404,7 @@ sub_80CF610: @ 80CF610
b _080CF674
.align 2, 0
_080CF658: .4byte gBattleAnimArgs
-_080CF65C: .4byte gBattleAnimPlayerMonIndex
+_080CF65C: .4byte gBattleAnimBankAttacker
_080CF660:
movs r1, 0x4
ldrsh r0, [r5, r1]
@@ -10421,7 +10421,7 @@ _080CF674:
str r0, [r4, 0x1C]
ldr r1, _080CF68C @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
@@ -10440,7 +10440,7 @@ sub_80CF690: @ 80CF690
str r0, [r4, 0x1C]
ldr r1, _080CF6B0 @ =sub_80CF6B4
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
@@ -10462,7 +10462,7 @@ sub_80CF6B4: @ 80CF6B4
ldr r1, _080CF6D4 @ =sub_8078B34
str r1, [r0, 0x1C]
ldr r1, _080CF6D8 @ =move_anim_8072740
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
@@ -10489,7 +10489,7 @@ sub_80CF6DC: @ 80CF6DC
.align 2, 0
_080CF6FC: .4byte gBattleAnimArgs
_080CF700:
- ldr r0, _080CF7C8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CF7C8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -10509,7 +10509,7 @@ _080CF722:
adds r0, r5, 0
movs r1, 0x1
bl sub_80787B0
- ldr r4, _080CF7D0 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CF7D0 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -10575,7 +10575,7 @@ _080CF794:
str r0, [r5, 0x1C]
ldr r1, _080CF7DC @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
add sp, 0x4
pop {r3}
mov r8, r3
@@ -10583,9 +10583,9 @@ _080CF794:
pop {r0}
bx r0
.align 2, 0
-_080CF7C8: .4byte gBattleAnimPlayerMonIndex
+_080CF7C8: .4byte gBattleAnimBankAttacker
_080CF7CC: .4byte gBattleAnimArgs
-_080CF7D0: .4byte gBattleAnimEnemyMonIndex
+_080CF7D0: .4byte gBattleAnimBankTarget
_080CF7D4: .4byte 0xffffa000
_080CF7D8: .4byte sub_8078B34
_080CF7DC: .4byte move_anim_8072740
@@ -11068,7 +11068,7 @@ _080CFB68:
b _080CFBCA
_080CFB70:
ldr r1, _080CFBB4 @ =gBanksBySide
- ldr r0, _080CFBB8 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CFBB8 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -11102,7 +11102,7 @@ _080CFB70:
b _080CFBC8
.align 2, 0
_080CFBB4: .4byte gBanksBySide
-_080CFBB8: .4byte gBattleAnimEnemyMonIndex
+_080CFBB8: .4byte gBattleAnimBankTarget
_080CFBBC: .4byte gTasks
_080CFBC0: .4byte gBattleAnimArgs
_080CFBC4:
@@ -11111,7 +11111,7 @@ _080CFBC4:
_080CFBC8:
strh r0, [r2, 0x4]
_080CFBCA:
- ldr r5, _080CFC24 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080CFC24 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
bl sub_8077ABC
@@ -11137,11 +11137,11 @@ _080CFBCA:
ands r0, r1
cmp r0, 0
beq _080CFC34
- ldr r4, _080CFC30 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CFC30 @ =gBattleAnimBankTarget
ldrb r1, [r4]
movs r0, 0x2
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080CFC34
@@ -11152,13 +11152,13 @@ _080CFBCA:
bl sub_807A3FC
b _080CFC56
.align 2, 0
-_080CFC24: .4byte gBattleAnimPlayerMonIndex
+_080CFC24: .4byte gBattleAnimBankAttacker
_080CFC28: .4byte gTasks
_080CFC2C: .4byte gBattleTypeFlags
-_080CFC30: .4byte gBattleAnimEnemyMonIndex
+_080CFC30: .4byte gBattleAnimBankTarget
_080CFC34:
mov r5, sp
- ldr r4, _080CFC90 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CFC90 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -11203,7 +11203,7 @@ _080CFC56:
subs r0, r2, r1
b _080CFC9E
.align 2, 0
-_080CFC90: .4byte gBattleAnimEnemyMonIndex
+_080CFC90: .4byte gBattleAnimBankTarget
_080CFC94: .4byte gTasks
_080CFC98: .4byte gBattleAnimArgs
_080CFC9C:
@@ -11301,7 +11301,7 @@ _080CFD3C:
asrs r0, 16
cmp r0, 0x3F
ble _080CFDB4
- ldr r0, _080CFD84 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CFD84 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079E90
lsls r0, 24
@@ -11315,14 +11315,14 @@ _080CFD3C:
.align 2, 0
_080CFD7C: .4byte gTasks
_080CFD80: .4byte gBattleAnimArgs
-_080CFD84: .4byte gBattleAnimEnemyMonIndex
+_080CFD84: .4byte gBattleAnimBankTarget
_080CFD88: .4byte 0x0000ffc0
_080CFD8C:
lsls r0, r1, 16
asrs r0, 16
cmp r0, 0x3F
ble _080CFDB4
- ldr r0, _080CFDAC @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CFDAC @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079E90
lsls r0, 24
@@ -11334,10 +11334,10 @@ _080CFD8C:
adds r0, r1
b _080CFDC4
.align 2, 0
-_080CFDAC: .4byte gBattleAnimEnemyMonIndex
+_080CFDAC: .4byte gBattleAnimBankTarget
_080CFDB0: .4byte 0x0000ffc0
_080CFDB4:
- ldr r0, _080CFDF0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080CFDF0 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079E90
lsls r0, 24
@@ -11369,7 +11369,7 @@ _080CFDDC:
pop {r0}
bx r0
.align 2, 0
-_080CFDF0: .4byte gBattleAnimEnemyMonIndex
+_080CFDF0: .4byte gBattleAnimBankTarget
_080CFDF4: .4byte gTasks
_080CFDF8: .4byte sub_80CFA20
thumb_func_end sub_80CFB04
@@ -11466,7 +11466,7 @@ sub_80CFE9C: @ 80CFE9C
adds r5, r0, 0
movs r1, 0x1
bl sub_80787B0
- ldr r4, _080CFF3C @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080CFF3C @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -11482,7 +11482,7 @@ sub_80CFE9C: @ 80CFE9C
adds r0, r1
lsls r0, 16
lsrs r7, r0, 16
- ldr r0, _080CFF44 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CFF44 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11530,15 +11530,15 @@ _080CFEE0:
str r0, [r5, 0x1C]
ldr r1, _080CFF4C @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
-_080CFF3C: .4byte gBattleAnimEnemyMonIndex
+_080CFF3C: .4byte gBattleAnimBankTarget
_080CFF40: .4byte gBattleAnimArgs
-_080CFF44: .4byte gBattleAnimPlayerMonIndex
+_080CFF44: .4byte gBattleAnimBankAttacker
_080CFF48: .4byte sub_8078C00
_080CFF4C: .4byte move_anim_8072740
thumb_func_end sub_80CFE9C
@@ -11568,7 +11568,7 @@ sub_80CFF68: @ 80CFF68
lsls r0, 16
asrs r0, 24
strh r0, [r4, 0x24]
- ldr r0, _080CFFD4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080CFFD4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11613,7 +11613,7 @@ _080CFFCC:
pop {r0}
bx r0
.align 2, 0
-_080CFFD4: .4byte gBattleAnimPlayerMonIndex
+_080CFFD4: .4byte gBattleAnimBankAttacker
thumb_func_end sub_80CFF68
thumb_func_start sub_80CFFD8
@@ -11624,7 +11624,7 @@ sub_80CFFD8: @ 80CFFD8
bl sub_80787B0
movs r0, 0x14
strh r0, [r4, 0x2E]
- ldr r5, _080D0024 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080D0024 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -11647,12 +11647,12 @@ sub_80CFFD8: @ 80CFFD8
strb r0, [r2]
ldr r1, _080D002C @ =sub_80D0030
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080D0024: .4byte gBattleAnimEnemyMonIndex
+_080D0024: .4byte gBattleAnimBankTarget
_080D0028: .4byte sub_8078B34
_080D002C: .4byte sub_80D0030
thumb_func_end sub_80CFFD8
@@ -11781,7 +11781,7 @@ sub_80D0118: @ 80D0118
adds r4, r0, 0
movs r1, 0
bl sub_80787B0
- ldr r0, _080D0168 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D0168 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11806,7 +11806,7 @@ _080D0136:
str r0, [r4, 0x1C]
ldr r1, _080D0174 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r1, [r4, 0x1C]
adds r0, r4, 0
bl _call_via_r1
@@ -11814,7 +11814,7 @@ _080D0136:
pop {r0}
bx r0
.align 2, 0
-_080D0168: .4byte gBattleAnimPlayerMonIndex
+_080D0168: .4byte gBattleAnimBankAttacker
_080D016C: .4byte gBattleAnimArgs
_080D0170: .4byte sub_8078114
_080D0174: .4byte move_anim_8072740
@@ -11856,7 +11856,7 @@ _080D01A4:
strh r0, [r5, 0x22]
movs r0, 0x6
strh r0, [r5, 0x2E]
- ldr r4, _080D0200 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D0200 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -11875,7 +11875,7 @@ _080D01A4:
str r0, [r5, 0x1C]
ldr r1, _080D0208 @ =sub_80D020C
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r3}
mov r8, r3
pop {r4-r7}
@@ -11885,7 +11885,7 @@ _080D01A4:
_080D01F4: .4byte 0x0000ffe0
_080D01F8: .4byte 0x0000fff0
_080D01FC: .4byte gBattleAnimArgs
-_080D0200: .4byte gBattleAnimEnemyMonIndex
+_080D0200: .4byte gBattleAnimBankTarget
_080D0204: .4byte sub_8078B34
_080D0208: .4byte sub_80D020C
thumb_func_end sub_80D0178
@@ -11949,7 +11949,7 @@ _080D025C:
movs r0, 0x6
strh r0, [r5, 0x2E]
strh r1, [r5, 0x30]
- ldr r4, _080D02C8 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D02C8 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -11984,7 +11984,7 @@ _080D025C:
_080D02BC: .4byte 0x0000ffe0
_080D02C0: .4byte 0x0000fff0
_080D02C4: .4byte gBattleAnimArgs
-_080D02C8: .4byte gBattleAnimEnemyMonIndex
+_080D02C8: .4byte gBattleAnimBankTarget
_080D02CC: .4byte sub_80D02D0
thumb_func_end sub_80D0228
@@ -12125,7 +12125,7 @@ sub_80D03C4: @ 80D03C4
lsls r5, 24
lsrs r5, 24
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -12185,7 +12185,7 @@ sub_80D0428: @ 80D0428
cmp r1, r0
bne _080D0478
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -12223,7 +12223,7 @@ sub_80D0488: @ 80D0488
ldr r0, _080D04D4 @ =gTasks
adds r4, r0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
movs r5, 0
@@ -12238,7 +12238,7 @@ sub_80D0488: @ 80D0488
strh r0, [r4, 0x10]
strh r5, [r4, 0x12]
strh r5, [r4, 0x14]
- ldr r0, _080D04D8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D04D8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8079E90
lsls r0, 24
@@ -12251,7 +12251,7 @@ sub_80D0488: @ 80D0488
bx r0
.align 2, 0
_080D04D4: .4byte gTasks
-_080D04D8: .4byte gBattleAnimPlayerMonIndex
+_080D04D8: .4byte gBattleAnimBankAttacker
_080D04DC: .4byte sub_80D04E0
thumb_func_end sub_80D0488
@@ -12593,7 +12593,7 @@ _080D0770: .4byte gTasks
_080D0774: .4byte gBattleAnimArgs
_080D0778:
ldrb r0, [r5]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -12775,7 +12775,7 @@ sub_80D08C8: @ 80D08C8
ldr r0, _080D08F8 @ =gTasks
adds r4, r0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -12821,7 +12821,7 @@ _080D092C: .4byte gTasks
sub_80D0930: @ 80D0930
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, _080D0960 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080D0960 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
@@ -12840,7 +12840,7 @@ sub_80D0930: @ 80D0930
movs r0, 0x40
b _080D097E
.align 2, 0
-_080D0960: .4byte gBattleAnimPlayerMonIndex
+_080D0960: .4byte gBattleAnimBankAttacker
_080D0964:
adds r0, r4, 0
movs r1, 0x1
@@ -12855,7 +12855,7 @@ _080D0964:
ldr r0, _080D09B0 @ =0x0000ffc0
_080D097E:
strh r0, [r4, 0x30]
- ldr r0, _080D09B4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D09B4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x3
bl sub_8077ABC
@@ -12870,7 +12870,7 @@ _080D097E:
strh r1, [r4, 0x36]
ldr r1, _080D09B8 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080D09BC @ =sub_8078394
str r0, [r4, 0x1C]
pop {r4,r5}
@@ -12878,7 +12878,7 @@ _080D097E:
bx r0
.align 2, 0
_080D09B0: .4byte 0x0000ffc0
-_080D09B4: .4byte gBattleAnimPlayerMonIndex
+_080D09B4: .4byte gBattleAnimBankAttacker
_080D09B8: .4byte move_anim_8072740
_080D09BC: .4byte sub_8078394
thumb_func_end sub_80D0930
@@ -12892,13 +12892,13 @@ sub_80D09C0: @ 80D09C0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D09DC
- ldr r0, _080D09D8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D09D8 @ =gBattleAnimBankAttacker
b _080D09DE
.align 2, 0
_080D09D4: .4byte gBattleAnimArgs
-_080D09D8: .4byte gBattleAnimPlayerMonIndex
+_080D09D8: .4byte gBattleAnimBankAttacker
_080D09DC:
- ldr r0, _080D0A3C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D0A3C @ =gBattleAnimBankTarget
_080D09DE:
ldrb r5, [r0]
adds r0, r5, 0
@@ -12939,14 +12939,14 @@ _080D09F8:
_080D0A2A:
ldr r1, _080D0A44 @ =move_anim_8074EE0
adds r0, r6, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080D0A48 @ =sub_80785E4
str r0, [r6, 0x1C]
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080D0A3C: .4byte gBattleAnimEnemyMonIndex
+_080D0A3C: .4byte gBattleAnimBankTarget
_080D0A40: .4byte gBattleAnimArgs
_080D0A44: .4byte move_anim_8074EE0
_080D0A48: .4byte sub_80785E4
@@ -12963,7 +12963,7 @@ sub_80D0A4C: @ 80D0A4C
ldr r0, _080D0A80 @ =gTasks
adds r4, r0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -13019,7 +13019,7 @@ sub_80D0AB8: @ 80D0AB8
ldr r0, _080D0B2C @ =gTasks
adds r4, r1, r0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
movs r2, 0
@@ -13050,7 +13050,7 @@ sub_80D0AB8: @ 80D0AB8
strh r2, [r4, 0x18]
movs r0, 0x2
strh r0, [r4, 0x1A]
- ldr r0, _080D0B34 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D0B34 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -13070,7 +13070,7 @@ _080D0B22:
.align 2, 0
_080D0B2C: .4byte gTasks
_080D0B30: .4byte gSprites
-_080D0B34: .4byte gBattleAnimPlayerMonIndex
+_080D0B34: .4byte gBattleAnimBankAttacker
_080D0B38: .4byte sub_80D0B3C
thumb_func_end sub_80D0AB8
@@ -13260,7 +13260,7 @@ sub_80D0C88: @ 80D0C88
lsls r1, 3
ldr r0, _080D0CD8 @ =gTasks
adds r5, r1, r0
- ldr r4, _080D0CDC @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D0CDC @ =gBattleAnimBankTarget
ldrb r0, [r4]
bl sub_8077FC0
lsls r0, 24
@@ -13290,7 +13290,7 @@ sub_80D0C88: @ 80D0C88
b _080D0CF0
.align 2, 0
_080D0CD8: .4byte gTasks
-_080D0CDC: .4byte gBattleAnimEnemyMonIndex
+_080D0CDC: .4byte gBattleAnimBankTarget
_080D0CE0: .4byte gUnknown_030042C0
_080D0CE4: .4byte REG_BG1HOFS
_080D0CE8:
@@ -13472,7 +13472,7 @@ _080D0E2C: .4byte gUnknown_03004DC0
sub_80D0E30: @ 80D0E30
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, _080D0E84 @ =gBattleAnimEnemyMonIndex
+ ldr r6, _080D0E84 @ =gBattleAnimBankTarget
ldrb r0, [r6]
movs r1, 0
bl sub_8077ABC
@@ -13509,7 +13509,7 @@ sub_80D0E30: @ 80D0E30
pop {r0}
bx r0
.align 2, 0
-_080D0E84: .4byte gBattleAnimEnemyMonIndex
+_080D0E84: .4byte gBattleAnimBankTarget
_080D0E88: .4byte sub_80D0E8C
thumb_func_end sub_80D0E30
@@ -13709,13 +13709,13 @@ sub_80D0FD8: @ 80D0FD8
adds r1, r0, 0
cmp r2, 0
bne _080D1004
- ldr r0, _080D1000 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D1000 @ =gBattleAnimBankAttacker
b _080D1006
.align 2, 0
_080D0FFC: .4byte gBattleAnimArgs
-_080D1000: .4byte gBattleAnimPlayerMonIndex
+_080D1000: .4byte gBattleAnimBankAttacker
_080D1004:
- ldr r0, _080D1040 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D1040 @ =gBattleAnimBankTarget
_080D1006:
ldrb r5, [r0]
ldrb r1, [r1, 0x6]
@@ -13729,7 +13729,7 @@ _080D1006:
movs r1, 0x2
adds r0, r5, 0
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080D107E
@@ -13744,7 +13744,7 @@ _080D1006:
movs r1, 0
b _080D1048
.align 2, 0
-_080D1040: .4byte gBattleAnimEnemyMonIndex
+_080D1040: .4byte gBattleAnimBankTarget
_080D1044:
adds r0, r5, 0
movs r1, 0x2
@@ -13826,18 +13826,18 @@ sub_80D10B8: @ 80D10B8
ldrsh r0, [r0, r2]
cmp r0, 0
bne _080D10F0
- ldr r0, _080D10E8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D10E8 @ =gBattleAnimBankAttacker
ldrb r7, [r0]
- ldr r0, _080D10EC @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D10EC @ =gBattleAnimBankTarget
b _080D10F6
.align 2, 0
_080D10E4: .4byte gBattleAnimArgs
-_080D10E8: .4byte gBattleAnimPlayerMonIndex
-_080D10EC: .4byte gBattleAnimEnemyMonIndex
+_080D10E8: .4byte gBattleAnimBankAttacker
+_080D10EC: .4byte gBattleAnimBankTarget
_080D10F0:
- ldr r0, _080D1110 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D1110 @ =gBattleAnimBankTarget
ldrb r7, [r0]
- ldr r0, _080D1114 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D1114 @ =gBattleAnimBankAttacker
_080D10F6:
ldrb r0, [r0]
mov r8, r0
@@ -13852,8 +13852,8 @@ _080D10F6:
str r1, [sp, 0x4]
b _080D1124
.align 2, 0
-_080D1110: .4byte gBattleAnimEnemyMonIndex
-_080D1114: .4byte gBattleAnimPlayerMonIndex
+_080D1110: .4byte gBattleAnimBankTarget
+_080D1114: .4byte gBattleAnimBankAttacker
_080D1118: .4byte gBattleAnimArgs
_080D111C:
movs r2, 0x2
@@ -13881,7 +13881,7 @@ _080D1124:
mov r4, r8
eors r4, r0
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080D1170
@@ -13925,7 +13925,7 @@ _080D1180:
movs r0, 0x2
eors r4, r0
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080D1204
@@ -14002,7 +14002,7 @@ _080D121A:
mov r0, r8
movs r1, 0x2
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080D127C
@@ -14139,7 +14139,7 @@ sub_80D1368: @ 80D1368
adds r4, r0, 0
movs r1, 0
bl sub_80787B0
- ldr r0, _080D139C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D139C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -14161,7 +14161,7 @@ _080D1384:
pop {r0}
bx r0
.align 2, 0
-_080D139C: .4byte gBattleAnimPlayerMonIndex
+_080D139C: .4byte gBattleAnimBankAttacker
_080D13A0: .4byte 0x0000ff60
_080D13A4: .4byte gBattleAnimArgs
_080D13A8: .4byte sub_80D13AC
@@ -14184,7 +14184,7 @@ sub_80D13AC: @ 80D13AC
strh r0, [r4, 0x24]
subs r2, 0x20
strh r2, [r4, 0x2E]
- ldr r0, _080D1418 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D1418 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -14223,7 +14223,7 @@ _080D1410:
pop {r0}
bx r0
.align 2, 0
-_080D1418: .4byte gBattleAnimPlayerMonIndex
+_080D1418: .4byte gBattleAnimBankAttacker
_080D141C: .4byte 0x0000ff60
_080D1420: .4byte sub_80D1424
thumb_func_end sub_80D13AC
@@ -14449,7 +14449,7 @@ sub_80D15A4: @ 80D15A4
ldr r0, _080D15D4 @ =gTasks
adds r4, r0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -14531,7 +14531,7 @@ sub_80D1638: @ 80D1638
strh r0, [r4, 0xE]
movs r0, 0x3
strh r0, [r4, 0x20]
- ldr r0, _080D1670 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D1670 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -14543,7 +14543,7 @@ sub_80D1638: @ 80D1638
b _080D167E
.align 2, 0
_080D166C: .4byte gTasks
-_080D1670: .4byte gBattleAnimEnemyMonIndex
+_080D1670: .4byte gBattleAnimBankTarget
_080D1674: .4byte 0x0000ffff
_080D1678:
movs r0, 0x1
@@ -14552,7 +14552,7 @@ _080D1678:
_080D167E:
strh r0, [r4, 0x24]
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -14745,7 +14745,7 @@ sub_80D17C4: @ 80D17C4
movs r0, 0x2
strh r0, [r4, 0x24]
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -14888,7 +14888,7 @@ sub_80D18D4: @ 80D18D4
strh r0, [r4, 0x16]
strh r0, [r4, 0x18]
strh r0, [r4, 0x22]
- ldr r5, _080D1928 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080D1928 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
bl sub_8077ABC
@@ -14908,7 +14908,7 @@ sub_80D18D4: @ 80D18D4
bx r0
.align 2, 0
_080D1924: .4byte gTasks
-_080D1928: .4byte gBattleAnimPlayerMonIndex
+_080D1928: .4byte gBattleAnimBankAttacker
_080D192C: .4byte sub_80D1930
thumb_func_end sub_80D18D4
@@ -15171,7 +15171,7 @@ _080D1AF4:
adds r1, r0
_080D1B1C:
adds r0, r4, 0
- bl sub_800D238
+ bl LZDecompressWram
movs r5, 0
_080D1B24:
lsls r4, r5, 5
@@ -15293,7 +15293,7 @@ sub_80D1C08: @ 80D1C08
adds r5, r0, 0
movs r1, 0
bl sub_80787B0
- ldr r6, _080D1C70 @ =gBattleAnimPlayerMonIndex
+ ldr r6, _080D1C70 @ =gBattleAnimBankAttacker
ldrb r0, [r6]
bl GetBankSide
lsls r0, 24
@@ -15327,7 +15327,7 @@ _080D1C28:
str r0, [r5, 0x1C]
ldr r1, _080D1C7C @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldrb r1, [r4, 0xA]
ldrb r2, [r4, 0xC]
adds r0, r5, 0
@@ -15336,7 +15336,7 @@ _080D1C28:
pop {r0}
bx r0
.align 2, 0
-_080D1C70: .4byte gBattleAnimPlayerMonIndex
+_080D1C70: .4byte gBattleAnimBankAttacker
_080D1C74: .4byte gBattleAnimArgs
_080D1C78: .4byte sub_8078B34
_080D1C7C: .4byte move_anim_8072740
@@ -15569,7 +15569,7 @@ sub_80D1E38: @ 80D1E38
lsrs r0, 24
adds r6, r0, 0
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _080D1E88 @ =gTasks
@@ -15585,7 +15585,7 @@ sub_80D1E38: @ 80D1E38
cmp r0, 0x1
bne _080D1E94
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -15638,7 +15638,7 @@ sub_80D1EC8: @ 80D1EC8
lsrs r0, 24
adds r6, r0, 0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r4, r0, 24
ldr r1, _080D1F18 @ =gTasks
@@ -15654,7 +15654,7 @@ sub_80D1EC8: @ 80D1EC8
cmp r0, 0x1
bne _080D1F24
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -15710,7 +15710,7 @@ sub_80D1F58: @ 80D1F58
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
- ldr r5, _080D1F9C @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080D1F9C @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -15733,7 +15733,7 @@ sub_80D1F58: @ 80D1F58
pop {r0}
bx r0
.align 2, 0
-_080D1F9C: .4byte gBattleAnimEnemyMonIndex
+_080D1F9C: .4byte gBattleAnimBankTarget
_080D1FA0: .4byte sub_80D1FA4
thumb_func_end sub_80D1F58
@@ -15853,7 +15853,7 @@ sub_80D2064: @ 80D2064
ldr r1, _080D208C @ =sub_80782D8
str r1, [r0, 0x1C]
ldr r1, _080D2090 @ =sub_80D2094
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
@@ -16330,7 +16330,7 @@ _080D2450: .4byte 0x040000d4
_080D2454: .4byte 0x85000400
_080D2458: .4byte gBattleAnimBackgroundTilemap_ScaryFaceContest
_080D245C:
- ldr r0, _080D2478 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D2478 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -16343,7 +16343,7 @@ _080D246E:
bl LZDecompressVram
b _080D2488
.align 2, 0
-_080D2478: .4byte gBattleAnimEnemyMonIndex
+_080D2478: .4byte gBattleAnimBankTarget
_080D247C: .4byte gBattleAnimBackgroundTilemap_ScaryFacePlayer
_080D2480:
ldr r0, _080D24CC @ =gBattleAnimBackgroundTilemap_ScaryFaceOpponent
@@ -16621,7 +16621,7 @@ _080D26A0: .4byte REG_BLDCNT
sub_80D26A4: @ 80D26A4
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, _080D26F8 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080D26F8 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -16658,7 +16658,7 @@ sub_80D26A4: @ 80D26A4
pop {r0}
bx r0
.align 2, 0
-_080D26F8: .4byte gBattleAnimPlayerMonIndex
+_080D26F8: .4byte gBattleAnimBankAttacker
_080D26FC: .4byte gBattleAnimArgs
_080D2700: .4byte sub_80D2704
thumb_func_end sub_80D26A4
@@ -16779,7 +16779,7 @@ _080D27DC: .4byte 0x0000ffff
sub_80D27E0: @ 80D27E0
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, _080D2828 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D2828 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -16809,7 +16809,7 @@ sub_80D27E0: @ 80D27E0
pop {r0}
bx r0
.align 2, 0
-_080D2828: .4byte gBattleAnimPlayerMonIndex
+_080D2828: .4byte gBattleAnimBankAttacker
_080D282C: .4byte gBattleAnimArgs
_080D2830: .4byte sub_80D2834
thumb_func_end sub_80D27E0
@@ -16887,7 +16887,7 @@ _080D28A8:
sub_80D28AC: @ 80D28AC
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, _080D28F8 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D28F8 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -16919,7 +16919,7 @@ sub_80D28AC: @ 80D28AC
pop {r0}
bx r0
.align 2, 0
-_080D28F8: .4byte gBattleAnimPlayerMonIndex
+_080D28F8: .4byte gBattleAnimBankAttacker
_080D28FC: .4byte gBattleAnimArgs
_080D2900: .4byte sub_80D287C
thumb_func_end sub_80D28AC
@@ -17179,7 +17179,7 @@ sub_80D2ABC: @ 80D2ABC
adds r0, r4, 0
movs r1, 0
bl StartSpriteAnim
- ldr r0, _080D2BBC @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D2BBC @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079E90
subs r0, 0x1
@@ -17291,7 +17291,7 @@ _080D2B80:
b _080D2BD2
.align 2, 0
_080D2BB8: .4byte gBattleAnimArgs
-_080D2BBC: .4byte gBattleAnimEnemyMonIndex
+_080D2BBC: .4byte gBattleAnimBankTarget
_080D2BC0: .4byte 0x0000ffff
_080D2BC4:
adds r2, r4, 0
@@ -17375,12 +17375,12 @@ _080D2C54:
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080D2C64
- ldr r4, _080D2C60 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D2C60 @ =gBattleAnimBankAttacker
b _080D2C66
.align 2, 0
-_080D2C60: .4byte gBattleAnimPlayerMonIndex
+_080D2C60: .4byte gBattleAnimBankAttacker
_080D2C64:
- ldr r4, _080D2C94 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D2C94 @ =gBattleAnimBankTarget
_080D2C66:
ldrb r0, [r4]
movs r1, 0x2
@@ -17404,7 +17404,7 @@ _080D2C66:
adds r0, 0x20
b _080D2CA0
.align 2, 0
-_080D2C94: .4byte gBattleAnimEnemyMonIndex
+_080D2C94: .4byte gBattleAnimBankTarget
_080D2C98: .4byte gBattleAnimArgs
_080D2C9C:
ldrh r0, [r5, 0x20]
@@ -17467,7 +17467,7 @@ sub_80D2CF8: @ 80D2CF8
lsrs r5, 24
ldr r0, _080D2D2C @ =gBattleAnimArgs
ldrb r0, [r0]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -17524,13 +17524,13 @@ sub_80D2D68: @ 80D2D68
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D2D84
- ldr r0, _080D2D80 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D2D80 @ =gBattleAnimBankAttacker
b _080D2D86
.align 2, 0
_080D2D7C: .4byte gBattleAnimArgs
-_080D2D80: .4byte gBattleAnimPlayerMonIndex
+_080D2D80: .4byte gBattleAnimBankAttacker
_080D2D84:
- ldr r0, _080D2E1C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D2E1C @ =gBattleAnimBankTarget
_080D2D86:
ldrb r6, [r0]
adds r0, r6, 0
@@ -17607,7 +17607,7 @@ _080D2DF0:
pop {r0}
bx r0
.align 2, 0
-_080D2E1C: .4byte gBattleAnimEnemyMonIndex
+_080D2E1C: .4byte gBattleAnimBankTarget
_080D2E20: .4byte gBattleAnimArgs
_080D2E24: .4byte 0x000003ff
_080D2E28: .4byte 0xfffffc00
@@ -17882,11 +17882,11 @@ sub_80D3014: @ 80D3014
ands r0, r1
cmp r0, 0
beq _080D3060
- ldr r4, _080D305C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D305C @ =gBattleAnimBankAttacker
ldrb r1, [r4]
movs r0, 0x2
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080D3060
@@ -17906,9 +17906,9 @@ sub_80D3014: @ 80D3014
b _080D3080
.align 2, 0
_080D3058: .4byte gBattleTypeFlags
-_080D305C: .4byte gBattleAnimPlayerMonIndex
+_080D305C: .4byte gBattleAnimBankAttacker
_080D3060:
- ldr r4, _080D30A0 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D30A0 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -17934,12 +17934,12 @@ _080D3080:
str r0, [r5, 0x1C]
ldr r1, _080D30A8 @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080D30A0: .4byte gBattleAnimPlayerMonIndex
+_080D30A0: .4byte gBattleAnimBankAttacker
_080D30A4: .4byte sub_8078B34
_080D30A8: .4byte move_anim_8072740
thumb_func_end sub_80D3014
@@ -18099,7 +18099,7 @@ _080D31C2:
sub_80D31C8: @ 80D31C8
push {r4-r6,lr}
adds r6, r0, 0
- ldr r5, _080D31F0 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080D31F0 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
@@ -18115,7 +18115,7 @@ sub_80D31C8: @ 80D31C8
subs r0, r1
b _080D320A
.align 2, 0
-_080D31F0: .4byte gBattleAnimPlayerMonIndex
+_080D31F0: .4byte gBattleAnimBankAttacker
_080D31F4: .4byte gBattleAnimArgs
_080D31F8:
ldrb r0, [r5]
@@ -18142,7 +18142,7 @@ _080D320A:
movs r1, 0x40
orrs r0, r1
strb r0, [r2]
- ldr r0, _080D32D4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D32D4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -18158,7 +18158,7 @@ _080D3240:
strh r0, [r6, 0x2E]
ldrh r0, [r6, 0x20]
strh r0, [r6, 0x30]
- ldr r4, _080D32D8 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D32D8 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -18220,8 +18220,8 @@ _080D3240:
bx r0
.align 2, 0
_080D32D0: .4byte gBattleAnimArgs
-_080D32D4: .4byte gBattleAnimPlayerMonIndex
-_080D32D8: .4byte gBattleAnimEnemyMonIndex
+_080D32D4: .4byte gBattleAnimBankAttacker
+_080D32D8: .4byte gBattleAnimBankTarget
_080D32DC: .4byte SpriteCallbackDummy
_080D32E0: .4byte gSprites
_080D32E4: .4byte sub_80D32E8
@@ -18309,7 +18309,7 @@ sub_80D3370: @ 80D3370
ldr r1, _080D3390 @ =sub_8078600
str r1, [r0, 0x1C]
ldr r1, _080D3394 @ =sub_80D3398
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
@@ -18325,7 +18325,7 @@ sub_80D3398: @ 80D3398
ldr r1, _080D33AC @ =sub_80782D8
str r1, [r0, 0x1C]
ldr r1, _080D33B0 @ =move_anim_8074EE0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
@@ -18339,7 +18339,7 @@ sub_80D33B4: @ 80D33B4
adds r5, r0, 0
movs r1, 0x1
bl sub_80787B0
- ldr r0, _080D33DC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D33DC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -18353,7 +18353,7 @@ sub_80D33B4: @ 80D33B4
adds r7, r1, 0
b _080D33EA
.align 2, 0
-_080D33DC: .4byte gBattleAnimPlayerMonIndex
+_080D33DC: .4byte gBattleAnimBankAttacker
_080D33E0: .4byte gBattleAnimArgs
_080D33E4:
ldr r0, _080D3440 @ =gBattleAnimArgs
@@ -18364,7 +18364,7 @@ _080D33EA:
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, _080D3444 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D3444 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -18400,7 +18400,7 @@ _080D33EA:
bx r0
.align 2, 0
_080D3440: .4byte gBattleAnimArgs
-_080D3444: .4byte gBattleAnimEnemyMonIndex
+_080D3444: .4byte gBattleAnimBankTarget
_080D3448: .4byte sub_80D344C
thumb_func_end sub_80D33B4
@@ -18551,7 +18551,7 @@ sub_80D3554: @ 80D3554
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, _080D35BC @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D35BC @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -18590,7 +18590,7 @@ sub_80D3554: @ 80D3554
strh r0, [r5, 0x3C]
b _080D35C8
.align 2, 0
-_080D35BC: .4byte gBattleAnimEnemyMonIndex
+_080D35BC: .4byte gBattleAnimBankTarget
_080D35C0: .4byte gBattleAnimArgs
_080D35C4:
lsls r0, r1, 8
@@ -18711,7 +18711,7 @@ _080D3694: .4byte gTasks
sub_80D3698: @ 80D3698
push {r4-r7,lr}
adds r4, r0, 0
- ldr r7, _080D36E4 @ =gBattleAnimPlayerMonIndex
+ ldr r7, _080D36E4 @ =gBattleAnimBankAttacker
ldrb r0, [r7]
movs r1, 0
bl sub_8077ABC
@@ -18743,7 +18743,7 @@ sub_80D3698: @ 80D3698
strh r0, [r4, 0x24]
b _080D36F4
.align 2, 0
-_080D36E4: .4byte gBattleAnimPlayerMonIndex
+_080D36E4: .4byte gBattleAnimBankAttacker
_080D36E8: .4byte 0x0000fff6
_080D36EC:
strh r6, [r4, 0x24]
@@ -18787,11 +18787,11 @@ _080D3722:
sub_80D3728: @ 80D3728
push {r4-r7,lr}
adds r6, r0, 0
- ldr r5, _080D37E8 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080D37E8 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
adds r4, r0, 0
- ldr r0, _080D37EC @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D37EC @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r4, 24
@@ -18839,7 +18839,7 @@ _080D3786:
_080D3790:
adds r0, r6, 0
bl sub_80787B0
- ldr r0, _080D37E8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D37E8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -18851,7 +18851,7 @@ _080D3790:
_080D37AA:
ldrh r0, [r5, 0x8]
strh r0, [r6, 0x2E]
- ldr r4, _080D37EC @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D37EC @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -18872,13 +18872,13 @@ _080D37AA:
str r0, [r6, 0x1C]
ldr r1, _080D37F8 @ =move_anim_8072740
adds r0, r6, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
-_080D37E8: .4byte gBattleAnimPlayerMonIndex
-_080D37EC: .4byte gBattleAnimEnemyMonIndex
+_080D37E8: .4byte gBattleAnimBankAttacker
+_080D37EC: .4byte gBattleAnimBankTarget
_080D37F0: .4byte gBattleAnimArgs
_080D37F4: .4byte sub_8078B34
_080D37F8: .4byte move_anim_8072740
@@ -18904,7 +18904,7 @@ sub_80D37FC: @ 80D37FC
str r0, [r4, 0x1C]
ldr r1, _080D3834 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
@@ -19080,7 +19080,7 @@ _080D3920:
movs r1, 0x4
orrs r0, r1
strb r0, [r2]
- ldr r0, _080D39A0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D39A0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -19095,7 +19095,7 @@ _080D3990: .4byte 0x00003f42
_080D3994: .4byte REG_BG1CNT
_080D3998: .4byte 0x040000d4
_080D399C: .4byte 0x85000400
-_080D39A0: .4byte gBattleAnimPlayerMonIndex
+_080D39A0: .4byte gBattleAnimBankAttacker
_080D39A4: .4byte gUnknown_08E70968
_080D39A8:
ldr r0, _080D39B4 @ =gUnknown_08E70C38
@@ -19203,7 +19203,7 @@ _080D3A88: .4byte gUnknown_030042C0
_080D3A8C: .4byte 0x0000ffd0
_080D3A90: .4byte gUnknown_030041B4
_080D3A94:
- ldr r0, _080D3AC4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D3AC4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -19226,7 +19226,7 @@ _080D3A94:
strh r1, [r7, 0xE]
b _080D3AEE
.align 2, 0
-_080D3AC4: .4byte gBattleAnimPlayerMonIndex
+_080D3AC4: .4byte gBattleAnimBankAttacker
_080D3AC8: .4byte 0x0000ff20
_080D3ACC: .4byte gUnknown_030042C0
_080D3AD0: .4byte gUnknown_030041B4
@@ -20048,7 +20048,7 @@ sub_80D40F4: @ 80D40F4
ldr r0, _080D4144 @ =gTasks
adds r4, r0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -20374,7 +20374,7 @@ _080D438A:
thumb_func_start sub_80D4394
sub_80D4394: @ 80D4394
push {r4,r5,lr}
- ldr r4, _080D43B8 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D43B8 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -20390,7 +20390,7 @@ sub_80D4394: @ 80D4394
ldr r0, _080D43C0 @ =gPlayerParty
b _080D43D8
.align 2, 0
-_080D43B8: .4byte gBattleAnimPlayerMonIndex
+_080D43B8: .4byte gBattleAnimBankAttacker
_080D43BC: .4byte gBattlePartyID
_080D43C0: .4byte gPlayerParty
_080D43C4:
@@ -20451,7 +20451,7 @@ sub_80D4418: @ 80D4418
lsls r1, 24
lsrs r1, 24
str r1, [sp]
- ldr r4, _080D4520 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D4520 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -20571,7 +20571,7 @@ _080D44EA:
pop {r0}
bx r0
.align 2, 0
-_080D4520: .4byte gBattleAnimPlayerMonIndex
+_080D4520: .4byte gBattleAnimBankAttacker
_080D4524: .4byte gSpriteTemplate_83D9378
_080D4528: .4byte gSprites
thumb_func_end sub_80D4418
@@ -20681,7 +20681,7 @@ sub_80D45D8: @ 80D45D8
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0xA]
- ldr r0, _080D460C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D460C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -20693,7 +20693,7 @@ sub_80D45D8: @ 80D45D8
b _080D4616
.align 2, 0
_080D4608: .4byte gTasks
-_080D460C: .4byte gBattleAnimPlayerMonIndex
+_080D460C: .4byte gBattleAnimBankAttacker
_080D4610:
movs r0, 0x10
strh r0, [r4, 0x10]
@@ -21079,7 +21079,7 @@ sub_80D48F4: @ 80D48F4
lsls r1, 3
ldr r0, _080D4978 @ =gTasks
adds r5, r1, r0
- ldr r4, _080D497C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D497C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -21136,7 +21136,7 @@ _080D494C:
bx r0
.align 2, 0
_080D4978: .4byte gTasks
-_080D497C: .4byte gBattleAnimPlayerMonIndex
+_080D497C: .4byte gBattleAnimBankAttacker
_080D4980: .4byte 0x0000ffe0
_080D4984: .4byte sub_80D4988
thumb_func_end sub_80D48F4
@@ -21556,7 +21556,7 @@ sub_80D4CA4: @ 80D4CA4
adds r4, r0, 0
movs r1, 0x1
bl sub_80787B0
- ldr r5, _080D4CE0 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080D4CE0 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -21580,7 +21580,7 @@ sub_80D4CA4: @ 80D4CA4
pop {r0}
bx r0
.align 2, 0
-_080D4CE0: .4byte gBattleAnimEnemyMonIndex
+_080D4CE0: .4byte gBattleAnimBankTarget
_080D4CE4: .4byte gBattleAnimArgs
_080D4CE8: .4byte sub_80D4CEC
thumb_func_end sub_80D4CA4
@@ -21734,7 +21734,7 @@ _080D4DF2:
strh r0, [r4, 0x2E]
mov r0, r9
strh r0, [r4, 0x30]
- ldr r0, _080D4E3C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D4E3C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8079E90
subs r0, 0x1
@@ -21750,7 +21750,7 @@ _080D4DF2:
.align 2, 0
_080D4E34: .4byte gSpriteTemplate_83D9420
_080D4E38: .4byte gSprites
-_080D4E3C: .4byte gBattleAnimPlayerMonIndex
+_080D4E3C: .4byte gBattleAnimBankAttacker
_080D4E40:
strh r7, [r4, 0x32]
_080D4E42:
@@ -21792,7 +21792,7 @@ _080D4E68:
strh r0, [r4, 0x2E]
mov r0, r9
strh r0, [r4, 0x30]
- ldr r0, _080D4EB4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D4EB4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8079E90
subs r0, 0x1
@@ -21808,7 +21808,7 @@ _080D4E68:
.align 2, 0
_080D4EAC: .4byte gSpriteTemplate_83D9420
_080D4EB0: .4byte gSprites
-_080D4EB4: .4byte gBattleAnimPlayerMonIndex
+_080D4EB4: .4byte gBattleAnimBankAttacker
_080D4EB8:
strh r7, [r4, 0x32]
_080D4EBA:
@@ -21847,7 +21847,7 @@ sub_80D4ED8: @ 80D4ED8
strh r0, [r4, 0x36]
ldr r1, _080D4F10 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r1, _080D4F14 @ =sub_8078174
str r1, [r4, 0x1C]
adds r0, r4, 0
@@ -21884,7 +21884,7 @@ sub_80D4F18: @ 80D4F18
str r0, [r4, 0x1C]
ldr r1, _080D4F58 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
@@ -21899,7 +21899,7 @@ sub_80D4F5C: @ 80D4F5C
push {r4,lr}
adds r4, r0, 0
bl sub_8078650
- ldr r0, _080D4F90 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D4F90 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -21920,7 +21920,7 @@ sub_80D4F5C: @ 80D4F5C
adds r1, r2, 0
b _080D4FAE
.align 2, 0
-_080D4F90: .4byte gBattleAnimPlayerMonIndex
+_080D4F90: .4byte gBattleAnimBankAttacker
_080D4F94: .4byte gBattleAnimArgs
_080D4F98:
ldr r1, _080D4FC4 @ =gBattleAnimArgs
@@ -21955,7 +21955,7 @@ _080D4FC8: .4byte sub_80D5038
sub_80D4FCC: @ 80D4FCC
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080D4FF8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D4FF8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -21975,7 +21975,7 @@ sub_80D4FCC: @ 80D4FCC
adds r1, r2, 0
b _080D5018
.align 2, 0
-_080D4FF8: .4byte gBattleAnimPlayerMonIndex
+_080D4FF8: .4byte gBattleAnimBankAttacker
_080D4FFC: .4byte gBattleAnimArgs
_080D5000:
ldr r1, _080D5030 @ =gBattleAnimArgs
@@ -22047,7 +22047,7 @@ sub_80D5074: @ 80D5074
push {r4,lr}
adds r4, r0, 0
bl sub_8078650
- ldr r0, _080D5098 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D5098 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -22060,7 +22060,7 @@ sub_80D5074: @ 80D5074
strh r1, [r4, 0x20]
b _080D50B2
.align 2, 0
-_080D5098: .4byte gBattleAnimPlayerMonIndex
+_080D5098: .4byte gBattleAnimBankAttacker
_080D509C: .4byte gBattleAnimArgs
_080D50A0:
ldr r0, _080D50E0 @ =gBattleAnimArgs
@@ -22194,7 +22194,7 @@ sub_80D517C: @ 80D517C
ldr r1, _080D51A0 @ =sub_8078B34
str r1, [r0, 0x1C]
ldr r1, _080D51A4 @ =move_anim_8072740
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
@@ -22206,11 +22206,11 @@ _080D51A4: .4byte move_anim_8072740
sub_80D51A8: @ 80D51A8
push {r4-r6,lr}
adds r6, r0, 0
- ldr r5, _080D5200 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080D5200 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
adds r4, r0, 0
- ldr r0, _080D5204 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D5204 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r4, 24
@@ -22245,8 +22245,8 @@ _080D51EE:
pop {r0}
bx r0
.align 2, 0
-_080D5200: .4byte gBattleAnimPlayerMonIndex
-_080D5204: .4byte gBattleAnimEnemyMonIndex
+_080D5200: .4byte gBattleAnimBankAttacker
+_080D5204: .4byte gBattleAnimBankTarget
_080D5208: .4byte gBattleAnimArgs
_080D520C: .4byte sub_8079534
thumb_func_end sub_80D51A8
@@ -22305,7 +22305,7 @@ sub_80D5254: @ 80D5254
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, _080D52A4 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D52A4 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -22329,7 +22329,7 @@ _080D529E:
pop {r0}
bx r0
.align 2, 0
-_080D52A4: .4byte gBattleAnimEnemyMonIndex
+_080D52A4: .4byte gBattleAnimBankTarget
_080D52A8: .4byte sub_80D52AC
thumb_func_end sub_80D5254
@@ -22343,7 +22343,7 @@ sub_80D52AC: @ 80D52AC
beq _080D52F4
movs r4, 0
strh r4, [r6, 0x2E]
- ldr r5, _080D52EC @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080D52EC @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -22364,7 +22364,7 @@ sub_80D52AC: @ 80D52AC
bl _call_via_r1
b _080D531E
.align 2, 0
-_080D52EC: .4byte gBattleAnimEnemyMonIndex
+_080D52EC: .4byte gBattleAnimBankTarget
_080D52F0: .4byte sub_80D5324
_080D52F4:
movs r1, 0x3C
@@ -22457,7 +22457,7 @@ sub_80D5374: @ 80D5374
strh r0, [r4, 0x32]
ldr r1, _080D53AC @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080D53B0 @ =sub_8078364
str r0, [r4, 0x1C]
pop {r4}
@@ -22490,7 +22490,7 @@ sub_80D53B4: @ 80D53B4
str r0, [r4, 0x1C]
ldr r1, _080D53F0 @ =sub_80D53F4
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
@@ -22577,7 +22577,7 @@ sub_80D5470: @ 80D5470
ldr r0, _080D54D0 @ =gTasks
adds r4, r0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
movs r5, 0
@@ -22595,7 +22595,7 @@ sub_80D5470: @ 80D5470
adds r0, r2
ldrh r0, [r0, 0x22]
strh r0, [r4, 0x10]
- ldr r0, _080D54D8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D54D8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -22615,7 +22615,7 @@ sub_80D5470: @ 80D5470
.align 2, 0
_080D54D0: .4byte gTasks
_080D54D4: .4byte gSprites
-_080D54D8: .4byte gBattleAnimPlayerMonIndex
+_080D54D8: .4byte gBattleAnimBankAttacker
_080D54DC: .4byte sub_80D54E0
thumb_func_end sub_80D5470
@@ -23021,7 +23021,7 @@ sub_80D57C4: @ 80D57C4
lsls r0, 2
adds r0, r1
ldrh r4, [r0, 0x20]
- ldr r0, _080D5818 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D5818 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -23035,7 +23035,7 @@ sub_80D57C4: @ 80D57C4
b _080D5826
.align 2, 0
_080D5814: .4byte gSprites
-_080D5818: .4byte gBattleAnimPlayerMonIndex
+_080D5818: .4byte gBattleAnimBankAttacker
_080D581C:
adds r0, r4, 0
adds r0, 0x10
@@ -23203,7 +23203,7 @@ sub_80D5940: @ 80D5940
adds r0, r2
lsls r0, 16
lsrs r4, r0, 16
- ldr r0, _080D597C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D597C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -23215,7 +23215,7 @@ sub_80D5940: @ 80D5940
b _080D5986
.align 2, 0
_080D5978: .4byte gSprites
-_080D597C: .4byte gBattleAnimPlayerMonIndex
+_080D597C: .4byte gBattleAnimBankAttacker
_080D5980:
lsls r0, r4, 16
movs r1, 0xB0
@@ -23466,7 +23466,7 @@ _080D5B28:
bl StartSpriteAnim
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x3C]
- ldr r0, _080D5B54 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D5B54 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -23476,12 +23476,12 @@ _080D5B28:
b _080D5B5A
.align 2, 0
_080D5B50: .4byte gBattleAnimArgs
-_080D5B54: .4byte gBattleAnimPlayerMonIndex
+_080D5B54: .4byte gBattleAnimBankAttacker
_080D5B58:
ldr r0, _080D5B78 @ =0x0000fffc
_080D5B5A:
strh r0, [r5, 0x36]
- ldr r0, _080D5B7C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D5B7C @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079ED4
movs r1, 0x3
@@ -23496,12 +23496,12 @@ _080D5B5A:
b _080D5BD6
.align 2, 0
_080D5B78: .4byte 0x0000fffc
-_080D5B7C: .4byte gBattleAnimEnemyMonIndex
+_080D5B7C: .4byte gBattleAnimBankTarget
_080D5B80:
ldrh r0, [r5, 0x30]
adds r0, 0xC0
strh r0, [r5, 0x30]
- ldr r0, _080D5BA0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D5BA0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -23513,7 +23513,7 @@ _080D5B80:
negs r0, r0
b _080D5BAA
.align 2, 0
-_080D5BA0: .4byte gBattleAnimPlayerMonIndex
+_080D5BA0: .4byte gBattleAnimBankAttacker
_080D5BA4:
ldrh r0, [r5, 0x30]
lsls r0, 16
@@ -23579,7 +23579,7 @@ _080D5BDE:
lsls r0, 1
strh r0, [r5, 0x2E]
strh r1, [r5, 0x30]
- ldr r4, _080D5C54 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D5C54 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -23603,7 +23603,7 @@ _080D5C4E:
pop {r0}
bx r0
.align 2, 0
-_080D5C54: .4byte gBattleAnimEnemyMonIndex
+_080D5C54: .4byte gBattleAnimBankTarget
_080D5C58: .4byte sub_80D5C5C
thumb_func_end sub_80D5B0C
@@ -23715,7 +23715,7 @@ _080D5CD8:
lsrs r0, 16
cmp r0, 0x83
bls _080D5D5C
- ldr r0, _080D5D58 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D5D58 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079ED4
movs r1, 0x3
@@ -23732,9 +23732,9 @@ _080D5CD8:
_080D5D4C: .4byte gBattleAnimArgs
_080D5D50: .4byte gMain
_080D5D54: .4byte 0x0000043d
-_080D5D58: .4byte gBattleAnimEnemyMonIndex
+_080D5D58: .4byte gBattleAnimBankTarget
_080D5D5C:
- ldr r0, _080D5D80 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D5D80 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079ED4
lsls r0, 24
@@ -23751,7 +23751,7 @@ _080D5D5C:
strb r1, [r4, 0x5]
b _080D5DA0
.align 2, 0
-_080D5D80: .4byte gBattleAnimEnemyMonIndex
+_080D5D80: .4byte gBattleAnimBankTarget
_080D5D84:
adds r0, r2, 0
subs r0, 0x40
@@ -23813,7 +23813,7 @@ sub_80D5DDC: @ 80D5DDC
lsls r1, 3
ldr r0, _080D5E3C @ =gTasks
adds r4, r1, r0
- ldr r0, _080D5E40 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D5E40 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -23825,22 +23825,22 @@ sub_80D5DDC: @ 80D5DDC
movs r1, 0x1
_080D5E02:
strh r1, [r4, 0x20]
- ldr r0, _080D5E44 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D5E44 @ =gBattleAnimBankTarget
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
lsrs r0, 24
adds r0, 0x1
strh r0, [r4, 0x22]
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x24]
movs r0, 0x3
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -23851,8 +23851,8 @@ _080D5E02:
bx r0
.align 2, 0
_080D5E3C: .4byte gTasks
-_080D5E40: .4byte gBattleAnimPlayerMonIndex
-_080D5E44: .4byte gBattleAnimEnemyMonIndex
+_080D5E40: .4byte gBattleAnimBankAttacker
+_080D5E44: .4byte gBattleAnimBankTarget
_080D5E48: .4byte sub_80D5E4C
thumb_func_end sub_80D5DDC
@@ -24222,7 +24222,7 @@ _080D60EA:
adds r0, 0x1
strh r0, [r2, 0x8]
ldr r1, _080D6114 @ =gObjectBankIDs
- ldr r0, _080D6118 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D6118 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r0, r1
ldrb r6, [r0]
@@ -24238,7 +24238,7 @@ _080D60EA:
_080D610C: .4byte gTasks
_080D6110: .4byte gBattleAnimArgs
_080D6114: .4byte gObjectBankIDs
-_080D6118: .4byte gBattleAnimEnemyMonIndex
+_080D6118: .4byte gBattleAnimBankTarget
_080D611C: .4byte gUnknown_083D9794
_080D6120:
ldr r4, _080D616C @ =gUnknown_083D97A4
@@ -24331,7 +24331,7 @@ _080D61C4: .4byte gSprites
sub_80D61C8: @ 80D61C8
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080D61E8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D61E8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -24344,7 +24344,7 @@ sub_80D61C8: @ 80D61C8
strh r1, [r4, 0x20]
b _080D61FC
.align 2, 0
-_080D61E8: .4byte gBattleAnimPlayerMonIndex
+_080D61E8: .4byte gBattleAnimBankAttacker
_080D61EC: .4byte gBattleAnimArgs
_080D61F0:
ldr r1, _080D6210 @ =gBattleAnimArgs
@@ -24389,7 +24389,7 @@ _080D622E:
sub_80D6234: @ 80D6234
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080D6254 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D6254 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -24402,7 +24402,7 @@ sub_80D6234: @ 80D6234
strh r1, [r4, 0x20]
b _080D6266
.align 2, 0
-_080D6254: .4byte gBattleAnimPlayerMonIndex
+_080D6254: .4byte gBattleAnimBankAttacker
_080D6258: .4byte gBattleAnimArgs
_080D625C:
ldr r0, _080D6270 @ =gBattleAnimArgs
@@ -24442,7 +24442,7 @@ _080D628E:
sub_80D6294: @ 80D6294
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, _080D62D8 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D62D8 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -24455,7 +24455,7 @@ sub_80D6294: @ 80D6294
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- ldr r0, _080D62DC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D62DC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -24472,8 +24472,8 @@ sub_80D6294: @ 80D6294
strh r0, [r5, 0x22]
b _080D62F8
.align 2, 0
-_080D62D8: .4byte gBattleAnimEnemyMonIndex
-_080D62DC: .4byte gBattleAnimPlayerMonIndex
+_080D62D8: .4byte gBattleAnimBankTarget
+_080D62DC: .4byte gBattleAnimBankAttacker
_080D62E0: .4byte gBattleAnimArgs
_080D62E4:
ldr r0, _080D631C @ =gBattleAnimArgs
@@ -24497,7 +24497,7 @@ _080D62F8:
strh r0, [r5, 0x34]
ldr r1, _080D6320 @ =move_anim_8074EE0
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080D6324 @ =sub_8078114
str r0, [r5, 0x1C]
pop {r4,r5}
@@ -24532,46 +24532,46 @@ _080D6344:
beq _080D637C
b _080D63A0
_080D634E:
- ldr r0, _080D6354 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D6354 @ =gBattleAnimBankAttacker
b _080D63A2
.align 2, 0
-_080D6354: .4byte gBattleAnimPlayerMonIndex
+_080D6354: .4byte gBattleAnimBankAttacker
_080D6358:
- ldr r4, _080D6370 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D6370 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r6, 0x2
eors r0, r6
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
bne _080D6374
ldrb r4, [r4]
b _080D63A4
.align 2, 0
-_080D6370: .4byte gBattleAnimPlayerMonIndex
+_080D6370: .4byte gBattleAnimBankAttacker
_080D6374:
ldrb r0, [r4]
adds r4, r6, 0
eors r4, r0
b _080D63A4
_080D637C:
- ldr r0, _080D6398 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D6398 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
movs r4, 0x2
eors r0, r4
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080D63A0
- ldr r0, _080D639C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D639C @ =gBattleAnimBankTarget
ldrb r0, [r0]
eors r4, r0
b _080D63A4
.align 2, 0
-_080D6398: .4byte gBattleAnimPlayerMonIndex
-_080D639C: .4byte gBattleAnimEnemyMonIndex
+_080D6398: .4byte gBattleAnimBankAttacker
+_080D639C: .4byte gBattleAnimBankTarget
_080D63A0:
- ldr r0, _080D63C4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D63C4 @ =gBattleAnimBankTarget
_080D63A2:
ldrb r4, [r0]
_080D63A4:
@@ -24590,7 +24590,7 @@ _080D63A4:
movs r1, 0x1
b _080D63DE
.align 2, 0
-_080D63C4: .4byte gBattleAnimEnemyMonIndex
+_080D63C4: .4byte gBattleAnimBankTarget
_080D63C8: .4byte gBattleAnimArgs
_080D63CC:
adds r0, r4, 0
@@ -24698,7 +24698,7 @@ sub_80D648C: @ 80D648C
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
- ldr r6, _080D6504 @ =gBattleAnimEnemyMonIndex
+ ldr r6, _080D6504 @ =gBattleAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
bl sub_8077ABC
@@ -24744,7 +24744,7 @@ sub_80D648C: @ 80D648C
bx r0
.align 2, 0
_080D6500: .4byte gBattleAnimArgs
-_080D6504: .4byte gBattleAnimEnemyMonIndex
+_080D6504: .4byte gBattleAnimBankTarget
_080D6508: .4byte 0x000003ff
_080D650C: .4byte 0xfffffc00
_080D6510: .4byte sub_80D6514
@@ -24866,7 +24866,7 @@ sub_80D65DC: @ 80D65DC
ands r0, r1
cmp r0, 0
beq _080D65FE
- ldr r0, _080D664C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D664C @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -24878,7 +24878,7 @@ _080D65FE:
negs r0, r0
strh r0, [r1, 0x2]
_080D6606:
- ldr r5, _080D664C @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080D664C @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -24909,7 +24909,7 @@ _080D6606:
.align 2, 0
_080D6644: .4byte gMain
_080D6648: .4byte 0x0000043d
-_080D664C: .4byte gBattleAnimEnemyMonIndex
+_080D664C: .4byte gBattleAnimBankTarget
_080D6650: .4byte gBattleAnimArgs
_080D6654: .4byte sub_80D658C
thumb_func_end sub_80D65DC
@@ -24928,13 +24928,13 @@ sub_80D6658: @ 80D6658
ands r0, r1
cmp r0, 0
beq _080D667C
- ldr r0, _080D6678 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D6678 @ =gBattleAnimBankTarget
b _080D667E
.align 2, 0
_080D6674: .4byte gBattleAnimArgs
-_080D6678: .4byte gBattleAnimEnemyMonIndex
+_080D6678: .4byte gBattleAnimBankTarget
_080D667C:
- ldr r0, _080D670C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D670C @ =gBattleAnimBankAttacker
_080D667E:
ldrb r6, [r0]
ldr r0, _080D6710 @ =gMain
@@ -25005,7 +25005,7 @@ _080D66A4:
pop {r0}
bx r0
.align 2, 0
-_080D670C: .4byte gBattleAnimPlayerMonIndex
+_080D670C: .4byte gBattleAnimBankAttacker
_080D6710: .4byte gMain
_080D6714: .4byte 0x0000043d
_080D6718: .4byte gBattleAnimArgs
@@ -25126,7 +25126,7 @@ _080D67F6:
str r0, [r4, 0x1C]
ldr r1, _080D6818 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
@@ -25142,7 +25142,7 @@ sub_80D681C: @ 80D681C
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
- ldr r6, _080D6864 @ =gBattleAnimEnemyMonIndex
+ ldr r6, _080D6864 @ =gBattleAnimBankTarget
ldrb r0, [r6]
movs r1, 0
bl sub_8077ABC
@@ -25173,7 +25173,7 @@ sub_80D681C: @ 80D681C
pop {r0}
bx r0
.align 2, 0
-_080D6864: .4byte gBattleAnimEnemyMonIndex
+_080D6864: .4byte gBattleAnimBankTarget
_080D6868: .4byte gTasks
_080D686C: .4byte gBattleAnimArgs
_080D6870: .4byte sub_80D6874
@@ -25556,14 +25556,14 @@ sub_80D6B3C: @ 80D6B3C
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D6B68
- ldr r4, _080D6B64 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D6B64 @ =gBattleAnimBankAttacker
b _080D6B6A
.align 2, 0
_080D6B5C: .4byte gTasks
_080D6B60: .4byte gBattleAnimArgs
-_080D6B64: .4byte gBattleAnimPlayerMonIndex
+_080D6B64: .4byte gBattleAnimBankAttacker
_080D6B68:
- ldr r4, _080D6BAC @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D6BAC @ =gBattleAnimBankTarget
_080D6B6A:
ldrb r0, [r4]
movs r1, 0x2
@@ -25596,7 +25596,7 @@ _080D6B6A:
pop {r0}
bx r0
.align 2, 0
-_080D6BAC: .4byte gBattleAnimEnemyMonIndex
+_080D6BAC: .4byte gBattleAnimBankTarget
_080D6BB0: .4byte gBattleAnimArgs
_080D6BB4: .4byte sub_80D6BB8
thumb_func_end sub_80D6B3C
@@ -25681,7 +25681,7 @@ sub_80D6BB8: @ 80D6BB8
bl obj_translate_based_on_private_1_2_3_4
ldr r1, _080D6CB0 @ =sub_80D6D00
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080D6CB4 @ =sub_8078600
str r0, [r4, 0x1C]
ldrh r0, [r5, 0x1A]
@@ -25790,13 +25790,13 @@ sub_80D6D18: @ 80D6D18
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D6D34
- ldr r4, _080D6D30 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D6D30 @ =gBattleAnimBankAttacker
b _080D6D36
.align 2, 0
_080D6D2C: .4byte gBattleAnimArgs
-_080D6D30: .4byte gBattleAnimPlayerMonIndex
+_080D6D30: .4byte gBattleAnimBankAttacker
_080D6D34:
- ldr r4, _080D6D64 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D6D64 @ =gBattleAnimBankTarget
_080D6D36:
ldrb r0, [r4]
movs r1, 0x2
@@ -25812,14 +25812,14 @@ _080D6D36:
strh r0, [r5, 0x22]
ldr r1, _080D6D68 @ =move_anim_8074EE0
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080D6D6C @ =sub_80785E4
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080D6D64: .4byte gBattleAnimEnemyMonIndex
+_080D6D64: .4byte gBattleAnimBankTarget
_080D6D68: .4byte move_anim_8074EE0
_080D6D6C: .4byte sub_80785E4
thumb_func_end sub_80D6D18
@@ -25833,13 +25833,13 @@ sub_80D6D70: @ 80D6D70
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D6D8C
- ldr r4, _080D6D88 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D6D88 @ =gBattleAnimBankAttacker
b _080D6D8E
.align 2, 0
_080D6D84: .4byte gBattleAnimArgs
-_080D6D88: .4byte gBattleAnimPlayerMonIndex
+_080D6D88: .4byte gBattleAnimBankAttacker
_080D6D8C:
- ldr r4, _080D6DC8 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D6DC8 @ =gBattleAnimBankTarget
_080D6D8E:
ldrb r0, [r4]
movs r1, 0x2
@@ -25860,14 +25860,14 @@ _080D6D8E:
strh r0, [r5, 0x26]
ldr r1, _080D6DD0 @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080D6DD4 @ =sub_8078600
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080D6DC8: .4byte gBattleAnimEnemyMonIndex
+_080D6DC8: .4byte gBattleAnimBankTarget
_080D6DCC: .4byte gBattleAnimArgs
_080D6DD0: .4byte move_anim_8072740
_080D6DD4: .4byte sub_8078600
@@ -25879,7 +25879,7 @@ sub_80D6DD8: @ 80D6DD8
adds r5, r0, 0
movs r1, 0x1
bl StartSpriteAffineAnim
- ldr r4, _080D6E30 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D6E30 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -25893,7 +25893,7 @@ sub_80D6DD8: @ 80D6DD8
lsrs r0, 24
strh r0, [r5, 0x22]
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x3A]
@@ -25916,7 +25916,7 @@ _080D6E26:
pop {r0}
bx r0
.align 2, 0
-_080D6E30: .4byte gBattleAnimPlayerMonIndex
+_080D6E30: .4byte gBattleAnimBankAttacker
_080D6E34: .4byte sub_80D6E38
thumb_func_end sub_80D6DD8
@@ -26006,12 +26006,12 @@ _080D6ECE:
b _080D7000
_080D6ED0:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
movs r6, 0
strh r0, [r5, 0x26]
- ldr r4, _080D6F04 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D6F04 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -26028,7 +26028,7 @@ _080D6ED0:
movs r0, 0x2
b _080D6F12
.align 2, 0
-_080D6F04: .4byte gBattleAnimPlayerMonIndex
+_080D6F04: .4byte gBattleAnimBankAttacker
_080D6F08: .4byte 0x0000ffe0
_080D6F0C:
movs r0, 0x20
@@ -26193,7 +26193,7 @@ _080D7034:
_080D703A:
b _080D718E
_080D703C:
- ldr r4, _080D707C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D707C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -26225,7 +26225,7 @@ _080D7052:
ldr r0, _080D7084 @ =0x0000fff0
b _080D70F0
.align 2, 0
-_080D707C: .4byte gBattleAnimPlayerMonIndex
+_080D707C: .4byte gBattleAnimBankAttacker
_080D7080: .4byte gBattleAnimArgs
_080D7084: .4byte 0x0000fff0
_080D7088:
@@ -26254,7 +26254,7 @@ _080D70B0:
movs r0, 0x78
subs r0, r1
strh r0, [r5, 0xE]
- ldr r4, _080D70E4 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D70E4 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x3
bl sub_8077ABC
@@ -26273,7 +26273,7 @@ _080D70B0:
strh r0, [r5, 0x10]
b _080D7126
.align 2, 0
-_080D70E4: .4byte gBattleAnimEnemyMonIndex
+_080D70E4: .4byte gBattleAnimBankTarget
_080D70E8:
ldr r0, _080D710C @ =0x0000fff0
strh r0, [r5, 0xE]
@@ -26506,7 +26506,7 @@ sub_80D727C: @ 80D727C
beq _080D72C0
b _080D72D4
_080D728E:
- ldr r4, _080D72BC @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D72BC @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -26527,7 +26527,7 @@ _080D728E:
strh r0, [r5, 0x2E]
b _080D72D4
.align 2, 0
-_080D72BC: .4byte gBattleAnimPlayerMonIndex
+_080D72BC: .4byte gBattleAnimBankAttacker
_080D72C0:
adds r0, r5, 0
adds r0, 0x3F
@@ -26576,7 +26576,7 @@ _080D7308:
.4byte _080D7444
.4byte _080D7454
_080D731C:
- ldr r4, _080D73A0 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D73A0 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -26591,7 +26591,7 @@ _080D731C:
strh r0, [r5, 0x16]
movs r0, 0x4
strh r0, [r5, 0x18]
- ldr r0, _080D73A4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D73A4 @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0x2
bl sub_8077ABC
@@ -26636,8 +26636,8 @@ _080D731C:
adds r0, 0x1
b _080D7466
.align 2, 0
-_080D73A0: .4byte gBattleAnimPlayerMonIndex
-_080D73A4: .4byte gBattleAnimEnemyMonIndex
+_080D73A0: .4byte gBattleAnimBankAttacker
+_080D73A4: .4byte gBattleAnimBankTarget
_080D73A8: .4byte 0x0000ffff
_080D73AC:
ldrh r0, [r5, 0xA]
@@ -26934,7 +26934,7 @@ _080D75C4:
beq _080D7640
b _080D764E
_080D75CA:
- ldr r0, _080D7614 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D7614 @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
bl sub_8077ABC
@@ -26956,7 +26956,7 @@ _080D75E4:
bgt _080D75E4
strh r1, [r5, 0x24]
_080D75F4:
- ldr r4, _080D7614 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D7614 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -26971,7 +26971,7 @@ _080D75F4:
strh r0, [r5, 0x20]
b _080D7638
.align 2, 0
-_080D7614: .4byte gBattleAnimEnemyMonIndex
+_080D7614: .4byte gBattleAnimBankTarget
_080D7618:
ldrh r0, [r5, 0xA]
adds r0, 0x1
@@ -27121,7 +27121,7 @@ sub_80D7704: @ 80D7704
ands r0, r2
orrs r0, r1
strh r0, [r5, 0x4]
- ldr r4, _080D7814 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D7814 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -27134,7 +27134,7 @@ sub_80D7704: @ 80D7704
lsls r0, 24
lsrs r0, 24
mov r8, r0
- ldr r4, _080D7818 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D7818 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -27235,8 +27235,8 @@ _080D77DE:
.align 2, 0
_080D780C: .4byte 0x000003ff
_080D7810: .4byte 0xfffffc00
-_080D7814: .4byte gBattleAnimEnemyMonIndex
-_080D7818: .4byte gBattleAnimPlayerMonIndex
+_080D7814: .4byte gBattleAnimBankTarget
+_080D7818: .4byte gBattleAnimBankAttacker
_080D781C: .4byte gBattleAnimArgs
_080D7820:
lsls r1, r3, 16
@@ -27365,7 +27365,7 @@ sub_80D78EC: @ 80D78EC
strh r0, [r4, 0x36]
ldr r1, _080D7924 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r1, _080D7928 @ =sub_8078174
str r1, [r4, 0x1C]
adds r0, r4, 0
@@ -27385,14 +27385,14 @@ sub_80D792C: @ 80D792C
adds r4, r0, 0
movs r1, 0x1
bl sub_80787B0
- ldr r0, _080D7960 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D7960 @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0x2
bl sub_8077ABC
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x32]
- ldr r0, _080D7964 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D7964 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -27405,8 +27405,8 @@ sub_80D792C: @ 80D792C
strh r1, [r4, 0x32]
b _080D7976
.align 2, 0
-_080D7960: .4byte gBattleAnimEnemyMonIndex
-_080D7964: .4byte gBattleAnimPlayerMonIndex
+_080D7960: .4byte gBattleAnimBankTarget
+_080D7964: .4byte gBattleAnimBankAttacker
_080D7968: .4byte gBattleAnimArgs
_080D796C:
ldr r0, _080D79A4 @ =gBattleAnimArgs
@@ -27415,7 +27415,7 @@ _080D796C:
adds r0, r1
strh r0, [r4, 0x32]
_080D7976:
- ldr r0, _080D79A8 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D79A8 @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0x3
bl sub_8077ABC
@@ -27429,7 +27429,7 @@ _080D7976:
strh r0, [r4, 0x2E]
ldr r1, _080D79AC @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080D79B0 @ =sub_8078B34
str r0, [r4, 0x1C]
pop {r4}
@@ -27437,7 +27437,7 @@ _080D7976:
bx r0
.align 2, 0
_080D79A4: .4byte gBattleAnimArgs
-_080D79A8: .4byte gBattleAnimEnemyMonIndex
+_080D79A8: .4byte gBattleAnimBankTarget
_080D79AC: .4byte move_anim_8072740
_080D79B0: .4byte sub_8078B34
thumb_func_end sub_80D792C
@@ -27458,7 +27458,7 @@ sub_80D79B4: @ 80D79B4
.align 2, 0
_080D79CC: .4byte gBattleAnimArgs
_080D79D0:
- ldr r0, _080D7A18 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D7A18 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -27466,7 +27466,7 @@ _080D79D0:
adds r3, 0x22
movs r1, 0x1
bl sub_807A3FC
- ldr r0, _080D7A1C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D7A1C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -27487,15 +27487,15 @@ _080D79F6:
_080D7A06:
ldr r1, _080D7A20 @ =sub_80D7A28
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080D7A24 @ =sub_80785E4
str r0, [r4, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080D7A18: .4byte gBattleAnimEnemyMonIndex
-_080D7A1C: .4byte gBattleAnimPlayerMonIndex
+_080D7A18: .4byte gBattleAnimBankTarget
+_080D7A1C: .4byte gBattleAnimBankAttacker
_080D7A20: .4byte sub_80D7A28
_080D7A24: .4byte sub_80785E4
thumb_func_end sub_80D79B4
@@ -27551,7 +27551,7 @@ sub_80D7A64: @ 80D7A64
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080D7AB4
- ldr r4, _080D7AB0 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D7AB0 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -27569,9 +27569,9 @@ sub_80D7A64: @ 80D7A64
b _080D7AC6
.align 2, 0
_080D7AAC: .4byte gBattleAnimArgs
-_080D7AB0: .4byte gBattleAnimEnemyMonIndex
+_080D7AB0: .4byte gBattleAnimBankTarget
_080D7AB4:
- ldr r0, _080D7AE0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D7AE0 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -27580,7 +27580,7 @@ _080D7AB4:
movs r1, 0x1
bl sub_807A3FC
_080D7AC6:
- ldr r0, _080D7AE4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D7AE4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -27593,8 +27593,8 @@ _080D7AC6:
strh r1, [r5, 0x32]
b _080D7AF6
.align 2, 0
-_080D7AE0: .4byte gBattleAnimEnemyMonIndex
-_080D7AE4: .4byte gBattleAnimPlayerMonIndex
+_080D7AE0: .4byte gBattleAnimBankTarget
+_080D7AE4: .4byte gBattleAnimBankAttacker
_080D7AE8: .4byte gBattleAnimArgs
_080D7AEC:
ldr r0, _080D7B94 @ =gBattleAnimArgs
@@ -27678,7 +27678,7 @@ _080D7B76:
bge _080D7B76
str r6, [r5, 0x1C]
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
add sp, 0x10
pop {r4-r7}
pop {r0}
@@ -27706,7 +27706,7 @@ sub_80D7BA0: @ 80D7BA0
strh r5, [r4, 0x24]
movs r0, 0x80
strh r0, [r4, 0x2E]
- ldr r0, _080D7BFC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D7BFC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -27735,7 +27735,7 @@ _080D7BD0:
pop {r0}
bx r0
.align 2, 0
-_080D7BFC: .4byte gBattleAnimPlayerMonIndex
+_080D7BFC: .4byte gBattleAnimBankAttacker
_080D7C00: .4byte 0x0000ffec
_080D7C04: .4byte sub_80D7C08
thumb_func_end sub_80D7BA0
@@ -27744,7 +27744,7 @@ _080D7C04: .4byte sub_80D7C08
sub_80D7C08: @ 80D7C08
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080D7C5C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D7C5C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -27782,7 +27782,7 @@ _080D7C1E:
strh r0, [r4, 0x38]
b _080D7C82
.align 2, 0
-_080D7C5C: .4byte gBattleAnimPlayerMonIndex
+_080D7C5C: .4byte gBattleAnimBankAttacker
_080D7C60: .4byte 0x0000ffec
_080D7C64:
ldrh r0, [r4, 0x24]
@@ -27866,7 +27866,7 @@ sub_80D7CD4: @ 80D7CD4
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080D7D20
- ldr r4, _080D7D1C @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D7D1C @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -27882,9 +27882,9 @@ sub_80D7CD4: @ 80D7CD4
b _080D7D32
.align 2, 0
_080D7D18: .4byte gBattleAnimArgs
-_080D7D1C: .4byte gBattleAnimEnemyMonIndex
+_080D7D1C: .4byte gBattleAnimBankTarget
_080D7D20:
- ldr r0, _080D7D50 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D7D50 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -27893,7 +27893,7 @@ _080D7D20:
movs r1, 0x1
bl sub_807A3FC
_080D7D32:
- ldr r0, _080D7D54 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D7D54 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -27907,8 +27907,8 @@ _080D7D32:
adds r1, r0, 0
b _080D7D66
.align 2, 0
-_080D7D50: .4byte gBattleAnimEnemyMonIndex
-_080D7D54: .4byte gBattleAnimPlayerMonIndex
+_080D7D50: .4byte gBattleAnimBankTarget
+_080D7D54: .4byte gBattleAnimBankAttacker
_080D7D58: .4byte gBattleAnimArgs
_080D7D5C:
ldr r1, _080D7E10 @ =gBattleAnimArgs
@@ -28088,7 +28088,7 @@ sub_80D7E88: @ 80D7E88
.align 2, 0
_080D7EA8: .4byte gBattleAnimArgs
_080D7EAC:
- ldr r0, _080D7EEC @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D7EEC @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -28096,7 +28096,7 @@ _080D7EAC:
adds r3, 0x22
movs r1, 0
bl sub_807A3FC
- ldr r0, _080D7EF0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D7EF0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -28120,8 +28120,8 @@ _080D7EE2:
strh r0, [r4, 0x2E]
b _080D7F08
.align 2, 0
-_080D7EEC: .4byte gBattleAnimEnemyMonIndex
-_080D7EF0: .4byte gBattleAnimPlayerMonIndex
+_080D7EEC: .4byte gBattleAnimBankTarget
+_080D7EF0: .4byte gBattleAnimBankAttacker
_080D7EF4:
adds r0, r4, 0
adds r0, 0x3F
@@ -28158,7 +28158,7 @@ sub_80D7F10: @ 80D7F10
.align 2, 0
_080D7F30: .4byte gBattleAnimArgs
_080D7F34:
- ldr r4, _080D7F5C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D7F5C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
adds r2, r5, 0
adds r2, 0x20
@@ -28176,7 +28176,7 @@ _080D7F34:
subs r0, r1
b _080D7F66
.align 2, 0
-_080D7F5C: .4byte gBattleAnimPlayerMonIndex
+_080D7F5C: .4byte gBattleAnimBankAttacker
_080D7F60:
ldrh r0, [r6]
ldrh r1, [r5, 0x20]
@@ -28189,11 +28189,11 @@ _080D7F66:
adds r0, r1
strh r0, [r5, 0x22]
_080D7F72:
- ldr r0, _080D7F7C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D7F7C @ =gBattleAnimBankAttacker
b _080D7FD0
.align 2, 0
_080D7F78: .4byte gBattleAnimArgs
-_080D7F7C: .4byte gBattleAnimPlayerMonIndex
+_080D7F7C: .4byte gBattleAnimBankAttacker
_080D7F80:
movs r1, 0xA
ldrsh r0, [r6, r1]
@@ -28204,7 +28204,7 @@ _080D7F80:
bl sub_8078764
b _080D7FCE
_080D7F92:
- ldr r4, _080D7FB8 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D7FB8 @ =gBattleAnimBankTarget
ldrb r0, [r4]
adds r2, r5, 0
adds r2, 0x20
@@ -28222,7 +28222,7 @@ _080D7F92:
subs r0, r1
b _080D7FC2
.align 2, 0
-_080D7FB8: .4byte gBattleAnimEnemyMonIndex
+_080D7FB8: .4byte gBattleAnimBankTarget
_080D7FBC:
ldrh r0, [r6]
ldrh r1, [r5, 0x20]
@@ -28235,7 +28235,7 @@ _080D7FC2:
adds r0, r1
strh r0, [r5, 0x22]
_080D7FCE:
- ldr r0, _080D7FF0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D7FF0 @ =gBattleAnimBankTarget
_080D7FD0:
ldrb r0, [r0]
strh r0, [r5, 0x3C]
@@ -28253,12 +28253,12 @@ _080D7FE8:
b _080D7FF6
.align 2, 0
_080D7FEC: .4byte gBattleAnimArgs
-_080D7FF0: .4byte gBattleAnimEnemyMonIndex
+_080D7FF0: .4byte gBattleAnimBankTarget
_080D7FF4:
movs r0, 0x40
_080D7FF6:
strh r0, [r5, 0x3A]
- ldr r0, _080D803C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D803C @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -28291,7 +28291,7 @@ _080D800C:
pop {r0}
bx r0
.align 2, 0
-_080D803C: .4byte gBattleAnimEnemyMonIndex
+_080D803C: .4byte gBattleAnimBankTarget
_080D8040: .4byte gBattleAnimArgs
_080D8044: .4byte sub_80D8048
thumb_func_end sub_80D7F10
@@ -28742,7 +28742,7 @@ _080D83DC: .4byte REG_BLDCNT
sub_80D83E0: @ 80D83E0
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, _080D840C @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080D840C @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -28761,7 +28761,7 @@ sub_80D83E0: @ 80D83E0
pop {r0}
bx r0
.align 2, 0
-_080D840C: .4byte gBattleAnimPlayerMonIndex
+_080D840C: .4byte gBattleAnimBankAttacker
_080D8410: .4byte sub_807941C
thumb_func_end sub_80D83E0
@@ -29129,13 +29129,13 @@ sub_80D8700: @ 80D8700
ldr r6, _080D87E8 @ =gBattleAnimArgs
ldrh r0, [r6]
strh r0, [r5, 0x2E]
- ldr r0, _080D87EC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D87EC @ =gBattleAnimBankAttacker
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
bl sub_8077ABC
adds r4, r0, 0
- ldr r7, _080D87F0 @ =gBattleAnimEnemyMonIndex
+ ldr r7, _080D87F0 @ =gBattleAnimBankTarget
ldrb r0, [r7]
movs r1, 0x2
bl sub_8077ABC
@@ -29178,7 +29178,7 @@ _080D8734:
cmp r0, 0
bne _080D8790
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
ldr r2, _080D87F8 @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -29196,7 +29196,7 @@ _080D8790:
movs r0, 0x1
strh r0, [r5, 0x3A]
_080D8794:
- ldr r4, _080D87EC @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D87EC @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -29218,7 +29218,7 @@ _080D8794:
ldrh r1, [r5, 0x20]
adds r0, r1
strh r0, [r5, 0x30]
- ldr r4, _080D87F0 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D87F0 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -29236,8 +29236,8 @@ _080D8794:
b _080D8824
.align 2, 0
_080D87E8: .4byte gBattleAnimArgs
-_080D87EC: .4byte gBattleAnimPlayerMonIndex
-_080D87F0: .4byte gBattleAnimEnemyMonIndex
+_080D87EC: .4byte gBattleAnimBankAttacker
+_080D87F0: .4byte gBattleAnimBankTarget
_080D87F4: .4byte gBanksBySide
_080D87F8: .4byte gSprites
_080D87FC:
@@ -29245,7 +29245,7 @@ _080D87FC:
ldrh r1, [r5, 0x20]
adds r0, r1
strh r0, [r5, 0x30]
- ldr r4, _080D886C @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D886C @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -29295,7 +29295,7 @@ _080D8858:
pop {r0}
bx r0
.align 2, 0
-_080D886C: .4byte gBattleAnimEnemyMonIndex
+_080D886C: .4byte gBattleAnimBankTarget
_080D8870: .4byte sub_80D8874
thumb_func_end sub_80D8700
@@ -29357,7 +29357,7 @@ _080D88C8:
_080D88D6:
movs r5, 0x50
strh r5, [r4, 0x2E]
- ldr r6, _080D8928 @ =gBattleAnimEnemyMonIndex
+ ldr r6, _080D8928 @ =gBattleAnimBankTarget
ldrb r0, [r6]
movs r1, 0
bl sub_8077ABC
@@ -29396,7 +29396,7 @@ _080D88D6:
strh r0, [r4, 0x38]
b _080D893A
.align 2, 0
-_080D8928: .4byte gBattleAnimEnemyMonIndex
+_080D8928: .4byte gBattleAnimBankTarget
_080D892C: .4byte gMain
_080D8930: .4byte 0x0000043d
_080D8934: .4byte gBanksBySide
@@ -29545,7 +29545,7 @@ _080D8A12:
cmp r0, 0
beq _080D8A78
ldr r1, _080D8A70 @ =gBanksBySide
- ldr r0, _080D8A74 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D8A74 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -29560,7 +29560,7 @@ _080D8A12:
_080D8A68: .4byte gMain
_080D8A6C: .4byte 0x0000043d
_080D8A70: .4byte gBanksBySide
-_080D8A74: .4byte gBattleAnimEnemyMonIndex
+_080D8A74: .4byte gBattleAnimBankTarget
_080D8A78:
ldr r0, _080D8A90 @ =0x0000fff0
_080D8A7A:
@@ -29764,7 +29764,7 @@ sub_80D8BA8: @ 80D8BA8
lsls r0, 24
lsrs r5, r0, 24
adds r0, r5, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080D8C94
@@ -30089,7 +30089,7 @@ _080D8E6A:
ldr r6, _080D8ED0 @ =gBattleAnimArgs
ldrh r0, [r6, 0x8]
strh r0, [r5, 0x2E]
- ldr r0, _080D8ED4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D8ED4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -30099,7 +30099,7 @@ _080D8E6A:
negs r0, r0
strh r0, [r6, 0x4]
_080D8E92:
- ldr r4, _080D8ED8 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D8ED8 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -30128,8 +30128,8 @@ _080D8E92:
.align 2, 0
_080D8ECC: .4byte gDisableStructMoveAnim
_080D8ED0: .4byte gBattleAnimArgs
-_080D8ED4: .4byte gBattleAnimPlayerMonIndex
-_080D8ED8: .4byte gBattleAnimEnemyMonIndex
+_080D8ED4: .4byte gBattleAnimBankAttacker
+_080D8ED8: .4byte gBattleAnimBankTarget
_080D8EDC: .4byte sub_80D8EE0
thumb_func_end unc_080B06FC
@@ -30148,7 +30148,7 @@ sub_80D8EE0: @ 80D8EE0
str r0, [r4, 0x1C]
ldr r1, _080D8F0C @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
_080D8F02:
pop {r4}
pop {r0}
@@ -30296,7 +30296,7 @@ unc_080B08A0: @ 80D8FF0
str r0, [r4, 0x1C]
ldr r1, _080D9028 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
@@ -30315,7 +30315,7 @@ sub_80D902C: @ 80D902C
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _080D9054
- ldr r0, _080D9074 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D9074 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -30341,7 +30341,7 @@ _080D9054:
bx r0
.align 2, 0
_080D9070: .4byte gBattleAnimArgs
-_080D9074: .4byte gBattleAnimPlayerMonIndex
+_080D9074: .4byte gBattleAnimBankAttacker
thumb_func_end sub_80D902C
thumb_func_start sub_80D9078
@@ -30398,7 +30398,7 @@ _080D90D0:
str r0, [r5, 0x1C]
ldr r1, _080D90F0 @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
@@ -30421,13 +30421,13 @@ sub_80D90F4: @ 80D90F4
mov r9, r0
cmp r1, 0
bne _080D9118
- ldr r0, _080D9114 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D9114 @ =gBattleAnimBankAttacker
b _080D911A
.align 2, 0
_080D9110: .4byte gBattleAnimArgs
-_080D9114: .4byte gBattleAnimPlayerMonIndex
+_080D9114: .4byte gBattleAnimBankAttacker
_080D9118:
- ldr r0, _080D9260 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D9260 @ =gBattleAnimBankTarget
_080D911A:
ldrb r0, [r0]
mov r8, r0
@@ -30584,7 +30584,7 @@ _080D9250:
pop {r0}
bx r0
.align 2, 0
-_080D9260: .4byte gBattleAnimEnemyMonIndex
+_080D9260: .4byte gBattleAnimBankTarget
_080D9264: .4byte gBanksBySide
_080D9268: .4byte 0xfff00000
_080D926C: .4byte gBattleAnimSpriteTemplate_83DB4A8
@@ -30675,7 +30675,7 @@ _080D9306:
str r0, [r4, 0x1C]
ldr r1, _080D9324 @ =sub_80D9328
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
@@ -30716,7 +30716,7 @@ sub_80D9328: @ 80D9328
str r0, [r5, 0x1C]
ldr r1, _080D9374 @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
_080D9368:
pop {r4-r6}
pop {r0}
@@ -30730,10 +30730,10 @@ _080D9374: .4byte move_anim_8072740
sub_80D9378: @ 80D9378
push {r4-r6,lr}
adds r6, r0, 0
- ldr r0, _080D93F4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D93F4 @ =gBattleAnimBankAttacker
ldrb r1, [r0]
movs r0, 0x2
- ldr r2, _080D93F8 @ =gBattleAnimEnemyMonIndex
+ ldr r2, _080D93F8 @ =gBattleAnimBankTarget
eors r0, r1
ldrb r1, [r2]
cmp r0, r1
@@ -30753,7 +30753,7 @@ _080D93A4:
adds r0, r6, 0
movs r1, 0x1
bl sub_8078764
- ldr r0, _080D93F4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D93F4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -30789,8 +30789,8 @@ _080D93C2:
pop {r0}
bx r0
.align 2, 0
-_080D93F4: .4byte gBattleAnimPlayerMonIndex
-_080D93F8: .4byte gBattleAnimEnemyMonIndex
+_080D93F4: .4byte gBattleAnimBankAttacker
+_080D93F8: .4byte gBattleAnimBankTarget
_080D93FC: .4byte gBattleAnimArgs
_080D9400: .4byte sub_80D9404
thumb_func_end sub_80D9378
@@ -30842,7 +30842,7 @@ sub_80D943C: @ 80D943C
str r0, [r4, 0x1C]
ldr r1, _080D9470 @ =sub_80D9474
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
@@ -30870,7 +30870,7 @@ sub_80D9474: @ 80D9474
str r0, [r4, 0x1C]
ldr r1, _080D94A4 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
@@ -30913,7 +30913,7 @@ sub_80D94CC: @ 80D94CC
bne _080D9510
movs r0, 0x6
strh r0, [r5, 0x2E]
- ldr r4, _080D9518 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D9518 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -30930,13 +30930,13 @@ sub_80D94CC: @ 80D94CC
str r0, [r5, 0x1C]
ldr r1, _080D9520 @ =sub_80D9524
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
_080D9510:
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080D9518: .4byte gBattleAnimEnemyMonIndex
+_080D9518: .4byte gBattleAnimBankTarget
_080D951C: .4byte sub_8078B34
_080D9520: .4byte sub_80D9524
thumb_func_end sub_80D94CC
@@ -30949,7 +30949,7 @@ sub_80D9524: @ 80D9524
ldr r1, _080D9538 @ =sub_80782D8
str r1, [r0, 0x1C]
ldr r1, _080D953C @ =move_anim_8072740
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r0}
bx r0
.align 2, 0
@@ -31040,13 +31040,13 @@ sub_80D95D0: @ 80D95D0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080D95EC
- ldr r4, _080D95E8 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D95E8 @ =gBattleAnimBankAttacker
b _080D95EE
.align 2, 0
_080D95E4: .4byte gBattleAnimArgs
-_080D95E8: .4byte gBattleAnimPlayerMonIndex
+_080D95E8: .4byte gBattleAnimBankAttacker
_080D95EC:
- ldr r4, _080D9634 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D9634 @ =gBattleAnimBankTarget
_080D95EE:
ldrb r0, [r4]
movs r1, 0
@@ -31082,7 +31082,7 @@ _080D95EE:
pop {r0}
bx r0
.align 2, 0
-_080D9634: .4byte gBattleAnimEnemyMonIndex
+_080D9634: .4byte gBattleAnimBankTarget
_080D9638: .4byte gBattleAnimArgs
_080D963C: .4byte sub_80D9640
thumb_func_end sub_80D95D0
@@ -31165,7 +31165,7 @@ sub_80D96B8: @ 80D96B8
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080D96E4
- ldr r4, _080D96E0 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D96E0 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -31176,9 +31176,9 @@ sub_80D96B8: @ 80D96B8
b _080D96F6
.align 2, 0
_080D96DC: .4byte gBattleAnimArgs
-_080D96E0: .4byte gBattleAnimPlayerMonIndex
+_080D96E0: .4byte gBattleAnimBankAttacker
_080D96E4:
- ldr r4, _080D9740 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D9740 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -31224,7 +31224,7 @@ _080D96F6:
beq _080D975A
b _080D978A
.align 2, 0
-_080D9740: .4byte gBattleAnimEnemyMonIndex
+_080D9740: .4byte gBattleAnimBankTarget
_080D9744: .4byte gBattleAnimArgs
_080D9748: .4byte 0x000003ff
_080D974C: .4byte 0xfffffc00
@@ -31322,7 +31322,7 @@ sub_80D97CC: @ 80D97CC
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- ldr r0, _080D9820 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D9820 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8079ED4
movs r1, 0x3
@@ -31334,15 +31334,15 @@ sub_80D97CC: @ 80D97CC
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
- ldr r0, _080D9824 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D9824 @ =gBattleAnimBankTarget
b _080D9844
.align 2, 0
_080D9818: .4byte gBattleAnimArgs
_080D981C: .4byte gBankAttacker
-_080D9820: .4byte gBattleAnimPlayerMonIndex
-_080D9824: .4byte gBattleAnimEnemyMonIndex
+_080D9820: .4byte gBattleAnimBankAttacker
+_080D9824: .4byte gBattleAnimBankTarget
_080D9828:
- ldr r0, _080D9860 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D9860 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079ED4
movs r1, 0x3
@@ -31354,7 +31354,7 @@ _080D9828:
ands r0, r2
orrs r0, r1
strb r0, [r5, 0x5]
- ldr r0, _080D9864 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D9864 @ =gBattleAnimBankAttacker
_080D9844:
ldrb r0, [r0]
strh r0, [r5, 0x3C]
@@ -31370,8 +31370,8 @@ _080D9844:
pop {r0}
bx r0
.align 2, 0
-_080D9860: .4byte gBattleAnimEnemyMonIndex
-_080D9864: .4byte gBattleAnimPlayerMonIndex
+_080D9860: .4byte gBattleAnimBankTarget
+_080D9864: .4byte gBattleAnimBankAttacker
_080D9868: .4byte sub_80D986C
thumb_func_end sub_80D97CC
@@ -31415,7 +31415,7 @@ sub_80D986C: @ 80D986C
bl obj_translate_based_on_private_1_2_3_4
ldr r1, _080D98D0 @ =move_anim_8074EE0
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080D98D4 @ =sub_8078BB8
str r0, [r4, 0x1C]
_080D98C6:
@@ -31515,7 +31515,7 @@ _080D997E:
strh r0, [r7, 0x2E]
b _080D99DC
_080D9986:
- ldr r4, _080D99E8 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080D99E8 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -31528,7 +31528,7 @@ _080D9986:
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
- ldr r2, _080D99EC @ =gBattleAnimEnemyMonIndex
+ ldr r2, _080D99EC @ =gBattleAnimBankTarget
mov r8, r2
ldrb r0, [r2]
movs r1, 0x2
@@ -31561,8 +31561,8 @@ _080D99DC:
pop {r0}
bx r0
.align 2, 0
-_080D99E8: .4byte gBattleAnimPlayerMonIndex
-_080D99EC: .4byte gBattleAnimEnemyMonIndex
+_080D99E8: .4byte gBattleAnimBankAttacker
+_080D99EC: .4byte gBattleAnimBankTarget
_080D99F0: .4byte sub_80D99F4
thumb_func_end sub_80D9934
@@ -31627,19 +31627,19 @@ sub_80D9A38: @ 80D9A38
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
- ldr r0, _080D9A74 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D9A74 @ =gBattleAnimBankTarget
ldrb r4, [r0]
- ldr r0, _080D9A78 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D9A78 @ =gBattleAnimBankAttacker
b _080D9A82
.align 2, 0
_080D9A6C: .4byte gBattleAnimArgs
_080D9A70: .4byte gBankAttacker
-_080D9A74: .4byte gBattleAnimEnemyMonIndex
-_080D9A78: .4byte gBattleAnimPlayerMonIndex
+_080D9A74: .4byte gBattleAnimBankTarget
+_080D9A78: .4byte gBattleAnimBankAttacker
_080D9A7C:
- ldr r0, _080D9AB4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D9AB4 @ =gBattleAnimBankAttacker
ldrb r4, [r0]
- ldr r0, _080D9AB8 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D9AB8 @ =gBattleAnimBankTarget
_080D9A82:
ldrb r0, [r0]
bl sub_8079ED4
@@ -31665,8 +31665,8 @@ _080D9A82:
subs r0, 0x47
b _080D9AD6
.align 2, 0
-_080D9AB4: .4byte gBattleAnimPlayerMonIndex
-_080D9AB8: .4byte gBattleAnimEnemyMonIndex
+_080D9AB4: .4byte gBattleAnimBankAttacker
+_080D9AB8: .4byte gBattleAnimBankTarget
_080D9ABC:
adds r0, r4, 0
bl GetBankSide
@@ -31707,7 +31707,7 @@ _080D9ADC:
bl obj_translate_based_on_private_1_2_3_4
ldr r1, _080D9B1C @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080D9B20 @ =sub_8078BB8
str r0, [r5, 0x1C]
pop {r4,r5}
@@ -31743,7 +31743,7 @@ _080D9B3A:
sub_80D9B48: @ 80D9B48
push {r4-r6,lr}
adds r5, r0, 0
- ldr r4, _080D9BC4 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D9BC4 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -31802,7 +31802,7 @@ _080D9BA6:
pop {r0}
bx r0
.align 2, 0
-_080D9BC4: .4byte gBattleAnimEnemyMonIndex
+_080D9BC4: .4byte gBattleAnimBankTarget
_080D9BC8: .4byte gBattleAnimArgs
_080D9BCC: .4byte gUnknown_0202F7C4
_080D9BD0: .4byte sub_80D9B24
@@ -31837,7 +31837,7 @@ _080D9BF8:
bl StartSpriteAnim
b _080D9C22
_080D9C0C:
- ldr r0, _080D9C34 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D9C34 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -31851,12 +31851,12 @@ _080D9C22:
str r0, [r4, 0x1C]
ldr r1, _080D9C3C @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
.align 2, 0
-_080D9C34: .4byte gBattleAnimPlayerMonIndex
+_080D9C34: .4byte gBattleAnimBankAttacker
_080D9C38: .4byte sub_8078600
_080D9C3C: .4byte move_anim_8072740
thumb_func_end sub_80D9BD4
@@ -31952,7 +31952,7 @@ _080D9CDE:
ldrh r1, [r4, 0x1C]
adds r0, r1
strh r0, [r4, 0x1C]
- ldr r0, _080D9D0C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D9D0C @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -31968,7 +31968,7 @@ _080D9CDE:
adds r7, r1, 0
b _080D9D24
.align 2, 0
-_080D9D0C: .4byte gBattleAnimEnemyMonIndex
+_080D9D0C: .4byte gBattleAnimBankTarget
_080D9D10: .4byte gUnknown_030041B0
_080D9D14:
ldr r2, _080D9D64 @ =gUnknown_030041B0
@@ -32034,7 +32034,7 @@ _080D9D86:
bl sub_80787B0
ldrh r0, [r4, 0x4]
strh r0, [r5, 0x2E]
- ldr r4, _080D9DC8 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080D9DC8 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -32058,7 +32058,7 @@ _080D9D86:
bx r0
.align 2, 0
_080D9DC4: .4byte gBattleAnimArgs
-_080D9DC8: .4byte gBattleAnimEnemyMonIndex
+_080D9DC8: .4byte gBattleAnimBankTarget
_080D9DCC: .4byte 0x0000ffe2
_080D9DD0: .4byte sub_80D9DD4
thumb_func_end sub_80D9D70
@@ -32096,7 +32096,7 @@ _080D9E08:
adds r0, r4, 0
movs r1, 0x1
bl sub_80787B0
- ldr r0, _080D9E68 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D9E68 @ =gBattleAnimBankTarget
ldrb r0, [r0]
mov r6, sp
adds r6, 0x2
@@ -32104,7 +32104,7 @@ _080D9E08:
mov r2, sp
adds r3, r6, 0
bl sub_807A3FC
- ldr r0, _080D9E6C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D9E6C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -32137,8 +32137,8 @@ _080D9E36:
bx r0
.align 2, 0
_080D9E64: .4byte gBattleAnimArgs
-_080D9E68: .4byte gBattleAnimEnemyMonIndex
-_080D9E6C: .4byte gBattleAnimPlayerMonIndex
+_080D9E68: .4byte gBattleAnimBankTarget
+_080D9E6C: .4byte gBattleAnimBankAttacker
_080D9E70: .4byte 0x0000ffe2
_080D9E74: .4byte sub_80D9E78
thumb_func_end sub_80D9DF0
@@ -32229,7 +32229,7 @@ _080D9F0E:
sub_80D9F14: @ 80D9F14
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080D9F74 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D9F74 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -32237,7 +32237,7 @@ sub_80D9F14: @ 80D9F14
adds r3, 0x22
movs r1, 0x1
bl sub_807A3FC
- ldr r0, _080D9F78 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D9F78 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -32268,13 +32268,13 @@ _080D9F40:
str r0, [r4, 0x1C]
ldr r1, _080D9F84 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
.align 2, 0
-_080D9F74: .4byte gBattleAnimEnemyMonIndex
-_080D9F78: .4byte gBattleAnimPlayerMonIndex
+_080D9F74: .4byte gBattleAnimBankTarget
+_080D9F78: .4byte gBattleAnimBankAttacker
_080D9F7C: .4byte gBattleAnimArgs
_080D9F80: .4byte sub_8078B34
_080D9F84: .4byte move_anim_8072740
@@ -32296,7 +32296,7 @@ sub_80D9F88: @ 80D9F88
.align 2, 0
_080D9FA0: .4byte gBattleAnimArgs
_080D9FA4:
- ldr r0, _080D9FE4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080D9FE4 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -32304,7 +32304,7 @@ _080D9FA4:
adds r3, 0x22
movs r1, 0x1
bl sub_807A3FC
- ldr r0, _080D9FE8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080D9FE8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -32329,8 +32329,8 @@ _080D9FDA:
pop {r0}
bx r0
.align 2, 0
-_080D9FE4: .4byte gBattleAnimEnemyMonIndex
-_080D9FE8: .4byte gBattleAnimPlayerMonIndex
+_080D9FE4: .4byte gBattleAnimBankTarget
+_080D9FE8: .4byte gBattleAnimBankAttacker
_080D9FEC: .4byte sub_80D9FF0
thumb_func_end sub_80D9F88
@@ -32538,7 +32538,7 @@ sub_80DA16C: @ 80DA16C
adds r6, r0, 0
movs r1, 0x1
bl sub_80787B0
- ldr r0, _080DA1D8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DA1D8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -32554,7 +32554,7 @@ _080DA18C:
strh r0, [r6, 0x2E]
ldrh r0, [r6, 0x20]
strh r0, [r6, 0x30]
- ldr r5, _080DA1E0 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080DA1E0 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -32579,14 +32579,14 @@ _080DA18C:
str r0, [r6, 0x1C]
ldr r1, _080DA1E8 @ =sub_80DA1EC
adds r0, r6, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080DA1D8: .4byte gBattleAnimPlayerMonIndex
+_080DA1D8: .4byte gBattleAnimBankAttacker
_080DA1DC: .4byte gBattleAnimArgs
-_080DA1E0: .4byte gBattleAnimEnemyMonIndex
+_080DA1E0: .4byte gBattleAnimBankTarget
_080DA1E4: .4byte sub_80785E4
_080DA1E8: .4byte sub_80DA1EC
thumb_func_end sub_80DA16C
@@ -32611,7 +32611,7 @@ _080DA200:
sub_80DA208: @ 80DA208
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, _080DA2A4 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DA2A4 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -32668,7 +32668,7 @@ _080DA24C:
ldrsh r0, [r2, r3]
cmp r0, 0
bne _080DA2B0
- ldr r4, _080DA2AC @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DA2AC @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -32683,11 +32683,11 @@ _080DA24C:
strh r0, [r5, 0x36]
b _080DA2C2
.align 2, 0
-_080DA2A4: .4byte gBattleAnimPlayerMonIndex
+_080DA2A4: .4byte gBattleAnimBankAttacker
_080DA2A8: .4byte gBattleAnimArgs
-_080DA2AC: .4byte gBattleAnimEnemyMonIndex
+_080DA2AC: .4byte gBattleAnimBankTarget
_080DA2B0:
- ldr r0, _080DA2F0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DA2F0 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -32709,7 +32709,7 @@ _080DA2C2:
str r0, [r5, 0x1C]
ldr r1, _080DA2FC @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldrb r1, [r4, 0xA]
adds r0, r5, 0
bl SeekSpriteAnim
@@ -32717,7 +32717,7 @@ _080DA2C2:
pop {r0}
bx r0
.align 2, 0
-_080DA2F0: .4byte gBattleAnimEnemyMonIndex
+_080DA2F0: .4byte gBattleAnimBankTarget
_080DA2F4: .4byte gBattleAnimArgs
_080DA2F8: .4byte sub_8078B34
_080DA2FC: .4byte move_anim_8072740
@@ -32737,7 +32737,7 @@ sub_80DA300: @ 80DA300
ldr r0, _080DA340 @ =sub_80DA348
str r0, [r4, 0x1C]
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
ldr r2, _080DA344 @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -32802,7 +32802,7 @@ _080DA386:
sub_80DA38C: @ 80DA38C
push {r4,r5,lr}
adds r5, r0, 0
- ldr r0, _080DA3B4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DA3B4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -32818,7 +32818,7 @@ sub_80DA38C: @ 80DA38C
bl StartSpriteAffineAnim
b _080DA3C2
.align 2, 0
-_080DA3B4: .4byte gBattleAnimPlayerMonIndex
+_080DA3B4: .4byte gBattleAnimBankAttacker
_080DA3B8: .4byte 0x0000ffe0
_080DA3BC:
ldr r0, _080DA400 @ =0x0000ffe0
@@ -32830,7 +32830,7 @@ _080DA3C2:
strh r0, [r5, 0x2E]
ldrh r0, [r5, 0x20]
strh r0, [r5, 0x30]
- ldr r4, _080DA408 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DA408 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -32855,7 +32855,7 @@ _080DA3C2:
.align 2, 0
_080DA400: .4byte 0x0000ffe0
_080DA404: .4byte gBattleAnimArgs
-_080DA408: .4byte gBattleAnimEnemyMonIndex
+_080DA408: .4byte gBattleAnimBankTarget
_080DA40C: .4byte sub_80DA410
thumb_func_end sub_80DA38C
@@ -32900,7 +32900,7 @@ _080DA438:
ble _080DA480
_080DA45A:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
ldr r2, _080DA488 @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -32980,13 +32980,13 @@ sub_80DA4D8: @ 80DA4D8
ands r0, r1
cmp r0, 0
beq _080DA500
- ldr r0, _080DA4FC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DA4FC @ =gBattleAnimBankAttacker
b _080DA502
.align 2, 0
_080DA4F8: .4byte gBattleAnimArgs
-_080DA4FC: .4byte gBattleAnimPlayerMonIndex
+_080DA4FC: .4byte gBattleAnimBankAttacker
_080DA500:
- ldr r0, _080DA5B0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DA5B0 @ =gBattleAnimBankTarget
_080DA502:
ldrb r6, [r0]
adds r0, r6, 0
@@ -33073,7 +33073,7 @@ _080DA518:
strb r1, [r7, 0x5]
b _080DA5D8
.align 2, 0
-_080DA5B0: .4byte gBattleAnimEnemyMonIndex
+_080DA5B0: .4byte gBattleAnimBankTarget
_080DA5B4: .4byte gBattleAnimArgs
_080DA5B8: .4byte gMain
_080DA5BC: .4byte 0x0000043d
@@ -34081,7 +34081,7 @@ _080DAD2C: .4byte sub_80DA48C
sub_80DAD30: @ 80DAD30
push {r4,r5,lr}
adds r4, r0, 0
- ldr r0, _080DAD78 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DAD78 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079ED4
movs r1, 0x3
@@ -34093,7 +34093,7 @@ sub_80DAD30: @ 80DAD30
ands r0, r2
orrs r0, r1
strb r0, [r4, 0x5]
- ldr r5, _080DAD7C @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080DAD7C @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -34112,8 +34112,8 @@ sub_80DAD30: @ 80DAD30
pop {r0}
bx r0
.align 2, 0
-_080DAD78: .4byte gBattleAnimEnemyMonIndex
-_080DAD7C: .4byte gBattleAnimPlayerMonIndex
+_080DAD78: .4byte gBattleAnimBankTarget
+_080DAD7C: .4byte gBattleAnimBankAttacker
_080DAD80: .4byte sub_807941C
thumb_func_end sub_80DAD30
@@ -34137,7 +34137,7 @@ sub_80DAD84: @ 80DAD84
cmp r0, 0
beq _080DAE44
ldr r0, _080DADD8 @ =gBanksBySide
- ldr r1, _080DADDC @ =gBattleAnimEnemyMonIndex
+ ldr r1, _080DADDC @ =gBattleAnimBankTarget
ldrb r2, [r1]
adds r0, r2, r0
ldrb r1, [r0]
@@ -34158,7 +34158,7 @@ _080DADCC: .4byte gBattleAnimArgs
_080DADD0: .4byte gMain
_080DADD4: .4byte 0x0000043d
_080DADD8: .4byte gBanksBySide
-_080DADDC: .4byte gBattleAnimEnemyMonIndex
+_080DADDC: .4byte gBattleAnimBankTarget
_080DADE0:
adds r0, r2, 0
movs r1, 0x1
@@ -34173,7 +34173,7 @@ _080DADEE:
ldrsh r0, [r0, r1]
cmp r0, 0
beq _080DAE24
- ldr r0, _080DAE20 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DAE20 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079ED4
lsls r0, 24
@@ -34191,9 +34191,9 @@ _080DADEE:
b _080DAE58
.align 2, 0
_080DAE1C: .4byte gBattleAnimArgs
-_080DAE20: .4byte gBattleAnimEnemyMonIndex
+_080DAE20: .4byte gBattleAnimBankTarget
_080DAE24:
- ldr r0, _080DAE40 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DAE40 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8079ED4
movs r1, 0x3
@@ -34207,9 +34207,9 @@ _080DAE24:
strb r0, [r4, 0x5]
b _080DAE58
.align 2, 0
-_080DAE40: .4byte gBattleAnimEnemyMonIndex
+_080DAE40: .4byte gBattleAnimBankTarget
_080DAE44:
- ldr r0, _080DAEFC @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DAEFC @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
bl sub_8077ABC
@@ -34303,7 +34303,7 @@ _080DAEF2:
pop {r0}
bx r0
.align 2, 0
-_080DAEFC: .4byte gBattleAnimEnemyMonIndex
+_080DAEFC: .4byte gBattleAnimBankTarget
_080DAF00: .4byte gSineTable
_080DAF04: .4byte gOamMatrices
_080DAF08: .4byte sub_80DAF0C
@@ -34463,7 +34463,7 @@ _080DB024:
ldrsh r0, [r4, r2]
cmp r0, 0
bne _080DB03C
- ldr r0, _080DB090 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DB090 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -34474,7 +34474,7 @@ _080DB03C:
ldrsh r0, [r4, r1]
cmp r0, 0x1
bne _080DB058
- ldr r0, _080DB094 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DB094 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -34512,8 +34512,8 @@ _080DB058:
bx r0
.align 2, 0
_080DB08C: .4byte gBattleAnimArgs
-_080DB090: .4byte gBattleAnimPlayerMonIndex
-_080DB094: .4byte gBattleAnimEnemyMonIndex
+_080DB090: .4byte gBattleAnimBankAttacker
+_080DB094: .4byte gBattleAnimBankTarget
_080DB098: .4byte 0x00000ccc
_080DB09C: .4byte sub_80DB0A0
thumb_func_end sub_80DB000
@@ -34599,7 +34599,7 @@ sub_80DB0E8: @ 80DB0E8
strh r0, [r4, 0x6]
ldr r0, _080DB18C @ =gBattleAnimSpriteTemplate_83DB538
mov r8, r0
- ldr r5, _080DB190 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080DB190 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -34637,7 +34637,7 @@ _080DB180: .4byte gTasks
_080DB184: .4byte gAnimVisualTaskCount
_080DB188: .4byte gBattleAnimArgs
_080DB18C: .4byte gBattleAnimSpriteTemplate_83DB538
-_080DB190: .4byte gBattleAnimEnemyMonIndex
+_080DB190: .4byte gBattleAnimBankTarget
thumb_func_end sub_80DB0E8
thumb_func_start sub_80DB194
@@ -34656,7 +34656,7 @@ _080DB1A6:
movs r1, 0x1
bl sub_80787B0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
ldr r2, _080DB1D4 @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -34709,7 +34709,7 @@ _080DB20A:
beq _080DB240
b _080DB27E
_080DB210:
- ldr r0, _080DB228 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DB228 @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
bl sub_8077ABC
@@ -34721,7 +34721,7 @@ _080DB210:
strh r0, [r4, 0x26]
b _080DB238
.align 2, 0
-_080DB228: .4byte gBattleAnimEnemyMonIndex
+_080DB228: .4byte gBattleAnimBankTarget
_080DB22C:
ldrh r0, [r4, 0x26]
adds r0, 0xA
@@ -34748,7 +34748,7 @@ _080DB240:
cmp r0, r1
bge _080DB27E
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
ldr r2, _080DB284 @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -34786,7 +34786,7 @@ sub_80DB288: @ 80DB288
ldr r0, _080DB2C8 @ =sub_80DB2D0
str r0, [r4, 0x1C]
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
ldr r2, _080DB2CC @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -34919,13 +34919,13 @@ _080DB388:
ldrsh r0, [r0, r2]
cmp r0, 0
bne _080DB3A0
- ldr r4, _080DB39C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DB39C @ =gBattleAnimBankAttacker
b _080DB3A2
.align 2, 0
_080DB398: .4byte gBattleAnimArgs
-_080DB39C: .4byte gBattleAnimPlayerMonIndex
+_080DB39C: .4byte gBattleAnimBankAttacker
_080DB3A0:
- ldr r4, _080DB3DC @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DB3DC @ =gBattleAnimBankTarget
_080DB3A2:
ldrb r0, [r4]
movs r1, 0
@@ -34954,7 +34954,7 @@ _080DB3A2:
strh r0, [r5, 0x2E]
b _080DB44C
.align 2, 0
-_080DB3DC: .4byte gBattleAnimEnemyMonIndex
+_080DB3DC: .4byte gBattleAnimBankTarget
_080DB3E0:
movs r1, 0x32
ldrsh r0, [r5, r1]
@@ -35079,13 +35079,13 @@ _080DB4C0:
ldrsh r0, [r2, r1]
cmp r0, 0
bne _080DB4D4
- ldr r4, _080DB4D0 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DB4D0 @ =gBattleAnimBankAttacker
b _080DB4D6
.align 2, 0
_080DB4CC: .4byte gBattleAnimArgs
-_080DB4D0: .4byte gBattleAnimPlayerMonIndex
+_080DB4D0: .4byte gBattleAnimBankAttacker
_080DB4D4:
- ldr r4, _080DB500 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DB500 @ =gBattleAnimBankTarget
_080DB4D6:
ldrb r0, [r4]
movs r1, 0
@@ -35106,7 +35106,7 @@ _080DB4D6:
pop {r0}
bx r0
.align 2, 0
-_080DB500: .4byte gBattleAnimEnemyMonIndex
+_080DB500: .4byte gBattleAnimBankTarget
_080DB504: .4byte sub_80DB508
thumb_func_end sub_80DB458
@@ -35245,7 +35245,7 @@ sub_80DB5E4: @ 80DB5E4
mov r8, r0
ldrh r4, [r0, 0x20]
ldrh r5, [r0, 0x22]
- ldr r6, _080DB698 @ =gBattleAnimPlayerMonIndex
+ ldr r6, _080DB698 @ =gBattleAnimBankAttacker
ldrb r0, [r6]
movs r1, 0x2
bl sub_8077ABC
@@ -35321,7 +35321,7 @@ sub_80DB5E4: @ 80DB5E4
pop {r0}
bx r0
.align 2, 0
-_080DB698: .4byte gBattleAnimPlayerMonIndex
+_080DB698: .4byte gBattleAnimBankAttacker
_080DB69C: .4byte sub_80DB6A0
thumb_func_end sub_80DB5E4
@@ -35375,7 +35375,7 @@ unref_sub_80DB6E4: @ 80DB6E4
cmp r0, 0
bne _080DB71C
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, _080DB718 @ =gSprites
@@ -35393,7 +35393,7 @@ _080DB714: .4byte gBattleAnimArgs
_080DB718: .4byte gSprites
_080DB71C:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, _080DB748 @ =gSprites
@@ -35421,7 +35421,7 @@ _080DB748: .4byte gSprites
sub_80DB74C: @ 80DB74C
push {r4-r7,lr}
adds r6, r0, 0
- ldr r0, _080DB804 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DB804 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -35463,7 +35463,7 @@ _080DB77E:
orrs r1, r0
lsrs r5, r1, 31
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080DB7BC
@@ -35475,7 +35475,7 @@ _080DB7BC:
adds r4, r0, 0
eors r4, r7
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080DB7DA
@@ -35493,7 +35493,7 @@ _080DB7DA:
lsls r0, 24
cmp r0, 0
beq _080DB810
- ldr r0, _080DB804 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DB804 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -35504,14 +35504,14 @@ _080DB7DA:
movs r0, 0x50
b _080DB84A
.align 2, 0
-_080DB804: .4byte gBattleAnimPlayerMonIndex
+_080DB804: .4byte gBattleAnimBankAttacker
_080DB808:
movs r0, 0xB0
strh r0, [r6, 0x20]
movs r0, 0x28
b _080DB84A
_080DB810:
- ldr r5, _080DB880 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080DB880 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
@@ -35565,7 +35565,7 @@ _080DB85C:
pop {r0}
bx r0
.align 2, 0
-_080DB880: .4byte gBattleAnimPlayerMonIndex
+_080DB880: .4byte gBattleAnimBankAttacker
_080DB884: .4byte gBattleAnimArgs
_080DB888: .4byte sub_80DB88C
thumb_func_end sub_80DB74C
@@ -35689,7 +35689,7 @@ sub_80DB92C: @ 80DB92C
lsrs r4, r0, 24
adds r6, r4, 0
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080DB98E
@@ -35712,7 +35712,7 @@ _080DB98E:
adds r4, r0, 0
eors r4, r6
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080DB9BC
@@ -35772,7 +35772,7 @@ sub_80DB9E4: @ 80DB9E4
orrs r1, r0
lsrs r5, r1, 31
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080DBA22
@@ -35782,7 +35782,7 @@ _080DBA22:
movs r0, 0x2
eors r4, r0
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080DBA3C
@@ -35824,7 +35824,7 @@ _080DBA66:
lsls r0, 24
cmp r0, 0
beq _080DBAAE
- ldr r0, _080DBA9C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DBA9C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -35840,7 +35840,7 @@ _080DBA66:
b _080DBAD0
.align 2, 0
_080DBA98: .4byte gBattleAnimArgs
-_080DBA9C: .4byte gBattleAnimPlayerMonIndex
+_080DBA9C: .4byte gBattleAnimBankAttacker
_080DBAA0:
ldrh r0, [r5]
adds r0, 0xB0
@@ -35890,7 +35890,7 @@ _080DBAEC:
sub_80DBAF4: @ 80DBAF4
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, _080DBB3C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DBB3C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -35920,7 +35920,7 @@ sub_80DBAF4: @ 80DBAF4
ldr r0, _080DBB40 @ =0x0000ffff
b _080DBB52
.align 2, 0
-_080DBB3C: .4byte gBattleAnimPlayerMonIndex
+_080DBB3C: .4byte gBattleAnimBankAttacker
_080DBB40: .4byte 0x0000ffff
_080DBB44:
ldrh r0, [r5, 0x20]
@@ -35934,7 +35934,7 @@ _080DBB52:
strh r0, [r5, 0x30]
ldr r1, _080DBB68 @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080DBB6C @ =sub_8078600
str r0, [r5, 0x1C]
pop {r4,r5}
@@ -35949,7 +35949,7 @@ _080DBB6C: .4byte sub_8078600
sub_80DBB70: @ 80DBB70
push {r4-r7,lr}
adds r5, r0, 0
- ldr r6, _080DBBF4 @ =gBattleAnimPlayerMonIndex
+ ldr r6, _080DBBF4 @ =gBattleAnimBankAttacker
ldrb r0, [r6]
movs r1, 0x1
bl sub_807A100
@@ -36003,14 +36003,14 @@ _080DBBB6:
_080DBBE2:
ldr r1, _080DBBF8 @ =sub_80DBC00
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080DBBFC @ =sub_8078600
str r0, [r5, 0x1C]
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
-_080DBBF4: .4byte gBattleAnimPlayerMonIndex
+_080DBBF4: .4byte gBattleAnimBankAttacker
_080DBBF8: .4byte sub_80DBC00
_080DBBFC: .4byte sub_8078600
thumb_func_end sub_80DBB70
@@ -36105,7 +36105,7 @@ sub_80DBC94: @ 80DBC94
ldr r0, _080DBCC4 @ =gTasks
adds r4, r0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -36159,14 +36159,14 @@ sub_80DBCFC: @ 80DBCFC
ldr r0, _080DBD48 @ =gTasks
adds r4, r1, r0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
movs r1, 0
strh r0, [r4, 0x8]
strh r1, [r4, 0xA]
strh r1, [r4, 0xC]
- ldr r0, _080DBD4C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DBD4C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -36187,7 +36187,7 @@ _080DBD30:
bx r0
.align 2, 0
_080DBD48: .4byte gTasks
-_080DBD4C: .4byte gBattleAnimPlayerMonIndex
+_080DBD4C: .4byte gBattleAnimBankAttacker
_080DBD50: .4byte gUnknown_083DA8C4
_080DBD54: .4byte sub_80DBD58
thumb_func_end sub_80DBCFC
@@ -36294,7 +36294,7 @@ sub_80DBE00: @ 80DBE00
movs r7, 0x10
strh r7, [r5, 0xE]
strh r0, [r5, 0x10]
- ldr r4, _080DBE88 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DBE88 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -36345,7 +36345,7 @@ _080DBE6A:
bx r0
.align 2, 0
_080DBE84: .4byte gTasks
-_080DBE88: .4byte gBattleAnimPlayerMonIndex
+_080DBE88: .4byte gBattleAnimBankAttacker
_080DBE8C: .4byte REG_BLDCNT
_080DBE90: .4byte REG_BLDALPHA
_080DBE94: .4byte sub_80DBE98
@@ -36614,7 +36614,7 @@ sub_80DC068: @ 80DC068
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080DC094
- ldr r4, _080DC0A8 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DC0A8 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -36637,7 +36637,7 @@ _080DC094:
bx r0
.align 2, 0
_080DC0A4: .4byte gBattleAnimArgs
-_080DC0A8: .4byte gBattleAnimPlayerMonIndex
+_080DC0A8: .4byte gBattleAnimBankAttacker
_080DC0AC: .4byte sub_80DC020
thumb_func_end sub_80DC068
@@ -36662,7 +36662,7 @@ sub_80DC0B0: @ 80DC0B0
bne _080DC120
ldr r0, _080DC114 @ =0x0000fff6
strh r0, [r5, 0x1C]
- ldr r4, _080DC118 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DC118 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x5
bl sub_807A100
@@ -36673,7 +36673,7 @@ sub_80DC0B0: @ 80DC0B0
bl sub_807A100
adds r0, 0x8
strh r0, [r5, 0x20]
- ldr r4, _080DC11C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DC11C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x5
bl sub_807A100
@@ -36688,12 +36688,12 @@ sub_80DC0B0: @ 80DC0B0
_080DC10C: .4byte gTasks
_080DC110: .4byte gBattleAnimArgs
_080DC114: .4byte 0x0000fff6
-_080DC118: .4byte gBattleAnimEnemyMonIndex
-_080DC11C: .4byte gBattleAnimPlayerMonIndex
+_080DC118: .4byte gBattleAnimBankTarget
+_080DC11C: .4byte gBattleAnimBankAttacker
_080DC120:
movs r0, 0xA
strh r0, [r5, 0x1C]
- ldr r4, _080DC14C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DC14C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x4
bl sub_807A100
@@ -36704,15 +36704,15 @@ _080DC120:
bl sub_807A100
subs r0, 0x8
strh r0, [r5, 0x20]
- ldr r4, _080DC150 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DC150 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x4
bl sub_807A100
adds r0, 0x8
b _080DC1D2
.align 2, 0
-_080DC14C: .4byte gBattleAnimPlayerMonIndex
-_080DC150: .4byte gBattleAnimEnemyMonIndex
+_080DC14C: .4byte gBattleAnimBankAttacker
+_080DC150: .4byte gBattleAnimBankTarget
_080DC154:
ldr r0, _080DC198 @ =gBattleAnimArgs
movs r1, 0
@@ -36721,7 +36721,7 @@ _080DC154:
bne _080DC1A8
ldr r0, _080DC19C @ =0x0000fff6
strh r0, [r5, 0x1C]
- ldr r4, _080DC1A0 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DC1A0 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x4
bl sub_807A100
@@ -36732,7 +36732,7 @@ _080DC154:
bl sub_807A100
adds r0, 0x8
strh r0, [r5, 0x20]
- ldr r4, _080DC1A4 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DC1A4 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x4
bl sub_807A100
@@ -36746,12 +36746,12 @@ _080DC154:
.align 2, 0
_080DC198: .4byte gBattleAnimArgs
_080DC19C: .4byte 0x0000fff6
-_080DC1A0: .4byte gBattleAnimEnemyMonIndex
-_080DC1A4: .4byte gBattleAnimPlayerMonIndex
+_080DC1A0: .4byte gBattleAnimBankTarget
+_080DC1A4: .4byte gBattleAnimBankAttacker
_080DC1A8:
movs r0, 0xA
strh r0, [r5, 0x1C]
- ldr r4, _080DC1F0 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DC1F0 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x5
bl sub_807A100
@@ -36762,7 +36762,7 @@ _080DC1A8:
bl sub_807A100
subs r0, 0x8
strh r0, [r5, 0x20]
- ldr r4, _080DC1F4 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DC1F4 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x5
bl sub_807A100
@@ -36783,8 +36783,8 @@ _080DC1DE:
pop {r0}
bx r0
.align 2, 0
-_080DC1F0: .4byte gBattleAnimPlayerMonIndex
-_080DC1F4: .4byte gBattleAnimEnemyMonIndex
+_080DC1F0: .4byte gBattleAnimBankAttacker
+_080DC1F4: .4byte gBattleAnimBankTarget
_080DC1F8: .4byte sub_80DC1FC
thumb_func_end sub_80DC0B0
@@ -36909,7 +36909,7 @@ sub_80DC2D4: @ 80DC2D4
lsls r1, 3
ldr r0, _080DC30C @ =gTasks
adds r4, r1, r0
- ldr r0, _080DC310 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DC310 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl sub_8077FC0
lsls r0, 24
@@ -36929,7 +36929,7 @@ sub_80DC2D4: @ 80DC2D4
b _080DC346
.align 2, 0
_080DC30C: .4byte gTasks
-_080DC310: .4byte gBattleAnimEnemyMonIndex
+_080DC310: .4byte gBattleAnimBankTarget
_080DC314: .4byte gBattleAnimArgs
_080DC318:
cmp r0, 0x2
@@ -36967,7 +36967,7 @@ _080DC346:
movs r0, 0
strh r0, [r4, 0x24]
_080DC352:
- ldr r0, _080DC36C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DC36C @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -36980,7 +36980,7 @@ _080DC352:
ldr r0, _080DC374 @ =REG_BG1HOFS
b _080DC380
.align 2, 0
-_080DC36C: .4byte gBattleAnimEnemyMonIndex
+_080DC36C: .4byte gBattleAnimBankTarget
_080DC370: .4byte gUnknown_030042C0
_080DC374: .4byte REG_BG1HOFS
_080DC378:
@@ -37282,7 +37282,7 @@ _080DC554:
bl CalcCenterToCornerVec
ldr r1, _080DC5EC @ =gBattleAnimArgs
ldrb r0, [r1]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x22]
@@ -37461,7 +37461,7 @@ _080DC716:
beq _080DC808
b _080DC818
_080DC720:
- ldr r4, _080DC76C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DC76C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -37498,7 +37498,7 @@ _080DC74E:
strh r0, [r2]
b _080DC7A2
.align 2, 0
-_080DC76C: .4byte gBattleAnimPlayerMonIndex
+_080DC76C: .4byte gBattleAnimBankAttacker
_080DC770: .4byte REG_BLDCNT
_080DC774: .4byte REG_BLDALPHA
_080DC778:
@@ -37612,7 +37612,7 @@ sub_80DC824: @ 80DC824
.align 2, 0
_080DC84C: .4byte gBattleAnimArgs
_080DC850:
- ldr r0, _080DC8E4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DC8E4 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -37635,7 +37635,7 @@ _080DC850:
negs r0, r0
strh r0, [r1]
_080DC880:
- ldr r5, _080DC8E4 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080DC8E4 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077EE4
@@ -37675,12 +37675,12 @@ _080DC880:
str r0, [r6, 0x1C]
ldr r1, _080DC8F0 @ =move_anim_8072740
adds r0, r6, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080DC8E4: .4byte gBattleAnimEnemyMonIndex
+_080DC8E4: .4byte gBattleAnimBankTarget
_080DC8E8: .4byte gBattleAnimArgs
_080DC8EC: .4byte sub_8078B34
_080DC8F0: .4byte move_anim_8072740
@@ -37705,7 +37705,7 @@ sub_80DC8F4: @ 80DC8F4
.align 2, 0
_080DC914: .4byte gBattleAnimArgs
_080DC918:
- ldr r0, _080DC990 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DC990 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -37719,7 +37719,7 @@ _080DC918:
negs r1, r1
strh r1, [r0]
_080DC934:
- ldr r5, _080DC990 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080DC990 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077EE4
@@ -37755,12 +37755,12 @@ _080DC934:
str r0, [r6, 0x1C]
ldr r1, _080DC99C @ =move_anim_8072740
adds r0, r6, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080DC990: .4byte gBattleAnimEnemyMonIndex
+_080DC990: .4byte gBattleAnimBankTarget
_080DC994: .4byte gBattleAnimArgs
_080DC998: .4byte sub_8078B34
_080DC99C: .4byte move_anim_8072740
@@ -37796,7 +37796,7 @@ _080DC9BC:
ldrsh r0, [r1, r2]
cmp r0, 0
bne _080DCA04
- ldr r4, _080DCA00 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DCA00 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -37812,9 +37812,9 @@ _080DC9BC:
b _080DCA16
.align 2, 0
_080DC9FC: .4byte gBattleAnimArgs
-_080DCA00: .4byte gBattleAnimEnemyMonIndex
+_080DCA00: .4byte gBattleAnimBankTarget
_080DCA04:
- ldr r0, _080DCA2C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DCA2C @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x32
@@ -37834,7 +37834,7 @@ _080DCA16:
pop {r0}
bx r0
.align 2, 0
-_080DCA2C: .4byte gBattleAnimEnemyMonIndex
+_080DCA2C: .4byte gBattleAnimBankTarget
_080DCA30: .4byte gBattleAnimArgs
_080DCA34: .4byte sub_80DCA38
thumb_func_end sub_80DC9A0
@@ -37874,7 +37874,7 @@ _080DCA6A:
sub_80DCA70: @ 80DCA70
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080DCAA0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DCAA0 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r2, r4, 0
adds r2, 0x20
@@ -37882,7 +37882,7 @@ sub_80DCA70: @ 80DCA70
adds r3, 0x22
movs r1, 0
bl sub_807A3FC
- ldr r0, _080DCAA4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DCAA4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -37895,8 +37895,8 @@ sub_80DCA70: @ 80DCA70
strh r1, [r4, 0x20]
b _080DCAB8
.align 2, 0
-_080DCAA0: .4byte gBattleAnimEnemyMonIndex
-_080DCAA4: .4byte gBattleAnimPlayerMonIndex
+_080DCAA0: .4byte gBattleAnimBankTarget
+_080DCAA4: .4byte gBattleAnimBankAttacker
_080DCAA8: .4byte gBattleAnimArgs
_080DCAAC:
ldr r1, _080DCAE0 @ =gBattleAnimArgs
@@ -37910,7 +37910,7 @@ _080DCAB8:
ldrh r1, [r4, 0x22]
adds r0, r1
strh r0, [r4, 0x22]
- ldr r0, _080DCAE4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DCAE4 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -37927,7 +37927,7 @@ _080DCAD4:
bx r0
.align 2, 0
_080DCAE0: .4byte gBattleAnimArgs
-_080DCAE4: .4byte gBattleAnimEnemyMonIndex
+_080DCAE4: .4byte gBattleAnimBankTarget
_080DCAE8: .4byte sub_80DCAEC
thumb_func_end sub_80DCA70
@@ -38075,7 +38075,7 @@ sub_80DCBCC: @ 80DCBCC
.align 2, 0
_080DCBE8: .4byte gBattleAnimArgs
_080DCBEC:
- ldr r0, _080DCCE8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DCCE8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -38096,11 +38096,11 @@ _080DCC0E:
lsls r0, 24
cmp r0, 0
bne _080DCC5E
- ldr r0, _080DCCE8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DCCE8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
adds r4, r0, 0
- ldr r5, _080DCCF0 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080DCCF0 @ =gBattleAnimBankTarget
ldrb r0, [r5]
bl GetBankSide
lsls r4, 24
@@ -38132,7 +38132,7 @@ _080DCC5E:
adds r0, r7, 0
movs r1, 0x1
bl sub_80787B0
- ldr r5, _080DCCF0 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080DCCF0 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -38186,15 +38186,15 @@ _080DCC5E:
str r0, [r7, 0x1C]
ldr r1, _080DCCF8 @ =move_anim_8072740
adds r0, r7, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
-_080DCCE8: .4byte gBattleAnimPlayerMonIndex
+_080DCCE8: .4byte gBattleAnimBankAttacker
_080DCCEC: .4byte gBattleAnimArgs
-_080DCCF0: .4byte gBattleAnimEnemyMonIndex
+_080DCCF0: .4byte gBattleAnimBankTarget
_080DCCF4: .4byte sub_8078B34
_080DCCF8: .4byte move_anim_8072740
thumb_func_end sub_80DCBCC
@@ -38205,7 +38205,7 @@ sub_80DCCFC: @ 80DCCFC
adds r6, r0, 0
movs r1, 0x1
bl sub_80787B0
- ldr r0, _080DCD68 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DCD68 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -38219,7 +38219,7 @@ _080DCD1C:
ldr r4, _080DCD6C @ =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
- ldr r5, _080DCD70 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080DCD70 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -38252,9 +38252,9 @@ _080DCD1C:
pop {r0}
bx r0
.align 2, 0
-_080DCD68: .4byte gBattleAnimPlayerMonIndex
+_080DCD68: .4byte gBattleAnimBankAttacker
_080DCD6C: .4byte gBattleAnimArgs
-_080DCD70: .4byte gBattleAnimEnemyMonIndex
+_080DCD70: .4byte gBattleAnimBankTarget
_080DCD74: .4byte sub_80DCD78
thumb_func_end sub_80DCCFC
@@ -38370,13 +38370,13 @@ sub_80DCE40: @ 80DCE40
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080DCE5C
- ldr r4, _080DCE58 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DCE58 @ =gBattleAnimBankAttacker
b _080DCE5E
.align 2, 0
_080DCE54: .4byte gBattleAnimArgs
-_080DCE58: .4byte gBattleAnimPlayerMonIndex
+_080DCE58: .4byte gBattleAnimBankAttacker
_080DCE5C:
- ldr r4, _080DCE90 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DCE90 @ =gBattleAnimBankTarget
_080DCE5E:
ldrb r0, [r4]
movs r1, 0x2
@@ -38393,14 +38393,14 @@ _080DCE5E:
strh r0, [r5, 0x22]
ldr r1, _080DCE94 @ =move_anim_8074EE0
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080DCE98 @ =sub_80785E4
str r0, [r5, 0x1C]
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080DCE90: .4byte gBattleAnimEnemyMonIndex
+_080DCE90: .4byte gBattleAnimBankTarget
_080DCE94: .4byte move_anim_8074EE0
_080DCE98: .4byte sub_80785E4
thumb_func_end sub_80DCE40
@@ -38414,7 +38414,7 @@ sub_80DCE9C: @ 80DCE9C
ldrsh r0, [r6, r1]
cmp r0, 0
beq _080DCEBC
- ldr r0, _080DCF0C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DCF0C @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r2, r5, 0
adds r2, 0x20
@@ -38448,7 +38448,7 @@ _080DCEBC:
strh r0, [r5, 0x38]
ldr r1, _080DCF14 @ =sub_80DCF1C
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r1, _080DCF18 @ =sub_8078278
str r1, [r5, 0x1C]
adds r0, r5, 0
@@ -38458,7 +38458,7 @@ _080DCEBC:
bx r0
.align 2, 0
_080DCF08: .4byte gBattleAnimArgs
-_080DCF0C: .4byte gBattleAnimEnemyMonIndex
+_080DCF0C: .4byte gBattleAnimBankTarget
_080DCF10: .4byte 0x0000ffba
_080DCF14: .4byte sub_80DCF1C
_080DCF18: .4byte sub_8078278
@@ -38483,7 +38483,7 @@ sub_80DCF1C: @ 80DCF1C
strh r0, [r4, 0x36]
ldr r1, _080DCF58 @ =move_anim_8074EE0
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r1, _080DCF5C @ =sub_8078278
str r1, [r4, 0x1C]
adds r0, r4, 0
@@ -38506,7 +38506,7 @@ sub_80DCF60: @ 80DCF60
bl StartSpriteAnim
adds r0, r5, 0
bl AnimateSprite
- ldr r0, _080DCF8C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DCF8C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -38518,7 +38518,7 @@ sub_80DCF60: @ 80DCF60
b _080DCF96
.align 2, 0
_080DCF88: .4byte gBattleAnimArgs
-_080DCF8C: .4byte gBattleAnimPlayerMonIndex
+_080DCF8C: .4byte gBattleAnimBankAttacker
_080DCF90:
ldrh r0, [r4]
ldrh r1, [r5, 0x20]
@@ -38550,7 +38550,7 @@ _080DCF96:
str r0, [r5, 0x1C]
ldr r1, _080DCFE0 @ =move_anim_8074EE0
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
@@ -38726,7 +38726,7 @@ _080DD120:
ldrsh r0, [r0, r1]
cmp r0, 0
beq _080DD13A
- ldr r0, _080DD184 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DD184 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -38759,7 +38759,7 @@ _080DD174: .4byte gBattleAnimBackgroundTilemap_SandstormBrew
_080DD178: .4byte gBattleAnimBackgroundImage_SandstormBrew
_080DD17C: .4byte gBattleAnimSpritePalette_261
_080DD180: .4byte gBattleAnimArgs
-_080DD184: .4byte gBattleAnimPlayerMonIndex
+_080DD184: .4byte gBattleAnimBankAttacker
_080DD188: .4byte gTasks
_080DD18C: .4byte sub_80DD190
thumb_func_end do_boulder_dust
@@ -39044,7 +39044,7 @@ sub_80DD3AC: @ 80DD3AC
ldrsh r0, [r4, r2]
cmp r0, 0
beq _080DD3F8
- ldr r0, _080DD3F4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DD3F4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -39067,7 +39067,7 @@ sub_80DD3AC: @ 80DD3AC
b _080DD3FC
.align 2, 0
_080DD3F0: .4byte gBattleAnimArgs
-_080DD3F4: .4byte gBattleAnimPlayerMonIndex
+_080DD3F4: .4byte gBattleAnimBankAttacker
_080DD3F8:
ldr r0, _080DD41C @ =0x0000ffc0
strh r0, [r5, 0x20]
@@ -39169,7 +39169,7 @@ sub_80DD490: @ 80DD490
str r0, [r4, 0x1C]
ldr r1, _080DD4D0 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
@@ -39193,7 +39193,7 @@ sub_80DD4D4: @ 80DD4D4
lsls r1, 3
ldr r0, _080DD554 @ =gTasks
adds r6, r1, r0
- ldr r5, _080DD558 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080DD558 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -39209,7 +39209,7 @@ sub_80DD4D4: @ 80DD4D4
lsls r1, 13
adds r0, r1
lsrs r7, r0, 16
- ldr r4, _080DD55C @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DD55C @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -39243,8 +39243,8 @@ _080DD544:
b _080DD566
.align 2, 0
_080DD554: .4byte gTasks
-_080DD558: .4byte gBattleAnimPlayerMonIndex
-_080DD55C: .4byte gBattleAnimEnemyMonIndex
+_080DD558: .4byte gBattleAnimBankAttacker
+_080DD55C: .4byte gBattleAnimBankTarget
_080DD560:
lsls r1, r5, 3
movs r0, 0x30
@@ -39308,7 +39308,7 @@ _080DD57E:
strh r0, [r6, 0x24]
strh r5, [r6, 0xA]
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x26]
@@ -39787,7 +39787,7 @@ _080DD972:
sub_80DD978: @ 80DD978
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080DD9A0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DD9A0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -39804,14 +39804,14 @@ _080DD994:
pop {r0}
bx r0
.align 2, 0
-_080DD9A0: .4byte gBattleAnimPlayerMonIndex
+_080DD9A0: .4byte gBattleAnimBankAttacker
thumb_func_end sub_80DD978
thumb_func_start sub_80DD9A4
sub_80DD9A4: @ 80DD9A4
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, _080DD9F0 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080DD9F0 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0
bl sub_8077ABC
@@ -39844,7 +39844,7 @@ sub_80DD9A4: @ 80DD9A4
pop {r0}
bx r0
.align 2, 0
-_080DD9F0: .4byte gBattleAnimEnemyMonIndex
+_080DD9F0: .4byte gBattleAnimBankTarget
_080DD9F4: .4byte gBattleAnimArgs
_080DD9F8: .4byte sub_80DD9FC
thumb_func_end sub_80DD9A4
@@ -40049,7 +40049,7 @@ sub_80DDB6C: @ 80DDB6C
strh r0, [r4, 0x2E]
ldrh r0, [r4, 0x20]
strh r0, [r4, 0x30]
- ldr r5, _080DDBCC @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080DDBCC @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -40083,7 +40083,7 @@ sub_80DDB6C: @ 80DDB6C
bx r0
.align 2, 0
_080DDBC8: .4byte gBattleAnimArgs
-_080DDBCC: .4byte gBattleAnimEnemyMonIndex
+_080DDBCC: .4byte gBattleAnimBankTarget
_080DDBD0: .4byte sub_80DDBD8
_080DDBD4: .4byte REG_BLDCNT
thumb_func_end sub_80DDB6C
@@ -40389,7 +40389,7 @@ sub_80DDDF0: @ 80DDDF0
adds r0, r2, 0
strh r0, [r1]
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
@@ -40506,7 +40506,7 @@ sub_80DDED0: @ 80DDED0
_080DDEF4: .4byte gTasks
_080DDEF8:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r1, r0, 24
ldrh r0, [r4, 0x8]
@@ -40551,7 +40551,7 @@ sub_80DDF40: @ 80DDF40
adds r4, r0, 0
ldrh r5, [r4, 0x20]
ldrh r6, [r4, 0x22]
- ldr r0, _080DDFDC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DDFDC @ =gBattleAnimBankAttacker
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
@@ -40618,7 +40618,7 @@ sub_80DDF40: @ 80DDF40
pop {r0}
bx r0
.align 2, 0
-_080DDFDC: .4byte gBattleAnimPlayerMonIndex
+_080DDFDC: .4byte gBattleAnimBankAttacker
_080DDFE0: .4byte gBattleAnimArgs
_080DDFE4: .4byte sub_80DDFE8
thumb_func_end sub_80DDF40
@@ -40671,7 +40671,7 @@ _080DE032:
lsls r0, 16
cmp r0, 0
bgt _080DE0F6
- ldr r4, _080DE098 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DE098 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -40712,7 +40712,7 @@ _080DE032:
strh r0, [r5, 0x3C]
b _080DE0E2
.align 2, 0
-_080DE098: .4byte gBattleAnimEnemyMonIndex
+_080DE098: .4byte gBattleAnimBankTarget
_080DE09C:
ldrh r0, [r5, 0x3A]
ldrh r1, [r5, 0x36]
@@ -40734,7 +40734,7 @@ _080DE09C:
lsls r0, 16
cmp r0, 0
bgt _080DE0F6
- ldr r4, _080DE0EC @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DE0EC @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -40753,7 +40753,7 @@ _080DE0E2:
strh r0, [r5, 0x2E]
b _080DE0F6
.align 2, 0
-_080DE0EC: .4byte gBattleAnimEnemyMonIndex
+_080DE0EC: .4byte gBattleAnimBankTarget
_080DE0F0:
adds r0, r5, 0
bl move_anim_8074EE0
@@ -40917,7 +40917,7 @@ _080DE1E0:
adds r0, r4
movs r1, 0x50
strh r1, [r0, 0x2E]
- ldr r0, _080DE250 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DE250 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -40943,7 +40943,7 @@ _080DE1E0:
_080DE244: .4byte REG_BLDCNT
_080DE248: .4byte REG_BLDALPHA
_080DE24C: .4byte gSprites
-_080DE250: .4byte gBattleAnimEnemyMonIndex
+_080DE250: .4byte gBattleAnimBankTarget
_080DE254: .4byte 0x0000ff70
_080DE258:
movs r2, 0x8
@@ -40986,7 +40986,7 @@ _080DE276:
lsls r0, 2
adds r0, r4
ldr r1, _080DE2D0 @ =SpriteCallbackDummy
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
movs r0, 0x8
ldrsh r1, [r5, r0]
lsls r0, r1, 4
@@ -41156,7 +41156,7 @@ sub_80DE3D4: @ 80DE3D4
lsls r0, 3
ldr r1, _080DE40C @ =gTasks
adds r5, r0, r1
- ldr r0, _080DE410 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DE410 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -41174,7 +41174,7 @@ _080DE400:
mov pc, r0
.align 2, 0
_080DE40C: .4byte gTasks
-_080DE410: .4byte gBattleAnimEnemyMonIndex
+_080DE410: .4byte gBattleAnimBankTarget
_080DE414: .4byte _080DE418
.align 2, 0
_080DE418:
@@ -41250,7 +41250,7 @@ _080DE464:
movs r0, 0x10
strh r0, [r5, 0xE]
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x22]
@@ -41516,7 +41516,7 @@ sub_80DE6B0: @ 80DE6B0
lsls r0, 3
ldr r1, _080DE6E0 @ =gTasks
adds r4, r0, r1
- ldr r0, _080DE6E4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080DE6E4 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -41532,7 +41532,7 @@ sub_80DE6B0: @ 80DE6B0
b _080DE7AA
.align 2, 0
_080DE6E0: .4byte gTasks
-_080DE6E4: .4byte gBattleAnimEnemyMonIndex
+_080DE6E4: .4byte gBattleAnimBankTarget
_080DE6E8:
cmp r0, 0x2
beq _080DE740
@@ -41542,7 +41542,7 @@ _080DE6EE:
movs r0, 0x3
strb r0, [r1, 0x15]
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x24]
@@ -41648,7 +41648,7 @@ sub_80DE7B8: @ 80DE7B8
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080DE800
- ldr r4, _080DE7F8 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DE7F8 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -41663,14 +41663,14 @@ sub_80DE7B8: @ 80DE7B8
lsls r2, 13
adds r0, r2
lsrs r5, r0, 16
- ldr r4, _080DE7FC @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DE7FC @ =gBattleAnimBankTarget
b _080DE824
.align 2, 0
_080DE7F4: .4byte gBattleAnimArgs
-_080DE7F8: .4byte gBattleAnimPlayerMonIndex
-_080DE7FC: .4byte gBattleAnimEnemyMonIndex
+_080DE7F8: .4byte gBattleAnimBankAttacker
+_080DE7FC: .4byte gBattleAnimBankTarget
_080DE800:
- ldr r4, _080DE8C8 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DE8C8 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -41685,7 +41685,7 @@ _080DE800:
lsls r2, 13
adds r0, r2
lsrs r5, r0, 16
- ldr r4, _080DE8CC @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DE8CC @ =gBattleAnimBankAttacker
_080DE824:
ldrb r0, [r4]
movs r1, 0
@@ -41765,8 +41765,8 @@ _080DE824:
pop {r0}
bx r0
.align 2, 0
-_080DE8C8: .4byte gBattleAnimEnemyMonIndex
-_080DE8CC: .4byte gBattleAnimPlayerMonIndex
+_080DE8C8: .4byte gBattleAnimBankTarget
+_080DE8CC: .4byte gBattleAnimBankAttacker
_080DE8D0: .4byte gBattleAnimArgs
_080DE8D4: .4byte sub_80DE8D8
thumb_func_end sub_80DE7B8
@@ -41844,7 +41844,7 @@ sub_80DE918: @ 80DE918
ldr r2, _080DEA70 @ =gBattleAnimArgs
ldrh r0, [r2]
strh r0, [r1, 0x1C]
- ldr r4, _080DEA74 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DEA74 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -41867,7 +41867,7 @@ _080DE988:
_080DE98A:
lsls r1, r4, 16
asrs r3, r1, 16
- ldr r0, _080DEA74 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DEA74 @ =gBattleAnimBankAttacker
ldrb r2, [r0]
str r1, [sp, 0x10]
cmp r3, r2
@@ -41879,7 +41879,7 @@ _080DE98A:
lsls r0, r4, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080DEA56
@@ -41975,7 +41975,7 @@ _080DEA56:
_080DEA68: .4byte gTasks
_080DEA6C: .4byte REG_BLDCNT
_080DEA70: .4byte gBattleAnimArgs
-_080DEA74: .4byte gBattleAnimPlayerMonIndex
+_080DEA74: .4byte gBattleAnimBankAttacker
_080DEA78: .4byte gSpriteTemplate_83DAF08
_080DEA7C: .4byte gSprites
_080DEA80: .4byte gSprites + 0x1C
@@ -42290,7 +42290,7 @@ sub_80DECB0: @ 80DECB0
adds r1, 0x4
movs r0, 0x10
strh r0, [r1]
- ldr r0, _080DED08 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DED08 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -42308,7 +42308,7 @@ _080DECF8: .4byte gUnknown_030042C4
_080DECFC: .4byte gUnknown_03004240
_080DED00: .4byte REG_WININ
_080DED04: .4byte 0x00003f3f
-_080DED08: .4byte gBattleAnimPlayerMonIndex
+_080DED08: .4byte gBattleAnimBankAttacker
_080DED0C:
movs r6, 0xC8
_080DED0E:
@@ -42571,7 +42571,7 @@ sub_80DEF3C: @ 80DEF3C
adds r4, r0, 0
movs r1, 0x1
bl sub_80787B0
- ldr r0, _080DEF68 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DEF68 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -42588,7 +42588,7 @@ sub_80DEF3C: @ 80DEF3C
strb r1, [r4, 0x3]
b _080DEF74
.align 2, 0
-_080DEF68: .4byte gBattleAnimPlayerMonIndex
+_080DEF68: .4byte gBattleAnimBankAttacker
_080DEF6C: .4byte 0x0000fffe
_080DEF70:
ldr r2, _080DEF90 @ =0x0000ffe8
@@ -42662,7 +42662,7 @@ _080DEFAA:
str r0, [r3, 0x1C]
ldr r1, _080DF008 @ =sub_80DF018
adds r0, r3, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
b _080DF010
.align 2, 0
_080DEFFC: .4byte 0x000003ff
@@ -42775,7 +42775,7 @@ sub_80DF0B8: @ 80DF0B8
movs r1, 0xC
bl Sin
strh r0, [r4, 0x24]
- ldr r0, _080DF120 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DF120 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -42819,7 +42819,7 @@ _080DF0DC:
strh r0, [r1]
b _080DF17E
.align 2, 0
-_080DF120: .4byte gBattleAnimPlayerMonIndex
+_080DF120: .4byte gBattleAnimBankAttacker
_080DF124: .4byte 0x0000050b
_080DF128: .4byte REG_BLDCNT
_080DF12C:
@@ -42908,7 +42908,7 @@ sub_80DF1A4: @ 80DF1A4
mov r8, r0
mov r2, r8
strh r2, [r4, 0xA]
- ldr r5, _080DF240 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080DF240 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -42965,7 +42965,7 @@ sub_80DF1A4: @ 80DF1A4
bx r0
.align 2, 0
_080DF23C: .4byte gTasks
-_080DF240: .4byte gBattleAnimPlayerMonIndex
+_080DF240: .4byte gBattleAnimBankAttacker
_080DF244: .4byte REG_BLDCNT
_080DF248: .4byte sub_80DF24C
thumb_func_end sub_80DF1A4
@@ -43022,7 +43022,7 @@ _080DF292:
lsls r0, 2
adds r5, r0, r1
strh r7, [r5, 0x2E]
- ldr r0, _080DF2FC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DF2FC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
movs r1, 0
@@ -43056,7 +43056,7 @@ _080DF2E6:
.align 2, 0
_080DF2F4: .4byte gSpriteTemplate_83DAF80
_080DF2F8: .4byte gSprites
-_080DF2FC: .4byte gBattleAnimPlayerMonIndex
+_080DF2FC: .4byte gBattleAnimBankAttacker
_080DF300:
ldrh r0, [r4, 0xA]
adds r0, 0x1
@@ -43289,7 +43289,7 @@ sub_80DF49C: @ 80DF49C
orrs r1, r2
strb r1, [r3]
ldr r2, _080DF4E0 @ =gObjectBankIDs
- ldr r1, _080DF4E4 @ =gBattleAnimPlayerMonIndex
+ ldr r1, _080DF4E4 @ =gBattleAnimBankAttacker
ldrb r1, [r1]
adds r1, r2
ldrb r1, [r1]
@@ -43318,7 +43318,7 @@ sub_80DF49C: @ 80DF49C
bx lr
.align 2, 0
_080DF4E0: .4byte gObjectBankIDs
-_080DF4E4: .4byte gBattleAnimPlayerMonIndex
+_080DF4E4: .4byte gBattleAnimBankAttacker
_080DF4E8: .4byte gBattleAnimArgs
_080DF4EC: .4byte sub_80DF4F4
_080DF4F0: .4byte gSprites
@@ -43415,7 +43415,7 @@ _080DF59C: .4byte move_anim_8074EE0
sub_80DF5A0: @ 80DF5A0
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, _080DF5E8 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DF5E8 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -43447,7 +43447,7 @@ sub_80DF5A0: @ 80DF5A0
adds r1, r2, 0
b _080DF5FA
.align 2, 0
-_080DF5E8: .4byte gBattleAnimPlayerMonIndex
+_080DF5E8: .4byte gBattleAnimBankAttacker
_080DF5EC: .4byte gBattleAnimArgs
_080DF5F0:
ldr r1, _080DF630 @ =gBattleAnimArgs
@@ -43476,7 +43476,7 @@ _080DF5FA:
strb r0, [r2]
ldr r1, _080DF634 @ =move_anim_8074EE0
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080DF638 @ =sub_8078504
str r0, [r5, 0x1C]
pop {r4,r5}
@@ -43493,7 +43493,7 @@ sub_80DF63C: @ 80DF63C
push {r4,r5,lr}
adds r5, r0, 0
bl sub_8078650
- ldr r4, _080DF694 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DF694 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -43506,7 +43506,7 @@ sub_80DF63C: @ 80DF63C
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0x36]
- ldr r0, _080DF698 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DF698 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -43530,8 +43530,8 @@ sub_80DF63C: @ 80DF63C
strh r0, [r5, 0x36]
b _080DF6CA
.align 2, 0
-_080DF694: .4byte gBattleAnimEnemyMonIndex
-_080DF698: .4byte gBattleAnimPlayerMonIndex
+_080DF694: .4byte gBattleAnimBankTarget
+_080DF698: .4byte gBattleAnimBankAttacker
_080DF69C: .4byte gBattleAnimArgs
_080DF6A0:
ldr r1, _080DF6E4 @ =gBattleAnimArgs
@@ -43562,7 +43562,7 @@ _080DF6CA:
str r0, [r5, 0x1C]
ldr r1, _080DF6EC @ =move_anim_8074EE0
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
@@ -43581,13 +43581,13 @@ sub_80DF6F0: @ 80DF6F0
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080DF70C
- ldr r4, _080DF708 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DF708 @ =gBattleAnimBankAttacker
b _080DF70E
.align 2, 0
_080DF704: .4byte gBattleAnimArgs
-_080DF708: .4byte gBattleAnimPlayerMonIndex
+_080DF708: .4byte gBattleAnimBankAttacker
_080DF70C:
- ldr r4, _080DF750 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080DF750 @ =gBattleAnimBankTarget
_080DF70E:
ldrb r0, [r4]
movs r1, 0
@@ -43614,12 +43614,12 @@ _080DF70E:
str r0, [r5, 0x1C]
ldr r1, _080DF75C @ =move_anim_8074EE0
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
.align 2, 0
-_080DF750: .4byte gBattleAnimEnemyMonIndex
+_080DF750: .4byte gBattleAnimBankTarget
_080DF754: .4byte gBattleAnimArgs
_080DF758: .4byte sub_8078600
_080DF75C: .4byte move_anim_8074EE0
@@ -43629,7 +43629,7 @@ _080DF75C: .4byte move_anim_8074EE0
sub_80DF760: @ 80DF760
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080DF788 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DF788 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -43645,14 +43645,14 @@ _080DF77A:
pop {r0}
bx r0
.align 2, 0
-_080DF788: .4byte gBattleAnimPlayerMonIndex
+_080DF788: .4byte gBattleAnimBankAttacker
thumb_func_end sub_80DF760
thumb_func_start sub_80DF78C
sub_80DF78C: @ 80DF78C
push {r4-r7,lr}
adds r6, r0, 0
- ldr r4, _080DF7E0 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080DF7E0 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -43688,7 +43688,7 @@ sub_80DF78C: @ 80DF78C
lsrs r0, r7, 17
b _080DF7EE
.align 2, 0
-_080DF7E0: .4byte gBattleAnimPlayerMonIndex
+_080DF7E0: .4byte gBattleAnimBankAttacker
_080DF7E4: .4byte gBattleAnimArgs
_080DF7E8: .4byte gBankAttacker
_080DF7EC:
@@ -43864,7 +43864,7 @@ sub_80DF924: @ 80DF924
lsls r1, 3
ldr r0, _080DF950 @ =gTasks
adds r4, r1, r0
- ldr r0, _080DF954 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DF954 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -43877,7 +43877,7 @@ sub_80DF924: @ 80DF924
b _080DF966
.align 2, 0
_080DF950: .4byte gTasks
-_080DF954: .4byte gBattleAnimPlayerMonIndex
+_080DF954: .4byte gBattleAnimBankAttacker
_080DF958: .4byte REG_BG1HOFS
_080DF95C: .4byte gUnknown_030042C0
_080DF960:
@@ -43895,7 +43895,7 @@ _080DF966:
strb r0, [r1, 0x8]
mov r0, sp
strb r5, [r0, 0x9]
- ldr r0, _080DF9E8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DF9E8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8077FC0
lsls r0, 24
@@ -43948,7 +43948,7 @@ _080DF9C4:
_080DF9DC: .4byte REG_BG2HOFS
_080DF9E0: .4byte gUnknown_03004288
_080DF9E4: .4byte 0xa2600001
-_080DF9E8: .4byte gBattleAnimPlayerMonIndex
+_080DF9E8: .4byte gBattleAnimBankAttacker
_080DF9EC: .4byte gUnknown_03004DE0
_080DF9F0: .4byte sub_80DF9F4
thumb_func_end sub_80DF924
@@ -44128,7 +44128,7 @@ sub_80DFB28: @ 80DFB28
movs r1, 0x5
bl __divsi3
adds r6, r0, 0
- ldr r1, _080DFBCC @ =gBattleAnimPlayerMonIndex
+ ldr r1, _080DFBCC @ =gBattleAnimBankAttacker
mov r8, r1
ldrb r0, [r1]
movs r1, 0x2
@@ -44194,7 +44194,7 @@ _080DFBB0:
bx r0
.align 2, 0
_080DFBC8: .4byte gBattleAnimArgs
-_080DFBCC: .4byte gBattleAnimPlayerMonIndex
+_080DFBCC: .4byte gBattleAnimBankAttacker
_080DFBD0: .4byte sub_80DFBD8
_080DFBD4: .4byte gUnknown_03000730
thumb_func_end sub_80DFB28
@@ -44251,7 +44251,7 @@ sub_80DFC24: @ 80DFC24
ldr r0, _080DFC5C @ =gBattleAnimArgs
ldrh r0, [r0]
strh r0, [r1, 0x8]
- ldr r0, _080DFC60 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DFC60 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
movs r2, 0x10
strh r2, [r1, 0xA]
@@ -44268,7 +44268,7 @@ sub_80DFC24: @ 80DFC24
.align 2, 0
_080DFC58: .4byte gTasks
_080DFC5C: .4byte gBattleAnimArgs
-_080DFC60: .4byte gBattleAnimPlayerMonIndex
+_080DFC60: .4byte gBattleAnimBankAttacker
_080DFC64: .4byte REG_BLDALPHA
_080DFC68: .4byte REG_BLDCNT
_080DFC6C: .4byte 0x00003f42
@@ -44331,7 +44331,7 @@ sub_80DFC9C: @ 80DFC9C
bne _080DFD1E
ldr r2, _080DFD0C @ =gSprites
ldr r1, _080DFD10 @ =gObjectBankIDs
- ldr r0, _080DFD14 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DFD14 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -44352,7 +44352,7 @@ _080DFD04: .4byte gTasks
_080DFD08: .4byte REG_BLDALPHA
_080DFD0C: .4byte gSprites
_080DFD10: .4byte gObjectBankIDs
-_080DFD14: .4byte gBattleAnimPlayerMonIndex
+_080DFD14: .4byte gBattleAnimBankAttacker
_080DFD18:
ldrh r0, [r4, 0xC]
adds r0, 0x1
@@ -44454,7 +44454,7 @@ sub_80DFDC0: @ 80DFDC0
lsls r2, 5
adds r0, r2, 0
strh r0, [r1]
- ldr r0, _080DFDEC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DFDEC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -44466,7 +44466,7 @@ sub_80DFDC0: @ 80DFDC0
b _080DFDFC
.align 2, 0
_080DFDE8: .4byte REG_BLDALPHA
-_080DFDEC: .4byte gBattleAnimPlayerMonIndex
+_080DFDEC: .4byte gBattleAnimBankAttacker
_080DFDF0: .4byte REG_BLDCNT
_080DFDF4: .4byte 0x00003f42
_080DFDF8:
@@ -44489,14 +44489,14 @@ _080DFE10: .4byte 0x00003f44
sub_80DFE14: @ 80DFE14
push {r4-r6,lr}
adds r4, r0, 0
- ldr r6, _080DFE80 @ =gBattleAnimEnemyMonIndex
+ ldr r6, _080DFE80 @ =gBattleAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
bl sub_8077ABC
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x30]
- ldr r5, _080DFE84 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080DFE84 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -44535,8 +44535,8 @@ sub_80DFE14: @ 80DFE14
pop {r0}
bx r0
.align 2, 0
-_080DFE80: .4byte gBattleAnimEnemyMonIndex
-_080DFE84: .4byte gBattleAnimPlayerMonIndex
+_080DFE80: .4byte gBattleAnimBankTarget
+_080DFE84: .4byte gBattleAnimBankAttacker
_080DFE88: .4byte 0x0000ffd8
_080DFE8C: .4byte sub_80DFE90
thumb_func_end sub_80DFE14
@@ -44724,13 +44724,13 @@ sub_80DFFD0: @ 80DFFD0
adds r3, r0, 0
cmp r1, 0
bne _080DFFEC
- ldr r0, _080DFFE8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080DFFE8 @ =gBattleAnimBankAttacker
b _080DFFEE
.align 2, 0
_080DFFE4: .4byte gBattleAnimArgs
-_080DFFE8: .4byte gBattleAnimPlayerMonIndex
+_080DFFE8: .4byte gBattleAnimBankAttacker
_080DFFEC:
- ldr r0, _080E001C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E001C @ =gBattleAnimBankTarget
_080DFFEE:
ldrb r5, [r0]
movs r6, 0x14
@@ -44755,7 +44755,7 @@ _080DFFEE:
beq _080E0032
b _080E00A0
.align 2, 0
-_080E001C: .4byte gBattleAnimEnemyMonIndex
+_080E001C: .4byte gBattleAnimBankTarget
_080E0020: .4byte 0x000003ff
_080E0024: .4byte 0xfffffc00
_080E0028:
@@ -44867,7 +44867,7 @@ sub_80E00EC: @ 80E00EC
lsls r1, 3
ldr r0, _080E0150 @ =gTasks
adds r5, r1, r0
- ldr r4, _080E0154 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080E0154 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x1
bl sub_8077ABC
@@ -44906,13 +44906,13 @@ sub_80E00EC: @ 80E00EC
b _080E015E
.align 2, 0
_080E0150: .4byte gTasks
-_080E0154: .4byte gBattleAnimPlayerMonIndex
+_080E0154: .4byte gBattleAnimBankAttacker
_080E0158: .4byte 0x0000fff4
_080E015C:
ldr r0, _080E01A8 @ =0x0000ffc0
_080E015E:
strh r0, [r5, 0x18]
- ldr r0, _080E01AC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E01AC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -44946,7 +44946,7 @@ _080E015E:
b _080E01EE
.align 2, 0
_080E01A8: .4byte 0x0000ffc0
-_080E01AC: .4byte gBattleAnimPlayerMonIndex
+_080E01AC: .4byte gBattleAnimBankAttacker
_080E01B0: .4byte gUnknown_030041B4
_080E01B4: .4byte REG_BLDCNT
_080E01B8: .4byte 0x00003f42
@@ -45260,7 +45260,7 @@ _080E0430: .4byte gUnknown_03004240
_080E0434: .4byte REG_WININ
_080E0438: .4byte 0x00003f3f
_080E043C:
- ldr r0, _080E045C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E045C @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -45275,7 +45275,7 @@ _080E043C:
ldr r1, _080E0468 @ =gUnknown_03004288
b _080E0476
.align 2, 0
-_080E045C: .4byte gBattleAnimEnemyMonIndex
+_080E045C: .4byte gBattleAnimBankTarget
_080E0460: .4byte REG_BLDCNT
_080E0464: .4byte 0x00003f42
_080E0468: .4byte gUnknown_03004288
@@ -45328,7 +45328,7 @@ _080E04C4:
.align 2, 0
_080E04CC: .4byte gUnknown_03004280
_080E04D0:
- ldr r4, _080E051C @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080E051C @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x1
bl sub_8077ABC
@@ -45363,7 +45363,7 @@ _080E04D0:
ldr r0, _080E0520 @ =0x0000fff4
b _080E0526
.align 2, 0
-_080E051C: .4byte gBattleAnimEnemyMonIndex
+_080E051C: .4byte gBattleAnimBankTarget
_080E0520: .4byte 0x0000fff4
_080E0524:
ldr r0, _080E0538 @ =0x0000ffc0
@@ -45865,7 +45865,7 @@ sub_80E08CC: @ 80E08CC
_080E08E2:
lsls r0, r4, 24
lsrs r0, 24
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
cmp r0, 0xFF
@@ -45901,7 +45901,7 @@ sub_80E0918: @ 80E0918
lsls r0, 24
lsrs r0, 24
mov r10, r0
- ldr r6, _080E09B8 @ =gBattleAnimPlayerMonIndex
+ ldr r6, _080E09B8 @ =gBattleAnimBankAttacker
ldrb r0, [r6]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -45935,7 +45935,7 @@ sub_80E0918: @ 80E0918
ldrb r0, [r6]
movs r5, 0x2
eors r0, r5
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080E09A2
@@ -45969,7 +45969,7 @@ _080E09A2:
pop {r0}
bx r0
.align 2, 0
-_080E09B8: .4byte gBattleAnimPlayerMonIndex
+_080E09B8: .4byte gBattleAnimBankAttacker
_080E09BC: .4byte gSprites
_080E09C0: .4byte gObjectBankIDs
thumb_func_end sub_80E0918
@@ -45979,7 +45979,7 @@ sub_80E09C4: @ 80E09C4
push {r4-r6,lr}
lsls r0, 24
lsrs r6, r0, 24
- ldr r4, _080E0A0C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080E0A0C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -45994,7 +45994,7 @@ sub_80E09C4: @ 80E09C4
ldrb r1, [r4]
movs r0, 0x2
eors r0, r1
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080E0A00
@@ -46009,7 +46009,7 @@ _080E0A00:
pop {r0}
bx r0
.align 2, 0
-_080E0A0C: .4byte gBattleAnimPlayerMonIndex
+_080E0A0C: .4byte gBattleAnimBankAttacker
thumb_func_end sub_80E09C4
thumb_func_start sub_80E0A10
@@ -46032,7 +46032,7 @@ sub_80E0A10: @ 80E0A10
str r0, [r4, 0x1C]
ldr r1, _080E0A48 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4}
pop {r0}
bx r0
@@ -46112,7 +46112,7 @@ _080E0AC4:
lsls r0, 24
cmp r0, 0
bne _080E0B40
- ldr r4, _080E0B74 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080E0B74 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
bl GetBankIdentity
lsls r0, 24
@@ -46128,7 +46128,7 @@ _080E0AF4:
ldrb r0, [r4]
movs r6, 0x2
eors r0, r6
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -46180,12 +46180,12 @@ _080E0B64: .4byte REG_BLDCNT
_080E0B68: .4byte 0x00003f42
_080E0B6C: .4byte 0x00000c08
_080E0B70: .4byte REG_BG1CNT
-_080E0B74: .4byte gBattleAnimPlayerMonIndex
+_080E0B74: .4byte gBattleAnimBankAttacker
_080E0B78: .4byte gSprites
_080E0B7C: .4byte gObjectBankIDs
_080E0B80: .4byte 0x02019348
_080E0B84:
- ldr r4, _080E0BA4 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080E0BA4 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -46201,7 +46201,7 @@ _080E0B84:
ldr r1, _080E0BAC @ =gEnemyParty
b _080E0BC0
.align 2, 0
-_080E0BA4: .4byte gBattleAnimPlayerMonIndex
+_080E0BA4: .4byte gBattleAnimBankAttacker
_080E0BA8: .4byte gBattlePartyID
_080E0BAC: .4byte gEnemyParty
_080E0BB0:
@@ -46221,11 +46221,11 @@ _080E0BC0:
lsrs r5, r0, 16
_080E0BCC:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _080E0C60 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E0C60 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r1, r4, 0
adds r2, r5, 0
@@ -46286,7 +46286,7 @@ _080E0BCC:
.align 2, 0
_080E0C58: .4byte gBattlePartyID
_080E0C5C: .4byte gPlayerParty
-_080E0C60: .4byte gBattleAnimPlayerMonIndex
+_080E0C60: .4byte gBattleAnimBankAttacker
_080E0C64: .4byte 0x040000d4
_080E0C68: .4byte 0x85000400
_080E0C6C: .4byte gUnknown_08D1D574
@@ -46403,7 +46403,7 @@ _080E0D40:
adds r0, 0x2
strh r5, [r0]
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
ldr r6, _080E0E10 @ =gSprites
@@ -46446,7 +46446,7 @@ _080E0D84:
cmp r0, 0x1
bne _080E0DE2
ldr r2, _080E0E1C @ =gObjectBankIDs
- ldr r0, _080E0E20 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E0E20 @ =gBattleAnimBankAttacker
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
@@ -46489,7 +46489,7 @@ _080E0E10: .4byte gSprites
_080E0E14: .4byte 0x040000d4
_080E0E18: .4byte 0x85000200
_080E0E1C: .4byte gObjectBankIDs
-_080E0E20: .4byte gBattleAnimPlayerMonIndex
+_080E0E20: .4byte gBattleAnimBankAttacker
thumb_func_end sub_80E0CD0
thumb_func_start sub_80E0E24
@@ -46524,7 +46524,7 @@ _080E0E4C:
.4byte _080E0E84
_080E0E6C:
ldrb r0, [r2]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r2, r0, 24
b _080E0E8A
@@ -46552,7 +46552,7 @@ _080E0E90:
lsls r0, 24
lsrs r4, r0, 24
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080E0EB4
@@ -46622,7 +46622,7 @@ _080E0F18: .4byte gBattleAnimArgs
sub_80E0F1C: @ 80E0F1C
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, _080E0F74 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080E0F74 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -46637,7 +46637,7 @@ sub_80E0F1C: @ 80E0F1C
strh r0, [r4, 0x22]
movs r0, 0x14
strh r0, [r4, 0x2E]
- ldr r5, _080E0F78 @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080E0F78 @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -46660,8 +46660,8 @@ sub_80E0F1C: @ 80E0F1C
pop {r0}
bx r0
.align 2, 0
-_080E0F74: .4byte gBattleAnimPlayerMonIndex
-_080E0F78: .4byte gBattleAnimEnemyMonIndex
+_080E0F74: .4byte gBattleAnimBankAttacker
+_080E0F78: .4byte gBattleAnimBankTarget
_080E0F7C: .4byte 0x0000ffd8
_080E0F80: .4byte sub_80E0F84
thumb_func_end sub_80E0F1C
@@ -46687,7 +46687,7 @@ sub_80E0F84: @ 80E0F84
strh r1, [r5, 0x24]
movs r0, 0x14
strh r0, [r5, 0x2E]
- ldr r4, _080E0FE0 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080E0FE0 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -46711,7 +46711,7 @@ _080E0FD8:
pop {r0}
bx r0
.align 2, 0
-_080E0FE0: .4byte gBattleAnimPlayerMonIndex
+_080E0FE0: .4byte gBattleAnimBankAttacker
_080E0FE4: .4byte sub_80E0FE8
thumb_func_end sub_80E0F84
@@ -46737,7 +46737,7 @@ sub_80E1004: @ 80E1004
adds r6, r0, 0
movs r1, 0x1
bl sub_8078764
- ldr r0, _080E1064 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E1064 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -46751,7 +46751,7 @@ _080E1024:
ldr r4, _080E1068 @ =gBattleAnimArgs
ldrh r0, [r4, 0x8]
strh r0, [r6, 0x2E]
- ldr r5, _080E106C @ =gBattleAnimEnemyMonIndex
+ ldr r5, _080E106C @ =gBattleAnimBankTarget
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -46772,14 +46772,14 @@ _080E1024:
str r0, [r6, 0x1C]
ldr r1, _080E1074 @ =move_anim_8072740
adds r0, r6, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4-r6}
pop {r0}
bx r0
.align 2, 0
-_080E1064: .4byte gBattleAnimPlayerMonIndex
+_080E1064: .4byte gBattleAnimBankAttacker
_080E1068: .4byte gBattleAnimArgs
-_080E106C: .4byte gBattleAnimEnemyMonIndex
+_080E106C: .4byte gBattleAnimBankTarget
_080E1070: .4byte sub_8078B34
_080E1074: .4byte move_anim_8072740
thumb_func_end sub_80E1004
@@ -46792,7 +46792,7 @@ sub_80E1078: @ 80E1078
adds r6, r0, 0
movs r1, 0x1
bl sub_80787B0
- ldr r4, _080E10F8 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _080E10F8 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077EE4
@@ -46839,14 +46839,14 @@ _080E10D0:
str r0, [r6, 0x1C]
ldr r1, _080E1104 @ =move_anim_8074EE0
adds r0, r6, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r3}
mov r8, r3
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
-_080E10F8: .4byte gBattleAnimEnemyMonIndex
+_080E10F8: .4byte gBattleAnimBankTarget
_080E10FC: .4byte gBattleAnimArgs
_080E1100: .4byte sub_8078B34
_080E1104: .4byte move_anim_8074EE0
@@ -46872,7 +46872,7 @@ sub_80E1108: @ 80E1108
ldrsh r0, [r6, r1]
cmp r0, 0
bne _080E117C
- ldr r4, _080E1174 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080E1174 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -46905,7 +46905,7 @@ _080E1162:
_080E1168: .4byte 0x000003ff
_080E116C: .4byte 0xfffffc00
_080E1170: .4byte gBattleAnimArgs
-_080E1174: .4byte gBattleAnimPlayerMonIndex
+_080E1174: .4byte gBattleAnimBankAttacker
_080E1178: .4byte sub_80E1198
_080E117C:
ldrh r0, [r6, 0x2]
@@ -47086,11 +47086,11 @@ _080E12B0:
.4byte _080E1414
_080E12C4:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
- ldr r0, _080E12EC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E12EC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -47104,7 +47104,7 @@ _080E12C4:
ldr r0, _080E12F4 @ =gUnknown_030041B4
b _080E1300
.align 2, 0
-_080E12EC: .4byte gBattleAnimPlayerMonIndex
+_080E12EC: .4byte gBattleAnimBankAttacker
_080E12F0: .4byte gUnknown_030042C0
_080E12F4: .4byte gUnknown_030041B4
_080E12F8:
@@ -47115,7 +47115,7 @@ _080E12F8:
_080E1300:
ldrh r0, [r0]
strh r0, [r4, 0x22]
- ldr r0, _080E1344 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E1344 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8077FC0
lsls r0, 24
@@ -47146,7 +47146,7 @@ _080E1322:
.align 2, 0
_080E133C: .4byte gUnknown_03004288
_080E1340: .4byte gUnknown_03004280
-_080E1344: .4byte gBattleAnimPlayerMonIndex
+_080E1344: .4byte gBattleAnimBankAttacker
_080E1348: .4byte gSprites
_080E134C:
ldrb r0, [r4, 0x1E]
@@ -47281,7 +47281,7 @@ sub_80E143C: @ 80E143C
lsls r0, 24
lsrs r5, r0, 24
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, _080E147C @ =gSprites
@@ -47298,7 +47298,7 @@ sub_80E143C: @ 80E143C
movs r4, 0
strh r4, [r1, 0x24]
strh r4, [r1, 0x26]
- ldr r0, _080E1480 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E1480 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -47309,7 +47309,7 @@ sub_80E143C: @ 80E143C
b _080E148A
.align 2, 0
_080E147C: .4byte gSprites
-_080E1480: .4byte gBattleAnimPlayerMonIndex
+_080E1480: .4byte gBattleAnimBankAttacker
_080E1484: .4byte gUnknown_030041B4
_080E1488:
ldr r0, _080E1498 @ =gUnknown_03004280
@@ -47379,7 +47379,7 @@ sub_80E14DC: @ 80E14DC
_080E14FC: .4byte gTasks
_080E1500:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
@@ -47459,11 +47459,11 @@ _080E158C:
.4byte _080E165C
_080E15A0:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1C]
- ldr r0, _080E15C4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E15C4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -47474,14 +47474,14 @@ _080E15A0:
ldr r0, _080E15C8 @ =gUnknown_030042C0
b _080E15CE
.align 2, 0
-_080E15C4: .4byte gBattleAnimPlayerMonIndex
+_080E15C4: .4byte gBattleAnimBankAttacker
_080E15C8: .4byte gUnknown_030042C0
_080E15CC:
ldr r0, _080E15EC @ =gUnknown_03004288
_080E15CE:
ldrh r0, [r0]
strh r0, [r4, 0x20]
- ldr r0, _080E15F0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E15F0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8077FC0
lsls r0, 24
@@ -47494,7 +47494,7 @@ _080E15CE:
b _080E164A
.align 2, 0
_080E15EC: .4byte gUnknown_03004288
-_080E15F0: .4byte gBattleAnimPlayerMonIndex
+_080E15F0: .4byte gBattleAnimBankAttacker
_080E15F4:
ldrb r0, [r4, 0x1E]
movs r1, 0x26
@@ -47668,13 +47668,13 @@ sub_80E1728: @ 80E1728
adds r7, r0, 0
cmp r1, 0
bne _080E1744
- ldr r0, _080E1740 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E1740 @ =gBattleAnimBankAttacker
b _080E1746
.align 2, 0
_080E173C: .4byte gBattleAnimArgs
-_080E1740: .4byte gBattleAnimPlayerMonIndex
+_080E1740: .4byte gBattleAnimBankAttacker
_080E1744:
- ldr r0, _080E17A8 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E17A8 @ =gBattleAnimBankTarget
_080E1746:
ldrb r4, [r0]
movs r6, 0x18
@@ -47723,7 +47723,7 @@ _080E1762:
pop {r0}
bx r0
.align 2, 0
-_080E17A8: .4byte gBattleAnimEnemyMonIndex
+_080E17A8: .4byte gBattleAnimBankTarget
_080E17AC: .4byte sub_80E17B0
thumb_func_end sub_80E1728
@@ -47752,13 +47752,13 @@ sub_80E17CC: @ 80E17CC
ldrsh r0, [r0, r1]
cmp r0, 0
bne _080E17E8
- ldr r0, _080E17E4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E17E4 @ =gBattleAnimBankAttacker
b _080E17EA
.align 2, 0
_080E17E0: .4byte gBattleAnimArgs
-_080E17E4: .4byte gBattleAnimPlayerMonIndex
+_080E17E4: .4byte gBattleAnimBankAttacker
_080E17E8:
- ldr r0, _080E1848 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E1848 @ =gBattleAnimBankTarget
_080E17EA:
ldrb r5, [r0]
adds r0, r5, 0
@@ -47796,7 +47796,7 @@ _080E17EA:
strh r0, [r6, 0x4]
ldr r1, _080E185C @ =move_anim_8072740
adds r0, r6, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldrh r0, [r4, 0x4]
strh r0, [r6, 0x2E]
ldr r0, _080E1860 @ =sub_80782D8
@@ -47805,7 +47805,7 @@ _080E17EA:
pop {r0}
bx r0
.align 2, 0
-_080E1848: .4byte gBattleAnimEnemyMonIndex
+_080E1848: .4byte gBattleAnimBankTarget
_080E184C: .4byte 0x0000fff0
_080E1850: .4byte gBattleAnimArgs
_080E1854: .4byte 0x000003ff
@@ -47870,7 +47870,7 @@ _080E18C8:
_080E18CE:
lsls r0, r5, 24
lsrs r0, 24
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080E18F8
@@ -47899,7 +47899,7 @@ _080E18F8:
_080E1904: .4byte gObjectBankIDs
_080E1908:
ldrb r0, [r6]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x1A]
@@ -48282,13 +48282,13 @@ sub_80E1BB0: @ 80E1BB0
adds r6, r2, 0
cmp r0, 0
beq _080E1BD0
- ldr r0, _080E1BCC @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E1BCC @ =gBattleAnimBankTarget
b _080E1BD2
.align 2, 0
_080E1BC8: .4byte gBattleAnimArgs
-_080E1BCC: .4byte gBattleAnimEnemyMonIndex
+_080E1BCC: .4byte gBattleAnimBankTarget
_080E1BD0:
- ldr r0, _080E1C40 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E1C40 @ =gBattleAnimBankAttacker
_080E1BD2:
ldrb r0, [r0]
adds r5, r0, 0
@@ -48343,7 +48343,7 @@ _080E1BE2:
pop {r0}
bx r0
.align 2, 0
-_080E1C40: .4byte gBattleAnimPlayerMonIndex
+_080E1C40: .4byte gBattleAnimBankAttacker
_080E1C44: .4byte sub_80E1C58
_080E1C48: .4byte gTasks
_080E1C4C: .4byte 0x000001ff
@@ -48412,7 +48412,7 @@ sub_80E1CB4: @ 80E1CB4
strh r0, [r4, 0x22]
ldrh r0, [r5, 0x4]
strh r0, [r4, 0x2E]
- ldr r0, _080E1CF0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E1CF0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -48427,7 +48427,7 @@ sub_80E1CB4: @ 80E1CB4
b _080E1D02
.align 2, 0
_080E1CEC: .4byte gBattleAnimArgs
-_080E1CF0: .4byte gBattleAnimPlayerMonIndex
+_080E1CF0: .4byte gBattleAnimBankAttacker
_080E1CF4:
ldrh r0, [r5, 0x6]
strh r0, [r4, 0x30]
@@ -48763,7 +48763,7 @@ sub_80E1F3C: @ 80E1F3C
strh r2, [r4, 0x38]
ldr r1, _080E1F84 @ =move_anim_8074EE0
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r1, _080E1F88 @ =sub_8078174
str r1, [r4, 0x1C]
adds r0, r4, 0
@@ -49265,9 +49265,9 @@ sub_80E2324: @ 80E2324
lsrs r0, 24
mov r8, r0
movs r2, 0
- ldr r0, _080E239C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E239C @ =gBattleAnimBankAttacker
ldrb r6, [r0]
- ldr r0, _080E23A0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E23A0 @ =gBattleAnimBankTarget
ldrb r7, [r0]
ldr r4, _080E23A4 @ =gBattleAnimArgs
ldrh r1, [r4]
@@ -49317,8 +49317,8 @@ _080E2382:
pop {r0}
bx r0
.align 2, 0
-_080E239C: .4byte gBattleAnimPlayerMonIndex
-_080E23A0: .4byte gBattleAnimEnemyMonIndex
+_080E239C: .4byte gBattleAnimBankAttacker
+_080E23A0: .4byte gBattleAnimBankTarget
_080E23A4: .4byte gBattleAnimArgs
thumb_func_end sub_80E2324
@@ -49361,10 +49361,10 @@ _080E23EA:
ldrh r0, [r4, 0x8]
adds r0, 0x1
strh r0, [r4, 0x8]
- ldr r0, _080E24A4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E24A4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
mov r9, r0
- ldr r0, _080E24A8 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E24A8 @ =gBattleAnimBankTarget
ldrb r0, [r0]
mov r10, r0
ldrh r1, [r4, 0xC]
@@ -49451,8 +49451,8 @@ _080E248E:
.align 2, 0
_080E249C: .4byte gTasks
_080E24A0: .4byte gBattleAnimArgs
-_080E24A4: .4byte gBattleAnimPlayerMonIndex
-_080E24A8: .4byte gBattleAnimEnemyMonIndex
+_080E24A4: .4byte gBattleAnimBankAttacker
+_080E24A8: .4byte gBattleAnimBankTarget
_080E24AC: .4byte 0x0000ffff
_080E24B0: .4byte gSprites
_080E24B4: .4byte gHealthboxIDs
@@ -49506,14 +49506,14 @@ _080E2508:
ldr r1, _080E2514 @ =gSpriteCoordOffsetX
_080E250A:
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
b _080E2520
.align 2, 0
_080E2514: .4byte gSpriteCoordOffsetX
_080E2518:
ldr r1, _080E2550 @ =gSpriteCoordOffsetY
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
_080E2520:
movs r0, 0x3A
ldrsh r1, [r4, r0]
@@ -49643,7 +49643,7 @@ sub_80E260C: @ 80E260C
push {r4-r6,lr}
ldr r6, _080E2680 @ =gSprites
ldr r4, _080E2684 @ =gObjectBankIDs
- ldr r5, _080E2688 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080E2688 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
adds r0, r4
ldrb r0, [r0]
@@ -49658,7 +49658,7 @@ sub_80E260C: @ 80E260C
adds r0, r2, 0
ands r0, r3
strb r0, [r1]
- ldr r3, _080E268C @ =gBattleAnimEnemyMonIndex
+ ldr r3, _080E268C @ =gBattleAnimBankTarget
ldrb r0, [r3]
adds r0, r4
ldrb r1, [r0]
@@ -49700,8 +49700,8 @@ sub_80E260C: @ 80E260C
.align 2, 0
_080E2680: .4byte gSprites
_080E2684: .4byte gObjectBankIDs
-_080E2688: .4byte gBattleAnimPlayerMonIndex
-_080E268C: .4byte gBattleAnimEnemyMonIndex
+_080E2688: .4byte gBattleAnimBankAttacker
+_080E268C: .4byte gBattleAnimBankTarget
_080E2690: .4byte gBattleAnimArgs
_080E2694:
cmp r0, 0
@@ -49874,7 +49874,7 @@ _080E27CC:
str r0, [r5, 0x1C]
ldr r1, _080E27E4 @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
@@ -49912,7 +49912,7 @@ _080E2814:
str r0, [r5, 0x1C]
ldr r1, _080E2834 @ =sub_80DA48C
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
@@ -49926,7 +49926,7 @@ _080E2834: .4byte sub_80DA48C
sub_80E2838: @ 80E2838
push {r4,lr}
adds r4, r0, 0
- ldr r0, _080E2868 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E2868 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -49947,7 +49947,7 @@ _080E285C:
pop {r0}
bx r0
.align 2, 0
-_080E2868: .4byte gBattleAnimPlayerMonIndex
+_080E2868: .4byte gBattleAnimBankAttacker
_080E286C: .4byte gBattleAnimArgs
thumb_func_end sub_80E2838
@@ -50007,7 +50007,7 @@ _080E28B4:
strh r0, [r4, 0x26]
ldr r1, _080E2900 @ =move_anim_8074EE0
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080E2904 @ =sub_80785E4
str r0, [r4, 0x1C]
pop {r4,r5}
@@ -50026,7 +50026,7 @@ sub_80E2908: @ 80E2908
adds r4, r0, 0
ldr r5, _080E2968 @ =gBattleAnimArgs
ldrb r0, [r5]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x2E]
@@ -50060,7 +50060,7 @@ sub_80E2908: @ 80E2908
bl StartSpriteAffineAnim
ldr r1, _080E2970 @ =move_anim_8074EE0
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080E2974 @ =sub_80785E4
str r0, [r4, 0x1C]
pop {r4,r5}
@@ -50098,7 +50098,7 @@ _080E299C:
strh r0, [r4, 0x2E]
ldr r1, _080E29B8 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _080E29BC @ =sub_80782D8
str r0, [r4, 0x1C]
pop {r4}
@@ -50247,33 +50247,33 @@ _080E2AD0:
movs r5, 0
_080E2AD2:
mov r0, sp
- ldr r1, _080E2AD8 @ =gBattleAnimPlayerMonIndex
+ ldr r1, _080E2AD8 @ =gBattleAnimBankAttacker
b _080E2AE2
.align 2, 0
-_080E2AD8: .4byte gBattleAnimPlayerMonIndex
+_080E2AD8: .4byte gBattleAnimBankAttacker
_080E2ADC:
movs r5, 0
_080E2ADE:
mov r0, sp
- ldr r1, _080E2AE8 @ =gBattleAnimEnemyMonIndex
+ ldr r1, _080E2AE8 @ =gBattleAnimBankTarget
_080E2AE2:
ldrb r1, [r1]
strb r1, [r0]
b _080E2B26
.align 2, 0
-_080E2AE8: .4byte gBattleAnimEnemyMonIndex
+_080E2AE8: .4byte gBattleAnimBankTarget
_080E2AEC:
mov r1, sp
- ldr r0, _080E2AFC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E2AFC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
strb r0, [r1]
- ldr r0, _080E2B00 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E2B00 @ =gBattleAnimBankTarget
ldrb r0, [r0]
strb r0, [r1, 0x1]
b _080E2B26
.align 2, 0
-_080E2AFC: .4byte gBattleAnimPlayerMonIndex
-_080E2B00: .4byte gBattleAnimEnemyMonIndex
+_080E2AFC: .4byte gBattleAnimBankAttacker
+_080E2B00: .4byte gBattleAnimBankTarget
_080E2B04:
mov r1, sp
movs r0, 0xFF
@@ -50282,14 +50282,14 @@ _080E2B04:
_080E2B0C:
movs r5, 0
mov r2, sp
- ldr r0, _080E2B14 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E2B14 @ =gBattleAnimBankAttacker
b _080E2B1E
.align 2, 0
-_080E2B14: .4byte gBattleAnimPlayerMonIndex
+_080E2B14: .4byte gBattleAnimBankAttacker
_080E2B18:
movs r5, 0
mov r2, sp
- ldr r0, _080E2B70 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E2B70 @ =gBattleAnimBankTarget
_080E2B1E:
ldrb r0, [r0]
movs r1, 0x2
@@ -50306,7 +50306,7 @@ _080E2B2A:
cmp r4, r0
beq _080E2B54
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080E2B54
@@ -50332,7 +50332,7 @@ _080E2B54:
pop {r0}
bx r0
.align 2, 0
-_080E2B70: .4byte gBattleAnimEnemyMonIndex
+_080E2B70: .4byte gBattleAnimBankTarget
thumb_func_end sub_80E2A7C
thumb_func_start sub_80E2B74
@@ -50900,7 +50900,7 @@ _080E2FAC:
lsls r0, 24
cmp r0, 0
bne _080E3028
- ldr r5, _080E305C @ =gBattleAnimPlayerMonIndex
+ ldr r5, _080E305C @ =gBattleAnimBankAttacker
ldrb r0, [r5]
bl GetBankIdentity
lsls r0, 24
@@ -50916,7 +50916,7 @@ _080E2FDC:
ldrb r0, [r5]
movs r6, 0x2
eors r0, r6
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -50968,12 +50968,12 @@ _080E304C: .4byte REG_BLDCNT
_080E3050: .4byte 0x00003f42
_080E3054: .4byte 0x00000c08
_080E3058: .4byte REG_BG1CNT
-_080E305C: .4byte gBattleAnimPlayerMonIndex
+_080E305C: .4byte gBattleAnimBankAttacker
_080E3060: .4byte gSprites
_080E3064: .4byte gObjectBankIDs
_080E3068: .4byte 0x02019348
_080E306C:
- ldr r4, _080E308C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _080E308C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -50989,7 +50989,7 @@ _080E306C:
ldr r1, _080E3094 @ =gEnemyParty
b _080E30A8
.align 2, 0
-_080E308C: .4byte gBattleAnimPlayerMonIndex
+_080E308C: .4byte gBattleAnimBankAttacker
_080E3090: .4byte gBattlePartyID
_080E3094: .4byte gEnemyParty
_080E3098:
@@ -51009,10 +51009,10 @@ _080E30A8:
lsrs r4, r0, 16
_080E30B4:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, _080E3168 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E3168 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r1, r5, 0
adds r2, r4, 0
@@ -51089,7 +51089,7 @@ _080E3106:
.align 2, 0
_080E3160: .4byte gBattlePartyID
_080E3164: .4byte gPlayerParty
-_080E3168: .4byte gBattleAnimPlayerMonIndex
+_080E3168: .4byte gBattleAnimBankAttacker
_080E316C: .4byte 0x040000d4
_080E3170: .4byte 0x85000400
_080E3174: .4byte gUnknown_08D20A30
@@ -51174,7 +51174,7 @@ _080E3208:
adds r0, 0x2
strh r5, [r0]
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
ldr r0, _080E32CC @ =gSprites
mov r8, r0
movs r2, 0x8
@@ -51200,7 +51200,7 @@ _080E3208:
cmp r0, 0x1
bne _080E3288
ldr r2, _080E32D8 @ =gObjectBankIDs
- ldr r0, _080E32DC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E32DC @ =gBattleAnimBankAttacker
ldrb r1, [r0]
movs r0, 0x2
eors r0, r1
@@ -51253,7 +51253,7 @@ _080E32CC: .4byte gSprites
_080E32D0: .4byte 0x040000d4
_080E32D4: .4byte 0x85000200
_080E32D8: .4byte gObjectBankIDs
-_080E32DC: .4byte gBattleAnimPlayerMonIndex
+_080E32DC: .4byte gBattleAnimBankAttacker
thumb_func_end sub_80E3194
thumb_func_start sub_80E32E0
@@ -51344,13 +51344,13 @@ _080E336C:
ldrsh r0, [r7, r1]
cmp r0, 0
bne _080E3390
- ldr r0, _080E338C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E338C @ =gBattleAnimBankAttacker
b _080E3392
.align 2, 0
_080E3388: .4byte gTasks
-_080E338C: .4byte gBattleAnimPlayerMonIndex
+_080E338C: .4byte gBattleAnimBankAttacker
_080E3390:
- ldr r0, _080E34B4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E34B4 @ =gBattleAnimBankTarget
_080E3392:
ldrb r5, [r0]
movs r0, 0x2
@@ -51367,7 +51367,7 @@ _080E3392:
cmp r0, 0
beq _080E33C0
mov r0, r8
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
bne _080E33C0
@@ -51453,7 +51453,7 @@ _080E3432:
bne _080E34A4
_080E345E:
mov r0, r8
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -51495,7 +51495,7 @@ _080E34A4:
ldrh r4, [r0]
b _080E3522
.align 2, 0
-_080E34B4: .4byte gBattleAnimEnemyMonIndex
+_080E34B4: .4byte gBattleAnimBankTarget
_080E34B8: .4byte gUnknown_030042C4
_080E34BC: .4byte gUnknown_03004240
_080E34C0: .4byte REG_WININ
@@ -52181,7 +52181,7 @@ sub_80E3A08: @ 80E3A08
lsrs r6, r0, 24
movs r4, 0
movs r2, 0
- ldr r0, _080E3A50 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E3A50 @ =gBattleAnimBankAttacker
ldrb r3, [r0]
movs r5, 0x1
_080E3A18:
@@ -52214,7 +52214,7 @@ _080E3A34:
pop {r0}
bx r0
.align 2, 0
-_080E3A50: .4byte gBattleAnimPlayerMonIndex
+_080E3A50: .4byte gBattleAnimBankAttacker
_080E3A54: .4byte gBattleAnimArgs
thumb_func_end sub_80E3A08
@@ -52235,7 +52235,7 @@ sub_80E3A58: @ 80E3A58
ldrsh r0, [r4, r1]
cmp r0, 0
beq _080E3A94
- ldr r0, _080E3AC8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E3AC8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -52271,7 +52271,7 @@ _080E3A94:
.align 2, 0
_080E3AC0: .4byte sub_80E3AD0
_080E3AC4: .4byte gBattleAnimArgs
-_080E3AC8: .4byte gBattleAnimPlayerMonIndex
+_080E3AC8: .4byte gBattleAnimBankAttacker
_080E3ACC: .4byte gTasks
thumb_func_end sub_80E3A58
@@ -52343,7 +52343,7 @@ sub_80E3B4C: @ 80E3B4C
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _080E3B70 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E3B70 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
ldr r1, _080E3B74 @ =gBattleAnimArgs
@@ -52356,7 +52356,7 @@ sub_80E3B4C: @ 80E3B4C
pop {r0}
bx r0
.align 2, 0
-_080E3B70: .4byte gBattleAnimPlayerMonIndex
+_080E3B70: .4byte gBattleAnimBankAttacker
_080E3B74: .4byte gBattleAnimArgs
thumb_func_end sub_80E3B4C
@@ -52366,7 +52366,7 @@ sub_80E3B78: @ 80E3B78
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _080E3B9C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E3B9C @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
ldr r1, _080E3BA0 @ =gBattleAnimArgs
@@ -52379,7 +52379,7 @@ sub_80E3B78: @ 80E3B78
pop {r0}
bx r0
.align 2, 0
-_080E3B9C: .4byte gBattleAnimEnemyMonIndex
+_080E3B9C: .4byte gBattleAnimBankTarget
_080E3BA0: .4byte gBattleAnimArgs
thumb_func_end sub_80E3B78
@@ -52390,10 +52390,10 @@ sub_80E3BA4: @ 80E3BA4
lsrs r3, r0, 24
ldr r5, _080E3BD0 @ =gBattleAnimArgs
movs r4, 0
- ldr r0, _080E3BD4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E3BD4 @ =gBattleAnimBankAttacker
ldrb r2, [r0]
movs r0, 0x2
- ldr r1, _080E3BD8 @ =gBattleAnimEnemyMonIndex
+ ldr r1, _080E3BD8 @ =gBattleAnimBankTarget
eors r0, r2
ldrb r1, [r1]
cmp r0, r1
@@ -52408,8 +52408,8 @@ _080E3BC0:
bx r0
.align 2, 0
_080E3BD0: .4byte gBattleAnimArgs
-_080E3BD4: .4byte gBattleAnimPlayerMonIndex
-_080E3BD8: .4byte gBattleAnimEnemyMonIndex
+_080E3BD4: .4byte gBattleAnimBankAttacker
+_080E3BD8: .4byte gBattleAnimBankTarget
thumb_func_end sub_80E3BA4
thumb_func_start sub_80E3BDC
@@ -52420,13 +52420,13 @@ sub_80E3BDC: @ 80E3BDC
movs r4, 0
ldr r6, _080E3C3C @ =gSprites
_080E3BE6:
- ldr r0, _080E3C40 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E3C40 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
cmp r4, r0
beq _080E3C24
lsls r0, r4, 24
lsrs r0, 24
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _080E3C24
@@ -52463,7 +52463,7 @@ _080E3C24:
bx r0
.align 2, 0
_080E3C3C: .4byte gSprites
-_080E3C40: .4byte gBattleAnimPlayerMonIndex
+_080E3C40: .4byte gBattleAnimBankAttacker
_080E3C44: .4byte gObjectBankIDs
_080E3C48: .4byte gBattleAnimArgs
thumb_func_end sub_80E3BDC
@@ -52513,7 +52513,7 @@ sub_80E3C4C: @ 80E3C4C
cmp r1, 0
beq _080E3CB2
adds r0, r6, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
bne _080E3CB2
@@ -52986,14 +52986,14 @@ _080E4068: .4byte gBattleAnimArgs
_080E406C:
cmp r0, 0x1
bne _080E4078
- ldr r0, _080E4074 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E4074 @ =gBattleAnimBankAttacker
b _080E407E
.align 2, 0
-_080E4074: .4byte gBattleAnimPlayerMonIndex
+_080E4074: .4byte gBattleAnimBankAttacker
_080E4078:
cmp r0, 0x2
bne _080E4084
- ldr r0, _080E409C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E409C @ =gBattleAnimBankTarget
_080E407E:
ldrb r0, [r0]
adds r4, r0, 0
@@ -53010,7 +53010,7 @@ _080E4084:
ldr r0, _080E40A4 @ =0x02014800
b _080E40AA
.align 2, 0
-_080E409C: .4byte gBattleAnimEnemyMonIndex
+_080E409C: .4byte gBattleAnimBankTarget
_080E40A0: .4byte gBattleAnimArgs
_080E40A4: .4byte 0x02014800
_080E40A8:
@@ -53073,14 +53073,14 @@ _080E4110: .4byte gBattleAnimArgs
_080E4114:
cmp r0, 0x1
bne _080E4120
- ldr r0, _080E411C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E411C @ =gBattleAnimBankAttacker
b _080E4126
.align 2, 0
-_080E411C: .4byte gBattleAnimPlayerMonIndex
+_080E411C: .4byte gBattleAnimBankAttacker
_080E4120:
cmp r0, 0x2
bne _080E412C
- ldr r0, _080E4148 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E4148 @ =gBattleAnimBankTarget
_080E4126:
ldrb r0, [r0]
adds r4, r0, 0
@@ -53100,7 +53100,7 @@ _080E412C:
ldr r0, _080E4154 @ =0x02014800
b _080E415A
.align 2, 0
-_080E4148: .4byte gBattleAnimEnemyMonIndex
+_080E4148: .4byte gBattleAnimBankTarget
_080E414C: .4byte gPlttBufferUnfaded
_080E4150: .4byte gBattleAnimArgs
_080E4154: .4byte 0x02014800
@@ -53160,14 +53160,14 @@ _080E41B8: .4byte gBattleAnimArgs
_080E41BC:
cmp r0, 0x1
bne _080E41C8
- ldr r0, _080E41C4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E41C4 @ =gBattleAnimBankAttacker
b _080E41CE
.align 2, 0
-_080E41C4: .4byte gBattleAnimPlayerMonIndex
+_080E41C4: .4byte gBattleAnimBankAttacker
_080E41C8:
cmp r0, 0x2
bne _080E41D4
- ldr r0, _080E41F4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E41F4 @ =gBattleAnimBankTarget
_080E41CE:
ldrb r0, [r0]
adds r4, r0, 0
@@ -53187,7 +53187,7 @@ _080E41D4:
pop {r0}
bx r0
.align 2, 0
-_080E41F4: .4byte gBattleAnimEnemyMonIndex
+_080E41F4: .4byte gBattleAnimBankTarget
_080E41F8: .4byte gPlttBufferUnfaded
_080E41FC: .4byte gPlttBufferFaded
thumb_func_end sub_80E4178
@@ -53226,11 +53226,11 @@ sub_80E4234: @ 80E4234
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, _080E4254 @ =gBattleAnimPlayerMonIndex
+ ldr r2, _080E4254 @ =gBattleAnimBankAttacker
ldr r1, _080E4258 @ =gBankTarget
ldrb r1, [r1]
strb r1, [r2]
- ldr r2, _080E425C @ =gBattleAnimEnemyMonIndex
+ ldr r2, _080E425C @ =gBattleAnimBankTarget
ldr r1, _080E4260 @ =gEffectBank
ldrb r1, [r1]
strb r1, [r2]
@@ -53238,9 +53238,9 @@ sub_80E4234: @ 80E4234
pop {r0}
bx r0
.align 2, 0
-_080E4254: .4byte gBattleAnimPlayerMonIndex
+_080E4254: .4byte gBattleAnimBankAttacker
_080E4258: .4byte gBankTarget
-_080E425C: .4byte gBattleAnimEnemyMonIndex
+_080E425C: .4byte gBattleAnimBankTarget
_080E4260: .4byte gEffectBank
thumb_func_end sub_80E4234
@@ -53249,11 +53249,11 @@ sub_80E4264: @ 80E4264
push {r4,r5,lr}
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, _080E428C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E428C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
adds r4, r0, 0
- ldr r0, _080E4290 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _080E4290 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r4, 24
@@ -53264,8 +53264,8 @@ sub_80E4264: @ 80E4264
movs r0, 0x1
b _080E429C
.align 2, 0
-_080E428C: .4byte gBattleAnimPlayerMonIndex
-_080E4290: .4byte gBattleAnimEnemyMonIndex
+_080E428C: .4byte gBattleAnimBankAttacker
+_080E4290: .4byte gBattleAnimBankTarget
_080E4294: .4byte gBattleAnimArgs
_080E4298:
ldr r1, _080E42AC @ =gBattleAnimArgs
@@ -53286,7 +53286,7 @@ sub_80E42B0: @ 80E42B0
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, _080E42C8 @ =gBattleAnimEnemyMonIndex
+ ldr r2, _080E42C8 @ =gBattleAnimBankTarget
ldr r1, _080E42CC @ =gBankTarget
ldrb r1, [r1]
strb r1, [r2]
@@ -53294,7 +53294,7 @@ sub_80E42B0: @ 80E42B0
pop {r0}
bx r0
.align 2, 0
-_080E42C8: .4byte gBattleAnimEnemyMonIndex
+_080E42C8: .4byte gBattleAnimBankTarget
_080E42CC: .4byte gBankTarget
thumb_func_end sub_80E42B0
@@ -53303,11 +53303,11 @@ sub_80E42D0: @ 80E42D0
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, _080E42F0 @ =gBattleAnimPlayerMonIndex
+ ldr r2, _080E42F0 @ =gBattleAnimBankAttacker
ldr r1, _080E42F4 @ =gBankAttacker
ldrb r1, [r1]
strb r1, [r2]
- ldr r2, _080E42F8 @ =gBattleAnimEnemyMonIndex
+ ldr r2, _080E42F8 @ =gBattleAnimBankTarget
ldr r1, _080E42FC @ =gEffectBank
ldrb r1, [r1]
strb r1, [r2]
@@ -53315,9 +53315,9 @@ sub_80E42D0: @ 80E42D0
pop {r0}
bx r0
.align 2, 0
-_080E42F0: .4byte gBattleAnimPlayerMonIndex
+_080E42F0: .4byte gBattleAnimBankAttacker
_080E42F4: .4byte gBankAttacker
-_080E42F8: .4byte gBattleAnimEnemyMonIndex
+_080E42F8: .4byte gBattleAnimBankTarget
_080E42FC: .4byte gEffectBank
thumb_func_end sub_80E42D0
@@ -53339,7 +53339,7 @@ _080E4318:
adds r3, r4
lsls r3, 3
adds r3, r0
- ldr r1, _080E4358 @ =gBattleAnimPlayerMonIndex
+ ldr r1, _080E4358 @ =gBattleAnimBankAttacker
ldrb r0, [r1]
lsls r0, 2
ldr r2, _080E435C @ =0x02017800
@@ -53367,7 +53367,7 @@ _080E434E:
bx r0
.align 2, 0
_080E4354: .4byte gTasks
-_080E4358: .4byte gBattleAnimPlayerMonIndex
+_080E4358: .4byte gBattleAnimBankAttacker
_080E435C: .4byte 0x02017800
_080E4360: .4byte sub_80E4368
_080E4364: .4byte gAnimVisualTaskCount
@@ -53385,7 +53385,7 @@ sub_80E4368: @ 80E4368
lsls r0, 5
cmp r1, r0
bne _080E43A8
- ldr r0, _080E43B4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _080E43B4 @ =gBattleAnimBankAttacker
ldrb r3, [r0]
lsls r3, 2
ldr r0, _080E43B8 @ =0x02017800
@@ -53412,7 +53412,7 @@ _080E43A8:
bx r0
.align 2, 0
_080E43B0: .4byte gBattleAnimArgs
-_080E43B4: .4byte gBattleAnimPlayerMonIndex
+_080E43B4: .4byte gBattleAnimBankAttacker
_080E43B8: .4byte 0x02017800
_080E43BC: .4byte gTasks
thumb_func_end sub_80E4368
diff --git a/asm/battle_anim_81258BC.s b/asm/battle_anim_81258BC.s
index f2f127690..69b95b703 100644
--- a/asm/battle_anim_81258BC.s
+++ b/asm/battle_anim_81258BC.s
@@ -9,7 +9,7 @@
thumb_func_start unref_sub_812AECC
unref_sub_812AECC: @ 812AECC
push {lr}
- bl sub_812613C
+ bl RunMysteryEventScript
lsls r0, 24
lsrs r0, 24
adds r1, r0, 0
@@ -403,29 +403,29 @@ _0812B1CC:
adds r2, r0, 0
cmp r1, 0
bne _0812B1E8
- ldr r0, _0812B1E4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812B1E4 @ =gBattleAnimBankAttacker
ldrb r4, [r0]
b _0812B20E
.align 2, 0
_0812B1E0: .4byte gBattleAnimArgs
-_0812B1E4: .4byte gBattleAnimPlayerMonIndex
+_0812B1E4: .4byte gBattleAnimBankAttacker
_0812B1E8:
cmp r1, 0x1
bne _0812B1F8
- ldr r0, _0812B1F4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0812B1F4 @ =gBattleAnimBankTarget
ldrb r4, [r0]
b _0812B20E
.align 2, 0
-_0812B1F4: .4byte gBattleAnimEnemyMonIndex
+_0812B1F4: .4byte gBattleAnimBankTarget
_0812B1F8:
cmp r1, 0x2
bne _0812B204
- ldr r0, _0812B200 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812B200 @ =gBattleAnimBankAttacker
b _0812B206
.align 2, 0
-_0812B200: .4byte gBattleAnimPlayerMonIndex
+_0812B200: .4byte gBattleAnimBankAttacker
_0812B204:
- ldr r0, _0812B230 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0812B230 @ =gBattleAnimBankTarget
_0812B206:
ldrb r1, [r0]
movs r0, 0x2
@@ -440,7 +440,7 @@ _0812B20E:
bne _0812B234
_0812B21A:
adds r0, r4, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
bne _0812B234
@@ -448,7 +448,7 @@ _0812B21A:
bl DestroyAnimVisualTask
b _0812B2B0
.align 2, 0
-_0812B230: .4byte gBattleAnimEnemyMonIndex
+_0812B230: .4byte gBattleAnimBankTarget
_0812B234:
adds r0, r4, 0
bl GetBankSide
@@ -534,7 +534,7 @@ sub_812B2B8: @ 812B2B8
_0812B2D8: .4byte 0x02019348
_0812B2DC:
ldr r1, _0812B304 @ =gUnknown_0202F7CA
- ldr r0, _0812B308 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812B308 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
lsls r0, 1
adds r0, r1
@@ -554,7 +554,7 @@ _0812B2F6:
bx r0
.align 2, 0
_0812B304: .4byte gUnknown_0202F7CA
-_0812B308: .4byte gBattleAnimPlayerMonIndex
+_0812B308: .4byte gBattleAnimBankAttacker
thumb_func_end sub_812B2B8
thumb_func_start sub_812B30C
@@ -729,1397 +729,5 @@ _0812B45C: .4byte gTasks
_0812B460: .4byte gUnknown_0202F7D2
thumb_func_end sub_812B404
- thumb_func_start unref_sub_812B464
-unref_sub_812B464: @ 812B464
- bx lr
- thumb_func_end unref_sub_812B464
-
- thumb_func_start SetBankFuncToSafariBufferRunCommand
-SetBankFuncToSafariBufferRunCommand: @ 812B468
- ldr r1, _0812B478 @ =gBattleBankFunc
- ldr r0, _0812B47C @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812B480 @ =SafariBufferRunCommand
- str r1, [r0]
- bx lr
- .align 2, 0
-_0812B478: .4byte gBattleBankFunc
-_0812B47C: .4byte gActiveBank
-_0812B480: .4byte SafariBufferRunCommand
- thumb_func_end SetBankFuncToSafariBufferRunCommand
-
- thumb_func_start SafariBufferRunCommand
-SafariBufferRunCommand: @ 812B484
- push {lr}
- ldr r2, _0812B4B8 @ =gBattleExecBuffer
- ldr r1, _0812B4BC @ =gBitTable
- ldr r0, _0812B4C0 @ =gActiveBank
- ldrb r3, [r0]
- lsls r0, r3, 2
- adds r0, r1
- ldr r1, [r2]
- ldr r0, [r0]
- ands r1, r0
- cmp r1, 0
- beq _0812B4D0
- ldr r0, _0812B4C4 @ =gBattleBufferA
- lsls r1, r3, 9
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0x38
- bhi _0812B4CC
- ldr r0, _0812B4C8 @ =gSafariBufferCommands
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r0
- ldr r0, [r1]
- bl _call_via_r0
- b _0812B4D0
- .align 2, 0
-_0812B4B8: .4byte gBattleExecBuffer
-_0812B4BC: .4byte gBitTable
-_0812B4C0: .4byte gActiveBank
-_0812B4C4: .4byte gBattleBufferA
-_0812B4C8: .4byte gSafariBufferCommands
-_0812B4CC:
- bl SafariBufferExecCompleted
-_0812B4D0:
- pop {r0}
- bx r0
- thumb_func_end SafariBufferRunCommand
-
- thumb_func_start bx_battle_menu_t6_2
-bx_battle_menu_t6_2: @ 812B4D4
- push {r4,r5,lr}
- ldr r0, _0812B508 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0812B546
- movs r0, 0x5
- bl PlaySE
- bl DestroyMenuCursor
- ldr r1, _0812B50C @ =gActionSelectionCursor
- ldr r0, _0812B510 @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0812B524
- cmp r0, 0x1
- bgt _0812B514
- cmp r0, 0
- beq _0812B51E
- b _0812B540
- .align 2, 0
-_0812B508: .4byte gMain
-_0812B50C: .4byte gActionSelectionCursor
-_0812B510: .4byte gActiveBank
-_0812B514:
- cmp r0, 0x2
- beq _0812B52A
- cmp r0, 0x3
- beq _0812B536
- b _0812B540
-_0812B51E:
- movs r0, 0x1
- movs r1, 0x5
- b _0812B52E
-_0812B524:
- movs r0, 0x1
- movs r1, 0x6
- b _0812B52E
-_0812B52A:
- movs r0, 0x1
- movs r1, 0x7
-_0812B52E:
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
- b _0812B540
-_0812B536:
- movs r0, 0x1
- movs r1, 0x8
- movs r2, 0
- bl dp01_build_cmdbuf_x21_a_bb
-_0812B540:
- bl SafariBufferExecCompleted
- b _0812B64E
-_0812B546:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0812B584
- ldr r5, _0812B57C @ =gActionSelectionCursor
- ldr r4, _0812B580 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0812B64E
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x1
- b _0812B5F2
- .align 2, 0
-_0812B57C: .4byte gActionSelectionCursor
-_0812B580: .4byte gActiveBank
-_0812B584:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0812B5C0
- ldr r5, _0812B5B8 @ =gActionSelectionCursor
- ldr r4, _0812B5BC @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _0812B64E
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x1
- b _0812B5F2
- .align 2, 0
-_0812B5B8: .4byte gActionSelectionCursor
-_0812B5BC: .4byte gActiveBank
-_0812B5C0:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0812B60C
- ldr r5, _0812B604 @ =gActionSelectionCursor
- ldr r4, _0812B608 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812B64E
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x2
-_0812B5F2:
- eors r0, r2
- strb r0, [r1]
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3E4
- b _0812B64E
- .align 2, 0
-_0812B604: .4byte gActionSelectionCursor
-_0812B608: .4byte gActiveBank
-_0812B60C:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0812B64E
- ldr r5, _0812B654 @ =gActionSelectionCursor
- ldr r4, _0812B658 @ =gActiveBank
- ldrb r0, [r4]
- adds r0, r5
- ldrb r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0812B64E
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl nullsub_8
- ldrb r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- movs r2, 0x2
- eors r0, r2
- strb r0, [r1]
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3E4
-_0812B64E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B654: .4byte gActionSelectionCursor
-_0812B658: .4byte gActiveBank
- thumb_func_end bx_battle_menu_t6_2
-
- thumb_func_start sub_812B65C
-sub_812B65C: @ 812B65C
- push {lr}
- ldr r2, _0812B684 @ =gSprites
- ldr r1, _0812B688 @ =gObjectBankIDs
- ldr r0, _0812B68C @ =gActiveBank
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0812B690 @ =SpriteCallbackDummy
- cmp r1, r0
- bne _0812B680
- bl SafariBufferExecCompleted
-_0812B680:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B684: .4byte gSprites
-_0812B688: .4byte gObjectBankIDs
-_0812B68C: .4byte gActiveBank
-_0812B690: .4byte SpriteCallbackDummy
- thumb_func_end sub_812B65C
-
- thumb_func_start sub_812B694
-sub_812B694: @ 812B694
- push {lr}
- ldr r0, _0812B6A8 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- bne _0812B6A2
- bl SafariBufferExecCompleted
-_0812B6A2:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B6A8: .4byte gUnknown_03004210
- thumb_func_end sub_812B694
-
- thumb_func_start sub_812B6AC
-sub_812B6AC: @ 812B6AC
- push {lr}
- ldr r0, _0812B6DC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812B6D6
- ldr r2, _0812B6E0 @ =gMain
- ldr r0, _0812B6E4 @ =0x0000043d
- adds r3, r2, r0
- ldrb r1, [r3]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- ldr r0, _0812B6E8 @ =gPreBattleCallback1
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, [r2, 0x8]
- bl SetMainCallback2
-_0812B6D6:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B6DC: .4byte gPaletteFade
-_0812B6E0: .4byte gMain
-_0812B6E4: .4byte 0x0000043d
-_0812B6E8: .4byte gPreBattleCallback1
- thumb_func_end sub_812B6AC
-
- thumb_func_start bx_wait_t6
-bx_wait_t6: @ 812B6EC
- push {lr}
- ldr r0, _0812B718 @ =gDoingBattleAnim
- ldrb r0, [r0]
- cmp r0, 0
- beq _0812B70E
- ldr r0, _0812B71C @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812B720 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0812B712
-_0812B70E:
- bl SafariBufferExecCompleted
-_0812B712:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B718: .4byte gDoingBattleAnim
-_0812B71C: .4byte gActiveBank
-_0812B720: .4byte 0x02017810
- thumb_func_end bx_wait_t6
-
- thumb_func_start sub_812B724
-sub_812B724: @ 812B724
- push {lr}
- ldr r0, _0812B748 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812B744
- ldr r1, _0812B74C @ =gBattleBankFunc
- ldr r0, _0812B750 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812B754 @ =sub_812B758
- str r1, [r0]
- bl sub_810BADC
-_0812B744:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B748: .4byte gPaletteFade
-_0812B74C: .4byte gBattleBankFunc
-_0812B750: .4byte gActiveBank
-_0812B754: .4byte sub_812B758
- thumb_func_end sub_812B724
-
- thumb_func_start sub_812B758
-sub_812B758: @ 812B758
- push {lr}
- ldr r0, _0812B784 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _0812B788 @ =sub_800F808
- cmp r1, r0
- bne _0812B77E
- ldr r0, _0812B78C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812B77E
- ldr r0, _0812B790 @ =gScriptItemId
- ldrh r1, [r0]
- movs r0, 0x1
- bl dp01_build_cmdbuf_x23_aa_0
- bl SafariBufferExecCompleted
-_0812B77E:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B784: .4byte gMain
-_0812B788: .4byte sub_800F808
-_0812B78C: .4byte gPaletteFade
-_0812B790: .4byte gScriptItemId
- thumb_func_end sub_812B758
-
- thumb_func_start sub_812B794
-sub_812B794: @ 812B794
- push {lr}
- ldr r0, _0812B7B8 @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812B7BC @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _0812B7B2
- bl SafariBufferExecCompleted
-_0812B7B2:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B7B8: .4byte gActiveBank
-_0812B7BC: .4byte 0x02017810
- thumb_func_end sub_812B794
-
- thumb_func_start SafariBufferExecCompleted
-SafariBufferExecCompleted: @ 812B7C0
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _0812B800 @ =gBattleBankFunc
- ldr r4, _0812B804 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812B808 @ =SafariBufferRunCommand
- str r1, [r0]
- ldr r0, _0812B80C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812B814
- bl GetMultiplayerId
- mov r1, sp
- strb r0, [r1]
- movs r0, 0x2
- movs r1, 0x4
- mov r2, sp
- bl dp01_prepare_buffer_wireless_probably
- ldr r1, _0812B810 @ =gBattleBufferA
- ldrb r0, [r4]
- lsls r0, 9
- adds r0, r1
- movs r1, 0x38
- strb r1, [r0]
- b _0812B826
- .align 2, 0
-_0812B800: .4byte gBattleBankFunc
-_0812B804: .4byte gActiveBank
-_0812B808: .4byte SafariBufferRunCommand
-_0812B80C: .4byte gBattleTypeFlags
-_0812B810: .4byte gBattleBufferA
-_0812B814:
- ldr r2, _0812B830 @ =gBattleExecBuffer
- ldr r1, _0812B834 @ =gBitTable
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- ldr r0, [r2]
- bics r0, r1
- str r0, [r2]
-_0812B826:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B830: .4byte gBattleExecBuffer
-_0812B834: .4byte gBitTable
- thumb_func_end SafariBufferExecCompleted
-
- thumb_func_start unref_sub_812B838
-unref_sub_812B838: @ 812B838
- push {lr}
- ldr r0, _0812B85C @ =gActiveBank
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812B860 @ =0x02017810
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _0812B856
- bl SafariBufferExecCompleted
-_0812B856:
- pop {r0}
- bx r0
- .align 2, 0
-_0812B85C: .4byte gActiveBank
-_0812B860: .4byte 0x02017810
- thumb_func_end unref_sub_812B838
-
- thumb_func_start SafariHandleGetAttributes
-SafariHandleGetAttributes: @ 812B864
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end SafariHandleGetAttributes
-
- thumb_func_start sub_812B870
-sub_812B870: @ 812B870
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B870
-
- thumb_func_start sub_812B87C
-sub_812B87C: @ 812B87C
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B87C
-
- thumb_func_start sub_812B888
-sub_812B888: @ 812B888
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B888
-
- thumb_func_start sub_812B894
-sub_812B894: @ 812B894
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B894
-
- thumb_func_start sub_812B8A0
-sub_812B8A0: @ 812B8A0
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B8A0
-
- thumb_func_start sub_812B8AC
-sub_812B8AC: @ 812B8AC
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B8AC
-
- thumb_func_start sub_812B8B8
-sub_812B8B8: @ 812B8B8
- push {r4-r6,lr}
- ldr r4, _0812B96C @ =gSaveBlock2
- ldrb r0, [r4, 0x8]
- ldr r5, _0812B970 @ =gActiveBank
- ldrb r1, [r5]
- bl sub_8031AF4
- ldrb r6, [r4, 0x8]
- ldrb r0, [r5]
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl GetMonSpriteTemplate_803C5A0
- ldr r0, _0812B974 @ =gUnknown_02024E8C
- ldr r2, _0812B978 @ =gTrainerBackPicCoords
- ldrb r1, [r4, 0x8]
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1]
- movs r2, 0x8
- subs r2, r1
- lsls r2, 18
- movs r1, 0xA0
- lsls r1, 15
- adds r2, r1
- asrs r2, 16
- movs r1, 0x50
- movs r3, 0x1E
- bl CreateSprite
- ldr r6, _0812B97C @ =gObjectBankIDs
- ldrb r1, [r5]
- adds r1, r6
- strb r0, [r1]
- ldr r4, _0812B980 @ =gSprites
- ldrb r3, [r5]
- adds r0, r3, r6
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- lsls r3, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r0, [r5]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xF0
- strh r1, [r0, 0x24]
- ldrb r0, [r5]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _0812B984 @ =0x0000fffe
- strh r1, [r0, 0x2E]
- ldrb r0, [r5]
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, 0x1C
- adds r0, r4
- ldr r1, _0812B988 @ =sub_80313A0
- str r1, [r0]
- ldr r1, _0812B98C @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812B990 @ =sub_812B65C
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812B96C: .4byte gSaveBlock2
-_0812B970: .4byte gActiveBank
-_0812B974: .4byte gUnknown_02024E8C
-_0812B978: .4byte gTrainerBackPicCoords
-_0812B97C: .4byte gObjectBankIDs
-_0812B980: .4byte gSprites
-_0812B984: .4byte 0x0000fffe
-_0812B988: .4byte sub_80313A0
-_0812B98C: .4byte gBattleBankFunc
-_0812B990: .4byte sub_812B65C
- thumb_func_end sub_812B8B8
-
- thumb_func_start sub_812B994
-sub_812B994: @ 812B994
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B994
-
- thumb_func_start sub_812B9A0
-sub_812B9A0: @ 812B9A0
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B9A0
-
- thumb_func_start sub_812B9AC
-sub_812B9AC: @ 812B9AC
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B9AC
-
- thumb_func_start sub_812B9B8
-sub_812B9B8: @ 812B9B8
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812B9B8
-
- thumb_func_start sub_812B9C4
-sub_812B9C4: @ 812B9C4
- push {r4,r5,lr}
- ldr r1, _0812BA00 @ =0x02017840
- movs r0, 0x4
- strb r0, [r1, 0x8]
- ldr r1, _0812BA04 @ =gDoingBattleAnim
- movs r0, 0x1
- strb r0, [r1]
- ldr r5, _0812BA08 @ =gActiveBank
- ldrb r4, [r5]
- movs r0, 0x1
- bl GetBankByPlayerAI
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r4, 0
- movs r3, 0x4
- bl move_anim_start_t4
- ldr r1, _0812BA0C @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812BA10 @ =bx_wait_t6
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BA00: .4byte 0x02017840
-_0812BA04: .4byte gDoingBattleAnim
-_0812BA08: .4byte gActiveBank
-_0812BA0C: .4byte gBattleBankFunc
-_0812BA10: .4byte bx_wait_t6
- thumb_func_end sub_812B9C4
-
- thumb_func_start sub_812BA14
-sub_812BA14: @ 812BA14
- push {r4,r5,lr}
- ldr r1, _0812BA58 @ =gBattleBufferA
- ldr r5, _0812BA5C @ =gActiveBank
- ldrb r0, [r5]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r1, [r0]
- ldr r0, _0812BA60 @ =0x02017840
- strb r1, [r0, 0x8]
- ldr r1, _0812BA64 @ =gDoingBattleAnim
- movs r0, 0x1
- strb r0, [r1]
- ldrb r4, [r5]
- movs r0, 0x1
- bl GetBankByPlayerAI
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r4, 0
- movs r3, 0x4
- bl move_anim_start_t4
- ldr r1, _0812BA68 @ =gBattleBankFunc
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812BA6C @ =bx_wait_t6
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BA58: .4byte gBattleBufferA
-_0812BA5C: .4byte gActiveBank
-_0812BA60: .4byte 0x02017840
-_0812BA64: .4byte gDoingBattleAnim
-_0812BA68: .4byte gBattleBankFunc
-_0812BA6C: .4byte bx_wait_t6
- thumb_func_end sub_812BA14
-
- thumb_func_start sub_812BA70
-sub_812BA70: @ 812BA70
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BA70
-
- thumb_func_start sub_812BA7C
-sub_812BA7C: @ 812BA7C
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BA7C
-
- thumb_func_start SafariHandlePrintString
-SafariHandlePrintString: @ 812BA88
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0812BACC @ =gUnknown_030042A4
- movs r1, 0
- strh r1, [r0]
- ldr r0, _0812BAD0 @ =gUnknown_030042A0
- strh r1, [r0]
- ldr r4, _0812BAD4 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 9
- ldr r1, _0812BAD8 @ =gUnknown_02023A62
- adds r0, r1
- ldrh r0, [r0]
- bl BufferStringBattle
- ldr r0, _0812BADC @ =gUnknown_03004210
- ldr r1, _0812BAE0 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _0812BAE4 @ =gBattleBankFunc
- ldrb r0, [r4]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812BAE8 @ =sub_812B694
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BACC: .4byte gUnknown_030042A4
-_0812BAD0: .4byte gUnknown_030042A0
-_0812BAD4: .4byte gActiveBank
-_0812BAD8: .4byte gUnknown_02023A62
-_0812BADC: .4byte gUnknown_03004210
-_0812BAE0: .4byte gDisplayedStringBattle
-_0812BAE4: .4byte gBattleBankFunc
-_0812BAE8: .4byte sub_812B694
- thumb_func_end SafariHandlePrintString
-
- thumb_func_start SafariHandlePrintStringPlayerOnly
-SafariHandlePrintStringPlayerOnly: @ 812BAEC
- push {lr}
- ldr r0, _0812BB04 @ =gActiveBank
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0812BB08
- bl SafariHandlePrintString
- b _0812BB0C
- .align 2, 0
-_0812BB04: .4byte gActiveBank
-_0812BB08:
- bl SafariBufferExecCompleted
-_0812BB0C:
- pop {r0}
- bx r0
- thumb_func_end SafariHandlePrintStringPlayerOnly
-
-.section .text_812BBFC
-
- thumb_func_start sub_812BBFC
-sub_812BBFC: @ 812BBFC
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BBFC
-
- thumb_func_start sub_812BC08
-sub_812BC08: @ 812BC08
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BC08
-
- thumb_func_start sub_812BC14
-sub_812BC14: @ 812BC14
- push {lr}
- sub sp, 0x4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0812BC44 @ =gBattleBankFunc
- ldr r2, _0812BC48 @ =gActiveBank
- ldrb r0, [r2]
- lsls r0, 2
- adds r0, r1
- ldr r1, _0812BC4C @ =sub_812B724
- str r1, [r0]
- ldr r1, _0812BC50 @ =gBankInMenu
- ldrb r0, [r2]
- strb r0, [r1]
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0812BC44: .4byte gBattleBankFunc
-_0812BC48: .4byte gActiveBank
-_0812BC4C: .4byte sub_812B724
-_0812BC50: .4byte gBankInMenu
- thumb_func_end sub_812BC14
-
- thumb_func_start sub_812BC54
-sub_812BC54: @ 812BC54
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BC54
-
- thumb_func_start sub_812BC60
-sub_812BC60: @ 812BC60
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BC60
-
- thumb_func_start sub_812BC6C
-sub_812BC6C: @ 812BC6C
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BC6C
-
- thumb_func_start sub_812BC78
-sub_812BC78: @ 812BC78
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BC78
-
- thumb_func_start sub_812BC84
-sub_812BC84: @ 812BC84
- push {lr}
- ldr r0, _0812BCB0 @ =gHealthboxIDs
- ldr r1, _0812BCB4 @ =gActiveBank
- ldrb r1, [r1]
- adds r0, r1, r0
- ldrb r0, [r0]
- ldr r2, _0812BCB8 @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0812BCBC @ =gPlayerParty
- adds r1, r2
- movs r2, 0xB
- bl sub_8045A5C
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_0812BCB0: .4byte gHealthboxIDs
-_0812BCB4: .4byte gActiveBank
-_0812BCB8: .4byte gBattlePartyID
-_0812BCBC: .4byte gPlayerParty
- thumb_func_end sub_812BC84
-
- thumb_func_start sub_812BCC0
-sub_812BCC0: @ 812BCC0
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BCC0
-
- thumb_func_start sub_812BCCC
-sub_812BCCC: @ 812BCCC
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BCCC
-
- thumb_func_start sub_812BCD8
-sub_812BCD8: @ 812BCD8
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BCD8
-
- thumb_func_start sub_812BCE4
-sub_812BCE4: @ 812BCE4
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BCE4
-
- thumb_func_start sub_812BCF0
-sub_812BCF0: @ 812BCF0
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BCF0
-
- thumb_func_start sub_812BCFC
-sub_812BCFC: @ 812BCFC
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BCFC
-
- thumb_func_start sub_812BD08
-sub_812BD08: @ 812BD08
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD08
-
- thumb_func_start sub_812BD14
-sub_812BD14: @ 812BD14
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD14
-
- thumb_func_start sub_812BD20
-sub_812BD20: @ 812BD20
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD20
-
- thumb_func_start sub_812BD2C
-sub_812BD2C: @ 812BD2C
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD2C
-
- thumb_func_start sub_812BD38
-sub_812BD38: @ 812BD38
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD38
-
- thumb_func_start sub_812BD44
-sub_812BD44: @ 812BD44
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD44
-
- thumb_func_start sub_812BD50
-sub_812BD50: @ 812BD50
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD50
-
- thumb_func_start sub_812BD5C
-sub_812BD5C: @ 812BD5C
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD5C
-
- thumb_func_start sub_812BD68
-sub_812BD68: @ 812BD68
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD68
-
- thumb_func_start sub_812BD74
-sub_812BD74: @ 812BD74
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BD74
-
- thumb_func_start sub_812BD80
-sub_812BD80: @ 812BD80
- push {r4,lr}
- ldr r4, _0812BDBC @ =gActiveBank
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- movs r3, 0x3F
- cmp r0, 0
- bne _0812BD94
- movs r3, 0xC0
-_0812BD94:
- ldr r2, _0812BDC0 @ =gBattleBufferA
- ldrb r1, [r4]
- lsls r1, 9
- adds r0, r2, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- adds r2, 0x2
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 8
- orrs r0, r1
- lsls r1, r3, 24
- asrs r1, 24
- bl PlaySE12WithPanning
- bl SafariBufferExecCompleted
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BDBC: .4byte gActiveBank
-_0812BDC0: .4byte gBattleBufferA
- thumb_func_end sub_812BD80
-
- thumb_func_start sub_812BDC4
-sub_812BDC4: @ 812BDC4
- push {lr}
- ldr r2, _0812BDEC @ =gBattleBufferA
- ldr r0, _0812BDF0 @ =gActiveBank
- ldrb r1, [r0]
- lsls r1, 9
- adds r0, r2, 0x1
- adds r0, r1, r0
- ldrb r0, [r0]
- adds r2, 0x2
- adds r1, r2
- ldrb r1, [r1]
- lsls r1, 8
- orrs r0, r1
- bl PlayFanfare
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_0812BDEC: .4byte gBattleBufferA
-_0812BDF0: .4byte gActiveBank
- thumb_func_end sub_812BDC4
-
- thumb_func_start sub_812BDF4
-sub_812BDF4: @ 812BDF4
- push {lr}
- ldr r1, _0812BE24 @ =gBattlePartyID
- ldr r0, _0812BE28 @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0812BE2C @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x19
- bl PlayCry1
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_0812BE24: .4byte gBattlePartyID
-_0812BE28: .4byte gActiveBank
-_0812BE2C: .4byte gPlayerParty
- thumb_func_end sub_812BDF4
-
- thumb_func_start dp01t_2E_6_battle_intro
-dp01t_2E_6_battle_intro: @ 812BE30
- push {lr}
- ldr r1, _0812BE58 @ =gBattleBufferA
- ldr r0, _0812BE5C @ =gActiveBank
- ldrb r0, [r0]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- bl sub_80E43C0
- ldr r2, _0812BE60 @ =gUnknown_02024DE8
- ldrh r0, [r2]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r2]
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- .align 2, 0
-_0812BE58: .4byte gBattleBufferA
-_0812BE5C: .4byte gActiveBank
-_0812BE60: .4byte gUnknown_02024DE8
- thumb_func_end dp01t_2E_6_battle_intro
-
- thumb_func_start sub_812BE64
-sub_812BE64: @ 812BE64
- push {r4,r5,lr}
- ldr r5, _0812BEA0 @ =gHealthboxIDs
- ldr r4, _0812BEA4 @ =gActiveBank
- ldrb r1, [r4]
- adds r0, r1, r5
- ldrb r0, [r0]
- ldr r2, _0812BEA8 @ =gBattlePartyID
- lsls r1, 1
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0812BEAC @ =gPlayerParty
- adds r1, r2
- movs r2, 0xA
- bl sub_8045A5C
- ldrb r0, [r4]
- bl sub_804777C
- ldrb r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- bl sub_8043DFC
- bl SafariBufferExecCompleted
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BEA0: .4byte gHealthboxIDs
-_0812BEA4: .4byte gActiveBank
-_0812BEA8: .4byte gBattlePartyID
-_0812BEAC: .4byte gPlayerParty
- thumb_func_end sub_812BE64
-
- thumb_func_start sub_812BEB0
-sub_812BEB0: @ 812BEB0
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BEB0
-
- thumb_func_start sub_812BEBC
-sub_812BEBC: @ 812BEBC
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BEBC
-
- thumb_func_start sub_812BEC8
-sub_812BEC8: @ 812BEC8
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BEC8
-
- thumb_func_start sub_812BED4
-sub_812BED4: @ 812BED4
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BED4
-
- thumb_func_start sub_812BEE0
-sub_812BEE0: @ 812BEE0
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r5, _0812BF18 @ =gBattleBufferA
- ldr r6, _0812BF1C @ =gActiveBank
- ldrb r2, [r6]
- lsls r1, r2, 9
- adds r0, r5, 0x1
- adds r0, r1, r0
- ldrb r3, [r0]
- adds r0, r5, 0x2
- adds r0, r1, r0
- ldrb r4, [r0]
- adds r5, 0x3
- adds r1, r5
- ldrb r0, [r1]
- lsls r0, 8
- orrs r4, r0
- str r4, [sp]
- adds r0, r2, 0
- adds r1, r2, 0
- bl move_anim_start_t3
- lsls r0, 24
- cmp r0, 0
- beq _0812BF20
- bl SafariBufferExecCompleted
- b _0812BF2C
- .align 2, 0
-_0812BF18: .4byte gBattleBufferA
-_0812BF1C: .4byte gActiveBank
-_0812BF20:
- ldr r0, _0812BF34 @ =gBattleBankFunc
- ldrb r1, [r6]
- lsls r1, 2
- adds r1, r0
- ldr r0, _0812BF38 @ =sub_812B794
- str r0, [r1]
-_0812BF2C:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BF34: .4byte gBattleBankFunc
-_0812BF38: .4byte sub_812B794
- thumb_func_end sub_812BEE0
-
- thumb_func_start sub_812BF3C
-sub_812BF3C: @ 812BF3C
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BF3C
-
- thumb_func_start sub_812BF48
-sub_812BF48: @ 812BF48
- push {lr}
- bl SafariBufferExecCompleted
- pop {r0}
- bx r0
- thumb_func_end sub_812BF48
-
- thumb_func_start sub_812BF54
-sub_812BF54: @ 812BF54
- push {r4,lr}
- ldr r2, _0812BF98 @ =gBattleOutcome
- ldr r1, _0812BF9C @ =gBattleBufferA
- ldr r4, _0812BFA0 @ =gActiveBank
- ldrb r0, [r4]
- lsls r0, 9
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- movs r0, 0x5
- bl FadeOutMapMusic
- movs r0, 0x3
- bl BeginFastPaletteFade
- bl SafariBufferExecCompleted
- ldr r0, _0812BFA4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x6
- ands r0, r1
- cmp r0, 0x2
- bne _0812BF90
- ldr r0, _0812BFA8 @ =gBattleBankFunc
- ldrb r1, [r4]
- lsls r1, 2
- adds r1, r0
- ldr r0, _0812BFAC @ =sub_812B6AC
- str r0, [r1]
-_0812BF90:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812BF98: .4byte gBattleOutcome
-_0812BF9C: .4byte gBattleBufferA
-_0812BFA0: .4byte gActiveBank
-_0812BFA4: .4byte gBattleTypeFlags
-_0812BFA8: .4byte gBattleBankFunc
-_0812BFAC: .4byte sub_812B6AC
- thumb_func_end sub_812BF54
-
- thumb_func_start nullsub_78
-nullsub_78: @ 812BFB0
- bx lr
- thumb_func_end nullsub_78
-
- .align 2, 0 @ Don't pad with nop.
+ .align 2, 0 @ Don't pad with nop.
+ \ No newline at end of file
diff --git a/asm/battle_anim_812C144.s b/asm/battle_anim_812C144.s
index bae3d9bc2..4562ad2f5 100644
--- a/asm/battle_anim_812C144.s
+++ b/asm/battle_anim_812C144.s
@@ -90,7 +90,7 @@ sub_812C1D0: @ 812C1D0
adds r5, r0, 0
lsls r5, 24
lsrs r5, 24
- ldr r6, _0812C21C @ =gBattleAnimEnemyMonIndex
+ ldr r6, _0812C21C @ =gBattleAnimBankTarget
ldrb r0, [r6]
movs r1, 0x2
bl sub_8077ABC
@@ -120,7 +120,7 @@ sub_812C1D0: @ 812C1D0
pop {r0}
bx r0
.align 2, 0
-_0812C21C: .4byte gBattleAnimEnemyMonIndex
+_0812C21C: .4byte gBattleAnimBankTarget
thumb_func_end sub_812C1D0
thumb_func_start sub_812C220
@@ -135,7 +135,7 @@ sub_812C220: @ 812C220
strh r0, [r4, 0x30]
ldr r1, _0812C25C @ =sub_812C268
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r1, _0812C260 @ =REG_BLDCNT
movs r2, 0xFD
lsls r2, 6
@@ -211,7 +211,7 @@ sub_812C2BC: @ 812C2BC
push {r4-r7,lr}
sub sp, 0x4
adds r5, r0, 0
- ldr r4, _0812C348 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _0812C348 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -267,13 +267,13 @@ _0812C31A:
str r0, [r5, 0x1C]
ldr r1, _0812C354 @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
add sp, 0x4
pop {r4-r7}
pop {r0}
bx r0
.align 2, 0
-_0812C348: .4byte gBattleAnimEnemyMonIndex
+_0812C348: .4byte gBattleAnimBankTarget
_0812C34C: .4byte gBattleAnimArgs
_0812C350: .4byte sub_8078B34
_0812C354: .4byte move_anim_8072740
@@ -797,7 +797,7 @@ sub_812C720: @ 812C720
adds r4, r0, 0
movs r1, 0x1
bl sub_80787B0
- ldr r0, _0812C784 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0812C784 @ =gBattleAnimBankTarget
ldrb r0, [r0]
mov r5, sp
adds r5, 0x2
@@ -805,7 +805,7 @@ sub_812C720: @ 812C720
mov r2, sp
adds r3, r5, 0
bl sub_807A3FC
- ldr r0, _0812C788 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812C788 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -839,8 +839,8 @@ _0812C754:
pop {r0}
bx r0
.align 2, 0
-_0812C784: .4byte gBattleAnimEnemyMonIndex
-_0812C788: .4byte gBattleAnimPlayerMonIndex
+_0812C784: .4byte gBattleAnimBankTarget
+_0812C788: .4byte gBattleAnimBankAttacker
_0812C78C: .4byte gBattleAnimArgs
_0812C790: .4byte 0x0000ffce
_0812C794: .4byte sub_812C798
@@ -862,7 +862,7 @@ sub_812C798: @ 812C798
str r0, [r4, 0x1C]
ldr r1, _0812C7C4 @ =sub_812C7C8
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
_0812C7BA:
pop {r4}
pop {r0}
@@ -929,7 +929,7 @@ sub_812C80C: @ 812C80C
str r0, [r4, 0x1C]
ldr r1, _0812C844 @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
pop {r4,r5}
pop {r0}
bx r0
@@ -958,7 +958,7 @@ sub_812C848: @ 812C848
lsls r0, 24
cmp r0, 0
bne _0812C89C
- ldr r0, _0812C888 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812C888 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -968,7 +968,7 @@ sub_812C848: @ 812C848
b _0812C8A2
.align 2, 0
_0812C884: .4byte gBattleAnimArgs
-_0812C888: .4byte gBattleAnimPlayerMonIndex
+_0812C888: .4byte gBattleAnimBankAttacker
_0812C88C:
movs r1, 0x4
ldrsh r0, [r5, r1]
@@ -1058,7 +1058,7 @@ sub_812C924: @ 812C924
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- ldr r0, _0812C940 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0812C940 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -1069,7 +1069,7 @@ sub_812C924: @ 812C924
movs r0, 0
b _0812C94C
.align 2, 0
-_0812C940: .4byte gBattleAnimEnemyMonIndex
+_0812C940: .4byte gBattleAnimBankTarget
_0812C944: .4byte gBattleAnimArgs
_0812C948:
ldr r1, _0812C95C @ =gBattleAnimArgs
@@ -1307,7 +1307,7 @@ sub_812CAFC: @ 812CAFC
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0812CB28
- ldr r4, _0812CB74 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _0812CB74 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -1358,7 +1358,7 @@ _0812CB28:
b _0812CB8A
.align 2, 0
_0812CB70: .4byte gBattleAnimArgs
-_0812CB74: .4byte gBattleAnimPlayerMonIndex
+_0812CB74: .4byte gBattleAnimBankAttacker
_0812CB78: .4byte 0x000003ff
_0812CB7C: .4byte 0xfffffc00
_0812CB80: .4byte 0x0000fff4
@@ -1553,13 +1553,13 @@ sub_812CCE8: @ 812CCE8
ldrsh r0, [r6, r1]
cmp r0, 0
bne _0812CD04
- ldr r4, _0812CD00 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _0812CD00 @ =gBattleAnimBankAttacker
b _0812CD06
.align 2, 0
_0812CCFC: .4byte gBattleAnimArgs
-_0812CD00: .4byte gBattleAnimPlayerMonIndex
+_0812CD00: .4byte gBattleAnimBankAttacker
_0812CD04:
- ldr r4, _0812CD58 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _0812CD58 @ =gBattleAnimBankTarget
_0812CD06:
ldrb r0, [r4]
movs r1, 0
@@ -1602,7 +1602,7 @@ _0812CD3E:
pop {r0}
bx r0
.align 2, 0
-_0812CD58: .4byte gBattleAnimEnemyMonIndex
+_0812CD58: .4byte gBattleAnimBankTarget
_0812CD5C: .4byte gBattleAnimArgs
_0812CD60: .4byte sub_812CD64
thumb_func_end sub_812CCE8
@@ -1675,14 +1675,14 @@ sub_812CDC8: @ 812CDC8
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0812CDF4
- ldr r4, _0812CDF0 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _0812CDF0 @ =gBattleAnimBankAttacker
b _0812CDF6
.align 2, 0
_0812CDE8: .4byte gTasks
_0812CDEC: .4byte gBattleAnimArgs
-_0812CDF0: .4byte gBattleAnimPlayerMonIndex
+_0812CDF0: .4byte gBattleAnimBankAttacker
_0812CDF4:
- ldr r4, _0812CE3C @ =gBattleAnimEnemyMonIndex
+ ldr r4, _0812CE3C @ =gBattleAnimBankTarget
_0812CDF6:
ldrb r0, [r4]
bl sub_8077FC0
@@ -1718,7 +1718,7 @@ _0812CE20:
ldr r0, _0812CE44 @ =gUnknown_030042C0
b _0812CE4A
.align 2, 0
-_0812CE3C: .4byte gBattleAnimEnemyMonIndex
+_0812CE3C: .4byte gBattleAnimBankTarget
_0812CE40: .4byte gBattleAnimArgs
_0812CE44: .4byte gUnknown_030042C0
_0812CE48:
@@ -1975,7 +1975,7 @@ sub_812D008: @ 812D008
movs r5, 0
strh r5, [r4, 0x8]
strh r5, [r4, 0xA]
- ldr r6, _0812D060 @ =gBattleAnimPlayerMonIndex
+ ldr r6, _0812D060 @ =gBattleAnimBankAttacker
ldrb r0, [r6]
movs r1, 0x2
bl sub_8077ABC
@@ -1994,7 +1994,7 @@ sub_812D008: @ 812D008
strh r0, [r4, 0x12]
strh r5, [r4, 0x14]
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -2005,7 +2005,7 @@ sub_812D008: @ 812D008
bx r0
.align 2, 0
_0812D05C: .4byte gTasks
-_0812D060: .4byte gBattleAnimPlayerMonIndex
+_0812D060: .4byte gBattleAnimBankAttacker
_0812D064: .4byte 0x0000ffec
_0812D068: .4byte sub_812D06C
thumb_func_end sub_812D008
@@ -2350,7 +2350,7 @@ _0812D2F0:
bne _0812D33C
ldr r1, _0812D344 @ =move_anim_8072740
adds r0, r5, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldrh r0, [r5, 0x24]
ldrh r2, [r5, 0x20]
adds r0, r2
@@ -2364,7 +2364,7 @@ _0812D2F0:
strh r1, [r5, 0x26]
movs r0, 0x14
strh r0, [r5, 0x2E]
- ldr r4, _0812D348 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _0812D348 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -2385,7 +2385,7 @@ _0812D33C:
bx r0
.align 2, 0
_0812D344: .4byte move_anim_8072740
-_0812D348: .4byte gBattleAnimEnemyMonIndex
+_0812D348: .4byte gBattleAnimBankTarget
_0812D34C: .4byte sub_8078B34
thumb_func_end sub_812D294
@@ -2410,7 +2410,7 @@ sub_812D350: @ 812D350
_0812D370: .4byte gTasks
_0812D374:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -2442,7 +2442,7 @@ sub_812D3AC: @ 812D3AC
push {r4-r6,lr}
adds r5, r0, 0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r6, r0, 24
movs r1, 0x2E
@@ -2461,7 +2461,7 @@ _0812D3CC:
beq _0812D490
b _0812D4AE
_0812D3D6:
- ldr r4, _0812D408 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _0812D408 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -2483,7 +2483,7 @@ _0812D3D6:
strh r0, [r5, 0x32]
b _0812D484
.align 2, 0
-_0812D408: .4byte gBattleAnimPlayerMonIndex
+_0812D408: .4byte gBattleAnimBankAttacker
_0812D40C:
ldrh r0, [r5, 0x30]
adds r0, 0x60
@@ -2575,7 +2575,7 @@ _0812D4AE:
sub_812D4B4: @ 812D4B4
push {r4,lr}
adds r4, r0, 0
- ldr r0, _0812D4CC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812D4CC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -2584,7 +2584,7 @@ sub_812D4B4: @ 812D4B4
ldr r0, _0812D4D0 @ =0x0000fff0
b _0812D4D8
.align 2, 0
-_0812D4CC: .4byte gBattleAnimPlayerMonIndex
+_0812D4CC: .4byte gBattleAnimBankAttacker
_0812D4D0: .4byte 0x0000fff0
_0812D4D4:
movs r0, 0x80
@@ -2609,7 +2609,7 @@ sub_812D4EC: @ 812D4EC
ldrh r0, [r4, 0x2E]
adds r0, 0x48
strh r0, [r4, 0x2E]
- ldr r0, _0812D50C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812D50C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -2620,7 +2620,7 @@ sub_812D4EC: @ 812D4EC
asrs r0, 20
b _0812D518
.align 2, 0
-_0812D50C: .4byte gBattleAnimPlayerMonIndex
+_0812D50C: .4byte gBattleAnimBankAttacker
_0812D510:
ldrh r0, [r4, 0x2E]
lsls r0, 16
@@ -2830,7 +2830,7 @@ sub_812D674: @ 812D674
cmp r0, 0
bne _0812D6B4
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -2874,7 +2874,7 @@ sub_812D6CC: @ 812D6CC
cmp r0, 0
bne _0812D70C
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -2920,7 +2920,7 @@ _0812D736:
movs r0, 0x90
lsls r0, 4
strh r0, [r4, 0x30]
- ldr r0, _0812D75C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812D75C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
movs r1, 0x3
bl sub_8077ABC
@@ -2932,7 +2932,7 @@ _0812D736:
strh r0, [r4, 0x2E]
b _0812D788
.align 2, 0
-_0812D75C: .4byte gBattleAnimPlayerMonIndex
+_0812D75C: .4byte gBattleAnimBankAttacker
_0812D760:
ldrh r2, [r4, 0x30]
lsls r1, r2, 16
@@ -2975,7 +2975,7 @@ sub_812D790: @ 812D790
cmp r0, 0
bne _0812D7D0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -3044,7 +3044,7 @@ _0812D834:
ldr r1, _0812D850 @ =REG_MOSAIC
movs r0, 0
strh r0, [r1]
- ldr r0, _0812D854 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812D854 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -3055,7 +3055,7 @@ _0812D834:
b _0812D85E
.align 2, 0
_0812D850: .4byte REG_MOSAIC
-_0812D854: .4byte gBattleAnimPlayerMonIndex
+_0812D854: .4byte gBattleAnimBankAttacker
_0812D858: .4byte REG_BG1CNT
_0812D85C:
ldr r0, _0812D87C @ =REG_BG2CNT
@@ -3111,9 +3111,9 @@ _0812D8BC:
.align 2, 0
_0812D8C0: .4byte REG_MOSAIC
_0812D8C4:
- ldr r5, _0812D8F4 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _0812D8F4 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
- ldr r1, _0812D8F8 @ =gBattleAnimEnemyMonIndex
+ ldr r1, _0812D8F8 @ =gBattleAnimBankTarget
ldrb r1, [r1]
mov r2, r8
lsls r4, r2, 2
@@ -3133,8 +3133,8 @@ _0812D8C4:
movs r1, 0
b _0812D906
.align 2, 0
-_0812D8F4: .4byte gBattleAnimPlayerMonIndex
-_0812D8F8: .4byte gBattleAnimEnemyMonIndex
+_0812D8F4: .4byte gBattleAnimBankAttacker
+_0812D8F8: .4byte gBattleAnimBankTarget
_0812D8FC:
ldrb r0, [r5]
bl GetBankIdentity
@@ -3145,7 +3145,7 @@ _0812D906:
lsls r1, 2
adds r1, r0
ldr r2, _0812D9D0 @ =gBattleMonForms
- ldr r0, _0812D9D4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812D9D4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r0, r2
ldrb r0, [r0]
@@ -3229,7 +3229,7 @@ _0812D9A2:
beq _0812D9F0
ldr r3, _0812D9E4 @ =gSprites
ldr r4, _0812D9E8 @ =gObjectBankIDs
- ldr r2, _0812D9D4 @ =gBattleAnimPlayerMonIndex
+ ldr r2, _0812D9D4 @ =gBattleAnimBankAttacker
ldrb r0, [r2]
adds r0, r4
ldrb r1, [r0]
@@ -3244,7 +3244,7 @@ _0812D9A2:
.align 2, 0
_0812D9CC: .4byte gUnknown_081FAF4C
_0812D9D0: .4byte gBattleMonForms
-_0812D9D4: .4byte gBattleAnimPlayerMonIndex
+_0812D9D4: .4byte gBattleAnimBankAttacker
_0812D9D8: .4byte 0x040000d4
_0812D9DC: .4byte 0x84000200
_0812D9E0: .4byte 0x02019348
@@ -3254,7 +3254,7 @@ _0812D9EC: .4byte gSpriteAffineAnimTable_81E7C18
_0812D9F0:
ldr r3, _0812DA34 @ =gSprites
ldr r4, _0812DA38 @ =gObjectBankIDs
- ldr r2, _0812DA3C @ =gBattleAnimPlayerMonIndex
+ ldr r2, _0812DA3C @ =gBattleAnimBankAttacker
ldrb r0, [r2]
adds r0, r4
ldrb r1, [r0]
@@ -3290,7 +3290,7 @@ _0812DA2A:
.align 2, 0
_0812DA34: .4byte gSprites
_0812DA38: .4byte gObjectBankIDs
-_0812DA3C: .4byte gBattleAnimPlayerMonIndex
+_0812DA3C: .4byte gBattleAnimBankAttacker
_0812DA40: .4byte gSpriteAffineAnimTable_81E7BEC
_0812DA44: .4byte gTasks
_0812DA48:
@@ -3329,7 +3329,7 @@ _0812DA84:
ldr r1, _0812DAA0 @ =REG_MOSAIC
movs r0, 0
strh r0, [r1]
- ldr r0, _0812DAA4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812DAA4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -3340,7 +3340,7 @@ _0812DA84:
b _0812DAAE
.align 2, 0
_0812DAA0: .4byte REG_MOSAIC
-_0812DAA4: .4byte gBattleAnimPlayerMonIndex
+_0812DAA4: .4byte gBattleAnimBankAttacker
_0812DAA8: .4byte REG_BG1CNT
_0812DAAC:
ldr r2, _0812DB08 @ =REG_BG2CNT
@@ -3354,7 +3354,7 @@ _0812DAAE:
lsls r0, 24
cmp r0, 0
bne _0812DAF4
- ldr r4, _0812DB0C @ =gBattleAnimPlayerMonIndex
+ ldr r4, _0812DB0C @ =gBattleAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -3390,7 +3390,7 @@ _0812DAFA:
bx r0
.align 2, 0
_0812DB08: .4byte REG_BG2CNT
-_0812DB0C: .4byte gBattleAnimPlayerMonIndex
+_0812DB0C: .4byte gBattleAnimBankAttacker
_0812DB10: .4byte gTasks
_0812DB14: .4byte 0x02017800
thumb_func_end sub_812D7E8
@@ -3403,7 +3403,7 @@ c3_80DFBE4: @ 812DB18
ldr r4, _0812DB48 @ =gBattleAnimArgs
ldr r3, _0812DB4C @ =gSprites
ldr r2, _0812DB50 @ =gObjectBankIDs
- ldr r1, _0812DB54 @ =gBattleAnimPlayerMonIndex
+ ldr r1, _0812DB54 @ =gBattleAnimBankAttacker
ldrb r1, [r1]
adds r1, r2
ldrb r2, [r1]
@@ -3424,7 +3424,7 @@ c3_80DFBE4: @ 812DB18
_0812DB48: .4byte gBattleAnimArgs
_0812DB4C: .4byte gSprites
_0812DB50: .4byte gObjectBankIDs
-_0812DB54: .4byte gBattleAnimPlayerMonIndex
+_0812DB54: .4byte gBattleAnimBankAttacker
thumb_func_end c3_80DFBE4
thumb_func_start sub_812DB58
@@ -3433,9 +3433,9 @@ sub_812DB58: @ 812DB58
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- ldr r0, _0812DB7C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812DB7C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
- ldr r1, _0812DB80 @ =gBattleAnimEnemyMonIndex
+ ldr r1, _0812DB80 @ =gBattleAnimBankTarget
ldrb r1, [r1]
movs r2, 0x1
bl sub_8031FC4
@@ -3445,8 +3445,8 @@ sub_812DB58: @ 812DB58
pop {r0}
bx r0
.align 2, 0
-_0812DB7C: .4byte gBattleAnimPlayerMonIndex
-_0812DB80: .4byte gBattleAnimEnemyMonIndex
+_0812DB7C: .4byte gBattleAnimBankAttacker
+_0812DB80: .4byte gBattleAnimBankTarget
thumb_func_end sub_812DB58
thumb_func_start sub_812DB84
@@ -3572,7 +3572,7 @@ _0812DC90: .4byte gUnknown_030042C0
_0812DC94: .4byte 0x0000ffc8
_0812DC98: .4byte gUnknown_030041B4
_0812DC9C:
- ldr r0, _0812DCB4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812DCB4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -3583,7 +3583,7 @@ _0812DC9C:
adds r0, r4, 0
b _0812DCC6
.align 2, 0
-_0812DCB4: .4byte gBattleAnimPlayerMonIndex
+_0812DCB4: .4byte gBattleAnimBankAttacker
_0812DCB8: .4byte gUnknown_030042C0
_0812DCBC: .4byte 0x0000ff79
_0812DCC0:
@@ -3856,7 +3856,7 @@ sub_812DEAC: @ 812DEAC
lsls r0, 16
lsrs r5, r0, 16
_0812DED6:
- ldr r4, _0812DFD0 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _0812DFD0 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl sub_8077ABC
@@ -3975,7 +3975,7 @@ _0812DED6:
pop {r0}
bx r0
.align 2, 0
-_0812DFD0: .4byte gBattleAnimPlayerMonIndex
+_0812DFD0: .4byte gBattleAnimBankAttacker
_0812DFD4: .4byte gBattleAnimArgs
_0812DFD8: .4byte gBattleAnimSpriteTemplate_84025EC
_0812DFDC: .4byte gSprites
@@ -4292,7 +4292,7 @@ _0812E254: .4byte gUnknown_030042C0
_0812E258: .4byte 0x0000ffc8
_0812E25C: .4byte gUnknown_030041B4
_0812E260:
- ldr r0, _0812E2A0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0812E2A0 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankIdentity
lsls r0, 24
@@ -4326,7 +4326,7 @@ _0812E296:
ldr r2, _0812E2B0 @ =0x0000ffec
b _0812E2C8
.align 2, 0
-_0812E2A0: .4byte gBattleAnimEnemyMonIndex
+_0812E2A0: .4byte gBattleAnimBankTarget
_0812E2A4: .4byte gUnknown_030042C0
_0812E2A8: .4byte 0x0000ff65
_0812E2AC: .4byte 0x0000ff8d
@@ -4377,7 +4377,7 @@ _0812E300:
adds r5, r0, r1
movs r0, 0
strh r0, [r5, 0xE]
- ldr r0, _0812E338 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0812E338 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4397,7 +4397,7 @@ _0812E300:
b _0812E356
.align 2, 0
_0812E334: .4byte gTasks
-_0812E338: .4byte gBattleAnimEnemyMonIndex
+_0812E338: .4byte gBattleAnimBankTarget
_0812E33C: .4byte gUnknown_030042C0
_0812E340: .4byte gUnknown_08402604
_0812E344:
@@ -4588,7 +4588,7 @@ sub_812E498: @ 812E498
cmp r0, 0
bne _0812E4D8
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -4643,7 +4643,7 @@ _0812E50E:
ldrh r0, [r4, 0x32]
adds r0, 0x80
strh r0, [r4, 0x32]
- ldr r0, _0812E53C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812E53C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4655,7 +4655,7 @@ _0812E50E:
negs r0, r0
b _0812E546
.align 2, 0
-_0812E53C: .4byte gBattleAnimPlayerMonIndex
+_0812E53C: .4byte gBattleAnimBankAttacker
_0812E540:
ldrh r0, [r4, 0x30]
lsls r0, 16
@@ -4740,7 +4740,7 @@ _0812E5AC:
subs r0, 0x1
strh r0, [r4, 0x14]
ldrb r0, [r5]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -4748,12 +4748,12 @@ _0812E5AC:
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0812E5F8
- ldr r0, _0812E5F4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812E5F4 @ =gBattleAnimBankAttacker
b _0812E5FA
.align 2, 0
-_0812E5F4: .4byte gBattleAnimPlayerMonIndex
+_0812E5F4: .4byte gBattleAnimBankAttacker
_0812E5F8:
- ldr r0, _0812E630 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0812E630 @ =gBattleAnimBankTarget
_0812E5FA:
ldrb r0, [r0]
bl GetBankSide
@@ -4782,7 +4782,7 @@ _0812E628:
pop {r0}
bx r0
.align 2, 0
-_0812E630: .4byte gBattleAnimEnemyMonIndex
+_0812E630: .4byte gBattleAnimBankTarget
_0812E634: .4byte sub_812E638
thumb_func_end sub_812E568
@@ -4971,7 +4971,7 @@ _0812E798:
sub_812E7A0: @ 812E7A0
push {r4,lr}
adds r4, r0, 0
- ldr r0, _0812E7BC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812E7BC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4983,7 +4983,7 @@ sub_812E7A0: @ 812E7A0
ldrh r0, [r1]
b _0812E7CE
.align 2, 0
-_0812E7BC: .4byte gBattleAnimPlayerMonIndex
+_0812E7BC: .4byte gBattleAnimBankAttacker
_0812E7C0: .4byte gBattleAnimArgs
_0812E7C4:
movs r0, 0xF0
@@ -5015,7 +5015,7 @@ sub_812E7F0: @ 812E7F0
ldrh r0, [r4, 0x2E]
adds r0, 0x3
strh r0, [r4, 0x2E]
- ldr r0, _0812E830 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812E830 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -5041,7 +5041,7 @@ _0812E822:
bl Sin
b _0812E858
.align 2, 0
-_0812E830: .4byte gBattleAnimPlayerMonIndex
+_0812E830: .4byte gBattleAnimBankAttacker
_0812E834:
ldrh r1, [r4, 0x20]
subs r1, 0x5
@@ -5091,7 +5091,7 @@ sub_812E860: @ 812E860
strh r0, [r4, 0x24]
ldr r0, _0812E8AC @ =gBattleAnimArgs
ldrb r0, [r0]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -5330,7 +5330,7 @@ sub_812EA4C: @ 812EA4C
ldrsh r0, [r6, r2]
cmp r0, 0
bne _0812EA80
- ldr r4, _0812EAA8 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _0812EAA8 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -5364,7 +5364,7 @@ _0812EA80:
b _0812EB0A
.align 2, 0
_0812EAA4: .4byte gBattleAnimArgs
-_0812EAA8: .4byte gBattleAnimPlayerMonIndex
+_0812EAA8: .4byte gBattleAnimBankAttacker
_0812EAAC:
ldrh r1, [r5, 0x30]
lsls r0, r1, 16
@@ -5441,20 +5441,20 @@ sub_812EB10: @ 812EB10
mov r8, r0
cmp r1, 0
bne _0812EB4C
- ldr r0, _0812EB48 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812EB48 @ =gBattleAnimBankAttacker
b _0812EB4E
.align 2, 0
_0812EB40: .4byte gTasks
_0812EB44: .4byte gBattleAnimArgs
-_0812EB48: .4byte gBattleAnimPlayerMonIndex
+_0812EB48: .4byte gBattleAnimBankAttacker
_0812EB4C:
- ldr r0, _0812EB88 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0812EB88 @ =gBattleAnimBankTarget
_0812EB4E:
ldrb r0, [r0]
strh r0, [r2, 0x1E]
mov r1, r8
ldrb r0, [r1]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _0812EB8C @ =gTasks
@@ -5478,7 +5478,7 @@ _0812EB4E:
lsls r2, r5, 4
b _0812EBF8
.align 2, 0
-_0812EB88: .4byte gBattleAnimEnemyMonIndex
+_0812EB88: .4byte gBattleAnimBankTarget
_0812EB8C: .4byte gTasks
_0812EB90:
cmp r0, 0x2
@@ -5893,7 +5893,7 @@ _0812EEA0: .4byte 0x00003f3f
sub_812EEA4: @ 812EEA4
push {r4,r5,lr}
adds r4, r0, 0
- ldr r5, _0812EEE0 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _0812EEE0 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x2
bl sub_8077ABC
@@ -5919,7 +5919,7 @@ sub_812EEA4: @ 812EEA4
pop {r0}
bx r0
.align 2, 0
-_0812EEE0: .4byte gBattleAnimPlayerMonIndex
+_0812EEE0: .4byte gBattleAnimBankAttacker
_0812EEE4: .4byte gBattleAnimArgs
_0812EEE8: .4byte sub_812EEEC
thumb_func_end sub_812EEA4
@@ -5954,15 +5954,15 @@ sub_812EEEC: @ 812EEEC
cmp r0, 0xC3
ble _0812EF38
_0812EF26:
- ldr r0, _0812EF34 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812EF34 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8079E90
subs r0, 0x1
b _0812EF42
.align 2, 0
-_0812EF34: .4byte gBattleAnimPlayerMonIndex
+_0812EF34: .4byte gBattleAnimBankAttacker
_0812EF38:
- ldr r0, _0812EF84 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812EF84 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8079E90
adds r0, 0x1
@@ -6000,7 +6000,7 @@ _0812EF42:
strh r0, [r4, 0x38]
b _0812EFB8
.align 2, 0
-_0812EF84: .4byte gBattleAnimPlayerMonIndex
+_0812EF84: .4byte gBattleAnimBankAttacker
_0812EF88:
cmp r2, 0x1
bne _0812EFB8
@@ -6046,7 +6046,7 @@ sub_812EFC8: @ 812EFC8
lsrs r0, 24
str r0, [sp, 0x10]
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
bl IsContest
lsls r0, 24
cmp r0, 0
@@ -6064,7 +6064,7 @@ sub_812EFC8: @ 812EFC8
.align 2, 0
_0812F000: .4byte 0x02019348
_0812F004:
- ldr r0, _0812F070 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812F070 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -6073,7 +6073,7 @@ _0812F004:
movs r0, 0
str r0, [sp, 0x14]
ldr r6, _0812F074 @ =gBattlePartyID
- ldr r4, _0812F078 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _0812F078 @ =gBattleAnimBankTarget
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
@@ -6114,9 +6114,9 @@ _0812F004:
adds r0, r7
b _0812F092
.align 2, 0
-_0812F070: .4byte gBattleAnimPlayerMonIndex
+_0812F070: .4byte gBattleAnimBankAttacker
_0812F074: .4byte gBattlePartyID
-_0812F078: .4byte gBattleAnimEnemyMonIndex
+_0812F078: .4byte gBattleAnimBankTarget
_0812F07C: .4byte gPlayerParty
_0812F080: .4byte 0x02017800
_0812F084:
@@ -6145,7 +6145,7 @@ _0812F0AC:
movs r2, 0x1
str r2, [sp, 0x14]
ldr r6, _0812F10C @ =gBattlePartyID
- ldr r4, _0812F110 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _0812F110 @ =gBattleAnimBankTarget
ldrb r0, [r4]
lsls r0, 1
adds r0, r6
@@ -6188,7 +6188,7 @@ _0812F0AC:
b _0812F12C
.align 2, 0
_0812F10C: .4byte gBattlePartyID
-_0812F110: .4byte gBattleAnimEnemyMonIndex
+_0812F110: .4byte gBattleAnimBankTarget
_0812F114: .4byte gEnemyParty
_0812F118: .4byte 0x02017800
_0812F11C: .4byte gPlayerParty
@@ -6212,12 +6212,12 @@ _0812F13A:
_0812F13C:
mov r10, r3
_0812F13E:
- ldr r0, _0812F21C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812F21C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8079ED4
lsls r0, 24
lsrs r7, r0, 24
- ldr r5, _0812F21C @ =gBattleAnimPlayerMonIndex
+ ldr r5, _0812F21C @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
bl sub_8077ABC
@@ -6318,7 +6318,7 @@ _0812F13E:
bx r0
.align 2, 0
_0812F218: .4byte 0x0000ffec
-_0812F21C: .4byte gBattleAnimPlayerMonIndex
+_0812F21C: .4byte gBattleAnimBankAttacker
_0812F220: .4byte gSprites
_0812F224: .4byte 0x00007fff
_0812F228: .4byte REG_BLDCNT
@@ -6455,14 +6455,14 @@ sub_812F314: @ 812F314
ldrsh r0, [r0, r1]
cmp r0, 0
bne _0812F340
- ldr r0, _0812F33C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812F33C @ =gBattleAnimBankAttacker
b _0812F342
.align 2, 0
_0812F334: .4byte gTasks
_0812F338: .4byte gBattleAnimArgs
-_0812F33C: .4byte gBattleAnimPlayerMonIndex
+_0812F33C: .4byte gBattleAnimBankAttacker
_0812F340:
- ldr r0, _0812F3C0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0812F3C0 @ =gBattleAnimBankTarget
_0812F342:
ldrb r5, [r0]
movs r6, 0
@@ -6504,7 +6504,7 @@ _0812F388:
strh r0, [r4, 0x24]
ldr r0, _0812F3C4 @ =gBattleAnimArgs
ldrb r0, [r0]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r4, 0x26]
@@ -6525,7 +6525,7 @@ _0812F388:
ldr r0, _0812F3D8 @ =gUnknown_030041B4
b _0812F3EE
.align 2, 0
-_0812F3C0: .4byte gBattleAnimEnemyMonIndex
+_0812F3C0: .4byte gBattleAnimBankTarget
_0812F3C4: .4byte gBattleAnimArgs
_0812F3C8: .4byte REG_BG1HOFS
_0812F3CC: .4byte REG_BLDCNT
@@ -6975,7 +6975,7 @@ sub_812F724: @ 812F724
strh r0, [r4, 0x8]
ldr r0, _0812F760 @ =gBattleAnimArgs
ldrb r0, [r0]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -7250,7 +7250,7 @@ sub_812F948: @ 812F948
ldrb r1, [r6]
adds r0, r5, 0
bl StartSpriteAffineAnim
- ldr r0, _0812F9A4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0812F9A4 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -7260,7 +7260,7 @@ sub_812F948: @ 812F948
negs r0, r0
strh r0, [r6, 0x2]
_0812F96E:
- ldr r4, _0812F9A8 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _0812F9A8 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -7284,8 +7284,8 @@ _0812F96E:
bx r0
.align 2, 0
_0812F9A0: .4byte gBattleAnimArgs
-_0812F9A4: .4byte gBattleAnimEnemyMonIndex
-_0812F9A8: .4byte gBattleAnimPlayerMonIndex
+_0812F9A4: .4byte gBattleAnimBankTarget
+_0812F9A8: .4byte gBattleAnimBankAttacker
_0812F9AC: .4byte sub_80DA48C
thumb_func_end sub_812F948
@@ -7674,7 +7674,7 @@ sub_812FC68: @ 812FC68
mov r1, r8
adds r4, r0, r1
ldr r1, _0812FCCC @ =gObjectBankIDs
- ldr r2, _0812FCD0 @ =gBattleAnimPlayerMonIndex
+ ldr r2, _0812FCD0 @ =gBattleAnimBankAttacker
ldrb r0, [r2]
adds r0, r1
ldrb r0, [r0]
@@ -7711,7 +7711,7 @@ _0812FCAC:
.align 2, 0
_0812FCC8: .4byte gTasks
_0812FCCC: .4byte gObjectBankIDs
-_0812FCD0: .4byte gBattleAnimPlayerMonIndex
+_0812FCD0: .4byte gBattleAnimBankAttacker
_0812FCD4: .4byte gBattleAnimArgs
_0812FCD8: .4byte 0xffff8000
_0812FCDC:
@@ -7822,14 +7822,14 @@ _0812FD9C:
ldrsh r0, [r4, r1]
cmp r0, 0
bne _0812FDC0
- ldr r0, _0812FDBC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0812FDBC @ =gBattleAnimBankAttacker
b _0812FDC2
.align 2, 0
_0812FDB4: .4byte gTasks
_0812FDB8: .4byte gBattleAnimArgs
-_0812FDBC: .4byte gBattleAnimPlayerMonIndex
+_0812FDBC: .4byte gBattleAnimBankAttacker
_0812FDC0:
- ldr r0, _0812FE10 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0812FE10 @ =gBattleAnimBankTarget
_0812FDC2:
ldrb r4, [r0]
adds r0, r4, 0
@@ -7851,7 +7851,7 @@ _0812FDC2:
strh r0, [r5, 0x14]
ldr r0, _0812FE14 @ =gBattleAnimArgs
ldrb r0, [r0]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -7865,7 +7865,7 @@ _0812FDC2:
pop {r0}
bx r0
.align 2, 0
-_0812FE10: .4byte gBattleAnimEnemyMonIndex
+_0812FE10: .4byte gBattleAnimBankTarget
_0812FE14: .4byte gBattleAnimArgs
_0812FE18: .4byte gUnknown_084028AC
_0812FE1C: .4byte sub_812FE20
@@ -8124,7 +8124,7 @@ sub_812FFE4: @ 812FFE4
ldrh r0, [r1, 0x2]
strh r0, [r4, 0xA]
ldrb r0, [r1]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
ldr r2, _08130034 @ =gSprites
@@ -8215,7 +8215,7 @@ sub_81300A4: @ 81300A4
lsrs r0, 24
movs r2, 0xD0
lsls r2, 1
- ldr r1, _081300E0 @ =gBattleAnimPlayerMonIndex
+ ldr r1, _081300E0 @ =gBattleAnimBankAttacker
ldrb r3, [r1]
ldr r1, _081300E4 @ =gBattleAnimArgs
ldrb r1, [r1]
@@ -8238,7 +8238,7 @@ sub_81300A4: @ 81300A4
pop {r0}
bx r0
.align 2, 0
-_081300E0: .4byte gBattleAnimPlayerMonIndex
+_081300E0: .4byte gBattleAnimBankAttacker
_081300E4: .4byte gBattleAnimArgs
_081300E8: .4byte gUnknown_08D2E014
_081300EC: .4byte gUnknown_08D2E170
@@ -8249,7 +8249,7 @@ _081300F0: .4byte gUnknown_08D2E150
sub_81300F4: @ 81300F4
push {r4-r6,lr}
adds r5, r0, 0
- ldr r6, _0813014C @ =gBattleAnimPlayerMonIndex
+ ldr r6, _0813014C @ =gBattleAnimBankAttacker
ldrb r0, [r6]
bl GetBankSide
lsls r0, 24
@@ -8289,7 +8289,7 @@ _08130110:
strh r0, [r5, 0x30]
b _08130180
.align 2, 0
-_0813014C: .4byte gBattleAnimPlayerMonIndex
+_0813014C: .4byte gBattleAnimBankAttacker
_08130150: .4byte gBattleAnimArgs
_08130154: .4byte 0x0000fd80
_08130158:
@@ -8314,7 +8314,7 @@ _08130172:
lsls r0, 2
strh r0, [r5, 0x2E]
_08130180:
- ldr r0, _081301AC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _081301AC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -8336,7 +8336,7 @@ _081301A0:
pop {r0}
bx r0
.align 2, 0
-_081301AC: .4byte gBattleAnimPlayerMonIndex
+_081301AC: .4byte gBattleAnimBankAttacker
_081301B0: .4byte sub_81301B4
thumb_func_end sub_81300F4
@@ -8403,7 +8403,7 @@ _0813021C:
strh r0, [r6, 0x14]
strh r1, [r6, 0x16]
_08130226:
- ldr r5, _0813025C @ =gBattleAnimPlayerMonIndex
+ ldr r5, _0813025C @ =gBattleAnimBankAttacker
ldrb r0, [r5]
bl GetBankSide
lsls r0, 24
@@ -8428,7 +8428,7 @@ _08130254:
adds r0, r4, r0
b _08130284
.align 2, 0
-_0813025C: .4byte gBattleAnimPlayerMonIndex
+_0813025C: .4byte gBattleAnimBankAttacker
_08130260:
ldrb r0, [r5]
movs r1, 0x2
@@ -8449,7 +8449,7 @@ _08130280:
subs r0, r4, r0
_08130284:
strh r0, [r6, 0x1E]
- ldr r5, _081302D8 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _081302D8 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0x3
bl sub_8077ABC
@@ -8468,7 +8468,7 @@ _081302A8:
asrs r0, 2
subs r0, r4, r0
strh r0, [r6, 0x20]
- ldr r4, _081302DC @ =gBattleAnimEnemyMonIndex
+ ldr r4, _081302DC @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -8487,8 +8487,8 @@ _081302A8:
pop {r0}
bx r0
.align 2, 0
-_081302D8: .4byte gBattleAnimPlayerMonIndex
-_081302DC: .4byte gBattleAnimEnemyMonIndex
+_081302D8: .4byte gBattleAnimBankAttacker
+_081302DC: .4byte gBattleAnimBankTarget
_081302E0: .4byte sub_81302E4
thumb_func_end sub_81301EC
@@ -8810,7 +8810,7 @@ sub_813051C: @ 813051C
strh r0, [r4, 0x2E]
ldr r1, _0813054C @ =move_anim_8072740
adds r0, r4, 0
- bl oamt_set_x3A_32
+ bl StoreSpriteCallbackInData6
ldr r0, _08130550 @ =sub_8078CC0
str r0, [r4, 0x1C]
pop {r4}
@@ -8837,7 +8837,7 @@ sub_8130554: @ 8130554
lsls r0, 3
ldr r1, _08130674 @ =gTasks
adds r7, r0, r1
- ldr r0, _08130678 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08130678 @ =gBattleAnimBankAttacker
mov r10, r0
ldrb r0, [r0]
movs r1, 0x2
@@ -8852,7 +8852,7 @@ sub_8130554: @ 8130554
lsls r0, 24
lsrs r0, 24
strh r0, [r7, 0x20]
- ldr r0, _0813067C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0813067C @ =gBattleAnimBankTarget
mov r8, r0
ldrb r0, [r0]
movs r1, 0x2
@@ -8962,8 +8962,8 @@ _0813066E:
b _08130696
.align 2, 0
_08130674: .4byte gTasks
-_08130678: .4byte gBattleAnimPlayerMonIndex
-_0813067C: .4byte gBattleAnimEnemyMonIndex
+_08130678: .4byte gBattleAnimBankAttacker
+_0813067C: .4byte gBattleAnimBankTarget
_08130680: .4byte gSpriteTemplate_84029AC
_08130684: .4byte gSprites
_08130688: .4byte 0x0000ffe0
@@ -9129,13 +9129,13 @@ sub_81307B0: @ 81307B0
adds r6, r0, 0
cmp r1, 0
bne _081307CC
- ldr r0, _081307C8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _081307C8 @ =gBattleAnimBankAttacker
b _081307CE
.align 2, 0
_081307C4: .4byte gBattleAnimArgs
-_081307C8: .4byte gBattleAnimPlayerMonIndex
+_081307C8: .4byte gBattleAnimBankAttacker
_081307CC:
- ldr r0, _08130834 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _08130834 @ =gBattleAnimBankTarget
_081307CE:
ldrb r5, [r0]
ldrh r2, [r4, 0x4]
@@ -9188,7 +9188,7 @@ _081307FC:
subs r0, 0x8
b _0813084A
.align 2, 0
-_08130834: .4byte gBattleAnimEnemyMonIndex
+_08130834: .4byte gBattleAnimBankTarget
_08130838: .4byte 0x000003ff
_0813083C: .4byte 0xfffffc00
_08130840:
@@ -9337,7 +9337,7 @@ _08130934:
ldrh r0, [r2, 0x2]
strh r0, [r4, 0x8]
ldrb r0, [r2]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
@@ -9461,13 +9461,13 @@ sub_8130A2C: @ 8130A2C
ldrsh r0, [r0, r1]
cmp r0, 0
bne _08130A48
- ldr r4, _08130A44 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _08130A44 @ =gBattleAnimBankAttacker
b _08130A4A
.align 2, 0
_08130A40: .4byte gBattleAnimArgs
-_08130A44: .4byte gBattleAnimPlayerMonIndex
+_08130A44: .4byte gBattleAnimBankAttacker
_08130A48:
- ldr r4, _08130A88 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _08130A88 @ =gBattleAnimBankTarget
_08130A4A:
ldrb r0, [r4]
movs r1, 0x2
@@ -9500,7 +9500,7 @@ _08130A6E:
pop {r0}
bx r0
.align 2, 0
-_08130A88: .4byte gBattleAnimEnemyMonIndex
+_08130A88: .4byte gBattleAnimBankTarget
_08130A8C: .4byte gBattleAnimArgs
_08130A90: .4byte sub_8130A94
thumb_func_end sub_8130A2C
@@ -9859,7 +9859,7 @@ sub_8130D20: @ 8130D20
ldr r0, _08130D7C @ =gTasks
adds r6, r1, r0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
strh r0, [r6, 0x26]
@@ -9872,7 +9872,7 @@ sub_8130D20: @ 8130D20
lsrs r7, r0, 24
cmp r7, 0x1
bne _08130D8C
- ldr r5, _08130D80 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _08130D80 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
bl sub_8077ABC
@@ -9892,14 +9892,14 @@ sub_8130D20: @ 8130D20
b _08130DAC
.align 2, 0
_08130D7C: .4byte gTasks
-_08130D80: .4byte gBattleAnimPlayerMonIndex
+_08130D80: .4byte gBattleAnimBankAttacker
_08130D84:
ldr r0, _08130D88 @ =0x0000ffff
b _08130DAA
.align 2, 0
_08130D88: .4byte 0x0000ffff
_08130D8C:
- ldr r0, _08130DA0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08130DA0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -9908,7 +9908,7 @@ _08130D8C:
ldr r0, _08130DA4 @ =0x0000ffff
b _08130DAA
.align 2, 0
-_08130DA0: .4byte gBattleAnimPlayerMonIndex
+_08130DA0: .4byte gBattleAnimBankAttacker
_08130DA4: .4byte 0x0000ffff
_08130DA8:
movs r0, 0x1
@@ -10153,13 +10153,13 @@ sub_8130F5C: @ 8130F5C
adds r0, r4, 0
movs r1, 0x1
bl sub_80787B0
- ldr r0, _08130F7C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08130F7C @ =gBattleAnimBankAttacker
b _08130F82
.align 2, 0
_08130F78: .4byte gBattleAnimArgs
-_08130F7C: .4byte gBattleAnimPlayerMonIndex
+_08130F7C: .4byte gBattleAnimBankAttacker
_08130F80:
- ldr r0, _08130FD8 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _08130FD8 @ =gBattleAnimBankTarget
_08130F82:
ldrb r0, [r0]
strh r0, [r4, 0x3C]
@@ -10204,7 +10204,7 @@ _08130FA6:
pop {r0}
bx r0
.align 2, 0
-_08130FD8: .4byte gBattleAnimEnemyMonIndex
+_08130FD8: .4byte gBattleAnimBankTarget
_08130FDC: .4byte sub_8130FE0
thumb_func_end sub_8130F5C
@@ -10545,7 +10545,7 @@ _08131260: .4byte gSpriteTemplate_8402500
sub_8131264: @ 8131264
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, _081312A0 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _081312A0 @ =gBattleAnimBankTarget
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -10571,7 +10571,7 @@ _08131290:
subs r1, r0
b _081312B6
.align 2, 0
-_081312A0: .4byte gBattleAnimEnemyMonIndex
+_081312A0: .4byte gBattleAnimBankTarget
_081312A4: .4byte gBattleAnimArgs
_081312A8:
ldr r2, _081312DC @ =gBattleAnimArgs
@@ -10615,7 +10615,7 @@ sub_81312E4: @ 81312E4
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r5, r0, 24
adds r2, r5, 0
@@ -10686,7 +10686,7 @@ _08131378:
.align 2, 0
_08131380: .4byte gSprites
_08131384:
- ldr r4, _081313F4 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _081313F4 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0
bl refresh_graphics_maybe
@@ -10743,7 +10743,7 @@ _081313E8:
pop {r0}
bx r0
.align 2, 0
-_081313F4: .4byte gBattleAnimPlayerMonIndex
+_081313F4: .4byte gBattleAnimBankAttacker
_081313F8: .4byte gSprites
_081313FC: .4byte gObjectBankIDs
_08131400: .4byte gSpriteAffineAnimTable_81E7C18
@@ -10756,7 +10756,7 @@ sub_8131408: @ 8131408
lsls r0, 24
lsrs r6, r0, 24
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r3, r0, 24
ldr r1, _08131434 @ =gTasks
@@ -10932,7 +10932,7 @@ _08131560: .4byte gSprites
sub_8131564: @ 8131564
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, _08131588 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _08131588 @ =gBattleAnimBankTarget
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -10947,7 +10947,7 @@ sub_8131564: @ 8131564
ldr r4, _0813158C @ =0x0000ff70
b _081315A0
.align 2, 0
-_08131588: .4byte gBattleAnimEnemyMonIndex
+_08131588: .4byte gBattleAnimBankTarget
_0813158C: .4byte 0x0000ff70
_08131590:
ldrb r0, [r4]
@@ -10958,7 +10958,7 @@ _08131590:
strb r0, [r1]
ldr r4, _081315BC @ =0x0000ffa0
_081315A0:
- ldr r0, _081315C0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _081315C0 @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0x3
bl sub_8077ABC
@@ -10973,7 +10973,7 @@ _081315A0:
bx r0
.align 2, 0
_081315BC: .4byte 0x0000ffa0
-_081315C0: .4byte gBattleAnimEnemyMonIndex
+_081315C0: .4byte gBattleAnimBankTarget
_081315C4: .4byte sub_81315C8
thumb_func_end sub_8131564
@@ -11474,7 +11474,7 @@ _0813197C:
.4byte _08131DC4
_08131990:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _081319DC @ =gTasks
@@ -11489,7 +11489,7 @@ _08131990:
ldrh r1, [r6, 0xA]
adds r0, r1
strh r0, [r6, 0xA]
- ldr r0, _081319E0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _081319E0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11510,7 +11510,7 @@ _08131990:
b _08131A02
.align 2, 0
_081319DC: .4byte gTasks
-_081319E0: .4byte gBattleAnimPlayerMonIndex
+_081319E0: .4byte gBattleAnimBankAttacker
_081319E4: .4byte gSprites
_081319E8:
ldr r3, _08131A3C @ =gSprites
@@ -11570,7 +11570,7 @@ _08131A44:
ldr r3, [r0, 0xC]
mov r9, r3
ldrh r5, [r0]
- ldr r0, _08131A70 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08131A70 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl sub_8079E90
lsls r0, 24
@@ -11579,9 +11579,9 @@ _08131A44:
b _08131B92
.align 2, 0
_08131A6C: .4byte 0x02019348
-_08131A70: .4byte gBattleAnimPlayerMonIndex
+_08131A70: .4byte gBattleAnimBankAttacker
_08131A74:
- ldr r4, _08131AD4 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _08131AD4 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
bl GetBankSide
lsls r0, 24
@@ -11626,7 +11626,7 @@ _08131A74:
lsrs r5, r0, 16
b _08131AE6
.align 2, 0
-_08131AD4: .4byte gBattleAnimPlayerMonIndex
+_08131AD4: .4byte gBattleAnimBankAttacker
_08131AD8: .4byte gBattlePartyID
_08131ADC: .4byte gPlayerParty
_08131AE0: .4byte 0x02017800
@@ -11634,7 +11634,7 @@ _08131AE4:
ldrh r5, [r1, 0x2]
_08131AE6:
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
ldr r2, _08131B0C @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -11700,7 +11700,7 @@ _08131B70:
ldrh r5, [r1, 0x2]
_08131B72:
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
ldr r2, _08131C04 @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -11717,7 +11717,7 @@ _08131B72:
_08131B92:
ldr r6, _08131C08 @ =0x0000ffe0
_08131B94:
- ldr r0, _08131C0C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _08131C0C @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
bl sub_8077ABC
@@ -11737,7 +11737,7 @@ _08131B94:
bl sub_8079F44
lsls r0, 24
lsrs r5, r0, 24
- ldr r0, _08131C10 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08131C10 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
lsls r0, 2
ldr r1, _08131C14 @ =0x02017800
@@ -11773,8 +11773,8 @@ _08131BF2:
.align 2, 0
_08131C04: .4byte gSprites
_08131C08: .4byte 0x0000ffe0
-_08131C0C: .4byte gBattleAnimEnemyMonIndex
-_08131C10: .4byte gBattleAnimPlayerMonIndex
+_08131C0C: .4byte gBattleAnimBankTarget
+_08131C10: .4byte gBattleAnimBankAttacker
_08131C14: .4byte 0x02017800
_08131C18: .4byte 0x00007fff
_08131C1C: .4byte gTasks
@@ -11794,7 +11794,7 @@ _08131C20:
ldrh r2, [r6, 0xA]
adds r0, r2
strh r0, [r6, 0xA]
- ldr r0, _08131C70 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08131C70 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11817,7 +11817,7 @@ _08131C20:
b _08131C8E
.align 2, 0
_08131C6C: .4byte gTasks
-_08131C70: .4byte gBattleAnimPlayerMonIndex
+_08131C70: .4byte gBattleAnimBankAttacker
_08131C74: .4byte gSprites
_08131C78:
ldr r2, _08131CDC @ =gSprites
@@ -11851,7 +11851,7 @@ _08131C8E:
ldrsh r0, [r6, r1]
cmp r0, 0
bne _08131D0E
- ldr r0, _08131CE4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08131CE4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11859,7 +11859,7 @@ _08131C8E:
bne _08131CEC
lsls r4, r5, 16
asrs r4, 16
- ldr r0, _08131CE8 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _08131CE8 @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0
bl sub_8077ABC
@@ -11871,12 +11871,12 @@ _08131C8E:
.align 2, 0
_08131CDC: .4byte gSprites
_08131CE0: .4byte gTasks
-_08131CE4: .4byte gBattleAnimPlayerMonIndex
-_08131CE8: .4byte gBattleAnimEnemyMonIndex
+_08131CE4: .4byte gBattleAnimBankAttacker
+_08131CE8: .4byte gBattleAnimBankTarget
_08131CEC:
lsls r4, r5, 16
asrs r4, 16
- ldr r0, _08131D30 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _08131D30 @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0
bl sub_8077ABC
@@ -11911,13 +11911,13 @@ _08131D20:
strh r0, [r1, 0xA]
b _08131DB6
.align 2, 0
-_08131D30: .4byte gBattleAnimEnemyMonIndex
+_08131D30: .4byte gBattleAnimBankTarget
_08131D34: .4byte gBattleAnimArgs
_08131D38: .4byte 0x0000ffff
_08131D3C: .4byte gTasks
_08131D40:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _08131D8C @ =gTasks
@@ -11935,7 +11935,7 @@ _08131D40:
ldr r5, _08131D90 @ =gSprites
adds r0, r5
bl sub_807A0F4
- ldr r0, _08131D94 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08131D94 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -11954,7 +11954,7 @@ _08131D40:
.align 2, 0
_08131D8C: .4byte gTasks
_08131D90: .4byte gSprites
-_08131D94: .4byte gBattleAnimPlayerMonIndex
+_08131D94: .4byte gBattleAnimBankAttacker
_08131D98:
lsls r0, r7, 4
adds r0, r7
@@ -11981,7 +11981,7 @@ _08131DB6:
_08131DC0: .4byte gTasks
_08131DC4:
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r7, r0, 24
ldr r1, _08131E38 @ =gTasks
@@ -11996,7 +11996,7 @@ _08131DC4:
ldrh r3, [r2, 0xA]
adds r0, r3
strh r0, [r2, 0xA]
- ldr r0, _08131E3C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08131E3C @ =gBattleAnimBankAttacker
mov r10, r0
ldrb r0, [r0]
str r2, [sp, 0x10]
@@ -12036,7 +12036,7 @@ _08131DC4:
b _08131E7C
.align 2, 0
_08131E38: .4byte gTasks
-_08131E3C: .4byte gBattleAnimPlayerMonIndex
+_08131E3C: .4byte gBattleAnimBankAttacker
_08131E40: .4byte gSprites
_08131E44:
ldr r1, _08131EB0 @ =gSprites
@@ -12124,7 +12124,7 @@ _08131ECA:
asrs r1, 24
movs r0, 0x7A
bl PlaySE12WithPanning
- ldr r0, _08131F54 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _08131F54 @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0x1
bl sub_8077ABC
@@ -12144,7 +12144,7 @@ _08131ECA:
negs r0, r0
ands r0, r1
strb r0, [r2]
- ldr r0, _08131F5C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08131F5C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -12156,7 +12156,7 @@ _08131ECA:
cmp r0, 0
bne _08131FF4
movs r0, 0x1
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
ldr r2, _08131F60 @ =gSprites
lsls r0, 24
lsrs r0, 24
@@ -12173,9 +12173,9 @@ _08131ECA:
b _08131FF4
.align 2, 0
_08131F50: .4byte gBattleAnimArgs
-_08131F54: .4byte gBattleAnimEnemyMonIndex
+_08131F54: .4byte gBattleAnimBankTarget
_08131F58: .4byte 0x0000ffe0
-_08131F5C: .4byte gBattleAnimPlayerMonIndex
+_08131F5C: .4byte gBattleAnimBankAttacker
_08131F60: .4byte gSprites
_08131F64:
adds r0, r4, 0
@@ -12218,7 +12218,7 @@ _08131FA6:
ldrh r1, [r4, 0x32]
adds r0, r1
strh r0, [r4, 0x32]
- ldr r0, _08131FD0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08131FD0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -12233,7 +12233,7 @@ _08131FA6:
adds r1, r2, 0
b _08131FE0
.align 2, 0
-_08131FD0: .4byte gBattleAnimPlayerMonIndex
+_08131FD0: .4byte gBattleAnimBankAttacker
_08131FD4:
ldrh r1, [r4, 0x32]
lsls r0, r1, 16
@@ -12290,14 +12290,14 @@ _0813202C:
.4byte _08132104
.4byte _0813216A
_08132040:
- ldr r0, _08132084 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08132084 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
movs r1, 0
bl sub_8077ABC
lsls r0, 24
lsrs r0, 24
adds r5, r0, 0
- ldr r0, _08132088 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _08132088 @ =gBattleAnimBankTarget
ldrb r0, [r0]
movs r1, 0
bl sub_8077ABC
@@ -12323,12 +12323,12 @@ _08132076:
strh r0, [r1, 0x26]
b _08132188
.align 2, 0
-_08132084: .4byte gBattleAnimPlayerMonIndex
-_08132088: .4byte gBattleAnimEnemyMonIndex
+_08132084: .4byte gBattleAnimBankAttacker
+_08132088: .4byte gBattleAnimBankTarget
_0813208C: .4byte gTasks
_08132090:
ldr r1, _081320CC @ =gObjectBankIDs
- ldr r0, _081320D0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _081320D0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
@@ -12359,7 +12359,7 @@ _08132090:
b _0813215E
.align 2, 0
_081320CC: .4byte gObjectBankIDs
-_081320D0: .4byte gBattleAnimPlayerMonIndex
+_081320D0: .4byte gBattleAnimBankAttacker
_081320D4: .4byte gSprites
_081320D8:
movs r3, 0x20
@@ -12387,7 +12387,7 @@ _081320EC:
b _08132188
_08132104:
ldr r1, _08132144 @ =gObjectBankIDs
- ldr r0, _08132148 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08132148 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
@@ -12420,7 +12420,7 @@ _08132104:
b _08132162
.align 2, 0
_08132144: .4byte gObjectBankIDs
-_08132148: .4byte gBattleAnimPlayerMonIndex
+_08132148: .4byte gBattleAnimBankAttacker
_0813214C: .4byte gSprites
_08132150:
movs r3, 0x20
@@ -12440,7 +12440,7 @@ _08132162:
b _08132188
_0813216A:
ldr r1, _08132190 @ =gObjectBankIDs
- ldr r0, _08132194 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08132194 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r2, [r0]
@@ -12459,7 +12459,7 @@ _08132188:
bx r0
.align 2, 0
_08132190: .4byte gObjectBankIDs
-_08132194: .4byte gBattleAnimPlayerMonIndex
+_08132194: .4byte gBattleAnimBankAttacker
_08132198: .4byte gSprites
thumb_func_end sub_8131FFC
@@ -12474,12 +12474,12 @@ sub_813219C: @ 813219C
ldr r0, _08132204 @ =gTasks
adds r4, r1, r0
movs r0, 0
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
lsls r0, 24
lsrs r0, 24
movs r5, 0
strh r0, [r4, 0xE]
- ldr r0, _08132208 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08132208 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -12518,7 +12518,7 @@ _081321D0:
bx r0
.align 2, 0
_08132204: .4byte gTasks
-_08132208: .4byte gBattleAnimPlayerMonIndex
+_08132208: .4byte gBattleAnimBankAttacker
_0813220C: .4byte gSprites
_08132210: .4byte sub_8132214
thumb_func_end sub_813219C
@@ -12662,7 +12662,7 @@ _08132312:
sub_8132318: @ 8132318
push {r4,lr}
adds r4, r0, 0
- ldr r0, _0813236C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0813236C @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -12699,14 +12699,14 @@ _0813235E:
pop {r0}
bx r0
.align 2, 0
-_0813236C: .4byte gBattleAnimEnemyMonIndex
+_0813236C: .4byte gBattleAnimBankTarget
thumb_func_end sub_8132318
thumb_func_start sub_8132370
sub_8132370: @ 8132370
push {r4,lr}
adds r4, r0, 0
- ldr r0, _081323A8 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _081323A8 @ =gBattleAnimBankTarget
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -12730,7 +12730,7 @@ sub_8132370: @ 8132370
bl StartSpriteAffineAnim
b _081323CE
.align 2, 0
-_081323A8: .4byte gBattleAnimEnemyMonIndex
+_081323A8: .4byte gBattleAnimBankTarget
_081323AC: .4byte gBattleAnimArgs
_081323B0: .4byte 0x0000fff5
_081323B4:
@@ -12762,7 +12762,7 @@ _081323DC: .4byte sub_8132318
sub_81323E0: @ 81323E0
push {r4,r5,lr}
adds r5, r0, 0
- ldr r4, _08132424 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _08132424 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
movs r1, 0x2
bl sub_8077ABC
@@ -12793,7 +12793,7 @@ _0813240A:
pop {r0}
bx r0
.align 2, 0
-_08132424: .4byte gBattleAnimPlayerMonIndex
+_08132424: .4byte gBattleAnimBankAttacker
_08132428: .4byte sub_8132430
_0813242C: .4byte REG_BLDALPHA
thumb_func_end sub_81323E0
@@ -12997,7 +12997,7 @@ sub_813257C: @ 813257C
strh r0, [r4, 0x8]
ldr r0, _081325B8 @ =gBattleAnimArgs
ldrb r0, [r0]
- bl obj_id_for_side_relative_to_move
+ bl GetAnimBankSpriteId
adds r1, r0, 0
lsls r1, 24
lsrs r1, 24
diff --git a/asm/battle_anim_813F0F4.s b/asm/battle_anim_813F0F4.s
index a5ab2fb83..ab8a222df 100644
--- a/asm/battle_anim_813F0F4.s
+++ b/asm/battle_anim_813F0F4.s
@@ -17,7 +17,7 @@ unref_sub_813F0F4: @ 813F0F4
lsls r0, 24
lsrs r0, 24
str r0, [sp, 0x10]
- ldr r0, _0813F2AC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0813F2AC @ =gBattleAnimBankAttacker
ldrb r3, [r0]
ldr r0, _0813F2B0 @ =gUnknown_030042C4
movs r1, 0
@@ -220,7 +220,7 @@ unref_sub_813F0F4: @ 813F0F4
pop {r0}
bx r0
.align 2, 0
-_0813F2AC: .4byte gBattleAnimPlayerMonIndex
+_0813F2AC: .4byte gBattleAnimBankAttacker
_0813F2B0: .4byte gUnknown_030042C4
_0813F2B4: .4byte gUnknown_03004240
_0813F2B8: .4byte REG_WININ
@@ -252,7 +252,7 @@ sub_813F300: @ 813F300
sub sp, 0x10
lsls r0, 24
lsrs r7, r0, 24
- ldr r0, _0813F34C @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0813F34C @ =gBattleAnimBankAttacker
ldrb r0, [r0]
mov r9, r0
ldr r1, _0813F350 @ =gTasks
@@ -284,7 +284,7 @@ sub_813F300: @ 813F300
beq _0813F35E
b _0813F4B2
.align 2, 0
-_0813F34C: .4byte gBattleAnimPlayerMonIndex
+_0813F34C: .4byte gBattleAnimBankAttacker
_0813F350: .4byte gTasks
_0813F354: .4byte gUnknown_030041B4
_0813F358:
@@ -495,7 +495,7 @@ sub_813F4EC: @ 813F4EC
lsrs r0, 24
str r0, [sp]
ldr r1, _0813F5D0 @ =gHealthboxIDs
- ldr r0, _0813F5D4 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0813F5D4 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -595,7 +595,7 @@ sub_813F4EC: @ 813F4EC
bx r0
.align 2, 0
_0813F5D0: .4byte gHealthboxIDs
-_0813F5D4: .4byte gBattleAnimPlayerMonIndex
+_0813F5D4: .4byte gBattleAnimBankAttacker
_0813F5D8: .4byte gSprites
_0813F5DC: .4byte 0x0000d709
_0813F5E0: .4byte 0x0000d70a
@@ -614,7 +614,7 @@ sub_813F5E8: @ 813F5E8
lsrs r0, 24
mov r8, r0
ldr r1, _0813F684 @ =gHealthboxIDs
- ldr r0, _0813F688 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0813F688 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r0, [r0]
@@ -678,7 +678,7 @@ sub_813F5E8: @ 813F5E8
bx r0
.align 2, 0
_0813F684: .4byte gHealthboxIDs
-_0813F688: .4byte gBattleAnimPlayerMonIndex
+_0813F688: .4byte gBattleAnimBankAttacker
_0813F68C: .4byte gSprites
_0813F690: .4byte 0x0000d709
_0813F694: .4byte 0x0000d70a
@@ -820,7 +820,7 @@ sub_813F798: @ 813F798
lsls r0, 24
lsrs r6, r0, 24
ldr r1, _0813F7C4 @ =gObjectBankIDs
- ldr r0, _0813F7C8 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _0813F7C8 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r5, [r0]
@@ -840,7 +840,7 @@ sub_813F798: @ 813F798
b _0813F838
.align 2, 0
_0813F7C4: .4byte gObjectBankIDs
-_0813F7C8: .4byte gBattleAnimPlayerMonIndex
+_0813F7C8: .4byte gBattleAnimBankAttacker
_0813F7CC: .4byte gTasks
_0813F7D0:
cmp r0, 0x2
@@ -911,7 +911,7 @@ sub_813F844: @ 813F844
lsls r0, 24
lsrs r5, r0, 24
ldr r1, _0813F87C @ =gObjectBankIDs
- ldr r4, _0813F880 @ =gBattleAnimPlayerMonIndex
+ ldr r4, _0813F880 @ =gBattleAnimBankAttacker
ldrb r0, [r4]
adds r1, r0, r1
ldrb r1, [r1]
@@ -931,7 +931,7 @@ sub_813F844: @ 813F844
b _0813F89C
.align 2, 0
_0813F87C: .4byte gObjectBankIDs
-_0813F880: .4byte gBattleAnimPlayerMonIndex
+_0813F880: .4byte gBattleAnimBankAttacker
_0813F884: .4byte gBattlePartyID
_0813F888: .4byte gPlayerParty
_0813F88C:
@@ -970,7 +970,7 @@ _0813F8CC: .4byte gBattlePartyID
_0813F8D0: .4byte gEnemyParty
_0813F8D4: .4byte gTasks
_0813F8D8:
- ldr r5, _0813F950 @ =gBattleAnimPlayerMonIndex
+ ldr r5, _0813F950 @ =gBattleAnimBankAttacker
ldrb r0, [r5]
movs r1, 0
bl sub_8077ABC
@@ -1025,7 +1025,7 @@ _0813F8D8:
strh r0, [r6, 0x8]
b _0813F982
.align 2, 0
-_0813F950: .4byte gBattleAnimPlayerMonIndex
+_0813F950: .4byte gBattleAnimBankAttacker
_0813F954: .4byte gSprites
_0813F958:
movs r1, 0x1C
@@ -1235,7 +1235,7 @@ sub_813FA94: @ 813FA94
adds r6, r4, r1
movs r0, 0x22
strh r0, [r6, 0x2E]
- ldr r2, _0813FB64 @ =gBattleAnimEnemyMonIndex
+ ldr r2, _0813FB64 @ =gBattleAnimBankTarget
mov r8, r2
ldrb r0, [r2]
movs r1, 0
@@ -1297,7 +1297,7 @@ sub_813FA94: @ 813FA94
_0813FB58: .4byte gLastUsedItem
_0813FB5C: .4byte gBallSpriteTemplates
_0813FB60: .4byte gSprites
-_0813FB64: .4byte gBattleAnimEnemyMonIndex
+_0813FB64: .4byte gBattleAnimBankTarget
_0813FB68: .4byte sub_813FD90
_0813FB6C: .4byte 0x02017840
_0813FB70: .4byte gObjectBankIDs
@@ -1397,7 +1397,7 @@ _0813FBE0:
adds r6, r4, r0
movs r0, 0x22
strh r0, [r6, 0x2E]
- ldr r1, _0813FCA8 @ =gBattleAnimEnemyMonIndex
+ ldr r1, _0813FCA8 @ =gBattleAnimBankTarget
mov r8, r1
ldrb r0, [r1]
movs r1, 0
@@ -1449,7 +1449,7 @@ _0813FBE0:
_0813FC9C: .4byte gLastUsedItem
_0813FCA0: .4byte gBallSpriteTemplates
_0813FCA4: .4byte gSprites
-_0813FCA8: .4byte gBattleAnimEnemyMonIndex
+_0813FCA8: .4byte gBattleAnimBankTarget
_0813FCAC: .4byte SpriteCallbackDummy
_0813FCB0: .4byte gObjectBankIDs
_0813FCB4: .4byte gTasks
@@ -1652,7 +1652,7 @@ _0813FE10:
movs r2, 0x1
movs r3, 0x1C
bl sub_814086C
- ldr r0, _0813FE6C @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0813FE6C @ =gBattleAnimBankTarget
ldrb r1, [r0]
movs r0, 0
movs r2, 0xE
@@ -1666,7 +1666,7 @@ _0813FE5A:
.align 2, 0
_0813FE64: .4byte sub_813FE70
_0813FE68: .4byte gLastUsedItem
-_0813FE6C: .4byte gBattleAnimEnemyMonIndex
+_0813FE6C: .4byte gBattleAnimBankTarget
thumb_func_end sub_813FDC0
thumb_func_start sub_813FE70
@@ -1690,7 +1690,7 @@ sub_813FE70: @ 813FE70
str r0, [r4, 0x1C]
ldr r2, _0813FEBC @ =gSprites
ldr r1, _0813FEC0 @ =gObjectBankIDs
- ldr r0, _0813FEC4 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0813FEC4 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -1709,7 +1709,7 @@ _0813FEB4: .4byte TaskDummy
_0813FEB8: .4byte sub_813FEC8
_0813FEBC: .4byte gSprites
_0813FEC0: .4byte gObjectBankIDs
-_0813FEC4: .4byte gBattleAnimEnemyMonIndex
+_0813FEC4: .4byte gBattleAnimBankTarget
thumb_func_end sub_813FE70
thumb_func_start sub_813FEC8
@@ -1717,7 +1717,7 @@ sub_813FEC8: @ 813FEC8
push {r4-r7,lr}
adds r7, r0, 0
ldr r1, _0813FF0C @ =gObjectBankIDs
- ldr r0, _0813FF10 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _0813FF10 @ =gBattleAnimBankTarget
ldrb r0, [r0]
adds r0, r1
ldrb r4, [r0]
@@ -1750,7 +1750,7 @@ _0813FEFA:
b _0813FFDC
.align 2, 0
_0813FF0C: .4byte gObjectBankIDs
-_0813FF10: .4byte gBattleAnimEnemyMonIndex
+_0813FF10: .4byte gBattleAnimBankTarget
_0813FF14: .4byte gTasks
_0813FF18:
cmp r0, 0x2
@@ -2451,7 +2451,7 @@ _08140450: .4byte sub_8140454
sub_8140454: @ 8140454
push {r4-r7,lr}
adds r6, r0, 0
- ldr r7, _08140484 @ =gBattleAnimEnemyMonIndex
+ ldr r7, _08140484 @ =gBattleAnimBankTarget
ldrh r0, [r6, 0x36]
adds r0, 0x1
strh r0, [r6, 0x36]
@@ -2471,7 +2471,7 @@ sub_8140454: @ 8140454
bl PlaySE
b _081404CC
.align 2, 0
-_08140484: .4byte gBattleAnimEnemyMonIndex
+_08140484: .4byte gBattleAnimBankTarget
_08140488: .4byte gDoingBattleAnim
_0814048C: .4byte 0x00000173
_08140490:
@@ -2690,7 +2690,7 @@ sub_81405F4: @ 81405F4
movs r2, 0x1
movs r3, 0x1C
bl sub_814086C
- ldr r0, _081406B0 @ =gBattleAnimEnemyMonIndex
+ ldr r0, _081406B0 @ =gBattleAnimBankTarget
ldrb r1, [r0]
movs r0, 0x1
movs r2, 0xE
@@ -2699,7 +2699,7 @@ sub_81405F4: @ 81405F4
_08140646:
ldr r6, _081406B4 @ =gSprites
ldr r5, _081406B8 @ =gObjectBankIDs
- ldr r4, _081406B0 @ =gBattleAnimEnemyMonIndex
+ ldr r4, _081406B0 @ =gBattleAnimBankTarget
ldrb r0, [r4]
adds r0, r5
ldrb r1, [r0]
@@ -2747,7 +2747,7 @@ _08140646:
.align 2, 0
_081406A8: .4byte sub_81406BC
_081406AC: .4byte gLastUsedItem
-_081406B0: .4byte gBattleAnimEnemyMonIndex
+_081406B0: .4byte gBattleAnimBankTarget
_081406B4: .4byte gSprites
_081406B8: .4byte gObjectBankIDs
thumb_func_end sub_81405F4
@@ -2772,7 +2772,7 @@ sub_81406BC: @ 81406BC
_081406DA:
ldr r4, _08140708 @ =gSprites
ldr r3, _0814070C @ =gObjectBankIDs
- ldr r2, _08140710 @ =gBattleAnimEnemyMonIndex
+ ldr r2, _08140710 @ =gBattleAnimBankTarget
ldrb r0, [r2]
adds r0, r3
ldrb r1, [r0]
@@ -2794,7 +2794,7 @@ _081406DA:
.align 2, 0
_08140708: .4byte gSprites
_0814070C: .4byte gObjectBankIDs
-_08140710: .4byte gBattleAnimEnemyMonIndex
+_08140710: .4byte gBattleAnimBankTarget
_08140714:
ldr r6, _0814079C @ =0xfffffee0
adds r0, r6, 0
@@ -2824,7 +2824,7 @@ _08140734:
beq _08140796
ldr r4, _081407A0 @ =gSprites
ldr r3, _081407A4 @ =gObjectBankIDs
- ldr r2, _081407A8 @ =gBattleAnimEnemyMonIndex
+ ldr r2, _081407A8 @ =gBattleAnimBankTarget
ldrb r0, [r2]
adds r0, r3
ldrb r1, [r0]
@@ -2869,7 +2869,7 @@ _08140796:
_0814079C: .4byte 0xfffffee0
_081407A0: .4byte gSprites
_081407A4: .4byte gObjectBankIDs
-_081407A8: .4byte gBattleAnimEnemyMonIndex
+_081407A8: .4byte gBattleAnimBankTarget
_081407AC: .4byte 0x02017840
_081407B0: .4byte sub_81405C8
_081407B4: .4byte gDoingBattleAnim
@@ -4583,7 +4583,7 @@ sub_814151C: @ 814151C
movs r0, 0
mov r8, r0
ldr r0, _08141550 @ =gObjectBankIDs
- ldr r3, _08141554 @ =gBattleAnimPlayerMonIndex
+ ldr r3, _08141554 @ =gBattleAnimBankAttacker
ldrb r2, [r3]
adds r0, r2, r0
ldrb r6, [r0]
@@ -4603,7 +4603,7 @@ sub_814151C: @ 814151C
b _081416B6
.align 2, 0
_08141550: .4byte gObjectBankIDs
-_08141554: .4byte gBattleAnimPlayerMonIndex
+_08141554: .4byte gBattleAnimBankAttacker
_08141558: .4byte gTasks
_0814155C:
cmp r0, 0x2
@@ -4738,7 +4738,7 @@ _08141654:
adds r0, r1
ldrb r1, [r0, 0x8]
strh r1, [r0, 0x8]
- ldr r0, _08141690 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08141690 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankSide
lsls r0, 24
@@ -4759,7 +4759,7 @@ _08141654:
.align 2, 0
_08141688: .4byte gSprites
_0814168C: .4byte gTasks
-_08141690: .4byte gBattleAnimPlayerMonIndex
+_08141690: .4byte gBattleAnimBankAttacker
_08141694:
ldr r0, _081416C0 @ =gSprites
adds r1, r4, r6
@@ -4816,7 +4816,7 @@ _081416EC:
beq _0814177C
b _081417B8
_081416F2:
- ldr r0, _08141708 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08141708 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
bl GetBankIdentity_permutated
lsls r0, 24
@@ -4827,7 +4827,7 @@ _081416F2:
ldr r2, _08141710 @ =0x00003f42
b _08141718
.align 2, 0
-_08141708: .4byte gBattleAnimPlayerMonIndex
+_08141708: .4byte gBattleAnimBankAttacker
_0814170C: .4byte REG_BLDCNT
_08141710: .4byte 0x00003f42
_08141714:
@@ -4884,7 +4884,7 @@ _08141744:
_08141778: .4byte REG_BLDALPHA
_0814177C:
ldr r1, _081417C0 @ =gObjectBankIDs
- ldr r3, _081417C4 @ =gBattleAnimPlayerMonIndex
+ ldr r3, _081417C4 @ =gBattleAnimBankAttacker
ldrb r0, [r3]
adds r0, r1
ldrb r1, [r0]
@@ -4918,7 +4918,7 @@ _081417B8:
bx r0
.align 2, 0
_081417C0: .4byte gObjectBankIDs
-_081417C4: .4byte gBattleAnimPlayerMonIndex
+_081417C4: .4byte gBattleAnimBankAttacker
_081417C8: .4byte gSprites
_081417CC: .4byte 0x06010000
_081417D0: .4byte 0x040000d4
@@ -4931,7 +4931,7 @@ sub_81417D8: @ 81417D8
lsls r0, 24
lsrs r0, 24
ldr r3, _081417FC @ =gBattleAnimArgs
- ldr r1, _08141800 @ =gBattleAnimPlayerMonIndex
+ ldr r1, _08141800 @ =gBattleAnimBankAttacker
ldrb r1, [r1]
lsls r1, 2
ldr r2, _08141804 @ =0x02017800
@@ -4945,7 +4945,7 @@ sub_81417D8: @ 81417D8
bx r0
.align 2, 0
_081417FC: .4byte gBattleAnimArgs
-_08141800: .4byte gBattleAnimPlayerMonIndex
+_08141800: .4byte gBattleAnimBankAttacker
_08141804: .4byte 0x02017800
thumb_func_end sub_81417D8
@@ -4954,7 +4954,7 @@ sub_8141808: @ 8141808
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, _08141820 @ =gBattleAnimEnemyMonIndex
+ ldr r2, _08141820 @ =gBattleAnimBankTarget
ldr r1, _08141824 @ =gEffectBank
ldrb r1, [r1]
strb r1, [r2]
@@ -4962,7 +4962,7 @@ sub_8141808: @ 8141808
pop {r0}
bx r0
.align 2, 0
-_08141820: .4byte gBattleAnimEnemyMonIndex
+_08141820: .4byte gBattleAnimBankTarget
_08141824: .4byte gEffectBank
thumb_func_end sub_8141808
@@ -4994,7 +4994,7 @@ sub_8141828: @ 8141828
bl GetMonData
adds r4, r0, 0
adds r0, r6, 0
- bl b_side_obj__get_some_boolean
+ bl IsAnimBankSpriteVisible
lsls r0, 24
cmp r0, 0
beq _081418FC
@@ -5511,7 +5511,7 @@ sub_8141C30: @ 8141C30
adds r0, r4, 0
bl sub_80786EC
ldr r1, _08141CAC @ =gObjectBankIDs
- ldr r0, _08141CB0 @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08141CB0 @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -5531,7 +5531,7 @@ sub_8141C30: @ 8141C30
_08141CA4: .4byte gBattleAnimArgs
_08141CA8: .4byte 0x0000ffe0
_08141CAC: .4byte gObjectBankIDs
-_08141CB0: .4byte gBattleAnimPlayerMonIndex
+_08141CB0: .4byte gBattleAnimBankAttacker
_08141CB4: .4byte gSprites
_08141CB8: .4byte sub_8141CBC
thumb_func_end sub_8141C30
@@ -5542,7 +5542,7 @@ sub_8141CBC: @ 8141CBC
adds r3, r0, 0
ldr r2, _08141CE4 @ =gSprites
ldr r1, _08141CE8 @ =gObjectBankIDs
- ldr r0, _08141CEC @ =gBattleAnimPlayerMonIndex
+ ldr r0, _08141CEC @ =gBattleAnimBankAttacker
ldrb r0, [r0]
adds r0, r1
ldrb r1, [r0]
@@ -5562,7 +5562,7 @@ _08141CE0:
.align 2, 0
_08141CE4: .4byte gSprites
_08141CE8: .4byte gObjectBankIDs
-_08141CEC: .4byte gBattleAnimPlayerMonIndex
+_08141CEC: .4byte gBattleAnimBankAttacker
_08141CF0: .4byte sub_8141CF4
thumb_func_end sub_8141CBC
@@ -5598,7 +5598,7 @@ sub_8141D20: @ 8141D20
adds r4, r0, 0
ldr r5, _08141D70 @ =gSprites
ldr r3, _08141D74 @ =gObjectBankIDs
- ldr r2, _08141D78 @ =gBattleAnimPlayerMonIndex
+ ldr r2, _08141D78 @ =gBattleAnimBankAttacker
ldrb r0, [r2]
adds r0, r3
ldrb r1, [r0]
@@ -5635,7 +5635,7 @@ _08141D68:
.align 2, 0
_08141D70: .4byte gSprites
_08141D74: .4byte gObjectBankIDs
-_08141D78: .4byte gBattleAnimPlayerMonIndex
+_08141D78: .4byte gBattleAnimBankAttacker
thumb_func_end sub_8141D20
thumb_func_start sub_8141D7C
@@ -5646,11 +5646,11 @@ sub_8141D7C: @ 8141D7C
lsrs r4, 24
movs r0, 0
bl GetBankByPlayerAI
- ldr r1, _08141DA4 @ =gBattleAnimPlayerMonIndex
+ ldr r1, _08141DA4 @ =gBattleAnimBankAttacker
strb r0, [r1]
movs r0, 0x1
bl GetBankByPlayerAI
- ldr r1, _08141DA8 @ =gBattleAnimEnemyMonIndex
+ ldr r1, _08141DA8 @ =gBattleAnimBankTarget
strb r0, [r1]
adds r0, r4, 0
bl DestroyAnimVisualTask
@@ -5658,8 +5658,8 @@ sub_8141D7C: @ 8141D7C
pop {r0}
bx r0
.align 2, 0
-_08141DA4: .4byte gBattleAnimPlayerMonIndex
-_08141DA8: .4byte gBattleAnimEnemyMonIndex
+_08141DA4: .4byte gBattleAnimBankAttacker
+_08141DA8: .4byte gBattleAnimBankTarget
thumb_func_end sub_8141D7C
thumb_func_start sub_8141DAC
@@ -5721,20 +5721,20 @@ sub_8141E10: @ 8141E10
push {lr}
lsls r0, 24
lsrs r0, 24
- ldr r2, _08141E2C @ =gBattleAnimPlayerMonIndex
+ ldr r2, _08141E2C @ =gBattleAnimBankAttacker
ldr r1, _08141E30 @ =0x02017840
ldrh r1, [r1]
strb r1, [r2]
- ldr r2, _08141E34 @ =gBattleAnimEnemyMonIndex
+ ldr r2, _08141E34 @ =gBattleAnimBankTarget
lsrs r1, 8
strb r1, [r2]
bl DestroyAnimVisualTask
pop {r0}
bx r0
.align 2, 0
-_08141E2C: .4byte gBattleAnimPlayerMonIndex
+_08141E2C: .4byte gBattleAnimBankAttacker
_08141E30: .4byte 0x02017840
-_08141E34: .4byte gBattleAnimEnemyMonIndex
+_08141E34: .4byte gBattleAnimBankTarget
thumb_func_end sub_8141E10
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_message.s b/asm/battle_message.s
deleted file mode 100644
index badbf2b7d..000000000
--- a/asm/battle_message.s
+++ /dev/null
@@ -1,2403 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start BufferStringBattle
-BufferStringBattle: @ 8120AA8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 16
- lsrs r7, r0, 16
- movs r6, 0
- ldr r5, _08120B70 @ =gSelectedOrderFromParty
- ldr r4, _08120B74 @ =gActiveBank
- ldrb r1, [r4]
- lsls r1, 9
- ldr r0, _08120B78 @ =gUnknown_02023A64
- adds r1, r0
- str r1, [r5]
- ldr r2, _08120B7C @ =gLastUsedItem
- ldrh r0, [r1, 0x4]
- strh r0, [r2]
- ldr r2, _08120B80 @ =gLastUsedAbility
- ldrb r0, [r1, 0x6]
- strb r0, [r2]
- ldr r3, _08120B84 @ =0x02000000
- ldrb r0, [r1, 0x7]
- mov r8, r0
- ldr r2, _08120B88 @ =0x00016003
- adds r0, r3, r2
- mov r2, r8
- strb r2, [r0]
- ldrb r0, [r1, 0x8]
- mov r8, r0
- ldr r2, _08120B8C @ =0x0001605e
- adds r0, r3, r2
- mov r2, r8
- strb r2, [r0]
- ldrb r0, [r1, 0x9]
- mov r8, r0
- ldr r2, _08120B90 @ =0x000160c1
- adds r0, r3, r2
- mov r2, r8
- strb r2, [r0]
- ldr r2, _08120B94 @ =gStringBank
- ldrb r0, [r1, 0xA]
- strb r0, [r2]
- ldrb r1, [r1, 0xB]
- ldr r2, _08120B98 @ =0x000160a0
- adds r0, r3, r2
- strb r1, [r0]
- movs r2, 0
- mov r9, r3
- ldr r3, _08120B9C @ =gBattleTextBuff1
- mov r10, r3
- ldr r3, _08120BA0 @ =gAbilitiesPerBank
-_08120B10:
- adds r0, r2, r3
- ldr r1, [r5]
- adds r1, 0xC
- adds r1, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _08120B10
- movs r2, 0
- ldr r0, _08120B9C @ =gBattleTextBuff1
- mov r8, r0
- ldr r3, _08120B70 @ =gSelectedOrderFromParty
- ldr r1, _08120BA4 @ =gBattleTextBuff2
- mov r12, r1
- ldr r5, _08120BA8 @ =gBattleTextBuff3
-_08120B30:
- mov r0, r8
- adds r1, r2, r0
- ldr r0, [r3]
- adds r0, 0x10
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- mov r0, r12
- adds r1, r2, r0
- ldr r0, [r3]
- adds r0, 0x20
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r1, r2, r5
- ldr r0, [r3]
- adds r0, 0x30
- adds r0, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r2, 0x1
- cmp r2, 0xF
- ble _08120B30
- cmp r7, 0x5
- bls _08120B64
- b _08120F50
-_08120B64:
- lsls r0, r7, 2
- ldr r1, _08120BAC @ =_08120BB0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08120B70: .4byte gSelectedOrderFromParty
-_08120B74: .4byte gActiveBank
-_08120B78: .4byte gUnknown_02023A64
-_08120B7C: .4byte gLastUsedItem
-_08120B80: .4byte gLastUsedAbility
-_08120B84: .4byte 0x02000000
-_08120B88: .4byte 0x00016003
-_08120B8C: .4byte 0x0001605e
-_08120B90: .4byte 0x000160c1
-_08120B94: .4byte gStringBank
-_08120B98: .4byte 0x000160a0
-_08120B9C: .4byte gBattleTextBuff1
-_08120BA0: .4byte gAbilitiesPerBank
-_08120BA4: .4byte gBattleTextBuff2
-_08120BA8: .4byte gBattleTextBuff3
-_08120BAC: .4byte _08120BB0
- .align 2, 0
-_08120BB0:
- .4byte _08120BC8
- .4byte _08120C40
- .4byte _08120CCC
- .4byte _08120D5C
- .4byte _08120DE8
- .4byte _08120E50
-_08120BC8:
- ldr r0, _08120BEC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08120C00
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08120BF8
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120BF0 @ =gUnknown_084005C7
- cmp r0, 0
- bne _08120BE8
- b _08120F70
-_08120BE8:
- ldr r6, _08120BF4 @ =gUnknown_084005DB
- b _08120F70
- .align 2, 0
-_08120BEC: .4byte gBattleTypeFlags
-_08120BF0: .4byte gUnknown_084005C7
-_08120BF4: .4byte gUnknown_084005DB
-_08120BF8:
- ldr r6, _08120BFC @ =gUnknown_084005AA
- b _08120F70
- .align 2, 0
-_08120BFC: .4byte gUnknown_084005AA
-_08120C00:
- movs r0, 0x80
- lsls r0, 6
- ands r0, r1
- cmp r0, 0
- beq _08120C14
- ldr r6, _08120C10 @ =gUnknown_08400568
- b _08120F70
- .align 2, 0
-_08120C10: .4byte gUnknown_08400568
-_08120C14:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120C24
- ldr r6, _08120C20 @ =gUnknown_08400590
- b _08120F70
- .align 2, 0
-_08120C20: .4byte gUnknown_08400590
-_08120C24:
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- ldr r6, _08120C38 @ =gUnknown_08400555
- cmp r0, 0
- bne _08120C32
- b _08120F70
-_08120C32:
- ldr r6, _08120C3C @ =gUnknown_0840057B
- b _08120F70
- .align 2, 0
-_08120C38: .4byte gUnknown_08400555
-_08120C3C: .4byte gUnknown_0840057B
-_08120C40:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08120C7C
- ldr r0, _08120C68 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120C74
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120C6C @ =gUnknown_084006A4
- cmp r0, 0
- bne _08120C64
- b _08120F70
-_08120C64:
- ldr r6, _08120C70 @ =gUnknown_084006F1
- b _08120F70
- .align 2, 0
-_08120C68: .4byte gBattleTypeFlags
-_08120C6C: .4byte gUnknown_084006A4
-_08120C70: .4byte gUnknown_084006F1
-_08120C74:
- ldr r6, _08120C78 @ =gUnknown_0840069C
- b _08120F70
- .align 2, 0
-_08120C78: .4byte gUnknown_0840069C
-_08120C7C:
- ldr r0, _08120C94 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120CB4
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08120C9C
- ldr r6, _08120C98 @ =gUnknown_0840065C
- b _08120F70
- .align 2, 0
-_08120C94: .4byte gBattleTypeFlags
-_08120C98: .4byte gUnknown_0840065C
-_08120C9C:
- movs r0, 0x2
- ands r0, r1
- ldr r6, _08120CAC @ =gUnknown_08400608
- cmp r0, 0
- bne _08120CA8
- b _08120F70
-_08120CA8:
- ldr r6, _08120CB0 @ =gUnknown_08400645
- b _08120F70
- .align 2, 0
-_08120CAC: .4byte gUnknown_08400608
-_08120CB0: .4byte gUnknown_08400645
-_08120CB4:
- movs r0, 0x2
- ands r0, r1
- ldr r6, _08120CC4 @ =gUnknown_084005F5
- cmp r0, 0
- bne _08120CC0
- b _08120F70
-_08120CC0:
- ldr r6, _08120CC8 @ =gUnknown_08400635
- b _08120F70
- .align 2, 0
-_08120CC4: .4byte gUnknown_084005F5
-_08120CC8: .4byte gUnknown_08400635
-_08120CCC:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08120D24
- ldr r0, _08120CE8 @ =0x02000000
- ldr r1, _08120CEC @ =0x000160c1
- adds r0, r1
- ldrb r2, [r0]
- cmp r2, 0
- bne _08120CF4
- ldr r6, _08120CF0 @ =gUnknown_08400709
- b _08120F70
- .align 2, 0
-_08120CE8: .4byte 0x02000000
-_08120CEC: .4byte 0x000160c1
-_08120CF0: .4byte gUnknown_08400709
-_08120CF4:
- cmp r2, 0x1
- beq _08120D04
- ldr r0, _08120D08 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120D10
-_08120D04:
- ldr r6, _08120D0C @ =gUnknown_08400727
- b _08120F70
- .align 2, 0
-_08120D08: .4byte gBattleTypeFlags
-_08120D0C: .4byte gUnknown_08400727
-_08120D10:
- ldr r6, _08120D1C @ =gUnknown_08400749
- cmp r2, 0x2
- beq _08120D18
- b _08120F70
-_08120D18:
- ldr r6, _08120D20 @ =gUnknown_08400736
- b _08120F70
- .align 2, 0
-_08120D1C: .4byte gUnknown_08400749
-_08120D20: .4byte gUnknown_08400736
-_08120D24:
- ldr r0, _08120D44 @ =gTrainerBattleOpponent
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 4
- cmp r1, r0
- bne _08120D54
- ldr r0, _08120D48 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120D4C @ =gUnknown_08400771
- cmp r0, 0
- bne _08120D40
- b _08120F70
-_08120D40:
- ldr r6, _08120D50 @ =gUnknown_08400781
- b _08120F70
- .align 2, 0
-_08120D44: .4byte gTrainerBattleOpponent
-_08120D48: .4byte gBattleTypeFlags
-_08120D4C: .4byte gUnknown_08400771
-_08120D50: .4byte gUnknown_08400781
-_08120D54:
- ldr r6, _08120D58 @ =gUnknown_0840075E
- b _08120F70
- .align 2, 0
-_08120D58: .4byte gUnknown_0840075E
-_08120D5C:
- ldr r0, _08120D88 @ =0x00016003
- add r0, r9
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08120DB8
- ldr r0, _08120D8C @ =0x000160c1
- add r0, r9
- ldrb r3, [r0]
- cmp r3, 0
- beq _08120D82
- ldr r0, _08120D90 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08120D98
-_08120D82:
- ldr r6, _08120D94 @ =gUnknown_084006B3
- b _08120F70
- .align 2, 0
-_08120D88: .4byte 0x00016003
-_08120D8C: .4byte 0x000160c1
-_08120D90: .4byte gBattleTypeFlags
-_08120D94: .4byte gUnknown_084006B3
-_08120D98:
- cmp r3, 0x1
- bne _08120DA4
- ldr r6, _08120DA0 @ =gUnknown_084006BB
- b _08120F70
- .align 2, 0
-_08120DA0: .4byte gUnknown_084006BB
-_08120DA4:
- ldr r6, _08120DB0 @ =gUnknown_084006D5
- cmp r3, 0x2
- beq _08120DAC
- b _08120F70
-_08120DAC:
- ldr r6, _08120DB4 @ =gUnknown_084006C6
- b _08120F70
- .align 2, 0
-_08120DB0: .4byte gUnknown_084006D5
-_08120DB4: .4byte gUnknown_084006C6
-_08120DB8:
- ldr r0, _08120DD4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08120DE0
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120DD8 @ =gUnknown_0840067C
- cmp r0, 0
- bne _08120DD0
- b _08120F70
-_08120DD0:
- ldr r6, _08120DDC @ =gUnknown_0840068C
- b _08120F70
- .align 2, 0
-_08120DD4: .4byte gBattleTypeFlags
-_08120DD8: .4byte gUnknown_0840067C
-_08120DDC: .4byte gUnknown_0840068C
-_08120DE0:
- ldr r6, _08120DE4 @ =gUnknown_08400622
- b _08120F70
- .align 2, 0
-_08120DE4: .4byte gUnknown_08400622
-_08120DE8:
- mov r0, r10
- bl sub_8121D1C
- ldr r0, _08120E14 @ =gSelectedOrderFromParty
- ldr r2, [r0]
- ldrh r1, [r2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _08120E28
- ldr r0, _08120E18 @ =gBattleTextBuff2
- ldr r2, _08120E1C @ =gUnknown_08401674
- ldr r1, _08120E20 @ =0x02000000
- ldr r3, _08120E24 @ =0x000160a0
- adds r1, r3
- ldrb r1, [r1]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- b _08120E38
- .align 2, 0
-_08120E14: .4byte gSelectedOrderFromParty
-_08120E18: .4byte gBattleTextBuff2
-_08120E1C: .4byte gUnknown_08401674
-_08120E20: .4byte 0x02000000
-_08120E24: .4byte 0x000160a0
-_08120E28:
- ldr r0, _08120E44 @ =gBattleTextBuff2
- ldrh r2, [r2]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _08120E48 @ =gMoveNames
- adds r1, r2
- bl StringCopy
-_08120E38:
- ldr r0, _08120E44 @ =gBattleTextBuff2
- bl sub_8121D74
- ldr r6, _08120E4C @ =gUnknown_084007BD
- b _08120F70
- .align 2, 0
-_08120E44: .4byte gBattleTextBuff2
-_08120E48: .4byte gMoveNames
-_08120E4C: .4byte gUnknown_084007BD
-_08120E50:
- ldr r5, _08120E90 @ =gBattleTextBuff1
- ldrb r1, [r5]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08120EB8
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r5]
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08120E7C
- ldrb r1, [r5]
- cmp r1, 0x3
- beq _08120E7C
- movs r0, 0x3
- eors r0, r1
- strb r0, [r5]
-_08120E7C:
- ldr r0, _08120E90 @ =gBattleTextBuff1
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08120E98
- ldr r6, _08120E94 @ =gUnknown_083FFEFC
- b _08120F70
- .align 2, 0
-_08120E90: .4byte gBattleTextBuff1
-_08120E94: .4byte gUnknown_083FFEFC
-_08120E98:
- ldr r0, _08120EAC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- ldr r6, _08120EB0 @ =gUnknown_083FFFEA
- cmp r0, 0
- beq _08120F70
- ldr r6, _08120EB4 @ =gUnknown_083FFFF7
- b _08120F70
- .align 2, 0
-_08120EAC: .4byte gBattleTypeFlags
-_08120EB0: .4byte gUnknown_083FFFEA
-_08120EB4: .4byte gUnknown_083FFFF7
-_08120EB8:
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08120ED2
- ldrb r1, [r5]
- cmp r1, 0x3
- beq _08120ED2
- movs r0, 0x3
- eors r0, r1
- strb r0, [r5]
-_08120ED2:
- ldr r0, _08120EF0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08120F18
- ldr r0, _08120EF4 @ =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08120F08
- cmp r0, 0x2
- bgt _08120EF8
- cmp r0, 0x1
- beq _08120EFE
- b _08120F70
- .align 2, 0
-_08120EF0: .4byte gBattleTypeFlags
-_08120EF4: .4byte gBattleTextBuff1
-_08120EF8:
- cmp r0, 0x3
- beq _08120F10
- b _08120F70
-_08120EFE:
- ldr r6, _08120F04 @ =gUnknown_083FFF6A
- b _08120F70
- .align 2, 0
-_08120F04: .4byte gUnknown_083FFF6A
-_08120F08:
- ldr r6, _08120F0C @ =gUnknown_083FFF99
- b _08120F70
- .align 2, 0
-_08120F0C: .4byte gUnknown_083FFF99
-_08120F10:
- ldr r6, _08120F14 @ =gUnknown_083FFFCB
- b _08120F70
- .align 2, 0
-_08120F14: .4byte gUnknown_083FFFCB
-_08120F18:
- ldr r0, _08120F2C @ =gBattleTextBuff1
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08120F40
- cmp r0, 0x2
- bgt _08120F30
- cmp r0, 0x1
- beq _08120F36
- b _08120F70
- .align 2, 0
-_08120F2C: .4byte gBattleTextBuff1
-_08120F30:
- cmp r0, 0x3
- beq _08120F48
- b _08120F70
-_08120F36:
- ldr r6, _08120F3C @ =gUnknown_083FFF56
- b _08120F70
- .align 2, 0
-_08120F3C: .4byte gUnknown_083FFF56
-_08120F40:
- ldr r6, _08120F44 @ =gUnknown_083FFF81
- b _08120F70
- .align 2, 0
-_08120F44: .4byte gUnknown_083FFF81
-_08120F48:
- ldr r6, _08120F4C @ =gUnknown_083FFFB3
- b _08120F70
- .align 2, 0
-_08120F4C: .4byte gUnknown_083FFFB3
-_08120F50:
- movs r0, 0xB5
- lsls r0, 1
- cmp r7, r0
- bls _08120F64
- ldr r1, _08120F60 @ =gDisplayedStringBattle
- movs r0, 0xFF
- strb r0, [r1]
- b _08120F76
- .align 2, 0
-_08120F60: .4byte gDisplayedStringBattle
-_08120F64:
- ldr r1, _08120F84 @ =gBattleStringsTable
- adds r0, r7, 0
- subs r0, 0xC
- lsls r0, 2
- adds r0, r1
- ldr r6, [r0]
-_08120F70:
- adds r0, r6, 0
- bl StrCpyDecodeToDisplayedStringBattle
-_08120F76:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08120F84: .4byte gBattleStringsTable
- thumb_func_end BufferStringBattle
-
- thumb_func_start StrCpyDecodeToDisplayedStringBattle
-StrCpyDecodeToDisplayedStringBattle: @ 8120F88
- push {lr}
- ldr r1, _08120F94 @ =gDisplayedStringBattle
- bl StrCpyDecodeBattle
- pop {r1}
- bx r1
- .align 2, 0
-_08120F94: .4byte gDisplayedStringBattle
- thumb_func_end StrCpyDecodeToDisplayedStringBattle
-
- thumb_func_start sub_8120F98
-sub_8120F98: @ 8120F98
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r1, _08120FB0 @ =gUnknown_084017A8
- mov r0, sp
- movs r2, 0x8
- bl memcpy
- mov r2, sp
- movs r3, 0
- b _08120FC0
- .align 2, 0
-_08120FB0: .4byte gUnknown_084017A8
-_08120FB4:
- strb r1, [r2]
- adds r4, 0x1
- adds r2, 0x1
- adds r3, 0x1
- cmp r3, 0x7
- bhi _08120FC8
-_08120FC0:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08120FB4
-_08120FC8:
- ldr r5, [sp]
- ldr r4, [sp, 0x4]
- movs r3, 0
- ldr r2, _08120FE4 @ =gUnknown_081FA6D4
-_08120FD0:
- ldr r1, [r2]
- ldr r0, [r1]
- cmp r5, r0
- bne _08120FE8
- ldr r0, [r1, 0x4]
- cmp r4, r0
- bne _08120FE8
- ldr r0, [r2, 0x4]
- b _08120FF2
- .align 2, 0
-_08120FE4: .4byte gUnknown_081FA6D4
-_08120FE8:
- adds r2, 0x8
- adds r3, 0x1
- cmp r3, 0x6
- bls _08120FD0
- movs r0, 0
-_08120FF2:
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8120F98
-
- thumb_func_start StrCpyDecodeBattle
-StrCpyDecodeBattle: @ 8120FFC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- mov r9, r0
- mov r8, r1
- movs r6, 0
- movs r4, 0
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r7, r0, 24
- mov r0, r9
- ldrb r1, [r0]
- bl _08121A40
-_0812101E:
- cmp r1, 0xFD
- beq _08121026
- bl _08121A30
-_08121026:
- movs r1, 0x1
- add r9, r1
- mov r2, r9
- ldrb r0, [r2]
- cmp r0, 0x2A
- bls _08121036
- bl _081219E6
-_08121036:
- lsls r0, 2
- ldr r1, _08121040 @ =_08121044
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08121040: .4byte _08121044
- .align 2, 0
-_08121044:
- .4byte _081210F0
- .4byte _0812111E
- .4byte _0812115A
- .4byte _08121180
- .4byte _081211A4
- .4byte _081211C8
- .4byte _081211EC
- .4byte _08121218
- .4byte _08121248
- .4byte _08121278
- .4byte _081212A8
- .4byte _0812133C
- .4byte _081213A8
- .4byte _0812141C
- .4byte _08121490
- .4byte _08121504
- .4byte _08121578
- .4byte _081215F8
- .4byte _08121620
- .4byte _08121660
- .4byte _081216EC
- .4byte _081216F4
- .4byte _08121704
- .4byte _08121714
- .4byte _0812172C
- .4byte _0812174C
- .4byte _081217C0
- .4byte _08121830
- .4byte _08121840
- .4byte _08121854
- .4byte _08121868
- .4byte _0812188C
- .4byte _081218B0
- .4byte _081218B8
- .4byte _081218C0
- .4byte _0812195C
- .4byte _081219A4
- .4byte _081219AC
- .4byte _0812197C
- .4byte _08121984
- .4byte _081219CC
- .4byte _081219D4
- .4byte _08121134
-_081210F0:
- ldr r5, _08121100 @ =gBattleTextBuff1
- ldrb r0, [r5]
- cmp r0, 0xFD
- bne _08121108
- ldr r4, _08121104 @ =gStringVar1
- adds r0, r5, 0
- b _08121140
- .align 2, 0
-_08121100: .4byte gBattleTextBuff1
-_08121104: .4byte gStringVar1
-_08121108:
- adds r0, r5, 0
- bl sub_8120F98
- adds r4, r0, 0
- cmp r4, 0
- beq _08121118
- bl _081219E6
-_08121118:
- adds r4, r5, 0
- bl _081219E6
-_0812111E:
- ldr r1, _0812112C @ =gBattleTextBuff2
- ldrb r0, [r1]
- cmp r0, 0xFD
- bne _08121154
- ldr r4, _08121130 @ =gStringVar2
- b _0812113E
- .align 2, 0
-_0812112C: .4byte gBattleTextBuff2
-_08121130: .4byte gStringVar2
-_08121134:
- ldr r1, _0812114C @ =gBattleTextBuff3
- ldrb r0, [r1]
- cmp r0, 0xFD
- bne _08121154
- ldr r4, _08121150 @ =gStringVar3
-_0812113E:
- adds r0, r1, 0
-_08121140:
- adds r1, r4, 0
- bl sub_8121A68
- bl _081219E6
- .align 2, 0
-_0812114C: .4byte gBattleTextBuff3
-_08121150: .4byte gStringVar3
-_08121154:
- adds r4, r1, 0
- bl _081219E6
-_0812115A:
- movs r0, 0
- bl GetBankByPlayerAI
- ldr r1, _08121178 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0812117C @ =gPlayerParty
- adds r0, r1
- bl _0812190E
- .align 2, 0
-_08121178: .4byte gBattlePartyID
-_0812117C: .4byte gPlayerParty
-_08121180:
- movs r0, 0x1
- bl GetBankByPlayerAI
- ldr r1, _0812119C @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081211A0 @ =gEnemyParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_0812119C: .4byte gBattlePartyID
-_081211A0: .4byte gEnemyParty
-_081211A4:
- movs r0, 0x2
- bl GetBankByPlayerAI
- ldr r1, _081211C0 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081211C4 @ =gPlayerParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_081211C0: .4byte gBattlePartyID
-_081211C4: .4byte gPlayerParty
-_081211C8:
- movs r0, 0x3
- bl GetBankByPlayerAI
- ldr r1, _081211E4 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081211E8 @ =gEnemyParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_081211E4: .4byte gBattlePartyID
-_081211E8: .4byte gEnemyParty
-_081211EC:
- ldr r2, _0812120C @ =gBattlePartyID
- ldr r1, _08121210 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r0, [r0, 0x18]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121214 @ =gPlayerParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_0812120C: .4byte gBattlePartyID
-_08121210: .4byte gLinkPlayers
-_08121214: .4byte gPlayerParty
-_08121218:
- ldr r2, _0812123C @ =gBattlePartyID
- ldr r1, _08121240 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x1
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121244 @ =gEnemyParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_0812123C: .4byte gBattlePartyID
-_08121240: .4byte gLinkPlayers
-_08121244: .4byte gEnemyParty
-_08121248:
- ldr r2, _0812126C @ =gBattlePartyID
- ldr r1, _08121270 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x2
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121274 @ =gPlayerParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_0812126C: .4byte gBattlePartyID
-_08121270: .4byte gLinkPlayers
-_08121274: .4byte gPlayerParty
-_08121278:
- ldr r2, _0812129C @ =gBattlePartyID
- ldr r1, _081212A0 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r1
- ldrh r1, [r0, 0x18]
- movs r0, 0x3
- eors r0, r1
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081212A4 @ =gEnemyParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_0812129C: .4byte gBattlePartyID
-_081212A0: .4byte gLinkPlayers
-_081212A4: .4byte gEnemyParty
-_081212A8:
- ldr r4, _081212CC @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- adds r2, r4, 0
- cmp r0, 0
- beq _0812131C
- ldr r0, _081212D0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _081212D4 @ =gUnknown_08400791
- cmp r0, 0
- beq _081212E6
- ldr r4, _081212D8 @ =gUnknown_08400797
- b _081212E6
- .align 2, 0
-_081212CC: .4byte gBankAttacker
-_081212D0: .4byte gBattleTypeFlags
-_081212D4: .4byte gUnknown_08400791
-_081212D8: .4byte gUnknown_08400797
-_081212DC:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
-_081212E6:
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081212DC
- ldrb r0, [r2]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08121314 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121318 @ =gEnemyParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_08121314: .4byte gBattlePartyID
-_08121318: .4byte gEnemyParty
-_0812131C:
- ldrb r0, [r2]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08121338 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08121338: .4byte gBattlePartyID
-_0812133C:
- ldr r4, _08121370 @ =gBankAttacker
- ldrb r0, [r4]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0812137C
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _08121374 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x4
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121378 @ =gPlayerParty
- adds r0, r1
- b _0812190E
- .align 2, 0
-_08121370: .4byte gBankAttacker
-_08121374: .4byte gBattlePartyID
-_08121378: .4byte gPlayerParty
-_0812137C:
- ldrb r0, [r4]
- bl GetBankIdentity
- adds r1, r0, 0
- movs r0, 0x1
- ands r0, r1
- bl GetBankByPlayerAI
- ldr r1, _081213A0 @ =gBattlePartyID
- lsls r0, 24
- lsrs r0, 23
- adds r0, 0x4
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081213A4 @ =gEnemyParty
- b _08121940
- .align 2, 0
-_081213A0: .4byte gBattlePartyID
-_081213A4: .4byte gEnemyParty
-_081213A8:
- ldr r5, _081213F4 @ =gBankAttacker
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0812140C
- ldr r0, _081213F8 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _081213FC @ =gUnknown_08400791
- cmp r0, 0
- beq _081213C6
- ldr r4, _08121400 @ =gUnknown_08400797
-_081213C6:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, _08121404 @ =gBattlePartyID
- ldr r2, _08121408 @ =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _081213E8
-_081213D6:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081213D6
-_081213E8:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- b _08121908
- .align 2, 0
-_081213F4: .4byte gBankAttacker
-_081213F8: .4byte gBattleTypeFlags
-_081213FC: .4byte gUnknown_08400791
-_08121400: .4byte gUnknown_08400797
-_08121404: .4byte gBattlePartyID
-_08121408: .4byte gEnemyParty
-_0812140C:
- ldr r1, _08121418 @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08121418: .4byte gBattlePartyID
-_0812141C:
- ldr r5, _08121468 @ =gBankTarget
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08121480
- ldr r0, _0812146C @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _08121470 @ =gUnknown_08400791
- cmp r0, 0
- beq _0812143A
- ldr r4, _08121474 @ =gUnknown_08400797
-_0812143A:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, _08121478 @ =gBattlePartyID
- ldr r2, _0812147C @ =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _0812145C
-_0812144A:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _0812144A
-_0812145C:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- b _08121908
- .align 2, 0
-_08121468: .4byte gBankTarget
-_0812146C: .4byte gBattleTypeFlags
-_08121470: .4byte gUnknown_08400791
-_08121474: .4byte gUnknown_08400797
-_08121478: .4byte gBattlePartyID
-_0812147C: .4byte gEnemyParty
-_08121480:
- ldr r1, _0812148C @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_0812148C: .4byte gBattlePartyID
-_08121490:
- ldr r5, _081214DC @ =gEffectBank
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _081214F4
- ldr r0, _081214E0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _081214E4 @ =gUnknown_08400791
- cmp r0, 0
- beq _081214AE
- ldr r4, _081214E8 @ =gUnknown_08400797
-_081214AE:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, _081214EC @ =gBattlePartyID
- ldr r2, _081214F0 @ =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _081214D0
-_081214BE:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081214BE
-_081214D0:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- b _08121908
- .align 2, 0
-_081214DC: .4byte gEffectBank
-_081214E0: .4byte gBattleTypeFlags
-_081214E4: .4byte gUnknown_08400791
-_081214E8: .4byte gUnknown_08400797
-_081214EC: .4byte gBattlePartyID
-_081214F0: .4byte gEnemyParty
-_081214F4:
- ldr r1, _08121500 @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08121500: .4byte gBattlePartyID
-_08121504:
- ldr r5, _08121550 @ =gActiveBank
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08121568
- ldr r0, _08121554 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _08121558 @ =gUnknown_08400791
- cmp r0, 0
- beq _08121522
- ldr r4, _0812155C @ =gUnknown_08400797
-_08121522:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, _08121560 @ =gBattlePartyID
- ldr r2, _08121564 @ =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _08121544
-_08121532:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _08121532
-_08121544:
- ldrb r0, [r2]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- b _08121908
- .align 2, 0
-_08121550: .4byte gActiveBank
-_08121554: .4byte gBattleTypeFlags
-_08121558: .4byte gUnknown_08400791
-_0812155C: .4byte gUnknown_08400797
-_08121560: .4byte gBattlePartyID
-_08121564: .4byte gEnemyParty
-_08121568:
- ldr r1, _08121574 @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_08121574: .4byte gBattlePartyID
-_08121578:
- ldr r4, _081215CC @ =0x02000000
- ldr r0, _081215D0 @ =0x00016003
- adds r5, r4, r0
- ldrb r0, [r5]
- bl GetBankSide
- lsls r0, 24
- adds r2, r4, 0
- cmp r0, 0
- beq _081215E8
- ldr r0, _081215D4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _081215D8 @ =gUnknown_08400791
- cmp r0, 0
- beq _0812159C
- ldr r4, _081215DC @ =gUnknown_08400797
-_0812159C:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r3, _081215E0 @ =gBattlePartyID
- ldr r5, _081215E4 @ =gEnemyParty
- mov r12, r5
- cmp r0, 0xFF
- beq _081215BC
-_081215AA:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081215AA
-_081215BC:
- ldr r1, _081215D0 @ =0x00016003
- adds r0, r2, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r3
- ldrh r1, [r0]
- b _08121908
- .align 2, 0
-_081215CC: .4byte 0x02000000
-_081215D0: .4byte 0x00016003
-_081215D4: .4byte gBattleTypeFlags
-_081215D8: .4byte gUnknown_08400791
-_081215DC: .4byte gUnknown_08400797
-_081215E0: .4byte gBattlePartyID
-_081215E4: .4byte gEnemyParty
-_081215E8:
- ldr r1, _081215F4 @ =gBattlePartyID
- ldrb r0, [r5]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r0]
- b _0812193A
- .align 2, 0
-_081215F4: .4byte gBattlePartyID
-_081215F8:
- ldr r0, _08121610 @ =gSelectedOrderFromParty
- ldr r2, [r0]
- ldrh r1, [r2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _0812161C
- ldr r0, _08121614 @ =0x02000000
- ldr r2, _08121618 @ =0x000160a0
- adds r0, r2
- b _08121634
- .align 2, 0
-_08121610: .4byte gSelectedOrderFromParty
-_08121614: .4byte 0x02000000
-_08121618: .4byte 0x000160a0
-_0812161C:
- ldrh r1, [r2]
- b _08121652
-_08121620:
- ldr r0, _08121640 @ =gSelectedOrderFromParty
- ldr r2, [r0]
- ldrh r1, [r2, 0x2]
- movs r0, 0xB1
- lsls r0, 1
- cmp r1, r0
- bls _08121650
- ldr r0, _08121644 @ =0x02000000
- ldr r3, _08121648 @ =0x000160a0
- adds r0, r3
-_08121634:
- ldrb r0, [r0]
- lsls r0, 2
- ldr r1, _0812164C @ =gUnknown_08401674
- adds r4, r0, r1
- b _081219E6
- .align 2, 0
-_08121640: .4byte gSelectedOrderFromParty
-_08121644: .4byte 0x02000000
-_08121648: .4byte 0x000160a0
-_0812164C: .4byte gUnknown_08401674
-_08121650:
- ldrh r1, [r2, 0x2]
-_08121652:
- movs r0, 0xD
- muls r1, r0
- ldr r0, _0812165C @ =gMoveNames
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_0812165C: .4byte gMoveNames
-_08121660:
- ldr r0, _081216AC @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081216D8
- ldr r1, _081216B0 @ =gLastUsedItem
- ldrh r0, [r1]
- cmp r0, 0xAF
- bne _081216D4
- ldr r2, _081216B4 @ =gLinkPlayers
- ldr r0, _081216B8 @ =0x02000000
- ldr r5, _081216BC @ =0x000160cb
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _081216C0 @ =gStringBank
- ldrb r2, [r1]
- ldrh r0, [r0, 0x18]
- cmp r0, r2
- bne _081216CC
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, _081216C4 @ =gEnigmaBerries
- adds r1, r0
- mov r0, sp
- bl StringCopy
- ldr r1, _081216C8 @ =gUnknown_08400A85
- mov r0, sp
- bl StringAppend
- mov r4, sp
- b _081219E6
- .align 2, 0
-_081216AC: .4byte gBattleTypeFlags
-_081216B0: .4byte gLastUsedItem
-_081216B4: .4byte gLinkPlayers
-_081216B8: .4byte 0x02000000
-_081216BC: .4byte 0x000160cb
-_081216C0: .4byte gStringBank
-_081216C4: .4byte gEnigmaBerries
-_081216C8: .4byte gUnknown_08400A85
-_081216CC:
- ldr r4, _081216D0 @ =gUnknown_08400A78
- b _081219E6
- .align 2, 0
-_081216D0: .4byte gUnknown_08400A78
-_081216D4:
- ldrh r0, [r1]
- b _081216DC
-_081216D8:
- ldr r0, _081216E8 @ =gLastUsedItem
- ldrh r0, [r0]
-_081216DC:
- mov r1, sp
- bl CopyItemName
- mov r4, sp
- b _081219E6
- .align 2, 0
-_081216E8: .4byte gLastUsedItem
-_081216EC:
- ldr r0, _081216F0 @ =gLastUsedAbility
- b _08121734
- .align 2, 0
-_081216F0: .4byte gLastUsedAbility
-_081216F4:
- ldr r1, _081216FC @ =gAbilitiesPerBank
- ldr r0, _08121700 @ =gBankAttacker
- b _08121730
- .align 2, 0
-_081216FC: .4byte gAbilitiesPerBank
-_08121700: .4byte gBankAttacker
-_08121704:
- ldr r1, _0812170C @ =gAbilitiesPerBank
- ldr r0, _08121710 @ =gBankTarget
- b _08121730
- .align 2, 0
-_0812170C: .4byte gAbilitiesPerBank
-_08121710: .4byte gBankTarget
-_08121714:
- ldr r1, _08121720 @ =gAbilitiesPerBank
- ldr r0, _08121724 @ =0x02000000
- ldr r2, _08121728 @ =0x00016003
- adds r0, r2
- b _08121730
- .align 2, 0
-_08121720: .4byte gAbilitiesPerBank
-_08121724: .4byte 0x02000000
-_08121728: .4byte 0x00016003
-_0812172C:
- ldr r1, _08121740 @ =gAbilitiesPerBank
- ldr r0, _08121744 @ =gEffectBank
-_08121730:
- ldrb r0, [r0]
- adds r0, r1
-_08121734:
- ldrb r1, [r0]
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08121748 @ =gAbilityNames
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_08121740: .4byte gAbilitiesPerBank
-_08121744: .4byte gEffectBank
-_08121748: .4byte gAbilityNames
-_0812174C:
- ldr r3, _08121764 @ =gTrainerBattleOpponent
- ldrh r1, [r3]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _08121768
- bl GetSecretBaseTrainerNameIndex
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xD
- b _081217AE
- .align 2, 0
-_08121764: .4byte gTrainerBattleOpponent
-_08121768:
- ldr r0, _08121784 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08121788
- bl get_trainer_class_name_index
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xD
- b _081217AE
- .align 2, 0
-_08121784: .4byte gBattleTypeFlags
-_08121788:
- movs r0, 0x80
- lsls r0, 4
- ands r0, r1
- cmp r0, 0
- beq _0812179E
- bl sub_8135FD8
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0xD
- b _081217AE
-_0812179E:
- ldr r2, _081217B8 @ =gTrainers
- ldrh r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- ldrb r1, [r0, 0x1]
- movs r0, 0xD
-_081217AE:
- muls r1, r0
- ldr r0, _081217BC @ =gTrainerClassNames
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_081217B8: .4byte gTrainers
-_081217BC: .4byte gTrainerClassNames
-_081217C0:
- ldr r2, _081217E4 @ =gTrainerBattleOpponent
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 3
- cmp r1, r0
- bne _081217EC
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0x8
- bl memset
- ldr r1, _081217E8 @ =0x02017002
- mov r0, sp
- movs r2, 0x7
- bl memcpy
- mov r4, sp
- b _081219E6
- .align 2, 0
-_081217E4: .4byte gTrainerBattleOpponent
-_081217E8: .4byte 0x02017002
-_081217EC:
- ldr r0, _08121804 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _08121808
- mov r0, sp
- bl get_trainer_name
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08121804: .4byte gBattleTypeFlags
-_08121808:
- movs r0, 0x80
- lsls r0, 4
- ands r0, r1
- cmp r0, 0
- beq _0812181C
- mov r0, sp
- bl sub_8135FF4
- mov r4, sp
- b _081219E6
-_0812181C:
- ldrh r0, [r2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0812182C @ =gTrainers + 0x4
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_0812182C: .4byte gTrainers + 0x4
-_08121830:
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- ldr r1, _0812183C @ =gLinkPlayers + 0x8
- adds r4, r0, r1
- b _081219E6
- .align 2, 0
-_0812183C: .4byte gLinkPlayers + 0x8
-_08121840:
- ldr r4, _08121850 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x2
- b _08121876
- .align 2, 0
-_08121850: .4byte gLinkPlayers
-_08121854:
- ldr r4, _08121864 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x1
- b _08121876
- .align 2, 0
-_08121864: .4byte gLinkPlayers
-_08121868:
- ldr r4, _08121888 @ =gLinkPlayers
- lsls r0, r7, 3
- subs r0, r7
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x18]
- movs r0, 0x3
-_08121876:
- eors r0, r1
- bl sub_803FC34
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r4, 0x8
- adds r4, r1, r4
- b _081219E6
- .align 2, 0
-_08121888: .4byte gLinkPlayers
-_0812188C:
- ldr r0, _081218A4 @ =0x02000000
- ldr r3, _081218A8 @ =0x00016003
- adds r0, r3
- ldrb r0, [r0]
- bl sub_803FC34
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _081218AC @ =gLinkPlayers + 0x8
- adds r4, r1, r0
- b _081219E6
- .align 2, 0
-_081218A4: .4byte 0x02000000
-_081218A8: .4byte 0x00016003
-_081218AC: .4byte gLinkPlayers + 0x8
-_081218B0:
- ldr r4, _081218B4 @ =gSaveBlock2
- b _081219E6
- .align 2, 0
-_081218B4: .4byte gSaveBlock2
-_081218B8:
- bl sub_8082830
- adds r4, r0, 0
- b _081219E6
-_081218C0:
- ldr r5, _08121918 @ =0x02000000
- ldr r1, _0812191C @ =0x00016003
- adds r0, r5, r1
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _08121934
- ldr r0, _08121920 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- ldr r4, _08121924 @ =gUnknown_08400791
- cmp r0, 0
- beq _081218E2
- ldr r4, _08121928 @ =gUnknown_08400797
-_081218E2:
- ldrb r1, [r4]
- adds r0, r1, 0
- ldr r2, _0812192C @ =gEnemyParty
- mov r12, r2
- adds r2, r5, 0
- cmp r0, 0xFF
- beq _08121902
-_081218F0:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081218F0
-_08121902:
- ldr r5, _08121930 @ =0x0001605e
- adds r0, r2, r5
- ldrb r1, [r0]
-_08121908:
- movs r0, 0x64
- muls r0, r1
- add r0, r12
-_0812190E:
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0812194A
- .align 2, 0
-_08121918: .4byte 0x02000000
-_0812191C: .4byte 0x00016003
-_08121920: .4byte gBattleTypeFlags
-_08121924: .4byte gUnknown_08400791
-_08121928: .4byte gUnknown_08400797
-_0812192C: .4byte gEnemyParty
-_08121930: .4byte 0x0001605e
-_08121934:
- ldr r1, _08121954 @ =0x0001605e
- adds r0, r5, r1
- ldrb r1, [r0]
-_0812193A:
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121958 @ =gPlayerParty
-_08121940:
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0812194A:
- mov r0, sp
- bl StringGetEnd10
- mov r4, sp
- b _081219E6
- .align 2, 0
-_08121954: .4byte 0x0001605e
-_08121958: .4byte gPlayerParty
-_0812195C:
- ldr r0, _08121970 @ =0x0000084b
- bl FlagGet
- lsls r0, 24
- ldr r4, _08121974 @ =gUnknown_084009ED
- cmp r0, 0
- beq _081219E6
- ldr r4, _08121978 @ =gUnknown_084009F7
- b _081219E6
- .align 2, 0
-_08121970: .4byte 0x0000084b
-_08121974: .4byte gUnknown_084009ED
-_08121978: .4byte gUnknown_084009F7
-_0812197C:
- ldr r0, _08121980 @ =gBankAttacker
- b _08121986
- .align 2, 0
-_08121980: .4byte gBankAttacker
-_08121984:
- ldr r0, _08121998 @ =gBankTarget
-_08121986:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, _0812199C @ =gUnknown_084007A7
- cmp r0, 0
- bne _081219E6
- ldr r4, _081219A0 @ =gUnknown_084007AC
- b _081219E6
- .align 2, 0
-_08121998: .4byte gBankTarget
-_0812199C: .4byte gUnknown_084007A7
-_081219A0: .4byte gUnknown_084007AC
-_081219A4:
- ldr r0, _081219A8 @ =gBankAttacker
- b _081219AE
- .align 2, 0
-_081219A8: .4byte gBankAttacker
-_081219AC:
- ldr r0, _081219C0 @ =gBankTarget
-_081219AE:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, _081219C4 @ =gUnknown_0840079C
- cmp r0, 0
- bne _081219E6
- ldr r4, _081219C8 @ =gUnknown_084007A1
- b _081219E6
- .align 2, 0
-_081219C0: .4byte gBankTarget
-_081219C4: .4byte gUnknown_0840079C
-_081219C8: .4byte gUnknown_084007A1
-_081219CC:
- ldr r0, _081219D0 @ =gBankAttacker
- b _081219D6
- .align 2, 0
-_081219D0: .4byte gBankAttacker
-_081219D4:
- ldr r0, _08121A24 @ =gBankTarget
-_081219D6:
- ldrb r0, [r0]
- bl GetBankSide
- lsls r0, 24
- ldr r4, _08121A28 @ =gUnknown_084007B2
- cmp r0, 0
- bne _081219E6
- ldr r4, _08121A2C @ =gUnknown_084007B7
-_081219E6:
- ldrb r1, [r4]
- adds r0, r1, 0
- mov r3, r9
- ldrb r2, [r3]
- adds r3, 0x1
- cmp r0, 0xFF
- beq _08121A06
-_081219F4:
- mov r5, r8
- adds r0, r5, r6
- strb r1, [r0]
- adds r6, 0x1
- adds r4, 0x1
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- bne _081219F4
-_08121A06:
- lsls r0, r2, 24
- lsrs r0, 24
- cmp r0, 0x21
- bne _08121A3C
- mov r0, r8
- adds r1, r0, r6
- movs r0, 0xFC
- strb r0, [r1]
- adds r6, 0x1
- mov r2, r8
- adds r1, r2, r6
- movs r0, 0x9
- strb r0, [r1]
- adds r6, 0x1
- b _08121A3C
- .align 2, 0
-_08121A24: .4byte gBankTarget
-_08121A28: .4byte gUnknown_084007B2
-_08121A2C: .4byte gUnknown_084007B7
-_08121A30:
- mov r3, r8
- adds r0, r3, r6
- strb r1, [r0]
- adds r6, 0x1
- mov r3, r9
- adds r3, 0x1
-_08121A3C:
- mov r9, r3
- ldrb r1, [r3]
-_08121A40:
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _08121A4A
- bl _0812101E
-_08121A4A:
- mov r5, r8
- adds r1, r5, r6
- mov r2, r9
- ldrb r0, [r2]
- strb r0, [r1]
- adds r6, 0x1
- adds r0, r6, 0
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end StrCpyDecodeBattle
-
- thumb_func_start sub_8121A68
-sub_8121A68: @ 8121A68
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- adds r7, r0, 0
- adds r6, r1, 0
- movs r5, 0x1
- movs r0, 0
- mov r8, r0
- movs r0, 0xFF
- strb r0, [r6]
- ldrb r0, [r7, 0x1]
- cmp r0, 0xFF
- bne _08121A86
- b _08121D0E
-_08121A86:
- adds r0, r7, r5
- ldrb r1, [r0]
- adds r4, r0, 0
- cmp r1, 0xA
- bls _08121A92
- b _08121D04
-_08121A92:
- lsls r0, r1, 2
- ldr r1, _08121A9C @ =_08121AA0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08121A9C: .4byte _08121AA0
- .align 2, 0
-_08121AA0:
- .4byte _08121ACC
- .4byte _08121AE8
- .4byte _08121B3C
- .4byte _08121B54
- .4byte _08121B64
- .4byte _08121BDC
- .4byte _08121BF0
- .4byte _08121C02
- .4byte _08121C48
- .4byte _08121C5C
- .4byte _08121C78
-_08121ACC:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- ldr r0, _08121AE4 @ =gBattleStringsTable
- subs r1, 0xC
- lsls r1, 2
- adds r1, r0
- ldr r1, [r1]
- b _08121CE2
- .align 2, 0
-_08121AE4: .4byte gBattleStringsTable
-_08121AE8:
- ldrb r0, [r4, 0x1]
- cmp r0, 0x2
- beq _08121B04
- cmp r0, 0x2
- bgt _08121AF8
- cmp r0, 0x1
- beq _08121AFE
- b _08121B26
-_08121AF8:
- cmp r0, 0x4
- beq _08121B0C
- b _08121B26
-_08121AFE:
- ldrb r4, [r4, 0x3]
- mov r8, r4
- b _08121B26
-_08121B04:
- ldrb r1, [r4, 0x3]
- ldrb r0, [r4, 0x4]
- lsls r0, 8
- b _08121B22
-_08121B0C:
- ldrb r0, [r4, 0x3]
- mov r8, r0
- ldrb r0, [r4, 0x4]
- lsls r0, 8
- mov r1, r8
- orrs r1, r0
- ldrb r0, [r4, 0x5]
- lsls r0, 16
- orrs r1, r0
- ldrb r0, [r4, 0x6]
- lsls r0, 24
-_08121B22:
- orrs r1, r0
- mov r8, r1
-_08121B26:
- adds r4, r5, r7
- ldrb r3, [r4, 0x2]
- adds r0, r6, 0
- mov r1, r8
- movs r2, 0
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0x3
- ldrb r4, [r4, 0x1]
- adds r5, r0, r4
- b _08121D04
-_08121B3C:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08121B50 @ =gMoveNames
- adds r1, r0
- b _08121CE2
- .align 2, 0
-_08121B50: .4byte gMoveNames
-_08121B54:
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r1, r0, 3
- subs r1, r0
- ldr r0, _08121B60 @ =gTypeNames
- b _08121C66
- .align 2, 0
-_08121B60: .4byte gTypeNames
-_08121B64:
- ldrb r0, [r4, 0x1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08121B88
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121B84 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _08121BC4
- .align 2, 0
-_08121B84: .4byte gPlayerParty
-_08121B88:
- ldr r0, _08121BA0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08121BA8
- ldr r1, _08121BA4 @ =gUnknown_08400797
- adds r0, r6, 0
- bl StringAppend
- b _08121BB0
- .align 2, 0
-_08121BA0: .4byte gBattleTypeFlags
-_08121BA4: .4byte gUnknown_08400797
-_08121BA8:
- ldr r1, _08121BD4 @ =gUnknown_08400791
- adds r0, r6, 0
- bl StringAppend
-_08121BB0:
- adds r0, r5, r7
- ldrb r1, [r0, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121BD8 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_08121BC4:
- mov r0, sp
- bl StringGetEnd10
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- b _08121D02
- .align 2, 0
-_08121BD4: .4byte gUnknown_08400791
-_08121BD8: .4byte gEnemyParty
-_08121BDC:
- ldr r1, _08121BEC @ =gUnknown_08400F58
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- b _08121C68
- .align 2, 0
-_08121BEC: .4byte gUnknown_08400F58
-_08121BF0:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r1, r0
- adds r0, r6, 0
- bl GetSpeciesName
- b _08121D02
-_08121C02:
- adds r4, r5, r7
- ldrb r0, [r4, 0x1]
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _08121C28
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121C24 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
- b _08121C3A
- .align 2, 0
-_08121C24: .4byte gPlayerParty
-_08121C28:
- ldrb r1, [r4, 0x2]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08121C44 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- adds r2, r6, 0
- bl GetMonData
-_08121C3A:
- adds r0, r6, 0
- bl StringGetEnd10
- b _08121D02
- .align 2, 0
-_08121C44: .4byte gEnemyParty
-_08121C48:
- ldr r1, _08121C58 @ =gUnknown_08400F78
- adds r0, r5, r7
- ldrb r0, [r0, 0x1]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- b _08121C68
- .align 2, 0
-_08121C58: .4byte gUnknown_08400F78
-_08121C5C:
- adds r0, r5, r7
- ldrb r1, [r0, 0x1]
- movs r0, 0xD
- muls r1, r0
- ldr r0, _08121C74 @ =gAbilityNames
-_08121C66:
- adds r1, r0
-_08121C68:
- adds r0, r6, 0
- bl StringAppend
- adds r5, 0x2
- b _08121D04
- .align 2, 0
-_08121C74: .4byte gAbilityNames
-_08121C78:
- adds r0, r5, r7
- ldrb r2, [r0, 0x1]
- ldrb r0, [r0, 0x2]
- lsls r0, 8
- orrs r2, r0
- ldr r0, _08121CC4 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08121CFA
- cmp r2, 0xAF
- bne _08121CF0
- ldr r2, _08121CC8 @ =gLinkPlayers
- ldr r0, _08121CCC @ =0x02000000
- ldr r1, _08121CD0 @ =0x000160cb
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, _08121CD4 @ =gStringBank
- ldrb r2, [r1]
- ldrh r0, [r0, 0x18]
- cmp r0, r2
- bne _08121CE0
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, _08121CD8 @ =gEnigmaBerries
- adds r1, r0
- adds r0, r6, 0
- bl StringCopy
- ldr r1, _08121CDC @ =gUnknown_08400A85
- b _08121CE2
- .align 2, 0
-_08121CC4: .4byte gBattleTypeFlags
-_08121CC8: .4byte gLinkPlayers
-_08121CCC: .4byte 0x02000000
-_08121CD0: .4byte 0x000160cb
-_08121CD4: .4byte gStringBank
-_08121CD8: .4byte gEnigmaBerries
-_08121CDC: .4byte gUnknown_08400A85
-_08121CE0:
- ldr r1, _08121CEC @ =gUnknown_08400A78
-_08121CE2:
- adds r0, r6, 0
- bl StringAppend
- b _08121D02
- .align 2, 0
-_08121CEC: .4byte gUnknown_08400A78
-_08121CF0:
- adds r0, r2, 0
- adds r1, r6, 0
- bl CopyItemName
- b _08121D02
-_08121CFA:
- adds r0, r2, 0
- adds r1, r6, 0
- bl CopyItemName
-_08121D02:
- adds r5, 0x3
-_08121D04:
- adds r0, r7, r5
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _08121D0E
- b _08121A86
-_08121D0E:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8121A68
-
- thumb_func_start sub_8121D1C
-sub_8121D1C: @ 8121D1C
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r2, 0
- ldr r5, _08121D50 @ =gSelectedOrderFromParty
- ldr r3, _08121D54 @ =gUnknown_084016BC
-_08121D26:
- cmp r2, 0x4
- beq _08121D3C
- ldrh r1, [r3]
- cmp r1, 0
- bne _08121D32
- adds r2, 0x1
-_08121D32:
- ldr r0, [r5]
- adds r3, 0x2
- ldrh r0, [r0]
- cmp r1, r0
- bne _08121D26
-_08121D3C:
- cmp r2, 0
- blt _08121D68
- cmp r2, 0x2
- bgt _08121D5C
- ldr r1, _08121D58 @ =gUnknown_08400E5E
- adds r0, r4, 0
- bl StringCopy
- b _08121D68
- .align 2, 0
-_08121D50: .4byte gSelectedOrderFromParty
-_08121D54: .4byte gUnknown_084016BC
-_08121D58: .4byte gUnknown_08400E5E
-_08121D5C:
- cmp r2, 0x4
- bgt _08121D68
- ldr r1, _08121D70 @ =gUnknown_08400E62
- adds r0, r4, 0
- bl StringCopy
-_08121D68:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08121D70: .4byte gUnknown_08400E62
- thumb_func_end sub_8121D1C
-
- thumb_func_start sub_8121D74
-sub_8121D74: @ 8121D74
- push {r4,r5,lr}
- adds r3, r0, 0
- movs r4, 0
- b _08121D7E
-_08121D7C:
- adds r3, 0x1
-_08121D7E:
- ldrb r0, [r3]
- cmp r0, 0xFF
- bne _08121D7C
- ldr r1, _08121DB4 @ =gUnknown_084016BC
- ldr r5, _08121DB8 @ =gSelectedOrderFromParty
- movs r0, 0
- lsls r0, 1
- adds r2, r0, r1
-_08121D8E:
- cmp r4, 0x4
- beq _08121DA8
- ldrh r1, [r2]
- cmp r1, 0
- bne _08121D9A
- adds r4, 0x1
-_08121D9A:
- ldr r0, [r5]
- adds r2, 0x2
- ldrh r0, [r0]
- cmp r1, r0
- bne _08121D8E
- cmp r4, 0x4
- bhi _08121E04
-_08121DA8:
- lsls r0, r4, 2
- ldr r1, _08121DBC @ =_08121DC0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08121DB4: .4byte gUnknown_084016BC
-_08121DB8: .4byte gSelectedOrderFromParty
-_08121DBC: .4byte _08121DC0
- .align 2, 0
-_08121DC0:
- .4byte _08121DD4
- .4byte _08121DDC
- .4byte _08121DE4
- .4byte _08121DEC
- .4byte _08121DFC
-_08121DD4:
- ldr r1, _08121DD8 @ =gUnknown_084007C8
- b _08121DEE
- .align 2, 0
-_08121DD8: .4byte gUnknown_084007C8
-_08121DDC:
- ldr r1, _08121DE0 @ =gUnknown_084007CA
- b _08121DEE
- .align 2, 0
-_08121DE0: .4byte gUnknown_084007CA
-_08121DE4:
- ldr r1, _08121DE8 @ =gUnknown_084007CC
- b _08121DEE
- .align 2, 0
-_08121DE8: .4byte gUnknown_084007CC
-_08121DEC:
- ldr r1, _08121DF8 @ =gUnknown_084007CE
-_08121DEE:
- adds r0, r3, 0
- bl StringCopy
- b _08121E04
- .align 2, 0
-_08121DF8: .4byte gUnknown_084007CE
-_08121DFC:
- ldr r1, _08121E0C @ =gUnknown_084007D0
- adds r0, r3, 0
- bl StringCopy
-_08121E04:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08121E0C: .4byte gUnknown_084007D0
- thumb_func_end sub_8121D74
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index 15cb95854..cd8eede60 100644
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -1522,7 +1522,7 @@ _081350AE:
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
- bl GetNationalPokedexFlag
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _081350C6
@@ -1555,7 +1555,7 @@ AppendBattleTowerBannedSpeciesName: @ 81350E0
lsls r0, 16
lsrs r0, 16
movs r1, 0x1
- bl GetNationalPokedexFlag
+ bl GetSetPokedexFlag
lsls r0, 24
cmp r0, 0
beq _081351E6
@@ -2082,7 +2082,7 @@ sub_8135534: @ 8135534
push {r4,lr}
lsls r0, 24
lsrs r4, r0, 24
- bl sub_811AAE8
+ bl IsBattleTransitionDone
lsls r0, 24
lsrs r0, 24
cmp r0, 0x1
@@ -2163,10 +2163,10 @@ _081355D6:
bl CreateTask
movs r0, 0
bl current_map_music_set__default_for_battle
- bl GetBattleTowerBattleTransition
+ bl BattleSetup_GetBattleTowerBattleTransition
lsls r0, 24
lsrs r0, 24
- bl sub_811AABC
+ bl BattleTransition_StartOnField
b _08135648
.align 2, 0
_081355F4: .4byte gPlayerParty
@@ -2200,10 +2200,10 @@ _08135606:
bl CreateTask
movs r0, 0
bl current_map_music_set__default_for_battle
- bl GetBattleTowerBattleTransition
+ bl BattleSetup_GetBattleTowerBattleTransition
lsls r0, 24
lsrs r0, 24
- bl sub_811AABC
+ bl BattleTransition_StartOnField
_08135648:
add sp, 0x4
pop {r4,r5}
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
deleted file mode 100644
index a4b4d1666..000000000
--- a/asm/battle_transition.s
+++ /dev/null
@@ -1,6254 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_811AABC
-sub_811AABC: @ 811AABC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811AAD0 @ =gMain
- ldr r1, _0811AAD4 @ =sub_8054398
- str r1, [r2, 0x4]
- bl sub_811AB20
- pop {r0}
- bx r0
- .align 2, 0
-_0811AAD0: .4byte gMain
-_0811AAD4: .4byte sub_8054398
- thumb_func_end sub_811AABC
-
- thumb_func_start sub_811AAD8
-sub_811AAD8: @ 811AAD8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_811AB20
- pop {r0}
- bx r0
- thumb_func_end sub_811AAD8
-
- thumb_func_start sub_811AAE8
-sub_811AAE8: @ 811AAE8
- push {lr}
- ldr r0, _0811AB0C @ =sub_811AB50
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _0811AB10 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0x26
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0811AB14
- movs r0, 0
- b _0811AB1C
- .align 2, 0
-_0811AB0C: .4byte sub_811AB50
-_0811AB10: .4byte gTasks
-_0811AB14:
- adds r0, r2, 0
- bl DestroyTask
- movs r0, 0x1
-_0811AB1C:
- pop {r1}
- bx r1
- thumb_func_end sub_811AAE8
-
- thumb_func_start sub_811AB20
-sub_811AB20: @ 811AB20
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0811AB48 @ =sub_811AB50
- movs r1, 0x2
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811AB4C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811AB48: .4byte sub_811AB50
-_0811AB4C: .4byte gTasks
- thumb_func_end sub_811AB20
-
- thumb_func_start sub_811AB50
-sub_811AB50: @ 811AB50
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811AB80 @ =gUnknown_083FD794
- ldr r2, _0811AB84 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811AB62:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811AB62
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811AB80: .4byte gUnknown_083FD794
-_0811AB84: .4byte gTasks
- thumb_func_end sub_811AB50
-
- thumb_func_start sub_811AB88
-sub_811AB88: @ 811AB88
- push {r4,lr}
- adds r4, r0, 0
- bl sub_807DE10
- ldr r0, _0811ABB4 @ =gPlttBufferFaded
- ldr r1, _0811ABB8 @ =gPlttBufferUnfaded
- ldr r2, _0811ABBC @ =0x04000100
- bl CpuSet
- ldr r1, _0811ABC0 @ =gUnknown_083FD70C
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- cmp r0, 0
- bne _0811ABC4
- movs r0, 0x2
- strh r0, [r4, 0x8]
- movs r0, 0x1
- b _0811ABD2
- .align 2, 0
-_0811ABB4: .4byte gPlttBufferFaded
-_0811ABB8: .4byte gPlttBufferUnfaded
-_0811ABBC: .4byte 0x04000100
-_0811ABC0: .4byte gUnknown_083FD70C
-_0811ABC4:
- movs r1, 0x4
- bl CreateTask
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
-_0811ABD2:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811AB88
-
- thumb_func_start sub_811ABD8
-sub_811ABD8: @ 811ABD8
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _0811ABF8 @ =gUnknown_083FD70C
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0811ABFC
- movs r0, 0
- b _0811AC04
- .align 2, 0
-_0811ABF8: .4byte gUnknown_083FD70C
-_0811ABFC:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
-_0811AC04:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811ABD8
-
- thumb_func_start sub_811AC0C
-sub_811AC0C: @ 811AC0C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _0811AC30 @ =gBattleTransitionFuncs
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- bl CreateTask
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AC30: .4byte gBattleTransitionFuncs
- thumb_func_end sub_811AC0C
-
- thumb_func_start sub_811AC34
-sub_811AC34: @ 811AC34
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0
- strh r0, [r4, 0x26]
- ldr r1, _0811AC60 @ =gBattleTransitionFuncs
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0811AC58
- movs r0, 0x1
- strh r0, [r4, 0x26]
-_0811AC58:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AC60: .4byte gBattleTransitionFuncs
- thumb_func_end sub_811AC34
-
- thumb_func_start sub_811AC64
-sub_811AC64: @ 811AC64
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r1, _0811AC98 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r1, r0, r1
- ldrh r2, [r1, 0x8]
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _0811AC9C
- adds r0, r2, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x2
- bl sub_811D4C8
- b _0811ACAC
- .align 2, 0
-_0811AC98: .4byte gTasks
-_0811AC9C:
- bl sub_811D52C
- lsls r0, 24
- cmp r0, 0
- beq _0811ACAC
- adds r0, r4, 0
- bl DestroyTask
-_0811ACAC:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_811AC64
-
- thumb_func_start sub_811ACB4
-sub_811ACB4: @ 811ACB4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811ACE4 @ =gUnknown_083FD7A4
- ldr r2, _0811ACE8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811ACC6:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811ACC6
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811ACE4: .4byte gUnknown_083FD7A4
-_0811ACE8: .4byte gTasks
- thumb_func_end sub_811ACB4
-
- thumb_func_start sub_811ACEC
-sub_811ACEC: @ 811ACEC
- ldr r2, _0811AD18 @ =REG_MOSAIC
- movs r1, 0
- strh r1, [r2]
- subs r2, 0x42
- ldrh r1, [r2]
- movs r3, 0x40
- orrs r1, r3
- strh r1, [r2]
- adds r2, 0x2
- ldrh r1, [r2]
- orrs r1, r3
- strh r1, [r2]
- adds r2, 0x2
- ldrh r1, [r2]
- orrs r1, r3
- strh r1, [r2]
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- movs r0, 0x1
- bx lr
- .align 2, 0
-_0811AD18: .4byte REG_MOSAIC
- thumb_func_end sub_811ACEC
-
- thumb_func_start sub_811AD1C
-sub_811AD1C: @ 811AD1C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0xA]
- movs r1, 0xA
- ldrsh r2, [r4, r1]
- cmp r2, 0
- beq _0811AD32
- subs r0, 0x1
- strh r0, [r4, 0xA]
- b _0811AD70
-_0811AD32:
- movs r0, 0x4
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _0811AD54
- movs r1, 0x1
- negs r1, r1
- str r2, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0811AD54:
- ldr r2, _0811AD7C @ =REG_MOSAIC
- ldrh r0, [r4, 0xC]
- movs r1, 0xF
- ands r1, r0
- lsls r0, r1, 4
- adds r0, r1
- strh r0, [r2]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0xE
- ble _0811AD70
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811AD70:
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AD7C: .4byte REG_MOSAIC
- thumb_func_end sub_811AD1C
-
- thumb_func_start sub_811AD80
-sub_811AD80: @ 811AD80
- push {lr}
- ldr r0, _0811ADA4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811AD9C
- ldr r0, _0811ADA8 @ =sub_811ACB4
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811AD9C:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811ADA4: .4byte gPaletteFade
-_0811ADA8: .4byte sub_811ACB4
- thumb_func_end sub_811AD80
-
- thumb_func_start sub_811ADAC
-sub_811ADAC: @ 811ADAC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811ADDC @ =gUnknown_083FD7B0
- ldr r2, _0811ADE0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811ADBE:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811ADBE
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811ADDC: .4byte gUnknown_083FD7B0
-_0811ADE0: .4byte gTasks
- thumb_func_end sub_811ADAC
-
- thumb_func_start sub_811ADE4
-sub_811ADE4: @ 811ADE4
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0811AE54 @ =gUnknown_03005560
- ldr r1, _0811AE58 @ =0x0200c000
- movs r2, 0x14
- ldrsh r1, [r1, r2]
- str r4, [sp]
- movs r2, 0xA0
- str r2, [sp, 0x4]
- movs r2, 0
- movs r3, 0x2
- bl sub_811D6E8
- ldr r0, _0811AE5C @ =sub_811AEE0
- bl SetVBlankCallback
- ldr r0, _0811AE60 @ =sub_811AF18
- bl SetHBlankCallback
- ldr r3, _0811AE64 @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _0811AE68 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x3
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _0811AE6C @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x18
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AE54: .4byte gUnknown_03005560
-_0811AE58: .4byte 0x0200c000
-_0811AE5C: .4byte sub_811AEE0
-_0811AE60: .4byte sub_811AF18
-_0811AE64: .4byte 0x04000208
-_0811AE68: .4byte 0x04000200
-_0811AE6C: .4byte REG_DISPSTAT
- thumb_func_end sub_811ADE4
-
- thumb_func_start sub_811AE70
-sub_811AE70: @ 811AE70
- push {r4,r5,lr}
- sub sp, 0x8
- ldr r4, _0811AED0 @ =0x0200c000
- ldrb r1, [r4]
- movs r1, 0
- strb r1, [r4]
- ldrh r1, [r0, 0xA]
- adds r1, 0x4
- strh r1, [r0, 0xA]
- ldrh r1, [r0, 0xC]
- adds r1, 0x8
- strh r1, [r0, 0xC]
- ldr r3, _0811AED4 @ =gUnknown_03004DE0
- movs r2, 0x14
- ldrsh r1, [r4, r2]
- movs r5, 0xA
- ldrsh r2, [r0, r5]
- movs r5, 0xC
- ldrsh r0, [r0, r5]
- str r0, [sp]
- movs r0, 0xA0
- str r0, [sp, 0x4]
- adds r0, r3, 0
- movs r3, 0x2
- bl sub_811D6E8
- ldr r0, _0811AED8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811AEBE
- ldr r0, _0811AEDC @ =sub_811ADAC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811AEBE:
- ldrb r0, [r4]
- adds r0, 0x1
- ldrb r1, [r4]
- strb r0, [r4]
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AED0: .4byte 0x0200c000
-_0811AED4: .4byte gUnknown_03004DE0
-_0811AED8: .4byte gPaletteFade
-_0811AEDC: .4byte sub_811ADAC
- thumb_func_end sub_811AE70
-
- thumb_func_start sub_811AEE0
-sub_811AEE0: @ 811AEE0
- push {lr}
- bl sub_811D67C
- ldr r0, _0811AF08 @ =0x0200c000
- ldrb r0, [r0]
- cmp r0, 0
- beq _0811AF02
- ldr r1, _0811AF0C @ =0x040000d4
- ldr r0, _0811AF10 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, _0811AF14 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811AF02:
- pop {r0}
- bx r0
- .align 2, 0
-_0811AF08: .4byte 0x0200c000
-_0811AF0C: .4byte 0x040000d4
-_0811AF10: .4byte gUnknown_03004DE0
-_0811AF14: .4byte 0x800000a0
- thumb_func_end sub_811AEE0
-
- thumb_func_start sub_811AF18
-sub_811AF18: @ 811AF18
- ldr r1, _0811AF38 @ =gUnknown_03004DE0
- ldr r0, _0811AF3C @ =REG_VCOUNT
- ldrh r0, [r0]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _0811AF40 @ =REG_BG1HOFS
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0811AF38: .4byte gUnknown_03004DE0
-_0811AF3C: .4byte REG_VCOUNT
-_0811AF40: .4byte REG_BG1HOFS
- thumb_func_end sub_811AF18
-
- thumb_func_start sub_811AF44
-sub_811AF44: @ 811AF44
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811AF74 @ =gUnknown_083FD7B8
- ldr r2, _0811AF78 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811AF56:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811AF56
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811AF74: .4byte gUnknown_083FD7B8
-_0811AF78: .4byte gTasks
- thumb_func_end sub_811AF44
-
- thumb_func_start sub_811AF7C
-sub_811AF7C: @ 811AF7C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0811AFE4 @ =0x0200c000
- ldr r0, _0811AFE8 @ =gUnknown_03005560
- movs r2, 0x16
- ldrsh r1, [r1, r2]
- movs r2, 0xA0
- lsls r2, 1
- bl memset
- ldr r0, _0811AFEC @ =sub_811B08C
- bl SetVBlankCallback
- ldr r0, _0811AFF0 @ =sub_811B0C4
- bl SetHBlankCallback
- ldr r3, _0811AFF4 @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _0811AFF8 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x3
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _0811AFFC @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x18
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811AFE4: .4byte 0x0200c000
-_0811AFE8: .4byte gUnknown_03005560
-_0811AFEC: .4byte sub_811B08C
-_0811AFF0: .4byte sub_811B0C4
-_0811AFF4: .4byte 0x04000208
-_0811AFF8: .4byte 0x04000200
-_0811AFFC: .4byte REG_DISPSTAT
- thumb_func_end sub_811AF7C
-
- thumb_func_start sub_811B000
-sub_811B000: @ 811B000
- push {r4-r7,lr}
- ldr r2, _0811B07C @ =0x0200c000
- ldrb r1, [r2]
- movs r1, 0
- strb r1, [r2]
- ldrh r4, [r0, 0xA]
- ldrh r2, [r0, 0xC]
- lsls r3, r2, 16
- asrs r3, 24
- movs r5, 0x84
- lsls r5, 5
- adds r1, r4, r5
- strh r1, [r0, 0xA]
- movs r1, 0xC0
- lsls r1, 1
- adds r2, r1
- strh r2, [r0, 0xC]
- movs r5, 0
- lsls r7, r3, 16
-_0811B026:
- lsrs r0, r4, 8
- asrs r1, r7, 16
- bl Sin
- ldr r2, _0811B080 @ =gUnknown_03004DE0
- lsls r1, r5, 1
- adds r1, r2
- ldr r6, _0811B07C @ =0x0200c000
- ldrh r2, [r6, 0x16]
- adds r0, r2
- strh r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x84
- lsls r1, 5
- adds r0, r4, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r5, 0x9F
- bls _0811B026
- ldr r0, _0811B084 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811B06A
- ldr r0, _0811B088 @ =sub_811AF44
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811B06A:
- ldrb r0, [r6]
- adds r0, 0x1
- ldrb r1, [r6]
- strb r0, [r6]
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B07C: .4byte 0x0200c000
-_0811B080: .4byte gUnknown_03004DE0
-_0811B084: .4byte gPaletteFade
-_0811B088: .4byte sub_811AF44
- thumb_func_end sub_811B000
-
- thumb_func_start sub_811B08C
-sub_811B08C: @ 811B08C
- push {lr}
- bl sub_811D67C
- ldr r0, _0811B0B4 @ =0x0200c000
- ldrb r0, [r0]
- cmp r0, 0
- beq _0811B0AE
- ldr r1, _0811B0B8 @ =0x040000d4
- ldr r0, _0811B0BC @ =gUnknown_03004DE0
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, _0811B0C0 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811B0AE:
- pop {r0}
- bx r0
- .align 2, 0
-_0811B0B4: .4byte 0x0200c000
-_0811B0B8: .4byte 0x040000d4
-_0811B0BC: .4byte gUnknown_03004DE0
-_0811B0C0: .4byte 0x800000a0
- thumb_func_end sub_811B08C
-
- thumb_func_start sub_811B0C4
-sub_811B0C4: @ 811B0C4
- ldr r1, _0811B0E4 @ =gUnknown_03004DE0
- ldr r0, _0811B0E8 @ =REG_VCOUNT
- ldrh r0, [r0]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _0811B0EC @ =REG_BG1VOFS
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0811B0E4: .4byte gUnknown_03004DE0
-_0811B0E8: .4byte REG_VCOUNT
-_0811B0EC: .4byte REG_BG1VOFS
- thumb_func_end sub_811B0C4
-
- thumb_func_start sub_811B0F0
-sub_811B0F0: @ 811B0F0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811B120 @ =gUnknown_083FD7C0
- ldr r2, _0811B124 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811B102:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811B102
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B120: .4byte gUnknown_083FD7C0
-_0811B124: .4byte gTasks
- thumb_func_end sub_811B0F0
-
- thumb_func_start sub_811B128
-sub_811B128: @ 811B128
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- movs r2, 0
- movs r3, 0x10
- strh r3, [r4, 0xA]
- strh r2, [r4, 0xC]
- strh r2, [r4, 0x10]
- movs r0, 0x80
- lsls r0, 7
- strh r0, [r4, 0x12]
- ldr r1, _0811B1BC @ =0x0200c000
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- strh r2, [r1, 0x4]
- movs r0, 0xF0
- strh r0, [r1, 0x6]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- ldr r0, _0811B1C0 @ =0x00003f41
- strh r0, [r1, 0xE]
- lsls r3, 8
- strh r3, [r1, 0x10]
- movs r1, 0
- add r5, sp, 0x4
- add r6, sp, 0x8
- ldr r3, _0811B1C4 @ =gUnknown_03005560
- movs r2, 0xF0
-_0811B168:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9F
- bls _0811B168
- ldr r0, _0811B1C8 @ =sub_811B520
- bl SetVBlankCallback
- adds r0, r5, 0
- adds r1, r6, 0
- bl sub_811D6A8
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, [sp, 0x4]
- ldr r2, _0811B1CC @ =0x01000400
- mov r0, sp
- bl CpuSet
- ldr r0, _0811B1D0 @ =gUnknown_083FBB88
- ldr r1, [sp, 0x8]
- movs r2, 0xB0
- lsls r2, 2
- bl CpuSet
- ldr r0, _0811B1D4 @ =gFieldEffectObjectPalette10
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B1BC: .4byte 0x0200c000
-_0811B1C0: .4byte 0x00003f41
-_0811B1C4: .4byte gUnknown_03005560
-_0811B1C8: .4byte sub_811B520
-_0811B1CC: .4byte 0x01000400
-_0811B1D0: .4byte gUnknown_083FBB88
-_0811B1D4: .4byte gFieldEffectObjectPalette10
- thumb_func_end sub_811B128
-
- thumb_func_start sub_811B1D8
-sub_811B1D8: @ 811B1D8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x10
- adds r7, r0, 0
- ldr r5, _0811B260 @ =gUnknown_083FDB44
- add r1, sp, 0xC
- add r0, sp, 0x8
- bl sub_811D6A8
- movs r1, 0
- ldr r0, [sp, 0x8]
- mov r9, r0
- ldr r6, _0811B264 @ =gUnknown_03004DE0
- mov r8, r6
- movs r0, 0xF0
- lsls r0, 8
- mov r12, r0
-_0811B1FE:
- movs r0, 0
- lsls r3, r1, 16
- asrs r4, r3, 11
-_0811B204:
- lsls r2, r0, 16
- asrs r2, 16
- adds r1, r4, r2
- lsls r1, 1
- add r1, r9
- ldrh r0, [r5]
- mov r6, r12
- orrs r0, r6
- strh r0, [r1]
- adds r2, 0x1
- lsls r2, 16
- adds r5, 0x2
- lsrs r0, r2, 16
- asrs r2, 16
- cmp r2, 0x1D
- ble _0811B204
- movs r1, 0x80
- lsls r1, 9
- adds r0, r3, r1
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _0811B1FE
- movs r6, 0x10
- ldrsh r2, [r7, r6]
- movs r1, 0x12
- ldrsh r0, [r7, r1]
- str r0, [sp]
- movs r0, 0xA0
- str r0, [sp, 0x4]
- mov r0, r8
- movs r1, 0
- movs r3, 0x84
- bl sub_811D6E8
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
- movs r0, 0x1
- add sp, 0x10
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B260: .4byte gUnknown_083FDB44
-_0811B264: .4byte gUnknown_03004DE0
- thumb_func_end sub_811B1D8
-
- thumb_func_start sub_811B268
-sub_811B268: @ 811B268
- push {r4,lr}
- sub sp, 0x8
- adds r2, r0, 0
- ldr r1, _0811B2E8 @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r3, [r2, 0xE]
- movs r4, 0xE
- ldrsh r0, [r2, r4]
- adds r4, r1, 0
- cmp r0, 0
- beq _0811B28C
- subs r0, r3, 0x1
- strh r0, [r2, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _0811B296
-_0811B28C:
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- movs r0, 0x2
- strh r0, [r2, 0xE]
-_0811B296:
- ldrh r0, [r2, 0xA]
- lsls r0, 8
- ldrh r1, [r2, 0xC]
- orrs r0, r1
- strh r0, [r4, 0x10]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0xF
- ble _0811B2AE
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
-_0811B2AE:
- ldrh r0, [r2, 0x10]
- adds r0, 0x8
- strh r0, [r2, 0x10]
- ldr r0, _0811B2EC @ =0xffffff00
- adds r1, r0, 0
- ldrh r3, [r2, 0x12]
- adds r1, r3
- strh r1, [r2, 0x12]
- ldr r0, _0811B2F0 @ =gUnknown_03004DE0
- movs r3, 0x10
- ldrsh r2, [r2, r3]
- lsls r1, 16
- asrs r1, 24
- str r1, [sp]
- movs r1, 0xA0
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_811D6E8
- ldrb r0, [r4]
- adds r0, 0x1
- ldrb r1, [r4]
- strb r0, [r4]
- movs r0, 0
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B2E8: .4byte 0x0200c000
-_0811B2EC: .4byte 0xffffff00
-_0811B2F0: .4byte gUnknown_03004DE0
- thumb_func_end sub_811B268
-
- thumb_func_start sub_811B2F4
-sub_811B2F4: @ 811B2F4
- push {r4,r5,lr}
- sub sp, 0x8
- adds r3, r0, 0
- ldr r1, _0811B374 @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r2, [r3, 0xE]
- movs r4, 0xE
- ldrsh r0, [r3, r4]
- adds r4, r1, 0
- cmp r0, 0
- beq _0811B318
- subs r0, r2, 0x1
- strh r0, [r3, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _0811B322
-_0811B318:
- ldrh r0, [r3, 0xA]
- subs r0, 0x1
- strh r0, [r3, 0xA]
- movs r0, 0x2
- strh r0, [r3, 0xE]
-_0811B322:
- ldrh r0, [r3, 0xA]
- lsls r1, r0, 8
- ldrh r2, [r3, 0xC]
- orrs r1, r2
- strh r1, [r4, 0x10]
- lsls r0, 16
- cmp r0, 0
- bne _0811B338
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
-_0811B338:
- ldrh r0, [r3, 0x10]
- adds r0, 0x8
- strh r0, [r3, 0x10]
- ldr r5, _0811B378 @ =0xffffff00
- adds r1, r5, 0
- ldrh r0, [r3, 0x12]
- adds r1, r0
- strh r1, [r3, 0x12]
- ldr r0, _0811B37C @ =gUnknown_03004DE0
- movs r5, 0x10
- ldrsh r2, [r3, r5]
- lsls r1, 16
- asrs r1, 24
- str r1, [sp]
- movs r1, 0xA0
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_811D6E8
- ldrb r0, [r4]
- adds r0, 0x1
- ldrb r1, [r4]
- strb r0, [r4]
- movs r0, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B374: .4byte 0x0200c000
-_0811B378: .4byte 0xffffff00
-_0811B37C: .4byte gUnknown_03004DE0
- thumb_func_end sub_811B2F4
-
- thumb_func_start sub_811B380
-sub_811B380: @ 811B380
- push {r4-r7,lr}
- sub sp, 0x8
- adds r4, r0, 0
- ldr r5, _0811B3E0 @ =0x0200c000
- ldrb r0, [r5]
- movs r7, 0
- strb r7, [r5]
- ldrh r0, [r4, 0x10]
- adds r0, 0x8
- strh r0, [r4, 0x10]
- ldr r0, _0811B3E4 @ =0xffffff00
- adds r1, r0, 0
- ldrh r3, [r4, 0x12]
- adds r1, r3
- strh r1, [r4, 0x12]
- ldr r0, _0811B3E8 @ =gUnknown_03004DE0
- movs r3, 0x10
- ldrsh r2, [r4, r3]
- lsls r1, 16
- asrs r1, 24
- str r1, [sp]
- movs r6, 0xA0
- str r6, [sp, 0x4]
- movs r1, 0
- movs r3, 0x84
- bl sub_811D6E8
- movs r1, 0x12
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bgt _0811B3CE
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- strh r6, [r4, 0xA]
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0xC]
- strh r7, [r4, 0xE]
-_0811B3CE:
- ldrb r0, [r5]
- adds r0, 0x1
- ldrb r1, [r5]
- strb r0, [r5]
- movs r0, 0
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B3E0: .4byte 0x0200c000
-_0811B3E4: .4byte 0xffffff00
-_0811B3E8: .4byte gUnknown_03004DE0
- thumb_func_end sub_811B380
-
- thumb_func_start sub_811B3EC
-sub_811B3EC: @ 811B3EC
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0811B488 @ =0x0200c000
- ldrb r1, [r0]
- movs r3, 0
- strb r3, [r0]
- ldrh r2, [r4, 0xC]
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- ldr r0, _0811B48C @ =0x000003ff
- cmp r1, r0
- bgt _0811B40A
- adds r0, r2, 0
- adds r0, 0x80
- strh r0, [r4, 0xC]
-_0811B40A:
- ldrh r1, [r4, 0xA]
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0811B426
- ldrh r0, [r4, 0xC]
- lsls r0, 16
- asrs r0, 24
- subs r0, r1, r0
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bge _0811B426
- strh r3, [r4, 0xA]
-_0811B426:
- ldr r0, _0811B490 @ =gUnknown_03004DE0
- movs r1, 0xA
- ldrsh r3, [r4, r1]
- movs r1, 0x78
- movs r2, 0x50
- bl sub_811D764
- movs r2, 0xA
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0811B462
- ldr r1, _0811B494 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811B498 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811B49C @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D6D4
- ldr r0, _0811B4A0 @ =sub_811B0F0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811B462:
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0811B476
- adds r0, r1, 0x1
- strh r0, [r4, 0xE]
- ldr r0, _0811B4A4 @ =sub_811B54C
- bl SetVBlankCallback
-_0811B476:
- ldr r0, _0811B488 @ =0x0200c000
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B488: .4byte 0x0200c000
-_0811B48C: .4byte 0x000003ff
-_0811B490: .4byte gUnknown_03004DE0
-_0811B494: .4byte 0x040000b0
-_0811B498: .4byte 0x0000c5ff
-_0811B49C: .4byte 0x00007fff
-_0811B4A0: .4byte sub_811B0F0
-_0811B4A4: .4byte sub_811B54C
- thumb_func_end sub_811B3EC
-
- thumb_func_start sub_811B4A8
-sub_811B4A8: @ 811B4A8
- push {lr}
- ldr r1, _0811B500 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811B504 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811B508 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D67C
- ldr r2, _0811B50C @ =0x0200c000
- ldrb r0, [r2]
- cmp r0, 0
- beq _0811B4DE
- ldr r1, _0811B510 @ =0x040000d4
- ldr r0, _0811B514 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, _0811B518 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811B4DE:
- ldr r1, _0811B51C @ =REG_WININ
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x4]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2, 0x8]
- strh r0, [r1]
- adds r1, 0xC
- ldrh r0, [r2, 0xE]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x10]
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0811B500: .4byte 0x040000b0
-_0811B504: .4byte 0x0000c5ff
-_0811B508: .4byte 0x00007fff
-_0811B50C: .4byte 0x0200c000
-_0811B510: .4byte 0x040000d4
-_0811B514: .4byte gUnknown_03004DE0
-_0811B518: .4byte 0x800000a0
-_0811B51C: .4byte REG_WININ
- thumb_func_end sub_811B4A8
-
- thumb_func_start sub_811B520
-sub_811B520: @ 811B520
- push {lr}
- bl sub_811B4A8
- ldr r1, _0811B53C @ =0x040000b0
- ldr r0, _0811B540 @ =gUnknown_03005560
- str r0, [r1]
- ldr r0, _0811B544 @ =REG_BG0HOFS
- str r0, [r1, 0x4]
- ldr r0, _0811B548 @ =0xa2400001
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_0811B53C: .4byte 0x040000b0
-_0811B540: .4byte gUnknown_03005560
-_0811B544: .4byte REG_BG0HOFS
-_0811B548: .4byte 0xa2400001
- thumb_func_end sub_811B520
-
- thumb_func_start sub_811B54C
-sub_811B54C: @ 811B54C
- push {lr}
- bl sub_811B4A8
- ldr r1, _0811B568 @ =0x040000b0
- ldr r0, _0811B56C @ =gUnknown_03005560
- str r0, [r1]
- ldr r0, _0811B570 @ =REG_WIN0H
- str r0, [r1, 0x4]
- ldr r0, _0811B574 @ =0xa2400001
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_0811B568: .4byte 0x040000b0
-_0811B56C: .4byte gUnknown_03005560
-_0811B570: .4byte REG_WIN0H
-_0811B574: .4byte 0xa2400001
- thumb_func_end sub_811B54C
-
- thumb_func_start sub_811B578
-sub_811B578: @ 811B578
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811B5A8 @ =gUnknown_083FD7D8
- ldr r2, _0811B5AC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811B58A:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811B58A
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B5A8: .4byte gUnknown_083FD7D8
-_0811B5AC: .4byte gTasks
- thumb_func_end sub_811B578
-
- thumb_func_start sub_811B5B0
-sub_811B5B0: @ 811B5B0
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- add r0, sp, 0x4
- add r1, sp, 0x8
- bl sub_811D6A8
- ldr r0, _0811B5F0 @ =gUnknown_083FC108
- ldr r1, [sp, 0x8]
- movs r2, 0x20
- bl CpuSet
- movs r0, 0
- str r0, [sp]
- ldr r1, [sp, 0x4]
- ldr r2, _0811B5F4 @ =0x05000200
- mov r0, sp
- bl CpuSet
- ldr r0, _0811B5F8 @ =gFieldEffectObjectPalette10
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B5F0: .4byte gUnknown_083FC108
-_0811B5F4: .4byte 0x05000200
-_0811B5F8: .4byte gFieldEffectObjectPalette10
- thumb_func_end sub_811B5B0
-
- thumb_func_start sub_811B5FC
-sub_811B5FC: @ 811B5FC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r7, r0, 0
- ldr r1, _0811B67C @ =gUnknown_083FD7E4
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- add r4, sp, 0x4
- ldr r1, _0811B680 @ =gUnknown_083FD7E8
- adds r0, r4, 0
- movs r2, 0xA
- bl memcpy
- bl Random
- movs r5, 0x1
- ands r5, r0
- movs r1, 0
- mov r8, r4
- ldr r6, _0811B684 @ =gUnknown_0202FF84
-_0811B62A:
- lsls r5, 16
- asrs r5, 16
- lsls r0, r5, 1
- add r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- str r0, [r6]
- lsls r4, r1, 16
- asrs r4, 16
- lsls r0, r4, 5
- adds r0, 0x10
- str r0, [r6, 0x4]
- str r5, [r6, 0x8]
- lsls r0, r4, 1
- add r0, r8
- movs r1, 0
- ldrsh r0, [r0, r1]
- str r0, [r6, 0xC]
- movs r0, 0x2D
- bl FieldEffectStart
- adds r4, 0x1
- lsls r4, 16
- movs r0, 0x1
- eors r5, r0
- lsls r5, 16
- lsrs r5, 16
- lsrs r1, r4, 16
- asrs r4, 16
- cmp r4, 0x4
- ble _0811B62A
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
- movs r0, 0
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B67C: .4byte gUnknown_083FD7E4
-_0811B680: .4byte gUnknown_083FD7E8
-_0811B684: .4byte gUnknown_0202FF84
- thumb_func_end sub_811B5FC
-
- thumb_func_start sub_811B688
-sub_811B688: @ 811B688
- push {lr}
- movs r0, 0x2D
- bl FieldEffectActiveListContains
- lsls r0, 24
- cmp r0, 0
- bne _0811B6A8
- bl sub_811D6D4
- ldr r0, _0811B6B0 @ =sub_811B578
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811B6A8:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811B6B0: .4byte sub_811B578
- thumb_func_end sub_811B688
-
- thumb_func_start FldEff_Pokeball
-FldEff_Pokeball: @ 811B6B4
- push {r4,r5,lr}
- ldr r0, _0811B710 @ =gSpriteTemplate_83FD98C
- ldr r5, _0811B714 @ =gUnknown_0202FF84
- movs r2, 0
- ldrsh r1, [r5, r2]
- movs r3, 0x4
- ldrsh r2, [r5, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0811B718 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r4, r1
- ldrb r1, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r1
- strb r0, [r4, 0x5]
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldr r0, [r5, 0x8]
- strh r0, [r4, 0x2E]
- ldr r0, [r5, 0xC]
- strh r0, [r4, 0x30]
- ldr r0, _0811B71C @ =0x0000ffff
- strh r0, [r4, 0x32]
- adds r0, r4, 0
- bl InitSpriteAffineAnim
- ldrb r1, [r5, 0x8]
- adds r0, r4, 0
- bl StartSpriteAffineAnim
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B710: .4byte gSpriteTemplate_83FD98C
-_0811B714: .4byte gUnknown_0202FF84
-_0811B718: .4byte gSprites
-_0811B71C: .4byte 0x0000ffff
- thumb_func_end FldEff_Pokeball
-
- thumb_func_start sub_811B720
-sub_811B720: @ 811B720
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r1, _0811B740 @ =gUnknown_083FD7F2
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- ldrh r1, [r4, 0x30]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0811B744
- subs r0, r1, 0x1
- strh r0, [r4, 0x30]
- b _0811B7D6
- .align 2, 0
-_0811B740: .4byte gUnknown_083FD7F2
-_0811B744:
- ldrh r0, [r4, 0x20]
- lsls r1, r0, 16
- lsrs r0, r1, 16
- cmp r0, 0xF0
- bhi _0811B7B2
- asrs r0, r1, 19
- lsls r0, 16
- ldrh r1, [r4, 0x22]
- lsls r1, 16
- asrs r1, 19
- lsls r1, 16
- lsrs r1, 16
- lsrs r2, r0, 16
- asrs r5, r0, 16
- movs r3, 0x32
- ldrsh r0, [r4, r3]
- cmp r5, r0
- beq _0811B7B2
- strh r2, [r4, 0x32]
- ldr r0, _0811B7E0 @ =REG_BG0CNT
- ldrh r2, [r0]
- lsrs r2, 8
- movs r0, 0x1F
- ands r2, r0
- lsls r2, 11
- movs r0, 0xC0
- lsls r0, 19
- adds r2, r0
- lsls r1, 16
- asrs r1, 16
- subs r0, r1, 0x2
- lsls r0, 5
- adds r0, r5
- lsls r0, 1
- adds r0, r2
- ldr r6, _0811B7E4 @ =0x0000f001
- adds r3, r6, 0
- strh r3, [r0]
- subs r0, r1, 0x1
- lsls r0, 5
- adds r0, r5
- lsls r0, 1
- adds r0, r2
- strh r3, [r0]
- lsls r0, r1, 5
- adds r0, r5
- lsls r0, 1
- adds r0, r2
- strh r3, [r0]
- adds r1, 0x1
- lsls r1, 5
- adds r1, r5
- lsls r1, 1
- adds r1, r2
- strh r3, [r1]
-_0811B7B2:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- ldrh r2, [r4, 0x20]
- adds r0, r2
- strh r0, [r4, 0x20]
- adds r0, 0xF
- lsls r0, 16
- movs r1, 0x87
- lsls r1, 17
- cmp r0, r1
- bls _0811B7D6
- adds r0, r4, 0
- movs r1, 0x2D
- bl FieldEffectStop
-_0811B7D6:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B7E0: .4byte REG_BG0CNT
-_0811B7E4: .4byte 0x0000f001
- thumb_func_end sub_811B720
-
- thumb_func_start sub_811B7E8
-sub_811B7E8: @ 811B7E8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811B818 @ =gUnknown_083FD7F8
- ldr r2, _0811B81C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811B7FA:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811B7FA
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811B818: .4byte gUnknown_083FD7F8
-_0811B81C: .4byte gTasks
- thumb_func_end sub_811B7E8
-
- thumb_func_start sub_811B820
-sub_811B820: @ 811B820
- push {r4,lr}
- adds r4, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- ldr r1, _0811B870 @ =0x0200c000
- movs r0, 0
- strh r0, [r1, 0x2]
- movs r0, 0x3F
- strh r0, [r1, 0x4]
- ldr r0, _0811B874 @ =0x0000f0f1
- strh r0, [r1, 0x6]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r3, _0811B878 @ =gUnknown_03005560
- ldr r2, _0811B87C @ =0x0000f3f4
-_0811B844:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9F
- bls _0811B844
- ldr r0, _0811B880 @ =sub_811BC2C
- bl SetVBlankCallback
- ldr r1, _0811B870 @ =0x0200c000
- movs r0, 0x78
- strh r0, [r1, 0x2C]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B870: .4byte 0x0200c000
-_0811B874: .4byte 0x0000f0f1
-_0811B878: .4byte gUnknown_03005560
-_0811B87C: .4byte 0x0000f3f4
-_0811B880: .4byte sub_811BC2C
- thumb_func_end sub_811B820
-
- thumb_func_start sub_811B884
-sub_811B884: @ 811B884
- push {r4-r6,lr}
- sub sp, 0xC
- adds r6, r0, 0
- ldr r4, _0811B904 @ =0x0200c000
- ldrb r0, [r4]
- movs r0, 0
- strb r0, [r4]
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x2C
- ldrsh r3, [r4, r1]
- movs r1, 0x1
- negs r1, r1
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- bl sub_811D8FC
- ldr r5, _0811B908 @ =gUnknown_03004DE0
-_0811B8B0:
- movs r3, 0x2A
- ldrsh r2, [r4, r3]
- lsls r2, 1
- adds r2, r5
- ldrh r0, [r4, 0x28]
- adds r0, 0x1
- movs r3, 0xF0
- lsls r3, 7
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_811D978
- lsls r0, 24
- cmp r0, 0
- beq _0811B8B0
- ldr r2, _0811B904 @ =0x0200c000
- ldrh r0, [r2, 0x2C]
- adds r0, 0x10
- strh r0, [r2, 0x2C]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xEF
- ble _0811B8F2
- movs r0, 0
- strh r0, [r2, 0x2E]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
-_0811B8F2:
- ldrb r0, [r2]
- adds r0, 0x1
- ldrb r1, [r2]
- strb r0, [r2]
- movs r0, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B904: .4byte 0x0200c000
-_0811B908: .4byte gUnknown_03004DE0
- thumb_func_end sub_811B884
-
- thumb_func_start sub_811B90C
-sub_811B90C: @ 811B90C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- adds r7, r0, 0
- add r1, sp, 0xC
- movs r0, 0
- strb r0, [r1]
- ldr r4, _0811B988 @ =0x0200c000
- ldrb r0, [r4]
- movs r0, 0
- strb r0, [r4]
- adds r0, r4, 0
- adds r0, 0x24
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0xF0
- bl sub_811D8FC
- adds r6, r4, 0
- ldr r5, _0811B98C @ =gUnknown_03004DE0
- mov r8, r5
- add r5, sp, 0xC
-_0811B946:
- movs r1, 0x78
- ldrh r0, [r4, 0x28]
- adds r0, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0x4F
- ble _0811B95C
- ldrh r1, [r4, 0x28]
- movs r3, 0xF0
-_0811B95C:
- movs r0, 0x2A
- ldrsh r2, [r4, r0]
- lsls r2, 1
- add r2, r8
- lsls r1, 16
- asrs r1, 8
- lsls r0, r3, 16
- asrs r3, r0, 16
- orrs r3, r1
- strh r3, [r2]
- ldrb r0, [r5]
- cmp r0, 0
- bne _0811B990
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_811D978
- strb r0, [r5]
- b _0811B946
- .align 2, 0
-_0811B988: .4byte 0x0200c000
-_0811B98C: .4byte gUnknown_03004DE0
-_0811B990:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x8
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r1, r0, 16
- cmp r1, 0x9F
- ble _0811B9AA
- movs r0, 0xF0
- strh r0, [r4, 0x2C]
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
- b _0811B9D0
-_0811B9AA:
- movs r2, 0x2A
- ldrsh r0, [r4, r2]
- cmp r0, r1
- bge _0811B9D0
- ldr r4, _0811B9E8 @ =gUnknown_03004DE0
- ldr r2, _0811B9EC @ =0x0200c000
-_0811B9B6:
- ldrh r0, [r2, 0x2A]
- adds r0, 0x1
- strh r0, [r2, 0x2A]
- lsls r0, 16
- asrs r0, 15
- adds r0, r4
- strh r3, [r0]
- movs r5, 0x2A
- ldrsh r1, [r2, r5]
- movs r5, 0x2E
- ldrsh r0, [r2, r5]
- cmp r1, r0
- blt _0811B9B6
-_0811B9D0:
- ldrb r0, [r6]
- adds r0, 0x1
- ldrb r1, [r6]
- strb r0, [r6]
- movs r0, 0
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811B9E8: .4byte gUnknown_03004DE0
-_0811B9EC: .4byte 0x0200c000
- thumb_func_end sub_811B90C
-
- thumb_func_start sub_811B9F0
-sub_811B9F0: @ 811B9F0
- push {r4-r6,lr}
- sub sp, 0xC
- adds r6, r0, 0
- ldr r4, _0811BA68 @ =0x0200c000
- ldrb r0, [r4]
- movs r0, 0
- strb r0, [r4]
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x2C
- ldrsh r3, [r4, r1]
- movs r1, 0xA0
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- bl sub_811D8FC
- ldr r5, _0811BA6C @ =gUnknown_03004DE0
-_0811BA1A:
- movs r0, 0x2A
- ldrsh r2, [r4, r0]
- lsls r2, 1
- adds r2, r5
- ldrh r0, [r4, 0x28]
- lsls r0, 8
- movs r1, 0xF0
- orrs r0, r1
- strh r0, [r2]
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_811D978
- lsls r0, 24
- cmp r0, 0
- beq _0811BA1A
- ldr r2, _0811BA68 @ =0x0200c000
- ldrh r0, [r2, 0x2C]
- subs r0, 0x10
- strh r0, [r2, 0x2C]
- lsls r0, 16
- cmp r0, 0
- bgt _0811BA56
- movs r0, 0xA0
- strh r0, [r2, 0x2E]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
-_0811BA56:
- ldrb r0, [r2]
- adds r0, 0x1
- ldrb r1, [r2]
- strb r0, [r2]
- movs r0, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BA68: .4byte 0x0200c000
-_0811BA6C: .4byte gUnknown_03004DE0
- thumb_func_end sub_811B9F0
-
- thumb_func_start sub_811BA70
-sub_811BA70: @ 811BA70
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- mov r8, r0
- add r1, sp, 0xC
- movs r0, 0
- strb r0, [r1]
- ldr r4, _0811BAF0 @ =0x0200c000
- ldrb r0, [r4]
- movs r0, 0
- strb r0, [r4]
- adds r0, r4, 0
- adds r0, 0x24
- movs r2, 0x2E
- ldrsh r1, [r4, r2]
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl sub_811D8FC
- ldr r3, _0811BAF4 @ =gUnknown_03004DE0
- mov r9, r3
- mov r10, r4
- add r6, sp, 0xC
-_0811BAAE:
- movs r5, 0x2A
- ldrsh r0, [r4, r5]
- lsls r0, 1
- mov r7, r9
- adds r5, r0, r7
- ldrb r1, [r5]
- ldrh r2, [r4, 0x28]
- adds r3, r2, 0
- movs r7, 0x2E
- ldrsh r0, [r4, r7]
- cmp r0, 0x50
- bgt _0811BACA
- movs r2, 0x78
- adds r1, r3, 0
-_0811BACA:
- lsls r0, r2, 16
- asrs r0, 8
- lsls r1, 16
- asrs r1, 16
- orrs r1, r0
- movs r3, 0
- strh r1, [r5]
- ldrb r0, [r6]
- cmp r0, 0
- bne _0811BAF8
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_811D978
- strb r0, [r6]
- b _0811BAAE
- .align 2, 0
-_0811BAF0: .4byte 0x0200c000
-_0811BAF4: .4byte gUnknown_03004DE0
-_0811BAF8:
- ldrh r0, [r4, 0x2E]
- subs r0, 0x8
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r2, r0, 16
- cmp r2, 0
- bgt _0811BB12
- strh r3, [r4, 0x2C]
- mov r1, r8
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _0811BB3A
-_0811BB12:
- movs r3, 0x2A
- ldrsh r0, [r4, r3]
- cmp r0, r2
- ble _0811BB3A
- ldr r4, _0811BB58 @ =gUnknown_03004DE0
- ldr r2, _0811BB5C @ =0x0200c000
- adds r3, r1, 0
-_0811BB20:
- ldrh r0, [r2, 0x2A]
- subs r0, 0x1
- strh r0, [r2, 0x2A]
- lsls r0, 16
- asrs r0, 15
- adds r0, r4
- strh r3, [r0]
- movs r5, 0x2A
- ldrsh r1, [r2, r5]
- movs r7, 0x2E
- ldrsh r0, [r2, r7]
- cmp r1, r0
- bgt _0811BB20
-_0811BB3A:
- mov r1, r10
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r1, [r1]
- mov r2, r10
- strb r0, [r2]
- movs r0, 0
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BB58: .4byte gUnknown_03004DE0
-_0811BB5C: .4byte 0x0200c000
- thumb_func_end sub_811BA70
-
- thumb_func_start sub_811BB60
-sub_811BB60: @ 811BB60
- push {r4-r6,lr}
- sub sp, 0xC
- adds r6, r0, 0
- ldr r4, _0811BBE4 @ =0x0200c000
- ldrb r0, [r4]
- movs r1, 0
- strb r1, [r4]
- adds r0, r4, 0
- adds r0, 0x24
- movs r2, 0x2C
- ldrsh r3, [r4, r2]
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- str r1, [sp, 0x8]
- movs r1, 0x78
- movs r2, 0x50
- bl sub_811D8FC
- ldr r5, _0811BBE8 @ =gUnknown_03004DE0
-_0811BB88:
- movs r2, 0x78
- ldrh r3, [r4, 0x28]
- movs r1, 0x28
- ldrsh r0, [r4, r1]
- cmp r0, 0x77
- ble _0811BB98
- movs r2, 0
- movs r3, 0xF0
-_0811BB98:
- movs r0, 0x2A
- ldrsh r1, [r4, r0]
- lsls r1, 1
- adds r1, r5
- lsls r2, 8
- lsls r0, r3, 16
- asrs r0, 16
- orrs r0, r2
- strh r0, [r1]
- adds r0, r4, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_811D978
- lsls r0, 24
- cmp r0, 0
- beq _0811BB88
- ldr r2, _0811BBE4 @ =0x0200c000
- ldrh r0, [r2, 0x2C]
- adds r0, 0x10
- strh r0, [r2, 0x2C]
- movs r1, 0x28
- ldrsh r0, [r2, r1]
- cmp r0, 0x78
- ble _0811BBD2
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
-_0811BBD2:
- ldrb r0, [r2]
- adds r0, 0x1
- ldrb r1, [r2]
- strb r0, [r2]
- movs r0, 0
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BBE4: .4byte 0x0200c000
-_0811BBE8: .4byte gUnknown_03004DE0
- thumb_func_end sub_811BB60
-
- thumb_func_start sub_811BBEC
-sub_811BBEC: @ 811BBEC
- push {lr}
- ldr r1, _0811BC1C @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811BC20 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811BC24 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D6D4
- ldr r0, _0811BC28 @ =sub_811B7E8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811BC1C: .4byte 0x040000b0
-_0811BC20: .4byte 0x0000c5ff
-_0811BC24: .4byte 0x00007fff
-_0811BC28: .4byte sub_811B7E8
- thumb_func_end sub_811BBEC
-
- thumb_func_start sub_811BC2C
-sub_811BC2C: @ 811BC2C
- push {r4,lr}
- ldr r4, _0811BC94 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811BC98 @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811BC9C @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811BCA0 @ =0x0200c000
- ldrb r0, [r2]
- cmp r0, 0
- beq _0811BC62
- ldr r1, _0811BCA4 @ =0x040000d4
- ldr r0, _0811BCA8 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, _0811BCAC @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811BC62:
- ldr r1, _0811BCB0 @ =REG_WININ
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x4]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2, 0x8]
- strh r0, [r1]
- ldr r2, _0811BCB4 @ =REG_WIN0H
- ldr r0, _0811BCA8 @ =gUnknown_03004DE0
- movs r1, 0xF0
- lsls r1, 3
- adds r0, r1
- ldrh r1, [r0]
- strh r1, [r2]
- str r0, [r4]
- str r2, [r4, 0x4]
- ldr r0, _0811BCB8 @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BC94: .4byte 0x040000b0
-_0811BC98: .4byte 0x0000c5ff
-_0811BC9C: .4byte 0x00007fff
-_0811BCA0: .4byte 0x0200c000
-_0811BCA4: .4byte 0x040000d4
-_0811BCA8: .4byte gUnknown_03004DE0
-_0811BCAC: .4byte 0x800000a0
-_0811BCB0: .4byte REG_WININ
-_0811BCB4: .4byte REG_WIN0H
-_0811BCB8: .4byte 0xa2400001
- thumb_func_end sub_811BC2C
-
- thumb_func_start sub_811BCBC
-sub_811BCBC: @ 811BCBC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811BCEC @ =gUnknown_083FD814
- ldr r2, _0811BCF0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811BCCE:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811BCCE
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BCEC: .4byte gUnknown_083FD814
-_0811BCF0: .4byte gTasks
- thumb_func_end sub_811BCBC
-
- thumb_func_start sub_811BCF4
-sub_811BCF4: @ 811BCF4
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- movs r2, 0
- ldr r4, _0811BD48 @ =gUnknown_03005560
- ldr r3, _0811BD4C @ =0x0200c000
-_0811BD06:
- lsls r0, r2, 1
- adds r0, r4
- ldrh r1, [r3, 0x16]
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x9F
- bls _0811BD06
- ldr r0, _0811BD50 @ =sub_811BE3C
- bl SetVBlankCallback
- ldr r0, _0811BD54 @ =sub_811BE74
- bl SetHBlankCallback
- ldr r2, _0811BD58 @ =0x04000200
- ldrh r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strh r0, [r2]
- ldr r2, _0811BD5C @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x10
- orrs r0, r1
- strh r0, [r2]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BD48: .4byte gUnknown_03005560
-_0811BD4C: .4byte 0x0200c000
-_0811BD50: .4byte sub_811BE3C
-_0811BD54: .4byte sub_811BE74
-_0811BD58: .4byte 0x04000200
-_0811BD5C: .4byte REG_DISPSTAT
- thumb_func_end sub_811BCF4
-
- thumb_func_start sub_811BD60
-sub_811BD60: @ 811BD60
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r6, r0, 0
- ldr r1, _0811BE28 @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r2, [r6, 0xC]
- lsls r1, r2, 16
- asrs r0, r1, 24
- lsls r0, 16
- lsrs r3, r0, 16
- ldrh r4, [r6, 0xA]
- movs r0, 0xC0
- lsls r0, 1
- mov r8, r0
- movs r5, 0x80
- lsls r5, 3
- adds r0, r4, r5
- strh r0, [r6, 0xA]
- ldr r0, _0811BE2C @ =0x1fff0000
- cmp r1, r0
- bgt _0811BD9A
- movs r1, 0xC0
- lsls r1, 1
- adds r0, r2, r1
- strh r0, [r6, 0xC]
-_0811BD9A:
- movs r5, 0
- lsls r7, r3, 16
-_0811BD9E:
- lsrs r0, r4, 8
- asrs r1, r7, 16
- bl Sin
- ldr r1, _0811BE30 @ =gUnknown_03004DE0
- lsls r2, r5, 1
- adds r2, r1
- ldr r1, _0811BE28 @ =0x0200c000
- ldrh r1, [r1, 0x16]
- adds r0, r1
- strh r0, [r2]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r8
- adds r0, r4, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r5, 0x9F
- bls _0811BD9E
- ldrh r0, [r6, 0xE]
- adds r0, 0x1
- strh r0, [r6, 0xE]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x51
- bne _0811BDEC
- ldrh r0, [r6, 0x10]
- adds r0, 0x1
- strh r0, [r6, 0x10]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x2
- negs r1, r1
- movs r2, 0
- str r2, [sp]
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0811BDEC:
- movs r5, 0x10
- ldrsh r0, [r6, r5]
- cmp r0, 0
- beq _0811BE0E
- ldr r0, _0811BE34 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0811BE0E
- ldr r0, _0811BE38 @ =sub_811BCBC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811BE0E:
- ldr r0, _0811BE28 @ =0x0200c000
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BE28: .4byte 0x0200c000
-_0811BE2C: .4byte 0x1fff0000
-_0811BE30: .4byte gUnknown_03004DE0
-_0811BE34: .4byte gPaletteFade
-_0811BE38: .4byte sub_811BCBC
- thumb_func_end sub_811BD60
-
- thumb_func_start sub_811BE3C
-sub_811BE3C: @ 811BE3C
- push {lr}
- bl sub_811D67C
- ldr r0, _0811BE64 @ =0x0200c000
- ldrb r0, [r0]
- cmp r0, 0
- beq _0811BE5E
- ldr r1, _0811BE68 @ =0x040000d4
- ldr r0, _0811BE6C @ =gUnknown_03004DE0
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, _0811BE70 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811BE5E:
- pop {r0}
- bx r0
- .align 2, 0
-_0811BE64: .4byte 0x0200c000
-_0811BE68: .4byte 0x040000d4
-_0811BE6C: .4byte gUnknown_03004DE0
-_0811BE70: .4byte 0x800000a0
- thumb_func_end sub_811BE3C
-
- thumb_func_start sub_811BE74
-sub_811BE74: @ 811BE74
- ldr r1, _0811BE94 @ =gUnknown_03004DE0
- ldr r0, _0811BE98 @ =REG_VCOUNT
- ldrh r0, [r0]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _0811BE9C @ =REG_BG1VOFS
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0811BE94: .4byte gUnknown_03004DE0
-_0811BE98: .4byte REG_VCOUNT
-_0811BE9C: .4byte REG_BG1VOFS
- thumb_func_end sub_811BE74
-
- thumb_func_start sub_811BEA0
-sub_811BEA0: @ 811BEA0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811BED0 @ =gUnknown_083FD81C
- ldr r2, _0811BED4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811BEB2:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811BEB2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811BED0: .4byte gUnknown_083FD81C
-_0811BED4: .4byte gTasks
- thumb_func_end sub_811BEA0
-
- thumb_func_start sub_811BED8
-sub_811BED8: @ 811BED8
- push {r4,lr}
- adds r4, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- ldr r1, _0811BF20 @ =0x0200c000
- movs r2, 0
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- strh r2, [r1, 0x4]
- movs r0, 0xF0
- strh r0, [r1, 0x6]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r3, _0811BF24 @ =gUnknown_03005560
- movs r2, 0xF2
-_0811BEFC:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9F
- bls _0811BEFC
- ldr r0, _0811BF28 @ =sub_811C004
- bl SetVBlankCallback
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BF20: .4byte 0x0200c000
-_0811BF24: .4byte gUnknown_03005560
-_0811BF28: .4byte sub_811C004
- thumb_func_end sub_811BED8
-
- thumb_func_start sub_811BF2C
-sub_811BF2C: @ 811BF2C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r4, r0, 0
- ldr r1, _0811BFBC @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r7, _0811BFC0 @ =gUnknown_03004DE0
- ldrh r0, [r4, 0xC]
- ldrb r5, [r4, 0xC]
- adds r0, 0x10
- strh r0, [r4, 0xC]
- ldrh r0, [r4, 0xA]
- adds r0, 0x8
- strh r0, [r4, 0xA]
- movs r6, 0
- movs r0, 0x1
- mov r8, r0
-_0811BF52:
- adds r0, r5, 0
- movs r1, 0x28
- bl Sin
- ldrh r1, [r4, 0xA]
- adds r0, r1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r0, 0
- bge _0811BF68
- movs r1, 0
-_0811BF68:
- lsls r0, r1, 16
- asrs r0, 16
- cmp r0, 0xF0
- ble _0811BF72
- movs r1, 0xF0
-_0811BF72:
- lsls r0, r1, 16
- asrs r0, 16
- lsls r1, r0, 8
- movs r2, 0xF1
- orrs r1, r2
- strh r1, [r7]
- cmp r0, 0xEF
- bgt _0811BF86
- movs r0, 0
- mov r8, r0
-_0811BF86:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r5, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- adds r7, 0x2
- cmp r6, 0x9F
- bls _0811BF52
- mov r1, r8
- cmp r1, 0
- beq _0811BFA4
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811BFA4:
- ldr r0, _0811BFBC @ =0x0200c000
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811BFBC: .4byte 0x0200c000
-_0811BFC0: .4byte gUnknown_03004DE0
- thumb_func_end sub_811BF2C
-
- thumb_func_start sub_811BFC4
-sub_811BFC4: @ 811BFC4
- push {lr}
- ldr r1, _0811BFF4 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811BFF8 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811BFFC @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D6D4
- ldr r0, _0811C000 @ =sub_811BEA0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811BFF4: .4byte 0x040000b0
-_0811BFF8: .4byte 0x0000c5ff
-_0811BFFC: .4byte 0x00007fff
-_0811C000: .4byte sub_811BEA0
- thumb_func_end sub_811BFC4
-
- thumb_func_start sub_811C004
-sub_811C004: @ 811C004
- push {r4,lr}
- ldr r4, _0811C060 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811C064 @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811C068 @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811C06C @ =0x0200c000
- ldrb r0, [r2]
- cmp r0, 0
- beq _0811C03A
- ldr r1, _0811C070 @ =0x040000d4
- ldr r0, _0811C074 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, _0811C078 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811C03A:
- ldr r1, _0811C07C @ =REG_WININ
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x4]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2, 0x8]
- strh r0, [r1]
- ldr r0, _0811C080 @ =gUnknown_03005560
- str r0, [r4]
- ldr r0, _0811C084 @ =REG_WIN0H
- str r0, [r4, 0x4]
- ldr r0, _0811C088 @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C060: .4byte 0x040000b0
-_0811C064: .4byte 0x0000c5ff
-_0811C068: .4byte 0x00007fff
-_0811C06C: .4byte 0x0200c000
-_0811C070: .4byte 0x040000d4
-_0811C074: .4byte gUnknown_03004DE0
-_0811C078: .4byte 0x800000a0
-_0811C07C: .4byte REG_WININ
-_0811C080: .4byte gUnknown_03005560
-_0811C084: .4byte REG_WIN0H
-_0811C088: .4byte 0xa2400001
- thumb_func_end sub_811C004
-
- thumb_func_start sub_811C08C
-sub_811C08C: @ 811C08C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811C0A8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0
- strh r2, [r1, 0x26]
- bl sub_811C12C
- pop {r0}
- bx r0
- .align 2, 0
-_0811C0A8: .4byte gTasks
- thumb_func_end sub_811C08C
-
- thumb_func_start sub_811C0AC
-sub_811C0AC: @ 811C0AC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811C0C8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x1
- strh r2, [r1, 0x26]
- bl sub_811C12C
- pop {r0}
- bx r0
- .align 2, 0
-_0811C0C8: .4byte gTasks
- thumb_func_end sub_811C0AC
-
- thumb_func_start sub_811C0CC
-sub_811C0CC: @ 811C0CC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811C0E8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x2
- strh r2, [r1, 0x26]
- bl sub_811C12C
- pop {r0}
- bx r0
- .align 2, 0
-_0811C0E8: .4byte gTasks
- thumb_func_end sub_811C0CC
-
- thumb_func_start sub_811C0EC
-sub_811C0EC: @ 811C0EC
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811C108 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x3
- strh r2, [r1, 0x26]
- bl sub_811C12C
- pop {r0}
- bx r0
- .align 2, 0
-_0811C108: .4byte gTasks
- thumb_func_end sub_811C0EC
-
- thumb_func_start sub_811C10C
-sub_811C10C: @ 811C10C
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811C128 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r2, 0x4
- strh r2, [r1, 0x26]
- bl sub_811C12C
- pop {r0}
- bx r0
- .align 2, 0
-_0811C128: .4byte gTasks
- thumb_func_end sub_811C10C
-
- thumb_func_start sub_811C12C
-sub_811C12C: @ 811C12C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811C15C @ =gUnknown_083FD828
- ldr r2, _0811C160 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811C13E:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811C13E
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C15C: .4byte gUnknown_083FD828
-_0811C160: .4byte gTasks
- thumb_func_end sub_811C12C
-
- thumb_func_start sub_811C164
-sub_811C164: @ 811C164
- push {r4,lr}
- adds r4, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- adds r0, r4, 0
- bl sub_811C7B0
- movs r0, 0
- strh r0, [r4, 0xA]
- movs r0, 0x1
- strh r0, [r4, 0xC]
- movs r0, 0xEF
- strh r0, [r4, 0xE]
- ldr r1, _0811C1BC @ =0x0200c000
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- movs r0, 0x3E
- strh r0, [r1, 0x4]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r3, _0811C1C0 @ =gUnknown_03005560
- ldr r2, _0811C1C4 @ =0x0000f0f1
-_0811C196:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x9F
- bls _0811C196
- ldr r0, _0811C1C8 @ =sub_811C670
- bl SetVBlankCallback
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C1BC: .4byte 0x0200c000
-_0811C1C0: .4byte gUnknown_03005560
-_0811C1C4: .4byte 0x0000f0f1
-_0811C1C8: .4byte sub_811C670
- thumb_func_end sub_811C164
-
- thumb_func_start sub_811C1CC
-sub_811C1CC: @ 811C1CC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- mov r8, r0
- ldr r6, _0811C284 @ =gUnknown_083FDFF4
- add r1, sp, 0x4
- mov r0, sp
- bl sub_811D6A8
- ldr r0, _0811C288 @ =gUnknown_083FC348
- ldr r1, [sp, 0x4]
- movs r2, 0xF0
- bl CpuSet
- ldr r1, _0811C28C @ =gUnknown_083FDB00
- mov r2, r8
- movs r3, 0x26
- ldrsh r0, [r2, r3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _0811C290 @ =gUnknown_083FDB14
- ldr r0, _0811C294 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0xFA
- movs r2, 0xC
- bl LoadPalette
- movs r1, 0
- ldr r5, [sp]
- ldr r0, _0811C298 @ =sub_811C77C
- mov r12, r0
- movs r2, 0xF0
- lsls r2, 8
- adds r7, r2, 0
-_0811C222:
- movs r0, 0
- lsls r3, r1, 16
- asrs r4, r3, 11
-_0811C228:
- lsls r2, r0, 16
- asrs r2, 16
- adds r1, r4, r2
- lsls r1, 1
- adds r1, r5
- ldrh r0, [r6]
- orrs r0, r7
- strh r0, [r1]
- adds r2, 0x1
- lsls r2, 16
- adds r6, 0x2
- lsrs r0, r2, 16
- asrs r2, 16
- cmp r2, 0x1F
- ble _0811C228
- movs r1, 0x80
- lsls r1, 9
- adds r0, r3, r1
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x13
- ble _0811C222
- ldr r2, _0811C29C @ =0x04000200
- ldrh r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strh r0, [r2]
- ldr r2, _0811C2A0 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x10
- orrs r0, r1
- strh r0, [r2]
- mov r0, r12
- bl SetHBlankCallback
- mov r2, r8
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- movs r0, 0
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C284: .4byte gUnknown_083FDFF4
-_0811C288: .4byte gUnknown_083FC348
-_0811C28C: .4byte gUnknown_083FDB00
-_0811C290: .4byte gUnknown_083FDB14
-_0811C294: .4byte gSaveBlock2
-_0811C298: .4byte sub_811C77C
-_0811C29C: .4byte 0x04000200
-_0811C2A0: .4byte REG_DISPSTAT
- thumb_func_end sub_811C1CC
-
- thumb_func_start sub_811C2A4
-sub_811C2A4: @ 811C2A4
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r1, _0811C384 @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldr r7, _0811C388 @ =gUnknown_03004DE0
- ldrh r0, [r4, 0xA]
- ldrb r5, [r4, 0xA]
- adds r0, 0x10
- strh r0, [r4, 0xA]
- movs r6, 0
-_0811C2BC:
- adds r0, r5, 0
- movs r1, 0x10
- bl Sin
- ldrh r1, [r4, 0xC]
- adds r0, r1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r0, 0
- bge _0811C2D2
- movs r2, 0x1
-_0811C2D2:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0xF0
- ble _0811C2DC
- movs r2, 0xF0
-_0811C2DC:
- strh r2, [r7]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r7, 0x2
- adds r0, r5, 0
- adds r0, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r6, 0x4F
- bls _0811C2BC
- cmp r6, 0x9F
- bhi _0811C334
-_0811C2F6:
- adds r0, r5, 0
- movs r1, 0x10
- bl Sin
- ldrh r1, [r4, 0xE]
- subs r1, r0
- lsls r1, 16
- lsrs r2, r1, 16
- cmp r1, 0
- bge _0811C30C
- movs r2, 0
-_0811C30C:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0xEF
- ble _0811C316
- movs r2, 0xEF
-_0811C316:
- lsls r0, r2, 16
- asrs r0, 8
- movs r1, 0xF0
- orrs r0, r1
- strh r0, [r7]
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r7, 0x2
- adds r0, r5, 0
- adds r0, 0x10
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r6, 0x9F
- bls _0811C2F6
-_0811C334:
- ldrh r1, [r4, 0xC]
- adds r1, 0x8
- strh r1, [r4, 0xC]
- ldrh r0, [r4, 0xE]
- subs r0, 0x8
- strh r0, [r4, 0xE]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0xF0
- ble _0811C34C
- movs r0, 0xF0
- strh r0, [r4, 0xC]
-_0811C34C:
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bge _0811C358
- movs r0, 0
- strh r0, [r4, 0xE]
-_0811C358:
- ldr r0, [r4, 0xC]
- cmp r0, 0xF0
- bne _0811C364
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811C364:
- ldr r1, _0811C384 @ =0x0200c000
- ldrh r0, [r1, 0x18]
- subs r0, 0x8
- strh r0, [r1, 0x18]
- ldrh r0, [r1, 0x1A]
- adds r0, 0x8
- strh r0, [r1, 0x1A]
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r2, [r1]
- strb r0, [r1]
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C384: .4byte 0x0200c000
-_0811C388: .4byte gUnknown_03004DE0
- thumb_func_end sub_811C2A4
-
- thumb_func_start sub_811C38C
-sub_811C38C: @ 811C38C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, _0811C3F8 @ =0x0200c000
- ldrb r1, [r0]
- movs r1, 0
- strb r1, [r0]
- ldr r2, _0811C3FC @ =gUnknown_03004DE0
- adds r5, r0, 0
- movs r3, 0xF0
-_0811C39E:
- strh r3, [r2]
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, 0x2
- cmp r1, 0x9F
- bls _0811C39E
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x8]
- strh r1, [r4, 0xA]
- strh r1, [r4, 0xC]
- strh r1, [r4, 0xE]
- ldrh r0, [r5, 0x18]
- subs r0, 0x8
- strh r0, [r5, 0x18]
- ldrh r0, [r5, 0x1A]
- adds r0, 0x8
- strh r0, [r5, 0x1A]
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- movs r1, 0
- bl sub_811CA10
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- movs r1, 0x1
- bl sub_811CA10
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- bl sub_811CA28
- movs r0, 0x68
- bl PlaySE
- ldrb r0, [r5]
- adds r0, 0x1
- ldrb r1, [r5]
- strb r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C3F8: .4byte 0x0200c000
-_0811C3FC: .4byte gUnknown_03004DE0
- thumb_func_end sub_811C38C
-
- thumb_func_start sub_811C400
-sub_811C400: @ 811C400
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _0811C438 @ =0x0200c000
- ldrh r0, [r1, 0x18]
- subs r0, 0x8
- strh r0, [r1, 0x18]
- ldrh r0, [r1, 0x1A]
- adds r0, 0x8
- strh r0, [r1, 0x1A]
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- bl sub_811CA44
- lsls r0, 16
- cmp r0, 0
- beq _0811C42E
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r1, 0x24
- ldrsh r0, [r4, r1]
- bl sub_811CA28
-_0811C42E:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C438: .4byte 0x0200c000
- thumb_func_end sub_811C400
-
- thumb_func_start sub_811C43C
-sub_811C43C: @ 811C43C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- ldr r7, _0811C4D0 @ =0x0200c000
- ldrh r0, [r7, 0x18]
- subs r0, 0x8
- movs r1, 0
- mov r8, r1
- strh r0, [r7, 0x18]
- ldrh r0, [r7, 0x1A]
- adds r0, 0x8
- strh r0, [r7, 0x1A]
- movs r1, 0x24
- ldrsh r0, [r6, r1]
- bl sub_811CA44
- lsls r0, 16
- cmp r0, 0
- beq _0811C4C4
- ldrb r0, [r7]
- movs r0, 0
- strb r0, [r7]
- movs r0, 0
- bl SetVBlankCallback
- ldr r1, _0811C4D4 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811C4D8 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811C4DC @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- ldr r4, _0811C4E0 @ =gUnknown_03004DE0
- movs r5, 0xA0
- lsls r5, 1
- adds r0, r4, 0
- movs r1, 0
- adds r2, r5, 0
- bl memset
- movs r0, 0xF0
- lsls r0, 3
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0
- adds r2, r5, 0
- bl memset
- ldr r1, _0811C4E4 @ =REG_WIN0H
- movs r0, 0xF0
- strh r0, [r1]
- ldr r0, _0811C4E8 @ =REG_BLDY
- mov r1, r8
- strh r1, [r0]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- strh r1, [r6, 0xE]
- strh r1, [r6, 0x10]
- movs r0, 0xBF
- strh r0, [r7, 0xE]
- ldr r0, _0811C4EC @ =sub_811C700
- bl SetVBlankCallback
-_0811C4C4:
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C4D0: .4byte 0x0200c000
-_0811C4D4: .4byte 0x040000b0
-_0811C4D8: .4byte 0x0000c5ff
-_0811C4DC: .4byte 0x00007fff
-_0811C4E0: .4byte gUnknown_03004DE0
-_0811C4E4: .4byte REG_WIN0H
-_0811C4E8: .4byte REG_BLDY
-_0811C4EC: .4byte sub_811C700
- thumb_func_end sub_811C43C
-
- thumb_func_start sub_811C4F0
-sub_811C4F0: @ 811C4F0
- push {r4-r7,lr}
- adds r4, r0, 0
- ldr r1, _0811C5AC @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- movs r6, 0x1
- ldrh r0, [r1, 0x18]
- subs r0, 0x8
- strh r0, [r1, 0x18]
- ldrh r0, [r1, 0x1A]
- adds r0, 0x8
- strh r0, [r1, 0x1A]
- ldrh r2, [r4, 0x10]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- adds r7, r1, 0
- cmp r0, 0x4F
- bgt _0811C51A
- adds r0, r2, 0x2
- strh r0, [r4, 0x10]
-_0811C51A:
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- cmp r0, 0x50
- ble _0811C526
- movs r0, 0x50
- strh r0, [r4, 0x10]
-_0811C526:
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- movs r1, 0x1
- ands r0, r1
- ldrh r2, [r4, 0x10]
- cmp r0, 0
- beq _0811C58C
- movs r3, 0
- lsls r0, r2, 16
- movs r6, 0
- cmp r0, 0
- blt _0811C58C
- movs r2, 0x50
- mov r12, r2
- ldr r5, _0811C5B0 @ =gUnknown_03004DE0
-_0811C546:
- lsls r0, r3, 16
- asrs r2, r0, 16
- mov r3, r12
- subs r1, r3, r2
- adds r0, r2, 0
- adds r0, 0x50
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- asrs r1, 15
- adds r1, r5
- ldrh r0, [r1]
- cmp r0, 0xF
- bhi _0811C568
- movs r6, 0x1
- adds r0, 0x1
- strh r0, [r1]
-_0811C568:
- lsls r0, r3, 16
- asrs r0, 15
- adds r1, r0, r5
- ldrh r0, [r1]
- cmp r0, 0xF
- bhi _0811C57A
- movs r6, 0x1
- adds r0, 0x1
- strh r0, [r1]
-_0811C57A:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- asrs r0, 16
- movs r2, 0x10
- ldrsh r1, [r4, r2]
- ldrh r2, [r4, 0x10]
- cmp r0, r1
- ble _0811C546
-_0811C58C:
- cmp r2, 0x50
- bne _0811C59A
- cmp r6, 0
- bne _0811C59A
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811C59A:
- ldrb r0, [r7]
- adds r0, 0x1
- ldrb r1, [r7]
- strb r0, [r7]
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C5AC: .4byte 0x0200c000
-_0811C5B0: .4byte gUnknown_03004DE0
- thumb_func_end sub_811C4F0
-
- thumb_func_start sub_811C5B4
-sub_811C5B4: @ 811C5B4
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r4, _0811C5E0 @ =0x0200c000
- ldrb r0, [r4]
- movs r6, 0
- strb r6, [r4]
- movs r0, 0x1
- negs r0, r0
- ldr r2, _0811C5E4 @ =0x00007fff
- movs r1, 0x10
- bl BlendPalettes
- movs r0, 0xFF
- strh r0, [r4, 0xE]
- strh r6, [r5, 0xE]
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C5E0: .4byte 0x0200c000
-_0811C5E4: .4byte 0x00007fff
- thumb_func_end sub_811C5B4
-
- thumb_func_start sub_811C5E8
-sub_811C5E8: @ 811C5E8
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _0811C628 @ =0x0200c000
- ldrb r0, [r5]
- movs r0, 0
- strb r0, [r5]
- ldrh r0, [r4, 0xE]
- adds r0, 0x1
- strh r0, [r4, 0xE]
- ldr r0, _0811C62C @ =gUnknown_03004DE0
- movs r2, 0xE
- ldrsh r1, [r4, r2]
- movs r2, 0xA0
- lsls r2, 1
- bl memset
- movs r1, 0xE
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- ble _0811C616
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811C616:
- ldrb r0, [r5]
- adds r0, 0x1
- ldrb r1, [r5]
- strb r0, [r5]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C628: .4byte 0x0200c000
-_0811C62C: .4byte gUnknown_03004DE0
- thumb_func_end sub_811C5E8
-
- thumb_func_start sub_811C630
-sub_811C630: @ 811C630
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, _0811C664 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811C668 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811C66C @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D6D4
- ldr r0, [r4]
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C664: .4byte 0x040000b0
-_0811C668: .4byte 0x0000c5ff
-_0811C66C: .4byte 0x00007fff
- thumb_func_end sub_811C630
-
- thumb_func_start sub_811C670
-sub_811C670: @ 811C670
- push {r4,lr}
- ldr r4, _0811C6D4 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811C6D8 @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811C6DC @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811C6E0 @ =0x0200c000
- ldrb r0, [r2]
- cmp r0, 0
- beq _0811C6A6
- ldr r1, _0811C6E4 @ =0x040000d4
- ldr r0, _0811C6E8 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, _0811C6EC @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811C6A6:
- ldr r1, _0811C6F0 @ =REG_BG0VOFS
- ldrh r0, [r2, 0x1C]
- strh r0, [r1]
- adds r1, 0x36
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x4]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2, 0x8]
- strh r0, [r1]
- ldr r0, _0811C6F4 @ =gUnknown_03005560
- str r0, [r4]
- ldr r0, _0811C6F8 @ =REG_WIN0H
- str r0, [r4, 0x4]
- ldr r0, _0811C6FC @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C6D4: .4byte 0x040000b0
-_0811C6D8: .4byte 0x0000c5ff
-_0811C6DC: .4byte 0x00007fff
-_0811C6E0: .4byte 0x0200c000
-_0811C6E4: .4byte 0x040000d4
-_0811C6E8: .4byte gUnknown_03004DE0
-_0811C6EC: .4byte 0x800000a0
-_0811C6F0: .4byte REG_BG0VOFS
-_0811C6F4: .4byte gUnknown_03005560
-_0811C6F8: .4byte REG_WIN0H
-_0811C6FC: .4byte 0xa2400001
- thumb_func_end sub_811C670
-
- thumb_func_start sub_811C700
-sub_811C700: @ 811C700
- push {r4,lr}
- ldr r4, _0811C750 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811C754 @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811C758 @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811C75C @ =0x0200c000
- ldrb r0, [r2]
- cmp r0, 0
- beq _0811C736
- ldr r1, _0811C760 @ =0x040000d4
- ldr r0, _0811C764 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, _0811C768 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811C736:
- ldr r1, _0811C76C @ =REG_BLDCNT
- ldrh r0, [r2, 0xE]
- strh r0, [r1]
- ldr r0, _0811C770 @ =gUnknown_03005560
- str r0, [r4]
- ldr r0, _0811C774 @ =REG_BLDY
- str r0, [r4, 0x4]
- ldr r0, _0811C778 @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C750: .4byte 0x040000b0
-_0811C754: .4byte 0x0000c5ff
-_0811C758: .4byte 0x00007fff
-_0811C75C: .4byte 0x0200c000
-_0811C760: .4byte 0x040000d4
-_0811C764: .4byte gUnknown_03004DE0
-_0811C768: .4byte 0x800000a0
-_0811C76C: .4byte REG_BLDCNT
-_0811C770: .4byte gUnknown_03005560
-_0811C774: .4byte REG_BLDY
-_0811C778: .4byte 0xa2400001
- thumb_func_end sub_811C700
-
- thumb_func_start sub_811C77C
-sub_811C77C: @ 811C77C
- push {lr}
- ldr r0, _0811C790 @ =REG_VCOUNT
- ldrh r0, [r0]
- cmp r0, 0x4F
- bhi _0811C79C
- ldr r0, _0811C794 @ =REG_BG0HOFS
- ldr r1, _0811C798 @ =0x0200c000
- ldrh r1, [r1, 0x18]
- b _0811C7A2
- .align 2, 0
-_0811C790: .4byte REG_VCOUNT
-_0811C794: .4byte REG_BG0HOFS
-_0811C798: .4byte 0x0200c000
-_0811C79C:
- ldr r0, _0811C7A8 @ =REG_BG0HOFS
- ldr r1, _0811C7AC @ =0x0200c000
- ldrh r1, [r1, 0x1A]
-_0811C7A2:
- strh r1, [r0]
- pop {r0}
- bx r0
- .align 2, 0
-_0811C7A8: .4byte REG_BG0HOFS
-_0811C7AC: .4byte 0x0200c000
- thumb_func_end sub_811C77C
-
- thumb_func_start sub_811C7B0
-sub_811C7B0: @ 811C7B0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r0, _0811C8EC @ =gUnknown_083FD850
- movs r2, 0x26
- ldrsh r1, [r4, r2]
- mov r8, r1
- add r0, r8
- ldrb r0, [r0]
- ldr r2, _0811C8F0 @ =gUnknown_083FD86A
- lsls r1, 2
- mov r8, r1
- adds r1, r2
- ldrh r1, [r1]
- subs r1, 0x20
- lsls r1, 16
- asrs r1, 16
- adds r2, 0x2
- add r2, r8
- ldrh r2, [r2]
- adds r2, 0x2A
- lsls r2, 16
- asrs r2, 16
- ldr r5, _0811C8F4 @ =0x0200c03c
- str r5, [sp]
- movs r3, 0
- bl CreateTrainerSprite_BirchSpeech
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x22]
- ldr r0, _0811C8F8 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- movs r1, 0x88
- lsls r1, 1
- str r5, [sp]
- movs r2, 0x6A
- movs r3, 0
- bl CreateTrainerSprite_BirchSpeech
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x24]
- movs r3, 0x22
- ldrsh r0, [r4, r3]
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r1, _0811C8FC @ =gSprites
- adds r5, r1
- movs r2, 0x24
- ldrsh r0, [r4, r2]
- lsls r6, r0, 4
- adds r6, r0
- lsls r6, 2
- adds r6, r1
- ldr r0, _0811C900 @ =sub_811C90C
- str r0, [r5, 0x1C]
- str r0, [r6, 0x1C]
- ldrb r0, [r5, 0x1]
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r5, 0x1]
- ldrb r0, [r6, 0x1]
- orrs r0, r1
- strb r0, [r6, 0x1]
- bl AllocOamMatrix
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0x1F
- mov r9, r3
- mov r4, r9
- ands r0, r4
- lsls r0, 1
- ldrb r2, [r5, 0x3]
- movs r4, 0x3F
- negs r4, r4
- adds r1, r4, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x3]
- bl AllocOamMatrix
- lsls r0, 24
- lsrs r0, 24
- mov r1, r9
- ands r0, r1
- lsls r0, 1
- ldrb r1, [r6, 0x3]
- ands r4, r1
- orrs r4, r0
- strb r4, [r6, 0x3]
- ldrb r2, [r5, 0x1]
- movs r1, 0x3F
- adds r0, r1, 0
- ands r0, r2
- movs r2, 0x40
- orrs r0, r2
- strb r0, [r5, 0x1]
- ldrb r0, [r6, 0x1]
- ands r1, r0
- orrs r1, r2
- strb r1, [r6, 0x1]
- ldrb r0, [r5, 0x3]
- movs r1, 0xC0
- orrs r0, r1
- strb r0, [r5, 0x3]
- ldrb r0, [r6, 0x3]
- orrs r0, r1
- strb r0, [r6, 0x3]
- adds r0, r5, 0
- movs r1, 0x1
- movs r2, 0x3
- movs r3, 0x3
- bl CalcCenterToCornerVec
- adds r0, r6, 0
- movs r1, 0x1
- movs r2, 0x3
- movs r3, 0x3
- bl CalcCenterToCornerVec
- ldrb r0, [r5, 0x3]
- lsls r0, 26
- lsrs r0, 27
- ldr r2, _0811C904 @ =gUnknown_083FD856
- mov r3, r8
- adds r1, r3, r2
- movs r4, 0
- ldrsh r1, [r1, r4]
- adds r2, 0x2
- add r8, r2
- mov r3, r8
- movs r4, 0
- ldrsh r2, [r3, r4]
- movs r3, 0
- bl SetOamMatrixRotationScaling
- ldrb r0, [r6, 0x3]
- lsls r0, 26
- lsrs r0, 27
- ldr r1, _0811C908 @ =0xfffffe00
- movs r2, 0x80
- lsls r2, 2
- movs r3, 0
- bl SetOamMatrixRotationScaling
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C8EC: .4byte gUnknown_083FD850
-_0811C8F0: .4byte gUnknown_083FD86A
-_0811C8F4: .4byte 0x0200c03c
-_0811C8F8: .4byte gSaveBlock2
-_0811C8FC: .4byte gSprites
-_0811C900: .4byte sub_811C90C
-_0811C904: .4byte gUnknown_083FD856
-_0811C908: .4byte 0xfffffe00
- thumb_func_end sub_811C7B0
-
- thumb_func_start sub_811C90C
-sub_811C90C: @ 811C90C
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r5, _0811C930 @ =gUnknown_083FD880
-_0811C912:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811C912
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811C930: .4byte gUnknown_083FD880
- thumb_func_end sub_811C90C
-
- thumb_func_start sub_811C934
-sub_811C934: @ 811C934
- movs r0, 0
- bx lr
- thumb_func_end sub_811C934
-
- thumb_func_start sub_811C938
-sub_811C938: @ 811C938
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- ldr r1, _0811C97C @ =gUnknown_083FD89C
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- add r4, sp, 0x4
- ldr r1, _0811C980 @ =gUnknown_083FD8A0
- adds r0, r4, 0
- movs r2, 0x4
- bl memcpy
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r5, 0x30]
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- lsls r0, 1
- adds r4, r0
- ldrh r0, [r4]
- strh r0, [r5, 0x32]
- movs r0, 0x1
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811C97C: .4byte gUnknown_083FD89C
-_0811C980: .4byte gUnknown_083FD8A0
- thumb_func_end sub_811C938
-
- thumb_func_start sub_811C984
-sub_811C984: @ 811C984
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x30]
- ldrh r3, [r1, 0x20]
- adds r2, r0, r3
- strh r2, [r1, 0x20]
- movs r3, 0x3C
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0811C9A2
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x84
- bgt _0811C9B0
- b _0811C9AA
-_0811C9A2:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x67
- ble _0811C9B0
-_0811C9AA:
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
-_0811C9B0:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_811C984
-
- thumb_func_start sub_811C9B8
-sub_811C9B8: @ 811C9B8
- push {lr}
- adds r2, r0, 0
- ldrh r3, [r2, 0x32]
- ldrh r0, [r2, 0x30]
- adds r1, r3, r0
- strh r1, [r2, 0x30]
- ldrh r0, [r2, 0x20]
- adds r0, r1
- strh r0, [r2, 0x20]
- lsls r1, 16
- cmp r1, 0
- bne _0811C9DE
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- negs r0, r3
- strh r0, [r2, 0x32]
- movs r0, 0x1
- strh r0, [r2, 0x3A]
-_0811C9DE:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_811C9B8
-
- thumb_func_start sub_811C9E4
-sub_811C9E4: @ 811C9E4
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x32]
- ldrh r1, [r2, 0x30]
- adds r0, r1
- strh r0, [r2, 0x30]
- ldrh r1, [r2, 0x20]
- adds r1, r0
- strh r1, [r2, 0x20]
- adds r1, 0x1F
- lsls r1, 16
- movs r0, 0x97
- lsls r0, 17
- cmp r1, r0
- bls _0811CA08
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
-_0811CA08:
- movs r0, 0
- pop {r1}
- bx r1
- thumb_func_end sub_811C9E4
-
- thumb_func_start sub_811CA10
-sub_811CA10: @ 811CA10
- ldr r3, _0811CA24 @ =gSprites
- lsls r0, 16
- asrs r0, 16
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- strh r1, [r2, 0x3C]
- bx lr
- .align 2, 0
-_0811CA24: .4byte gSprites
- thumb_func_end sub_811CA10
-
- thumb_func_start sub_811CA28
-sub_811CA28: @ 811CA28
- ldr r2, _0811CA40 @ =gSprites
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- bx lr
- .align 2, 0
-_0811CA40: .4byte gSprites
- thumb_func_end sub_811CA28
-
- thumb_func_start sub_811CA44
-sub_811CA44: @ 811CA44
- ldr r2, _0811CA58 @ =gSprites
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- movs r2, 0x3A
- ldrsh r0, [r1, r2]
- bx lr
- .align 2, 0
-_0811CA58: .4byte gSprites
- thumb_func_end sub_811CA44
-
- thumb_func_start sub_811CA5C
-sub_811CA5C: @ 811CA5C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811CA8C @ =gUnknown_083FD8A4
- ldr r2, _0811CA90 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811CA6E:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811CA6E
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811CA8C: .4byte gUnknown_083FD8A4
-_0811CA90: .4byte gTasks
- thumb_func_end sub_811CA5C
-
- thumb_func_start sub_811CA94
-sub_811CA94: @ 811CA94
- push {r4-r6,lr}
- adds r4, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- movs r2, 0
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r4, 0xC]
- movs r0, 0x1
- strh r0, [r4, 0xE]
- ldr r1, _0811CB08 @ =0x0200c000
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- strh r2, [r1, 0x4]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- ldr r3, _0811CB0C @ =gUnknown_03005560
- adds r6, r1, 0
- movs r5, 0xF0
-_0811CABE:
- lsls r0, r2, 1
- adds r0, r3
- ldrh r1, [r6, 0x14]
- strh r1, [r0]
- adds r0, r2, 0
- adds r0, 0xA0
- lsls r0, 1
- adds r0, r3
- strh r5, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x9F
- bls _0811CABE
- ldr r2, _0811CB10 @ =0x04000200
- ldrh r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strh r0, [r2]
- ldr r2, _0811CB14 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x10
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _0811CB18 @ =sub_811CC28
- bl SetVBlankCallback
- ldr r0, _0811CB1C @ =sub_811CCB0
- bl SetHBlankCallback
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811CB08: .4byte 0x0200c000
-_0811CB0C: .4byte gUnknown_03005560
-_0811CB10: .4byte 0x04000200
-_0811CB14: .4byte REG_DISPSTAT
-_0811CB18: .4byte sub_811CC28
-_0811CB1C: .4byte sub_811CCB0
- thumb_func_end sub_811CA94
-
- thumb_func_start sub_811CB20
-sub_811CB20: @ 811CB20
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r2, r0, 0
- ldr r1, _0811CB98 @ =0x0200c000
- ldrb r0, [r1]
- movs r0, 0
- strb r0, [r1]
- ldrh r0, [r2, 0xC]
- lsls r0, 16
- asrs r0, 24
- ldrh r3, [r2, 0xA]
- adds r0, r3
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- mov r12, r1
- cmp r0, 0xF0
- ble _0811CB4A
- movs r0, 0xF0
- strh r0, [r2, 0xA]
-_0811CB4A:
- ldrh r4, [r2, 0xC]
- movs r0, 0xC
- ldrsh r1, [r2, r0]
- ldr r0, _0811CB9C @ =0x00000fff
- ldrh r3, [r2, 0xE]
- cmp r1, r0
- bgt _0811CB5C
- adds r0, r4, r3
- strh r0, [r2, 0xC]
-_0811CB5C:
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, 0x7F
- bgt _0811CB68
- lsls r0, r3, 1
- strh r0, [r2, 0xE]
-_0811CB68:
- movs r5, 0
- ldr r7, _0811CBA0 @ =gUnknown_03004DE0
- movs r1, 0xA0
- lsls r1, 1
- adds r1, r7
- mov r8, r1
- mov r6, r12
-_0811CB76:
- lsls r0, r5, 1
- adds r3, r0, r7
- mov r1, r8
- adds r4, r0, r1
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _0811CBA4
- ldrh r0, [r2, 0xA]
- ldrh r1, [r6, 0x14]
- adds r0, r1
- strh r0, [r3]
- ldrh r1, [r2, 0xA]
- movs r0, 0xF0
- subs r0, r1
- b _0811CBB4
- .align 2, 0
-_0811CB98: .4byte 0x0200c000
-_0811CB9C: .4byte 0x00000fff
-_0811CBA0: .4byte gUnknown_03004DE0
-_0811CBA4:
- ldrh r0, [r6, 0x14]
- ldrh r1, [r2, 0xA]
- subs r0, r1
- strh r0, [r3]
- ldrh r0, [r2, 0xA]
- lsls r0, 8
- movs r1, 0xF1
- orrs r0, r1
-_0811CBB4:
- strh r0, [r4]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x9F
- bls _0811CB76
- movs r3, 0xA
- ldrsh r0, [r2, r3]
- cmp r0, 0xEF
- ble _0811CBCE
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
-_0811CBCE:
- mov r1, r12
- ldrb r0, [r1]
- adds r0, 0x1
- ldrb r1, [r1]
- mov r2, r12
- strb r0, [r2]
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811CB20
-
- thumb_func_start sub_811CBE8
-sub_811CBE8: @ 811CBE8
- push {lr}
- ldr r1, _0811CC18 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811CC1C @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811CC20 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D6D4
- ldr r0, _0811CC24 @ =sub_811CA5C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811CC18: .4byte 0x040000b0
-_0811CC1C: .4byte 0x0000c5ff
-_0811CC20: .4byte 0x00007fff
-_0811CC24: .4byte sub_811CA5C
- thumb_func_end sub_811CBE8
-
- thumb_func_start sub_811CC28
-sub_811CC28: @ 811CC28
- push {r4,lr}
- ldr r4, _0811CC84 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811CC88 @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811CC8C @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811CC90 @ =REG_WININ
- ldr r1, _0811CC94 @ =0x0200c000
- ldrh r0, [r1, 0x2]
- strh r0, [r2]
- adds r2, 0x2
- ldrh r0, [r1, 0x4]
- strh r0, [r2]
- subs r2, 0x6
- ldrh r0, [r1, 0x8]
- strh r0, [r2]
- ldrb r0, [r1]
- cmp r0, 0
- beq _0811CC70
- ldr r1, _0811CC98 @ =0x040000d4
- ldr r0, _0811CC9C @ =gUnknown_03004DE0
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, _0811CCA0 @ =0x80000140
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811CC70:
- ldr r0, _0811CCA4 @ =gUnknown_030056A0
- str r0, [r4]
- ldr r0, _0811CCA8 @ =REG_WIN0H
- str r0, [r4, 0x4]
- ldr r0, _0811CCAC @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811CC84: .4byte 0x040000b0
-_0811CC88: .4byte 0x0000c5ff
-_0811CC8C: .4byte 0x00007fff
-_0811CC90: .4byte REG_WININ
-_0811CC94: .4byte 0x0200c000
-_0811CC98: .4byte 0x040000d4
-_0811CC9C: .4byte gUnknown_03004DE0
-_0811CCA0: .4byte 0x80000140
-_0811CCA4: .4byte gUnknown_030056A0
-_0811CCA8: .4byte REG_WIN0H
-_0811CCAC: .4byte 0xa2400001
- thumb_func_end sub_811CC28
-
- thumb_func_start sub_811CCB0
-sub_811CCB0: @ 811CCB0
- ldr r1, _0811CCD0 @ =gUnknown_03004DE0
- ldr r0, _0811CCD4 @ =REG_VCOUNT
- ldrh r0, [r0]
- lsls r0, 1
- movs r2, 0xF0
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _0811CCD8 @ =REG_BG1HOFS
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0811CCD0: .4byte gUnknown_03004DE0
-_0811CCD4: .4byte REG_VCOUNT
-_0811CCD8: .4byte REG_BG1HOFS
- thumb_func_end sub_811CCB0
-
- thumb_func_start sub_811CCDC
-sub_811CCDC: @ 811CCDC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811CD0C @ =gUnknown_083FD8B0
- ldr r2, _0811CD10 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811CCEE:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811CCEE
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811CD0C: .4byte gUnknown_083FD8B0
-_0811CD10: .4byte gTasks
- thumb_func_end sub_811CCDC
-
- thumb_func_start sub_811CD14
-sub_811CD14: @ 811CD14
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- ldr r1, _0811CD88 @ =0x0200c000
- movs r2, 0
- movs r0, 0xBF
- strh r0, [r1, 0xE]
- strh r2, [r1, 0x12]
- movs r0, 0x1E
- strh r0, [r1, 0x2]
- movs r0, 0x3F
- strh r0, [r1, 0x4]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r2, _0811CD8C @ =gUnknown_03005560
- movs r4, 0
- movs r3, 0xF0
-_0811CD3E:
- lsls r0, r1, 1
- adds r0, r2
- strh r4, [r0]
- adds r0, r1, 0
- adds r0, 0xA0
- lsls r0, 1
- adds r0, r2
- strh r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9F
- bls _0811CD3E
- ldr r2, _0811CD90 @ =0x04000200
- ldrh r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strh r0, [r2]
- ldr r2, _0811CD94 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x10
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _0811CD98 @ =sub_811CFAC
- bl SetHBlankCallback
- ldr r0, _0811CD9C @ =sub_811CEE4
- bl SetVBlankCallback
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811CD88: .4byte 0x0200c000
-_0811CD8C: .4byte gUnknown_03005560
-_0811CD90: .4byte 0x04000200
-_0811CD94: .4byte REG_DISPSTAT
-_0811CD98: .4byte sub_811CFAC
-_0811CD9C: .4byte sub_811CEE4
- thumb_func_end sub_811CD14
-
- thumb_func_start sub_811CDA0
-sub_811CDA0: @ 811CDA0
- push {r4-r6,lr}
- sub sp, 0x10
- adds r6, r0, 0
- ldr r1, _0811CE08 @ =gUnknown_083FD8C4
- mov r0, sp
- movs r2, 0x10
- bl memcpy
- movs r5, 0
- movs r4, 0
-_0811CDB4:
- ldr r0, _0811CE0C @ =sub_811CFD0
- bl CreateInvisibleSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0811CE10 @ =gSprites
- adds r2, r1, r0
- movs r0, 0xF0
- strh r0, [r2, 0x20]
- strh r4, [r2, 0x22]
- lsls r1, r5, 16
- asrs r1, 16
- lsls r0, r1, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r2, 0x38]
- adds r1, 0x1
- lsls r1, 16
- lsls r0, r4, 16
- movs r3, 0xA0
- lsls r3, 13
- adds r0, r3
- lsrs r4, r0, 16
- lsrs r5, r1, 16
- asrs r1, 16
- cmp r1, 0x7
- ble _0811CDB4
- ldrh r0, [r2, 0x3A]
- adds r0, 0x1
- strh r0, [r2, 0x3A]
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- movs r0, 0
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811CE08: .4byte gUnknown_083FD8C4
-_0811CE0C: .4byte sub_811CFD0
-_0811CE10: .4byte gSprites
- thumb_func_end sub_811CDA0
-
- thumb_func_start sub_811CE14
-sub_811CE14: @ 811CE14
- push {r4,lr}
- adds r4, r0, 0
- ldr r0, _0811CE44 @ =0x0200c000
- ldrb r1, [r0]
- movs r1, 0
- strb r1, [r0]
- movs r1, 0x20
- ldrsh r0, [r0, r1]
- cmp r0, 0x7
- ble _0811CE3A
- movs r0, 0x1
- negs r0, r0
- ldr r2, _0811CE48 @ =0x00007fff
- movs r1, 0x10
- bl BlendPalettes
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_0811CE3A:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811CE44: .4byte 0x0200c000
-_0811CE48: .4byte 0x00007fff
- thumb_func_end sub_811CE14
-
- thumb_func_start sub_811CE4C
-sub_811CE4C: @ 811CE4C
- push {r4-r6,lr}
- adds r6, r0, 0
- ldr r4, _0811CE9C @ =0x0200c000
- ldrb r0, [r4]
- movs r5, 0
- strb r5, [r4]
- ldr r1, _0811CEA0 @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811CEA4 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811CEA8 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- movs r0, 0
- bl SetVBlankCallback
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0xF0
- strh r0, [r4, 0x6]
- strh r5, [r4, 0x12]
- movs r0, 0xFF
- strh r0, [r4, 0xE]
- movs r0, 0x3F
- strh r0, [r4, 0x2]
- ldr r0, _0811CEAC @ =sub_811CF74
- bl SetVBlankCallback
- ldrh r0, [r6, 0x8]
- adds r0, 0x1
- strh r0, [r6, 0x8]
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811CE9C: .4byte 0x0200c000
-_0811CEA0: .4byte 0x040000b0
-_0811CEA4: .4byte 0x0000c5ff
-_0811CEA8: .4byte 0x00007fff
-_0811CEAC: .4byte sub_811CF74
- thumb_func_end sub_811CE4C
-
- thumb_func_start sub_811CEB0
-sub_811CEB0: @ 811CEB0
- push {lr}
- ldr r1, _0811CEDC @ =0x0200c000
- ldrh r0, [r1, 0x12]
- adds r0, 0x1
- strh r0, [r1, 0x12]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x10
- bls _0811CED4
- bl sub_811D6D4
- ldr r0, _0811CEE0 @ =sub_811CCDC
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811CED4:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811CEDC: .4byte 0x0200c000
-_0811CEE0: .4byte sub_811CCDC
- thumb_func_end sub_811CEB0
-
- thumb_func_start sub_811CEE4
-sub_811CEE4: @ 811CEE4
- push {r4,lr}
- ldr r4, _0811CF48 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811CF4C @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811CF50 @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811CF54 @ =REG_BLDCNT
- ldr r1, _0811CF58 @ =0x0200c000
- ldrh r0, [r1, 0xE]
- strh r0, [r2]
- subs r2, 0x8
- ldrh r0, [r1, 0x2]
- strh r0, [r2]
- adds r2, 0x2
- ldrh r0, [r1, 0x4]
- strh r0, [r2]
- subs r2, 0x6
- ldrh r0, [r1, 0x6]
- strh r0, [r2]
- ldrb r0, [r1]
- cmp r0, 0
- beq _0811CF32
- ldr r1, _0811CF5C @ =0x040000d4
- ldr r0, _0811CF60 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r2, 0xF0
- lsls r2, 3
- adds r0, r2
- str r0, [r1, 0x4]
- ldr r0, _0811CF64 @ =0x80000140
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811CF32:
- ldr r0, _0811CF68 @ =gUnknown_030056A0
- str r0, [r4]
- ldr r0, _0811CF6C @ =REG_WIN0H
- str r0, [r4, 0x4]
- ldr r0, _0811CF70 @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811CF48: .4byte 0x040000b0
-_0811CF4C: .4byte 0x0000c5ff
-_0811CF50: .4byte 0x00007fff
-_0811CF54: .4byte REG_BLDCNT
-_0811CF58: .4byte 0x0200c000
-_0811CF5C: .4byte 0x040000d4
-_0811CF60: .4byte gUnknown_03004DE0
-_0811CF64: .4byte 0x80000140
-_0811CF68: .4byte gUnknown_030056A0
-_0811CF6C: .4byte REG_WIN0H
-_0811CF70: .4byte 0xa2400001
- thumb_func_end sub_811CEE4
-
- thumb_func_start sub_811CF74
-sub_811CF74: @ 811CF74
- push {lr}
- bl sub_811D67C
- ldr r1, _0811CFA4 @ =REG_BLDY
- ldr r2, _0811CFA8 @ =0x0200c000
- ldrh r0, [r2, 0x12]
- strh r0, [r1]
- subs r1, 0x4
- ldrh r0, [r2, 0xE]
- strh r0, [r1]
- subs r1, 0x8
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x4]
- strh r0, [r1]
- subs r1, 0xA
- ldrh r0, [r2, 0x6]
- strh r0, [r1]
- adds r1, 0x4
- ldrh r0, [r2, 0x8]
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0811CFA4: .4byte REG_BLDY
-_0811CFA8: .4byte 0x0200c000
- thumb_func_end sub_811CF74
-
- thumb_func_start sub_811CFAC
-sub_811CFAC: @ 811CFAC
- ldr r2, _0811CFC4 @ =REG_BLDY
- ldr r1, _0811CFC8 @ =gUnknown_03004DE0
- ldr r0, _0811CFCC @ =REG_VCOUNT
- ldrh r0, [r0]
- lsls r0, 1
- movs r3, 0xF0
- lsls r3, 3
- adds r1, r3
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- bx lr
- .align 2, 0
-_0811CFC4: .4byte REG_BLDY
-_0811CFC8: .4byte gUnknown_03004DE0
-_0811CFCC: .4byte REG_VCOUNT
- thumb_func_end sub_811CFAC
-
- thumb_func_start sub_811CFD0
-sub_811CFD0: @ 811CFD0
- push {r4-r6,lr}
- adds r3, r0, 0
- ldrh r1, [r3, 0x38]
- movs r2, 0x38
- ldrsh r0, [r3, r2]
- cmp r0, 0
- beq _0811CFF8
- subs r0, r1, 0x1
- strh r0, [r3, 0x38]
- movs r1, 0x3A
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _0811D0AA
- ldr r0, _0811CFF4 @ =0x0200c000
- ldrb r1, [r0]
- movs r1, 0x1
- strb r1, [r0]
- b _0811D0AA
- .align 2, 0
-_0811CFF4: .4byte 0x0200c000
-_0811CFF8:
- movs r2, 0x22
- ldrsh r1, [r3, r2]
- lsls r1, 1
- ldr r0, _0811D0B0 @ =gUnknown_03004DE0
- adds r6, r1, r0
- movs r2, 0xA0
- lsls r2, 1
- adds r0, r2
- adds r5, r1, r0
- movs r4, 0
-_0811D00C:
- lsls r1, r4, 1
- adds r2, r1, r6
- ldrh r0, [r3, 0x2E]
- lsls r0, 16
- asrs r0, 24
- strh r0, [r2]
- adds r1, r5
- ldrh r0, [r3, 0x20]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x13
- bls _0811D00C
- movs r1, 0x20
- ldrsh r0, [r3, r1]
- ldrh r2, [r3, 0x20]
- cmp r0, 0
- bne _0811D046
- movs r0, 0x2E
- ldrsh r1, [r3, r0]
- movs r0, 0x80
- lsls r0, 5
- cmp r1, r0
- bne _0811D046
- movs r0, 0x1
- strh r0, [r3, 0x30]
-_0811D046:
- adds r1, r2, 0
- subs r1, 0x10
- strh r1, [r3, 0x20]
- ldrh r0, [r3, 0x2E]
- adds r0, 0x80
- strh r0, [r3, 0x2E]
- lsls r1, 16
- cmp r1, 0
- bge _0811D05C
- movs r0, 0
- strh r0, [r3, 0x20]
-_0811D05C:
- movs r1, 0x2E
- ldrsh r0, [r3, r1]
- movs r1, 0x80
- lsls r1, 5
- cmp r0, r1
- ble _0811D06A
- strh r1, [r3, 0x2E]
-_0811D06A:
- movs r0, 0x3A
- ldrsh r2, [r3, r0]
- cmp r2, 0
- beq _0811D07A
- ldr r0, _0811D0B4 @ =0x0200c000
- ldrb r1, [r0]
- movs r1, 0x1
- strb r1, [r0]
-_0811D07A:
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _0811D0AA
- ldr r4, _0811D0B4 @ =0x0200c000
- cmp r2, 0
- beq _0811D09E
- movs r2, 0x20
- ldrsh r0, [r4, r2]
- cmp r0, 0x6
- ble _0811D0AA
- ldrh r0, [r3, 0x32]
- adds r1, r0, 0x1
- strh r1, [r3, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x7
- ble _0811D0AA
-_0811D09E:
- ldrh r0, [r4, 0x20]
- adds r0, 0x1
- strh r0, [r4, 0x20]
- adds r0, r3, 0
- bl DestroySprite
-_0811D0AA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D0B0: .4byte gUnknown_03004DE0
-_0811D0B4: .4byte 0x0200c000
- thumb_func_end sub_811CFD0
-
- thumb_func_start sub_811D0B8
-sub_811D0B8: @ 811D0B8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811D0E8 @ =gUnknown_083FD8D4
- ldr r2, _0811D0EC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811D0CA:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811D0CA
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D0E8: .4byte gUnknown_083FD8D4
-_0811D0EC: .4byte gTasks
- thumb_func_end sub_811D0B8
-
- thumb_func_start sub_811D0F0
-sub_811D0F0: @ 811D0F0
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- add r0, sp, 0x4
- add r1, sp, 0x8
- bl sub_811D6A8
- ldr r0, _0811D138 @ =gUnknown_083FD528
- ldr r1, [sp, 0x8]
- movs r2, 0x10
- bl CpuSet
- mov r1, sp
- movs r2, 0xF0
- lsls r2, 8
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, [sp, 0x4]
- ldr r2, _0811D13C @ =0x01000400
- mov r0, sp
- bl CpuSet
- ldr r0, _0811D140 @ =gFieldEffectObjectPalette10
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811D138: .4byte gUnknown_083FD528
-_0811D13C: .4byte 0x01000400
-_0811D140: .4byte gFieldEffectObjectPalette10
- thumb_func_end sub_811D0F0
-
- thumb_func_start sub_811D144
-sub_811D144: @ 811D144
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0811D186
- mov r0, sp
- bl sub_811D690
- movs r0, 0x3
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xC]
- adds r0, 0x1
- strh r0, [r4, 0xC]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- lsls r0, 5
- ldr r1, _0811D198 @ =gUnknown_083FD528
- adds r0, r1
- ldr r1, [sp]
- movs r2, 0x10
- bl CpuSet
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- cmp r0, 0xD
- ble _0811D186
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- movs r0, 0x10
- strh r0, [r4, 0xA]
-_0811D186:
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- movs r0, 0
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811D198: .4byte gUnknown_083FD528
- thumb_func_end sub_811D144
-
- thumb_func_start sub_811D19C
-sub_811D19C: @ 811D19C
- push {lr}
- ldrh r1, [r0, 0xA]
- subs r1, 0x1
- strh r1, [r0, 0xA]
- lsls r1, 16
- cmp r1, 0
- bne _0811D1BC
- bl sub_811D6D4
- ldr r0, _0811D1C4 @ =sub_811D0B8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
-_0811D1BC:
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_0811D1C4: .4byte sub_811D0B8
- thumb_func_end sub_811D19C
-
- thumb_func_start sub_811D1C8
-sub_811D1C8: @ 811D1C8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811D1F8 @ =gUnknown_083FD8E0
- ldr r2, _0811D1FC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811D1DA:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811D1DA
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D1F8: .4byte gUnknown_083FD8E0
-_0811D1FC: .4byte gTasks
- thumb_func_end sub_811D1C8
-
- thumb_func_start sub_811D200
-sub_811D200: @ 811D200
- push {r4,r5,lr}
- adds r5, r0, 0
- bl sub_811D658
- bl dp12_8087EA4
- ldr r1, _0811D254 @ =0x0200c000
- movs r2, 0
- movs r0, 0x3F
- strh r0, [r1, 0x2]
- strh r2, [r1, 0x4]
- movs r0, 0xA0
- strh r0, [r1, 0x8]
- movs r1, 0
- ldr r2, _0811D258 @ =gUnknown_03004DE0
- movs r3, 0xF0
- adds r4, r2, 0
-_0811D222:
- lsls r0, r1, 1
- adds r0, r2
- strh r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9F
- bls _0811D222
- movs r0, 0xF0
- lsls r0, 3
- adds r1, r4, r0
- adds r0, r4, 0
- movs r2, 0xA0
- bl CpuSet
- ldr r0, _0811D25C @ =sub_811D438
- bl SetVBlankCallback
- ldrh r0, [r5, 0x8]
- adds r0, 0x1
- strh r0, [r5, 0x8]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0811D254: .4byte 0x0200c000
-_0811D258: .4byte gUnknown_03004DE0
-_0811D25C: .4byte sub_811D438
- thumb_func_end sub_811D200
-
- thumb_func_start sub_811D260
-sub_811D260: @ 811D260
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- mov r8, r0
- ldr r0, _0811D2D0 @ =0x0200c024
- ldr r6, _0811D2D4 @ =gUnknown_083FD8F4
- mov r2, r8
- movs r3, 0xA
- ldrsh r1, [r2, r3]
- lsls r4, r1, 2
- adds r4, r1
- lsls r4, 1
- adds r1, r4, r6
- movs r5, 0
- ldrsh r1, [r1, r5]
- adds r2, r6, 0x2
- adds r2, r4, r2
- movs r3, 0
- ldrsh r2, [r2, r3]
- adds r3, r6, 0x4
- adds r3, r4, r3
- movs r5, 0
- ldrsh r3, [r3, r5]
- adds r5, r6, 0x6
- adds r4, r5
- movs r5, 0
- ldrsh r4, [r4, r5]
- str r4, [sp]
- movs r4, 0x1
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- bl sub_811D8FC
- mov r0, r8
- movs r2, 0xA
- ldrsh r1, [r0, r2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 1
- adds r6, 0x8
- adds r0, r6
- ldrh r0, [r0]
- mov r3, r8
- strh r0, [r3, 0xC]
- ldrh r0, [r3, 0x8]
- adds r0, 0x1
- strh r0, [r3, 0x8]
- movs r0, 0x1
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0811D2D0: .4byte 0x0200c024
-_0811D2D4: .4byte gUnknown_083FD8F4
- thumb_func_end sub_811D260
-
- thumb_func_start sub_811D2D8
-sub_811D2D8: @ 811D2D8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r7, r0, 0
- ldr r0, _0811D324 @ =0x0200c000
- ldrb r1, [r0]
- movs r1, 0
- strb r1, [r0]
- mov r8, r1
- mov r12, r1
- adds r6, r0, 0
- ldr r0, _0811D328 @ =gUnknown_03004DE0
- mov r9, r0
-_0811D2F4:
- ldr r1, _0811D328 @ =gUnknown_03004DE0
- movs r2, 0x2A
- ldrsh r0, [r6, r2]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsrs r3, r0, 8
- movs r4, 0xFF
- ands r4, r0
- movs r1, 0xC
- ldrsh r0, [r7, r1]
- cmp r0, 0
- bne _0811D32C
- movs r2, 0x28
- ldrsh r0, [r6, r2]
- cmp r3, r0
- bge _0811D318
- ldrh r3, [r6, 0x28]
-_0811D318:
- lsls r0, r3, 16
- lsls r1, r4, 16
- cmp r0, r1
- ble _0811D344
- lsrs r3, r1, 16
- b _0811D344
- .align 2, 0
-_0811D324: .4byte 0x0200c000
-_0811D328: .4byte gUnknown_03004DE0
-_0811D32C:
- lsls r0, r4, 16
- asrs r0, 16
- movs r2, 0x28
- ldrsh r1, [r6, r2]
- cmp r0, r1
- ble _0811D33A
- ldrh r4, [r6, 0x28]
-_0811D33A:
- lsls r0, r4, 16
- lsls r1, r3, 16
- cmp r0, r1
- bgt _0811D344
- lsrs r4, r1, 16
-_0811D344:
- ldr r5, _0811D368 @ =0x0200c000
- movs r0, 0x2A
- ldrsh r2, [r5, r0]
- lsls r2, 1
- add r2, r9
- lsls r1, r3, 16
- asrs r1, 8
- lsls r0, r4, 16
- asrs r0, 16
- orrs r0, r1
- strh r0, [r2]
- mov r1, r12
- cmp r1, 0
- beq _0811D36C
- ldrh r0, [r7, 0x8]
- adds r0, 0x1
- strh r0, [r7, 0x8]
- b _0811D392
- .align 2, 0
-_0811D368: .4byte 0x0200c000
-_0811D36C:
- adds r0, r5, 0
- adds r0, 0x24
- movs r1, 0x1
- movs r2, 0x1
- bl sub_811D978
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- mov r2, r8
- lsls r0, r2, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r2, r0, 16
- mov r8, r2
- asrs r0, 16
- cmp r0, 0xF
- ble _0811D2F4
-_0811D392:
- ldr r0, _0811D3AC @ =0x0200c000
- ldrb r1, [r0]
- adds r1, 0x1
- ldrb r2, [r0]
- strb r1, [r0]
- movs r0, 0
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0811D3AC: .4byte 0x0200c000
- thumb_func_end sub_811D2D8
-
- thumb_func_start sub_811D3B0
-sub_811D3B0: @ 811D3B0
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0xA]
- adds r0, 0x1
- strh r0, [r2, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _0811D3FC
- ldr r1, _0811D3EC @ =0x040000b0
- ldrh r2, [r1, 0xA]
- ldr r0, _0811D3F0 @ =0x0000c5ff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r2, [r1, 0xA]
- ldr r0, _0811D3F4 @ =0x00007fff
- ands r0, r2
- strh r0, [r1, 0xA]
- ldrh r0, [r1, 0xA]
- bl sub_811D6D4
- ldr r0, _0811D3F8 @ =sub_811D1C8
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- movs r0, 0
- b _0811D414
- .align 2, 0
-_0811D3EC: .4byte 0x040000b0
-_0811D3F0: .4byte 0x0000c5ff
-_0811D3F4: .4byte 0x00007fff
-_0811D3F8: .4byte sub_811D1C8
-_0811D3FC:
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- ldr r1, _0811D418 @ =gUnknown_083FD93A
- movs r3, 0xA
- ldrsh r0, [r2, r3]
- subs r0, 0x1
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2, 0xE]
- movs r0, 0x1
-_0811D414:
- pop {r1}
- bx r1
- .align 2, 0
-_0811D418: .4byte gUnknown_083FD93A
- thumb_func_end sub_811D3B0
-
- thumb_func_start sub_811D41C
-sub_811D41C: @ 811D41C
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0xE]
- subs r0, 0x1
- strh r0, [r1, 0xE]
- lsls r0, 16
- cmp r0, 0
- beq _0811D430
- movs r0, 0
- b _0811D434
-_0811D430:
- movs r0, 0x1
- strh r0, [r1, 0x8]
-_0811D434:
- pop {r1}
- bx r1
- thumb_func_end sub_811D41C
-
- thumb_func_start sub_811D438
-sub_811D438: @ 811D438
- push {r4,lr}
- ldr r4, _0811D4A0 @ =0x040000b0
- ldrh r1, [r4, 0xA]
- ldr r0, _0811D4A4 @ =0x0000c5ff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r1, [r4, 0xA]
- ldr r0, _0811D4A8 @ =0x00007fff
- ands r0, r1
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0xA]
- bl sub_811D67C
- ldr r2, _0811D4AC @ =0x0200c000
- ldrb r0, [r2]
- cmp r0, 0
- beq _0811D46E
- ldr r1, _0811D4B0 @ =0x040000d4
- ldr r0, _0811D4B4 @ =gUnknown_03004DE0
- str r0, [r1]
- movs r3, 0xF0
- lsls r3, 3
- adds r0, r3
- str r0, [r1, 0x4]
- ldr r0, _0811D4B8 @ =0x800000a0
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
-_0811D46E:
- ldr r1, _0811D4BC @ =REG_WININ
- ldrh r0, [r2, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r2, 0x4]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2, 0x8]
- strh r0, [r1]
- ldr r2, _0811D4C0 @ =REG_WIN0H
- ldr r0, _0811D4B4 @ =gUnknown_03004DE0
- movs r1, 0xF0
- lsls r1, 3
- adds r0, r1
- ldrh r1, [r0]
- strh r1, [r2]
- str r0, [r4]
- str r2, [r4, 0x4]
- ldr r0, _0811D4C4 @ =0xa2400001
- str r0, [r4, 0x8]
- ldr r0, [r4, 0x8]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D4A0: .4byte 0x040000b0
-_0811D4A4: .4byte 0x0000c5ff
-_0811D4A8: .4byte 0x00007fff
-_0811D4AC: .4byte 0x0200c000
-_0811D4B0: .4byte 0x040000d4
-_0811D4B4: .4byte gUnknown_03004DE0
-_0811D4B8: .4byte 0x800000a0
-_0811D4BC: .4byte REG_WININ
-_0811D4C0: .4byte REG_WIN0H
-_0811D4C4: .4byte 0xa2400001
- thumb_func_end sub_811D438
-
- thumb_func_start sub_811D4C8
-sub_811D4C8: @ 811D4C8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- mov r8, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r3, [sp, 0x18]
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 16
- lsrs r6, 16
- lsls r3, 16
- lsrs r3, 16
- ldr r0, _0811D524 @ =sub_811D54C
- movs r1, 0x3
- str r3, [sp]
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811D528 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- mov r0, r8
- strh r0, [r1, 0xA]
- strh r4, [r1, 0xC]
- strh r5, [r1, 0xE]
- strh r6, [r1, 0x10]
- ldr r3, [sp]
- strh r3, [r1, 0x12]
- strh r0, [r1, 0x14]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D524: .4byte sub_811D54C
-_0811D528: .4byte gTasks
- thumb_func_end sub_811D4C8
-
- thumb_func_start sub_811D52C
-sub_811D52C: @ 811D52C
- push {lr}
- ldr r0, _0811D540 @ =sub_811D54C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0811D544
- movs r0, 0
- b _0811D546
- .align 2, 0
-_0811D540: .4byte sub_811D54C
-_0811D544:
- movs r0, 0x1
-_0811D546:
- pop {r1}
- bx r1
- thumb_func_end sub_811D52C
-
- thumb_func_start sub_811D54C
-sub_811D54C: @ 811D54C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811D57C @ =gUnknown_083FD948
- ldr r2, _0811D580 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811D55E:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811D55E
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D57C: .4byte gUnknown_083FD948
-_0811D580: .4byte gTasks
- thumb_func_end sub_811D54C
-
- thumb_func_start sub_811D584
-sub_811D584: @ 811D584
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x14]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0811D59C
- subs r0, r1, 0x1
- strh r0, [r4, 0x14]
- lsls r0, 16
- cmp r0, 0
- bne _0811D5C0
-_0811D59C:
- ldrh r0, [r4, 0xA]
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0x10]
- ldrh r1, [r4, 0x16]
- adds r0, r1
- strh r0, [r4, 0x16]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x10
- ble _0811D5B4
- movs r0, 0x10
- strh r0, [r4, 0x16]
-_0811D5B4:
- movs r0, 0x1
- negs r0, r0
- ldrb r1, [r4, 0x16]
- ldr r2, _0811D5DC @ =0x00002d6b
- bl BlendPalettes
-_0811D5C0:
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0xF
- ble _0811D5D2
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- ldrh r0, [r4, 0xC]
- strh r0, [r4, 0x14]
-_0811D5D2:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0811D5DC: .4byte 0x00002d6b
- thumb_func_end sub_811D584
-
- thumb_func_start sub_811D5E0
-sub_811D5E0: @ 811D5E0
- push {r4,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x14]
- movs r2, 0x14
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _0811D5F8
- subs r0, r1, 0x1
- strh r0, [r4, 0x14]
- lsls r0, 16
- cmp r0, 0
- bne _0811D61A
-_0811D5F8:
- ldrh r0, [r4, 0xC]
- strh r0, [r4, 0x14]
- ldrh r0, [r4, 0x16]
- ldrh r1, [r4, 0x12]
- subs r0, r1
- strh r0, [r4, 0x16]
- lsls r0, 16
- cmp r0, 0
- bge _0811D60E
- movs r0, 0
- strh r0, [r4, 0x16]
-_0811D60E:
- movs r0, 0x1
- negs r0, r0
- ldrb r1, [r4, 0x16]
- ldr r2, _0811D640 @ =0x00002d6b
- bl BlendPalettes
-_0811D61A:
- movs r0, 0x16
- ldrsh r1, [r4, r0]
- cmp r1, 0
- bne _0811D64E
- ldrh r0, [r4, 0xE]
- subs r0, 0x1
- strh r0, [r4, 0xE]
- lsls r0, 16
- cmp r0, 0
- bne _0811D648
- ldr r0, _0811D644 @ =sub_811D54C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- b _0811D64E
- .align 2, 0
-_0811D640: .4byte 0x00002d6b
-_0811D644: .4byte sub_811D54C
-_0811D648:
- ldrh r0, [r4, 0xA]
- strh r0, [r4, 0x14]
- strh r1, [r4, 0x8]
-_0811D64E:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_811D5E0
-
- thumb_func_start sub_811D658
-sub_811D658: @ 811D658
- push {lr}
- ldr r0, _0811D674 @ =gUnknown_083FD708
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0x3C
- bl memset
- ldr r0, _0811D678 @ =0x0200c014
- adds r1, r0, 0x2
- bl sub_8057B14
- pop {r0}
- bx r0
- .align 2, 0
-_0811D674: .4byte gUnknown_083FD708
-_0811D678: .4byte 0x0200c014
- thumb_func_end sub_811D658
-
- thumb_func_start sub_811D67C
-sub_811D67C: @ 811D67C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_811D67C
-
- thumb_func_start sub_811D690
-sub_811D690: @ 811D690
- ldr r1, _0811D6A4 @ =REG_BG0CNT
- ldrh r1, [r1]
- lsrs r1, 2
- lsls r1, 30
- lsrs r1, 16
- movs r2, 0xC0
- lsls r2, 19
- adds r1, r2
- str r1, [r0]
- bx lr
- .align 2, 0
-_0811D6A4: .4byte REG_BG0CNT
- thumb_func_end sub_811D690
-
- thumb_func_start sub_811D6A8
-sub_811D6A8: @ 811D6A8
- push {r4,lr}
- ldr r3, _0811D6D0 @ =REG_BG0CNT
- ldrh r2, [r3]
- lsrs r2, 8
- ldrh r3, [r3]
- lsrs r3, 2
- lsls r2, 27
- lsrs r2, 16
- lsls r3, 30
- lsrs r3, 16
- movs r4, 0xC0
- lsls r4, 19
- adds r2, r4
- str r2, [r0]
- adds r3, r4
- str r3, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D6D0: .4byte REG_BG0CNT
- thumb_func_end sub_811D6A8
-
- thumb_func_start sub_811D6D4
-sub_811D6D4: @ 811D6D4
- push {lr}
- movs r0, 0x1
- negs r0, r0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- pop {r0}
- bx r0
- thumb_func_end sub_811D6D4
-
- thumb_func_start sub_811D6E8
-sub_811D6E8: @ 811D6E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- mov r10, r0
- ldr r0, [sp, 0x20]
- ldr r4, [sp, 0x24]
- lsls r1, 16
- lsrs r7, r1, 16
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r3, 16
- lsls r0, 16
- lsrs r1, r0, 16
- lsls r4, 16
- movs r6, 0
- lsrs r5, r4, 16
- cmp r4, 0
- ble _0811D750
- lsls r0, r7, 16
- asrs r0, 16
- mov r9, r0
- lsls r1, 16
- mov r8, r1
- lsls r0, r3, 16
- asrs r7, r0, 16
-_0811D720:
- lsls r4, r2, 16
- asrs r4, 16
- movs r0, 0xFF
- ands r0, r4
- mov r2, r8
- asrs r1, r2, 16
- bl Sin
- lsls r1, r6, 1
- add r1, r10
- add r0, r9
- strh r0, [r1]
- lsls r1, r5, 16
- ldr r0, _0811D760 @ =0xffff0000
- adds r1, r0
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- adds r4, r7
- lsls r4, 16
- lsrs r2, r4, 16
- lsrs r5, r1, 16
- cmp r1, 0
- bgt _0811D720
-_0811D750:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D760: .4byte 0xffff0000
- thumb_func_end sub_811D6E8
-
- thumb_func_start sub_811D764
-sub_811D764: @ 811D764
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- mov r9, r0
- adds r5, r2, 0
- adds r4, r3, 0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 16
- lsrs r4, 16
- movs r2, 0xA0
- lsls r2, 1
- movs r1, 0xA
- bl memset
- movs r1, 0
- lsls r4, 16
- asrs r4, 16
- str r4, [sp, 0x4]
- lsls r5, 16
- asrs r5, 16
- str r5, [sp, 0x8]
-_0811D79C:
- lsls r5, r1, 16
- asrs r0, r5, 16
- mov r10, r0
- ldr r1, [sp, 0x4]
- bl Sin
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- mov r0, r10
- ldr r1, [sp, 0x4]
- bl Cos
- ldr r2, [sp]
- lsls r1, r2, 16
- asrs r1, 16
- lsls r4, 16
- asrs r4, 16
- subs r2, r1, r4
- lsls r2, 16
- adds r1, r4
- lsls r1, 16
- lsrs r6, r1, 16
- lsls r0, 16
- asrs r0, 16
- ldr r3, [sp, 0x8]
- subs r1, r3, r0
- lsls r1, 16
- lsrs r7, r1, 16
- adds r0, r3, r0
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsrs r1, r2, 16
- str r5, [sp, 0x10]
- cmp r2, 0
- bge _0811D7E8
- movs r1, 0
-_0811D7E8:
- lsls r0, r6, 16
- asrs r0, 16
- cmp r0, 0xF0
- ble _0811D7F2
- movs r6, 0xF0
-_0811D7F2:
- lsls r0, r7, 16
- cmp r0, 0
- bge _0811D7FA
- movs r7, 0
-_0811D7FA:
- mov r2, r8
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x9F
- ble _0811D808
- movs r3, 0x9F
- mov r8, r3
-_0811D808:
- lsls r0, r1, 24
- lsrs r0, 16
- orrs r6, r0
- lsls r0, r7, 16
- asrs r0, 16
- str r0, [sp, 0xC]
- lsls r0, 1
- add r0, r9
- strh r6, [r0]
- mov r0, r8
- lsls r4, r0, 16
- asrs r0, r4, 15
- add r0, r9
- strh r6, [r0]
- mov r0, r10
- adds r0, 0x1
- lsls r0, 16
- asrs r0, 16
- ldr r1, [sp, 0x4]
- bl Cos
- lsls r0, 16
- asrs r0, 16
- ldr r2, [sp, 0x8]
- subs r1, r2, r0
- lsls r1, 16
- adds r0, r2, r0
- lsls r0, 16
- lsrs r2, r0, 16
- lsrs r3, r1, 16
- cmp r1, 0
- bge _0811D84A
- movs r3, 0
-_0811D84A:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x9F
- ble _0811D854
- movs r2, 0x9F
-_0811D854:
- lsls r0, r3, 16
- asrs r1, r0, 16
- adds r3, r0, 0
- lsls r5, r2, 16
- ldr r0, [sp, 0xC]
- cmp r0, r1
- ble _0811D878
- adds r2, r1, 0
-_0811D864:
- lsls r1, r7, 16
- ldr r0, _0811D8F8 @ =0xffff0000
- adds r1, r0
- asrs r0, r1, 15
- add r0, r9
- strh r6, [r0]
- lsrs r7, r1, 16
- asrs r1, 16
- cmp r1, r2
- bgt _0811D864
-_0811D878:
- lsls r1, r7, 16
- asrs r0, r3, 16
- cmp r1, r3
- bge _0811D896
- adds r2, r0, 0
-_0811D882:
- movs r3, 0x80
- lsls r3, 9
- adds r0, r1, r3
- asrs r1, r0, 15
- add r1, r9
- strh r6, [r1]
- adds r1, r0, 0
- asrs r0, r1, 16
- cmp r0, r2
- blt _0811D882
-_0811D896:
- asrs r0, r5, 16
- cmp r4, r5
- ble _0811D8B4
- adds r1, r0, 0
-_0811D89E:
- ldr r2, _0811D8F8 @ =0xffff0000
- adds r0, r4, r2
- lsrs r3, r0, 16
- mov r8, r3
- asrs r0, 15
- add r0, r9
- strh r6, [r0]
- lsls r4, r3, 16
- asrs r0, r4, 16
- cmp r0, r1
- bgt _0811D89E
-_0811D8B4:
- mov r0, r8
- lsls r4, r0, 16
- asrs r0, r5, 16
- cmp r4, r5
- bge _0811D8D4
- adds r2, r0, 0
-_0811D8C0:
- movs r1, 0x80
- lsls r1, 9
- adds r0, r4, r1
- asrs r1, r0, 15
- add r1, r9
- strh r6, [r1]
- adds r4, r0, 0
- asrs r0, r4, 16
- cmp r0, r2
- blt _0811D8C0
-_0811D8D4:
- ldr r2, [sp, 0x10]
- movs r3, 0x80
- lsls r3, 9
- adds r0, r2, r3
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x3F
- bgt _0811D8E6
- b _0811D79C
-_0811D8E6:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D8F8: .4byte 0xffff0000
- thumb_func_end sub_811D764
-
- thumb_func_start sub_811D8FC
-sub_811D8FC: @ 811D8FC
- push {r4-r7,lr}
- adds r6, r0, 0
- ldr r0, [sp, 0x14]
- ldr r5, [sp, 0x18]
- ldr r4, [sp, 0x1C]
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 16
- lsrs r3, 16
- lsls r0, 16
- lsrs r0, 16
- adds r7, r0, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 16
- lsrs r4, 16
- strh r1, [r6]
- strh r2, [r6, 0x2]
- strh r1, [r6, 0x4]
- strh r2, [r6, 0x6]
- strh r3, [r6, 0x8]
- strh r7, [r6, 0xA]
- strh r5, [r6, 0xC]
- strh r4, [r6, 0xE]
- lsls r3, 16
- asrs r3, 16
- lsls r1, 16
- asrs r1, 16
- subs r3, r1
- strh r3, [r6, 0x10]
- lsls r0, r3, 16
- cmp r0, 0
- bge _0811D94E
- negs r0, r3
- strh r0, [r6, 0x10]
- lsls r0, r5, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r6, 0xC]
-_0811D94E:
- lsls r0, r7, 16
- asrs r0, 16
- lsls r1, r2, 16
- asrs r1, 16
- subs r1, r0, r1
- strh r1, [r6, 0x12]
- lsls r0, r1, 16
- cmp r0, 0
- bge _0811D96C
- negs r0, r1
- strh r0, [r6, 0x12]
- lsls r0, r4, 16
- asrs r0, 16
- negs r0, r0
- strh r0, [r6, 0xE]
-_0811D96C:
- movs r0, 0
- strh r0, [r6, 0x14]
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_811D8FC
-
- thumb_func_start sub_811D978
-sub_811D978: @ 811D978
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- adds r3, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- ldrh r0, [r3, 0x10]
- mov r8, r0
- movs r1, 0x10
- ldrsh r6, [r3, r1]
- ldrh r2, [r3, 0x12]
- mov r12, r2
- movs r4, 0x12
- ldrsh r5, [r3, r4]
- cmp r6, r5
- ble _0811D9C8
- ldrh r0, [r3, 0xC]
- ldrh r2, [r3, 0x4]
- adds r1, r0, r2
- strh r1, [r3, 0x4]
- ldrh r2, [r3, 0x14]
- add r2, r12
- strh r2, [r3, 0x14]
- lsls r1, r2, 16
- asrs r1, 16
- adds r4, r0, 0
- ldrh r7, [r3, 0xE]
- cmp r1, r6
- ble _0811D9EE
- ldrh r1, [r3, 0x6]
- adds r0, r7, r1
- strh r0, [r3, 0x6]
- mov r1, r8
- b _0811D9EA
-_0811D9C8:
- ldrh r0, [r3, 0xE]
- ldrh r2, [r3, 0x6]
- adds r1, r0, r2
- strh r1, [r3, 0x6]
- ldrh r2, [r3, 0x14]
- add r2, r8
- strh r2, [r3, 0x14]
- lsls r1, r2, 16
- asrs r1, 16
- ldrh r4, [r3, 0xC]
- adds r7, r0, 0
- cmp r1, r5
- ble _0811D9EE
- ldrh r1, [r3, 0x4]
- adds r0, r4, r1
- strh r0, [r3, 0x4]
- mov r1, r12
-_0811D9EA:
- subs r0, r2, r1
- strh r0, [r3, 0x14]
-_0811D9EE:
- movs r5, 0
- lsls r0, r4, 16
- asrs r2, r0, 16
- cmp r2, 0
- ble _0811DA06
- movs r4, 0x4
- ldrsh r1, [r3, r4]
- movs r4, 0x8
- ldrsh r0, [r3, r4]
- ldrh r4, [r3, 0x8]
- cmp r1, r0
- bge _0811DA18
-_0811DA06:
- cmp r2, 0
- bge _0811DA26
- movs r0, 0x4
- ldrsh r1, [r3, r0]
- movs r2, 0x8
- ldrsh r0, [r3, r2]
- ldrh r4, [r3, 0x8]
- cmp r1, r0
- bgt _0811DA26
-_0811DA18:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r9
- cmp r0, 0
- beq _0811DA26
- strh r4, [r3, 0x4]
-_0811DA26:
- lsls r0, r7, 16
- asrs r2, r0, 16
- cmp r2, 0
- ble _0811DA3C
- movs r4, 0x6
- ldrsh r1, [r3, r4]
- movs r4, 0xA
- ldrsh r0, [r3, r4]
- ldrh r4, [r3, 0xA]
- cmp r1, r0
- bge _0811DA4E
-_0811DA3C:
- cmp r2, 0
- bge _0811DA5C
- movs r0, 0x6
- ldrsh r1, [r3, r0]
- movs r2, 0xA
- ldrsh r0, [r3, r2]
- ldrh r4, [r3, 0xA]
- cmp r1, r0
- bgt _0811DA5C
-_0811DA4E:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r0, r10
- cmp r0, 0
- beq _0811DA5C
- strh r4, [r3, 0x6]
-_0811DA5C:
- cmp r5, 0x2
- beq _0811DA64
- movs r0, 0
- b _0811DA66
-_0811DA64:
- movs r0, 0x1
-_0811DA66:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811D978
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/berry_blender.s b/asm/berry_blender.s
deleted file mode 100644
index b6ee5f9f3..000000000
--- a/asm/berry_blender.s
+++ /dev/null
@@ -1,9164 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_804E290
-sub_804E290: @ 804E290
- push {lr}
- ldr r0, _0804E2B0 @ =gMPlay_SE2
- ldr r1, _0804E2B4 @ =0x0000ffff
- ldr r2, _0804E2B8 @ =gUnknown_03004854
- ldr r2, [r2]
- adds r2, 0x56
- movs r3, 0
- ldrsh r2, [r2, r3]
- subs r2, 0x80
- lsls r2, 17
- asrs r2, 16
- bl m4aMPlayPitchControl
- pop {r0}
- bx r0
- .align 2, 0
-_0804E2B0: .4byte gMPlay_SE2
-_0804E2B4: .4byte 0x0000ffff
-_0804E2B8: .4byte gUnknown_03004854
- thumb_func_end sub_804E290
-
- thumb_func_start sub_804E2BC
-sub_804E2BC: @ 804E2BC
- push {lr}
- bl sub_80514A4
- bl sub_80514F0
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_804E2BC
-
- thumb_func_start sub_804E2D8
-sub_804E2D8: @ 804E2D8
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_804E2D8
-
- thumb_func_start sub_804E2EC
-sub_804E2EC: @ 804E2EC
- push {r4-r7,lr}
- ldr r1, _0804E308 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0, 0x1]
- mov r12, r1
- cmp r0, 0x9
- bls _0804E2FC
- b _0804E4F4
-_0804E2FC:
- lsls r0, 2
- ldr r1, _0804E30C @ =_0804E310
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804E308: .4byte gUnknown_03004854
-_0804E30C: .4byte _0804E310
- .align 2, 0
-_0804E310:
- .4byte _0804E338
- .4byte _0804E34C
- .4byte _0804E380
- .4byte _0804E3C4
- .4byte _0804E3D8
- .4byte _0804E3EC
- .4byte _0804E410
- .4byte _0804E434
- .4byte _0804E48C
- .4byte _0804E4BC
-_0804E338:
- ldr r0, _0804E344 @ =gUnknown_08E6C100
- ldr r1, _0804E348 @ =0x02010000
- bl sub_800D238
- b _0804E49E
- .align 2, 0
-_0804E344: .4byte gUnknown_08E6C100
-_0804E348: .4byte 0x02010000
-_0804E34C:
- ldr r1, _0804E36C @ =gUnknown_08215C2C
- ldr r2, _0804E370 @ =0x06004000
- ldr r0, _0804E374 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804E378 @ =0x80000200
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, _0804E37C @ =gUnknown_08215C0C
- movs r2, 0x80
- lsls r2, 1
- movs r1, 0
- bl LoadPalette
- b _0804E49E
- .align 2, 0
-_0804E36C: .4byte gUnknown_08215C2C
-_0804E370: .4byte 0x06004000
-_0804E374: .4byte 0x040000d4
-_0804E378: .4byte 0x80000200
-_0804E37C: .4byte gUnknown_08215C0C
-_0804E380:
- ldr r3, _0804E3B8 @ =0x02010000
- movs r4, 0xC0
- lsls r4, 19
- movs r5, 0x80
- lsls r5, 6
- ldr r1, _0804E3BC @ =0x040000d4
- ldr r6, _0804E3C0 @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_0804E396:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _0804E396
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- mov r0, r12
- b _0804E4A0
- .align 2, 0
-_0804E3B8: .4byte 0x02010000
-_0804E3BC: .4byte 0x040000d4
-_0804E3C0: .4byte 0x80000800
-_0804E3C4:
- ldr r0, _0804E3D0 @ =gUnknown_08E6C920
- ldr r1, _0804E3D4 @ =0x02010000
- bl sub_800D238
- b _0804E49E
- .align 2, 0
-_0804E3D0: .4byte gUnknown_08E6C920
-_0804E3D4: .4byte 0x02010000
-_0804E3D8:
- ldr r0, _0804E3E4 @ =gUnknown_08E6D354
- ldr r1, _0804E3E8 @ =0x02013000
- bl sub_800D238
- b _0804E49E
- .align 2, 0
-_0804E3E4: .4byte gUnknown_08E6D354
-_0804E3E8: .4byte 0x02013000
-_0804E3EC:
- ldr r1, _0804E400 @ =0x02010000
- ldr r2, _0804E404 @ =0x0600e000
- ldr r0, _0804E408 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804E40C @ =0x80000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- mov r0, r12
- b _0804E4A0
- .align 2, 0
-_0804E400: .4byte 0x02010000
-_0804E404: .4byte 0x0600e000
-_0804E408: .4byte 0x040000d4
-_0804E40C: .4byte 0x80000800
-_0804E410:
- ldr r1, _0804E424 @ =0x02011000
- ldr r2, _0804E428 @ =0x0600f000
- ldr r0, _0804E42C @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804E430 @ =0x80000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- mov r0, r12
- b _0804E4A0
- .align 2, 0
-_0804E424: .4byte 0x02011000
-_0804E428: .4byte 0x0600f000
-_0804E42C: .4byte 0x040000d4
-_0804E430: .4byte 0x80000800
-_0804E434:
- ldr r3, _0804E474 @ =0x02013000
- movs r2, 0
- adds r6, r3, 0
- ldr r7, _0804E478 @ =gUnknown_0821602C
- movs r0, 0x80
- lsls r0, 1
- adds r5, r0, 0
- ldr r4, _0804E47C @ =0x0000027f
-_0804E444:
- lsls r0, r2, 1
- adds r0, r3
- ldrh r1, [r0]
- orrs r1, r5
- strh r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, r4
- bls _0804E444
- ldr r1, _0804E480 @ =0x06006000
- ldr r0, _0804E484 @ =0x040000d4
- str r6, [r0]
- str r1, [r0, 0x4]
- ldr r1, _0804E488 @ =0x80000280
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- adds r0, r7, 0
- movs r1, 0x80
- movs r2, 0x20
- bl LoadPalette
- b _0804E49E
- .align 2, 0
-_0804E474: .4byte 0x02013000
-_0804E478: .4byte gUnknown_0821602C
-_0804E47C: .4byte 0x0000027f
-_0804E480: .4byte 0x06006000
-_0804E484: .4byte 0x040000d4
-_0804E488: .4byte 0x80000280
-_0804E48C:
- ldr r0, _0804E4AC @ =gUnknown_082163DC
- bl LoadSpriteSheet
- ldr r0, _0804E4B0 @ =gUnknown_082164F4
- bl LoadSpriteSheet
- ldr r0, _0804E4B4 @ =gUnknown_08216454
- bl LoadSpriteSheet
-_0804E49E:
- ldr r0, _0804E4B8 @ =gUnknown_03004854
-_0804E4A0:
- ldr r1, [r0]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
- b _0804E4F4
- .align 2, 0
-_0804E4AC: .4byte gUnknown_082163DC
-_0804E4B0: .4byte gUnknown_082164F4
-_0804E4B4: .4byte gUnknown_08216454
-_0804E4B8: .4byte gUnknown_03004854
-_0804E4BC:
- ldr r0, _0804E4E0 @ =gUnknown_08216540
- bl LoadSpriteSheet
- ldr r0, _0804E4E4 @ =gUnknown_08216574
- bl LoadSpriteSheet
- ldr r0, _0804E4E8 @ =gUnknown_082163EC
- bl LoadSpritePalette
- ldr r0, _0804E4EC @ =gUnknown_082163E4
- bl LoadSpritePalette
- ldr r0, _0804E4F0 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r0, 0
- strb r0, [r1, 0x1]
- movs r0, 0x1
- b _0804E4F6
- .align 2, 0
-_0804E4E0: .4byte gUnknown_08216540
-_0804E4E4: .4byte gUnknown_08216574
-_0804E4E8: .4byte gUnknown_082163EC
-_0804E4EC: .4byte gUnknown_082163E4
-_0804E4F0: .4byte gUnknown_03004854
-_0804E4F4:
- movs r0, 0
-_0804E4F6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_804E2EC
-
- thumb_func_start sub_804E4FC
-sub_804E4FC: @ 804E4FC
- movs r1, 0x80
- lsls r1, 19
- ldr r2, _0804E52C @ =0x00001341
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0xC
- movs r2, 0x91
- lsls r2, 7
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _0804E530 @ =0x00000c0d
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0804E534 @ =REG_BG0HOFS
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bx lr
- .align 2, 0
-_0804E52C: .4byte 0x00001341
-_0804E530: .4byte 0x00000c0d
-_0804E534: .4byte REG_BG0HOFS
- thumb_func_end sub_804E4FC
-
- thumb_func_start sub_804E538
-sub_804E538: @ 804E538
- push {lr}
- ldr r1, _0804E55C @ =gUnknown_03004854
- ldr r0, _0804E560 @ =0x02018000
- str r0, [r1]
- adds r2, r0, 0
- adds r2, 0x6F
- movs r1, 0
- strb r1, [r0]
- strb r1, [r2]
- ldr r0, _0804E564 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl sub_804E884
- ldr r0, _0804E568 @ =sub_804E56C
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0804E55C: .4byte gUnknown_03004854
-_0804E560: .4byte 0x02018000
-_0804E564: .4byte gSpecialVar_0x8004
-_0804E568: .4byte sub_804E56C
- thumb_func_end sub_804E538
-
- thumb_func_start sub_804E56C
-sub_804E56C: @ 804E56C
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r0, _0804E588 @ =gUnknown_03004854
- ldr r0, [r0]
- ldrb r0, [r0]
- cmp r0, 0x6
- bls _0804E57C
- b _0804E71A
-_0804E57C:
- lsls r0, 2
- ldr r1, _0804E58C @ =_0804E590
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804E588: .4byte gUnknown_03004854
-_0804E58C: .4byte _0804E590
- .align 2, 0
-_0804E590:
- .4byte _0804E5AC
- .4byte _0804E614
- .4byte _0804E67C
- .4byte _0804E692
- .4byte _0804E6A8
- .4byte _0804E6D4
- .4byte _0804E700
-_0804E5AC:
- movs r0, 0x80
- lsls r0, 19
- movs r5, 0
- strh r5, [r0]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- movs r0, 0
- bl SetVBlankCallback
- ldr r4, _0804E60C @ =gWindowConfig_81E6F68
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r3, _0804E610 @ =gUnknown_03004854
- ldr r2, [r3]
- ldrb r0, [r2]
- adds r0, 0x1
- movs r1, 0
- strb r0, [r2]
- ldr r2, [r3]
- movs r3, 0xA0
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- subs r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- movs r0, 0xA1
- lsls r0, 1
- adds r3, r2, r0
- movs r0, 0x50
- strh r0, [r3]
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- strb r5, [r2, 0x1]
- bl sub_8051474
- b _0804E71A
- .align 2, 0
-_0804E60C: .4byte gWindowConfig_81E6F68
-_0804E610: .4byte gUnknown_03004854
-_0804E614:
- bl sub_804E2EC
- lsls r0, 24
- cmp r0, 0
- bne _0804E620
- b _0804E71A
-_0804E620:
- movs r4, 0
- ldr r5, _0804E668 @ =gUnknown_082162E4
- ldr r6, _0804E66C @ =gUnknown_03004854
-_0804E626:
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- ldr r0, _0804E670 @ =gSpriteTemplate_82163F4
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x5C
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x5C
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804E674 @ =gSprites
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804E626
- ldr r0, _0804E678 @ =sub_804E2BC
- bl SetVBlankCallback
- b _0804E6BE
- .align 2, 0
-_0804E668: .4byte gUnknown_082162E4
-_0804E66C: .4byte gUnknown_03004854
-_0804E670: .4byte gSpriteTemplate_82163F4
-_0804E674: .4byte gSprites
-_0804E678: .4byte sub_804E2BC
-_0804E67C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- bl sub_8051474
- b _0804E6BE
-_0804E692:
- bl sub_804E4FC
- ldr r0, _0804E6A4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804E71A
- b _0804E6BE
- .align 2, 0
-_0804E6A4: .4byte gPaletteFade
-_0804E6A8:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _0804E6CC @ =gOtherText_BlenderChooseBerry
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
-_0804E6BE:
- ldr r0, _0804E6D0 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804E71A
- .align 2, 0
-_0804E6CC: .4byte gOtherText_BlenderChooseBerry
-_0804E6D0: .4byte gUnknown_03004854
-_0804E6D4:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0804E71A
- ldr r0, _0804E6FC @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- movs r0, 0x1
- negs r0, r0
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0804E71A
- .align 2, 0
-_0804E6FC: .4byte gUnknown_03004854
-_0804E700:
- ldr r0, _0804E730 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _0804E71A
- bl sub_80A6978
- ldr r0, _0804E734 @ =gUnknown_03004854
- ldr r0, [r0]
- strb r4, [r0]
-_0804E71A:
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E730: .4byte gPaletteFade
-_0804E734: .4byte gUnknown_03004854
- thumb_func_end sub_804E56C
-
- thumb_func_start sub_804E738
-sub_804E738: @ 804E738
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x30]
- adds r0, r1
- strh r0, [r4, 0x30]
- ldrh r1, [r4, 0x32]
- ldrh r2, [r4, 0x36]
- subs r1, r2
- ldrh r0, [r4, 0x3C]
- adds r1, r0
- strh r1, [r4, 0x32]
- ldrh r3, [r4, 0x2E]
- adds r0, r3
- strh r0, [r4, 0x2E]
- subs r2, 0x1
- strh r2, [r4, 0x36]
- lsls r0, 16
- lsls r1, 16
- cmp r0, r1
- bge _0804E786
- ldrh r0, [r4, 0x34]
- subs r0, 0x1
- strh r0, [r4, 0x36]
- strh r0, [r4, 0x34]
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _0804E780
- adds r0, r4, 0
- bl DestroySprite
- b _0804E786
-_0804E780:
- movs r0, 0x74
- bl PlaySE
-_0804E786:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x32]
- strh r0, [r4, 0x22]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804E738
-
- thumb_func_start sub_804E794
-sub_804E794: @ 804E794
- push {r4-r6,lr}
- ldr r5, [sp, 0x10]
- ldr r6, [sp, 0x14]
- lsls r2, 16
- lsrs r2, 16
- movs r4, 0
- strh r2, [r0, 0x2E]
- strh r1, [r0, 0x30]
- strh r2, [r0, 0x32]
- strh r3, [r0, 0x34]
- movs r1, 0xA
- strh r1, [r0, 0x36]
- strh r4, [r0, 0x38]
- strh r5, [r0, 0x3A]
- strh r6, [r0, 0x3C]
- ldr r1, _0804E7BC @ =sub_804E738
- str r1, [r0, 0x1C]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E7BC: .4byte sub_804E738
- thumb_func_end sub_804E794
-
- thumb_func_start sub_804E7C0
-sub_804E7C0: @ 804E7C0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x8
- adds r6, r1, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r0, 24
- movs r1, 0xF6
- lsls r1, 23
- adds r0, r1
- lsrs r0, 24
- movs r3, 0x1
- ands r3, r6
- movs r1, 0
- movs r2, 0x50
- bl sub_80A7DEC
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- mov r8, r2
- add r8, r0
- mov r3, r8
- lsls r3, 2
- mov r8, r3
- ldr r0, _0804E83C @ =gSprites
- add r8, r0
- ldr r5, _0804E840 @ =gUnknown_08216594
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 1
- adds r0, r4, r5
- movs r6, 0
- ldrsh r1, [r0, r6]
- adds r0, r5, 0x2
- adds r0, r4, r0
- movs r3, 0
- ldrsh r2, [r0, r3]
- adds r0, r5, 0x4
- adds r0, r4, r0
- movs r6, 0
- ldrsh r3, [r0, r6]
- adds r0, r5, 0x6
- adds r0, r4, r0
- movs r6, 0
- ldrsh r0, [r0, r6]
- str r0, [sp]
- adds r5, 0x8
- adds r4, r5
- movs r5, 0
- ldrsh r0, [r4, r5]
- str r0, [sp, 0x4]
- mov r0, r8
- bl sub_804E794
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E83C: .4byte gSprites
-_0804E840: .4byte gUnknown_08216594
- thumb_func_end sub_804E7C0
-
- thumb_func_start sub_804E844
-sub_804E844: @ 804E844
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r5, r1, 16
- lsrs r5, 16
- adds r0, r5, 0
- adds r0, 0x7C
- lsls r0, 24
- lsrs r0, 24
- bl GetBerryInfo
- adds r4, r0, 0
- strh r5, [r6]
- adds r0, r6, 0x2
- adds r1, r4, 0
- bl StringCopy
- ldrb r0, [r4, 0x15]
- strb r0, [r6, 0x9]
- ldrb r0, [r4, 0x16]
- strb r0, [r6, 0xA]
- ldrb r0, [r4, 0x17]
- strb r0, [r6, 0xB]
- ldrb r0, [r4, 0x18]
- strb r0, [r6, 0xC]
- ldrb r0, [r4, 0x19]
- strb r0, [r6, 0xD]
- ldrb r0, [r4, 0x1A]
- strb r0, [r6, 0xE]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_804E844
-
- thumb_func_start sub_804E884
-sub_804E884: @ 804E884
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0804E89E
- ldr r2, _0804E8AC @ =gLinkPlayers
- movs r3, 0x2
- adds r0, r2, 0
- adds r0, 0x54
-_0804E896:
- strh r3, [r0, 0x1A]
- subs r0, 0x1C
- cmp r0, r2
- bge _0804E896
-_0804E89E:
- cmp r1, 0x1
- beq _0804E8C4
- cmp r1, 0x1
- bgt _0804E8B0
- cmp r1, 0
- beq _0804E8BA
- b _0804E974
- .align 2, 0
-_0804E8AC: .4byte gLinkPlayers
-_0804E8B0:
- cmp r1, 0x2
- beq _0804E8F8
- cmp r1, 0x3
- beq _0804E93C
- b _0804E974
-_0804E8BA:
- ldr r0, _0804E8C0 @ =gUnknown_03004834
- strb r1, [r0]
- b _0804E974
- .align 2, 0
-_0804E8C0: .4byte gUnknown_03004834
-_0804E8C4:
- ldr r0, _0804E8E4 @ =gUnknown_03004834
- strb r1, [r0]
- ldr r0, _0804E8E8 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x88
- movs r1, 0x2
- strb r1, [r0]
- ldr r4, _0804E8EC @ =gLinkPlayers + 0x8
- ldr r1, _0804E8F0 @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- adds r4, 0x1C
- ldr r0, _0804E8F4 @ =gUnknown_082162B8
- ldr r1, [r0]
- b _0804E920
- .align 2, 0
-_0804E8E4: .4byte gUnknown_03004834
-_0804E8E8: .4byte gUnknown_03004854
-_0804E8EC: .4byte gLinkPlayers + 0x8
-_0804E8F0: .4byte gSaveBlock2
-_0804E8F4: .4byte gUnknown_082162B8
-_0804E8F8:
- ldr r0, _0804E928 @ =gUnknown_03004834
- strb r1, [r0]
- ldr r0, _0804E92C @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x88
- movs r1, 0x3
- strb r1, [r0]
- ldr r4, _0804E930 @ =gLinkPlayers + 0x8
- ldr r1, _0804E934 @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x1C
- ldr r5, _0804E938 @ =gUnknown_082162B8
- ldr r1, [r5]
- bl StringCopy
- adds r4, 0x38
- ldr r1, [r5, 0x4]
-_0804E920:
- adds r0, r4, 0
- bl StringCopy
- b _0804E974
- .align 2, 0
-_0804E928: .4byte gUnknown_03004834
-_0804E92C: .4byte gUnknown_03004854
-_0804E930: .4byte gLinkPlayers + 0x8
-_0804E934: .4byte gSaveBlock2
-_0804E938: .4byte gUnknown_082162B8
-_0804E93C:
- ldr r0, _0804E97C @ =gUnknown_03004834
- strb r1, [r0]
- ldr r0, _0804E980 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x88
- movs r1, 0x4
- strb r1, [r0]
- ldr r4, _0804E984 @ =gLinkPlayers + 0x8
- ldr r1, _0804E988 @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x1C
- ldr r5, _0804E98C @ =gUnknown_082162B8
- ldr r1, [r5]
- bl StringCopy
- adds r0, r4, 0
- adds r0, 0x38
- ldr r1, [r5, 0x4]
- bl StringCopy
- adds r4, 0x54
- ldr r1, [r5, 0x8]
- adds r0, r4, 0
- bl StringCopy
-_0804E974:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E97C: .4byte gUnknown_03004834
-_0804E980: .4byte gUnknown_03004854
-_0804E984: .4byte gLinkPlayers + 0x8
-_0804E988: .4byte gSaveBlock2
-_0804E98C: .4byte gUnknown_082162B8
- thumb_func_end sub_804E884
-
- thumb_func_start sub_804E990
-sub_804E990: @ 804E990
- push {r4,r5,lr}
- movs r0, 0x80
- lsls r0, 19
- movs r2, 0
- strh r2, [r0]
- ldr r3, _0804E9D8 @ =gUnknown_03004854
- ldr r0, _0804E9DC @ =0x02018000
- str r0, [r3]
- movs r1, 0
- strb r2, [r0]
- movs r2, 0x9A
- lsls r2, 1
- adds r0, r2
- str r1, [r0]
- movs r2, 0
- ldr r5, _0804E9E0 @ =gSpecialVar_0x8004
- adds r4, r3, 0
- movs r3, 0
-_0804E9B4:
- ldr r0, [r4]
- lsls r1, r2, 1
- adds r0, 0x80
- adds r0, r1
- strh r3, [r0]
- adds r2, 0x1
- cmp r2, 0x3
- ble _0804E9B4
- ldrb r0, [r5]
- bl sub_804E884
- ldrh r0, [r5]
- cmp r0, 0
- bne _0804E9E8
- ldr r0, _0804E9E4 @ =sub_804E9F8
- bl SetMainCallback2
- b _0804E9EE
- .align 2, 0
-_0804E9D8: .4byte gUnknown_03004854
-_0804E9DC: .4byte 0x02018000
-_0804E9E0: .4byte gSpecialVar_0x8004
-_0804E9E4: .4byte sub_804E9F8
-_0804E9E8:
- ldr r0, _0804E9F4 @ =sub_804F378
- bl SetMainCallback2
-_0804E9EE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E9F4: .4byte sub_804F378
- thumb_func_end sub_804E990
-
- thumb_func_start sub_804E9F8
-sub_804E9F8: @ 804E9F8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r1, _0804EA18 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- mov r8, r1
- cmp r0, 0x66
- bls _0804EA0E
- b _0804F0CE
-_0804EA0E:
- lsls r0, 2
- ldr r1, _0804EA1C @ =_0804EA20
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804EA18: .4byte gUnknown_03004854
-_0804EA1C: .4byte _0804EA20
- .align 2, 0
-_0804EA20:
- .4byte _0804EBBC
- .4byte _0804EC74
- .4byte _0804EC94
- .4byte _0804ECE8
- .4byte _0804ECFA
- .4byte _0804ED14
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804ED48
- .4byte _0804ED94
- .4byte _0804EDB8
- .4byte _0804EE46
- .4byte _0804EEA0
- .4byte _0804EF16
- .4byte _0804EF34
- .4byte _0804EFD8
- .4byte _0804F00C
- .4byte _0804F0CE
- .4byte _0804F020
- .4byte _0804F024
- .4byte _0804F02A
- .4byte _0804F03A
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F0CE
- .4byte _0804F084
- .4byte _0804F0A0
- .4byte _0804F0BC
-_0804EBBC:
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, _0804EC60 @ =sub_804E2BC
- bl SetVBlankCallback
- ldr r4, _0804EC64 @ =gWindowConfig_81E6F68
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r1, _0804EC68 @ =gLinkType
- ldr r2, _0804EC6C @ =0x00004422
- adds r0, r2, 0
- strh r0, [r1]
- ldr r3, _0804EC70 @ =gUnknown_03004854
- ldr r1, [r3]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, [r3]
- adds r4, r0, 0
- adds r4, 0x4E
- movs r1, 0
- strh r2, [r4]
- adds r0, 0x7E
- strb r1, [r0]
- ldr r1, [r3]
- movs r4, 0xA2
- lsls r4, 1
- adds r0, r1, r4
- strh r2, [r0]
- adds r4, 0x2
- adds r0, r1, r4
- strh r2, [r0]
- movs r5, 0
- movs r6, 0
- mov r8, r3
- movs r7, 0xA6
- lsls r7, 1
-_0804EC18:
- ldr r0, [r3]
- lsls r1, r5, 1
- adds r0, 0x70
- adds r0, r1
- strh r6, [r0]
- adds r4, r5, 0x1
- adds r1, r5
- lsls r1, 1
- movs r2, 0x2
-_0804EC2A:
- ldr r0, [r3]
- adds r0, r7
- adds r0, r1
- strh r6, [r0]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0804EC2A
- adds r5, r4, 0
- cmp r5, 0x3
- ble _0804EC18
- mov r0, r8
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x7C
- movs r2, 0
- movs r1, 0
- strh r1, [r0]
- subs r0, 0x26
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x6
- strh r1, [r0]
- strb r2, [r3, 0x1]
- b _0804F0CE
- .align 2, 0
-_0804EC60: .4byte sub_804E2BC
-_0804EC64: .4byte gWindowConfig_81E6F68
-_0804EC68: .4byte gLinkType
-_0804EC6C: .4byte 0x00004422
-_0804EC70: .4byte gUnknown_03004854
-_0804EC74:
- bl sub_804E2EC
- lsls r0, 24
- cmp r0, 0
- bne _0804EC80
- b _0804F0CE
-_0804EC80:
- ldr r0, _0804EC90 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8051474
- b _0804F0CE
- .align 2, 0
-_0804EC90: .4byte gUnknown_03004854
-_0804EC94:
- movs r5, 0
- ldr r4, _0804ECD8 @ =gUnknown_082162E4
- ldr r6, _0804ECDC @ =gUnknown_03004854
-_0804EC9A:
- ldrb r1, [r4]
- ldrb r2, [r4, 0x1]
- ldr r0, _0804ECE0 @ =gSpriteTemplate_82163F4
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x60
- adds r1, r5
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x60
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804ECE4 @ =gSprites
- adds r0, r1
- adds r1, r5, 0
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r4, 0x2
- adds r5, 0x1
- cmp r5, 0x3
- ble _0804EC9A
- b _0804F0AA
- .align 2, 0
-_0804ECD8: .4byte gUnknown_082162E4
-_0804ECDC: .4byte gUnknown_03004854
-_0804ECE0: .4byte gSpriteTemplate_82163F4
-_0804ECE4: .4byte gSprites
-_0804ECE8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _0804F0AA
-_0804ECFA:
- bl sub_804E4FC
- ldr r0, _0804ED10 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804ED0C
- b _0804F0CE
-_0804ED0C:
- b _0804F0AA
- .align 2, 0
-_0804ED10: .4byte gPaletteFade
-_0804ED14:
- movs r0, 0
- movs r1, 0xD
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _0804ED40 @ =gOtherText_LinkStandby3
- movs r1, 0x1
- movs r2, 0xE
- bl MenuPrint
- ldr r2, _0804ED44 @ =gUnknown_03004854
- ldr r1, [r2]
- movs r3, 0
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- str r3, [r0]
- b _0804F0CE
- .align 2, 0
-_0804ED40: .4byte gOtherText_LinkStandby3
-_0804ED44: .4byte gUnknown_03004854
-_0804ED48:
- mov r2, r8
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r5, 0
- strb r0, [r1]
- ldr r0, [r2]
- movs r3, 0x9E
- lsls r3, 1
- adds r0, r3
- strb r5, [r0]
- ldr r0, [r2]
- movs r4, 0xBE
- lsls r4, 1
- adds r0, r4
- ldr r1, _0804ED8C @ =gScriptItemId
- ldrh r1, [r1]
- bl sub_804E844
- ldr r0, _0804ED90 @ =gBlockSendBuffer
- mov r2, r8
- ldr r1, [r2]
- adds r1, r4
- movs r2, 0x10
- bl memcpy
- bl sub_80084A4
- mov r3, r8
- ldr r0, [r3]
- subs r4, 0x4C
- adds r0, r4
- str r5, [r0]
- b _0804F0CE
- .align 2, 0
-_0804ED8C: .4byte gScriptItemId
-_0804ED90: .4byte gBlockSendBuffer
-_0804ED94:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _0804EDA0
- b _0804F0CE
-_0804EDA0:
- bl ResetBlockReceivedFlags
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _0804EDB0
- b _0804F0AA
-_0804EDB0:
- movs r0, 0x4
- bl sub_8007E9C
- b _0804F0AA
-_0804EDB8:
- mov r0, r8
- ldr r1, [r0]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- bgt _0804EDCE
- b _0804F0CE
-_0804EDCE:
- bl MenuZeroFillScreen
- bl GetBlockReceivedStatus
- adds r4, r0, 0
- bl sub_8008198
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- beq _0804EDE6
- b _0804F0CE
-_0804EDE6:
- movs r5, 0
- mov r7, r8
- movs r6, 0xBE
- lsls r6, 1
- b _0804EE18
-_0804EDF0:
- ldr r0, [r7]
- lsls r4, r5, 4
- adds r0, r4, r0
- adds r0, r6
- lsls r1, r5, 8
- ldr r2, _0804EE2C @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0x10
- bl memcpy
- ldr r0, [r7]
- lsls r2, r5, 1
- adds r1, r0, 0
- adds r1, 0x80
- adds r1, r2
- adds r0, r4
- adds r0, r6
- ldrh r0, [r0]
- strh r0, [r1]
- adds r5, 0x1
-_0804EE18:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- blt _0804EDF0
- bl ResetBlockReceivedFlags
- b _0804F0AA
- .align 2, 0
-_0804EE2C: .4byte gBlockRecvBuffer
-_0804EE30:
- ldrb r1, [r4]
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x80
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r5, 24
- lsrs r1, 24
- bl sub_804E7C0
- b _0804EE7A
-_0804EE46:
- bl GetLinkPlayerCount
- ldr r2, _0804EE98 @ =gUnknown_03004854
- ldr r1, [r2]
- adds r1, 0x88
- strb r0, [r1]
- movs r5, 0
- ldr r2, [r2]
- movs r3, 0x9E
- lsls r3, 1
- adds r4, r2, r3
- ldr r1, _0804EE9C @ =gUnknown_082162EC
- adds r0, r2, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- ldrb r3, [r4]
- adds r0, r1
-_0804EE6C:
- ldrb r1, [r0]
- cmp r3, r1
- beq _0804EE30
- adds r0, 0x1
- adds r5, 0x1
- cmp r5, 0x3
- ble _0804EE6C
-_0804EE7A:
- ldr r3, _0804EE98 @ =gUnknown_03004854
- ldr r1, [r3]
- movs r4, 0x98
- lsls r4, 1
- adds r2, r1, r4
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, [r3]
- movs r0, 0x9E
- lsls r0, 1
- adds r1, r0
- b _0804F0AE
- .align 2, 0
-_0804EE98: .4byte gUnknown_03004854
-_0804EE9C: .4byte gUnknown_082162EC
-_0804EEA0:
- mov r1, r8
- ldr r2, [r1]
- movs r3, 0x98
- lsls r3, 1
- adds r1, r2, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _0804EEB6
- b _0804F0CE
-_0804EEB6:
- movs r4, 0x9E
- lsls r4, 1
- adds r0, r2, r4
- adds r1, r2, 0
- adds r1, 0x88
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _0804EF00
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- mov r0, r8
- ldr r2, [r0]
- ldr r3, _0804EEF4 @ =gUnknown_082162F8
- ldr r1, _0804EEF8 @ =gUnknown_08216300
- adds r0, r2, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r3
- ldr r3, _0804EEFC @ =0xffffa800
- adds r1, r3, 0
- ldrh r0, [r0]
- adds r1, r0
- adds r2, 0x54
- strh r1, [r2]
- b _0804EF06
- .align 2, 0
-_0804EEF4: .4byte gUnknown_082162F8
-_0804EEF8: .4byte gUnknown_08216300
-_0804EEFC: .4byte 0xffffa800
-_0804EF00:
- ldrb r0, [r2]
- subs r0, 0x1
- strb r0, [r2]
-_0804EF06:
- mov r4, r8
- ldr r0, [r4]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- movs r1, 0
- str r1, [r0]
- b _0804F0CE
-_0804EF16:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _0804EF22
- b _0804F0CE
-_0804EF22:
- ldr r2, _0804EF30 @ =gUnknown_03004854
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- b _0804EFBC
- .align 2, 0
-_0804EF30: .4byte gUnknown_03004854
-_0804EF34:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r3, 0x80
- lsls r3, 3
- adds r1, r3, 0
- orrs r0, r1
- strh r0, [r2]
- mov r4, r8
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0x54
- movs r3, 0x80
- lsls r3, 2
- adds r0, r3, 0
- ldrh r4, [r1]
- adds r0, r4
- strh r0, [r1]
- movs r0, 0xA1
- lsls r0, 1
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x4
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xFF
- bls _0804EFB8
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- mov r1, r8
- ldr r3, [r1]
- movs r2, 0xA1
- lsls r2, 1
- adds r1, r3, r2
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r1]
- ldr r2, _0804EFC8 @ =gUnknown_082162F8
- ldr r1, _0804EFCC @ =gUnknown_08216300
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- adds r0, r3, 0
- adds r0, 0x54
- strh r1, [r0]
- ldr r1, _0804EFD0 @ =REG_BG2CNT
- ldr r4, _0804EFD4 @ =0x00004882
- adds r0, r4, 0
- strh r0, [r1]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r3, r0
- movs r0, 0
- str r0, [r1]
- bl sub_804F238
- bl BuyMenuDrawFieldObjects
-_0804EFB8:
- mov r1, r8
- ldr r0, [r1]
-_0804EFBC:
- movs r2, 0xB4
- lsls r2, 1
- adds r0, r2
- bl sub_8051414
- b _0804F0CE
- .align 2, 0
-_0804EFC8: .4byte gUnknown_082162F8
-_0804EFCC: .4byte gUnknown_08216300
-_0804EFD0: .4byte REG_BG2CNT
-_0804EFD4: .4byte 0x00004882
-_0804EFD8:
- bl sub_8051B8C
- lsls r0, 24
- cmp r0, 0
- beq _0804EFF6
- ldr r0, _0804F008 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r3, 0x98
- lsls r3, 1
- adds r2, r1, r3
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804EFF6:
- ldr r0, _0804F008 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r4, 0xB4
- lsls r4, 1
- adds r0, r4
- bl sub_8051414
- b _0804F0CE
- .align 2, 0
-_0804F008: .4byte gUnknown_03004854
-_0804F00C:
- ldr r0, _0804F01C @ =gSpriteTemplate_8216548
- movs r2, 0x10
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x3
- bl CreateSprite
- b _0804F0AA
- .align 2, 0
-_0804F01C: .4byte gSpriteTemplate_8216548
-_0804F020:
- mov r0, r8
- b _0804F0AC
-_0804F024:
- bl sub_80084A4
- b _0804F0AA
-_0804F02A:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _0804F0CE
- bl sub_8007E24
- b _0804F0AA
-_0804F03A:
- mov r1, r8
- ldr r3, [r1]
- adds r2, r3, 0
- adds r2, 0x56
- movs r1, 0
- movs r0, 0x80
- strh r0, [r2]
- movs r2, 0x96
- lsls r2, 1
- adds r0, r3, r2
- str r1, [r0]
- ldr r0, _0804F07C @ =sub_80501FC
- bl SetMainCallback2
- bl GetCurrentMapMusic
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0804F080 @ =0x00000193
- cmp r0, r4
- beq _0804F074
- bl GetCurrentMapMusic
- mov r3, r8
- ldr r1, [r3]
- movs r2, 0xBC
- lsls r2, 1
- adds r1, r2
- strh r0, [r1]
-_0804F074:
- adds r0, r4, 0
- bl PlayBGM
- b _0804F0CE
- .align 2, 0
-_0804F07C: .4byte sub_80501FC
-_0804F080: .4byte 0x00000193
-_0804F084:
- movs r0, 0
- movs r1, 0xD
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _0804F09C @ =gOtherText_LinkNotFound
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _0804F0AA
- .align 2, 0
-_0804F09C: .4byte gOtherText_LinkNotFound
-_0804F0A0:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0804F0CE
-_0804F0AA:
- ldr r0, _0804F0B8 @ =gUnknown_03004854
-_0804F0AC:
- ldr r1, [r0]
-_0804F0AE:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804F0CE
- .align 2, 0
-_0804F0B8: .4byte gUnknown_03004854
-_0804F0BC:
- ldr r0, _0804F0EC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804F0CE
- ldr r0, _0804F0F0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_0804F0CE:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F0EC: .4byte gPaletteFade
-_0804F0F0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_804E9F8
-
- thumb_func_start sub_804F0F4
-sub_804F0F4: @ 804F0F4
- push {r4,lr}
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, _0804F158 @ =sub_804E2BC
- bl SetVBlankCallback
- ldr r4, _0804F15C @ =gWindowConfig_81E6F68
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r1, _0804F160 @ =gLinkType
- ldr r2, _0804F164 @ =0x00004422
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0804F168 @ =gUnknown_03004854
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x4E
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x8
- strh r1, [r0]
- subs r0, 0x2
- strh r1, [r0]
- adds r0, 0x6
- strh r1, [r0]
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F158: .4byte sub_804E2BC
-_0804F15C: .4byte gWindowConfig_81E6F68
-_0804F160: .4byte gLinkType
-_0804F164: .4byte 0x00004422
-_0804F168: .4byte gUnknown_03004854
- thumb_func_end sub_804F0F4
-
- thumb_func_start task_tutorial_oak_boy_girl
-task_tutorial_oak_boy_girl: @ 804F16C
- push {lr}
- lsls r0, 16
- lsls r1, 24
- lsrs r0, 24
- adds r2, r0, 0
- adds r2, 0x18
- ldr r0, _0804F1A8 @ =gUnknown_03004854
- ldr r0, [r0]
- lsrs r1, 23
- adds r0, 0xA2
- adds r0, r1
- ldrb r0, [r0]
- ldr r1, _0804F1AC @ =gUnknown_08216303
- adds r0, r1
- ldrb r1, [r0]
- cmp r2, r1
- bcc _0804F1B4
- adds r0, r1, 0
- adds r0, 0x30
- cmp r2, r0
- bcs _0804F1B4
- subs r0, 0x1C
- cmp r2, r0
- bcc _0804F1B0
- adds r0, 0x8
- cmp r2, r0
- bcs _0804F1B0
- movs r0, 0x2
- b _0804F1B6
- .align 2, 0
-_0804F1A8: .4byte gUnknown_03004854
-_0804F1AC: .4byte gUnknown_08216303
-_0804F1B0:
- movs r0, 0x1
- b _0804F1B6
-_0804F1B4:
- movs r0, 0
-_0804F1B6:
- pop {r1}
- bx r1
- thumb_func_end task_tutorial_oak_boy_girl
-
- thumb_func_start sub_804F1BC
-sub_804F1BC: @ 804F1BC
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 24
- lsrs r1, 24
- movs r4, 0
- cmp r0, 0xAF
- bne _0804F1EE
- movs r3, 0
- subs r5, r1, 0x1
- adds r2, 0x9
-_0804F1D2:
- adds r0, r2, r4
- adds r1, r2, r3
- ldrb r0, [r0]
- ldrb r1, [r1]
- cmp r0, r1
- bls _0804F1E0
- adds r4, r3, 0
-_0804F1E0:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x4
- bls _0804F1D2
- adds r0, r4, 0x5
- b _0804F204
-_0804F1EE:
- subs r0, 0x85
- lsls r0, 16
- lsrs r4, r0, 16
- subs r5, r1, 0x1
- cmp r4, 0x4
- bls _0804F208
- adds r0, r4, 0
- movs r1, 0x5
- bl __umodsi3
- adds r0, 0x5
-_0804F204:
- lsls r0, 16
- lsrs r4, r0, 16
-_0804F208:
- movs r3, 0
- cmp r3, r5
- bge _0804F22E
- ldr r7, _0804F234 @ =gUnknown_082165BC
- lsls r0, r4, 1
- adds r6, r0, r4
-_0804F214:
- adds r4, r3, 0x1
- lsls r0, r4, 24
- lsrs r0, 24
- adds r1, r3, r6
- adds r1, r7
- ldrb r1, [r1]
- adds r1, 0x85
- bl sub_80516C4
- lsls r4, 16
- lsrs r3, r4, 16
- cmp r3, r5
- blt _0804F214
-_0804F22E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F234: .4byte gUnknown_082165BC
- thumb_func_end sub_804F1BC
-
- thumb_func_start sub_804F238
-sub_804F238: @ 804F238
- push {r4-r7,lr}
- movs r4, 0
- ldr r7, _0804F2A0 @ =gUnknown_03004854
- movs r6, 0xFF
- ldr r5, _0804F2A4 @ =gUnknown_082162EC
-_0804F242:
- ldr r3, [r7]
- lsls r2, r4, 1
- adds r0, r3, 0
- adds r0, 0xA2
- adds r0, r2
- strh r6, [r0]
- adds r1, r3, 0
- adds r1, 0x9A
- adds r1, r2
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- adds r0, r4, r0
- adds r0, r5
- ldrb r0, [r0]
- strh r0, [r1]
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F242
- movs r3, 0
- ldr r7, _0804F2A0 @ =gUnknown_03004854
-_0804F270:
- movs r4, 0
- adds r6, r3, 0x1
- lsls r5, r3, 1
-_0804F276:
- ldr r2, [r7]
- lsls r0, r4, 1
- adds r1, r2, 0
- adds r1, 0x9A
- adds r1, r0
- ldrh r0, [r1]
- cmp r0, r3
- bne _0804F28E
- adds r0, r2, 0
- adds r0, 0xA2
- adds r0, r5
- strh r4, [r0]
-_0804F28E:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F276
- adds r3, r6, 0
- cmp r3, 0x3
- ble _0804F270
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F2A0: .4byte gUnknown_03004854
-_0804F2A4: .4byte gUnknown_082162EC
- thumb_func_end sub_804F238
-
- thumb_func_start BuyMenuDrawFieldObjects
-BuyMenuDrawFieldObjects: @ 804F2A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r6, 0
- ldr r7, _0804F360 @ =gUnknown_03004854
- ldr r0, _0804F364 @ =gUnknown_082162D4
- mov r8, r0
-_0804F2B6:
- ldr r2, [r7]
- lsls r4, r6, 1
- adds r0, r2, 0
- adds r0, 0x9A
- adds r3, r0, r4
- ldrh r0, [r3]
- cmp r0, 0xFF
- beq _0804F34A
- ldr r5, _0804F368 @ =gStringVar1
- adds r1, r2, 0
- adds r1, 0x5C
- ldrh r3, [r3]
- adds r1, r3
- adds r0, r2, 0
- adds r0, 0x60
- adds r0, r6
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, [r7]
- adds r1, r0, 0
- adds r1, 0x9A
- adds r1, r4
- adds r0, 0x5C
- ldrh r1, [r1]
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804F36C @ =gSprites
- adds r0, r1
- lsls r1, r6, 24
- lsrs r1, 24
- bl StartSpriteAnim
- bl GetMultiplayerId
- lsls r0, 24
- ldr r1, [r7]
- adds r1, 0x9A
- adds r1, r4
- lsrs r0, 24
- ldrh r1, [r1]
- cmp r0, r1
- bne _0804F31A
- adds r0, r5, 0
- ldr r1, _0804F370 @ =gUnknown_082162C4
- bl StringCopy
- adds r5, r0, 0
-_0804F31A:
- ldr r0, [r7]
- adds r0, 0x9A
- adds r0, r4
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _0804F374 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r5, 0
- bl StringCopy
- mov r0, r8
- ldrb r1, [r0]
- lsls r1, 3
- adds r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- ldrb r2, [r0, 0x1]
- lsls r2, 3
- ldr r0, _0804F368 @ =gStringVar1
- movs r3, 0x1
- bl MenuPrint_PixelCoords
-_0804F34A:
- movs r0, 0x2
- add r8, r0
- adds r6, 0x1
- cmp r6, 0x3
- ble _0804F2B6
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F360: .4byte gUnknown_03004854
-_0804F364: .4byte gUnknown_082162D4
-_0804F368: .4byte gStringVar1
-_0804F36C: .4byte gSprites
-_0804F370: .4byte gUnknown_082162C4
-_0804F374: .4byte gLinkPlayers + 0x8
- thumb_func_end BuyMenuDrawFieldObjects
-
- thumb_func_start sub_804F378
-sub_804F378: @ 804F378
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- ldr r1, _0804F398 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- mov r8, r1
- cmp r0, 0x15
- bls _0804F38E
- b _0804F7E6
-_0804F38E:
- lsls r0, 2
- ldr r1, _0804F39C @ =_0804F3A0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804F398: .4byte gUnknown_03004854
-_0804F39C: .4byte _0804F3A0
- .align 2, 0
-_0804F3A0:
- .4byte _0804F3F8
- .4byte _0804F474
- .4byte _0804F494
- .4byte _0804F4EC
- .4byte _0804F518
- .4byte _0804F7E6
- .4byte _0804F7E6
- .4byte _0804F7E6
- .4byte _0804F54C
- .4byte _0804F7E6
- .4byte _0804F7E6
- .4byte _0804F578
- .4byte _0804F5C8
- .4byte _0804F636
- .4byte _0804F650
- .4byte _0804F6F8
- .4byte _0804F720
- .4byte _0804F7E6
- .4byte _0804F73C
- .4byte _0804F742
- .4byte _0804F748
- .4byte _0804F754
-_0804F3F8:
- bl sub_804F0F4
- ldr r4, _0804F46C @ =gScriptItemId
- ldrh r1, [r4]
- movs r0, 0
- bl sub_80516C4
- ldr r5, _0804F470 @ =gUnknown_03004854
- ldr r0, [r5]
- movs r6, 0xBE
- lsls r6, 1
- adds r0, r6
- ldrh r1, [r4]
- bl sub_804E844
- ldrh r0, [r4]
- ldr r2, [r5]
- adds r1, r2, 0
- adds r1, 0x88
- ldrb r1, [r1]
- adds r2, r6
- bl sub_804F1BC
- movs r4, 0
- movs r6, 0
- mov r8, r5
- movs r7, 0xA6
- lsls r7, 1
-_0804F430:
- ldr r0, [r5]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- strh r6, [r0]
- adds r3, r4, 0x1
- adds r1, r4
- lsls r1, 1
- movs r2, 0x2
-_0804F442:
- ldr r0, [r5]
- adds r0, r7
- adds r0, r1
- strh r6, [r0]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0804F442
- adds r4, r3, 0
- cmp r4, 0x3
- ble _0804F430
- mov r0, r8
- ldr r3, [r0]
- adds r1, r3, 0
- adds r1, 0x7C
- movs r2, 0
- movs r0, 0
- strh r0, [r1]
- strb r2, [r3, 0x1]
- b _0804F7E6
- .align 2, 0
-_0804F46C: .4byte gScriptItemId
-_0804F470: .4byte gUnknown_03004854
-_0804F474:
- bl sub_804E2EC
- lsls r0, 24
- cmp r0, 0
- bne _0804F480
- b _0804F7E6
-_0804F480:
- ldr r0, _0804F490 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8051474
- b _0804F7E6
- .align 2, 0
-_0804F490: .4byte gUnknown_03004854
-_0804F494:
- movs r4, 0
- ldr r5, _0804F4DC @ =gUnknown_082162E4
- ldr r6, _0804F4E0 @ =gUnknown_03004854
-_0804F49A:
- ldrb r1, [r5]
- ldrb r2, [r5, 0x1]
- ldr r0, _0804F4E4 @ =gSpriteTemplate_82163F4
- movs r3, 0x1
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0x60
- adds r1, r4
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x60
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804F4E8 @ =gSprites
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0x8
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- adds r5, 0x2
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F49A
- ldr r0, _0804F4E0 @ =gUnknown_03004854
- ldr r1, [r0]
- b _0804F74C
- .align 2, 0
-_0804F4DC: .4byte gUnknown_082162E4
-_0804F4E0: .4byte gUnknown_03004854
-_0804F4E4: .4byte gSpriteTemplate_82163F4
-_0804F4E8: .4byte gSprites
-_0804F4EC:
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r2, _0804F514 @ =gUnknown_03004854
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- str r4, [r0]
- b _0804F7E6
- .align 2, 0
-_0804F514: .4byte gUnknown_03004854
-_0804F518:
- mov r2, r8
- ldr r1, [r2]
- movs r3, 0x98
- lsls r3, 1
- adds r1, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x2
- bne _0804F530
- bl sub_804E4FC
-_0804F530:
- ldr r0, _0804F548 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804F53E
- b _0804F7E6
-_0804F53E:
- mov r5, r8
- ldr r1, [r5]
- movs r0, 0x8
- strb r0, [r1]
- b _0804F7E6
- .align 2, 0
-_0804F548: .4byte gPaletteFade
-_0804F54C:
- mov r0, r8
- ldr r1, [r0]
- movs r2, 0
- movs r0, 0xB
- strb r0, [r1]
- mov r1, r8
- ldr r0, [r1]
- movs r3, 0x9E
- lsls r3, 1
- adds r0, r3
- strb r2, [r0]
- b _0804F7E6
-_0804F564:
- lsls r1, 1
- adds r0, r3, 0
- adds r0, 0x80
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r4, 24
- lsrs r1, 24
- bl sub_804E7C0
- b _0804F5A2
-_0804F578:
- movs r4, 0
- ldr r2, _0804F5C0 @ =gUnknown_082162EC
- ldr r0, _0804F5C4 @ =gUnknown_03004854
- ldr r3, [r0]
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 2
- movs r5, 0x9E
- lsls r5, 1
- adds r1, r3, r5
- ldrb r1, [r1]
- adds r0, r2
-_0804F594:
- ldrb r2, [r0]
- cmp r1, r2
- beq _0804F564
- adds r0, 0x1
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F594
-_0804F5A2:
- ldr r3, _0804F5C4 @ =gUnknown_03004854
- ldr r1, [r3]
- movs r5, 0x98
- lsls r5, 1
- adds r2, r1, r5
- movs r0, 0
- str r0, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, [r3]
- movs r0, 0x9E
- lsls r0, 1
- adds r1, r0
- b _0804F74C
- .align 2, 0
-_0804F5C0: .4byte gUnknown_082162EC
-_0804F5C4: .4byte gUnknown_03004854
-_0804F5C8:
- mov r1, r8
- ldr r3, [r1]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r3, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _0804F5DE
- b _0804F7E6
-_0804F5DE:
- movs r5, 0x9E
- lsls r5, 1
- adds r0, r3, r5
- adds r4, r3, 0
- adds r4, 0x88
- ldrb r0, [r0]
- ldrb r1, [r4]
- cmp r0, r1
- bcc _0804F620
- ldr r2, _0804F614 @ =gUnknown_082162F8
- ldr r1, _0804F618 @ =gUnknown_08216300
- ldrb r0, [r4]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldr r2, _0804F61C @ =0xffffa800
- adds r1, r2, 0
- ldrh r0, [r0]
- adds r1, r0
- adds r0, r3, 0
- adds r0, 0x54
- strh r1, [r0]
- ldrb r0, [r3]
- adds r0, 0x1
- b _0804F624
- .align 2, 0
-_0804F614: .4byte gUnknown_082162F8
-_0804F618: .4byte gUnknown_08216300
-_0804F61C: .4byte 0xffffa800
-_0804F620:
- ldrb r0, [r3]
- subs r0, 0x1
-_0804F624:
- strb r0, [r3]
- mov r3, r8
- ldr r0, [r3]
- movs r5, 0x98
- lsls r5, 1
- adds r0, r5
- movs r1, 0
- str r1, [r0]
- b _0804F7E6
-_0804F636:
- mov r1, r8
- ldr r0, [r1]
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- bl sub_804F238
- movs r0, 0x2B
- bl PlaySE
- mov r2, r8
- ldr r0, [r2]
- b _0804F710
-_0804F650:
- movs r2, 0x80
- lsls r2, 19
- ldrh r0, [r2]
- movs r5, 0x80
- lsls r5, 3
- adds r1, r5, 0
- orrs r0, r1
- strh r0, [r2]
- mov r0, r8
- ldr r2, [r0]
- adds r1, r2, 0
- adds r1, 0x54
- movs r3, 0x80
- lsls r3, 2
- adds r0, r3, 0
- ldrh r5, [r1]
- adds r0, r5
- strh r0, [r1]
- movs r0, 0xA1
- lsls r0, 1
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x4
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xFF
- bls _0804F6D6
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- mov r1, r8
- ldr r3, [r1]
- movs r2, 0xA1
- lsls r2, 1
- adds r1, r3, r2
- movs r0, 0x80
- lsls r0, 1
- strh r0, [r1]
- ldr r2, _0804F6E8 @ =gUnknown_082162F8
- ldr r1, _0804F6EC @ =gUnknown_08216300
- adds r0, r3, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r2
- ldrh r1, [r0]
- adds r0, r3, 0
- adds r0, 0x54
- strh r1, [r0]
- ldr r1, _0804F6F0 @ =REG_BG2CNT
- ldr r5, _0804F6F4 @ =0x00004882
- adds r0, r5, 0
- strh r0, [r1]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r3, r0
- movs r0, 0
- str r0, [r1]
- movs r0, 0x34
- bl PlaySE
- bl BuyMenuDrawFieldObjects
-_0804F6D6:
- mov r1, r8
- ldr r0, [r1]
- movs r2, 0xB4
- lsls r2, 1
- adds r0, r2
- bl sub_8051414
- b _0804F7E6
- .align 2, 0
-_0804F6E8: .4byte gUnknown_082162F8
-_0804F6EC: .4byte gUnknown_08216300
-_0804F6F0: .4byte REG_BG2CNT
-_0804F6F4: .4byte 0x00004882
-_0804F6F8:
- bl sub_8051B8C
- lsls r0, 24
- cmp r0, 0
- beq _0804F70C
- ldr r0, _0804F71C @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804F70C:
- ldr r0, _0804F71C @ =gUnknown_03004854
- ldr r0, [r0]
-_0804F710:
- movs r3, 0xB4
- lsls r3, 1
- adds r0, r3
- bl sub_8051414
- b _0804F7E6
- .align 2, 0
-_0804F71C: .4byte gUnknown_03004854
-_0804F720:
- ldr r0, _0804F734 @ =gSpriteTemplate_8216548
- movs r2, 0x10
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x3
- bl CreateSprite
- ldr r0, _0804F738 @ =gUnknown_03004854
- ldr r1, [r0]
- b _0804F74C
- .align 2, 0
-_0804F734: .4byte gSpriteTemplate_8216548
-_0804F738: .4byte gUnknown_03004854
-_0804F73C:
- mov r5, r8
- ldr r1, [r5]
- b _0804F74C
-_0804F742:
- mov r0, r8
- ldr r1, [r0]
- b _0804F74C
-_0804F748:
- mov r2, r8
- ldr r1, [r2]
-_0804F74C:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804F7E6
-_0804F754:
- bl sub_804F81C
- ldr r3, _0804F804 @ =gUnknown_03004854
- ldr r4, [r3]
- adds r5, r4, 0
- adds r5, 0x56
- movs r2, 0
- movs r1, 0
- movs r0, 0x80
- strh r0, [r5]
- movs r5, 0x96
- lsls r5, 1
- adds r0, r4, r5
- str r1, [r0]
- ldr r1, _0804F808 @ =0x0000014b
- adds r0, r4, r1
- strb r2, [r0]
- ldr r0, [r3]
- adds r0, 0x7E
- strb r2, [r0]
- ldr r0, _0804F80C @ =sub_80501FC
- bl SetMainCallback2
- movs r4, 0
- ldr r0, _0804F810 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- bge _0804F7B8
- movs r5, 0xA0
- lsls r5, 20
- ldr r6, _0804F814 @ =gUnknown_08216308
-_0804F792:
- ldm r6!, {r0}
- lsrs r1, r5, 24
- bl CreateTask
- ldr r1, _0804F804 @ =gUnknown_03004854
- ldr r1, [r1]
- movs r2, 0xA4
- lsls r2, 1
- adds r1, r2
- adds r1, r4
- strb r0, [r1]
- movs r3, 0x80
- lsls r3, 17
- adds r5, r3
- adds r4, 0x1
- ldr r0, _0804F810 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- blt _0804F792
-_0804F7B8:
- bl GetCurrentMapMusic
- lsls r0, 16
- lsrs r0, 16
- ldr r4, _0804F818 @ =0x00000193
- cmp r0, r4
- beq _0804F7D6
- bl GetCurrentMapMusic
- ldr r1, _0804F804 @ =gUnknown_03004854
- ldr r1, [r1]
- movs r5, 0xBC
- lsls r5, 1
- adds r1, r5
- strh r0, [r1]
-_0804F7D6:
- adds r0, r4, 0
- bl PlayBGM
- movs r0, 0x35
- bl PlaySE
- bl sub_804E290
-_0804F7E6:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F804: .4byte gUnknown_03004854
-_0804F808: .4byte 0x0000014b
-_0804F80C: .4byte sub_80501FC
-_0804F810: .4byte gSpecialVar_0x8004
-_0804F814: .4byte gUnknown_08216308
-_0804F818: .4byte 0x00000193
- thumb_func_end sub_804F378
-
- thumb_func_start sub_804F81C
-sub_804F81C: @ 804F81C
- push {lr}
- ldr r3, _0804F83C @ =gSendCmd
- movs r0, 0
- ldr r1, _0804F840 @ =gRecvCmds
- movs r2, 0x3
-_0804F826:
- strh r0, [r3]
- strh r0, [r3, 0x4]
- strh r0, [r1]
- strh r0, [r1, 0x10]
- adds r1, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _0804F826
- pop {r0}
- bx r0
- .align 2, 0
-_0804F83C: .4byte gSendCmd
-_0804F840: .4byte gRecvCmds
- thumb_func_end sub_804F81C
-
- thumb_func_start sub_804F844
-sub_804F844: @ 804F844
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _0804F884 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r2, r0, r1
- ldrh r0, [r2, 0x8]
- adds r0, 0x1
- strh r0, [r2, 0x8]
- lsls r0, 16
- asrs r0, 16
- movs r4, 0xA
- ldrsh r1, [r2, r4]
- cmp r0, r1
- ble _0804F87C
- ldr r0, _0804F888 @ =gRecvCmds
- movs r4, 0xC
- ldrsh r1, [r2, r4]
- lsls r1, 1
- adds r0, 0x10
- adds r1, r0
- ldr r0, _0804F88C @ =0x00002345
- strh r0, [r1]
- adds r0, r3, 0
- bl DestroyTask
-_0804F87C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F884: .4byte gTasks
-_0804F888: .4byte gRecvCmds
-_0804F88C: .4byte 0x00002345
- thumb_func_end sub_804F844
-
- thumb_func_start sub_804F890
-sub_804F890: @ 804F890
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0804F8C0 @ =sub_804F844
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0804F8C4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- strh r5, [r1, 0xC]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F8C0: .4byte sub_804F844
-_0804F8C4: .4byte gTasks
- thumb_func_end sub_804F890
-
- thumb_func_start sub_804F8C8
-sub_804F8C8: @ 804F8C8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r4, _0804F934 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0x54
- ldrh r0, [r0]
- movs r1, 0x1
- bl task_tutorial_oak_boy_girl
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _0804F8E6
- b _0804F9DC
-_0804F8E6:
- ldr r2, _0804F938 @ =gTasks
- lsls r1, r5, 2
- adds r0, r1, r5
- lsls r0, 3
- adds r0, r2
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r6, r1, 0
- cmp r0, 0
- beq _0804F8FC
- b _0804F9EA
-_0804F8FC:
- ldr r0, [r4]
- ldr r1, _0804F93C @ =0x0000014b
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804F9BE
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0804F940 @ =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r1, r0, 24
- adds r3, r1, 0
- ldr r0, [r4]
- adds r0, 0x56
- movs r4, 0
- ldrsh r2, [r0, r4]
- ldr r0, _0804F944 @ =0x000001f3
- cmp r2, r0
- bgt _0804F964
- cmp r1, 0x4B
- bls _0804F950
- ldr r1, _0804F948 @ =gRecvCmds
- ldr r0, _0804F94C @ =0x00004523
- b _0804F954
- .align 2, 0
-_0804F934: .4byte gUnknown_03004854
-_0804F938: .4byte gTasks
-_0804F93C: .4byte 0x0000014b
-_0804F940: .4byte 0x0000028f
-_0804F944: .4byte 0x000001f3
-_0804F948: .4byte gRecvCmds
-_0804F94C: .4byte 0x00004523
-_0804F950:
- ldr r1, _0804F95C @ =gRecvCmds
- ldr r0, _0804F960 @ =0x00005432
-_0804F954:
- strh r0, [r1, 0x12]
- ldr r0, _0804F960 @ =0x00005432
- b _0804F9C2
- .align 2, 0
-_0804F95C: .4byte gRecvCmds
-_0804F960: .4byte 0x00005432
-_0804F964:
- ldr r0, _0804F980 @ =0x000005db
- cmp r2, r0
- bgt _0804F992
- cmp r1, 0x50
- bhi _0804F9BE
- adds r0, r1, 0
- subs r0, 0x15
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3B
- bhi _0804F98C
- ldr r1, _0804F984 @ =gRecvCmds
- ldr r0, _0804F988 @ =0x00005432
- b _0804F9C2
- .align 2, 0
-_0804F980: .4byte 0x000005db
-_0804F984: .4byte gRecvCmds
-_0804F988: .4byte 0x00005432
-_0804F98C:
- cmp r1, 0x9
- bhi _0804F9C4
- b _0804F9B4
-_0804F992:
- cmp r1, 0x5A
- bhi _0804F9BE
- adds r0, r1, 0
- subs r0, 0x47
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x13
- bhi _0804F9B0
- ldr r1, _0804F9A8 @ =gRecvCmds
- ldr r0, _0804F9AC @ =0x00005432
- b _0804F9C2
- .align 2, 0
-_0804F9A8: .4byte gRecvCmds
-_0804F9AC: .4byte 0x00005432
-_0804F9B0:
- cmp r3, 0x1D
- bhi _0804F9C4
-_0804F9B4:
- movs r0, 0x1
- movs r1, 0x5
- bl sub_804F890
- b _0804F9C4
-_0804F9BE:
- ldr r1, _0804F9D0 @ =gRecvCmds
- ldr r0, _0804F9D4 @ =0x00004523
-_0804F9C2:
- strh r0, [r1, 0x12]
-_0804F9C4:
- ldr r0, _0804F9D8 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _0804F9E8
- .align 2, 0
-_0804F9D0: .4byte gRecvCmds
-_0804F9D4: .4byte 0x00004523
-_0804F9D8: .4byte gTasks
-_0804F9DC:
- ldr r0, _0804F9F0 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_0804F9E8:
- strh r0, [r1, 0x8]
-_0804F9EA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F9F0: .4byte gTasks
- thumb_func_end sub_804F8C8
-
- thumb_func_start sub_804F9F4
-sub_804F9F4: @ 804F9F4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r6, _0804FA78 @ =gUnknown_03004854
- ldr r3, [r6]
- adds r0, r3, 0
- adds r0, 0x54
- ldrh r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldr r1, _0804FA7C @ =0x0000ffff
- ands r0, r1
- adds r1, r3, 0
- adds r1, 0xA6
- ldrb r1, [r1]
- lsrs r2, r0, 8
- ldr r0, _0804FA80 @ =gUnknown_08216303
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r1, 0
- adds r0, 0x14
- cmp r2, r0
- bls _0804FB04
- adds r0, 0x14
- cmp r2, r0
- bcs _0804FB04
- ldr r2, _0804FA84 @ =gTasks
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r0, 3
- adds r2, r0, r2
- movs r5, 0x8
- ldrsh r0, [r2, r5]
- adds r5, r1, 0
- cmp r0, 0
- bne _0804FB12
- ldr r1, _0804FA88 @ =0x0000014b
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804FAF0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0804FA8C @ =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- adds r3, r2, 0
- ldr r0, [r6]
- adds r0, 0x56
- movs r6, 0
- ldrsh r1, [r0, r6]
- ldr r0, _0804FA90 @ =0x000001f3
- cmp r1, r0
- bgt _0804FAAC
- cmp r2, 0x42
- bls _0804FA9C
- ldr r1, _0804FA94 @ =gRecvCmds
- ldr r0, _0804FA98 @ =0x00004523
- strh r0, [r1, 0x14]
- b _0804FAD4
- .align 2, 0
-_0804FA78: .4byte gUnknown_03004854
-_0804FA7C: .4byte 0x0000ffff
-_0804FA80: .4byte gUnknown_08216303
-_0804FA84: .4byte gTasks
-_0804FA88: .4byte 0x0000014b
-_0804FA8C: .4byte 0x0000028f
-_0804FA90: .4byte 0x000001f3
-_0804FA94: .4byte gRecvCmds
-_0804FA98: .4byte 0x00004523
-_0804FA9C:
- ldr r1, _0804FAA4 @ =gRecvCmds
- ldr r0, _0804FAA8 @ =0x00005432
- strh r0, [r1, 0x14]
- b _0804FAD4
- .align 2, 0
-_0804FAA4: .4byte gRecvCmds
-_0804FAA8: .4byte 0x00005432
-_0804FAAC:
- cmp r2, 0x41
- bls _0804FAB6
- ldr r1, _0804FAE0 @ =gRecvCmds
- ldr r0, _0804FAE4 @ =0x00004523
- strh r0, [r1, 0x14]
-_0804FAB6:
- adds r0, r2, 0
- subs r0, 0x29
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x18
- bhi _0804FAC8
- ldr r1, _0804FAE0 @ =gRecvCmds
- ldr r0, _0804FAE8 @ =0x00005432
- strh r0, [r1, 0x14]
-_0804FAC8:
- cmp r3, 0x9
- bhi _0804FAD4
- movs r0, 0x2
- movs r1, 0x5
- bl sub_804F890
-_0804FAD4:
- ldr r0, _0804FAEC @ =gTasks
- adds r1, r5, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _0804FB10
- .align 2, 0
-_0804FAE0: .4byte gRecvCmds
-_0804FAE4: .4byte 0x00004523
-_0804FAE8: .4byte 0x00005432
-_0804FAEC: .4byte gTasks
-_0804FAF0:
- ldr r0, _0804FAFC @ =gRecvCmds
- ldr r1, _0804FB00 @ =0x00004523
- strh r1, [r0, 0x14]
- movs r0, 0x1
- strh r0, [r2, 0x8]
- b _0804FB12
- .align 2, 0
-_0804FAFC: .4byte gRecvCmds
-_0804FB00: .4byte 0x00004523
-_0804FB04:
- ldr r0, _0804FB18 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_0804FB10:
- strh r0, [r1, 0x8]
-_0804FB12:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FB18: .4byte gTasks
- thumb_func_end sub_804F9F4
-
- thumb_func_start sub_804FB1C
-sub_804FB1C: @ 804FB1C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r5, _0804FB9C @ =gUnknown_03004854
- ldr r3, [r5]
- adds r0, r3, 0
- adds r0, 0x54
- ldrh r0, [r0]
- movs r1, 0xC0
- lsls r1, 5
- adds r0, r1
- ldr r1, _0804FBA0 @ =0x0000ffff
- ands r0, r1
- adds r1, r3, 0
- adds r1, 0xA8
- ldrb r1, [r1]
- lsrs r2, r0, 8
- ldr r0, _0804FBA4 @ =gUnknown_08216303
- adds r1, r0
- ldrb r1, [r1]
- adds r0, r1, 0
- adds r0, 0x14
- cmp r2, r0
- bls _0804FC30
- adds r0, 0x14
- cmp r2, r0
- bcs _0804FC30
- ldr r2, _0804FBA8 @ =gTasks
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r0, 3
- adds r2, r0, r2
- movs r6, 0x8
- ldrsh r0, [r2, r6]
- adds r6, r1, 0
- cmp r0, 0
- bne _0804FC3E
- ldr r1, _0804FBAC @ =0x0000014b
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804FC1C
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _0804FBB0 @ =0x0000028f
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, [r5]
- adds r0, 0x56
- movs r3, 0
- ldrsh r1, [r0, r3]
- ldr r0, _0804FBB4 @ =0x000001f3
- cmp r1, r0
- bgt _0804FBD0
- cmp r2, 0x58
- bls _0804FBC0
- ldr r1, _0804FBB8 @ =gRecvCmds
- ldr r0, _0804FBBC @ =0x00004523
- strh r0, [r1, 0x16]
- b _0804FC02
- .align 2, 0
-_0804FB9C: .4byte gUnknown_03004854
-_0804FBA0: .4byte 0x0000ffff
-_0804FBA4: .4byte gUnknown_08216303
-_0804FBA8: .4byte gTasks
-_0804FBAC: .4byte 0x0000014b
-_0804FBB0: .4byte 0x0000028f
-_0804FBB4: .4byte 0x000001f3
-_0804FBB8: .4byte gRecvCmds
-_0804FBBC: .4byte 0x00004523
-_0804FBC0:
- ldr r1, _0804FBC8 @ =gRecvCmds
- ldr r0, _0804FBCC @ =0x00005432
- strh r0, [r1, 0x16]
- b _0804FC02
- .align 2, 0
-_0804FBC8: .4byte gRecvCmds
-_0804FBCC: .4byte 0x00005432
-_0804FBD0:
- cmp r2, 0x3C
- bls _0804FBE4
- ldr r1, _0804FBDC @ =gRecvCmds
- ldr r0, _0804FBE0 @ =0x00004523
- b _0804FBF4
- .align 2, 0
-_0804FBDC: .4byte gRecvCmds
-_0804FBE0: .4byte 0x00004523
-_0804FBE4:
- adds r0, r2, 0
- subs r0, 0x38
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _0804FBF6
- ldr r1, _0804FC10 @ =gRecvCmds
- ldr r0, _0804FC14 @ =0x00005432
-_0804FBF4:
- strh r0, [r1, 0x16]
-_0804FBF6:
- cmp r2, 0x4
- bhi _0804FC02
- movs r0, 0x3
- movs r1, 0x5
- bl sub_804F890
-_0804FC02:
- ldr r0, _0804FC18 @ =gTasks
- adds r1, r6, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x1
- b _0804FC3C
- .align 2, 0
-_0804FC10: .4byte gRecvCmds
-_0804FC14: .4byte 0x00005432
-_0804FC18: .4byte gTasks
-_0804FC1C:
- ldr r0, _0804FC28 @ =gRecvCmds
- ldr r1, _0804FC2C @ =0x00004523
- strh r1, [r0, 0x16]
- movs r0, 0x1
- strh r0, [r2, 0x8]
- b _0804FC3E
- .align 2, 0
-_0804FC28: .4byte gRecvCmds
-_0804FC2C: .4byte 0x00004523
-_0804FC30:
- ldr r0, _0804FC44 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0
-_0804FC3C:
- strh r0, [r1, 0x8]
-_0804FC3E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FC44: .4byte gTasks
- thumb_func_end sub_804FB1C
-
- thumb_func_start sub_804FC48
-sub_804FC48: @ 804FC48
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r7, r0, 16
- mov r8, r7
- lsls r1, 24
- ldr r0, _0804FCBC @ =gSpriteTemplate_821645C
- ldr r4, _0804FCC0 @ =gUnknown_082162E4
- lsrs r1, 23
- adds r2, r1, r4
- ldrb r6, [r2]
- ldr r5, _0804FCC4 @ =gUnknown_082162CC
- adds r2, r1, r5
- movs r3, 0
- ldrsb r3, [r2, r3]
- lsls r2, r3, 2
- adds r2, r3
- lsls r2, 1
- subs r6, r2
- adds r4, 0x1
- adds r4, r1, r4
- ldrb r2, [r4]
- adds r5, 0x1
- adds r1, r5
- movs r3, 0
- ldrsb r3, [r1, r3]
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 1
- subs r2, r1
- adds r1, r6, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r1, r0, 24
- adds r2, r1, 0
- ldr r0, _0804FCC8 @ =0x00004523
- cmp r7, r0
- bne _0804FCD4
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- ldr r5, _0804FCCC @ =gSprites
- adds r0, r4, r5
- movs r1, 0x2
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _0804FCD0 @ =sub_8051684
- str r0, [r4]
- movs r0, 0x28
- bl PlaySE
- b _0804FD18
- .align 2, 0
-_0804FCBC: .4byte gSpriteTemplate_821645C
-_0804FCC0: .4byte gUnknown_082162E4
-_0804FCC4: .4byte gUnknown_082162CC
-_0804FCC8: .4byte 0x00004523
-_0804FCCC: .4byte gSprites
-_0804FCD0: .4byte sub_8051684
-_0804FCD4:
- ldr r0, _0804FCF4 @ =0x00005432
- cmp r7, r0
- bne _0804FCFC
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804FCF8 @ =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAnim
- movs r0, 0x1F
- bl PlaySE
- b _0804FD18
- .align 2, 0
-_0804FCF4: .4byte 0x00005432
-_0804FCF8: .4byte gSprites
-_0804FCFC:
- ldr r0, _0804FD28 @ =0x00002345
- cmp r8, r0
- bne _0804FD18
- lsls r0, r2, 4
- adds r0, r2
- lsls r0, 2
- ldr r1, _0804FD2C @ =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- movs r0, 0x20
- bl PlaySE
-_0804FD18:
- bl sub_805156C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FD28: .4byte 0x00002345
-_0804FD2C: .4byte gSprites
- thumb_func_end sub_804FC48
-
- thumb_func_start sub_804FD30
-sub_804FD30: @ 804FD30
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r4, r0, 16
- adds r5, r4, 0
- bl sub_804E290
- ldr r0, _0804FD50 @ =0x00004523
- cmp r4, r0
- beq _0804FD64
- cmp r4, r0
- bgt _0804FD58
- ldr r0, _0804FD54 @ =0x00002345
- cmp r4, r0
- beq _0804FE34
- b _0804FE60
- .align 2, 0
-_0804FD50: .4byte 0x00004523
-_0804FD54: .4byte 0x00002345
-_0804FD58:
- ldr r0, _0804FD60 @ =0x00005432
- cmp r5, r0
- beq _0804FDFC
- b _0804FE60
- .align 2, 0
-_0804FD60: .4byte 0x00005432
-_0804FD64:
- ldr r7, _0804FD94 @ =gUnknown_03004854
- ldr r4, [r7]
- adds r5, r4, 0
- adds r5, 0x56
- ldrh r6, [r5]
- movs r0, 0
- ldrsh r1, [r5, r0]
- ldr r0, _0804FD98 @ =0x000005db
- cmp r1, r0
- bgt _0804FDA0
- ldr r1, _0804FD9C @ =gUnknown_082165DA
- adds r0, r4, 0
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0xC0
- lsls r0, 1
- bl __divsi3
- adds r0, r6, r0
- strh r0, [r5]
- b _0804FE60
- .align 2, 0
-_0804FD94: .4byte gUnknown_03004854
-_0804FD98: .4byte 0x000005db
-_0804FD9C: .4byte gUnknown_082165DA
-_0804FDA0:
- ldr r1, _0804FDF8 @ =gUnknown_082165DA
- adds r0, r4, 0
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- bl __divsi3
- adds r0, r6, r0
- strh r0, [r5]
- movs r1, 0xA2
- lsls r1, 1
- adds r4, r1
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- subs r1, 0xA
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8051AC8
- ldr r0, [r7]
- movs r1, 0xA3
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x56
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- subs r1, 0xA
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8051AC8
- b _0804FE60
- .align 2, 0
-_0804FDF8: .4byte gUnknown_082165DA
-_0804FDFC:
- ldr r0, _0804FE28 @ =gUnknown_03004854
- ldr r2, [r0]
- adds r4, r2, 0
- adds r4, 0x56
- ldrh r5, [r4]
- movs r0, 0
- ldrsh r1, [r4, r0]
- ldr r0, _0804FE2C @ =0x000005db
- cmp r1, r0
- bgt _0804FE60
- ldr r1, _0804FE30 @ =gUnknown_082165DA
- adds r0, r2, 0
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- bl __divsi3
- adds r0, r5, r0
- b _0804FE5E
- .align 2, 0
-_0804FE28: .4byte gUnknown_03004854
-_0804FE2C: .4byte 0x000005db
-_0804FE30: .4byte gUnknown_082165DA
-_0804FE34:
- ldr r0, _0804FE68 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r4, r0, 0
- adds r4, 0x56
- ldr r1, _0804FE6C @ =gUnknown_082165DA
- adds r0, 0x88
- ldrb r0, [r0]
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x80
- lsls r0, 1
- bl __divsi3
- ldrh r1, [r4]
- subs r1, r0
- strh r1, [r4]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0x7F
- bgt _0804FE60
- movs r0, 0x80
-_0804FE5E:
- strh r0, [r4]
-_0804FE60:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FE68: .4byte gUnknown_03004854
-_0804FE6C: .4byte gUnknown_082165DA
- thumb_func_end sub_804FD30
-
- thumb_func_start sub_804FE70
-sub_804FE70: @ 804FE70
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _0804FF40 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _0804FEB6
- ldr r3, _0804FF44 @ =gSendCmd
- ldrh r0, [r3, 0x4]
- ldr r2, _0804FF48 @ =gRecvCmds
- cmp r0, 0
- beq _0804FE98
- movs r1, 0
- strh r0, [r2, 0x10]
- ldr r0, _0804FF4C @ =0x00004444
- strh r0, [r2]
- strh r1, [r3, 0x4]
-_0804FE98:
- ldr r0, _0804FF48 @ =gRecvCmds
- ldr r3, _0804FF4C @ =0x00004444
- adds r1, r2, 0x2
- adds r2, r0, 0
- adds r2, 0x12
- movs r6, 0x2
-_0804FEA4:
- ldrh r0, [r2]
- cmp r0, 0
- beq _0804FEAC
- strh r3, [r1]
-_0804FEAC:
- adds r1, 0x2
- adds r2, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _0804FEA4
-_0804FEB6:
- movs r6, 0
- ldr r7, _0804FF50 @ =gUnknown_03004854
- adds r1, r7, 0
- ldr r0, [r1]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- blt _0804FEC8
- b _0805005C
-_0804FEC8:
- movs r2, 0
- str r2, [sp]
- mov r9, r2
- ldr r0, _0804FF48 @ =gRecvCmds
- adds r0, 0x10
- mov r8, r0
- ldr r1, _0804FF54 @ =0x00005432
- mov r10, r1
-_0804FED8:
- ldr r2, [sp]
- ldr r1, _0804FF48 @ =gRecvCmds
- adds r0, r2, r1
- ldrh r1, [r0]
- ldr r0, _0804FF4C @ =0x00004444
- cmp r1, r0
- beq _0804FEE8
- b _0805003E
-_0804FEE8:
- ldr r0, [r7]
- adds r0, 0xA2
- adds r0, r2
- ldrh r5, [r0]
- mov r2, r8
- ldrh r4, [r2]
- ldr r0, _0804FF58 @ =0x00004523
- cmp r4, r0
- bne _0804FF60
- bl sub_804FD30
- ldr r0, [r7]
- movs r1, 0x9F
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x56
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0x37
- bl __divsi3
- ldrh r1, [r4]
- adds r1, r0
- strh r1, [r4]
- lsls r1, 16
- ldr r0, _0804FF5C @ =0x03e70000
- cmp r1, r0
- bls _0804FF26
- movs r0, 0xFA
- lsls r0, 2
- strh r0, [r4]
-_0804FF26:
- lsls r1, r5, 24
- lsrs r1, 24
- ldr r0, _0804FF58 @ =0x00004523
- bl sub_804FC48
- ldr r1, [r7]
- movs r0, 0xA6
- lsls r0, 1
- adds r1, r0
- add r1, r9
- ldrh r0, [r1]
- adds r0, 0x1
- b _0804FFCA
- .align 2, 0
-_0804FF40: .4byte gSpecialVar_0x8004
-_0804FF44: .4byte gSendCmd
-_0804FF48: .4byte gRecvCmds
-_0804FF4C: .4byte 0x00004444
-_0804FF50: .4byte gUnknown_03004854
-_0804FF54: .4byte 0x00005432
-_0804FF58: .4byte 0x00004523
-_0804FF5C: .4byte 0x03e70000
-_0804FF60:
- cmp r4, r10
- bne _0804FF9E
- mov r0, r10
- bl sub_804FD30
- ldr r0, [r7]
- movs r1, 0x9F
- lsls r1, 1
- adds r4, r0, r1
- adds r0, 0x56
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r1, 0x46
- bl __divsi3
- ldrh r1, [r4]
- adds r1, r0
- strh r1, [r4]
- lsls r1, r5, 24
- lsrs r1, 24
- mov r0, r10
- bl sub_804FC48
- ldr r1, [r7]
- movs r0, 0xA7
- lsls r0, 1
- adds r1, r0
- add r1, r9
- ldrh r0, [r1]
- adds r0, 0x1
- b _0804FFCA
-_0804FF9E:
- ldr r0, _08050018 @ =0x00002345
- cmp r4, r0
- bne _0804FFD6
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_804FC48
- adds r0, r4, 0
- bl sub_804FD30
- ldr r0, [r7]
- movs r1, 0xA8
- lsls r1, 1
- adds r0, r1
- mov r2, r9
- adds r1, r0, r2
- ldrh r2, [r1]
- ldr r0, _0805001C @ =0x000003e6
- cmp r2, r0
- bhi _0804FFCC
- adds r0, r2, 0x1
-_0804FFCA:
- strh r0, [r1]
-_0804FFCC:
- mov r0, r8
- ldrh r1, [r0]
- ldr r0, _08050018 @ =0x00002345
- cmp r1, r0
- beq _0804FFE4
-_0804FFD6:
- mov r1, r8
- ldrh r0, [r1]
- ldr r2, _08050020 @ =0x00004523
- cmp r0, r2
- beq _0804FFE4
- cmp r0, r10
- bne _0805003E
-_0804FFE4:
- ldr r0, _08050024 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r2, r0, 0
- adds r2, 0x56
- movs r0, 0
- ldrsh r1, [r2, r0]
- ldr r0, _08050028 @ =0x000005dc
- cmp r1, r0
- ble _08050034
- adds r0, r1, 0
- ldr r2, _0805002C @ =0xfffffd12
- adds r0, r2
- movs r1, 0x14
- bl __divsi3
- adds r1, r0, 0
- movs r0, 0x80
- lsls r0, 1
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r0, _08050030 @ =gMPlay_BGM
- bl m4aMPlayTempoControl
- b _0805003E
- .align 2, 0
-_08050018: .4byte 0x00002345
-_0805001C: .4byte 0x000003e6
-_08050020: .4byte 0x00004523
-_08050024: .4byte gUnknown_03004854
-_08050028: .4byte 0x000005dc
-_0805002C: .4byte 0xfffffd12
-_08050030: .4byte gMPlay_BGM
-_08050034:
- ldr r0, _08050098 @ =gMPlay_BGM
- movs r1, 0x80
- lsls r1, 1
- bl m4aMPlayTempoControl
-_0805003E:
- ldr r1, [sp]
- adds r1, 0x2
- str r1, [sp]
- movs r2, 0x6
- add r9, r2
- movs r0, 0x2
- add r8, r0
- adds r6, 0x1
- ldr r7, _0805009C @ =gUnknown_03004854
- ldr r0, [r7]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- bge _0805005C
- b _0804FED8
-_0805005C:
- ldr r0, _080500A0 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0
- beq _08050088
- movs r6, 0
- ldr r3, _0805009C @ =gUnknown_03004854
- ldr r0, [r3]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- bge _08050088
- movs r2, 0
- ldr r1, _080500A4 @ =gRecvCmds
-_08050076:
- strh r2, [r1]
- strh r2, [r1, 0x10]
- adds r1, 0x2
- adds r6, 0x1
- ldr r0, [r3]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- blt _08050076
-_08050088:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08050098: .4byte gMPlay_BGM
-_0805009C: .4byte gUnknown_03004854
-_080500A0: .4byte gSpecialVar_0x8004
-_080500A4: .4byte gRecvCmds
- thumb_func_end sub_804FE70
-
- thumb_func_start sub_80500A8
-sub_80500A8: @ 80500A8
- push {r4-r6,lr}
- movs r6, 0
- ldr r5, _080500EC @ =gUnknown_03004854
- ldr r4, [r5]
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 23
- adds r4, 0xA2
- adds r4, r0
- ldrb r3, [r4]
- ldr r0, [r5]
- adds r0, 0x6F
- ldrb r0, [r0]
- cmp r0, 0
- bne _0805018A
- ldr r0, _080500F0 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x2
- bne _080500FC
- ldr r2, _080500F4 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805010A
- ldrh r0, [r2, 0x28]
- ldr r1, _080500F8 @ =0x00000201
- bics r1, r0
- negs r0, r1
- orrs r0, r1
- lsrs r6, r0, 31
- b _0805010A
- .align 2, 0
-_080500EC: .4byte gUnknown_03004854
-_080500F0: .4byte gSaveBlock2
-_080500F4: .4byte gMain
-_080500F8: .4byte 0x00000201
-_080500FC:
- ldr r0, _0805015C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805010A
- movs r6, 0x1
-_0805010A:
- cmp r6, 0
- beq _0805018A
- ldr r4, _08050160 @ =gUnknown_03004854
- ldr r1, [r4]
- lsls r2, r3, 1
- adds r0, r1, 0
- adds r0, 0x9A
- adds r0, r2
- adds r1, 0x5C
- ldrh r0, [r0]
- adds r1, r0
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08050164 @ =gSprites
- adds r0, r1
- adds r1, r3, 0x4
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAnim
- ldr r0, [r4]
- adds r0, 0x54
- ldrh r4, [r0]
- bl GetMultiplayerId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl task_tutorial_oak_boy_girl
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08050170
- ldr r1, _08050168 @ =gSendCmd
- ldr r0, _0805016C @ =0x00004523
- b _08050188
- .align 2, 0
-_0805015C: .4byte gMain
-_08050160: .4byte gUnknown_03004854
-_08050164: .4byte gSprites
-_08050168: .4byte gSendCmd
-_0805016C: .4byte 0x00004523
-_08050170:
- cmp r0, 0x1
- bne _08050184
- ldr r1, _0805017C @ =gSendCmd
- ldr r0, _08050180 @ =0x00005432
- b _08050188
- .align 2, 0
-_0805017C: .4byte gSendCmd
-_08050180: .4byte 0x00005432
-_08050184:
- ldr r1, _080501E4 @ =gSendCmd
- ldr r0, _080501E8 @ =0x00002345
-_08050188:
- strh r0, [r1, 0x4]
-_0805018A:
- ldr r2, _080501EC @ =gUnknown_03004854
- ldr r1, [r2]
- adds r1, 0x7E
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x5
- bls _080501BA
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0x56
- ldrh r3, [r1]
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, 0x80
- ble _080501B2
- subs r0, r3, 0x1
- strh r0, [r1]
-_080501B2:
- ldr r0, [r2]
- adds r0, 0x7E
- movs r1, 0
- strb r1, [r0]
-_080501BA:
- ldr r0, _080501F0 @ =gUnknown_020297ED
- ldrb r0, [r0]
- cmp r0, 0
- beq _080501DE
- ldr r0, _080501F4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _080501DE
- ldr r0, [r2]
- ldr r1, _080501F8 @ =0x0000014b
- adds r2, r0, r1
- ldrb r0, [r2]
- movs r1, 0x1
- eors r0, r1
- strb r0, [r2]
-_080501DE:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080501E4: .4byte gSendCmd
-_080501E8: .4byte 0x00002345
-_080501EC: .4byte gUnknown_03004854
-_080501F0: .4byte gUnknown_020297ED
-_080501F4: .4byte gMain
-_080501F8: .4byte 0x0000014b
- thumb_func_end sub_80500A8
-
- thumb_func_start sub_80501FC
-sub_80501FC: @ 80501FC
- push {r4-r6,lr}
- bl sub_8051474
- ldr r4, _08050294 @ =gUnknown_03004854
- ldr r0, [r4]
- movs r1, 0x96
- lsls r1, 1
- adds r2, r0, r1
- ldr r1, [r2]
- ldr r0, _08050298 @ =0x00057e03
- cmp r1, r0
- bhi _08050218
- adds r0, r1, 0x1
- str r0, [r2]
-_08050218:
- bl sub_80500A8
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x56
- ldrh r0, [r0]
- movs r5, 0x9F
- lsls r5, 1
- adds r1, r5
- ldrh r1, [r1]
- bl SetLinkDebugValues
- bl sub_804FE70
- ldr r0, [r4]
- adds r0, r5
- ldrh r0, [r0]
- movs r6, 0xFA
- lsls r6, 2
- adds r1, r6, 0
- bl sub_805194C
- ldr r0, [r4]
- adds r0, 0x56
- ldrh r0, [r0]
- bl sub_8051A3C
- bl sub_8051B18
- bl sub_805123C
- ldr r2, [r4]
- adds r3, r2, 0
- adds r3, 0x6F
- ldrb r0, [r3]
- cmp r0, 0
- bne _0805027E
- movs r1, 0xA0
- lsls r1, 1
- adds r0, r2, r1
- ldrh r1, [r0]
- ldr r0, _0805029C @ =0x000003e7
- cmp r1, r0
- bls _0805027E
- adds r0, r2, r5
- strh r6, [r0]
- movs r0, 0x1
- strb r0, [r3]
- ldr r0, _080502A0 @ =sub_8050954
- bl SetMainCallback2
-_0805027E:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08050294: .4byte gUnknown_03004854
-_08050298: .4byte 0x00057e03
-_0805029C: .4byte 0x000003e7
-_080502A0: .4byte sub_8050954
- thumb_func_end sub_80501FC
-
- thumb_func_start help_system_is_not_first_time
-help_system_is_not_first_time: @ 80502A4
- push {r4,r5,lr}
- lsls r1, 24
- lsls r2, 24
- lsrs r1, 20
- adds r4, r1, r0
- lsrs r2, 20
- adds r5, r2, r0
- ldrh r0, [r4]
- ldrh r1, [r5]
- cmp r0, r1
- bne _080502E2
- adds r0, r4, 0x2
- adds r1, r5, 0x2
- bl StringCompare
- cmp r0, 0
- bne _080502F0
- ldr r0, [r4, 0x8]
- ldr r2, _080502E8 @ =0xffffff00
- ands r0, r2
- ldr r1, [r5, 0x8]
- ands r1, r2
- cmp r0, r1
- bne _080502F0
- ldr r0, [r4, 0xC]
- ldr r2, _080502EC @ =0x00ffffff
- ands r0, r2
- ldr r1, [r5, 0xC]
- ands r1, r2
- cmp r0, r1
- bne _080502F0
-_080502E2:
- movs r0, 0x1
- b _080502F2
- .align 2, 0
-_080502E8: .4byte 0xffffff00
-_080502EC: .4byte 0x00ffffff
-_080502F0:
- movs r0, 0
-_080502F2:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end help_system_is_not_first_time
-
- thumb_func_start sub_80502F8
-sub_80502F8: @ 80502F8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- mov r10, r0
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- mov r2, sp
- movs r4, 0x5
-_08050314:
- ldrh r0, [r1]
- strh r0, [r2]
- adds r1, 0x2
- adds r2, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _08050314
- movs r6, 0
- mov r1, sp
- movs r4, 0x4
-_08050328:
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _08050332
- adds r6, 0x1
-_08050332:
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _08050328
- cmp r6, 0x5
- beq _08050386
- cmp r3, 0x3
- bhi _08050386
- movs r4, 0
- ldr r3, [sp, 0x10]
- cmp r4, r3
- bge _0805039E
- mov r3, r10
-_0805034C:
- movs r6, 0
- ldr r7, [sp, 0x10]
- cmp r6, r7
- bge _08050394
- mov r9, r3
- mov r5, r10
- lsls r0, r4, 24
- mov r8, r0
-_0805035C:
- mov r1, r9
- ldrh r0, [r1]
- ldrh r2, [r5]
- cmp r0, r2
- bne _0805038A
- cmp r4, r6
- beq _0805038A
- cmp r0, 0xAF
- bne _08050386
- lsls r2, r6, 24
- lsrs r2, 24
- mov r0, r10
- mov r7, r8
- lsrs r1, r7, 24
- str r3, [sp, 0xC]
- bl help_system_is_not_first_time
- lsls r0, 24
- ldr r3, [sp, 0xC]
- cmp r0, 0
- beq _0805038A
-_08050386:
- movs r0, 0xC
- b _080504DE
-_0805038A:
- adds r5, 0x10
- adds r6, 0x1
- ldr r0, [sp, 0x10]
- cmp r6, r0
- blt _0805035C
-_08050394:
- adds r3, 0x10
- adds r4, 0x1
- ldr r1, [sp, 0x10]
- cmp r4, r1
- blt _0805034C
-_0805039E:
- movs r2, 0
- mov r1, sp
- movs r4, 0x4
-_080503A4:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _080503B2
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
-_080503B2:
- adds r1, 0x2
- subs r4, 0x1
- cmp r4, 0
- bge _080503A4
- cmp r2, 0x3
- bls _080503C2
- movs r0, 0xD
- b _080504DE
-_080503C2:
- cmp r2, 0x3
- bne _080503CA
- movs r0, 0xB
- b _080504DE
-_080503CA:
- movs r4, 0
- mov r1, sp
-_080503CE:
- movs r7, 0
- ldrsh r0, [r1, r7]
- cmp r0, 0x32
- ble _080503D8
- b _080504D8
-_080503D8:
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x4
- ble _080503CE
- cmp r2, 0x1
- bne _0805042A
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- ble _080503F2
- movs r0, 0x1
- b _080504DE
-_080503F2:
- mov r0, sp
- ldrh r0, [r0, 0x2]
- lsls r0, 16
- cmp r0, 0
- ble _08050400
- movs r0, 0x2
- b _080504DE
-_08050400:
- mov r0, sp
- movs r3, 0x4
- ldrsh r0, [r0, r3]
- cmp r0, 0
- ble _0805040E
- movs r0, 0x3
- b _080504DE
-_0805040E:
- mov r0, sp
- movs r4, 0x6
- ldrsh r0, [r0, r4]
- cmp r0, 0
- ble _0805041C
- movs r0, 0x4
- b _080504DE
-_0805041C:
- mov r0, sp
- movs r7, 0x8
- ldrsh r0, [r0, r7]
- cmp r0, 0
- ble _0805042A
- movs r0, 0x5
- b _080504DE
-_0805042A:
- cmp r2, 0x2
- bne _080504DC
- movs r4, 0
- ldr r5, _08050474 @ =gUnknown_03000520
- mov r1, sp
- adds r2, r5, 0
-_08050436:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08050442
- strh r4, [r2]
- adds r2, 0x2
-_08050442:
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x4
- ble _08050436
- movs r4, 0
- ldrsh r3, [r5, r4]
- lsls r0, r3, 1
- mov r7, sp
- adds r1, r7, r0
- movs r0, 0x2
- ldrsh r2, [r5, r0]
- lsls r0, r2, 1
- add r0, sp
- movs r4, 0
- ldrsh r1, [r1, r4]
- movs r7, 0
- ldrsh r0, [r0, r7]
- cmp r1, r0
- blt _08050498
- adds r0, r3, 0
- cmp r0, 0
- bne _08050478
- lsls r0, r2, 16
- b _080504A2
- .align 2, 0
-_08050474: .4byte gUnknown_03000520
-_08050478:
- cmp r0, 0x1
- bne _08050480
- lsls r0, r2, 16
- b _080504AE
-_08050480:
- cmp r0, 0x2
- bne _08050488
- lsls r0, r2, 16
- b _080504BA
-_08050488:
- cmp r0, 0x3
- bne _08050490
- lsls r0, r2, 16
- b _080504C6
-_08050490:
- cmp r0, 0x4
- bne _080504DC
- lsls r0, r2, 16
- b _080504D2
-_08050498:
- movs r2, 0x2
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bne _080504A8
- lsls r0, r3, 16
-_080504A2:
- movs r1, 0x6
- orrs r0, r1
- b _080504DE
-_080504A8:
- cmp r0, 0x1
- bne _080504B4
- lsls r0, r3, 16
-_080504AE:
- movs r1, 0x7
- orrs r0, r1
- b _080504DE
-_080504B4:
- cmp r0, 0x2
- bne _080504C0
- lsls r0, r3, 16
-_080504BA:
- movs r1, 0x8
- orrs r0, r1
- b _080504DE
-_080504C0:
- cmp r0, 0x3
- bne _080504CC
- lsls r0, r3, 16
-_080504C6:
- movs r1, 0x9
- orrs r0, r1
- b _080504DE
-_080504CC:
- cmp r0, 0x4
- bne _080504DC
- lsls r0, r3, 16
-_080504D2:
- movs r1, 0xA
- orrs r0, r1
- b _080504DE
-_080504D8:
- movs r0, 0xE
- b _080504DE
-_080504DC:
- movs r0, 0
-_080504DE:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80502F8
-
- thumb_func_start sub_80504F0
-sub_80504F0: @ 80504F0
- ldr r1, _080504F8 @ =gUnknown_0300052C
- strh r0, [r1]
- bx lr
- .align 2, 0
-_080504F8: .4byte gUnknown_0300052C
- thumb_func_end sub_80504F0
-
- thumb_func_start unref_sub_80504FC
-unref_sub_80504FC: @ 80504FC
- ldr r0, _08050504 @ =gUnknown_0300052C
- movs r1, 0
- ldrsh r0, [r0, r1]
- bx lr
- .align 2, 0
-_08050504: .4byte gUnknown_0300052C
- thumb_func_end unref_sub_80504FC
-
- thumb_func_start sub_8050508
-sub_8050508: @ 8050508
- ldr r1, _08050510 @ =gUnknown_0300052E
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08050510: .4byte gUnknown_0300052E
- thumb_func_end sub_8050508
-
- thumb_func_start unref_sub_8050514
-unref_sub_8050514: @ 8050514
- ldr r0, _0805051C @ =gUnknown_0300052E
- movs r1, 0
- ldrsh r0, [r0, r1]
- bx lr
- .align 2, 0
-_0805051C: .4byte gUnknown_0300052E
- thumb_func_end unref_sub_8050514
-
- thumb_func_start sub_8050520
-sub_8050520: @ 8050520
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- str r0, [sp]
- mov r8, r1
- str r3, [sp, 0x4]
- ldr r0, [sp, 0x30]
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp, 0x8]
- ldr r7, _080505DC @ =gUnknown_03000510
- adds r2, r7, 0
- movs r1, 0
- adds r0, r7, 0
- adds r0, 0xA
-_0805054A:
- strh r1, [r0]
- subs r0, 0x2
- cmp r0, r2
- bge _0805054A
- movs r6, 0
- cmp r6, r9
- bge _08050580
- ldr r0, _080505DC @ =gUnknown_03000510
- mov r12, r0
- ldr r5, [sp]
- adds r5, 0x9
-_08050560:
- movs r3, 0
- adds r4, r5, 0
- mov r2, r12
-_08050566:
- adds r1, r4, r3
- ldrh r0, [r2]
- ldrb r1, [r1]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x5
- ble _08050566
- adds r5, 0x10
- adds r6, 0x1
- cmp r6, r9
- blt _08050560
-_08050580:
- movs r1, 0
- ldrsh r3, [r7, r1]
- ldrh r0, [r7]
- ldrh r1, [r7, 0x2]
- subs r0, r1
- strh r0, [r7]
- ldrh r0, [r7, 0x4]
- subs r1, r0
- strh r1, [r7, 0x2]
- ldrh r1, [r7, 0x6]
- subs r0, r1
- strh r0, [r7, 0x4]
- ldrh r0, [r7, 0x8]
- subs r1, r0
- strh r1, [r7, 0x6]
- subs r0, r3
- strh r0, [r7, 0x8]
- movs r3, 0
- movs r2, 0
- adds r1, r7, 0
- movs r6, 0x4
-_080505AA:
- movs r4, 0
- ldrsh r0, [r1, r4]
- cmp r0, 0
- bge _080505B6
- strh r2, [r1]
- adds r3, 0x1
-_080505B6:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080505AA
- lsls r0, r3, 24
- lsrs r0, 24
- mov r10, r0
- movs r4, 0
- ldr r1, _080505DC @ =gUnknown_03000510
- movs r6, 0x4
-_080505CA:
- ldrh r2, [r1]
- movs r5, 0
- ldrsh r0, [r1, r5]
- cmp r0, 0
- ble _080505E4
- cmp r0, r3
- bge _080505E0
- strh r4, [r1]
- b _080505E4
- .align 2, 0
-_080505DC: .4byte gUnknown_03000510
-_080505E0:
- subs r0, r2, r3
- strh r0, [r1]
-_080505E4:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080505CA
- ldr r1, _080506C4 @ =gUnknown_03000510
- ldr r2, _080506C8 @ =gUnknown_03000530
- movs r6, 0x4
-_080505F2:
- movs r3, 0
- ldrsh r0, [r1, r3]
- stm r2!, {r0}
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080505F2
- ldr r1, _080506CC @ =0x0000014d
- ldr r0, [sp, 0x8]
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 16
- adds r3, r0, 0
- adds r3, 0x64
- ldr r4, _080506D0 @ =gUnknown_0300055C
- str r3, [r4]
- movs r6, 0x4
-_08050616:
- movs r0, 0
- ldrsh r5, [r7, r0]
- adds r0, r5, 0
- muls r0, r3
- movs r1, 0xA
- str r3, [sp, 0xC]
- bl __divsi3
- adds r5, r0, 0
- movs r1, 0xA
- bl __modsi3
- adds r4, r0, 0
- adds r0, r5, 0
- movs r1, 0xA
- bl __divsi3
- adds r5, r0, 0
- ldr r3, [sp, 0xC]
- cmp r4, 0x4
- ble _08050642
- adds r5, 0x1
-_08050642:
- strh r5, [r7]
- adds r7, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08050616
- ldr r1, _080506C4 @ =gUnknown_03000510
- ldr r2, _080506D4 @ =gUnknown_03000548
- movs r6, 0x4
-_08050652:
- movs r3, 0
- ldrsh r0, [r1, r3]
- stm r2!, {r0}
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _08050652
- ldr r4, _080506C4 @ =gUnknown_03000510
- ldr r0, [sp]
- adds r1, r4, 0
- mov r2, r9
- mov r3, r10
- bl sub_80502F8
- mov r5, r8
- strb r0, [r5]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- mov r1, r9
- bl __divsi3
- mov r3, r9
- subs r0, r3
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bge _0805068C
- movs r0, 0
- strh r0, [r4, 0xA]
-_0805068C:
- mov r5, r8
- ldrb r0, [r5]
- cmp r0, 0xC
- bne _080506E6
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- lsrs r3, r0, 16
- movs r6, 0
- ldr r0, _080506D8 @ =gUnknown_082165DF
- adds r0, r3, r0
- ldrb r0, [r0]
- adds r1, r4, 0
- movs r4, 0x1
- movs r3, 0x2
-_080506B4:
- adds r2, r0, 0
- asrs r2, r6
- ands r2, r4
- cmp r2, 0
- beq _080506DC
- strh r3, [r1]
- b _080506DE
- .align 2, 0
-_080506C4: .4byte gUnknown_03000510
-_080506C8: .4byte gUnknown_03000530
-_080506CC: .4byte 0x0000014d
-_080506D0: .4byte gUnknown_0300055C
-_080506D4: .4byte gUnknown_03000548
-_080506D8: .4byte gUnknown_082165DF
-_080506DC:
- strh r2, [r1]
-_080506DE:
- adds r1, 0x2
- adds r6, 0x1
- cmp r6, 0x4
- ble _080506B4
-_080506E6:
- ldr r7, _08050740 @ =gUnknown_03000510
- movs r2, 0xFF
- adds r1, r7, 0
- movs r6, 0x5
-_080506EE:
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0xFF
- ble _080506F8
- strh r2, [r1]
-_080506F8:
- adds r1, 0x2
- subs r6, 0x1
- cmp r6, 0
- bge _080506EE
- ldrh r0, [r7]
- mov r4, r8
- strb r0, [r4, 0x1]
- ldrh r0, [r7, 0x2]
- strb r0, [r4, 0x2]
- ldrh r0, [r7, 0x4]
- strb r0, [r4, 0x3]
- ldrh r0, [r7, 0x6]
- strb r0, [r4, 0x4]
- ldrh r0, [r7, 0x8]
- strb r0, [r4, 0x5]
- ldrh r0, [r7, 0xA]
- strb r0, [r4, 0x6]
- movs r6, 0
- adds r2, r7, 0
-_0805071E:
- ldr r5, [sp, 0x4]
- adds r1, r5, r6
- ldrh r0, [r2]
- strb r0, [r1]
- adds r2, 0x2
- adds r6, 0x1
- cmp r6, 0x5
- ble _0805071E
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08050740: .4byte gUnknown_03000510
- thumb_func_end sub_8050520
-
- thumb_func_start sub_8050744
-sub_8050744: @ 8050744
- push {r4,lr}
- sub sp, 0x4
- ldr r4, [sp, 0xC]
- lsls r2, 24
- lsrs r2, 24
- lsls r4, 16
- lsrs r4, 16
- str r4, [sp]
- bl sub_8050520
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8050744
-
- thumb_func_start sub_8050760
-sub_8050760: @ 8050760
- push {r4-r6,lr}
- ldr r0, _08050780 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r2, 0x96
- lsls r2, 1
- adds r1, r0, r2
- ldrh r1, [r1]
- adds r0, 0x5A
- ldrh r4, [r0]
- movs r2, 0
- ldr r5, _08050784 @ =0x00000383
- cmp r1, r5
- bhi _08050788
- movs r2, 0x5
- b _080507DA
- .align 2, 0
-_08050780: .4byte gUnknown_03004854
-_08050784: .4byte 0x00000383
-_08050788:
- ldr r3, _0805079C @ =0xfffffc7c
- adds r0, r1, r3
- lsls r0, 16
- lsrs r0, 16
- ldr r3, _080507A0 @ =0x00000257
- cmp r0, r3
- bhi _080507A4
- movs r2, 0x4
- b _080507DA
- .align 2, 0
-_0805079C: .4byte 0xfffffc7c
-_080507A0: .4byte 0x00000257
-_080507A4:
- ldr r6, _080507B4 @ =0xfffffa24
- adds r0, r1, r6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r3
- bhi _080507B8
- movs r2, 0x3
- b _080507DA
- .align 2, 0
-_080507B4: .4byte 0xfffffa24
-_080507B8:
- ldr r3, _080507C8 @ =0xfffff7cc
- adds r0, r1, r3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r5
- bhi _080507CC
- movs r2, 0x2
- b _080507DA
- .align 2, 0
-_080507C8: .4byte 0xfffff7cc
-_080507CC:
- ldr r6, _080507F8 @ =0xfffff31c
- adds r0, r1, r6
- lsls r0, 16
- ldr r1, _080507FC @ =0x012b0000
- cmp r0, r1
- bhi _080507DA
- movs r2, 0x1
-_080507DA:
- lsls r0, r2, 16
- asrs r0, 16
- bl sub_8050508
- movs r2, 0
- cmp r4, 0x40
- bhi _080508BC
- adds r0, r4, 0
- subs r0, 0x32
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050804
- ldr r2, _08050800 @ =0x0000ffff
- b _080508BC
- .align 2, 0
-_080507F8: .4byte 0xfffff31c
-_080507FC: .4byte 0x012b0000
-_08050800: .4byte 0x0000ffff
-_08050804:
- adds r0, r4, 0
- subs r0, 0x64
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050818
- ldr r2, _08050814 @ =0x0000fffe
- b _080508BC
- .align 2, 0
-_08050814: .4byte 0x0000fffe
-_08050818:
- adds r0, r4, 0
- subs r0, 0x96
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _0805082C
- ldr r2, _08050828 @ =0x0000fffd
- b _080508BC
- .align 2, 0
-_08050828: .4byte 0x0000fffd
-_0805082C:
- adds r0, r4, 0
- subs r0, 0xC8
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050840
- ldr r2, _0805083C @ =0x0000fffc
- b _080508BC
- .align 2, 0
-_0805083C: .4byte 0x0000fffc
-_08050840:
- adds r0, r4, 0
- subs r0, 0xFA
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050854
- ldr r2, _08050850 @ =0x0000fffb
- b _080508BC
- .align 2, 0
-_08050850: .4byte 0x0000fffb
-_08050854:
- ldr r1, _08050864 @ =0xfffffea2
- adds r0, r4, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _0805086C
- ldr r2, _08050868 @ =0x0000fffa
- b _080508BC
- .align 2, 0
-_08050864: .4byte 0xfffffea2
-_08050868: .4byte 0x0000fffa
-_0805086C:
- ldr r3, _0805087C @ =0xfffffe70
- adds r0, r4, r3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _08050884
- ldr r2, _08050880 @ =0x0000fff9
- b _080508BC
- .align 2, 0
-_0805087C: .4byte 0xfffffe70
-_08050880: .4byte 0x0000fff9
-_08050884:
- ldr r6, _08050894 @ =0xfffffe0c
- adds r0, r4, r6
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _0805089C
- ldr r2, _08050898 @ =0x0000fff8
- b _080508BC
- .align 2, 0
-_08050894: .4byte 0xfffffe0c
-_08050898: .4byte 0x0000fff8
-_0805089C:
- ldr r1, _080508AC @ =0xfffffdda
- adds r0, r4, r1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x31
- bhi _080508B4
- ldr r2, _080508B0 @ =0x0000fff7
- b _080508BC
- .align 2, 0
-_080508AC: .4byte 0xfffffdda
-_080508B0: .4byte 0x0000fff7
-_080508B4:
- ldr r0, _080508CC @ =0x00000257
- cmp r4, r0
- bls _080508BC
- ldr r2, _080508D0 @ =0x0000fff6
-_080508BC:
- lsls r0, r2, 16
- asrs r0, 16
- bl sub_80504F0
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080508CC: .4byte 0x00000257
-_080508D0: .4byte 0x0000fff6
- thumb_func_end sub_8050760
-
- thumb_func_start sub_80508D4
-sub_80508D4: @ 80508D4
- push {lr}
- ldr r2, _080508F8 @ =gUnknown_03004854
- ldr r1, [r2]
- adds r1, 0xAA
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0xAA
- ldrb r1, [r0]
- lsls r1, 28
- movs r0, 0x90
- lsls r0, 23
- adds r1, r0
- lsrs r1, 24
- movs r0, 0xC0
- bl sub_814A880
- pop {r0}
- bx r0
- .align 2, 0
-_080508F8: .4byte gUnknown_03004854
- thumb_func_end sub_80508D4
-
- thumb_func_start sub_80508FC
-sub_80508FC: @ 80508FC
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _08050944 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0xAA
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuDrawTextWindow
- ldr r1, _08050948 @ =0x0000ffff
- ldr r3, _0805094C @ =0x00002d9f
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0
- movs r2, 0xC
- bl sub_814A5C0
- ldr r0, _08050950 @ =gOtherText_YesNoTerminating
- movs r1, 0x18
- movs r2, 0x9
- bl MenuPrint
- ldr r0, [r4]
- adds r0, 0xAA
- ldrb r0, [r0]
- bl sub_80508D4
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08050944: .4byte gUnknown_03004854
-_08050948: .4byte 0x0000ffff
-_0805094C: .4byte 0x00002d9f
-_08050950: .4byte gOtherText_YesNoTerminating
- thumb_func_end sub_80508FC
-
- thumb_func_start sub_8050954
-sub_8050954: @ 8050954
- push {r4-r7,lr}
- bl sub_8051474
- bl GetMultiplayerId
- ldr r0, _08050978 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x6F
- ldrb r0, [r0]
- subs r0, 0x1
- cmp r0, 0xC
- bls _0805096E
- b _08050CB6
-_0805096E:
- lsls r0, 2
- ldr r1, _0805097C @ =_08050980
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050978: .4byte gUnknown_03004854
-_0805097C: .4byte _08050980
- .align 2, 0
-_08050980:
- .4byte _080509B4
- .4byte _080509F8
- .4byte _08050A4C
- .4byte _08050A94
- .4byte _08050AD0
- .4byte _08050ADE
- .4byte _08050B08
- .4byte _08050B34
- .4byte _08050B42
- .4byte _08050B58
- .4byte _08050BE0
- .4byte _08050C64
- .4byte _08050C98
-_080509B4:
- bl ClearLinkCallback
- ldr r0, _080509C8 @ =gMPlay_BGM
- movs r1, 0x80
- lsls r1, 1
- bl m4aMPlayTempoControl
- movs r4, 0
- b _080509E4
- .align 2, 0
-_080509C8: .4byte gMPlay_BGM
-_080509CC:
- ldr r0, _080509F0 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r1, 0xA4
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrb r0, [r0]
- bl DestroyTask
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080509E4:
- ldr r0, _080509F4 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- bcc _080509CC
- b _08050C82
- .align 2, 0
-_080509F0: .4byte gUnknown_03004854
-_080509F4: .4byte gSpecialVar_0x8004
-_080509F8:
- ldr r1, _08050A24 @ =gUnknown_03004854
- ldr r3, [r1]
- adds r2, r3, 0
- adds r2, 0x56
- ldrh r0, [r2]
- subs r0, 0x20
- strh r0, [r2]
- lsls r0, 16
- adds r4, r1, 0
- cmp r0, 0
- bgt _08050A40
- movs r0, 0
- strh r0, [r2]
- ldr r0, _08050A28 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050A2C
- adds r1, r3, 0
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- b _08050A32
- .align 2, 0
-_08050A24: .4byte gUnknown_03004854
-_08050A28: .4byte gReceivedRemoteLinkPlayers
-_08050A2C:
- adds r1, r3, 0
- adds r1, 0x6F
- movs r0, 0x5
-_08050A32:
- strb r0, [r1]
- ldr r0, [r4]
- movs r1, 0
- strb r1, [r0]
- ldr r0, _08050A48 @ =gMPlay_SE2
- bl m4aMPlayStop
-_08050A40:
- bl sub_804E290
- b _08050CB6
- .align 2, 0
-_08050A48: .4byte gMPlay_SE2
-_08050A4C:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _08050A58
- b _08050C82
-_08050A58:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _08050A64
- b _08050CB6
-_08050A64:
- ldr r4, _08050A90 @ =gUnknown_03004854
- ldr r3, [r4]
- movs r2, 0xDE
- lsls r2, 1
- adds r1, r3, r2
- movs r5, 0x96
- lsls r5, 1
- adds r0, r3, r5
- ldr r0, [r0]
- str r0, [r1]
- adds r0, r3, 0
- adds r0, 0x5A
- ldrh r2, [r0]
- adds r5, 0x94
- adds r0, r3, r5
- strh r2, [r0]
- movs r0, 0
- movs r2, 0x28
- bl SendBlock
- ldr r1, [r4]
- b _08050C86
- .align 2, 0
-_08050A90: .4byte gUnknown_03004854
-_08050A94:
- bl GetBlockReceivedStatus
- lsls r0, 24
- cmp r0, 0
- bne _08050AA0
- b _08050CB6
-_08050AA0:
- ldr r2, _08050AC8 @ =gBlockRecvBuffer
- ldr r0, _08050ACC @ =gUnknown_03004854
- ldr r3, [r0]
- ldrh r0, [r2, 0x4]
- adds r1, r3, 0
- adds r1, 0x5A
- strh r0, [r1]
- movs r0, 0x96
- lsls r0, 1
- adds r1, r3, r0
- ldr r0, [r2]
- str r0, [r1]
- adds r1, r3, 0
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl ResetBlockReceivedFlags
- b _08050CB6
- .align 2, 0
-_08050AC8: .4byte gBlockRecvBuffer
-_08050ACC: .4byte gUnknown_03004854
-_08050AD0:
- bl sub_8052228
- lsls r0, 24
- cmp r0, 0
- bne _08050ADC
- b _08050CB6
-_08050ADC:
- b _08050C82
-_08050ADE:
- bl sub_8051C58
- lsls r0, 24
- cmp r0, 0
- bne _08050AEA
- b _08050CB6
-_08050AEA:
- ldr r0, _08050AFC @ =gUnknown_03004834
- ldrb r0, [r0]
- cmp r0, 0
- bne _08050B00
- movs r0, 0x22
- bl IncrementGameStat
- b _08050C82
- .align 2, 0
-_08050AFC: .4byte gUnknown_03004834
-_08050B00:
- movs r0, 0x21
- bl IncrementGameStat
- b _08050C82
-_08050B08:
- ldr r0, _08050B2C @ =gUnknown_03004854
- ldr r1, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08050B30 @ =gOtherText_BlendAnotherBerryPrompt
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _08050CB6
- .align 2, 0
-_08050B2C: .4byte gUnknown_03004854
-_08050B30: .4byte gOtherText_BlendAnotherBerryPrompt
-_08050B34:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08050B40
- b _08050CB6
-_08050B40:
- b _08050C82
-_08050B42:
- ldr r4, _08050B54 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0xAA
- movs r1, 0
- strb r1, [r0]
- bl sub_80508FC
- ldr r1, [r4]
- b _08050C86
- .align 2, 0
-_08050B54: .4byte gUnknown_03004854
-_08050B58:
- ldr r0, _08050B80 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08050B88
- ldr r0, _08050B84 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0xAA
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050B76
- movs r0, 0x5
- bl PlaySE
-_08050B76:
- movs r0, 0
- bl sub_80508D4
- b _08050CB6
- .align 2, 0
-_08050B80: .4byte gMain
-_08050B84: .4byte gUnknown_03004854
-_08050B88:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08050BA8
- ldr r0, _08050BA4 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0xAA
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08050BD4
- movs r0, 0x5
- bl PlaySE
- b _08050BD4
- .align 2, 0
-_08050BA4: .4byte gUnknown_03004854
-_08050BA8:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08050BB8
- movs r0, 0x5
- bl PlaySE
- b _08050C82
-_08050BB8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08050BC2
- b _08050CB6
-_08050BC2:
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08050BDC @ =gUnknown_03004854
- ldr r1, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08050BD4:
- movs r0, 0x1
- bl sub_80508D4
- b _08050CB6
- .align 2, 0
-_08050BDC: .4byte gUnknown_03004854
-_08050BE0:
- ldr r6, _08050C10 @ =gSendCmd
- movs r7, 0
- ldr r0, _08050C14 @ =0x00002fff
- strh r0, [r6]
- ldr r4, _08050C18 @ =gUnknown_03004854
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0xAA
- ldrb r5, [r0]
- cmp r5, 0
- bne _08050C50
- movs r0, 0x4
- bl IsBagPocketNonEmpty
- lsls r0, 24
- cmp r0, 0
- bne _08050C20
- ldr r0, [r4]
- adds r0, 0x7C
- movs r1, 0x2
- strh r1, [r0]
- ldr r0, _08050C1C @ =0x00009999
- b _08050C48
- .align 2, 0
-_08050C10: .4byte gSendCmd
-_08050C14: .4byte 0x00002fff
-_08050C18: .4byte gUnknown_03004854
-_08050C1C: .4byte 0x00009999
-_08050C20:
- bl sub_810CA00
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- bne _08050C40
- ldr r0, [r4]
- adds r0, 0x7C
- movs r1, 0x3
- strh r1, [r0]
- ldr r0, _08050C3C @ =0x0000aaaa
- b _08050C48
- .align 2, 0
-_08050C3C: .4byte 0x0000aaaa
-_08050C40:
- ldr r0, [r4]
- adds r0, 0x7C
- strh r5, [r0]
- ldr r0, _08050C4C @ =0x00007779
-_08050C48:
- strh r0, [r6, 0x2]
- b _08050C82
- .align 2, 0
-_08050C4C: .4byte 0x00007779
-_08050C50:
- adds r1, r2, 0
- adds r1, 0x7C
- movs r0, 0x1
- strh r0, [r1]
- ldr r0, _08050C60 @ =0x00008888
- strh r0, [r6, 0x2]
- subs r1, 0xD
- b _08050C88
- .align 2, 0
-_08050C60: .4byte 0x00008888
-_08050C64:
- ldr r0, _08050C70 @ =gUnknown_03004834
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050C78
- ldr r0, _08050C74 @ =sub_80510E8
- b _08050CA4
- .align 2, 0
-_08050C70: .4byte gUnknown_03004834
-_08050C74: .4byte sub_80510E8
-_08050C78:
- ldr r0, _08050C90 @ =gOtherText_LinkStandby3
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
-_08050C82:
- ldr r0, _08050C94 @ =gUnknown_03004854
- ldr r1, [r0]
-_08050C86:
- adds r1, 0x6F
-_08050C88:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08050CB6
- .align 2, 0
-_08050C90: .4byte gOtherText_LinkStandby3
-_08050C94: .4byte gUnknown_03004854
-_08050C98:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _08050CB6
- ldr r0, _08050CE0 @ =sub_8050E30
-_08050CA4:
- bl SetMainCallback2
- ldr r2, _08050CE4 @ =gUnknown_03004854
- ldr r0, [r2]
- adds r0, 0x6F
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0]
-_08050CB6:
- bl sub_8051B18
- ldr r0, _08050CE4 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x56
- ldrh r0, [r0]
- bl sub_8051A3C
- bl sub_805123C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08050CE0: .4byte sub_8050E30
-_08050CE4: .4byte gUnknown_03004854
- thumb_func_end sub_8050954
-
- thumb_func_start sub_8050CE8
-sub_8050CE8: @ 8050CE8
- push {r4,lr}
- ldr r1, _08050D08 @ =gUnknown_03004854
- ldr r0, [r1]
- movs r2, 0xE2
- lsls r2, 1
- adds r0, r2
- ldr r0, [r0]
- adds r4, r1, 0
- cmp r0, 0x6
- bls _08050CFE
- b _08050E28
-_08050CFE:
- lsls r0, 2
- ldr r1, _08050D0C @ =_08050D10
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050D08: .4byte gUnknown_03004854
-_08050D0C: .4byte _08050D10
- .align 2, 0
-_08050D10:
- .4byte _08050D2C
- .4byte _08050D44
- .4byte _08050D70
- .4byte _08050D80
- .4byte _08050DA6
- .4byte _08050DEC
- .4byte _08050E06
-_08050D2C:
- bl sub_80084A4
- ldr r0, _08050D40 @ =gUnknown_03004854
- ldr r2, [r0]
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r2, r3
- movs r0, 0x1
- b _08050DF8
- .align 2, 0
-_08050D40: .4byte gUnknown_03004854
-_08050D44:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08050E28
- ldr r0, _08050D68 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r2, 0xE2
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- ldr r1, _08050D6C @ =gSoftResetDisabled
- movs r0, 0x1
- strb r0, [r1]
- b _08050E28
- .align 2, 0
-_08050D68: .4byte gUnknown_03004854
-_08050D6C: .4byte gSoftResetDisabled
-_08050D70:
- bl sub_8125E2C
- ldr r0, _08050D7C @ =gUnknown_03004854
- ldr r2, [r0]
- b _08050DEE
- .align 2, 0
-_08050D7C: .4byte gUnknown_03004854
-_08050D80:
- ldr r1, [r4]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0xA
- bne _08050E28
- bl sub_80084A4
- ldr r1, [r4]
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r3
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- b _08050E28
-_08050DA6:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08050E28
- bl sub_8125E6C
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- beq _08050DD0
- ldr r0, _08050DCC @ =gUnknown_03004854
- ldr r0, [r0]
- movs r1, 0xE2
- lsls r1, 1
- adds r0, r1
- movs r1, 0x5
- str r1, [r0]
- b _08050E28
- .align 2, 0
-_08050DCC: .4byte gUnknown_03004854
-_08050DD0:
- ldr r0, _08050DE8 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r3, 0x98
- lsls r3, 1
- adds r0, r1, r3
- str r2, [r0]
- movs r0, 0xE2
- lsls r0, 1
- adds r1, r0
- movs r0, 0x3
- str r0, [r1]
- b _08050E28
- .align 2, 0
-_08050DE8: .4byte gUnknown_03004854
-_08050DEC:
- ldr r2, [r4]
-_08050DEE:
- movs r3, 0xE2
- lsls r3, 1
- adds r1, r2, r3
- ldr r0, [r1]
- adds r0, 0x1
-_08050DF8:
- str r0, [r1]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r2, r0
- movs r0, 0
- str r0, [r1]
- b _08050E28
-_08050E06:
- ldr r1, [r4]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x5
- ble _08050E28
- ldr r1, _08050E24 @ =gSoftResetDisabled
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _08050E2A
- .align 2, 0
-_08050E24: .4byte gSoftResetDisabled
-_08050E28:
- movs r0, 0
-_08050E2A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8050CE8
-
- thumb_func_start sub_8050E30
-sub_8050E30: @ 8050E30
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r1, _08050E50 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x6F
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0xC
- bls _08050E44
- b _080510C4
-_08050E44:
- lsls r0, 2
- ldr r1, _08050E54 @ =_08050E58
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050E50: .4byte gUnknown_03004854
-_08050E54: .4byte _08050E58
- .align 2, 0
-_08050E58:
- .4byte _08050E8C
- .4byte _08050ED8
- .4byte _08050F18
- .4byte _08050F6C
- .4byte _08050F8C
- .4byte _08050FAA
- .4byte _08050FD4
- .4byte _08051004
- .4byte _08051020
- .4byte _08051030
- .4byte _08051054
- .4byte _08051094
- .4byte _080510B6
-_08050E8C:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x70
- ldrh r2, [r0]
- ldr r0, _08050EB8 @ =0x00002222
- cmp r2, r0
- bne _08050E9C
- b _08050FA2
-_08050E9C:
- ldr r0, _08050EBC @ =0x00001111
- cmp r2, r0
- beq _08050EA4
- b _080510C4
-_08050EA4:
- adds r0, r1, 0
- adds r0, 0x78
- ldrh r2, [r0]
- ldr r0, _08050EC0 @ =0x00009999
- cmp r2, r0
- bne _08050EC4
- adds r1, 0x6F
- movs r0, 0x2
- strb r0, [r1]
- b _080510C4
- .align 2, 0
-_08050EB8: .4byte 0x00002222
-_08050EBC: .4byte 0x00001111
-_08050EC0: .4byte 0x00009999
-_08050EC4:
- ldr r0, _08050ED4 @ =0x0000aaaa
- cmp r2, r0
- bne _08050FA2
- adds r1, 0x6F
- movs r0, 0x1
- strb r0, [r1]
- b _080510C4
- .align 2, 0
-_08050ED4: .4byte 0x0000aaaa
-_08050ED8:
- ldr r0, [r5]
- adds r0, 0x6F
- movs r1, 0x3
- strb r1, [r0]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r4, _08050F0C @ =gStringVar4
- ldr r0, [r5]
- adds r0, 0x7A
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _08050F10 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, _08050F14 @ =gOtherText_OtherCaseIsFull
- b _08050F4C
- .align 2, 0
-_08050F0C: .4byte gStringVar4
-_08050F10: .4byte gLinkPlayers + 0x8
-_08050F14: .4byte gOtherText_OtherCaseIsFull
-_08050F18:
- ldr r1, [r5]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r4, _08050F60 @ =gStringVar4
- ldr r0, [r5]
- adds r0, 0x7A
- ldrh r0, [r0]
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _08050F64 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, _08050F68 @ =gOtherText_NoBerriesForBlend
-_08050F4C:
- adds r0, r4, 0
- bl StringAppend
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _080510C4
- .align 2, 0
-_08050F60: .4byte gStringVar4
-_08050F64: .4byte gLinkPlayers + 0x8
-_08050F68: .4byte gOtherText_NoBerriesForBlend
-_08050F6C:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08050F78
- b _080510C4
-_08050F78:
- ldr r0, _08050F88 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _080510AC
- .align 2, 0
-_08050F88: .4byte gUnknown_03004854
-_08050F8C:
- ldr r2, [r5]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r2, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bgt _08050FA0
- b _080510C4
-_08050FA0:
- adds r1, r2, 0
-_08050FA2:
- adds r1, 0x6F
- movs r0, 0x5
- strb r0, [r1]
- b _080510C4
-_08050FAA:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08050FCC @ =gMultiText_Saving
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- bl sub_80084A4
- ldr r0, _08050FD0 @ =gUnknown_03004854
- ldr r1, [r0]
- b _080510AC
- .align 2, 0
-_08050FCC: .4byte gMultiText_Saving
-_08050FD0: .4byte gUnknown_03004854
-_08050FD4:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080510C4
- ldr r3, _08051000 @ =gUnknown_03004854
- ldr r1, [r3]
- movs r2, 0x98
- lsls r2, 1
- adds r0, r1, r2
- movs r2, 0
- str r2, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r3]
- movs r1, 0xE2
- lsls r1, 1
- adds r0, r1
- str r2, [r0]
- b _080510C4
- .align 2, 0
-_08051000: .4byte gUnknown_03004854
-_08051004:
- bl sub_8050CE8
- lsls r0, 24
- cmp r0, 0
- beq _080510C4
- movs r0, 0x37
- bl PlaySE
- ldr r0, _0805101C @ =gUnknown_03004854
- ldr r1, [r0]
- b _080510AC
- .align 2, 0
-_0805101C: .4byte gUnknown_03004854
-_08051020:
- ldr r1, [r5]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_80084A4
- b _080510C4
-_08051030:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _080510C4
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08051050 @ =gUnknown_03004854
- ldr r1, [r0]
- b _080510AC
- .align 2, 0
-_08051050: .4byte gUnknown_03004854
-_08051054:
- ldr r0, _0805107C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- bne _080510C4
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0x70
- ldrh r1, [r0]
- ldr r0, _08051080 @ =0x00002222
- cmp r1, r0
- bne _08051088
- ldr r0, _08051084 @ =sub_804E538
- bl SetMainCallback2
- b _080510C4
- .align 2, 0
-_0805107C: .4byte gPaletteFade
-_08051080: .4byte 0x00002222
-_08051084: .4byte sub_804E538
-_08051088:
- movs r1, 0x98
- lsls r1, 1
- adds r0, r2, r1
- str r3, [r0]
- adds r1, r2, 0
- b _080510AC
-_08051094:
- ldr r1, [r5]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x1E
- ble _080510C4
- bl sub_800832C
- ldr r1, [r5]
-_080510AC:
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080510C4
-_080510B6:
- ldr r0, _080510E0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080510C4
- ldr r0, _080510E4 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_080510C4:
- bl sub_805123C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080510E0: .4byte gReceivedRemoteLinkPlayers
-_080510E4: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_8050E30
-
- thumb_func_start sub_80510E8
-sub_80510E8: @ 80510E8
- push {lr}
- ldr r1, _08051104 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x6F
- ldrb r0, [r0]
- adds r3, r1, 0
- cmp r0, 0xA
- bls _080510FA
- b _0805121E
-_080510FA:
- lsls r0, 2
- ldr r1, _08051108 @ =_0805110C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08051104: .4byte gUnknown_03004854
-_08051108: .4byte _0805110C
- .align 2, 0
-_0805110C:
- .4byte _08051138
- .4byte _0805116E
- .4byte _08051190
- .4byte _080511BC
- .4byte _0805121E
- .4byte _0805121E
- .4byte _0805121E
- .4byte _0805121E
- .4byte _0805121E
- .4byte _080511D8
- .4byte _080511F0
-_08051138:
- ldr r1, [r3]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0x1
- bhi _0805114A
- adds r1, 0x6F
- movs r0, 0x9
- strb r0, [r1]
-_0805114A:
- ldr r2, [r3]
- adds r0, r2, 0
- adds r0, 0x7C
- ldrh r1, [r0]
- cmp r1, 0x2
- bne _0805115A
- subs r0, 0xD
- strb r1, [r0]
-_0805115A:
- ldr r1, [r3]
- adds r0, r1, 0
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0x3
- bne _0805121E
- adds r1, 0x6F
- movs r0, 0x1
- strb r0, [r1]
- b _0805121E
-_0805116E:
- ldr r0, [r3]
- adds r0, 0x6F
- movs r1, 0x3
- strb r1, [r0]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _0805118C @ =gOtherText_CaseIsFull
- b _080511AC
- .align 2, 0
-_0805118C: .4byte gOtherText_CaseIsFull
-_08051190:
- ldr r0, [r3]
- adds r0, 0x6F
- ldrb r1, [r0]
- adds r1, 0x1
- strb r1, [r0]
- bl DestroyMenuCursor
- movs r0, 0x17
- movs r1, 0x8
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080511B8 @ =gOtherText_OutOfBerries
-_080511AC:
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- b _0805121E
- .align 2, 0
-_080511B8: .4byte gOtherText_OutOfBerries
-_080511BC:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0805121E
- ldr r0, _080511D4 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x9
- strb r1, [r0]
- b _0805121E
- .align 2, 0
-_080511D4: .4byte gUnknown_03004854
-_080511D8:
- movs r0, 0x3
- bl BeginFastPaletteFade
- ldr r0, _080511EC @ =gUnknown_03004854
- ldr r1, [r0]
- adds r1, 0x6F
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0805121E
- .align 2, 0
-_080511EC: .4byte gUnknown_03004854
-_080511F0:
- ldr r0, _08051210 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0805121E
- ldr r0, [r3]
- adds r0, 0x7C
- ldrh r0, [r0]
- cmp r0, 0
- bne _08051218
- ldr r0, _08051214 @ =sub_804E538
- bl SetMainCallback2
- b _0805121E
- .align 2, 0
-_08051210: .4byte gPaletteFade
-_08051214: .4byte sub_804E538
-_08051218:
- ldr r0, _08051238 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl SetMainCallback2
-_0805121E:
- bl sub_805123C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- .align 2, 0
-_08051238: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_80510E8
-
- thumb_func_start sub_805123C
-sub_805123C: @ 805123C
- push {r4-r6,lr}
- ldr r0, _0805126C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08051248
- b _08051404
-_08051248:
- ldr r4, _08051270 @ =gRecvCmds
- ldrh r1, [r4]
- ldr r0, _08051274 @ =0x00002fff
- cmp r1, r0
- bne _080512C6
- ldrh r1, [r4, 0x8]
- ldr r0, _08051278 @ =0x00001111
- cmp r1, r0
- bne _080512B8
- ldrh r3, [r4, 0x10]
- ldr r0, _0805127C @ =0x00009999
- cmp r3, r0
- beq _08051298
- cmp r3, r0
- bgt _08051284
- ldr r0, _08051280 @ =0x00008888
- b _08051286
- .align 2, 0
-_0805126C: .4byte gReceivedRemoteLinkPlayers
-_08051270: .4byte gRecvCmds
-_08051274: .4byte 0x00002fff
-_08051278: .4byte 0x00001111
-_0805127C: .4byte 0x00009999
-_08051280: .4byte 0x00008888
-_08051284:
- ldr r0, _08051290 @ =0x0000aaaa
-_08051286:
- cmp r3, r0
- beq _08051298
- ldr r2, _08051294 @ =gUnknown_03004854
- b _080512A8
- .align 2, 0
-_08051290: .4byte 0x0000aaaa
-_08051294: .4byte gUnknown_03004854
-_08051298:
- ldr r2, _080512B0 @ =gUnknown_03004854
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0x78
- strh r3, [r1]
- ldrh r1, [r4, 0x18]
- adds r0, 0x7A
- strh r1, [r0]
-_080512A8:
- ldr r0, [r2]
- adds r0, 0x70
- ldr r1, _080512B4 @ =0x00001111
- b _080512C4
- .align 2, 0
-_080512B0: .4byte gUnknown_03004854
-_080512B4: .4byte 0x00001111
-_080512B8:
- ldr r0, _080512F4 @ =0x00002222
- cmp r1, r0
- bne _080512C6
- ldr r0, _080512F8 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x70
-_080512C4:
- strh r1, [r0]
-_080512C6:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- beq _080512D2
- b _08051404
-_080512D2:
- ldr r2, _080512F8 @ =gUnknown_03004854
- ldr r0, [r2]
- adds r0, 0x70
- ldrh r1, [r0]
- ldr r0, _080512FC @ =0x00001111
- cmp r1, r0
- bne _080512E2
- b _08051404
-_080512E2:
- ldr r0, _080512F4 @ =0x00002222
- cmp r1, r0
- bne _080512EA
- b _08051404
-_080512EA:
- movs r4, 0
- ldr r6, _08051300 @ =0x00002fff
- adds r5, r2, 0
- b _0805134E
- .align 2, 0
-_080512F4: .4byte 0x00002222
-_080512F8: .4byte gUnknown_03004854
-_080512FC: .4byte 0x00001111
-_08051300: .4byte 0x00002fff
-_08051304:
- ldr r1, _08051328 @ =gRecvCmds
- lsls r2, r4, 1
- adds r0, r2, r1
- ldrh r0, [r0]
- cmp r0, r6
- bne _08051348
- adds r0, r1, 0
- adds r0, 0x8
- adds r0, r2, r0
- ldrh r1, [r0]
- ldr r0, _0805132C @ =0x00008888
- cmp r1, r0
- beq _08051340
- cmp r1, r0
- bgt _08051334
- ldr r0, _08051330 @ =0x00007779
- b _0805133C
- .align 2, 0
-_08051328: .4byte gRecvCmds
-_0805132C: .4byte 0x00008888
-_08051330: .4byte 0x00007779
-_08051334:
- ldr r0, _08051360 @ =0x00009999
- cmp r1, r0
- beq _08051340
- ldr r0, _08051364 @ =0x0000aaaa
-_0805133C:
- cmp r1, r0
- bne _08051348
-_08051340:
- ldr r0, [r5]
- adds r0, 0x70
- adds r0, r2
- strh r1, [r0]
-_08051348:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0805134E:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcc _08051304
- movs r4, 0
- b _0805136E
- .align 2, 0
-_08051360: .4byte 0x00009999
-_08051364: .4byte 0x0000aaaa
-_08051368:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0805136E:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _0805138A
- ldr r0, _0805139C @ =gUnknown_03004854
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _08051368
-_0805138A:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _08051404
- movs r4, 0
- ldr r5, _080513A0 @ =0x00007779
- b _080513AA
- .align 2, 0
-_0805139C: .4byte gUnknown_03004854
-_080513A0: .4byte 0x00007779
-_080513A4:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_080513AA:
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bcs _080513C6
- ldr r0, _080513E0 @ =gUnknown_03004854
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, r5
- beq _080513A4
-_080513C6:
- ldr r5, _080513E4 @ =gSendCmd
- movs r6, 0
- ldr r0, _080513E8 @ =0x00002fff
- strh r0, [r5]
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _080513F0
- ldr r0, _080513EC @ =0x00002222
- strh r0, [r5, 0x2]
- b _08051404
- .align 2, 0
-_080513E0: .4byte gUnknown_03004854
-_080513E4: .4byte gSendCmd
-_080513E8: .4byte 0x00002fff
-_080513EC: .4byte 0x00002222
-_080513F0:
- ldr r0, _0805140C @ =0x00001111
- strh r0, [r5, 0x2]
- ldr r0, _08051410 @ =gUnknown_03004854
- ldr r0, [r0]
- lsls r1, r4, 1
- adds r0, 0x70
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r5, 0x4]
- strh r4, [r5, 0x6]
-_08051404:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0805140C: .4byte 0x00001111
-_08051410: .4byte gUnknown_03004854
- thumb_func_end sub_805123C
-
- thumb_func_start sub_8051414
-sub_8051414: @ 8051414
- push {lr}
- sub sp, 0x14
- adds r1, r0, 0
- movs r0, 0xF0
- lsls r0, 7
- str r0, [sp]
- movs r0, 0xA0
- lsls r0, 7
- str r0, [sp, 0x4]
- mov r3, sp
- ldr r0, _08051470 @ =gUnknown_03004854
- ldr r0, [r0]
- mov r12, r0
- movs r0, 0xA2
- lsls r0, 1
- add r0, r12
- ldrh r2, [r0]
- movs r0, 0x78
- subs r0, r2
- strh r0, [r3, 0x8]
- movs r0, 0xA3
- lsls r0, 1
- add r0, r12
- ldrh r2, [r0]
- movs r0, 0x50
- subs r0, r2
- strh r0, [r3, 0xA]
- mov r2, sp
- movs r3, 0xA1
- lsls r3, 1
- add r3, r12
- ldrh r0, [r3]
- strh r0, [r2, 0xC]
- ldrh r0, [r3]
- strh r0, [r2, 0xE]
- mov r0, r12
- adds r0, 0x54
- ldrh r0, [r0]
- strh r0, [r2, 0x10]
- mov r0, sp
- movs r2, 0x1
- bl BgAffineSet
- add sp, 0x14
- pop {r0}
- bx r0
- .align 2, 0
-_08051470: .4byte gUnknown_03004854
- thumb_func_end sub_8051414
-
- thumb_func_start sub_8051474
-sub_8051474: @ 8051474
- push {lr}
- ldr r0, _080514A0 @ =gUnknown_03004854
- ldr r3, [r0]
- adds r1, r3, 0
- adds r1, 0x54
- ldrh r2, [r1]
- adds r0, r3, 0
- adds r0, 0x58
- strh r2, [r0]
- subs r0, 0x2
- ldrh r0, [r0]
- ldrh r2, [r1]
- adds r0, r2
- strh r0, [r1]
- movs r1, 0xB4
- lsls r1, 1
- adds r0, r3, r1
- bl sub_8051414
- pop {r0}
- bx r0
- .align 2, 0
-_080514A0: .4byte gUnknown_03004854
- thumb_func_end sub_8051474
-
- thumb_func_start sub_80514A4
-sub_80514A4: @ 80514A4
- ldr r1, _080514E8 @ =REG_BG2PA
- ldr r0, _080514EC @ =gUnknown_03004854
- ldr r2, [r0]
- movs r3, 0xB4
- lsls r3, 1
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldr r0, [r0]
- str r0, [r1]
- adds r1, 0x4
- adds r3, 0x4
- adds r0, r2, r3
- ldr r0, [r0]
- str r0, [r1]
- bx lr
- .align 2, 0
-_080514E8: .4byte REG_BG2PA
-_080514EC: .4byte gUnknown_03004854
- thumb_func_end sub_80514A4
-
- thumb_func_start sub_80514F0
-sub_80514F0: @ 80514F0
- ldr r1, _0805151C @ =REG_BG1HOFS
- ldr r0, _08051520 @ =gUnknown_03004854
- ldr r3, [r0]
- movs r0, 0xA2
- lsls r0, 1
- adds r2, r3, r0
- ldrh r0, [r2]
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0xA3
- lsls r0, 1
- adds r3, r0
- ldrh r0, [r3]
- strh r0, [r1]
- subs r1, 0x6
- ldrh r0, [r2]
- strh r0, [r1]
- adds r1, 0x2
- ldrh r0, [r3]
- strh r0, [r1]
- bx lr
- .align 2, 0
-_0805151C: .4byte REG_BG1HOFS
-_08051520: .4byte gUnknown_03004854
- thumb_func_end sub_80514F0
-
- thumb_func_start sub_8051524
-sub_8051524: @ 8051524
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- ldrh r1, [r2, 0x32]
- adds r0, r1
- strh r0, [r2, 0x32]
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x34]
- adds r0, r1
- strh r0, [r2, 0x34]
- movs r1, 0x32
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bge _08051542
- adds r0, 0x7
-_08051542:
- asrs r0, 3
- strh r0, [r2, 0x24]
- movs r1, 0x34
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bge _08051550
- adds r0, 0x7
-_08051550:
- asrs r0, 3
- strh r0, [r2, 0x26]
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08051568
- adds r0, r2, 0
- bl DestroySprite
-_08051568:
- pop {r0}
- bx r0
- thumb_func_end sub_8051524
-
- thumb_func_start sub_805156C
-sub_805156C: @ 805156C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- bl Random
- lsls r0, 16
- lsrs r1, r0, 16
- movs r0, 0x1
- ands r1, r0
- adds r0, r1, 0x1
- cmp r0, 0
- beq _08051628
- ldr r0, _08051638 @ =gSineTable
- mov r9, r0
- ldr r2, _0805163C @ =gSprites
- mov r10, r2
- adds r6, r1, 0x1
- movs r3, 0x1F
- mov r8, r3
- movs r7, 0x10
-_08051598:
- bl Random
- ldr r1, _08051640 @ =gUnknown_03004854
- ldr r4, [r1]
- adds r4, 0x54
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x14
- bl __umodsi3
- ldrh r1, [r4]
- adds r1, r0
- lsls r1, 16
- movs r0, 0xFF
- lsls r0, 16
- ands r0, r1
- lsrs r2, r0, 16
- adds r0, r2, 0
- adds r0, 0x40
- lsls r0, 1
- add r0, r9
- movs r3, 0
- ldrsh r1, [r0, r3]
- cmp r1, 0
- bge _080515CC
- adds r1, 0x3
-_080515CC:
- asrs r1, 2
- lsls r0, r2, 1
- add r0, r9
- movs r2, 0
- ldrsh r0, [r0, r2]
- cmp r0, 0
- bge _080515DC
- adds r0, 0x3
-_080515DC:
- asrs r2, r0, 2
- adds r1, 0x78
- adds r2, 0x50
- ldr r0, _08051644 @ =gSpriteTemplate_82164FC
- movs r3, 0x1
- bl CreateSprite
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r5, r4, 4
- adds r5, r4
- lsls r5, 2
- mov r3, r10
- adds r4, r5, r3
- lsls r0, 16
- lsrs r0, 16
- mov r1, r8
- ands r0, r1
- subs r0, r7, r0
- strh r0, [r4, 0x2E]
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r2, r8
- ands r0, r2
- subs r0, r7, r0
- strh r0, [r4, 0x30]
- ldr r3, _08051648 @ =gSprites + 0x1C
- adds r5, r3
- ldr r0, _0805164C @ =sub_8051524
- str r0, [r5]
- subs r6, 0x1
- cmp r6, 0
- bne _08051598
-_08051628:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08051638: .4byte gSineTable
-_0805163C: .4byte gSprites
-_08051640: .4byte gUnknown_03004854
-_08051644: .4byte gSpriteTemplate_82164FC
-_08051648: .4byte gSprites + 0x1C
-_0805164C: .4byte sub_8051524
- thumb_func_end sub_805156C
-
- thumb_func_start sub_8051650
-sub_8051650: @ 8051650
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- movs r1, 0x3
- bl __divsi3
- negs r0, r0
- strh r0, [r4, 0x26]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0805167C
- adds r0, r4, 0
- bl DestroySprite
-_0805167C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8051650
-
- thumb_func_start sub_8051684
-sub_8051684: @ 8051684
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- lsls r0, 1
- negs r0, r0
- strh r0, [r2, 0x26]
- lsls r0, 16
- asrs r0, 16
- movs r1, 0xC
- negs r1, r1
- cmp r0, r1
- bge _080516A8
- ldr r0, _080516C0 @ =0x0000fff4
- strh r0, [r2, 0x26]
-_080516A8:
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080516BC
- adds r0, r2, 0
- bl DestroySprite
-_080516BC:
- pop {r0}
- bx r0
- .align 2, 0
-_080516C0: .4byte 0x0000fff4
- thumb_func_end sub_8051684
-
- thumb_func_start sub_80516C4
-sub_80516C4: @ 80516C4
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsrs r1, 16
- ldr r2, _080516F4 @ =gUnknown_03004854
- ldr r3, [r2]
- lsls r4, r0, 1
- adds r2, r3, 0
- adds r2, 0x80
- adds r2, r4
- strh r1, [r2]
- lsls r0, 4
- movs r2, 0xBE
- lsls r2, 1
- adds r0, r2
- adds r3, r0
- adds r0, r3, 0
- bl sub_804E844
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080516F4: .4byte gUnknown_03004854
- thumb_func_end sub_80516C4
-
- thumb_func_start unref_sub_80516F8
-unref_sub_80516F8: @ 80516F8
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080517B8 @ =gTasks
- adds r4, r0, r1
- ldr r6, _080517BC @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r6]
- cmp r0, 0
- beq _0805180C
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080517D4
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- ble _08051730
- strh r1, [r4, 0x8]
-_08051730:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x64
- bne _080517A0
- ldr r0, _080517C0 @ =gUnknown_03004854
- ldr r0, [r0]
- adds r0, 0x4
- movs r1, 0x14
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl ZeroFillWindowRect
- movs r0, 0x4
- movs r1, 0x4
- movs r2, 0xA
- movs r3, 0xC
- bl MenuDrawTextWindow
- movs r2, 0
- ldr r6, _080517C4 @ =gLinkPlayers + 0x4
-_0805175C:
- adds r4, r2, 0x1
- lsls r0, r4, 3
- subs r0, r4
- lsls r0, 2
- adds r0, r6
- ldr r0, [r0]
- cmp r0, 0
- beq _08051784
- ldr r1, _080517C8 @ =gUnknown_08216284
- lsls r0, r2, 2
- adds r0, r1
- ldr r0, [r0]
- lsls r2, 25
- movs r1, 0xA0
- lsls r1, 19
- adds r2, r1
- lsrs r2, 24
- movs r1, 0x5
- bl MenuPrint
-_08051784:
- movs r0, 0
- movs r1, 0xD
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _080517CC @ =gOtherText_PressAToStart
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrint
- adds r2, r4, 0
- cmp r2, 0x2
- ble _0805175C
-_080517A0:
- ldr r0, _080517D0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805180C
- bl sub_8007E4C
- adds r0, r5, 0
- bl DestroyTask
- b _0805180C
- .align 2, 0
-_080517B8: .4byte gTasks
-_080517BC: .4byte gReceivedRemoteLinkPlayers
-_080517C0: .4byte gUnknown_03004854
-_080517C4: .4byte gLinkPlayers + 0x4
-_080517C8: .4byte gUnknown_08216284
-_080517CC: .4byte gOtherText_PressAToStart
-_080517D0: .4byte gMain
-_080517D4:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0xA
- bne _080517E6
- ldr r0, _08051814 @ =gOtherText_PleaseWait
- movs r1, 0x3
- movs r2, 0xA
- bl MenuPrint
-_080517E6:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x78
- ble _080517F8
- movs r0, 0
- strh r0, [r4, 0x8]
-_080517F8:
- ldr r0, _08051818 @ =byte_3002A68
- ldrb r0, [r0]
- cmp r0, 0x4
- bls _0805180C
- ldrb r0, [r6]
- cmp r0, 0x1
- bne _0805180C
- adds r0, r5, 0
- bl DestroyTask
-_0805180C:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08051814: .4byte gOtherText_PleaseWait
-_08051818: .4byte byte_3002A68
- thumb_func_end unref_sub_80516F8
-
- thumb_func_start sub_805181C
-sub_805181C: @ 805181C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08051858
- cmp r0, 0x1
- bgt _08051832
- cmp r0, 0
- beq _08051838
- b _080518BE
-_08051832:
- cmp r0, 0x2
- beq _08051872
- b _080518BE
-_08051838:
- ldrh r0, [r4, 0x30]
- adds r0, 0x8
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x58
- ble _080518BE
- movs r0, 0x58
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0x38
- bl PlaySE
- b _080518BE
-_08051858:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080518BE
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0
- strh r0, [r4, 0x32]
- b _080518BE
-_08051872:
- ldrh r0, [r4, 0x30]
- adds r0, 0x4
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB0
- ble _080518BE
- ldrh r0, [r4, 0x34]
- adds r0, 0x1
- adds r1, r0, 0
- strh r0, [r4, 0x34]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _080518AC
- adds r0, r4, 0
- bl DestroySprite
- ldr r0, _080518A8 @ =gSpriteTemplate_821657C
- movs r2, 0x14
- negs r2, r2
- movs r1, 0x78
- movs r3, 0x2
- bl CreateSprite
- b _080518BE
- .align 2, 0
-_080518A8: .4byte gSpriteTemplate_821657C
-_080518AC:
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldr r0, _080518C8 @ =0x0000fff0
- strh r0, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
-_080518BE:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080518C8: .4byte 0x0000fff0
- thumb_func_end sub_805181C
-
- thumb_func_start sub_80518CC
-sub_80518CC: @ 80518CC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08051908
- cmp r0, 0x1
- bgt _080518E2
- cmp r0, 0
- beq _080518E8
- b _0805193C
-_080518E2:
- cmp r0, 0x2
- beq _0805191E
- b _0805193C
-_080518E8:
- ldrh r0, [r4, 0x30]
- adds r0, 0x8
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5C
- ble _0805193C
- movs r0, 0x5C
- strh r0, [r4, 0x30]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- movs r0, 0x15
- bl PlaySE
- b _0805193C
-_08051908:
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _0805193C
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- b _0805193C
-_0805191E:
- ldrh r0, [r4, 0x30]
- adds r0, 0x4
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xB0
- ble _0805193C
- ldr r0, _08051948 @ =gUnknown_03004854
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- adds r0, r4, 0
- bl DestroySprite
-_0805193C:
- ldrh r0, [r4, 0x30]
- strh r0, [r4, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08051948: .4byte gUnknown_03004854
- thumb_func_end sub_80518CC
-
- thumb_func_start sub_805194C
-sub_805194C: @ 805194C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r3, r1, 16
- ldr r1, _08051978 @ =gUnknown_03004854
- ldr r1, [r1]
- movs r2, 0xA0
- lsls r2, 1
- adds r1, r2
- ldrh r2, [r1]
- cmp r2, r0
- bcs _08051972
- adds r0, r2, 0x2
- strh r0, [r1]
- ldrh r0, [r1]
- adds r1, r3, 0
- bl sub_805197C
-_08051972:
- pop {r0}
- bx r0
- .align 2, 0
-_08051978: .4byte gUnknown_03004854
- thumb_func_end sub_805194C
-
- thumb_func_start sub_805197C
-sub_805197C: @ 805197C
- push {r4-r7,lr}
- lsls r0, 16
- lsls r1, 16
- lsrs r1, 16
- ldr r7, _08051A0C @ =0x06006000
- lsrs r0, 10
- bl __divsi3
- adds r1, r0, 0
- cmp r1, 0
- bge _08051994
- adds r0, r1, 0x7
-_08051994:
- asrs r4, r0, 3
- movs r3, 0
- cmp r3, r4
- bge _080519BC
- ldr r0, _08051A10 @ =0x000081e9
- adds r6, r0, 0
- adds r0, 0x10
- adds r5, r0, 0
- adds r2, r7, 0
- adds r2, 0x56
- adds r0, r7, 0
- adds r3, r4, 0
-_080519AC:
- strh r6, [r0, 0x16]
- strh r5, [r2]
- adds r2, 0x2
- adds r0, 0x2
- subs r3, 0x1
- cmp r3, 0
- bne _080519AC
- adds r3, r4, 0
-_080519BC:
- adds r0, r1, 0
- cmp r1, 0
- bge _080519C4
- adds r0, r1, 0x7
-_080519C4:
- asrs r2, r0, 3
- lsls r0, r2, 3
- subs r2, r1, r0
- cmp r2, 0
- beq _080519E2
- lsls r0, r3, 1
- adds r0, r7
- ldr r4, _08051A14 @ =0xffff81e1
- adds r1, r2, r4
- strh r1, [r0, 0x16]
- adds r0, 0x56
- adds r4, 0x10
- adds r1, r2, r4
- strh r1, [r0]
- adds r3, 0x1
-_080519E2:
- cmp r3, 0x7
- bgt _08051A06
- ldr r0, _08051A18 @ =0x000081e1
- adds r4, r0, 0
- adds r0, 0x10
- adds r2, r0, 0
- lsls r1, r3, 1
- adds r0, r1, 0
- adds r0, 0x56
- adds r0, r7
- adds r1, r7
-_080519F8:
- strh r4, [r1, 0x16]
- strh r2, [r0]
- adds r0, 0x2
- adds r1, 0x2
- adds r3, 0x1
- cmp r3, 0x7
- ble _080519F8
-_08051A06:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08051A0C: .4byte 0x06006000
-_08051A10: .4byte 0x000081e9
-_08051A14: .4byte 0xffff81e1
-_08051A18: .4byte 0x000081e1
- thumb_func_end sub_805197C
-
- thumb_func_start sub_8051A1C
-sub_8051A1C: @ 8051A1C
- push {lr}
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08051A34 @ =0x00057e40
- muls r0, r1
- cmp r0, 0
- bge _08051A2E
- ldr r1, _08051A38 @ =0x0000ffff
- adds r0, r1
-_08051A2E:
- asrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_08051A34: .4byte 0x00057e40
-_08051A38: .4byte 0x0000ffff
- thumb_func_end sub_8051A1C
-
- thumb_func_start sub_8051A3C
-sub_8051A3C: @ 8051A3C
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 16
- lsrs r0, 16
- bl sub_8051A1C
- adds r5, r0, 0
- ldr r0, _08051ABC @ =gUnknown_03004854
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x5A
- ldrh r0, [r1]
- cmp r0, r5
- bcs _08051A5A
- strh r5, [r1]
-_08051A5A:
- movs r6, 0
-_08051A5C:
- mov r0, sp
- adds r4, r0, r6
- adds r0, r5, 0
- movs r1, 0xA
- bl __umodsi3
- strb r0, [r4]
- adds r0, r5, 0
- movs r1, 0xA
- bl __udivsi3
- adds r5, r0, 0
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x4
- bls _08051A5C
- ldr r2, _08051AC0 @ =0x06006458
- mov r0, sp
- ldr r3, _08051AC4 @ =0x00008172
- adds r1, r3, 0
- ldrb r0, [r0, 0x4]
- adds r0, r1, r0
- strh r0, [r2]
- adds r2, 0x2
- mov r0, sp
- ldrb r0, [r0, 0x3]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x2
- mov r0, sp
- ldrb r0, [r0, 0x2]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x4
- mov r0, sp
- ldrb r0, [r0, 0x1]
- adds r0, r1
- strh r0, [r2]
- adds r2, 0x2
- mov r0, sp
- ldrb r0, [r0]
- adds r1, r0
- strh r1, [r2]
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08051ABC: .4byte gUnknown_03004854
-_08051AC0: .4byte 0x06006458
-_08051AC4: .4byte 0x00008172
- thumb_func_end sub_8051A3C
-
- thumb_func_start sub_8051AC8
-sub_8051AC8: @ 8051AC8
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 16
- lsrs r5, r4, 16
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08051AEC
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __umodsi3
- lsrs r1, r4, 17
- subs r0, r1
- strh r0, [r6]
-_08051AEC:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_8051AC8
-
- thumb_func_start sub_8051AF4
-sub_8051AF4: @ 8051AF4
- push {lr}
- adds r1, r0, 0
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bge _08051B06
- adds r0, r2, 0x1
- strh r0, [r1]
-_08051B06:
- ldrh r2, [r1]
- movs r3, 0
- ldrsh r0, [r1, r3]
- cmp r0, 0
- ble _08051B14
- subs r0, r2, 0x1
- strh r0, [r1]
-_08051B14:
- pop {r0}
- bx r0
- thumb_func_end sub_8051AF4
-
- thumb_func_start sub_8051B18
-sub_8051B18: @ 8051B18
- push {r4,lr}
- ldr r4, _08051B3C @ =gUnknown_03004854
- ldr r0, [r4]
- movs r1, 0xA2
- lsls r1, 1
- adds r0, r1
- bl sub_8051AF4
- ldr r0, [r4]
- movs r1, 0xA3
- lsls r1, 1
- adds r0, r1
- bl sub_8051AF4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08051B3C: .4byte gUnknown_03004854
- thumb_func_end sub_8051B18
-
- thumb_func_start sub_8051B40
-sub_8051B40: @ 8051B40
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r1, 16
- lsrs r1, 16
- movs r5, 0x8
- cmp r1, 0x9
- bhi _08051B50
- movs r5, 0x10
-_08051B50:
- ldrh r0, [r4]
- movs r2, 0
- ldrsh r1, [r4, r2]
- cmp r1, 0
- bne _08051B6E
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r5, 0
- bl __modsi3
- lsrs r1, r5, 1
- subs r0, r1
- b _08051B82
-_08051B6E:
- cmp r1, 0
- bge _08051B76
- adds r0, 0x1
- strh r0, [r4]
-_08051B76:
- ldrh r1, [r4]
- movs r2, 0
- ldrsh r0, [r4, r2]
- cmp r0, 0
- ble _08051B84
- subs r0, r1, 0x1
-_08051B82:
- strh r0, [r4]
-_08051B84:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8051B40
-
- thumb_func_start sub_8051B8C
-sub_8051B8C: @ 8051B8C
- push {r4,r5,lr}
- ldr r5, _08051BE4 @ =gUnknown_03004854
- ldr r2, [r5]
- movs r4, 0x98
- lsls r4, 1
- adds r0, r2, r4
- ldr r1, [r0]
- cmp r1, 0
- bne _08051BAC
- movs r3, 0xA2
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
-_08051BAC:
- ldr r0, [r5]
- adds r2, r0, r4
- ldr r1, [r2]
- adds r1, 0x1
- str r1, [r2]
- movs r2, 0xA2
- lsls r2, 1
- adds r0, r2
- lsls r1, 16
- lsrs r1, 16
- bl sub_8051B40
- ldr r1, [r5]
- movs r3, 0xA3
- lsls r3, 1
- adds r0, r1, r3
- adds r1, r4
- ldrh r1, [r1]
- bl sub_8051B40
- ldr r2, [r5]
- adds r0, r2, r4
- ldr r0, [r0]
- cmp r0, 0x14
- beq _08051BE8
- movs r0, 0
- b _08051BFC
- .align 2, 0
-_08051BE4: .4byte gUnknown_03004854
-_08051BE8:
- movs r1, 0xA2
- lsls r1, 1
- adds r0, r2, r1
- movs r1, 0
- strh r1, [r0]
- movs r3, 0xA3
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- movs r0, 0x1
-_08051BFC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8051B8C
-
- thumb_func_start sub_8051C04
-sub_8051C04: @ 8051C04
- ldr r1, _08051C20 @ =gUnknown_03004854
- ldr r2, [r1]
- movs r3, 0xA2
- lsls r3, 1
- adds r1, r2, r3
- ldrh r1, [r1]
- negs r1, r1
- strh r1, [r0, 0x24]
- adds r3, 0x2
- adds r1, r2, r3
- ldrh r1, [r1]
- negs r1, r1
- strh r1, [r0, 0x26]
- bx lr
- .align 2, 0
-_08051C20: .4byte gUnknown_03004854
- thumb_func_end sub_8051C04
-
- thumb_func_start sub_8051C24
-sub_8051C24: @ 8051C24
- push {lr}
- ldr r2, _08051C4C @ =gSaveBlock1
- ldr r0, _08051C50 @ =gUnknown_03004854
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x88
- ldrb r0, [r0]
- subs r0, 0x2
- lsls r0, 1
- ldr r3, _08051C54 @ =0x0000096c
- adds r2, r3
- adds r2, r0, r2
- adds r1, 0x5A
- ldrh r1, [r1]
- ldrh r0, [r2]
- cmp r0, r1
- bcs _08051C48
- strh r1, [r2]
-_08051C48:
- pop {r0}
- bx r0
- .align 2, 0
-_08051C4C: .4byte gSaveBlock1
-_08051C50: .4byte gUnknown_03004854
-_08051C54: .4byte 0x0000096c
- thumb_func_end sub_8051C24
-
- thumb_func_start sub_8051C58
-sub_8051C58: @ 8051C58
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x34
- ldr r1, _08051C7C @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x6
- bls _08051C72
- b _0805200A
-_08051C72:
- lsls r0, 2
- ldr r1, _08051C80 @ =_08051C84
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08051C7C: .4byte gUnknown_03004854
-_08051C80: .4byte _08051C84
- .align 2, 0
-_08051C84:
- .4byte _08051CA0
- .4byte _08051CB6
- .4byte _08051CD0
- .4byte _08051D20
- .4byte _08051F44
- .4byte _08051F58
- .4byte _08051FF8
-_08051CA0:
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- movs r1, 0x11
- str r1, [r0]
- b _0805200A
-_08051CB6:
- ldr r1, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- subs r0, 0xA
- str r0, [r2]
- cmp r0, 0
- blt _08051CCA
- b _0805200A
-_08051CCA:
- movs r0, 0
- str r0, [r2]
- b _08051FE2
-_08051CD0:
- ldr r1, [r2]
- movs r2, 0x98
- lsls r2, 1
- adds r1, r2
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- bgt _08051CE4
- b _0805200A
-_08051CE4:
- movs r6, 0
-_08051CE6:
- ldr r4, _08051D18 @ =gUnknown_03004854
- ldr r0, [r4]
- adds r0, 0x50
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08051D1C @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x2
- bls _08051CE6
- ldr r1, [r4]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08051FE2
- .align 2, 0
-_08051D18: .4byte gUnknown_03004854
-_08051D1C: .4byte gSprites
-_08051D20:
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0x19
- movs r3, 0x11
- bl MenuDrawTextWindow
- ldr r0, _08051F14 @ =gOtherText_ResultsOfBlending
- movs r1, 0x5
- movs r2, 0x3
- movs r3, 0xA0
- bl sub_8072BD8
- movs r6, 0
- ldr r1, _08051F18 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x88
- add r2, sp, 0xC
- mov r9, r2
- mov r2, sp
- adds r2, 0x16
- str r2, [sp, 0x30]
- ldrb r0, [r0]
- cmp r6, r0
- bcs _08051E04
- mov r8, r1
- ldr r0, _08051F1C @ =gLinkPlayers
- mov r10, r0
-_08051D56:
- mov r1, r8
- ldr r2, [r1]
- movs r1, 0xB2
- lsls r1, 1
- adds r0, r2, r1
- adds r0, r6
- ldrb r5, [r0]
- mov r7, r9
- lsls r1, r5, 4
- adds r1, r2
- movs r2, 0xBF
- lsls r2, 1
- adds r1, r2
- adds r0, r7, 0
- bl StringCopy
- lsls r4, r5, 3
- subs r4, r5
- lsls r4, 2
- mov r1, r10
- adds r0, r4, r1
- ldrb r1, [r0, 0x1A]
- adds r0, r7, 0
- bl ConvertInternationalString
- adds r0, r7, 0
- ldr r1, _08051F20 @ =gOtherText_Berry
- bl StringAppend
- mov r2, r8
- ldr r0, [r2]
- adds r7, r0, 0
- adds r7, 0xAB
- adds r5, r6, 0x1
- adds r0, r7, 0
- adds r1, r5, 0
- bl ConvertIntToDecimalString
- adds r7, r0, 0
- movs r1, 0
- strb r1, [r7]
- movs r0, 0xAD
- strb r0, [r7, 0x1]
- strb r1, [r7, 0x2]
- adds r7, 0x3
- ldr r0, _08051F24 @ =gLinkPlayers + 0x8
- adds r4, r0
- adds r0, r7, 0
- adds r1, r4, 0
- movs r2, 0x58
- movs r3, 0
- bl sub_8072C74
- adds r7, r0, 0
- add r1, sp, 0xC
- movs r2, 0x9D
- movs r3, 0
- bl sub_8072C74
- mov r2, r8
- ldr r1, [r2]
- adds r0, r1, 0
- adds r0, 0xAB
- ldr r3, _08051F28 @ =gUnknown_082165E9
- adds r1, 0x88
- ldrb r2, [r1]
- adds r3, r2, r3
- ldr r1, _08051F2C @ =gUnknown_082165EE
- adds r2, r1
- ldrb r1, [r2]
- adds r2, r6, 0
- muls r2, r1
- ldrb r3, [r3]
- adds r2, r3
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x5
- bl MenuPrint
- lsls r5, 16
- lsrs r6, r5, 16
- mov r1, r8
- ldr r0, [r1]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r6, r0
- bcc _08051D56
-_08051E04:
- ldr r6, _08051F18 @ =gUnknown_03004854
- ldr r0, [r6]
- adds r0, 0x5A
- ldrh r0, [r0]
- movs r1, 0x64
- bl __umodsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r0, r9
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r7, r0, 0
- adds r7, 0xAB
- ldr r1, _08051F30 @ =gOtherText_MaxSpeed
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- ldr r0, [r6]
- adds r0, 0x5A
- ldrh r0, [r0]
- movs r1, 0x64
- bl __udivsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r7, 0
- movs r2, 0x79
- movs r3, 0x1
- bl sub_8072C14
- adds r7, r0, 0
- movs r1, 0
- strb r1, [r7]
- movs r0, 0xAD
- strb r0, [r7, 0x1]
- strb r1, [r7, 0x2]
- adds r7, 0x3
- adds r0, r7, 0
- mov r1, r9
- movs r2, 0x8E
- movs r3, 0x1
- bl sub_8072C74
- adds r7, r0, 0
- ldr r1, _08051F34 @ =gOtherText_RPM
- bl StringCopy
- ldr r0, [r6]
- adds r0, 0xAB
- movs r1, 0x5
- movs r2, 0xD
- bl MenuPrint
- ldr r0, [r6]
- movs r2, 0x96
- lsls r2, 1
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0x3C
- bl __udivsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x3C
- bl __umodsi3
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0x3C
- bl __udivsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- mov r0, r9
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [sp, 0x30]
- adds r1, r5, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, [r6]
- adds r7, r0, 0
- adds r7, 0xAB
- ldr r1, _08051F38 @ =gOtherText_RequiredTime
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- mov r1, r9
- movs r2, 0x66
- movs r3, 0x1
- bl sub_8072C74
- adds r7, r0, 0
- ldr r1, _08051F3C @ =gOtherText_Min
- bl StringAppend
- adds r7, r0, 0
- ldr r1, [sp, 0x30]
- movs r2, 0x88
- movs r3, 0x1
- bl sub_8072C74
- adds r7, r0, 0
- ldr r1, _08051F40 @ =gOtherText_Sec
- bl StringCopy
- ldr r0, [r6]
- adds r0, 0xAB
- movs r1, 0x5
- movs r2, 0xF
- bl MenuPrint
- ldr r1, [r6]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08051FE2
- .align 2, 0
-_08051F14: .4byte gOtherText_ResultsOfBlending
-_08051F18: .4byte gUnknown_03004854
-_08051F1C: .4byte gLinkPlayers
-_08051F20: .4byte gOtherText_Berry
-_08051F24: .4byte gLinkPlayers + 0x8
-_08051F28: .4byte gUnknown_082165E9
-_08051F2C: .4byte gUnknown_082165EE
-_08051F30: .4byte gOtherText_MaxSpeed
-_08051F34: .4byte gOtherText_RPM
-_08051F38: .4byte gOtherText_RequiredTime
-_08051F3C: .4byte gOtherText_Min
-_08051F40: .4byte gOtherText_Sec
-_08051F44:
- ldr r0, _08051F54 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0805200A
- ldr r1, [r2]
- b _08051FE2
- .align 2, 0
-_08051F54: .4byte gMain
-_08051F58:
- bl MenuZeroFillScreen
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- movs r6, 0
- add r5, sp, 0x28
- ldr r0, _08051FEC @ =gUnknown_03004854
- ldr r0, [r0]
- adds r3, r0, 0
- adds r3, 0x80
- add r2, sp, 0x20
-_08051F76:
- lsls r1, r6, 1
- adds r0, r3, r1
- ldrh r0, [r0]
- cmp r0, 0
- beq _08051F86
- adds r1, r2, r1
- subs r0, 0x85
- strh r0, [r1]
-_08051F86:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08051F76
- bl sub_8050760
- ldr r4, _08051FEC @ =gUnknown_03004854
- ldr r3, [r4]
- movs r1, 0xBE
- lsls r1, 1
- adds r0, r3, r1
- adds r1, r3, 0
- adds r1, 0x88
- ldrb r2, [r1]
- subs r1, 0x2E
- ldrh r1, [r1]
- str r1, [sp]
- adds r1, r5, 0
- add r3, sp, 0x4
- bl sub_8050520
- ldr r1, [r4]
- adds r1, 0xAB
- adds r0, r5, 0
- bl sub_805201C
- ldr r0, _08051FF0 @ =sub_8052BD0
- movs r1, 0x6
- bl CreateTask
- ldr r0, [r4]
- adds r0, 0xAB
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- ldr r0, _08051FF4 @ =gScriptItemId
- ldrh r0, [r0]
- movs r1, 0x1
- bl RemoveBagItem
- adds r0, r5, 0
- bl sub_810CA34
- ldr r1, [r4]
-_08051FE2:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0805200A
- .align 2, 0
-_08051FEC: .4byte gUnknown_03004854
-_08051FF0: .4byte sub_8052BD0
-_08051FF4: .4byte gScriptItemId
-_08051FF8:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _0805200A
- bl sub_8051C24
- movs r0, 0x1
- b _0805200C
-_0805200A:
- movs r0, 0
-_0805200C:
- add sp, 0x34
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8051C58
-
- thumb_func_start sub_805201C
-sub_805201C: @ 805201C
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- adds r6, r1, 0
- movs r0, 0xFF
- strb r0, [r6]
- ldr r1, _080520B0 @ =gPokeblockNames
- ldrb r0, [r5]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r6, 0
- bl StringCopy
- ldr r1, _080520B4 @ =gOtherText_PokeBlockMade
- adds r0, r6, 0
- bl StringAppend
- ldr r1, _080520B8 @ =gUnknown_082162C8
- adds r0, r6, 0
- bl StringAppend
- adds r0, r5, 0
- bl sub_810C9B0
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl sub_810C9E8
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r1, _080520BC @ =gOtherText_BlockLevelIs
- adds r0, r6, 0
- bl StringAppend
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- ldr r1, _080520C0 @ =gOtherText_BlockFeelIs
- adds r0, r6, 0
- bl StringAppend
- mov r0, sp
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r0, r6, 0
- mov r1, sp
- bl StringAppend
- ldr r1, _080520C4 @ =gOtherText_Period
- adds r0, r6, 0
- bl StringAppend
- ldr r1, _080520C8 @ =gUnknown_08216249
- adds r0, r6, 0
- bl StringAppend
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080520B0: .4byte gPokeblockNames
-_080520B4: .4byte gOtherText_PokeBlockMade
-_080520B8: .4byte gUnknown_082162C8
-_080520BC: .4byte gOtherText_BlockLevelIs
-_080520C0: .4byte gOtherText_BlockFeelIs
-_080520C4: .4byte gOtherText_Period
-_080520C8: .4byte gUnknown_08216249
- thumb_func_end sub_805201C
-
- thumb_func_start sub_80520CC
-sub_80520CC: @ 80520CC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- mov r9, r0
- mov r12, r2
- lsls r1, 24
- lsrs r7, r1, 24
- movs r0, 0
- cmp r0, r7
- bge _08052118
-_080520E2:
- movs r5, 0
- adds r1, r0, 0x1
- mov r8, r1
- cmp r5, r7
- bge _08052112
- mov r1, r9
- adds r6, r1, r0
-_080520F0:
- ldrb r4, [r6]
- lsls r1, r4, 2
- add r1, r12
- mov r0, r9
- adds r2, r0, r5
- ldrb r3, [r2]
- lsls r0, r3, 2
- add r0, r12
- ldr r1, [r1]
- ldr r0, [r0]
- cmp r1, r0
- bls _0805210C
- strb r3, [r6]
- strb r4, [r2]
-_0805210C:
- adds r5, 0x1
- cmp r5, r7
- blt _080520F0
-_08052112:
- mov r0, r8
- cmp r0, r7
- blt _080520E2
-_08052118:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80520CC
-
- thumb_func_start sub_8052124
-sub_8052124: @ 8052124
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- movs r5, 0
- ldr r1, _08052144 @ =gUnknown_03004854
- ldr r0, [r1]
- adds r0, 0x88
- mov r10, r1
- mov r2, sp
- adds r2, 0x4
- str r2, [sp, 0x14]
- b _08052158
- .align 2, 0
-_08052144: .4byte gUnknown_03004854
-_08052148:
- mov r4, sp
- adds r0, r4, r5
- strb r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r1]
- adds r0, 0x88
-_08052158:
- ldrb r0, [r0]
- cmp r5, r0
- bcc _08052148
- movs r5, 0
- mov r1, r10
- ldr r0, [r1]
- adds r1, r0, 0
- adds r1, 0x88
- ldrb r2, [r1]
- cmp r5, r2
- bcs _080521D6
- ldr r4, [sp, 0x14]
- mov r9, r4
- movs r2, 0xA6
- lsls r2, 1
- adds r2, r0
- mov r8, r2
- mov r12, r1
- movs r4, 0xA7
- lsls r4, 1
- adds r7, r0, r4
- movs r1, 0xA8
- lsls r1, 1
- adds r6, r0, r1
-_08052188:
- lsls r4, r5, 2
- add r4, r9
- lsls r3, r5, 1
- adds r3, r5
- lsls r3, 1
- mov r2, r8
- adds r0, r2, r3
- ldrh r2, [r0]
- lsls r0, r2, 5
- subs r0, r2
- lsls r1, r0, 6
- subs r1, r0
- lsls r1, 3
- adds r1, r2
- lsls r1, 6
- str r1, [r4]
- adds r0, r7, r3
- ldrh r2, [r0]
- lsls r0, r2, 5
- subs r0, r2
- lsls r0, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0
- str r1, [r4]
- movs r0, 0xFA
- lsls r0, 2
- adds r1, r0
- adds r3, r6, r3
- ldrh r0, [r3]
- subs r1, r0
- str r1, [r4]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- mov r1, r12
- ldrb r1, [r1]
- cmp r5, r1
- bcc _08052188
-_080521D6:
- mov r2, r10
- ldr r0, [r2]
- adds r0, 0x88
- ldrb r1, [r0]
- mov r0, sp
- ldr r2, [sp, 0x14]
- bl sub_80520CC
- movs r5, 0
- mov r4, r10
- ldr r0, [r4]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r5, r0
- bcs _08052218
- mov r2, r10
- movs r3, 0xB2
- lsls r3, 1
-_080521FA:
- ldr r1, [r2]
- adds r1, r3
- adds r1, r5
- mov r4, sp
- adds r0, r4, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r2]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080521FA
-_08052218:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8052124
-
- thumb_func_start sub_8052228
-sub_8052228: @ 8052228
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r1, _08052248 @ =gUnknown_03004854
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x6
- bls _0805223C
- b _080524AE
-_0805223C:
- lsls r0, 2
- ldr r1, _0805224C @ =_08052250
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08052248: .4byte gUnknown_03004854
-_0805224C: .4byte _08052250
- .align 2, 0
-_08052250:
- .4byte _0805226C
- .4byte _08052282
- .4byte _0805229C
- .4byte _080522B6
- .4byte _08052464
- .4byte _0805247E
- .4byte _080524A4
-_0805226C:
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0x98
- lsls r1, 1
- adds r0, r1
- movs r1, 0xFF
- str r1, [r0]
- b _080524AE
-_08052282:
- ldr r1, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- subs r0, 0xA
- str r0, [r2]
- cmp r0, 0
- blt _08052296
- b _080524AE
-_08052296:
- movs r0, 0
- str r0, [r2]
- b _08052494
-_0805229C:
- ldr r1, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- ldr r0, [r2]
- adds r0, 0x1
- str r0, [r2]
- cmp r0, 0x14
- bgt _080522B0
- b _080524AE
-_080522B0:
- movs r0, 0
- str r0, [r2]
- b _08052494
-_080522B6:
- movs r0, 0x4
- movs r1, 0x2
- movs r2, 0x19
- movs r3, 0x11
- bl MenuDrawTextWindow
- ldr r0, _0805236C @ =gOtherText_Ranking
- movs r1, 0x5
- movs r2, 0x3
- movs r3, 0xA0
- bl sub_8072BD8
- ldr r6, _08052370 @ =gSpriteTemplate_821645C
- adds r0, r6, 0
- movs r1, 0x8C
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r7, _08052374 @ =gUnknown_03004854
- ldr r1, [r7]
- adds r1, 0x50
- strb r0, [r1]
- ldr r1, _08052378 @ =gSprites
- mov r8, r1
- ldr r2, [r7]
- adds r2, 0x50
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- mov r5, r8
- adds r5, 0x1C
- adds r0, r5
- ldr r4, _0805237C @ =SpriteCallbackDummy
- str r4, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x3
- bl StartSpriteAnim
- adds r0, r6, 0
- movs r1, 0xA4
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x51
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x51
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- str r4, [r0]
- adds r0, r6, 0
- movs r1, 0xBC
- movs r2, 0x34
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x52
- strb r0, [r1]
- ldr r2, [r7]
- adds r2, 0x52
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- str r4, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x1
- bl StartSpriteAnim
- bl sub_8052124
- movs r2, 0
- mov r8, r2
- b _0805243C
- .align 2, 0
-_0805236C: .4byte gOtherText_Ranking
-_08052370: .4byte gSpriteTemplate_821645C
-_08052374: .4byte gUnknown_03004854
-_08052378: .4byte gSprites
-_0805237C: .4byte SpriteCallbackDummy
-_08052380:
- ldr r1, [r7]
- movs r2, 0xB2
- lsls r2, 1
- adds r0, r1, r2
- add r0, r8
- ldrb r5, [r0]
- adds r2, r1, 0
- adds r2, 0xAB
- movs r0, 0xFC
- strb r0, [r2]
- movs r0, 0x13
- strb r0, [r2, 0x1]
- movs r0, 0x4
- strb r0, [r2, 0x2]
- adds r2, 0x3
- mov r6, r8
- adds r6, 0x1
- adds r0, r2, 0
- adds r1, r6, 0
- bl ConvertIntToDecimalString
- adds r2, r0, 0
- movs r1, 0
- strb r1, [r2]
- movs r0, 0xAD
- strb r0, [r2, 0x1]
- strb r1, [r2, 0x2]
- adds r2, 0x3
- lsls r1, r5, 3
- subs r1, r5
- lsls r1, 2
- ldr r0, _08052458 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r2, 0
- bl StringCopy
- adds r2, r0, 0
- ldr r0, [r7]
- lsls r4, r5, 1
- adds r4, r5
- lsls r4, 1
- movs r1, 0xA6
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x6C
- movs r3, 0x1
- bl sub_8072C14
- adds r2, r0, 0
- ldr r0, [r7]
- movs r1, 0xA7
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x84
- movs r3, 0x1
- bl sub_8072C14
- adds r2, r0, 0
- ldr r0, [r7]
- movs r1, 0xA8
- lsls r1, 1
- adds r0, r1
- adds r0, r4
- ldrh r1, [r0]
- adds r0, r2, 0
- movs r2, 0x9C
- movs r3, 0x1
- bl sub_8072C14
- ldr r1, [r7]
- adds r0, r1, 0
- adds r0, 0xAB
- ldr r2, _0805245C @ =gUnknown_082165F3
- adds r1, 0x88
- ldrb r1, [r1]
- adds r1, r2
- ldrb r1, [r1]
- mov r2, r8
- muls r2, r1
- adds r2, 0x8
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0x5
- bl MenuPrint
- lsls r6, 16
- lsrs r6, 16
- mov r8, r6
-_0805243C:
- ldr r0, [r7]
- adds r0, 0x88
- ldrb r0, [r0]
- cmp r8, r0
- bcc _08052380
- ldr r0, _08052460 @ =gUnknown_03004854
- ldr r1, [r0]
- movs r0, 0x98
- lsls r0, 1
- adds r2, r1, r0
- movs r0, 0
- str r0, [r2]
- b _08052494
- .align 2, 0
-_08052458: .4byte gLinkPlayers + 0x8
-_0805245C: .4byte gUnknown_082165F3
-_08052460: .4byte gUnknown_03004854
-_08052464:
- ldr r2, [r2]
- movs r0, 0x98
- lsls r0, 1
- adds r1, r2, r0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- ble _080524AE
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
- b _080524AE
-_0805247E:
- ldr r0, _0805249C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080524AE
- movs r0, 0x5
- bl PlaySE
- ldr r0, _080524A0 @ =gUnknown_03004854
- ldr r1, [r0]
-_08052494:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080524AE
- .align 2, 0
-_0805249C: .4byte gMain
-_080524A0: .4byte gUnknown_03004854
-_080524A4:
- ldr r1, [r2]
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- b _080524B0
-_080524AE:
- movs r0, 0
-_080524B0:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8052228
-
- thumb_func_start unref_sub_80524BC
-unref_sub_80524BC: @ 80524BC
- push {r4,lr}
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, _0805251C @ =sub_804E2D8
- bl SetVBlankCallback
- ldr r4, _08052520 @ =gWindowConfig_81E6CE4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r0, _08052524 @ =gMain
- ldrh r0, [r0, 0x20]
- bl SeedRng
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xAA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r1, _08052528 @ =gUnknown_03000560
- movs r0, 0xFA
- lsls r0, 5
- strh r0, [r1, 0x1A]
- ldrb r0, [r1, 0x10]
- adds r0, 0x1
- strb r0, [r1, 0x10]
- ldr r0, _0805252C @ =sub_8052AF8
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805251C: .4byte sub_804E2D8
-_08052520: .4byte gWindowConfig_81E6CE4
-_08052524: .4byte gMain
-_08052528: .4byte gUnknown_03000560
-_0805252C: .4byte sub_8052AF8
- thumb_func_end unref_sub_80524BC
-
- thumb_func_start sub_8052530
-sub_8052530: @ 8052530
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x98
- ldr r1, _080525C8 @ =gOtherText_BPMAndDash
- mov r0, sp
- bl StringCopy
- mov r0, sp
- movs r1, 0x2
- movs r2, 0
- bl MenuPrint
- ldr r4, _080525CC @ =gUnknown_03000560
- movs r1, 0x1A
- ldrsh r0, [r4, r1]
- movs r1, 0x64
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- asrs r1, 16
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- mov r0, sp
- movs r1, 0x6
- movs r2, 0
- bl MenuPrint
- movs r6, 0
- mov r2, sp
- adds r2, 0x3
- str r2, [sp, 0x84]
- mov r3, sp
- adds r3, 0x6
- str r3, [sp, 0x88]
- mov r0, sp
- adds r0, 0x9
- str r0, [sp, 0x8C]
- mov r1, sp
- adds r1, 0xC
- str r1, [sp, 0x90]
- adds r2, 0xC
- str r2, [sp, 0x94]
- mov r8, r4
- mov r7, sp
- ldr r3, _080525D0 @ =gBerries
- mov r9, r3
- ldr r0, _080525D4 @ =gUnknown_082165F8
- mov r10, r0
-_0805259E:
- mov r1, r8
- movs r0, 0
- ldrsb r0, [r1, r0]
- cmp r0, r6
- bne _080525D8
- movs r0, 0xEF
- strb r0, [r7]
- mov r0, r8
- adds r0, 0x1
- adds r0, r6, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, 0x85
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- adds r1, 0x1
- bl CopyItemName
- b _080525F8
- .align 2, 0
-_080525C8: .4byte gOtherText_BPMAndDash
-_080525CC: .4byte gUnknown_03000560
-_080525D0: .4byte gBerries
-_080525D4: .4byte gUnknown_082165F8
-_080525D8:
- mov r0, r8
- adds r0, 0x1
- adds r0, r6, r0
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- adds r0, 0x85
- lsls r0, 16
- lsrs r0, 16
- mov r1, sp
- bl CopyItemName
- movs r0, 0
- strb r0, [r7, 0x6]
- movs r0, 0xFF
- strb r0, [r7, 0x7]
-_080525F8:
- lsls r5, r6, 1
- adds r5, r6
- adds r5, 0x3
- lsls r5, 24
- lsrs r5, 24
- mov r0, sp
- movs r1, 0x2
- adds r2, r5, 0
- bl MenuPrint
- mov r4, r8
- adds r4, 0x1
- adds r4, r6, r4
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x15]
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x16]
- ldr r0, [sp, 0x84]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x17]
- ldr r0, [sp, 0x88]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x18]
- ldr r0, [sp, 0x8C]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x19]
- ldr r0, [sp, 0x90]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- mov r0, sp
- mov r1, r10
- bl StringAppend
- movs r1, 0
- ldrsb r1, [r4, r1]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x1A]
- ldr r0, [sp, 0x94]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- movs r2, 0x1
- negs r2, r2
- add r3, sp, 0x80
- strb r2, [r3]
- movs r0, 0xFF
- strb r0, [r7, 0x11]
- mov r0, sp
- movs r1, 0x7
- adds r2, r5, 0
- bl MenuPrint
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x3
- bhi _080526EC
- b _0805259E
-_080526EC:
- mov r1, r8
- ldrb r0, [r1, 0x8]
- cmp r0, 0
- beq _080527A4
- ldr r1, _080527B4 @ =gPokeblockNames
- mov r2, r8
- ldrb r0, [r2, 0x8]
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- mov r0, sp
- bl StringCopy
- mov r0, sp
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- mov r3, r8
- ldrb r1, [r3, 0x11]
- mov r0, sp
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- ldr r4, _080527B8 @ =gUnknown_082165F8
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r0, r8
- ldrb r1, [r0, 0x12]
- ldr r0, [sp, 0x84]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r2, r8
- ldrb r1, [r2, 0x13]
- ldr r0, [sp, 0x88]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r3, r8
- ldrb r1, [r3, 0x14]
- ldr r0, [sp, 0x8C]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r0, r8
- ldrb r1, [r0, 0x15]
- ldr r0, [sp, 0x90]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r4, 0
- bl StringAppend
- mov r2, r8
- ldrb r1, [r2, 0x16]
- ldr r0, [sp, 0x94]
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToHexStringN
- mov r1, sp
- ldrb r0, [r1, 0x11]
- add r3, sp, 0x80
- ldrb r3, [r3]
- orrs r0, r3
- strb r0, [r1, 0x11]
- mov r0, sp
- movs r1, 0x7
- movs r2, 0x11
- bl MenuPrint
-_080527A4:
- add sp, 0x98
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080527B4: .4byte gPokeblockNames
-_080527B8: .4byte gUnknown_082165F8
- thumb_func_end sub_8052530
-
- thumb_func_start sub_80527BC
-sub_80527BC: @ 80527BC
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x58
- ldr r0, _08052844 @ =gUnknown_020297DC
- ldrb r0, [r0]
- add r6, sp, 0x48
- cmp r0, 0x1
- bne _08052814
- movs r1, 0
- ldr r3, _08052848 @ =gUnknown_03004840
- movs r2, 0
-_080527D6:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x9
- bls _080527D6
- bl Random
- ldr r1, _0805284C @ =gUnknown_03004830
- strh r0, [r1]
- ldr r1, _08052850 @ =gUnknown_020297E0
- movs r0, 0
- str r0, [r1]
- ldr r1, _08052844 @ =gUnknown_020297DC
- movs r0, 0x2
- strb r0, [r1]
- movs r4, 0
- ldr r2, _08052854 @ =0x02000000
- movs r1, 0
-_08052800:
- adds r0, r4, r2
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xC7
- bls _08052800
- ldr r1, _08052858 @ =gUnknown_020297E8
- movs r0, 0
- strb r0, [r1]
-_08052814:
- movs r4, 0
- movs r0, 0x1
- mov r8, r0
- ldr r7, _08052858 @ =gUnknown_020297E8
- ldr r5, _08052850 @ =gUnknown_020297E0
- ldr r1, _08052854 @ =0x02000000
- mov r9, r1
- ldr r3, _0805285C @ =gUnknown_020297E4
-_08052824:
- str r3, [sp, 0x54]
- bl Random
- lsls r0, 16
- lsrs r0, 31
- mov r1, r8
- ands r0, r1
- ldr r3, [sp, 0x54]
- ldrb r1, [r7]
- cmp r0, r1
- bne _08052860
- ldr r0, [r5]
- adds r0, 0x1
- str r0, [r5]
- b _0805287A
- .align 2, 0
-_08052844: .4byte gUnknown_020297DC
-_08052848: .4byte gUnknown_03004840
-_0805284C: .4byte gUnknown_03004830
-_08052850: .4byte gUnknown_020297E0
-_08052854: .4byte 0x02000000
-_08052858: .4byte gUnknown_020297E8
-_0805285C: .4byte gUnknown_020297E4
-_08052860:
- ldr r2, [r3]
- lsls r0, r2, 1
- add r0, r9
- ldr r1, [r5]
- strh r1, [r0]
- adds r2, 0x1
- str r2, [r3]
- movs r0, 0
- str r0, [r5]
- ldrb r0, [r7]
- mov r1, r8
- eors r0, r1
- strb r0, [r7]
-_0805287A:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x63
- bls _08052824
- mov r1, sp
- movs r0, 0xFF
- strb r0, [r1]
- ldr r0, _08052900 @ =gUnknown_03004830
- ldrh r1, [r0]
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x8
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r6, 0
- bl StringAppend
- ldr r1, _08052904 @ =gUnknown_082165F8
- mov r0, sp
- bl StringAppend
- ldr r0, _08052908 @ =gUnknown_020297E0
- ldr r1, [r0]
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x8
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r6, 0
- bl StringAppend
- ldr r1, _0805290C @ =gUnknown_08216600
- mov r0, sp
- bl StringAppend
- ldr r4, _08052910 @ =gUnknown_020297DC
- ldrb r0, [r4]
- cmp r0, 0x3
- bne _080528E8
- ldr r0, _08052914 @ =gUnknown_020297E4
- ldr r1, [r0]
- adds r0, r6, 0
- movs r2, 0x2
- movs r3, 0x10
- bl ConvertIntToHexStringN
- mov r0, sp
- adds r1, r6, 0
- bl StringAppend
- movs r0, 0
- strb r0, [r4]
-_080528E8:
- mov r0, sp
- movs r1, 0x2
- movs r2, 0xF
- bl MenuPrint
- add sp, 0x58
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08052900: .4byte gUnknown_03004830
-_08052904: .4byte gUnknown_082165F8
-_08052908: .4byte gUnknown_020297E0
-_0805290C: .4byte gUnknown_08216600
-_08052910: .4byte gUnknown_020297DC
-_08052914: .4byte gUnknown_020297E4
- thumb_func_end sub_80527BC
-
- thumb_func_start sub_8052918
-sub_8052918: @ 8052918
- push {r4-r6,lr}
- sub sp, 0x4C
- ldr r2, _08052A88 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- ldr r4, _08052A8C @ =gUnknown_03000560
- cmp r0, 0
- beq _0805294C
- movs r1, 0xFA
- lsls r1, 2
- adds r0, r1, 0
- ldrh r1, [r4, 0x1A]
- adds r0, r1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- ldr r1, _08052A90 @ =0x75300000
- cmp r0, r1
- ble _08052946
- movs r0, 0xFA
- lsls r0, 2
- strh r0, [r4, 0x1A]
-_08052946:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_0805294C:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _08052972
- ldr r1, _08052A94 @ =0xfffffc18
- adds r0, r1, 0
- ldrh r1, [r4, 0x1A]
- adds r0, r1
- strh r0, [r4, 0x1A]
- lsls r0, 16
- cmp r0, 0
- bge _0805296C
- ldr r0, _08052A98 @ =0x00007530
- strh r0, [r4, 0x1A]
-_0805296C:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_08052972:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08052992
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- lsls r0, 24
- cmp r0, 0
- bge _0805298C
- movs r0, 0x3
- strb r0, [r4]
-_0805298C:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_08052992:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080529B4
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x3
- ble _080529AE
- movs r0, 0
- strb r0, [r4]
-_080529AE:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_080529B4:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080529E4
- adds r3, r4, 0
- movs r1, 0
- ldrsb r1, [r3, r1]
- adds r5, r3, 0x1
- adds r1, r5
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- cmp r0, 0
- bge _080529DE
- movs r0, 0
- ldrsb r0, [r3, r0]
- adds r0, r5
- movs r1, 0x2A
- strb r1, [r0]
-_080529DE:
- ldrb r0, [r4, 0x10]
- adds r0, 0x1
- strb r0, [r4, 0x10]
-_080529E4:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08052A16
- ldr r3, _08052A8C @ =gUnknown_03000560
- movs r1, 0
- ldrsb r1, [r3, r1]
- adds r4, r3, 0x1
- adds r1, r4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- asrs r0, 24
- cmp r0, 0x2A
- ble _08052A10
- movs r0, 0
- ldrsb r0, [r3, r0]
- adds r0, r4
- movs r1, 0
- strb r1, [r0]
-_08052A10:
- ldrb r0, [r3, 0x10]
- adds r0, 0x1
- strb r0, [r3, 0x10]
-_08052A16:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08052AA0
- movs r6, 0
- movs r4, 0
- ldr r5, _08052A8C @ =gUnknown_03000560
-_08052A26:
- adds r0, r5, 0x1
- adds r2, r4, r0
- movs r0, 0
- ldrsb r0, [r2, r0]
- cmp r0, 0x2A
- beq _08052A64
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- lsls r0, r4, 1
- mov r1, sp
- adds r1, r0
- adds r1, 0x4
- movs r0, 0
- ldrsb r0, [r2, r0]
- strh r0, [r1]
- add r0, sp, 0xC
- lsls r1, r4, 4
- adds r0, r1
- movs r1, 0
- ldrsb r1, [r2, r1]
- adds r1, 0x85
- lsls r1, 16
- lsrs r1, 16
- bl sub_804E844
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08052A26
-_08052A64:
- cmp r6, 0x1
- bls _08052A9C
- add r0, sp, 0xC
- adds r1, r5, 0
- adds r1, 0x8
- lsls r2, r6, 24
- lsrs r2, 24
- adds r3, r5, 0
- adds r3, 0x11
- ldrh r4, [r5, 0x1A]
- str r4, [sp]
- bl sub_8050744
- ldrb r0, [r5, 0x10]
- adds r0, 0x1
- strb r0, [r5, 0x10]
- b _08052AA0
- .align 2, 0
-_08052A88: .4byte gMain
-_08052A8C: .4byte gUnknown_03000560
-_08052A90: .4byte 0x75300000
-_08052A94: .4byte 0xfffffc18
-_08052A98: .4byte 0x00007530
-_08052A9C:
- movs r0, 0xFF
- strb r0, [r5, 0x8]
-_08052AA0:
- ldr r4, _08052AE8 @ =gUnknown_03000560
- ldrb r0, [r4, 0x10]
- cmp r0, 0
- beq _08052AB0
- bl sub_8052530
- movs r0, 0
- strb r0, [r4, 0x10]
-_08052AB0:
- ldr r3, _08052AEC @ =gMain
- ldrh r1, [r3, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _08052AD4
- ldr r2, _08052AF0 @ =gUnknown_020297DC
- ldrb r0, [r2]
- adds r1, r0, 0
- cmp r1, 0
- bne _08052ADC
- adds r0, 0x1
- strb r0, [r2]
- ldr r0, _08052AF4 @ =gUnknown_020297E0
- str r1, [r0]
- ldrh r0, [r3, 0x20]
- bl SeedRng
-_08052AD4:
- ldr r0, _08052AF0 @ =gUnknown_020297DC
- ldrb r0, [r0]
- cmp r0, 0
- beq _08052AE0
-_08052ADC:
- bl sub_80527BC
-_08052AE0:
- add sp, 0x4C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08052AE8: .4byte gUnknown_03000560
-_08052AEC: .4byte gMain
-_08052AF0: .4byte gUnknown_020297DC
-_08052AF4: .4byte gUnknown_020297E0
- thumb_func_end sub_8052918
-
- thumb_func_start sub_8052AF8
-sub_8052AF8: @ 8052AF8
- push {lr}
- bl sub_8052918
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8052AF8
-
- thumb_func_start ShowBerryBlenderRecordWindow
-ShowBerryBlenderRecordWindow: @ 8052B14
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x20
- movs r0, 0x6
- movs r1, 0x3
- movs r2, 0x17
- movs r3, 0x10
- bl MenuDrawTextWindow
- ldr r0, _08052BBC @ =gMultiText_BerryBlenderMaxSpeedRecord
- movs r1, 0x8
- movs r2, 0x4
- bl MenuPrint
- ldr r0, _08052BC0 @ =gMultiText_2P3P4P
- movs r1, 0x8
- movs r2, 0x9
- bl MenuPrint
- movs r0, 0
- mov r8, r0
- ldr r0, _08052BC4 @ =gSaveBlock1
- movs r7, 0x90
- lsls r7, 20
- ldr r1, _08052BC8 @ =0x0000096c
- adds r6, r0, r1
- movs r0, 0
- mov r9, r0
-_08052B50:
- ldrh r4, [r6]
- adds r0, r4, 0
- movs r1, 0x64
- bl __udivsi3
- adds r1, r0, 0
- mov r0, sp
- movs r2, 0x12
- movs r3, 0x1
- bl sub_8072C14
- adds r5, r0, 0
- mov r1, r9
- strb r1, [r5]
- movs r0, 0xAD
- strb r0, [r5, 0x1]
- strb r1, [r5, 0x2]
- adds r5, 0x3
- adds r0, r4, 0
- movs r1, 0x64
- bl __umodsi3
- adds r1, r0, 0
- adds r0, r5, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r5, r0, 0
- ldr r1, _08052BCC @ =gOtherText_RPM
- bl StringAppend
- lsrs r2, r7, 24
- mov r0, sp
- movs r1, 0xF
- bl MenuPrint
- movs r0, 0x80
- lsls r0, 18
- adds r7, r0
- adds r6, 0x2
- movs r1, 0x1
- add r8, r1
- mov r0, r8
- cmp r0, 0x2
- ble _08052B50
- add sp, 0x20
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08052BBC: .4byte gMultiText_BerryBlenderMaxSpeedRecord
-_08052BC0: .4byte gMultiText_2P3P4P
-_08052BC4: .4byte gSaveBlock1
-_08052BC8: .4byte 0x0000096c
-_08052BCC: .4byte gOtherText_RPM
- thumb_func_end ShowBerryBlenderRecordWindow
-
- thumb_func_start sub_8052BD0
-sub_8052BD0: @ 8052BD0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- ldr r1, _08052C1C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08052BF6
- ldr r0, _08052C20 @ =0x0000016f
- bl PlayFanfare
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
-_08052BF6:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08052C16
- ldr r0, _08052C24 @ =gUnknown_03004854
- ldr r0, [r0]
- movs r1, 0xBC
- lsls r1, 1
- adds r0, r1
- ldrh r0, [r0]
- bl PlayBGM
- adds r0, r5, 0
- bl DestroyTask
-_08052C16:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08052C1C: .4byte gTasks
-_08052C20: .4byte 0x0000016f
-_08052C24: .4byte gUnknown_03004854
- thumb_func_end sub_8052BD0
diff --git a/asm/cable_car.s b/asm/cable_car.s
index e4d989844..385cd404d 100644
--- a/asm/cable_car.s
+++ b/asm/cable_car.s
@@ -256,22 +256,22 @@ _081233EC:
ldr r0, _0812345C @ =gCableCarMtChimneyTilemap
ldr r4, _08123460 @ =0x02019000
adds r1, r4, 0
- bl sub_800D238
+ bl LZDecompressWram
ldr r0, _08123464 @ =gCableCarTreeTilemap
movs r2, 0xB4
lsls r2, 1
adds r1, r4, r2
- bl sub_800D238
+ bl LZDecompressWram
ldr r0, _08123468 @ =gCableCarMountainTilemap
movs r2, 0xA5
lsls r2, 3
adds r1, r4, r2
- bl sub_800D238
+ bl LZDecompressWram
ldr r0, _0812346C @ =gCableCarPylonStemTilemap
ldr r1, _08123470 @ =0x000009d8
adds r4, r1
adds r1, r4, 0
- bl sub_800D238
+ bl LZDecompressWram
ldr r0, _08123474 @ =gCableCarBG_Pal
movs r1, 0
movs r2, 0x80
diff --git a/asm/cable_club.s b/asm/cable_club.s
deleted file mode 100644
index 68804ca21..000000000
--- a/asm/cable_club.s
+++ /dev/null
@@ -1,1671 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8082CD4
-sub_8082CD4: @ 8082CD4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r4, _08082D10 @ =sub_8082F20
- adds r0, r4, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _08082D08
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08082D14 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r6, [r1, 0xA]
- strh r5, [r1, 0xC]
-_08082D08:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08082D10: .4byte sub_8082F20
-_08082D14: .4byte gTasks
- thumb_func_end sub_8082CD4
-
- thumb_func_start sub_8082D18
-sub_8082D18: @ 8082D18
- push {lr}
- adds r1, r0, 0
- ldr r0, _08082D44 @ =gStringVar1
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- movs r0, 0x12
- movs r1, 0xA
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuDrawTextWindow
- ldr r0, _08082D48 @ =gOtherText_PLink
- movs r1, 0x13
- movs r2, 0xB
- movs r3, 0x48
- bl sub_8072BD8
- pop {r0}
- bx r0
- .align 2, 0
-_08082D44: .4byte gStringVar1
-_08082D48: .4byte gOtherText_PLink
- thumb_func_end sub_8082D18
-
- thumb_func_start sub_8082D4C
-sub_8082D4C: @ 8082D4C
- push {lr}
- movs r0, 0x12
- movs r1, 0xA
- movs r2, 0x1C
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- pop {r0}
- bx r0
- thumb_func_end sub_8082D4C
-
- thumb_func_start sub_8082D60
-sub_8082D60: @ 8082D60
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08082D88 @ =gTasks + 0x8
- adds r1, r0
- adds r5, r1, 0x6
- movs r2, 0x6
- ldrsh r0, [r1, r2]
- cmp r4, r0
- beq _08082D94
- cmp r4, 0x1
- bhi _08082D8C
- bl sub_8082D4C
- b _08082D92
- .align 2, 0
-_08082D88: .4byte gTasks + 0x8
-_08082D8C:
- adds r0, r4, 0
- bl sub_8082D18
-_08082D92:
- strh r4, [r5]
-_08082D94:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8082D60
-
- thumb_func_start sub_8082D9C
-sub_8082D9C: @ 8082D9C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- bl GetLinkPlayerDataExchangeStatusTimed
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- beq _08082DEC
- cmp r0, 0x2
- bgt _08082DBC
- cmp r0, 0x1
- beq _08082DC2
- b _08082DEC
-_08082DBC:
- cmp r0, 0x3
- beq _08082DE8
- b _08082DEC
-_08082DC2:
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r4, r1
- bgt _08082DD6
- cmp r1, r5
- bgt _08082DD6
- movs r0, 0x1
- b _08082DEE
-_08082DD6:
- ldr r0, _08082DE4 @ =gStringVar1
- movs r2, 0
- movs r3, 0x1
- bl ConvertIntToDecimalStringN
- movs r0, 0x4
- b _08082DEE
- .align 2, 0
-_08082DE4: .4byte gStringVar1
-_08082DE8:
- movs r0, 0x3
- b _08082DEE
-_08082DEC:
- movs r0, 0
-_08082DEE:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8082D9C
-
- thumb_func_start sub_8082DF4
-sub_8082DF4: @ 8082DF4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl HasLinkErrorOccurred
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08082E0A
- movs r0, 0
- b _08082E1A
-_08082E0A:
- ldr r0, _08082E20 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08082E24 @ =sub_8083418
- str r0, [r1]
- movs r0, 0x1
-_08082E1A:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08082E20: .4byte gTasks
-_08082E24: .4byte sub_8083418
- thumb_func_end sub_8082DF4
-
- thumb_func_start sub_8082E28
-sub_8082E28: @ 8082E28
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08082E58 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08082E64
- bl IsLinkConnectionEstablished
- lsls r0, 24
- cmp r0, 0
- bne _08082E64
- ldr r0, _08082E5C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08082E60 @ =sub_80833EC
- str r0, [r1]
- movs r0, 0x1
- b _08082E66
- .align 2, 0
-_08082E58: .4byte gMain
-_08082E5C: .4byte gTasks
-_08082E60: .4byte sub_80833EC
-_08082E64:
- movs r0, 0
-_08082E66:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8082E28
-
- thumb_func_start sub_8082E6C
-sub_8082E6C: @ 8082E6C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl IsLinkConnectionEstablished
- lsls r0, 24
- cmp r0, 0
- beq _08082E82
- movs r0, 0x1
- bl SetSuppressLinkErrorMessage
-_08082E82:
- ldr r0, _08082E94 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08082E98
- movs r0, 0
- b _08082EA8
- .align 2, 0
-_08082E94: .4byte gMain
-_08082E98:
- ldr r0, _08082EB0 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08082EB4 @ =sub_80833EC
- str r0, [r1]
- movs r0, 0x1
-_08082EA8:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08082EB0: .4byte gTasks
-_08082EB4: .4byte sub_80833EC
- thumb_func_end sub_8082E6C
-
- thumb_func_start sub_8082EB8
-sub_8082EB8: @ 8082EB8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl GetSioMultiSI
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08082ECE
- movs r0, 0
- b _08082EDE
-_08082ECE:
- ldr r0, _08082EE4 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08082EE8 @ =sub_8083418
- str r0, [r1]
- movs r0, 0x1
-_08082EDE:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08082EE4: .4byte gTasks
-_08082EE8: .4byte sub_8083418
- thumb_func_end sub_8082EB8
-
- thumb_func_start unref_sub_8082EEC
-unref_sub_8082EEC: @ 8082EEC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08082F1C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _08082F16
- movs r0, 0x2
- bl sub_8007E9C
- adds r0, r4, 0
- bl DestroyTask
-_08082F16:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08082F1C: .4byte gTasks
- thumb_func_end unref_sub_8082EEC
-
- thumb_func_start sub_8082F20
-sub_8082F20: @ 8082F20
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _08082F48 @ =gTasks + 0x8
- adds r4, r1, r0
- movs r3, 0
- ldrsh r2, [r4, r3]
- cmp r2, 0
- bne _08082F4C
- bl OpenLinkTimed
- bl sub_80082EC
- bl ResetLinkPlayers
- b _08082F58
- .align 2, 0
-_08082F48: .4byte gTasks + 0x8
-_08082F4C:
- cmp r2, 0x9
- ble _08082F58
- subs r0, 0x8
- adds r0, r1, r0
- ldr r1, _08082F64 @ =sub_8082F68
- str r1, [r0]
-_08082F58:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08082F64: .4byte sub_8082F68
- thumb_func_end sub_8082F20
-
- thumb_func_start sub_8082F68
-sub_8082F68: @ 8082F68
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- bl sub_8082E28
- cmp r0, 0x1
- beq _08082FDC
- adds r0, r4, 0
- bl sub_8082E6C
- cmp r0, 0x1
- beq _08082FDC
- cmp r5, 0x1
- bls _08082FDC
- movs r0, 0x1
- bl SetSuppressLinkErrorMessage
- ldr r1, _08082FC0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r4, r0, r1
- movs r0, 0
- strh r0, [r4, 0xE]
- bl IsLinkMaster
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08082FCC
- movs r0, 0x15
- bl PlaySE
- ldr r0, _08082FC4 @ =gUnknown_081A4932
- bl ShowFieldAutoScrollMessage
- ldr r0, _08082FC8 @ =sub_8082FEC
- b _08082FDA
- .align 2, 0
-_08082FC0: .4byte gTasks
-_08082FC4: .4byte gUnknown_081A4932
-_08082FC8: .4byte sub_8082FEC
-_08082FCC:
- movs r0, 0x16
- bl PlaySE
- ldr r0, _08082FE4 @ =gUnknown_081A49B6
- bl ShowFieldAutoScrollMessage
- ldr r0, _08082FE8 @ =sub_80831F8
-_08082FDA:
- str r0, [r4]
-_08082FDC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08082FE4: .4byte gUnknown_081A49B6
-_08082FE8: .4byte sub_80831F8
- thumb_func_end sub_8082F68
-
- thumb_func_start sub_8082FEC
-sub_8082FEC: @ 8082FEC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl sub_8082E28
- cmp r0, 0x1
- beq _0808302C
- adds r0, r4, 0
- bl sub_8082EB8
- cmp r0, 0x1
- beq _0808302C
- adds r0, r4, 0
- bl sub_8082DF4
- cmp r0, 0x1
- beq _0808302C
- bl GetFieldMessageBoxMode
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0
- bne _0808302C
- ldr r0, _08083034 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- strh r2, [r1, 0xE]
- ldr r0, _08083038 @ =sub_808303C
- str r0, [r1]
-_0808302C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08083034: .4byte gTasks
-_08083038: .4byte sub_808303C
- thumb_func_end sub_8082FEC
-
-.section .text_80830E4
-
-
-
-
-
-
-
-
-
- thumb_func_start sub_80833C4
-sub_80833C4: @ 80833C4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080833E8 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080833E0
- bl sub_8082D4C
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
-_080833E0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080833E8: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_80833C4
-
- thumb_func_start sub_80833EC
-sub_80833EC: @ 80833EC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _08083414 @ =gScriptResult
- movs r0, 0x5
- strh r0, [r1]
- bl sub_8082D4C
- bl HideFieldMessageBox
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08083414: .4byte gScriptResult
- thumb_func_end sub_80833EC
-
- thumb_func_start sub_8083418
-sub_8083418: @ 8083418
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _08083440 @ =gScriptResult
- movs r0, 0x6
- strh r0, [r1]
- bl sub_8082D4C
- bl HideFieldMessageBox
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08083440: .4byte gScriptResult
- thumb_func_end sub_8083418
-
- thumb_func_start sub_8083444
-sub_8083444: @ 8083444
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08083468 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r2
- ldrh r0, [r2, 0x10]
- adds r0, 0x1
- strh r0, [r2, 0x10]
- lsls r0, 16
- movs r1, 0x96
- lsls r1, 18
- cmp r0, r1
- bgt _0808346C
- movs r0, 0
- b _08083472
- .align 2, 0
-_08083468: .4byte gTasks
-_0808346C:
- ldr r0, _08083478 @ =sub_8083418
- str r0, [r2]
- movs r0, 0x1
-_08083472:
- pop {r1}
- bx r1
- .align 2, 0
-_08083478: .4byte sub_8083418
- thumb_func_end sub_8083444
-
- thumb_func_start sub_808347C
-sub_808347C: @ 808347C
- push {r4,lr}
- movs r3, 0x2
- movs r2, 0x2
- ldr r0, _08083494 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x2
- beq _080834B0
- cmp r0, 0x2
- bgt _08083498
- cmp r0, 0x1
- beq _0808349E
- b _080834CC
- .align 2, 0
-_08083494: .4byte gSpecialVar_0x8004
-_08083498:
- cmp r0, 0x5
- beq _080834C0
- b _080834CC
-_0808349E:
- movs r3, 0x2
- ldr r1, _080834A8 @ =gLinkType
- ldr r4, _080834AC @ =0x00002233
- b _080834C8
- .align 2, 0
-_080834A8: .4byte gLinkType
-_080834AC: .4byte 0x00002233
-_080834B0:
- movs r3, 0x2
- ldr r1, _080834B8 @ =gLinkType
- ldr r4, _080834BC @ =0x00002244
- b _080834C8
- .align 2, 0
-_080834B8: .4byte gLinkType
-_080834BC: .4byte 0x00002244
-_080834C0:
- movs r3, 0x4
- movs r2, 0x4
- ldr r1, _080834DC @ =gLinkType
- ldr r4, _080834E0 @ =0x00002255
-_080834C8:
- adds r0, r4, 0
- strh r0, [r1]
-_080834CC:
- adds r0, r3, 0
- adds r1, r2, 0
- bl sub_8082CD4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080834DC: .4byte gLinkType
-_080834E0: .4byte 0x00002255
- thumb_func_end sub_808347C
-
- thumb_func_start sub_80834E4
-sub_80834E4: @ 80834E4
- push {lr}
- ldr r1, _08083500 @ =gLinkType
- ldr r2, _08083504 @ =0x00001133
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08083508 @ =gBattleTypeFlags
- movs r0, 0
- strh r0, [r1]
- movs r0, 0x2
- movs r1, 0x2
- bl sub_8082CD4
- pop {r0}
- bx r0
- .align 2, 0
-_08083500: .4byte gLinkType
-_08083504: .4byte 0x00001133
-_08083508: .4byte gBattleTypeFlags
- thumb_func_end sub_80834E4
-
- thumb_func_start sub_808350C
-sub_808350C: @ 808350C
- push {lr}
- ldr r0, _0808352C @ =gScriptResult
- movs r2, 0
- strh r2, [r0]
- ldr r1, _08083530 @ =gLinkType
- ldr r3, _08083534 @ =0x00003311
- adds r0, r3, 0
- strh r0, [r1]
- ldr r0, _08083538 @ =gBattleTypeFlags
- strh r2, [r0]
- movs r0, 0x2
- movs r1, 0x4
- bl sub_8082CD4
- pop {r0}
- bx r0
- .align 2, 0
-_0808352C: .4byte gScriptResult
-_08083530: .4byte gLinkType
-_08083534: .4byte 0x00003311
-_08083538: .4byte gBattleTypeFlags
- thumb_func_end sub_808350C
-
- thumb_func_start sub_808353C
-sub_808353C: @ 808353C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _0808355C @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08083560
- cmp r0, 0x1
- beq _080835BC
- b _080835CE
- .align 2, 0
-_0808355C: .4byte gTasks
-_08083560:
- ldr r0, _08083594 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0x1
- bne _08083586
- bl GetLinkPlayerCount
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- cmp r1, r0
- bge _08083586
- ldr r2, _08083598 @ =gLinkPlayers
-_08083578:
- ldrh r4, [r2, 0x1A]
- cmp r4, 0x1
- beq _0808359C
- adds r2, 0x1C
- adds r1, 0x1
- cmp r1, r0
- blt _08083578
-_08083586:
- bl EnableBothScriptContexts
- adds r0, r5, 0
- bl DestroyTask
- b _080835CE
- .align 2, 0
-_08083594: .4byte gScriptResult
-_08083598: .4byte gLinkPlayers
-_0808359C:
- ldr r1, _080835B4 @ =gScriptResult
- movs r0, 0x7
- strh r0, [r1]
- bl sub_8008480
- ldr r1, _080835B8 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- b _080835CE
- .align 2, 0
-_080835B4: .4byte gScriptResult
-_080835B8: .4byte gTasks
-_080835BC:
- ldr r0, _080835D4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080835CE
- bl EnableBothScriptContexts
- adds r0, r5, 0
- bl DestroyTask
-_080835CE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080835D4: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_808353C
-
- thumb_func_start sub_80835D8
-sub_80835D8: @ 80835D8
- push {r4,lr}
- ldr r4, _0808360C @ =sub_808353C
- adds r0, r4, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _08083604
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _08083610 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x8]
-_08083604:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808360C: .4byte sub_808353C
-_08083610: .4byte gTasks
- thumb_func_end sub_80835D8
-
- thumb_func_start sub_8083614
-sub_8083614: @ 8083614
- push {lr}
- ldr r1, _08083630 @ =gLinkType
- ldr r2, _08083634 @ =0x00004411
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08083638 @ =gBattleTypeFlags
- movs r0, 0
- strh r0, [r1]
- movs r0, 0x2
- movs r1, 0x4
- bl sub_8082CD4
- pop {r0}
- bx r0
- .align 2, 0
-_08083630: .4byte gLinkType
-_08083634: .4byte 0x00004411
-_08083638: .4byte gBattleTypeFlags
- thumb_func_end sub_8083614
-
- thumb_func_start sub_808363C
-sub_808363C: @ 808363C
- push {lr}
- ldr r1, _08083658 @ =gLinkType
- ldr r2, _0808365C @ =0x00006601
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _08083660 @ =gBattleTypeFlags
- movs r0, 0
- strh r0, [r1]
- movs r0, 0x4
- movs r1, 0x4
- bl sub_8082CD4
- pop {r0}
- bx r0
- .align 2, 0
-_08083658: .4byte gLinkType
-_0808365C: .4byte 0x00006601
-_08083660: .4byte gBattleTypeFlags
- thumb_func_end sub_808363C
-
- thumb_func_start sub_8083664
-sub_8083664: @ 8083664
- push {lr}
- ldr r0, _08083678 @ =sub_8083710
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _0808367C
- movs r0, 0xFF
- b _08083700
- .align 2, 0
-_08083678: .4byte sub_8083710
-_0808367C:
- ldr r0, _08083690 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- subs r0, 0x1
- cmp r0, 0x4
- bhi _080836F4
- lsls r0, 2
- ldr r1, _08083694 @ =_08083698
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08083690: .4byte gSpecialVar_0x8004
-_08083694: .4byte _08083698
- .align 2, 0
-_08083698:
- .4byte _080836AC
- .4byte _080836BC
- .4byte _080836DC
- .4byte _080836EC
- .4byte _080836CC
-_080836AC:
- ldr r1, _080836B4 @ =gLinkType
- ldr r2, _080836B8 @ =0x00002233
- b _080836F0
- .align 2, 0
-_080836B4: .4byte gLinkType
-_080836B8: .4byte 0x00002233
-_080836BC:
- ldr r1, _080836C4 @ =gLinkType
- ldr r2, _080836C8 @ =0x00002244
- b _080836F0
- .align 2, 0
-_080836C4: .4byte gLinkType
-_080836C8: .4byte 0x00002244
-_080836CC:
- ldr r1, _080836D4 @ =gLinkType
- ldr r2, _080836D8 @ =0x00002255
- b _080836F0
- .align 2, 0
-_080836D4: .4byte gLinkType
-_080836D8: .4byte 0x00002255
-_080836DC:
- ldr r1, _080836E4 @ =gLinkType
- ldr r2, _080836E8 @ =0x00001111
- b _080836F0
- .align 2, 0
-_080836E4: .4byte gLinkType
-_080836E8: .4byte 0x00001111
-_080836EC:
- ldr r1, _08083704 @ =gLinkType
- ldr r2, _08083708 @ =0x00003322
-_080836F0:
- adds r0, r2, 0
- strh r0, [r1]
-_080836F4:
- ldr r0, _0808370C @ =sub_8083710
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
-_08083700:
- pop {r1}
- bx r1
- .align 2, 0
-_08083704: .4byte gLinkType
-_08083708: .4byte 0x00003322
-_0808370C: .4byte sub_8083710
- thumb_func_end sub_8083664
-
- thumb_func_start sub_8083710
-sub_8083710: @ 8083710
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0808373C @ =gTasks + 0x8
- adds r4, r1, r0
- movs r3, 0
- ldrsh r2, [r4, r3]
- cmp r2, 0
- bne _08083744
- bl OpenLink
- bl ResetLinkPlayers
- ldr r0, _08083740 @ =sub_8083C50
- movs r1, 0x50
- bl CreateTask
- b _08083750
- .align 2, 0
-_0808373C: .4byte gTasks + 0x8
-_08083740: .4byte sub_8083C50
-_08083744:
- cmp r2, 0x9
- ble _08083750
- subs r0, 0x8
- adds r0, r1, r0
- ldr r1, _0808375C @ =sub_8083760
- str r1, [r0]
-_08083750:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808375C: .4byte sub_8083760
- thumb_func_end sub_8083710
-
- thumb_func_start sub_8083760
-sub_8083760: @ 8083760
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- bl GetLinkPlayerCount_2
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bls _080837A6
- bl IsLinkMaster
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08083798
- ldr r0, _08083790 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08083794 @ =sub_80837B4
- b _080837A4
- .align 2, 0
-_08083790: .4byte gTasks
-_08083794: .4byte sub_80837B4
-_08083798:
- ldr r0, _080837AC @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080837B0 @ =sub_80837EC
-_080837A4:
- str r0, [r1]
-_080837A6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080837AC: .4byte gTasks
-_080837B0: .4byte sub_80837EC
- thumb_func_end sub_8083760
-
- thumb_func_start sub_80837B4
-sub_80837B4: @ 80837B4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- bl sub_800820C
- adds r4, r0, 0
- bl GetLinkPlayerCount_2
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bne _080837DE
- bl sub_8007F4C
- ldr r0, _080837E4 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080837E8 @ =sub_80837EC
- str r0, [r1]
-_080837DE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080837E4: .4byte gTasks
-_080837E8: .4byte sub_80837EC
- thumb_func_end sub_80837B4
-
- thumb_func_start sub_80837EC
-sub_80837EC: @ 80837EC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808381C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08083814
- bl IsLinkPlayerDataExchangeComplete
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08083814
- bl sub_800826C
- bl sub_8007B14
- adds r0, r4, 0
- bl DestroyTask
-_08083814:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808381C: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_80837EC
-
- thumb_func_start sub_8083820
-sub_8083820: @ 8083820
- push {lr}
- bl InitSaveDialog
- pop {r0}
- bx r0
- thumb_func_end sub_8083820
-
- thumb_func_start sub_808382C
-sub_808382C: @ 808382C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08083850 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x5
- bls _08083846
- b _08083940
-_08083846:
- lsls r0, 2
- ldr r1, _08083854 @ =_08083858
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08083850: .4byte gTasks
-_08083854: .4byte _08083858
- .align 2, 0
-_08083858:
- .4byte _08083870
- .4byte _08083890
- .4byte _080838A0
- .4byte _080838B0
- .4byte _080838B6
- .4byte _080838CC
-_08083870:
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- ldr r1, _08083888 @ =gLinkType
- ldr r2, _0808388C @ =0x00002211
- adds r0, r2, 0
- strh r0, [r1]
- bl ClearLinkCallback_2
- b _080838BE
- .align 2, 0
-_08083888: .4byte gLinkType
-_0808388C: .4byte 0x00002211
-_08083890:
- ldr r0, _0808389C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- b _080838BA
- .align 2, 0
-_0808389C: .4byte gPaletteFade
-_080838A0:
- ldrh r0, [r4, 0xA]
- adds r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _08083940
- b _080838BE
-_080838B0:
- bl sub_800832C
- b _080838BE
-_080838B6:
- ldr r0, _080838C8 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
-_080838BA:
- cmp r0, 0
- bne _08083940
-_080838BE:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08083940
- .align 2, 0
-_080838C8: .4byte gReceivedRemoteLinkPlayers
-_080838CC:
- ldr r0, _080838E4 @ =gLinkPlayers
- ldr r0, [r0, 0x4]
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080838E8
- movs r0, 0xE6
- lsls r0, 1
- bl current_map_music_set__default_for_battle
- b _080838EE
- .align 2, 0
-_080838E4: .4byte gLinkPlayers
-_080838E8:
- ldr r0, _08083900 @ =0x000001cb
- bl current_map_music_set__default_for_battle
-_080838EE:
- ldr r0, _08083904 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x2
- beq _08083918
- cmp r0, 0x2
- bgt _08083908
- cmp r0, 0x1
- beq _0808390E
- b _0808392E
- .align 2, 0
-_08083900: .4byte 0x000001cb
-_08083904: .4byte gSpecialVar_0x8004
-_08083908:
- cmp r0, 0x5
- beq _08083924
- b _0808392E
-_0808390E:
- ldr r1, _08083914 @ =gBattleTypeFlags
- movs r0, 0xA
- b _0808392C
- .align 2, 0
-_08083914: .4byte gBattleTypeFlags
-_08083918:
- ldr r1, _08083920 @ =gBattleTypeFlags
- movs r0, 0xB
- b _0808392C
- .align 2, 0
-_08083920: .4byte gBattleTypeFlags
-_08083924:
- bl ReducePlayerPartyToThree
- ldr r1, _08083948 @ =gBattleTypeFlags
- movs r0, 0x4B
-_0808392C:
- strh r0, [r1]
-_0808392E:
- ldr r0, _0808394C @ =sub_800E7C4
- bl SetMainCallback2
- ldr r1, _08083950 @ =gMain
- ldr r0, _08083954 @ =sub_8083958
- str r0, [r1, 0x8]
- adds r0, r5, 0
- bl DestroyTask
-_08083940:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08083948: .4byte gBattleTypeFlags
-_0808394C: .4byte sub_800E7C4
-_08083950: .4byte gMain
-_08083954: .4byte sub_8083958
- thumb_func_end sub_808382C
-
- thumb_func_start sub_8083958
-sub_8083958: @ 8083958
- push {lr}
- bl call_map_music_set_to_zero
- bl LoadPlayerParty
- bl SavePlayerBag
- bl sub_810FEFC
- ldr r0, _08083990 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x5
- beq _0808397E
- ldr r0, _08083994 @ =gUnknown_03004860
- ldrb r1, [r0]
- movs r0, 0x1
- eors r0, r1
- bl UpdateLinkBattleRecords
-_0808397E:
- ldr r0, _08083998 @ =gMain
- ldr r1, _0808399C @ =sub_805465C
- str r1, [r0, 0x8]
- ldr r0, _080839A0 @ =sub_8071B28
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_08083990: .4byte gSpecialVar_0x8004
-_08083994: .4byte gUnknown_03004860
-_08083998: .4byte gMain
-_0808399C: .4byte sub_805465C
-_080839A0: .4byte sub_8071B28
- thumb_func_end sub_8083958
-
- thumb_func_start sub_80839A4
-sub_80839A4: @ 80839A4
- push {lr}
- ldr r0, _080839CC @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- subs r0, r1, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _080839B8
- cmp r1, 0x5
- bne _080839C0
-_080839B8:
- bl LoadPlayerParty
- bl SavePlayerBag
-_080839C0:
- movs r0, 0x7F
- bl copy_saved_warp2_bank_and_enter_x_to_warp1
- pop {r0}
- bx r0
- .align 2, 0
-_080839CC: .4byte gSpecialVar_0x8004
- thumb_func_end sub_80839A4
-
- thumb_func_start sub_80839D0
-sub_80839D0: @ 80839D0
- push {lr}
- bl sub_805559C
- pop {r0}
- bx r0
- thumb_func_end sub_80839D0
-
- thumb_func_start sub_80839DC
-sub_80839DC: @ 80839DC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08083A00 @ =gTasks
- adds r5, r0, r1
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _08083A20
- cmp r0, 0x1
- bgt _08083A04
- cmp r0, 0
- beq _08083A0E
- b _08083A7E
- .align 2, 0
-_08083A00: .4byte gTasks
-_08083A04:
- cmp r0, 0x2
- beq _08083A40
- cmp r0, 0x3
- beq _08083A68
- b _08083A7E
-_08083A0E:
- ldr r0, _08083A1C @ =gUnknown_081A490C
- bl ShowFieldMessage
- movs r0, 0x1
- strh r0, [r5, 0x8]
- b _08083A7E
- .align 2, 0
-_08083A1C: .4byte gUnknown_081A490C
-_08083A20:
- bl IsFieldMessageBoxHidden
- lsls r0, 24
- cmp r0, 0
- beq _08083A7E
- bl sub_8055574
- ldr r0, _08083A3C @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- bl sub_8007270
- movs r0, 0x2
- strh r0, [r5, 0x8]
- b _08083A7E
- .align 2, 0
-_08083A3C: .4byte gSpecialVar_0x8005
-_08083A40:
- bl sub_80554F8
- cmp r0, 0x1
- beq _08083A52
- cmp r0, 0x1
- ble _08083A7E
- cmp r0, 0x2
- beq _08083A62
- b _08083A7E
-_08083A52:
- bl HideFieldMessageBox
- movs r0, 0
- strh r0, [r5, 0x8]
- adds r0, r4, 0
- bl SwitchTaskToFollowupFunc
- b _08083A7E
-_08083A62:
- movs r0, 0x3
- strh r0, [r5, 0x8]
- b _08083A7E
-_08083A68:
- bl sub_8055588
- bl HideFieldMessageBox
- bl MenuZeroFillScreen
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_08083A7E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80839DC
-
- thumb_func_start sub_8083A84
-sub_8083A84: @ 8083A84
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r4, _08083AA8 @ =sub_80839DC
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- adds r2, r5, 0
- bl SetTaskFuncWithFollowupFunc
- bl ScriptContext1_Stop
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08083AA8: .4byte sub_80839DC
- thumb_func_end sub_8083A84
-
- thumb_func_start sub_8083AAC
-sub_8083AAC: @ 8083AAC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08083AD0 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08083AF0
- cmp r0, 0x1
- bgt _08083AD4
- cmp r0, 0
- beq _08083ADE
- b _08083B34
- .align 2, 0
-_08083AD0: .4byte gTasks
-_08083AD4:
- cmp r0, 0x2
- beq _08083B04
- cmp r0, 0x3
- beq _08083B20
- b _08083B34
-_08083ADE:
- bl ScriptContext2_Enable
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- bl ClearLinkCallback_2
- b _08083B14
-_08083AF0:
- ldr r0, _08083B00 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08083B34
- b _08083B14
- .align 2, 0
-_08083B00: .4byte gPaletteFade
-_08083B04:
- ldr r1, _08083B1C @ =gUnknown_020297D8
- movs r0, 0
- strb r0, [r1]
- strb r0, [r1, 0x1]
- bl m4aMPlayAllStop
- bl sub_800832C
-_08083B14:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08083B34
- .align 2, 0
-_08083B1C: .4byte gUnknown_020297D8
-_08083B20:
- ldr r0, _08083B3C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08083B34
- ldr r0, _08083B40 @ =sub_8047CD8
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_08083B34:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08083B3C: .4byte gReceivedRemoteLinkPlayers
-_08083B40: .4byte sub_8047CD8
- thumb_func_end sub_8083AAC
-
- thumb_func_start sub_8083B44
-sub_8083B44: @ 8083B44
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8083B6C
- adds r0, r4, 0
- bl DestroyTask
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8083B44
-
- thumb_func_start sub_8083B5C
-sub_8083B5C: @ 8083B5C
- push {lr}
- ldr r0, _08083B68 @ =sub_8083B44
- bl sub_8083A84
- pop {r0}
- bx r0
- .align 2, 0
-_08083B68: .4byte sub_8083B44
- thumb_func_end sub_8083B5C
-
- thumb_func_start sub_8083B6C
-sub_8083B6C: @ 8083B6C
- push {lr}
- ldr r0, _08083B7C @ =sub_8083AAC
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08083B7C: .4byte sub_8083AAC
- thumb_func_end sub_8083B6C
-
- thumb_func_start sub_8083B80
-sub_8083B80: @ 8083B80
- push {lr}
- bl sub_8083B6C
- bl ScriptContext1_Stop
- pop {r0}
- bx r0
- thumb_func_end sub_8083B80
-
- thumb_func_start sub_8083B90
-sub_8083B90: @ 8083B90
- push {lr}
- ldr r0, _08083BA4 @ =gLinkType
- ldr r2, _08083BA8 @ =0x00002211
- adds r1, r2, 0
- strh r1, [r0]
- ldr r0, _08083BAC @ =sub_808382C
- bl sub_8083A84
- pop {r0}
- bx r0
- .align 2, 0
-_08083BA4: .4byte gLinkType
-_08083BA8: .4byte 0x00002211
-_08083BAC: .4byte sub_808382C
- thumb_func_end sub_8083B90
-
- thumb_func_start unref_sub_8083BB0
-unref_sub_8083BB0: @ 8083BB0
- push {r4,lr}
- ldr r4, _08083BD4 @ =sub_80839DC
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08083BD8 @ =Task_RecordMixing_Main
- adds r1, r4, 0
- bl SetTaskFuncWithFollowupFunc
- bl ScriptContext1_Stop
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08083BD4: .4byte sub_80839DC
-_08083BD8: .4byte Task_RecordMixing_Main
- thumb_func_end unref_sub_8083BB0
-
- thumb_func_start sub_8083BDC
-sub_8083BDC: @ 8083BDC
- push {lr}
- ldr r0, _08083BEC @ =gSpecialVar_0x8006
- ldrb r0, [r0]
- ldr r1, _08083BF0 @ =c2_exit_to_overworld_1_continue_scripts_restart_music
- bl sub_8093130
- pop {r0}
- bx r0
- .align 2, 0
-_08083BEC: .4byte gSpecialVar_0x8006
-_08083BF0: .4byte c2_exit_to_overworld_1_continue_scripts_restart_music
- thumb_func_end sub_8083BDC
-
- thumb_func_start sub_8083BF4
-sub_8083BF4: @ 8083BF4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08083C34 @ =gSpecialVar_0x8006
- strh r4, [r0]
- ldr r0, _08083C38 @ =gStringVar1
- lsls r1, r4, 3
- subs r1, r4
- lsls r1, 2
- ldr r2, _08083C3C @ =gLinkPlayers + 0x8
- adds r1, r2
- bl StringCopy
- adds r0, r4, 0
- bl sub_80934C4
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08083C48
- ldr r0, _08083C40 @ =gStringVar2
- ldr r2, _08083C44 @ =gTrainerCardColorNames
- subs r1, 0x1
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- movs r0, 0x1
- b _08083C4A
- .align 2, 0
-_08083C34: .4byte gSpecialVar_0x8006
-_08083C38: .4byte gStringVar1
-_08083C3C: .4byte gLinkPlayers + 0x8
-_08083C40: .4byte gStringVar2
-_08083C44: .4byte gTrainerCardColorNames
-_08083C48:
- movs r0, 0
-_08083C4A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8083BF4
-
- thumb_func_start sub_8083C50
-sub_8083C50: @ 8083C50
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08083C98 @ =gTasks
- adds r0, r1
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- lsls r1, 16
- movs r0, 0x96
- lsls r0, 17
- cmp r1, r0
- ble _08083C82
- bl CloseLink
- ldr r0, _08083C9C @ =CB2_LinkError
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_08083C82:
- ldr r0, _08083CA0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _08083C90
- adds r0, r5, 0
- bl DestroyTask
-_08083C90:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08083C98: .4byte gTasks
-_08083C9C: .4byte CB2_LinkError
-_08083CA0: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_8083C50
-
- thumb_func_start sub_8083CA4
-sub_8083CA4: @ 8083CA4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08083CC4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08083CBC
- bl EnableBothScriptContexts
- adds r0, r4, 0
- bl DestroyTask
-_08083CBC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08083CC4: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_8083CA4
-
- thumb_func_start unref_sub_8083CC8
-unref_sub_8083CC8: @ 8083CC8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_800832C
- ldr r1, _08083CE8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08083CEC @ =sub_8083CA4
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08083CE8: .4byte gTasks
-_08083CEC: .4byte sub_8083CA4
- thumb_func_end unref_sub_8083CC8
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/contest.s b/asm/contest.s
index 4a85f3d16..c5dfe3e2e 100644
--- a/asm/contest.s
+++ b/asm/contest.s
@@ -6904,7 +6904,7 @@ sub_80AE9FC: @ 80AE9FC
adds r0, r5, 0
mov r1, r8
adds r2, r6, 0
- bl species_and_otid_get_pal
+ bl GetMonSpritePalFromOtIdPersonality
movs r1, 0x90
lsls r1, 1
movs r2, 0x20
diff --git a/asm/contest_link_80C2020.s b/asm/contest_link_80C2020.s
index 93dd26eee..b91a9665b 100644
--- a/asm/contest_link_80C2020.s
+++ b/asm/contest_link_80C2020.s
@@ -1361,7 +1361,7 @@ _080C2B14:
adds r0, r6, 0
ldr r1, [sp, 0xC]
adds r2, r4, 0
- bl sub_80409C8
+ bl GetMonSpritePalStructFromOtIdPersonality
adds r4, r0, 0
bl LoadCompressedObjectPalette
adds r0, r6, 0
@@ -1601,7 +1601,7 @@ _080C2D42:
lsls r0, 16
lsrs r0, 16
movs r1, 0x2
- bl GetNationalPokedexFlag
+ bl GetSetPokedexFlag
adds r5, 0x40
subs r4, 0x1
cmp r4, 0
diff --git a/asm/cute_sketch.s b/asm/cute_sketch.s
index afacc19f6..14c28327d 100644
--- a/asm/cute_sketch.s
+++ b/asm/cute_sketch.s
@@ -6,445 +6,6 @@
.text
- thumb_func_start sub_80FC7A0
-sub_80FC7A0: @ 80FC7A0
- push {lr}
- ldr r2, _080FC7E8 @ =gUnknown_03005DEC
- ldr r1, [r0, 0x4]
- str r1, [r2]
- ldr r2, _080FC7EC @ =gUnknown_03005E00
- ldrb r1, [r0, 0x1F]
- strb r1, [r2]
- ldr r2, _080FC7F0 @ =gUnknown_03005DE8
- ldrb r1, [r0, 0x19]
- strb r1, [r2]
- ldr r2, _080FC7F4 @ =gUnknown_03005DFC
- ldrb r1, [r0, 0x1A]
- strb r1, [r2]
- ldr r2, _080FC7F8 @ =gUnknown_03005DF8
- ldrb r1, [r0, 0x1B]
- strb r1, [r2]
- ldr r2, _080FC7FC @ =gUnknown_03005DF0
- ldrb r1, [r0, 0x1C]
- strb r1, [r2]
- ldr r2, _080FC800 @ =gUnknown_03005E04
- ldrb r1, [r0, 0x1D]
- strb r1, [r2]
- ldr r2, _080FC804 @ =gUnknown_03005DF4
- ldrb r1, [r0, 0x1E]
- strb r1, [r2]
- ldrb r0, [r0]
- subs r0, 0x2
- cmp r0, 0x22
- bls _080FC7DC
- b _080FC928
-_080FC7DC:
- lsls r0, 2
- ldr r1, _080FC808 @ =_080FC80C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080FC7E8: .4byte gUnknown_03005DEC
-_080FC7EC: .4byte gUnknown_03005E00
-_080FC7F0: .4byte gUnknown_03005DE8
-_080FC7F4: .4byte gUnknown_03005DFC
-_080FC7F8: .4byte gUnknown_03005DF8
-_080FC7FC: .4byte gUnknown_03005DF0
-_080FC800: .4byte gUnknown_03005E04
-_080FC804: .4byte gUnknown_03005DF4
-_080FC808: .4byte _080FC80C
- .align 2, 0
-_080FC80C:
- .4byte _080FC898
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC8F8
- .4byte _080FC928
- .4byte _080FC89E
- .4byte _080FC8A4
- .4byte _080FC8B8
- .4byte _080FC8CA
- .4byte _080FC928
- .4byte _080FC8E0
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC8E6
- .4byte _080FC8C4
- .4byte _080FC8EC
- .4byte _080FC8F2
- .4byte _080FC928
- .4byte _080FC928
- .4byte _080FC904
-_080FC898:
- bl sub_80FCAA4
- b _080FC928
-_080FC89E:
- bl sub_80FCB5C
- b _080FC928
-_080FC8A4:
- bl sub_80FCD54
- ldr r0, _080FC8B4 @ =gUnknown_03005E00
- ldrb r0, [r0]
- bl sub_80FCC18
- b _080FC928
- .align 2, 0
-_080FC8B4: .4byte gUnknown_03005E00
-_080FC8B8:
- bl sub_80FCD54
- bl sub_80FCEA4
- bl sub_80FCCBC
-_080FC8C4:
- bl sub_80FCEA4
- b _080FC928
-_080FC8CA:
- bl sub_80FCD54
- bl sub_80FD06C
- bl sub_80FD06C
- bl sub_80FD114
- bl sub_80FCCBC
- b _080FC928
-_080FC8E0:
- bl sub_80FCF3C
- b _080FC928
-_080FC8E6:
- bl sub_80FCD54
- b _080FC928
-_080FC8EC:
- bl sub_80FD06C
- b _080FC928
-_080FC8F2:
- bl sub_80FD114
- b _080FC928
-_080FC8F8:
- bl sub_80FCAC4
- movs r0, 0x3
- bl sub_80FC92C
- b _080FC928
-_080FC904:
- bl sub_80FCD54
- bl sub_80FD06C
- bl sub_80FD114
- bl sub_80FCCBC
- bl sub_80FCB5C
- bl sub_80FCB5C
- movs r0, 0x2
- bl sub_80FC92C
- movs r0, 0x4
- bl sub_80FC9E4
-_080FC928:
- pop {r0}
- bx r0
- thumb_func_end sub_80FC7A0
-
- thumb_func_start sub_80FC92C
-sub_80FC92C: @ 80FC92C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r7, r0, 24
- movs r2, 0
- ldr r0, _080FC9CC @ =gUnknown_03005DF0
- mov r8, r0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FC9BE
- ldr r1, _080FC9D0 @ =gUnknown_03005DF8
- mov r12, r1
- ldr r3, _080FC9D4 @ =gUnknown_03005E04
- mov r10, r3
- ldr r0, _080FC9D8 @ =gUnknown_03005DE8
- mov r9, r0
-_080FC952:
- ldr r1, _080FC9DC @ =gUnknown_03005DFC
- ldrb r0, [r1]
- adds r0, r2
- mov r3, r10
- ldrb r1, [r3]
- muls r0, r1
- lsls r0, 1
- ldr r3, _080FC9E0 @ =gUnknown_03005DEC
- ldr r1, [r3]
- adds r1, r0
- mov r3, r9
- ldrb r0, [r3]
- lsls r0, 1
- adds r3, r1, r0
- movs r4, 0
- adds r5, r2, 0x1
- mov r0, r12
- ldrb r0, [r0]
- cmp r4, r0
- bcs _080FC9B2
- movs r6, 0x80
- lsls r6, 8
-_080FC97E:
- ldrh r1, [r3]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- bne _080FC9A2
- movs r0, 0x1F
- ands r0, r1
- adds r0, r7
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x1F
- bls _080FC998
- movs r2, 0x1F
-_080FC998:
- lsls r0, r2, 10
- lsls r1, r2, 5
- orrs r0, r1
- orrs r0, r2
- strh r0, [r3]
-_080FC9A2:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r3, 0x2
- mov r1, r12
- ldrb r1, [r1]
- cmp r4, r1
- bcc _080FC97E
-_080FC9B2:
- lsls r0, r5, 24
- lsrs r2, r0, 24
- mov r3, r8
- ldrb r3, [r3]
- cmp r2, r3
- bcc _080FC952
-_080FC9BE:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FC9CC: .4byte gUnknown_03005DF0
-_080FC9D0: .4byte gUnknown_03005DF8
-_080FC9D4: .4byte gUnknown_03005E04
-_080FC9D8: .4byte gUnknown_03005DE8
-_080FC9DC: .4byte gUnknown_03005DFC
-_080FC9E0: .4byte gUnknown_03005DEC
- thumb_func_end sub_80FC92C
-
- thumb_func_start sub_80FC9E4
-sub_80FC9E4: @ 80FC9E4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r2, 0
- ldr r0, _080FCA8C @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FCA7C
- ldr r1, _080FCA90 @ =gUnknown_03005DF8
- mov r10, r1
-_080FCA02:
- ldr r3, _080FCA94 @ =gUnknown_03005DFC
- ldrb r0, [r3]
- adds r0, r2
- ldr r3, _080FCA98 @ =gUnknown_03005E04
- ldrb r1, [r3]
- muls r0, r1
- lsls r0, 1
- ldr r3, _080FCA9C @ =gUnknown_03005DEC
- ldr r1, [r3]
- adds r1, r0
- ldr r3, _080FCAA0 @ =gUnknown_03005DE8
- ldrb r0, [r3]
- lsls r0, 1
- adds r3, r1, r0
- movs r5, 0
- adds r7, r2, 0x1
- mov r0, r10
- ldrb r0, [r0]
- cmp r5, r0
- bcs _080FCA70
- movs r1, 0x80
- lsls r1, 8
- mov r9, r1
- movs r0, 0x1F
- mov r12, r0
- mov r1, r8
- subs r6, r0, r1
-_080FCA38:
- ldrh r1, [r3]
- mov r0, r9
- ands r0, r1
- cmp r0, 0
- bne _080FCA60
- movs r4, 0x1F
- mov r2, r12
- ands r2, r1
- cmp r2, r6
- ble _080FCA56
- mov r1, r8
- lsrs r0, r1, 1
- subs r0, r4, r0
- lsls r0, 24
- lsrs r2, r0, 24
-_080FCA56:
- lsls r0, r2, 10
- lsls r1, r2, 5
- orrs r0, r1
- orrs r0, r2
- strh r0, [r3]
-_080FCA60:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r3, 0x2
- mov r0, r10
- ldrb r0, [r0]
- cmp r5, r0
- bcc _080FCA38
-_080FCA70:
- lsls r0, r7, 24
- lsrs r2, r0, 24
- ldr r1, _080FCA8C @ =gUnknown_03005DF0
- ldrb r1, [r1]
- cmp r2, r1
- bcc _080FCA02
-_080FCA7C:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCA8C: .4byte gUnknown_03005DF0
-_080FCA90: .4byte gUnknown_03005DF8
-_080FCA94: .4byte gUnknown_03005DFC
-_080FCA98: .4byte gUnknown_03005E04
-_080FCA9C: .4byte gUnknown_03005DEC
-_080FCAA0: .4byte gUnknown_03005DE8
- thumb_func_end sub_80FC9E4
-
- thumb_func_start sub_80FCAA4
-sub_80FCAA4: @ 80FCAA4
- push {r4,r5,lr}
- movs r4, 0
- ldr r5, _080FCAC0 @ =0x00000c7f
-_080FCAAA:
- lsls r0, r4, 16
- lsrs r0, 16
- bl sub_80FD1C8
- adds r4, 0x1
- cmp r4, r5
- bls _080FCAAA
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCAC0: .4byte 0x00000c7f
- thumb_func_end sub_80FCAA4
-
- thumb_func_start sub_80FCAC4
-sub_80FCAC4: @ 80FCAC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r2, 0
- ldr r0, _080FCB44 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcs _080FCB36
- ldr r0, _080FCB48 @ =gUnknown_03005DEC
- mov r8, r0
- ldr r3, _080FCB4C @ =gUnknown_03005DF8
-_080FCADC:
- ldr r0, _080FCB50 @ =gUnknown_03005DFC
- ldrb r1, [r0]
- adds r1, r2
- ldr r0, _080FCB54 @ =gUnknown_03005E04
- ldrb r0, [r0]
- muls r0, r1
- lsls r0, 1
- mov r4, r8
- ldr r1, [r4]
- adds r1, r0
- ldr r0, _080FCB58 @ =gUnknown_03005DE8
- ldrb r0, [r0]
- lsls r0, 1
- adds r4, r1, r0
- movs r5, 0
- adds r6, r2, 0x1
- ldrb r0, [r3]
- cmp r5, r0
- bcs _080FCB2A
- movs r0, 0x80
- lsls r0, 8
- adds r7, r0, 0
-_080FCB08:
- ldrh r0, [r4]
- ands r0, r7
- cmp r0, 0
- bne _080FCB1C
- adds r0, r4, 0
- str r3, [sp]
- bl sub_80FD39C
- strh r0, [r4]
- ldr r3, [sp]
-_080FCB1C:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- adds r4, 0x2
- ldrb r0, [r3]
- cmp r5, r0
- bcc _080FCB08
-_080FCB2A:
- lsls r0, r6, 24
- lsrs r2, r0, 24
- ldr r0, _080FCB44 @ =gUnknown_03005DF0
- ldrb r0, [r0]
- cmp r2, r0
- bcc _080FCADC
-_080FCB36:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080FCB44: .4byte gUnknown_03005DF0
-_080FCB48: .4byte gUnknown_03005DEC
-_080FCB4C: .4byte gUnknown_03005DF8
-_080FCB50: .4byte gUnknown_03005DFC
-_080FCB54: .4byte gUnknown_03005E04
-_080FCB58: .4byte gUnknown_03005DE8
- thumb_func_end sub_80FCAC4
thumb_func_start sub_80FCB5C
sub_80FCB5C: @ 80FCB5C
diff --git a/asm/daycare.s b/asm/daycare.s
deleted file mode 100644
index a0ea9124a..000000000
--- a/asm/daycare.s
+++ /dev/null
@@ -1,2399 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80416A0
-sub_80416A0: @ 80416A0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r5, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- lsls r0, r4, 2
- mov r8, r0
- add r4, r8
- lsls r4, 4
- adds r4, r5, r4
- adds r0, r4, 0
- bl GetLevelFromBoxMonExp
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- movs r0, 0x88
- lsls r0, 1
- adds r5, r0
- add r5, r8
- ldr r1, [r5]
- adds r0, r4, 0
- bl Daycare_GetLevelAfterSteps
- lsls r0, 24
- lsrs r0, 24
- subs r0, r6
- lsls r0, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80416A0
-
- thumb_func_start sub_80416E8
-sub_80416E8: @ 80416E8
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- adds r1, r4, 0
- bl sub_80416A0
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- adds r6, r0
- ldr r1, _08041720 @ =gStringVar1
- adds r0, r6, 0
- bl GetBoxMonNick
- ldr r0, _08041724 @ =gStringVar2
- adds r1, r5, 0
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r0, r5, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08041720: .4byte gStringVar1
-_08041724: .4byte gStringVar2
- thumb_func_end sub_80416E8
-
- thumb_func_start sub_8041728
-sub_8041728: @ 8041728
- push {r4-r6,lr}
- adds r6, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- adds r1, r4, 0
- bl sub_80416A0
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- adds r6, r0
- ldr r1, _08041768 @ =gStringVar1
- adds r0, r6, 0
- bl GetBoxMonNick
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- adds r4, 0x64
- ldr r0, _0804176C @ =gStringVar2
- adds r1, r4, 0
- movs r2, 0
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- adds r0, r4, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08041768: .4byte gStringVar1
-_0804176C: .4byte gStringVar2
- thumb_func_end sub_8041728
-
- thumb_func_start sub_8041770
-sub_8041770: @ 8041770
- push {lr}
- ldr r0, _08041784 @ =gSaveBlock1 + 0x2F9C
- ldr r1, _08041788 @ =gSpecialVar_0x8004
- ldrb r1, [r1]
- bl sub_8041728
- ldr r1, _0804178C @ =gSpecialVar_0x8005
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08041784: .4byte gSaveBlock1 + 0x2F9C
-_08041788: .4byte gSpecialVar_0x8004
-_0804178C: .4byte gSpecialVar_0x8005
- thumb_func_end sub_8041770
-
- thumb_func_start sub_8041790
-sub_8041790: @ 8041790
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _080417AC @ =gSaveBlock1
- ldr r1, _080417B0 @ =0x000030ac
- adds r3, r2, r1
- ldr r1, [r3]
- adds r1, r0
- str r1, [r3]
- ldr r1, _080417B4 @ =0x000030b0
- adds r2, r1
- ldr r1, [r2]
- adds r1, r0
- str r1, [r2]
- bx lr
- .align 2, 0
-_080417AC: .4byte gSaveBlock1
-_080417B0: .4byte 0x000030ac
-_080417B4: .4byte 0x000030b0
- thumb_func_end sub_8041790
-
- thumb_func_start sub_80417B8
-sub_80417B8: @ 80417B8
- push {r4,r5,lr}
- ldr r5, _080417D8 @ =gSpecialVar_0x8004
- ldrh r1, [r5]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- ldr r4, _080417DC @ =gSaveBlock1 + 0x2F9C
- adds r0, r4
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- bne _080417E0
- movs r0, 0
- b _080417EC
- .align 2, 0
-_080417D8: .4byte gSpecialVar_0x8004
-_080417DC: .4byte gSaveBlock1 + 0x2F9C
-_080417E0:
- ldrb r1, [r5]
- adds r0, r4, 0
- bl sub_80416E8
- lsls r0, 24
- lsrs r0, 24
-_080417EC:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80417B8
-
- thumb_func_start sub_80417F4
-sub_80417F4: @ 80417F4
- push {lr}
- movs r3, 0
- movs r2, 0x7
- adds r1, r0, 0
- adds r1, 0x2B
-_080417FE:
- strb r3, [r1]
- subs r1, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _080417FE
- adds r2, r0, 0
- adds r2, 0x2C
- movs r3, 0
- adds r1, r0, 0
- adds r1, 0x36
-_08041812:
- strb r3, [r1]
- subs r1, 0x1
- cmp r1, r2
- bge _08041812
- bl ClearMailStruct
- pop {r0}
- bx r0
- thumb_func_end sub_80417F4
-
- thumb_func_start unref_sub_8041824
-unref_sub_8041824: @ 8041824
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r5, 0
-_0804182A:
- lsls r4, r5, 2
- adds r0, r4, r5
- lsls r0, 4
- adds r0, r6, r0
- bl ZeroBoxMonData
- movs r1, 0x88
- lsls r1, 1
- adds r0, r6, r1
- adds r0, r4
- movs r4, 0
- str r4, [r0]
- lsls r0, r5, 3
- subs r0, r5
- lsls r0, 3
- adds r0, 0xA0
- adds r0, r6, r0
- bl sub_80417F4
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _0804182A
- movs r2, 0x8C
- lsls r2, 1
- adds r0, r6, r2
- movs r1, 0
- strh r4, [r0]
- adds r2, 0x2
- adds r0, r6, r2
- strb r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end unref_sub_8041824
-
- thumb_func_start sub_8041870
-sub_8041870: @ 8041870
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r2, r0, 16
- movs r0, 0
- mov r8, r0
- ldr r0, _0804189C @ =gEvolutionTable
- mov r12, r0
-_08041882:
- movs r7, 0
- movs r6, 0x1
- movs r4, 0x80
- lsls r4, 9
- movs r5, 0x28
- mov r3, r12
- adds r3, 0x28
-_08041890:
- movs r1, 0
- ldrh r0, [r3, 0x4]
- cmp r0, r2
- bne _080418A0
- lsrs r2, r4, 16
- b _080418CC
- .align 2, 0
-_0804189C: .4byte gEvolutionTable
-_080418A0:
- adds r1, 0x1
- cmp r1, 0x4
- bgt _080418B6
- lsls r0, r1, 3
- adds r0, r5
- add r0, r12
- ldrh r0, [r0, 0x4]
- cmp r0, r2
- bne _080418A0
- lsrs r2, r4, 16
- movs r7, 0x1
-_080418B6:
- cmp r7, 0
- bne _080418CC
- movs r0, 0x80
- lsls r0, 9
- adds r4, r0
- adds r5, 0x28
- adds r3, 0x28
- adds r6, 0x1
- ldr r0, _080418EC @ =0x0000019b
- cmp r6, r0
- ble _08041890
-_080418CC:
- movs r0, 0xCE
- lsls r0, 1
- cmp r6, r0
- beq _080418DE
- movs r0, 0x1
- add r8, r0
- mov r0, r8
- cmp r0, 0x4
- ble _08041882
-_080418DE:
- adds r0, r2, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080418EC: .4byte 0x0000019b
- thumb_func_end sub_8041870
-
- thumb_func_start sub_80418F0
-sub_80418F0: @ 80418F0
- push {r4,lr}
- adds r4, r0, 0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08041918 @ =0x0000fffe
- bl __umodsi3
- adds r0, 0x1
- movs r1, 0x8C
- lsls r1, 1
- adds r4, r1
- strh r0, [r4]
- movs r0, 0x86
- bl FlagSet
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08041918: .4byte 0x0000fffe
- thumb_func_end sub_80418F0
-
- thumb_func_start sub_804191C
-sub_804191C: @ 804191C
- push {r4,lr}
- adds r4, r0, 0
- bl Random
- movs r2, 0x80
- lsls r2, 8
- adds r1, r2, 0
- movs r2, 0x8C
- lsls r2, 1
- adds r4, r2
- orrs r1, r0
- strh r1, [r4]
- movs r0, 0x86
- bl FlagSet
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804191C
-
- thumb_func_start sub_8041940
-sub_8041940: @ 8041940
- push {lr}
- ldr r0, _0804194C @ =gSaveBlock1 + 0x2F9C
- bl sub_80418F0
- pop {r0}
- bx r0
- .align 2, 0
-_0804194C: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end sub_8041940
-
- thumb_func_start sub_8041950
-sub_8041950: @ 8041950
- push {lr}
- ldr r0, _0804195C @ =gSaveBlock1 + 0x2F9C
- bl sub_804191C
- pop {r0}
- bx r0
- .align 2, 0
-_0804195C: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end sub_8041950
-
- thumb_func_start sub_8041960
-sub_8041960: @ 8041960
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r1, r4, r1
- movs r0, 0xFF
- strb r0, [r1]
- movs r2, 0
-_08041972:
- mov r1, sp
- adds r0, r1, r2
- adds r1, r4, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0x5
- ble _08041972
- movs r3, 0
- movs r2, 0
-_08041986:
- mov r1, sp
- adds r0, r1, r2
- ldrb r1, [r0]
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _08041998
- adds r0, r4, r3
- strb r1, [r0]
- adds r3, 0x1
-_08041998:
- adds r2, 0x1
- cmp r2, 0x5
- ble _08041986
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8041960
-
- thumb_func_start sub_80419A8
-sub_80419A8: @ 80419A8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r0
- mov r8, r1
- movs r5, 0
- add r1, sp, 0x4
- add r7, sp, 0xC
- adds r2, r1, 0
-_080419BE:
- adds r0, r2, r5
- strb r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _080419BE
- movs r5, 0
- adds r6, r1, 0
-_080419D0:
- bl Random
- mov r1, sp
- adds r4, r1, r5
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x6
- subs r1, r5
- bl __modsi3
- adds r0, r6, r0
- ldrb r0, [r0]
- strb r0, [r4]
- ldrb r1, [r4]
- adds r0, r6, 0
- bl sub_8041960
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _080419D0
- movs r5, 0
- movs r4, 0x1
-_08041A00:
- bl Random
- adds r1, r7, r5
- lsls r0, 16
- lsrs r0, 16
- ands r0, r4
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _08041A00
- movs r5, 0
-_08041A1A:
- mov r1, sp
- adds r0, r1, r5
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _08041B02
- lsls r0, 2
- ldr r1, _08041A30 @ =_08041A34
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08041A30: .4byte _08041A34
- .align 2, 0
-_08041A34:
- .4byte _08041A4C
- .4byte _08041A6C
- .4byte _08041A88
- .4byte _08041AA4
- .4byte _08041AC0
- .4byte _08041AE2
-_08041A4C:
- adds r0, r7, r5
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- movs r1, 0x27
- bl GetBoxMonData
- add r2, sp, 0x10
- strb r0, [r2]
- mov r0, r9
- movs r1, 0x27
- bl SetMonData
- b _08041B02
-_08041A6C:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- movs r1, 0x28
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x28
- b _08041ADA
-_08041A88:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- movs r1, 0x29
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x29
- b _08041ADA
-_08041AA4:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- movs r1, 0x2A
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x2A
- b _08041ADA
-_08041AC0:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- movs r1, 0x2B
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x2B
-_08041ADA:
- adds r2, r4, 0
- bl SetMonData
- b _08041B02
-_08041AE2:
- add r4, sp, 0x10
- adds r0, r7, r5
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- movs r1, 0x2C
- bl GetBoxMonData
- strb r0, [r4]
- mov r0, r9
- movs r1, 0x2C
- adds r2, r4, 0
- bl SetMonData
-_08041B02:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x2
- bls _08041A1A
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80419A8
-
- thumb_func_start pokemon_get_eggmoves
-pokemon_get_eggmoves: @ 8041B1C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- mov r8, r1
- movs r6, 0
- movs r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r3, r0, 16
- movs r2, 0
- ldr r5, _08041B44 @ =gEggMoves
- ldrh r1, [r5]
- ldr r7, _08041B48 @ =0x00004e20
- adds r0, r3, r7
- cmp r1, r0
- bne _08041B4C
- movs r4, 0x1
- b _08041B6E
- .align 2, 0
-_08041B44: .4byte gEggMoves
-_08041B48: .4byte 0x00004e20
-_08041B4C:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldr r0, _08041BB8 @ =0x00000471
- ldr r5, _08041BBC @ =gEggMoves
- cmp r2, r0
- bhi _08041B6E
- lsls r0, r2, 1
- adds r0, r5
- ldrh r1, [r0]
- ldr r7, _08041BC0 @ =0x00004e20
- adds r0, r3, r7
- cmp r1, r0
- bne _08041B4C
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
-_08041B6E:
- movs r2, 0
- lsls r0, r4, 1
- adds r0, r5
- ldrh r0, [r0]
- ldr r1, _08041BC0 @ =0x00004e20
- cmp r0, r1
- bhi _08041BAA
- adds r7, r5, 0
- adds r3, r1, 0
-_08041B80:
- lsls r1, r2, 1
- add r1, r8
- adds r0, r4, r2
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- strh r0, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x9
- bhi _08041BAA
- adds r0, r4, r2
- lsls r0, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, r3
- bls _08041B80
-_08041BAA:
- lsls r0, r6, 24
- lsrs r0, 24
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08041BB8: .4byte 0x00000471
-_08041BBC: .4byte gEggMoves
-_08041BC0: .4byte 0x00004e20
- thumb_func_end pokemon_get_eggmoves
-
- thumb_func_start daycare_build_child_moveset
-daycare_build_child_moveset: @ 8041BC4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- adds r7, r0, 0
- mov r10, r1
- mov r9, r2
- movs r0, 0
- str r0, [sp]
- movs r6, 0
- ldr r5, _08041CC8 @ =gUnknown_03000500
- movs r2, 0
- ldr r4, _08041CCC @ =gUnknown_030004D8
- ldr r3, _08041CD0 @ =gUnknown_030004E0
-_08041BE4:
- lsls r1, r6, 1
- adds r0, r1, r5
- strh r2, [r0]
- adds r0, r1, r4
- strh r2, [r0]
- adds r1, r3
- strh r2, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08041BE4
- movs r6, 0
- ldr r2, _08041CD4 @ =gUnknown_030004E8
- movs r1, 0
-_08041C02:
- lsls r0, r6, 1
- adds r0, r2
- strh r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x9
- bls _08041C02
- movs r6, 0
- ldr r2, _08041CD8 @ =gUnknown_03000470
- movs r1, 0
-_08041C18:
- lsls r0, r6, 1
- adds r0, r2
- strh r1, [r0]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x31
- bls _08041C18
- adds r0, r7, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r1, _08041CD8 @ =gUnknown_03000470
- bl GetLevelUpMovesBySpecies
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r6, 0
- ldr r1, _08041CCC @ =gUnknown_030004D8
- mov r8, r1
-_08041C46:
- adds r5, r6, 0
- adds r5, 0xD
- mov r0, r10
- adds r1, r5, 0
- bl GetBoxMonData
- lsls r4, r6, 1
- mov r2, r8
- adds r1, r4, r2
- strh r0, [r1]
- mov r0, r9
- adds r1, r5, 0
- bl GetBoxMonData
- ldr r1, _08041CC8 @ =gUnknown_03000500
- adds r4, r1
- strh r0, [r4]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08041C46
- ldr r1, _08041CD4 @ =gUnknown_030004E8
- adds r0, r7, 0
- bl pokemon_get_eggmoves
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r6, 0
-_08041C82:
- ldr r0, _08041CCC @ =gUnknown_030004D8
- lsls r1, r6, 1
- adds r2, r1, r0
- ldrh r1, [r2]
- mov r9, r0
- cmp r1, 0
- beq _08041CF8
- movs r5, 0
- cmp r5, r8
- bcs _08041CEA
- adds r4, r2, 0
- ldr r2, _08041CDC @ =0x0000ffff
-_08041C9A:
- ldr r0, _08041CD4 @ =gUnknown_030004E8
- lsls r1, r5, 1
- adds r1, r0
- ldrh r0, [r4]
- ldrh r1, [r1]
- cmp r0, r1
- bne _08041CE0
- adds r1, r0, 0
- adds r0, r7, 0
- str r2, [sp, 0x8]
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- ldr r2, [sp, 0x8]
- cmp r0, r2
- bne _08041CEA
- ldrh r1, [r4]
- adds r0, r7, 0
- bl DeleteFirstMoveAndGiveMoveToMon
- b _08041CEA
- .align 2, 0
-_08041CC8: .4byte gUnknown_03000500
-_08041CCC: .4byte gUnknown_030004D8
-_08041CD0: .4byte gUnknown_030004E0
-_08041CD4: .4byte gUnknown_030004E8
-_08041CD8: .4byte gUnknown_03000470
-_08041CDC: .4byte 0x0000ffff
-_08041CE0:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r8
- bcc _08041C9A
-_08041CEA:
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r3, _08041E14 @ =gUnknown_030004D8
- mov r9, r3
- cmp r6, 0x3
- bls _08041C82
-_08041CF8:
- movs r6, 0
-_08041CFA:
- lsls r0, r6, 1
- mov r2, r9
- adds r1, r0, r2
- ldrh r1, [r1]
- adds r2, r0, 0
- adds r6, 0x1
- mov r8, r6
- cmp r1, 0
- beq _08041D5C
- movs r5, 0
- ldr r0, _08041E14 @ =gUnknown_030004D8
- adds r4, r2, r0
- ldr r6, _08041E18 @ =0x0000ffff
- mov r9, r0
-_08041D16:
- ldr r3, _08041E1C @ =0x00000121
- adds r0, r5, r3
- lsls r0, 16
- lsrs r0, 16
- bl ItemIdToBattleMoveId
- ldrh r1, [r4]
- lsls r0, 16
- lsrs r0, 16
- cmp r1, r0
- bne _08041D52
- lsls r1, r5, 24
- lsrs r1, 24
- adds r0, r7, 0
- bl CanMonLearnTMHM
- cmp r0, 0
- beq _08041D52
- ldrh r1, [r4]
- adds r0, r7, 0
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- cmp r0, r6
- bne _08041D52
- ldrh r1, [r4]
- adds r0, r7, 0
- bl DeleteFirstMoveAndGiveMoveToMon
-_08041D52:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x39
- bls _08041D16
-_08041D5C:
- mov r1, r8
- lsls r0, r1, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08041CFA
- movs r6, 0
- mov r2, r9
- ldrh r0, [r2]
- ldr r3, _08041E20 @ =gUnknown_030004E0
- mov r10, r3
- cmp r0, 0
- beq _08041DC6
- mov r4, r9
- ldr r0, _08041E24 @ =gUnknown_03000500
- mov r9, r0
- mov r12, r10
-_08041D7C:
- movs r5, 0
- lsls r2, r6, 1
- adds r6, 0x1
- mov r8, r6
- adds r3, r2, r4
-_08041D86:
- lsls r0, r5, 1
- add r0, r9
- ldrh r2, [r3]
- adds r1, r2, 0
- ldrh r0, [r0]
- cmp r1, r0
- bne _08041DA8
- cmp r1, 0
- beq _08041DA8
- ldr r1, [sp]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp]
- lsls r1, 1
- add r1, r12
- strh r2, [r1]
-_08041DA8:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x3
- bls _08041D86
- mov r1, r8
- lsls r0, r1, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bhi _08041DC6
- lsls r0, r6, 1
- adds r0, r4
- ldrh r0, [r0]
- cmp r0, 0
- bne _08041D7C
-_08041DC6:
- movs r6, 0
- mov r2, r10
- ldrh r0, [r2]
- cmp r0, 0
- beq _08041E50
-_08041DD0:
- movs r5, 0
- adds r3, r6, 0x1
- mov r8, r3
- ldr r0, [sp, 0x4]
- cmp r5, r0
- bcs _08041E38
- ldr r2, _08041E18 @ =0x0000ffff
-_08041DDE:
- ldr r1, _08041E28 @ =gUnknown_03000470
- lsls r0, r5, 1
- adds r0, r1
- ldrh r1, [r0]
- cmp r1, 0
- beq _08041E2C
- lsls r0, r6, 1
- mov r3, r10
- adds r4, r0, r3
- ldrh r0, [r4]
- cmp r0, r1
- bne _08041E2C
- adds r1, r0, 0
- adds r0, r7, 0
- str r2, [sp, 0x8]
- bl GiveMoveToMon
- lsls r0, 16
- lsrs r0, 16
- ldr r2, [sp, 0x8]
- cmp r0, r2
- bne _08041E38
- ldrh r1, [r4]
- adds r0, r7, 0
- bl DeleteFirstMoveAndGiveMoveToMon
- b _08041E38
- .align 2, 0
-_08041E14: .4byte gUnknown_030004D8
-_08041E18: .4byte 0x0000ffff
-_08041E1C: .4byte 0x00000121
-_08041E20: .4byte gUnknown_030004E0
-_08041E24: .4byte gUnknown_03000500
-_08041E28: .4byte gUnknown_03000470
-_08041E2C:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r0, [sp, 0x4]
- cmp r5, r0
- bcc _08041DDE
-_08041E38:
- mov r1, r8
- lsls r0, r1, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bhi _08041E50
- ldr r0, _08041E60 @ =gUnknown_030004E0
- lsls r1, r6, 1
- adds r1, r0
- ldrh r1, [r1]
- mov r10, r0
- cmp r1, 0
- bne _08041DD0
-_08041E50:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08041E60: .4byte gUnknown_030004E0
- thumb_func_end daycare_build_child_moveset
-
- thumb_func_start sub_8041E64
-sub_8041E64: @ 8041E64
- adds r3, r0, 0
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r3, r1
- movs r2, 0
- movs r1, 0
- strh r1, [r0]
- movs r1, 0x8D
- lsls r1, 1
- adds r0, r3, r1
- strb r2, [r0]
- bx lr
- thumb_func_end sub_8041E64
-
- thumb_func_start sub_8041E7C
-sub_8041E7C: @ 8041E7C
- push {lr}
- ldr r0, _08041E88 @ =gSaveBlock1 + 0x2F9C
- bl sub_8041E64
- pop {r0}
- bx r0
- .align 2, 0
-_08041E88: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end sub_8041E7C
-
- thumb_func_start incense_effects
-incense_effects: @ 8041E8C
- push {r4-r7,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrh r1, [r4]
- movs r7, 0xB4
- lsls r7, 1
- cmp r1, r7
- beq _08041EA4
- movs r0, 0xAF
- lsls r0, 1
- cmp r1, r0
- bne _08041EE6
-_08041EA4:
- adds r0, r5, 0
- movs r1, 0xC
- bl GetBoxMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r0, r5, 0
- adds r0, 0x50
- movs r1, 0xC
- bl GetBoxMonData
- lsls r0, 16
- lsrs r2, r0, 16
- ldrh r0, [r4]
- cmp r0, r7
- bne _08041ED0
- cmp r6, 0xDD
- beq _08041ED0
- cmp r2, 0xDD
- beq _08041ED0
- movs r0, 0xCA
- strh r0, [r4]
-_08041ED0:
- ldrh r1, [r4]
- movs r0, 0xAF
- lsls r0, 1
- cmp r1, r0
- bne _08041EE6
- cmp r6, 0xDC
- beq _08041EE6
- cmp r2, 0xDC
- beq _08041EE6
- movs r0, 0xB7
- strh r0, [r4]
-_08041EE6:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end incense_effects
-
- thumb_func_start sub_8041EEC
-sub_8041EEC: @ 8041EEC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- mov r8, r0
- adds r6, r1, 0
- movs r4, 0
- movs r7, 0x1
-_08041EFC:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- mov r1, r8
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0xB
- bl GetBoxMonData
- lsls r1, r4, 1
- add r1, sp
- strh r0, [r1]
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x84
- bne _08041F26
- adds r0, r4, 0
- eors r0, r7
- strb r0, [r6]
- strb r4, [r6, 0x1]
- b _08041F3C
-_08041F26:
- adds r0, r5, 0
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFE
- bne _08041F3C
- strb r4, [r6]
- adds r0, r4, 0
- eors r0, r7
- strb r0, [r6, 0x1]
-_08041F3C:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1
- bls _08041EFC
- ldrb r0, [r6]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- bl sub_8041870
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x1D
- bne _08041F6E
- movs r0, 0x8C
- lsls r0, 1
- add r0, r8
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08041F6E
- movs r4, 0x20
-_08041F6E:
- ldr r0, _08041FC0 @ =0x00000183
- cmp r4, r0
- bne _08041F88
- subs r0, 0x6B
- add r0, r8
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 8
- ands r0, r1
- cmp r0, 0
- beq _08041F88
- movs r4, 0xC1
- lsls r4, 1
-_08041F88:
- ldrb r0, [r6, 0x1]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- cmp r0, 0x84
- bne _08041FB2
- ldrb r1, [r6]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 4
- add r0, r8
- bl GetBoxMonGender
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFE
- beq _08041FB2
- ldrb r1, [r6, 0x1]
- ldrb r0, [r6]
- strb r0, [r6, 0x1]
- strb r1, [r6]
-_08041FB2:
- adds r0, r4, 0
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08041FC0: .4byte 0x00000183
- thumb_func_end sub_8041EEC
-
- thumb_func_start sub_8041FC4
-sub_8041FC4: @ 8041FC4
- push {r4-r6,lr}
- sub sp, 0x6C
- adds r5, r0, 0
- add r6, sp, 0x64
- adds r1, r6, 0
- bl sub_8041EEC
- add r4, sp, 0x68
- strh r0, [r4]
- adds r0, r4, 0
- adds r1, r5, 0
- bl incense_effects
- ldrh r1, [r4]
- mov r0, sp
- adds r2, r5, 0
- bl sub_80420FC
- mov r0, sp
- adds r1, r5, 0
- bl sub_80419A8
- ldrb r0, [r6, 0x1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 4
- adds r1, r5, r1
- ldrb r0, [r6]
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 4
- adds r2, r5, r2
- mov r0, sp
- bl daycare_build_child_moveset
- mov r2, sp
- adds r2, 0x6A
- movs r0, 0x1
- strb r0, [r2]
- mov r0, sp
- movs r1, 0x2D
- bl SetMonData
- ldr r0, _08042040 @ =gPlayerParty
- movs r1, 0xFA
- lsls r1, 1
- adds r0, r1
- mov r1, sp
- movs r2, 0x64
- bl memcpy
- bl party_compaction
- bl CalculatePlayerPartyCount
- adds r0, r5, 0
- bl sub_8041E64
- add sp, 0x6C
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08042040: .4byte gPlayerParty
- thumb_func_end sub_8041FC4
-
- thumb_func_start sub_8042044
-sub_8042044: @ 8042044
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- adds r7, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 24
- lsrs r6, 24
- movs r4, 0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r1, r5, 0
- movs r2, 0x5
- movs r3, 0x20
- bl CreateMon
- movs r0, 0x12
- add r0, sp
- mov r8, r0
- strb r4, [r0]
- movs r1, 0x4
- add r0, sp, 0x10
- strh r1, [r0]
- mov r4, sp
- adds r4, 0x13
- movs r0, 0x1
- mov r9, r0
- mov r0, r9
- strb r0, [r4]
- adds r0, r7, 0
- movs r1, 0x26
- add r2, sp, 0x10
- bl SetMonData
- ldr r2, _080420F4 @ =gUnknown_08209AD4
- adds r0, r7, 0
- movs r1, 0x2
- bl SetMonData
- lsls r2, r5, 3
- subs r2, r5
- lsls r2, 2
- ldr r0, _080420F8 @ =gBaseStats + 0x11 @ egg cycles offset
- adds r2, r0
- adds r0, r7, 0
- movs r1, 0x20
- bl SetMonData
- adds r0, r7, 0
- movs r1, 0x24
- mov r2, r8
- bl SetMonData
- adds r0, r7, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl SetMonData
- cmp r6, 0
- beq _080420D6
- add r2, sp, 0x14
- movs r0, 0xFD
- strb r0, [r2]
- adds r0, r7, 0
- movs r1, 0x23
- bl SetMonData
-_080420D6:
- mov r2, sp
- adds r2, 0x15
- mov r0, r9
- strb r0, [r2]
- adds r0, r7, 0
- movs r1, 0x2D
- bl SetMonData
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080420F4: .4byte gUnknown_08209AD4
-_080420F8: .4byte gBaseStats + 0x11 @ egg cycles offset
- thumb_func_end sub_8042044
-
- thumb_func_start sub_80420FC
-sub_80420FC: @ 80420FC
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x14
- adds r6, r0, 0
- adds r5, r1, 0
- adds r4, r2, 0
- lsls r5, 16
- lsrs r5, 16
- bl Random
- movs r1, 0x8C
- lsls r1, 1
- adds r4, r1
- ldrh r1, [r4]
- lsls r0, 16
- orrs r1, r0
- movs r0, 0x1
- mov r8, r0
- str r0, [sp]
- str r1, [sp, 0x4]
- movs r4, 0
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x5
- movs r3, 0x20
- bl CreateMon
- movs r1, 0x12
- add r1, sp
- mov r9, r1
- strb r4, [r1]
- movs r1, 0x4
- add r0, sp, 0x10
- strh r1, [r0]
- mov r4, sp
- adds r4, 0x13
- mov r0, r8
- strb r0, [r4]
- adds r0, r6, 0
- movs r1, 0x26
- add r2, sp, 0x10
- bl SetMonData
- ldr r2, _08042198 @ =gUnknown_08209AD4
- adds r0, r6, 0
- movs r1, 0x2
- bl SetMonData
- lsls r2, r5, 3
- subs r2, r5
- lsls r2, 2
- ldr r0, _0804219C @ =gBaseStats + 0x11 @ egg cycles offset
- adds r2, r0
- adds r0, r6, 0
- movs r1, 0x20
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x24
- mov r2, r9
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x3
- adds r2, r4, 0
- bl SetMonData
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08042198: .4byte gUnknown_08209AD4
-_0804219C: .4byte gBaseStats + 0x11 @ egg cycles offset
- thumb_func_end sub_80420FC
-
- thumb_func_start sp0B8_daycare
-sp0B8_daycare: @ 80421A0
- push {lr}
- ldr r0, _080421AC @ =gSaveBlock1 + 0x2F9C
- bl sub_8041FC4
- pop {r0}
- bx r0
- .align 2, 0
-_080421AC: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end sp0B8_daycare
-
- thumb_func_start sub_80421B0
-sub_80421B0: @ 80421B0
- push {r4-r7,lr}
- sub sp, 0x8
- adds r7, r0, 0
- movs r2, 0
- movs r6, 0
- adds r5, r7, 0
-_080421BC:
- lsls r4, r6, 2
- adds r0, r5, 0
- movs r1, 0x5
- str r2, [sp, 0x4]
- bl GetBoxMonData
- ldr r2, [sp, 0x4]
- cmp r0, 0
- beq _080421DE
- movs r0, 0x88
- lsls r0, 1
- adds r1, r7, r0
- adds r1, r4
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- adds r2, 0x1
-_080421DE:
- adds r5, 0x50
- adds r6, 0x1
- cmp r6, 0x1
- bls _080421BC
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r7, r1
- ldrh r0, [r0]
- cmp r0, 0
- bne _08042226
- cmp r2, 0x2
- bne _08042226
- subs r1, 0x4
- adds r0, r7, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08042226
- adds r0, r7, 0
- bl daycare_relationship_score
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x64
- muls r0, r1
- ldr r1, _08042240 @ =0x0000ffff
- bl __udivsi3
- cmp r4, r0
- bls _08042226
- bl sub_8041940
-_08042226:
- movs r0, 0x8D
- lsls r0, 1
- adds r1, r7, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _08042290
- movs r6, 0
- b _08042288
- .align 2, 0
-_08042240: .4byte 0x0000ffff
-_08042244:
- movs r0, 0x64
- adds r1, r6, 0
- muls r1, r0
- ldr r0, _08042270 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _08042286
- adds r0, r4, 0
- movs r1, 0x20
- bl GetMonData
- str r0, [sp]
- cmp r0, 0
- bne _08042278
- ldr r0, _08042274 @ =gSpecialVar_0x8004
- strh r6, [r0]
- movs r0, 0x1
- b _08042292
- .align 2, 0
-_08042270: .4byte gPlayerParty
-_08042274: .4byte gSpecialVar_0x8004
-_08042278:
- subs r0, 0x1
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0x20
- mov r2, sp
- bl SetMonData
-_08042286:
- adds r6, 0x1
-_08042288:
- ldr r0, _0804229C @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r6, r0
- bcc _08042244
-_08042290:
- movs r0, 0
-_08042292:
- add sp, 0x8
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0804229C: .4byte gPlayerPartyCount
- thumb_func_end sub_80421B0
-
- thumb_func_start sub_80422A0
-sub_80422A0: @ 80422A0
- push {lr}
- ldr r0, _080422B0 @ =gSaveBlock1 + 0x2F9C
- bl sub_80421B0
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_080422B0: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end sub_80422A0
-
- thumb_func_start sub_80422B4
-sub_80422B4: @ 80422B4
- movs r1, 0x8C
- lsls r1, 1
- adds r0, r1
- ldrh r1, [r0]
- negs r0, r1
- orrs r0, r1
- lsrs r0, 31
- bx lr
- thumb_func_end sub_80422B4
-
- thumb_func_start sub_80422C4
-sub_80422C4: @ 80422C4
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _080422FC
- ldr r1, _0804231C @ =gStringVar1
- adds r0, r6, 0
- bl GetBoxMonNick
- adds r0, r6, 0
- movs r1, 0x3
- bl GetBoxMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _08042320 @ =gStringVar3
- adds r0, r6, 0
- movs r1, 0x7
- adds r2, r5, 0
- bl GetBoxMonData
- adds r0, r5, 0
- adds r1, r4, 0
- bl ConvertInternationalString
-_080422FC:
- adds r4, r6, 0
- adds r4, 0x50
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- cmp r0, 0
- beq _08042314
- ldr r1, _08042324 @ =gStringVar2
- adds r0, r4, 0
- bl GetBoxMonNick
-_08042314:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804231C: .4byte gStringVar1
-_08042320: .4byte gStringVar3
-_08042324: .4byte gStringVar2
- thumb_func_end sub_80422C4
-
- thumb_func_start sub_8042328
-sub_8042328: @ 8042328
- push {r4-r6,lr}
- ldr r6, _08042354 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r6]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _08042358 @ =gPlayerParty
- adds r0, r4
- ldr r1, _0804235C @ =gStringVar1
- bl GetBoxMonNick
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- movs r1, 0xB
- bl GetBoxMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08042354: .4byte gLastFieldPokeMenuOpened
-_08042358: .4byte gPlayerParty
-_0804235C: .4byte gStringVar1
- thumb_func_end sub_8042328
-
- thumb_func_start sp0B5_daycare
-sp0B5_daycare: @ 8042360
- push {lr}
- ldr r0, _0804236C @ =gSaveBlock1 + 0x2F9C
- bl sub_80422C4
- pop {r0}
- bx r0
- .align 2, 0
-_0804236C: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end sp0B5_daycare
-
- thumb_func_start sp0B6_daycare
-sp0B6_daycare: @ 8042370
- push {r4,lr}
- ldr r4, _08042384 @ =gSaveBlock1 + 0x2F9C
- adds r0, r4, 0
- bl sub_80422B4
- lsls r0, 24
- cmp r0, 0
- beq _08042388
- movs r0, 0x1
- b _080423A0
- .align 2, 0
-_08042384: .4byte gSaveBlock1 + 0x2F9C
-_08042388:
- adds r0, r4, 0
- bl Daycare_CountPokemon
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _0804239A
- movs r0, 0
- b _080423A0
-_0804239A:
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
-_080423A0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sp0B6_daycare
-
- thumb_func_start sub_80423A8
-sub_80423A8: @ 80423A8
- push {r4-r6,lr}
- adds r5, r1, 0
- movs r4, 0
- adds r1, r0, 0
-_080423B0:
- movs r3, 0
- ldrh r0, [r1]
- adds r2, r5, 0
-_080423B6:
- ldrh r6, [r2]
- cmp r0, r6
- bne _080423C0
- movs r0, 0x1
- b _080423D2
-_080423C0:
- adds r2, 0x2
- adds r3, 0x1
- cmp r3, 0x1
- ble _080423B6
- adds r1, 0x2
- adds r4, 0x1
- cmp r4, 0x1
- ble _080423B0
- movs r0, 0
-_080423D2:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_80423A8
-
- thumb_func_start daycare_relationship_score
-daycare_relationship_score: @ 80423D8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x2C
- movs r1, 0
- mov r8, r1
- mov r2, sp
- adds r2, 0x8
- str r2, [sp, 0x1C]
- add r1, sp, 0xC
- mov r10, r1
- adds r2, 0xC
- str r2, [sp, 0x20]
- mov r1, sp
- adds r1, 0x2
- ldr r2, _08042488 @ =gBaseStats
- mov r9, r2
- ldr r5, [sp, 0x1C]
- adds r7, r1, 0
- mov r6, sp
- ldr r1, [sp, 0x20]
- str r1, [sp, 0x24]
- mov r2, r10
- str r2, [sp, 0x28]
- adds r4, r0, 0
-_0804240E:
- adds r0, r4, 0
- movs r1, 0xB
- bl GetBoxMonData
- strh r0, [r5]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetBoxMonData
- ldr r1, [sp, 0x28]
- stm r1!, {r0}
- str r1, [sp, 0x28]
- adds r0, r4, 0
- movs r1, 0
- bl GetBoxMonData
- adds r1, r0, 0
- ldrh r0, [r5]
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- ldr r2, [sp, 0x24]
- stm r2!, {r0}
- str r2, [sp, 0x24]
- ldrh r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x14]
- strh r0, [r6]
- ldrh r1, [r5]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x15]
- strh r0, [r7]
- adds r5, 0x2
- adds r7, 0x4
- adds r6, 0x4
- adds r4, 0x50
- movs r0, 0x1
- add r8, r0
- mov r1, r8
- cmp r1, 0x1
- bls _0804240E
- mov r0, sp
- ldrh r1, [r0]
- cmp r1, 0xF
- beq _08042484
- ldrh r0, [r0, 0x4]
- cmp r0, 0xF
- beq _08042484
- cmp r1, 0xD
- bne _0804248C
- cmp r0, 0xD
- bne _08042490
-_08042484:
- movs r0, 0
- b _080424E4
- .align 2, 0
-_08042488: .4byte gBaseStats
-_0804248C:
- cmp r0, 0xD
- bne _0804249C
-_08042490:
- ldr r1, [sp, 0xC]
- mov r2, r10
- ldr r0, [r2, 0x4]
- cmp r1, r0
- beq _080424DE
- b _080424E2
-_0804249C:
- ldr r0, [sp, 0x14]
- ldr r2, [sp, 0x20]
- ldr r1, [r2, 0x4]
- cmp r0, r1
- beq _08042484
- cmp r0, 0xFF
- beq _08042484
- cmp r1, 0xFF
- beq _08042484
- add r1, sp, 0x4
- mov r0, sp
- bl sub_80423A8
- lsls r0, 24
- cmp r0, 0
- beq _08042484
- ldr r0, [sp, 0x1C]
- ldrh r1, [r0, 0x2]
- ldrh r0, [r0]
- cmp r0, r1
- bne _080424D4
- ldr r1, [sp, 0xC]
- mov r2, r10
- ldr r0, [r2, 0x4]
- cmp r1, r0
- beq _080424E2
- movs r0, 0x46
- b _080424E4
-_080424D4:
- ldr r1, [sp, 0xC]
- mov r2, r10
- ldr r0, [r2, 0x4]
- cmp r1, r0
- bne _080424E2
-_080424DE:
- movs r0, 0x14
- b _080424E4
-_080424E2:
- movs r0, 0x32
-_080424E4:
- add sp, 0x2C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end daycare_relationship_score
-
- thumb_func_start daycare_relationship_score_from_savegame
-daycare_relationship_score_from_savegame: @ 80424F4
- push {lr}
- ldr r0, _08042504 @ =gSaveBlock1 + 0x2F9C
- bl daycare_relationship_score
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08042504: .4byte gSaveBlock1 + 0x2F9C
- thumb_func_end daycare_relationship_score_from_savegame
-
- thumb_func_start sp0B9_daycare_relationship_comment
-sp0B9_daycare_relationship_comment: @ 8042508
- push {lr}
- bl daycare_relationship_score_from_savegame
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- movs r1, 0
- cmp r0, 0
- bne _0804251C
- movs r1, 0x3
-_0804251C:
- cmp r0, 0x14
- bne _08042522
- movs r1, 0x2
-_08042522:
- cmp r0, 0x32
- bne _08042528
- movs r1, 0x1
-_08042528:
- cmp r2, 0x46
- bne _0804252E
- movs r1, 0
-_0804252E:
- ldr r0, _08042540 @ =gStringVar4
- ldr r2, _08042544 @ =gUnknown_08209AC4
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl StringCopy
- pop {r0}
- bx r0
- .align 2, 0
-_08042540: .4byte gStringVar4
-_08042544: .4byte gUnknown_08209AC4
- thumb_func_end sp0B9_daycare_relationship_comment
-
- thumb_func_start NameHasGenderSymbol
-NameHasGenderSymbol: @ 8042548
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r1, 24
- lsrs r5, r1, 24
- mov r2, sp
- mov r1, sp
- movs r0, 0
- strb r0, [r1, 0x1]
- strb r0, [r2]
- movs r3, 0
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0804258C
-_08042564:
- adds r1, r4, r3
- ldrb r0, [r1]
- cmp r0, 0xB5
- bne _08042572
- ldrb r0, [r2]
- adds r0, 0x1
- strb r0, [r2]
-_08042572:
- ldrb r0, [r1]
- cmp r0, 0xB6
- bne _0804257E
- ldrb r0, [r2, 0x1]
- adds r0, 0x1
- strb r0, [r2, 0x1]
-_0804257E:
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- adds r0, r4, r3
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08042564
-_0804258C:
- cmp r5, 0
- bne _080425A0
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- beq _080425A0
- mov r0, sp
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _080425B4
-_080425A0:
- cmp r5, 0xFE
- bne _080425B8
- mov r0, sp
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _080425B8
- mov r0, sp
- ldrb r0, [r0]
- cmp r0, 0
- bne _080425B8
-_080425B4:
- movs r0, 0x1
- b _080425BA
-_080425B8:
- movs r0, 0
-_080425BA:
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end NameHasGenderSymbol
-
- thumb_func_start AppendGenderSymbol
-AppendGenderSymbol: @ 80425C4
- push {r4,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r1, 24
- cmp r1, 0
- bne _080425E4
- movs r1, 0
- bl NameHasGenderSymbol
- lsls r0, 24
- cmp r0, 0
- bne _08042600
- ldr r1, _080425E0 @ =gOtherText_MaleSymbol3
- b _08042602
- .align 2, 0
-_080425E0: .4byte gOtherText_MaleSymbol3
-_080425E4:
- cmp r1, 0xFE
- bne _08042600
- adds r0, r4, 0
- movs r1, 0xFE
- bl NameHasGenderSymbol
- lsls r0, 24
- cmp r0, 0
- bne _08042600
- ldr r1, _080425FC @ =gOtherText_FemaleSymbol3
- b _08042602
- .align 2, 0
-_080425FC: .4byte gOtherText_FemaleSymbol3
-_08042600:
- ldr r1, _08042610 @ =gOtherText_GenderlessSymbol
-_08042602:
- adds r0, r4, 0
- bl StringAppend
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08042610: .4byte gOtherText_GenderlessSymbol
- thumb_func_end AppendGenderSymbol
-
- thumb_func_start MonAppendGenderSymbol
-MonAppendGenderSymbol: @ 8042614
- push {r4,lr}
- adds r4, r0, 0
- adds r0, r1, 0
- bl GetBoxMonGender
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl AppendGenderSymbol
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end MonAppendGenderSymbol
-
- thumb_func_start DaycareLevelMenuGetText
-DaycareLevelMenuGetText: @ 8042630
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x28
- mov r8, r0
- adds r7, r1, 0
- movs r0, 0xFF
- strb r0, [r7]
- movs r6, 0
- add r0, sp, 0x14
- mov r9, r0
-_08042648:
- lsls r0, r6, 2
- adds r0, r6
- lsls r4, r0, 4
- add r4, r8
- lsls r0, 2
- mov r1, sp
- adds r5, r1, r0
- adds r0, r4, 0
- adds r1, r5, 0
- bl GetBoxMonNick
- adds r0, r5, 0
- adds r1, r4, 0
- bl MonAppendGenderSymbol
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- bls _08042648
- adds r0, r7, 0
- mov r1, sp
- bl StringCopy
- ldr r4, _080426A8 @ =gOtherText_NewLine2
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringAppend
- adds r0, r7, 0
- mov r1, r9
- bl StringAppend
- adds r0, r7, 0
- adds r1, r4, 0
- bl StringAppend
- ldr r1, _080426AC @ =gOtherText_CancelAndLv
- adds r0, r7, 0
- bl StringAppend
- add sp, 0x28
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080426A8: .4byte gOtherText_NewLine2
-_080426AC: .4byte gOtherText_CancelAndLv
- thumb_func_end DaycareLevelMenuGetText
-
- thumb_func_start DaycareLevelMenuGetLevelText
-DaycareLevelMenuGetLevelText: @ 80426B0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- adds r4, r1, 0
- movs r0, 0xFF
- strb r0, [r4]
- movs r5, 0
- movs r0, 0xFC
- mov r8, r0
- movs r7, 0x14
-_080426C6:
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 4
- adds r0, r6, r0
- movs r3, 0x88
- lsls r3, 1
- adds r1, r6, r3
- adds r1, r2
- ldr r1, [r1]
- bl Daycare_GetLevelAfterSteps
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x34
- strb r0, [r4]
- mov r0, r8
- strb r0, [r4, 0x1]
- strb r7, [r4, 0x2]
- movs r0, 0x6
- strb r0, [r4, 0x3]
- adds r0, r4, 0x4
- movs r2, 0x1
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r4, r0, 0
- mov r3, r8
- strb r3, [r4]
- strb r7, [r4, 0x1]
- movs r0, 0
- strb r0, [r4, 0x2]
- adds r0, r4, 0x3
- ldr r1, _08042728 @ =gOtherText_NewLine2
- bl StringCopy
- adds r4, r0, 0
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bls _080426C6
- movs r0, 0xFF
- strb r0, [r4]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08042728: .4byte gOtherText_NewLine2
- thumb_func_end DaycareLevelMenuGetLevelText
-
- thumb_func_start DaycareLevelMenuProcessKeyInput
-DaycareLevelMenuProcessKeyInput: @ 804272C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- ldr r0, _08042760 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08042768
- ldr r0, _08042764 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0x8]
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08042816
- subs r0, r2, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x1
- negs r0, r0
- b _0804278A
- .align 2, 0
-_08042760: .4byte gMain
-_08042764: .4byte gTasks
-_08042768:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804279C
- ldr r0, _08042798 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0x8]
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- cmp r0, 0x2
- beq _08042816
- adds r0, r2, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x1
-_0804278A:
- bl MoveMenuCursor
- movs r0, 0x5
- bl PlaySE
- b _08042816
- .align 2, 0
-_08042798: .4byte gTasks
-_0804279C:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080427E8
- bl HandleDestroyMenuCursors
- movs r0, 0x5
- bl PlaySE
- ldr r3, _080427DC @ =gLastFieldPokeMenuOpened
- ldr r2, _080427E0 @ =gScriptResult
- ldr r1, _080427E4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldrh r0, [r0, 0x8]
- strh r0, [r2]
- strb r0, [r3]
- adds r0, r4, 0
- bl DestroyTask
- movs r0, 0xF
- movs r1, 0x6
- movs r2, 0x1D
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- bl EnableBothScriptContexts
- b _08042816
- .align 2, 0
-_080427DC: .4byte gLastFieldPokeMenuOpened
-_080427E0: .4byte gScriptResult
-_080427E4: .4byte gTasks
-_080427E8:
- movs r4, 0x2
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- beq _08042816
- bl HandleDestroyMenuCursors
- ldr r0, _0804281C @ =gLastFieldPokeMenuOpened
- ldr r1, _08042820 @ =gScriptResult
- strh r4, [r1]
- movs r1, 0x2
- strb r1, [r0]
- adds r0, r5, 0
- bl DestroyTask
- movs r0, 0xF
- movs r1, 0x6
- movs r2, 0x1D
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- bl EnableBothScriptContexts
-_08042816:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804281C: .4byte gLastFieldPokeMenuOpened
-_08042820: .4byte gScriptResult
- thumb_func_end DaycareLevelMenuProcessKeyInput
-
- thumb_func_start ShowDaycareLevelMenu
-ShowDaycareLevelMenu: @ 8042824
- push {r4,lr}
- sub sp, 0x6C
- movs r0, 0xF
- movs r1, 0x6
- movs r2, 0x1D
- movs r3, 0xD
- bl MenuDrawTextWindow
- ldr r4, _08042880 @ =gSaveBlock1 + 0x2F9C
- adds r0, r4, 0
- add r1, sp, 0x8
- bl DaycareLevelMenuGetText
- add r0, sp, 0x8
- movs r1, 0x10
- movs r2, 0x7
- bl MenuPrint
- adds r0, r4, 0
- add r1, sp, 0x8
- bl DaycareLevelMenuGetLevelText
- add r0, sp, 0x8
- movs r1, 0xCE
- movs r2, 0x38
- movs r3, 0x1
- bl MenuPrint_PixelCoords
- movs r0, 0
- str r0, [sp]
- movs r0, 0xD
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x10
- movs r2, 0x7
- movs r3, 0x3
- bl InitMenu
- ldr r0, _08042884 @ =DaycareLevelMenuProcessKeyInput
- movs r1, 0x3
- bl CreateTask
- add sp, 0x6C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08042880: .4byte gSaveBlock1 + 0x2F9C
-_08042884: .4byte DaycareLevelMenuProcessKeyInput
- thumb_func_end ShowDaycareLevelMenu
-
- thumb_func_start ChooseSendDaycareMon
-ChooseSendDaycareMon: @ 8042888
- push {lr}
- movs r0, 0x6
- movs r1, 0
- bl OpenPartyMenu
- ldr r1, _0804289C @ =gMain
- ldr r0, _080428A0 @ =c2_exit_to_overworld_2_switch
- str r0, [r1, 0x8]
- pop {r0}
- bx r0
- .align 2, 0
-_0804289C: .4byte gMain
-_080428A0: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end ChooseSendDaycareMon
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/easy_chat.s b/asm/easy_chat.s
index 6b85e1e76..7bb496641 100644
--- a/asm/easy_chat.s
+++ b/asm/easy_chat.s
@@ -9975,7 +9975,7 @@ _080EAE50:
lsls r0, 16
lsrs r0, 16
movs r1, 0
- bl GetNationalPokedexFlag
+ bl GetSetPokedexFlag
b _080EAE7C
_080EAE62:
ldr r0, _080EAE74 @ =gUnknown_083DB694
diff --git a/asm/egg_hatch.s b/asm/egg_hatch.s
deleted file mode 100644
index 7365f4da6..000000000
--- a/asm/egg_hatch.s
+++ /dev/null
@@ -1,1630 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start AddHatchedMonToParty
-AddHatchedMonToParty: @ 80429EC
- push {r4-r6,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- adds r5, r0, 0
- muls r5, r1
- ldr r0, _08042A9C @ =gPlayerParty
- adds r5, r0
- ldr r1, _08042AA0 @ =gEnemyParty
- adds r0, r5, 0
- bl CreatedHatchedMon
- add r2, sp, 0xC
- movs r6, 0
- strb r6, [r2]
- adds r0, r5, 0
- movs r1, 0x2D
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- mov r0, sp
- adds r1, r4, 0
- bl GetSpeciesName
- adds r0, r5, 0
- movs r1, 0x2
- mov r2, sp
- bl SetMonData
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x2
- bl GetNationalPokedexFlag
- adds r0, r4, 0
- movs r1, 0x3
- bl GetNationalPokedexFlag
- ldr r1, _08042AA4 @ =gStringVar1
- adds r0, r5, 0
- bl GetMonNick
- mov r2, sp
- adds r2, 0xE
- movs r0, 0x4
- strh r0, [r2]
- adds r0, r5, 0
- movs r1, 0x26
- bl SetMonData
- add r2, sp, 0x10
- strh r6, [r2]
- adds r0, r5, 0
- movs r1, 0x24
- bl SetMonData
- bl sav1_map_get_name
- mov r2, sp
- adds r2, 0x12
- strb r0, [r2]
- adds r0, r5, 0
- movs r1, 0x23
- bl SetMonData
- adds r0, r5, 0
- bl MonRestorePP
- adds r0, r5, 0
- bl CalculateMonStats
- add sp, 0x14
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08042A9C: .4byte gPlayerParty
-_08042AA0: .4byte gEnemyParty
-_08042AA4: .4byte gStringVar1
- thumb_func_end AddHatchedMonToParty
-
- thumb_func_start ScriptHatchMon
-ScriptHatchMon: @ 8042AA8
- push {lr}
- ldr r0, _08042AB8 @ =gSpecialVar_0x8004
- ldrb r0, [r0]
- bl AddHatchedMonToParty
- pop {r0}
- bx r0
- .align 2, 0
-_08042AB8: .4byte gSpecialVar_0x8004
- thumb_func_end ScriptHatchMon
-
- thumb_func_start sub_8042ABC
-sub_8042ABC: @ 8042ABC
- push {r4-r6,lr}
- sub sp, 0x20
- adds r5, r0, 0
- lsls r4, r1, 24
- lsrs r4, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 4
- adds r0, r5, r0
- mov r1, sp
- bl GetBoxMonNick
- lsls r0, r4, 3
- subs r0, r4
- lsls r1, r0, 3
- adds r0, r5, r1
- adds r0, 0xC0
- ldrh r0, [r0]
- cmp r0, 0
- beq _08042B40
- adds r0, r1, 0
- adds r0, 0xA0
- adds r5, r0
- adds r6, r5, 0
- adds r6, 0x2C
- mov r0, sp
- adds r1, r6, 0
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- bne _08042B08
- ldr r0, _08042B30 @ =gSaveBlock2
- adds r1, r5, 0
- adds r1, 0x24
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- beq _08042B40
-_08042B08:
- ldr r0, _08042B34 @ =gStringVar1
- mov r1, sp
- bl StringCopy
- ldr r4, _08042B38 @ =gStringVar2
- adds r1, r5, 0
- adds r1, 0x24
- adds r0, r4, 0
- bl StringCopy
- ldr r0, _08042B3C @ =gStringVar3
- adds r1, r6, 0
- bl StringCopy
- adds r0, r4, 0
- bl SanitizeNameString
- movs r0, 0x1
- b _08042B42
- .align 2, 0
-_08042B30: .4byte gSaveBlock2
-_08042B34: .4byte gStringVar1
-_08042B38: .4byte gStringVar2
-_08042B3C: .4byte gStringVar3
-_08042B40:
- movs r0, 0
-_08042B42:
- add sp, 0x20
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8042ABC
-
- thumb_func_start sub_8042B4C
-sub_8042B4C: @ 8042B4C
- push {lr}
- ldr r0, _08042B60 @ =gSaveBlock1 + 0x2F9C
- ldr r1, _08042B64 @ =gSpecialVar_0x8004
- ldrb r1, [r1]
- bl sub_8042ABC
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08042B60: .4byte gSaveBlock1 + 0x2F9C
-_08042B64: .4byte gSpecialVar_0x8004
- thumb_func_end sub_8042B4C
-
- thumb_func_start EggHatchCreateMonSprite
-EggHatchCreateMonSprite: @ 8042B68
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r3, r0, 24
- adds r4, r3, 0
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r1, r2, 24
- adds r2, r1, 0
- movs r5, 0
- mov r9, r5
- movs r7, 0
- cmp r3, 0
- bne _08042B96
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08042BB0 @ =gPlayerParty
- adds r7, r1, r0
- movs r5, 0x1
-_08042B96:
- cmp r3, 0x1
- bne _08042BA6
- movs r0, 0x64
- adds r1, r2, 0
- muls r1, r0
- ldr r0, _08042BB0 @ =gPlayerParty
- adds r7, r1, r0
- movs r5, 0x3
-_08042BA6:
- cmp r6, 0
- beq _08042BB4
- cmp r6, 0x1
- beq _08042C14
- b _08042C50
- .align 2, 0
-_08042BB0: .4byte gPlayerParty
-_08042BB4:
- adds r0, r7, 0
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r7, 0
- movs r1, 0
- bl GetMonData
- mov r8, r0
- lsls r0, r5, 3
- ldr r1, _08042C04 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _08042C08 @ =gMonFrontPicCoords
- lsls r2, r5, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- ldr r3, _08042C0C @ =0x02000000
- ldr r6, _08042C10 @ =gUnknown_081FAF4C
- lsls r4, 1
- adds r4, 0x1
- lsls r4, 2
- adds r4, r6
- ldr r4, [r4]
- str r4, [sp]
- str r5, [sp, 0x4]
- mov r4, r8
- str r4, [sp, 0x8]
- bl HandleLoadSpecialPokePic
- adds r0, r7, 0
- bl sub_8040990
- bl LoadCompressedObjectPalette
- b _08042C50
- .align 2, 0
-_08042C04: .4byte gMonFrontPicTable
-_08042C08: .4byte gMonFrontPicCoords
-_08042C0C: .4byte 0x02000000
-_08042C10: .4byte gUnknown_081FAF4C
-_08042C14:
- adds r0, r7, 0
- bl sub_8040990
- ldrh r0, [r0, 0x4]
- adds r1, r5, 0
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08042C60 @ =gUnknown_02024E8C
- movs r1, 0x78
- movs r2, 0x46
- movs r3, 0x6
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- ldr r4, _08042C64 @ =gSprites
- lsls r1, r0, 4
- add r1, r9
- lsls r1, 2
- adds r2, r1, r4
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r2]
- adds r4, 0x1C
- adds r1, r4
- ldr r0, _08042C68 @ =SpriteCallbackDummy
- str r0, [r1]
-_08042C50:
- mov r0, r9
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08042C60: .4byte gUnknown_02024E8C
-_08042C64: .4byte gSprites
-_08042C68: .4byte SpriteCallbackDummy
- thumb_func_end EggHatchCreateMonSprite
-
- thumb_func_start VBlankCB_EggHatch
-VBlankCB_EggHatch: @ 8042C6C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end VBlankCB_EggHatch
-
- thumb_func_start EggHatch
-EggHatch: @ 8042C80
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _08042CA8 @ =Task_EggHatch
- movs r1, 0xA
- bl CreateTask
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08042CA8: .4byte Task_EggHatch
- thumb_func_end EggHatch
-
- thumb_func_start Task_EggHatch
-Task_EggHatch: @ 8042CAC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08042CD8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08042CD0
- ldr r0, _08042CDC @ =CB2_EggHatch_0
- bl SetMainCallback2
- ldr r1, _08042CE0 @ =gFieldCallback
- ldr r0, _08042CE4 @ =sub_8080990
- str r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
-_08042CD0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08042CD8: .4byte gPaletteFade
-_08042CDC: .4byte CB2_EggHatch_0
-_08042CE0: .4byte gFieldCallback
-_08042CE4: .4byte sub_8080990
- thumb_func_end Task_EggHatch
-
- thumb_func_start CB2_EggHatch_0
-CB2_EggHatch_0: @ 8042CE8
- push {r4-r7,lr}
- ldr r0, _08042D04 @ =gMain
- ldr r1, _08042D08 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x8
- bls _08042CF8
- b _08042F6E
-_08042CF8:
- lsls r0, 2
- ldr r1, _08042D0C @ =_08042D10
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08042D04: .4byte gMain
-_08042D08: .4byte 0x0000043c
-_08042D0C: .4byte _08042D10
- .align 2, 0
-_08042D10:
- .4byte _08042D34
- .4byte _08042D90
- .4byte _08042DC4
- .4byte _08042E20
- .4byte _08042E40
- .4byte _08042E74
- .4byte _08042E88
- .4byte _08042EB0
- .4byte _08042F40
-_08042D34:
- movs r0, 0x80
- lsls r0, 19
- movs r2, 0
- strh r2, [r0]
- ldr r1, _08042D74 @ =gUnknown_0300481C
- ldr r0, _08042D78 @ =0x02018000
- str r0, [r1]
- ldr r1, _08042D7C @ =gSpecialVar_0x8004
- ldrh r1, [r1]
- strb r1, [r0, 0x4]
- adds r0, 0x3A
- strb r2, [r0]
- bl ResetTasks
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r0, _08042D80 @ =VBlankCB_EggHatch
- bl SetVBlankCallback
- ldr r1, _08042D84 @ =gMain
- ldr r2, _08042D88 @ =0x0000043c
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl GetCurrentMapMusic
- ldr r1, _08042D8C @ =gSpecialVar_0x8005
- strh r0, [r1]
- b _08042F6E
- .align 2, 0
-_08042D74: .4byte gUnknown_0300481C
-_08042D78: .4byte 0x02018000
-_08042D7C: .4byte gSpecialVar_0x8004
-_08042D80: .4byte VBlankCB_EggHatch
-_08042D84: .4byte gMain
-_08042D88: .4byte 0x0000043c
-_08042D8C: .4byte gSpecialVar_0x8005
-_08042D90:
- ldr r5, _08042DBC @ =gWindowConfig_81E6F84
- adds r0, r5, 0
- bl SetUpWindowConfig
- ldr r4, _08042DC0 @ =gUnknown_0300481C
- ldr r0, [r4]
- adds r0, 0x8
- adds r1, r5, 0
- bl InitWindowFromConfig
- movs r0, 0x14
- bl SetTextWindowBaseTileNum
- ldr r1, [r4]
- adds r1, 0x38
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x8
- bl LoadTextWindowGraphics
- b _08042F04
- .align 2, 0
-_08042DBC: .4byte gWindowConfig_81E6F84
-_08042DC0: .4byte gUnknown_0300481C
-_08042DC4:
- ldr r0, _08042DFC @ =gUnknown_08D00000
- movs r1, 0xC0
- lsls r1, 19
- bl LZDecompressVram
- ldr r0, _08042E00 @ =gUnknown_08D00524
- ldr r4, _08042E04 @ =0x02000000
- movs r2, 0x80
- lsls r2, 4
- adds r1, r4, 0
- bl CpuSet
- ldr r1, _08042E08 @ =0x040000d4
- str r4, [r1]
- ldr r0, _08042E0C @ =0x06002800
- str r0, [r1, 0x4]
- ldr r0, _08042E10 @ =0x80000280
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r0, _08042E14 @ =gUnknown_08D004E0
- movs r1, 0
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r1, _08042E18 @ =gMain
- ldr r2, _08042E1C @ =0x0000043c
- adds r1, r2
- b _08042F0A
- .align 2, 0
-_08042DFC: .4byte gUnknown_08D00000
-_08042E00: .4byte gUnknown_08D00524
-_08042E04: .4byte 0x02000000
-_08042E08: .4byte 0x040000d4
-_08042E0C: .4byte 0x06002800
-_08042E10: .4byte 0x80000280
-_08042E14: .4byte gUnknown_08D004E0
-_08042E18: .4byte gMain
-_08042E1C: .4byte 0x0000043c
-_08042E20:
- ldr r0, _08042E34 @ =gUnknown_0820A3B0
- bl LoadSpriteSheet
- ldr r0, _08042E38 @ =gUnknown_0820A3B8
- bl LoadSpriteSheet
- ldr r0, _08042E3C @ =gUnknown_0820A3C0
- bl LoadSpritePalette
- b _08042F04
- .align 2, 0
-_08042E34: .4byte gUnknown_0820A3B0
-_08042E38: .4byte gUnknown_0820A3B8
-_08042E3C: .4byte gUnknown_0820A3C0
-_08042E40:
- ldr r0, _08042E64 @ =gSpriteTemplate_820A3C8
- movs r1, 0x78
- movs r2, 0x4B
- movs r3, 0x5
- bl CreateSprite
- ldr r2, _08042E68 @ =gUnknown_0300481C
- ldr r1, [r2]
- strb r0, [r1]
- ldr r0, [r2]
- ldrb r0, [r0, 0x4]
- bl AddHatchedMonToParty
- ldr r1, _08042E6C @ =gMain
- ldr r2, _08042E70 @ =0x0000043c
- adds r1, r2
- b _08042F0A
- .align 2, 0
-_08042E64: .4byte gSpriteTemplate_820A3C8
-_08042E68: .4byte gUnknown_0300481C
-_08042E6C: .4byte gMain
-_08042E70: .4byte 0x0000043c
-_08042E74:
- ldr r0, _08042E84 @ =gUnknown_0300481C
- ldr r0, [r0]
- ldrb r2, [r0, 0x4]
- movs r0, 0
- movs r1, 0
- bl EggHatchCreateMonSprite
- b _08042F04
- .align 2, 0
-_08042E84: .4byte gUnknown_0300481C
-_08042E88:
- ldr r4, _08042EA4 @ =gUnknown_0300481C
- ldr r0, [r4]
- ldrb r2, [r0, 0x4]
- movs r0, 0
- movs r1, 0x1
- bl EggHatchCreateMonSprite
- ldr r1, [r4]
- strb r0, [r1, 0x1]
- ldr r1, _08042EA8 @ =gMain
- ldr r2, _08042EAC @ =0x0000043c
- adds r1, r2
- b _08042F0A
- .align 2, 0
-_08042EA4: .4byte gUnknown_0300481C
-_08042EA8: .4byte gMain
-_08042EAC: .4byte 0x0000043c
-_08042EB0:
- ldr r0, _08042F14 @ =REG_BG2CNT
- ldr r2, _08042F18 @ =0x00004c06
- adds r1, r2, 0
- strh r1, [r0]
- ldr r0, _08042F1C @ =gUnknown_0820C9F8
- movs r1, 0x10
- movs r2, 0xA0
- bl LoadPalette
- ldr r3, _08042F20 @ =gUnknown_0820CA98
- ldr r4, _08042F24 @ =0x06004000
- movs r5, 0x98
- lsls r5, 5
- ldr r1, _08042F28 @ =0x040000d4
- ldr r6, _08042F2C @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_08042ED6:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _08042ED6
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _08042F30 @ =gUnknown_0820F798
- ldr r2, _08042F34 @ =0x06006000
- ldr r0, _08042F28 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08042F2C @ =0x80000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
-_08042F04:
- ldr r1, _08042F38 @ =gMain
- ldr r0, _08042F3C @ =0x0000043c
- adds r1, r0
-_08042F0A:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08042F6E
- .align 2, 0
-_08042F14: .4byte REG_BG2CNT
-_08042F18: .4byte 0x00004c06
-_08042F1C: .4byte gUnknown_0820C9F8
-_08042F20: .4byte gUnknown_0820CA98
-_08042F24: .4byte 0x06004000
-_08042F28: .4byte 0x040000d4
-_08042F2C: .4byte 0x80000800
-_08042F30: .4byte gUnknown_0820F798
-_08042F34: .4byte 0x06006000
-_08042F38: .4byte gMain
-_08042F3C: .4byte 0x0000043c
-_08042F40:
- ldr r1, _08042F74 @ =REG_BG1CNT
- ldr r2, _08042F78 @ =0x00000501
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08042F7C @ =REG_BG0HOFS
- movs r4, 0
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- adds r0, 0x2
- strh r4, [r0]
- ldr r0, _08042F80 @ =CB2_EggHatch_1
- bl SetMainCallback2
- ldr r0, _08042F84 @ =gUnknown_0300481C
- ldr r0, [r0]
- strb r4, [r0, 0x2]
-_08042F6E:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08042F74: .4byte REG_BG1CNT
-_08042F78: .4byte 0x00000501
-_08042F7C: .4byte REG_BG0HOFS
-_08042F80: .4byte CB2_EggHatch_1
-_08042F84: .4byte gUnknown_0300481C
- thumb_func_end CB2_EggHatch_0
-
- thumb_func_start EggHatchSetMonNickname
-EggHatchSetMonNickname: @ 8042F88
- push {lr}
- ldr r0, _08042FA8 @ =gSpecialVar_0x8004
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08042FAC @ =gPlayerParty
- adds r0, r1
- ldr r2, _08042FB0 @ =gStringVar3
- movs r1, 0x2
- bl SetMonData
- ldr r0, _08042FB4 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_08042FA8: .4byte gSpecialVar_0x8004
-_08042FAC: .4byte gPlayerParty
-_08042FB0: .4byte gStringVar3
-_08042FB4: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end EggHatchSetMonNickname
-
- thumb_func_start Task_EggHatchPlayBGM
-Task_EggHatchPlayBGM: @ 8042FB8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08043004 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08042FD4
- bl StopMapMusic
-_08042FD4:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- bne _08042FE4
- movs r0, 0xBC
- lsls r0, 1
- bl PlayBGM
-_08042FE4:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x3C
- ble _08042FF8
- ldr r0, _08043008 @ =0x00000179
- bl PlayBGM
- adds r0, r5, 0
- bl DestroyTask
-_08042FF8:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08043004: .4byte gTasks
-_08043008: .4byte 0x00000179
- thumb_func_end Task_EggHatchPlayBGM
-
- thumb_func_start CB2_EggHatch_1
-CB2_EggHatch_1: @ 804300C
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x8
- ldr r1, _08043030 @ =gUnknown_0300481C
- ldr r0, [r1]
- ldrb r0, [r0, 0x2]
- adds r5, r1, 0
- cmp r0, 0xB
- bls _08043026
- b _080432BA
-_08043026:
- lsls r0, 2
- ldr r1, _08043034 @ =_08043038
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08043030: .4byte gUnknown_0300481C
-_08043034: .4byte _08043038
- .align 2, 0
-_08043038:
- .4byte _08043068
- .4byte _080430A0
- .4byte _080430C0
- .4byte _080430F8
- .4byte _08043124
- .4byte _08043164
- .4byte _08043172
- .4byte _08043180
- .4byte _080431B8
- .4byte _080431DA
- .4byte _08043288
- .4byte _080432A8
-_08043068:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xBA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08043098 @ =gUnknown_0300481C
- ldr r1, [r0]
- ldrb r0, [r1, 0x2]
- adds r0, 0x1
- strb r0, [r1, 0x2]
- ldr r0, _0804309C @ =Task_EggHatchPlayBGM
- movs r1, 0x5
- bl CreateTask
- b _080432BA
- .align 2, 0
-_08043098: .4byte gUnknown_0300481C
-_0804309C: .4byte Task_EggHatchPlayBGM
-_080430A0:
- ldr r0, _080430BC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080430B2
- b _080432BA
-_080430B2:
- ldr r0, [r5]
- strb r1, [r0, 0x3]
- ldr r1, [r5]
- b _0804329C
- .align 2, 0
-_080430BC: .4byte gPaletteFade
-_080430C0:
- ldr r1, [r5]
- ldrb r0, [r1, 0x3]
- adds r0, 0x1
- strb r0, [r1, 0x3]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1E
- bhi _080430D2
- b _080432BA
-_080430D2:
- ldr r1, [r5]
- ldrb r0, [r1, 0x2]
- adds r0, 0x1
- strb r0, [r1, 0x2]
- ldr r2, _080430F0 @ =gSprites
- ldr r0, [r5]
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _080430F4 @ =SpriteCB_Egg_0
- str r1, [r0]
- b _080432BA
- .align 2, 0
-_080430F0: .4byte gSprites
-_080430F4: .4byte SpriteCB_Egg_0
-_080430F8:
- ldr r2, _0804311C @ =gSprites
- ldr r3, [r5]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _08043120 @ =SpriteCallbackDummy
- cmp r1, r0
- beq _08043112
- b _080432BA
-_08043112:
- ldrb r0, [r3, 0x2]
- adds r0, 0x1
- strb r0, [r3, 0x2]
- b _080432BA
- .align 2, 0
-_0804311C: .4byte gSprites
-_08043120: .4byte SpriteCallbackDummy
-_08043124:
- ldr r0, [r5]
- ldrb r1, [r0, 0x4]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08043150 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08043154 @ =gStringVar1
- bl GetMonNick
- ldr r4, _08043158 @ =gStringVar4
- ldr r1, _0804315C @ =gOtherText_HatchedFromEgg
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- bl EggHatchPrintMessage2
- ldr r0, _08043160 @ =0x00000173
- bl PlayFanfare
- ldr r1, [r5]
- b _0804329C
- .align 2, 0
-_08043150: .4byte gPlayerParty
-_08043154: .4byte gStringVar1
-_08043158: .4byte gStringVar4
-_0804315C: .4byte gOtherText_HatchedFromEgg
-_08043160: .4byte 0x00000173
-_08043164:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- bne _08043170
- b _080432BA
-_08043170:
- b _08043298
-_08043172:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- bne _0804317E
- b _080432BA
-_0804317E:
- b _08043298
-_08043180:
- ldr r0, [r5]
- ldrb r1, [r0, 0x4]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _080431A8 @ =gPlayerParty
- adds r0, r1
- ldr r1, _080431AC @ =gStringVar1
- bl GetMonNick
- ldr r4, _080431B0 @ =gStringVar4
- ldr r1, _080431B4 @ =gOtherText_NickHatchPrompt
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- bl EggHatchPrintMessage1
- ldr r1, [r5]
- b _0804329C
- .align 2, 0
-_080431A8: .4byte gPlayerParty
-_080431AC: .4byte gStringVar1
-_080431B0: .4byte gStringVar4
-_080431B4: .4byte gOtherText_NickHatchPrompt
-_080431B8:
- bl EggHatchUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _080432BA
- movs r0, 0x16
- movs r1, 0x8
- movs r2, 0x1B
- movs r3, 0xD
- bl MenuDrawTextWindow
- movs r0, 0x16
- movs r1, 0x8
- movs r2, 0x4
- bl InitYesNoMenu
- b _08043298
-_080431DA:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- lsrs r2, r0, 24
- asrs r0, 24
- movs r1, 0x2
- negs r1, r1
- cmp r0, r1
- beq _080432BA
- lsls r0, r2, 24
- asrs r1, r0, 24
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08043298
- cmp r1, 0x1
- beq _08043298
- ldr r0, _08043278 @ =gUnknown_0300481C
- mov r9, r0
- ldr r0, [r0]
- ldrb r0, [r0, 0x4]
- movs r1, 0x64
- mov r8, r1
- mov r2, r8
- muls r2, r0
- adds r0, r2, 0
- ldr r6, _0804327C @ =gPlayerParty
- adds r0, r6
- ldr r1, _08043280 @ =gStringVar3
- mov r10, r1
- bl GetMonNick
- mov r2, r9
- ldr r0, [r2]
- ldrb r0, [r0, 0x4]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0xB
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r2, r9
- ldr r0, [r2]
- ldrb r0, [r0, 0x4]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- bl GetMonGender
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r2, r9
- ldr r0, [r2]
- ldrb r0, [r0, 0x4]
- mov r1, r8
- muls r1, r0
- adds r0, r1, 0
- adds r0, r6
- movs r1, 0
- movs r2, 0
- bl GetMonData
- str r0, [sp]
- ldr r0, _08043284 @ =EggHatchSetMonNickname
- str r0, [sp, 0x4]
- movs r0, 0x3
- mov r1, r10
- adds r2, r5, 0
- adds r3, r4, 0
- bl DoNamingScreen
- b _080432BA
- .align 2, 0
-_08043278: .4byte gUnknown_0300481C
-_0804327C: .4byte gPlayerParty
-_08043280: .4byte gStringVar3
-_08043284: .4byte EggHatchSetMonNickname
-_08043288:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_08043298:
- ldr r0, _080432A4 @ =gUnknown_0300481C
- ldr r1, [r0]
-_0804329C:
- ldrb r0, [r1, 0x2]
- adds r0, 0x1
- strb r0, [r1, 0x2]
- b _080432BA
- .align 2, 0
-_080432A4: .4byte gUnknown_0300481C
-_080432A8:
- ldr r0, _080432DC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080432BA
- ldr r0, _080432E0 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
-_080432BA:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080432DC: .4byte gPaletteFade
-_080432E0: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end CB2_EggHatch_1
-
- thumb_func_start SpriteCB_Egg_0
-SpriteCB_Egg_0: @ 80432E4
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _08043304
- ldr r0, _08043300 @ =SpriteCB_Egg_1
- str r0, [r4, 0x1C]
- movs r0, 0
- strh r0, [r4, 0x2E]
- b _08043334
- .align 2, 0
-_08043300: .4byte SpriteCB_Egg_1
-_08043304:
- ldrh r0, [r4, 0x30]
- adds r0, 0x14
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x1
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- bne _08043334
- movs r0, 0x17
- bl PlaySE
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAnim
- bl CreateRandomEggShardSprite
-_08043334:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end SpriteCB_Egg_0
-
- thumb_func_start SpriteCB_Egg_1
-SpriteCB_Egg_1: @ 804333C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- ble _08043398
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _0804336C
- ldr r0, _08043368 @ =SpriteCB_Egg_2
- str r0, [r4, 0x1C]
- strh r1, [r4, 0x2E]
- strh r1, [r4, 0x32]
- b _08043398
- .align 2, 0
-_08043368: .4byte SpriteCB_Egg_2
-_0804336C:
- ldrh r0, [r4, 0x30]
- adds r0, 0x14
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x2
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- bne _08043398
- movs r0, 0x17
- bl PlaySE
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
-_08043398:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end SpriteCB_Egg_1
-
- thumb_func_start SpriteCB_Egg_2
-SpriteCB_Egg_2: @ 80433A0
- push {r4-r6,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x32]
- adds r0, 0x1
- movs r6, 0
- strh r0, [r4, 0x32]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x1E
- ble _0804345A
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x26
- ble _08043418
- ldr r0, _08043404 @ =SpriteCB_Egg_3
- str r0, [r4, 0x1C]
- strh r6, [r4, 0x2E]
- ldr r5, _08043408 @ =gUnknown_0300481C
- ldr r0, [r5]
- ldrb r1, [r0, 0x4]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0804340C @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- ldr r4, _08043410 @ =gSprites
- ldr r3, [r5]
- ldrb r2, [r3, 0x1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- strh r6, [r1, 0x24]
- ldrb r2, [r3, 0x1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldr r2, _08043414 @ =gMonFrontPicCoords
- lsrs r0, 14
- adds r0, r2
- ldrb r0, [r0, 0x1]
- strh r0, [r1, 0x26]
- b _0804345A
- .align 2, 0
-_08043404: .4byte SpriteCB_Egg_3
-_08043408: .4byte gUnknown_0300481C
-_0804340C: .4byte gPlayerParty
-_08043410: .4byte gSprites
-_08043414: .4byte gMonFrontPicCoords
-_08043418:
- ldrh r0, [r4, 0x30]
- adds r0, 0x14
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r4, 0x30]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r1, 0x2
- bl Sin
- strh r0, [r4, 0x24]
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0xF
- bne _0804344C
- movs r0, 0x17
- bl PlaySE
- adds r0, r4, 0
- movs r1, 0x2
- bl StartSpriteAnim
- bl CreateRandomEggShardSprite
- bl CreateRandomEggShardSprite
-_0804344C:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x1E
- bne _0804345A
- movs r0, 0x17
- bl PlaySE
-_0804345A:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end SpriteCB_Egg_2
-
- thumb_func_start SpriteCB_Egg_3
-SpriteCB_Egg_3: @ 8043460
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x32
- ble _0804347A
- ldr r0, _08043480 @ =SpriteCB_Egg_4
- str r0, [r1, 0x1C]
- movs r0, 0
- strh r0, [r1, 0x2E]
-_0804347A:
- pop {r0}
- bx r0
- .align 2, 0
-_08043480: .4byte SpriteCB_Egg_4
- thumb_func_end SpriteCB_Egg_3
-
- thumb_func_start SpriteCB_Egg_4
-SpriteCB_Egg_4: @ 8043484
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _080434A4
- movs r1, 0x1
- negs r1, r1
- ldr r0, _080434F8 @ =0x0000ffff
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_080434A4:
- ldrh r0, [r5, 0x2E]
- cmp r0, 0x3
- bhi _080434C0
- movs r4, 0
-_080434AC:
- bl CreateRandomEggShardSprite
- lsls r0, r4, 16
- movs r1, 0x80
- lsls r1, 9
- adds r0, r1
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x3
- ble _080434AC
-_080434C0:
- ldrh r0, [r5, 0x2E]
- adds r0, 0x1
- strh r0, [r5, 0x2E]
- ldr r0, _080434FC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080434EE
- movs r0, 0x71
- bl PlaySE
- adds r2, r5, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- ldr r0, _08043500 @ =SpriteCB_Egg_5
- str r0, [r5, 0x1C]
- strh r4, [r5, 0x2E]
-_080434EE:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080434F8: .4byte 0x0000ffff
-_080434FC: .4byte gPaletteFade
-_08043500: .4byte SpriteCB_Egg_5
- thumb_func_end SpriteCB_Egg_4
-
- thumb_func_start SpriteCB_Egg_5
-SpriteCB_Egg_5: @ 8043504
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _08043540
- ldr r4, _08043594 @ =gSprites
- ldr r3, _08043598 @ =gUnknown_0300481C
- ldr r0, [r3]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r0, [r3]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_08043540:
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0x8
- bne _0804355A
- movs r1, 0x1
- negs r1, r1
- ldr r0, _0804359C @ =0x0000ffff
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_0804355A:
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- cmp r0, 0x9
- bgt _08043578
- ldr r2, _08043594 @ =gSprites
- ldr r0, _08043598 @ =gUnknown_0300481C
- ldr r0, [r0]
- ldrb r1, [r0, 0x1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- subs r1, 0x1
- strh r1, [r0, 0x22]
-_08043578:
- ldrh r1, [r5, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0x28
- ble _08043586
- ldr r0, _080435A0 @ =SpriteCallbackDummy
- str r0, [r5, 0x1C]
-_08043586:
- adds r0, r1, 0x1
- strh r0, [r5, 0x2E]
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08043594: .4byte gSprites
-_08043598: .4byte gUnknown_0300481C
-_0804359C: .4byte 0x0000ffff
-_080435A0: .4byte SpriteCallbackDummy
- thumb_func_end SpriteCB_Egg_5
-
- thumb_func_start SpriteCB_EggShard
-SpriteCB_EggShard: @ 80435A4
- push {r4,lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x30]
- ldrh r1, [r2, 0x36]
- adds r0, r1
- strh r0, [r2, 0x36]
- ldrh r1, [r2, 0x32]
- ldrh r3, [r2, 0x38]
- adds r0, r1, r3
- strh r0, [r2, 0x38]
- movs r4, 0x36
- ldrsh r0, [r2, r4]
- cmp r0, 0
- bge _080435C2
- adds r0, 0xFF
-_080435C2:
- asrs r0, 8
- strh r0, [r2, 0x24]
- movs r3, 0x38
- ldrsh r0, [r2, r3]
- cmp r0, 0
- bge _080435D0
- adds r0, 0xFF
-_080435D0:
- asrs r0, 8
- strh r0, [r2, 0x26]
- ldrh r0, [r2, 0x34]
- adds r3, r1, r0
- strh r3, [r2, 0x32]
- movs r4, 0x22
- ldrsh r1, [r2, r4]
- movs r4, 0x26
- ldrsh r0, [r2, r4]
- adds r0, r1, r0
- adds r1, 0x14
- cmp r0, r1
- ble _080435F6
- lsls r0, r3, 16
- cmp r0, 0
- ble _080435F6
- adds r0, r2, 0
- bl DestroySprite
-_080435F6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end SpriteCB_EggShard
-
- thumb_func_start CreateRandomEggShardSprite
-CreateRandomEggShardSprite: @ 80435FC
- push {r4-r6,lr}
- sub sp, 0x8
- ldr r3, _0804364C @ =gEggShardVelocities
- ldr r0, _08043650 @ =gUnknown_0300481C
- ldr r4, [r0]
- adds r4, 0x3A
- ldrb r2, [r4]
- lsls r0, r2, 2
- adds r1, r0, r3
- ldrh r6, [r1]
- adds r3, 0x2
- adds r0, r3
- ldrh r5, [r0]
- adds r2, 0x1
- strb r2, [r4]
- bl Random
- lsls r0, 16
- movs r1, 0xC0
- lsls r1, 10
- ands r1, r0
- lsls r6, 16
- asrs r6, 16
- lsls r5, 16
- asrs r5, 16
- movs r0, 0x64
- str r0, [sp]
- lsrs r1, 16
- str r1, [sp, 0x4]
- movs r0, 0x78
- movs r1, 0x3C
- adds r2, r6, 0
- adds r3, r5, 0
- bl CreateEggShardSprite
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804364C: .4byte gEggShardVelocities
-_08043650: .4byte gUnknown_0300481C
- thumb_func_end CreateRandomEggShardSprite
-
- thumb_func_start CreateEggShardSprite
-CreateEggShardSprite: @ 8043654
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- mov r8, r3
- ldr r0, [sp, 0x1C]
- mov r9, r0
- ldr r1, [sp, 0x20]
- mov r10, r1
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 16
- lsrs r6, 16
- mov r0, r8
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- mov r1, r9
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, _080436CC @ =gSpriteTemplate_820A418
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x4
- bl CreateSprite
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _080436D0 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r6, [r0, 0x30]
- mov r1, r8
- strh r1, [r0, 0x32]
- mov r1, r9
- strh r1, [r0, 0x34]
- mov r1, r10
- bl StartSpriteAnim
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080436CC: .4byte gSpriteTemplate_820A418
-_080436D0: .4byte gSprites
- thumb_func_end CreateEggShardSprite
-
- thumb_func_start EggHatchPrintMessage1
-EggHatchPrintMessage1: @ 80436D4
- push {lr}
- sub sp, 0x4
- adds r1, r0, 0
- ldr r0, _080436F8 @ =gUnknown_0300481C
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x8
- adds r2, 0x38
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x3
- bl sub_8002EB0
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_080436F8: .4byte gUnknown_0300481C
- thumb_func_end EggHatchPrintMessage1
-
- thumb_func_start EggHatchPrintMessage2
-EggHatchPrintMessage2: @ 80436FC
- push {lr}
- sub sp, 0x4
- adds r1, r0, 0
- ldr r0, _08043720 @ =gUnknown_0300481C
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x8
- adds r2, 0x38
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x3
- bl sub_8003460
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08043720: .4byte gUnknown_0300481C
- thumb_func_end EggHatchPrintMessage2
-
- thumb_func_start EggHatchUpdateWindowText
-EggHatchUpdateWindowText: @ 8043724
- push {lr}
- ldr r0, _08043738 @ =gUnknown_0300481C
- ldr r0, [r0]
- adds r0, 0x8
- bl sub_80035AC
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08043738: .4byte gUnknown_0300481C
- thumb_func_end EggHatchUpdateWindowText
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/evolution_graphics.s b/asm/evolution_graphics.s
deleted file mode 100644
index 1130e085e..000000000
--- a/asm/evolution_graphics.s
+++ /dev/null
@@ -1,1829 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_84
-nullsub_84: @ 814951C
- bx lr
- thumb_func_end nullsub_84
-
- thumb_func_start sub_8149520
-sub_8149520: @ 8149520
- push {r4,r5,lr}
- sub sp, 0x4
- movs r4, 0
- ldr r5, _08149554 @ =gUnknown_08416ED0
-_08149528:
- adds r0, r4, 0
- adds r0, 0x14
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r4, 1
- adds r1, r5
- ldrh r1, [r1]
- str r1, [sp]
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xB
- bls _08149528
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08149554: .4byte gUnknown_08416ED0
- thumb_func_end sub_8149520
-
- thumb_func_start sub_8149558
-sub_8149558: @ 8149558
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- ble _08149606
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- adds r1, r0, 0
- muls r1, r0
- adds r0, r1, 0
- movs r1, 0x50
- bl __divsi3
- movs r1, 0x58
- subs r1, r0
- strh r1, [r4, 0x22]
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _08149592
- adds r0, 0x3
-_08149592:
- asrs r0, 2
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x3A]
- adds r0, 0x4
- strh r0, [r4, 0x3A]
- ldrh r1, [r4, 0x3C]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081495BC
- ldrh r0, [r4, 0x38]
- subs r0, 0x1
- strh r0, [r4, 0x38]
-_081495BC:
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- movs r1, 0x26
- ldrsh r0, [r4, r1]
- cmp r0, 0
- ble _081495D2
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1
- b _081495D8
-_081495D2:
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x14
-_081495D8:
- strb r0, [r1]
- movs r2, 0x38
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bge _081495E4
- adds r0, 0x3
-_081495E4:
- asrs r0, 2
- adds r0, 0x14
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x1F
- bls _081495F2
- movs r2, 0x1F
-_081495F2:
- movs r0, 0x1F
- ands r2, r0
- lsls r2, 1
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x3]
- b _0814960C
-_08149606:
- adds r0, r4, 0
- bl DestroySprite
-_0814960C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8149558
-
- thumb_func_start sub_8149614
-sub_8149614: @ 8149614
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _08149664 @ =gSpriteTemplate_8416EB8
- movs r1, 0x78
- movs r2, 0x58
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0814965E
- ldr r4, _08149668 @ =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r2, r3, r4
- movs r1, 0
- movs r0, 0x30
- strh r0, [r2, 0x38]
- strh r5, [r2, 0x3A]
- strh r1, [r2, 0x3C]
- ldrb r1, [r2, 0x1]
- subs r0, 0x34
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r0, [r2, 0x3]
- movs r1, 0x3E
- orrs r0, r1
- strb r0, [r2, 0x3]
- adds r4, 0x1C
- adds r3, r4
- ldr r0, _0814966C @ =sub_8149558
- str r0, [r3]
-_0814965E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08149664: .4byte gSpriteTemplate_8416EB8
-_08149668: .4byte gSprites
-_0814966C: .4byte sub_8149558
- thumb_func_end sub_8149614
-
- thumb_func_start sub_8149670
-sub_8149670: @ 8149670
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x22
- ldrsh r0, [r4, r1]
- cmp r0, 0x57
- bgt _081496D6
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- adds r1, r0, 0
- muls r1, r0
- adds r0, r1, 0
- movs r1, 0x5
- bl __divsi3
- adds r0, 0x8
- strh r0, [r4, 0x22]
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0
- bge _081496A8
- adds r0, 0x3
-_081496A8:
- asrs r0, 2
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- lsls r0, 26
- lsrs r0, 24
- movs r1, 0x28
- bl Sin
- adds r0, 0x8
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- b _081496DC
-_081496D6:
- adds r0, r4, 0
- bl DestroySprite
-_081496DC:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8149670
-
- thumb_func_start sub_81496E4
-sub_81496E4: @ 81496E4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _08149740 @ =gSpriteTemplate_8416EB8
- movs r1, 0x78
- movs r2, 0x8
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0814973A
- ldr r4, _08149744 @ =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r2, r3, r4
- movs r1, 0
- movs r0, 0x8
- strh r0, [r2, 0x38]
- strh r5, [r2, 0x3A]
- strh r1, [r2, 0x3C]
- ldrb r1, [r2, 0x1]
- subs r0, 0xC
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r1, [r2, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x32
- orrs r0, r1
- strb r0, [r2, 0x3]
- adds r2, 0x43
- movs r0, 0x1
- strb r0, [r2]
- adds r4, 0x1C
- adds r3, r4
- ldr r0, _08149748 @ =sub_8149670
- str r0, [r3]
-_0814973A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08149740: .4byte gSpriteTemplate_8416EB8
-_08149744: .4byte gSprites
-_08149748: .4byte sub_8149670
- thumb_func_end sub_81496E4
-
- thumb_func_start sub_814974C
-sub_814974C: @ 814974C
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x38
- ldrsh r0, [r4, r1]
- cmp r0, 0x8
- ble _08149788
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Sin
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x3A]
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0x38
- ldrsh r1, [r4, r2]
- bl Cos
- strh r0, [r4, 0x24]
- ldrh r0, [r4, 0x38]
- ldrh r1, [r4, 0x34]
- subs r0, r1
- strh r0, [r4, 0x38]
- ldrh r0, [r4, 0x3A]
- adds r0, 0x4
- strh r0, [r4, 0x3A]
- b _0814978E
-_08149788:
- adds r0, r4, 0
- bl DestroySprite
-_0814978E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_814974C
-
- thumb_func_start sub_8149794
-sub_8149794: @ 8149794
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- ldr r0, _081497F0 @ =gSpriteTemplate_8416EB8
- movs r1, 0x78
- movs r2, 0x38
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _081497EA
- ldr r4, _081497F4 @ =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r2, r3, r4
- movs r1, 0
- strh r5, [r2, 0x34]
- movs r0, 0x78
- strh r0, [r2, 0x38]
- strh r6, [r2, 0x3A]
- strh r1, [r2, 0x3C]
- ldrb r1, [r2, 0x1]
- subs r0, 0x7C
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r0, [r2, 0x3]
- movs r1, 0x3E
- orrs r0, r1
- strb r0, [r2, 0x3]
- adds r2, 0x43
- movs r0, 0x1
- strb r0, [r2]
- adds r4, 0x1C
- adds r3, r4
- ldr r0, _081497F8 @ =sub_814974C
- str r0, [r3]
-_081497EA:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081497F0: .4byte gSpriteTemplate_8416EB8
-_081497F4: .4byte gSprites
-_081497F8: .4byte sub_814974C
- thumb_func_end sub_8149794
-
- thumb_func_start sub_81497FC
-sub_81497FC: @ 81497FC
- push {r4,r5,lr}
- adds r4, r0, 0
- ldrh r1, [r4, 0x3C]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _08149810
- ldrh r0, [r4, 0x22]
- adds r0, 0x1
- strh r0, [r4, 0x22]
-_08149810:
- ldrh r1, [r4, 0x3A]
- movs r2, 0x3A
- ldrsh r0, [r4, r2]
- cmp r0, 0x7F
- bgt _081498C0
- lsls r0, r1, 24
- lsrs r0, 24
- movs r5, 0x38
- ldrsh r1, [r4, r5]
- bl Sin
- negs r0, r0
- strh r0, [r4, 0x26]
- movs r0, 0x34
- ldrsh r1, [r4, r0]
- movs r2, 0x3C
- ldrsh r0, [r4, r2]
- muls r0, r1
- movs r1, 0x3
- bl __divsi3
- adds r0, 0x78
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x3A]
- adds r3, r0, 0x1
- strh r3, [r4, 0x3A]
- movs r5, 0x3A
- ldrsh r1, [r4, r5]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 2
- cmp r0, 0
- bge _08149854
- adds r0, 0x7F
-_08149854:
- asrs r0, 7
- movs r1, 0x1F
- subs r1, r0
- lsls r1, 24
- lsrs r2, r1, 24
- lsls r0, r3, 16
- asrs r0, 16
- cmp r0, 0x40
- ble _08149870
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x1
- strb r0, [r1]
- b _081498A0
-_08149870:
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- adds r1, r4, 0
- adds r1, 0x43
- movs r0, 0x14
- strb r0, [r1]
- ldrh r1, [r4, 0x3A]
- movs r5, 0x3A
- ldrsh r0, [r4, r5]
- cmp r0, 0x70
- ble _081498A0
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081498A0
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
-_081498A0:
- cmp r2, 0x13
- bhi _081498A6
- movs r2, 0x14
-_081498A6:
- movs r0, 0x1F
- ands r2, r0
- lsls r2, 1
- ldrb r1, [r4, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- orrs r0, r2
- strb r0, [r4, 0x3]
- ldrh r0, [r4, 0x3C]
- adds r0, 0x1
- strh r0, [r4, 0x3C]
- b _081498C6
-_081498C0:
- adds r0, r4, 0
- bl DestroySprite
-_081498C6:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81497FC
-
- thumb_func_start sub_81498CC
-sub_81498CC: @ 81498CC
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, _08149948 @ =gSpriteTemplate_8416EB8
- movs r1, 0x78
- movs r2, 0x38
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x40
- beq _0814993C
- bl Random
- ldr r6, _0814994C @ =gSprites
- lsls r5, r4, 4
- adds r5, r4
- lsls r5, 2
- adds r4, r5, r6
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x7
- bl __umodsi3
- movs r1, 0x3
- subs r1, r0
- movs r0, 0
- mov r8, r0
- strh r1, [r4, 0x34]
- bl Random
- movs r1, 0x3F
- ands r1, r0
- adds r1, 0x30
- strh r1, [r4, 0x38]
- mov r0, r8
- strh r0, [r4, 0x3C]
- ldrb r1, [r4, 0x1]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldrb r0, [r4, 0x3]
- movs r1, 0x3E
- orrs r0, r1
- strb r0, [r4, 0x3]
- adds r4, 0x43
- movs r0, 0x14
- strb r0, [r4]
- adds r6, 0x1C
- adds r5, r6
- ldr r0, _08149950 @ =sub_81497FC
- str r0, [r5]
-_0814993C:
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149948: .4byte gSpriteTemplate_8416EB8
-_0814994C: .4byte gSprites
-_08149950: .4byte sub_81497FC
- thumb_func_end sub_81498CC
-
- thumb_func_start sub_8149954
-sub_8149954: @ 8149954
- push {lr}
- ldr r0, _08149968 @ =gUnknown_08416E84
- bl LoadCompressedObjectPic
- ldr r0, _0814996C @ =gUnknown_08416E94
- bl LoadSpritePalettes
- pop {r0}
- bx r0
- .align 2, 0
-_08149968: .4byte gUnknown_08416E84
-_0814996C: .4byte gUnknown_08416E94
- thumb_func_end sub_8149954
-
- thumb_func_start sub_8149970
-sub_8149970: @ 8149970
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _08149998 @ =sub_81499A0
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0814999C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xA]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08149998: .4byte sub_81499A0
-_0814999C: .4byte gTasks
- thumb_func_end sub_8149970
-
- thumb_func_start sub_81499A0
-sub_81499A0: @ 81499A0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8149520
- ldr r0, _081499E4 @ =gTasks
- lsls r5, r4, 2
- adds r5, r4
- lsls r5, 3
- adds r5, r0
- movs r0, 0
- strh r0, [r5, 0x26]
- movs r0, 0xA
- ldrsh r1, [r5, r0]
- movs r0, 0x3
- lsls r0, r1
- ldr r1, _081499E8 @ =0x00007fff
- str r1, [sp]
- movs r1, 0xA
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _081499EC @ =sub_81499F0
- str r0, [r5]
- movs r0, 0x8C
- bl PlaySE
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081499E4: .4byte gTasks
-_081499E8: .4byte 0x00007fff
-_081499EC: .4byte sub_81499F0
- thumb_func_end sub_81499A0
-
- thumb_func_start sub_81499F0
-sub_81499F0: @ 81499F0
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08149A48 @ =gTasks
- lsls r3, r5, 2
- adds r0, r3, r5
- lsls r0, 3
- adds r1, r0, r1
- ldrh r2, [r1, 0x26]
- movs r4, 0x26
- ldrsh r0, [r1, r4]
- cmp r0, 0x3F
- bgt _08149A4C
- movs r0, 0x7
- ands r0, r2
- adds r7, r3, 0
- cmp r0, 0
- bne _08149A36
- movs r4, 0
- adds r6, r1, 0
-_08149A18:
- ldrh r1, [r6, 0x26]
- movs r0, 0x78
- ands r0, r1
- lsls r0, 1
- lsls r1, r4, 6
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- bl sub_8149614
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x3
- bls _08149A18
-_08149A36:
- ldr r0, _08149A48 @ =gTasks
- adds r1, r7, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08149A54
- .align 2, 0
-_08149A48: .4byte gTasks
-_08149A4C:
- movs r0, 0x60
- strh r0, [r1, 0x26]
- ldr r0, _08149A5C @ =sub_8149A60
- str r0, [r1]
-_08149A54:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08149A5C: .4byte sub_8149A60
- thumb_func_end sub_81499F0
-
- thumb_func_start sub_8149A60
-sub_8149A60: @ 8149A60
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r1, _08149A80 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r1, r0, r1
- ldrh r3, [r1, 0x26]
- movs r4, 0x26
- ldrsh r0, [r1, r4]
- cmp r0, 0
- beq _08149A84
- subs r0, r3, 0x1
- strh r0, [r1, 0x26]
- b _08149A8A
- .align 2, 0
-_08149A80: .4byte gTasks
-_08149A84:
- adds r0, r2, 0
- bl DestroyTask
-_08149A8A:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8149A60
-
- thumb_func_start sub_8149A90
-sub_8149A90: @ 8149A90
- push {lr}
- ldr r0, _08149AA4 @ =sub_8149AA8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08149AA4: .4byte sub_8149AA8
- thumb_func_end sub_8149A90
-
- thumb_func_start sub_8149AA8
-sub_8149AA8: @ 8149AA8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8149520
- ldr r1, _08149AD4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x26]
- ldr r1, _08149AD8 @ =sub_8149ADC
- str r1, [r0]
- movs r0, 0xB7
- bl PlaySE
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08149AD4: .4byte gTasks
-_08149AD8: .4byte sub_8149ADC
- thumb_func_end sub_8149AA8
-
- thumb_func_start sub_8149ADC
-sub_8149ADC: @ 8149ADC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08149B20 @ =gTasks
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r3, 0x26
- ldrsh r0, [r1, r3]
- cmp r0, 0x5F
- bgt _08149B24
- adds r6, r2, 0
- cmp r0, 0x5
- bgt _08149B0E
- movs r4, 0
-_08149AFC:
- lsls r0, r4, 28
- lsrs r0, 24
- bl sub_81496E4
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x8
- bls _08149AFC
-_08149B0E:
- ldr r0, _08149B20 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08149B28
- .align 2, 0
-_08149B20: .4byte gTasks
-_08149B24:
- ldr r0, _08149B30 @ =sub_8149B34
- str r0, [r1]
-_08149B28:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149B30: .4byte sub_8149B34
- thumb_func_end sub_8149ADC
-
- thumb_func_start sub_8149B34
-sub_8149B34: @ 8149B34
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- pop {r0}
- bx r0
- thumb_func_end sub_8149B34
-
- thumb_func_start sub_8149B44
-sub_8149B44: @ 8149B44
- push {lr}
- ldr r0, _08149B58 @ =sub_8149B5C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_08149B58: .4byte sub_8149B5C
- thumb_func_end sub_8149B44
-
- thumb_func_start sub_8149B5C
-sub_8149B5C: @ 8149B5C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8149520
- ldr r1, _08149B88 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0x26]
- ldr r1, _08149B8C @ =sub_8149B90
- str r1, [r0]
- movs r0, 0x66
- bl PlaySE
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08149B88: .4byte gTasks
-_08149B8C: .4byte sub_8149B90
- thumb_func_end sub_8149B5C
-
- thumb_func_start sub_8149B90
-sub_8149B90: @ 8149B90
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08149BFC @ =gTasks
- lsls r2, r5, 2
- adds r0, r2, r5
- lsls r0, 3
- adds r1, r0, r1
- movs r3, 0x26
- ldrsh r0, [r1, r3]
- cmp r0, 0x2F
- bgt _08149C00
- adds r6, r2, 0
- cmp r0, 0
- bne _08149BC4
- movs r4, 0
-_08149BB0:
- lsls r0, r4, 28
- lsrs r0, 24
- movs r1, 0x4
- bl sub_8149794
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _08149BB0
-_08149BC4:
- ldr r0, _08149BFC @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0x26
- ldrsh r0, [r1, r2]
- cmp r0, 0x20
- bne _08149BEA
- movs r4, 0
-_08149BD6:
- lsls r0, r4, 28
- lsrs r0, 24
- movs r1, 0x8
- bl sub_8149794
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _08149BD6
-_08149BEA:
- ldr r0, _08149BFC @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08149C04
- .align 2, 0
-_08149BFC: .4byte gTasks
-_08149C00:
- ldr r0, _08149C0C @ =sub_8149C10
- str r0, [r1]
-_08149C04:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149C0C: .4byte sub_8149C10
- thumb_func_end sub_8149B90
-
- thumb_func_start sub_8149C10
-sub_8149C10: @ 8149C10
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl DestroyTask
- pop {r0}
- bx r0
- thumb_func_end sub_8149C10
-
- thumb_func_start sub_8149C20
-sub_8149C20: @ 8149C20
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _08149C48 @ =sub_8149C50
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08149C4C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xC]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08149C48: .4byte sub_8149C50
-_08149C4C: .4byte gTasks
- thumb_func_end sub_8149C20
-
- thumb_func_start sub_8149C50
-sub_8149C50: @ 8149C50
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8149520
- ldr r0, _08149C98 @ =gTasks
- lsls r5, r4, 2
- adds r5, r4
- lsls r5, 3
- adds r5, r0
- movs r0, 0
- strh r0, [r5, 0x26]
- ldr r0, _08149C9C @ =gPlttBufferFaded + 0x40
- ldr r1, _08149CA0 @ =gPlttBufferUnfaded + 0x40
- movs r2, 0x30
- bl CpuSet
- ldr r0, _08149CA4 @ =0xfff9001c
- ldr r1, _08149CA8 @ =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08149CAC @ =sub_8149CB0
- str r0, [r5]
- movs r0, 0xCA
- bl PlaySE
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08149C98: .4byte gTasks
-_08149C9C: .4byte gPlttBufferFaded + 0x40
-_08149CA0: .4byte gPlttBufferUnfaded + 0x40
-_08149CA4: .4byte 0xfff9001c
-_08149CA8: .4byte 0x00007fff
-_08149CAC: .4byte sub_8149CB0
- thumb_func_end sub_8149C50
-
- thumb_func_start sub_8149CB0
-sub_8149CB0: @ 8149CB0
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _08149CE8 @ =gTasks
- lsls r5, r6, 2
- adds r0, r5, r6
- lsls r0, 3
- adds r1, r0, r1
- movs r0, 0x26
- ldrsh r2, [r1, r0]
- cmp r2, 0x7F
- bgt _08149D2C
- adds r0, r2, 0
- cmp r0, 0
- beq _08149CEC
- cmp r0, 0x20
- beq _08149D00
- cmp r2, 0x31
- bgt _08149D10
- bl Random
- movs r1, 0x7
- ands r0, r1
- bl sub_81498CC
- b _08149D10
- .align 2, 0
-_08149CE8: .4byte gTasks
-_08149CEC:
- movs r4, 0
-_08149CEE:
- adds r0, r4, 0
- bl sub_81498CC
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _08149CEE
- b _08149D10
-_08149D00:
- ldr r0, _08149D20 @ =0xffff001c
- ldr r1, _08149D24 @ =0x00007fff
- str r1, [sp]
- movs r1, 0x10
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_08149D10:
- ldr r0, _08149D28 @ =gTasks
- adds r1, r5, r6
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08149D30
- .align 2, 0
-_08149D20: .4byte 0xffff001c
-_08149D24: .4byte 0x00007fff
-_08149D28: .4byte gTasks
-_08149D2C:
- ldr r0, _08149D38 @ =sub_8149D3C
- str r0, [r1]
-_08149D30:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149D38: .4byte sub_8149D3C
- thumb_func_end sub_8149CB0
-
- thumb_func_start sub_8149D3C
-sub_8149D3C: @ 8149D3C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _08149D58 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08149D54
- adds r0, r2, 0
- bl DestroyTask
-_08149D54:
- pop {r0}
- bx r0
- .align 2, 0
-_08149D58: .4byte gPaletteFade
- thumb_func_end sub_8149D3C
-
- thumb_func_start sub_8149D5C
-sub_8149D5C: @ 8149D5C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _08149D84 @ =sub_8149D8C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08149D88 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0xC]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08149D84: .4byte sub_8149D8C
-_08149D88: .4byte gTasks
- thumb_func_end sub_8149D5C
-
- thumb_func_start sub_8149D8C
-sub_8149D8C: @ 8149D8C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_8149520
- ldr r0, _08149DD4 @ =gTasks
- lsls r5, r4, 2
- adds r5, r4
- lsls r5, 3
- adds r5, r0
- movs r0, 0
- strh r0, [r5, 0x26]
- ldr r0, _08149DD8 @ =gPlttBufferFaded + 0x40
- ldr r1, _08149DDC @ =gPlttBufferUnfaded + 0x40
- movs r2, 0x30
- bl CpuSet
- ldr r0, _08149DE0 @ =0xfff90001
- ldr r1, _08149DE4 @ =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08149DE8 @ =sub_8149DEC
- str r0, [r5]
- movs r0, 0xCA
- bl PlaySE
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08149DD4: .4byte gTasks
-_08149DD8: .4byte gPlttBufferFaded + 0x40
-_08149DDC: .4byte gPlttBufferUnfaded + 0x40
-_08149DE0: .4byte 0xfff90001
-_08149DE4: .4byte 0x00007fff
-_08149DE8: .4byte sub_8149DEC
- thumb_func_end sub_8149D8C
-
- thumb_func_start sub_8149DEC
-sub_8149DEC: @ 8149DEC
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _08149E24 @ =gTasks
- lsls r5, r6, 2
- adds r0, r5, r6
- lsls r0, 3
- adds r1, r0, r1
- movs r0, 0x26
- ldrsh r2, [r1, r0]
- cmp r2, 0x7F
- bgt _08149E68
- adds r0, r2, 0
- cmp r0, 0
- beq _08149E28
- cmp r0, 0x20
- beq _08149E3C
- cmp r2, 0x31
- bgt _08149E4C
- bl Random
- movs r1, 0x7
- ands r0, r1
- bl sub_81498CC
- b _08149E4C
- .align 2, 0
-_08149E24: .4byte gTasks
-_08149E28:
- movs r4, 0
-_08149E2A:
- adds r0, r4, 0
- bl sub_81498CC
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _08149E2A
- b _08149E4C
-_08149E3C:
- ldr r0, _08149E5C @ =0xffff0001
- ldr r1, _08149E60 @ =0x00007fff
- str r1, [sp]
- movs r1, 0x10
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_08149E4C:
- ldr r0, _08149E64 @ =gTasks
- adds r1, r5, r6
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x26]
- adds r0, 0x1
- strh r0, [r1, 0x26]
- b _08149E6C
- .align 2, 0
-_08149E5C: .4byte 0xffff0001
-_08149E60: .4byte 0x00007fff
-_08149E64: .4byte gTasks
-_08149E68:
- ldr r0, _08149E74 @ =sub_8149D3C
- str r0, [r1]
-_08149E6C:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149E74: .4byte sub_8149D3C
- thumb_func_end sub_8149DEC
-
- thumb_func_start nullsub_85
-nullsub_85: @ 8149E78
- bx lr
- thumb_func_end nullsub_85
-
- thumb_func_start sub_8149E7C
-sub_8149E7C: @ 8149E7C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- movs r1, 0
- ldr r3, _08149FB0 @ =sub_8149FC8
- ldr r2, _08149FB4 @ =0x00007fff
-_08149E96:
- lsls r0, r1, 1
- add r0, sp
- adds r0, 0x4
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xF
- bls _08149E96
- adds r0, r3, 0
- movs r1, 0
- bl CreateTask
- mov r8, r0
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _08149FB8 @ =gTasks
- mov r1, r8
- lsls r6, r1, 2
- add r6, r8
- lsls r6, 3
- adds r6, r0
- strh r5, [r6, 0xA]
- strh r7, [r6, 0xC]
- movs r1, 0x80
- lsls r1, 1
- strh r1, [r6, 0xE]
- movs r0, 0x10
- strh r0, [r6, 0x10]
- movs r4, 0x80
- lsls r4, 9
- str r1, [sp]
- movs r0, 0x1E
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- movs r0, 0x10
- ldrsh r1, [r6, r0]
- adds r0, r4, 0
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- movs r0, 0x1F
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- ldr r1, _08149FBC @ =gSprites
- mov r9, r1
- lsls r2, r5, 4
- adds r2, r5
- lsls r2, 2
- mov r3, r9
- adds r3, 0x1C
- adds r0, r2, r3
- ldr r1, _08149FC0 @ =nullsub_85
- str r1, [r0]
- add r2, r9
- ldrb r1, [r2, 0x1]
- movs r4, 0x4
- negs r4, r4
- adds r0, r4, 0
- ands r0, r1
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldrb r1, [r2, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- movs r1, 0x3C
- orrs r0, r1
- strb r0, [r2, 0x3]
- movs r0, 0x3E
- adds r0, r2
- mov r10, r0
- ldrb r1, [r0]
- movs r5, 0x5
- negs r5, r5
- adds r0, r5, 0
- ands r0, r1
- mov r1, r10
- strb r0, [r1]
- ldrb r1, [r2, 0x5]
- lsrs r1, 4
- lsls r1, 5
- ldr r0, _08149FC4 @ =gPlttBufferFaded + 0x200
- mov r10, r0
- add r1, r10
- add r0, sp, 0x4
- movs r2, 0x10
- str r3, [sp, 0x24]
- bl CpuSet
- lsls r1, r7, 4
- adds r1, r7
- lsls r1, 2
- ldr r3, [sp, 0x24]
- adds r3, r1, r3
- ldr r0, _08149FC0 @ =nullsub_85
- str r0, [r3]
- add r1, r9
- ldrb r0, [r1, 0x1]
- ands r4, r0
- movs r0, 0x1
- orrs r4, r0
- strb r4, [r1, 0x1]
- ldrb r0, [r1, 0x3]
- movs r2, 0x3E
- orrs r0, r2
- strb r0, [r1, 0x3]
- adds r2, r1, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- ands r5, r0
- strb r5, [r2]
- ldrb r1, [r1, 0x5]
- lsrs r1, 4
- lsls r1, 5
- add r1, r10
- add r0, sp, 0x4
- movs r2, 0x10
- bl CpuSet
- movs r1, 0
- strh r1, [r6, 0x18]
- mov r0, r8
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08149FB0: .4byte sub_8149FC8
-_08149FB4: .4byte 0x00007fff
-_08149FB8: .4byte gTasks
-_08149FBC: .4byte gSprites
-_08149FC0: .4byte nullsub_85
-_08149FC4: .4byte gPlttBufferFaded + 0x200
- thumb_func_end sub_8149E7C
-
- thumb_func_start sub_8149FC8
-sub_8149FC8: @ 8149FC8
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08149FE4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x12]
- movs r0, 0x8
- strh r0, [r1, 0x14]
- ldr r0, _08149FE8 @ =sub_8149FEC
- str r0, [r1]
- bx lr
- .align 2, 0
-_08149FE4: .4byte gTasks
-_08149FE8: .4byte sub_8149FEC
- thumb_func_end sub_8149FC8
-
- thumb_func_start sub_8149FEC
-sub_8149FEC: @ 8149FEC
- push {r4,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r1, _0814A00C @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r2, r0, r1
- movs r1, 0x18
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _0814A010
- adds r0, r3, 0
- bl sub_814A208
- b _0814A032
- .align 2, 0
-_0814A00C: .4byte gTasks
-_0814A010:
- ldrh r1, [r2, 0x14]
- movs r4, 0x14
- ldrsh r0, [r2, r4]
- cmp r0, 0x80
- bne _0814A022
- adds r0, r3, 0
- bl sub_814A158
- b _0814A032
-_0814A022:
- adds r0, r1, 0x2
- strh r0, [r2, 0x14]
- ldrh r0, [r2, 0x12]
- movs r1, 0x1
- eors r0, r1
- strh r0, [r2, 0x12]
- ldr r0, _0814A038 @ =sub_814A03C
- str r0, [r2]
-_0814A032:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A038: .4byte sub_814A03C
- thumb_func_end sub_8149FEC
-
- thumb_func_start sub_814A03C
-sub_814A03C: @ 814A03C
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0814A060 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r2, r0, r1
- movs r3, 0x18
- ldrsh r0, [r2, r3]
- adds r5, r1, 0
- cmp r0, 0
- beq _0814A068
- ldr r0, _0814A064 @ =sub_814A208
- str r0, [r2]
- b _0814A14C
- .align 2, 0
-_0814A060: .4byte gTasks
-_0814A064: .4byte sub_814A208
-_0814A068:
- movs r6, 0
- movs r7, 0x12
- ldrsh r0, [r2, r7]
- cmp r0, 0
- bne _0814A0B8
- movs r0, 0xE
- ldrsh r1, [r2, r0]
- movs r3, 0x14
- ldrsh r0, [r2, r3]
- movs r3, 0x80
- lsls r3, 1
- subs r0, r3, r0
- cmp r1, r0
- bge _0814A08E
- ldrh r0, [r2, 0x14]
- ldrh r7, [r2, 0xE]
- adds r0, r7
- strh r0, [r2, 0xE]
- b _0814A092
-_0814A08E:
- strh r3, [r2, 0xE]
- movs r6, 0x1
-_0814A092:
- lsls r2, r4, 2
- adds r0, r2, r4
- lsls r0, 3
- adds r3, r0, r5
- movs r0, 0x10
- ldrsh r1, [r3, r0]
- movs r7, 0x14
- ldrsh r0, [r3, r7]
- adds r0, 0x10
- cmp r1, r0
- ble _0814A0B2
- ldrh r0, [r3, 0x10]
- ldrh r1, [r3, 0x14]
- subs r0, r1
- strh r0, [r3, 0x10]
- b _0814A102
-_0814A0B2:
- movs r0, 0x10
- strh r0, [r3, 0x10]
- b _0814A0FC
-_0814A0B8:
- movs r0, 0x10
- ldrsh r1, [r2, r0]
- movs r3, 0x14
- ldrsh r0, [r2, r3]
- movs r3, 0x80
- lsls r3, 1
- subs r0, r3, r0
- cmp r1, r0
- bge _0814A0D4
- ldrh r0, [r2, 0x14]
- ldrh r7, [r2, 0x10]
- adds r0, r7
- strh r0, [r2, 0x10]
- b _0814A0D8
-_0814A0D4:
- strh r3, [r2, 0x10]
- movs r6, 0x1
-_0814A0D8:
- lsls r2, r4, 2
- adds r0, r2, r4
- lsls r0, 3
- adds r3, r0, r5
- movs r0, 0xE
- ldrsh r1, [r3, r0]
- movs r7, 0x14
- ldrsh r0, [r3, r7]
- adds r0, 0x10
- cmp r1, r0
- ble _0814A0F8
- ldrh r0, [r3, 0xE]
- ldrh r1, [r3, 0x14]
- subs r0, r1
- strh r0, [r3, 0xE]
- b _0814A102
-_0814A0F8:
- movs r0, 0x10
- strh r0, [r3, 0xE]
-_0814A0FC:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0814A102:
- adds r0, r2, r4
- lsls r0, 3
- adds r5, r0, r5
- movs r0, 0xE
- ldrsh r1, [r5, r0]
- movs r4, 0x80
- lsls r4, 9
- adds r0, r4, 0
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- movs r0, 0x1E
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- movs r3, 0x10
- ldrsh r1, [r5, r3]
- adds r0, r4, 0
- bl __divsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- str r1, [sp]
- movs r0, 0x1F
- movs r2, 0
- movs r3, 0
- bl SetOamMatrix
- cmp r6, 0x2
- bne _0814A14C
- ldr r0, _0814A154 @ =sub_8149FEC
- str r0, [r5]
-_0814A14C:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A154: .4byte sub_8149FEC
- thumb_func_end sub_814A03C
-
- thumb_func_start sub_814A158
-sub_814A158: @ 814A158
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0814A200 @ =gSprites
- mov r8, r1
- ldr r1, _0814A204 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- add r2, r8
- ldrb r3, [r2, 0x1]
- movs r6, 0x4
- negs r6, r6
- adds r1, r6, 0
- ands r1, r3
- strb r1, [r2, 0x1]
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- add r2, r8
- ldrb r3, [r2, 0x3]
- movs r5, 0x3F
- negs r5, r5
- adds r1, r5, 0
- ands r1, r3
- strb r1, [r2, 0x3]
- movs r1, 0xA
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r3, 0x4
- orrs r2, r3
- strb r2, [r1]
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x1]
- ands r6, r2
- strb r6, [r1, 0x1]
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x3]
- ands r5, r2
- strb r5, [r1, 0x3]
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- ands r2, r3
- strb r2, [r1]
- bl DestroyTask
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A200: .4byte gSprites
-_0814A204: .4byte gTasks
- thumb_func_end sub_814A158
-
- thumb_func_start sub_814A208
-sub_814A208: @ 814A208
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0814A2B0 @ =gSprites
- mov r8, r1
- ldr r1, _0814A2B4 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- add r2, r8
- ldrb r3, [r2, 0x1]
- movs r6, 0x4
- negs r6, r6
- adds r1, r6, 0
- ands r1, r3
- strb r1, [r2, 0x1]
- movs r2, 0xA
- ldrsh r1, [r4, r2]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- add r2, r8
- ldrb r3, [r2, 0x3]
- movs r5, 0x3F
- negs r5, r5
- adds r1, r5, 0
- ands r1, r3
- strb r1, [r2, 0x3]
- movs r1, 0xA
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- ands r2, r3
- strb r2, [r1]
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x1]
- ands r6, r2
- strb r6, [r1, 0x1]
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- ldrb r2, [r1, 0x3]
- ands r5, r2
- strb r5, [r1, 0x3]
- movs r1, 0xC
- ldrsh r2, [r4, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r1, r8
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r3, 0x4
- orrs r2, r3
- strb r2, [r1]
- bl DestroyTask
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0814A2B0: .4byte gSprites
-_0814A2B4: .4byte gTasks
- thumb_func_end sub_814A208
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s
deleted file mode 100644
index c6d3c0978..000000000
--- a/asm/evolution_scene.s
+++ /dev/null
@@ -1,6717 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start CB2_BeginEvolutionScene
-CB2_BeginEvolutionScene: @ 8111894
- push {lr}
- bl UpdatePaletteFade
- bl RunTasks
- pop {r0}
- bx r0
- thumb_func_end CB2_BeginEvolutionScene
-
- thumb_func_start Task_BeginEvolutionScene
-Task_BeginEvolutionScene: @ 81118A4
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- movs r7, 0
- ldr r1, _081118C8 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _081118CC
- cmp r0, 0x1
- beq _081118E4
- b _08111918
- .align 2, 0
-_081118C8: .4byte gTasks
-_081118CC:
- movs r0, 0x1
- negs r0, r0
- str r7, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08111918
-_081118E4:
- ldr r0, _08111920 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08111918
- movs r0, 0xA
- ldrsh r7, [r4, r0]
- movs r1, 0xC
- ldrsh r0, [r4, r1]
- lsls r0, 16
- orrs r7, r0
- ldrh r5, [r4, 0x10]
- ldrb r6, [r4, 0x12]
- ldrh r4, [r4, 0x20]
- lsls r4, 24
- lsrs r4, 24
- adds r0, r2, 0
- bl DestroyTask
- adds r0, r7, 0
- adds r1, r5, 0
- adds r2, r6, 0
- adds r3, r4, 0
- bl EvolutionScene
-_08111918:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08111920: .4byte gPaletteFade
- thumb_func_end Task_BeginEvolutionScene
-
- thumb_func_start BeginEvolutionScene
-BeginEvolutionScene: @ 8111924
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- mov r8, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _08111978 @ =Task_BeginEvolutionScene
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811197C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- mov r0, r8
- strh r0, [r1, 0xA]
- mov r0, r8
- lsrs r0, 16
- strh r0, [r1, 0xC]
- strh r4, [r1, 0x10]
- strh r5, [r1, 0x12]
- strh r6, [r1, 0x20]
- ldr r0, _08111980 @ =CB2_BeginEvolutionScene
- bl SetMainCallback2
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08111978: .4byte Task_BeginEvolutionScene
-_0811197C: .4byte gTasks
-_08111980: .4byte CB2_BeginEvolutionScene
- thumb_func_end BeginEvolutionScene
-
- thumb_func_start EvolutionScene
-EvolutionScene: @ 8111984
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x38
- str r0, [sp, 0x20]
- mov r10, r1
- mov r0, r10
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x24]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x28]
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- movs r5, 0
- str r5, [sp, 0x1C]
- add r0, sp, 0x1C
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, _08111C10 @ =0x05006000
- bl CpuSet
- ldr r0, _08111C14 @ =REG_MOSAIC
- strh r5, [r0]
- subs r0, 0xC
- strh r5, [r0]
- adds r0, 0x4
- strh r5, [r0]
- subs r0, 0x2
- strh r5, [r0]
- adds r0, 0x4
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- ldr r4, _08111C18 @ =gWindowConfig_81E6C58
- adds r0, r4, 0
- bl SetUpWindowConfig
- bl ResetPaletteFade
- ldr r0, _08111C1C @ =gUnknown_030042A4
- strh r5, [r0]
- ldr r0, _08111C20 @ =gUnknown_030042A0
- strh r5, [r0]
- ldr r0, _08111C24 @ =gUnknown_030042C0
- strh r5, [r0]
- ldr r0, _08111C28 @ =gUnknown_030041B4
- strh r5, [r0]
- ldr r0, _08111C2C @ =gUnknown_03004288
- strh r5, [r0]
- ldr r0, _08111C30 @ =gUnknown_03004280
- strh r5, [r0]
- ldr r1, _08111C34 @ =gUnknown_030041B0
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08111C38 @ =gUnknown_030041B8
- strh r5, [r0]
- ldr r0, _08111C3C @ =gUnknown_03004210
- adds r1, r4, 0
- bl InitWindowFromConfig
- ldr r1, _08111C40 @ =gBattleTerrain
- movs r0, 0x9
- strb r0, [r1]
- bl sub_800D6D4
- bl sub_800DAB8
- bl ResetSpriteData
- bl remove_some_task
- bl ResetTasks
- bl FreeAllSpritePalettes
- ldr r0, _08111C44 @ =gReservedSpritePaletteCount
- movs r3, 0x4
- strb r3, [r0]
- ldr r0, [sp, 0x20]
- movs r1, 0x2
- add r2, sp, 0x8
- bl GetMonData
- ldr r0, _08111C48 @ =gStringVar1
- add r1, sp, 0x8
- bl StringCopy10
- ldr r0, _08111C4C @ =gStringVar2
- movs r1, 0xB
- mov r4, r10
- muls r4, r1
- adds r1, r4, 0
- ldr r2, _08111C50 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r0, [sp, 0x20]
- movs r1, 0xB
- bl GetMonData
- adds r6, r0, 0
- lsls r6, 16
- lsrs r6, 16
- ldr r0, [sp, 0x20]
- movs r1, 0x1
- bl GetMonData
- str r0, [sp, 0x2C]
- ldr r0, [sp, 0x20]
- movs r1, 0
- bl GetMonData
- str r0, [sp, 0x30]
- lsls r0, r6, 3
- ldr r1, _08111C54 @ =gMonFrontPicTable
- adds r0, r1
- lsls r2, r6, 2
- ldr r3, _08111C58 @ =gMonFrontPicCoords
- adds r2, r3
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- ldr r4, _08111C5C @ =gUnknown_081FAF4C
- ldr r3, [r4, 0x4]
- str r3, [sp]
- str r6, [sp, 0x4]
- movs r3, 0x80
- lsls r3, 18
- bl DecompressPicFromTable_2
- adds r0, r6, 0
- ldr r1, [sp, 0x2C]
- ldr r2, [sp, 0x30]
- bl sub_80409C8
- ldr r0, [r0]
- movs r1, 0x88
- lsls r1, 1
- movs r2, 0x20
- bl LoadCompressedPalette
- adds r0, r6, 0
- movs r1, 0x1
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08111C60 @ =gUnknown_02024E8C
- mov r9, r0
- ldr r1, _08111C64 @ =gDummySpriteAffineAnimTable
- str r1, [r0, 0x10]
- movs r1, 0x78
- movs r2, 0x40
- movs r3, 0x1E
- bl CreateSprite
- lsls r1, r0, 24
- lsrs r2, r1, 24
- ldr r3, _08111C68 @ =0x02014800
- strb r0, [r3]
- ldr r7, _08111C6C @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- movs r4, 0x1C
- adds r4, r7
- mov r8, r4
- adds r0, r1, r4
- ldr r2, _08111C70 @ =nullsub_37
- str r2, [r0]
- adds r1, r7
- ldrb r2, [r1, 0x5]
- movs r4, 0xF
- adds r0, r4, 0
- ands r0, r2
- movs r2, 0x10
- orrs r0, r2
- strb r0, [r1, 0x5]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1]
- mov r1, r10
- lsls r0, r1, 3
- ldr r2, _08111C54 @ =gMonFrontPicTable
- adds r0, r2
- lsls r2, r1, 2
- ldr r3, _08111C58 @ =gMonFrontPicCoords
- adds r2, r3
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- str r2, [sp, 0x34]
- ldr r2, _08111C5C @ =gUnknown_081FAF4C
- ldr r2, [r2, 0xC]
- str r2, [sp]
- mov r3, r10
- str r3, [sp, 0x4]
- ldr r2, [sp, 0x34]
- movs r3, 0x80
- lsls r3, 18
- bl DecompressPicFromTable_2
- mov r0, r10
- ldr r1, [sp, 0x2C]
- ldr r2, [sp, 0x30]
- bl sub_80409C8
- ldr r0, [r0]
- movs r1, 0x90
- lsls r1, 1
- movs r2, 0x20
- bl LoadCompressedPalette
- mov r0, r10
- movs r1, 0x3
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08111C64 @ =gDummySpriteAffineAnimTable
- mov r1, r9
- str r0, [r1, 0x10]
- mov r0, r9
- movs r1, 0x78
- movs r2, 0x40
- movs r3, 0x1E
- bl CreateSprite
- lsls r1, r0, 24
- lsrs r2, r1, 24
- ldr r3, _08111C68 @ =0x02014800
- strb r0, [r3, 0x1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- add r8, r1
- ldr r0, _08111C70 @ =nullsub_37
- mov r2, r8
- str r0, [r2]
- adds r1, r7
- ldrb r0, [r1, 0x5]
- ands r4, r0
- movs r0, 0x20
- orrs r4, r0
- strb r4, [r1, 0x5]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1]
- bl sub_8149954
- ldr r0, _08111C74 @ =Task_EvolutionScene
- movs r1, 0
- bl CreateTask
- lsls r1, r0, 24
- lsrs r2, r1, 24
- ldr r4, _08111C68 @ =0x02014800
- strb r0, [r4, 0x2]
- ldr r1, _08111C78 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- strh r5, [r0, 0x8]
- strh r6, [r0, 0xE]
- mov r1, r10
- strh r1, [r0, 0x10]
- mov r2, sp
- ldrh r2, [r2, 0x20]
- strh r2, [r0, 0xA]
- ldr r3, [sp, 0x20]
- lsrs r1, r3, 16
- strh r1, [r0, 0xC]
- mov r4, sp
- ldrh r4, [r4, 0x24]
- strh r4, [r0, 0x12]
- movs r1, 0x1
- strh r1, [r0, 0x14]
- strh r5, [r0, 0x1E]
- mov r1, sp
- ldrh r1, [r1, 0x28]
- strh r1, [r0, 0x20]
- ldr r0, _08111C7C @ =0x02009000
- ldr r1, _08111C80 @ =gPlttBufferUnfaded + 0x40
- movs r2, 0x60
- bl memcpy
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xFA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08111C84 @ =HBlankCB_EvolutionScene
- bl SetHBlankCallback
- ldr r0, _08111C88 @ =VBlankCB_EvolutionScene
- bl SetVBlankCallback
- bl m4aMPlayAllStop
- ldr r0, _08111C8C @ =CB2_EvolutionSceneUpdate_0
- bl SetMainCallback2
- add sp, 0x38
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08111C10: .4byte 0x05006000
-_08111C14: .4byte REG_MOSAIC
-_08111C18: .4byte gWindowConfig_81E6C58
-_08111C1C: .4byte gUnknown_030042A4
-_08111C20: .4byte gUnknown_030042A0
-_08111C24: .4byte gUnknown_030042C0
-_08111C28: .4byte gUnknown_030041B4
-_08111C2C: .4byte gUnknown_03004288
-_08111C30: .4byte gUnknown_03004280
-_08111C34: .4byte gUnknown_030041B0
-_08111C38: .4byte gUnknown_030041B8
-_08111C3C: .4byte gUnknown_03004210
-_08111C40: .4byte gBattleTerrain
-_08111C44: .4byte gReservedSpritePaletteCount
-_08111C48: .4byte gStringVar1
-_08111C4C: .4byte gStringVar2
-_08111C50: .4byte gSpeciesNames
-_08111C54: .4byte gMonFrontPicTable
-_08111C58: .4byte gMonFrontPicCoords
-_08111C5C: .4byte gUnknown_081FAF4C
-_08111C60: .4byte gUnknown_02024E8C
-_08111C64: .4byte gDummySpriteAffineAnimTable
-_08111C68: .4byte 0x02014800
-_08111C6C: .4byte gSprites
-_08111C70: .4byte nullsub_37
-_08111C74: .4byte Task_EvolutionScene
-_08111C78: .4byte gTasks
-_08111C7C: .4byte 0x02009000
-_08111C80: .4byte gPlttBufferUnfaded + 0x40
-_08111C84: .4byte HBlankCB_EvolutionScene
-_08111C88: .4byte VBlankCB_EvolutionScene
-_08111C8C: .4byte CB2_EvolutionSceneUpdate_0
- thumb_func_end EvolutionScene
-
- thumb_func_start CB2_EvolutionSceneLoadGraphics
-CB2_EvolutionSceneLoadGraphics: @ 8111C90
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0xC
- ldr r2, _08111E14 @ =gTasks
- ldr r0, _08111E18 @ =0x02014800
- mov r9, r0
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x20
- ldrsh r2, [r0, r1]
- movs r1, 0x64
- adds r4, r2, 0
- muls r4, r1
- ldr r1, _08111E1C @ =gPlayerParty
- adds r4, r1
- ldrh r6, [r0, 0x10]
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- mov r10, r0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- mov r8, r0
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- movs r5, 0
- str r5, [sp, 0x8]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, _08111E20 @ =0x05006000
- add r0, sp, 0x8
- bl CpuSet
- ldr r0, _08111E24 @ =REG_MOSAIC
- strh r5, [r0]
- subs r0, 0xC
- strh r5, [r0]
- adds r0, 0x4
- strh r5, [r0]
- subs r0, 0x2
- strh r5, [r0]
- adds r0, 0x4
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- ldr r4, _08111E28 @ =gWindowConfig_81E6C58
- adds r0, r4, 0
- bl SetUpWindowConfig
- bl ResetPaletteFade
- ldr r0, _08111E2C @ =gUnknown_030042A4
- strh r5, [r0]
- ldr r0, _08111E30 @ =gUnknown_030042A0
- strh r5, [r0]
- ldr r0, _08111E34 @ =gUnknown_030042C0
- strh r5, [r0]
- ldr r0, _08111E38 @ =gUnknown_030041B4
- strh r5, [r0]
- ldr r0, _08111E3C @ =gUnknown_03004288
- strh r5, [r0]
- ldr r0, _08111E40 @ =gUnknown_03004280
- strh r5, [r0]
- ldr r1, _08111E44 @ =gUnknown_030041B0
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08111E48 @ =gUnknown_030041B8
- strh r5, [r0]
- ldr r0, _08111E4C @ =gUnknown_03004210
- adds r1, r4, 0
- bl InitWindowFromConfig
- ldr r1, _08111E50 @ =gBattleTerrain
- movs r0, 0x9
- strb r0, [r1]
- bl sub_800D6D4
- bl sub_800DAB8
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r1, _08111E54 @ =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- lsls r0, r6, 3
- ldr r1, _08111E58 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _08111E5C @ =gMonFrontPicCoords
- lsls r2, r6, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _08111E60 @ =gUnknown_081FAF4C
- ldr r4, [r4, 0xC]
- str r4, [sp]
- str r6, [sp, 0x4]
- bl DecompressPicFromTable_2
- adds r0, r6, 0
- mov r1, r10
- mov r2, r8
- bl sub_80409C8
- ldr r0, [r0]
- movs r1, 0x90
- lsls r1, 1
- movs r2, 0x20
- bl LoadCompressedPalette
- adds r0, r6, 0
- movs r1, 0x3
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08111E64 @ =gUnknown_02024E8C
- ldr r1, _08111E68 @ =gDummySpriteAffineAnimTable
- str r1, [r0, 0x10]
- movs r1, 0x78
- movs r2, 0x40
- movs r3, 0x1E
- bl CreateSprite
- lsls r2, r0, 24
- lsrs r2, 24
- mov r1, r9
- strb r0, [r1, 0x1]
- ldr r3, _08111E6C @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x1C
- adds r0, r1, r0
- ldr r2, _08111E70 @ =nullsub_37
- str r2, [r0]
- adds r1, r3
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- movs r2, 0x20
- orrs r0, r2
- strb r0, [r1, 0x5]
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xFA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08111E74 @ =HBlankCB_EvolutionScene
- bl SetHBlankCallback
- ldr r0, _08111E78 @ =VBlankCB_EvolutionScene
- bl SetVBlankCallback
- ldr r0, _08111E7C @ =CB2_EvolutionSceneUpdate_0
- bl SetMainCallback2
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08111E14: .4byte gTasks
-_08111E18: .4byte 0x02014800
-_08111E1C: .4byte gPlayerParty
-_08111E20: .4byte 0x05006000
-_08111E24: .4byte REG_MOSAIC
-_08111E28: .4byte gWindowConfig_81E6C58
-_08111E2C: .4byte gUnknown_030042A4
-_08111E30: .4byte gUnknown_030042A0
-_08111E34: .4byte gUnknown_030042C0
-_08111E38: .4byte gUnknown_030041B4
-_08111E3C: .4byte gUnknown_03004288
-_08111E40: .4byte gUnknown_03004280
-_08111E44: .4byte gUnknown_030041B0
-_08111E48: .4byte gUnknown_030041B8
-_08111E4C: .4byte gUnknown_03004210
-_08111E50: .4byte gBattleTerrain
-_08111E54: .4byte gReservedSpritePaletteCount
-_08111E58: .4byte gMonFrontPicTable
-_08111E5C: .4byte gMonFrontPicCoords
-_08111E60: .4byte gUnknown_081FAF4C
-_08111E64: .4byte gUnknown_02024E8C
-_08111E68: .4byte gDummySpriteAffineAnimTable
-_08111E6C: .4byte gSprites
-_08111E70: .4byte nullsub_37
-_08111E74: .4byte HBlankCB_EvolutionScene
-_08111E78: .4byte VBlankCB_EvolutionScene
-_08111E7C: .4byte CB2_EvolutionSceneUpdate_0
- thumb_func_end CB2_EvolutionSceneLoadGraphics
-
- thumb_func_start CB2_TradeEvolutionSceneLoadGraphics
-CB2_TradeEvolutionSceneLoadGraphics: @ 8111E80
- push {r4-r7,lr}
- sub sp, 0x8
- ldr r2, _08111EB8 @ =gTasks
- ldr r0, _08111EBC @ =0x02014800
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r2
- movs r1, 0x20
- ldrsh r2, [r0, r1]
- movs r1, 0x64
- muls r2, r1
- ldr r1, _08111EC0 @ =gPlayerParty
- adds r4, r2, r1
- ldrh r7, [r0, 0x10]
- ldr r0, _08111EC4 @ =gMain
- ldr r2, _08111EC8 @ =0x0000043c
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0x6
- bls _08111EAE
- b _081120D6
-_08111EAE:
- lsls r0, 2
- ldr r1, _08111ECC @ =_08111ED0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08111EB8: .4byte gTasks
-_08111EBC: .4byte 0x02014800
-_08111EC0: .4byte gPlayerParty
-_08111EC4: .4byte gMain
-_08111EC8: .4byte 0x0000043c
-_08111ECC: .4byte _08111ED0
- .align 2, 0
-_08111ED0:
- .4byte _08111EEC
- .4byte _08111F68
- .4byte _08111F88
- .4byte _08111FDC
- .4byte _08111FE2
- .4byte _08112048
- .4byte _081120B4
-_08111EEC:
- movs r0, 0x80
- lsls r0, 19
- movs r4, 0
- strh r4, [r0]
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r1, _08111F3C @ =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- ldr r0, _08111F40 @ =gUnknown_030042A4
- strh r4, [r0]
- ldr r0, _08111F44 @ =gUnknown_030042A0
- strh r4, [r0]
- ldr r0, _08111F48 @ =gUnknown_030042C0
- strh r4, [r0]
- ldr r0, _08111F4C @ =gUnknown_030041B4
- strh r4, [r0]
- ldr r0, _08111F50 @ =gUnknown_03004288
- strh r4, [r0]
- ldr r0, _08111F54 @ =gUnknown_03004280
- strh r4, [r0]
- ldr r1, _08111F58 @ =gUnknown_030041B0
- movs r2, 0x80
- lsls r2, 1
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08111F5C @ =gUnknown_030041B8
- strh r4, [r0]
- ldr r1, _08111F60 @ =gMain
- ldr r0, _08111F64 @ =0x0000043c
- adds r1, r0
- b _0811208E
- .align 2, 0
-_08111F3C: .4byte gReservedSpritePaletteCount
-_08111F40: .4byte gUnknown_030042A4
-_08111F44: .4byte gUnknown_030042A0
-_08111F48: .4byte gUnknown_030042C0
-_08111F4C: .4byte gUnknown_030041B4
-_08111F50: .4byte gUnknown_03004288
-_08111F54: .4byte gUnknown_03004280
-_08111F58: .4byte gUnknown_030041B0
-_08111F5C: .4byte gUnknown_030041B8
-_08111F60: .4byte gMain
-_08111F64: .4byte 0x0000043c
-_08111F68:
- ldr r4, _08111F80 @ =gWindowConfig_81E6F84
- adds r0, r4, 0
- bl SetUpWindowConfig
- ldr r0, _08111F84 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0x4
- adds r1, r4, 0
- bl InitWindowFromConfig
- b _08112088
- .align 2, 0
-_08111F80: .4byte gWindowConfig_81E6F84
-_08111F84: .4byte gUnknown_03004828
-_08111F88:
- ldr r4, _08111FC8 @ =gUnknown_03004828
- ldr r0, [r4]
- adds r0, 0x4
- bl LoadTextWindowGraphics
- movs r0, 0x2
- bl SetTextWindowBaseTileNum
- ldr r1, [r4]
- adds r1, 0x34
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x4
- bl LoadTextWindowGraphics
- bl MenuZeroFillScreen
- bl ResetPaletteFade
- ldr r1, _08111FCC @ =gMain
- ldr r0, _08111FD0 @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, _08111FD4 @ =HBlankCB_EvolutionScene
- bl SetHBlankCallback
- ldr r0, _08111FD8 @ =VBlankCB_TradeEvolutionScene
- bl SetVBlankCallback
- b _081120D6
- .align 2, 0
-_08111FC8: .4byte gUnknown_03004828
-_08111FCC: .4byte gMain
-_08111FD0: .4byte 0x0000043c
-_08111FD4: .4byte HBlankCB_EvolutionScene
-_08111FD8: .4byte VBlankCB_TradeEvolutionScene
-_08111FDC:
- bl sub_804E22C
- b _08112088
-_08111FE2:
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- adds r6, r0, 0
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r5, r0, 0
- lsls r0, r7, 3
- ldr r1, _08112034 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _08112038 @ =gMonFrontPicCoords
- lsls r2, r7, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _0811203C @ =gUnknown_081FAF4C
- ldr r4, [r4, 0xC]
- str r4, [sp]
- str r7, [sp, 0x4]
- bl DecompressPicFromTable_2
- adds r0, r7, 0
- adds r1, r6, 0
- adds r2, r5, 0
- bl sub_80409C8
- ldr r0, [r0]
- movs r1, 0x90
- lsls r1, 1
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r1, _08112040 @ =gMain
- ldr r0, _08112044 @ =0x0000043c
- adds r1, r0
- b _0811208E
- .align 2, 0
-_08112034: .4byte gMonFrontPicTable
-_08112038: .4byte gMonFrontPicCoords
-_0811203C: .4byte gUnknown_081FAF4C
-_08112040: .4byte gMain
-_08112044: .4byte 0x0000043c
-_08112048:
- adds r0, r7, 0
- movs r1, 0x3
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08112098 @ =gUnknown_02024E8C
- ldr r1, _0811209C @ =gDummySpriteAffineAnimTable
- str r1, [r0, 0x10]
- movs r1, 0x78
- movs r2, 0x40
- movs r3, 0x1E
- bl CreateSprite
- ldr r1, _081120A0 @ =0x02014800
- lsls r2, r0, 24
- lsrs r2, 24
- strb r0, [r1, 0x1]
- ldr r3, _081120A4 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x1C
- adds r0, r1, r0
- ldr r2, _081120A8 @ =nullsub_37
- str r2, [r0]
- adds r1, r3
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- movs r2, 0x20
- orrs r0, r2
- strb r0, [r1, 0x5]
-_08112088:
- ldr r1, _081120AC @ =gMain
- ldr r2, _081120B0 @ =0x0000043c
- adds r1, r2
-_0811208E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _081120D6
- .align 2, 0
-_08112098: .4byte gUnknown_02024E8C
-_0811209C: .4byte gDummySpriteAffineAnimTable
-_081120A0: .4byte 0x02014800
-_081120A4: .4byte gSprites
-_081120A8: .4byte nullsub_37
-_081120AC: .4byte gMain
-_081120B0: .4byte 0x0000043c
-_081120B4:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _081120E0 @ =CB2_EvolutionSceneUpdate_1
- bl SetMainCallback2
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
-_081120D6:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081120E0: .4byte CB2_EvolutionSceneUpdate_1
- thumb_func_end CB2_TradeEvolutionSceneLoadGraphics
-
- thumb_func_start TradeEvolutionScene
-TradeEvolutionScene: @ 81120E4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x24
- str r0, [sp, 0x1C]
- adds r5, r1, 0
- adds r4, r2, 0
- mov r10, r3
- lsls r5, 16
- lsrs r5, 16
- lsls r4, 24
- lsrs r4, 24
- mov r0, r10
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, [sp, 0x1C]
- movs r1, 0x2
- add r2, sp, 0x8
- bl GetMonData
- ldr r0, _08112234 @ =gStringVar1
- add r1, sp, 0x8
- bl StringCopy10
- ldr r0, _08112238 @ =gStringVar2
- movs r1, 0xB
- muls r1, r5
- ldr r2, _0811223C @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- ldr r1, _08112240 @ =gAffineAnimsDisabled
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, [sp, 0x1C]
- movs r1, 0xB
- bl GetMonData
- mov r8, r0
- mov r1, r8
- lsls r1, 16
- lsrs r1, 16
- mov r8, r1
- ldr r0, [sp, 0x1C]
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- ldr r0, [sp, 0x1C]
- movs r1, 0x1
- bl GetMonData
- adds r7, r0, 0
- ldr r2, _08112244 @ =0x02014800
- mov r9, r2
- strb r4, [r2]
- lsls r0, r5, 3
- ldr r1, _08112248 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _0811224C @ =gMonFrontPicCoords
- lsls r2, r5, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _08112250 @ =gUnknown_081FAF4C
- ldr r4, [r4, 0x4]
- str r4, [sp]
- str r5, [sp, 0x4]
- bl DecompressPicFromTable_2
- adds r0, r5, 0
- adds r1, r7, 0
- adds r2, r6, 0
- bl sub_80409C8
- ldr r0, [r0]
- movs r1, 0x90
- lsls r1, 1
- movs r2, 0x20
- bl LoadCompressedPalette
- adds r0, r5, 0
- movs r1, 0x1
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _08112254 @ =gUnknown_02024E8C
- ldr r1, _08112258 @ =gDummySpriteAffineAnimTable
- str r1, [r0, 0x10]
- movs r1, 0x78
- movs r2, 0x40
- movs r3, 0x1E
- bl CreateSprite
- lsls r1, r0, 24
- lsrs r2, r1, 24
- mov r1, r9
- strb r0, [r1, 0x1]
- ldr r3, _0811225C @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r0, r3, 0
- adds r0, 0x1C
- adds r0, r1, r0
- ldr r2, _08112260 @ =nullsub_37
- str r2, [r0]
- adds r1, r3
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- movs r2, 0x20
- orrs r0, r2
- strb r0, [r1, 0x5]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- bl sub_8149954
- ldr r0, _08112264 @ =Task_TradeEvolutionScene
- movs r1, 0
- bl CreateTask
- lsls r1, r0, 24
- lsrs r2, r1, 24
- mov r1, r9
- strb r0, [r1, 0x2]
- ldr r1, _08112268 @ =gTasks
- lsls r0, r2, 2
- adds r0, r2
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- strh r2, [r0, 0x8]
- mov r1, r8
- strh r1, [r0, 0xE]
- strh r5, [r0, 0x10]
- mov r2, sp
- ldrh r2, [r2, 0x1C]
- strh r2, [r0, 0xA]
- ldr r1, [sp, 0x1C]
- lsrs r1, 16
- str r1, [sp, 0x20]
- strh r1, [r0, 0xC]
- movs r1, 0x1
- strh r1, [r0, 0x14]
- movs r1, 0
- strh r1, [r0, 0x1E]
- mov r2, r10
- strh r2, [r0, 0x20]
- ldr r0, _0811226C @ =CB2_EvolutionSceneUpdate_1
- bl SetMainCallback2
- add sp, 0x24
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08112234: .4byte gStringVar1
-_08112238: .4byte gStringVar2
-_0811223C: .4byte gSpeciesNames
-_08112240: .4byte gAffineAnimsDisabled
-_08112244: .4byte 0x02014800
-_08112248: .4byte gMonFrontPicTable
-_0811224C: .4byte gMonFrontPicCoords
-_08112250: .4byte gUnknown_081FAF4C
-_08112254: .4byte gUnknown_02024E8C
-_08112258: .4byte gDummySpriteAffineAnimTable
-_0811225C: .4byte gSprites
-_08112260: .4byte nullsub_37
-_08112264: .4byte Task_TradeEvolutionScene
-_08112268: .4byte gTasks
-_0811226C: .4byte CB2_EvolutionSceneUpdate_1
- thumb_func_end TradeEvolutionScene
-
- thumb_func_start CB2_EvolutionSceneUpdate_0
-CB2_EvolutionSceneUpdate_0: @ 8112270
- push {lr}
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r0, _0811228C @ =gUnknown_03004210
- bl sub_800374C
- bl UpdatePaletteFade
- bl RunTasks
- pop {r0}
- bx r0
- .align 2, 0
-_0811228C: .4byte gUnknown_03004210
- thumb_func_end CB2_EvolutionSceneUpdate_0
-
- thumb_func_start CB2_EvolutionSceneUpdate_1
-CB2_EvolutionSceneUpdate_1: @ 8112290
- push {lr}
- bl AnimateSprites
- bl BuildOamBuffer
- ldr r0, _081122B0 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0x4
- bl sub_80035AC
- bl UpdatePaletteFade
- bl RunTasks
- pop {r0}
- bx r0
- .align 2, 0
-_081122B0: .4byte gUnknown_03004828
- thumb_func_end CB2_EvolutionSceneUpdate_1
-
- thumb_func_start CreateShedinja
-CreateShedinja: @ 81122B4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r1
- lsls r0, 16
- lsrs r7, r0, 16
- movs r0, 0
- str r0, [sp]
- ldr r0, _081123F4 @ =gEvolutionTable
- mov r8, r0
- lsls r1, r7, 2
- mov r9, r1
- adds r0, r1, r7
- lsls r4, r0, 3
- mov r0, r8
- adds r6, r4, r0
- ldrh r0, [r6]
- cmp r0, 0xD
- beq _081122E2
- b _081123E2
-_081122E2:
- ldr r1, _081123F8 @ =gPlayerPartyCount
- ldrb r0, [r1]
- cmp r0, 0x5
- bhi _081123E2
- adds r1, r0, 0
- movs r0, 0x64
- muls r1, r0
- ldr r0, _081123FC @ =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- mov r1, r10
- movs r2, 0x64
- bl CopyMon
- mov r1, r8
- adds r2, r1, r4
- adds r2, 0xC
- adds r0, r5, 0
- movs r1, 0xB
- bl SetMonData
- ldrh r1, [r6, 0xC]
- movs r0, 0xB
- adds r2, r1, 0
- muls r2, r0
- ldr r0, _08112400 @ =gSpeciesNames
- adds r2, r0
- adds r0, r5, 0
- movs r1, 0x2
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0xC
- mov r2, sp
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0x8
- mov r2, sp
- bl SetMonData
- adds r0, r5, 0
- movs r1, 0xA
- mov r2, sp
- bl SetMonData
- movs r4, 0x32
- mov r6, r9
-_08112342:
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, sp
- bl SetMonData
- adds r4, 0x1
- cmp r4, 0x36
- ble _08112342
- movs r4, 0x43
-_08112354:
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, sp
- bl SetMonData
- adds r4, 0x1
- cmp r4, 0x4F
- ble _08112354
- adds r0, r5, 0
- movs r1, 0x37
- mov r2, sp
- bl SetMonData
- movs r0, 0xFF
- str r0, [sp]
- adds r0, r5, 0
- movs r1, 0x40
- mov r2, sp
- bl SetMonData
- adds r0, r5, 0
- bl CalculateMonStats
- bl CalculatePlayerPartyCount
- ldr r0, _081123F4 @ =gEvolutionTable
- adds r4, r6, r7
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0xC]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl GetNationalPokedexFlag
- ldrh r0, [r4, 0xC]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl GetNationalPokedexFlag
- adds r0, r5, 0
- movs r1, 0xB
- bl GetMonData
- ldr r1, _08112404 @ =0x0000012f
- cmp r0, r1
- bne _081123E2
- adds r0, r5, 0
- movs r1, 0x3
- bl GetMonData
- cmp r0, 0x1
- bne _081123E2
- mov r0, r10
- movs r1, 0xB
- bl GetMonData
- movs r1, 0x97
- lsls r1, 1
- cmp r0, r1
- bne _081123E2
- ldr r2, _08112408 @ =gUnknown_083F868C
- adds r0, r5, 0
- movs r1, 0x2
- bl SetMonData
-_081123E2:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081123F4: .4byte gEvolutionTable
-_081123F8: .4byte gPlayerPartyCount
-_081123FC: .4byte gPlayerParty
-_08112400: .4byte gSpeciesNames
-_08112404: .4byte 0x0000012f
-_08112408: .4byte gUnknown_083F868C
- thumb_func_end CreateShedinja
-
- thumb_func_start Task_EvolutionScene
-Task_EvolutionScene: @ 811240C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, _08112490 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r3, r0, r2
- movs r1, 0xA
- ldrsh r0, [r3, r1]
- mov r9, r0
- movs r1, 0xC
- ldrsh r0, [r3, r1]
- lsls r0, 16
- mov r1, r9
- orrs r1, r0
- mov r9, r1
- ldr r0, _08112494 @ =gMain
- ldrh r1, [r0, 0x2C]
- adds r6, r2, 0
- adds r4, r0, 0
- cmp r1, 0x2
- bne _0811246E
- movs r2, 0x8
- ldrsh r0, [r3, r2]
- cmp r0, 0x8
- bne _0811246E
- ldrh r1, [r3, 0x12]
- movs r2, 0x1
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _0811246E
- movs r0, 0x10
- strh r0, [r3, 0x8]
- ldr r0, _08112498 @ =gBattleCommunication
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _0811246E
- strh r2, [r1, 0x18]
-_0811246E:
- lsls r1, r7, 2
- adds r0, r1, r7
- lsls r0, 3
- adds r0, r6
- movs r3, 0x8
- ldrsh r0, [r0, r3]
- mov r8, r1
- cmp r0, 0x15
- bls _08112484
- bl _08112FD0
-_08112484:
- lsls r0, 2
- ldr r1, _0811249C @ =_081124A0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08112490: .4byte gTasks
-_08112494: .4byte gMain
-_08112498: .4byte gBattleCommunication
-_0811249C: .4byte _081124A0
- .align 2, 0
-_081124A0:
- .4byte _081124F8
- .4byte _0811253C
- .4byte _08112588
- .4byte _08112594
- .4byte _081125BC
- .4byte _081125FC
- .4byte _08112630
- .4byte _0811266C
- .4byte _081126A0
- .4byte _081126E0
- .4byte _081126FC
- .4byte _08112728
- .4byte _08112754
- .4byte _081127A0
- .4byte _0811284C
- .4byte _081128E4
- .4byte _08112934
- .4byte _08112974
- .4byte _081129A0
- .4byte _081129E8
- .4byte _08112A4C
- .4byte _08112A88
-_081124F8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r2, _08112530 @ =gSprites
- ldr r0, _08112534 @ =0x02014800
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r0, _08112538 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- b _08112A2E
- .align 2, 0
-_08112530: .4byte gSprites
-_08112534: .4byte 0x02014800
-_08112538: .4byte gTasks
-_0811253C:
- ldr r0, _08112574 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0811254C
- bl _08112FD0
-_0811254C:
- ldr r4, _08112578 @ =gStringVar4
- ldr r1, _0811257C @ =gUnknown_08400C4A
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _08112580 @ =gUnknown_03004210
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112584 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- b _08112A2E
- .align 2, 0
-_08112574: .4byte gPaletteFade
-_08112578: .4byte gStringVar4
-_0811257C: .4byte gUnknown_08400C4A
-_08112580: .4byte gUnknown_03004210
-_08112584: .4byte gTasks
-_08112588:
- ldr r0, _08112590 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- b _0811297C
- .align 2, 0
-_08112590: .4byte gUnknown_03004210
-_08112594:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _081125A2
- bl _08112FD0
-_081125A2:
- movs r0, 0xBC
- lsls r0, 1
- bl PlaySE
- ldr r0, _081125B8 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- b _08112A2E
- .align 2, 0
-_081125B8: .4byte gTasks
-_081125BC:
- bl IsSEPlaying
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- beq _081125CC
- bl _08112FD0
-_081125CC:
- ldr r0, _081125F4 @ =0x00000179
- bl PlayNewMapMusic
- ldr r0, _081125F8 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- str r4, [sp]
- movs r0, 0x1C
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- bl _08112FD0
- .align 2, 0
-_081125F4: .4byte 0x00000179
-_081125F8: .4byte gTasks
-_081125FC:
- ldr r0, _08112624 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0811260C
- bl _08112FD0
-_0811260C:
- movs r0, 0x11
- bl sub_8149970
- ldr r1, _08112628 @ =gBattleCommunication
- strb r0, [r1, 0x2]
- ldr r0, _0811262C @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- b _08112A2E
- .align 2, 0
-_08112624: .4byte gPaletteFade
-_08112628: .4byte gBattleCommunication
-_0811262C: .4byte gTasks
-_08112630:
- ldr r4, _08112664 @ =gBattleCommunication
- ldrb r0, [r4, 0x2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _08112646
- bl _08112FD0
-_08112646:
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r6
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- ldr r1, _08112668 @ =0x02014800
- movs r0, 0x1
- strb r0, [r1, 0x3]
- bl sub_8149A90
- strb r0, [r4, 0x2]
- bl _08112FD0
- .align 2, 0
-_08112664: .4byte gBattleCommunication
-_08112668: .4byte 0x02014800
-_0811266C:
- ldr r4, _08112698 @ =gBattleCommunication
- ldrb r0, [r4, 0x2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _08112682
- bl _08112FD0
-_08112682:
- ldr r1, _0811269C @ =0x02014800
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- bl sub_8149E7C
- strb r0, [r4, 0x2]
- mov r0, r8
- adds r1, r0, r7
- lsls r1, 3
- adds r1, r6
- b _08112A2E
- .align 2, 0
-_08112698: .4byte gBattleCommunication
-_0811269C: .4byte 0x02014800
-_081126A0:
- ldr r1, _081126D8 @ =0x02014800
- ldrb r0, [r1, 0x3]
- subs r0, 0x1
- strb r0, [r1, 0x3]
- lsls r0, 24
- cmp r0, 0
- beq _081126B2
- bl _08112FD0
-_081126B2:
- movs r0, 0x3
- strb r0, [r1, 0x3]
- ldr r0, _081126DC @ =gBattleCommunication
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _081126CC
- bl _08112FD0
-_081126CC:
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r6
- b _08112A2E
- .align 2, 0
-_081126D8: .4byte 0x02014800
-_081126DC: .4byte gBattleCommunication
-_081126E0:
- bl sub_8149B44
- ldr r1, _081126F4 @ =gBattleCommunication
- strb r0, [r1, 0x2]
- ldr r0, _081126F8 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- b _08112A2E
- .align 2, 0
-_081126F4: .4byte gBattleCommunication
-_081126F8: .4byte gTasks
-_081126FC:
- ldr r5, _08112724 @ =gBattleCommunication
- ldrb r0, [r5, 0x2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _08112712
- bl _08112FD0
-_08112712:
- mov r0, r8
- adds r4, r0, r7
- lsls r4, 3
- adds r4, r6
- ldrh r0, [r4, 0x10]
- bl sub_8149C20
- strb r0, [r5, 0x2]
- b _08112992
- .align 2, 0
-_08112724: .4byte gBattleCommunication
-_08112728:
- ldr r0, _08112750 @ =gBattleCommunication
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _0811273E
- bl _08112FD0
-_0811273E:
- movs r0, 0x21
- bl PlaySE
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r6
- b _08112A2E
- .align 2, 0
-_08112750: .4byte gBattleCommunication
-_08112754:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08112762
- bl _08112FD0
-_08112762:
- bl m4aMPlayAllStop
- ldr r0, _08112794 @ =gTasks
- mov r3, r8
- adds r4, r3, r7
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0x10]
- movs r1, 0
- bl PlayCry1
- ldr r0, _08112798 @ =gPlttBufferUnfaded + 0x40
- ldr r1, _0811279C @ =0x02009000
- movs r2, 0x60
- bl memcpy
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1C
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _08112992
- .align 2, 0
-_08112794: .4byte gTasks
-_08112798: .4byte gPlttBufferUnfaded + 0x40
-_0811279C: .4byte 0x02009000
-_081127A0:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _081127AE
- bl _08112FD0
-_081127AE:
- ldr r0, _08112834 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081127BE
- bl _08112FD0
-_081127BE:
- ldr r4, _08112838 @ =gStringVar4
- ldr r1, _0811283C @ =gUnknown_08400C60
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _08112840 @ =gUnknown_03004210
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112844 @ =0x00000173
- bl PlayBGM
- ldr r2, _08112848 @ =gTasks
- mov r0, r8
- adds r1, r0, r7
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- adds r2, r1
- adds r2, 0x10
- mov r0, r9
- movs r1, 0xB
- bl SetMonData
- mov r0, r9
- bl CalculateMonStats
- ldrh r1, [r4, 0xE]
- ldrh r2, [r4, 0x10]
- mov r0, r9
- bl EvolutionRenameMon
- ldrh r0, [r4, 0x10]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl GetNationalPokedexFlag
- ldrh r0, [r4, 0x10]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl GetNationalPokedexFlag
- movs r0, 0xE
- bl IncrementGameStat
- b _08112FD0
- .align 2, 0
-_08112834: .4byte gPaletteFade
-_08112838: .4byte gStringVar4
-_0811283C: .4byte gUnknown_08400C60
-_08112840: .4byte gUnknown_03004210
-_08112844: .4byte 0x00000173
-_08112848: .4byte gTasks
-_0811284C:
- ldr r0, _081128A4 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- beq _08112856
- b _08112FD0
-_08112856:
- mov r1, r8
- adds r0, r1, r7
- lsls r0, 3
- adds r5, r0, r6
- ldrb r1, [r5, 0x14]
- mov r0, r9
- bl sub_803B7C8
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0
- beq _081128C4
- movs r2, 0x1E
- ldrsh r4, [r5, r2]
- cmp r4, 0
- bne _081128C4
- bl sub_8053E90
- ldrh r1, [r5, 0x12]
- movs r0, 0x80
- orrs r0, r1
- strh r0, [r5, 0x12]
- strh r4, [r5, 0x14]
- strh r4, [r5, 0x18]
- mov r0, r9
- movs r1, 0x2
- add r2, sp, 0x4
- bl GetMonData
- ldr r0, _081128A8 @ =gBattleTextBuff1
- add r1, sp, 0x4
- bl StringCopy10
- ldr r0, _081128AC @ =0x0000ffff
- cmp r6, r0
- bne _081128B0
- movs r0, 0x15
- strh r0, [r5, 0x8]
- b _08112FD0
- .align 2, 0
-_081128A4: .4byte gUnknown_03004210
-_081128A8: .4byte gBattleTextBuff1
-_081128AC: .4byte 0x0000ffff
-_081128B0:
- ldr r0, _081128C0 @ =0x0000fffe
- cmp r6, r0
- bne _081128B8
- b _08112FD0
-_081128B8:
- movs r0, 0x13
- strh r0, [r5, 0x8]
- b _08112FD0
- .align 2, 0
-_081128C0: .4byte 0x0000fffe
-_081128C4:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _081128E0 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- b _08112A2E
- .align 2, 0
-_081128E0: .4byte gTasks
-_081128E4:
- ldr r0, _0811292C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r2, 0x80
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- beq _081128F4
- b _08112FD0
-_081128F4:
- mov r1, r8
- adds r0, r1, r7
- lsls r0, 3
- adds r4, r0, r6
- ldrh r1, [r4, 0x12]
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _0811290A
- bl sub_8053E90
-_0811290A:
- movs r2, 0x1E
- ldrsh r0, [r4, r2]
- cmp r0, 0
- bne _0811291A
- ldrh r0, [r4, 0xE]
- mov r1, r9
- bl CreateShedinja
-_0811291A:
- adds r0, r7, 0
- bl DestroyTask
- ldr r0, _08112930 @ =gUnknown_03005E94
- ldr r0, [r0]
- bl SetMainCallback2
- b _08112FD0
- .align 2, 0
-_0811292C: .4byte gPaletteFade
-_08112930: .4byte gUnknown_03005E94
-_08112934:
- ldr r0, _08112968 @ =gBattleCommunication
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _08112948
- b _08112FD0
-_08112948:
- bl m4aMPlayAllStop
- ldr r0, _0811296C @ =0x0006001c
- ldr r1, _08112970 @ =0x00007fff
- str r1, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r6
- b _08112A2E
- .align 2, 0
-_08112968: .4byte gBattleCommunication
-_0811296C: .4byte 0x0006001c
-_08112970: .4byte 0x00007fff
-_08112974:
- ldr r0, _0811299C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
-_0811297C:
- cmp r0, 0
- beq _08112982
- b _08112FD0
-_08112982:
- mov r0, r8
- adds r4, r0, r7
- lsls r4, 3
- adds r4, r6
- ldrh r0, [r4, 0xE]
- movs r1, 0
- bl PlayCry1
-_08112992:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08112FD0
- .align 2, 0
-_0811299C: .4byte gPaletteFade
-_081129A0:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _081129AC
- b _08112FD0
-_081129AC:
- ldr r4, _081129D8 @ =gStringVar4
- ldr r1, _081129DC @ =gUnknown_08400C8D
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _081129E0 @ =gUnknown_03004210
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _081129E4 @ =gTasks
- mov r2, r8
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0, 0x1E]
- b _08112F9A
- .align 2, 0
-_081129D8: .4byte gStringVar4
-_081129DC: .4byte gUnknown_08400C8D
-_081129E0: .4byte gUnknown_03004210
-_081129E4: .4byte gTasks
-_081129E8:
- ldr r4, _08112A38 @ =gUnknown_03004210
- ldrh r0, [r4, 0x16]
- cmp r0, 0
- beq _081129F2
- b _08112FD0
-_081129F2:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _081129FE
- b _08112FD0
-_081129FE:
- bl sub_8024CEC
- ldr r0, _08112A3C @ =0x0000016f
- bl PlayFanfare
- ldr r0, _08112A40 @ =gBattleStringsTable
- ldr r0, [r0, 0xC]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r1, _08112A44 @ =gDisplayedStringBattle
- movs r0, 0xF
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112A48 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x40
- strh r0, [r1, 0x14]
-_08112A2E:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _08112FD0
- .align 2, 0
-_08112A38: .4byte gUnknown_03004210
-_08112A3C: .4byte 0x0000016f
-_08112A40: .4byte gBattleStringsTable
-_08112A44: .4byte gDisplayedStringBattle
-_08112A48: .4byte gTasks
-_08112A4C:
- ldr r0, _08112A80 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- beq _08112A56
- b _08112FD0
-_08112A56:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08112A62
- b _08112FD0
-_08112A62:
- ldr r0, _08112A84 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x14]
- subs r0, 0x1
- strh r0, [r1, 0x14]
- lsls r0, 16
- cmp r0, 0
- beq _08112A7A
- b _08112FD0
-_08112A7A:
- movs r0, 0xE
- strh r0, [r1, 0x8]
- b _08112FD0
- .align 2, 0
-_08112A80: .4byte gUnknown_03004210
-_08112A84: .4byte gTasks
-_08112A88:
- mov r3, r8
- adds r0, r3, r7
- lsls r0, 3
- adds r0, r6
- movs r1, 0x18
- ldrsh r0, [r0, r1]
- cmp r0, 0xB
- bls _08112A9A
- b _08112FD0
-_08112A9A:
- lsls r0, 2
- ldr r1, _08112AA4 @ =_08112AA8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08112AA4: .4byte _08112AA8
- .align 2, 0
-_08112AA8:
- .4byte _08112AD8
- .4byte _08112B2C
- .4byte _08112B7C
- .4byte _08112BC0
- .4byte _08112C0C
- .4byte _08112D3C
- .4byte _08112D8C
- .4byte _08112E98
- .4byte _08112EE8
- .4byte _08112F38
- .4byte _08112F78
- .4byte _08112FB0
-_08112AD8:
- ldr r4, _08112B1C @ =gUnknown_03004210
- ldrh r0, [r4, 0x16]
- cmp r0, 0
- beq _08112AE2
- b _08112FD0
-_08112AE2:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08112AEE
- b _08112FD0
-_08112AEE:
- bl sub_8024CEC
- ldr r0, _08112B20 @ =gBattleStringsTable
- ldr r0, [r0, 0x10]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r1, _08112B24 @ =gDisplayedStringBattle
- movs r0, 0xF
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112B28 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08112FCE
- .align 2, 0
-_08112B1C: .4byte gUnknown_03004210
-_08112B20: .4byte gBattleStringsTable
-_08112B24: .4byte gDisplayedStringBattle
-_08112B28: .4byte gTasks
-_08112B2C:
- ldr r4, _08112B6C @ =gUnknown_03004210
- ldrh r0, [r4, 0x16]
- cmp r0, 0
- beq _08112B36
- b _08112FD0
-_08112B36:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08112B42
- b _08112FD0
-_08112B42:
- ldr r0, _08112B70 @ =gBattleStringsTable
- ldr r0, [r0, 0x14]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r1, _08112B74 @ =gDisplayedStringBattle
- movs r0, 0xF
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112B78 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08112FCE
- .align 2, 0
-_08112B6C: .4byte gUnknown_03004210
-_08112B70: .4byte gBattleStringsTable
-_08112B74: .4byte gDisplayedStringBattle
-_08112B78: .4byte gTasks
-_08112B7C:
- ldr r4, _08112BF8 @ =gUnknown_03004210
- ldrh r0, [r4, 0x16]
- cmp r0, 0
- beq _08112B86
- b _08112FD0
-_08112B86:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08112BC0
- ldr r0, _08112BFC @ =gBattleStringsTable
- ldr r0, [r0, 0x18]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r1, _08112C00 @ =gDisplayedStringBattle
- movs r0, 0xF
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112C04 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x5
- strh r0, [r1, 0x1A]
- movs r0, 0x9
- strh r0, [r1, 0x1C]
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- strh r0, [r1, 0x18]
-_08112BC0:
- ldr r0, _08112BF8 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- beq _08112BCA
- b _08112FD0
-_08112BCA:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08112BD6
- b _08112FD0
-_08112BD6:
- bl sub_8023A80
- ldr r0, _08112C04 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- movs r2, 0
- strh r0, [r1, 0x18]
- ldr r0, _08112C08 @ =gBattleCommunication
- strb r2, [r0, 0x1]
- bl sub_802BC6C
- b _08112FD0
- .align 2, 0
-_08112BF8: .4byte gUnknown_03004210
-_08112BFC: .4byte gBattleStringsTable
-_08112C00: .4byte gDisplayedStringBattle
-_08112C04: .4byte gTasks
-_08112C08: .4byte gBattleCommunication
-_08112C0C:
- ldr r0, _08112CA4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08112C32
- ldr r4, _08112CA8 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08112C32
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08112C32:
- ldr r0, _08112CA4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08112C58
- ldr r4, _08112CA8 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08112C58
- movs r0, 0x5
- bl PlaySE
- bl nullsub_6
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_802BC6C
-_08112C58:
- ldr r0, _08112CA4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08112CE2
- bl sub_8023AD8
- ldr r0, _08112CAC @ =gBattleStringsTable
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08112CB0 @ =gUnknown_03004210
- ldr r1, _08112CB4 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08112CA8 @ =gBattleCommunication
- ldrb r2, [r0, 0x1]
- cmp r2, 0
- beq _08112CBC
- ldr r0, _08112CB8 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1C]
- strh r0, [r1, 0x18]
- b _08112CE2
- .align 2, 0
-_08112CA4: .4byte gMain
-_08112CA8: .4byte gBattleCommunication
-_08112CAC: .4byte gBattleStringsTable
-_08112CB0: .4byte gUnknown_03004210
-_08112CB4: .4byte gDisplayedStringBattle
-_08112CB8: .4byte gTasks
-_08112CBC:
- ldr r0, _08112D28 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1A]
- strh r0, [r1, 0x18]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _08112CE2
- movs r0, 0x1
- negs r0, r0
- str r2, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_08112CE2:
- ldr r0, _08112D2C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08112CF0
- b _08112FD0
-_08112CF0:
- bl sub_8023AD8
- ldr r0, _08112D30 @ =gBattleStringsTable
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08112D34 @ =gUnknown_03004210
- ldr r1, _08112D38 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08112D28 @ =gTasks
- mov r2, r8
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x1C]
- strh r1, [r0, 0x18]
- b _08112FD0
- .align 2, 0
-_08112D28: .4byte gTasks
-_08112D2C: .4byte gMain
-_08112D30: .4byte gBattleStringsTable
-_08112D34: .4byte gUnknown_03004210
-_08112D38: .4byte gDisplayedStringBattle
-_08112D3C:
- ldr r0, _08112D78 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08112D4A
- b _08112FD0
-_08112D4A:
- ldr r0, _08112D7C @ =gPlayerParty
- mov r3, r8
- adds r5, r3, r7
- lsls r5, 3
- adds r5, r6
- ldrh r1, [r5, 0x20]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _08112D80 @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _08112D84 @ =CB2_EvolutionSceneLoadGraphics
- ldr r4, _08112D88 @ =word_2024E82
- ldrh r4, [r4]
- str r4, [sp]
- bl sub_809D9F0
- ldrh r0, [r5, 0x18]
- adds r0, 0x1
- strh r0, [r5, 0x18]
- b _08112FD0
- .align 2, 0
-_08112D78: .4byte gPaletteFade
-_08112D7C: .4byte gPlayerParty
-_08112D80: .4byte gPlayerPartyCount
-_08112D84: .4byte CB2_EvolutionSceneLoadGraphics
-_08112D88: .4byte word_2024E82
-_08112D8C:
- ldr r0, _08112DC0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08112D9A
- b _08112FD0
-_08112D9A:
- ldr r1, [r4, 0x4]
- ldr r0, _08112DC4 @ =CB2_EvolutionSceneUpdate_0
- cmp r1, r0
- beq _08112DA4
- b _08112FD0
-_08112DA4:
- bl sub_809FA30
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x4
- bne _08112DCC
- ldr r0, _08112DC8 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x9
- b _08112FCE
- .align 2, 0
-_08112DC0: .4byte gPaletteFade
-_08112DC4: .4byte CB2_EvolutionSceneUpdate_0
-_08112DC8: .4byte gTasks
-_08112DCC:
- adds r1, r6, 0
- adds r1, 0xD
- mov r0, r9
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl IsHMMove2
- cmp r0, 0
- beq _08112E24
- ldr r0, _08112E10 @ =gBattleStringsTable
- ldr r3, _08112E14 @ =0x000004cc
- adds r0, r3
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08112E18 @ =gUnknown_03004210
- ldr r1, _08112E1C @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08112E20 @ =gTasks
- mov r2, r8
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0xB
- strh r1, [r0, 0x18]
- b _08112FD0
- .align 2, 0
-_08112E10: .4byte gBattleStringsTable
-_08112E14: .4byte 0x000004cc
-_08112E18: .4byte gUnknown_03004210
-_08112E1C: .4byte gDisplayedStringBattle
-_08112E20: .4byte gTasks
-_08112E24:
- ldr r1, _08112E80 @ =gBattleTextBuff2
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- strb r4, [r1, 0x2]
- lsrs r0, r4, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- lsls r4, r6, 24
- lsrs r4, 24
- mov r0, r9
- adds r1, r4, 0
- bl RemoveMonPPBonus
- ldr r0, _08112E84 @ =word_2024E82
- ldrh r1, [r0]
- mov r0, r9
- adds r2, r4, 0
- bl SetMonMoveSlot
- ldr r0, _08112E88 @ =gBattleStringsTable
- movs r3, 0xCF
- lsls r3, 2
- adds r0, r3
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08112E8C @ =gUnknown_03004210
- ldr r1, _08112E90 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112E94 @ =gTasks
- mov r2, r8
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08112FCE
- .align 2, 0
-_08112E80: .4byte gBattleTextBuff2
-_08112E84: .4byte word_2024E82
-_08112E88: .4byte gBattleStringsTable
-_08112E8C: .4byte gUnknown_03004210
-_08112E90: .4byte gDisplayedStringBattle
-_08112E94: .4byte gTasks
-_08112E98:
- ldr r4, _08112ED8 @ =gUnknown_03004210
- ldrh r0, [r4, 0x16]
- cmp r0, 0
- beq _08112EA2
- b _08112FD0
-_08112EA2:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08112EAE
- b _08112FD0
-_08112EAE:
- ldr r0, _08112EDC @ =gBattleStringsTable
- ldr r0, [r0, 0x1C]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r1, _08112EE0 @ =gDisplayedStringBattle
- movs r0, 0xF
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08112EE4 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08112FCE
- .align 2, 0
-_08112ED8: .4byte gUnknown_03004210
-_08112EDC: .4byte gBattleStringsTable
-_08112EE0: .4byte gDisplayedStringBattle
-_08112EE4: .4byte gTasks
-_08112EE8:
- ldr r4, _08112F28 @ =gUnknown_03004210
- ldrh r0, [r4, 0x16]
- cmp r0, 0
- bne _08112FD0
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08112FD0
- ldr r0, _08112F2C @ =gBattleStringsTable
- movs r1, 0xD0
- lsls r1, 2
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r1, _08112F30 @ =gDisplayedStringBattle
- movs r0, 0xF
- str r0, [sp]
- adds r0, r4, 0
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08112F34 @ =gTasks
- mov r2, r8
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0x13
- strh r1, [r0, 0x8]
- b _08112FD0
- .align 2, 0
-_08112F28: .4byte gUnknown_03004210
-_08112F2C: .4byte gBattleStringsTable
-_08112F30: .4byte gDisplayedStringBattle
-_08112F34: .4byte gTasks
-_08112F38:
- ldr r0, _08112F68 @ =gBattleStringsTable
- ldr r0, [r0, 0x20]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08112F6C @ =gUnknown_03004210
- ldr r1, _08112F70 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08112F74 @ =gTasks
- mov r3, r8
- adds r0, r3, r7
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0xA
- strh r1, [r0, 0x1A]
- strh r2, [r0, 0x1C]
- movs r1, 0x3
- strh r1, [r0, 0x18]
- b _08112FD0
- .align 2, 0
-_08112F68: .4byte gBattleStringsTable
-_08112F6C: .4byte gUnknown_03004210
-_08112F70: .4byte gDisplayedStringBattle
-_08112F74: .4byte gTasks
-_08112F78:
- ldr r0, _08112FA0 @ =gBattleStringsTable
- ldr r0, [r0, 0x24]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08112FA4 @ =gUnknown_03004210
- ldr r1, _08112FA8 @ =gDisplayedStringBattle
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x90
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08112FAC @ =gTasks
- mov r2, r8
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
-_08112F9A:
- movs r1, 0xE
- strh r1, [r0, 0x8]
- b _08112FD0
- .align 2, 0
-_08112FA0: .4byte gBattleStringsTable
-_08112FA4: .4byte gUnknown_03004210
-_08112FA8: .4byte gDisplayedStringBattle
-_08112FAC: .4byte gTasks
-_08112FB0:
- ldr r0, _08112FE0 @ =gUnknown_03004210
- ldrh r0, [r0, 0x16]
- cmp r0, 0
- bne _08112FD0
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08112FD0
- ldr r0, _08112FE4 @ =gTasks
- mov r3, r8
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x5
-_08112FCE:
- strh r0, [r1, 0x18]
-_08112FD0:
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08112FE0: .4byte gUnknown_03004210
-_08112FE4: .4byte gTasks
- thumb_func_end Task_EvolutionScene
-
- thumb_func_start Task_TradeEvolutionScene
-Task_TradeEvolutionScene: @ 8112FE8
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x18
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, _0811302C @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r2
- movs r3, 0xA
- ldrsh r0, [r1, r3]
- mov r8, r0
- movs r3, 0xC
- ldrsh r0, [r1, r3]
- lsls r0, 16
- mov r3, r8
- orrs r3, r0
- mov r8, r3
- movs r3, 0x8
- ldrsh r0, [r1, r3]
- adds r6, r2, 0
- cmp r0, 0x11
- bls _08113020
- bl _08113B3A
-_08113020:
- lsls r0, 2
- ldr r1, _08113030 @ =_08113034
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0811302C: .4byte gTasks
-_08113030: .4byte _08113034
- .align 2, 0
-_08113034:
- .4byte _0811307C
- .4byte _081130B8
- .4byte _081130DC
- .4byte _0811310C
- .4byte _0811314C
- .4byte _0811318C
- .4byte _081131C8
- .4byte _081131F4
- .4byte _0811322C
- .4byte _08113248
- .4byte _08113274
- .4byte _081132A8
- .4byte _081132F8
- .4byte _081133A8
- .4byte _0811346C
- .4byte _08113490
- .4byte _081134F8
- .4byte _08113538
-_0811307C:
- ldr r4, _081130A8 @ =gStringVar4
- ldr r1, _081130AC @ =gUnknown_08400C4A
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _081130B0 @ =gUnknown_03004828
- ldr r1, [r0]
- adds r0, r1, 0x4
- adds r1, 0x34
- ldrb r2, [r1]
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _081130B4 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- b _08113298
- .align 2, 0
-_081130A8: .4byte gStringVar4
-_081130AC: .4byte gUnknown_08400C4A
-_081130B0: .4byte gUnknown_03004828
-_081130B4: .4byte gTasks
-_081130B8:
- ldr r0, _081130D8 @ =gUnknown_03004828
- ldr r0, [r0]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _081130C6
- bl _08113B3A
-_081130C6:
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r6
- ldrh r0, [r4, 0xE]
- movs r1, 0
- bl PlayCry1
- b _081132E2
- .align 2, 0
-_081130D8: .4byte gUnknown_03004828
-_081130DC:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _081130EA
- bl _08113B3A
-_081130EA:
- ldr r0, _08113104 @ =0x00000179
- bl m4aSongNumStop
- movs r0, 0xBC
- lsls r0, 1
- bl PlaySE
- ldr r1, _08113108 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- b _08113298
- .align 2, 0
-_08113104: .4byte 0x00000179
-_08113108: .4byte gTasks
-_0811310C:
- bl IsSEPlaying
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _0811311C
- bl _08113B3A
-_0811311C:
- ldr r0, _08113144 @ =0x00000179
- bl PlayBGM
- ldr r1, _08113148 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- str r5, [sp]
- movs r0, 0x1C
- movs r1, 0x4
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- bl _08113B3A
- .align 2, 0
-_08113144: .4byte 0x00000179
-_08113148: .4byte gTasks
-_0811314C:
- ldr r0, _08113180 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0811315C
- bl _08113B3A
-_0811315C:
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- movs r0, 0x11
- bl sub_8149970
- ldr r1, _08113184 @ =gBattleCommunication
- strb r0, [r1, 0x2]
- ldr r1, _08113188 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- b _08113298
- .align 2, 0
-_08113180: .4byte gPaletteFade
-_08113184: .4byte gBattleCommunication
-_08113188: .4byte gTasks
-_0811318C:
- ldr r4, _081131C0 @ =gBattleCommunication
- ldrb r0, [r4, 0x2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _081131A2
- bl _08113B3A
-_081131A2:
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r6
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- ldr r1, _081131C4 @ =0x02014800
- movs r0, 0x1
- strb r0, [r1, 0x3]
- bl sub_8149A90
- strb r0, [r4, 0x2]
- bl _08113B3A
- .align 2, 0
-_081131C0: .4byte gBattleCommunication
-_081131C4: .4byte 0x02014800
-_081131C8:
- ldr r4, _081131EC @ =gBattleCommunication
- ldrb r0, [r4, 0x2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _081131DE
- bl _08113B3A
-_081131DE:
- ldr r1, _081131F0 @ =0x02014800
- ldrb r0, [r1]
- ldrb r1, [r1, 0x1]
- bl sub_8149E7C
- strb r0, [r4, 0x2]
- b _08113290
- .align 2, 0
-_081131EC: .4byte gBattleCommunication
-_081131F0: .4byte 0x02014800
-_081131F4:
- ldr r1, _08113224 @ =0x02014800
- ldrb r0, [r1, 0x3]
- subs r0, 0x1
- strb r0, [r1, 0x3]
- lsls r0, 24
- cmp r0, 0
- beq _08113206
- bl _08113B3A
-_08113206:
- movs r0, 0x3
- strb r0, [r1, 0x3]
- ldr r0, _08113228 @ =gBattleCommunication
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _08113220
- bl _08113B3A
-_08113220:
- b _08113290
- .align 2, 0
-_08113224: .4byte 0x02014800
-_08113228: .4byte gBattleCommunication
-_0811322C:
- bl sub_8149B44
- ldr r1, _08113240 @ =gBattleCommunication
- strb r0, [r1, 0x2]
- ldr r1, _08113244 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- b _08113298
- .align 2, 0
-_08113240: .4byte gBattleCommunication
-_08113244: .4byte gTasks
-_08113248:
- ldr r5, _08113270 @ =gBattleCommunication
- ldrb r0, [r5, 0x2]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r6
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _0811325E
- bl _08113B3A
-_0811325E:
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r6
- ldrh r0, [r4, 0x10]
- bl sub_8149D5C
- strb r0, [r5, 0x2]
- b _081132E2
- .align 2, 0
-_08113270: .4byte gBattleCommunication
-_08113274:
- ldr r0, _081132A4 @ =gBattleCommunication
- ldrb r1, [r0, 0x2]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r0, r6
- ldrb r0, [r0, 0x4]
- cmp r0, 0
- beq _0811328A
- bl _08113B3A
-_0811328A:
- movs r0, 0x21
- bl PlaySE
-_08113290:
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r6
-_08113298:
- ldrh r1, [r0, 0x8]
- adds r1, 0x1
- strh r1, [r0, 0x8]
- bl _08113B3A
- .align 2, 0
-_081132A4: .4byte gBattleCommunication
-_081132A8:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _081132B6
- bl _08113B3A
-_081132B6:
- ldr r0, _081132EC @ =gTasks
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r4, r0
- ldrh r0, [r4, 0x10]
- movs r1, 0
- bl PlayCry1
- ldr r0, _081132F0 @ =gPlttBufferUnfaded + 0x40
- ldr r1, _081132F4 @ =0x02009000
- movs r2, 0x60
- bl memcpy
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_081132E2:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- bl _08113B3A
- .align 2, 0
-_081132EC: .4byte gTasks
-_081132F0: .4byte gPlttBufferUnfaded + 0x40
-_081132F4: .4byte 0x02009000
-_081132F8:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _08113306
- bl _08113B3A
-_08113306:
- ldr r0, _08113390 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08113316
- bl _08113B3A
-_08113316:
- ldr r4, _08113394 @ =gStringVar4
- ldr r1, _08113398 @ =gUnknown_08400C60
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r0, _0811339C @ =gUnknown_03004828
- ldr r1, [r0]
- adds r0, r1, 0x4
- adds r1, 0x34
- ldrb r2, [r1]
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _081133A0 @ =0x00000173
- bl PlayFanfare
- ldr r2, _081133A4 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r4, r1, r2
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- adds r2, r1
- adds r2, 0x10
- mov r0, r8
- movs r1, 0xB
- bl SetMonData
- mov r0, r8
- bl CalculateMonStats
- ldrh r1, [r4, 0xE]
- ldrh r2, [r4, 0x10]
- mov r0, r8
- bl EvolutionRenameMon
- ldrh r0, [r4, 0x10]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x2
- bl GetNationalPokedexFlag
- ldrh r0, [r4, 0x10]
- bl SpeciesToNationalPokedexNum
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- bl GetNationalPokedexFlag
- movs r0, 0xE
- bl IncrementGameStat
- b _08113B3A
- .align 2, 0
-_08113390: .4byte gPaletteFade
-_08113394: .4byte gStringVar4
-_08113398: .4byte gUnknown_08400C60
-_0811339C: .4byte gUnknown_03004828
-_081133A0: .4byte 0x00000173
-_081133A4: .4byte gTasks
-_081133A8:
- ldr r0, _08113410 @ =gUnknown_03004828
- ldr r0, [r0]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _081133B4
- b _08113B3A
-_081133B4:
- bl IsFanfareTaskInactive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _081133C2
- b _08113B3A
-_081133C2:
- ldr r1, _08113414 @ =gTasks
- lsls r4, r7, 2
- adds r0, r4, r7
- lsls r0, 3
- adds r5, r0, r1
- ldrb r1, [r5, 0x14]
- mov r0, r8
- bl sub_803B7C8
- lsls r0, 16
- lsrs r6, r0, 16
- mov r9, r4
- cmp r6, 0
- beq _08113434
- movs r3, 0x1E
- ldrsh r2, [r5, r3]
- cmp r2, 0
- bne _08113434
- ldrh r1, [r5, 0x12]
- movs r0, 0x80
- orrs r0, r1
- strh r0, [r5, 0x12]
- strh r2, [r5, 0x14]
- strh r2, [r5, 0x18]
- mov r0, r8
- movs r1, 0x2
- add r2, sp, 0x4
- bl GetMonData
- ldr r0, _08113418 @ =gBattleTextBuff1
- add r1, sp, 0x4
- bl StringCopy10
- ldr r0, _0811341C @ =0x0000ffff
- cmp r6, r0
- bne _08113420
- movs r0, 0x11
- strh r0, [r5, 0x8]
- b _08113B3A
- .align 2, 0
-_08113410: .4byte gUnknown_03004828
-_08113414: .4byte gTasks
-_08113418: .4byte gBattleTextBuff1
-_0811341C: .4byte 0x0000ffff
-_08113420:
- ldr r0, _08113430 @ =0x0000fffe
- cmp r6, r0
- bne _08113428
- b _08113B3A
-_08113428:
- movs r0, 0xF
- strh r0, [r5, 0x8]
- b _08113B3A
- .align 2, 0
-_08113430: .4byte 0x0000fffe
-_08113434:
- ldr r0, _0811345C @ =0x00000179
- bl PlayBGM
- ldr r0, _08113460 @ =gUnknown_03004828
- ldr r2, [r0]
- adds r0, r2, 0x4
- ldr r1, _08113464 @ =gOtherText_LinkStandby2
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08113468 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- b _081134DC
- .align 2, 0
-_0811345C: .4byte 0x00000179
-_08113460: .4byte gUnknown_03004828
-_08113464: .4byte gOtherText_LinkStandby2
-_08113468: .4byte gTasks
-_0811346C:
- ldr r0, _08113488 @ =gUnknown_03004828
- ldr r0, [r0]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _08113478
- b _08113B3A
-_08113478:
- adds r0, r7, 0
- bl DestroyTask
- ldr r0, _0811348C @ =gUnknown_03005E94
- ldr r0, [r0]
- bl SetMainCallback2
- b _08113B3A
- .align 2, 0
-_08113488: .4byte gUnknown_03004828
-_0811348C: .4byte gUnknown_03005E94
-_08113490:
- ldr r4, _081134E4 @ =gUnknown_03004828
- ldr r0, [r4]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _0811349C
- b _08113B3A
-_0811349C:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _081134A8
- b _08113B3A
-_081134A8:
- bl sub_8024CEC
- ldr r0, _081134E8 @ =0x0000016f
- bl PlayFanfare
- ldr r0, _081134EC @ =gBattleStringsTable
- ldr r0, [r0, 0xC]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _081134F0 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _081134F4 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x40
- strh r0, [r1, 0x14]
-_081134DC:
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- b _08113B3A
- .align 2, 0
-_081134E4: .4byte gUnknown_03004828
-_081134E8: .4byte 0x0000016f
-_081134EC: .4byte gBattleStringsTable
-_081134F0: .4byte gDisplayedStringBattle
-_081134F4: .4byte gTasks
-_081134F8:
- ldr r0, _08113530 @ =gUnknown_03004828
- ldr r0, [r0]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _08113504
- b _08113B3A
-_08113504:
- bl IsFanfareTaskInactive
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08113512
- b _08113B3A
-_08113512:
- ldr r0, _08113534 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x14]
- subs r0, 0x1
- strh r0, [r1, 0x14]
- lsls r0, 16
- cmp r0, 0
- beq _0811352A
- b _08113B3A
-_0811352A:
- movs r0, 0xD
- strh r0, [r1, 0x8]
- b _08113B3A
- .align 2, 0
-_08113530: .4byte gUnknown_03004828
-_08113534: .4byte gTasks
-_08113538:
- lsls r1, r7, 2
- adds r0, r1, r7
- lsls r0, 3
- adds r0, r6
- movs r3, 0x18
- ldrsh r0, [r0, r3]
- mov r9, r1
- cmp r0, 0xB
- bls _0811354C
- b _08113B3A
-_0811354C:
- lsls r0, 2
- ldr r1, _08113558 @ =_0811355C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08113558: .4byte _0811355C
- .align 2, 0
-_0811355C:
- .4byte _0811358C
- .4byte _081135E4
- .4byte _08113638
- .4byte _08113682
- .4byte _0811371C
- .4byte _0811387C
- .4byte _081138CC
- .4byte _081139E8
- .4byte _08113A3C
- .4byte _08113A90
- .4byte _08113AD8
- .4byte _08113B18
-_0811358C:
- ldr r4, _081135D4 @ =gUnknown_03004828
- ldr r0, [r4]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _08113598
- b _08113B3A
-_08113598:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _081135A4
- b _08113B3A
-_081135A4:
- bl sub_8024CEC
- ldr r0, _081135D8 @ =gBattleStringsTable
- ldr r0, [r0, 0x10]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _081135DC @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _081135E0 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08113B38
- .align 2, 0
-_081135D4: .4byte gUnknown_03004828
-_081135D8: .4byte gBattleStringsTable
-_081135DC: .4byte gDisplayedStringBattle
-_081135E0: .4byte gTasks
-_081135E4:
- ldr r4, _08113628 @ =gUnknown_03004828
- ldr r0, [r4]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _081135F0
- b _08113B3A
-_081135F0:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _081135FC
- b _08113B3A
-_081135FC:
- ldr r0, _0811362C @ =gBattleStringsTable
- ldr r0, [r0, 0x14]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _08113630 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08113634 @ =gTasks
- mov r3, r9
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08113B38
- .align 2, 0
-_08113628: .4byte gUnknown_03004828
-_0811362C: .4byte gBattleStringsTable
-_08113630: .4byte gDisplayedStringBattle
-_08113634: .4byte gTasks
-_08113638:
- ldr r4, _081136FC @ =gUnknown_03004828
- ldr r0, [r4]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _08113644
- b _08113B3A
-_08113644:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08113682
- ldr r0, _08113700 @ =gBattleStringsTable
- ldr r0, [r0, 0x18]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _08113704 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08113708 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x5
- strh r0, [r1, 0x1A]
- movs r0, 0x9
- strh r0, [r1, 0x1C]
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- strh r0, [r1, 0x18]
-_08113682:
- ldr r5, _081136FC @ =gUnknown_03004828
- ldr r0, [r5]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _0811368E
- b _08113B3A
-_0811368E:
- bl IsSEPlaying
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0
- beq _0811369C
- b _08113B3A
-_0811369C:
- ldr r0, [r5]
- adds r0, 0x4
- movs r1, 0xD
- str r1, [sp]
- movs r1, 0x18
- movs r2, 0x8
- movs r3, 0x1D
- bl DrawTextWindow
- ldr r4, _0811370C @ =gBattleCommunication
- strb r6, [r4, 0x1]
- ldr r2, [r5]
- adds r0, r2, 0x4
- ldr r1, _08113710 @ =gOtherText_YesNoAndPlayer
- adds r2, 0x34
- ldrb r2, [r2]
- adds r2, 0x80
- movs r3, 0x9
- str r3, [sp]
- movs r3, 0x19
- bl InitWindow
- ldr r0, [r5]
- adds r0, 0x4
- bl sub_8002F44
- ldr r1, _08113714 @ =0x0000ffff
- ldr r3, _08113718 @ =0x00002d9f
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0
- movs r2, 0xC
- bl sub_814A5C0
- bl sub_81150D8
- ldr r0, _08113708 @ =gTasks
- mov r3, r9
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- movs r2, 0
- strh r0, [r1, 0x18]
- strb r2, [r4, 0x1]
- b _08113B3A
- .align 2, 0
-_081136FC: .4byte gUnknown_03004828
-_08113700: .4byte gBattleStringsTable
-_08113704: .4byte gDisplayedStringBattle
-_08113708: .4byte gTasks
-_0811370C: .4byte gBattleCommunication
-_08113710: .4byte gOtherText_YesNoAndPlayer
-_08113714: .4byte 0x0000ffff
-_08113718: .4byte 0x00002d9f
-_0811371C:
- ldr r0, _081137CC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08113742
- ldr r4, _081137D0 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _08113742
- movs r0, 0x5
- bl PlaySE
- bl HBlankCB_TradeEvolutionScene
- movs r0, 0
- strb r0, [r4, 0x1]
- bl sub_81150D8
-_08113742:
- ldr r0, _081137CC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08113768
- ldr r4, _081137D0 @ =gBattleCommunication
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- bne _08113768
- movs r0, 0x5
- bl PlaySE
- bl HBlankCB_TradeEvolutionScene
- movs r0, 0x1
- strb r0, [r4, 0x1]
- bl sub_81150D8
-_08113768:
- ldr r0, _081137CC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811380A
- ldr r4, _081137D4 @ =gUnknown_03004828
- ldr r0, [r4]
- adds r0, 0x4
- movs r1, 0xD
- str r1, [sp]
- movs r1, 0x18
- movs r2, 0x8
- movs r3, 0x1D
- bl ZeroFillWindowRect
- bl DestroyMenuCursor
- ldr r0, _081137D8 @ =gBattleStringsTable
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _081137DC @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- movs r0, 0x5
- bl PlaySE
- ldr r0, _081137D0 @ =gBattleCommunication
- ldrb r2, [r0, 0x1]
- cmp r2, 0
- beq _081137E4
- ldr r0, _081137E0 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1C]
- strh r0, [r1, 0x18]
- b _0811380A
- .align 2, 0
-_081137CC: .4byte gMain
-_081137D0: .4byte gBattleCommunication
-_081137D4: .4byte gUnknown_03004828
-_081137D8: .4byte gBattleStringsTable
-_081137DC: .4byte gDisplayedStringBattle
-_081137E0: .4byte gTasks
-_081137E4:
- ldr r0, _08113868 @ =gTasks
- mov r3, r9
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x1A]
- strh r0, [r1, 0x18]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x5
- bne _0811380A
- movs r0, 0x1
- negs r0, r0
- str r2, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0811380A:
- ldr r0, _0811386C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _08113818
- b _08113B3A
-_08113818:
- ldr r4, _08113870 @ =gUnknown_03004828
- ldr r0, [r4]
- adds r0, 0x4
- movs r1, 0xD
- str r1, [sp]
- movs r1, 0x18
- movs r2, 0x8
- movs r3, 0x1D
- bl ZeroFillWindowRect
- bl DestroyMenuCursor
- ldr r0, _08113874 @ =gBattleStringsTable
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _08113878 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08113868 @ =gTasks
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0x1C]
- strh r1, [r0, 0x18]
- b _08113B3A
- .align 2, 0
-_08113868: .4byte gTasks
-_0811386C: .4byte gMain
-_08113870: .4byte gUnknown_03004828
-_08113874: .4byte gBattleStringsTable
-_08113878: .4byte gDisplayedStringBattle
-_0811387C:
- ldr r0, _081138B8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0811388A
- b _08113B3A
-_0811388A:
- ldr r0, _081138BC @ =gPlayerParty
- mov r3, r9
- adds r5, r3, r7
- lsls r5, 3
- adds r5, r6
- ldrh r1, [r5, 0x20]
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _081138C0 @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _081138C4 @ =CB2_TradeEvolutionSceneLoadGraphics
- ldr r4, _081138C8 @ =word_2024E82
- ldrh r4, [r4]
- str r4, [sp]
- bl sub_809D9F0
- ldrh r0, [r5, 0x18]
- adds r0, 0x1
- strh r0, [r5, 0x18]
- b _08113B3A
- .align 2, 0
-_081138B8: .4byte gPaletteFade
-_081138BC: .4byte gPlayerParty
-_081138C0: .4byte gPlayerPartyCount
-_081138C4: .4byte CB2_TradeEvolutionSceneLoadGraphics
-_081138C8: .4byte word_2024E82
-_081138CC:
- ldr r0, _08113900 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081138DA
- b _08113B3A
-_081138DA:
- ldr r0, _08113904 @ =gMain
- ldr r1, [r0, 0x4]
- ldr r0, _08113908 @ =CB2_EvolutionSceneUpdate_1
- cmp r1, r0
- beq _081138E6
- b _08113B3A
-_081138E6:
- bl sub_809FA30
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x4
- bne _08113910
- ldr r0, _0811390C @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x9
- b _08113B38
- .align 2, 0
-_08113900: .4byte gPaletteFade
-_08113904: .4byte gMain
-_08113908: .4byte CB2_EvolutionSceneUpdate_1
-_0811390C: .4byte gTasks
-_08113910:
- adds r1, r6, 0
- adds r1, 0xD
- mov r0, r8
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r4, 0
- bl IsHMMove2
- cmp r0, 0
- beq _08113970
- ldr r0, _0811395C @ =gBattleStringsTable
- ldr r3, _08113960 @ =0x000004cc
- adds r0, r3
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08113964 @ =gUnknown_03004828
- ldr r2, [r0]
- adds r0, r2, 0x4
- ldr r1, _08113968 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _0811396C @ =gTasks
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0xB
- strh r1, [r0, 0x18]
- b _08113B3A
- .align 2, 0
-_0811395C: .4byte gBattleStringsTable
-_08113960: .4byte 0x000004cc
-_08113964: .4byte gUnknown_03004828
-_08113968: .4byte gDisplayedStringBattle
-_0811396C: .4byte gTasks
-_08113970:
- ldr r1, _081139D0 @ =gBattleTextBuff2
- movs r0, 0xFD
- strb r0, [r1]
- movs r0, 0x2
- strb r0, [r1, 0x1]
- strb r4, [r1, 0x2]
- lsrs r0, r4, 8
- strb r0, [r1, 0x3]
- movs r0, 0xFF
- strb r0, [r1, 0x4]
- lsls r4, r6, 24
- lsrs r4, 24
- mov r0, r8
- adds r1, r4, 0
- bl RemoveMonPPBonus
- ldr r0, _081139D4 @ =word_2024E82
- ldrh r1, [r0]
- mov r0, r8
- adds r2, r4, 0
- bl SetMonMoveSlot
- ldr r0, _081139D8 @ =gBattleStringsTable
- movs r3, 0xCF
- lsls r3, 2
- adds r0, r3
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _081139DC @ =gUnknown_03004828
- ldr r2, [r0]
- adds r0, r2, 0x4
- ldr r1, _081139E0 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _081139E4 @ =gTasks
- mov r2, r9
- adds r1, r2, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08113B38
- .align 2, 0
-_081139D0: .4byte gBattleTextBuff2
-_081139D4: .4byte word_2024E82
-_081139D8: .4byte gBattleStringsTable
-_081139DC: .4byte gUnknown_03004828
-_081139E0: .4byte gDisplayedStringBattle
-_081139E4: .4byte gTasks
-_081139E8:
- ldr r4, _08113A2C @ =gUnknown_03004828
- ldr r0, [r4]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- beq _081139F4
- b _08113B3A
-_081139F4:
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- beq _08113A00
- b _08113B3A
-_08113A00:
- ldr r0, _08113A30 @ =gBattleStringsTable
- ldr r0, [r0, 0x1C]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _08113A34 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r0, _08113A38 @ =gTasks
- mov r3, r9
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x18]
- adds r0, 0x1
- b _08113B38
- .align 2, 0
-_08113A2C: .4byte gUnknown_03004828
-_08113A30: .4byte gBattleStringsTable
-_08113A34: .4byte gDisplayedStringBattle
-_08113A38: .4byte gTasks
-_08113A3C:
- ldr r4, _08113A80 @ =gUnknown_03004828
- ldr r0, [r4]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- bne _08113B3A
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08113B3A
- ldr r0, _08113A84 @ =gBattleStringsTable
- movs r1, 0xD0
- lsls r1, 2
- adds r0, r1
- ldr r0, [r0]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _08113A88 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r4, 0xF
- str r4, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08113A8C @ =gTasks
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- strh r4, [r0, 0x8]
- b _08113B3A
- .align 2, 0
-_08113A80: .4byte gUnknown_03004828
-_08113A84: .4byte gBattleStringsTable
-_08113A88: .4byte gDisplayedStringBattle
-_08113A8C: .4byte gTasks
-_08113A90:
- ldr r0, _08113AC8 @ =gBattleStringsTable
- ldr r0, [r0, 0x20]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08113ACC @ =gUnknown_03004828
- ldr r2, [r0]
- adds r0, r2, 0x4
- ldr r1, _08113AD0 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08113AD4 @ =gTasks
- mov r3, r9
- adds r0, r3, r7
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0xA
- strh r1, [r0, 0x1A]
- strh r2, [r0, 0x1C]
- movs r1, 0x3
- strh r1, [r0, 0x18]
- b _08113B3A
- .align 2, 0
-_08113AC8: .4byte gBattleStringsTable
-_08113ACC: .4byte gUnknown_03004828
-_08113AD0: .4byte gDisplayedStringBattle
-_08113AD4: .4byte gTasks
-_08113AD8:
- ldr r0, _08113B08 @ =gBattleStringsTable
- ldr r0, [r0, 0x24]
- bl StrCpyDecodeToDisplayedStringBattle
- ldr r0, _08113B0C @ =gUnknown_03004828
- ldr r2, [r0]
- adds r0, r2, 0x4
- ldr r1, _08113B10 @ =gDisplayedStringBattle
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
- movs r3, 0x2
- bl sub_8002EB0
- ldr r1, _08113B14 @ =gTasks
- mov r2, r9
- adds r0, r2, r7
- lsls r0, 3
- adds r0, r1
- movs r1, 0xD
- strh r1, [r0, 0x8]
- b _08113B3A
- .align 2, 0
-_08113B08: .4byte gBattleStringsTable
-_08113B0C: .4byte gUnknown_03004828
-_08113B10: .4byte gDisplayedStringBattle
-_08113B14: .4byte gTasks
-_08113B18:
- ldr r0, _08113B48 @ =gUnknown_03004828
- ldr r0, [r0]
- ldrh r0, [r0, 0x1A]
- cmp r0, 0
- bne _08113B3A
- bl IsSEPlaying
- lsls r0, 24
- cmp r0, 0
- bne _08113B3A
- ldr r0, _08113B4C @ =gTasks
- mov r3, r9
- adds r1, r3, r7
- lsls r1, 3
- adds r1, r0
- movs r0, 0x5
-_08113B38:
- strh r0, [r1, 0x18]
-_08113B3A:
- add sp, 0x18
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08113B48: .4byte gUnknown_03004828
-_08113B4C: .4byte gTasks
- thumb_func_end Task_TradeEvolutionScene
-
- thumb_func_start unref_sub_8113B50
-unref_sub_8113B50: @ 8113B50
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x3C
- str r0, [sp]
- str r1, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0xC]
- movs r1, 0
- str r1, [sp, 0x10]
- movs r2, 0
- str r2, [sp, 0x8]
- ldr r3, _08113C60 @ =0x02014800
- mov r12, r3
- ldr r4, _08113C64 @ =0x000018c4
- add r4, r12
- mov r10, r4
- ldr r5, _08113C68 @ =0x000020c4
- add r5, r12
- mov r8, r5
-_08113B7C:
- adds r0, r3, 0
- adds r0, 0x84
- ldr r1, [sp, 0x8]
- adds r0, r1, r0
- strb r2, [r0]
- adds r0, r3, 0x4
- adds r0, r1, r0
- strb r2, [r0]
- ldr r4, _08113C6C @ =0x02014844
- adds r0, r1, r4
- strb r2, [r0]
- movs r6, 0
- lsls r1, 5
- mov r9, r1
- ldr r5, [sp, 0x8]
- lsls r4, r5, 6
-_08113B9C:
- mov r0, r9
- adds r1, r6, r0
- ldr r5, _08113C70 @ =0x020158c4
- adds r0, r1, r5
- strb r2, [r0]
- mov r5, r10
- adds r0, r1, r5
- strb r2, [r0]
- mov r5, r8
- adds r0, r1, r5
- strb r2, [r0]
- ldr r5, _08113C74 @ =0x020170c4
- adds r0, r1, r5
- strb r2, [r0]
- adds r7, r3, 0
- adds r7, 0xC4
- adds r0, r1, r7
- strb r2, [r0]
- ldr r5, _08113C78 @ =0x000008c4
- adds r0, r3, r5
- adds r0, r1, r0
- strb r2, [r0]
- ldr r5, _08113C7C @ =0x000030c4
- adds r0, r3, r5
- adds r0, r1, r0
- strb r2, [r0]
- ldr r5, _08113C80 @ =0x000038c4
- adds r0, r3, r5
- adds r1, r0
- strb r2, [r1]
- lsls r1, r6, 1
- adds r1, r4
- ldr r5, _08113C84 @ =0x000060c4
- adds r0, r3, r5
- adds r0, r1, r0
- strh r2, [r0]
- ldr r5, _08113C88 @ =0x000070c4
- adds r0, r3, r5
- adds r0, r1, r0
- strh r2, [r0]
- ldr r5, _08113C8C @ =0x000080c4
- adds r0, r3, r5
- adds r0, r1, r0
- strh r2, [r0]
- ldr r5, _08113C90 @ =0x000090c4
- adds r0, r3, r5
- adds r1, r0
- strh r2, [r1]
- adds r6, 0x1
- cmp r6, 0x1F
- ble _08113B9C
- ldr r0, [sp, 0x8]
- adds r0, 0x1
- str r0, [sp, 0x8]
- cmp r0, 0x3F
- ble _08113B7C
- ldr r1, _08113C94 @ =0x0000a0c4
- add r1, r12
- movs r0, 0x40
- strb r0, [r1]
- movs r1, 0
- mov r8, r1
- movs r2, 0
- str r2, [sp, 0x8]
- movs r3, 0x80
- lsls r3, 5
- adds r3, r7
- mov r12, r3
- movs r4, 0xC0
- lsls r4, 5
- adds r4, r7
- mov r9, r4
- movs r5, 0
- adds r4, r7, 0
- subs r4, 0xC0
-_08113C32:
- movs r3, 0
- ldr r2, [sp]
- add r2, r8
- movs r6, 0
- ldr r0, [sp, 0x8]
- adds r0, 0x1
- str r0, [sp, 0x30]
- ldr r1, [sp, 0x8]
- lsls r1, 7
- mov r10, r1
- movs r7, 0x1
- negs r7, r7
-_08113C4A:
- asrs r0, r6, 1
- lsls r0, 2
- add r0, r10
- ldr r1, _08113C98 @ =0x020188c4
- adds r0, r1
- str r2, [r0]
- cmp r3, 0
- beq _08113C9C
- cmp r3, 0x1
- beq _08113CC6
- b _08113CF4
- .align 2, 0
-_08113C60: .4byte 0x02014800
-_08113C64: .4byte 0x000018c4
-_08113C68: .4byte 0x000020c4
-_08113C6C: .4byte 0x02014844
-_08113C70: .4byte 0x020158c4
-_08113C74: .4byte 0x020170c4
-_08113C78: .4byte 0x000008c4
-_08113C7C: .4byte 0x000030c4
-_08113C80: .4byte 0x000038c4
-_08113C84: .4byte 0x000060c4
-_08113C88: .4byte 0x000070c4
-_08113C8C: .4byte 0x000080c4
-_08113C90: .4byte 0x000090c4
-_08113C94: .4byte 0x0000a0c4
-_08113C98: .4byte 0x020188c4
-_08113C9C:
- movs r0, 0x1
- ands r0, r6
- cmp r0, 0
- beq _08113CAA
- cmp r0, 0x1
- beq _08113CB0
- b _08113CF4
-_08113CAA:
- ldrb r1, [r2]
- movs r0, 0xF
- b _08113CB4
-_08113CB0:
- ldrb r1, [r2]
- movs r0, 0xF0
-_08113CB4:
- ands r0, r1
- cmp r0, 0
- beq _08113CF4
- ldrb r0, [r4]
- adds r0, r5
- add r0, r12
- strb r6, [r0]
- movs r3, 0x1
- b _08113CF4
-_08113CC6:
- adds r0, r6, 0
- ands r0, r3
- cmp r0, 0
- beq _08113CD4
- cmp r0, 0x1
- beq _08113CDA
- b _08113CF4
-_08113CD4:
- ldrb r1, [r2]
- movs r0, 0xF
- b _08113CDE
-_08113CDA:
- ldrb r1, [r2]
- movs r0, 0xF0
-_08113CDE:
- ands r0, r1
- cmp r0, 0
- bne _08113CF4
- ldrb r0, [r4]
- adds r0, r5
- add r0, r9
- strb r7, [r0]
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r3, 0
-_08113CF4:
- adds r0, r6, 0x1
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _08113D02
- adds r2, 0x1D
- b _08113D0C
-_08113D02:
- movs r0, 0x1
- ands r0, r6
- cmp r0, 0
- beq _08113D0C
- adds r2, 0x1
-_08113D0C:
- adds r7, 0x1
- adds r6, 0x1
- cmp r6, 0x3F
- ble _08113C4A
- cmp r3, 0
- beq _08113D26
- ldrb r0, [r4]
- adds r0, r5
- add r0, r9
- strb r6, [r0]
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
-_08113D26:
- movs r0, 0x7
- ldr r2, [sp, 0x30]
- ands r2, r0
- cmp r2, 0
- bne _08113D36
- movs r3, 0xE4
- add r8, r3
- b _08113D3A
-_08113D36:
- movs r0, 0x4
- add r8, r0
-_08113D3A:
- adds r5, 0x20
- adds r4, 0x1
- ldr r1, [sp, 0x8]
- adds r1, 0x1
- str r1, [sp, 0x8]
- cmp r1, 0x3F
- bgt _08113D4A
- b _08113C32
-_08113D4A:
- movs r2, 0
- mov r8, r2
- movs r3, 0
- str r3, [sp, 0x8]
- ldr r0, _08113D84 @ =0x02014844
- movs r4, 0x82
- lsls r4, 6
- adds r4, r0
- mov r10, r4
- movs r5, 0xA2
- lsls r5, 6
- adds r7, r0, r5
- movs r5, 0
- adds r4, r0, 0
- movs r0, 0x1
- mov r9, r0
-_08113D6A:
- movs r3, 0
- ldr r2, [sp, 0x4]
- add r2, r8
- movs r6, 0
- ldr r1, [sp, 0x8]
- adds r1, 0x1
- str r1, [sp, 0x30]
-_08113D78:
- cmp r3, 0
- beq _08113D88
- cmp r3, 0x1
- beq _08113DB4
- b _08113DE4
- .align 2, 0
-_08113D84: .4byte 0x02014844
-_08113D88:
- adds r0, r6, 0
- mov r1, r9
- ands r0, r1
- cmp r0, 0
- beq _08113D98
- cmp r0, 0x1
- beq _08113D9E
- b _08113DE4
-_08113D98:
- ldrb r1, [r2]
- movs r0, 0xF
- b _08113DA2
-_08113D9E:
- ldrb r1, [r2]
- movs r0, 0xF0
-_08113DA2:
- ands r0, r1
- cmp r0, 0
- beq _08113DE4
- ldrb r0, [r4]
- adds r0, r5
- add r0, r10
- strb r6, [r0]
- movs r3, 0x1
- b _08113DE4
-_08113DB4:
- adds r0, r6, 0
- ands r0, r3
- cmp r0, 0
- beq _08113DC2
- cmp r0, 0x1
- beq _08113DC8
- b _08113DE4
-_08113DC2:
- ldrb r1, [r2]
- movs r0, 0xF
- b _08113DCC
-_08113DC8:
- ldrb r1, [r2]
- movs r0, 0xF0
-_08113DCC:
- ands r0, r1
- cmp r0, 0
- bne _08113DE4
- ldrb r0, [r4]
- adds r0, r5
- adds r0, r7
- subs r1, r6, 0x1
- strb r1, [r0]
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- movs r3, 0
-_08113DE4:
- adds r1, r6, 0x1
- movs r0, 0x7
- ands r0, r1
- cmp r0, 0
- bne _08113DF2
- adds r2, 0x1D
- b _08113DFC
-_08113DF2:
- mov r0, r9
- ands r6, r0
- cmp r6, 0
- beq _08113DFC
- adds r2, 0x1
-_08113DFC:
- adds r6, r1, 0
- cmp r6, 0x3F
- ble _08113D78
- cmp r3, 0
- beq _08113E14
- ldrb r0, [r4]
- adds r0, r5
- adds r0, r7
- strb r6, [r0]
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
-_08113E14:
- movs r0, 0x7
- ldr r1, [sp, 0x30]
- ands r1, r0
- cmp r1, 0
- bne _08113E24
- movs r2, 0xE4
- add r8, r2
- b _08113E28
-_08113E24:
- movs r3, 0x4
- add r8, r3
-_08113E28:
- adds r5, 0x20
- adds r4, 0x1
- ldr r0, [sp, 0x8]
- adds r0, 0x1
- str r0, [sp, 0x8]
- cmp r0, 0x3F
- ble _08113D6A
- movs r1, 0
- str r1, [sp, 0x8]
-_08113E3A:
- ldr r3, [sp, 0x8]
- ldr r4, _08113EBC @ =0x02014804
- adds r2, r3, r4
- ldr r5, _08113EC0 @ =0x02014844
- adds r1, r3, r5
- ldrb r0, [r2]
- adds r3, 0x1
- str r3, [sp, 0x30]
- ldrb r1, [r1]
- cmp r0, r1
- bcc _08113E52
- b _08113F9E
-_08113E52:
- movs r0, 0
- str r0, [sp, 0xC]
- ldrb r2, [r2]
- cmp r0, r2
- bge _08113F54
- ldr r0, _08113EC4 @ =0x02014800
- adds r0, 0x4
- ldr r1, [sp, 0x8]
- adds r0, r1, r0
- str r0, [sp, 0x18]
-_08113E66:
- movs r2, 0x80
- lsls r2, 1
- str r2, [sp, 0x14]
- movs r6, 0
- ldr r3, [sp, 0x8]
- ldr r4, _08113EC0 @ =0x02014844
- adds r0, r3, r4
- ldr r5, [sp, 0xC]
- adds r5, 0x1
- str r5, [sp, 0x34]
- ldrb r0, [r0]
- cmp r6, r0
- bge _08113F3E
- ldr r0, _08113EC4 @ =0x02014800
- mov r10, r0
- lsls r0, r3, 5
- ldr r2, [sp, 0xC]
- adds r1, r2, r0
- mov r9, r0
- ldr r0, _08113EC4 @ =0x02014800
- adds r0, 0xC4
- mov r3, r9
- adds r7, r3, r0
- mov r5, r9
- ldr r4, _08113EC4 @ =0x02014800
- ldr r2, _08113EC8 @ =0x000010c4
- adds r0, r4, r2
- adds r1, r0
- mov r8, r1
- ldrb r3, [r1]
- str r3, [sp, 0x1C]
-_08113EA4:
- ldr r0, _08113ECC @ =0x000020c4
- add r0, r10
- adds r0, r5, r0
- ldr r4, [sp, 0x1C]
- ldrb r1, [r0]
- cmp r4, r1
- bls _08113ED0
- mov r2, r8
- ldrb r1, [r2]
- ldrb r0, [r0]
- b _08113ED6
- .align 2, 0
-_08113EBC: .4byte 0x02014804
-_08113EC0: .4byte 0x02014844
-_08113EC4: .4byte 0x02014800
-_08113EC8: .4byte 0x000010c4
-_08113ECC: .4byte 0x000020c4
-_08113ED0:
- ldrb r1, [r0]
- mov r3, r8
- ldrb r0, [r3]
-_08113ED6:
- subs r3, r1, r0
- ldr r1, [sp, 0xC]
- add r1, r9
- ldr r0, _08113EFC @ =0x000018c4
- add r0, r10
- adds r4, r1, r0
- ldr r0, _08113F00 @ =0x000028c4
- add r0, r10
- adds r2, r5, r0
- ldrb r0, [r4]
- ldr r1, _08113F04 @ =0x02014800
- mov r12, r1
- ldrb r1, [r2]
- cmp r0, r1
- bls _08113F08
- adds r1, r0, 0
- ldrb r0, [r2]
- b _08113F0C
- .align 2, 0
-_08113EFC: .4byte 0x000018c4
-_08113F00: .4byte 0x000028c4
-_08113F04: .4byte 0x02014800
-_08113F08:
- ldrb r1, [r2]
- ldrb r0, [r4]
-_08113F0C:
- subs r1, r0
- adds r3, r1
- ldr r2, [sp, 0x14]
- cmp r2, r3
- ble _08113F2C
- ldrb r0, [r7]
- cmp r0, 0
- bne _08113F2C
- ldr r0, _08114050 @ =0x000008c4
- add r0, r12
- adds r0, r5, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08113F2C
- str r6, [sp, 0x10]
- str r3, [sp, 0x14]
-_08113F2C:
- adds r7, 0x1
- adds r5, 0x1
- adds r6, 0x1
- ldr r3, [sp, 0x8]
- ldr r4, _08114054 @ =0x02014844
- adds r0, r3, r4
- ldrb r0, [r0]
- cmp r6, r0
- blt _08113EA4
-_08113F3E:
- ldr r0, [sp, 0xC]
- ldr r1, [sp, 0x10]
- ldr r2, [sp, 0x8]
- bl sub_81141F0
- ldr r5, [sp, 0x34]
- str r5, [sp, 0xC]
- ldr r0, [sp, 0x18]
- ldrb r0, [r0]
- cmp r5, r0
- blt _08113E66
-_08113F54:
- movs r6, 0
- ldr r2, _08114058 @ =0x02014800
- ldr r1, [sp, 0x8]
- ldr r3, _08114054 @ =0x02014844
- adds r0, r1, r3
- adds r4, r2, 0
- mov r12, r4
- ldrb r0, [r0]
- cmp r6, r0
- bge _08113F9E
- mov r0, r12
- adds r0, 0x44
- adds r4, r1, r0
-_08113F6E:
- ldr r5, [sp, 0x8]
- lsls r0, r5, 5
- adds r1, r6, r0
- adds r0, r2, 0
- adds r0, 0xC4
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08113F94
- ldr r3, _08114050 @ =0x000008c4
- adds r0, r2, r3
- adds r0, r1, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08113F94
- adds r0, r6, 0
- adds r1, r5, 0
- bl sub_811430C
-_08113F94:
- adds r6, 0x1
- ldr r2, _08114058 @ =0x02014800
- ldrb r5, [r4]
- cmp r6, r5
- blt _08113F6E
-_08113F9E:
- ldr r0, [sp, 0x8]
- ldr r1, _0811405C @ =0x02014804
- adds r2, r0, r1
- ldr r3, _08114054 @ =0x02014844
- adds r1, r0, r3
- ldrb r0, [r2]
- ldrb r1, [r1]
- cmp r0, r1
- bne _08113FCC
- movs r6, 0
- ldrb r4, [r2]
- cmp r6, r4
- bge _08113FCC
- adds r4, r2, 0
-_08113FBA:
- adds r0, r6, 0
- adds r1, r6, 0
- ldr r2, [sp, 0x8]
- bl sub_81141F0
- adds r6, 0x1
- ldrb r5, [r4]
- cmp r6, r5
- blt _08113FBA
-_08113FCC:
- ldr r0, [sp, 0x8]
- ldr r1, _0811405C @ =0x02014804
- adds r2, r0, r1
- ldr r3, _08114054 @ =0x02014844
- adds r1, r0, r3
- ldrb r0, [r2]
- ldr r4, _08114058 @ =0x02014800
- ldrb r5, [r1]
- cmp r0, r5
- bhi _08113FE2
- b _081141C4
-_08113FE2:
- movs r0, 0
- str r0, [sp, 0x10]
- ldrb r1, [r1]
- cmp r0, r1
- blt _08113FEE
- b _08114104
-_08113FEE:
- str r2, [sp, 0x2C]
- ldr r1, [sp, 0x8]
- lsls r1, 5
- mov r9, r1
- adds r0, r4, 0
- adds r0, 0x44
- ldr r2, [sp, 0x8]
- adds r0, r2, r0
- str r0, [sp, 0x20]
- mov r3, r9
- str r3, [sp, 0x24]
-_08114004:
- movs r4, 0x80
- lsls r4, 1
- str r4, [sp, 0x14]
- movs r6, 0
- ldr r5, [sp, 0x10]
- adds r5, 0x1
- str r5, [sp, 0x38]
- ldr r0, [sp, 0x2C]
- ldrb r0, [r0]
- cmp r6, r0
- bge _081140C4
- ldr r1, [sp, 0x10]
- ldr r2, [sp, 0x24]
- adds r1, r2
- mov r10, r1
- ldr r0, _08114058 @ =0x02014800
- adds r0, 0xC4
- adds r2, r0
- mov r8, r2
- ldr r7, [sp, 0x24]
- ldr r3, _08114058 @ =0x02014800
- ldr r4, _08114060 @ =0x000010c4
- adds r0, r3, r4
- adds r5, r7, r0
- ldr r0, _08114064 @ =0x020168c4
- add r0, r10
- mov r12, r0
- ldrb r1, [r0]
- str r1, [sp, 0x28]
-_0811403E:
- ldrb r0, [r5]
- ldr r2, [sp, 0x28]
- cmp r0, r2
- bls _08114068
- adds r1, r0, 0
- mov r3, r12
- ldrb r0, [r3]
- b _0811406E
- .align 2, 0
-_08114050: .4byte 0x000008c4
-_08114054: .4byte 0x02014844
-_08114058: .4byte 0x02014800
-_0811405C: .4byte 0x02014804
-_08114060: .4byte 0x000010c4
-_08114064: .4byte 0x020168c4
-_08114068:
- mov r4, r12
- ldrb r1, [r4]
- ldrb r0, [r5]
-_0811406E:
- subs r3, r1, r0
- ldr r1, _0811408C @ =0x02014800
- ldr r2, _08114090 @ =0x000018c4
- adds r0, r1, r2
- adds r4, r7, r0
- ldr r2, _08114094 @ =0x020170c4
- add r2, r10
- ldrb r0, [r4]
- ldrb r1, [r2]
- cmp r0, r1
- bls _08114098
- adds r1, r0, 0
- ldrb r0, [r2]
- b _0811409C
- .align 2, 0
-_0811408C: .4byte 0x02014800
-_08114090: .4byte 0x000018c4
-_08114094: .4byte 0x020170c4
-_08114098:
- ldrb r1, [r2]
- ldrb r0, [r4]
-_0811409C:
- subs r1, r0
- adds r3, r1
- ldr r2, [sp, 0x14]
- cmp r2, r3
- ble _081140B2
- mov r4, r8
- ldrb r0, [r4]
- cmp r0, 0
- bne _081140B2
- str r6, [sp, 0xC]
- str r3, [sp, 0x14]
-_081140B2:
- movs r0, 0x1
- add r8, r0
- adds r7, 0x1
- adds r5, 0x1
- adds r6, 0x1
- ldr r1, [sp, 0x2C]
- ldrb r1, [r1]
- cmp r6, r1
- blt _0811403E
-_081140C4:
- ldr r3, [sp, 0xC]
- add r3, r9
- ldr r2, _08114164 @ =0x02014800
- ldr r4, _08114168 @ =0x000030c4
- adds r1, r2, r4
- adds r1, r3, r1
- ldr r2, [sp, 0x10]
- add r2, r9
- ldr r5, _0811416C @ =0x020168c4
- adds r0, r2, r5
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _08114164 @ =0x02014800
- ldr r4, _08114170 @ =0x000038c4
- adds r1, r0, r4
- adds r1, r3, r1
- ldr r5, _08114174 @ =0x020170c4
- adds r2, r5
- ldrb r0, [r2]
- strb r0, [r1]
- ldr r0, _08114164 @ =0x02014800
- adds r0, 0xC4
- adds r3, r0
- movs r0, 0x1
- strb r0, [r3]
- ldr r0, [sp, 0x38]
- str r0, [sp, 0x10]
- ldr r1, [sp, 0x20]
- ldrb r1, [r1]
- cmp r0, r1
- bge _08114104
- b _08114004
-_08114104:
- movs r6, 0
- ldr r4, _08114164 @ =0x02014800
- ldr r2, [sp, 0x8]
- ldr r3, _08114178 @ =0x02014804
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r6, r0
- bge _081141C4
- adds r7, r4, 0
- mov r9, r6
- movs r5, 0xC4
- adds r5, r7
- mov r8, r5
-_0811411E:
- ldr r1, [sp, 0x8]
- lsls r0, r1, 5
- adds r2, r6, r0
- ldr r3, _0811417C @ =0x000020c4
- adds r0, r7, r3
- adds r0, r2
- mov r10, r0
- ldr r5, _08114168 @ =0x000030c4
- adds r0, r7, r5
- adds r0, r2, r0
- ldrb r0, [r0]
- mov r1, r10
- strb r0, [r1]
- ldr r3, _08114180 @ =0x000028c4
- adds r0, r7, r3
- adds r3, r2, r0
- ldr r5, _08114170 @ =0x000038c4
- adds r0, r7, r5
- adds r0, r2, r0
- ldrb r0, [r0]
- strb r0, [r3]
- mov r0, r8
- adds r1, r2, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _08114184
- mov r2, r9
- strb r2, [r1]
- adds r0, r6, 0
- adds r1, r6, 0
- ldr r2, [sp, 0x8]
- bl sub_81141F0
- b _081141B4
- .align 2, 0
-_08114164: .4byte 0x02014800
-_08114168: .4byte 0x000030c4
-_0811416C: .4byte 0x020168c4
-_08114170: .4byte 0x000038c4
-_08114174: .4byte 0x020170c4
-_08114178: .4byte 0x02014804
-_0811417C: .4byte 0x000020c4
-_08114180: .4byte 0x000028c4
-_08114184:
- ldr r5, _081141E0 @ =0x000010c4
- adds r1, r4, r5
- adds r1, r2, r1
- ldr r5, _081141E4 @ =0x000018c4
- adds r0, r4, r5
- adds r0, r2, r0
- ldrb r0, [r0]
- ldrb r2, [r1]
- subs r0, r2
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- adds r2, r0
- strb r2, [r3]
- mov r0, r10
- strb r2, [r0]
- ldrb r0, [r3]
- subs r0, 0x1
- strb r0, [r3]
- adds r0, r6, 0
- adds r1, r6, 0
- ldr r2, [sp, 0x8]
- bl sub_81141F0
-_081141B4:
- adds r6, 0x1
- ldr r4, _081141E8 @ =0x02014800
- ldr r1, [sp, 0x8]
- ldr r2, _081141EC @ =0x02014804
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r6, r0
- blt _0811411E
-_081141C4:
- ldr r3, [sp, 0x30]
- str r3, [sp, 0x8]
- cmp r3, 0x3F
- bgt _081141CE
- b _08113E3A
-_081141CE:
- add sp, 0x3C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081141E0: .4byte 0x000010c4
-_081141E4: .4byte 0x000018c4
-_081141E8: .4byte 0x02014800
-_081141EC: .4byte 0x02014804
- thumb_func_end unref_sub_8113B50
-
- thumb_func_start sub_81141F0
-sub_81141F0: @ 81141F0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r6, r0, 0
- mov r8, r1
- mov r9, r2
- ldr r3, _0811424C @ =0x02014800
- lsls r1, r2, 5
- mov r0, r8
- adds r4, r0, r1
- ldr r5, _08114250 @ =0x000030c4
- adds r2, r3, r5
- adds r2, r4, r2
- adds r1, r6, r1
- ldr r7, _08114254 @ =0x000010c4
- adds r0, r3, r7
- adds r5, r1, r0
- ldrb r0, [r5]
- strb r0, [r2]
- ldr r0, _08114258 @ =0x000038c4
- adds r2, r3, r0
- adds r2, r4, r2
- ldr r7, _0811425C @ =0x000018c4
- adds r0, r3, r7
- adds r1, r0
- ldrb r0, [r1]
- strb r0, [r2]
- movs r7, 0
- ldr r1, _08114260 @ =0x000020c4
- adds r0, r3, r1
- adds r2, r4, r0
- ldrb r1, [r5]
- ldrb r0, [r2]
- mov r12, r3
- cmp r1, r0
- bcs _08114264
- mov r0, r12
- adds r0, 0xC4
- adds r0, r4, r0
- movs r1, 0x4
- strb r1, [r0]
- ldrb r1, [r2]
- ldrb r0, [r5]
- b _08114276
- .align 2, 0
-_0811424C: .4byte 0x02014800
-_08114250: .4byte 0x000030c4
-_08114254: .4byte 0x000010c4
-_08114258: .4byte 0x000038c4
-_0811425C: .4byte 0x000018c4
-_08114260: .4byte 0x000020c4
-_08114264:
- cmp r1, r0
- bls _08114278
- mov r0, r12
- adds r0, 0xC4
- adds r0, r4, r0
- movs r1, 0x1
- strb r1, [r0]
- ldrb r1, [r5]
- ldrb r0, [r2]
-_08114276:
- subs r7, r1, r0
-_08114278:
- mov r5, r8
- lsls r3, r5, 1
- mov r0, r9
- lsls r4, r0, 6
- adds r0, r3, r4
- ldr r1, _081142BC @ =0x000080c4
- add r1, r12
- adds r0, r1
- lsls r1, r7, 4
- strh r1, [r0]
- movs r7, 0
- mov r1, r9
- lsls r2, r1, 5
- adds r1, r6, r2
- ldr r0, _081142C0 @ =0x000018c4
- add r0, r12
- adds r6, r1, r0
- adds r1, r5, r2
- ldr r0, _081142C4 @ =0x000028c4
- add r0, r12
- adds r5, r1, r0
- ldrb r2, [r6]
- ldrb r0, [r5]
- cmp r2, r0
- bcs _081142CC
- ldr r0, _081142C8 @ =0x000008c4
- add r0, r12
- adds r0, r1, r0
- movs r1, 0x3
- strb r1, [r0]
- ldrb r1, [r5]
- ldrb r0, [r6]
- b _081142DE
- .align 2, 0
-_081142BC: .4byte 0x000080c4
-_081142C0: .4byte 0x000018c4
-_081142C4: .4byte 0x000028c4
-_081142C8: .4byte 0x000008c4
-_081142CC:
- cmp r2, r0
- bls _081142E0
- ldr r0, _08114304 @ =0x000008c4
- add r0, r12
- adds r0, r1, r0
- movs r1, 0x2
- strb r1, [r0]
- ldrb r1, [r6]
- ldrb r0, [r5]
-_081142DE:
- subs r7, r1, r0
-_081142E0:
- adds r0, r3, r4
- ldr r1, _08114308 @ =0x000090c4
- add r1, r12
- adds r0, r1
- lsls r1, r7, 4
- strh r1, [r0]
- mov r1, r12
- adds r1, 0x84
- add r1, r9
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08114304: .4byte 0x000008c4
-_08114308: .4byte 0x000090c4
- thumb_func_end sub_81141F0
-
- thumb_func_start sub_811430C
-sub_811430C: @ 811430C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r5, _081143AC @ =0x02014800
- lsls r4, r1, 5
- adds r4, r0, r4
- ldr r2, _081143B0 @ =0x000028c4
- adds r2, r5
- mov r10, r2
- add r10, r4
- mov r3, r10
- ldrb r2, [r3]
- ldr r6, _081143B4 @ =0x000020c4
- adds r6, r5
- mov r8, r6
- add r8, r4
- mov r6, r8
- ldrb r3, [r6]
- subs r7, r2, r3
- ldr r2, _081143B8 @ =0x000030c4
- adds r6, r5, r2
- adds r6, r4, r6
- ldr r2, _081143BC @ =0x000038c4
- adds r2, r5
- mov r9, r2
- add r9, r4
- lsrs r2, r7, 31
- adds r2, r7, r2
- asrs r2, 1
- adds r3, r2
- mov r2, r9
- strb r3, [r2]
- strb r3, [r6]
- adds r2, r5, 0
- adds r2, 0xC4
- adds r2, r4, r2
- movs r3, 0x5
- strb r3, [r2]
- ldr r3, _081143C0 @ =0x000008c4
- adds r2, r5, r3
- adds r4, r2
- movs r2, 0x7
- strb r2, [r4]
- adds r3, r5, 0
- adds r3, 0x84
- adds r3, r1, r3
- ldrb r2, [r3]
- adds r2, 0x1
- strb r2, [r3]
- ldrb r3, [r6]
- mov r4, r8
- ldrb r2, [r4]
- subs r7, r3, r2
- lsls r0, 1
- lsls r1, 6
- adds r0, r1
- ldr r6, _081143C4 @ =0x000080c4
- adds r1, r5, r6
- adds r1, r0, r1
- lsls r2, r7, 4
- strh r2, [r1]
- mov r1, r10
- ldrb r2, [r1]
- mov r3, r9
- ldrb r1, [r3]
- subs r7, r2, r1
- ldr r4, _081143C8 @ =0x000090c4
- adds r5, r4
- adds r0, r5
- lsls r1, r7, 4
- strh r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081143AC: .4byte 0x02014800
-_081143B0: .4byte 0x000028c4
-_081143B4: .4byte 0x000020c4
-_081143B8: .4byte 0x000030c4
-_081143BC: .4byte 0x000038c4
-_081143C0: .4byte 0x000008c4
-_081143C4: .4byte 0x000080c4
-_081143C8: .4byte 0x000090c4
- thumb_func_end sub_811430C
-
- thumb_func_start unref_sub_81143CC
-unref_sub_81143CC: @ 81143CC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- movs r0, 0x1
- str r0, [sp, 0x4]
- ldr r0, _08114408 @ =0x02014800
- ldr r2, _0811440C @ =0x0000a0c4
- adds r1, r0, r2
- ldrb r3, [r1]
- adds r4, r0, 0
- cmp r3, 0
- beq _081143EE
- subs r0, r3, 0x1
- strb r0, [r1]
-_081143EE:
- movs r5, 0
- str r5, [sp]
-_081143F2:
- movs r3, 0
- adds r2, r4, 0
- adds r0, r4, 0
- adds r0, 0x84
- ldr r1, [sp]
- adds r0, r1, r0
- adds r1, 0x1
- str r1, [sp, 0x8]
- bl _08114D84
- .align 2, 0
-_08114408: .4byte 0x02014800
-_0811440C: .4byte 0x0000a0c4
-_08114410:
- ldr r5, [sp]
- lsls r0, r5, 5
- adds r1, r3, r0
- adds r2, 0xC4
- adds r1, r2
- ldrb r2, [r1]
- mov r8, r0
- adds r0, r3, 0x1
- mov r10, r0
- cmp r2, 0xC
- bls _08114428
- b _081148D2
-_08114428:
- lsls r0, r2, 2
- ldr r1, _08114434 @ =_08114438
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08114434: .4byte _08114438
- .align 2, 0
-_08114438:
- .4byte _081148D2
- .4byte _0811446C
- .4byte _081144F0
- .4byte _0811457C
- .4byte _08114600
- .4byte _0811468C
- .4byte _081146C8
- .4byte _08114704
- .4byte _08114740
- .4byte _0811477C
- .4byte _081147D0
- .4byte _08114810
- .4byte _08114858
-_0811446C:
- movs r1, 0
- str r1, [sp, 0x4]
- lsls r0, r3, 1
- ldr r2, [sp]
- lsls r1, r2, 6
- adds r0, r1
- ldr r5, _081144E0 @ =0x000060c4
- adds r2, r4, r5
- adds r2, r0, r2
- ldr r5, _081144E4 @ =0x000080c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- adds r1, r3, 0x1
- mov r10, r1
- ldr r2, [sp, 0x4]
- cmp r2, r5
- blt _081144A6
- b _081148D2
-_081144A6:
- mov r9, r4
- mov r4, r8
- adds r7, r3, r4
- ldr r0, _081144E8 @ =0x000030c4
- add r0, r9
- adds r4, r7, r0
- ldr r0, _081144EC @ =0x000020c4
- add r0, r9
- adds r2, r7, r0
-_081144B8:
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- ldrb r1, [r4]
- ldr r0, [sp]
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl sub_8114DB4
- ldrb r0, [r4]
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- ldrb r1, [r2]
- cmp r0, r1
- bne _081144D8
- b _081148A0
-_081144D8:
- adds r6, 0x1
- cmp r6, r5
- blt _081144B8
- b _081148D2
- .align 2, 0
-_081144E0: .4byte 0x000060c4
-_081144E4: .4byte 0x000080c4
-_081144E8: .4byte 0x000030c4
-_081144EC: .4byte 0x000020c4
-_081144F0:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r4, _08114568 @ =0x02014800
- lsls r0, r3, 1
- ldr r5, [sp]
- lsls r1, r5, 6
- adds r0, r1
- ldr r1, _0811456C @ =0x000060c4
- adds r2, r4, r1
- adds r2, r0, r2
- ldr r5, _08114570 @ =0x000080c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- adds r1, r3, 0x1
- mov r10, r1
- ldr r2, [sp, 0x4]
- cmp r2, r5
- blt _0811452C
- b _081148D2
-_0811452C:
- mov r9, r4
- mov r4, r8
- adds r7, r3, r4
- ldr r0, _08114574 @ =0x000030c4
- add r0, r9
- adds r4, r7, r0
- ldr r0, _08114578 @ =0x000020c4
- add r0, r9
- adds r2, r7, r0
-_0811453E:
- ldrb r0, [r4]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08114548
- b _081148B8
-_08114548:
- adds r1, r0, 0
- ldr r0, [sp]
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl sub_8114DF0
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- adds r6, 0x1
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- cmp r6, r5
- blt _0811453E
- b _081148D2
- .align 2, 0
-_08114568: .4byte 0x02014800
-_0811456C: .4byte 0x000060c4
-_08114570: .4byte 0x000080c4
-_08114574: .4byte 0x000030c4
-_08114578: .4byte 0x000020c4
-_0811457C:
- movs r2, 0
- str r2, [sp, 0x4]
- lsls r0, r3, 1
- ldr r5, [sp]
- lsls r1, r5, 6
- adds r0, r1
- ldr r1, _081145F0 @ =0x000060c4
- adds r2, r4, r1
- adds r2, r0, r2
- ldr r5, _081145F4 @ =0x000080c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- adds r1, r3, 0x1
- mov r10, r1
- ldr r2, [sp, 0x4]
- cmp r2, r5
- blt _081145B6
- b _081148D2
-_081145B6:
- mov r9, r4
- mov r4, r8
- adds r7, r3, r4
- ldr r0, _081145F8 @ =0x000030c4
- add r0, r9
- adds r4, r7, r0
- ldr r0, _081145FC @ =0x000020c4
- add r0, r9
- adds r2, r7, r0
-_081145C8:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldrb r1, [r4]
- ldr r0, [sp]
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl sub_8114DB4
- ldrb r0, [r4]
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- ldrb r1, [r2]
- cmp r0, r1
- bne _081145E8
- b _081148AC
-_081145E8:
- adds r6, 0x1
- cmp r6, r5
- blt _081145C8
- b _081148D2
- .align 2, 0
-_081145F0: .4byte 0x000060c4
-_081145F4: .4byte 0x000080c4
-_081145F8: .4byte 0x000030c4
-_081145FC: .4byte 0x000020c4
-_08114600:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r4, _08114678 @ =0x02014800
- lsls r0, r3, 1
- ldr r5, [sp]
- lsls r1, r5, 6
- adds r0, r1
- ldr r1, _0811467C @ =0x000060c4
- adds r2, r4, r1
- adds r2, r0, r2
- ldr r5, _08114680 @ =0x000080c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- adds r1, r3, 0x1
- mov r10, r1
- ldr r2, [sp, 0x4]
- cmp r2, r5
- blt _0811463C
- b _081148D2
-_0811463C:
- mov r9, r4
- mov r4, r8
- adds r7, r3, r4
- ldr r0, _08114684 @ =0x000030c4
- add r0, r9
- adds r4, r7, r0
- ldr r0, _08114688 @ =0x000020c4
- add r0, r9
- adds r2, r7, r0
-_0811464E:
- ldrb r0, [r4]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08114658
- b _081148B8
-_08114658:
- adds r1, r0, 0
- ldr r0, [sp]
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl sub_8114DF0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- adds r6, 0x1
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- cmp r6, r5
- blt _0811464E
- b _081148D2
- .align 2, 0
-_08114678: .4byte 0x02014800
-_0811467C: .4byte 0x000060c4
-_08114680: .4byte 0x000080c4
-_08114684: .4byte 0x000030c4
-_08114688: .4byte 0x000020c4
-_0811468C:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r5, _081146C0 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _081146C4 @ =0x000030c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114E48
- lsls r0, 24
- ldr r3, [sp, 0x10]
- adds r2, r3, 0x1
- mov r10, r2
- cmp r0, 0
- bne _081146B4
- b _081148D2
-_081146B4:
- adds r0, r5, 0
- adds r0, 0xC4
- adds r0, r4, r0
- movs r1, 0x9
- strb r1, [r0]
- b _081148D2
- .align 2, 0
-_081146C0: .4byte 0x02014800
-_081146C4: .4byte 0x000030c4
-_081146C8:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r5, _081146FC @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _08114700 @ =0x000030c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114E48
- lsls r0, 24
- ldr r3, [sp, 0x10]
- adds r2, r3, 0x1
- mov r10, r2
- cmp r0, 0
- bne _081146F0
- b _081148D2
-_081146F0:
- adds r0, r5, 0
- adds r0, 0xC4
- adds r0, r4, r0
- movs r1, 0xA
- strb r1, [r0]
- b _081148D2
- .align 2, 0
-_081146FC: .4byte 0x02014800
-_08114700: .4byte 0x000030c4
-_08114704:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r5, _08114738 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _0811473C @ =0x000030c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114E48
- lsls r0, 24
- ldr r3, [sp, 0x10]
- adds r2, r3, 0x1
- mov r10, r2
- cmp r0, 0
- bne _0811472C
- b _081148D2
-_0811472C:
- adds r0, r5, 0
- adds r0, 0xC4
- adds r0, r4, r0
- movs r1, 0xB
- strb r1, [r0]
- b _081148D2
- .align 2, 0
-_08114738: .4byte 0x02014800
-_0811473C: .4byte 0x000030c4
-_08114740:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r5, _08114774 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _08114778 @ =0x000030c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114E48
- lsls r0, 24
- ldr r3, [sp, 0x10]
- adds r2, r3, 0x1
- mov r10, r2
- cmp r0, 0
- bne _08114768
- b _081148D2
-_08114768:
- adds r0, r5, 0
- adds r0, 0xC4
- adds r0, r4, r0
- movs r1, 0xC
- strb r1, [r0]
- b _081148D2
- .align 2, 0
-_08114774: .4byte 0x02014800
-_08114778: .4byte 0x000030c4
-_0811477C:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r6, _081147B4 @ =0x02014800
- mov r0, r8
- adds r5, r3, r0
- ldr r1, _081147B8 @ =0x000030c4
- adds r4, r6, r1
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114DB4
- ldr r2, _081147BC @ =0x000020c4
- adds r0, r6, r2
- adds r0, r5, r0
- ldrb r1, [r4]
- ldr r3, [sp, 0x10]
- ldrb r0, [r0]
- cmp r1, r0
- bne _081147C0
- adds r0, r6, 0
- adds r0, 0xC4
- adds r0, r5, r0
- mov r4, sp
- ldrb r4, [r4, 0x4]
- strb r4, [r0]
- b _08114844
- .align 2, 0
-_081147B4: .4byte 0x02014800
-_081147B8: .4byte 0x000030c4
-_081147BC: .4byte 0x000020c4
-_081147C0:
- adds r0, r6, 0
- adds r0, 0xC4
- adds r0, r5, r0
- movs r1, 0x1
- strb r1, [r0]
- adds r0, r3, 0x1
- mov r10, r0
- b _081148D2
-_081147D0:
- movs r1, 0
- str r1, [sp, 0x4]
- ldr r6, _08114804 @ =0x02014800
- mov r2, r8
- adds r5, r3, r2
- ldr r0, _08114808 @ =0x000030c4
- adds r4, r6, r0
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114DF0
- ldr r1, _0811480C @ =0x000020c4
- adds r0, r6, r1
- adds r0, r5, r0
- ldrb r1, [r4]
- ldr r3, [sp, 0x10]
- ldrb r0, [r0]
- cmp r1, r0
- beq _08114882
- adds r0, r6, 0
- adds r0, 0xC4
- adds r0, r5, r0
- movs r1, 0x2
- b _08114842
- .align 2, 0
-_08114804: .4byte 0x02014800
-_08114808: .4byte 0x000030c4
-_0811480C: .4byte 0x000020c4
-_08114810:
- movs r0, 0
- str r0, [sp, 0x4]
- ldr r6, _0811484C @ =0x02014800
- mov r1, r8
- adds r5, r3, r1
- ldr r2, _08114850 @ =0x000030c4
- adds r4, r6, r2
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114DB4
- ldr r1, _08114854 @ =0x000020c4
- adds r0, r6, r1
- adds r0, r5, r0
- ldrb r1, [r4]
- ldr r3, [sp, 0x10]
- ldrb r0, [r0]
- cmp r1, r0
- beq _08114882
- adds r0, r6, 0
- adds r0, 0xC4
- adds r0, r5, r0
- movs r1, 0x3
-_08114842:
- strb r1, [r0]
-_08114844:
- adds r5, r3, 0x1
- mov r10, r5
- b _081148D2
- .align 2, 0
-_0811484C: .4byte 0x02014800
-_08114850: .4byte 0x000030c4
-_08114854: .4byte 0x000020c4
-_08114858:
- movs r0, 0
- str r0, [sp, 0x4]
- ldr r6, _08114894 @ =0x02014800
- mov r1, r8
- adds r5, r3, r1
- ldr r2, _08114898 @ =0x000030c4
- adds r4, r6, r2
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- str r3, [sp, 0x10]
- bl sub_8114DF0
- ldr r1, _0811489C @ =0x000020c4
- adds r0, r6, r1
- adds r0, r5, r0
- ldrb r1, [r4]
- ldr r3, [sp, 0x10]
- ldrb r0, [r0]
- cmp r1, r0
- bne _081148C4
-_08114882:
- adds r0, r6, 0
- adds r0, 0xC4
- adds r0, r5, r0
- mov r2, sp
- ldrb r2, [r2, 0x4]
- strb r2, [r0]
- adds r4, r3, 0x1
- mov r10, r4
- b _081148D2
- .align 2, 0
-_08114894: .4byte 0x02014800
-_08114898: .4byte 0x000030c4
-_0811489C: .4byte 0x000020c4
-_081148A0:
- mov r0, r9
- adds r0, 0xC4
- adds r0, r7, r0
- movs r5, 0
- strb r5, [r0]
- b _081148D2
-_081148AC:
- mov r0, r9
- adds r0, 0xC4
- adds r0, r7, r0
- movs r1, 0
- strb r1, [r0]
- b _081148D2
-_081148B8:
- mov r0, r9
- adds r0, 0xC4
- adds r0, r7, r0
- movs r1, 0
- strb r1, [r0]
- b _081148D2
-_081148C4:
- adds r0, r6, 0
- adds r0, 0xC4
- adds r0, r5, r0
- movs r1, 0x4
- strb r1, [r0]
- adds r2, r3, 0x1
- mov r10, r2
-_081148D2:
- ldr r0, _081148F4 @ =0x02014800
- mov r4, r8
- adds r1, r3, r4
- ldr r5, _081148F8 @ =0x000008c4
- adds r2, r0, r5
- adds r1, r2
- ldrb r1, [r1]
- adds r4, r0, 0
- cmp r1, 0xC
- bls _081148E8
- b _08114D76
-_081148E8:
- lsls r0, r1, 2
- ldr r1, _081148FC @ =_08114900
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081148F4: .4byte 0x02014800
-_081148F8: .4byte 0x000008c4
-_081148FC: .4byte _08114900
- .align 2, 0
-_08114900:
- .4byte _08114D76
- .4byte _08114934
- .4byte _081149B8
- .4byte _08114A3C
- .4byte _08114AC0
- .4byte _08114B44
- .4byte _08114B7C
- .4byte _08114BB4
- .4byte _08114BEC
- .4byte _08114C24
- .4byte _08114C78
- .4byte _08114CB8
- .4byte _08114CF8
-_08114934:
- movs r0, 0
- str r0, [sp, 0x4]
- lsls r0, r3, 1
- ldr r2, [sp]
- lsls r1, r2, 6
- adds r0, r1
- ldr r5, _081149A8 @ =0x000070c4
- adds r2, r4, r5
- adds r2, r0, r2
- ldr r5, _081149AC @ =0x000090c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- ldr r1, [sp, 0x4]
- cmp r1, r5
- blt _0811496A
- b _08114D76
-_0811496A:
- mov r9, r4
- mov r2, r8
- adds r7, r3, r2
- ldr r0, _081149B0 @ =0x000038c4
- add r0, r9
- adds r4, r7, r0
- movs r3, 0
- ldr r0, _081149B4 @ =0x000028c4
- add r0, r9
- adds r2, r7, r0
-_0811497E:
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- ldrb r1, [r4]
- ldr r0, [sp]
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl sub_8114DB4
- ldrb r0, [r4]
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- ldrb r1, [r2]
- cmp r0, r1
- bne _0811499E
- b _08114D4C
-_0811499E:
- adds r6, 0x1
- cmp r6, r5
- blt _0811497E
- b _08114D76
- .align 2, 0
-_081149A8: .4byte 0x000070c4
-_081149AC: .4byte 0x000090c4
-_081149B0: .4byte 0x000038c4
-_081149B4: .4byte 0x000028c4
-_081149B8:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r4, _08114A28 @ =0x02014800
- lsls r0, r3, 1
- ldr r5, [sp]
- lsls r1, r5, 6
- adds r0, r1
- ldr r1, _08114A2C @ =0x000070c4
- adds r2, r4, r1
- adds r2, r0, r2
- ldr r5, _08114A30 @ =0x000090c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- ldr r1, [sp, 0x4]
- cmp r1, r5
- blt _081149F0
- b _08114D76
-_081149F0:
- mov r9, r4
- mov r2, r8
- adds r7, r3, r2
- ldr r0, _08114A34 @ =0x000038c4
- add r0, r9
- adds r4, r7, r0
- ldr r0, _08114A38 @ =0x000028c4
- add r0, r9
- adds r2, r7, r0
-_08114A02:
- ldrb r0, [r4]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08114A0C
- b _08114D3C
-_08114A0C:
- adds r1, r0, 0
- ldr r0, [sp]
- str r2, [sp, 0xC]
- bl sub_8114DF0
- ldrb r0, [r4]
- subs r0, 0x1
- strb r0, [r4]
- adds r6, 0x1
- ldr r2, [sp, 0xC]
- cmp r6, r5
- blt _08114A02
- b _08114D76
- .align 2, 0
-_08114A28: .4byte 0x02014800
-_08114A2C: .4byte 0x000070c4
-_08114A30: .4byte 0x000090c4
-_08114A34: .4byte 0x000038c4
-_08114A38: .4byte 0x000028c4
-_08114A3C:
- movs r2, 0
- str r2, [sp, 0x4]
- lsls r0, r3, 1
- ldr r5, [sp]
- lsls r1, r5, 6
- adds r0, r1
- ldr r1, _08114AB0 @ =0x000070c4
- adds r2, r4, r1
- adds r2, r0, r2
- ldr r5, _08114AB4 @ =0x000090c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- ldr r1, [sp, 0x4]
- cmp r1, r5
- blt _08114A72
- b _08114D76
-_08114A72:
- mov r9, r4
- mov r2, r8
- adds r7, r3, r2
- ldr r0, _08114AB8 @ =0x000038c4
- add r0, r9
- adds r4, r7, r0
- movs r3, 0
- ldr r0, _08114ABC @ =0x000028c4
- add r0, r9
- adds r2, r7, r0
-_08114A86:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldrb r1, [r4]
- ldr r0, [sp]
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl sub_8114DB4
- ldrb r0, [r4]
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08114AA6
- b _08114D4C
-_08114AA6:
- adds r6, 0x1
- cmp r6, r5
- blt _08114A86
- b _08114D76
- .align 2, 0
-_08114AB0: .4byte 0x000070c4
-_08114AB4: .4byte 0x000090c4
-_08114AB8: .4byte 0x000038c4
-_08114ABC: .4byte 0x000028c4
-_08114AC0:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r4, _08114B30 @ =0x02014800
- lsls r0, r3, 1
- ldr r5, [sp]
- lsls r1, r5, 6
- adds r0, r1
- ldr r1, _08114B34 @ =0x000070c4
- adds r2, r4, r1
- adds r2, r0, r2
- ldr r5, _08114B38 @ =0x000090c4
- adds r1, r4, r5
- adds r0, r1
- ldrh r1, [r0]
- ldrh r0, [r2]
- adds r1, r0
- movs r0, 0xFF
- lsls r0, 8
- ands r0, r1
- lsrs r5, r0, 8
- movs r0, 0xFF
- ands r1, r0
- strh r1, [r2]
- movs r6, 0
- ldr r1, [sp, 0x4]
- cmp r1, r5
- blt _08114AF8
- b _08114D76
-_08114AF8:
- mov r9, r4
- mov r2, r8
- adds r7, r3, r2
- ldr r0, _08114B3C @ =0x000038c4
- add r0, r9
- adds r4, r7, r0
- ldr r0, _08114B40 @ =0x000028c4
- add r0, r9
- adds r2, r7, r0
-_08114B0A:
- ldrb r0, [r4]
- ldrb r1, [r2]
- cmp r0, r1
- bne _08114B14
- b _08114D5C
-_08114B14:
- adds r1, r0, 0
- ldr r0, [sp]
- str r2, [sp, 0xC]
- bl sub_8114DF0
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- adds r6, 0x1
- ldr r2, [sp, 0xC]
- cmp r6, r5
- blt _08114B0A
- b _08114D76
- .align 2, 0
-_08114B30: .4byte 0x02014800
-_08114B34: .4byte 0x000070c4
-_08114B38: .4byte 0x000090c4
-_08114B3C: .4byte 0x000038c4
-_08114B40: .4byte 0x000028c4
-_08114B44:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r5, _08114B70 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _08114B74 @ =0x000038c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- bl sub_8114E48
- lsls r0, 24
- cmp r0, 0
- bne _08114B64
- b _08114D76
-_08114B64:
- ldr r2, _08114B78 @ =0x000008c4
- adds r0, r5, r2
- adds r0, r4, r0
- movs r1, 0x9
- b _08114D74
- .align 2, 0
-_08114B70: .4byte 0x02014800
-_08114B74: .4byte 0x000038c4
-_08114B78: .4byte 0x000008c4
-_08114B7C:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r5, _08114BA8 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _08114BAC @ =0x000038c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- bl sub_8114E48
- lsls r0, 24
- cmp r0, 0
- bne _08114B9C
- b _08114D76
-_08114B9C:
- ldr r2, _08114BB0 @ =0x000008c4
- adds r0, r5, r2
- adds r0, r4, r0
- movs r1, 0xA
- b _08114D74
- .align 2, 0
-_08114BA8: .4byte 0x02014800
-_08114BAC: .4byte 0x000038c4
-_08114BB0: .4byte 0x000008c4
-_08114BB4:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r5, _08114BE0 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _08114BE4 @ =0x000038c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- bl sub_8114E48
- lsls r0, 24
- cmp r0, 0
- bne _08114BD4
- b _08114D76
-_08114BD4:
- ldr r2, _08114BE8 @ =0x000008c4
- adds r0, r5, r2
- adds r0, r4, r0
- movs r1, 0xB
- b _08114D74
- .align 2, 0
-_08114BE0: .4byte 0x02014800
-_08114BE4: .4byte 0x000038c4
-_08114BE8: .4byte 0x000008c4
-_08114BEC:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r5, _08114C18 @ =0x02014800
- mov r0, r8
- adds r4, r3, r0
- ldr r1, _08114C1C @ =0x000038c4
- adds r0, r5, r1
- adds r0, r4, r0
- ldrb r1, [r0]
- ldr r0, [sp]
- bl sub_8114E48
- lsls r0, 24
- cmp r0, 0
- bne _08114C0C
- b _08114D76
-_08114C0C:
- ldr r2, _08114C20 @ =0x000008c4
- adds r0, r5, r2
- adds r0, r4, r0
- movs r1, 0xC
- b _08114D74
- .align 2, 0
-_08114C18: .4byte 0x02014800
-_08114C1C: .4byte 0x000038c4
-_08114C20: .4byte 0x000008c4
-_08114C24:
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r6, _08114C58 @ =0x02014800
- mov r0, r8
- adds r5, r3, r0
- ldr r1, _08114C5C @ =0x000038c4
- adds r4, r6, r1
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- bl sub_8114DB4
- ldr r2, _08114C60 @ =0x000028c4
- adds r0, r6, r2
- adds r0, r5, r0
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bne _08114C68
- ldr r4, _08114C64 @ =0x000008c4
- adds r0, r6, r4
- adds r0, r5, r0
- mov r5, sp
- ldrb r5, [r5, 0x4]
- strb r5, [r0]
- b _08114D76
- .align 2, 0
-_08114C58: .4byte 0x02014800
-_08114C5C: .4byte 0x000038c4
-_08114C60: .4byte 0x000028c4
-_08114C64: .4byte 0x000008c4
-_08114C68:
- ldr r1, _08114C74 @ =0x000008c4
- adds r0, r6, r1
- adds r0, r5, r0
- movs r1, 0x1
- b _08114D74
- .align 2, 0
-_08114C74: .4byte 0x000008c4
-_08114C78:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r6, _08114CA8 @ =0x02014800
- mov r4, r8
- adds r5, r3, r4
- ldr r0, _08114CAC @ =0x000038c4
- adds r4, r6, r0
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- bl sub_8114DF0
- ldr r1, _08114CB0 @ =0x000028c4
- adds r0, r6, r1
- adds r0, r5, r0
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- beq _08114D1E
- ldr r1, _08114CB4 @ =0x000008c4
- adds r0, r6, r1
- adds r0, r5, r0
- movs r1, 0x2
- b _08114D74
- .align 2, 0
-_08114CA8: .4byte 0x02014800
-_08114CAC: .4byte 0x000038c4
-_08114CB0: .4byte 0x000028c4
-_08114CB4: .4byte 0x000008c4
-_08114CB8:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r6, _08114CE8 @ =0x02014800
- mov r4, r8
- adds r5, r3, r4
- ldr r0, _08114CEC @ =0x000038c4
- adds r4, r6, r0
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- bl sub_8114DB4
- ldr r1, _08114CF0 @ =0x000028c4
- adds r0, r6, r1
- adds r0, r5, r0
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- beq _08114D1E
- ldr r1, _08114CF4 @ =0x000008c4
- adds r0, r6, r1
- adds r0, r5, r0
- movs r1, 0x3
- b _08114D74
- .align 2, 0
-_08114CE8: .4byte 0x02014800
-_08114CEC: .4byte 0x000038c4
-_08114CF0: .4byte 0x000028c4
-_08114CF4: .4byte 0x000008c4
-_08114CF8:
- movs r2, 0
- str r2, [sp, 0x4]
- ldr r6, _08114D2C @ =0x02014800
- mov r4, r8
- adds r5, r3, r4
- ldr r0, _08114D30 @ =0x000038c4
- adds r4, r6, r0
- adds r4, r5, r4
- ldrb r1, [r4]
- ldr r0, [sp]
- bl sub_8114DF0
- ldr r1, _08114D34 @ =0x000028c4
- adds r0, r6, r1
- adds r0, r5, r0
- ldrb r1, [r4]
- ldrb r0, [r0]
- cmp r1, r0
- bne _08114D6C
-_08114D1E:
- ldr r2, _08114D38 @ =0x000008c4
- adds r0, r6, r2
- adds r0, r5, r0
- mov r4, sp
- ldrb r4, [r4, 0x4]
- strb r4, [r0]
- b _08114D76
- .align 2, 0
-_08114D2C: .4byte 0x02014800
-_08114D30: .4byte 0x000038c4
-_08114D34: .4byte 0x000028c4
-_08114D38: .4byte 0x000008c4
-_08114D3C:
- ldr r0, _08114D48 @ =0x000008c4
- add r0, r9
- adds r0, r7, r0
- movs r1, 0
- b _08114D74
- .align 2, 0
-_08114D48: .4byte 0x000008c4
-_08114D4C:
- ldr r0, _08114D58 @ =0x000008c4
- add r0, r9
- adds r0, r7, r0
- strb r3, [r0]
- b _08114D76
- .align 2, 0
-_08114D58: .4byte 0x000008c4
-_08114D5C:
- ldr r0, _08114D68 @ =0x000008c4
- add r0, r9
- adds r0, r7, r0
- movs r1, 0
- b _08114D74
- .align 2, 0
-_08114D68: .4byte 0x000008c4
-_08114D6C:
- ldr r1, _08114DAC @ =0x000008c4
- adds r0, r6, r1
- adds r0, r5, r0
- movs r1, 0x4
-_08114D74:
- strb r1, [r0]
-_08114D76:
- mov r3, r10
- ldr r2, _08114DB0 @ =0x02014800
- adds r0, r2, 0
- adds r0, 0x84
- ldr r4, [sp]
- adds r0, r4, r0
- adds r4, r2, 0
-_08114D84:
- ldrb r0, [r0]
- cmp r3, r0
- bge _08114D8E
- bl _08114410
-_08114D8E:
- ldr r5, [sp, 0x8]
- str r5, [sp]
- cmp r5, 0x3F
- bgt _08114D9A
- bl _081143F2
-_08114D9A:
- ldr r0, [sp, 0x4]
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08114DAC: .4byte 0x000008c4
-_08114DB0: .4byte 0x02014800
- thumb_func_end unref_sub_81143CC
-
- thumb_func_start sub_8114DB4
-sub_8114DB4: @ 8114DB4
- push {lr}
- lsls r1, 24
- lsrs r3, r1, 24
- ldr r2, _08114DDC @ =0x02014800
- lsrs r1, 25
- lsls r1, 2
- lsls r0, 7
- adds r1, r0
- ldr r0, _08114DE0 @ =0x000040c4
- adds r2, r0
- adds r1, r2
- ldr r2, [r1]
- movs r0, 0x1
- ands r3, r0
- cmp r3, 0
- beq _08114DE4
- ldrb r0, [r2]
- movs r1, 0xF0
- b _08114DE8
- .align 2, 0
-_08114DDC: .4byte 0x02014800
-_08114DE0: .4byte 0x000040c4
-_08114DE4:
- ldrb r0, [r2]
- movs r1, 0xF
-_08114DE8:
- orrs r0, r1
- strb r0, [r2]
- pop {r0}
- bx r0
- thumb_func_end sub_8114DB4
-
- thumb_func_start sub_8114DF0
-sub_8114DF0: @ 8114DF0
- push {lr}
- lsls r1, 24
- lsrs r3, r1, 24
- ldr r2, _08114E28 @ =0x02014800
- lsrs r1, 25
- lsls r1, 2
- lsls r0, 7
- adds r1, r0
- ldr r0, _08114E2C @ =0x000040c4
- adds r2, r0
- adds r1, r2
- ldr r2, [r1]
- movs r0, 0xC0
- lsls r0, 7
- adds r1, r2, r0
- movs r0, 0x1
- ands r3, r0
- cmp r3, 0
- beq _08114E30
- ldrb r1, [r1]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- bne _08114E42
- ldrb r1, [r2]
- movs r0, 0xF
- b _08114E3E
- .align 2, 0
-_08114E28: .4byte 0x02014800
-_08114E2C: .4byte 0x000040c4
-_08114E30:
- ldrb r1, [r1]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _08114E42
- ldrb r1, [r2]
- movs r0, 0xF0
-_08114E3E:
- ands r0, r1
- strb r0, [r2]
-_08114E42:
- pop {r0}
- bx r0
- thumb_func_end sub_8114DF0
-
- thumb_func_start sub_8114E48
-sub_8114E48: @ 8114E48
- push {r4-r7,lr}
- adds r4, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- ldr r1, _08114E6C @ =0x02014800
- ldr r2, _08114E70 @ =0x0000a0c4
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0
- bne _08114E60
- b _08114F5E
-_08114E60:
- movs r1, 0
- movs r3, 0
- cmp r4, 0
- bne _08114E74
- movs r1, 0x1
- b _08114EA6
- .align 2, 0
-_08114E6C: .4byte 0x02014800
-_08114E70: .4byte 0x0000a0c4
-_08114E74:
- subs r0, r4, 0x1
- lsls r0, 5
- adds r2, r3, r0
- adds r0, r5, 0
- adds r0, 0xC4
- adds r0, r2, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08114EA6
- ldr r7, _08114EC4 @ =0x000008c4
- adds r0, r5, r7
- adds r0, r2, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08114EA6
- adds r3, 0x1
- cmp r3, 0x1F
- bgt _08114EA6
- cmp r4, 0
- bne _08114E74
- lsls r0, r1, 24
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r1, r0, 24
-_08114EA6:
- cmp r3, 0x20
- bne _08114EB4
- lsls r0, r1, 24
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r1, r0, 24
-_08114EB4:
- movs r3, 0
- cmp r4, 0x3F
- bne _08114EC8
- lsls r0, r1, 24
- movs r7, 0x80
- lsls r7, 17
- adds r0, r7
- b _08114EF8
- .align 2, 0
-_08114EC4: .4byte 0x000008c4
-_08114EC8:
- adds r0, r4, 0x1
- lsls r0, 5
- adds r2, r3, r0
- adds r0, r5, 0
- adds r0, 0xC4
- adds r0, r2, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08114EFA
- ldr r7, _08114F64 @ =0x000008c4
- adds r0, r5, r7
- adds r0, r2, r0
- ldrb r0, [r0]
- cmp r0, 0
- bne _08114EFA
- adds r3, 0x1
- cmp r3, 0x1F
- bgt _08114EFA
- cmp r4, 0x3F
- bne _08114EC8
- lsls r0, r1, 24
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
-_08114EF8:
- lsrs r1, r0, 24
-_08114EFA:
- cmp r3, 0x20
- bne _08114F08
- lsls r0, r1, 24
- movs r2, 0x80
- lsls r2, 17
- adds r0, r2
- lsrs r1, r0, 24
-_08114F08:
- cmp r1, 0x2
- beq _08114F5E
- subs r0, r6, 0x2
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r0, 0
- bge _08114F18
- movs r1, 0
-_08114F18:
- adds r0, r6, 0x2
- lsls r0, 24
- lsrs r2, r0, 24
- asrs r0, 24
- cmp r0, 0x3F
- ble _08114F26
- movs r2, 0x3F
-_08114F26:
- lsls r1, 24
- asrs r3, r1, 24
- lsls r0, r2, 24
- asrs r2, r0, 24
- adds r6, r1, 0
- adds r7, r0, 0
- cmp r3, r2
- bge _08114F7C
- cmp r4, 0
- beq _08114F7C
- subs r0, r4, 0x1
- lsls r5, r0, 7
- ldr r0, _08114F68 @ =0x020188c4
- mov r12, r0
-_08114F42:
- asrs r0, r3, 1
- lsls r0, 2
- adds r0, r5
- add r0, r12
- ldr r1, [r0]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _08114F6C
- ldrb r1, [r1]
- movs r0, 0xF0
-_08114F58:
- ands r0, r1
- cmp r0, 0
- beq _08114F72
-_08114F5E:
- movs r0, 0x1
- b _08114FCA
- .align 2, 0
-_08114F64: .4byte 0x000008c4
-_08114F68: .4byte 0x020188c4
-_08114F6C:
- ldrb r1, [r1]
- movs r0, 0xF
- b _08114F58
-_08114F72:
- adds r3, 0x1
- cmp r3, r2
- bge _08114F7C
- cmp r4, 0
- bne _08114F42
-_08114F7C:
- asrs r3, r6, 24
- asrs r1, r7, 24
- cmp r3, r1
- bge _08114FC8
- cmp r4, 0x3F
- beq _08114FC8
- adds r0, r4, 0x1
- lsls r5, r0, 7
- ldr r6, _08114FB0 @ =0x020188c4
- adds r2, r1, 0
-_08114F90:
- asrs r0, r3, 1
- lsls r0, 2
- adds r0, r5
- adds r0, r6
- ldr r1, [r0]
- movs r0, 0x1
- ands r0, r3
- cmp r0, 0
- beq _08114FB4
- ldrb r1, [r1]
- movs r0, 0xF0
- ands r0, r1
- cmp r0, 0
- beq _08114FBE
- b _08114F5E
- .align 2, 0
-_08114FB0: .4byte 0x020188c4
-_08114FB4:
- ldrb r1, [r1]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _08114F5E
-_08114FBE:
- adds r3, 0x1
- cmp r3, r2
- bge _08114FC8
- cmp r4, 0x3F
- bne _08114F90
-_08114FC8:
- movs r0, 0
-_08114FCA:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8114E48
-
- thumb_func_start HBlankCB_EvolutionScene
-HBlankCB_EvolutionScene: @ 8114FD0
- bx lr
- thumb_func_end HBlankCB_EvolutionScene
-
- thumb_func_start VBlankCB_EvolutionScene
-VBlankCB_EvolutionScene: @ 8114FD4
- push {lr}
- ldr r1, _08115034 @ =REG_BG0CNT
- ldr r2, _08115038 @ =0x00009803
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x8
- ldr r0, _0811503C @ =gUnknown_030042A4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _08115040 @ =gUnknown_030042A0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _08115044 @ =gUnknown_030042C0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _08115048 @ =gUnknown_030041B4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _0811504C @ =gUnknown_03004288
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _08115050 @ =gUnknown_03004280
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _08115054 @ =gUnknown_030041B0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _08115058 @ =gUnknown_030041B8
- ldrh r0, [r0]
- strh r0, [r1]
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- bl sub_8089668
- pop {r0}
- bx r0
- .align 2, 0
-_08115034: .4byte REG_BG0CNT
-_08115038: .4byte 0x00009803
-_0811503C: .4byte gUnknown_030042A4
-_08115040: .4byte gUnknown_030042A0
-_08115044: .4byte gUnknown_030042C0
-_08115048: .4byte gUnknown_030041B4
-_0811504C: .4byte gUnknown_03004288
-_08115050: .4byte gUnknown_03004280
-_08115054: .4byte gUnknown_030041B0
-_08115058: .4byte gUnknown_030041B8
- thumb_func_end VBlankCB_EvolutionScene
-
- thumb_func_start VBlankCB_TradeEvolutionScene
-VBlankCB_TradeEvolutionScene: @ 811505C
- push {lr}
- ldr r1, _081150B4 @ =REG_BG0HOFS
- ldr r0, _081150B8 @ =gUnknown_030042A4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150BC @ =gUnknown_030042A0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150C0 @ =gUnknown_030042C0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150C4 @ =gUnknown_030041B4
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150C8 @ =gUnknown_03004288
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150CC @ =gUnknown_03004280
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150D0 @ =gUnknown_030041B0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, _081150D4 @ =gUnknown_030041B8
- ldrh r0, [r0]
- strh r0, [r1]
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- bl sub_8089668
- pop {r0}
- bx r0
- .align 2, 0
-_081150B4: .4byte REG_BG0HOFS
-_081150B8: .4byte gUnknown_030042A4
-_081150BC: .4byte gUnknown_030042A0
-_081150C0: .4byte gUnknown_030042C0
-_081150C4: .4byte gUnknown_030041B4
-_081150C8: .4byte gUnknown_03004288
-_081150CC: .4byte gUnknown_03004280
-_081150D0: .4byte gUnknown_030041B0
-_081150D4: .4byte gUnknown_030041B8
- thumb_func_end VBlankCB_TradeEvolutionScene
-
- thumb_func_start sub_81150D8
-sub_81150D8: @ 81150D8
- push {lr}
- ldr r0, _081150F4 @ =gBattleCommunication
- ldrb r1, [r0, 0x1]
- lsls r1, 28
- movs r0, 0x90
- lsls r0, 23
- adds r1, r0
- lsrs r1, 24
- movs r0, 0xC8
- bl sub_814A880
- pop {r0}
- bx r0
- .align 2, 0
-_081150F4: .4byte gBattleCommunication
- thumb_func_end sub_81150D8
-
- thumb_func_start HBlankCB_TradeEvolutionScene
-HBlankCB_TradeEvolutionScene: @ 81150F8
- bx lr
- thumb_func_end HBlankCB_TradeEvolutionScene
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_effect_helpers.s b/asm/field_effect_helpers.s
deleted file mode 100644
index 9df9dfd8d..000000000
--- a/asm/field_effect_helpers.s
+++ /dev/null
@@ -1,4349 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start SetUpReflection
-SetUpReflection: @ 812680C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r6, r0, 0
- adds r4, r1, 0
- lsls r5, r2, 24
- lsrs r5, 24
- movs r0, 0x20
- ldrsh r1, [r4, r0]
- movs r0, 0x22
- ldrsh r2, [r4, r0]
- adds r0, r4, 0
- movs r3, 0x98
- bl obj_unfreeze
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _081268BC @ =gSprites
- adds r7, r1, r0
- ldr r0, _081268C0 @ =sub_81269E0
- str r0, [r7, 0x1C]
- ldrb r1, [r7, 0x5]
- movs r0, 0xC
- orrs r1, r0
- strb r1, [r7, 0x5]
- ldr r2, _081268C4 @ =gUnknown_0830FD14
- lsrs r0, r1, 4
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 4
- movs r2, 0xF
- ands r1, r2
- orrs r1, r0
- strb r1, [r7, 0x5]
- movs r1, 0x3F
- adds r1, r7
- mov r8, r1
- ldrb r0, [r1]
- movs r1, 0x40
- orrs r0, r1
- mov r1, r8
- strb r0, [r1]
- ldr r0, _081268C8 @ =gDummySpriteAnimTable
- str r0, [r7, 0x8]
- adds r0, r7, 0
- movs r1, 0
- bl StartSpriteAnim
- ldr r0, _081268CC @ =gDummySpriteAffineAnimTable
- str r0, [r7, 0x10]
- mov r1, r8
- ldrb r0, [r1]
- movs r1, 0x8
- orrs r0, r1
- mov r1, r8
- strb r0, [r1]
- adds r2, r7, 0
- adds r2, 0x42
- ldrb r1, [r2]
- movs r0, 0x3F
- ands r0, r1
- strb r0, [r2]
- ldrh r0, [r4, 0x2E]
- strh r0, [r7, 0x2E]
- ldrb r0, [r6, 0x8]
- strh r0, [r7, 0x30]
- strh r5, [r7, 0x3C]
- adds r0, r6, 0
- adds r1, r7, 0
- bl npc_pal_op
- cmp r5, 0
- bne _081268B2
- ldrb r0, [r7, 0x1]
- movs r1, 0x4
- negs r1, r1
- ands r1, r0
- movs r0, 0x1
- orrs r1, r0
- strb r1, [r7, 0x1]
-_081268B2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081268BC: .4byte gSprites
-_081268C0: .4byte sub_81269E0
-_081268C4: .4byte gUnknown_0830FD14
-_081268C8: .4byte gDummySpriteAnimTable
-_081268CC: .4byte gDummySpriteAffineAnimTable
- thumb_func_end SetUpReflection
-
- thumb_func_start sub_81268D0
-sub_81268D0: @ 81268D0
- push {lr}
- ldrb r0, [r0, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldrh r0, [r0, 0xA]
- subs r0, 0x2
- lsls r0, 16
- asrs r0, 16
- pop {r1}
- bx r1
- thumb_func_end sub_81268D0
-
- thumb_func_start npc_pal_op
-npc_pal_op: @ 81268E4
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r1, _0812693C @ =gUnknown_08401E2C
- mov r0, sp
- movs r2, 0x6
- bl memcpy
- movs r0, 0
- strh r0, [r4, 0x32]
- ldrb r0, [r5, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldrb r1, [r0, 0xC]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08126940
- ldrb r0, [r5, 0x1F]
- bl sub_8057450
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08126926
- ldrb r0, [r5, 0x1E]
- bl sub_8057450
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08126940
-_08126926:
- subs r0, 0x1
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x32]
- ldrb r1, [r4, 0x5]
- lsrs r1, 4
- adds r0, r5, 0
- bl npc_pal_op_A
- b _0812694A
- .align 2, 0
-_0812693C: .4byte gUnknown_08401E2C
-_08126940:
- ldrb r1, [r4, 0x5]
- lsrs r1, 4
- adds r0, r5, 0
- bl npc_pal_op_B
-_0812694A:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end npc_pal_op
-
- thumb_func_start npc_pal_op_B
-npc_pal_op_B: @ 8126954
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- ldrb r0, [r0, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r2, r0, 0
- ldrh r1, [r2, 0x4]
- ldr r0, _08126980 @ =0x000011ff
- cmp r1, r0
- beq _081269A8
- ldrb r0, [r2, 0xC]
- movs r1, 0xF
- ands r1, r0
- cmp r1, 0
- bne _08126984
- ldrh r0, [r2, 0x2]
- adds r1, r4, 0
- bl npc_load_two_palettes__no_record
- b _081269A2
- .align 2, 0
-_08126980: .4byte 0x000011ff
-_08126984:
- cmp r1, 0xA
- bne _08126992
- ldrh r0, [r2, 0x2]
- adds r1, r4, 0
- bl npc_load_two_palettes__and_record
- b _081269A2
-_08126992:
- adds r0, r4, 0
- bl npc_paltag_by_palslot
- lsls r0, 16
- lsrs r0, 16
- adds r1, r4, 0
- bl pal_patch_for_npc
-_081269A2:
- adds r0, r4, 0
- bl sub_807D78C
-_081269A8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end npc_pal_op_B
-
- thumb_func_start npc_pal_op_A
-npc_pal_op_A: @ 81269B0
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- ldrb r0, [r0, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r2, r0, 0
- ldrh r1, [r2, 0x4]
- ldr r0, _081269DC @ =0x000011ff
- cmp r1, r0
- beq _081269D4
- adds r0, r1, 0
- adds r1, r4, 0
- bl pal_patch_for_npc
- adds r0, r4, 0
- bl sub_807D78C
-_081269D4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081269DC: .4byte 0x000011ff
- thumb_func_end npc_pal_op_A
-
- thumb_func_start sub_81269E0
-sub_81269E0: @ 81269E0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r4, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r4, r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126A28 @ =gMapObjects
- adds r7, r0, r1
- ldrb r1, [r7, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126A2C @ =gSprites
- adds r5, r0, r1
- ldr r0, [r7]
- ldr r1, _08126A30 @ =0x00020001
- ands r0, r1
- cmp r0, r1
- bne _08126A18
- ldrb r1, [r7, 0x8]
- movs r2, 0x30
- ldrsh r0, [r4, r2]
- cmp r1, r0
- beq _08126A34
-_08126A18:
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- b _08126B3E
- .align 2, 0
-_08126A28: .4byte gMapObjects
-_08126A2C: .4byte gSprites
-_08126A30: .4byte 0x00020001
-_08126A34:
- ldr r1, _08126B4C @ =gUnknown_0830FD14
- ldrb r0, [r5, 0x5]
- lsrs r0, 4
- adds r0, r1
- ldrb r1, [r0]
- lsls r1, 4
- ldrb r2, [r4, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- ldrb r1, [r5, 0x1]
- lsrs r1, 6
- lsls r1, 6
- ldrb r2, [r4, 0x1]
- movs r3, 0x3F
- adds r0, r3, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldrb r0, [r5, 0x3]
- lsrs r0, 6
- lsls r0, 6
- ldrb r2, [r4, 0x3]
- adds r1, r3, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x3]
- ldrb r0, [r5, 0x3]
- lsls r0, 26
- lsrs r0, 27
- movs r2, 0x10
- orrs r0, r2
- lsls r0, 1
- subs r2, 0x4F
- mov r9, r2
- ands r1, r2
- orrs r1, r0
- strb r1, [r4, 0x3]
- ldrh r1, [r5, 0x4]
- lsls r1, 22
- lsrs r1, 22
- ldrh r2, [r4, 0x4]
- ldr r0, _08126B50 @ =0xfffffc00
- ands r0, r2
- orrs r0, r1
- strh r0, [r4, 0x4]
- ldr r0, [r5, 0x18]
- str r0, [r4, 0x18]
- adds r0, r5, 0
- adds r0, 0x42
- ldrb r0, [r0]
- lsls r0, 26
- lsrs r0, 26
- adds r2, r4, 0
- adds r2, 0x42
- ands r3, r0
- ldrb r1, [r2]
- movs r0, 0x40
- negs r0, r0
- ands r0, r1
- orrs r0, r3
- strb r0, [r2]
- movs r0, 0x3E
- adds r0, r5
- mov r8, r0
- ldrb r0, [r0]
- adds r6, r4, 0
- adds r6, 0x3E
- movs r1, 0x4
- ands r1, r0
- ldrb r2, [r6]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6]
- ldrh r0, [r5, 0x20]
- strh r0, [r4, 0x20]
- adds r0, r7, 0
- bl sub_81268D0
- ldrh r1, [r5, 0x22]
- adds r0, r1
- ldrh r1, [r4, 0x32]
- adds r1, r0
- strh r1, [r4, 0x22]
- adds r0, r5, 0
- adds r0, 0x28
- ldrb r1, [r0]
- adds r0, r4, 0
- adds r0, 0x28
- strb r1, [r0]
- adds r0, r5, 0
- adds r0, 0x29
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x29
- strb r0, [r1]
- ldrh r0, [r5, 0x24]
- strh r0, [r4, 0x24]
- ldrh r0, [r5, 0x26]
- negs r0, r0
- strh r0, [r4, 0x26]
- mov r2, r8
- ldrb r0, [r2]
- movs r1, 0x2
- ands r1, r0
- ldrb r2, [r6]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6]
- movs r1, 0x3C
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08126B3E
- ldrb r0, [r4, 0x3]
- mov r2, r9
- ands r2, r0
- strb r2, [r4, 0x3]
- ldrb r0, [r5, 0x3]
- lsls r0, 26
- lsrs r0, 27
- movs r1, 0x8
- ands r0, r1
- cmp r0, 0
- beq _08126B3E
- movs r1, 0x2
- adds r0, r2, 0
- orrs r0, r1
- strb r0, [r4, 0x3]
-_08126B3E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08126B4C: .4byte gUnknown_0830FD14
-_08126B50: .4byte 0xfffffc00
- thumb_func_end sub_81269E0
-
- thumb_func_start sub_8126B54
-sub_8126B54: @ 8126B54
- push {r4,lr}
- ldr r0, _08126B9C @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x20]
- movs r1, 0
- movs r2, 0
- movs r3, 0x52
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- cmp r0, 0x40
- beq _08126B92
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08126BA0 @ =gSprites
- adds r1, r0
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- movs r3, 0x4
- orrs r0, r3
- strb r0, [r1, 0x5]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- orrs r0, r3
- strb r0, [r1]
-_08126B92:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08126B9C: .4byte gFieldEffectObjectTemplatePointers
-_08126BA0: .4byte gSprites
- thumb_func_end sub_8126B54
-
- thumb_func_start objid_set_invisible
-objid_set_invisible: @ 8126BA4
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08126BC0 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1]
- bx lr
- .align 2, 0
-_08126BC0: .4byte gSprites
- thumb_func_end objid_set_invisible
-
- thumb_func_start sub_8126BC4
-sub_8126BC4: @ 8126BC4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 16
- lsrs r7, r2, 16
- lsls r3, 16
- lsrs r6, r3, 16
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- ldr r1, _08126C68 @ =gSprites
- adds r2, r0, r1
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _08126C0E
- movs r0, 0x2E
- ldrsh r1, [r2, r0]
- lsls r0, r7, 16
- asrs r0, 16
- cmp r1, r0
- bne _08126C0E
- movs r0, 0x30
- ldrsh r1, [r2, r0]
- lsls r0, r6, 16
- asrs r0, 16
- cmp r1, r0
- beq _08126C5A
-_08126C0E:
- lsls r0, r7, 16
- asrs r0, 16
- lsls r1, r6, 16
- asrs r1, 16
- mov r4, sp
- adds r4, 0x2
- mov r2, sp
- adds r3, r4, 0
- bl sub_80603CC
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- ldr r1, _08126C68 @ =gSprites
- adds r2, r0, r1
- mov r0, sp
- ldrh r0, [r0]
- adds r0, 0x8
- strh r0, [r2, 0x20]
- ldrh r0, [r4]
- adds r0, 0x8
- strh r0, [r2, 0x22]
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r3]
- strh r7, [r2, 0x2E]
- strh r6, [r2, 0x30]
- mov r1, r8
- subs r1, 0x1
- lsls r1, 24
- lsrs r1, 24
- adds r0, r2, 0
- bl StartSpriteAnim
-_08126C5A:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08126C68: .4byte gSprites
- thumb_func_end sub_8126BC4
-
- thumb_func_start FldEff_Shadow
-FldEff_Shadow: @ 8126C6C
- push {r4,r5,lr}
- ldr r5, _08126CF8 @ =gUnknown_0202FF84
- ldrb r0, [r5]
- ldrb r1, [r5, 0x4]
- ldrb r2, [r5, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08126CFC @ =gMapObjects
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r0, [r1, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r4, r0, 0
- ldr r2, _08126D00 @ =gFieldEffectObjectTemplatePointers
- ldr r1, _08126D04 @ =gUnknown_08401E32
- ldrb r0, [r4, 0xC]
- lsls r0, 26
- lsrs r0, 30
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0
- movs r3, 0x94
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08126CF0
- ldr r0, _08126D08 @ =gSprites
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- ldr r0, [r5]
- strh r0, [r2, 0x2E]
- ldr r0, [r5, 0x4]
- strh r0, [r2, 0x30]
- ldr r0, [r5, 0x8]
- strh r0, [r2, 0x32]
- ldrh r1, [r4, 0xA]
- lsls r1, 16
- asrs r1, 17
- ldr r3, _08126D0C @ =gUnknown_08401E36
- ldrb r0, [r4, 0xC]
- lsls r0, 26
- lsrs r0, 30
- lsls r0, 1
- adds r0, r3
- ldrh r0, [r0]
- subs r1, r0
- strh r1, [r2, 0x34]
-_08126CF0:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08126CF8: .4byte gUnknown_0202FF84
-_08126CFC: .4byte gMapObjects
-_08126D00: .4byte gFieldEffectObjectTemplatePointers
-_08126D04: .4byte gUnknown_08401E32
-_08126D08: .4byte gSprites
-_08126D0C: .4byte gUnknown_08401E36
- thumb_func_end FldEff_Shadow
-
- thumb_func_start oamc_shadow
-oamc_shadow: @ 8126D10
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r0, [r5, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r5, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- beq _08126D3E
- adds r0, r5, 0
- movs r1, 0x3
- bl FieldEffectStop
- b _08126DC4
-_08126D3E:
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126DCC @ =gMapObjects
- adds r4, r0, r1
- ldrb r0, [r4, 0x4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08126DD0 @ =gSprites
- adds r1, r0
- ldrb r0, [r1, 0x5]
- movs r2, 0xC
- ands r2, r0
- ldrb r3, [r5, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r5, 0x5]
- ldrh r0, [r1, 0x20]
- strh r0, [r5, 0x20]
- ldrh r0, [r5, 0x34]
- ldrh r1, [r1, 0x22]
- adds r0, r1
- strh r0, [r5, 0x22]
- ldr r0, [r4]
- ldr r1, _08126DD4 @ =0x00400001
- ands r0, r1
- cmp r0, r1
- bne _08126DBC
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsPokeGrass
- lsls r0, 24
- cmp r0, 0
- bne _08126DBC
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _08126DBC
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsSurfableWaterOrUnderwater
- lsls r0, 24
- cmp r0, 0
- bne _08126DBC
- ldrb r0, [r4, 0x1E]
- bl MetatileBehavior_IsReflective
- lsls r0, 24
- cmp r0, 0
- bne _08126DBC
- ldrb r0, [r4, 0x1F]
- bl MetatileBehavior_IsReflective
- lsls r0, 24
- cmp r0, 0
- beq _08126DC4
-_08126DBC:
- adds r0, r5, 0
- movs r1, 0x3
- bl FieldEffectStop
-_08126DC4:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08126DCC: .4byte gMapObjects
-_08126DD0: .4byte gSprites
-_08126DD4: .4byte 0x00400001
- thumb_func_end oamc_shadow
-
- thumb_func_start FldEff_TallGrass
-FldEff_TallGrass: @ 8126DD8
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _08126E70 @ =gUnknown_0202FF84
- ldrh r1, [r5]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r5, 0x4]
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08126E74 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x10]
- mov r1, sp
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r3, 0
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08126E64
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126E78 @ =gSprites
- adds r3, r0, r1
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- movs r0, 0x3
- ldrb r1, [r5, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x5]
- ldr r0, [r5, 0x8]
- strh r0, [r3, 0x2E]
- ldr r0, [r5]
- strh r0, [r3, 0x30]
- ldr r0, [r5, 0x4]
- strh r0, [r3, 0x32]
- ldr r0, [r5, 0x10]
- strh r0, [r3, 0x34]
- ldr r0, [r5, 0x14]
- strh r0, [r3, 0x36]
- ldr r0, [r5, 0x18]
- strh r0, [r3, 0x38]
- ldr r0, [r5, 0x1C]
- cmp r0, 0
- beq _08126E64
- adds r0, r3, 0
- movs r1, 0x4
- bl SeekSpriteAnim
-_08126E64:
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08126E70: .4byte gUnknown_0202FF84
-_08126E74: .4byte gFieldEffectObjectTemplatePointers
-_08126E78: .4byte gSprites
- thumb_func_end FldEff_TallGrass
-
- thumb_func_start unc_grass_normal
-unc_grass_normal: @ 8126E7C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r0, [r5, 0x38]
- lsrs r4, r0, 8
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r3, _08126F24 @ =gUnknown_0202E844
- ldrb r1, [r3]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08126EC6
- ldr r2, _08126F28 @ =gSaveBlock1
- movs r0, 0x5
- ldrsb r0, [r2, r0]
- cmp r0, r4
- bne _08126EAC
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- cmp r0, r7
- beq _08126EC6
-_08126EAC:
- ldr r1, [r3, 0x4]
- ldrh r0, [r5, 0x30]
- subs r0, r1
- strh r0, [r5, 0x30]
- ldr r1, [r3, 0x8]
- ldrh r0, [r5, 0x32]
- subs r0, r1
- strh r0, [r5, 0x32]
- ldrb r1, [r2, 0x5]
- lsls r1, 8
- ldrb r0, [r2, 0x4]
- orrs r0, r1
- strh r0, [r5, 0x38]
-_08126EC6:
- ldrh r0, [r5, 0x34]
- lsrs r1, r0, 8
- mov r8, r1
- lsls r0, 24
- lsrs r4, r0, 24
- ldrh r0, [r5, 0x36]
- lsls r0, 24
- lsrs r7, r0, 24
- movs r2, 0x30
- ldrsh r0, [r5, r2]
- movs r2, 0x32
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r6, r0, 24
- mov r0, r8
- adds r1, r4, 0
- adds r2, r7, 0
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _08126F1A
- adds r0, r6, 0
- bl MetatileBehavior_IsTallGrass
- lsls r0, 24
- cmp r0, 0
- beq _08126F1A
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _08126F2C
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08126F2C
-_08126F1A:
- adds r0, r5, 0
- movs r1, 0x4
- bl FieldEffectStop
- b _08126F70
- .align 2, 0
-_08126F24: .4byte gUnknown_0202E844
-_08126F28: .4byte gSaveBlock1
-_08126F2C:
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08126F7C @ =gMapObjects
- adds r2, r0, r1
- ldr r0, [r2, 0x10]
- ldr r1, [r5, 0x30]
- cmp r0, r1
- beq _08126F4C
- ldr r0, [r2, 0x14]
- cmp r0, r1
- beq _08126F4C
- movs r0, 0x1
- strh r0, [r5, 0x3C]
-_08126F4C:
- movs r6, 0
- adds r0, r5, 0
- adds r0, 0x2B
- ldrb r0, [r0]
- cmp r0, 0
- bne _08126F5A
- movs r6, 0x4
-_08126F5A:
- adds r0, r5, 0
- movs r1, 0
- bl sub_806487C
- ldrh r1, [r5, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- adds r2, r6, 0
- bl sub_812882C
-_08126F70:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08126F7C: .4byte gMapObjects
- thumb_func_end unc_grass_normal
-
- thumb_func_start FldEff_JumpTallGrass
-FldEff_JumpTallGrass: @ 8126F80
- push {r4,lr}
- ldr r4, _08126FE4 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0xC
- bl sub_8060470
- ldr r0, _08126FE8 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x28]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08126FDC
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08126FEC @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r2, 0x2E]
- movs r0, 0xC
- strh r0, [r2, 0x30]
-_08126FDC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08126FE4: .4byte gUnknown_0202FF84
-_08126FE8: .4byte gFieldEffectObjectTemplatePointers
-_08126FEC: .4byte gSprites
- thumb_func_end FldEff_JumpTallGrass
-
- thumb_func_start sub_8126FF0
-sub_8126FF0: @ 8126FF0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- movs r5, 0
- ldr r0, _08127060 @ =gSprites
- mov r8, r0
- lsls r3, 16
- asrs r3, 16
- lsls r4, 16
- asrs r4, 16
-_08127014:
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- mov r1, r8
- adds r2, r0, r1
- adds r0, r2, 0
- adds r0, 0x3E
- ldrb r0, [r0]
- lsls r0, 31
- cmp r0, 0
- beq _08127068
- ldr r1, [r2, 0x1C]
- ldr r0, _08127064 @ =unc_grass_normal
- cmp r1, r0
- bne _08127068
- movs r1, 0x30
- ldrsh r0, [r2, r1]
- cmp r3, r0
- bne _08127068
- movs r1, 0x32
- ldrsh r0, [r2, r1]
- cmp r4, r0
- bne _08127068
- ldrh r1, [r2, 0x34]
- lsrs r0, r1, 8
- cmp r12, r0
- bne _08127068
- movs r0, 0xFF
- ands r0, r1
- cmp r7, r0
- bne _08127068
- movs r1, 0x36
- ldrsh r0, [r2, r1]
- cmp r6, r0
- bne _08127068
- adds r0, r5, 0
- b _08127074
- .align 2, 0
-_08127060: .4byte gSprites
-_08127064: .4byte unc_grass_normal
-_08127068:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x3F
- bls _08127014
- movs r0, 0x40
-_08127074:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8126FF0
-
- thumb_func_start FldEff_LongGrass
-FldEff_LongGrass: @ 8127080
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _0812711C @ =gUnknown_0202FF84
- ldrh r1, [r5]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r5, 0x4]
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127120 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x3C]
- mov r1, sp
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r3, 0
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08127110
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127124 @ =gSprites
- adds r4, r0, r1
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- ldrb r0, [r5, 0x8]
- bl ZCoordToPriority
- movs r1, 0x3
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- ldr r0, [r5, 0x8]
- strh r0, [r4, 0x2E]
- ldr r0, [r5]
- strh r0, [r4, 0x30]
- ldr r0, [r5, 0x4]
- strh r0, [r4, 0x32]
- ldr r0, [r5, 0x10]
- strh r0, [r4, 0x34]
- ldr r0, [r5, 0x14]
- strh r0, [r4, 0x36]
- ldr r0, [r5, 0x18]
- strh r0, [r4, 0x38]
- ldr r0, [r5, 0x1C]
- cmp r0, 0
- beq _08127110
- adds r0, r4, 0
- movs r1, 0x6
- bl SeekSpriteAnim
-_08127110:
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812711C: .4byte gUnknown_0202FF84
-_08127120: .4byte gFieldEffectObjectTemplatePointers
-_08127124: .4byte gSprites
- thumb_func_end FldEff_LongGrass
-
- thumb_func_start unc_grass_tall
-unc_grass_tall: @ 8127128
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r0, [r5, 0x38]
- lsrs r7, r0, 8
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r3, _081271D0 @ =gUnknown_0202E844
- ldrb r1, [r3]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08127172
- ldr r2, _081271D4 @ =gSaveBlock1
- movs r0, 0x5
- ldrsb r0, [r2, r0]
- cmp r0, r7
- bne _08127158
- movs r0, 0x4
- ldrsb r0, [r2, r0]
- cmp r0, r6
- beq _08127172
-_08127158:
- ldr r1, [r3, 0x4]
- ldrh r0, [r5, 0x30]
- subs r0, r1
- strh r0, [r5, 0x30]
- ldr r1, [r3, 0x8]
- ldrh r0, [r5, 0x32]
- subs r0, r1
- strh r0, [r5, 0x32]
- ldrb r1, [r2, 0x5]
- lsls r1, 8
- ldrb r0, [r2, 0x4]
- orrs r0, r1
- strh r0, [r5, 0x38]
-_08127172:
- ldrh r0, [r5, 0x34]
- lsrs r1, r0, 8
- mov r8, r1
- lsls r0, 24
- lsrs r7, r0, 24
- ldrh r0, [r5, 0x36]
- lsls r0, 24
- lsrs r6, r0, 24
- movs r2, 0x30
- ldrsh r0, [r5, r2]
- movs r2, 0x32
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- mov r0, r8
- adds r1, r7, 0
- adds r2, r6, 0
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _081271C6
- adds r0, r4, 0
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _081271C6
- movs r1, 0x3C
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _081271D8
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081271D8
-_081271C6:
- adds r0, r5, 0
- movs r1, 0x11
- bl FieldEffectStop
- b _0812720E
- .align 2, 0
-_081271D0: .4byte gUnknown_0202E844
-_081271D4: .4byte gSaveBlock1
-_081271D8:
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812721C @ =gMapObjects
- adds r2, r0, r1
- ldr r0, [r2, 0x10]
- ldr r1, [r5, 0x30]
- cmp r0, r1
- beq _081271F8
- ldr r0, [r2, 0x14]
- cmp r0, r1
- beq _081271F8
- movs r0, 0x1
- strh r0, [r5, 0x3C]
-_081271F8:
- adds r0, r5, 0
- movs r1, 0
- bl sub_806487C
- ldrh r1, [r5, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- movs r2, 0
- bl sub_812882C
-_0812720E:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812721C: .4byte gMapObjects
- thumb_func_end unc_grass_tall
-
- thumb_func_start FldEff_JumpLongGrass
-FldEff_JumpLongGrass: @ 8127220
- push {r4,lr}
- ldr r4, _08127284 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127288 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x40]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0812727C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _0812728C @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r2, 0x2E]
- movs r0, 0x12
- strh r0, [r2, 0x30]
-_0812727C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127284: .4byte gUnknown_0202FF84
-_08127288: .4byte gFieldEffectObjectTemplatePointers
-_0812728C: .4byte gSprites
- thumb_func_end FldEff_JumpLongGrass
-
- thumb_func_start FldEff_ShortGrass
-FldEff_ShortGrass: @ 8127290
- push {r4-r6,lr}
- ldr r6, _08127324 @ =gUnknown_0202FF84
- ldrb r0, [r6]
- ldrb r1, [r6, 0x4]
- ldrb r2, [r6, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _08127328 @ =gMapObjects
- adds r5, r1, r0
- ldr r0, _0812732C @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x78]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0812731C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r4, _08127330 @ =gSprites
- adds r2, r4
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x5]
- movs r1, 0xC
- ands r1, r0
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r6]
- strh r0, [r2, 0x2E]
- ldr r0, [r6, 0x4]
- strh r0, [r2, 0x30]
- ldr r0, [r6, 0x8]
- strh r0, [r2, 0x32]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x20]
- strh r0, [r2, 0x34]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x22]
- strh r0, [r2, 0x36]
-_0812731C:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08127324: .4byte gUnknown_0202FF84
-_08127328: .4byte gMapObjects
-_0812732C: .4byte gFieldEffectObjectTemplatePointers
-_08127330: .4byte gSprites
- thumb_func_end FldEff_ShortGrass
-
- thumb_func_start sub_8127334
-sub_8127334: @ 8127334
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _08127372
- ldr r5, _0812737C @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r5
- ldrb r0, [r1, 0x2]
- lsls r0, 29
- cmp r0, 0
- blt _08127380
-_08127372:
- adds r0, r4, 0
- movs r1, 0x29
- bl FieldEffectStop
- b _08127416
- .align 2, 0
-_0812737C: .4byte gMapObjects
-_08127380:
- ldrb r0, [r1, 0x5]
- bl GetFieldObjectGraphicsInfo
- mov r8, r0
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127424 @ =gSprites
- adds r6, r0, r1
- ldrh r5, [r6, 0x22]
- ldrh r7, [r6, 0x20]
- movs r0, 0x20
- ldrsh r1, [r6, r0]
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _081273BC
- lsls r0, r5, 16
- asrs r0, 16
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- cmp r0, r1
- beq _081273D6
-_081273BC:
- strh r7, [r4, 0x34]
- strh r5, [r4, 0x36]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081273D6
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
-_081273D6:
- strh r7, [r4, 0x20]
- strh r5, [r4, 0x22]
- mov r1, r8
- ldrh r0, [r1, 0xA]
- lsls r0, 16
- asrs r0, 17
- subs r0, 0x8
- strh r0, [r4, 0x26]
- adds r0, r6, 0
- adds r0, 0x43
- ldrb r0, [r0]
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrb r0, [r6, 0x5]
- movs r1, 0xC
- ands r1, r0
- ldrb r2, [r4, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x5]
- adds r0, r6, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- lsls r1, 29
- lsrs r1, 31
- adds r0, r4, 0
- bl sub_806487C
-_08127416:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08127424: .4byte gSprites
- thumb_func_end sub_8127334
-
- thumb_func_start FldEff_SandFootprints
-FldEff_SandFootprints: @ 8127428
- push {r4,lr}
- ldr r4, _08127490 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127494 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x2C]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x40
- beq _08127486
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127498 @ =gSprites
- adds r0, r1
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- movs r1, 0x3
- ldrb r2, [r4, 0xC]
- ands r2, r1
- lsls r2, 2
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0xD
- strh r1, [r0, 0x3C]
- ldrb r1, [r4, 0x10]
- bl StartSpriteAnim
-_08127486:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127490: .4byte gUnknown_0202FF84
-_08127494: .4byte gFieldEffectObjectTemplatePointers
-_08127498: .4byte gSprites
- thumb_func_end FldEff_SandFootprints
-
- thumb_func_start FldEff_DeepSandFootprints
-FldEff_DeepSandFootprints: @ 812749C
- push {r4,r5,lr}
- ldr r4, _08127504 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127508 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x5C]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- adds r5, r1, 0
- cmp r1, 0x40
- beq _081274FC
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812750C @ =gSprites
- adds r0, r1
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- movs r1, 0x3
- ldrb r2, [r4, 0xC]
- ands r2, r1
- lsls r2, 2
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0x18
- strh r1, [r0, 0x3C]
- ldrb r1, [r4, 0x10]
- bl StartSpriteAnim
-_081274FC:
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08127504: .4byte gUnknown_0202FF84
-_08127508: .4byte gFieldEffectObjectTemplatePointers
-_0812750C: .4byte gSprites
- thumb_func_end FldEff_DeepSandFootprints
-
- thumb_func_start FldEff_BikeTireTracks
-FldEff_BikeTireTracks: @ 8127510
- push {r4,r5,lr}
- ldr r4, _08127578 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _0812757C @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x6C]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r1, r0, 24
- adds r5, r1, 0
- cmp r1, 0x40
- beq _08127570
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127580 @ =gSprites
- adds r0, r1
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- movs r1, 0x3
- ldrb r2, [r4, 0xC]
- ands r2, r1
- lsls r2, 2
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- movs r1, 0x23
- strh r1, [r0, 0x3C]
- ldrb r1, [r4, 0x10]
- bl StartSpriteAnim
-_08127570:
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08127578: .4byte gUnknown_0202FF84
-_0812757C: .4byte gFieldEffectObjectTemplatePointers
-_08127580: .4byte gSprites
- thumb_func_end FldEff_BikeTireTracks
-
- thumb_func_start sub_8127584
-sub_8127584: @ 8127584
- push {lr}
- ldr r2, _0812759C @ =gUnknown_08401E40
- movs r3, 0x2E
- ldrsh r1, [r0, r3]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_0812759C: .4byte gUnknown_08401E40
- thumb_func_end sub_8127584
-
- thumb_func_start sub_81275A0
-sub_81275A0: @ 81275A0
- push {lr}
- adds r1, r0, 0
- ldrh r0, [r1, 0x30]
- adds r0, 0x1
- strh r0, [r1, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x28
- ble _081275B6
- movs r0, 0x1
- strh r0, [r1, 0x2E]
-_081275B6:
- adds r0, r1, 0
- movs r1, 0
- bl sub_806487C
- pop {r0}
- bx r0
- thumb_func_end sub_81275A0
-
- thumb_func_start sub_81275C4
-sub_81275C4: @ 81275C4
- push {r4,lr}
- adds r4, r0, 0
- adds r3, r4, 0
- adds r3, 0x3E
- ldrb r2, [r3]
- lsls r0, r2, 29
- lsrs r0, 31
- movs r1, 0x1
- eors r1, r0
- lsls r1, 2
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3]
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- ldrb r1, [r3]
- lsls r1, 29
- lsrs r1, 31
- adds r0, r4, 0
- bl sub_806487C
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x38
- ble _08127608
- ldrh r1, [r4, 0x3C]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldEffectStop
-_08127608:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81275C4
-
- thumb_func_start FldEff_Splash
-FldEff_Splash: @ 8127610
- push {r4-r6,lr}
- ldr r6, _081276A4 @ =gUnknown_0202FF84
- ldrb r0, [r6]
- ldrb r1, [r6, 0x4]
- ldrb r2, [r6, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _081276A8 @ =gMapObjects
- adds r5, r1, r0
- ldr r0, _081276AC @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x34]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x40
- beq _0812769A
- ldrb r0, [r5, 0x5]
- bl GetFieldObjectGraphicsInfo
- lsls r3, r4, 4
- adds r3, r4
- lsls r3, 2
- ldr r4, _081276B0 @ =gSprites
- adds r3, r4
- movs r1, 0x3E
- adds r1, r3
- mov r12, r1
- ldrb r1, [r1]
- movs r2, 0x2
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- ldrb r2, [r5, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrb r1, [r1, 0x5]
- movs r2, 0xC
- ands r2, r1
- ldrb r4, [r3, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r4
- orrs r1, r2
- strb r1, [r3, 0x5]
- ldr r1, [r6]
- strh r1, [r3, 0x2E]
- ldr r1, [r6, 0x4]
- strh r1, [r3, 0x30]
- ldr r1, [r6, 0x8]
- strh r1, [r3, 0x32]
- ldrh r0, [r0, 0xA]
- lsls r0, 16
- asrs r0, 17
- subs r0, 0x4
- strh r0, [r3, 0x26]
- movs r0, 0x46
- bl PlaySE
-_0812769A:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081276A4: .4byte gUnknown_0202FF84
-_081276A8: .4byte gMapObjects
-_081276AC: .4byte gFieldEffectObjectTemplatePointers
-_081276B0: .4byte gSprites
- thumb_func_end FldEff_Splash
-
- thumb_func_start sub_81276B4
-sub_81276B4: @ 81276B4
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081276E4
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- beq _081276EE
-_081276E4:
- adds r0, r4, 0
- movs r1, 0xF
- bl FieldEffectStop
- b _0812772E
-_081276EE:
- ldr r3, _08127738 @ =gSprites
- ldr r2, _0812773C @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x20]
- strh r0, [r4, 0x20]
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r0, [r0, 0x22]
- strh r0, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
-_0812772E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08127738: .4byte gSprites
-_0812773C: .4byte gMapObjects
- thumb_func_end sub_81276B4
-
- thumb_func_start FldEff_JumpSmallSplash
-FldEff_JumpSmallSplash: @ 8127740
- push {r4,lr}
- ldr r4, _081277A4 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0xC
- bl sub_8060470
- ldr r0, _081277A8 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x38]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0812779C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081277AC @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r2, 0x2E]
- movs r0, 0x10
- strh r0, [r2, 0x30]
-_0812779C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081277A4: .4byte gUnknown_0202FF84
-_081277A8: .4byte gFieldEffectObjectTemplatePointers
-_081277AC: .4byte gSprites
- thumb_func_end FldEff_JumpSmallSplash
-
- thumb_func_start FldEff_JumpBigSplash
-FldEff_JumpBigSplash: @ 81277B0
- push {r4,lr}
- ldr r4, _08127814 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127818 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x30]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _0812780C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _0812781C @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r2, 0x2E]
- movs r0, 0xE
- strh r0, [r2, 0x30]
-_0812780C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127814: .4byte gUnknown_0202FF84
-_08127818: .4byte gFieldEffectObjectTemplatePointers
-_0812781C: .4byte gSprites
- thumb_func_end FldEff_JumpBigSplash
-
- thumb_func_start FldEff_FeetInFlowingWater
-FldEff_FeetInFlowingWater: @ 8127820
- push {r4-r7,lr}
- ldr r7, _081278C0 @ =gUnknown_0202FF84
- ldrb r0, [r7]
- ldrb r1, [r7, 0x4]
- ldrb r2, [r7, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _081278C4 @ =gMapObjects
- adds r6, r1, r0
- ldr r0, _081278C8 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x34]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x40
- beq _081278B6
- ldrb r0, [r6, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r4, r0, 0
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- ldr r3, _081278CC @ =gSprites
- adds r0, r3
- ldr r1, _081278D0 @ =sub_81278D8
- str r1, [r0, 0x1C]
- adds r5, r0, 0
- adds r5, 0x3E
- ldrb r1, [r5]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r5]
- ldrb r2, [r6, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r3
- ldrb r1, [r1, 0x5]
- movs r2, 0xC
- ands r2, r1
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r1, [r7]
- strh r1, [r0, 0x2E]
- ldr r1, [r7, 0x4]
- strh r1, [r0, 0x30]
- ldr r1, [r7, 0x8]
- strh r1, [r0, 0x32]
- ldr r1, _081278D4 @ =0x0000ffff
- strh r1, [r0, 0x34]
- movs r1, 0x1
- negs r1, r1
- strh r1, [r0, 0x36]
- ldrh r1, [r4, 0xA]
- lsls r1, 16
- asrs r1, 17
- subs r1, 0x4
- strh r1, [r0, 0x26]
- movs r1, 0x1
- bl StartSpriteAnim
-_081278B6:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081278C0: .4byte gUnknown_0202FF84
-_081278C4: .4byte gMapObjects
-_081278C8: .4byte gFieldEffectObjectTemplatePointers
-_081278CC: .4byte gSprites
-_081278D0: .4byte sub_81278D8
-_081278D4: .4byte 0x0000ffff
- thumb_func_end FldEff_FeetInFlowingWater
-
- thumb_func_start sub_81278D8
-sub_81278D8: @ 81278D8
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _08127912
- ldr r2, _0812791C @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r5, r0, r2
- ldrb r0, [r5, 0x2]
- lsls r0, 28
- cmp r0, 0
- blt _08127920
-_08127912:
- adds r0, r4, 0
- movs r1, 0x22
- bl FieldEffectStop
- b _0812796A
- .align 2, 0
-_0812791C: .4byte gMapObjects
-_08127920:
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08127974 @ =gSprites
- adds r0, r1
- ldrh r1, [r0, 0x20]
- strh r1, [r4, 0x20]
- ldrh r1, [r0, 0x22]
- strh r1, [r4, 0x22]
- adds r0, 0x43
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
- ldr r1, [r5, 0x10]
- ldr r0, [r4, 0x34]
- cmp r1, r0
- beq _0812796A
- ldrh r0, [r5, 0x10]
- strh r0, [r4, 0x34]
- ldrh r0, [r5, 0x12]
- strh r0, [r4, 0x36]
- adds r0, r4, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0812796A
- movs r0, 0x46
- bl PlaySE
-_0812796A:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08127974: .4byte gSprites
- thumb_func_end sub_81278D8
-
- thumb_func_start FldEff_Ripple
-FldEff_Ripple: @ 8127978
- push {r4,lr}
- ldr r0, _081279CC @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x14]
- ldr r4, _081279D0 @ =gUnknown_0202FF84
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _081279C4
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081279D4 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x5
- strh r0, [r2, 0x2E]
-_081279C4:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081279CC: .4byte gFieldEffectObjectTemplatePointers
-_081279D0: .4byte gUnknown_0202FF84
-_081279D4: .4byte gSprites
- thumb_func_end FldEff_Ripple
-
- thumb_func_start FldEff_HotSpringsWater
-FldEff_HotSpringsWater: @ 81279D8
- push {r4-r6,lr}
- ldr r6, _08127A6C @ =gUnknown_0202FF84
- ldrb r0, [r6]
- ldrb r1, [r6, 0x4]
- ldrb r2, [r6, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _08127A70 @ =gMapObjects
- adds r5, r1, r0
- ldr r0, _08127A74 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x7C]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08127A64
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r4, _08127A78 @ =gSprites
- adds r2, r4
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x5]
- movs r1, 0xC
- ands r1, r0
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r6]
- strh r0, [r2, 0x2E]
- ldr r0, [r6, 0x4]
- strh r0, [r2, 0x30]
- ldr r0, [r6, 0x8]
- strh r0, [r2, 0x32]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x20]
- strh r0, [r2, 0x34]
- ldrb r1, [r5, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x22]
- strh r0, [r2, 0x36]
-_08127A64:
- movs r0, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08127A6C: .4byte gUnknown_0202FF84
-_08127A70: .4byte gMapObjects
-_08127A74: .4byte gFieldEffectObjectTemplatePointers
-_08127A78: .4byte gSprites
- thumb_func_end FldEff_HotSpringsWater
-
- thumb_func_start sub_8127A7C
-sub_8127A7C: @ 8127A7C
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _08127AB6
- ldr r5, _08127AC0 @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r5
- ldrb r0, [r1, 0x2]
- lsls r0, 26
- cmp r0, 0
- blt _08127AC4
-_08127AB6:
- adds r0, r4, 0
- movs r1, 0x2A
- bl FieldEffectStop
- b _08127B08
- .align 2, 0
-_08127AC0: .4byte gMapObjects
-_08127AC4:
- ldrb r0, [r1, 0x5]
- bl GetFieldObjectGraphicsInfo
- mov r1, sp
- ldrb r2, [r1]
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- ldrb r2, [r1, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- ldr r2, _08127B10 @ =gSprites
- adds r1, r2
- ldrh r2, [r1, 0x20]
- strh r2, [r4, 0x20]
- ldrh r0, [r0, 0xA]
- lsls r0, 16
- asrs r0, 17
- ldrh r2, [r1, 0x22]
- adds r0, r2
- subs r0, 0x8
- strh r0, [r4, 0x22]
- adds r1, 0x43
- ldrb r0, [r1]
- subs r0, 0x1
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
-_08127B08:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08127B10: .4byte gSprites
- thumb_func_end sub_8127A7C
-
- thumb_func_start FldEff_Unknown19
-FldEff_Unknown19: @ 8127B14
- push {r4,lr}
- ldr r4, _08127B74 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127B78 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x44]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08127B6C
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127B7C @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x13
- strh r0, [r2, 0x2E]
-_08127B6C:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127B74: .4byte gUnknown_0202FF84
-_08127B78: .4byte gFieldEffectObjectTemplatePointers
-_08127B7C: .4byte gSprites
- thumb_func_end FldEff_Unknown19
-
- thumb_func_start FldEff_Unknown20
-FldEff_Unknown20: @ 8127B80
- push {r4,lr}
- ldr r4, _08127BE0 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127BE4 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x48]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08127BD8
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127BE8 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x14
- strh r0, [r2, 0x2E]
-_08127BD8:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127BE0: .4byte gUnknown_0202FF84
-_08127BE4: .4byte gFieldEffectObjectTemplatePointers
-_08127BE8: .4byte gSprites
- thumb_func_end FldEff_Unknown20
-
- thumb_func_start FldEff_Unknown21
-FldEff_Unknown21: @ 8127BEC
- push {r4,lr}
- ldr r4, _08127C4C @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127C50 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x4C]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08127C44
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127C54 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x15
- strh r0, [r2, 0x2E]
-_08127C44:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127C4C: .4byte gUnknown_0202FF84
-_08127C50: .4byte gFieldEffectObjectTemplatePointers
-_08127C54: .4byte gSprites
- thumb_func_end FldEff_Unknown21
-
- thumb_func_start FldEff_Unknown22
-FldEff_Unknown22: @ 8127C58
- push {r4,lr}
- ldr r4, _08127CB8 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127CBC @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x50]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08127CB0
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127CC0 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x16
- strh r0, [r2, 0x2E]
-_08127CB0:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08127CB8: .4byte gUnknown_0202FF84
-_08127CBC: .4byte gFieldEffectObjectTemplatePointers
-_08127CC0: .4byte gSprites
- thumb_func_end FldEff_Unknown22
-
- thumb_func_start ash
-ash: @ 8127CC4
- push {r4,lr}
- lsls r2, 16
- lsrs r2, 16
- ldr r4, _08127CF4 @ =gUnknown_0202FF84
- lsls r0, 16
- asrs r0, 16
- str r0, [r4]
- lsls r1, 16
- asrs r1, 16
- str r1, [r4, 0x4]
- movs r0, 0x52
- str r0, [r4, 0x8]
- movs r0, 0x1
- str r0, [r4, 0xC]
- str r2, [r4, 0x10]
- lsls r3, 16
- asrs r3, 16
- str r3, [r4, 0x14]
- movs r0, 0x7
- bl FieldEffectStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08127CF4: .4byte gUnknown_0202FF84
- thumb_func_end ash
-
- thumb_func_start FldEff_Ash
-FldEff_Ash: @ 8127CF8
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r5, _08127D78 @ =gUnknown_0202FF84
- ldrh r1, [r5]
- mov r0, sp
- strh r1, [r0]
- ldrh r0, [r5, 0x4]
- mov r4, sp
- adds r4, 0x2
- strh r0, [r4]
- mov r0, sp
- adds r1, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127D7C @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x18]
- mov r1, sp
- movs r2, 0
- ldrsh r1, [r1, r2]
- movs r3, 0
- ldrsh r2, [r4, r3]
- ldrb r3, [r5, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08127D6E
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08127D80 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r5, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r5]
- strh r0, [r2, 0x30]
- ldr r0, [r5, 0x4]
- strh r0, [r2, 0x32]
- ldr r0, [r5, 0x10]
- strh r0, [r2, 0x34]
- ldr r0, [r5, 0x14]
- strh r0, [r2, 0x36]
-_08127D6E:
- movs r0, 0
- add sp, 0x4
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08127D78: .4byte gUnknown_0202FF84
-_08127D7C: .4byte gFieldEffectObjectTemplatePointers
-_08127D80: .4byte gSprites
- thumb_func_end FldEff_Ash
-
- thumb_func_start sub_8127D84
-sub_8127D84: @ 8127D84
- push {lr}
- ldr r2, _08127D9C @ =gUnknown_08401E48
- movs r3, 0x2E
- ldrsh r1, [r0, r3]
- lsls r1, 2
- adds r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- pop {r0}
- bx r0
- .align 2, 0
-_08127D9C: .4byte gUnknown_08401E48
- thumb_func_end sub_8127D84
-
- thumb_func_start sub_8127DA0
-sub_8127DA0: @ 8127DA0
- push {lr}
- adds r3, r0, 0
- adds r2, r3, 0
- adds r2, 0x3E
- ldrb r0, [r2]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r2]
- subs r2, 0x12
- ldrb r0, [r2]
- movs r1, 0x40
- orrs r0, r1
- strb r0, [r2]
- ldrh r0, [r3, 0x36]
- subs r0, 0x1
- strh r0, [r3, 0x36]
- lsls r0, 16
- cmp r0, 0
- bne _08127DCA
- movs r0, 0x1
- strh r0, [r3, 0x2E]
-_08127DCA:
- pop {r0}
- bx r0
- thumb_func_end sub_8127DA0
-
- thumb_func_start sub_8127DD0
-sub_8127DD0: @ 8127DD0
- push {r4,lr}
- adds r4, r0, 0
- adds r2, r4, 0
- adds r2, 0x3E
- ldrb r1, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- subs r2, 0x12
- ldrb r1, [r2]
- movs r0, 0x41
- negs r0, r0
- ands r0, r1
- strb r0, [r2]
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- ldrh r2, [r4, 0x34]
- bl MapGridSetMetatileIdAt
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- movs r2, 0x32
- ldrsh r1, [r4, r2]
- bl CurrentMapDrawMetatileAt
- ldr r2, _08127E28 @ =gMapObjects
- ldr r0, _08127E2C @ =gPlayerAvatar
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- movs r0, 0x2
- strh r0, [r4, 0x2E]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08127E28: .4byte gMapObjects
-_08127E2C: .4byte gPlayerAvatar
- thumb_func_end sub_8127DD0
-
- thumb_func_start sub_8127E30
-sub_8127E30: @ 8127E30
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0
- bl sub_806487C
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08127E50
- adds r0, r4, 0
- movs r1, 0x7
- bl FieldEffectStop
-_08127E50:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8127E30
-
- thumb_func_start FldEff_SurfBlob
-FldEff_SurfBlob: @ 8127E58
- push {r4,r5,lr}
- ldr r4, _08127EC0 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _08127EC4 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x1C]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0x96
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- adds r5, r0, 0
- cmp r0, 0x40
- beq _08127EB2
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08127EC8 @ =gSprites
- adds r1, r0
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r3]
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r1, 0x32]
- ldr r0, _08127ECC @ =0x0000ffff
- strh r0, [r1, 0x34]
- movs r0, 0x1
- negs r0, r0
- strh r0, [r1, 0x3A]
- strh r0, [r1, 0x3C]
-_08127EB2:
- movs r0, 0x8
- bl FieldEffectActiveListRemove
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08127EC0: .4byte gUnknown_0202FF84
-_08127EC4: .4byte gFieldEffectObjectTemplatePointers
-_08127EC8: .4byte gSprites
-_08127ECC: .4byte 0x0000ffff
- thumb_func_end FldEff_SurfBlob
-
- thumb_func_start sub_8127ED0
-sub_8127ED0: @ 8127ED0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r3, _08127EF8 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrh r0, [r2, 0x2E]
- movs r3, 0x10
- negs r3, r3
- ands r3, r0
- movs r0, 0xF0
- lsls r0, 20
- ands r0, r1
- lsrs r0, 24
- orrs r0, r3
- strh r0, [r2, 0x2E]
- bx lr
- .align 2, 0
-_08127EF8: .4byte gSprites
- thumb_func_end sub_8127ED0
-
- thumb_func_start sub_8127EFC
-sub_8127EFC: @ 8127EFC
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r3, _08127F24 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r3
- ldrh r0, [r2, 0x2E]
- movs r3, 0xF1
- negs r3, r3
- ands r3, r0
- movs r0, 0xF0
- lsls r0, 20
- ands r0, r1
- lsrs r0, 20
- orrs r3, r0
- strh r3, [r2, 0x2E]
- bx lr
- .align 2, 0
-_08127F24: .4byte gSprites
- thumb_func_end sub_8127EFC
-
- thumb_func_start sub_8127F28
-sub_8127F28: @ 8127F28
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- ldr r4, _08127F54 @ =gSprites
- lsls r3, r0, 4
- adds r3, r0
- lsls r3, 2
- adds r3, r4
- ldrh r0, [r3, 0x2E]
- ldr r4, _08127F58 @ =0xfffff0ff
- ands r4, r0
- movs r0, 0xF0
- lsls r0, 20
- ands r0, r1
- lsrs r0, 16
- orrs r4, r0
- strh r4, [r3, 0x2E]
- strh r2, [r3, 0x30]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08127F54: .4byte gSprites
-_08127F58: .4byte 0xfffff0ff
- thumb_func_end sub_8127F28
-
- thumb_func_start sub_8127F5C
-sub_8127F5C: @ 8127F5C
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF
- ands r0, r1
- bx lr
- thumb_func_end sub_8127F5C
-
- thumb_func_start sub_8127F64
-sub_8127F64: @ 8127F64
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF0
- ands r0, r1
- lsrs r0, 4
- bx lr
- thumb_func_end sub_8127F64
-
- thumb_func_start sub_8127F70
-sub_8127F70: @ 8127F70
- ldrh r1, [r0, 0x2E]
- movs r0, 0xF0
- lsls r0, 4
- ands r0, r1
- lsrs r0, 8
- bx lr
- thumb_func_end sub_8127F70
-
- thumb_func_start sub_8127F7C
-sub_8127F7C: @ 8127F7C
- push {r4-r6,lr}
- adds r6, r0, 0
- movs r1, 0x32
- ldrsh r0, [r6, r1]
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _08127FCC @ =gMapObjects
- adds r4, r0
- ldrb r0, [r4, 0x4]
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- ldr r0, _08127FD0 @ =gSprites
- adds r5, r0
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_8127FD4
- adds r0, r4, 0
- adds r1, r6, 0
- bl sub_812800C
- adds r0, r4, 0
- adds r1, r5, 0
- adds r2, r6, 0
- bl sub_81280A0
- ldrb r0, [r5, 0x5]
- movs r1, 0xC
- ands r1, r0
- ldrb r2, [r6, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r6, 0x5]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08127FCC: .4byte gMapObjects
-_08127FD0: .4byte gSprites
- thumb_func_end sub_8127F7C
-
- thumb_func_start sub_8127FD4
-sub_8127FD4: @ 8127FD4
- push {r4,r5,lr}
- sub sp, 0x8
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r1, _08128008 @ =gUnknown_08401E54
- mov r0, sp
- movs r2, 0x5
- bl memcpy
- adds r0, r4, 0
- bl sub_8127F64
- lsls r0, 24
- cmp r0, 0
- bne _08128000
- ldrb r0, [r5, 0x18]
- lsrs r0, 4
- add r0, sp
- ldrb r1, [r0]
- adds r0, r4, 0
- bl StartSpriteAnimIfDifferent
-_08128000:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08128008: .4byte gUnknown_08401E54
- thumb_func_end sub_8127FD4
-
- thumb_func_start sub_812800C
-sub_812800C: @ 812800C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r1, 0
- ldrh r2, [r0, 0x10]
- mov r1, sp
- strh r2, [r1]
- ldrh r1, [r0, 0x12]
- mov r0, sp
- adds r0, 0x2
- strh r1, [r0]
- movs r2, 0x26
- ldrsh r3, [r4, r2]
- mov r8, r0
- cmp r3, 0
- bne _08128094
- mov r0, sp
- movs r5, 0
- ldrsh r2, [r0, r5]
- movs r5, 0x3A
- ldrsh r0, [r4, r5]
- cmp r2, r0
- bne _08128048
- lsls r0, r1, 16
- asrs r0, 16
- movs r5, 0x3C
- ldrsh r1, [r4, r5]
- cmp r0, r1
- beq _08128094
-_08128048:
- strh r3, [r4, 0x38]
- strh r2, [r4, 0x3A]
- mov r1, r8
- movs r2, 0
- ldrsh r0, [r1, r2]
- strh r0, [r4, 0x3C]
- movs r5, 0x1
- mov r7, r8
- mov r6, sp
-_0812805A:
- adds r0, r5, 0
- mov r1, sp
- adds r2, r7, 0
- bl MoveCoords
- movs r1, 0
- ldrsh r0, [r6, r1]
- movs r2, 0
- ldrsh r1, [r7, r2]
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _08128080
- ldrh r0, [r4, 0x38]
- adds r0, 0x1
- strh r0, [r4, 0x38]
- b _08128094
-_08128080:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldrh r0, [r4, 0x3A]
- strh r0, [r6]
- ldrh r0, [r4, 0x3C]
- mov r1, r8
- strh r0, [r1]
- cmp r5, 0x4
- bls _0812805A
-_08128094:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_812800C
-
- thumb_func_start sub_81280A0
-sub_81280A0: @ 81280A0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r1, 0
- adds r4, r2, 0
- ldr r1, _08128104 @ =gUnknown_08401E5A
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- adds r0, r4, 0
- bl sub_8127F5C
- lsls r0, 24
- lsrs r0, 24
- adds r2, r0, 0
- cmp r2, 0
- beq _0812811A
- ldrh r1, [r4, 0x36]
- adds r1, 0x1
- strh r1, [r4, 0x36]
- movs r3, 0x38
- ldrsh r0, [r4, r3]
- lsls r0, 1
- add r0, sp
- ldrh r0, [r0]
- ands r1, r0
- cmp r1, 0
- bne _081280E0
- ldrh r0, [r4, 0x34]
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
-_081280E0:
- ldrh r1, [r4, 0x36]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _081280F0
- ldrh r0, [r4, 0x34]
- negs r0, r0
- strh r0, [r4, 0x34]
-_081280F0:
- cmp r2, 0x2
- beq _0812811A
- adds r0, r4, 0
- bl sub_8127F70
- lsls r0, 24
- cmp r0, 0
- bne _08128108
- ldrh r0, [r4, 0x26]
- b _0812810E
- .align 2, 0
-_08128104: .4byte gUnknown_08401E5A
-_08128108:
- ldrh r0, [r4, 0x26]
- ldrh r3, [r4, 0x30]
- adds r0, r3
-_0812810E:
- strh r0, [r5, 0x26]
- ldrh r0, [r5, 0x20]
- strh r0, [r4, 0x20]
- ldrh r0, [r5, 0x22]
- adds r0, 0x8
- strh r0, [r4, 0x22]
-_0812811A:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_81280A0
-
- thumb_func_start sub_8128124
-sub_8128124: @ 8128124
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08128168 @ =gDummySpriteTemplate
- movs r1, 0
- movs r2, 0
- movs r3, 0xFF
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r1, _0812816C @ =gSprites
- adds r2, r1
- ldr r1, _08128170 @ =sub_8128174
- str r1, [r2, 0x1C]
- movs r1, 0x3E
- adds r1, r2
- mov r12, r1
- ldrb r1, [r1]
- movs r3, 0x4
- orrs r1, r3
- mov r3, r12
- strb r1, [r3]
- strh r4, [r2, 0x2E]
- movs r1, 0x1
- strh r1, [r2, 0x30]
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08128168: .4byte gDummySpriteTemplate
-_0812816C: .4byte gSprites
-_08128170: .4byte sub_8128174
- thumb_func_end sub_8128124
-
- thumb_func_start sub_8128174
-sub_8128174: @ 8128174
- push {lr}
- adds r2, r0, 0
- movs r0, 0x2E
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081281B0 @ =gSprites
- adds r3, r0, r1
- ldrh r1, [r2, 0x32]
- adds r0, r1, 0x1
- strh r0, [r2, 0x32]
- movs r0, 0x3
- ands r0, r1
- cmp r0, 0
- bne _0812819C
- ldrh r0, [r2, 0x30]
- ldrh r1, [r3, 0x26]
- adds r0, r1
- strh r0, [r3, 0x26]
-_0812819C:
- ldrh r1, [r2, 0x32]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _081281AC
- ldrh r0, [r2, 0x30]
- negs r0, r0
- strh r0, [r2, 0x30]
-_081281AC:
- pop {r0}
- bx r0
- .align 2, 0
-_081281B0: .4byte gSprites
- thumb_func_end sub_8128174
-
- thumb_func_start FldEff_Dust
-FldEff_Dust: @ 81281B4
- push {r4,lr}
- ldr r4, _08128218 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0xC
- bl sub_8060470
- ldr r0, _0812821C @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x24]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08128210
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _08128220 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2, 0x5]
- ldr r0, [r4, 0x8]
- strh r0, [r2, 0x2E]
- movs r0, 0xA
- strh r0, [r2, 0x30]
-_08128210:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08128218: .4byte gUnknown_0202FF84
-_0812821C: .4byte gFieldEffectObjectTemplatePointers
-_08128220: .4byte gSprites
- thumb_func_end FldEff_Dust
-
- thumb_func_start FldEff_SandPile
-FldEff_SandPile: @ 8128224
- push {r4-r7,lr}
- ldr r7, _081282D0 @ =gUnknown_0202FF84
- ldrb r0, [r7]
- ldrb r1, [r7, 0x4]
- ldrb r2, [r7, 0x8]
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- adds r1, r0
- lsls r1, 2
- ldr r0, _081282D4 @ =gMapObjects
- adds r6, r1, r0
- ldr r0, _081282D8 @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x74]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x40
- beq _081282C8
- ldrb r0, [r6, 0x5]
- bl GetFieldObjectGraphicsInfo
- adds r5, r0, 0
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- ldr r4, _081282DC @ =gSprites
- adds r0, r4
- adds r3, r0, 0
- adds r3, 0x3E
- ldrb r1, [r3]
- movs r2, 0x2
- orrs r1, r2
- strb r1, [r3]
- ldrb r2, [r6, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrb r1, [r1, 0x5]
- movs r2, 0xC
- ands r2, r1
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r1, [r7]
- strh r1, [r0, 0x2E]
- ldr r1, [r7, 0x4]
- strh r1, [r0, 0x30]
- ldr r1, [r7, 0x8]
- strh r1, [r0, 0x32]
- ldrb r2, [r6, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x20]
- strh r1, [r0, 0x34]
- ldrb r2, [r6, 0x4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x22]
- strh r1, [r0, 0x36]
- ldrh r1, [r5, 0xA]
- lsls r1, 16
- asrs r1, 17
- subs r1, 0x2
- strh r1, [r0, 0x26]
- movs r1, 0x2
- bl SeekSpriteAnim
-_081282C8:
- movs r0, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081282D0: .4byte gUnknown_0202FF84
-_081282D4: .4byte gMapObjects
-_081282D8: .4byte gFieldEffectObjectTemplatePointers
-_081282DC: .4byte gSprites
- thumb_func_end FldEff_SandPile
-
- thumb_func_start sub_81282E0
-sub_81282E0: @ 81282E0
- push {r4-r6,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r4, 0x32]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- bne _0812831A
- ldr r2, _08128324 @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldrb r0, [r1, 0x2]
- lsls r0, 27
- cmp r0, 0
- blt _08128328
-_0812831A:
- adds r0, r4, 0
- movs r1, 0x27
- bl FieldEffectStop
- b _0812839A
- .align 2, 0
-_08128324: .4byte gMapObjects
-_08128328:
- ldr r2, _081283A4 @ =gSprites
- ldrb r1, [r1, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r5, [r0, 0x22]
- ldrh r6, [r0, 0x20]
- movs r2, 0x20
- ldrsh r1, [r0, r2]
- movs r2, 0x34
- ldrsh r0, [r4, r2]
- cmp r1, r0
- bne _08128350
- lsls r0, r5, 16
- asrs r0, 16
- movs r2, 0x36
- ldrsh r1, [r4, r2]
- cmp r0, r1
- beq _0812836A
-_08128350:
- strh r6, [r4, 0x34]
- strh r5, [r4, 0x36]
- adds r0, r4, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0812836A
- adds r0, r4, 0
- movs r1, 0
- bl StartSpriteAnim
-_0812836A:
- strh r6, [r4, 0x20]
- strh r5, [r4, 0x22]
- ldr r3, _081283A4 @ =gSprites
- ldr r2, _081283A8 @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x43
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x43
- strb r0, [r1]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
-_0812839A:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081283A4: .4byte gSprites
-_081283A8: .4byte gMapObjects
- thumb_func_end sub_81282E0
-
- thumb_func_start FldEff_Bubbles
-FldEff_Bubbles: @ 81283AC
- push {r4,lr}
- ldr r4, _08128404 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0
- bl sub_8060470
- ldr r0, _08128408 @ =gFieldEffectObjectTemplatePointers
- adds r0, 0x88
- ldr r0, [r0]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0x52
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _081283FC
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _0812840C @ =gSprites
- adds r1, r0
- adds r3, r1, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r3]
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- movs r2, 0x4
- orrs r0, r2
- strb r0, [r1, 0x5]
-_081283FC:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08128404: .4byte gUnknown_0202FF84
-_08128408: .4byte gFieldEffectObjectTemplatePointers
-_0812840C: .4byte gSprites
- thumb_func_end FldEff_Bubbles
-
- thumb_func_start sub_8128410
-sub_8128410: @ 8128410
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x80
- movs r1, 0x80
- lsls r1, 1
- ands r0, r1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 24
- ldrh r1, [r4, 0x22]
- subs r1, r0
- strh r1, [r4, 0x22]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
- ldrh r1, [r4, 0x3E]
- ldr r0, _0812844C @ =0x00001004
- ands r0, r1
- cmp r0, 0
- beq _08128444
- adds r0, r4, 0
- movs r1, 0x35
- bl FieldEffectStop
-_08128444:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812844C: .4byte 0x00001004
- thumb_func_end sub_8128410
-
- thumb_func_start FldEff_BerryTreeGrowthSparkle
-FldEff_BerryTreeGrowthSparkle: @ 8128450
- push {r4,lr}
- ldr r4, _081284B8 @ =gUnknown_0202FF84
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x4
- bl sub_8060470
- ldr r0, _081284BC @ =gFieldEffectObjectTemplatePointers
- ldr r0, [r0, 0x58]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- ldrb r3, [r4, 0x8]
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _081284B0
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081284C0 @ =gSprites
- adds r2, r0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r3]
- movs r0, 0x3
- ldrb r1, [r4, 0xC]
- ands r1, r0
- lsls r1, 2
- ldrb r3, [r2, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x50
- orrs r0, r1
- strb r0, [r2, 0x5]
- movs r0, 0x17
- strh r0, [r2, 0x2E]
-_081284B0:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081284B8: .4byte gUnknown_0202FF84
-_081284BC: .4byte gFieldEffectObjectTemplatePointers
-_081284C0: .4byte gSprites
- thumb_func_end FldEff_BerryTreeGrowthSparkle
-
- thumb_func_start FldEff_TreeDisguise
-FldEff_TreeDisguise: @ 81284C4
- push {lr}
- movs r0, 0x1C
- movs r1, 0x18
- movs r2, 0x4
- bl ShowDisguiseFieldEffect
- pop {r1}
- bx r1
- thumb_func_end FldEff_TreeDisguise
-
- thumb_func_start FldEff_MountainDisguise
-FldEff_MountainDisguise: @ 81284D4
- push {lr}
- movs r0, 0x1D
- movs r1, 0x19
- movs r2, 0x3
- bl ShowDisguiseFieldEffect
- pop {r1}
- bx r1
- thumb_func_end FldEff_MountainDisguise
-
- thumb_func_start FldEff_SandDisguise
-FldEff_SandDisguise: @ 81284E4
- push {lr}
- movs r0, 0x24
- movs r1, 0x1C
- movs r2, 0x2
- bl ShowDisguiseFieldEffect
- pop {r1}
- bx r1
- thumb_func_end FldEff_SandDisguise
-
- thumb_func_start ShowDisguiseFieldEffect
-ShowDisguiseFieldEffect: @ 81284F4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- mov r8, r4
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r7, r2, 24
- ldr r5, _08128528 @ =gUnknown_0202FF84
- ldrb r0, [r5]
- ldrb r1, [r5, 0x4]
- ldrb r2, [r5, 0x8]
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- beq _0812852C
- adds r0, r4, 0
- bl FieldEffectActiveListRemove
- movs r0, 0x40
- b _08128598
- .align 2, 0
-_08128528: .4byte gUnknown_0202FF84
-_0812852C:
- ldr r1, _081285A4 @ =gFieldEffectObjectTemplatePointers
- lsls r0, r6, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl CreateSpriteAtEnd
- mov r1, sp
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- beq _08128594
- mov r0, sp
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _081285A8 @ =gSprites
- adds r2, r0
- movs r0, 0x3E
- adds r0, r2
- mov r12, r0
- ldrb r3, [r0]
- lsls r1, r3, 30
- lsrs r1, 31
- adds r1, 0x1
- movs r0, 0x1
- ands r1, r0
- lsls r1, 1
- movs r0, 0x3
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- mov r1, r12
- strb r0, [r1]
- lsls r3, r7, 4
- ldrb r1, [r2, 0x5]
- movs r0, 0xF
- ands r0, r1
- orrs r0, r3
- strb r0, [r2, 0x5]
- mov r0, r8
- strh r0, [r2, 0x30]
- ldr r0, [r5]
- strh r0, [r2, 0x32]
- ldr r0, [r5, 0x4]
- strh r0, [r2, 0x34]
- ldr r0, [r5, 0x8]
- strh r0, [r2, 0x36]
-_08128594:
- mov r0, sp
- ldrb r0, [r0]
-_08128598:
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_081285A4: .4byte gFieldEffectObjectTemplatePointers
-_081285A8: .4byte gSprites
- thumb_func_end ShowDisguiseFieldEffect
-
- thumb_func_start sub_81285AC
-sub_81285AC: @ 81285AC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- ldrh r0, [r5, 0x32]
- lsls r0, 24
- lsrs r0, 24
- ldrh r1, [r5, 0x34]
- lsls r1, 24
- lsrs r1, 24
- ldrh r2, [r5, 0x36]
- lsls r2, 24
- lsrs r2, 24
- mov r3, sp
- bl TryGetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- cmp r0, 0
- beq _081285DC
- ldrh r1, [r5, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl FieldEffectStop
-_081285DC:
- ldr r4, _08128694 @ =gMapObjects
- mov r0, sp
- ldrb r1, [r0]
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r0, [r0, 0x5]
- bl GetFieldObjectGraphicsInfo
- mov r1, sp
- ldrb r2, [r1]
- lsls r1, r2, 3
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrb r1, [r1, 0x4]
- lsls r2, r1, 4
- adds r2, r1
- lsls r2, 2
- ldr r1, _08128698 @ =gSprites
- adds r2, r1
- adds r1, r2, 0
- adds r1, 0x3E
- ldrb r1, [r1]
- movs r3, 0x3E
- adds r3, r5
- mov r12, r3
- movs r3, 0x4
- ands r3, r1
- mov r1, r12
- ldrb r4, [r1]
- movs r1, 0x5
- negs r1, r1
- ands r1, r4
- orrs r1, r3
- mov r3, r12
- strb r1, [r3]
- ldrh r1, [r2, 0x20]
- strh r1, [r5, 0x20]
- ldrh r0, [r0, 0xA]
- lsls r0, 16
- asrs r0, 17
- ldrh r1, [r2, 0x22]
- adds r0, r1
- subs r0, 0x10
- strh r0, [r5, 0x22]
- adds r2, 0x43
- ldrb r0, [r2]
- subs r0, 0x1
- adds r1, r5, 0
- adds r1, 0x43
- strb r0, [r1]
- ldrh r1, [r5, 0x2E]
- movs r2, 0x2E
- ldrsh r0, [r5, r2]
- cmp r0, 0x1
- bne _0812865C
- adds r0, r1, 0x1
- strh r0, [r5, 0x2E]
- adds r0, r5, 0
- movs r1, 0x1
- bl StartSpriteAnim
-_0812865C:
- movs r3, 0x2E
- ldrsh r0, [r5, r3]
- ldrh r2, [r5, 0x2E]
- cmp r0, 0x2
- bne _08128678
- adds r0, r5, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _08128678
- movs r0, 0x1
- strh r0, [r5, 0x3C]
-_08128678:
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x3
- bne _0812868C
- ldrh r1, [r5, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r5, 0
- bl FieldEffectStop
-_0812868C:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08128694: .4byte gMapObjects
-_08128698: .4byte gSprites
- thumb_func_end sub_81285AC
-
- thumb_func_start sub_812869C
-sub_812869C: @ 812869C
- push {lr}
- adds r1, r0, 0
- adds r0, 0x21
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _081286BA
- ldr r2, _081286C0 @ =gSprites
- ldrb r1, [r1, 0x1A]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x2E]
- adds r1, 0x1
- strh r1, [r0, 0x2E]
-_081286BA:
- pop {r0}
- bx r0
- .align 2, 0
-_081286C0: .4byte gSprites
- thumb_func_end sub_812869C
-
- thumb_func_start sub_81286C4
-sub_81286C4: @ 81286C4
- push {lr}
- adds r2, r0, 0
- adds r2, 0x21
- ldrb r1, [r2]
- cmp r1, 0x2
- beq _081286FA
- cmp r1, 0
- beq _081286FA
- ldrb r1, [r0, 0x1A]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081286EC @ =gSprites
- adds r1, r0, r1
- movs r3, 0x3C
- ldrsh r0, [r1, r3]
- cmp r0, 0
- bne _081286F0
- movs r0, 0
- b _081286FC
- .align 2, 0
-_081286EC: .4byte gSprites
-_081286F0:
- movs r0, 0x2
- strb r0, [r2]
- ldrh r0, [r1, 0x2E]
- adds r0, 0x1
- strh r0, [r1, 0x2E]
-_081286FA:
- movs r0, 0x1
-_081286FC:
- pop {r1}
- bx r1
- thumb_func_end sub_81286C4
-
- thumb_func_start FldEff_Sparkle
-FldEff_Sparkle: @ 8128700
- push {r4,lr}
- ldr r4, _08128768 @ =gUnknown_0202FF84
- ldr r0, [r4]
- adds r0, 0x7
- str r0, [r4]
- ldr r0, [r4, 0x4]
- adds r0, 0x7
- str r0, [r4, 0x4]
- adds r1, r4, 0x4
- adds r0, r4, 0
- movs r2, 0x8
- movs r3, 0x8
- bl sub_8060470
- ldr r0, _0812876C @ =gFieldEffectObjectTemplatePointers
- adds r0, 0x8C
- ldr r0, [r0]
- movs r2, 0
- ldrsh r1, [r4, r2]
- movs r3, 0x4
- ldrsh r2, [r4, r3]
- movs r3, 0x52
- bl CreateSpriteAtEnd
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x40
- beq _08128760
- ldr r0, _08128770 @ =gSprites
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r0
- movs r0, 0x3
- ldrb r2, [r4, 0x8]
- ands r2, r0
- lsls r2, 2
- ldrb r3, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r3
- orrs r0, r2
- strb r0, [r1, 0x5]
- adds r1, 0x3E
- ldrb r0, [r1]
- movs r2, 0x2
- orrs r0, r2
- strb r0, [r1]
-_08128760:
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08128768: .4byte gUnknown_0202FF84
-_0812876C: .4byte gFieldEffectObjectTemplatePointers
-_08128770: .4byte gSprites
- thumb_func_end FldEff_Sparkle
-
- thumb_func_start sub_8128774
-sub_8128774: @ 8128774
- push {lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- bne _081287A8
- adds r0, r2, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081287A0
- adds r3, r2, 0
- adds r3, 0x3E
- ldrb r0, [r3]
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r3]
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
-_081287A0:
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _081287BE
-_081287A8:
- ldrh r0, [r2, 0x30]
- adds r0, 0x1
- strh r0, [r2, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x22
- ble _081287BE
- adds r0, r2, 0
- movs r1, 0x36
- bl FieldEffectStop
-_081287BE:
- pop {r0}
- bx r0
- thumb_func_end sub_8128774
-
- thumb_func_start sub_81287C4
-sub_81287C4: @ 81287C4
- push {r4,lr}
- adds r4, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _081287E2
- ldrh r1, [r4, 0x30]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldEffectStop
- b _081287F8
-_081287E2:
- adds r0, r4, 0
- movs r1, 0
- bl sub_806487C
- ldrh r0, [r4, 0x2E]
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- movs r2, 0
- bl SetObjectSubpriorityByZCoord
-_081287F8:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_81287C4
-
- thumb_func_start sub_8128800
-sub_8128800: @ 8128800
- push {lr}
- adds r2, r0, 0
- adds r0, 0x3F
- ldrb r1, [r0]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0812881E
- ldrh r1, [r2, 0x2E]
- lsls r1, 24
- lsrs r1, 24
- adds r0, r2, 0
- bl FieldEffectStop
- b _08128826
-_0812881E:
- adds r0, r2, 0
- movs r1, 0
- bl sub_806487C
-_08128826:
- pop {r0}
- bx r0
- thumb_func_end sub_8128800
-
- thumb_func_start sub_812882C
-sub_812882C: @ 812882C
- push {r4-r7,lr}
- adds r6, r0, 0
- adds r0, r1, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- adds r1, r6, 0
- bl SetObjectSubpriorityByZCoord
- movs r7, 0
-_08128842:
- lsls r0, r7, 3
- adds r0, r7
- lsls r0, 2
- ldr r1, _081288DC @ =gMapObjects
- adds r4, r0, r1
- ldrb r0, [r4]
- lsls r0, 31
- cmp r0, 0
- beq _081288E4
- ldrb r0, [r4, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldrb r1, [r4, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _081288E0 @ =gSprites
- adds r5, r0, r1
- adds r0, r6, 0
- adds r0, 0x28
- movs r2, 0
- ldrsb r2, [r0, r2]
- ldrh r0, [r6, 0x20]
- adds r1, r0, r2
- subs r0, r2
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r1, 16
- asrs r1, 16
- movs r0, 0x20
- ldrsh r2, [r5, r0]
- cmp r1, r2
- bge _081288E4
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, r2
- ble _081288E4
- adds r0, r5, 0
- adds r0, 0x29
- movs r3, 0
- ldrsb r3, [r0, r3]
- ldrh r2, [r5, 0x22]
- adds r2, r3
- ldrh r4, [r5, 0x22]
- adds r0, r6, 0
- adds r0, 0x29
- movs r1, 0
- ldrsb r1, [r0, r1]
- ldrh r0, [r6, 0x22]
- subs r0, r1
- lsls r0, 16
- asrs r0, 16
- adds r3, r0, r3
- lsls r2, 16
- asrs r2, 16
- lsls r3, 16
- asrs r3, 16
- cmp r2, r3
- blt _081288BC
- cmp r2, r0
- bge _081288E4
-_081288BC:
- lsls r0, r4, 16
- asrs r0, 16
- cmp r0, r3
- ble _081288E4
- adds r2, r6, 0
- adds r2, 0x43
- adds r0, r5, 0
- adds r0, 0x43
- ldrb r1, [r0]
- ldrb r0, [r2]
- cmp r0, r1
- bhi _081288E4
- adds r0, r1, 0x2
- strb r0, [r2]
- b _081288EE
- .align 2, 0
-_081288DC: .4byte gMapObjects
-_081288E0: .4byte gSprites
-_081288E4:
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, 0xF
- bls _08128842
-_081288EE:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_812882C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_fadetransition.s b/asm/field_fadetransition.s
deleted file mode 100644
index 1f489ceb3..000000000
--- a/asm/field_fadetransition.s
+++ /dev/null
@@ -1,1221 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start task_mpl_807DD60
-task_mpl_807DD60: @ 80809CC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r2, _080809F0 @ =gTasks
- adds r4, r0, r2
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08080A06
- cmp r0, 0x1
- bgt _080809F4
- cmp r0, 0
- beq _080809FA
- b _08080A36
- .align 2, 0
-_080809F0: .4byte gTasks
-_080809F4:
- cmp r0, 0x2
- beq _08080A24
- b _08080A36
-_080809FA:
- bl sub_8083664
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0xA]
- b _08080A1C
-_08080A06:
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0x1
- beq _08080A36
- bl pal_fill_for_map_transition
-_08080A1C:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08080A36
-_08080A24:
- bl sub_8080E70
- cmp r0, 0x1
- bne _08080A36
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_08080A36:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end task_mpl_807DD60
-
- thumb_func_start sub_8080A3C
-sub_8080A3C: @ 8080A3C
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053E90
- bl palette_bg_fill_black
- ldr r0, _08080A58 @ =task_mpl_807DD60
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080A58: .4byte task_mpl_807DD60
- thumb_func_end sub_8080A3C
-
- thumb_func_start sub_8080A5C
-sub_8080A5C: @ 8080A5C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08080A80 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08080A90
- cmp r0, 0x1
- bgt _08080A84
- cmp r0, 0
- beq _08080A8A
- b _08080ABC
- .align 2, 0
-_08080A80: .4byte gTasks
-_08080A84:
- cmp r0, 0x2
- beq _08080AA6
- b _08080ABC
-_08080A8A:
- bl sub_80084A4
- b _08080A9E
-_08080A90:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08080ABC
- bl pal_fill_for_map_transition
-_08080A9E:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08080ABC
-_08080AA6:
- bl sub_8080E70
- cmp r0, 0x1
- bne _08080ABC
- bl sub_8007B14
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_08080ABC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8080A5C
-
- thumb_func_start sub_8080AC4
-sub_8080AC4: @ 8080AC4
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053E90
- bl palette_bg_fill_black
- ldr r0, _08080AE0 @ =sub_8080A5C
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080AE0: .4byte sub_8080A5C
- thumb_func_end sub_8080AC4
-
- thumb_func_start sub_8080AE4
-sub_8080AE4: @ 8080AE4
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl PlayerGetDestCoords
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsDoor
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08080B1C
- ldr r1, _08080B18 @ =sub_8080B9C
- b _08080B2E
- .align 2, 0
-_08080B18: .4byte sub_8080B9C
-_08080B1C:
- adds r0, r4, 0
- bl MetatileBehavior_IsNonAnimDoor
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08080B40 @ =task_map_chg_seq_0807E2CC
- cmp r0, 0x1
- bne _08080B2E
- ldr r1, _08080B44 @ =task_map_chg_seq_0807E20C
-_08080B2E:
- adds r0, r1, 0
- movs r1, 0xA
- bl CreateTask
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08080B40: .4byte task_map_chg_seq_0807E2CC
-_08080B44: .4byte task_map_chg_seq_0807E20C
- thumb_func_end sub_8080AE4
-
- thumb_func_start mapldr_default
-mapldr_default: @ 8080B48
- push {lr}
- bl sub_8053E90
- bl pal_fill_for_map_transition
- bl sub_8080AE4
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- thumb_func_end mapldr_default
-
- thumb_func_start sub_8080B60
-sub_8080B60: @ 8080B60
- push {lr}
- bl sub_8053E90
- bl pal_fill_black
- bl sub_8080AE4
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- thumb_func_end sub_8080B60
-
- thumb_func_start sub_8080B78
-sub_8080B78: @ 8080B78
- push {lr}
- bl sub_8053E90
- bl pal_fill_for_map_transition
- movs r0, 0x2E
- bl PlaySE
- ldr r0, _08080B98 @ =task_map_chg_seq_0807E2CC
- movs r1, 0xA
- bl CreateTask
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .align 2, 0
-_08080B98: .4byte task_map_chg_seq_0807E2CC
- thumb_func_end sub_8080B78
-
- thumb_func_start sub_8080B9C
-sub_8080B9C: @ 8080B9C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08080BC8 @ =gTasks
- adds r5, r0, r1
- adds r6, r5, 0
- adds r6, 0xC
- adds r7, r5, 0
- adds r7, 0xE
- movs r2, 0x8
- ldrsh r0, [r5, r2]
- adds r2, r1, 0
- cmp r0, 0x4
- bhi _08080CAE
- lsls r0, 2
- ldr r1, _08080BCC @ =_08080BD0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08080BC8: .4byte gTasks
-_08080BCC: .4byte _08080BD0
- .align 2, 0
-_08080BD0:
- .4byte _08080BE4
- .4byte _08080C08
- .4byte _08080C40
- .4byte _08080C84
- .4byte _08080CA4
-_08080BE4:
- movs r0, 0
- bl sub_8080958
- bl FreezeMapObjects
- adds r0, r6, 0
- adds r1, r7, 0
- bl PlayerGetDestCoords
- movs r1, 0
- ldrsh r0, [r6, r1]
- movs r2, 0
- ldrsh r1, [r7, r2]
- bl FieldSetDoorOpened
- movs r0, 0x1
- strh r0, [r5, 0x8]
- b _08080CAE
-_08080C08:
- bl sub_8080E70
- cmp r0, 0
- beq _08080CAE
- movs r0, 0x1
- bl sub_8080958
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08080C3C @ =gMapObjects
- adds r0, r1
- movs r1, 0x8
- bl FieldObjectSetSpecialAnim
- movs r0, 0x2
- strh r0, [r5, 0x8]
- b _08080CAE
- .align 2, 0
-_08080C3C: .4byte gMapObjects
-_08080C40:
- bl walkrun_is_standing_still
- lsls r0, 24
- cmp r0, 0
- beq _08080CAE
- movs r1, 0
- ldrsh r0, [r6, r1]
- movs r2, 0
- ldrsh r1, [r7, r2]
- bl FieldAnimateDoorClose
- lsls r0, 24
- asrs r0, 24
- strh r0, [r5, 0xA]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08080C80 @ =gMapObjects
- adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
- movs r0, 0x3
- strh r0, [r5, 0x8]
- b _08080CAE
- .align 2, 0
-_08080C80: .4byte gMapObjects
-_08080C84:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0
- blt _08080C9A
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0x1
- beq _08080CAE
-_08080C9A:
- bl UnfreezeMapObjects
- movs r0, 0x4
- strh r0, [r5, 0x8]
- b _08080CAE
-_08080CA4:
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
-_08080CAE:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8080B9C
-
- thumb_func_start task_map_chg_seq_0807E20C
-task_map_chg_seq_0807E20C: @ 8080CB4
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _08080CE0 @ =gTasks
- adds r5, r0, r1
- adds r6, r5, 0
- adds r6, 0xC
- adds r7, r5, 0
- adds r7, 0xE
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _08080D06
- cmp r0, 0x1
- bgt _08080CE4
- cmp r0, 0
- beq _08080CEE
- b _08080D6E
- .align 2, 0
-_08080CE0: .4byte gTasks
-_08080CE4:
- cmp r0, 0x2
- beq _08080D50
- cmp r0, 0x3
- beq _08080D64
- b _08080D6E
-_08080CEE:
- movs r0, 0
- bl sub_8080958
- bl FreezeMapObjects
- adds r0, r6, 0
- adds r1, r7, 0
- bl PlayerGetDestCoords
- movs r0, 0x1
- strh r0, [r5, 0x8]
- b _08080D6E
-_08080D06:
- bl sub_8080E70
- cmp r0, 0
- beq _08080D6E
- movs r0, 0x1
- bl sub_8080958
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 3
- adds r4, r0
- lsls r4, 2
- ldr r0, _08080D4C @ =gMapObjects
- adds r4, r0
- bl player_get_direction_lower_nybble
- lsls r0, 24
- lsrs r0, 24
- bl GetGoSpeed0AnimId
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl FieldObjectSetSpecialAnim
- movs r0, 0x2
- strh r0, [r5, 0x8]
- b _08080D6E
- .align 2, 0
-_08080D4C: .4byte gMapObjects
-_08080D50:
- bl walkrun_is_standing_still
- lsls r0, 24
- cmp r0, 0
- beq _08080D6E
- bl UnfreezeMapObjects
- movs r0, 0x3
- strh r0, [r5, 0x8]
- b _08080D6E
-_08080D64:
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
-_08080D6E:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end task_map_chg_seq_0807E20C
-
- thumb_func_start task_map_chg_seq_0807E2CC
-task_map_chg_seq_0807E2CC: @ 8080D74
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08080D94 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _08080D98
- cmp r0, 0x1
- beq _08080DA8
- b _08080DBE
- .align 2, 0
-_08080D94: .4byte gTasks
-_08080D98:
- bl FreezeMapObjects
- bl ScriptContext2_Enable
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08080DBE
-_08080DA8:
- bl sub_8080E70
- cmp r0, 0
- beq _08080DBE
- bl UnfreezeMapObjects
- bl ScriptContext2_Disable
- adds r0, r5, 0
- bl DestroyTask
-_08080DBE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end task_map_chg_seq_0807E2CC
-
- thumb_func_start sub_8080DC4
-sub_8080DC4: @ 8080DC4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8080E70
- cmp r0, 0x1
- bne _08080DE0
- adds r0, r4, 0
- bl DestroyTask
- ldr r0, _08080DE8 @ =sub_80712B4
- movs r1, 0x50
- bl CreateTask
-_08080DE0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08080DE8: .4byte sub_80712B4
- thumb_func_end sub_8080DC4
-
- thumb_func_start atk17_seteffectuser
-atk17_seteffectuser: @ 8080DEC
- push {lr}
- bl pal_fill_black
- ldr r0, _08080E00 @ =sub_8080DC4
- bl CreateStartMenuTask
- bl ScriptContext2_Enable
- pop {r0}
- bx r0
- .align 2, 0
-_08080E00: .4byte sub_8080DC4
- thumb_func_end atk17_seteffectuser
-
- thumb_func_start task_mpl_807E3C8
-task_mpl_807E3C8: @ 8080E04
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8080E70
- cmp r0, 0x1
- bne _08080E20
- bl ScriptContext2_Disable
- adds r0, r4, 0
- bl DestroyTask
- bl sub_8064E2C
-_08080E20:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end task_mpl_807E3C8
-
- thumb_func_start sub_8080E28
-sub_8080E28: @ 8080E28
- push {lr}
- bl ScriptContext2_Enable
- bl pal_fill_black
- ldr r0, _08080E40 @ =task_mpl_807E3C8
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080E40: .4byte task_mpl_807E3C8
- thumb_func_end sub_8080E28
-
- thumb_func_start sub_8080E44
-sub_8080E44: @ 8080E44
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053E90
- bl pal_fill_black
- ldr r0, _08080E60 @ =task_mpl_807E3C8
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080E60: .4byte task_mpl_807E3C8
- thumb_func_end sub_8080E44
-
- thumb_func_start sub_8080E64
-sub_8080E64: @ 8080E64
- ldr r0, _08080E6C @ =gPaletteFade
- ldrb r0, [r0, 0x7]
- lsrs r0, 7
- bx lr
- .align 2, 0
-_08080E6C: .4byte gPaletteFade
- thumb_func_end sub_8080E64
-
- thumb_func_start sub_8080E70
-sub_8080E70: @ 8080E70
- push {lr}
- bl sub_807D770
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08080E82
- movs r0, 0
- b _08080E84
-_08080E82:
- movs r0, 0x1
-_08080E84:
- pop {r1}
- bx r1
- thumb_func_end sub_8080E70
-
- thumb_func_start sub_8080E88
-sub_8080E88: @ 8080E88
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053FF8
- bl fade_8080918
- bl PlayRainSoundEffect
- movs r0, 0x9
- bl PlaySE
- ldr r0, _08080EB4 @ =gFieldCallback
- ldr r1, _08080EB8 @ =mapldr_default
- str r1, [r0]
- ldr r0, _08080EBC @ =task0A_fade_n_map_maybe
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080EB4: .4byte gFieldCallback
-_08080EB8: .4byte mapldr_default
-_08080EBC: .4byte task0A_fade_n_map_maybe
- thumb_func_end sub_8080E88
-
- thumb_func_start sp13E_warp_to_last_warp
-sp13E_warp_to_last_warp: @ 8080EC0
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053FF8
- bl fade_8080918
- bl PlayRainSoundEffect
- ldr r0, _08080EE4 @ =gFieldCallback
- ldr r1, _08080EE8 @ =mapldr_default
- str r1, [r0]
- ldr r0, _08080EEC @ =task0A_fade_n_map_maybe
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080EE4: .4byte gFieldCallback
-_08080EE8: .4byte mapldr_default
-_08080EEC: .4byte task0A_fade_n_map_maybe
- thumb_func_end sp13E_warp_to_last_warp
-
- thumb_func_start sub_8080EF0
-sub_8080EF0: @ 8080EF0
- push {lr}
- bl ScriptContext2_Enable
- ldr r0, _08080F08 @ =gFieldCallback
- ldr r1, _08080F0C @ =mapldr_default
- str r1, [r0]
- ldr r0, _08080F10 @ =sub_808115C
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08080F08: .4byte gFieldCallback
-_08080F0C: .4byte mapldr_default
-_08080F10: .4byte sub_808115C
- thumb_func_end sub_8080EF0
-
- thumb_func_start sp13F_fall_to_last_warp
-sp13F_fall_to_last_warp: @ 8080F14
- push {lr}
- bl sp13E_warp_to_last_warp
- ldr r1, _08080F24 @ =gFieldCallback
- ldr r0, _08080F28 @ =sub_8086748
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08080F24: .4byte gFieldCallback
-_08080F28: .4byte sub_8086748
- thumb_func_end sp13F_fall_to_last_warp
-
- thumb_func_start sub_8080F2C
-sub_8080F2C: @ 8080F2C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl ScriptContext2_Enable
- adds r0, r4, 0
- movs r1, 0xA
- bl sub_8086A2C
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8080F2C
-
- thumb_func_start sub_8080F48
-sub_8080F48: @ 8080F48
- push {lr}
- bl ScriptContext2_Enable
- movs r0, 0xA
- bl sub_80871B8
- pop {r0}
- bx r0
- thumb_func_end sub_8080F48
-
- thumb_func_start sub_8080F58
-sub_8080F58: @ 8080F58
- push {lr}
- bl ScriptContext2_Enable
- movs r0, 0xA
- bl sub_8087654
- pop {r0}
- bx r0
- thumb_func_end sub_8080F58
-
- thumb_func_start sub_8080F68
-sub_8080F68: @ 8080F68
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053FF8
- bl fade_8080918
- movs r0, 0x2D
- bl PlaySE
- ldr r0, _08080F90 @ =task0A_fade_n_map_maybe
- movs r1, 0xA
- bl CreateTask
- ldr r1, _08080F94 @ =gFieldCallback
- ldr r0, _08080F98 @ =sub_8080B78
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08080F90: .4byte task0A_fade_n_map_maybe
-_08080F94: .4byte gFieldCallback
-_08080F98: .4byte sub_8080B78
- thumb_func_end sub_8080F68
-
- thumb_func_start sub_8080F9C
-sub_8080F9C: @ 8080F9C
- push {lr}
- bl ScriptContext2_Enable
- bl fade_8080918
- ldr r0, _08080FB8 @ =task0A_fade_n_map_maybe
- movs r1, 0xA
- bl CreateTask
- ldr r1, _08080FBC @ =gFieldCallback
- ldr r0, _08080FC0 @ =sub_80C791C
- str r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08080FB8: .4byte task0A_fade_n_map_maybe
-_08080FBC: .4byte gFieldCallback
-_08080FC0: .4byte sub_80C791C
- thumb_func_end sub_8080F9C
-
- thumb_func_start sub_8080FC4
-sub_8080FC4: @ 8080FC4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08080FE8 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08080FF8
- cmp r0, 0x1
- bgt _08080FEC
- cmp r0, 0
- beq _08080FF2
- b _08081022
- .align 2, 0
-_08080FE8: .4byte gTasks
-_08080FEC:
- cmp r0, 0x2
- beq _08081012
- b _08081022
-_08080FF2:
- bl ScriptContext2_Enable
- b _0808100A
-_08080FF8:
- bl sub_8080E64
- cmp r0, 0
- bne _08081022
- bl sub_8054034
- lsls r0, 24
- cmp r0, 0
- beq _08081022
-_0808100A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08081022
-_08081012:
- bl warp_in
- ldr r0, _08081028 @ =sub_8054588
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_08081022:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08081028: .4byte sub_8054588
- thumb_func_end sub_8080FC4
-
- thumb_func_start DoCableClubWarp
-DoCableClubWarp: @ 808102C
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053FF8
- bl fade_8080918
- movs r0, 0x9
- bl PlaySE
- ldr r0, _0808104C @ =sub_8080FC4
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_0808104C: .4byte sub_8080FC4
- thumb_func_end DoCableClubWarp
-
- thumb_func_start sub_8081050
-sub_8081050: @ 8081050
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08081074 @ =gTasks + 0x8
- adds r4, r0, r1
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08081096
- cmp r0, 0x1
- bgt _08081078
- cmp r0, 0
- beq _0808107E
- b _080810CC
- .align 2, 0
-_08081074: .4byte gTasks + 0x8
-_08081078:
- cmp r0, 0x2
- beq _080810B4
- b _080810CC
-_0808107E:
- bl ClearLinkCallback_2
- movs r0, 0x1
- movs r1, 0
- bl fade_screen
- bl sub_8053FF8
- movs r0, 0x9
- bl PlaySE
- b _080810AC
-_08081096:
- bl sub_8080E64
- cmp r0, 0
- bne _080810CC
- bl sub_8054034
- lsls r0, 24
- cmp r0, 0
- beq _080810CC
- bl sub_800832C
-_080810AC:
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- b _080810CC
-_080810B4:
- ldr r0, _080810D4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080810CC
- bl warp_in
- ldr r0, _080810D8 @ =CB2_LoadMap
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_080810CC:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080810D4: .4byte gReceivedRemoteLinkPlayers
-_080810D8: .4byte CB2_LoadMap
- thumb_func_end sub_8081050
-
- thumb_func_start sub_80810DC
-sub_80810DC: @ 80810DC
- push {lr}
- ldr r0, _080810EC @ =sub_8081050
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080810EC: .4byte sub_8081050
- thumb_func_end sub_80810DC
-
- thumb_func_start task0A_fade_n_map_maybe
-task0A_fade_n_map_maybe: @ 80810F0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _08081114 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08081128
- cmp r0, 0x1
- bgt _08081118
- cmp r0, 0
- beq _0808111E
- b _08081152
- .align 2, 0
-_08081114: .4byte gTasks
-_08081118:
- cmp r0, 0x2
- beq _08081142
- b _08081152
-_0808111E:
- bl FreezeMapObjects
- bl ScriptContext2_Enable
- b _0808113A
-_08081128:
- bl sub_8080E64
- cmp r0, 0
- bne _08081152
- bl sub_8054034
- lsls r0, 24
- cmp r0, 0
- beq _08081152
-_0808113A:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _08081152
-_08081142:
- bl warp_in
- ldr r0, _08081158 @ =CB2_LoadMap
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_08081152:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08081158: .4byte CB2_LoadMap
- thumb_func_end task0A_fade_n_map_maybe
-
- thumb_func_start sub_808115C
-sub_808115C: @ 808115C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0808118C @ =gTasks
- adds r5, r1, r0
- adds r4, r5, 0
- adds r4, 0xC
- adds r6, r5, 0
- adds r6, 0xE
- movs r2, 0x8
- ldrsh r1, [r5, r2]
- adds r2, r0, 0
- cmp r1, 0x4
- bls _08081180
- b _080812BC
-_08081180:
- lsls r0, r1, 2
- ldr r1, _08081190 @ =_08081194
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0808118C: .4byte gTasks
-_08081190: .4byte _08081194
- .align 2, 0
-_08081194:
- .4byte _080811A8
- .4byte _080811E4
- .4byte _08081240
- .4byte _0808128C
- .4byte _080812A8
-_080811A8:
- bl FreezeMapObjects
- adds r0, r4, 0
- adds r1, r6, 0
- bl PlayerGetDestCoords
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0
- ldrsh r1, [r6, r2]
- subs r1, 0x1
- bl sub_8058790
- lsls r0, 16
- lsrs r0, 16
- bl PlaySE
- movs r1, 0
- ldrsh r0, [r4, r1]
- movs r2, 0
- ldrsh r1, [r6, r2]
- subs r1, 0x1
- bl FieldAnimateDoorOpen
- lsls r0, 24
- asrs r0, 24
- strh r0, [r5, 0xA]
- movs r0, 0x1
- strh r0, [r5, 0x8]
- b _080812BC
-_080811E4:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0
- blt _080811FA
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0x1
- beq _080812BC
-_080811FA:
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r4, _0808123C @ =gMapObjects
- adds r0, r4
- bl FieldObjectClearAnimIfSpecialAnimActive
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x9
- bl FieldObjectSetSpecialAnim
- movs r0, 0x2
- strh r0, [r5, 0x8]
- b _080812BC
- .align 2, 0
-_0808123C: .4byte gMapObjects
-_08081240:
- bl walkrun_is_standing_still
- lsls r0, 24
- cmp r0, 0
- beq _080812BC
- movs r2, 0
- ldrsh r0, [r4, r2]
- movs r2, 0
- ldrsh r1, [r6, r2]
- subs r1, 0x1
- bl FieldAnimateDoorClose
- lsls r0, 24
- asrs r0, 24
- strh r0, [r5, 0xA]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0
- bl GetFieldObjectIdByLocalIdAndMap
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- ldr r1, _08081288 @ =gMapObjects
- adds r0, r1
- bl FieldObjectClearAnimIfSpecialAnimFinished
- movs r0, 0
- bl sub_8080958
- movs r0, 0x3
- strh r0, [r5, 0x8]
- b _080812BC
- .align 2, 0
-_08081288: .4byte gMapObjects
-_0808128C:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0
- blt _080812A2
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrb r0, [r1, 0x4]
- cmp r0, 0x1
- beq _080812BC
-_080812A2:
- movs r0, 0x4
- strh r0, [r5, 0x8]
- b _080812BC
-_080812A8:
- bl sub_8053FF8
- bl fade_8080918
- bl PlayRainSoundEffect
- movs r0, 0
- strh r0, [r5, 0x8]
- ldr r0, _080812C4 @ =task0A_fade_n_map_maybe
- str r0, [r5]
-_080812BC:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080812C4: .4byte task0A_fade_n_map_maybe
- thumb_func_end sub_808115C
-
- thumb_func_start sub_80812C8
-sub_80812C8: @ 80812C8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080812EC @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _08081300
- cmp r0, 0x1
- bgt _080812F0
- cmp r0, 0
- beq _080812F6
- b _0808132A
- .align 2, 0
-_080812EC: .4byte gTasks
-_080812F0:
- cmp r0, 0x2
- beq _0808131A
- b _0808132A
-_080812F6:
- bl FreezeMapObjects
- bl ScriptContext2_Enable
- b _08081312
-_08081300:
- bl sub_8080E64
- cmp r0, 0
- bne _0808132A
- bl sub_8054034
- lsls r0, 24
- cmp r0, 0
- beq _0808132A
-_08081312:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0808132A
-_0808131A:
- bl warp_in
- ldr r0, _08081330 @ =sub_8054534
- bl SetMainCallback2
- adds r0, r5, 0
- bl DestroyTask
-_0808132A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08081330: .4byte sub_8054534
- thumb_func_end sub_80812C8
-
- thumb_func_start sub_8081334
-sub_8081334: @ 8081334
- push {lr}
- bl ScriptContext2_Enable
- bl sub_8053FF8
- bl fade_8080918
- bl PlayRainSoundEffect
- movs r0, 0x9
- bl PlaySE
- ldr r0, _08081360 @ =gFieldCallback
- ldr r1, _08081364 @ =sub_8080B60
- str r1, [r0]
- ldr r0, _08081368 @ =sub_80812C8
- movs r1, 0xA
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_08081360: .4byte gFieldCallback
-_08081364: .4byte sub_8080B60
-_08081368: .4byte sub_80812C8
- thumb_func_end sub_8081334
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_ground_effect.s b/asm/field_ground_effect.s
deleted file mode 100644
index 47c4b4c60..000000000
--- a/asm/field_ground_effect.s
+++ /dev/null
@@ -1,1302 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start FieldObjectCheckForReflectiveSurface
-FieldObjectCheckForReflectiveSurface: @ 8063A44
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- adds r5, r0, 0
- ldrb r0, [r5, 0x5]
- bl GetFieldObjectGraphicsInfo
- movs r2, 0x8
- ldrsh r1, [r0, r2]
- adds r1, 0x8
- lsls r1, 12
- lsrs r1, 16
- str r1, [sp]
- movs r1, 0xA
- ldrsh r0, [r0, r1]
- adds r0, 0x8
- lsls r0, 12
- movs r4, 0
- lsrs r2, r0, 16
- str r2, [sp, 0x4]
- asrs r0, 16
- cmp r4, r0
- blt _08063A7A
- b _08063B80
-_08063A7A:
- movs r0, 0x1
- mov r10, r0
-_08063A7E:
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- add r1, r10
- lsls r4, 16
- asrs r6, r4, 16
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- mov r9, r4
- cmp r0, 0
- bne _08063B82
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- add r1, r10
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- movs r2, 0x1
- ldr r1, [sp]
- lsls r0, r1, 16
- asrs r1, r0, 16
- mov r8, r0
- cmp r2, r1
- bge _08063B6E
- movs r0, 0x80
- lsls r0, 9
- asrs r7, r0, 16
-_08063AD8:
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- lsls r1, r2, 16
- asrs r4, r1, 16
- adds r0, r4
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- adds r1, r7
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- movs r1, 0x10
- ldrsh r0, [r5, r1]
- subs r0, r4
- movs r2, 0x12
- ldrsh r1, [r5, r2]
- adds r1, r7
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- adds r0, r4
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- adds r1, r7
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- movs r1, 0x14
- ldrsh r0, [r5, r1]
- subs r0, r4
- movs r2, 0x16
- ldrsh r1, [r5, r2]
- adds r1, r7
- adds r1, r6
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl GetReflectionTypeByMetatileBehavior
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- bne _08063B82
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r0, r8
- blt _08063AD8
-_08063B6E:
- movs r1, 0x80
- lsls r1, 9
- add r1, r9
- lsrs r4, r1, 16
- ldr r2, [sp, 0x4]
- lsls r0, r2, 16
- cmp r1, r0
- bge _08063B80
- b _08063A7E
-_08063B80:
- movs r0, 0
-_08063B82:
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end FieldObjectCheckForReflectiveSurface
-
- thumb_func_start GetReflectionTypeByMetatileBehavior
-GetReflectionTypeByMetatileBehavior: @ 8063B94
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- bl MetatileBehavior_IsIce
- lsls r0, 24
- cmp r0, 0
- beq _08063BAA
- movs r0, 0x1
- b _08063BBC
-_08063BAA:
- adds r0, r4, 0
- bl MetatileBehavior_IsReflective
- lsls r0, 24
- cmp r0, 0
- bne _08063BBA
- movs r0, 0
- b _08063BBC
-_08063BBA:
- movs r0, 0x2
-_08063BBC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetReflectionTypeByMetatileBehavior
-
- thumb_func_start GetLedgeJumpDirection
-GetLedgeJumpDirection: @ 8063BC4
- push {r4,lr}
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 16
- lsrs r1, 16
- lsls r2, 24
- lsrs r4, r2, 24
- cmp r4, 0
- beq _08063C0A
- cmp r4, 0x4
- bls _08063BE0
- subs r0, r4, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
-_08063BE0:
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r3, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08063C10 @ =gUnknown_08376040
- lsls r1, r4, 2
- adds r1, r2
- ldr r1, [r1]
- bl _call_via_r1
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08063C14
-_08063C0A:
- movs r0, 0
- b _08063C1A
- .align 2, 0
-_08063C10: .4byte gUnknown_08376040
-_08063C14:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r0, 24
-_08063C1A:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end GetLedgeJumpDirection
-
- thumb_func_start FieldObjectSetSpriteOamTableForLongGrass
-FieldObjectSetSpriteOamTableForLongGrass: @ 8063C20
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldrb r0, [r5]
- lsls r0, 27
- cmp r0, 0
- blt _08063C74
- ldrb r0, [r5, 0x1E]
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _08063C74
- ldrb r0, [r5, 0x1F]
- bl MetatileBehavior_IsLongGrass
- lsls r0, 24
- cmp r0, 0
- beq _08063C74
- adds r4, 0x42
- ldrb r1, [r4]
- movs r6, 0x40
- negs r6, r6
- adds r0, r6, 0
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- strb r0, [r4]
- ldrb r0, [r5, 0xB]
- lsrs r0, 4
- bl ZCoordToPriority
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08063C74
- ldrb r0, [r4]
- adds r1, r6, 0
- ands r1, r0
- movs r0, 0x5
- orrs r1, r0
- strb r1, [r4]
-_08063C74:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectSetSpriteOamTableForLongGrass
-
- thumb_func_start IsZCoordMismatchAt
-IsZCoordMismatchAt: @ 8063C7C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, 16
- lsrs r0, r1, 16
- lsls r2, 16
- lsrs r1, r2, 16
- cmp r4, 0
- beq _08063CAA
- lsls r0, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08063CAA
- cmp r0, 0xF
- beq _08063CAA
- cmp r0, r4
- bne _08063CAE
-_08063CAA:
- movs r0, 0
- b _08063CB0
-_08063CAE:
- movs r0, 0x1
-_08063CB0:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end IsZCoordMismatchAt
-
- thumb_func_start FieldObjectUpdateZCoordAndPriority
-FieldObjectUpdateZCoordAndPriority: @ 8063CB8
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x3]
- lsls r0, 29
- cmp r0, 0
- blt _08063D06
- adds r0, r4, 0
- bl FieldObjectUpdateZCoord
- ldr r1, _08063D0C @ =gFieldObjectPriorities_08376070
- ldrb r2, [r4, 0xB]
- lsls r2, 24
- lsrs r0, r2, 28
- adds r0, r1
- ldrb r0, [r0]
- adds r4, r5, 0
- adds r4, 0x42
- movs r1, 0x3F
- ands r1, r0
- ldrb r3, [r4]
- movs r0, 0x40
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r4]
- ldr r0, _08063D10 @ =gFieldObjectPriorities_08376060
- lsrs r2, 28
- adds r2, r0
- movs r0, 0x3
- ldrb r1, [r2]
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r5, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r5, 0x5]
-_08063D06:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08063D0C: .4byte gFieldObjectPriorities_08376070
-_08063D10: .4byte gFieldObjectPriorities_08376060
- thumb_func_end FieldObjectUpdateZCoordAndPriority
-
- thumb_func_start InitObjectPriorityByZCoord
-InitObjectPriorityByZCoord: @ 8063D14
- push {r4,lr}
- lsls r1, 24
- lsrs r1, 24
- ldr r2, _08063D58 @ =gFieldObjectPriorities_08376070
- adds r2, r1, r2
- ldrb r2, [r2]
- movs r3, 0x42
- adds r3, r0
- mov r12, r3
- movs r3, 0x3F
- ands r3, r2
- mov r2, r12
- ldrb r4, [r2]
- movs r2, 0x40
- negs r2, r2
- ands r2, r4
- orrs r2, r3
- mov r3, r12
- strb r2, [r3]
- ldr r2, _08063D5C @ =gFieldObjectPriorities_08376060
- adds r1, r2
- movs r3, 0x3
- ldrb r2, [r1]
- ands r2, r3
- lsls r2, 2
- ldrb r3, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- strb r1, [r0, 0x5]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08063D58: .4byte gFieldObjectPriorities_08376070
-_08063D5C: .4byte gFieldObjectPriorities_08376060
- thumb_func_end InitObjectPriorityByZCoord
-
- thumb_func_start ZCoordToPriority
-ZCoordToPriority: @ 8063D60
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08063D6C @ =gFieldObjectPriorities_08376060
- adds r0, r1
- ldrb r0, [r0]
- bx lr
- .align 2, 0
-_08063D6C: .4byte gFieldObjectPriorities_08376060
- thumb_func_end ZCoordToPriority
-
- thumb_func_start FieldObjectUpdateZCoord
-FieldObjectUpdateZCoord: @ 8063D70
- push {r4,r5,lr}
- adds r4, r0, 0
- movs r1, 0x10
- ldrsh r0, [r4, r1]
- movs r2, 0x12
- ldrsh r1, [r4, r2]
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r5, r0, 24
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- movs r2, 0x16
- ldrsh r1, [r4, r2]
- bl MapGridGetZCoordAt
- lsls r0, 24
- lsrs r0, 24
- cmp r5, 0xF
- beq _08063DBE
- cmp r0, 0xF
- beq _08063DBE
- movs r3, 0xF
- adds r0, r5, 0
- ands r0, r3
- ldrb r1, [r4, 0xB]
- movs r2, 0x10
- negs r2, r2
- ands r2, r1
- orrs r2, r0
- strb r2, [r4, 0xB]
- cmp r5, 0
- beq _08063DBE
- cmp r5, 0xF
- beq _08063DBE
- lsls r0, r5, 4
- ands r2, r3
- orrs r2, r0
- strb r2, [r4, 0xB]
-_08063DBE:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end FieldObjectUpdateZCoord
-
- thumb_func_start SetObjectSubpriorityByZCoord
-SetObjectSubpriorityByZCoord: @ 8063DC4
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 24
- lsrs r2, 24
- adds r3, r1, 0
- adds r3, 0x29
- movs r5, 0
- ldrsb r5, [r3, r5]
- ldrh r4, [r1, 0x22]
- ldr r3, _08063E04 @ =gSpriteCoordOffsetY
- subs r4, r5
- ldrh r3, [r3]
- adds r4, r3
- adds r4, 0x8
- movs r3, 0xFF
- ands r4, r3
- lsrs r4, 4
- movs r3, 0x10
- subs r3, r4
- lsls r3, 17
- ldr r4, _08063E08 @ =gUnknown_08376050
- adds r0, r4
- lsrs r3, 16
- ldrb r0, [r0]
- adds r3, r0
- adds r2, r3
- adds r1, 0x43
- strb r2, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08063E04: .4byte gSpriteCoordOffsetY
-_08063E08: .4byte gUnknown_08376050
- thumb_func_end SetObjectSubpriorityByZCoord
-
- thumb_func_start FieldObjectUpdateSubpriority
-FieldObjectUpdateSubpriority: @ 8063E0C
- push {lr}
- adds r2, r0, 0
- ldrb r0, [r2, 0x3]
- lsls r0, 29
- cmp r0, 0
- blt _08063E22
- ldrb r0, [r2, 0xB]
- lsrs r0, 4
- movs r2, 0x1
- bl SetObjectSubpriorityByZCoord
-_08063E22:
- pop {r0}
- bx r0
- thumb_func_end FieldObjectUpdateSubpriority
-
- thumb_func_start AreZCoordsCompatible
-AreZCoordsCompatible: @ 8063E28
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- cmp r0, 0
- beq _08063E3E
- cmp r1, 0
- beq _08063E3E
- cmp r0, r1
- bne _08063E42
-_08063E3E:
- movs r0, 0x1
- b _08063E44
-_08063E42:
- movs r0, 0
-_08063E44:
- pop {r1}
- bx r1
- thumb_func_end AreZCoordsCompatible
-
- thumb_func_start GroundEffect_SpawnOnTallGrass
-GroundEffect_SpawnOnTallGrass: @ 8063E48
- push {lr}
- ldr r3, _08063E8C @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- str r1, [r3]
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x4]
- ldrb r1, [r0, 0xB]
- lsrs r1, 4
- str r1, [r3, 0x8]
- movs r1, 0x2
- str r1, [r3, 0xC]
- ldrb r1, [r0, 0x8]
- lsls r1, 8
- ldrb r2, [r0, 0x9]
- orrs r1, r2
- str r1, [r3, 0x10]
- ldrb r0, [r0, 0xA]
- str r0, [r3, 0x14]
- ldr r1, _08063E90 @ =gSaveBlock1
- ldrb r0, [r1, 0x5]
- lsls r0, 8
- ldrb r1, [r1, 0x4]
- orrs r0, r1
- str r0, [r3, 0x18]
- movs r0, 0x1
- str r0, [r3, 0x1C]
- movs r0, 0x4
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08063E8C: .4byte gUnknown_0202FF84
-_08063E90: .4byte gSaveBlock1
- thumb_func_end GroundEffect_SpawnOnTallGrass
-
- thumb_func_start sub_8063E94
-sub_8063E94: @ 8063E94
- push {lr}
- ldr r3, _08063ED8 @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- str r1, [r3]
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x4]
- ldrb r1, [r0, 0xB]
- lsrs r1, 4
- str r1, [r3, 0x8]
- movs r1, 0x2
- str r1, [r3, 0xC]
- ldrb r1, [r0, 0x8]
- lsls r1, 8
- ldrb r2, [r0, 0x9]
- orrs r1, r2
- str r1, [r3, 0x10]
- ldrb r0, [r0, 0xA]
- str r0, [r3, 0x14]
- ldr r1, _08063EDC @ =gSaveBlock1
- ldrb r0, [r1, 0x5]
- lsls r0, 8
- ldrb r1, [r1, 0x4]
- orrs r0, r1
- str r0, [r3, 0x18]
- movs r0, 0
- str r0, [r3, 0x1C]
- movs r0, 0x4
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08063ED8: .4byte gUnknown_0202FF84
-_08063EDC: .4byte gSaveBlock1
- thumb_func_end sub_8063E94
-
- thumb_func_start sub_8063EE0
-sub_8063EE0: @ 8063EE0
- push {lr}
- ldr r3, _08063F24 @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- str r1, [r3]
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x4]
- ldrb r1, [r0, 0xB]
- lsrs r1, 4
- str r1, [r3, 0x8]
- movs r1, 0x2
- str r1, [r3, 0xC]
- ldrb r1, [r0, 0x8]
- lsls r1, 8
- ldrb r2, [r0, 0x9]
- orrs r1, r2
- str r1, [r3, 0x10]
- ldrb r0, [r0, 0xA]
- str r0, [r3, 0x14]
- ldr r1, _08063F28 @ =gSaveBlock1
- ldrb r0, [r1, 0x5]
- lsls r0, 8
- ldrb r1, [r1, 0x4]
- orrs r0, r1
- str r0, [r3, 0x18]
- movs r0, 0x1
- str r0, [r3, 0x1C]
- movs r0, 0x11
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08063F24: .4byte gUnknown_0202FF84
-_08063F28: .4byte gSaveBlock1
- thumb_func_end sub_8063EE0
-
- thumb_func_start sub_8063F2C
-sub_8063F2C: @ 8063F2C
- push {lr}
- ldr r3, _08063F70 @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r1, [r0, r2]
- str r1, [r3]
- movs r2, 0x12
- ldrsh r1, [r0, r2]
- str r1, [r3, 0x4]
- ldrb r1, [r0, 0xB]
- lsrs r1, 4
- str r1, [r3, 0x8]
- movs r1, 0x2
- str r1, [r3, 0xC]
- ldrb r1, [r0, 0x8]
- lsls r1, 8
- ldrb r2, [r0, 0x9]
- orrs r1, r2
- str r1, [r3, 0x10]
- ldrb r0, [r0, 0xA]
- str r0, [r3, 0x14]
- ldr r1, _08063F74 @ =gSaveBlock1
- ldrb r0, [r1, 0x5]
- lsls r0, 8
- ldrb r1, [r1, 0x4]
- orrs r0, r1
- str r0, [r3, 0x18]
- movs r0, 0
- str r0, [r3, 0x1C]
- movs r0, 0x11
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08063F70: .4byte gUnknown_0202FF84
-_08063F74: .4byte gSaveBlock1
- thumb_func_end sub_8063F2C
-
- thumb_func_start GroundEffect_WaterReflection
-GroundEffect_WaterReflection: @ 8063F78
- push {lr}
- movs r2, 0
- bl SetUpReflection
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_WaterReflection
-
- thumb_func_start GroundEffect_IceReflection
-GroundEffect_IceReflection: @ 8063F84
- push {lr}
- movs r2, 0x1
- bl SetUpReflection
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_IceReflection
-
- thumb_func_start GroundEffect_FlowingWater
-GroundEffect_FlowingWater: @ 8063F90
- push {lr}
- adds r1, r0, 0
- movs r0, 0x22
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_FlowingWater
-
- thumb_func_start sub_8063FA0
-sub_8063FA0: @ 8063FA0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldr r1, _08063FC8 @ =gUnknown_08376080
- ldrb r0, [r0, 0xD]
- lsls r0, 2
- adds r0, r1
- ldr r3, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl _call_via_r3
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08063FC8: .4byte gUnknown_08376080
- thumb_func_end sub_8063FA0
-
- thumb_func_start sub_8063FCC
-sub_8063FCC: @ 8063FCC
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4, 0x5]
- bl GetFieldObjectGraphicsInfo
- ldr r1, _08063FF4 @ =gUnknown_08376080
- ldrb r0, [r0, 0xD]
- lsls r0, 2
- adds r0, r1
- ldr r3, [r0]
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x1
- bl _call_via_r3
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08063FF4: .4byte gUnknown_08376080
- thumb_func_end sub_8063FCC
-
- thumb_func_start nullsub_50
-nullsub_50: @ 8063FF8
- bx lr
- thumb_func_end nullsub_50
-
- thumb_func_start DoTracksGroundEffect_Footprints
-DoTracksGroundEffect_Footprints: @ 8063FFC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r5, r0, 0
- lsls r4, r2, 24
- lsrs r4, 24
- ldr r1, _08064044 @ =gSandFootprints_FieldEffectData
- mov r0, sp
- movs r2, 0x4
- bl memcpy
- ldr r1, _08064048 @ =gUnknown_0202FF84
- movs r2, 0x14
- ldrsh r0, [r5, r2]
- str r0, [r1]
- movs r2, 0x16
- ldrsh r0, [r5, r2]
- str r0, [r1, 0x4]
- movs r0, 0x95
- str r0, [r1, 0x8]
- movs r0, 0x2
- str r0, [r1, 0xC]
- ldrb r0, [r5, 0x18]
- lsls r0, 28
- lsrs r0, 28
- str r0, [r1, 0x10]
- lsls r4, 1
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- bl FieldEffectStart
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08064044: .4byte gSandFootprints_FieldEffectData
-_08064048: .4byte gUnknown_0202FF84
- thumb_func_end DoTracksGroundEffect_Footprints
-
- thumb_func_start DoTracksGroundEffect_BikeTireTracks
-DoTracksGroundEffect_BikeTireTracks: @ 806404C
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, [r4, 0x10]
- ldr r0, [r4, 0x14]
- cmp r1, r0
- beq _0806408E
- ldr r2, _08064094 @ =gUnknown_0202FF84
- movs r1, 0x14
- ldrsh r0, [r4, r1]
- str r0, [r2]
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- str r0, [r2, 0x4]
- movs r0, 0x95
- str r0, [r2, 0x8]
- movs r0, 0x2
- str r0, [r2, 0xC]
- ldr r3, _08064098 @ =gBikeTireTracks_Transitions
- ldrb r1, [r4, 0x18]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- adds r0, 0x20
- ldrb r0, [r0]
- lsls r0, 2
- subs r0, 0x5
- adds r1, r0
- adds r1, r3
- ldrb r0, [r1]
- str r0, [r2, 0x10]
- movs r0, 0x23
- bl FieldEffectStart
-_0806408E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08064094: .4byte gUnknown_0202FF84
-_08064098: .4byte gBikeTireTracks_Transitions
- thumb_func_end DoTracksGroundEffect_BikeTireTracks
-
- thumb_func_start GroundEffect_Ripple
-GroundEffect_Ripple: @ 806409C
- push {lr}
- bl DoRippleFieldEffect
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_Ripple
-
- thumb_func_start GroundEffect_StepOnPuddle
-GroundEffect_StepOnPuddle: @ 80640A8
- push {lr}
- adds r1, r0, 0
- movs r0, 0xF
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_StepOnPuddle
-
- thumb_func_start GroundEffect_SandPile
-GroundEffect_SandPile: @ 80640B8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x27
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_SandPile
-
- thumb_func_start GroundEffect_JumpOnTallGrass
-GroundEffect_JumpOnTallGrass: @ 80640C8
- push {r4-r7,lr}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r1, _0806411C @ =gUnknown_0202FF84
- movs r2, 0x10
- ldrsh r0, [r5, r2]
- str r0, [r1]
- movs r4, 0x12
- ldrsh r0, [r5, r4]
- str r0, [r1, 0x4]
- ldrb r0, [r5, 0xB]
- lsrs r0, 4
- str r0, [r1, 0x8]
- movs r0, 0x2
- str r0, [r1, 0xC]
- movs r0, 0xC
- bl FieldEffectStart
- ldrb r0, [r5, 0x8]
- ldrb r1, [r5, 0x9]
- ldrb r2, [r5, 0xA]
- movs r7, 0x10
- ldrsh r3, [r5, r7]
- movs r7, 0x12
- ldrsh r4, [r5, r7]
- str r4, [sp]
- bl sub_8126FF0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x40
- bne _08064112
- adds r0, r5, 0
- adds r1, r6, 0
- bl GroundEffect_SpawnOnTallGrass
-_08064112:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0806411C: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpOnTallGrass
-
- thumb_func_start GroundEffect_JumpOnLongGrass
-GroundEffect_JumpOnLongGrass: @ 8064120
- push {lr}
- ldr r2, _08064144 @ =gUnknown_0202FF84
- movs r3, 0x10
- ldrsh r1, [r0, r3]
- str r1, [r2]
- movs r3, 0x12
- ldrsh r1, [r0, r3]
- str r1, [r2, 0x4]
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- str r0, [r2, 0x8]
- movs r0, 0x2
- str r0, [r2, 0xC]
- movs r0, 0x12
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08064144: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpOnLongGrass
-
- thumb_func_start GroundEffect_JumpOnShallowWater
-GroundEffect_JumpOnShallowWater: @ 8064148
- push {r4,lr}
- ldr r3, _08064174 @ =gUnknown_0202FF84
- movs r4, 0x10
- ldrsh r2, [r0, r4]
- str r2, [r3]
- movs r4, 0x12
- ldrsh r2, [r0, r4]
- str r2, [r3, 0x4]
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- str r0, [r3, 0x8]
- ldrb r0, [r1, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r3, 0xC]
- movs r0, 0x10
- bl FieldEffectStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08064174: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpOnShallowWater
-
- thumb_func_start GroundEffect_JumpOnWater
-GroundEffect_JumpOnWater: @ 8064178
- push {r4,lr}
- ldr r3, _080641A4 @ =gUnknown_0202FF84
- movs r4, 0x10
- ldrsh r2, [r0, r4]
- str r2, [r3]
- movs r4, 0x12
- ldrsh r2, [r0, r4]
- str r2, [r3, 0x4]
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- str r0, [r3, 0x8]
- ldrb r0, [r1, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r3, 0xC]
- movs r0, 0xE
- bl FieldEffectStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080641A4: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpOnWater
-
- thumb_func_start GroundEffect_JumpLandingDust
-GroundEffect_JumpLandingDust: @ 80641A8
- push {r4,lr}
- ldr r3, _080641D4 @ =gUnknown_0202FF84
- movs r4, 0x10
- ldrsh r2, [r0, r4]
- str r2, [r3]
- movs r4, 0x12
- ldrsh r2, [r0, r4]
- str r2, [r3, 0x4]
- ldrb r0, [r0, 0xB]
- lsrs r0, 4
- str r0, [r3, 0x8]
- ldrb r0, [r1, 0x5]
- lsls r0, 28
- lsrs r0, 30
- str r0, [r3, 0xC]
- movs r0, 0xA
- bl FieldEffectStart
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080641D4: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_JumpLandingDust
-
- thumb_func_start GroundEffect_ShortGrass
-GroundEffect_ShortGrass: @ 80641D8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x29
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_ShortGrass
-
- thumb_func_start GroundEffect_HotSprings
-GroundEffect_HotSprings: @ 80641E8
- push {lr}
- adds r1, r0, 0
- movs r0, 0x2A
- bl oe_exec_and_other_stuff
- pop {r0}
- bx r0
- thumb_func_end GroundEffect_HotSprings
-
- thumb_func_start GroundEffect_Seaweed
-GroundEffect_Seaweed: @ 80641F8
- push {lr}
- ldr r2, _08064214 @ =gUnknown_0202FF84
- movs r3, 0x10
- ldrsh r1, [r0, r3]
- str r1, [r2]
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- str r0, [r2, 0x4]
- movs r0, 0x35
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_08064214: .4byte gUnknown_0202FF84
- thumb_func_end GroundEffect_Seaweed
-
- thumb_func_start sub_8064218
-sub_8064218: @ 8064218
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- adds r6, r1, 0
- adds r5, r2, 0
- movs r4, 0
- ldr r0, _08064258 @ =gUnknown_083760A0
- mov r8, r0
-_0806422A:
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _08064240
- lsls r0, r4, 2
- add r0, r8
- ldr r2, [r0]
- adds r0, r7, 0
- adds r1, r6, 0
- bl _call_via_r2
-_08064240:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- lsrs r5, 1
- cmp r4, 0x13
- bls _0806422A
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08064258: .4byte gUnknown_083760A0
- thumb_func_end sub_8064218
-
- thumb_func_start filters_out_some_ground_effects
-filters_out_some_ground_effects: @ 806425C
- push {lr}
- adds r2, r0, 0
- adds r3, r1, 0
- ldrb r0, [r2]
- lsls r0, 27
- cmp r0, 0
- bge _0806428A
- ldrb r1, [r2, 0x2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- adds r1, 0x8
- ands r0, r1
- subs r1, 0x18
- ands r0, r1
- strb r0, [r2, 0x2]
- ldr r0, [r3]
- ldr r1, _08064290 @ =0xfff9f7bd
- ands r0, r1
- str r0, [r3]
-_0806428A:
- pop {r0}
- bx r0
- .align 2, 0
-_08064290: .4byte 0xfff9f7bd
- thumb_func_end filters_out_some_ground_effects
-
- thumb_func_start FilterOutStepOnPuddleGroundEffectIfJumping
-FilterOutStepOnPuddleGroundEffectIfJumping: @ 8064294
- push {lr}
- adds r2, r1, 0
- ldrb r0, [r0]
- lsls r0, 26
- cmp r0, 0
- bge _080642A8
- ldr r0, [r2]
- ldr r1, _080642AC @ =0xfffffbff
- ands r0, r1
- str r0, [r2]
-_080642A8:
- pop {r0}
- bx r0
- .align 2, 0
-_080642AC: .4byte 0xfffffbff
- thumb_func_end FilterOutStepOnPuddleGroundEffectIfJumping
-
- thumb_func_start DoGroundEffects_OnSpawn
-DoGroundEffects_OnSpawn: @ 80642B0
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- lsls r0, 29
- cmp r0, 0
- bge _080642F4
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- bl FieldObjectUpdateZCoordAndPriority
- adds r0, r4, 0
- mov r1, sp
- bl GetAllGroundEffectFlags_OnSpawn
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetSpriteOamTableForLongGrass
- ldr r2, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8064218
- ldrb r1, [r4]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r4]
-_080642F4:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end DoGroundEffects_OnSpawn
-
- thumb_func_start DoGroundEffects_OnBeginStep
-DoGroundEffects_OnBeginStep: @ 80642FC
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- lsls r0, 29
- cmp r0, 0
- bge _08064348
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- bl FieldObjectUpdateZCoordAndPriority
- adds r0, r4, 0
- mov r1, sp
- bl GetAllGroundEffectFlags_OnBeginStep
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetSpriteOamTableForLongGrass
- adds r0, r4, 0
- mov r1, sp
- bl filters_out_some_ground_effects
- ldr r2, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8064218
- ldrb r1, [r4]
- movs r0, 0x5
- negs r0, r0
- ands r0, r1
- movs r1, 0x11
- negs r1, r1
- ands r0, r1
- strb r0, [r4]
-_08064348:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end DoGroundEffects_OnBeginStep
-
- thumb_func_start DoGroundEffects_OnFinishStep
-DoGroundEffects_OnFinishStep: @ 8064350
- push {r4,r5,lr}
- sub sp, 0x4
- adds r4, r0, 0
- adds r5, r1, 0
- ldrb r0, [r4]
- lsls r0, 28
- cmp r0, 0
- bge _0806439C
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- bl FieldObjectUpdateZCoordAndPriority
- adds r0, r4, 0
- mov r1, sp
- bl GetAllGroundEffectFlags_OnFinishStep
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetSpriteOamTableForLongGrass
- adds r0, r4, 0
- mov r1, sp
- bl FilterOutStepOnPuddleGroundEffectIfJumping
- ldr r2, [sp]
- adds r0, r4, 0
- adds r1, r5, 0
- bl sub_8064218
- ldrb r1, [r4]
- movs r0, 0x9
- negs r0, r0
- ands r0, r1
- movs r1, 0x21
- negs r1, r1
- ands r0, r1
- strb r0, [r4]
-_0806439C:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end DoGroundEffects_OnFinishStep
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_map_obj.s b/asm/field_map_obj.s
deleted file mode 100644
index c8c402217..000000000
--- a/asm/field_map_obj.s
+++ /dev/null
@@ -1,628 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
-.ifndef NONMATCHING
- thumb_func_start sub_805F3EC
-sub_805F3EC: @ 805F3EC
- movs r0, 0
- bx lr
- thumb_func_end sub_805F3EC
-
- thumb_func_start sub_805F3F0
-sub_805F3F0: @ 805F3F0
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r1, _0805F434 @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- bl state_to_direction
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F434: .4byte gUnknown_0836DC09
- thumb_func_end sub_805F3F0
-
- thumb_func_start sub_805F438
-sub_805F438: @ 805F438
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r1, _0805F4EC @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r2, r6, 0
- bl state_to_direction
- adds r6, r0, 0
- mov r5, sp
- adds r5, 0x2
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, sp
- adds r3, r5, 0
- bl FieldObjectMoveDestCoords
- adds r0, r6, 0
- bl GetGoSpeed0AnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805F4BE
- mov r1, r8
- cmp r1, 0
- beq _0805F4D2
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r8
- lsls r0, 24
- cmp r0, 0
- bne _0805F4D2
-_0805F4BE:
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
-_0805F4D2:
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r7, 0x30]
- movs r0, 0x1
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F4EC: .4byte gUnknown_0836DC09
- thumb_func_end sub_805F438
-.endif
-
- thumb_func_start sub_805F4F0
-sub_805F4F0: @ 805F4F0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r1, _0805F5A4 @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r2, r6, 0
- bl state_to_direction
- adds r6, r0, 0
- mov r5, sp
- adds r5, 0x2
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, sp
- adds r3, r5, 0
- bl FieldObjectMoveDestCoords
- adds r0, r6, 0
- bl sub_8060744
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805F576
- mov r1, r8
- cmp r1, 0
- beq _0805F58A
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r8
- lsls r0, 24
- cmp r0, 0
- bne _0805F58A
-_0805F576:
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
-_0805F58A:
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r7, 0x30]
- movs r0, 0x1
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F5A4: .4byte gUnknown_0836DC09
- thumb_func_end sub_805F4F0
-
- thumb_func_start sub_805F5A8
-sub_805F5A8: @ 805F5A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r1, _0805F65C @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r2, r6, 0
- bl state_to_direction
- adds r6, r0, 0
- mov r5, sp
- adds r5, 0x2
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, sp
- adds r3, r5, 0
- bl FieldObjectMoveDestCoords
- adds r0, r6, 0
- bl sub_806079C
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805F62E
- mov r1, r8
- cmp r1, 0
- beq _0805F642
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r8
- lsls r0, 24
- cmp r0, 0
- bne _0805F642
-_0805F62E:
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
-_0805F642:
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r7, 0x30]
- movs r0, 0x1
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F65C: .4byte gUnknown_0836DC09
- thumb_func_end sub_805F5A8
-
- thumb_func_start sub_805F660
-sub_805F660: @ 805F660
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r1, _0805F714 @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r2, r6, 0
- bl state_to_direction
- adds r6, r0, 0
- mov r5, sp
- adds r5, 0x2
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, sp
- adds r3, r5, 0
- bl FieldObjectMoveDestCoords
- adds r0, r6, 0
- bl sub_80607C8
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805F6E6
- mov r1, r8
- cmp r1, 0
- beq _0805F6FA
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r8
- lsls r0, 24
- cmp r0, 0
- bne _0805F6FA
-_0805F6E6:
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
-_0805F6FA:
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r7, 0x30]
- movs r0, 0x1
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F714: .4byte gUnknown_0836DC09
- thumb_func_end sub_805F660
-
- thumb_func_start cph_IM_DIFFERENT
-cph_IM_DIFFERENT: @ 805F718
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r2, 24
- lsrs r2, 24
- ldr r1, _0805F75C @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- bl state_to_direction
- bl sub_806084C
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r5, 0
- bl FieldObjectSetRegularAnim
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r5, 0x30]
- movs r0, 0x1
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F75C: .4byte gUnknown_0836DC09
- thumb_func_end cph_IM_DIFFERENT
-
- thumb_func_start sub_805F760
-sub_805F760: @ 805F760
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r4, r0, 0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r1, _0805F814 @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r2, r6, 0
- bl state_to_direction
- adds r6, r0, 0
- mov r5, sp
- adds r5, 0x2
- adds r0, r4, 0
- adds r1, r6, 0
- mov r2, sp
- adds r3, r5, 0
- bl FieldObjectMoveDestCoords
- adds r0, r6, 0
- bl sub_80608A4
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
- mov r0, sp
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805F7E6
- mov r1, r8
- cmp r1, 0
- beq _0805F7FA
- mov r0, sp
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r8
- lsls r0, 24
- cmp r0, 0
- bne _0805F7FA
-_0805F7E6:
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
-_0805F7FA:
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r7, 0x30]
- movs r0, 0x1
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F814: .4byte gUnknown_0836DC09
- thumb_func_end sub_805F760
-
- thumb_func_start oac_hopping
-oac_hopping: @ 805F818
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- adds r4, r0, 0
- adds r7, r1, 0
- mov r8, r3
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r1, _0805F8DC @ =gUnknown_0836DC09
- ldrb r0, [r4, 0x6]
- adds r0, r1
- ldrb r0, [r0]
- adds r1, r4, 0
- adds r1, 0x21
- ldrb r1, [r1]
- adds r2, r6, 0
- bl state_to_direction
- adds r6, r0, 0
- ldrh r1, [r4, 0x10]
- add r0, sp, 0x4
- strh r1, [r0]
- ldrh r0, [r4, 0x12]
- mov r5, sp
- adds r5, 0x6
- strh r0, [r5]
- movs r0, 0x2
- str r0, [sp]
- adds r0, r6, 0
- add r1, sp, 0x4
- adds r2, r5, 0
- movs r3, 0x2
- bl sub_8060320
- adds r0, r6, 0
- bl GetJumpLedgeAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
- add r0, sp, 0x4
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0
- ldrsh r2, [r5, r0]
- adds r0, r4, 0
- adds r3, r6, 0
- bl npc_block_way
- lsls r0, 24
- cmp r0, 0
- bne _0805F8AC
- mov r1, r8
- cmp r1, 0
- beq _0805F8C0
- add r0, sp, 0x4
- movs r2, 0
- ldrsh r0, [r0, r2]
- movs r2, 0
- ldrsh r1, [r5, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r8
- lsls r0, 24
- cmp r0, 0
- bne _0805F8C0
-_0805F8AC:
- adds r0, r6, 0
- bl GetFaceDirectionAnimId
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl FieldObjectSetRegularAnim
-_0805F8C0:
- ldrb r0, [r4]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r4]
- movs r0, 0x2
- strh r0, [r7, 0x30]
- movs r0, 0x1
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0805F8DC: .4byte gUnknown_0836DC09
- thumb_func_end oac_hopping
diff --git a/asm/fldeff_80C5CD4.s b/asm/fldeff_80C5CD4.s
index 33182fc6a..011ce6427 100644
--- a/asm/fldeff_80C5CD4.s
+++ b/asm/fldeff_80C5CD4.s
@@ -741,7 +741,7 @@ _080C627C: .4byte gMapHeader
thumb_func_start sub_80C6280
sub_80C6280: @ 80C6280
push {lr}
- ldr r1, _080C6294 @ =gUnknown_0202FF84
+ ldr r1, _080C6294 @ =gFieldEffectArguments
ldr r0, [r1, 0x4]
cmp r0, 0x2
beq _080C62AA
@@ -751,7 +751,7 @@ sub_80C6280: @ 80C6280
beq _080C62A2
b _080C62BE
.align 2, 0
-_080C6294: .4byte gUnknown_0202FF84
+_080C6294: .4byte gFieldEffectArguments
_080C6298:
cmp r0, 0x3
beq _080C62AE
@@ -815,7 +815,7 @@ SetUpFieldMove_SecretPower: @ 80C62C4
bne _080C6330
bl sub_80C6264
ldr r1, _080C6320 @ =gFieldCallback
- ldr r0, _080C6324 @ =sub_808AB90
+ ldr r0, _080C6324 @ =FieldCallback_Teleport
str r0, [r1]
ldr r1, _080C6328 @ =gUnknown_03005CE4
ldr r0, _080C632C @ =sub_80C639C
@@ -824,7 +824,7 @@ SetUpFieldMove_SecretPower: @ 80C62C4
_080C6318: .4byte gScriptResult
_080C631C: .4byte gUnknown_0203923C
_080C6320: .4byte gFieldCallback
-_080C6324: .4byte sub_808AB90
+_080C6324: .4byte FieldCallback_Teleport
_080C6328: .4byte gUnknown_03005CE4
_080C632C: .4byte sub_80C639C
_080C6330:
@@ -836,14 +836,14 @@ _080C6330:
bne _080C6360
bl sub_80C6264
ldr r1, _080C6350 @ =gFieldCallback
- ldr r0, _080C6354 @ =sub_808AB90
+ ldr r0, _080C6354 @ =FieldCallback_Teleport
str r0, [r1]
ldr r1, _080C6358 @ =gUnknown_03005CE4
ldr r0, _080C635C @ =sub_80C64A8
b _080C6380
.align 2, 0
_080C6350: .4byte gFieldCallback
-_080C6354: .4byte sub_808AB90
+_080C6354: .4byte FieldCallback_Teleport
_080C6358: .4byte gUnknown_03005CE4
_080C635C: .4byte sub_80C64A8
_080C6360:
@@ -859,7 +859,7 @@ _080C636E:
_080C6372:
bl sub_80C6264
ldr r1, _080C638C @ =gFieldCallback
- ldr r0, _080C6390 @ =sub_808AB90
+ ldr r0, _080C6390 @ =FieldCallback_Teleport
str r0, [r1]
ldr r1, _080C6394 @ =gUnknown_03005CE4
ldr r0, _080C6398 @ =sub_80C660C
@@ -872,7 +872,7 @@ _080C6384:
bx r1
.align 2, 0
_080C638C: .4byte gFieldCallback
-_080C6390: .4byte sub_808AB90
+_080C6390: .4byte FieldCallback_Teleport
_080C6394: .4byte gUnknown_03005CE4
_080C6398: .4byte sub_80C660C
thumb_func_end SetUpFieldMove_SecretPower
@@ -880,7 +880,7 @@ _080C6398: .4byte sub_80C660C
thumb_func_start sub_80C639C
sub_80C639C: @ 80C639C
push {lr}
- ldr r1, _080C63B0 @ =gUnknown_0202FF84
+ ldr r1, _080C63B0 @ =gFieldEffectArguments
ldr r0, _080C63B4 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
str r0, [r1]
@@ -889,7 +889,7 @@ sub_80C639C: @ 80C639C
pop {r0}
bx r0
.align 2, 0
-_080C63B0: .4byte gUnknown_0202FF84
+_080C63B0: .4byte gFieldEffectArguments
_080C63B4: .4byte gLastFieldPokeMenuOpened
_080C63B8: .4byte gUnknown_081A2CE6
thumb_func_end sub_80C639C
@@ -943,7 +943,7 @@ FldEff_SecretPowerCave: @ 80C63FC
ldrh r1, [r2, 0x2]
lsls r1, 23
lsrs r1, 23
- ldr r4, _080C6448 @ =gUnknown_0202FF84
+ ldr r4, _080C6448 @ =gFieldEffectArguments
ldr r3, [r4, 0x14]
adds r1, r3
lsls r1, 16
@@ -963,7 +963,7 @@ FldEff_SecretPowerCave: @ 80C63FC
_080C643C: .4byte gSpriteTemplate_83D2614
_080C6440: .4byte gSprites
_080C6444: .4byte gPlayerAvatar
-_080C6448: .4byte gUnknown_0202FF84
+_080C6448: .4byte gFieldEffectArguments
thumb_func_end FldEff_SecretPowerCave
thumb_func_start sub_80C644C
@@ -1025,7 +1025,7 @@ sub_80C6498: @ 80C6498
thumb_func_start sub_80C64A8
sub_80C64A8: @ 80C64A8
push {lr}
- ldr r1, _080C64BC @ =gUnknown_0202FF84
+ ldr r1, _080C64BC @ =gFieldEffectArguments
ldr r0, _080C64C0 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
str r0, [r1]
@@ -1034,7 +1034,7 @@ sub_80C64A8: @ 80C64A8
pop {r0}
bx r0
.align 2, 0
-_080C64BC: .4byte gUnknown_0202FF84
+_080C64BC: .4byte gFieldEffectArguments
_080C64C0: .4byte gLastFieldPokeMenuOpened
_080C64C4: .4byte gUnknown_081A2D3E
thumb_func_end sub_80C64A8
@@ -1088,13 +1088,13 @@ FldEff_SecretPowerTree: @ 80C6508
ands r2, r0
cmp r2, 0x96
bne _080C652A
- ldr r1, _080C6588 @ =gUnknown_0202FF84
+ ldr r1, _080C6588 @ =gFieldEffectArguments
movs r0, 0
str r0, [r1, 0x1C]
_080C652A:
cmp r2, 0x9C
bne _080C6534
- ldr r1, _080C6588 @ =gUnknown_0202FF84
+ ldr r1, _080C6588 @ =gFieldEffectArguments
movs r0, 0x2
str r0, [r1, 0x1C]
_080C6534:
@@ -1110,7 +1110,7 @@ _080C6534:
ldrh r1, [r2, 0x2]
lsls r1, 23
lsrs r1, 23
- ldr r4, _080C6588 @ =gUnknown_0202FF84
+ ldr r4, _080C6588 @ =gFieldEffectArguments
ldr r3, [r4, 0x14]
adds r1, r3
lsls r1, 16
@@ -1137,7 +1137,7 @@ _080C6576:
.align 2, 0
_080C6580: .4byte gUnknown_0203923C
_080C6584: .4byte 0x00000fff
-_080C6588: .4byte gUnknown_0202FF84
+_080C6588: .4byte gFieldEffectArguments
_080C658C: .4byte gSpriteTemplate_83D262C
_080C6590: .4byte gSprites
_080C6594: .4byte gPlayerAvatar
@@ -1149,7 +1149,7 @@ sub_80C6598: @ 80C6598
adds r4, r0, 0
movs r0, 0x9B
bl PlaySE
- ldr r0, _080C65BC @ =gUnknown_0202FF84
+ ldr r0, _080C65BC @ =gFieldEffectArguments
ldr r1, [r0, 0x1C]
adds r2, r4, 0
adds r2, 0x2A
@@ -1162,7 +1162,7 @@ sub_80C6598: @ 80C6598
pop {r0}
bx r0
.align 2, 0
-_080C65BC: .4byte gUnknown_0202FF84
+_080C65BC: .4byte gFieldEffectArguments
_080C65C0: .4byte sub_80C65C4
thumb_func_end sub_80C6598
@@ -1177,7 +1177,7 @@ sub_80C65C4: @ 80C65C4
asrs r0, 16
cmp r0, 0x27
ble _080C65EE
- ldr r0, _080C65F4 @ =gUnknown_0202FF84
+ ldr r0, _080C65F4 @ =gFieldEffectArguments
ldr r0, [r0, 0x1C]
cmp r0, 0
beq _080C65E2
@@ -1195,7 +1195,7 @@ _080C65EE:
pop {r0}
bx r0
.align 2, 0
-_080C65F4: .4byte gUnknown_0202FF84
+_080C65F4: .4byte gFieldEffectArguments
_080C65F8: .4byte sub_80C65FC
thumb_func_end sub_80C65C4
@@ -1212,7 +1212,7 @@ sub_80C65FC: @ 80C65FC
thumb_func_start sub_80C660C
sub_80C660C: @ 80C660C
push {lr}
- ldr r1, _080C6620 @ =gUnknown_0202FF84
+ ldr r1, _080C6620 @ =gFieldEffectArguments
ldr r0, _080C6624 @ =gLastFieldPokeMenuOpened
ldrb r0, [r0]
str r0, [r1]
@@ -1221,7 +1221,7 @@ sub_80C660C: @ 80C660C
pop {r0}
bx r0
.align 2, 0
-_080C6620: .4byte gUnknown_0202FF84
+_080C6620: .4byte gFieldEffectArguments
_080C6624: .4byte gLastFieldPokeMenuOpened
_080C6628: .4byte gUnknown_081A2D96
thumb_func_end sub_80C660C
@@ -1275,7 +1275,7 @@ FldEff_SecretPowerShrub: @ 80C666C
ldrh r1, [r2, 0x2]
lsls r1, 23
lsrs r1, 23
- ldr r4, _080C66B8 @ =gUnknown_0202FF84
+ ldr r4, _080C66B8 @ =gFieldEffectArguments
ldr r3, [r4, 0x14]
adds r1, r3
lsls r1, 16
@@ -1295,7 +1295,7 @@ FldEff_SecretPowerShrub: @ 80C666C
_080C66AC: .4byte gSpriteTemplate_83D2644
_080C66B0: .4byte gSprites
_080C66B4: .4byte gPlayerAvatar
-_080C66B8: .4byte gUnknown_0202FF84
+_080C66B8: .4byte gFieldEffectArguments
thumb_func_end FldEff_SecretPowerShrub
thumb_func_start sub_80C66BC
@@ -2103,7 +2103,7 @@ FldEff_SandPillar: @ 80C6D3C
mov r0, sp
adds r1, r4, 0
bl GetXYCoordsOneStepInFrontOfPlayer
- ldr r1, _080C6D78 @ =gUnknown_0202FF84
+ ldr r1, _080C6D78 @ =gFieldEffectArguments
mov r0, sp
movs r2, 0
ldrsh r0, [r0, r2]
@@ -2122,7 +2122,7 @@ FldEff_SandPillar: @ 80C6D3C
beq _080C6D86
b _080C6E4C
.align 2, 0
-_080C6D78: .4byte gUnknown_0202FF84
+_080C6D78: .4byte gFieldEffectArguments
_080C6D7C:
cmp r0, 0x3
beq _080C6DEC
@@ -2240,7 +2240,7 @@ SpriteCB_SandPillar_0: @ 80C6E64
adds r5, r0, 0
movs r0, 0x83
bl PlaySE
- ldr r4, _080C6E90 @ =gUnknown_0202FF84
+ ldr r4, _080C6E90 @ =gFieldEffectArguments
ldr r0, [r4, 0x14]
ldr r1, [r4, 0x18]
subs r1, 0x1
@@ -2255,7 +2255,7 @@ SpriteCB_SandPillar_0: @ 80C6E64
bl MapGridSetMetatileIdAt
b _080C6EAA
.align 2, 0
-_080C6E90: .4byte gUnknown_0202FF84
+_080C6E90: .4byte gFieldEffectArguments
_080C6E94: .4byte 0x00000286
_080C6E98: .4byte 0x00000e02
_080C6E9C:
@@ -2266,7 +2266,7 @@ _080C6E9C:
lsls r2, 2
bl MapGridSetMetatileIdAt
_080C6EAA:
- ldr r4, _080C6ED8 @ =gUnknown_0202FF84
+ ldr r4, _080C6ED8 @ =gFieldEffectArguments
ldr r0, [r4, 0x14]
ldr r1, [r4, 0x18]
ldr r2, _080C6EDC @ =0x0000020a
@@ -2286,7 +2286,7 @@ _080C6EAA:
pop {r0}
bx r0
.align 2, 0
-_080C6ED8: .4byte gUnknown_0202FF84
+_080C6ED8: .4byte gFieldEffectArguments
_080C6EDC: .4byte 0x0000020a
_080C6EE0: .4byte SpriteCB_SandPillar_1
thumb_func_end SpriteCB_SandPillar_0
@@ -2304,7 +2304,7 @@ SpriteCB_SandPillar_1: @ 80C6EE4
strh r0, [r5, 0x2E]
b _080C6F14
_080C6EF8:
- ldr r4, _080C6F1C @ =gUnknown_0202FF84
+ ldr r4, _080C6F1C @ =gFieldEffectArguments
ldr r0, [r4, 0x14]
ldr r1, [r4, 0x18]
ldr r2, _080C6F20 @ =0x00000e8c
@@ -2321,7 +2321,7 @@ _080C6F14:
pop {r0}
bx r0
.align 2, 0
-_080C6F1C: .4byte gUnknown_0202FF84
+_080C6F1C: .4byte gFieldEffectArguments
_080C6F20: .4byte 0x00000e8c
_080C6F24: .4byte SpriteCB_SandPillar_2
thumb_func_end SpriteCB_SandPillar_1
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
deleted file mode 100644
index 3ad85d7cf..000000000
--- a/asm/hall_of_fame.s
+++ /dev/null
@@ -1,3402 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8141E38
-sub_8141E38: @ 8141E38
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_8141E38
-
- thumb_func_start sub_8141E4C
-sub_8141E4C: @ 8141E4C
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8141E4C
-
- thumb_func_start sub_8141E64
-sub_8141E64: @ 8141E64
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _08141E80 @ =gMain
- ldr r1, _08141E84 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x4
- bhi _08141EA0
- lsls r0, 2
- ldr r1, _08141E88 @ =_08141E8C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08141E80: .4byte gMain
-_08141E84: .4byte 0x0000043c
-_08141E88: .4byte _08141E8C
- .align 2, 0
-_08141E8C:
- .4byte _08141EA0
- .4byte _08141EC0
- .4byte _08141EC6
- .4byte _08141F1C
- .4byte _08141F58
-_08141EA0:
- movs r0, 0
- bl SetVBlankCallback
- bl sub_81433E0
- ldr r0, _08141EB8 @ =gMain
- ldr r2, _08141EBC @ =0x0000043c
- adds r0, r2
- movs r1, 0x1
- strb r1, [r0]
- b _08141F84
- .align 2, 0
-_08141EB8: .4byte gMain
-_08141EBC: .4byte 0x0000043c
-_08141EC0:
- bl sub_8143570
- b _08141F38
-_08141EC6:
- movs r0, 0x1
- negs r0, r0
- movs r4, 0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, _08141F04 @ =sub_8141E38
- bl SetVBlankCallback
- ldr r3, _08141F08 @ =0x04000208
- ldrh r2, [r3]
- strh r4, [r3]
- ldr r4, _08141F0C @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _08141F10 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _08141F14 @ =gMain
- ldr r2, _08141F18 @ =0x0000043c
- adds r1, r2
- b _08141F3E
- .align 2, 0
-_08141F04: .4byte sub_8141E38
-_08141F08: .4byte 0x04000208
-_08141F0C: .4byte 0x04000200
-_08141F10: .4byte REG_DISPSTAT
-_08141F14: .4byte gMain
-_08141F18: .4byte 0x0000043c
-_08141F1C:
- ldr r1, _08141F48 @ =REG_BLDCNT
- ldr r2, _08141F4C @ =0x00003f42
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r2, 0xE2
- lsls r2, 3
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0
- strh r0, [r1]
- bl sub_81435B8
-_08141F38:
- ldr r1, _08141F50 @ =gMain
- ldr r0, _08141F54 @ =0x0000043c
- adds r1, r0
-_08141F3E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08141F84
- .align 2, 0
-_08141F48: .4byte REG_BLDCNT
-_08141F4C: .4byte 0x00003f42
-_08141F50: .4byte gMain
-_08141F54: .4byte 0x0000043c
-_08141F58:
- bl UpdatePaletteFade
- ldr r0, _08141F7C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08141F84
- ldr r0, _08141F80 @ =sub_8141E4C
- bl SetMainCallback2
- movs r0, 0xDA
- lsls r0, 1
- bl PlayBGM
- movs r0, 0
- b _08141F86
- .align 2, 0
-_08141F7C: .4byte gPaletteFade
-_08141F80: .4byte sub_8141E4C
-_08141F84:
- movs r0, 0x1
-_08141F86:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8141E64
-
- thumb_func_start sub_8141F90
-sub_8141F90: @ 8141F90
- push {r4,lr}
- bl sub_8141E64
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08141FB6
- ldr r0, _08141FBC @ =sub_8141FF8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08141FC0 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x8]
-_08141FB6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08141FBC: .4byte sub_8141FF8
-_08141FC0: .4byte gTasks
- thumb_func_end sub_8141F90
-
- thumb_func_start sub_8141FC4
-sub_8141FC4: @ 8141FC4
- push {lr}
- bl sub_8141E64
- lsls r0, 24
- cmp r0, 0
- bne _08141FEA
- ldr r0, _08141FF0 @ =sub_8141FF8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08141FF4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x1
- strh r0, [r1, 0x8]
-_08141FEA:
- pop {r0}
- bx r0
- .align 2, 0
-_08141FF0: .4byte sub_8141FF8
-_08141FF4: .4byte gTasks
- thumb_func_end sub_8141FC4
-
- thumb_func_start sub_8141FF8
-sub_8141FF8: @ 8141FF8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _081420C8 @ =0x0201c000
- mov r9, r0
- ldr r1, _081420CC @ =gTasks
- mov r2, r8
- lsls r0, r2, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r1, 0
- strh r1, [r0, 0xC]
- movs r7, 0
- ldr r4, _081420D0 @ =0xfffffe00
- mov r10, r4
-_08142024:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _081420D4 @ =gPlayerParty
- adds r6, r1, r0
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- adds r3, r0, 0
- cmp r3, 0
- beq _081420DC
- adds r0, r6, 0
- movs r1, 0x41
- bl GetMonData
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 2
- mov r1, r9
- adds r5, r1, r4
- ldr r2, _081420D8 @ =0x000001ff
- adds r1, r2, 0
- ands r0, r1
- ldrh r1, [r5, 0x8]
- mov r2, r10
- ands r1, r2
- orrs r1, r0
- strh r1, [r5, 0x8]
- adds r0, r6, 0
- movs r1, 0x1
- bl GetMonData
- str r0, [r5]
- adds r0, r6, 0
- movs r1, 0
- bl GetMonData
- mov r1, r9
- adds r1, 0x4
- adds r1, r4
- str r0, [r1]
- adds r0, r6, 0
- movs r1, 0x38
- bl GetMonData
- lsls r0, 1
- ldrb r2, [r5, 0x9]
- movs r1, 0x1
- ands r1, r2
- orrs r1, r0
- strb r1, [r5, 0x9]
- adds r0, r6, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- movs r2, 0
- mov r6, r8
- lsls r5, r6, 2
- mov r3, r9
- adds r3, 0xA
-_081420A0:
- adds r1, r2, r4
- adds r1, r3, r1
- mov r6, sp
- adds r0, r6, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x9
- bls _081420A0
- ldr r0, _081420CC @ =gTasks
- mov r2, r8
- adds r1, r5, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0xC]
- adds r0, 0x1
- strh r0, [r1, 0xC]
- b _08142108
- .align 2, 0
-_081420C8: .4byte 0x0201c000
-_081420CC: .4byte gTasks
-_081420D0: .4byte 0xfffffe00
-_081420D4: .4byte gPlayerParty
-_081420D8: .4byte 0x000001ff
-_081420DC:
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 2
- mov r4, r9
- adds r2, r4, r1
- ldrh r0, [r2, 0x8]
- mov r6, r10
- ands r0, r6
- strh r0, [r2, 0x8]
- str r3, [r2]
- mov r0, r9
- adds r0, 0x4
- adds r0, r1
- str r3, [r0]
- ldrb r1, [r2, 0x9]
- movs r0, 0x1
- ands r0, r1
- strb r0, [r2, 0x9]
- movs r0, 0xFF
- strb r0, [r2, 0xA]
- mov r0, r8
- lsls r5, r0, 2
-_08142108:
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x5
- bls _08142024
- ldr r0, _08142158 @ =gUnknown_0203931C
- movs r3, 0
- str r3, [r0]
- ldr r4, _0814215C @ =gTasks
- mov r2, r8
- adds r1, r5, r2
- lsls r1, 3
- adds r2, r1, r4
- strh r3, [r2, 0xA]
- movs r0, 0xFF
- strh r0, [r2, 0x10]
- movs r7, 0
- adds r3, r4, 0
- adds r3, 0x8
- movs r2, 0xFF
-_08142130:
- adds r0, r7, 0x5
- lsls r0, 1
- adds r0, r1
- adds r0, r3
- strh r2, [r0]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- cmp r7, 0x5
- bls _08142130
- mov r6, r8
- adds r0, r5, r6
- lsls r0, 3
- adds r1, r0, r4
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0
- beq _08142164
- ldr r0, _08142160 @ =sub_81422E8
- b _08142166
- .align 2, 0
-_08142158: .4byte gUnknown_0203931C
-_0814215C: .4byte gTasks
-_08142160: .4byte sub_81422E8
-_08142164:
- ldr r0, _08142178 @ =sub_814217C
-_08142166:
- str r0, [r1]
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08142178: .4byte sub_814217C
- thumb_func_end sub_8141FF8
-
- thumb_func_start sub_814217C
-sub_814217C: @ 814217C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _081421C4 @ =0x0201c000
- mov r9, r0
- movs r7, 0x80
- lsls r7, 6
- add r7, r9
- ldr r0, _081421C8 @ =gUnknown_02039324
- ldrb r0, [r0]
- cmp r0, 0
- bne _081421D4
- movs r4, 0
- mov r0, r8
- lsls r0, 2
- mov r10, r0
- ldr r5, _081421CC @ =0xfffe4000
- add r5, r9
- movs r3, 0xF0
- lsls r3, 9
- movs r2, 0
- ldr r1, _081421D0 @ =0x00001fff
-_081421B2:
- adds r0, r4, r3
- adds r0, r5
- strb r2, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, r1
- bls _081421B2
- b _081421E0
- .align 2, 0
-_081421C4: .4byte 0x0201c000
-_081421C8: .4byte gUnknown_02039324
-_081421CC: .4byte 0xfffe4000
-_081421D0: .4byte 0x00001fff
-_081421D4:
- movs r0, 0x3
- bl sub_8125EC8
- mov r0, r8
- lsls r0, 2
- mov r10, r0
-_081421E0:
- movs r4, 0
- ldrh r1, [r7, 0x8]
- ldr r2, _081421E8 @ =0x000001ff
- b _081421FA
- .align 2, 0
-_081421E8: .4byte 0x000001ff
-_081421EC:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r7, 0x78
- cmp r4, 0x31
- bhi _08142206
- ldrh r1, [r7, 0x8]
-_081421FA:
- adds r0, r2, 0
- ands r0, r1
- cmp r0, 0
- bne _081421EC
- cmp r4, 0x31
- bls _08142228
-_08142206:
- ldr r5, _08142264 @ =0x0201e000
- adds r6, r5, 0
- adds r5, 0x78
- movs r4, 0
- subs r7, 0x78
-_08142210:
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x78
- bl memcpy
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- adds r6, 0x78
- adds r5, 0x78
- cmp r4, 0x30
- bls _08142210
-_08142228:
- adds r0, r7, 0
- mov r1, r9
- movs r2, 0x78
- bl memcpy
- movs r0, 0x2
- movs r1, 0xE
- movs r2, 0x1B
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08142268 @ =gMenuText_HOFSaving
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrint
- ldr r1, _0814226C @ =gTasks
- mov r0, r10
- add r0, r8
- lsls r0, 3
- adds r0, r1
- ldr r1, _08142270 @ =sub_8142274
- str r1, [r0]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08142264: .4byte 0x0201e000
-_08142268: .4byte gMenuText_HOFSaving
-_0814226C: .4byte gTasks
-_08142270: .4byte sub_8142274
- thumb_func_end sub_814217C
-
- thumb_func_start sub_8142274
-sub_8142274: @ 8142274
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _081422A8 @ =gGameContinueCallback
- ldr r0, _081422AC @ =sub_8141FC4
- str r0, [r1]
- movs r0, 0x3
- bl TrySavingData
- movs r0, 0x37
- bl PlaySE
- ldr r1, _081422B0 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _081422B4 @ =sub_81422B8
- str r1, [r0]
- movs r1, 0x20
- strh r1, [r0, 0xE]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081422A8: .4byte gGameContinueCallback
-_081422AC: .4byte sub_8141FC4
-_081422B0: .4byte gTasks
-_081422B4: .4byte sub_81422B8
- thumb_func_end sub_8142274
-
- thumb_func_start sub_81422B8
-sub_81422B8: @ 81422B8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081422D8 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r2, [r1, 0xE]
- movs r3, 0xE
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _081422DC
- subs r0, r2, 0x1
- strh r0, [r1, 0xE]
- b _081422E0
- .align 2, 0
-_081422D8: .4byte gTasks
-_081422DC:
- ldr r0, _081422E4 @ =sub_81422E8
- str r0, [r1]
-_081422E0:
- pop {r0}
- bx r0
- .align 2, 0
-_081422E4: .4byte sub_81422E8
- thumb_func_end sub_81422B8
-
- thumb_func_start sub_81422E8
-sub_81422E8: @ 81422E8
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _08142314 @ =gWindowConfig_81E7198
- adds r0, r5, 0
- bl SetUpWindowConfig
- adds r0, r5, 0
- bl InitMenuWindow
- ldr r1, _08142318 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0814231C @ =sub_8142320
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08142314: .4byte gWindowConfig_81E7198
-_08142318: .4byte gTasks
-_0814231C: .4byte sub_8142320
- thumb_func_end sub_81422E8
-
- thumb_func_start sub_8142320
-sub_8142320: @ 8142320
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r2, _08142350 @ =0x0201c000
- ldr r0, _08142354 @ =gTasks
- lsls r1, r7, 2
- adds r1, r7
- lsls r1, 3
- adds r1, r0
- ldrh r6, [r1, 0xA]
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 2
- adds r4, r0, r2
- movs r2, 0xC
- ldrsh r0, [r1, r2]
- cmp r0, 0x3
- ble _0814235C
- ldr r1, _08142358 @ =gUnknown_0840B534
- b _0814235E
- .align 2, 0
-_08142350: .4byte 0x0201c000
-_08142354: .4byte gTasks
-_08142358: .4byte gUnknown_0840B534
-_0814235C:
- ldr r1, _081423F0 @ =gUnknown_0840B564
-_0814235E:
- lsls r2, r6, 3
- adds r0, r2, r1
- ldrh r5, [r0]
- adds r0, r1, 0x2
- adds r0, r2, r0
- ldrh r3, [r0]
- adds r0, r1, 0x4
- adds r0, r2, r0
- ldrh r0, [r0]
- mov r9, r0
- adds r1, 0x6
- adds r2, r1
- ldrh r2, [r2]
- mov r8, r2
- ldrh r0, [r4, 0x8]
- lsls r0, 23
- lsrs r0, 23
- lsls r1, r5, 16
- asrs r1, 16
- lsls r2, r3, 16
- asrs r2, 16
- ldr r3, [r4]
- str r3, [sp]
- ldr r3, [r4, 0x4]
- str r3, [sp, 0x4]
- adds r3, r6, 0
- bl sub_81436BC
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _081423F4 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r2, r1, r3
- movs r4, 0
- mov r5, r9
- strh r5, [r2, 0x30]
- mov r5, r8
- strh r5, [r2, 0x32]
- strh r4, [r2, 0x2E]
- adds r3, 0x1C
- adds r1, r3
- ldr r2, _081423F8 @ =sub_81435DC
- str r2, [r1]
- ldr r5, _081423FC @ =gTasks
- adds r1, r6, 0x5
- lsls r1, 1
- lsls r4, r7, 2
- adds r4, r7
- lsls r4, 3
- adds r1, r4
- adds r2, r5, 0
- adds r2, 0x8
- adds r1, r2
- strh r0, [r1]
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- adds r4, r5
- ldr r0, _08142400 @ =sub_8142404
- str r0, [r4]
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081423F0: .4byte gUnknown_0840B564
-_081423F4: .4byte gSprites
-_081423F8: .4byte sub_81435DC
-_081423FC: .4byte gTasks
-_08142400: .4byte sub_8142404
- thumb_func_end sub_8142320
-
- thumb_func_start sub_8142404
-sub_8142404: @ 8142404
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r4, _08142470 @ =0x0201c000
- ldr r3, _08142474 @ =gTasks
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- adds r5, r2, r3
- ldrh r1, [r5, 0xA]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r6, r0, r4
- ldr r4, _08142478 @ =gSprites
- adds r1, 0x5
- lsls r1, 1
- adds r1, r2
- adds r3, 0x8
- adds r1, r3
- movs r0, 0
- ldrsh r1, [r1, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x2E
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _0814246A
- ldrh r2, [r6, 0x8]
- ldr r0, _0814247C @ =0x000001ff
- ands r0, r2
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08142458
- lsls r0, r2, 23
- lsrs r0, 23
- movs r1, 0
- bl PlayCry1
-_08142458:
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0xE
- bl sub_8143088
- movs r0, 0x78
- strh r0, [r5, 0xE]
- ldr r0, _08142480 @ =sub_8142484
- str r0, [r5]
-_0814246A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08142470: .4byte 0x0201c000
-_08142474: .4byte gTasks
-_08142478: .4byte gSprites
-_0814247C: .4byte 0x000001ff
-_08142480: .4byte sub_8142484
- thumb_func_end sub_8142404
-
- thumb_func_start sub_8142484
-sub_8142484: @ 8142484
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r2, _081424BC @ =0x0201c000
- ldr r1, _081424C0 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- adds r4, r6, r1
- ldrh r3, [r4, 0xA]
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 2
- adds r0, r2
- mov r9, r0
- ldrh r2, [r4, 0xE]
- movs r7, 0xE
- ldrsh r0, [r4, r7]
- mov r12, r1
- cmp r0, 0
- beq _081424C4
- subs r0, r2, 0x1
- strh r0, [r4, 0xE]
- b _0814255C
- .align 2, 0
-_081424BC: .4byte 0x0201c000
-_081424C0: .4byte gTasks
-_081424C4:
- ldr r2, _0814253C @ =gUnknown_0203931C
- ldr r0, _08142540 @ =gSprites
- mov r8, r0
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r6
- mov r1, r12
- adds r1, 0x8
- adds r6, r0, r1
- movs r7, 0
- ldrsh r1, [r6, r7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r0, [r0, 0x5]
- lsrs r0, 4
- movs r1, 0x80
- lsls r1, 9
- lsls r1, r0
- ldr r3, [r2]
- orrs r3, r1
- str r3, [r2]
- ldrh r2, [r4, 0xA]
- movs r1, 0xA
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bgt _08142550
- mov r7, r9
- ldrh r1, [r7, 0x1C]
- ldr r0, _08142544 @ =0x000001ff
- ands r0, r1
- cmp r0, 0
- beq _08142550
- adds r0, r2, 0x1
- strh r0, [r4, 0xA]
- ldr r0, _08142548 @ =0x0000735f
- str r0, [sp]
- adds r0, r3, 0
- movs r1, 0
- movs r2, 0xC
- movs r3, 0xC
- bl BeginNormalPaletteFade
- movs r0, 0
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r0, _0814254C @ =sub_8142320
- str r0, [r4]
- b _0814255C
- .align 2, 0
-_0814253C: .4byte gUnknown_0203931C
-_08142540: .4byte gSprites
-_08142544: .4byte 0x000001ff
-_08142548: .4byte 0x0000735f
-_0814254C: .4byte sub_8142320
-_08142550:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- add r0, r12
- ldr r1, _0814256C @ =sub_8142570
- str r1, [r0]
-_0814255C:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814256C: .4byte sub_8142570
- thumb_func_end sub_8142484
-
- thumb_func_start sub_8142570
-sub_8142570: @ 8142570
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08142604 @ =0xffff0000
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r3, 0
- lsls r1, r4, 2
- adds r0, r1, r4
- lsls r5, r0, 3
- ldr r0, _08142608 @ =gTasks + 0x8
- mov r12, r0
- mov r8, r1
- ldr r6, _0814260C @ =gSprites
- movs r7, 0xD
- negs r7, r7
-_0814259E:
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r5
- mov r2, r12
- adds r1, r0, r2
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0xFF
- beq _081425C0
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r2, [r1, 0x5]
- adds r0, r7, 0
- ands r0, r2
- strb r0, [r1, 0x5]
-_081425C0:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _0814259E
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r0, 0
- movs r1, 0xF
- bl sub_8143068
- movs r0, 0x69
- bl PlaySE
- ldr r1, _08142610 @ =gTasks
- mov r2, r8
- adds r0, r2, r4
- lsls r0, 3
- adds r0, r1
- movs r1, 0xC8
- lsls r1, 1
- strh r1, [r0, 0xE]
- ldr r1, _08142614 @ =sub_8142618
- str r1, [r0]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08142604: .4byte 0xffff0000
-_08142608: .4byte gTasks + 0x8
-_0814260C: .4byte gSprites
-_08142610: .4byte gTasks
-_08142614: .4byte sub_8142618
- thumb_func_end sub_8142570
-
- thumb_func_start sub_8142618
-sub_8142618: @ 8142618
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r7, _08142658 @ =gTasks
- lsls r4, r6, 2
- adds r0, r4, r6
- lsls r5, r0, 3
- adds r1, r5, r7
- ldrh r2, [r1, 0xE]
- movs r3, 0xE
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _0814265C
- subs r2, 0x1
- strh r2, [r1, 0xE]
- movs r0, 0x3
- ands r0, r2
- cmp r0, 0
- bne _081426D2
- lsls r0, r2, 16
- asrs r0, 16
- cmp r0, 0x6E
- ble _081426D2
- bl sub_81438C4
- b _081426D2
- .align 2, 0
-_08142658: .4byte gTasks
-_0814265C:
- movs r3, 0
- mov r9, r4
- ldr r0, _081426E4 @ =gUnknown_0203931C
- mov r10, r0
- adds r4, r5, 0
- adds r7, 0x8
- mov r8, r7
- ldr r7, _081426E8 @ =gSprites
- movs r1, 0xD
- negs r1, r1
- mov r12, r1
- movs r5, 0x4
-_08142674:
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r4
- mov r2, r8
- adds r1, r0, r2
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0xFF
- beq _08142698
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- ldrb r2, [r1, 0x5]
- mov r0, r12
- ands r0, r2
- orrs r0, r5
- strb r0, [r1, 0x5]
-_08142698:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _08142674
- mov r3, r10
- ldr r0, [r3]
- ldr r1, _081426EC @ =0x0000735f
- str r1, [sp]
- movs r1, 0
- movs r2, 0xC
- movs r3, 0xC
- bl BeginNormalPaletteFade
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _081426F0 @ =gTasks
- mov r2, r9
- adds r0, r2, r6
- lsls r0, 3
- adds r0, r1
- movs r1, 0x7
- strh r1, [r0, 0xE]
- ldr r1, _081426F4 @ =sub_81426F8
- str r1, [r0]
-_081426D2:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081426E4: .4byte gUnknown_0203931C
-_081426E8: .4byte gSprites
-_081426EC: .4byte 0x0000735f
-_081426F0: .4byte gTasks
-_081426F4: .4byte sub_81426F8
- thumb_func_end sub_8142618
-
- thumb_func_start sub_81426F8
-sub_81426F8: @ 81426F8
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08142718 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r2, r1, r2
- ldrh r1, [r2, 0xE]
- movs r3, 0xE
- ldrsh r0, [r2, r3]
- cmp r0, 0xF
- ble _08142720
- ldr r0, _0814271C @ =sub_8142738
- str r0, [r2]
- b _0814272E
- .align 2, 0
-_08142718: .4byte gTasks
-_0814271C: .4byte sub_8142738
-_08142720:
- adds r0, r1, 0x1
- strh r0, [r2, 0xE]
- ldr r1, _08142734 @ =REG_BLDALPHA
- movs r3, 0xE
- ldrsh r0, [r2, r3]
- lsls r0, 8
- strh r0, [r1]
-_0814272E:
- pop {r0}
- bx r0
- .align 2, 0
-_08142734: .4byte REG_BLDALPHA
- thumb_func_end sub_81426F8
-
- thumb_func_start sub_8142738
-sub_8142738: @ 8142738
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xCA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r4, _08142784 @ =gWindowConfig_81E71B4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r0, _08142788 @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- movs r1, 0x78
- movs r2, 0x48
- movs r3, 0x6
- bl sub_81437A4
- ldr r2, _0814278C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r2
- strh r0, [r1, 0x10]
- movs r0, 0x78
- strh r0, [r1, 0xE]
- ldr r0, _08142790 @ =sub_8142794
- str r0, [r1]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08142784: .4byte gWindowConfig_81E71B4
-_08142788: .4byte gSaveBlock2
-_0814278C: .4byte gTasks
-_08142790: .4byte sub_8142794
- thumb_func_end sub_8142738
-
- thumb_func_start sub_8142794
-sub_8142794: @ 8142794
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081427B4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
- ldrh r1, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r0, 0
- beq _081427B8
- subs r0, r1, 0x1
- strh r0, [r4, 0xE]
- b _0814280A
- .align 2, 0
-_081427B4: .4byte gTasks
-_081427B8:
- ldr r2, _081427D8 @ =gSprites
- movs r3, 0x10
- ldrsh r1, [r4, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- ldrh r2, [r1, 0x20]
- movs r3, 0x20
- ldrsh r0, [r1, r3]
- cmp r0, 0xA0
- beq _081427DC
- adds r0, r2, 0x1
- strh r0, [r1, 0x20]
- b _0814280A
- .align 2, 0
-_081427D8: .4byte gSprites
-_081427DC:
- movs r0, 0x1
- movs r1, 0x2
- movs r2, 0xF
- movs r3, 0x9
- bl MenuDrawTextWindow
- movs r0, 0x1
- movs r1, 0x2
- bl sub_8143300
- movs r0, 0x2
- movs r1, 0xE
- movs r2, 0x1B
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08142810 @ =gMenuText_HOFCongratulations
- movs r1, 0x4
- movs r2, 0xF
- bl MenuPrint
- ldr r0, _08142814 @ =sub_8142818
- str r0, [r4]
-_0814280A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08142810: .4byte gMenuText_HOFCongratulations
-_08142814: .4byte sub_8142818
- thumb_func_end sub_8142794
-
- thumb_func_start sub_8142818
-sub_8142818: @ 8142818
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08142844 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0814283E
- movs r0, 0x4
- bl FadeOutBGM
- ldr r0, _08142848 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0814284C @ =sub_8142850
- str r0, [r1]
-_0814283E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08142844: .4byte gMain
-_08142848: .4byte gTasks
-_0814284C: .4byte sub_8142850
- thumb_func_end sub_8142818
-
- thumb_func_start sub_8142850
-sub_8142850: @ 8142850
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08142890 @ =gPlttBufferFaded
- ldr r1, _08142894 @ =gPlttBufferUnfaded
- movs r2, 0x80
- lsls r2, 2
- bl CpuSet
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r1, 0x8
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _08142898 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0814289C @ =sub_81428A0
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08142890: .4byte gPlttBufferFaded
-_08142894: .4byte gPlttBufferUnfaded
-_08142898: .4byte gTasks
-_0814289C: .4byte sub_81428A0
- thumb_func_end sub_8142850
-
- thumb_func_start sub_81428A0
-sub_81428A0: @ 81428A0
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _081428C4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081428BE
- adds r0, r2, 0
- bl DestroyTask
- ldr r0, _081428C8 @ =sub_81439D0
- bl SetMainCallback2
-_081428BE:
- pop {r0}
- bx r0
- .align 2, 0
-_081428C4: .4byte gPaletteFade
-_081428C8: .4byte sub_81439D0
- thumb_func_end sub_81428A0
-
- thumb_func_start sub_81428CC
-sub_81428CC: @ 81428CC
- push {r4,r5,lr}
- ldr r0, _081428E4 @ =gMain
- ldr r1, _081428E8 @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _08142908
- lsls r0, 2
- ldr r1, _081428EC @ =_081428F0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081428E4: .4byte gMain
-_081428E8: .4byte 0x0000043c
-_081428EC: .4byte _081428F0
- .align 2, 0
-_081428F0:
- .4byte _08142908
- .4byte _08142928
- .4byte _0814293C
- .4byte _08142980
- .4byte _081429C0
- .4byte _081429EC
-_08142908:
- movs r0, 0
- bl SetVBlankCallback
- bl sub_81433E0
- ldr r0, _08142920 @ =gMain
- ldr r2, _08142924 @ =0x0000043c
- adds r0, r2
- movs r1, 0x1
- strb r1, [r0]
- b _08142A12
- .align 2, 0
-_08142920: .4byte gMain
-_08142924: .4byte 0x0000043c
-_08142928:
- bl sub_8143570
- ldr r1, _08142934 @ =gMain
- ldr r3, _08142938 @ =0x0000043c
- adds r1, r3
- b _081429DC
- .align 2, 0
-_08142934: .4byte gMain
-_08142938: .4byte 0x0000043c
-_0814293C:
- ldr r0, _08142968 @ =sub_8141E38
- bl SetVBlankCallback
- ldr r3, _0814296C @ =0x04000208
- ldrh r2, [r3]
- movs r0, 0
- strh r0, [r3]
- ldr r4, _08142970 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _08142974 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- ldr r1, _08142978 @ =gMain
- ldr r4, _0814297C @ =0x0000043c
- adds r1, r4
- b _081429DC
- .align 2, 0
-_08142968: .4byte sub_8141E38
-_0814296C: .4byte 0x04000208
-_08142970: .4byte 0x04000200
-_08142974: .4byte REG_DISPSTAT
-_08142978: .4byte gMain
-_0814297C: .4byte 0x0000043c
-_08142980:
- ldr r0, _081429AC @ =REG_BLDCNT
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- bl sub_81435B8
- ldr r0, _081429B0 @ =0x0201c000
- adds r2, r0, 0
- ldr r1, _081429B4 @ =gUnknown_0840B57C
- ldm r1!, {r3-r5}
- stm r2!, {r3-r5}
- ldm r1!, {r3,r5}
- stm r2!, {r3,r5}
- bl sub_80C5CD4
- ldr r1, _081429B8 @ =gMain
- ldr r4, _081429BC @ =0x0000043c
- adds r1, r4
- b _081429DC
- .align 2, 0
-_081429AC: .4byte REG_BLDCNT
-_081429B0: .4byte 0x0201c000
-_081429B4: .4byte gUnknown_0840B57C
-_081429B8: .4byte gMain
-_081429BC: .4byte 0x0000043c
-_081429C0:
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- bl sub_80C5DCC
- lsls r0, 24
- cmp r0, 0
- beq _08142A12
- ldr r1, _081429E4 @ =gMain
- ldr r5, _081429E8 @ =0x0000043c
- adds r1, r5
-_081429DC:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08142A12
- .align 2, 0
-_081429E4: .4byte gMain
-_081429E8: .4byte 0x0000043c
-_081429EC:
- ldr r1, _08142A18 @ =REG_BLDCNT
- ldr r2, _08142A1C @ =0x00003f42
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r3, 0xE2
- lsls r3, 3
- adds r0, r3, 0
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0
- strh r0, [r1]
- ldr r0, _08142A20 @ =sub_8142A28
- movs r1, 0
- bl CreateTask
- ldr r0, _08142A24 @ =sub_8141E4C
- bl SetMainCallback2
-_08142A12:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08142A18: .4byte REG_BLDCNT
-_08142A1C: .4byte 0x00003f42
-_08142A20: .4byte sub_8142A28
-_08142A24: .4byte sub_8141E4C
- thumb_func_end sub_81428CC
-
- thumb_func_start sub_8142A28
-sub_8142A28: @ 8142A28
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x3
- bl sub_8125EC8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08142A54
- ldr r0, _08142A4C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _08142A50 @ =sub_8142FEC
- str r0, [r1]
- b _08142AEA
- .align 2, 0
-_08142A4C: .4byte gTasks
-_08142A50: .4byte sub_8142FEC
-_08142A54:
- ldr r2, _08142A8C @ =0x0201e000
- movs r3, 0
- ldrh r1, [r2, 0x8]
- ldr r4, _08142A90 @ =0x000001ff
- adds r0, r4, 0
- ands r0, r1
- ldr r7, _08142A94 @ =gTasks
- lsls r6, r5, 2
- cmp r0, 0
- beq _08142A7E
-_08142A68:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- adds r2, 0x78
- cmp r3, 0x31
- bhi _08142A98
- ldrh r1, [r2, 0x8]
- adds r0, r4, 0
- ands r0, r1
- cmp r0, 0
- bne _08142A68
-_08142A7E:
- cmp r3, 0x31
- bhi _08142A98
- adds r0, r6, r5
- lsls r0, 3
- adds r0, r7
- subs r1, r3, 0x1
- b _08142AA0
- .align 2, 0
-_08142A8C: .4byte 0x0201e000
-_08142A90: .4byte 0x000001ff
-_08142A94: .4byte gTasks
-_08142A98:
- adds r0, r6, r5
- lsls r0, 3
- adds r0, r7
- movs r1, 0x31
-_08142AA0:
- strh r1, [r0, 0x8]
- movs r0, 0xA
- bl GetGameStat
- ldr r2, _08142AF0 @ =gTasks
- adds r1, r6, r5
- lsls r1, 3
- adds r1, r2
- strh r0, [r1, 0xA]
- movs r3, 0
- ldr r7, _08142AF4 @ =0x0600381a
- ldr r4, _08142AF8 @ =0x0600385a
-_08142AB8:
- lsls r1, r3, 1
- adds r2, r1, r7
- adds r0, r3, 0x3
- strh r0, [r2]
- adds r1, r4
- adds r0, 0x11
- strh r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x10
- bls _08142AB8
- ldr r4, _08142AFC @ =gWindowConfig_81E7198
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- ldr r1, _08142AF0 @ =gTasks
- adds r0, r6, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _08142B00 @ =sub_8142B04
- str r1, [r0]
-_08142AEA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08142AF0: .4byte gTasks
-_08142AF4: .4byte 0x0600381a
-_08142AF8: .4byte 0x0600385a
-_08142AFC: .4byte gWindowConfig_81E7198
-_08142B00: .4byte sub_8142B04
- thumb_func_end sub_8142A28
-
- thumb_func_start sub_8142B04
-sub_8142B04: @ 8142B04
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r3, _08142BB8 @ =0x0201e000
- movs r5, 0
- ldr r1, _08142BBC @ =gTasks
- lsls r0, 2
- add r0, r8
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- adds r6, r1, 0
- ldr r2, _08142BC0 @ =gUnknown_0203931C
- cmp r5, r0
- bge _08142B3E
- adds r1, r0, 0
-_08142B32:
- adds r3, 0x78
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, r1
- blt _08142B32
-_08142B3E:
- adds r4, r3, 0
- movs r0, 0
- str r0, [r2]
- mov r5, r8
- lsls r2, r5, 2
- adds r1, r2, r5
- lsls r1, 3
- adds r1, r6
- strh r0, [r1, 0xC]
- strh r0, [r1, 0x10]
- movs r5, 0
- str r2, [sp, 0xC]
- ldr r6, _08142BC4 @ =0x000001ff
- adds r2, r1, 0
-_08142B5A:
- ldrh r1, [r4, 0x8]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _08142B6A
- ldrh r0, [r2, 0x10]
- adds r0, 0x1
- strh r0, [r2, 0x10]
-_08142B6A:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r4, 0x14
- cmp r5, 0x5
- bls _08142B5A
- adds r4, r3, 0
- movs r5, 0
- ldr r1, _08142BBC @ =gTasks
- ldr r0, [sp, 0xC]
- add r0, r8
- lsls r7, r0, 3
- adds r6, r7, r1
- str r6, [sp, 0x8]
- adds r1, 0x8
- mov r9, r1
- ldr r0, _08142BC8 @ =gUnknown_0840B564
- mov r10, r0
-_08142B8E:
- ldrh r1, [r4, 0x8]
- ldr r2, _08142BC4 @ =0x000001ff
- adds r0, r2, 0
- ands r0, r1
- adds r6, r1, 0
- cmp r0, 0
- beq _08142C30
- ldr r1, [sp, 0x8]
- movs r2, 0x10
- ldrsh r0, [r1, r2]
- cmp r0, 0x3
- ble _08142BD4
- lsls r1, r5, 3
- ldr r0, _08142BCC @ =gUnknown_0840B534
- adds r0, 0x4
- adds r0, r1, r0
- ldrh r3, [r0]
- ldr r0, _08142BD0 @ =gUnknown_0840B534 + 0x6
- adds r1, r0
- b _08142BE2
- .align 2, 0
-_08142BB8: .4byte 0x0201e000
-_08142BBC: .4byte gTasks
-_08142BC0: .4byte gUnknown_0203931C
-_08142BC4: .4byte 0x000001ff
-_08142BC8: .4byte gUnknown_0840B564
-_08142BCC: .4byte gUnknown_0840B534
-_08142BD0: .4byte gUnknown_0840B534 + 0x6
-_08142BD4:
- lsls r1, r5, 3
- mov r0, r10
- adds r0, 0x4
- adds r0, r1, r0
- ldrh r3, [r0]
- ldr r2, _08142C28 @ =gUnknown_0840B564 + 0x6
- adds r1, r2
-_08142BE2:
- ldrh r2, [r1]
- lsls r0, r6, 23
- lsrs r0, 23
- lsls r1, r3, 16
- asrs r1, 16
- lsls r2, 16
- asrs r2, 16
- ldr r3, [r4]
- str r3, [sp]
- ldr r3, [r4, 0x4]
- str r3, [sp, 0x4]
- adds r3, r5, 0
- bl sub_81436BC
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08142C2C @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r3, [r1, 0x5]
- movs r6, 0xD
- negs r6, r6
- adds r2, r6, 0
- ands r3, r2
- movs r2, 0x4
- orrs r3, r2
- strb r3, [r1, 0x5]
- adds r1, r5, 0x5
- lsls r1, 1
- adds r1, r7
- add r1, r9
- strh r0, [r1]
- b _08142C3C
- .align 2, 0
-_08142C28: .4byte gUnknown_0840B564 + 0x6
-_08142C2C: .4byte gSprites
-_08142C30:
- adds r0, r5, 0x5
- lsls r0, 1
- adds r0, r7
- add r0, r9
- movs r1, 0xFF
- strh r1, [r0]
-_08142C3C:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r4, 0x14
- cmp r5, 0x5
- bls _08142B8E
- ldr r0, _08142CB0 @ =0xffff0000
- ldr r2, _08142CB4 @ =0x0000735f
- movs r1, 0xC
- bl BlendPalettes
- ldr r3, _08142CB8 @ =gStringVar1
- ldr r1, _08142CBC @ =gMenuText_HOFNumber
- adds r0, r3, 0
- bl StringCopy
- adds r3, r0, 0
- movs r5, 0xFC
- strb r5, [r3]
- movs r0, 0x14
- strb r0, [r3, 0x1]
- movs r0, 0x6
- strb r0, [r3, 0x2]
- adds r3, 0x3
- ldr r0, _08142CC0 @ =gTasks
- ldr r4, [sp, 0xC]
- add r4, r8
- lsls r4, 3
- adds r4, r0
- movs r0, 0xA
- ldrsh r1, [r4, r0]
- adds r0, r3, 0
- bl ConvertIntToDecimalString
- adds r3, r0, 0
- strb r5, [r3]
- movs r0, 0x13
- strb r0, [r3, 0x1]
- movs r0, 0xF0
- strb r0, [r3, 0x2]
- movs r0, 0xFF
- strb r0, [r3, 0x3]
- ldr r0, _08142CB8 @ =gStringVar1
- movs r1, 0
- movs r2, 0
- bl MenuPrint
- ldr r0, _08142CC4 @ =sub_8142CC8
- str r0, [r4]
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08142CB0: .4byte 0xffff0000
-_08142CB4: .4byte 0x0000735f
-_08142CB8: .4byte gStringVar1
-_08142CBC: .4byte gMenuText_HOFNumber
-_08142CC0: .4byte gTasks
-_08142CC4: .4byte sub_8142CC8
- thumb_func_end sub_8142B04
-
- thumb_func_start sub_8142CC8
-sub_8142CC8: @ 8142CC8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08142DD0 @ =0x0201e000
- mov r8, r0
- movs r3, 0
- ldr r1, _08142DD4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0x8
- ldrsh r0, [r0, r2]
- cmp r3, r0
- bge _08142CFE
- adds r1, r0, 0
-_08142CF0:
- movs r0, 0x78
- add r8, r0
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, r1
- blt _08142CF0
-_08142CFE:
- movs r3, 0
- lsls r6, r4, 2
- adds r0, r6, r4
- lsls r5, r0, 3
- ldr r1, _08142DD8 @ =gTasks + 0x8
- mov r10, r1
- ldr r2, _08142DDC @ =gSprites
- mov r12, r2
- movs r0, 0xD
- negs r0, r0
- mov r9, r0
- movs r7, 0x4
-_08142D16:
- adds r0, r3, 0x5
- lsls r0, 1
- adds r0, r5
- add r0, r10
- ldrh r1, [r0]
- cmp r1, 0xFF
- beq _08142D36
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r12
- ldrb r2, [r0, 0x5]
- mov r1, r9
- ands r1, r2
- orrs r1, r7
- strb r1, [r0, 0x5]
-_08142D36:
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x5
- bls _08142D16
- adds r1, r6, r4
- lsls r1, 3
- ldr r2, _08142DD4 @ =gTasks
- adds r5, r1, r2
- movs r2, 0xC
- ldrsh r0, [r5, r2]
- adds r0, 0x5
- lsls r0, 1
- adds r0, r1
- ldr r1, _08142DD4 @ =gTasks
- adds r1, 0x8
- adds r0, r1
- ldrh r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08142DDC @ =gSprites
- adds r0, r1
- ldrb r2, [r0, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r2
- strb r1, [r0, 0x5]
- lsrs r1, 4
- movs r0, 0x80
- lsls r0, 9
- lsls r0, r1
- ldr r1, _08142DE0 @ =0xffff0000
- eors r0, r1
- ldr r2, _08142DE4 @ =gUnknown_0203931C
- str r0, [r2]
- ldr r2, _08142DE8 @ =0x0000735f
- movs r1, 0xC
- bl BlendPalettesUnfaded
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- mov r1, r8
- adds r4, r1, r0
- ldrh r1, [r4, 0x8]
- ldr r0, _08142DEC @ =0x000001ff
- ands r0, r1
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _08142DB2
- bl StopCryAndClearCrySongs
- ldrh r0, [r4, 0x8]
- lsls r0, 23
- lsrs r0, 23
- movs r1, 0
- bl PlayCry1
-_08142DB2:
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0xE
- bl sub_8143088
- ldr r0, _08142DF0 @ =sub_8142DF4
- str r0, [r5]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08142DD0: .4byte 0x0201e000
-_08142DD4: .4byte gTasks
-_08142DD8: .4byte gTasks + 0x8
-_08142DDC: .4byte gSprites
-_08142DE0: .4byte 0xffff0000
-_08142DE4: .4byte gUnknown_0203931C
-_08142DE8: .4byte 0x0000735f
-_08142DEC: .4byte 0x000001ff
-_08142DF0: .4byte sub_8142DF4
- thumb_func_end sub_8142CC8
-
- thumb_func_start sub_8142DF4
-sub_8142DF4: @ 8142DF4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r1, _08142E88 @ =gMain
- ldrh r2, [r1, 0x2E]
- movs r0, 0x1
- ands r0, r2
- adds r3, r1, 0
- cmp r0, 0
- beq _08142EC4
- ldr r7, _08142E8C @ =gTasks
- lsls r0, r6, 2
- adds r1, r0, r6
- lsls r3, r1, 3
- adds r4, r3, r7
- ldrh r2, [r4, 0x8]
- movs r5, 0x8
- ldrsh r1, [r4, r5]
- mov r8, r0
- cmp r1, 0
- beq _08142E98
- subs r0, r2, 0x1
- strh r0, [r4, 0x8]
- movs r5, 0
- adds r7, 0x8
- mov r9, r7
- adds r7, r3, 0
-_08142E30:
- adds r0, r5, 0x5
- lsls r0, 1
- adds r0, r7
- add r0, r9
- ldrb r1, [r0]
- cmp r1, 0xFF
- beq _08142E5E
- ldr r0, _08142E90 @ =gSprites
- lsls r4, r1, 4
- adds r4, r1
- lsls r4, 2
- adds r4, r0
- ldrb r0, [r4, 0x5]
- lsrs r0, 4
- bl GetSpritePaletteTagByPaletteNum
- lsls r0, 16
- lsrs r0, 16
- bl FreeSpritePaletteByTag
- adds r0, r4, 0
- bl DestroySprite
-_08142E5E:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _08142E30
- ldr r0, _08142E8C @ =gTasks
- mov r2, r8
- adds r1, r2, r6
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xA]
- movs r3, 0xA
- ldrsh r0, [r1, r3]
- cmp r0, 0
- beq _08142E80
- subs r0, r2, 0x1
- strh r0, [r1, 0xA]
-_08142E80:
- ldr r0, _08142E94 @ =sub_8142B04
- str r0, [r1]
- b _08142F64
- .align 2, 0
-_08142E88: .4byte gMain
-_08142E8C: .4byte gTasks
-_08142E90: .4byte gSprites
-_08142E94: .4byte sub_8142B04
-_08142E98:
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _08142EB2
- bl StopCryAndClearCrySongs
- ldr r0, _08142EB8 @ =gMPlay_BGM
- ldr r1, _08142EBC @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_08142EB2:
- ldr r0, _08142EC0 @ =sub_8142F78
- str r0, [r4]
- b _08142F64
- .align 2, 0
-_08142EB8: .4byte gMPlay_BGM
-_08142EBC: .4byte 0x0000ffff
-_08142EC0: .4byte sub_8142F78
-_08142EC4:
- movs r0, 0x2
- ands r0, r2
- cmp r0, 0
- beq _08142F08
- bl IsCryPlayingOrClearCrySongs
- lsls r0, 24
- cmp r0, 0
- beq _08142EE6
- bl StopCryAndClearCrySongs
- ldr r0, _08142EF8 @ =gMPlay_BGM
- ldr r1, _08142EFC @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
-_08142EE6:
- ldr r0, _08142F00 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldr r0, _08142F04 @ =sub_8142F78
- str r0, [r1]
- b _08142F64
- .align 2, 0
-_08142EF8: .4byte gMPlay_BGM
-_08142EFC: .4byte 0x0000ffff
-_08142F00: .4byte gTasks
-_08142F04: .4byte sub_8142F78
-_08142F08:
- movs r0, 0x40
- ands r0, r2
- cmp r0, 0
- beq _08142F38
- ldr r0, _08142F30 @ =gTasks
- lsls r1, r6, 2
- adds r1, r6
- lsls r1, 3
- adds r1, r0
- ldrh r2, [r1, 0xC]
- movs r4, 0xC
- ldrsh r0, [r1, r4]
- cmp r0, 0
- beq _08142F38
- subs r0, r2, 0x1
- strh r0, [r1, 0xC]
- ldr r0, _08142F34 @ =sub_8142CC8
- str r0, [r1]
- b _08142F64
- .align 2, 0
-_08142F30: .4byte gTasks
-_08142F34: .4byte sub_8142CC8
-_08142F38:
- ldrh r1, [r3, 0x2E]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08142F64
- ldr r1, _08142F70 @ =gTasks
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- adds r2, r0, r1
- movs r5, 0xC
- ldrsh r1, [r2, r5]
- movs r3, 0x10
- ldrsh r0, [r2, r3]
- subs r0, 0x1
- cmp r1, r0
- bge _08142F64
- ldrh r0, [r2, 0xC]
- adds r0, 0x1
- strh r0, [r2, 0xC]
- ldr r0, _08142F74 @ =sub_8142CC8
- str r0, [r2]
-_08142F64:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08142F70: .4byte gTasks
-_08142F74: .4byte sub_8142CC8
- thumb_func_end sub_8142DF4
-
- thumb_func_start sub_8142F78
-sub_8142F78: @ 8142F78
- push {r4-r6,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08142FB4 @ =gPlttBufferFaded
- ldr r1, _08142FB8 @ =gPlttBufferUnfaded
- movs r2, 0x80
- lsls r2, 2
- bl CpuSet
- ldr r0, _08142FBC @ =0x0201c000
- adds r2, r0, 0
- ldr r1, _08142FC0 @ =gUnknown_0840B57C
- ldm r1!, {r3,r5,r6}
- stm r2!, {r3,r5,r6}
- ldm r1!, {r3,r5}
- stm r2!, {r3,r5}
- bl sub_80C5E38
- ldr r1, _08142FC4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08142FC8 @ =sub_8142FCC
- str r1, [r0]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08142FB4: .4byte gPlttBufferFaded
-_08142FB8: .4byte gPlttBufferUnfaded
-_08142FBC: .4byte 0x0201c000
-_08142FC0: .4byte gUnknown_0840B57C
-_08142FC4: .4byte gTasks
-_08142FC8: .4byte sub_8142FCC
- thumb_func_end sub_8142F78
-
- thumb_func_start sub_8142FCC
-sub_8142FCC: @ 8142FCC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_80C5F98
- lsls r0, 24
- cmp r0, 0
- beq _08142FE6
- adds r0, r4, 0
- bl DestroyTask
- bl ReturnFromHallOfFamePC
-_08142FE6:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8142FCC
-
- thumb_func_start sub_8142FEC
-sub_8142FEC: @ 8142FEC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x2
- movs r1, 0xE
- movs r2, 0x1B
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r0, _08143020 @ =gMenuText_HOFCorrupt
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrintMessage
- ldr r1, _08143024 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08143028 @ =sub_814302C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143020: .4byte gMenuText_HOFCorrupt
-_08143024: .4byte gTasks
-_08143028: .4byte sub_814302C
- thumb_func_end sub_8142FEC
-
- thumb_func_start sub_814302C
-sub_814302C: @ 814302C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _08143056
- ldr r0, _0814305C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08143056
- ldr r0, _08143060 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08143064 @ =sub_8142F78
- str r0, [r1]
-_08143056:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814305C: .4byte gMain
-_08143060: .4byte gTasks
-_08143064: .4byte sub_8142F78
- thumb_func_end sub_814302C
-
- thumb_func_start sub_8143068
-sub_8143068: @ 8143068
- push {lr}
- lsls r2, r1, 24
- ldr r0, _08143084 @ =gMenuText_WelcomeToHOFAndDexRating
- movs r1, 0x80
- lsls r1, 17
- adds r2, r1
- lsrs r2, 24
- movs r1, 0
- movs r3, 0xF0
- bl sub_8072BD8
- pop {r0}
- bx r0
- .align 2, 0
-_08143084: .4byte gMenuText_WelcomeToHOFAndDexRating
- thumb_func_end sub_8143068
-
- thumb_func_start sub_8143088
-sub_8143088: @ 8143088
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- mov r9, r0
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- ldr r7, _08143188 @ =gStringVar1
- movs r0, 0xFC
- strb r0, [r7]
- movs r0, 0x13
- strb r0, [r7, 0x1]
- movs r0, 0x28
- strb r0, [r7, 0x2]
- movs r0, 0xFF
- strb r0, [r7, 0x3]
- mov r0, r9
- ldrh r2, [r0, 0x8]
- ldr r0, _0814318C @ =0x000001ff
- ands r0, r2
- movs r1, 0xCE
- lsls r1, 1
- cmp r0, r1
- beq _081430EA
- lsls r0, r2, 23
- lsrs r0, 23
- bl SpeciesToPokedexNum
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, _08143190 @ =0x0000ffff
- cmp r6, r0
- beq _081430EA
- ldr r1, _08143194 @ =gOtherText_Number2
- adds r0, r7, 0
- bl StringCopy
- adds r7, r0, 0
- adds r1, r6, 0
- movs r2, 0x2
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
-_081430EA:
- ldr r5, _08143188 @ =gStringVar1
- mov r1, r8
- adds r1, 0x4
- lsls r1, 24
- lsrs r1, 24
- mov r4, r10
- adds r4, 0x1
- lsls r2, r4, 24
- lsrs r2, 24
- adds r0, r5, 0
- bl MenuPrint
- adds r7, r5, 0
- movs r3, 0
- mov r1, r9
- ldrb r0, [r1, 0xA]
- str r4, [sp]
- mov r2, r8
- adds r2, 0x9
- str r2, [sp, 0xC]
- mov r6, r10
- adds r6, 0x3
- str r6, [sp, 0x8]
- cmp r0, 0xFF
- beq _0814313A
- mov r2, r9
- adds r2, 0xA
-_08143120:
- adds r1, r7, r3
- adds r0, r2, r3
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x9
- bhi _0814313A
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08143120
-_0814313A:
- adds r7, r3
- movs r2, 0xFF
- strb r2, [r7]
- mov r1, r9
- ldrh r0, [r1, 0x8]
- ldr r1, _0814318C @ =0x000001ff
- ands r1, r0
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bne _08143198
- movs r0, 0xFC
- strb r0, [r7]
- movs r0, 0x13
- strb r0, [r7, 0x1]
- movs r0, 0xA0
- strb r0, [r7, 0x2]
- strb r2, [r7, 0x3]
- ldr r0, _08143188 @ =gStringVar1
- ldr r2, [sp, 0xC]
- lsls r1, r2, 24
- lsrs r1, 24
- ldr r3, [sp]
- lsls r2, r3, 24
- lsrs r2, 24
- bl MenuPrint
- ldr r6, [sp, 0x8]
- lsls r1, r6, 24
- lsrs r1, 24
- mov r3, r10
- adds r3, 0x4
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0
- movs r2, 0x1D
- bl MenuZeroFillWindowRect
- b _081432E4
- .align 2, 0
-_08143188: .4byte gStringVar1
-_0814318C: .4byte 0x000001ff
-_08143190: .4byte 0x0000ffff
-_08143194: .4byte gOtherText_Number2
-_08143198:
- movs r0, 0xFC
- strb r0, [r7]
- movs r0, 0x13
- strb r0, [r7, 0x1]
- movs r0, 0x3E
- strb r0, [r7, 0x2]
- adds r7, 0x3
- movs r0, 0xBA
- strb r0, [r7]
- adds r7, 0x1
- movs r3, 0
- ldr r2, _08143238 @ =gSpeciesNames
- mov r1, r9
- ldrh r0, [r1, 0x8]
- lsls r0, 23
- lsrs r0, 23
- movs r1, 0xB
- muls r0, r1
- adds r0, r2
- ldrb r0, [r0]
- mov r6, r8
- adds r6, 0x7
- str r6, [sp, 0x4]
- mov r1, r8
- adds r1, 0xD
- str r1, [sp, 0x10]
- cmp r0, 0xFF
- beq _08143204
- adds r5, r2, 0
- movs r4, 0xB
-_081431D4:
- adds r1, r7, r3
- mov r6, r9
- ldrh r0, [r6, 0x8]
- lsls r0, 23
- lsrs r0, 23
- muls r0, r4
- adds r0, r3, r0
- adds r0, r5
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- cmp r3, 0x9
- bhi _08143204
- ldrh r0, [r6, 0x8]
- lsls r0, 23
- lsrs r0, 23
- muls r0, r4
- adds r0, r3, r0
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _081431D4
-_08143204:
- adds r7, r3
- movs r0, 0
- strb r0, [r7]
- adds r7, 0x1
- mov r1, r9
- ldrh r0, [r1, 0x8]
- ldr r1, _0814323C @ =0x000001ff
- ands r1, r0
- cmp r1, 0x20
- beq _0814324A
- cmp r1, 0x1D
- beq _0814324A
- lsls r0, 23
- lsrs r0, 23
- mov r2, r9
- ldr r1, [r2, 0x4]
- bl GetGenderFromSpeciesAndPersonality
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08143240
- cmp r0, 0xFE
- beq _08143244
- b _0814324A
- .align 2, 0
-_08143238: .4byte gSpeciesNames
-_0814323C: .4byte 0x000001ff
-_08143240:
- movs r0, 0xB5
- b _08143246
-_08143244:
- movs r0, 0xB6
-_08143246:
- strb r0, [r7]
- adds r7, 0x1
-_0814324A:
- movs r4, 0xFC
- strb r4, [r7]
- movs r3, 0x13
- mov r8, r3
- strb r3, [r7, 0x1]
- movs r0, 0xA0
- strb r0, [r7, 0x2]
- movs r6, 0xFF
- mov r10, r6
- strb r6, [r7, 0x3]
- ldr r5, _081432F4 @ =gStringVar1
- ldr r0, [sp, 0xC]
- lsls r1, r0, 24
- lsrs r1, 24
- ldr r3, [sp]
- lsls r2, r3, 24
- lsrs r2, 24
- adds r0, r5, 0
- bl MenuPrint
- mov r6, r9
- ldrb r0, [r6, 0x9]
- lsrs r6, r0, 1
- ldr r1, _081432F8 @ =gOtherText_Level3
- adds r0, r5, 0
- bl StringCopy
- adds r7, r0, 0
- strb r4, [r7]
- movs r0, 0x14
- strb r0, [r7, 0x1]
- movs r0, 0x6
- strb r0, [r7, 0x2]
- adds r7, 0x3
- adds r0, r7, 0
- adds r1, r6, 0
- movs r2, 0
- movs r3, 0x3
- bl ConvertIntToDecimalStringN
- adds r7, r0, 0
- strb r4, [r7]
- mov r0, r8
- strb r0, [r7, 0x1]
- movs r0, 0x30
- strb r0, [r7, 0x2]
- mov r1, r10
- strb r1, [r7, 0x3]
- ldr r2, [sp, 0x4]
- lsls r1, r2, 24
- lsrs r1, 24
- ldr r3, [sp, 0x8]
- lsls r4, r3, 24
- lsrs r4, 24
- adds r0, r5, 0
- adds r2, r4, 0
- bl MenuPrint
- mov r0, r9
- ldrh r6, [r0]
- ldr r1, _081432FC @ =gOtherText_IDNumber
- adds r0, r5, 0
- bl StringCopy
- adds r7, r0, 0
- adds r1, r6, 0
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- ldr r2, [sp, 0x10]
- lsls r1, r2, 24
- lsrs r1, 24
- adds r0, r5, 0
- adds r2, r4, 0
- bl MenuPrint
-_081432E4:
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081432F4: .4byte gStringVar1
-_081432F8: .4byte gOtherText_Level3
-_081432FC: .4byte gOtherText_IDNumber
- thumb_func_end sub_8143088
-
- thumb_func_start sub_8143300
-sub_8143300: @ 8143300
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- adds r5, r0, 0
- adds r4, r1, 0
- lsls r5, 24
- lsls r4, 24
- ldr r0, _081433CC @ =gOtherText_Name
- lsrs r1, r5, 24
- mov r8, r1
- movs r2, 0x80
- lsls r2, 17
- adds r5, r2
- lsrs r5, 24
- lsrs r6, r4, 24
- adds r4, r2
- lsrs r4, 24
- adds r1, r5, 0
- adds r2, r4, 0
- bl MenuPrint
- ldr r0, _081433D0 @ =gSaveBlock2
- mov r10, r0
- movs r1, 0xE
- add r8, r1
- mov r2, r8
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- mov r1, r8
- adds r2, r4, 0
- bl MenuPrint_RightAligned
- ldr r0, _081433D4 @ =gOtherText_IDNumber2
- adds r4, r6, 0x3
- lsls r4, 24
- lsrs r4, 24
- adds r1, r5, 0
- adds r2, r4, 0
- bl MenuPrint
- mov r0, r10
- ldrb r1, [r0, 0xA]
- ldrb r0, [r0, 0xB]
- lsls r0, 8
- orrs r1, r0
- ldr r2, _081433D8 @ =gStringVar1
- mov r9, r2
- mov r0, r9
- movs r2, 0x2
- movs r3, 0x5
- bl ConvertIntToDecimalStringN
- mov r0, r9
- mov r1, r8
- adds r2, r4, 0
- bl MenuPrint_RightAligned
- ldr r0, _081433DC @ =gMainMenuString_Time
- adds r6, 0x5
- lsls r6, 24
- lsrs r6, 24
- adds r1, r5, 0
- adds r2, r6, 0
- bl MenuPrint
- mov r0, r10
- ldrh r1, [r0, 0xE]
- mov r0, r9
- bl ConvertIntToDecimalString
- adds r2, r0, 0
- movs r1, 0
- strb r1, [r2]
- movs r0, 0xF0
- strb r0, [r2, 0x1]
- strb r1, [r2, 0x2]
- adds r2, 0x3
- mov r0, r10
- ldrb r1, [r0, 0x10]
- adds r0, r2, 0
- movs r2, 0x2
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- adds r2, r0, 0
- movs r0, 0xFF
- strb r0, [r2]
- mov r0, r9
- mov r1, r8
- adds r2, r6, 0
- bl MenuPrint_RightAligned
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081433CC: .4byte gOtherText_Name
-_081433D0: .4byte gSaveBlock2
-_081433D4: .4byte gOtherText_IDNumber2
-_081433D8: .4byte gStringVar1
-_081433DC: .4byte gMainMenuString_Time
- thumb_func_end sub_8143300
-
- thumb_func_start sub_81433E0
-sub_81433E0: @ 81433E0
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- movs r0, 0x80
- lsls r0, 19
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x8
- strh r1, [r0]
- adds r0, 0x8
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0x8
- strh r1, [r0]
- adds r0, 0xA
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0xA
- strh r1, [r0]
- adds r0, 0xC
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- subs r0, 0xC
- strh r1, [r0]
- adds r0, 0xE
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0x4
- mov r8, r0
- ldr r1, _0814354C @ =gHallOfFame_Gfx
- mov r9, r1
- mov r2, sp
- movs r6, 0
- ldr r1, _08143550 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _08143554 @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_08143444:
- strh r6, [r2]
- mov r0, sp
- str r0, [r1]
- str r3, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r5
- subs r4, r5
- cmp r4, r5
- bhi _08143444
- strh r6, [r2]
- mov r2, sp
- str r2, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r4, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0xE0
- lsls r0, 19
- movs r3, 0x80
- lsls r3, 3
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r2, _08143550 @ =0x040000d4
- mov r1, r8
- str r1, [r2]
- str r0, [r2, 0x4]
- lsrs r0, r3, 2
- movs r1, 0x85
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r1, 0xA0
- lsls r1, 19
- mov r0, sp
- strh r4, [r0]
- str r0, [r2]
- str r1, [r2, 0x4]
- lsrs r3, 1
- movs r0, 0x81
- lsls r0, 24
- orrs r3, r0
- str r3, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r1, 0xC0
- lsls r1, 19
- mov r0, r9
- bl LZ77UnCompVram
- movs r1, 0
- ldr r3, _08143558 @ =0x06003800
- movs r2, 0x1
-_081434B2:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x3F
- bls _081434B2
- movs r1, 0
- ldr r5, _0814355C @ =0x02000000
- ldr r3, _08143560 @ =0x06003b80
- movs r2, 0x1
-_081434CA:
- lsls r0, r1, 1
- adds r0, r3
- strh r2, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0xBF
- bls _081434CA
- movs r1, 0
- ldr r4, _08143564 @ =0x06003000
- movs r3, 0x2
- ldr r2, _08143568 @ =0x000003ff
-_081434E2:
- lsls r0, r1, 1
- adds r0, r4
- strh r3, [r0]
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, r2
- bls _081434E2
- adds r2, r5, 0
- movs r3, 0x80
- lsls r3, 7
- mov r4, sp
- movs r6, 0
- ldr r1, _08143550 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _08143554 @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_0814350A:
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r2, r5
- subs r3, r5
- cmp r3, r5
- bhi _0814350A
- strh r6, [r4]
- mov r0, sp
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- bl ResetPaletteFade
- ldr r0, _0814356C @ =gHallOfFame_Pal
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814354C: .4byte gHallOfFame_Gfx
-_08143550: .4byte 0x040000d4
-_08143554: .4byte 0x81000800
-_08143558: .4byte 0x06003800
-_0814355C: .4byte 0x02000000
-_08143560: .4byte 0x06003b80
-_08143564: .4byte 0x06003000
-_08143568: .4byte 0x000003ff
-_0814356C: .4byte gHallOfFame_Pal
- thumb_func_end sub_81433E0
-
- thumb_func_start sub_8143570
-sub_8143570: @ 8143570
- push {r4,lr}
- bl remove_some_task
- bl ResetTasks
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r1, _081435A8 @ =gReservedSpritePaletteCount
- movs r0, 0x8
- strb r0, [r1]
- ldr r0, _081435AC @ =gUnknown_0840B514
- bl LoadCompressedObjectPic
- ldr r0, _081435B0 @ =gUnknown_0840B524
- bl LoadCompressedObjectPalette
- ldr r4, _081435B4 @ =gWindowConfig_81E71B4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081435A8: .4byte gReservedSpritePaletteCount
-_081435AC: .4byte gUnknown_0840B514
-_081435B0: .4byte gUnknown_0840B524
-_081435B4: .4byte gWindowConfig_81E71B4
- thumb_func_end sub_8143570
-
- thumb_func_start sub_81435B8
-sub_81435B8: @ 81435B8
- ldr r1, _081435D8 @ =REG_BG1CNT
- movs r2, 0xE0
- lsls r2, 3
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x4
- subs r2, 0xFD
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xE
- movs r2, 0xDA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- bx lr
- .align 2, 0
-_081435D8: .4byte REG_BG1CNT
- thumb_func_end sub_81435B8
-
- thumb_func_start sub_81435DC
-sub_81435DC: @ 81435DC
- push {r4,lr}
- adds r2, r0, 0
- ldr r1, [r2, 0x20]
- ldr r0, [r2, 0x30]
- cmp r1, r0
- beq _08143632
- ldrh r3, [r2, 0x20]
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- movs r4, 0x30
- ldrsh r1, [r2, r4]
- cmp r0, r1
- bge _081435FC
- adds r0, r3, 0
- adds r0, 0xF
- strh r0, [r2, 0x20]
-_081435FC:
- ldrh r3, [r2, 0x20]
- movs r4, 0x20
- ldrsh r0, [r2, r4]
- cmp r0, r1
- ble _0814360C
- adds r0, r3, 0
- subs r0, 0xF
- strh r0, [r2, 0x20]
-_0814360C:
- ldrh r3, [r2, 0x22]
- movs r1, 0x22
- ldrsh r0, [r2, r1]
- movs r4, 0x32
- ldrsh r1, [r2, r4]
- cmp r0, r1
- bge _08143620
- adds r0, r3, 0
- adds r0, 0xA
- strh r0, [r2, 0x22]
-_08143620:
- ldrh r3, [r2, 0x22]
- movs r4, 0x22
- ldrsh r0, [r2, r4]
- cmp r0, r1
- ble _0814363A
- adds r0, r3, 0
- subs r0, 0xA
- strh r0, [r2, 0x22]
- b _0814363A
-_08143632:
- movs r0, 0x1
- strh r0, [r2, 0x2E]
- ldr r0, _08143640 @ =nullsub_81
- str r0, [r2, 0x1C]
-_0814363A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08143640: .4byte nullsub_81
- thumb_func_end sub_81435DC
-
- thumb_func_start nullsub_81
-nullsub_81: @ 8143644
- bx lr
- thumb_func_end nullsub_81
-
- thumb_func_start sub_8143648
-sub_8143648: @ 8143648
- push {r4-r7,lr}
- lsls r1, 24
- ldr r4, _08143670 @ =gUnknown_02024E8C
- adds r3, r4, 0
- ldr r2, _08143674 @ =gUnknown_0840B6B8
- ldm r2!, {r5-r7}
- stm r3!, {r5-r7}
- ldm r2!, {r5-r7}
- stm r3!, {r5-r7}
- strh r0, [r4, 0x2]
- ldr r0, _08143678 @ =gUnknown_0840B69C
- lsrs r1, 22
- adds r1, r0
- ldr r0, [r1]
- str r0, [r4, 0xC]
- ldr r0, _0814367C @ =gSpriteAnimTable_81E7C64
- str r0, [r4, 0x8]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08143670: .4byte gUnknown_02024E8C
-_08143674: .4byte gUnknown_0840B6B8
-_08143678: .4byte gUnknown_0840B69C
-_0814367C: .4byte gSpriteAnimTable_81E7C64
- thumb_func_end sub_8143648
-
- thumb_func_start sub_8143680
-sub_8143680: @ 8143680
- push {r4-r7,lr}
- lsls r1, 24
- ldr r4, _081436AC @ =gUnknown_02024E8C
- adds r3, r4, 0
- ldr r2, _081436B0 @ =gUnknown_0840B6B8
- ldm r2!, {r5-r7}
- stm r3!, {r5-r7}
- ldm r2!, {r5-r7}
- stm r3!, {r5-r7}
- strh r0, [r4, 0x2]
- ldr r0, _081436B4 @ =gUnknown_0840B69C
- lsrs r1, 22
- adds r1, r0
- ldr r0, [r1]
- str r0, [r4, 0xC]
- ldr r0, _081436B8 @ =gUnknown_081EC2A4
- ldr r0, [r0]
- str r0, [r4, 0x8]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081436AC: .4byte gUnknown_02024E8C
-_081436B0: .4byte gUnknown_0840B6B8
-_081436B4: .4byte gUnknown_0840B69C
-_081436B8: .4byte gUnknown_081EC2A4
- thumb_func_end sub_8143680
-
- thumb_func_start sub_81436BC
-sub_81436BC: @ 81436BC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- adds r6, r0, 0
- mov r9, r1
- mov r10, r2
- mov r8, r3
- ldr r7, [sp, 0x34]
- lsls r6, 16
- lsrs r6, 16
- mov r0, r9
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- mov r1, r10
- lsls r1, 16
- lsrs r1, 16
- mov r10, r1
- mov r2, r8
- lsls r2, 16
- lsrs r2, 16
- mov r8, r2
- lsls r0, r6, 3
- ldr r1, _08143790 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _08143794 @ =gMonFrontPicCoords
- lsls r2, r6, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _08143798 @ =gUnknown_0840B5A0
- mov r12, r4
- mov r5, r8
- lsls r4, r5, 2
- add r4, r12
- ldr r4, [r4]
- str r4, [sp]
- str r6, [sp, 0x4]
- str r7, [sp, 0x8]
- movs r4, 0x1
- str r4, [sp, 0xC]
- bl LoadSpecialPokePic
- adds r0, r6, 0
- ldr r1, [sp, 0x30]
- adds r2, r7, 0
- bl species_and_otid_get_pal
- lsls r4, r5, 4
- movs r2, 0x80
- lsls r2, 1
- adds r1, r4, r2
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0x20
- bl LoadCompressedPalette
- lsls r1, r5, 24
- lsrs r1, 24
- mov r0, r8
- bl sub_8143648
- ldr r0, _0814379C @ =gUnknown_02024E8C
- mov r5, r9
- lsls r5, 16
- asrs r5, 16
- mov r9, r5
- mov r1, r10
- lsls r1, 16
- asrs r1, 16
- mov r10, r1
- movs r3, 0xA
- mov r2, r8
- subs r3, r2
- lsls r3, 24
- lsrs r3, 24
- mov r1, r9
- mov r2, r10
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _081437A0 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r3, [r2, 0x5]
- movs r1, 0xF
- ands r1, r3
- orrs r1, r4
- strb r1, [r2, 0x5]
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08143790: .4byte gMonFrontPicTable
-_08143794: .4byte gMonFrontPicCoords
-_08143798: .4byte gUnknown_0840B5A0
-_0814379C: .4byte gUnknown_02024E8C
-_081437A0: .4byte gSprites
- thumb_func_end sub_81436BC
-
- thumb_func_start sub_81437A4
-sub_81437A4: @ 81437A4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- mov r9, r1
- mov r10, r2
- adds r6, r3, 0
- lsls r0, 16
- lsrs r0, 16
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 16
- lsrs r2, 16
- mov r10, r2
- lsls r6, 16
- lsrs r6, 16
- lsls r7, r0, 3
- ldr r1, _08143854 @ =gTrainerFrontPicTable
- mov r8, r1
- add r8, r7
- ldr r1, _08143858 @ =gTrainerFrontPicCoords
- lsls r2, r0, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r5, _0814385C @ =gUnknown_0840B5A0
- lsls r4, r6, 2
- adds r4, r5
- ldr r4, [r4]
- str r4, [sp]
- str r0, [sp, 0x4]
- mov r0, r8
- bl DecompressPicFromTable_2
- ldr r0, _08143860 @ =gTrainerFrontPicPaletteTable
- adds r0, r7, r0
- ldr r0, [r0]
- lsls r4, r6, 4
- movs r2, 0x80
- lsls r2, 1
- adds r1, r4, r2
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0x20
- bl LoadCompressedPalette
- lsls r1, r6, 24
- lsrs r1, 24
- adds r0, r6, 0
- bl sub_8143680
- ldr r0, _08143864 @ =gUnknown_02024E8C
- mov r1, r9
- lsls r1, 16
- asrs r1, 16
- mov r9, r1
- mov r2, r10
- lsls r2, 16
- asrs r2, 16
- mov r10, r2
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08143868 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r3, [r2, 0x5]
- movs r1, 0xF
- ands r1, r3
- orrs r1, r4
- strb r1, [r2, 0x5]
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08143854: .4byte gTrainerFrontPicTable
-_08143858: .4byte gTrainerFrontPicCoords
-_0814385C: .4byte gUnknown_0840B5A0
-_08143860: .4byte gTrainerFrontPicPaletteTable
-_08143864: .4byte gUnknown_02024E8C
-_08143868: .4byte gSprites
- thumb_func_end sub_81437A4
-
- thumb_func_start sub_814386C
-sub_814386C: @ 814386C
- push {r4,r5,lr}
- adds r5, r0, 0
- ldrh r1, [r5, 0x26]
- movs r2, 0x26
- ldrsh r0, [r5, r2]
- cmp r0, 0x78
- ble _08143882
- adds r0, r5, 0
- bl DestroySprite
- b _081438BA
-_08143882:
- adds r0, r1, 0x1
- ldrh r1, [r5, 0x30]
- adds r0, r1
- strh r0, [r5, 0x26]
- ldrh r4, [r5, 0x2E]
- lsls r4, 24
- lsrs r4, 24
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x3
- ands r0, r1
- adds r0, 0x8
- ldr r1, _081438C0 @ =gSineTable
- lsls r4, 1
- adds r4, r1
- movs r2, 0
- ldrsh r1, [r4, r2]
- muls r0, r1
- cmp r0, 0
- bge _081438B0
- adds r0, 0xFF
-_081438B0:
- asrs r0, 8
- strh r0, [r5, 0x24]
- ldrh r0, [r5, 0x2E]
- adds r0, 0x4
- strh r0, [r5, 0x2E]
-_081438BA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_081438C0: .4byte gSineTable
- thumb_func_end sub_814386C
-
- thumb_func_start sub_81438C4
-sub_81438C4: @ 81438C4
- push {r4,lr}
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xF0
- bl __umodsi3
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- bl Random
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- movs r0, 0x7
- ands r2, r0
- negs r2, r2
- ldr r0, _08143934 @ =gSpriteTemplate_840B7A4
- lsls r4, 16
- asrs r4, 16
- lsls r2, 16
- asrs r2, 16
- adds r1, r4, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08143938 @ =gSprites
- adds r4, r1, r0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x11
- bl __umodsi3
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl StartSpriteAnim
- bl Random
- movs r1, 0x3
- ands r1, r0
- cmp r1, 0
- beq _0814393C
- movs r0, 0
- b _0814393E
- .align 2, 0
-_08143934: .4byte gSpriteTemplate_840B7A4
-_08143938: .4byte gSprites
-_0814393C:
- movs r0, 0x1
-_0814393E:
- strh r0, [r4, 0x30]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81438C4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/intro_credits_graphics.s b/asm/intro_credits_graphics.s
deleted file mode 100644
index 8d73f6cf6..000000000
--- a/asm/intro_credits_graphics.s
+++ /dev/null
@@ -1,1166 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start load_intro_part2_graphics
-load_intro_part2_graphics: @ 8148B8C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08148BE8 @ =gUnknown_0841225C
- ldr r1, _08148BEC @ =0x06004000
- bl LZ77UnCompVram
- ldr r0, _08148BF0 @ =gUnknown_084126DC
- ldr r1, _08148BF4 @ =0x06007800
- bl LZ77UnCompVram
- ldr r0, _08148BF8 @ =gUnknown_084121FC
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- cmp r4, 0
- beq _08148BB4
- cmp r4, 0x1
- beq _08148C14
-_08148BB4:
- ldr r0, _08148BFC @ =gUnknown_084128D8
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08148C00 @ =gUnknown_08412EB4
- ldr r1, _08148C04 @ =0x06003000
- bl LZ77UnCompVram
- ldr r0, _08148C08 @ =gUnknown_08412818
- movs r1, 0
- movs r2, 0x60
- bl LoadPalette
- ldr r0, _08148C0C @ =gUnknown_08416B54
- bl LoadCompressedObjectPic
- ldr r0, _08148C10 @ =gUnknown_08413184
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- bl sub_8149248
- b _08148C46
- .align 2, 0
-_08148BE8: .4byte gUnknown_0841225C
-_08148BEC: .4byte 0x06004000
-_08148BF0: .4byte gUnknown_084126DC
-_08148BF4: .4byte 0x06007800
-_08148BF8: .4byte gUnknown_084121FC
-_08148BFC: .4byte gUnknown_084128D8
-_08148C00: .4byte gUnknown_08412EB4
-_08148C04: .4byte 0x06003000
-_08148C08: .4byte gUnknown_08412818
-_08148C0C: .4byte gUnknown_08416B54
-_08148C10: .4byte gUnknown_08413184
-_08148C14:
- ldr r0, _08148C58 @ =gUnknown_08413340
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08148C5C @ =gUnknown_084139C8
- ldr r1, _08148C60 @ =0x06003000
- bl LZ77UnCompVram
- ldr r0, _08148C64 @ =gUnknown_08413300
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08148C68 @ =gUnknown_08416BDC
- bl LoadCompressedObjectPic
- ldr r0, _08148C6C @ =gUnknown_08413CCC
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- bl sub_8149264
-_08148C46:
- ldr r1, _08148C70 @ =gUnknown_0203935C
- movs r0, 0
- strh r0, [r1]
- ldr r1, _08148C74 @ =gReservedSpritePaletteCount
- movs r0, 0x8
- strb r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08148C58: .4byte gUnknown_08413340
-_08148C5C: .4byte gUnknown_084139C8
-_08148C60: .4byte 0x06003000
-_08148C64: .4byte gUnknown_08413300
-_08148C68: .4byte gUnknown_08416BDC
-_08148C6C: .4byte gUnknown_08413CCC
-_08148C70: .4byte gUnknown_0203935C
-_08148C74: .4byte gReservedSpritePaletteCount
- thumb_func_end load_intro_part2_graphics
-
- thumb_func_start sub_8148C78
-sub_8148C78: @ 8148C78
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08148CA4 @ =REG_BG3CNT
- ldr r2, _08148CA8 @ =0x00000603
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- adds r2, 0xFF
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _08148CAC @ =0x00000f05
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xA
- movs r2, 0xF2
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_08148CA4: .4byte REG_BG3CNT
-_08148CA8: .4byte 0x00000603
-_08148CAC: .4byte 0x00000f05
- thumb_func_end sub_8148C78
-
- thumb_func_start sub_8148CB0
-sub_8148CB0: @ 8148CB0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08148CD4 @ =gUnknown_0841225C
- ldr r1, _08148CD8 @ =0x06004000
- bl LZ77UnCompVram
- ldr r0, _08148CDC @ =gUnknown_084126DC
- ldr r1, _08148CE0 @ =0x06007800
- bl LZ77UnCompVram
- cmp r4, 0x4
- bhi _08148CFC
- lsls r0, r4, 2
- ldr r1, _08148CE4 @ =_08148CE8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08148CD4: .4byte gUnknown_0841225C
-_08148CD8: .4byte 0x06004000
-_08148CDC: .4byte gUnknown_084126DC
-_08148CE0: .4byte 0x06007800
-_08148CE4: .4byte _08148CE8
- .align 2, 0
-_08148CE8:
- .4byte _08148CFC
- .4byte _08148D58
- .4byte _08148DC4
- .4byte _08148DC4
- .4byte _08148E1C
-_08148CFC:
- ldr r0, _08148D34 @ =gUnknown_084121FC
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08148D38 @ =gUnknown_084128D8
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08148D3C @ =gUnknown_08412EB4
- ldr r1, _08148D40 @ =0x06003000
- bl LZ77UnCompVram
- ldr r0, _08148D44 @ =gUnknown_08412818
- movs r1, 0
- movs r2, 0x60
- bl LoadPalette
- ldr r0, _08148D48 @ =gUnknown_08416B54
- bl LoadCompressedObjectPic
- ldr r0, _08148D4C @ =gUnknown_084131C4
- ldr r1, _08148D50 @ =0x06010000
- bl LZ77UnCompVram
- ldr r0, _08148D54 @ =gUnknown_08413184
- b _08148D8E
- .align 2, 0
-_08148D34: .4byte gUnknown_084121FC
-_08148D38: .4byte gUnknown_084128D8
-_08148D3C: .4byte gUnknown_08412EB4
-_08148D40: .4byte 0x06003000
-_08148D44: .4byte gUnknown_08412818
-_08148D48: .4byte gUnknown_08416B54
-_08148D4C: .4byte gUnknown_084131C4
-_08148D50: .4byte 0x06010000
-_08148D54: .4byte gUnknown_08413184
-_08148D58:
- ldr r0, _08148DA0 @ =gUnknown_0841221C
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08148DA4 @ =gUnknown_084128D8
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08148DA8 @ =gUnknown_08412EB4
- ldr r1, _08148DAC @ =0x06003000
- bl LZ77UnCompVram
- ldr r0, _08148DB0 @ =gUnknown_08412878
- movs r1, 0
- movs r2, 0x60
- bl LoadPalette
- ldr r0, _08148DB4 @ =gUnknown_08416B54
- bl LoadCompressedObjectPic
- ldr r0, _08148DB8 @ =gUnknown_084131C4
- ldr r1, _08148DBC @ =0x06010000
- bl LZ77UnCompVram
- ldr r0, _08148DC0 @ =gUnknown_084131A4
-_08148D8E:
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- bl sub_8149248
- b _08148E58
- .align 2, 0
-_08148DA0: .4byte gUnknown_0841221C
-_08148DA4: .4byte gUnknown_084128D8
-_08148DA8: .4byte gUnknown_08412EB4
-_08148DAC: .4byte 0x06003000
-_08148DB0: .4byte gUnknown_08412878
-_08148DB4: .4byte gUnknown_08416B54
-_08148DB8: .4byte gUnknown_084131C4
-_08148DBC: .4byte 0x06010000
-_08148DC0: .4byte gUnknown_084131A4
-_08148DC4:
- ldr r0, _08148E04 @ =gUnknown_0841221C
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08148E08 @ =gUnknown_08413340
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08148E0C @ =gUnknown_084139C8
- ldr r1, _08148E10 @ =0x06003000
- bl LZ77UnCompVram
- ldr r4, _08148E14 @ =gUnknown_08413320
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08148E18 @ =gUnknown_08416BDC
- bl LoadCompressedObjectPic
- movs r1, 0x80
- lsls r1, 1
- adds r0, r4, 0
- movs r2, 0x20
- bl LoadPalette
- bl sub_8149264
- b _08148E58
- .align 2, 0
-_08148E04: .4byte gUnknown_0841221C
-_08148E08: .4byte gUnknown_08413340
-_08148E0C: .4byte gUnknown_084139C8
-_08148E10: .4byte 0x06003000
-_08148E14: .4byte gUnknown_08413320
-_08148E18: .4byte gUnknown_08416BDC
-_08148E1C:
- ldr r0, _08148E6C @ =gUnknown_0841223C
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08148E70 @ =gUnknown_08413E78
- movs r1, 0xC0
- lsls r1, 19
- bl LZ77UnCompVram
- ldr r0, _08148E74 @ =gUnknown_08414084
- ldr r1, _08148E78 @ =0x06003000
- bl LZ77UnCompVram
- ldr r0, _08148E7C @ =gUnknown_08413E38
- movs r1, 0
- movs r2, 0x40
- bl LoadPalette
- ldr r0, _08148E80 @ =gUnknown_08416C70
- bl LoadCompressedObjectPic
- ldr r0, _08148E84 @ =gUnknown_08414064
- movs r1, 0x80
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- bl sub_8149280
-_08148E58:
- ldr r1, _08148E88 @ =gReservedSpritePaletteCount
- movs r0, 0x8
- strb r0, [r1]
- ldr r1, _08148E8C @ =gUnknown_0203935C
- movs r0, 0
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08148E6C: .4byte gUnknown_0841223C
-_08148E70: .4byte gUnknown_08413E78
-_08148E74: .4byte gUnknown_08414084
-_08148E78: .4byte 0x06003000
-_08148E7C: .4byte gUnknown_08413E38
-_08148E80: .4byte gUnknown_08416C70
-_08148E84: .4byte gUnknown_08414064
-_08148E88: .4byte gReservedSpritePaletteCount
-_08148E8C: .4byte gUnknown_0203935C
- thumb_func_end sub_8148CB0
-
- thumb_func_start sub_8148E90
-sub_8148E90: @ 8148E90
- ldr r1, _08148EB4 @ =REG_BG3CNT
- ldr r2, _08148EB8 @ =0x00000603
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- adds r2, 0xFF
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0x2
- ldr r2, _08148EBC @ =0x00000f05
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xA
- movs r2, 0xFA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08148EB4: .4byte REG_BG3CNT
-_08148EB8: .4byte 0x00000603
-_08148EBC: .4byte 0x00000f05
- thumb_func_end sub_8148E90
-
- thumb_func_start sub_8148EC0
-sub_8148EC0: @ 8148EC0
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- mov r8, r2
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 16
- lsrs r6, 16
- mov r0, r8
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r3, 16
- lsrs r3, 16
- ldr r1, _08148F34 @ =sub_8148F3C
- mov r9, r1
- mov r0, r9
- movs r1, 0
- str r3, [sp]
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _08148F38 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- movs r2, 0
- strh r5, [r0, 0x8]
- strh r6, [r0, 0xA]
- strh r2, [r0, 0xC]
- strh r2, [r0, 0xE]
- mov r1, r8
- strh r1, [r0, 0x10]
- strh r2, [r0, 0x12]
- strh r2, [r0, 0x14]
- ldr r3, [sp]
- strh r3, [r0, 0x16]
- movs r1, 0x8
- strh r1, [r0, 0x18]
- strh r2, [r0, 0x1A]
- adds r0, r4, 0
- bl _call_via_r9
- adds r0, r4, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08148F34: .4byte sub_8148F3C
-_08148F38: .4byte gTasks
- thumb_func_end sub_8148EC0
-
- thumb_func_start sub_8148F3C
-sub_8148F3C: @ 8148F3C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _08148FB4 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r1
- ldrh r0, [r3, 0xA]
- lsls r4, r0, 16
- adds r6, r1, 0
- cmp r4, 0
- beq _08148F7C
- movs r1, 0xC
- ldrsh r0, [r3, r1]
- lsls r0, 16
- ldrh r1, [r3, 0xE]
- adds r2, r0, r1
- lsrs r0, r4, 12
- subs r2, r0
- asrs r1, r2, 16
- strh r1, [r3, 0xC]
- strh r2, [r3, 0xE]
- ldr r0, _08148FB8 @ =REG_BG1HOFS
- strh r1, [r0]
- ldr r2, _08148FBC @ =REG_BG1VOFS
- ldr r1, _08148FC0 @ =gUnknown_02039358
- ldr r0, _08148FC4 @ =gUnknown_0203935A
- ldrh r0, [r0]
- ldrh r1, [r1]
- adds r0, r1
- strh r0, [r2]
-_08148F7C:
- ldrh r0, [r3, 0x10]
- lsls r4, r0, 16
- cmp r4, 0
- beq _08148FD8
- movs r1, 0x12
- ldrsh r0, [r3, r1]
- lsls r0, 16
- ldrh r1, [r3, 0x14]
- adds r2, r0, r1
- lsrs r0, r4, 12
- subs r2, r0
- asrs r1, r2, 16
- strh r1, [r3, 0x12]
- strh r2, [r3, 0x14]
- ldr r0, _08148FC8 @ =REG_BG2HOFS
- strh r1, [r0]
- movs r1, 0x8
- ldrsh r0, [r3, r1]
- cmp r0, 0
- beq _08148FD0
- ldr r2, _08148FCC @ =REG_BG2VOFS
- ldr r1, _08148FC0 @ =gUnknown_02039358
- ldr r0, _08148FC4 @ =gUnknown_0203935A
- ldrh r0, [r0]
- ldrh r1, [r1]
- adds r0, r1
- strh r0, [r2]
- b _08148FD8
- .align 2, 0
-_08148FB4: .4byte gTasks
-_08148FB8: .4byte REG_BG1HOFS
-_08148FBC: .4byte REG_BG1VOFS
-_08148FC0: .4byte gUnknown_02039358
-_08148FC4: .4byte gUnknown_0203935A
-_08148FC8: .4byte REG_BG2HOFS
-_08148FCC: .4byte REG_BG2VOFS
-_08148FD0:
- ldr r0, _08149010 @ =REG_BG2VOFS
- ldr r1, _08149014 @ =gUnknown_02039358
- ldrh r1, [r1]
- strh r1, [r0]
-_08148FD8:
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r3, r0, r6
- ldrh r0, [r3, 0x16]
- lsls r4, r0, 16
- cmp r4, 0
- beq _08149008
- movs r1, 0x18
- ldrsh r0, [r3, r1]
- lsls r0, 16
- ldrh r1, [r3, 0x1A]
- adds r2, r0, r1
- lsrs r0, r4, 12
- subs r2, r0
- asrs r1, r2, 16
- strh r1, [r3, 0x18]
- strh r2, [r3, 0x1A]
- ldr r0, _08149018 @ =REG_BG3HOFS
- strh r1, [r0]
- ldr r1, _0814901C @ =REG_BG3VOFS
- ldr r0, _08149014 @ =gUnknown_02039358
- ldrh r0, [r0]
- strh r0, [r1]
-_08149008:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08149010: .4byte REG_BG2VOFS
-_08149014: .4byte gUnknown_02039358
-_08149018: .4byte REG_BG3HOFS
-_0814901C: .4byte REG_BG3VOFS
- thumb_func_end sub_8148F3C
-
- thumb_func_start sub_8149020
-sub_8149020: @ 8149020
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08149100
- cmp r0, 0x1
- ble _08149034
- cmp r0, 0x2
- beq _08149098
-_08149034:
- ldr r0, _08149060 @ =gMain
- ldr r2, [r0, 0x20]
- movs r0, 0x3
- ands r0, r2
- cmp r0, 0
- bne _08149100
- ldr r0, _08149064 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08149100
- movs r0, 0x4
- ands r2, r0
- cmp r2, 0
- beq _0814906C
- ldr r2, _08149068 @ =gPlttBufferUnfaded
- ldrh r1, [r2, 0x12]
- mov r0, sp
- strh r1, [r0]
- ldrh r1, [r2, 0x14]
- b _08149076
- .align 2, 0
-_08149060: .4byte gMain
-_08149064: .4byte gPaletteFade
-_08149068: .4byte gPlttBufferUnfaded
-_0814906C:
- ldr r2, _08149094 @ =gPlttBufferUnfaded
- ldrh r1, [r2, 0x14]
- mov r0, sp
- strh r1, [r0]
- ldrh r1, [r2, 0x12]
-_08149076:
- adds r0, 0x2
- strh r1, [r0]
- adds r4, r0, 0
- mov r0, sp
- movs r1, 0x9
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0xA
- movs r2, 0x2
- bl LoadPalette
- b _08149100
- .align 2, 0
-_08149094: .4byte gPlttBufferUnfaded
-_08149098:
- ldr r0, _081490C8 @ =gMain
- ldr r2, [r0, 0x20]
- movs r0, 0x3
- ands r0, r2
- cmp r0, 0
- bne _08149100
- ldr r0, _081490CC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08149100
- movs r0, 0x4
- ands r2, r0
- cmp r2, 0
- beq _081490D8
- mov r1, sp
- ldr r2, _081490D0 @ =0x00003d27
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _081490D4 @ =0x00000295
- b _081490E6
- .align 2, 0
-_081490C8: .4byte gMain
-_081490CC: .4byte gPaletteFade
-_081490D0: .4byte 0x00003d27
-_081490D4: .4byte 0x00000295
-_081490D8:
- mov r1, sp
- movs r2, 0xC7
- lsls r2, 2
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _08149108 @ =0x00003d27
-_081490E6:
- adds r0, r2, 0
- strh r0, [r1]
- adds r4, r1, 0
- mov r0, sp
- movs r1, 0xC
- movs r2, 0x2
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0xD
- movs r2, 0x2
- bl LoadPalette
-_08149100:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08149108: .4byte 0x00003d27
- thumb_func_end sub_8149020
-
- thumb_func_start sub_814910C
-sub_814910C: @ 814910C
- push {lr}
- adds r2, r0, 0
- ldr r0, _08149124 @ =gUnknown_0203935C
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- beq _08149128
- adds r0, r2, 0
- bl DestroySprite
- b _0814916C
- .align 2, 0
-_08149124: .4byte gUnknown_0203935C
-_08149128:
- movs r1, 0x20
- ldrsh r0, [r2, r1]
- lsls r0, 16
- ldrh r1, [r2, 0x32]
- orrs r0, r1
- ldrh r1, [r2, 0x30]
- adds r0, r1
- asrs r1, r0, 16
- strh r1, [r2, 0x20]
- strh r0, [r2, 0x32]
- cmp r1, 0xFF
- ble _08149144
- ldr r0, _08149158 @ =0x0000ffe0
- strh r0, [r2, 0x20]
-_08149144:
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0
- beq _08149164
- ldr r1, _0814915C @ =gUnknown_02039358
- ldr r0, _08149160 @ =gUnknown_0203935A
- ldrh r0, [r0]
- ldrh r1, [r1]
- adds r0, r1
- b _08149168
- .align 2, 0
-_08149158: .4byte 0x0000ffe0
-_0814915C: .4byte gUnknown_02039358
-_08149160: .4byte gUnknown_0203935A
-_08149164:
- ldr r0, _08149170 @ =gUnknown_02039358
- ldrh r0, [r0]
-_08149168:
- negs r0, r0
- strh r0, [r2, 0x26]
-_0814916C:
- pop {r0}
- bx r0
- .align 2, 0
-_08149170: .4byte gUnknown_02039358
- thumb_func_end sub_814910C
-
- thumb_func_start sub_8149174
-sub_8149174: @ 8149174
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- str r1, [sp, 0x4]
- str r2, [sp, 0x8]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- movs r7, 0
- cmp r7, r8
- bcs _0814922A
- ldr r0, _0814923C @ =gSprites
- mov r10, r0
- movs r2, 0x3F
- mov r9, r2
-_0814919E:
- lsls r6, r7, 3
- ldr r0, [sp, 0x4]
- adds r6, r0
- ldrb r1, [r6, 0x1]
- ldrb r2, [r6, 0x2]
- ldrb r3, [r6, 0x3]
- ldr r0, _08149240 @ =gSpriteTemplate_8416B3C
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- lsls r5, r0, 4
- adds r5, r0
- lsls r5, 2
- mov r2, r10
- adds r4, r5, r2
- ldrb r2, [r6]
- lsls r1, r2, 26
- lsrs r1, 30
- lsrs r2, 6
- adds r0, r4, 0
- movs r3, 0
- bl CalcCenterToCornerVec
- ldrb r3, [r4, 0x5]
- movs r0, 0xC
- orrs r3, r0
- strb r3, [r4, 0x5]
- ldrb r1, [r6]
- lsls r1, 26
- lsrs r1, 30
- lsls r1, 6
- ldrb r2, [r4, 0x1]
- mov r0, r9
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x1]
- ldrb r1, [r6]
- lsrs r1, 6
- lsls r1, 6
- ldrb r2, [r4, 0x3]
- mov r0, r9
- ands r0, r2
- orrs r0, r1
- strb r0, [r4, 0x3]
- movs r0, 0xF
- ands r3, r0
- strb r3, [r4, 0x5]
- ldr r0, _08149244 @ =gSprites + 0x8
- adds r5, r0
- ldr r2, [sp, 0x8]
- str r2, [r5]
- ldrb r1, [r6]
- lsls r1, 28
- lsrs r1, 28
- adds r0, r4, 0
- bl StartSpriteAnim
- movs r1, 0
- mov r0, sp
- ldrh r0, [r0]
- strh r0, [r4, 0x2E]
- ldrh r0, [r6, 0x4]
- strh r0, [r4, 0x30]
- strh r1, [r4, 0x32]
- adds r0, r7, 0x1
- lsls r0, 24
- lsrs r7, r0, 24
- cmp r7, r8
- bcc _0814919E
-_0814922A:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814923C: .4byte gSprites
-_08149240: .4byte gSpriteTemplate_8416B3C
-_08149244: .4byte gSprites + 0x8
- thumb_func_end sub_8149174
-
- thumb_func_start sub_8149248
-sub_8149248: @ 8149248
- push {lr}
- ldr r1, _0814925C @ =gUnknown_08416B94
- ldr r2, _08149260 @ =gSpriteAnimTable_8416B84
- movs r0, 0
- movs r3, 0x9
- bl sub_8149174
- pop {r0}
- bx r0
- .align 2, 0
-_0814925C: .4byte gUnknown_08416B94
-_08149260: .4byte gSpriteAnimTable_8416B84
- thumb_func_end sub_8149248
-
- thumb_func_start sub_8149264
-sub_8149264: @ 8149264
- push {lr}
- ldr r1, _08149278 @ =gUnknown_08416C10
- ldr r2, _0814927C @ =gSpriteAnimTable_8416C04
- movs r0, 0x1
- movs r3, 0xC
- bl sub_8149174
- pop {r0}
- bx r0
- .align 2, 0
-_08149278: .4byte gUnknown_08416C10
-_0814927C: .4byte gSpriteAnimTable_8416C04
- thumb_func_end sub_8149264
-
- thumb_func_start sub_8149280
-sub_8149280: @ 8149280
- push {lr}
- ldr r1, _08149294 @ =gUnknown_08416C8C
- ldr r2, _08149298 @ =gSpriteAnimTable_8416C88
- movs r0, 0x1
- movs r3, 0x6
- bl sub_8149174
- pop {r0}
- bx r0
- .align 2, 0
-_08149294: .4byte gUnknown_08416C8C
-_08149298: .4byte gSpriteAnimTable_8416C88
- thumb_func_end sub_8149280
-
- thumb_func_start nullsub_82
-nullsub_82: @ 814929C
- bx lr
- thumb_func_end nullsub_82
-
- thumb_func_start sub_81492A0
-sub_81492A0: @ 81492A0
- push {r4,lr}
- ldr r4, _0814930C @ =gSprites
- movs r1, 0x2E
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r1, [r1]
- movs r2, 0x3E
- adds r2, r0
- mov r12, r2
- movs r2, 0x4
- ands r2, r1
- mov r1, r12
- ldrb r3, [r1]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- movs r1, 0x2E
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x20]
- strh r1, [r0, 0x20]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x22]
- adds r1, 0x8
- strh r1, [r0, 0x22]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x24]
- strh r1, [r0, 0x24]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x26]
- strh r1, [r0, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0814930C: .4byte gSprites
- thumb_func_end sub_81492A0
-
- thumb_func_start intro_create_brendan_sprite
-intro_create_brendan_sprite: @ 8149310
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r0, _0814935C @ =gSpriteTemplate_8416CDC
- lsls r5, 16
- asrs r5, 16
- lsls r4, 16
- asrs r4, 16
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0
- bl CreateSprite
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _08149360 @ =gSpriteTemplate_8416D2C
- adds r4, 0x8
- lsls r4, 16
- asrs r4, 16
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08149364 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- strh r6, [r1, 0x2E]
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0814935C: .4byte gSpriteTemplate_8416CDC
-_08149360: .4byte gSpriteTemplate_8416D2C
-_08149364: .4byte gSprites
- thumb_func_end intro_create_brendan_sprite
-
- thumb_func_start intro_create_may_sprite
-intro_create_may_sprite: @ 8149368
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- ldr r0, _081493B4 @ =gSpriteTemplate_8416CF4
- lsls r5, 16
- asrs r5, 16
- lsls r4, 16
- asrs r4, 16
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0
- bl CreateSprite
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r0, _081493B8 @ =gSpriteTemplate_8416D44
- adds r4, 0x8
- lsls r4, 16
- asrs r4, 16
- adds r1, r5, 0
- adds r2, r4, 0
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081493BC @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- strh r6, [r1, 0x2E]
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_081493B4: .4byte gSpriteTemplate_8416CF4
-_081493B8: .4byte gSpriteTemplate_8416D44
-_081493BC: .4byte gSprites
- thumb_func_end intro_create_may_sprite
-
- thumb_func_start nullsub_83
-nullsub_83: @ 81493C0
- bx lr
- thumb_func_end nullsub_83
-
- thumb_func_start sub_81493C4
-sub_81493C4: @ 81493C4
- push {r4,lr}
- ldr r4, _08149420 @ =gSprites
- movs r1, 0x2E
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r1, [r1]
- movs r2, 0x3E
- adds r2, r0
- mov r12, r2
- movs r2, 0x4
- ands r2, r1
- mov r1, r12
- ldrb r3, [r1]
- movs r1, 0x5
- negs r1, r1
- ands r1, r3
- orrs r1, r2
- mov r2, r12
- strb r1, [r2]
- movs r1, 0x2E
- ldrsh r2, [r0, r1]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x22]
- strh r1, [r0, 0x22]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x24]
- strh r1, [r0, 0x24]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r4
- ldrh r1, [r1, 0x26]
- strh r1, [r0, 0x26]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08149420: .4byte gSprites
- thumb_func_end sub_81493C4
-
- thumb_func_start intro_create_latios_sprite
-intro_create_latios_sprite: @ 8149424
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r2, r0, 0
- adds r5, r1, 0
- ldr r0, _08149490 @ =gSpriteTemplate_8416D7C
- mov r8, r0
- lsls r2, 16
- asrs r4, r2, 16
- ldr r0, _08149494 @ =0xffe00000
- adds r2, r0
- asrs r2, 16
- lsls r5, 16
- asrs r5, 16
- mov r0, r8
- adds r1, r2, 0
- adds r2, r5, 0
- movs r3, 0x2
- bl CreateSprite
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- adds r4, 0x20
- lsls r4, 16
- asrs r4, 16
- mov r0, r8
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _08149498 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r0, r4, r5
- strh r6, [r0, 0x2E]
- movs r1, 0x1
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _0814949C @ =sub_81493C4
- str r0, [r4]
- adds r0, r6, 0
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08149490: .4byte gSpriteTemplate_8416D7C
-_08149494: .4byte 0xffe00000
-_08149498: .4byte gSprites
-_0814949C: .4byte sub_81493C4
- thumb_func_end intro_create_latios_sprite
-
- thumb_func_start intro_create_latias_sprite
-intro_create_latias_sprite: @ 81494A0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r2, r0, 0
- adds r5, r1, 0
- ldr r0, _0814950C @ =gSpriteTemplate_8416D94
- mov r8, r0
- lsls r2, 16
- asrs r4, r2, 16
- ldr r0, _08149510 @ =0xffe00000
- adds r2, r0
- asrs r2, 16
- lsls r5, 16
- asrs r5, 16
- mov r0, r8
- adds r1, r2, 0
- adds r2, r5, 0
- movs r3, 0x2
- bl CreateSprite
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- adds r4, 0x20
- lsls r4, 16
- asrs r4, 16
- mov r0, r8
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _08149514 @ =gSprites
- lsls r4, r0, 4
- adds r4, r0
- lsls r4, 2
- adds r0, r4, r5
- strh r6, [r0, 0x2E]
- movs r1, 0x1
- bl StartSpriteAnim
- adds r5, 0x1C
- adds r4, r5
- ldr r0, _08149518 @ =sub_81493C4
- str r0, [r4]
- adds r0, r6, 0
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0814950C: .4byte gSpriteTemplate_8416D94
-_08149510: .4byte 0xffe00000
-_08149514: .4byte gSprites
-_08149518: .4byte sub_81493C4
- thumb_func_end intro_create_latias_sprite
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/learn_move.s b/asm/learn_move.s
deleted file mode 100644
index 89cd2efb8..000000000
--- a/asm/learn_move.s
+++ /dev/null
@@ -1,2739 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_813265C
-sub_813265C: @ 813265C
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_813265C
-
- thumb_func_start sub_8132670
-sub_8132670: @ 8132670
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _08132698 @ =sub_813269C
- movs r1, 0xA
- bl CreateTask
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_08132698: .4byte sub_813269C
- thumb_func_end sub_8132670
-
- thumb_func_start sub_813269C
-sub_813269C: @ 813269C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _081326C8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _081326C0
- ldr r0, _081326CC @ =sub_81326D8
- bl SetMainCallback2
- ldr r1, _081326D0 @ =gFieldCallback
- ldr r0, _081326D4 @ =sub_8080990
- str r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
-_081326C0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081326C8: .4byte gPaletteFade
-_081326CC: .4byte sub_81326D8
-_081326D0: .4byte gFieldCallback
-_081326D4: .4byte sub_8080990
- thumb_func_end sub_813269C
-
- thumb_func_start sub_81326D8
-sub_81326D8: @ 81326D8
- push {r4,r5,lr}
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r4, _08132778 @ =gUnknown_030007B0
- ldr r0, _0813277C @ =0x02017000
- str r0, [r4]
- bl sub_81332A0
- ldr r1, [r4]
- ldr r0, _08132780 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- ldr r2, _08132784 @ =0x000002c5
- adds r1, r2
- movs r5, 0
- strb r0, [r1]
- bl sub_8133558
- ldr r0, _08132788 @ =sub_813265C
- bl SetVBlankCallback
- ldr r4, _0813278C @ =gWindowConfig_81E7240
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- bl MenuZeroFillScreen
- ldr r4, _08132790 @ =gWindowConfig_81E6CE4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- bl MenuZeroFillScreen
- ldr r0, _08132794 @ =REG_BG0VOFS
- strh r5, [r0]
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- strh r5, [r0]
- ldr r0, _08132798 @ =gUnknown_08402D80
- bl LoadSpriteSheet
- ldr r0, _0813279C @ =gUnknown_08402D88
- bl LoadSpritePalette
- bl sub_8133358
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- bl FillPalette
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r0, _081327A0 @ =sub_8132870
- bl SetMainCallback2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08132778: .4byte gUnknown_030007B0
-_0813277C: .4byte 0x02017000
-_08132780: .4byte gSpecialVar_0x8004
-_08132784: .4byte 0x000002c5
-_08132788: .4byte sub_813265C
-_0813278C: .4byte gWindowConfig_81E7240
-_08132790: .4byte gWindowConfig_81E6CE4
-_08132794: .4byte REG_BG0VOFS
-_08132798: .4byte gUnknown_08402D80
-_0813279C: .4byte gUnknown_08402D88
-_081327A0: .4byte sub_8132870
- thumb_func_end sub_81326D8
-
- thumb_func_start sub_81327A4
-sub_81327A4: @ 81327A4
- push {r4,r5,lr}
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r4, _08132844 @ =gUnknown_030007B0
- ldr r0, _08132848 @ =0x02017000
- str r0, [r4]
- bl sub_8133558
- ldr r1, [r4]
- ldr r0, _0813284C @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- ldr r2, _08132850 @ =0x000002c6
- adds r1, r2
- movs r5, 0
- strb r0, [r1]
- ldr r0, _08132854 @ =sub_813265C
- bl SetVBlankCallback
- ldr r4, _08132858 @ =gWindowConfig_81E7240
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- bl MenuZeroFillScreen
- ldr r4, _0813285C @ =gWindowConfig_81E6CE4
- adds r0, r4, 0
- bl SetUpWindowConfig
- adds r0, r4, 0
- bl InitMenuWindow
- bl MenuZeroFillScreen
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08132860 @ =REG_BG0VOFS
- strh r5, [r0]
- subs r0, 0x2
- strh r5, [r0]
- adds r0, 0x4
- strh r5, [r0]
- strh r5, [r0]
- ldr r0, _08132864 @ =gUnknown_08402D80
- bl LoadSpriteSheet
- ldr r0, _08132868 @ =gUnknown_08402D88
- bl LoadSpritePalette
- bl sub_8133358
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- bl FillPalette
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- ldr r0, _0813286C @ =sub_8132870
- bl SetMainCallback2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08132844: .4byte gUnknown_030007B0
-_08132848: .4byte 0x02017000
-_0813284C: .4byte gSpecialVar_0x8005
-_08132850: .4byte 0x000002c6
-_08132854: .4byte sub_813265C
-_08132858: .4byte gWindowConfig_81E7240
-_0813285C: .4byte gWindowConfig_81E6CE4
-_08132860: .4byte REG_BG0VOFS
-_08132864: .4byte gUnknown_08402D80
-_08132868: .4byte gUnknown_08402D88
-_0813286C: .4byte sub_8132870
- thumb_func_end sub_81327A4
-
- thumb_func_start sub_8132870
-sub_8132870: @ 8132870
- push {r4,lr}
- bl sub_8132908
- ldr r4, _081328E0 @ =gUnknown_030007B0
- ldr r1, [r4]
- ldrb r0, [r1, 0x1D]
- cmp r0, 0
- beq _08132896
- movs r0, 0
- strb r0, [r1, 0x1D]
- ldr r0, [r4]
- ldrb r1, [r0, 0x18]
- lsls r1, 1
- adds r1, 0x1
- lsls r1, 27
- lsrs r1, 24
- movs r0, 0x58
- bl sub_814AD7C
-_08132896:
- ldr r1, [r4]
- ldrb r0, [r1, 0x1E]
- cmp r0, 0
- beq _081328A6
- movs r0, 0
- strb r0, [r1, 0x1E]
- bl sub_8133800
-_081328A6:
- ldr r1, [r4]
- ldr r2, _081328E4 @ =0x000002c3
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _081328C8
- adds r2, 0x1
- adds r0, r1, r2
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_8133AEC
- ldr r0, [r4]
- ldr r1, _081328E4 @ =0x000002c3
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_081328C8:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081328E0: .4byte gUnknown_030007B0
-_081328E4: .4byte 0x000002c3
- thumb_func_end sub_8132870
-
- thumb_func_start sub_81328E8
-sub_81328E8: @ 81328E8
- push {r4,lr}
- adds r1, r0, 0
- ldr r4, _08132904 @ =gStringVar4
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrintMessage
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08132904: .4byte gStringVar4
- thumb_func_end sub_81328E8
-
- thumb_func_start sub_8132908
-sub_8132908: @ 8132908
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r1, _0813292C @ =gUnknown_030007B0
- ldr r0, [r1]
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0x21
- bls _08132920
- b _08132FD6
-_08132920:
- lsls r0, 2
- ldr r1, _08132930 @ =_08132934
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0813292C: .4byte gUnknown_030007B0
-_08132930: .4byte _08132934
- .align 2, 0
-_08132934:
- .4byte _081329BC
- .4byte _08132A0C
- .4byte _08132A24
- .4byte _08132A2C
- .4byte _08132A60
- .4byte _08132A66
- .4byte _08132A98
- .4byte _08132FD6
- .4byte _08132AAA
- .4byte _08132AD0
- .4byte _08132FD6
- .4byte _08132FD6
- .4byte _08132B74
- .4byte _08132B98
- .4byte _08132DD8
- .4byte _08132DF8
- .4byte _08132BF0
- .4byte _08132C08
- .4byte _08132C2C
- .4byte _08132D40
- .4byte _08132D68
- .4byte _08132DB8
- .4byte _08132DC6
- .4byte _08132FD6
- .4byte _08132C74
- .4byte _08132C8C
- .4byte _08132CB0
- .4byte _08132D0C
- .4byte _08132E18
- .4byte _08132E7C
- .4byte _08132F58
- .4byte _08132F84
- .4byte _08132FA4
- .4byte _08132FBC
-_081329BC:
- ldr r1, [r7]
- ldrb r0, [r1]
- adds r0, 0x1
- movs r4, 0
- strb r0, [r1]
- bl sub_8132FEC
- movs r0, 0
- bl sub_8133030
- bl sub_8133800
- ldr r0, _08132A04 @ =gSprites
- adds r0, 0x64
- movs r1, 0x48
- strh r1, [r0]
- ldr r0, [r7]
- ldr r1, _08132A08 @ =0x000002c3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- b _08132FD6
- .align 2, 0
-_08132A04: .4byte gSprites
-_08132A08: .4byte 0x000002c3
-_08132A0C:
- ldr r0, _08132A20 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08132A1A
- b _08132FD6
-_08132A1A:
- ldr r1, [r7]
- movs r0, 0x4
- b _08132FD4
- .align 2, 0
-_08132A20: .4byte gPaletteFade
-_08132A24:
- ldr r1, [r7]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
-_08132A2C:
- movs r0, 0
- bl sub_8133030
- bl sub_8133800
- ldr r2, _08132A54 @ =gUnknown_030007B0
- ldr r0, [r2]
- ldr r1, _08132A58 @ =0x000002c3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, _08132A5C @ =gSprites
- adds r0, 0x64
- movs r1, 0x48
- strh r1, [r0]
- b _08132FD6
- .align 2, 0
-_08132A54: .4byte gUnknown_030007B0
-_08132A58: .4byte 0x000002c3
-_08132A5C: .4byte gSprites
-_08132A60:
- bl sub_81330E8
- b _08132A9C
-_08132A66:
- movs r0, 0
- bl sub_8133140
- bl sub_8133800
- ldr r2, _08132A8C @ =gUnknown_030007B0
- ldr r0, [r2]
- ldr r1, _08132A90 @ =0x000002c3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _08132A94 @ =gSprites
- adds r0, 0x64
- movs r1, 0x48
- strh r1, [r0]
- ldr r1, [r2]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
- .align 2, 0
-_08132A8C: .4byte gUnknown_030007B0
-_08132A90: .4byte 0x000002c3
-_08132A94: .4byte gSprites
-_08132A98:
- bl sub_8133248
-_08132A9C:
- lsls r0, 24
- cmp r0, 0
- beq _08132AA4
- b _08132FD6
-_08132AA4:
- bl sub_813362C
- b _08132FD6
-_08132AAA:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132AB6
- b _08132FD6
-_08132AB6:
- movs r0, 0x15
- movs r1, 0x7
- movs r2, 0x1
- bl DisplayYesNoMenu
- ldr r0, _08132ACC @ =gUnknown_030007B0
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
- .align 2, 0
-_08132ACC: .4byte gUnknown_030007B0
-_08132AD0:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- bne _08132B3A
- bl sub_8133CA4
- ldr r4, _08132B1C @ =gUnknown_030007B0
- ldr r2, [r4]
- ldr r1, _08132B20 @ =0x000002c5
- adds r0, r2, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08132B24 @ =gPlayerParty
- adds r0, r1
- ldrb r1, [r2, 0x1B]
- lsls r1, 1
- adds r2, 0x20
- adds r2, r1
- ldrh r1, [r2]
- bl GiveMoveToMon
- lsls r0, 16
- ldr r1, _08132B28 @ =0xffff0000
- cmp r0, r1
- beq _08132B34
- ldr r0, _08132B2C @ =gOtherText_PokeLearnedMove
- bl sub_81328E8
- ldr r1, _08132B30 @ =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
- ldr r1, [r4]
- movs r0, 0x1F
- b _08132FD4
- .align 2, 0
-_08132B1C: .4byte gUnknown_030007B0
-_08132B20: .4byte 0x000002c5
-_08132B24: .4byte gPlayerParty
-_08132B28: .4byte 0xffff0000
-_08132B2C: .4byte gOtherText_PokeLearnedMove
-_08132B30: .4byte gSpecialVar_0x8004
-_08132B34:
- ldr r1, [r4]
- movs r0, 0x10
- b _08132FD4
-_08132B3A:
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08132B48
- cmp r1, 0x1
- beq _08132B48
- b _08132FD6
-_08132B48:
- bl sub_8133CA4
- ldr r3, _08132B70 @ =gUnknown_030007B0
- ldr r1, [r3]
- movs r2, 0xB1
- lsls r2, 2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _08132B60
- movs r0, 0x3
- strb r0, [r1]
-_08132B60:
- ldr r1, [r3]
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08132B6C
- b _08132FD6
-_08132B6C:
- movs r0, 0x5
- b _08132FD4
- .align 2, 0
-_08132B70: .4byte gUnknown_030007B0
-_08132B74:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132B80
- b _08132FD6
-_08132B80:
- movs r0, 0x15
- movs r1, 0x7
- movs r2, 0x1
- bl DisplayYesNoMenu
- ldr r0, _08132B94 @ =gUnknown_030007B0
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
- .align 2, 0
-_08132B94: .4byte gUnknown_030007B0
-_08132B98:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r4, r0, 24
- cmp r4, 0
- bne _08132BB4
- bl sub_8133CA4
- ldr r0, _08132BB0 @ =gSpecialVar_0x8004
- strh r4, [r0]
- b _08132FCE
- .align 2, 0
-_08132BB0: .4byte gSpecialVar_0x8004
-_08132BB4:
- movs r0, 0x1
- negs r0, r0
- cmp r4, r0
- beq _08132BC2
- cmp r4, 0x1
- beq _08132BC2
- b _08132FD6
-_08132BC2:
- bl sub_8133CA4
- ldr r3, _08132BEC @ =gUnknown_030007B0
- ldr r1, [r3]
- movs r2, 0xB1
- lsls r2, 2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _08132BDA
- movs r0, 0x3
- strb r0, [r1]
-_08132BDA:
- ldr r1, [r3]
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08132BE6
- b _08132FD6
-_08132BE6:
- movs r0, 0x5
- b _08132FD4
- .align 2, 0
-_08132BEC: .4byte gUnknown_030007B0
-_08132BF0:
- ldr r0, _08132C00 @ =gOtherText_DeleteOlderMove
- bl sub_81328E8
- ldr r0, _08132C04 @ =gUnknown_030007B0
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
- .align 2, 0
-_08132C00: .4byte gOtherText_DeleteOlderMove
-_08132C04: .4byte gUnknown_030007B0
-_08132C08:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132C14
- b _08132FD6
-_08132C14:
- movs r0, 0x15
- movs r1, 0x7
- movs r2, 0x1
- bl DisplayYesNoMenu
- ldr r0, _08132C28 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x12
- b _08132FD4
- .align 2, 0
-_08132C28: .4byte gUnknown_030007B0
-_08132C2C:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- bne _08132C54
- bl sub_8133CA4
- ldr r0, _08132C4C @ =gOtherText_WhichMoveToForget
- bl sub_81328E8
- ldr r0, _08132C50 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x13
- b _08132FD4
- .align 2, 0
-_08132C4C: .4byte gOtherText_WhichMoveToForget
-_08132C50: .4byte gUnknown_030007B0
-_08132C54:
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08132C62
- cmp r1, 0x1
- beq _08132C62
- b _08132FD6
-_08132C62:
- bl sub_8133CA4
- ldr r0, _08132C70 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x18
- b _08132FD4
- .align 2, 0
-_08132C70: .4byte gUnknown_030007B0
-_08132C74:
- ldr r0, _08132C84 @ =gOtherText_StopLearningMove
- bl sub_81328E8
- ldr r0, _08132C88 @ =gUnknown_030007B0
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
- .align 2, 0
-_08132C84: .4byte gOtherText_StopLearningMove
-_08132C88: .4byte gUnknown_030007B0
-_08132C8C:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132C98
- b _08132FD6
-_08132C98:
- ldr r0, _08132CAC @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x1A
- strb r0, [r1]
- movs r0, 0x15
- movs r1, 0x7
- movs r2, 0x1
- bl DisplayYesNoMenu
- b _08132FD6
- .align 2, 0
-_08132CAC: .4byte gUnknown_030007B0
-_08132CB0:
- bl ProcessMenuInputNoWrap_
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- bne _08132CCC
- bl sub_8133CA4
- ldr r0, _08132CC8 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x1B
- b _08132FD4
- .align 2, 0
-_08132CC8: .4byte gUnknown_030007B0
-_08132CCC:
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _08132CDA
- cmp r1, 0x1
- beq _08132CDA
- b _08132FD6
-_08132CDA:
- bl sub_8133CA4
- ldr r1, _08132D08 @ =gUnknown_030007B0
- ldr r2, [r1]
- movs r3, 0xB1
- lsls r3, 2
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, 0
- bne _08132CF2
- movs r0, 0x3
- strb r0, [r2]
-_08132CF2:
- ldr r2, [r1]
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08132D00
- movs r0, 0x5
- strb r0, [r2]
-_08132D00:
- ldr r1, [r1]
- movs r0, 0x10
- b _08132FD4
- .align 2, 0
-_08132D08: .4byte gUnknown_030007B0
-_08132D0C:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132D18
- b _08132FD6
-_08132D18:
- ldr r3, _08132D3C @ =gUnknown_030007B0
- ldr r1, [r3]
- movs r2, 0xB1
- lsls r2, 2
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _08132D2C
- movs r0, 0x3
- strb r0, [r1]
-_08132D2C:
- ldr r1, [r3]
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08132D38
- b _08132FD6
-_08132D38:
- movs r0, 0x5
- b _08132FD4
- .align 2, 0
-_08132D3C: .4byte gUnknown_030007B0
-_08132D40:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132D4C
- b _08132FD6
-_08132D4C:
- ldr r0, _08132D64 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r2, 0
- movs r0, 0x14
- strb r0, [r1]
- subs r0, 0x15
- str r2, [sp]
- movs r1, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _08132FD6
- .align 2, 0
-_08132D64: .4byte gUnknown_030007B0
-_08132D68:
- ldr r0, _08132DA4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08132D76
- b _08132FD6
-_08132D76:
- ldr r0, _08132DA8 @ =gPlayerParty
- ldr r5, [r7]
- ldr r2, _08132DAC @ =0x000002c5
- adds r1, r5, r2
- ldrb r1, [r1]
- ldr r2, _08132DB0 @ =gPlayerPartyCount
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _08132DB4 @ =sub_81327A4
- ldrb r4, [r5, 0x1B]
- lsls r4, 1
- adds r5, 0x20
- adds r5, r4
- ldrh r4, [r5]
- str r4, [sp]
- bl sub_809D9F0
- ldr r1, [r7]
- movs r0, 0x1C
- b _08132FD4
- .align 2, 0
-_08132DA4: .4byte gPaletteFade
-_08132DA8: .4byte gPlayerParty
-_08132DAC: .4byte 0x000002c5
-_08132DB0: .4byte gPlayerPartyCount
-_08132DB4: .4byte sub_81327A4
-_08132DB8:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- bne _08132DC4
- b _08132FD6
-_08132DC4:
- b _08132FCE
-_08132DC6:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _08132FD6
-_08132DD8:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08132DF4 @ =gUnknown_030007B0
- ldr r1, [r0]
- ldrb r0, [r1]
- adds r0, 0x1
- b _08132FD4
- .align 2, 0
-_08132DF4: .4byte gUnknown_030007B0
-_08132DF8:
- ldr r0, _08132E10 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08132E06
- b _08132FD6
-_08132E06:
- ldr r0, _08132E14 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- b _08132FD6
- .align 2, 0
-_08132E10: .4byte gPaletteFade
-_08132E14: .4byte c2_exit_to_overworld_2_switch
-_08132E18:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r5, _08132E74 @ =gUnknown_030007B0
- ldr r1, [r5]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8132FEC
- bl sub_8133800
- ldr r0, [r5]
- movs r4, 0xB1
- lsls r4, 2
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0
- bne _08132E4E
- movs r0, 0x1
- bl sub_8133030
-_08132E4E:
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08132E66
- ldr r0, _08132E78 @ =gSprites
- adds r0, 0x64
- movs r1, 0x48
- strh r1, [r0]
- movs r0, 0x1
- bl sub_8133140
-_08132E66:
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_8133AEC
- b _08132FD6
- .align 2, 0
-_08132E74: .4byte gUnknown_030007B0
-_08132E78: .4byte gSprites
-_08132E7C:
- ldr r0, _08132E9C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08132E8A
- b _08132FD6
-_08132E8A:
- ldr r1, [r7]
- ldr r0, _08132EA0 @ =0x000002c6
- adds r2, r1, r0
- ldrb r0, [r2]
- cmp r0, 0x4
- bne _08132EA4
- movs r0, 0x18
- b _08132FD4
- .align 2, 0
-_08132E9C: .4byte gPaletteFade
-_08132EA0: .4byte 0x000002c6
-_08132EA4:
- ldr r4, _08132F38 @ =0x000002c5
- adds r0, r1, r4
- ldrb r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08132F3C @ =gPlayerParty
- adds r0, r5
- ldrb r1, [r2]
- adds r1, 0xD
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _08132F40 @ =gStringVar3
- movs r1, 0xD
- mov r9, r1
- mov r1, r9
- muls r1, r0
- ldr r0, _08132F44 @ =gMoveNames
- mov r8, r0
- add r1, r8
- adds r0, r2, 0
- bl StringCopy
- ldr r1, [r7]
- adds r0, r1, r4
- ldrb r0, [r0]
- muls r0, r6
- adds r0, r5
- ldr r2, _08132F48 @ =0x000002c6
- adds r1, r2
- ldrb r1, [r1]
- bl RemoveMonPPBonus
- ldr r3, [r7]
- adds r4, r3, r4
- ldrb r0, [r4]
- muls r0, r6
- adds r0, r5
- ldrb r2, [r3, 0x1B]
- lsls r2, 1
- adds r1, r3, 0
- adds r1, 0x20
- adds r1, r2
- ldrh r1, [r1]
- ldr r2, _08132F48 @ =0x000002c6
- adds r3, r2
- ldrb r2, [r3]
- bl SetMonMoveSlot
- ldr r0, _08132F4C @ =gStringVar2
- ldr r1, [r7]
- ldrb r2, [r1, 0x1B]
- lsls r2, 1
- adds r1, 0x20
- adds r1, r2
- ldrh r1, [r1]
- mov r2, r9
- muls r2, r1
- adds r1, r2, 0
- add r1, r8
- bl StringCopy
- ldr r0, _08132F50 @ =gOtherText_ForgotMove123
- bl sub_81328E8
- ldr r1, [r7]
- movs r0, 0x1E
- strb r0, [r1]
- ldr r1, _08132F54 @ =gSpecialVar_0x8004
- movs r0, 0x1
- strh r0, [r1]
- b _08132FD6
- .align 2, 0
-_08132F38: .4byte 0x000002c5
-_08132F3C: .4byte gPlayerParty
-_08132F40: .4byte gStringVar3
-_08132F44: .4byte gMoveNames
-_08132F48: .4byte 0x000002c6
-_08132F4C: .4byte gStringVar2
-_08132F50: .4byte gOtherText_ForgotMove123
-_08132F54: .4byte gSpecialVar_0x8004
-_08132F58:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _08132FD6
- ldr r0, _08132F78 @ =gOtherText_ForgotOrDidNotLearnMove / deuOtherText_ForgotAndLearned
- bl sub_81328E8
- ldr r0, _08132F7C @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x1F
- strb r0, [r1]
- ldr r0, _08132F80 @ =0x0000016f
- bl PlayFanfare
- b _08132FD6
- .align 2, 0
-.ifdef ENGLISH
-_08132F78: .4byte gOtherText_ForgotOrDidNotLearnMove
-.else
-_08132F78: .4byte deuOtherText_ForgotAndLearned
-.endif
-_08132F7C: .4byte gUnknown_030007B0
-_08132F80: .4byte 0x0000016f
-_08132F84:
- bl MenuUpdateWindowText
- lsls r0, 24
- cmp r0, 0
- beq _08132FD6
- ldr r0, _08132F9C @ =0x0000016f
- bl PlayFanfare
- ldr r0, _08132FA0 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x20
- b _08132FD4
- .align 2, 0
-_08132F9C: .4byte 0x0000016f
-_08132FA0: .4byte gUnknown_030007B0
-_08132FA4:
- bl IsFanfareTaskInactive
- lsls r0, 24
- cmp r0, 0
- beq _08132FD6
- ldr r0, _08132FB8 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0x21
- b _08132FD4
- .align 2, 0
-_08132FB8: .4byte gUnknown_030007B0
-_08132FBC:
- ldr r0, _08132FE4 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08132FD6
- movs r0, 0x5
- bl PlaySE
-_08132FCE:
- ldr r0, _08132FE8 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0xE
-_08132FD4:
- strb r0, [r1]
-_08132FD6:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08132FE4: .4byte gMain
-_08132FE8: .4byte gUnknown_030007B0
- thumb_func_end sub_8132908
-
- thumb_func_start sub_8132FEC
-sub_8132FEC: @ 8132FEC
- push {r4-r6,lr}
- ldr r0, _08133024 @ =gWindowConfig_81E7240
- bl BasicInitMenuWindow
- movs r5, 0
- ldr r4, _08133028 @ =gUnknown_08402CF8
- adds r6, r4, 0
-_08132FFA:
- lsls r3, r5, 2
- ldrb r0, [r4]
- adds r1, r6, 0x1
- adds r1, r3, r1
- ldrb r1, [r1]
- adds r2, r6, 0x2
- adds r3, r2
- ldrb r2, [r3]
- ldrb r3, [r4, 0x3]
- bl MenuDrawTextWindow
- adds r4, 0x4
- adds r5, 0x1
- cmp r5, 0x3
- bls _08132FFA
- ldr r0, _0813302C @ =gWindowConfig_81E6CE4
- bl BasicInitMenuWindow
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08133024: .4byte gWindowConfig_81E7240
-_08133028: .4byte gUnknown_08402CF8
-_0813302C: .4byte gWindowConfig_81E6CE4
- thumb_func_end sub_8132FEC
-
- thumb_func_start sub_8133030
-sub_8133030: @ 8133030
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r4, _081330D4 @ =gSprites
- ldr r5, _081330D8 @ =gUnknown_030007B0
- ldr r0, [r5]
- ldrb r0, [r0, 0x3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- ldr r0, [r5]
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- movs r2, 0
- ldr r6, _081330DC @ =gUnknown_08402D08
- movs r3, 0x4
-_08133070:
- ldr r0, [r5]
- adds r0, r2
- ldrb r1, [r0, 0x7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r2, 0x1
- cmp r2, 0xF
- ble _08133070
- ldr r0, [r6]
- cmp r0, 0
- beq _081330B4
- ldr r5, _081330E0 @ =gTileBuffer
- adds r4, r6, 0
-_08133096:
- ldr r1, [r4]
- adds r0, r5, 0
- movs r2, 0x40
- movs r3, 0x2
- bl sub_8072C74
- ldrb r1, [r4, 0x4]
- ldrb r2, [r4, 0x5]
- adds r0, r5, 0
- bl MenuPrint
- adds r4, 0x8
- ldr r0, [r4]
- cmp r0, 0
- bne _08133096
-_081330B4:
- cmp r7, 0
- bne _081330CC
- ldr r0, _081330E4 @ =gOtherText_TeachWhichMove
- movs r1, 0x20
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r1, 0x18
- movs r2, 0x78
- movs r3, 0xC0
- bl sub_8072AB0
-_081330CC:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_081330D4: .4byte gSprites
-_081330D8: .4byte gUnknown_030007B0
-_081330DC: .4byte gUnknown_08402D08
-_081330E0: .4byte gTileBuffer
-_081330E4: .4byte gOtherText_TeachWhichMove
- thumb_func_end sub_8133030
-
- thumb_func_start sub_81330E8
-sub_81330E8: @ 81330E8
- push {r4,lr}
- ldr r0, _08133134 @ =gMain
- ldrh r2, [r0, 0x2E]
- movs r1, 0x30
- ands r1, r2
- negs r0, r1
- orrs r0, r1
- lsrs r4, r0, 31
- ldr r0, _08133138 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _0813310C
- movs r0, 0xC0
- lsls r0, 2
- ands r0, r2
- cmp r0, 0
- beq _0813310C
- adds r4, 0x1
-_0813310C:
- cmp r4, 0
- beq _0813312A
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0813313C @ =gUnknown_030007B0
- ldr r1, [r2]
- movs r0, 0x5
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0xB1
- lsls r1, 2
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
-_0813312A:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08133134: .4byte gMain
-_08133138: .4byte gSaveBlock2
-_0813313C: .4byte gUnknown_030007B0
- thumb_func_end sub_81330E8
-
- thumb_func_start sub_8133140
-sub_8133140: @ 8133140
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x8]
- ldr r4, _08133234 @ =gSprites
- ldr r5, _08133238 @ =gUnknown_030007B0
- ldr r0, [r5]
- ldrb r0, [r0, 0x3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r3, 0x5
- negs r3, r3
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- ldr r0, [r5]
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r2, [r0]
- adds r1, r3, 0
- ands r1, r2
- strb r1, [r0]
- movs r6, 0
- ldr r7, _0813323C @ =gUnknown_08402D08
-_0813318A:
- ldr r0, [r5]
- adds r0, r6
- ldrb r0, [r0, 0x7]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r3, 0
- ands r0, r2
- strb r0, [r1]
- adds r6, 0x1
- cmp r6, 0xF
- ble _0813318A
- movs r6, 0
- ldr r0, [r7]
- cmp r0, 0
- beq _08133208
- mov r9, r7
- mov r10, r6
- movs r0, 0x24
- add r0, r9
- mov r8, r0
-_081331BA:
- mov r0, r9
- adds r0, 0x20
- add r0, r10
- ldr r1, [r0]
- ldr r0, _08133240 @ =gTileBuffer
- movs r2, 0x40
- movs r3, 0x2
- bl sub_8072C74
- mov r0, r8
- ldrb r5, [r0]
- ldrb r4, [r0, 0x1]
- ldr r0, _08133240 @ =gTileBuffer
- adds r1, r5, 0
- adds r2, r4, 0
- bl MenuPrint
- cmp r6, 0
- beq _081331F8
- adds r1, r4, 0x2
- lsls r1, 24
- lsrs r1, 24
- adds r2, r5, 0x7
- lsls r2, 24
- lsrs r2, 24
- adds r3, r4, 0x3
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- bl MenuZeroFillWindowRect
-_081331F8:
- movs r0, 0x8
- add r10, r0
- add r8, r0
- adds r7, 0x8
- adds r6, 0x1
- ldr r0, [r7]
- cmp r0, 0
- bne _081331BA
-_08133208:
- ldr r0, [sp, 0x8]
- cmp r0, 0
- bne _08133222
- ldr r0, _08133244 @ =gOtherText_TeachWhichMove
- movs r1, 0x20
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r1, 0x18
- movs r2, 0x78
- movs r3, 0xC0
- bl sub_8072AB0
-_08133222:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08133234: .4byte gSprites
-_08133238: .4byte gUnknown_030007B0
-_0813323C: .4byte gUnknown_08402D08
-_08133240: .4byte gTileBuffer
-_08133244: .4byte gOtherText_TeachWhichMove
- thumb_func_end sub_8133140
-
- thumb_func_start sub_8133248
-sub_8133248: @ 8133248
- push {r4,lr}
- ldr r0, _08133294 @ =gMain
- ldrh r2, [r0, 0x2E]
- movs r1, 0x30
- ands r1, r2
- negs r0, r1
- orrs r0, r1
- lsrs r4, r0, 31
- ldr r0, _08133298 @ =gSaveBlock2
- ldrb r0, [r0, 0x13]
- cmp r0, 0x1
- bne _0813326C
- movs r0, 0xC0
- lsls r0, 2
- ands r0, r2
- cmp r0, 0
- beq _0813326C
- adds r4, 0x1
-_0813326C:
- cmp r4, 0
- beq _0813328A
- movs r0, 0x5
- bl PlaySE
- ldr r2, _0813329C @ =gUnknown_030007B0
- ldr r1, [r2]
- movs r3, 0
- movs r0, 0x3
- strb r0, [r1]
- ldr r0, [r2]
- movs r1, 0xB1
- lsls r1, 2
- adds r0, r1
- strb r3, [r0]
-_0813328A:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08133294: .4byte gMain
-_08133298: .4byte gSaveBlock2
-_0813329C: .4byte gUnknown_030007B0
- thumb_func_end sub_8133248
-
- thumb_func_start sub_81332A0
-sub_81332A0: @ 81332A0
- push {r4,lr}
- ldr r2, _081332F8 @ =gUnknown_030007B0
- ldr r0, [r2]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0, 0x2]
- ldr r0, [r2]
- strb r1, [r0, 0x19]
- ldr r0, [r2]
- strb r1, [r0, 0x18]
- ldr r0, [r2]
- strb r1, [r0, 0x1C]
- ldr r0, [r2]
- strb r1, [r0, 0x1A]
- ldr r0, [r2]
- strb r1, [r0, 0x1B]
- ldr r0, [r2]
- strb r1, [r0, 0x1D]
- ldr r0, [r2]
- strb r1, [r0, 0x1E]
- ldr r0, [r2]
- ldr r3, _081332FC @ =0x000002c3
- adds r0, r3
- strb r1, [r0]
- ldr r0, [r2]
- adds r3, 0x1
- adds r0, r3
- strb r1, [r0]
- movs r3, 0
- adds r4, r2, 0
- movs r2, 0
-_081332E0:
- ldr r0, [r4]
- lsls r1, r3, 1
- adds r0, 0x20
- adds r0, r1
- strh r2, [r0]
- adds r3, 0x1
- cmp r3, 0x13
- ble _081332E0
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081332F8: .4byte gUnknown_030007B0
-_081332FC: .4byte 0x000002c3
- thumb_func_end sub_81332A0
-
- thumb_func_start sub_8133300
-sub_8133300: @ 8133300
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 1
- movs r0, 0xFF
- ands r1, r0
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0x1
- beq _08133324
- cmp r0, 0x1
- ble _0813334A
- cmp r0, 0x2
- beq _08133338
- b _0813334A
-_08133324:
- adds r0, r1, 0
- movs r1, 0x3
- bl Sin
- ldrh r1, [r4, 0x32]
- adds r2, r0, 0
- muls r2, r1
- adds r0, r2, 0
- strh r0, [r4, 0x24]
- b _0813334A
-_08133338:
- adds r0, r1, 0
- movs r1, 0x1
- bl Sin
- ldrh r1, [r4, 0x32]
- adds r2, r0, 0
- muls r2, r1
- adds r0, r2, 0
- strh r0, [r4, 0x26]
-_0813334A:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8133300
-
- thumb_func_start sub_8133358
-sub_8133358: @ 8133358
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- ldr r6, _0813353C @ =gSpriteTemplate_8402D90
- adds r0, r6, 0
- movs r1, 0x8
- movs r2, 0x10
- movs r3, 0
- bl CreateSprite
- ldr r4, _08133540 @ =gUnknown_030007B0
- ldr r1, [r4]
- strb r0, [r1, 0x3]
- ldr r5, _08133544 @ =gSprites
- ldr r2, [r4]
- ldrb r1, [r2, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x1
- mov r8, r1
- mov r1, r8
- strh r1, [r0, 0x2E]
- ldrb r1, [r2, 0x3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _08133548 @ =0x0000ffff
- strh r1, [r0, 0x32]
- adds r0, r6, 0
- movs r1, 0x48
- movs r2, 0x10
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- strb r0, [r1, 0x4]
- ldr r0, [r4]
- ldrb r1, [r0, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r2, [r4]
- ldrb r1, [r2, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r1, r8
- strh r1, [r0, 0x2E]
- ldrb r1, [r2, 0x4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r1, r8
- strh r1, [r0, 0x32]
- ldr r0, _0813354C @ =gSpriteTemplate_8402DC0
- mov r9, r0
- movs r1, 0xA0
- movs r2, 0x4
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- strb r0, [r1, 0x5]
- ldr r0, [r4]
- ldrb r1, [r0, 0x5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r2, [r4]
- ldrb r1, [r2, 0x5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r6, 0x2
- strh r6, [r0, 0x2E]
- ldrb r1, [r2, 0x5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- movs r1, 0x1
- negs r1, r1
- strh r1, [r0, 0x32]
- mov r0, r9
- movs r1, 0xA0
- movs r2, 0x3C
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- strb r0, [r1, 0x6]
- ldr r2, [r4]
- ldrb r1, [r2, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r6, [r0, 0x2E]
- ldrb r1, [r2, 0x6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- mov r1, r8
- strh r1, [r0, 0x32]
- movs r5, 0
- ldr r6, _08133550 @ =gSpriteTemplate_8402E08
-_0813344E:
- adds r2, r5, 0
- cmp r5, 0
- bge _08133456
- adds r2, r5, 0x3
-_08133456:
- asrs r2, 2
- lsls r1, r2, 2
- subs r1, r5, r1
- lsls r1, 19
- movs r0, 0xE0
- lsls r0, 13
- adds r1, r0
- asrs r1, 16
- lsls r2, 19
- movs r0, 0xD0
- lsls r0, 14
- adds r2, r0
- asrs r2, 16
- adds r0, r6, 0
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- adds r2, r5, 0x4
- adds r1, 0x3
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x3
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08133544 @ =gSprites
- adds r0, r1
- movs r1, 0x2
- bl StartSpriteAnim
- adds r5, 0x1
- cmp r5, 0x7
- ble _0813344E
- movs r5, 0
- ldr r7, _08133550 @ =gSpriteTemplate_8402E08
- ldr r6, _08133540 @ =gUnknown_030007B0
-_081334A6:
- adds r2, r5, 0
- cmp r5, 0
- bge _081334AE
- adds r2, r5, 0x3
-_081334AE:
- asrs r2, 2
- lsls r1, r2, 2
- subs r1, r5, r1
- lsls r1, 19
- movs r0, 0xE0
- lsls r0, 13
- adds r1, r0
- asrs r1, 16
- lsls r2, 19
- movs r0, 0xB8
- lsls r0, 15
- adds r2, r0
- asrs r2, 16
- adds r0, r7, 0
- movs r3, 0
- bl CreateSprite
- ldr r1, [r6]
- adds r2, r5, 0
- adds r2, 0xC
- adds r1, 0x3
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x3
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08133544 @ =gSprites
- adds r0, r4
- movs r1, 0x2
- bl StartSpriteAnim
- adds r5, 0x1
- cmp r5, 0x7
- ble _081334A6
- movs r5, 0
- ldr r3, _08133540 @ =gUnknown_030007B0
- movs r2, 0x4
-_08133500:
- ldr r0, [r3]
- adds r0, 0x3
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r5, 0x1
- cmp r5, 0x13
- ble _08133500
- ldr r1, _08133548 @ =0x0000ffff
- ldr r3, _08133554 @ =0x00002d9f
- movs r0, 0x12
- str r0, [sp]
- movs r0, 0x10
- movs r2, 0xC
- bl CreateBlendedOutlineCursor
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0813353C: .4byte gSpriteTemplate_8402D90
-_08133540: .4byte gUnknown_030007B0
-_08133544: .4byte gSprites
-_08133548: .4byte 0x0000ffff
-_0813354C: .4byte gSpriteTemplate_8402DC0
-_08133550: .4byte gSpriteTemplate_8402E08
-_08133554: .4byte 0x00002d9f
- thumb_func_end sub_8133358
-
- thumb_func_start sub_8133558
-sub_8133558: @ 8133558
- push {r4-r6,lr}
- sub sp, 0xC
- ldr r5, _081335F4 @ =gUnknown_030007B0
- ldr r1, [r5]
- ldr r2, _081335F8 @ =0x000002c5
- adds r0, r1, r2
- ldrb r2, [r0]
- movs r0, 0x64
- muls r0, r2
- ldr r2, _081335FC @ =gPlayerParty
- adds r0, r2
- adds r1, 0x20
- bl GetMoveRelearnerMoves
- ldr r1, [r5]
- strb r0, [r1, 0x1A]
- movs r4, 0
- ldr r0, [r5]
- ldrb r0, [r0, 0x1A]
- cmp r4, r0
- bge _081335AA
- adds r6, r5, 0
- movs r5, 0x52
-_08133586:
- lsls r2, r4, 1
- ldr r1, [r6]
- adds r0, r1, r5
- adds r1, 0x20
- adds r1, r2
- ldrh r2, [r1]
- movs r1, 0xD
- muls r1, r2
- ldr r2, _08133600 @ =gMoveNames
- adds r1, r2
- bl StringCopy
- adds r5, 0x19
- adds r4, 0x1
- ldr r0, [r6]
- ldrb r0, [r0, 0x1A]
- cmp r4, r0
- blt _08133586
-_081335AA:
- ldr r4, _081335F4 @ =gUnknown_030007B0
- ldr r0, [r4]
- ldr r1, _081335F8 @ =0x000002c5
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081335FC @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r0, _08133604 @ =gStringVar1
- mov r1, sp
- bl StringCopy10
- ldr r0, [r4]
- ldrb r2, [r0, 0x1A]
- lsls r1, r2, 1
- adds r1, r2
- lsls r1, 3
- adds r1, r2
- adds r1, 0x52
- adds r0, r1
- ldr r1, _08133608 @ =gUnknownText_Exit
- bl StringCopy
- ldr r1, [r4]
- ldrb r0, [r1, 0x1A]
- adds r0, 0x1
- strb r0, [r1, 0x1A]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_081335F4: .4byte gUnknown_030007B0
-_081335F8: .4byte 0x000002c5
-_081335FC: .4byte gPlayerParty
-_08133600: .4byte gMoveNames
-_08133604: .4byte gStringVar1
-_08133608: .4byte gUnknownText_Exit
- thumb_func_end sub_8133558
-
- thumb_func_start sub_813360C
-sub_813360C: @ 813360C
- lsls r0, 24
- ldr r3, _08133628 @ =gUnknown_030007B0
- ldr r2, [r3]
- ldrb r1, [r2, 0x18]
- strb r1, [r2, 0x1C]
- ldr r1, [r3]
- lsrs r0, 24
- ldrb r2, [r1, 0x18]
- adds r0, r2
- strb r0, [r1, 0x18]
- ldr r1, [r3]
- movs r0, 0x1
- strb r0, [r1, 0x1D]
- bx lr
- .align 2, 0
-_08133628: .4byte gUnknown_030007B0
- thumb_func_end sub_813360C
-
- thumb_func_start sub_813362C
-sub_813362C: @ 813362C
- push {r4,r5,lr}
- ldr r2, _08133670 @ =gMain
- ldrh r1, [r2, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08133688
- ldr r4, _08133674 @ =gUnknown_030007B0
- ldr r0, [r4]
- ldrb r0, [r0, 0x1B]
- cmp r0, 0
- bne _08133646
- b _08133796
-_08133646:
- movs r0, 0x5
- bl PlaySE
- ldr r1, [r4]
- ldrb r0, [r1, 0x1B]
- subs r0, 0x1
- strb r0, [r1, 0x1B]
- ldr r0, [r4]
- ldr r1, _08133678 @ =0x000002c3
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, [r4]
- ldrb r0, [r1, 0x18]
- cmp r0, 0
- beq _0813367C
- movs r0, 0x1
- negs r0, r0
- bl sub_813360C
- b _08133796
- .align 2, 0
-_08133670: .4byte gMain
-_08133674: .4byte gUnknown_030007B0
-_08133678: .4byte 0x000002c3
-_0813367C:
- ldrb r0, [r1, 0x19]
- cmp r0, 0
- bne _08133684
- b _08133796
-_08133684:
- subs r0, 0x1
- b _081336DC
-_08133688:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081336E8
- ldr r4, _081336C8 @ =gUnknown_030007B0
- ldr r0, [r4]
- ldrb r1, [r0, 0x1B]
- ldrb r0, [r0, 0x1A]
- subs r0, 0x1
- cmp r1, r0
- blt _081336A0
- b _08133796
-_081336A0:
- movs r0, 0x5
- bl PlaySE
- ldr r1, [r4]
- ldrb r0, [r1, 0x1B]
- adds r0, 0x1
- strb r0, [r1, 0x1B]
- ldr r0, [r4]
- ldr r3, _081336CC @ =0x000002c3
- adds r0, r3
- movs r1, 0x1
- strb r1, [r0]
- ldr r1, [r4]
- ldrb r0, [r1, 0x18]
- cmp r0, 0x2
- beq _081336D0
- movs r0, 0x1
- bl sub_813360C
- b _08133796
- .align 2, 0
-_081336C8: .4byte gUnknown_030007B0
-_081336CC: .4byte 0x000002c3
-_081336D0:
- ldrb r2, [r1, 0x19]
- ldrb r0, [r1, 0x1A]
- subs r0, 0x3
- cmp r2, r0
- beq _08133796
- adds r0, r2, 0x1
-_081336DC:
- strb r0, [r1, 0x19]
- ldr r1, [r4]
- ldrb r0, [r1, 0x1E]
- adds r0, 0x1
- strb r0, [r1, 0x1E]
- b _08133796
-_081336E8:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0813376C
- movs r0, 0x5
- bl PlaySE
- ldr r5, _08133738 @ =gUnknown_030007B0
- ldr r2, [r5]
- ldrb r1, [r2, 0x1B]
- ldrb r0, [r2, 0x1A]
- subs r0, 0x1
- cmp r1, r0
- beq _08133748
- movs r0, 0x8
- strb r0, [r2]
- ldr r0, _0813373C @ =gStringVar2
- ldr r1, [r5]
- ldrb r3, [r1, 0x1B]
- lsls r2, r3, 1
- adds r2, r3
- lsls r2, 3
- adds r2, r3
- adds r2, 0x52
- adds r1, r2
- bl StringCopy
- ldr r4, _08133740 @ =gStringVar4
- ldr r1, _08133744 @ =gOtherText_TeachSpecificMove
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrintMessage
- b _08133796
- .align 2, 0
-_08133738: .4byte gUnknown_030007B0
-_0813373C: .4byte gStringVar2
-_08133740: .4byte gStringVar4
-_08133744: .4byte gOtherText_TeachSpecificMove
-_08133748:
- ldr r4, _08133764 @ =gStringVar4
- ldr r1, _08133768 @ =gOtherText_GiveUpTeachingMove
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrintMessage
- ldr r1, [r5]
- movs r0, 0xC
- strb r0, [r1]
- b _08133796
- .align 2, 0
-_08133764: .4byte gStringVar4
-_08133768: .4byte gOtherText_GiveUpTeachingMove
-_0813376C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08133796
- movs r0, 0x5
- bl PlaySE
- ldr r0, _081337D4 @ =gUnknown_030007B0
- ldr r1, [r0]
- movs r0, 0xC
- strb r0, [r1]
- ldr r4, _081337D8 @ =gStringVar4
- ldr r1, _081337DC @ =gOtherText_GiveUpTeachingMove
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r4, 0
- movs r1, 0x3
- movs r2, 0xF
- bl MenuPrintMessage
-_08133796:
- ldr r0, _081337D4 @ =gUnknown_030007B0
- ldr r4, [r0]
- ldrb r0, [r4, 0x1A]
- cmp r0, 0x3
- bls _081337F8
- ldr r3, _081337E0 @ =gSprites
- adds r5, r3, 0
- adds r5, 0xC6
- ldrb r0, [r5]
- movs r1, 0x5
- negs r1, r1
- adds r2, r1, 0
- ands r2, r0
- strb r2, [r5]
- movs r0, 0x85
- lsls r0, 1
- adds r0, r3
- mov r12, r0
- ldrb r0, [r0]
- adds r3, r1, 0
- ands r3, r0
- mov r1, r12
- strb r3, [r1]
- ldrb r0, [r4, 0x19]
- cmp r0, 0
- bne _081337E4
- movs r1, 0x4
- adds r0, r2, 0
- orrs r0, r1
- strb r0, [r5]
- b _081337F8
- .align 2, 0
-_081337D4: .4byte gUnknown_030007B0
-_081337D8: .4byte gStringVar4
-_081337DC: .4byte gOtherText_GiveUpTeachingMove
-_081337E0: .4byte gSprites
-_081337E4:
- ldrb r1, [r4, 0x19]
- ldrb r0, [r4, 0x1A]
- subs r0, 0x3
- cmp r1, r0
- bne _081337F8
- movs r1, 0x4
- adds r0, r3, 0
- orrs r0, r1
- mov r3, r12
- strb r0, [r3]
-_081337F8:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_813362C
-
- thumb_func_start sub_8133800
-sub_8133800: @ 8133800
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r1, _08133834 @ =gUnknown_030007B0
- ldr r0, [r1]
- ldrb r6, [r0, 0x19]
- ldr r3, _08133838 @ =gTileBuffer
- mov r10, r1
- ldr r0, _0813383C @ =gBattleMoves
- mov r9, r0
- movs r1, 0x2
- mov r8, r1
-_0813381C:
- mov r4, r10
- ldr r2, [r4]
- ldrb r0, [r2, 0x1A]
- cmp r6, r0
- bcc _08133844
- adds r0, r3, 0
- ldr r1, _08133840 @ =gEmptyString_81E72B0
- movs r2, 0x90
- movs r3, 0
- bl sub_8072C74
- b _081338FA
- .align 2, 0
-_08133834: .4byte gUnknown_030007B0
-_08133838: .4byte gTileBuffer
-_0813383C: .4byte gBattleMoves
-_08133840: .4byte gEmptyString_81E72B0
-_08133844:
- ldrb r0, [r2, 0x1A]
- subs r0, 0x1
- cmp r6, r0
- bne _08133860
- adds r0, r3, 0
- ldr r1, _0813385C @ =gUnknownText_Exit
- movs r2, 0x90
- movs r3, 0
- bl sub_8072C74
- b _081338FA
- .align 2, 0
-_0813385C: .4byte gUnknownText_Exit
-_08133860:
- lsls r1, r6, 1
- adds r0, r2, 0
- adds r0, 0x20
- adds r0, r1
- ldrh r5, [r0]
- movs r4, 0xB1
- lsls r4, 2
- adds r0, r2, r4
- ldrb r0, [r0]
- adds r7, r1, 0
- cmp r0, 0
- beq _081338A4
- ldr r1, _0813389C @ =gContestMoves
- lsls r0, r5, 3
- adds r0, r1
- ldrb r0, [r0, 0x1]
- lsls r0, 29
- lsrs r0, 27
- ldr r1, _081338A0 @ =gUnknown_083CAF70
- adds r0, r1
- ldr r1, [r0]
- adds r0, r3, 0
- movs r2, 0x27
- movs r3, 0
- bl sub_8072C74
- adds r3, r0, 0
- lsls r4, r5, 1
- b _081338C2
- .align 2, 0
-_0813389C: .4byte gContestMoves
-_081338A0: .4byte gUnknown_083CAF70
-_081338A4:
- lsls r4, r5, 1
- adds r0, r4, r5
- lsls r0, 2
- add r0, r9
- ldrb r0, [r0, 0x2]
- lsls r1, r0, 3
- subs r1, r0
- ldr r0, _08133938 @ =gTypeNames
- adds r1, r0
- adds r0, r3, 0
- movs r2, 0x27
- movs r3, 0
- bl sub_8072C74
- adds r3, r0, 0
-_081338C2:
- adds r0, r7, r6
- lsls r0, 3
- adds r0, r6
- adds r0, 0x52
- mov r2, r10
- ldr r1, [r2]
- adds r1, r0
- adds r0, r3, 0
- movs r2, 0x72
- movs r3, 0
- bl sub_8072C74
- adds r3, r0, 0
- movs r0, 0xCA
- strb r0, [r3]
- strb r0, [r3, 0x1]
- movs r0, 0xBA
- strb r0, [r3, 0x2]
- adds r3, 0x3
- adds r0, r4, r5
- lsls r0, 2
- add r0, r9
- ldrb r1, [r0, 0x4]
- adds r0, r3, 0
- movs r2, 0x90
- movs r3, 0
- bl sub_8072C14
-_081338FA:
- adds r3, r0, 0
- movs r0, 0xFE
- strb r0, [r3]
- adds r3, 0x1
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0x1
- negs r4, r4
- add r8, r4
- mov r0, r8
- cmp r0, 0
- blt _08133916
- b _0813381C
-_08133916:
- movs r0, 0xFF
- strb r0, [r3]
- ldr r0, _0813393C @ =gTileBuffer
- movs r1, 0xB
- movs r2, 0x1
- bl MenuPrint
- movs r0, 0
- bl sub_813360C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08133938: .4byte gTypeNames
-_0813393C: .4byte gTileBuffer
- thumb_func_end sub_8133800
-
- thumb_func_start sub_8133940
-sub_8133940: @ 8133940
- push {r4-r7,lr}
- sub sp, 0x34
- adds r4, r1, 0
- lsls r0, 16
- lsrs r5, r0, 16
- ldr r1, _08133968 @ =gExpandedPlaceholder_Empty
- mov r0, sp
- bl StringCopy
- ldrb r0, [r4, 0x2]
- subs r0, 0x1
- cmp r0, 0x6
- bls _0813395C
- b _08133AE2
-_0813395C:
- lsls r0, 2
- ldr r1, _0813396C @ =_08133970
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08133968: .4byte gExpandedPlaceholder_Empty
-_0813396C: .4byte _08133970
- .align 2, 0
-_08133970:
- .4byte _08133AE2
- .4byte _0813398C
- .4byte _08133AE2
- .4byte _081339A4
- .4byte _08133AE2
- .4byte _081339E4
- .4byte _08133A64
-_0813398C:
- ldr r0, _081339A0 @ =gBattleMoves
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x1]
- cmp r0, 0x1
- bls _081339B4
- ldrb r1, [r1, 0x1]
- b _081339CE
- .align 2, 0
-_081339A0: .4byte gBattleMoves
-_081339A4:
- ldr r0, _081339C4 @ =gBattleMoves
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x3]
- cmp r0, 0
- bne _081339CC
-_081339B4:
- ldr r1, _081339C8 @ =gOtherText_ThreeDashes2
- mov r0, sp
- movs r2, 0x20
- movs r3, 0x2
- bl sub_8072C74
- b _081339D8
- .align 2, 0
-_081339C4: .4byte gBattleMoves
-_081339C8: .4byte gOtherText_ThreeDashes2
-_081339CC:
- ldrb r1, [r1, 0x3]
-_081339CE:
- mov r0, sp
- movs r2, 0x20
- movs r3, 0x2
- bl sub_8072C14
-_081339D8:
- ldrb r1, [r4]
- ldrb r2, [r4, 0x1]
- mov r0, sp
- bl MenuPrint
- b _08133AE2
-_081339E4:
- ldrb r2, [r4]
- ldrb r1, [r4, 0x1]
- adds r3, r1, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r2, 0
- bl MenuZeroFillWindowRect
- ldr r2, _08133A34 @ =gContestEffects
- ldr r1, _08133A38 @ =gContestMoves
- lsls r0, r5, 3
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xFF
- bne _08133A14
- movs r5, 0
-_08133A14:
- movs r4, 0
- ldr r7, _08133A3C @ =gUnknown_030007B0
- ldr r6, _08133A40 @ =gSprites
-_08133A1A:
- cmp r4, r5
- bcs _08133A44
- ldr r0, [r7]
- adds r0, r4
- ldrb r1, [r0, 0x7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x1
- bl StartSpriteAnim
- b _08133A58
- .align 2, 0
-_08133A34: .4byte gContestEffects
-_08133A38: .4byte gContestMoves
-_08133A3C: .4byte gUnknown_030007B0
-_08133A40: .4byte gSprites
-_08133A44:
- ldr r0, [r7]
- adds r0, r4
- ldrb r1, [r0, 0x7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0
- bl StartSpriteAnim
-_08133A58:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _08133A1A
- b _08133AE2
-_08133A64:
- ldrb r2, [r4]
- ldrb r1, [r4, 0x1]
- adds r3, r1, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r2, 0
- bl MenuZeroFillWindowRect
- ldr r2, _08133AB4 @ =gContestEffects
- ldr r1, _08133AB8 @ =gContestMoves
- lsls r0, r5, 3
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x2]
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xFF
- bne _08133A94
- movs r5, 0
-_08133A94:
- movs r4, 0
- ldr r7, _08133ABC @ =gUnknown_030007B0
- ldr r6, _08133AC0 @ =gSprites
-_08133A9A:
- cmp r4, r5
- bcs _08133AC4
- ldr r0, [r7]
- adds r0, r4
- ldrb r1, [r0, 0xF]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x3
- bl StartSpriteAnim
- b _08133AD8
- .align 2, 0
-_08133AB4: .4byte gContestEffects
-_08133AB8: .4byte gContestMoves
-_08133ABC: .4byte gUnknown_030007B0
-_08133AC0: .4byte gSprites
-_08133AC4:
- ldr r0, [r7]
- adds r0, r4
- ldrb r1, [r0, 0xF]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- movs r1, 0x2
- bl StartSpriteAnim
-_08133AD8:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x7
- bls _08133A9A
-_08133AE2:
- add sp, 0x34
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8133940
-
- thumb_func_start sub_8133AEC
-sub_8133AEC: @ 8133AEC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r6, _08133B88 @ =gUnknown_030007B0
- ldr r2, [r6]
- ldrb r1, [r2, 0x1B]
- ldrb r0, [r2, 0x1A]
- subs r0, 0x1
- cmp r1, r0
- bne _08133B08
- b _08133C04
-_08133B08:
- lsls r1, 1
- adds r0, r2, 0
- adds r0, 0x20
- adds r0, r1
- ldrh r5, [r0]
- cmp r3, 0
- beq _08133BA0
- movs r4, 0
- lsls r0, r5, 3
- mov r8, r0
- ldr r7, _08133B8C @ =gSprites
- adds r3, r6, 0
- movs r6, 0x5
- negs r6, r6
-_08133B24:
- ldr r0, [r3]
- adds r0, r4
- ldrb r0, [r0, 0x7]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- adds r1, 0x3E
- ldrb r2, [r1]
- adds r0, r6, 0
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xF
- bls _08133B24
- movs r4, 0
-_08133B48:
- ldr r0, _08133B90 @ =gUnknown_08402E3D
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r1, r0, 1
- adds r1, r0
- ldr r0, _08133B94 @ =gUnknown_08402E24
- adds r1, r0
- adds r0, r5, 0
- bl sub_8133940
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x2
- bls _08133B48
- ldr r1, _08133B98 @ =gUnknown_083CADD4
- ldr r0, _08133B9C @ =gContestMoves
- add r0, r8
- ldrb r0, [r0]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x20
- str r1, [sp]
- movs r1, 0x1
- str r1, [sp, 0x4]
- movs r1, 0x58
- movs r2, 0x48
- movs r3, 0x90
- bl sub_8072AB0
- b _08133C92
- .align 2, 0
-_08133B88: .4byte gUnknown_030007B0
-_08133B8C: .4byte gSprites
-_08133B90: .4byte gUnknown_08402E3D
-_08133B94: .4byte gUnknown_08402E24
-_08133B98: .4byte gUnknown_083CADD4
-_08133B9C: .4byte gContestMoves
-_08133BA0:
- movs r4, 0
- subs r6, r5, 0x1
-_08133BA4:
- ldr r0, _08133BF8 @ =gUnknown_08402E39
- adds r0, r4, r0
- ldrb r0, [r0]
- lsls r1, r0, 1
- adds r1, r0
- ldr r0, _08133BFC @ =gUnknown_08402E24
- adds r1, r0
- adds r0, r5, 0
- bl sub_8133940
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _08133BA4
- ldr r1, _08133C00 @ =gMoveDescriptions
- lsls r0, r6, 2
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0x58
- movs r2, 0x48
- movs r3, 0x90
- bl sub_8072A18
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bhi _08133C92
- lsls r1, r0, 25
- movs r0, 0x90
- lsls r0, 20
- adds r1, r0
- lsrs r1, 24
- movs r0, 0xB
- movs r2, 0x1C
- movs r3, 0xC
- bl MenuFillWindowRectWithBlankTile
- b _08133C92
- .align 2, 0
-_08133BF8: .4byte gUnknown_08402E39
-_08133BFC: .4byte gUnknown_08402E24
-_08133C00: .4byte gMoveDescriptions
-_08133C04:
- cmp r3, 0
- beq _08133C5C
- ldr r4, _08133C54 @ =gUnknown_08402E24
- ldrb r2, [r4, 0xF]
- ldrb r1, [r4, 0x10]
- adds r3, r1, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r2, 0
- bl MenuZeroFillWindowRect
- ldrb r2, [r4, 0x12]
- ldrb r1, [r4, 0x13]
- adds r3, r1, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r2, 0
- bl MenuZeroFillWindowRect
- movs r4, 0
- ldr r5, _08133C58 @ =gSprites
- adds r3, r6, 0
- movs r2, 0x4
-_08133C32:
- ldr r0, [r3]
- adds r0, r4
- ldrb r1, [r0, 0x7]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0xF
- bls _08133C32
- b _08133C86
- .align 2, 0
-_08133C54: .4byte gUnknown_08402E24
-_08133C58: .4byte gSprites
-_08133C5C:
- ldr r4, _08133CA0 @ =gUnknown_08402E24
- ldrb r0, [r4, 0x3]
- ldrb r1, [r4, 0x4]
- adds r2, r0, 0x3
- lsls r2, 24
- lsrs r2, 24
- adds r3, r1, 0x1
- lsls r3, 24
- lsrs r3, 24
- bl MenuZeroFillWindowRect
- ldrb r0, [r4, 0x9]
- ldrb r1, [r4, 0xA]
- adds r2, r0, 0x3
- lsls r2, 24
- lsrs r2, 24
- adds r3, r1, 0x1
- lsls r3, 24
- lsrs r3, 24
- bl MenuZeroFillWindowRect
-_08133C86:
- movs r0, 0xB
- movs r1, 0x9
- movs r2, 0x1C
- movs r3, 0xC
- bl MenuZeroFillWindowRect
-_08133C92:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08133CA0: .4byte gUnknown_08402E24
- thumb_func_end sub_8133AEC
-
- thumb_func_start sub_8133CA4
-sub_8133CA4: @ 8133CA4
- push {lr}
- movs r0, 0x15
- movs r1, 0x7
- movs r2, 0x1B
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- ldr r0, _08133CC8 @ =gUnknown_030007B0
- ldr r0, [r0]
- movs r1, 0xB1
- lsls r1, 2
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_8133AEC
- pop {r0}
- bx r0
- .align 2, 0
-_08133CC8: .4byte gUnknown_030007B0
- thumb_func_end sub_8133CA4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/macros/event.inc b/asm/macros/event.inc
index cd2927c66..960b300b7 100644
--- a/asm/macros/event.inc
+++ b/asm/macros/event.inc
@@ -1,10 +1,10 @@
@ Does nothing.
- .macro snop
+ .macro nop
.byte 0x00
.endm
@ Does nothing.
- .macro snop1
+ .macro nop1
.byte 0x01
.endm
@@ -25,27 +25,27 @@
.endm
@ Jumps to destination and continues script execution from there.
- .macro jump destination
+ .macro goto destination
.byte 0x05
.4byte \destination
.endm
@ If the result of the last comparison matches condition (see Comparison operators), jumps to destination and continues script execution from there.
- .macro jumpif condition, destination
+ .macro goto_if condition, destination
.byte 0x06
.byte \condition
.4byte \destination
.endm
@ If the result of the last comparison matches condition (see Comparison operators), calls destination.
- .macro callif condition, destination
+ .macro call_if condition, destination
.byte 0x07
.byte \condition
.4byte \destination
.endm
@ Jumps to the standard function at index function.
- .macro jumpstd function
+ .macro gotostd function
.byte 0x08
.byte \function
.endm
@@ -57,58 +57,58 @@
.endm
@ If the result of the last comparison matches condition (see Comparison operators), jumps to the standard function at index function.
- .macro jumpstdif condition, function
+ .macro gotostd_if condition, function
.byte 0x0a
.byte \condition
.byte \function
.endm
@ If the result of the last comparison matches condition (see Comparison operators), calls the standard function at index function.
- .macro callstdif condition, function
+ .macro callstd_if condition, function
.byte 0x0b
.byte \condition
.byte \function
.endm
@ Executes a script stored in a default RAM location.
- .macro jumpram
+ .macro gotoram
.byte 0x0c
.endm
@ Terminates script execution and "resets the script RAM".
- .macro die
+ .macro killscript
.byte 0x0d
.endm
- @ Pads the specified value to a dword, and then writes that dword to a predefined address (0x0203AAA8).
- .macro setbyte value
+ @ Sets mystery event status
+ .macro setmysteryeventstatus value
.byte 0x0e
.byte \value
.endm
- @ Sets the specified script bank to value.
- .macro loadptr destination, value
+ @ Sets the specified script bank to immediate value.
+ .macro loadword destination, value
.byte 0x0f
.byte \destination
.4byte \value
.endm
- @ Sets the specified script bank to value.
- .macro setbufferbyte destination, value
+ @ Sets the specified script bank to immediate value.
+ .macro loadbyte destination, value
.byte 0x10
.byte \destination
.byte \value
.endm
@ Sets the byte at offset to value.
- .macro writebytetooffset value, offset
+ .macro writebytetoaddr value, offset
.byte 0x11
.byte \value
.4byte \offset
.endm
@ Copies the byte value at source into the specified script bank.
- .macro loadbytefrompointer destination, source
+ .macro loadbytefromaddr destination, source
.byte 0x12
.byte \destination
.4byte \source
@@ -122,7 +122,7 @@
.endm
@ Copies the contents of bank source into bank destination.
- .macro copybuffers destination, source
+ .macro copylocal destination, source
.byte 0x14
.byte \destination
.byte \source
@@ -171,71 +171,83 @@
.endm
@ Compares the values of script banks a and b, after forcing the values to bytes.
- .macro comparebuffers byte1, byte2
+ .macro compare_local_to_local byte1, byte2
.byte 0x1b
.byte \byte1
.byte \byte2
.endm
@ Compares the least-significant byte of the value of script bank a to a fixed byte value (b).
- .macro comparebuffertobyte a, b
+ .macro compare_local_to_value a, b
.byte 0x1c
.byte \a
.byte \b
.endm
@ Compares the least-significant byte of the value of script bank a to the byte located at offset b.
- .macro comparebuffertoptrbyte a, b
+ .macro compare_local_to_addr a, b
.byte 0x1d
.byte \a
.4byte \b
.endm
@ Compares the byte located at offset a to the least-significant byte of the value of script bank b.
- .macro compareptrbytetobuffer a, b
+ .macro compare_addr_to_local a, b
.byte 0x1e
.4byte \a
.byte \b
.endm
@ Compares the byte located at offset a to a fixed byte value (b).
- .macro compareptrbytetobyte a, b
+ .macro compare_addr_to_value a, b
.byte 0x1f
.4byte \a
.byte \b
.endm
@ Compares the byte located at offset a to the byte located at offset b.
- .macro compareptrbytes a, b
+ .macro compare_addr_to_addr a, b
.byte 0x20
.4byte \a
.4byte \b
.endm
@ Compares the value of `var` to a fixed word value (b).
- .macro compare var, value
+ .macro compare_var_to_value var, value
.byte 0x21
.2byte \var
.2byte \value
.endm
@ Compares the value of `var` to the value of `var2`.
- .macro comparevars var1, var2
+ .macro compare_var_to_var var1, var2
.byte 0x22
.2byte \var1
.2byte \var2
.endm
- @ Calls the ASM routine stored at code. Script execution is blocked until the ASM returns (bx lr, mov pc, lr, etc.). Remember to add 1 to the offset when calling THUMB code.
- .macro callasm code
+ @ Generic compare macro which attempts to deduce argument types based on their values
+ @ Any values between 0x4000 to 0x4FFF and 0x8000 to 0x8FFF are considered event variable identifiers
+ .macro compare arg1, arg2
+ .if ((\arg1 >> 12) == 4 || (\arg1 >> 12) == 8) && ((\arg2 >> 12) == 4 || (\arg2 >> 12) == 8)
+ compare_var_to_var \arg1, \arg2
+ .elseif ((\arg1 >> 12) == 4 || (\arg1 >> 12) == 8) && (\arg2 >= 0 && \arg2 <= 0xFFFF)
+ compare_var_to_value \arg1, \arg2
+ .else
+ .error "Invalid arguments for 'compare'"
+ .endif
+ .endm
+
+ @ Calls the native C function stored at `func`.
+ .macro callnative func
.byte 0x23
- .4byte \code
+ .4byte \func
.endm
- @ Replaces a pointer in the script engine RAM with asm_pointer.
- .macro jumpasm asm_pointer
+ @ Replaces the script with the function stored at `func`. Execution returns to the bytecode script when func returns TRUE.
+ .macro gotonative func
.byte 0x24
- .4byte \asm_pointer
+ .4byte \func
.endm
@ Calls a special function; that is, a piece of ASM code designed for use by scripts and listed in a table of pointers.
@@ -245,7 +257,7 @@
.endm
@ Calls a special function. That function's output (if any) will be written to the variable you specify.
- .macro specialval output, function
+ .macro specialvar output, function
.byte 0x26
.2byte \output
.2byte SPECIAL_\function
@@ -257,7 +269,7 @@
.endm
@ Blocks script execution for time (frames? milliseconds?).
- .macro pause time
+ .macro delay time
.byte 0x28
.2byte \time
.endm
@@ -281,33 +293,35 @@
.endm
@ In FireRed, this command is a nop.
- .macro compareflags
+ .macro initclock hour minute
.byte 0x2c
+ .byte \hour
+ .byte \minute
.endm
@ In FireRed, this command is a nop.
- .macro checkdailyflags
+ .macro dodailyevents
.byte 0x2d
.endm
@ Resets the values of variables 0x8000, 0x8001, and 0x8002. Related to RTC in RSE?
- .macro resetvars
+ .macro gettime
.byte 0x2e
.endm
@ Plays the specified (sound_number) sound. Only one sound may play at a time, with newer ones interrupting older ones.
- .macro playsfx sound_number
+ .macro playse sound_number
.byte 0x2f
.2byte \sound_number
.endm
@ Blocks script execution until the currently-playing sound (triggered by sound) finishes playing.
- .macro checksound
+ .macro waitse
.byte 0x30
.endm
@ Plays the specified (fanfare_number) fanfare.
- .macro fanfare fanfare_number
+ .macro playfanfare fanfare_number
.byte 0x31
.2byte \fanfare_number
.endm
@@ -318,37 +332,37 @@
.endm
@ Plays the specified (song_number) song. The byte is apparently supposed to be 0x00.
- .macro playmusic song_number, unknown
+ .macro playbgm song_number, unknown
.byte 0x33
.2byte \song_number
.byte \unknown
.endm
@ Plays the specified (song_number) song.
- .macro playmusicbattle song_number
+ .macro savebgm song_number
.byte 0x34
.2byte \song_number
.endm
@ Crossfades the currently-playing song into the map's default song.
- .macro fadedefault
+ .macro fadedefaultbgm
.byte 0x35
.endm
@ Crossfades the currently-playng song into the specified (song_number) song.
- .macro fademusic song_number
+ .macro fadenewbgm song_number
.byte 0x36
.2byte \song_number
.endm
@ Fades out the currently-playing song.
- .macro fadeout speed
+ .macro fadeoutbgm speed
.byte 0x37
.byte \speed
.endm
@ Fades the currently-playing song back in.
- .macro fadein speed
+ .macro fadeinbgm speed
.byte 0x38
.byte \speed
.endm
@@ -363,7 +377,7 @@
.endm
@ Clone of warp that does not play a sound effect.
- .macro warpmuted map, warp, X, Y
+ .macro warpsilent map, warp, X, Y
.byte 0x3a
map \map
.byte \warp
@@ -372,7 +386,7 @@
.endm
@ Clone of warp that uses "a walking effect".
- .macro warpwalk map, warp, X, Y
+ .macro warpdoor map, warp, X, Y
.byte 0x3b
map \map
.byte \warp
@@ -396,7 +410,7 @@
.endm
@ Clone of warp. Used by an (unused?) Safari Zone script to return the player to the gatehouse and end the Safari Game.
- .macro warp3 map, warp, X, Y
+ .macro setwarp map, warp, X, Y
.byte 0x3e
map \map
.byte \warp
@@ -405,7 +419,7 @@
.endm
@ Sets a default warp place. If a warp tries to send the player to Warp 127 on Map 127.127, they will instead be sent here. Useful when a map has warps that need to go to script-controlled locations (i.e. elevators).
- .macro warpplace map, warp, X, Y
+ .macro setdynamicwarp map, warp, X, Y
.byte 0x3f
map \map
.byte \warp
@@ -414,7 +428,7 @@
.endm
@ Clone of warp3, except that this writes data to different offsets...
- .macro warp4 map, warp, X, Y
+ .macro setdivewarp map, warp, X, Y
.byte 0x40
map \map
.byte \warp
@@ -423,7 +437,7 @@
.endm
@ Clone of warp3, except that this writes data to different offsets...
- .macro warp5 map, warp, X, Y
+ .macro setholewarp map, warp, X, Y
.byte 0x41
map \map
.byte \warp
@@ -504,7 +518,7 @@
.endm
@ In FireRed, this command is a nop. (The argument is read, but not used for anything.)
- .macro testdecor a
+ .macro hasdecor a
.byte 0x4d
.2byte \a
.endm
@@ -516,148 +530,146 @@
.endm
@ Applies the movement data at movements to the specified (index) Person event. Also closes any standard message boxes that are still open.
- .macro move index, movements
- .byte 0x4f
- .2byte \index
- .4byte \movements
- .endm
-
- @ Apparent clone of applymovement. Oddly, it doesn't seem to work at all if applied to any Person other than the player (0xFF), and the X and Y arguments don't seem to do anything.
@ This command in fact uses variables to access the Person event ID. So, for example, if you setvar 0x8000 to 0x3, and then use applymovementpos 0x8000 @move1, Person event 3 will have the movements at @move1 applied to them. Thank you Shiny Quagsire for bringing this to my attention.
- .macro movecoords variable, movements, x, y
- .byte 0x50
- .2byte \variable
- .4byte \movements
- .byte \x
- .byte \y
+ .macro applymovement index, movements, mapGroup, mapNum
+ .ifb \mapGroup
+ .byte 0x4f
+ .2byte \index
+ .4byte \movements
+ .else
+ .byte 0x50
+ .2byte \index
+ .4byte \movements
+ .byte \mapGroup
+ .byte \mapNum
+ .endif
.endm
@ Blocks script execution until the movements being applied to the specified (index) Person event finish. If the specified Person event is 0x0000, then the command will block script execution until all Person events affected by applymovement finish their movements. If the specified Person event is not currently being manipulated with applymovement, then this command does nothing.
- .macro waitmove index
- .byte 0x51
- .2byte \index
- .endm
-
- @ Apparent clone of waitmovement. Oddly, it doesn't seem to work at all if applied to any Person other than the player (0xFF), and the X and Y arguments don't seem to do anything.
- .macro waitmovexy index, X, Y
- .byte 0x52
- .2byte \index
- .byte \X
- .byte \Y
- .endm
-
- @ Attempts to hide the specified (local_ID, a local ID) Person event on the current map, by setting its visibility flag if it has a valid one. If the Person does not have a valid visibility flag, this command does nothing.
- .macro disappear local_ID
- .byte 0x53
- .2byte \local_ID
- .endm
-
- @ Clone of hidesprite that also moves the Person? Test it!
- .macro disappearxy index, X, Y
- .byte 0x54
- .2byte \index
- .byte \X
- .byte \Y
- .endm
-
- .macro reappear word
- .byte 0x55
- .2byte \word
- .endm
-
- .macro reappearxy word, byte1, byte2
- .byte 0x56
- .2byte \word
- .byte \byte1
- .byte \byte2
- .endm
-
- .macro movesprite word1, word2, word3
- .byte 0x57
- .2byte \word1
- .2byte \word2
- .2byte \word3
- .endm
-
- .macro spritevisible word, byte1, byte2
- .byte 0x58
- .2byte \word
- .byte \byte1
- .byte \byte2
- .endm
-
- .macro spriteinvisible word, byte1, byte2
- .byte 0x59
- .2byte \word
- .byte \byte1
- .byte \byte2
+ .macro waitmovement index, mapBank, mapNum
+ .ifb \mapBank
+ .byte 0x51
+ .2byte \index
+ .else
+ .byte 0x52
+ .2byte \index
+ .byte \mapBank
+ .byte \mapNum
+ .endif
+ .endm
+
+ @ Attempts to hide the specified (local_ID, a local ID) Person event on the specified map, by setting its visibility flag if it has a valid one. If the Person does not have a valid visibility flag, this command does nothing.
+ @ If no map is specified, then the current map is used
+ .macro removeobject localId, mapGroup, mapNum
+ .ifb \mapGroup
+ .byte 0x53
+ .2byte \localId
+ .else
+ .byte 0x54
+ .2byte \localId
+ .byte \mapGroup
+ .byte \mapNum
+ .endif
+ .endm
+
+ .macro addobject localId, mapGroup, mapNum
+ .ifb \mapGroup
+ .byte 0x55
+ .2byte \localId
+ .else
+ .byte 0x56
+ .2byte \localId
+ .byte \mapGroup
+ .byte \mapNum
+ .endif
+ .endm
+
+ .macro setobjectxy word1, word2, word3
+ .byte 0x57
+ .2byte \word1
+ .2byte \word2
+ .2byte \word3
+ .endm
+
+ .macro showobject word, byte1, byte2
+ .byte 0x58
+ .2byte \word
+ .byte \byte1
+ .byte \byte2
+ .endm
+
+ .macro hideobject word, byte1, byte2
+ .byte 0x59
+ .2byte \word
+ .byte \byte1
+ .byte \byte2
.endm
@ If the script was called by a Person event, then that Person will turn to face toward the tile that the player is stepping off of.
.macro faceplayer
- .byte 0x5a
+ .byte 0x5a
.endm
- .macro spriteface word, byte
- .byte 0x5b
- .2byte \word
- .byte \byte
+ .macro turnobject word, byte
+ .byte 0x5b
+ .2byte \word
+ .byte \byte
.endm
@ If the Trainer flag for Trainer index is not set, this command does absolutely nothing.
.macro trainerbattle type, trainer, word, pointer1, pointer2, pointer3, pointer4
- .byte 0x5c
- .byte \type
- .2byte \trainer
- .2byte \word
- .if \type == 0
- .4byte \pointer1 @ text
- .4byte \pointer2 @ text
- .elseif \type == 1
- .4byte \pointer1 @ text
- .4byte \pointer2 @ text
- .4byte \pointer3 @ event script
- .elseif \type == 2
- .4byte \pointer1 @ text
- .4byte \pointer2 @ text
- .4byte \pointer3 @ event script
- .elseif \type == 3
- .4byte \pointer1 @ text
- .elseif \type == 4
- .4byte \pointer1 @ text
- .4byte \pointer2 @ text
- .4byte \pointer3 @ text
- .elseif \type == 5
- .4byte \pointer1 @ text
- .4byte \pointer2 @ text
- .elseif \type == 6
- .4byte \pointer1 @ text
- .4byte \pointer2 @ text
- .4byte \pointer3 @ text
- .4byte \pointer4 @ event script
- .elseif \type == 7
- .4byte \pointer1 @ text
- .4byte \pointer2 @ text
- .4byte \pointer3 @ text
- .elseif \type == 8
- .4byte \pointer1 @ text
- .4byte \pointer2 @ text
- .4byte \pointer3 @ text
- .4byte \pointer4 @ event script
- .endif
+ .byte 0x5c
+ .byte \type
+ .2byte \trainer
+ .2byte \word
+ .if \type == 0
+ .4byte \pointer1 @ text
+ .4byte \pointer2 @ text
+ .elseif \type == 1
+ .4byte \pointer1 @ text
+ .4byte \pointer2 @ text
+ .4byte \pointer3 @ event script
+ .elseif \type == 2
+ .4byte \pointer1 @ text
+ .4byte \pointer2 @ text
+ .4byte \pointer3 @ event script
+ .elseif \type == 3
+ .4byte \pointer1 @ text
+ .elseif \type == 4
+ .4byte \pointer1 @ text
+ .4byte \pointer2 @ text
+ .4byte \pointer3 @ text
+ .elseif \type == 5
+ .4byte \pointer1 @ text
+ .4byte \pointer2 @ text
+ .elseif \type == 6
+ .4byte \pointer1 @ text
+ .4byte \pointer2 @ text
+ .4byte \pointer3 @ text
+ .4byte \pointer4 @ event script
+ .elseif \type == 7
+ .4byte \pointer1 @ text
+ .4byte \pointer2 @ text
+ .4byte \pointer3 @ text
+ .elseif \type == 8
+ .4byte \pointer1 @ text
+ .4byte \pointer2 @ text
+ .4byte \pointer3 @ text
+ .4byte \pointer4 @ event script
+ .endif
.endm
@ Starts a trainer battle using the battle information stored in RAM (usually by trainerbattle, which actually calls this command behind-the-scenes), and blocks script execution until the battle finishes.
- .macro reptrainerbattle
+ .macro battlebegin
.byte 0x5d
.endm
- .macro endtrainerbattle
+ .macro ontrainerbattleend
.byte 0x5e
.endm
- .macro endtrainerbattle2
+ .macro ontrainerbattleendgoto
.byte 0x5f
.endm
@@ -668,37 +680,37 @@
.endm
@ Sets Flag (trainer + 0x500). (I didn't make a mistake. The command names actually are backwards.)
- .macro cleartrainerflag trainer
+ .macro settrainerflag trainer
.byte 0x61
.2byte \trainer
.endm
@ Clears Flag (trainer + 0x500). (I didn't make a mistake. The command names actually are backwards.)
- .macro settrainerflag trainer
+ .macro cleartrainerflag trainer
.byte 0x62
.2byte \trainer
.endm
- .macro movespriteperm word1, word2, word3
+ .macro setobjectxyperm word1, word2, word3
.byte 0x63
.2byte \word1
.2byte \word2
.2byte \word3
.endm
- .macro moveoffscreen word
+ .macro moveobjectoffscreen word
.byte 0x64
.2byte \word
.endm
- .macro spritebehave word, byte
+ .macro setobjectmovementtype word, byte
.byte 0x65
.2byte \word
.byte \byte
.endm
@ If a standard message box (or its text) is being drawn on-screen, this command blocks script execution until the box and its text have been fully drawn.
- .macro waittext
+ .macro waitmessage
.byte 0x66
.endm
@@ -709,7 +721,7 @@
.endm
@ Holds the current message box open until the player presses a key. The message box is then closed.
- .macro closebutton
+ .macro closemessage
.byte 0x68
.endm
@@ -755,7 +767,7 @@
.endm
@ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The default argument determines the initial position of the cursor when the box is first opened; it is zero-indexed, and if it is too large, it is treated as 0x00. If B is set to a non-zero value, then the user will not be allowed to back out of the multichoice with the B button.
- .macro multichoicedef X, Y, list, default, B
+ .macro multichoicedefault X, Y, list, default, B
.byte 0x70
.byte \X
.byte \Y
@@ -765,7 +777,7 @@
.endm
@ Displays a multichoice box from which the user can choose a selection, and blocks script execution until a selection is made. Lists of options are predefined and the one to be used is specified with list. The per_row argument determines how many list items will be shown on a single row of the box.
- .macro multichoicerow X, Y, list, per_row, B
+ .macro multichoicegrid X, Y, list, per_row, B
.byte 0x71
.byte \X
.byte \Y
@@ -774,7 +786,7 @@
.byte \B
.endm
- .macro showbox byte1, byte2, byte3, byte4
+ .macro drawbox byte1, byte2, byte3, byte4
.byte 0x72
.byte \byte1
.byte \byte2
@@ -782,7 +794,7 @@
.byte \byte4
.endm
- .macro hidebox byte1, byte2, byte3, byte4
+ .macro erasebox byte1, byte2, byte3, byte4
.byte 0x73
.byte \byte1
.byte \byte2
@@ -790,7 +802,7 @@
.byte \byte4
.endm
- .macro clearbox byte1, byte2, byte3, byte4
+ .macro drawboxtext byte1, byte2, byte3, byte4
.byte 0x74
.byte \byte1
.byte \byte2
@@ -799,7 +811,7 @@
.endm
@ Displays a box containing the front sprite for the specified (species) Pokmon species.
- .macro showpokepic species, X, Y
+ .macro drawpokepic species, X, Y
.byte 0x75
.2byte \species
.byte \X
@@ -807,24 +819,24 @@
.endm
@ Hides all boxes displayed with showpokepic.
- .macro hidepokepic
+ .macro erasepokepic
.byte 0x76
.endm
@ In FireRed, this command is a nop. (The argument is discarded.)
- .macro showcontestwinner a
+ .macro drawcontestwinner a
.byte 0x77
.byte \a
.endm
@ Displays the string at pointer as braille text in a standard message box. The string must be formatted to use braille characters.
- .macro braillemsg text
+ .macro braillemessage text
.byte 0x78
.4byte \text
.endm
@ Gives the player one of the specified (species) Pokmon at level level holding item. The unknown arguments should all be zeroes.
- .macro givepokemon species, level, item, unknown1, unknown2, unknown3
+ .macro givepoke species, level, item, unknown1, unknown2, unknown3
.byte 0x79
.2byte \species
.byte \level
@@ -847,68 +859,68 @@
.endm
@ Checks if at least one Pokmon in the player's party knows the specified (index) attack. If so, variable 0x800D (LASTRESULT) is set to the (zero-indexed) slot number of the Pokmon that knows the move. If not, LASTRESULT is set to 0x0006.
- .macro checkattack index
+ .macro checkpokemove index
.byte 0x7c
.2byte \index
.endm
@ Writes the name of the Pokmon at index species to the specified buffer.
- .macro bufferpoke out, species
+ .macro getspeciesname out, species
.byte 0x7d
.byte \out
.2byte \species
.endm
@ Writes the name of the first Pokmon in the player's party to the specified buffer.
- .macro bufferfirstpoke out
+ .macro getfirstpartypokename out
.byte 0x7e
.byte \out
.endm
@ Writes the name of the Pokmon in slot slot (zero-indexed) of the player's party to the specified buffer. If an empty or invalid slot is specified, ten spaces ("") are written to the buffer.
- .macro bufferpartypoke out, slot
+ .macro getpartypokename out, slot
.byte 0x7f
.byte \out
.2byte \slot
.endm
@ Writes the name of the item at index item to the specified buffer. If the specified index is larger than the number of items in the game (0x176), the name of item 0 ("????????") is buffered instead.
- .macro bufferitem out, item
+ .macro getitemname out, item
.byte 0x80
.byte \out
.2byte \item
.endm
@ In FireRed, this command is a nop. (The first argument is discarded immediately. The second argument is read, but not used for anything.)
- .macro bufferdecor a, b
+ .macro getdecorname a, b
.byte 0x81
.byte \a
.2byte \b
.endm
@ Writes the name of the attack at index attack to the specified buffer.
- .macro bufferattack out, attack
+ .macro getmovename out, attack
.byte 0x82
.byte \out
.2byte \attack
.endm
@ Converts the value of input to a decimal string, and writes that string to the specified buffer.
- .macro buffernum out, input
+ .macro getnumberstring out, input
.byte 0x83
.byte \out
.2byte \input
.endm
@ Writes the standard string identified by index to the specified buffer. Specifying an invalid standard string (e.x. 0x2B) can and usually will cause data corruption (I've observed destruction of the stored player name and crashes when entering/exiting certain menu screens).
- .macro bufferstd out, index
+ .macro getstdstring out, index
.byte 0x84
.byte \out
.2byte \index
.endm
@ Copies the string at offset to the specified buffer.
- .macro buffertext out, offset
+ .macro getstring out, offset
.byte 0x85
.byte \out
.4byte \offset
@@ -932,13 +944,13 @@
.4byte \products
.endm
- .macro pokecasino word
+ .macro playslotmachine word
.byte 0x89
.2byte \word
.endm
@ In FireRed, this command is a nop.
- .macro event_8a byte1, byte2, byte3
+ .macro plantberrytree byte1, byte2, byte3
.byte 0x8a
.byte \byte1, \byte2, \byte3
.endm
@@ -977,7 +989,7 @@
.endm
@ If check is 0x00, this command subtracts value from the player's money.
- .macro paymoney value, check
+ .macro takemoney value, check
.byte 0x91
.4byte \value
.byte \check
@@ -991,28 +1003,28 @@
.endm
@ Spawns a secondary box showing how much money the player has.
- .macro showmoney X, Y
+ .macro showmoneybox X, Y
.byte 0x93
.byte \X
.byte \Y
.endm
@ Hides the secondary box spawned by showmoney.
- .macro hidemoney X, Y
+ .macro hidemoneybox X, Y
.byte 0x94
.byte \X
.byte \Y
.endm
@ Updates the secondary box spawned by showmoney. (What does it do with its arguments?)
- .macro updatemoney X, Y
+ .macro updatemoneybox X, Y
.byte 0x95
.byte \X
.byte \Y
.endm
@ In FireRed, this command is a nop.
- .macro event_96 word
+ .macro getpricereduction word
.byte 0x96
.2byte \word
.endm
@@ -1029,36 +1041,36 @@
.byte \byte2
.endm
- .macro darken word
+ .macro setdarklevel word
.byte 0x99
.2byte \word
.endm
- .macro lighten byte
+ .macro animdarklevel byte
.byte 0x9a
.byte \byte
.endm
- .macro message2 pointer
+ .macro messageautoscroll pointer
.byte 0x9b
.4byte \pointer
.endm
@ Executes the specified field move animation.
- .macro doanimation animation
+ .macro dofieldeffect animation
.byte 0x9c
.2byte \animation
.endm
@ Tells the game which party Pokmon to use for the next field move animation.
- .macro setanimation animation, slot
+ .macro setfieldeffect animation, slot
.byte 0x9d
.byte \animation
.2byte \slot
.endm
@ Blocks script execution until all playing field move animations complete.
- .macro checkanimation animation
+ .macro waitfieldeffect animation
.byte 0x9e
.2byte \animation
.endm
@@ -1070,12 +1082,12 @@
.endm
@ Checks the player's gender. If male, then 0x0000 is stored in variable 0x800D (LASTRESULT). If female, then 0x0001 is stored in LASTRESULT.
- .macro checkgender
+ .macro checkplayergender
.byte 0xa0
.endm
@ Plays the specified (species) Pokmon's cry. You can use waitcry to block script execution until the sound finishes.
- .macro pokecry species, effect
+ .macro playpokecry species, effect
.byte 0xa1
.2byte \species
.2byte \effect
@@ -1112,12 +1124,12 @@
.byte \subroutine
.endm
- .macro setmapfooter word
+ .macro setmaplayoutindex word
.byte 0xa7
.2byte \word
.endm
- .macro spritelevelup word, byte1, byte2, byte3
+ .macro setobjectpriority word, byte1, byte2, byte3
.byte 0xa8
.2byte \word
.byte \byte1
@@ -1125,14 +1137,14 @@
.byte \byte3
.endm
- .macro restorespritelevel word, byte1, byte2
+ .macro resetobjectpriority word, byte1, byte2
.byte 0xa9
.2byte \word
.byte \byte1
.byte \byte2
.endm
- .macro createvsprite byte1, byte2, word1, word2, byte3, byte4
+ .macro createvobject byte1, byte2, word1, word2, byte3, byte4
.byte 0xaa
.byte \byte1
.byte \byte2
@@ -1142,52 +1154,52 @@
.byte \byte4
.endm
- .macro vspriteface byte1, byte2
+ .macro turnvobject byte1, byte2
.byte 0xab
.byte \byte1
.byte \byte2
.endm
@ Queues the opening of the door tile at (X, Y) with an animation.
- .macro setdooropened X, Y
+ .macro opendoor X, Y
.byte 0xac
.2byte \X
.2byte \Y
.endm
@ Queues the closing of the door tile at (X, Y) with an animation.
- .macro setdoorclosed X, Y
+ .macro closedoor X, Y
.byte 0xad
.2byte \X
.2byte \Y
.endm
@ Executes the state changes queued with setdooropened, setdoorclosed, setdooropened2, and setdoorclosed2.
- .macro doorchange
+ .macro waitdooranim
.byte 0xae
.endm
@ Queues the opening of the door tile at (X, Y) without an animation.
- .macro setdooropened2 X, Y
+ .macro setdooropen X, Y
.byte 0xaf
.2byte \X
.2byte \Y
.endm
@ Queues the closing of the door tile at (X, Y) without an animation.
- .macro setdoorclosed2 X, Y
+ .macro setdoorclosed X, Y
.byte 0xb0
.2byte \X
.2byte \Y
.endm
@ In FireRed, this command is a nop.
- .macro event_b1
+ .macro addelevmenuitem
.byte 0xb1
.endm
@ In FireRed, this command is a nop.
- .macro event_b2
+ .macro showelevmenu
.byte 0xb2
.endm
@@ -1201,7 +1213,7 @@
.2byte \word
.endm
- .macro removecoins word
+ .macro takecoins word
.byte 0xb5
.2byte \word
.endm
@@ -1225,7 +1237,7 @@
.2byte \word
.endm
- .macro vjump pointer
+ .macro vgoto pointer
.byte 0xb9
.4byte \pointer
.endm
@@ -1235,63 +1247,63 @@
.4byte \pointer
.endm
- .macro if5 byte, pointer
+ .macro vgoto_if byte, pointer
.byte 0xbb
.byte \byte
.4byte \pointer
.endm
- .macro if6 byte, pointer
+ .macro vcall_if byte, pointer
.byte 0xbc
.byte \byte
.4byte \pointer
.endm
- .macro vtext pointer
+ .macro vmessage pointer
.byte 0xbd
.4byte \pointer
.endm
- .macro vloadptr pointer
+ .macro vloadword pointer
.byte 0xbe
.4byte \pointer
.endm
- .macro vbuffer byte, pointer
+ .macro vgetstring byte, pointer
.byte 0xbf
.byte \byte
.4byte \pointer
.endm
@ Spawns a secondary box showing how many Coins the player has.
- .macro showcoins X, Y
+ .macro showcoinsbox X, Y
.byte 0xc0
.byte \X
.byte \Y
.endm
@ Hides the secondary box spawned by showcoins. It doesn't appear to use its arguments, but they are still required.
- .macro hidecoins X, Y
+ .macro hidecoinsbox X, Y
.byte 0xc1
.byte \X
.byte \Y
.endm
@ Updates the secondary box spawned by showcoins. (What does it do with its arguments?)
- .macro updatecoins X, Y
+ .macro updatecoinsbox X, Y
.byte 0xc2
.byte \X
.byte \Y
.endm
@ Increases the value of the specified hidden variable by 1. The hidden variable's value will not be allowed to exceed 0x00FFFFFF.
- .macro inccounter a
+ .macro incrementgamestat a
.byte 0xc3
.byte \a
.endm
@ Clone of warp... Except that it doesn't appear to have any effect when used in some of FireRed's default level scripts. (If it did, Berry Forest would be impossible to enter...)
- .macro warp6 map, warp, X, Y
+ .macro setescapewarp map, warp, X, Y
.byte 0xc4
map \map
.byte \warp
@@ -1475,8 +1487,8 @@
@ Supplementary
- .macro jumpeq dest
- jumpif 1, \dest
+ .macro goto_if_eq dest
+ goto_if 1, \dest
.endm
.macro switch var
@@ -1484,15 +1496,21 @@
.endm
.macro case condition, dest
- compare 0x8000, \condition
- jumpeq \dest
+ compare_var_to_value 0x8000, \condition
+ goto_if_eq \dest
.endm
.macro msgbox text, type=4
- loadptr 0, \text
+ loadword 0, \text
callstd \type
.endm
+ @ Message box types
+ MSGBOX_YESNO = 5
+
+ YES = 1
+ NO = 0
+
.macro giveitem item, amount=1, function=0
setorcopyvar 0x8000, \item
setorcopyvar 0x8001, \amount
diff --git a/asm/mauville_old_man.s b/asm/mauville_old_man.s
deleted file mode 100644
index 726de6fc1..000000000
--- a/asm/mauville_old_man.s
+++ /dev/null
@@ -1,1522 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F7DC0
-sub_80F7DC0: @ 80F7DC0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- ldr r1, _080F7E84 @ =gUnknown_083E53C8
- mov r0, sp
- movs r2, 0x18
- bl memcpy
- movs r5, 0
- movs r0, 0x2
- add r0, sp
- mov r8, r0
- ldr r1, _080F7E88 @ =gSaveBlock1 + 0x2D94
- adds r1, 0x18
- adds r3, r1, 0
-_080F7DE4:
- adds r0, r3, r5
- strb r5, [r0]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x7
- bls _080F7DE4
- movs r5, 0
- ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94
- adds r2, 0x4
- mov r9, r2
- adds r6, r1, 0
-_080F7DFC:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r4, r5, 0x1
- adds r1, r4, 0
- bl __modsi3
- lsls r0, 16
- lsrs r1, r0, 16
- adds r2, r6, r5
- ldrb r7, [r2]
- adds r1, r6, r1
- ldrb r0, [r1]
- strb r0, [r2]
- strb r7, [r1]
- lsls r4, 16
- lsrs r5, r4, 16
- cmp r5, 0x7
- bls _080F7DFC
- movs r3, 0
- mov r10, r3
- movs r5, 0
-_080F7E2A:
- lsls r4, r5, 2
- mov r1, sp
- adds r0, r1, r4
- ldrb r0, [r0]
- bl sub_80EAE88
- add r4, r8
- strh r0, [r4]
- add r0, r10
- lsls r0, 16
- lsrs r0, 16
- mov r10, r0
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r5, 0x5
- bls _080F7E2A
- movs r0, 0
- ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94
- strb r0, [r2, 0x2]
- movs r7, 0
- movs r5, 0
-_080F7E56:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r1, 0x2
- bhi _080F7E90
- cmp r7, 0x7
- bhi _080F7E90
- lsls r0, r5, 1
- add r0, r9
- ldr r1, _080F7E8C @ =0x0000ffff
- strh r1, [r0]
- adds r0, r7, 0x1
- lsls r0, 16
- lsrs r7, r0, 16
- adds r4, r5, 0x1
- b _080F7EE2
- .align 2, 0
-_080F7E84: .4byte gUnknown_083E53C8
-_080F7E88: .4byte gSaveBlock1 + 0x2D94
-_080F7E8C: .4byte 0x0000ffff
-_080F7E90:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- mov r1, r10
- bl __umodsi3
- lsls r0, 16
- lsrs r2, r0, 16
- movs r1, 0
- adds r4, r5, 0x1
- lsls r6, r5, 1
- cmp r5, 0x5
- bhi _080F7ECC
- mov r3, r8
- ldrh r0, [r3]
- b _080F7EC2
-_080F7EB2:
- adds r0, r1, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- cmp r5, 0x5
- bhi _080F7ECC
- lsls r0, r1, 2
- adds r0, r3, r0
- ldrh r0, [r0]
-_080F7EC2:
- subs r0, r2, r0
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r0, 0
- bgt _080F7EB2
-_080F7ECC:
- cmp r1, 0x6
- bne _080F7ED2
- movs r1, 0
-_080F7ED2:
- lsls r0, r1, 2
- add r0, sp
- ldrh r0, [r0]
- bl sub_80EB784
- mov r2, r9
- adds r1, r2, r6
- strh r0, [r1]
-_080F7EE2:
- lsls r0, r4, 16
- lsrs r5, r0, 16
- cmp r5, 0x9
- bls _080F7E56
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F7DC0
-
- thumb_func_start sub_80F7EFC
-sub_80F7EFC: @ 80F7EFC
- ldr r0, _080F7F08 @ =gSaveBlock1 + 0x2D94
- adds r0, 0x29
- movs r1, 0
- strb r1, [r0]
- bx lr
- .align 2, 0
-_080F7F08: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F7EFC
-
- thumb_func_start sub_80F7F0C
-sub_80F7F0C: @ 80F7F0C
- ldr r1, _080F7F14 @ =gSaveBlock1 + 0x2D94
- movs r0, 0
- strb r0, [r1, 0x1]
- bx lr
- .align 2, 0
-_080F7F14: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F7F0C
-
- thumb_func_start sub_80F7F18
-sub_80F7F18: @ 80F7F18
- push {lr}
- bl sub_8109A20
- pop {r0}
- bx r0
- thumb_func_end sub_80F7F18
-
- thumb_func_start sub_80F7F24
-sub_80F7F24: @ 80F7F24
- push {lr}
- bl sub_80F8428
- pop {r0}
- bx r0
- thumb_func_end sub_80F7F24
-
- thumb_func_start sub_80F7F30
-sub_80F7F30: @ 80F7F30
- push {lr}
- bl GetCurrentMauvilleOldMan
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- bhi _080F7F76
- lsls r0, 2
- ldr r1, _080F7F48 @ =_080F7F4C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F7F48: .4byte _080F7F4C
- .align 2, 0
-_080F7F4C:
- .4byte _080F7F60
- .4byte _080F7F66
- .4byte _080F7F72
- .4byte _080F7F6C
- .4byte _080F7F76
-_080F7F60:
- bl sub_80F7EFC
- b _080F7F76
-_080F7F66:
- bl sub_80F7F0C
- b _080F7F76
-_080F7F6C:
- bl sub_80F7F24
- b _080F7F76
-_080F7F72:
- bl sub_80F7F18
-_080F7F76:
- bl sub_80F83D0
- pop {r0}
- bx r0
- thumb_func_end sub_80F7F30
-
- thumb_func_start sub_80F7F80
-sub_80F7F80: @ 80F7F80
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080F7FA8 @ =sub_80F8184
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080F7FAC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- strh r4, [r1, 0x12]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F7FA8: .4byte sub_80F8184
-_080F7FAC: .4byte gTasks
- thumb_func_end sub_80F7F80
-
- thumb_func_start sub_80F7FB0
-sub_80F7FB0: @ 80F7FB0
- push {r4-r7,lr}
- adds r6, r1, 0
- movs r1, 0x8
- ldrsh r0, [r0, r1]
- cmp r0, 0x5
- bls _080F7FBE
- b _080F817A
-_080F7FBE:
- lsls r0, 2
- ldr r1, _080F7FC8 @ =_080F7FCC
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F7FC8: .4byte _080F7FCC
- .align 2, 0
-_080F7FCC:
- .4byte _080F7FE4
- .4byte _080F817A
- .4byte _080F8040
- .4byte _080F8074
- .4byte _080F8074
- .4byte _080F817A
-_080F7FE4:
- ldr r2, _080F8034 @ =gSaveBlock1 + 0x2D94
- ldr r0, _080F8038 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- adds r1, r2, 0
- adds r1, 0xE
- cmp r0, 0
- bne _080F7FF4
- adds r1, r2, 0x2
-_080F7FF4:
- adds r2, r1, 0
- adds r1, r6, 0
- adds r1, 0xC
- movs r3, 0x5
-_080F7FFC:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _080F7FFC
- ldr r2, _080F803C @ =0x0000ffff
- adds r4, r2, 0
- movs r2, 0
- adds r1, r6, 0
- adds r1, 0x18
- movs r3, 0x5
-_080F8016:
- ldrh r0, [r1]
- orrs r0, r4
- strh r0, [r1]
- strh r2, [r1, 0x2]
- strh r2, [r1, 0x4]
- strh r2, [r1, 0x6]
- adds r1, 0x8
- subs r3, 0x1
- cmp r3, 0
- bge _080F8016
- movs r0, 0
- strb r0, [r6]
- strb r0, [r6, 0x1]
- strh r0, [r6, 0x4]
- b _080F817A
- .align 2, 0
-_080F8034: .4byte gSaveBlock1 + 0x2D94
-_080F8038: .4byte gSpecialVar_0x8004
-_080F803C: .4byte 0x0000ffff
-_080F8040:
- ldrb r1, [r6]
- lsls r1, 1
- adds r0, r6, 0
- adds r0, 0xC
- adds r0, r1
- ldrh r4, [r0]
- lsrs r0, r4, 9
- ldr r1, _080F8070 @ =0x000001ff
- ands r1, r4
- bl sub_814A2D0
- adds r1, r0, 0
- movs r0, 0
- strh r0, [r6, 0x4]
- movs r2, 0x3
- ands r2, r4
- lsrs r4, 3
- movs r0, 0x1
- ands r4, r0
- adds r2, r4
- adds r0, r6, 0
- bl sub_814A2EC
- b _080F817A
- .align 2, 0
-_080F8070: .4byte 0x000001ff
-_080F8074:
- ldrb r1, [r6, 0x1]
- lsls r0, r1, 3
- adds r0, 0x18
- adds r7, r6, r0
- ldrb r0, [r6, 0x3]
- cmp r0, 0x1
- beq _080F8124
- cmp r0, 0x1
- bgt _080F808C
- cmp r0, 0
- beq _080F8092
- b _080F817A
-_080F808C:
- cmp r0, 0xFE
- beq _080F8170
- b _080F817A
-_080F8092:
- ldrb r0, [r6, 0x2]
- cmp r0, 0
- bne _080F80D0
- cmp r1, 0x6
- beq _080F80A2
- ldrh r0, [r7]
- cmp r0, 0xFF
- bne _080F80A6
-_080F80A2:
- movs r0, 0xFE
- b _080F8178
-_080F80A6:
- ldrh r0, [r7, 0x2]
- strb r0, [r6, 0x2]
- ldrh r0, [r7]
- cmp r0, 0x32
- bhi _080F80CA
- movs r1, 0x3
- bl __udivsi3
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- lsls r0, r1, 1
- adds r0, r1
- adds r0, 0xF9
- lsls r0, 16
- lsrs r0, 16
- bl m4aSongNumStart
-_080F80CA:
- movs r0, 0x1
- strb r0, [r6, 0x3]
- b _080F8114
-_080F80D0:
- ldrh r1, [r6, 0xA]
- movs r2, 0xA
- ldrsh r0, [r6, r2]
- cmp r0, 0xA
- ble _080F80E0
- ldrh r0, [r6, 0x6]
- subs r0, 0x2
- strh r0, [r6, 0x6]
-_080F80E0:
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080F80EE
- ldrh r0, [r6, 0x8]
- adds r0, 0x40
- b _080F80F2
-_080F80EE:
- ldrh r0, [r6, 0x8]
- subs r0, 0x40
-_080F80F2:
- strh r0, [r6, 0x8]
- ldr r4, _080F811C @ =gMPlay_SE2
- ldr r5, _080F8120 @ =0x0000ffff
- ldrh r2, [r6, 0x6]
- adds r0, r4, 0
- adds r1, r5, 0
- bl m4aMPlayVolumeControl
- movs r0, 0x8
- ldrsh r2, [r6, r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl m4aMPlayPitchControl
- ldrh r0, [r6, 0xA]
- adds r0, 0x1
- strh r0, [r6, 0xA]
-_080F8114:
- ldrb r0, [r6, 0x2]
- subs r0, 0x1
- strb r0, [r6, 0x2]
- b _080F817A
- .align 2, 0
-_080F811C: .4byte gMPlay_SE2
-_080F8120: .4byte 0x0000ffff
-_080F8124:
- adds r0, r1, 0x1
- movs r1, 0
- strb r0, [r6, 0x1]
- strb r1, [r6, 0x3]
- ldrh r0, [r7]
- cmp r0, 0x32
- bhi _080F817A
- ldrh r0, [r7, 0x6]
- lsls r0, 4
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- strh r0, [r6, 0x6]
- ldr r4, _080F8168 @ =gMPlay_SE2
- ldr r5, _080F816C @ =0x0000ffff
- ldrh r2, [r6, 0x6]
- adds r0, r4, 0
- adds r1, r5, 0
- bl m4aMPlayVolumeControl
- movs r2, 0x80
- lsls r2, 2
- adds r0, r2, 0
- ldrh r7, [r7, 0x4]
- adds r0, r7
- strh r0, [r6, 0x8]
- movs r0, 0x8
- ldrsh r2, [r6, r0]
- adds r0, r4, 0
- adds r1, r5, 0
- bl m4aMPlayPitchControl
- b _080F817A
- .align 2, 0
-_080F8168: .4byte gMPlay_SE2
-_080F816C: .4byte 0x0000ffff
-_080F8170:
- ldr r0, _080F8180 @ =gMPlay_SE2
- bl m4aMPlayStop
- movs r0, 0xFF
-_080F8178:
- strb r0, [r6, 0x3]
-_080F817A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8180: .4byte gMPlay_SE2
- thumb_func_end sub_80F7FB0
-
- thumb_func_start sub_80F8184
-sub_80F8184: @ 80F8184
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080F81B4 @ =gTasks
- adds r5, r0, r1
- ldr r1, _080F81B8 @ =gUnknown_03005DA0
- adds r0, r5, 0
- bl sub_80F7FB0
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0x5
- bls _080F81A8
- b _080F83C8
-_080F81A8:
- lsls r0, 2
- ldr r1, _080F81BC @ =_080F81C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F81B4: .4byte gTasks
-_080F81B8: .4byte gUnknown_03005DA0
-_080F81BC: .4byte _080F81C0
- .align 2, 0
-_080F81C0:
- .4byte _080F81D8
- .4byte _080F8218
- .4byte _080F8228
- .4byte _080F82D8
- .4byte _080F83B8
- .4byte _080F82C6
-_080F81D8:
- bl sub_80F7BA0
- ldr r4, _080F820C @ =gMenuWindowPtr
- ldr r0, [r4]
- ldr r1, _080F8210 @ =gWindowConfig_81E6CE4
- bl InitWindowFromConfig
- ldr r0, [r4]
- ldr r1, _080F8214 @ =gStringVar4
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x2
- movs r3, 0x4
- bl sub_8002EB0
- movs r0, 0
- strh r0, [r5, 0xA]
- strh r0, [r5, 0xC]
- strh r0, [r5, 0xE]
- strh r0, [r5, 0x10]
- movs r0, 0x4
- bl FadeOutBGMTemporarily
- movs r0, 0x1
- b _080F83C6
- .align 2, 0
-_080F820C: .4byte gMenuWindowPtr
-_080F8210: .4byte gWindowConfig_81E6CE4
-_080F8214: .4byte gStringVar4
-_080F8218:
- bl IsBGMPausedOrStopped
- lsls r0, 24
- cmp r0, 0
- bne _080F8224
- b _080F83C8
-_080F8224:
- movs r0, 0x2
- b _080F83C6
-_080F8228:
- ldr r4, _080F8240 @ =gSaveBlock1 + 0x2D94
- movs r2, 0xE
- ldrsh r1, [r5, r2]
- ldr r0, _080F8244 @ =gStringVar4
- adds r1, r0
- movs r3, 0
- ldrb r0, [r1]
- ldr r7, _080F8248 @ =gUnknown_03005DA0
- ldrh r2, [r5, 0x12]
- ldr r6, _080F824C @ =gUnknown_020388BC
- b _080F825A
- .align 2, 0
-_080F8240: .4byte gSaveBlock1 + 0x2D94
-_080F8244: .4byte gStringVar4
-_080F8248: .4byte gUnknown_03005DA0
-_080F824C: .4byte gUnknown_020388BC
-_080F8250:
- adds r1, 0x1
- adds r0, r3, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldrb r0, [r1]
-_080F825A:
- cmp r0, 0
- beq _080F826A
- cmp r0, 0xFE
- beq _080F826A
- cmp r0, 0xFC
- beq _080F826A
- cmp r0, 0xFF
- bne _080F8250
-_080F826A:
- cmp r2, 0
- bne _080F8278
- movs r0, 0x10
- ldrsh r1, [r5, r0]
- lsls r1, 1
- adds r0, r4, 0x2
- b _080F8282
-_080F8278:
- movs r2, 0x10
- ldrsh r1, [r5, r2]
- lsls r1, 1
- adds r0, r4, 0
- adds r0, 0xE
-_080F8282:
- adds r0, r1
- ldrh r0, [r0]
- movs r1, 0x3
- ands r1, r0
- lsrs r0, 3
- movs r2, 0x1
- ands r0, r2
- adds r1, r0
- strh r1, [r6]
- movs r1, 0x4
- ldrsh r0, [r7, r1]
- adds r1, r3, 0
- bl __divsi3
- movs r1, 0
- strh r0, [r7, 0x4]
- lsls r0, 16
- cmp r0, 0
- bgt _080F82AC
- movs r0, 0x1
- strh r0, [r7, 0x4]
-_080F82AC:
- ldrh r0, [r5, 0x10]
- adds r0, 0x1
- strh r0, [r5, 0x10]
- movs r2, 0xC
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bne _080F82BE
- movs r0, 0x3
- b _080F82C0
-_080F82BE:
- movs r0, 0x5
-_080F82C0:
- strh r0, [r5, 0x8]
- strh r1, [r5, 0xA]
- b _080F83C8
-_080F82C6:
- ldrh r1, [r5, 0xC]
- movs r2, 0xC
- ldrsh r0, [r5, r2]
- cmp r0, 0
- bne _080F82D2
- b _080F83C4
-_080F82D2:
- subs r0, r1, 0x1
- strh r0, [r5, 0xC]
- b _080F83C8
-_080F82D8:
- ldr r1, _080F8304 @ =gStringVar4
- movs r2, 0xE
- ldrsh r0, [r5, r2]
- adds r0, r1
- ldrb r4, [r0]
- cmp r4, 0xFF
- bne _080F830C
- movs r0, 0xC8
- lsls r0, 1
- movs r1, 0x6
- bl FadeInNewBGM
- ldr r0, _080F8308 @ =gMPlay_SE2
- movs r1, 0x2
- bl m4aMPlayFadeOutTemporarily
- bl EnableBothScriptContexts
- adds r0, r6, 0
- bl DestroyTask
- b _080F83C8
- .align 2, 0
-_080F8304: .4byte gStringVar4
-_080F8308: .4byte gMPlay_SE2
-_080F830C:
- cmp r4, 0
- bne _080F832C
- ldr r0, _080F8328 @ =gMenuWindowPtr
- ldr r0, [r0]
- bl sub_8003418
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- strh r0, [r5, 0xE]
- movs r0, 0x2
- strh r0, [r5, 0x8]
- strh r4, [r5, 0xC]
- b _080F83C8
- .align 2, 0
-_080F8328: .4byte gMenuWindowPtr
-_080F832C:
- cmp r4, 0xFE
- bne _080F8340
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r5, 0xE]
- movs r0, 0x2
- strh r0, [r5, 0x8]
- strh r1, [r5, 0xC]
- b _080F83C8
-_080F8340:
- cmp r4, 0xFC
- bne _080F8354
- ldrh r0, [r5, 0xE]
- adds r0, 0x2
- strh r0, [r5, 0xE]
- movs r0, 0x2
- strh r0, [r5, 0x8]
- movs r0, 0x8
- strh r0, [r5, 0xC]
- b _080F83C8
-_080F8354:
- cmp r4, 0x37
- bne _080F8374
- movs r4, 0
- strb r4, [r0]
- ldr r0, _080F8370 @ =gMenuWindowPtr
- ldr r0, [r0]
- bl sub_8003418
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- strh r0, [r5, 0xE]
- strh r4, [r5, 0xC]
- b _080F83C8
- .align 2, 0
-_080F8370: .4byte gMenuWindowPtr
-_080F8374:
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0x1
- beq _080F8394
- cmp r0, 0x1
- bgt _080F8386
- cmp r0, 0
- beq _080F838C
- b _080F83C8
-_080F8386:
- cmp r0, 0x2
- beq _080F83A0
- b _080F83C8
-_080F838C:
- ldr r0, _080F839C @ =gMenuWindowPtr
- ldr r0, [r0]
- bl sub_8003418
-_080F8394:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- b _080F83C8
- .align 2, 0
-_080F839C: .4byte gMenuWindowPtr
-_080F83A0:
- ldrh r0, [r5, 0xE]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r5, 0xE]
- strh r1, [r5, 0xA]
- ldr r0, _080F83B4 @ =gUnknown_03005DA0
- ldrh r0, [r0, 0x4]
- strh r0, [r5, 0xC]
- movs r0, 0x4
- b _080F83C6
- .align 2, 0
-_080F83B4: .4byte gUnknown_03005DA0
-_080F83B8:
- ldrh r0, [r5, 0xC]
- subs r0, 0x1
- strh r0, [r5, 0xC]
- lsls r0, 16
- cmp r0, 0
- bne _080F83C8
-_080F83C4:
- movs r0, 0x3
-_080F83C6:
- strh r0, [r5, 0x8]
-_080F83C8:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F8184
-
- thumb_func_start sub_80F83D0
-sub_80F83D0: @ 80F83D0
- push {r4,lr}
- ldr r4, _080F83F4 @ =0x00004010
- bl GetCurrentMauvilleOldMan
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 8
- movs r0, 0x8A
- lsls r0, 15
- adds r1, r0
- lsrs r1, 16
- adds r0, r4, 0
- bl VarSet
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F83F4: .4byte 0x00004010
- thumb_func_end sub_80F83D0
-
- thumb_func_start sub_80F83F8
-sub_80F83F8: @ 80F83F8
- push {r4,lr}
- ldr r0, _080F8424 @ =gSaveBlock1 + 0x2D94
- movs r2, 0
- movs r1, 0x3
- strb r1, [r0]
- strb r2, [r0, 0x1]
- movs r4, 0
- movs r3, 0xFF
- adds r1, r0, 0x4
- movs r2, 0x3
-_080F840C:
- strb r4, [r1]
- ldrb r0, [r1, 0x4]
- orrs r0, r3
- strb r0, [r1, 0x4]
- adds r1, 0x1
- subs r2, 0x1
- cmp r2, 0
- bge _080F840C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8424: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F83F8
-
- thumb_func_start sub_80F8428
-sub_80F8428: @ 80F8428
- ldr r0, _080F8434 @ =gSaveBlock1 + 0x2D94
- movs r2, 0
- movs r1, 0x3
- strb r1, [r0]
- strb r2, [r0, 0x1]
- bx lr
- .align 2, 0
-_080F8434: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F8428
-
- thumb_func_start sub_80F8438
-sub_80F8438: @ 80F8438
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x32
- bne _080F8444
- movs r0, 0
-_080F8444:
- bl GetGameStat
- pop {r1}
- bx r1
- thumb_func_end sub_80F8438
-
- thumb_func_start sub_80F844C
-sub_80F844C: @ 80F844C
- push {lr}
- adds r3, r0, 0
- movs r2, 0
- ldr r1, _080F8460 @ =gUnknown_083E53E0
-_080F8454:
- ldrb r0, [r1]
- cmp r0, r3
- bne _080F8464
- adds r0, r1, 0
- b _080F846E
- .align 2, 0
-_080F8460: .4byte gUnknown_083E53E0
-_080F8464:
- adds r1, 0x10
- adds r2, 0x1
- cmp r2, 0x23
- ble _080F8454
- ldr r0, _080F8474 @ =gUnknown_083E5610
-_080F846E:
- pop {r1}
- bx r1
- .align 2, 0
-_080F8474: .4byte gUnknown_083E5610
- thumb_func_end sub_80F844C
-
- thumb_func_start sub_80F8478
-sub_80F8478: @ 80F8478
- push {lr}
- bl sub_80F844C
- ldr r0, [r0, 0x4]
- pop {r1}
- bx r1
- thumb_func_end sub_80F8478
-
- thumb_func_start sub_80F8484
-sub_80F8484: @ 80F8484
- push {lr}
- bl sub_80F844C
- ldr r0, [r0, 0xC]
- pop {r1}
- bx r1
- thumb_func_end sub_80F8484
-
- thumb_func_start sub_80F8490
-sub_80F8490: @ 80F8490
- push {lr}
- bl sub_80F844C
- ldr r0, [r0, 0x8]
- pop {r1}
- bx r1
- thumb_func_end sub_80F8490
-
- thumb_func_start sub_80F849C
-sub_80F849C: @ 80F849C
- push {lr}
- movs r1, 0
- ldr r2, _080F84C4 @ =gSaveBlock1 + 0x2D94
- ldrb r0, [r2, 0x4]
- cmp r0, 0
- beq _080F84BC
- adds r2, 0x4
-_080F84AA:
- adds r0, r1, 0x1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0x3
- bhi _080F84BC
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F84AA
-_080F84BC:
- adds r0, r1, 0
- pop {r1}
- bx r1
- .align 2, 0
-_080F84C4: .4byte gSaveBlock1 + 0x2D94
- thumb_func_end sub_80F849C
-
- thumb_func_start sub_80F84C8
-sub_80F84C8: @ 80F84C8
- lsls r0, 2
- ldr r1, _080F84E8 @ =gSaveBlock1 + 0x2DB8
- adds r0, r1
- ldrb r2, [r0]
- ldrb r1, [r0, 0x1]
- lsls r1, 8
- orrs r2, r1
- ldrb r1, [r0, 0x2]
- lsls r1, 16
- orrs r2, r1
- ldrb r0, [r0, 0x3]
- lsls r0, 24
- orrs r2, r0
- adds r0, r2, 0
- bx lr
- .align 2, 0
-_080F84E8: .4byte gSaveBlock1 + 0x2DB8
- thumb_func_end sub_80F84C8
-
- thumb_func_start sub_80F84EC
-sub_80F84EC: @ 80F84EC
- lsls r0, 2
- ldr r2, _080F8504 @ =gSaveBlock1 + 0x2DB8
- adds r0, r2
- strb r1, [r0]
- lsrs r2, r1, 8
- strb r2, [r0, 0x1]
- lsrs r2, r1, 16
- strb r2, [r0, 0x2]
- lsrs r1, 24
- strb r1, [r0, 0x3]
- bx lr
- .align 2, 0
-_080F8504: .4byte gSaveBlock1 + 0x2DB8
- thumb_func_end sub_80F84EC
-
- thumb_func_start sub_80F8508
-sub_80F8508: @ 80F8508
- push {r4,r5,lr}
- adds r5, r0, 0
- ldr r0, _080F8528 @ =gSaveBlock1 + 0x2D94
- adds r0, 0x4
- adds r0, r5, r0
- ldrb r0, [r0]
- bl sub_80F8438
- adds r4, r0, 0
- adds r0, r5, 0
- bl sub_80F84C8
- cmp r4, r0
- bhi _080F852C
- movs r0, 0
- b _080F852E
- .align 2, 0
-_080F8528: .4byte gSaveBlock1 + 0x2D94
-_080F852C:
- movs r0, 0x1
-_080F852E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F8508
-
- thumb_func_start sub_80F8534
-sub_80F8534: @ 80F8534
- push {r4,r5,lr}
- adds r5, r1, 0
- lsls r4, r0, 3
- subs r4, r0
- ldr r0, _080F855C @ =gSaveBlock1 + 0x2D9C
- adds r4, r0
- adds r0, r5, 0
- movs r1, 0xFF
- movs r2, 0x8
- bl memset
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x7
- bl memcpy
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F855C: .4byte gSaveBlock1 + 0x2D9C
- thumb_func_end sub_80F8534
-
- thumb_func_start sub_80F8560
-sub_80F8560: @ 80F8560
- push {r4-r6,lr}
- adds r6, r1, 0
- lsls r5, r0, 3
- subs r5, r0
- ldr r0, _080F8594 @ =gSaveBlock1 + 0x2D9C
- adds r5, r0
- adds r0, r6, 0
- bl StringLength
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0xFF
- movs r2, 0x7
- bl memset
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl StringCopyN
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8594: .4byte gSaveBlock1 + 0x2D9C
- thumb_func_end sub_80F8560
-
- thumb_func_start sub_80F8598
-sub_80F8598: @ 80F8598
- push {r4-r6,lr}
- adds r5, r0, 0
- adds r6, r1, 0
- ldr r0, _080F85EC @ =gSaveBlock1 + 0x2D94
- adds r0, 0x4
- adds r0, r5, r0
- strb r6, [r0]
- ldr r1, _080F85F0 @ =gSaveBlock2
- adds r0, r5, 0
- bl sub_80F8560
- lsls r4, r6, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_80F8438
- adds r1, r0, 0
- adds r0, r5, 0
- bl sub_80F84EC
- ldr r5, _080F85F4 @ =gStringVar1
- adds r0, r4, 0
- bl sub_80F8438
- adds r1, r0, 0
- adds r0, r5, 0
- movs r2, 0
- movs r3, 0xA
- bl ConvertIntToDecimalStringN
- ldr r4, _080F85F8 @ =gStringVar2
- adds r0, r6, 0
- bl sub_80F8490
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F85EC: .4byte gSaveBlock1 + 0x2D94
-_080F85F0: .4byte gSaveBlock2
-_080F85F4: .4byte gStringVar1
-_080F85F8: .4byte gStringVar2
- thumb_func_end sub_80F8598
-
- thumb_func_start sub_80F85FC
-sub_80F85FC: @ 80F85FC
- push {r4-r7,lr}
- adds r7, r0, 0
- adds r6, r1, 0
- movs r5, 0
- cmp r5, r6
- bge _080F8612
-_080F8608:
- adds r0, r7, r5
- strb r5, [r0]
- adds r5, 0x1
- cmp r5, r6
- blt _080F8608
-_080F8612:
- cmp r6, 0
- ble _080F8648
- adds r5, r6, 0
-_080F8618:
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl __modsi3
- adds r4, r0, 0
- bl Random
- lsls r0, 16
- lsrs r0, 16
- adds r1, r6, 0
- bl __modsi3
- adds r4, r7, r4
- ldrb r2, [r4]
- adds r0, r7, r0
- ldrb r1, [r0]
- strb r1, [r4]
- strb r2, [r0]
- subs r5, 0x1
- cmp r5, 0
- bne _080F8618
-_080F8648:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80F85FC
-
- thumb_func_start sub_80F8650
-sub_80F8650: @ 80F8650
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r7, sp
- mov r10, sp
- ldr r0, _080F86D4 @ =gUnknown_083E5620
- ldr r0, [r0]
- lsls r0, 3
- lsrs r0, 3
- adds r0, 0x3
- lsrs r0, 2
- lsls r0, 2
- mov r1, sp
- subs r1, r0
- mov sp, r1
- mov r8, sp
- mov r0, sp
- movs r1, 0x24
- bl sub_80F85FC
- movs r5, 0
- ldr r0, _080F86D8 @ =gUnknown_083E53E0
- mov r9, r0
- ldr r3, _080F86DC @ =gSaveBlock1 + 0x2D94
-_080F8686:
- mov r1, r8
- adds r0, r1, r5
- ldrb r0, [r0]
- lsls r0, 4
- add r0, r9
- ldrb r4, [r0]
- ldrb r6, [r0, 0x1]
- movs r1, 0
- ldrb r0, [r3, 0x4]
- cmp r0, r4
- beq _080F86AC
- ldr r2, _080F86E0 @ =gSaveBlock1 + 0x2D98
-_080F869E:
- adds r1, 0x1
- cmp r1, 0x3
- bgt _080F86AC
- adds r0, r1, r2
- ldrb r0, [r0]
- cmp r0, r4
- bne _080F869E
-_080F86AC:
- cmp r1, 0x4
- bne _080F86E4
- adds r0, r4, 0
- str r3, [r7]
- bl sub_80F8438
- ldr r3, [r7]
- cmp r0, r6
- bcc _080F86E4
- movs r0, 0x1
- strb r0, [r3, 0x1]
- bl sub_80F849C
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl sub_80F8598
- movs r0, 0x1
- b _080F86EC
- .align 2, 0
-_080F86D4: .4byte gUnknown_083E5620
-_080F86D8: .4byte gUnknown_083E53E0
-_080F86DC: .4byte gSaveBlock1 + 0x2D94
-_080F86E0: .4byte gSaveBlock1 + 0x2D98
-_080F86E4:
- adds r5, 0x1
- cmp r5, 0x23
- ble _080F8686
- movs r0, 0
-_080F86EC:
- mov sp, r10
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_80F8650
-
- thumb_func_start sub_80F8700
-sub_80F8700: @ 80F8700
- push {r4-r6,lr}
- adds r5, r0, 0
- ldr r0, _080F8748 @ =gSaveBlock1 + 0x2D94
- adds r0, 0x4
- adds r0, r5, r0
- ldrb r6, [r0]
- ldr r4, _080F874C @ =gStringVar1
- adds r0, r5, 0
- bl sub_80F84C8
- adds r1, r0, 0
- adds r0, r4, 0
- movs r2, 0
- movs r3, 0xA
- bl ConvertIntToDecimalStringN
- ldr r4, _080F8750 @ =gStringVar2
- adds r0, r6, 0
- bl sub_80F8490
- adds r1, r0, 0
- adds r0, r4, 0
- bl StringCopy
- ldr r1, _080F8754 @ =gStringVar3
- adds r0, r5, 0
- bl sub_80F8534
- adds r0, r6, 0
- bl sub_80F8484
- bl ShowFieldMessage
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F8748: .4byte gSaveBlock1 + 0x2D94
-_080F874C: .4byte gStringVar1
-_080F8750: .4byte gStringVar2
-_080F8754: .4byte gStringVar3
- thumb_func_end sub_80F8700
-
- thumb_func_start sub_80F8758
-sub_80F8758: @ 80F8758
- push {r4-r6,lr}
- bl sub_80F849C
- adds r3, r0, 0
- lsls r3, 25
- movs r0, 0x80
- lsls r0, 19
- adds r3, r0
- lsrs r3, 24
- movs r0, 0
- movs r1, 0
- movs r2, 0x19
- bl MenuDrawTextWindow
- movs r4, 0
- ldr r1, _080F87BC @ =gSaveBlock1 + 0x2D94
- ldrb r0, [r1, 0x4]
- cmp r0, 0
- beq _080F87A4
- adds r6, r1, 0x4
- movs r5, 0x80
- lsls r5, 18
-_080F8784:
- bl sub_80F8478
- lsrs r2, r5, 24
- movs r1, 0x1
- bl MenuPrint
- movs r1, 0x80
- lsls r1, 18
- adds r5, r1
- adds r4, 0x1
- cmp r4, 0x3
- bgt _080F87A4
- adds r0, r4, r6
- ldrb r0, [r0]
- cmp r0, 0
- bne _080F8784
-_080F87A4:
- ldr r0, _080F87C0 @ =gPCText_Cancel
- lsls r2, r4, 25
- movs r1, 0x80
- lsls r1, 18
- adds r2, r1
- lsrs r2, 24
- movs r1, 0x1
- bl MenuPrint
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F87BC: .4byte gSaveBlock1 + 0x2D94
-_080F87C0: .4byte gPCText_Cancel
- thumb_func_end sub_80F8758
-
- thumb_func_start sub_80F87C4
-sub_80F87C4: @ 80F87C4
- push {r4-r6,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _080F87E4 @ =gTasks
- adds r4, r0, r1
- movs r0, 0x8
- ldrsh r5, [r4, r0]
- cmp r5, 0
- beq _080F87E8
- cmp r5, 0x1
- beq _080F8810
- b _080F8862
- .align 2, 0
-_080F87E4: .4byte gTasks
-_080F87E8:
- bl sub_80F8758
- bl sub_80F849C
- adds r3, r0, 0
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- str r5, [sp]
- movs r0, 0x18
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x1
- movs r2, 0x2
- bl InitMenu
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _080F8862
-_080F8810:
- bl ProcessMenuInput
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _080F8862
- adds r0, 0x1
- cmp r4, r0
- beq _080F8832
- bl sub_80F849C
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- bne _080F8840
-_080F8832:
- ldr r1, _080F883C @ =gScriptResult
- movs r0, 0
- strh r0, [r1]
- b _080F8848
- .align 2, 0
-_080F883C: .4byte gScriptResult
-_080F8840:
- ldr r0, _080F886C @ =gScriptResult
- strh r5, [r0]
- ldr r0, _080F8870 @ =gUnknown_03000748
- strb r4, [r0]
-_080F8848:
- bl HandleDestroyMenuCursors
- movs r0, 0
- movs r1, 0
- movs r2, 0x19
- movs r3, 0xC
- bl MenuZeroFillWindowRect
- adds r0, r6, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_080F8862:
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F886C: .4byte gScriptResult
-_080F8870: .4byte gUnknown_03000748
- thumb_func_end sub_80F87C4
-
- thumb_func_start sub_80F8874
-sub_80F8874: @ 80F8874
- push {lr}
- ldr r0, _080F8884 @ =sub_80F87C4
- movs r1, 0x50
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_080F8884: .4byte sub_80F87C4
- thumb_func_end sub_80F8874
-
- thumb_func_start sub_80F8888
-sub_80F8888: @ 80F8888
- push {lr}
- ldr r0, _080F8898 @ =gUnknown_03000748
- ldrb r0, [r0]
- bl sub_80F8700
- pop {r0}
- bx r0
- .align 2, 0
-_080F8898: .4byte gUnknown_03000748
- thumb_func_end sub_80F8888
-
- thumb_func_start sub_80F889C
-sub_80F889C: @ 80F889C
- push {lr}
- bl sub_80F849C
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80F889C
-
- thumb_func_start sub_80F88AC
-sub_80F88AC: @ 80F88AC
- push {r4,r5,lr}
- ldr r1, _080F88C8 @ =gSaveBlock1 + 0x2D94
- ldr r5, _080F88CC @ =gUnknown_03000748
- ldrb r0, [r5]
- adds r1, 0x4
- adds r1, r0, r1
- ldrb r4, [r1]
- bl sub_80F8508
- cmp r0, 0x1
- beq _080F88D0
- movs r0, 0
- b _080F88DA
- .align 2, 0
-_080F88C8: .4byte gSaveBlock1 + 0x2D94
-_080F88CC: .4byte gUnknown_03000748
-_080F88D0:
- ldrb r0, [r5]
- adds r1, r4, 0
- bl sub_80F8598
- movs r0, 0x1
-_080F88DA:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80F88AC
-
- thumb_func_start sub_80F88E0
-sub_80F88E0: @ 80F88E0
- push {lr}
- ldr r0, _080F88F0 @ =gSaveBlock1 + 0x2D94
- ldrb r0, [r0, 0x1]
- cmp r0, 0
- beq _080F88F4
- movs r0, 0x1
- b _080F88F6
- .align 2, 0
-_080F88F0: .4byte gSaveBlock1 + 0x2D94
-_080F88F4:
- movs r0, 0
-_080F88F6:
- pop {r1}
- bx r1
- thumb_func_end sub_80F88E0
-
- thumb_func_start sub_80F88FC
-sub_80F88FC: @ 80F88FC
- push {lr}
- bl sub_80F8650
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_80F88FC
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/mystery_event_script.s b/asm/mystery_event_script.s
deleted file mode 100644
index 02b6a0a48..000000000
--- a/asm/mystery_event_script.s
+++ /dev/null
@@ -1,831 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start unref_sub_81261B4
-unref_sub_81261B4: @ 81261B4
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r7, r1, 0
- ldrb r0, [r5]
- cmp r0, 0x1
- bne _08126204
- ldrb r0, [r5, 0x11]
- cmp r0, 0xF
- bne _08126204
- adds r6, r5, 0
- adds r6, 0x12
- adds r0, r6, 0
- bl sub_812618C
- cmp r0, 0
- bne _08126204
- adds r0, r5, 0
- adds r0, 0x16
- bl sub_812618C
- adds r4, r0, 0
- subs r4, r7
- adds r4, r5
- adds r0, r5, 0
- adds r0, 0x1A
- bl sub_812618C
- adds r1, r0, 0
- subs r1, r7
- adds r1, r5
- subs r1, r4
- adds r0, r4, 0
- bl sub_812616C
- adds r1, r0, 0
- adds r0, r6, 0
- bl sub_81261A4
- movs r0, 0x1
- b _08126206
-_08126204:
- movs r0, 0
-_08126206:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end unref_sub_81261B4
-
- thumb_func_start unref_sub_812620C
-unref_sub_812620C: @ 812620C
- push {r4-r7,lr}
- adds r5, r0, 0
- adds r7, r1, 0
- ldrb r0, [r5]
- cmp r0, 0x1
- bne _08126260
- ldrb r0, [r5, 0x11]
- cmp r0, 0x10
- bne _08126260
- adds r6, r5, 0
- adds r6, 0x12
- adds r0, r6, 0
- bl sub_812618C
- cmp r0, 0
- bne _08126260
- adds r0, r5, 0
- adds r0, 0x16
- bl sub_812618C
- adds r4, r0, 0
- subs r4, r7
- adds r4, r5
- adds r0, r5, 0
- adds r0, 0x1A
- bl sub_812618C
- adds r1, r0, 0
- subs r1, r7
- adds r1, r5
- subs r1, r4
- adds r0, r4, 0
- bl CalcCRC16
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r6, 0
- bl sub_81261A4
- movs r0, 0x1
- b _08126262
-_08126260:
- movs r0, 0
-_08126262:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end unref_sub_812620C
-
- thumb_func_start sub_8126268
-sub_8126268: @ 8126268
- push {lr}
- movs r2, 0
- ldr r3, _08126284 @ =gSaveBlock1 + 0x3A80
- movs r1, 0
-_08126270:
- adds r0, r3, r1
- ldrb r0, [r0]
- adds r2, r0
- adds r1, 0x1
- cmp r1, 0xB
- bls _08126270
- adds r0, r2, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08126284: .4byte gSaveBlock1 + 0x3A80
- thumb_func_end sub_8126268
-
- thumb_func_start sub_8126288
-sub_8126288: @ 8126288
- push {r4,lr}
- ldr r4, _081262B4 @ =gSaveBlock1 + 0x3A80
- bl sub_8126268
- adds r1, r0, 0
- ldrb r0, [r4]
- cmp r0, 0
- beq _081262B0
- ldrb r0, [r4, 0x1]
- cmp r0, 0
- beq _081262B0
- ldrh r0, [r4, 0x2]
- cmp r0, 0
- beq _081262B0
- cmp r1, 0
- beq _081262B0
- subs r0, r4, 0x4
- ldr r0, [r0]
- cmp r1, r0
- beq _081262B8
-_081262B0:
- movs r0, 0
- b _081262BA
- .align 2, 0
-_081262B4: .4byte gSaveBlock1 + 0x3A80
-_081262B8:
- movs r0, 0x1
-_081262BA:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_8126288
-
- thumb_func_start sub_81262C0
-sub_81262C0: @ 81262C0
- push {lr}
- sub sp, 0x4
- mov r1, sp
- movs r0, 0
- strh r0, [r1]
- ldr r1, _081262DC @ =gSaveBlock1 + 0x3A7C
- ldr r2, _081262E0 @ =0x01000008
- mov r0, sp
- bl CpuSet
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_081262DC: .4byte gSaveBlock1 + 0x3A7C
-_081262E0: .4byte 0x01000008
- thumb_func_end sub_81262C0
-
- thumb_func_start sub_81262E4
-sub_81262E4: @ 81262E4
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r3, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r5, r1, 0
- lsls r2, 16
- lsrs r2, 16
- adds r6, r2, 0
- cmp r3, 0
- beq _08126304
- cmp r1, 0
- beq _08126304
- cmp r2, 0
- bne _0812630A
-_08126304:
- bl sub_81262C0
- b _0812632A
-_0812630A:
- ldr r4, _08126330 @ =gSaveBlock1
- movs r1, 0xEA
- lsls r1, 6
- adds r0, r4, r1
- strb r3, [r0]
- adds r1, 0x1
- adds r0, r4, r1
- strb r5, [r0]
- adds r1, 0x1
- adds r0, r4, r1
- strh r6, [r0]
- bl sub_8126268
- ldr r1, _08126334 @ =0x00003a7c
- adds r4, r1
- str r0, [r4]
-_0812632A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08126330: .4byte gSaveBlock1
-_08126334: .4byte 0x00003a7c
- thumb_func_end sub_81262E4
-
- thumb_func_start sub_8126338
-sub_8126338: @ 8126338
- push {r4,r5,lr}
- ldr r4, _0812634C @ =gSaveBlock1 + 0x3A80
- bl sub_8126288
- cmp r0, 0
- bne _08126350
- bl sub_81262C0
- movs r0, 0
- b _0812636E
- .align 2, 0
-_0812634C: .4byte gSaveBlock1 + 0x3A80
-_08126350:
- ldrh r5, [r4, 0x2]
- ldrb r0, [r4, 0x1]
- subs r0, 0x1
- strb r0, [r4, 0x1]
- lsls r0, 24
- cmp r0, 0
- bne _08126364
- bl sub_81262C0
- b _0812636C
-_08126364:
- bl sub_8126268
- subs r1, r4, 0x4
- str r0, [r1]
-_0812636C:
- adds r0, r5, 0
-_0812636E:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_8126338
-
- thumb_func_start script_status_stop_and_ret_1
-script_status_stop_and_ret_1: @ 8126374
- push {lr}
- bl StopScript
- movs r0, 0x1
- pop {r1}
- bx r1
- thumb_func_end script_status_stop_and_ret_1
-
- thumb_func_start sub_8126380
-sub_8126380: @ 8126380
- push {r4-r7,lr}
- adds r7, r0, 0
- bl ScriptReadWord
- str r0, [r7, 0x68]
- adds r0, r7, 0
- bl ScriptReadHalfword
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r7, 0
- bl ScriptReadWord
- adds r6, r0, 0
- adds r0, r7, 0
- bl ScriptReadHalfword
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl ScriptReadWord
- adds r3, r0, 0
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl sub_8126098
- cmp r0, 0x1
- bne _081263C4
- str r0, [r7, 0x70]
- b _081263C8
-_081263C4:
- bl sub_81260D0
-_081263C8:
- movs r0, 0x1
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8126380
-
- thumb_func_start sub_81263D0
-sub_81263D0: @ 81263D0
- movs r0, 0
- bx lr
- thumb_func_end sub_81263D0
-
- thumb_func_start sub_81263D4
-sub_81263D4: @ 81263D4
- ldr r1, [r0, 0x8]
- ldrb r2, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- str r2, [r0, 0x6C]
- movs r0, 0
- bx lr
- thumb_func_end sub_81263D4
-
- thumb_func_start sub_81263E4
-sub_81263E4: @ 81263E4
- push {r4,r5,lr}
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r5, [r0]
- adds r0, 0x1
- str r0, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadWord
- ldr r1, [r4, 0x68]
- subs r0, r1
- ldr r1, [r4, 0x64]
- adds r1, r0, r1
- cmp r5, 0xFF
- beq _08126408
- ldr r0, [r4, 0x6C]
- cmp r5, r0
- bne _0812640E
-_08126408:
- ldr r0, _08126418 @ =gStringVar4
- bl StringExpandPlaceholders
-_0812640E:
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_08126418: .4byte gStringVar4
- thumb_func_end sub_81263E4
-
- thumb_func_start sub_812641C
-sub_812641C: @ 812641C
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- ldr r1, [r4, 0x68]
- subs r0, r1
- ldr r1, [r4, 0x64]
- adds r0, r1
- bl ScriptContext2_RunNewScript
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812641C
-
- thumb_func_start sub_8126438
-sub_8126438: @ 8126438
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r7, r0, 0
- bl IsEnigmaBerryValid
- mov r8, r0
- adds r0, r7, 0
- bl ScriptReadWord
- adds r4, r0, 0
- ldr r0, [r7, 0x68]
- subs r4, r0
- ldr r0, [r7, 0x64]
- adds r4, r0
- ldr r6, _08126484 @ =gStringVar1
- ldr r5, _08126488 @ =gSaveBlock1 + 0x3160
- adds r0, r6, 0
- adds r1, r5, 0
- movs r2, 0x7
- bl StringCopyN
- adds r0, r4, 0
- bl SetEnigmaBerry
- ldr r4, _0812648C @ =gStringVar2
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x7
- bl StringCopyN
- mov r0, r8
- cmp r0, 0
- bne _08126498
- ldr r0, _08126490 @ =gStringVar4
- ldr r1, _08126494 @ =gOtherText_BerryObtainedDadHasIt
- b _081264B8
- .align 2, 0
-_08126484: .4byte gStringVar1
-_08126488: .4byte gSaveBlock1 + 0x3160
-_0812648C: .4byte gStringVar2
-_08126490: .4byte gStringVar4
-_08126494: .4byte gOtherText_BerryObtainedDadHasIt
-_08126498:
- adds r0, r6, 0
- adds r1, r4, 0
- bl StringCompare
- cmp r0, 0
- beq _081264B4
- ldr r0, _081264AC @ =gStringVar4
- ldr r1, _081264B0 @ =gOtherText_BerryTransformed
- b _081264B8
- .align 2, 0
-_081264AC: .4byte gStringVar4
-_081264B0: .4byte gOtherText_BerryTransformed
-_081264B4:
- ldr r0, _081264D4 @ =gStringVar4
- ldr r1, _081264D8 @ =gOtherText_BerryAlreadyObtained
-_081264B8:
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r7, 0x6C]
- bl IsEnigmaBerryValid
- cmp r0, 0x1
- bne _081264E0
- ldr r0, _081264DC @ =0x0000402d
- movs r1, 0x1
- bl VarSet
- b _081264E4
- .align 2, 0
-_081264D4: .4byte gStringVar4
-_081264D8: .4byte gOtherText_BerryAlreadyObtained
-_081264DC: .4byte 0x0000402d
-_081264E0:
- movs r0, 0x1
- str r0, [r7, 0x6C]
-_081264E4:
- movs r0, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8126438
-
- thumb_func_start sub_81264F0
-sub_81264F0: @ 81264F0
- push {r4,lr}
- adds r4, r0, 0
- ldr r2, [r4, 0x8]
- ldrb r0, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- ldrb r1, [r2]
- adds r2, 0x1
- str r2, [r4, 0x8]
- bl GiveGiftRibbonToParty
- ldr r0, _0812651C @ =gStringVar4
- ldr r1, _08126520 @ =gOtherText_SpecialRibbonReceived
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812651C: .4byte gStringVar4
-_08126520: .4byte gOtherText_SpecialRibbonReceived
- thumb_func_end sub_81264F0
-
- thumb_func_start sub_8126524
-sub_8126524: @ 8126524
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r0, [r4, 0x8]
- ldrb r1, [r0]
- mov r9, r1
- adds r0, 0x1
- str r0, [r4, 0x8]
- ldrb r1, [r0]
- mov r8, r1
- adds r1, r0, 0x1
- str r1, [r4, 0x8]
- ldrb r6, [r0, 0x1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- adds r0, r4, 0
- bl ScriptReadWord
- adds r5, r0, 0
- ldr r0, [r4, 0x68]
- subs r5, r0
- ldr r0, [r4, 0x64]
- adds r5, r0
- adds r0, r4, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, [r4, 0x68]
- subs r1, r0
- ldr r0, [r4, 0x64]
- adds r1, r0
- subs r1, r5
- lsls r1, 16
- lsrs r1, 16
- str r6, [sp]
- adds r0, r5, 0
- mov r2, r9
- mov r3, r8
- bl InitRamScript
- movs r0, 0
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8126524
-
- thumb_func_start sub_812658C
-sub_812658C: @ 812658C
- push {r4,lr}
- adds r4, r0, 0
- bl EnableNationalPokedex
- ldr r0, _081265A8 @ =gStringVar4
- ldr r1, _081265AC @ =gOtherText_DexUpgraded
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081265A8: .4byte gStringVar4
-_081265AC: .4byte gOtherText_DexUpgraded
- thumb_func_end sub_812658C
-
- thumb_func_start sub_81265B0
-sub_81265B0: @ 81265B0
- push {r4,lr}
- adds r4, r0, 0
- ldr r1, [r4, 0x8]
- ldrb r0, [r1]
- adds r1, 0x1
- str r1, [r4, 0x8]
- bl sub_80EB890
- ldr r0, _081265D4 @ =gStringVar4
- ldr r1, _081265D8 @ =gOtherText_RareWordAdded
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_081265D4: .4byte gStringVar4
-_081265D8: .4byte gOtherText_RareWordAdded
- thumb_func_end sub_81265B0
-
- thumb_func_start sub_81265DC
-sub_81265DC: @ 81265DC
- push {r4,r5,lr}
- ldr r1, [r0, 0x8]
- ldrb r5, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- ldrb r4, [r1]
- adds r1, 0x1
- str r1, [r0, 0x8]
- bl ScriptReadHalfword
- adds r2, r0, 0
- lsls r2, 16
- lsrs r2, 16
- adds r0, r5, 0
- adds r1, r4, 0
- bl sub_81262E4
- movs r0, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81265DC
-
- thumb_func_start sub_8126608
-sub_8126608: @ 8126608
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x88
- adds r6, r0, 0
- bl ScriptReadWord
- ldr r1, [r6, 0x68]
- subs r0, r1
- ldr r1, [r6, 0x64]
- adds r5, r0, r1
- movs r0, 0x64
- adds r0, r5
- mov r8, r0
- add r4, sp, 0x24
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x64
- bl memcpy
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- bne _08126658
- ldr r0, _08126650 @ =gStringVar1
- ldr r1, _08126654 @ =gSystemText_Egg
- movs r2, 0xB
- bl StringCopyN
- b _08126662
- .align 2, 0
-_08126650: .4byte gStringVar1
-_08126654: .4byte gSystemText_Egg
-_08126658:
- ldr r0, _08126678 @ =gStringVar1
- ldr r1, _0812667C @ =gSystemText_Pokemon2
- movs r2, 0xB
- bl StringCopyN
-_08126662:
- ldr r0, _08126680 @ =gPlayerPartyCount
- ldrb r0, [r0]
- cmp r0, 0x6
- bne _0812668C
- ldr r0, _08126684 @ =gStringVar4
- ldr r1, _08126688 @ =gOtherText_PartyIsFull
- bl StringExpandPlaceholders
- movs r0, 0x3
- b _081266F6
- .align 2, 0
-_08126678: .4byte gStringVar1
-_0812667C: .4byte gSystemText_Pokemon2
-_08126680: .4byte gPlayerPartyCount
-_08126684: .4byte gStringVar4
-_08126688: .4byte gOtherText_PartyIsFull
-_0812668C:
- ldr r7, _08126708 @ =gPlayerParty + 5 * 0x64
- adds r0, r7, 0
- adds r1, r5, 0
- movs r2, 0x64
- bl memcpy
- mov r0, sp
- mov r1, r8
- movs r2, 0x24
- bl memcpy
- movs r0, 0xCE
- lsls r0, 1
- cmp r4, r0
- beq _081266C6
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x2
- bl GetNationalPokedexFlag
- adds r0, r4, 0
- movs r1, 0x3
- bl GetNationalPokedexFlag
-_081266C6:
- adds r0, r7, 0
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _081266E4
- adds r0, r7, 0
- mov r1, sp
- bl GiveMailToMon2
-_081266E4:
- bl party_compaction
- bl CalculatePlayerPartyCount
- ldr r0, _0812670C @ =gStringVar4
- ldr r1, _08126710 @ =gOtherText_PokeWasSentOver
- bl StringExpandPlaceholders
- movs r0, 0x2
-_081266F6:
- str r0, [r6, 0x6C]
- movs r0, 0
- add sp, 0x88
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08126708: .4byte gPlayerParty + 5 * 0x64
-_0812670C: .4byte gStringVar4
-_08126710: .4byte gOtherText_PokeWasSentOver
- thumb_func_end sub_8126608
-
- thumb_func_start sub_8126714
-sub_8126714: @ 8126714
- push {r4,lr}
- adds r4, r0, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, [r4, 0x68]
- subs r1, r0
- ldr r0, [r4, 0x64]
- adds r1, r0
- ldr r0, _08126748 @ =gSaveBlock2 + 0x498
- movs r2, 0xBC
- bl memcpy
- bl sub_813601C
- ldr r0, _0812674C @ =gStringVar4
- ldr r1, _08126750 @ =gOtherText_NewTrainerInHoenn
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08126748: .4byte gSaveBlock2 + 0x498
-_0812674C: .4byte gStringVar4
-_08126750: .4byte gOtherText_NewTrainerInHoenn
- thumb_func_end sub_8126714
-
- thumb_func_start sub_8126754
-sub_8126754: @ 8126754
- push {r4,lr}
- adds r4, r0, 0
- bl EnableResetRTC
- ldr r0, _08126770 @ =gStringVar4
- ldr r1, _08126774 @ =gSystemText_ClockAdjustmentUsable
- bl StringExpandPlaceholders
- movs r0, 0x2
- str r0, [r4, 0x6C]
- movs r0, 0
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_08126770: .4byte gStringVar4
-_08126774: .4byte gSystemText_ClockAdjustmentUsable
- thumb_func_end sub_8126754
-
- thumb_func_start sub_8126778
-sub_8126778: @ 8126778
- push {r4-r6,lr}
- adds r6, r0, 0
- bl ScriptReadWord
- adds r5, r0, 0
- adds r0, r6, 0
- bl ScriptReadWord
- adds r4, r0, 0
- ldr r0, [r6, 0x68]
- subs r4, r0
- ldr r0, [r6, 0x64]
- adds r4, r0
- adds r0, r6, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, [r6, 0x68]
- subs r1, r0
- ldr r0, [r6, 0x64]
- adds r1, r0
- subs r1, r4
- adds r0, r4, 0
- bl sub_812616C
- cmp r5, r0
- beq _081267B6
- movs r0, 0
- str r0, [r6, 0x70]
- movs r0, 0x1
- str r0, [r6, 0x6C]
-_081267B6:
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8126778
-
- thumb_func_start sub_81267C0
-sub_81267C0: @ 81267C0
- push {r4-r6,lr}
- adds r6, r0, 0
- bl ScriptReadWord
- adds r5, r0, 0
- adds r0, r6, 0
- bl ScriptReadWord
- adds r4, r0, 0
- ldr r0, [r6, 0x68]
- subs r4, r0
- ldr r0, [r6, 0x64]
- adds r4, r0
- adds r0, r6, 0
- bl ScriptReadWord
- adds r1, r0, 0
- ldr r0, [r6, 0x68]
- subs r1, r0
- ldr r0, [r6, 0x64]
- adds r1, r0
- subs r1, r4
- adds r0, r4, 0
- bl CalcCRC16
- lsls r0, 16
- lsrs r0, 16
- cmp r5, r0
- beq _08126802
- movs r0, 0
- str r0, [r6, 0x70]
- movs r0, 0x1
- str r0, [r6, 0x6C]
-_08126802:
- movs r0, 0x1
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81267C0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 8a7c153b9..ec6754b86 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -7645,7 +7645,7 @@ _08070AF4:
ldr r7, _08070B28 @ =0x0201c000
ldr r0, [r7]
movs r1, 0x1
- bl sub_803B7C8
+ bl MonTryLearningNewMove
lsls r0, 16
lsrs r4, r0, 16
ldr r1, _08070B2C @ =0xfffff282
@@ -7680,7 +7680,7 @@ _08070B40:
lsrs r2, r0, 16
cmp r2, 0
beq _08070B74
- ldr r1, _08070B6C @ =gUnknown_03005E94
+ ldr r1, _08070B6C @ =gCB2_AfterEvolution
ldr r0, _08070B70 @ =sub_80A53F8
str r0, [r1]
ldr r0, [r7]
@@ -7692,7 +7692,7 @@ _08070B40:
bl DestroyTask
b _08070C2C
.align 2, 0
-_08070B6C: .4byte gUnknown_03005E94
+_08070B6C: .4byte gCB2_AfterEvolution
_08070B70: .4byte sub_80A53F8
_08070B74:
adds r0, r6, 0
@@ -7703,7 +7703,7 @@ _08070B7C:
ldr r1, _08070BBC @ =gStringVar1
bl GetMonNickname
ldr r0, _08070BC0 @ =gStringVar2
- ldr r5, _08070BC4 @ =word_2024E82
+ ldr r5, _08070BC4 @ =gMoveToLearn
ldrh r2, [r5]
movs r1, 0xD
muls r1, r2
@@ -7729,7 +7729,7 @@ _08070B7C:
.align 2, 0
_08070BBC: .4byte gStringVar1
_08070BC0: .4byte gStringVar2
-_08070BC4: .4byte word_2024E82
+_08070BC4: .4byte gMoveToLearn
_08070BC8: .4byte gMoveNames
_08070BCC: .4byte gStringVar4
_08070BD0: .4byte gOtherText_WantsToLearn
@@ -7796,7 +7796,7 @@ sub_8070C54: @ 8070C54
ldr r7, _08070C78 @ =0x0201c000
ldr r0, [r7]
movs r1, 0
- bl sub_803B7C8
+ bl MonTryLearningNewMove
lsls r0, 16
lsrs r4, r0, 16
ldr r0, _08070C7C @ =0x0000fffe
@@ -7826,7 +7826,7 @@ _08070C8C:
lsrs r2, r0, 16
cmp r2, 0
beq _08070CC0
- ldr r1, _08070CB8 @ =gUnknown_03005E94
+ ldr r1, _08070CB8 @ =gCB2_AfterEvolution
ldr r0, _08070CBC @ =sub_80A53F8
str r0, [r1]
ldr r0, [r7]
@@ -7838,7 +7838,7 @@ _08070C8C:
bl DestroyTask
b _08070D68
.align 2, 0
-_08070CB8: .4byte gUnknown_03005E94
+_08070CB8: .4byte gCB2_AfterEvolution
_08070CBC: .4byte sub_80A53F8
_08070CC0:
adds r0, r6, 0
@@ -7849,7 +7849,7 @@ _08070CC8:
ldr r1, _08070D08 @ =gStringVar1
bl GetMonNickname
ldr r0, _08070D0C @ =gStringVar2
- ldr r5, _08070D10 @ =word_2024E82
+ ldr r5, _08070D10 @ =gMoveToLearn
ldrh r2, [r5]
movs r1, 0xD
muls r1, r2
@@ -7875,7 +7875,7 @@ _08070CC8:
.align 2, 0
_08070D08: .4byte gStringVar1
_08070D0C: .4byte gStringVar2
-_08070D10: .4byte word_2024E82
+_08070D10: .4byte gMoveToLearn
_08070D14: .4byte gMoveNames
_08070D18: .4byte gStringVar4
_08070D1C: .4byte gOtherText_WantsToLearn
@@ -7971,7 +7971,7 @@ DoEvolutionStoneItemEffect: @ 8070DBC
adds r1, r6, 0
adds r2, r5, 0
bl sub_806E8D0
- ldr r1, _08070E20 @ =gUnknown_03005E94
+ ldr r1, _08070E20 @ =gCB2_AfterEvolution
ldr r0, _08070E24 @ =sub_80A53F8
str r0, [r1]
ldr r0, _08070E28 @ =0x0201c000
@@ -7995,7 +7995,7 @@ DoEvolutionStoneItemEffect: @ 8070DBC
.align 2, 0
_08070E18: .4byte gTasks
_08070E1C: .4byte TaskDummy
-_08070E20: .4byte gUnknown_03005E94
+_08070E20: .4byte gCB2_AfterEvolution
_08070E24: .4byte sub_80A53F8
_08070E28: .4byte 0x0201c000
_08070E2C: .4byte gUnknown_0202E8F4
diff --git a/asm/pokeblock_feed.s b/asm/pokeblock_feed.s
deleted file mode 100644
index 7df634399..000000000
--- a/asm/pokeblock_feed.s
+++ /dev/null
@@ -1,1836 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8147890
-sub_8147890: @ 8147890
- push {lr}
- bl AnimateSprites
- bl BuildOamBuffer
- bl RunTasks
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8147890
-
- thumb_func_start sub_81478A8
-sub_81478A8: @ 81478A8
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_81478A8
-
- thumb_func_start sub_81478BC
-sub_81478BC: @ 81478BC
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _081478D8 @ =gMain
- ldr r1, _081478DC @ =0x0000043c
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xD
- bls _081478CE
- b _08147AD0
-_081478CE:
- lsls r0, 2
- ldr r1, _081478E0 @ =_081478E4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_081478D8: .4byte gMain
-_081478DC: .4byte 0x0000043c
-_081478E0: .4byte _081478E4
- .align 2, 0
-_081478E4:
- .4byte _0814791C
- .4byte _08147938
- .4byte _0814794C
- .4byte _08147960
- .4byte _08147966
- .4byte _08147980
- .4byte _0814798C
- .4byte _081479B8
- .4byte _081479DC
- .4byte _081479F4
- .4byte _08147A20
- .4byte _08147A3C
- .4byte _08147A5C
- .4byte _08147A8C
-_0814791C:
- bl sub_80F9438
- bl sub_80F9368
- bl sub_8147B04
- ldr r1, _08147930 @ =gMain
- ldr r2, _08147934 @ =0x0000043c
- adds r1, r2
- b _08147A4A
- .align 2, 0
-_08147930: .4byte gMain
-_08147934: .4byte 0x0000043c
-_08147938:
- bl ResetPaletteFade
- ldr r2, _08147948 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- b _08147A44
- .align 2, 0
-_08147948: .4byte gPaletteFade
-_0814794C:
- bl ResetSpriteData
- ldr r1, _08147958 @ =gMain
- ldr r2, _0814795C @ =0x0000043c
- adds r1, r2
- b _08147A4A
- .align 2, 0
-_08147958: .4byte gMain
-_0814795C: .4byte 0x0000043c
-_08147960:
- bl FreeAllSpritePalettes
- b _08147A44
-_08147966:
- ldr r0, _08147974 @ =gWindowConfig_81E6E50
- bl SetUpWindowConfig
- ldr r1, _08147978 @ =gMain
- ldr r2, _0814797C @ =0x0000043c
- adds r1, r2
- b _08147A4A
- .align 2, 0
-_08147974: .4byte gWindowConfig_81E6E50
-_08147978: .4byte gMain
-_0814797C: .4byte 0x0000043c
-_08147980:
- ldr r0, _08147988 @ =gWindowConfig_81E6E50
- bl MultistepInitMenuWindowBegin
- b _08147A44
- .align 2, 0
-_08147988: .4byte gWindowConfig_81E6E50
-_0814798C:
- bl MultistepInitMenuWindowContinue
- cmp r0, 0
- bne _08147996
- b _08147AD0
-_08147996:
- ldr r0, _081479A8 @ =0x02000000
- ldr r1, _081479AC @ =0x0001ffff
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- ldr r1, _081479B0 @ =gMain
- ldr r2, _081479B4 @ =0x0000043c
- adds r1, r2
- b _08147A4A
- .align 2, 0
-_081479A8: .4byte 0x02000000
-_081479AC: .4byte 0x0001ffff
-_081479B0: .4byte gMain
-_081479B4: .4byte 0x0000043c
-_081479B8:
- ldr r0, _081479D4 @ =gUnknown_02039310
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _081479D8 @ =gPlayerParty
- adds r0, r1
- bl sub_8147B20
- lsls r0, 24
- cmp r0, 0
- bne _081479D0
- b _08147AD0
-_081479D0:
- b _08147A44
- .align 2, 0
-_081479D4: .4byte gUnknown_02039310
-_081479D8: .4byte gPlayerParty
-_081479DC:
- bl sub_81480B4
- ldr r1, _081479EC @ =0x02000000
- ldr r2, _081479F0 @ =0x0001fffd
- adds r1, r2
- strb r0, [r1]
- b _08147A44
- .align 2, 0
-_081479EC: .4byte 0x02000000
-_081479F0: .4byte 0x0001fffd
-_081479F4:
- ldr r0, _08147A10 @ =gUnknown_02039310
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08147A14 @ =gPlayerParty
- adds r0, r1
- bl sub_8147F84
- ldr r1, _08147A18 @ =0x02000000
- ldr r2, _08147A1C @ =0x0001fffe
- adds r1, r2
- strb r0, [r1]
- b _08147A44
- .align 2, 0
-_08147A10: .4byte gUnknown_02039310
-_08147A14: .4byte gPlayerParty
-_08147A18: .4byte 0x02000000
-_08147A1C: .4byte 0x0001fffe
-_08147A20:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuDrawTextWindow
- ldr r1, _08147A34 @ =gMain
- ldr r2, _08147A38 @ =0x0000043c
- adds r1, r2
- b _08147A4A
- .align 2, 0
-_08147A34: .4byte gMain
-_08147A38: .4byte 0x0000043c
-_08147A3C:
- bl sub_8055870
- cmp r0, 0x1
- beq _08147AD0
-_08147A44:
- ldr r1, _08147A54 @ =gMain
- ldr r0, _08147A58 @ =0x0000043c
- adds r1, r0
-_08147A4A:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08147AD0
- .align 2, 0
-_08147A54: .4byte gMain
-_08147A58: .4byte 0x0000043c
-_08147A5C:
- ldr r3, _08147AB0 @ =0x04000208
- ldrh r2, [r3]
- movs r0, 0
- strh r0, [r3]
- ldr r4, _08147AB4 @ =0x04000200
- ldrh r0, [r4]
- movs r1, 0x1
- orrs r0, r1
- strh r0, [r4]
- strh r2, [r3]
- ldr r2, _08147AB8 @ =REG_DISPSTAT
- ldrh r0, [r2]
- movs r1, 0x8
- orrs r0, r1
- strh r0, [r2]
- ldr r0, _08147ABC @ =sub_81478A8
- bl SetVBlankCallback
- ldr r1, _08147AC0 @ =gMain
- ldr r2, _08147AC4 @ =0x0000043c
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08147A8C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r2, _08147AC8 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _08147ACC @ =sub_8147890
- bl SetMainCallback2
- movs r0, 0x1
- b _08147AD2
- .align 2, 0
-_08147AB0: .4byte 0x04000208
-_08147AB4: .4byte 0x04000200
-_08147AB8: .4byte REG_DISPSTAT
-_08147ABC: .4byte sub_81478A8
-_08147AC0: .4byte gMain
-_08147AC4: .4byte 0x0000043c
-_08147AC8: .4byte gPaletteFade
-_08147ACC: .4byte sub_8147890
-_08147AD0:
- movs r0, 0
-_08147AD2:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81478BC
-
- thumb_func_start sub_8147ADC
-sub_8147ADC: @ 8147ADC
- push {lr}
-_08147ADE:
- bl sub_81478BC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08147AF2
- movs r0, 0x1
- bl sub_8147DDC
- b _08147AFE
-_08147AF2:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08147ADE
-_08147AFE:
- pop {r0}
- bx r0
- thumb_func_end sub_8147ADC
-
- thumb_func_start sub_8147B04
-sub_8147B04: @ 8147B04
- ldr r1, _08147B18 @ =REG_BG1CNT
- ldr r2, _08147B1C @ =0x00001d02
- adds r0, r2, 0
- strh r0, [r1]
- subs r1, 0xA
- movs r2, 0x9A
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- bx lr
- .align 2, 0
-_08147B18: .4byte REG_BG1CNT
-_08147B1C: .4byte 0x00001d02
- thumb_func_end sub_8147B04
-
- thumb_func_start sub_8147B20
-sub_8147B20: @ 8147B20
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r0, 0
- ldr r0, _08147B40 @ =0x02000000
- ldr r1, _08147B44 @ =0x0001ffff
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x8
- bls _08147B34
- b _08147C84
-_08147B34:
- lsls r0, 2
- ldr r1, _08147B48 @ =_08147B4C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08147B40: .4byte 0x02000000
-_08147B44: .4byte 0x0001ffff
-_08147B48: .4byte _08147B4C
- .align 2, 0
-_08147B4C:
- .4byte _08147B70
- .4byte _08147BB8
- .4byte _08147BF0
- .4byte _08147BFC
- .4byte _08147C08
- .4byte _08147C14
- .4byte _08147C2C
- .4byte _08147C38
- .4byte _08147C60
-_08147B70:
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- lsls r0, r5, 3
- ldr r1, _08147BAC @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _08147BB0 @ =gMonFrontPicCoords
- lsls r2, r5, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- movs r3, 0x80
- lsls r3, 18
- ldr r4, _08147BB4 @ =gUnknown_081FAF4C
- ldr r4, [r4, 0x4]
- str r4, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- bl HandleLoadSpecialPokePic
- b _08147C40
- .align 2, 0
-_08147BAC: .4byte gMonFrontPicTable
-_08147BB0: .4byte gMonFrontPicCoords
-_08147BB4: .4byte gUnknown_081FAF4C
-_08147BB8:
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- adds r6, r0, 0
- adds r0, r4, 0
- movs r1, 0x1
- bl GetMonData
- adds r1, r0, 0
- adds r0, r5, 0
- adds r2, r6, 0
- bl sub_80409C8
- adds r4, r0, 0
- bl LoadCompressedObjectPalette
- ldrh r0, [r4, 0x4]
- movs r1, 0x1
- bl GetMonSpriteTemplate_803C56C
- b _08147C40
-_08147BF0:
- ldr r0, _08147BF8 @ =gUnknown_083F7F74
- bl LoadCompressedObjectPic
- b _08147C40
- .align 2, 0
-_08147BF8: .4byte gUnknown_083F7F74
-_08147BFC:
- ldr r0, _08147C04 @ =gUnknown_083F7F7C
- bl LoadCompressedObjectPalette
- b _08147C40
- .align 2, 0
-_08147C04: .4byte gUnknown_083F7F7C
-_08147C08:
- ldr r0, _08147C10 @ =gUnknown_084121DC
- bl LoadCompressedObjectPic
- b _08147C40
- .align 2, 0
-_08147C10: .4byte gUnknown_084121DC
-_08147C14:
- ldr r0, _08147C24 @ =gScriptItemId
- ldrb r0, [r0]
- bl sub_8147C90
- ldr r0, _08147C28 @ =gUnknown_02039350
- bl LoadCompressedObjectPalette
- b _08147C40
- .align 2, 0
-_08147C24: .4byte gScriptItemId
-_08147C28: .4byte gUnknown_02039350
-_08147C2C:
- ldr r0, _08147C34 @ =gBattleTerrainTiles_Building
- movs r1, 0xC0
- lsls r1, 19
- b _08147C3C
- .align 2, 0
-_08147C34: .4byte gBattleTerrainTiles_Building
-_08147C38:
- ldr r0, _08147C50 @ =gUnknown_08E782FC
- ldr r1, _08147C54 @ =0x0600e800
-_08147C3C:
- bl LZDecompressVram
-_08147C40:
- ldr r1, _08147C58 @ =0x02000000
- ldr r0, _08147C5C @ =0x0001ffff
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08147C84
- .align 2, 0
-_08147C50: .4byte gUnknown_08E782FC
-_08147C54: .4byte 0x0600e800
-_08147C58: .4byte 0x02000000
-_08147C5C: .4byte 0x0001ffff
-_08147C60:
- ldr r0, _08147C78 @ =gBattleTerrainPalette_BattleTower
- movs r1, 0x20
- movs r2, 0x60
- bl LoadCompressedPalette
- ldr r0, _08147C7C @ =0x02000000
- ldr r1, _08147C80 @ =0x0001ffff
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x1
- b _08147C86
- .align 2, 0
-_08147C78: .4byte gBattleTerrainPalette_BattleTower
-_08147C7C: .4byte 0x02000000
-_08147C80: .4byte 0x0001ffff
-_08147C84:
- movs r0, 0
-_08147C86:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8147B20
-
- thumb_func_start sub_8147C90
-sub_8147C90: @ 8147C90
- push {lr}
- lsls r0, 24
- lsrs r0, 21
- ldr r1, _08147CB8 @ =gSaveBlock1 + 0x7F8
- adds r0, r1
- movs r1, 0
- bl sub_810CA9C
- lsls r0, 24
- ldr r2, _08147CBC @ =gUnknown_02039350
- ldr r1, _08147CC0 @ =gUnknown_084120A4
- lsrs r0, 22
- subs r0, 0x4
- adds r0, r1
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, _08147CC4 @ =0x000039e2
- strh r0, [r2, 0x4]
- pop {r0}
- bx r0
- .align 2, 0
-_08147CB8: .4byte gSaveBlock1 + 0x7F8
-_08147CBC: .4byte gUnknown_02039350
-_08147CC0: .4byte gUnknown_084120A4
-_08147CC4: .4byte 0x000039e2
- thumb_func_end sub_8147C90
-
- thumb_func_start sub_8147CC8
-sub_8147CC8: @ 8147CC8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08147D00 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08147CDC
- b _08147DCE
-_08147CDC:
- ldr r0, _08147D04 @ =gTasks
- lsls r2, r4, 2
- adds r1, r2, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0x8
- ldrsh r3, [r1, r0]
- ldr r0, _08147D08 @ =0x0000010d
- adds r5, r2, 0
- cmp r3, r0
- beq _08147D50
- cmp r3, r0
- bgt _08147D0C
- cmp r3, 0
- beq _08147D20
- cmp r3, 0xFF
- beq _08147D38
- b _08147D8C
- .align 2, 0
-_08147D00: .4byte gPaletteFade
-_08147D04: .4byte gTasks
-_08147D08: .4byte 0x0000010d
-_08147D0C:
- ldr r0, _08147D1C @ =0x00000119
- cmp r3, r0
- beq _08147D68
- adds r0, 0x10
- cmp r3, r0
- beq _08147D80
- b _08147D8C
- .align 2, 0
-_08147D1C: .4byte 0x00000119
-_08147D20:
- ldr r0, _08147D30 @ =gUnknown_03005F3C
- strb r3, [r0]
- ldr r0, _08147D34 @ =gUnknown_03005F94
- strh r3, [r0]
- bl sub_81481DC
- b _08147D8C
- .align 2, 0
-_08147D30: .4byte gUnknown_03005F3C
-_08147D34: .4byte gUnknown_03005F94
-_08147D38:
- ldr r0, _08147D48 @ =0x02000000
- ldr r2, _08147D4C @ =0x0001fffd
- adds r0, r2
- ldrb r0, [r0]
- ldrb r1, [r1, 0xA]
- bl sub_8148108
- b _08147D8C
- .align 2, 0
-_08147D48: .4byte 0x02000000
-_08147D4C: .4byte 0x0001fffd
-_08147D50:
- bl sub_814817C
- ldr r1, _08147D60 @ =0x02000000
- ldr r2, _08147D64 @ =0x0001fffc
- adds r1, r2
- strb r0, [r1]
- b _08147D8C
- .align 2, 0
-_08147D60: .4byte 0x02000000
-_08147D64: .4byte 0x0001fffc
-_08147D68:
- ldr r0, _08147D78 @ =0x02000000
- ldr r1, _08147D7C @ =0x0001fffe
- adds r0, r1
- ldrb r0, [r0]
- bl sub_8148044
- b _08147D8C
- .align 2, 0
-_08147D78: .4byte 0x02000000
-_08147D7C: .4byte 0x0001fffe
-_08147D80:
- ldr r0, _08147D88 @ =sub_8147E40
- str r0, [r1]
- b _08147DCE
- .align 2, 0
-_08147D88: .4byte sub_8147E40
-_08147D8C:
- ldr r0, _08147DA0 @ =gUnknown_03005F94
- ldr r1, _08147DA4 @ =gUnknown_03005F34
- ldrh r2, [r0]
- ldrh r0, [r1]
- cmp r2, r0
- bcs _08147DA8
- bl sub_814825C
- b _08147DB8
- .align 2, 0
-_08147DA0: .4byte gUnknown_03005F94
-_08147DA4: .4byte gUnknown_03005F34
-_08147DA8:
- cmp r2, r0
- bne _08147DB8
- ldr r0, _08147DD4 @ =gTasks
- adds r1, r5, r4
- lsls r1, 3
- adds r1, r0
- movs r0, 0xFE
- strh r0, [r1, 0x8]
-_08147DB8:
- ldr r1, _08147DD8 @ =gUnknown_03005F94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- ldr r0, _08147DD4 @ =gTasks
- adds r1, r5, r4
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
-_08147DCE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08147DD4: .4byte gTasks
-_08147DD8: .4byte gUnknown_03005F94
- thumb_func_end sub_8147CC8
-
- thumb_func_start sub_8147DDC
-sub_8147DDC: @ 8147DDC
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _08147E08 @ =sub_8147CC8
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _08147E0C @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0
- strh r0, [r1, 0x8]
- strh r4, [r1, 0xA]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08147E08: .4byte sub_8147CC8
-_08147E0C: .4byte gTasks
- thumb_func_end sub_8147DDC
-
- thumb_func_start sub_8147E10
-sub_8147E10: @ 8147E10
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl MenuUpdateWindowText
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08147E30
- ldr r0, _08147E38 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _08147E3C @ =sub_8147F4C
- str r0, [r1]
-_08147E30:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08147E38: .4byte gTasks
-_08147E3C: .4byte sub_8147F4C
- thumb_func_end sub_8147E10
-
- thumb_func_start sub_8147E40
-sub_8147E40: @ 8147E40
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _08147E94 @ =gUnknown_02039310
- ldrb r1, [r0]
- movs r0, 0x64
- adds r5, r1, 0
- muls r5, r0
- ldr r0, _08147E98 @ =gPlayerParty
- adds r5, r0
- ldr r0, _08147E9C @ =gScriptItemId
- ldrh r4, [r0]
- lsls r4, 3
- ldr r0, _08147EA0 @ =gSaveBlock1 + 0x7F8
- adds r4, r0
- adds r0, r5, 0
- bl GetNature
- lsls r0, 24
- lsrs r0, 24
- adds r1, r4, 0
- bl sub_810CAE4
- ldr r6, _08147EA4 @ =gUnknown_02039312
- strh r0, [r6]
- ldr r1, _08147EA8 @ =gStringVar1
- adds r0, r5, 0
- bl GetMonNickname
- ldr r1, _08147EAC @ =gStringVar2
- adds r0, r4, 0
- bl sub_810CB44
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08147EB8
- ldr r0, _08147EB0 @ =gStringVar4
- ldr r1, _08147EB4 @ =gContestStatsText_NormallyAte
- bl StringExpandPlaceholders
- b _08147ED8
- .align 2, 0
-_08147E94: .4byte gUnknown_02039310
-_08147E98: .4byte gPlayerParty
-_08147E9C: .4byte gScriptItemId
-_08147EA0: .4byte gSaveBlock1 + 0x7F8
-_08147EA4: .4byte gUnknown_02039312
-_08147EA8: .4byte gStringVar1
-_08147EAC: .4byte gStringVar2
-_08147EB0: .4byte gStringVar4
-_08147EB4: .4byte gContestStatsText_NormallyAte
-_08147EB8:
- cmp r0, 0
- ble _08147ED0
- ldr r0, _08147EC8 @ =gStringVar4
- ldr r1, _08147ECC @ =gContestStatsText_HappilyAte
- bl StringExpandPlaceholders
- b _08147ED8
- .align 2, 0
-_08147EC8: .4byte gStringVar4
-_08147ECC: .4byte gContestStatsText_HappilyAte
-_08147ED0:
- ldr r0, _08147EF8 @ =gStringVar4
- ldr r1, _08147EFC @ =gContestStatsText_DisdainfullyAte
- bl StringExpandPlaceholders
-_08147ED8:
- ldr r0, _08147EF8 @ =gStringVar4
- movs r1, 0x1
- movs r2, 0xF
- bl MenuPrintMessage
- ldr r1, _08147F00 @ =gTasks
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- adds r0, r1
- ldr r1, _08147F04 @ =sub_8147E10
- str r1, [r0]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08147EF8: .4byte gStringVar4
-_08147EFC: .4byte gContestStatsText_DisdainfullyAte
-_08147F00: .4byte gTasks
-_08147F04: .4byte sub_8147E10
- thumb_func_end sub_8147E40
-
- thumb_func_start sub_8147F08
-sub_8147F08: @ 8147F08
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08147F3C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08147F34
- ldr r0, _08147F40 @ =gMPlay_BGM
- ldr r1, _08147F44 @ =0x0000ffff
- movs r2, 0x80
- lsls r2, 1
- bl m4aMPlayVolumeControl
- ldr r0, _08147F48 @ =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_08147F34:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08147F3C: .4byte gPaletteFade
-_08147F40: .4byte gMPlay_BGM
-_08147F44: .4byte 0x0000ffff
-_08147F48: .4byte gMain
- thumb_func_end sub_8147F08
-
- thumb_func_start sub_8147F4C
-sub_8147F4C: @ 8147F4C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _08147F7C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08147F80 @ =sub_8147F08
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08147F7C: .4byte gTasks
-_08147F80: .4byte sub_8147F08
- thumb_func_end sub_8147F4C
-
- thumb_func_start sub_8147F84
-sub_8147F84: @ 8147F84
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- adds r5, r0, 0
- movs r1, 0x41
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- ldr r0, _08148024 @ =gUnknown_02024E8C
- movs r1, 0x30
- movs r2, 0x50
- movs r3, 0x2
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r0, _08148028 @ =gUnknown_03005F24
- strh r4, [r0]
- ldr r0, _0814802C @ =gUnknown_03005F2C
- mov r1, r8
- strb r1, [r0]
- adds r0, r5, 0
- bl GetNature
- ldr r1, _08148030 @ =gUnknown_03005F30
- strb r0, [r1]
- ldr r7, _08148034 @ =gSprites
- mov r1, r8
- lsls r0, r1, 4
- add r0, r8
- lsls r5, r0, 2
- adds r6, r5, r7
- strh r4, [r6, 0x32]
- adds r0, r7, 0
- adds r0, 0x1C
- adds r0, r5, r0
- ldr r1, _08148038 @ =SpriteCallbackDummy
- str r1, [r0]
- ldr r0, _0814803C @ =gUnknown_03005F28
- mov r9, r0
- movs r0, 0x1
- mov r1, r9
- strb r0, [r1]
- adds r0, r4, 0
- bl sub_8040A3C
- lsls r0, 24
- cmp r0, 0
- bne _08148016
- adds r0, r7, 0
- adds r0, 0x10
- adds r0, r5, r0
- ldr r1, _08148040 @ =gSpriteAffineAnimTable_84120EC
- str r1, [r0]
- ldrb r3, [r6, 0x1]
- movs r0, 0x3
- orrs r3, r0
- strb r3, [r6, 0x1]
- lsrs r1, r3, 6
- ldrb r2, [r6, 0x3]
- lsrs r2, 6
- lsls r3, 30
- lsrs r3, 30
- adds r0, r6, 0
- bl CalcCenterToCornerVec
- movs r0, 0
- mov r1, r9
- strb r0, [r1]
-_08148016:
- mov r0, r8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08148024: .4byte gUnknown_02024E8C
-_08148028: .4byte gUnknown_03005F24
-_0814802C: .4byte gUnknown_03005F2C
-_08148030: .4byte gUnknown_03005F30
-_08148034: .4byte gSprites
-_08148038: .4byte SpriteCallbackDummy
-_0814803C: .4byte gUnknown_03005F28
-_08148040: .4byte gSpriteAffineAnimTable_84120EC
- thumb_func_end sub_8147F84
-
- thumb_func_start sub_8148044
-sub_8148044: @ 8148044
- lsls r0, 24
- lsrs r0, 24
- ldr r3, _0814806C @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r2, r1, r3
- movs r0, 0x30
- strh r0, [r2, 0x20]
- movs r0, 0x50
- strh r0, [r2, 0x22]
- ldr r0, _08148070 @ =0x0000fff8
- strh r0, [r2, 0x2E]
- movs r0, 0x1
- strh r0, [r2, 0x30]
- adds r3, 0x1C
- adds r1, r3
- ldr r0, _08148074 @ =sub_8148078
- str r0, [r1]
- bx lr
- .align 2, 0
-_0814806C: .4byte gSprites
-_08148070: .4byte 0x0000fff8
-_08148074: .4byte sub_8148078
- thumb_func_end sub_8148044
-
- thumb_func_start sub_8148078
-sub_8148078: @ 8148078
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x20]
- adds r0, 0x4
- strh r0, [r4, 0x20]
- ldrh r0, [r4, 0x2E]
- ldrh r2, [r4, 0x22]
- adds r1, r0, r2
- strh r1, [r4, 0x22]
- ldrh r1, [r4, 0x30]
- adds r0, r1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- cmp r0, 0
- bne _0814809E
- ldrh r0, [r4, 0x32]
- movs r1, 0
- bl PlayCry1
-_0814809E:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x9
- bne _081480AA
- ldr r0, _081480B0 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_081480AA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_081480B0: .4byte SpriteCallbackDummy
- thumb_func_end sub_8148078
-
- thumb_func_start sub_81480B4
-sub_81480B4: @ 81480B4
- push {r4,r5,lr}
- movs r0, 0xBC
- movs r1, 0x64
- movs r2, 0x2
- bl sub_810BA50
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r5, _081480FC @ =gSprites
- lsls r3, r4, 4
- adds r3, r4
- lsls r3, 2
- adds r0, r3, r5
- ldrb r2, [r0, 0x1]
- movs r1, 0x4
- negs r1, r1
- ands r1, r2
- movs r2, 0x1
- orrs r1, r2
- strb r1, [r0, 0x1]
- adds r1, r5, 0
- adds r1, 0x10
- adds r1, r3, r1
- ldr r2, _08148100 @ =gSpriteAffineAnimTable_84121A0
- str r2, [r1]
- adds r5, 0x1C
- adds r3, r5
- ldr r1, _08148104 @ =SpriteCallbackDummy
- str r1, [r3]
- bl InitSpriteAffineAnim
- adds r0, r4, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_081480FC: .4byte gSprites
-_08148100: .4byte gSpriteAffineAnimTable_84121A0
-_08148104: .4byte SpriteCallbackDummy
- thumb_func_end sub_81480B4
-
- thumb_func_start sub_8148108
-sub_8148108: @ 8148108
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- adds r5, r1, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _08148148 @ =gSprites
- mov r8, r0
- lsls r0, r7, 4
- adds r0, r7
- lsls r6, r0, 2
- mov r0, r8
- adds r4, r6, r0
- ldrb r0, [r4, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldrb r0, [r4, 0x1]
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r4, 0x1]
- cmp r5, 0
- bne _08148150
- mov r0, r8
- adds r0, 0x10
- adds r0, r6, r0
- ldr r1, _0814814C @ =gSpriteAffineAnimTable_84121A4
- b _08148158
- .align 2, 0
-_08148148: .4byte gSprites
-_0814814C: .4byte gSpriteAffineAnimTable_84121A4
-_08148150:
- mov r0, r8
- adds r0, 0x10
- adds r0, r6, r0
- ldr r1, _08148174 @ =gSpriteAffineAnimTable_84121A8
-_08148158:
- str r1, [r0]
- lsls r0, r7, 4
- adds r0, r7
- lsls r0, 2
- ldr r1, _08148178 @ =gSprites
- adds r0, r1
- bl InitSpriteAffineAnim
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08148174: .4byte gSpriteAffineAnimTable_84121A8
-_08148178: .4byte gSprites
- thumb_func_end sub_8148108
-
- thumb_func_start sub_814817C
-sub_814817C: @ 814817C
- push {lr}
- ldr r0, _081481A4 @ =gSpriteTemplate_84121E4
- movs r1, 0xAE
- movs r2, 0x54
- movs r3, 0x1
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _081481A8 @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldr r2, _081481AC @ =0x0000fff4
- strh r2, [r1, 0x2E]
- movs r2, 0x1
- strh r2, [r1, 0x30]
- pop {r1}
- bx r1
- .align 2, 0
-_081481A4: .4byte gSpriteTemplate_84121E4
-_081481A8: .4byte gSprites
-_081481AC: .4byte 0x0000fff4
- thumb_func_end sub_814817C
-
- thumb_func_start sub_81481B0
-sub_81481B0: @ 81481B0
- push {lr}
- adds r2, r0, 0
- ldrh r0, [r2, 0x20]
- subs r0, 0x4
- strh r0, [r2, 0x20]
- ldrh r0, [r2, 0x2E]
- ldrh r3, [r2, 0x22]
- adds r1, r0, r3
- strh r1, [r2, 0x22]
- ldrh r1, [r2, 0x30]
- adds r0, r1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _081481D6
- adds r0, r2, 0
- bl DestroySprite
-_081481D6:
- pop {r0}
- bx r0
- thumb_func_end sub_81481B0
-
- thumb_func_start sub_81481DC
-sub_81481DC: @ 81481DC
- push {r4-r7,lr}
- ldr r6, _0814824C @ =gUnknown_03005F34
- movs r0, 0x1
- strh r0, [r6]
- ldr r1, _08148250 @ =gNatureToMonPokeblockAnim
- ldr r0, _08148254 @ =gUnknown_03005F30
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrb r3, [r0]
- movs r4, 0
- ldr r2, _08148258 @ =gMonPokeblockAnims
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r7, r2, 0
- adds r7, 0x8
- adds r0, r1, r7
- ldrh r0, [r0]
- adds r0, 0x1
- strh r0, [r6]
- adds r5, r2, 0
- adds r5, 0x12
- adds r1, r5
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x1
- beq _08148244
- adds r2, r6, 0
- adds r6, r5, 0
- adds r5, r7, 0
-_0814821A:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r4, 0x7
- bhi _08148244
- lsls r1, r3, 2
- adds r1, r3
- lsls r1, 2
- adds r0, r1, r5
- ldrh r0, [r0]
- ldrh r7, [r2]
- adds r0, r7
- strh r0, [r2]
- adds r1, r6
- movs r7, 0
- ldrsh r0, [r1, r7]
- cmp r0, 0x1
- bne _0814821A
-_08148244:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0814824C: .4byte gUnknown_03005F34
-_08148250: .4byte gNatureToMonPokeblockAnim
-_08148254: .4byte gUnknown_03005F30
-_08148258: .4byte gMonPokeblockAnims
- thumb_func_end sub_81481DC
-
- thumb_func_start sub_814825C
-sub_814825C: @ 814825C
- push {lr}
- ldr r0, _08148274 @ =gUnknown_03005F3C
- ldrb r0, [r0]
- cmp r0, 0x5A
- bls _08148268
- b _08148532
-_08148268:
- lsls r0, 2
- ldr r1, _08148278 @ =_0814827C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08148274: .4byte gUnknown_03005F3C
-_08148278: .4byte _0814827C
- .align 2, 0
-_0814827C:
- .4byte _081483E8
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _0814843C
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _0814847A
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _081484CC
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148524
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
- .4byte _08148532
-_081483E8:
- ldr r2, _0814841C @ =gUnknown_03005F40
- ldr r1, _08148420 @ =gNatureToMonPokeblockAnim
- ldr r0, _08148424 @ =gUnknown_03005F30
- ldrb r0, [r0]
- lsls r0, 1
- adds r0, r1
- ldrb r0, [r0]
- strb r0, [r2]
- ldr r2, _08148428 @ =gUnknown_03005F20
- ldr r0, _0814842C @ =gUnknown_03005F2C
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r0, _08148430 @ =gSprites
- adds r1, r0
- str r1, [r2]
- ldr r0, _08148434 @ =gUnknown_03005F50
- movs r2, 0x44
- bl memcpy
- ldr r1, _08148438 @ =gUnknown_03005F3C
- movs r0, 0xA
- strb r0, [r1]
- b _08148532
- .align 2, 0
-_0814841C: .4byte gUnknown_03005F40
-_08148420: .4byte gNatureToMonPokeblockAnim
-_08148424: .4byte gUnknown_03005F30
-_08148428: .4byte gUnknown_03005F20
-_0814842C: .4byte gUnknown_03005F2C
-_08148430: .4byte gSprites
-_08148434: .4byte gUnknown_03005F50
-_08148438: .4byte gUnknown_03005F3C
-_0814843C:
- bl sub_8148540
- ldr r1, _081484A4 @ =gNatureToMonPokeblockAnim
- ldr r0, _081484A8 @ =gUnknown_03005F30
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08148474
- ldr r3, _081484AC @ =gUnknown_03005F20
- ldr r2, [r3]
- ldrb r0, [r2, 0x1]
- movs r1, 0x3
- orrs r0, r1
- strb r0, [r2, 0x1]
- ldr r2, [r3]
- ldrb r1, [r2, 0x3]
- movs r0, 0x3F
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x3]
- ldr r0, [r3]
- ldr r1, _081484B0 @ =gSpriteAffineAnimTable_8412050
- str r1, [r0, 0x10]
- bl InitSpriteAffineAnim
-_08148474:
- ldr r1, _081484B4 @ =gUnknown_03005F3C
- movs r0, 0x32
- strb r0, [r1]
-_0814847A:
- ldr r1, _081484A4 @ =gNatureToMonPokeblockAnim
- ldr r0, _081484A8 @ =gUnknown_03005F30
- ldrb r0, [r0]
- lsls r0, 1
- adds r1, 0x1
- adds r2, r0, r1
- ldrb r1, [r2]
- cmp r1, 0
- beq _081484EE
- ldr r0, _081484B8 @ =gUnknown_03005F28
- ldrb r0, [r0]
- cmp r0, 0
- bne _081484BC
- ldr r0, _081484AC @ =gUnknown_03005F20
- ldr r0, [r0]
- adds r1, 0xA
- lsls r1, 24
- lsrs r1, 24
- bl StartSpriteAffineAnim
- b _081484EE
- .align 2, 0
-_081484A4: .4byte gNatureToMonPokeblockAnim
-_081484A8: .4byte gUnknown_03005F30
-_081484AC: .4byte gUnknown_03005F20
-_081484B0: .4byte gSpriteAffineAnimTable_8412050
-_081484B4: .4byte gUnknown_03005F3C
-_081484B8: .4byte gUnknown_03005F28
-_081484BC:
- ldr r0, _081484C8 @ =gUnknown_03005F20
- ldr r0, [r0]
- ldrb r1, [r2]
- bl StartSpriteAffineAnim
- b _081484EE
- .align 2, 0
-_081484C8: .4byte gUnknown_03005F20
-_081484CC:
- bl sub_81485CC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08148532
- ldr r0, _081484F8 @ =gUnknown_03005FA0
- movs r1, 0x12
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _08148504
- ldr r1, _081484FC @ =gUnknown_03005F40
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_8148540
-_081484EE:
- ldr r1, _08148500 @ =gUnknown_03005F3C
- movs r0, 0x3C
- strb r0, [r1]
- b _08148532
- .align 2, 0
-_081484F8: .4byte gUnknown_03005FA0
-_081484FC: .4byte gUnknown_03005F40
-_08148500: .4byte gUnknown_03005F3C
-_08148504:
- ldr r0, _0814851C @ =gUnknown_03005F20
- ldr r0, [r0]
- ldrb r0, [r0, 0x3]
- lsls r0, 26
- lsrs r0, 27
- bl FreeOamMatrix
- ldr r1, _08148520 @ =gUnknown_03005F3C
- movs r0, 0x46
- strb r0, [r1]
- b _08148532
- .align 2, 0
-_0814851C: .4byte gUnknown_03005F20
-_08148520: .4byte gUnknown_03005F3C
-_08148524:
- bl sub_8148618
- ldr r0, _08148538 @ =gUnknown_03005F40
- movs r1, 0
- strb r1, [r0]
- ldr r0, _0814853C @ =gUnknown_03005F3C
- strb r1, [r0]
-_08148532:
- pop {r0}
- bx r0
- .align 2, 0
-_08148538: .4byte gUnknown_03005F40
-_0814853C: .4byte gUnknown_03005F3C
- thumb_func_end sub_814825C
-
- thumb_func_start sub_8148540
-sub_8148540: @ 8148540
- push {r4-r7,lr}
- movs r4, 0
- ldr r5, _081485B4 @ =gUnknown_03005FA0
- mov r12, r5
- ldr r7, _081485B8 @ =gMonPokeblockAnims
- ldr r6, _081485BC @ =gUnknown_03005F40
-_0814854C:
- lsls r2, r4, 1
- mov r0, r12
- adds r3, r2, r0
- ldrb r1, [r6]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, r0
- adds r2, r7
- ldrh r0, [r2]
- strh r0, [r3]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x9
- bls _0814854C
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _081485C4
- movs r2, 0
- ldrsh r0, [r5, r2]
- movs r2, 0x4
- ldrsh r1, [r5, r2]
- bl Sin
- strh r0, [r5, 0x14]
- movs r1, 0
- ldrsh r0, [r5, r1]
- movs r2, 0x6
- ldrsh r1, [r5, r2]
- bl Cos
- strh r0, [r5, 0x16]
- ldrh r0, [r5, 0x8]
- strh r0, [r5, 0x18]
- ldr r0, _081485C0 @ =gUnknown_03005F20
- ldr r1, [r0]
- ldrh r0, [r1, 0x24]
- strh r0, [r5, 0x1A]
- ldrh r0, [r1, 0x26]
- strh r0, [r5, 0x1C]
- bl sub_8148710
- ldrh r0, [r5, 0x18]
- strh r0, [r5, 0x8]
- bl sub_814862C
- ldrh r0, [r5, 0x18]
- strh r0, [r5, 0x8]
- movs r0, 0
- b _081485C6
- .align 2, 0
-_081485B4: .4byte gUnknown_03005FA0
-_081485B8: .4byte gMonPokeblockAnims
-_081485BC: .4byte gUnknown_03005F40
-_081485C0: .4byte gUnknown_03005F20
-_081485C4:
- movs r0, 0x1
-_081485C6:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8148540
-
- thumb_func_start sub_81485CC
-sub_81485CC: @ 81485CC
- push {r4,lr}
- ldr r3, _08148604 @ =gUnknown_03005FA0
- ldrh r0, [r3, 0x18]
- ldrh r1, [r3, 0x8]
- subs r0, r1
- lsls r0, 16
- ldr r1, _08148608 @ =gUnknown_03005F20
- ldr r4, [r1]
- lsrs r0, 15
- ldr r1, _0814860C @ =0x0201d000
- adds r2, r0, r1
- ldrh r2, [r2]
- strh r2, [r4, 0x24]
- movs r2, 0x80
- lsls r2, 3
- adds r1, r2
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r4, 0x26]
- ldrh r0, [r3, 0x8]
- subs r0, 0x1
- strh r0, [r3, 0x8]
- lsls r0, 16
- cmp r0, 0
- beq _08148610
- movs r0, 0
- b _08148612
- .align 2, 0
-_08148604: .4byte gUnknown_03005FA0
-_08148608: .4byte gUnknown_03005F20
-_0814860C: .4byte 0x0201d000
-_08148610:
- movs r0, 0x1
-_08148612:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81485CC
-
- thumb_func_start sub_8148618
-sub_8148618: @ 8148618
- push {lr}
- ldr r0, _08148628 @ =gUnknown_03005F20
- ldr r0, [r0]
- bl FreeSpriteOamMatrix
- movs r0, 0
- pop {r1}
- bx r1
- .align 2, 0
-_08148628: .4byte gUnknown_03005F20
- thumb_func_end sub_8148618
-
- thumb_func_start sub_814862C
-sub_814862C: @ 814862C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- ldr r1, _08148700 @ =gUnknown_03005FA0
- ldrh r0, [r1, 0x10]
- mov r8, r0
- ldrh r0, [r1, 0x18]
- mov r2, r8
- subs r0, r2
- lsls r0, 16
- lsrs r7, r0, 16
- ldrh r0, [r1, 0xC]
- ldrh r3, [r1, 0x1A]
- adds r0, r3
- lsls r0, 16
- lsrs r0, 16
- str r0, [sp]
- ldrh r0, [r1, 0xE]
- ldrh r1, [r1, 0x1C]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- mov r9, r0
- movs r6, 0
- subs r0, r7, 0x1
- ldr r4, _08148704 @ =0x0201cffe
- mov r10, r4
- cmp r6, r0
- bge _081486D4
- ldr r1, [sp]
- lsls r0, r1, 16
- asrs r0, 16
- str r0, [sp, 0x4]
-_08148674:
- mov r2, r8
- adds r5, r2, r6
- lsls r5, 1
- ldr r4, _08148708 @ =0x0201d000
- adds r3, r5, r4
- ldrh r2, [r3]
- ldr r0, [sp, 0x4]
- subs r1, r2, r0
- ldr r4, _0814870C @ =0x0201d400
- adds r5, r4
- ldrh r0, [r5]
- mov r12, r0
- mov r4, r9
- lsls r0, r4, 16
- asrs r0, 16
- mov r4, r12
- subs r0, r4, r0
- lsls r4, r0, 16
- lsrs r4, 16
- lsls r1, 16
- asrs r1, 16
- adds r6, 0x1
- adds r0, r1, 0
- muls r0, r6
- adds r1, r7, 0
- str r2, [sp, 0x8]
- str r3, [sp, 0xC]
- bl __divsi3
- ldr r2, [sp, 0x8]
- subs r2, r0
- ldr r3, [sp, 0xC]
- strh r2, [r3]
- lsls r4, 16
- asrs r4, 16
- adds r0, r4, 0
- muls r0, r6
- adds r1, r7, 0
- bl __divsi3
- ldrh r1, [r5]
- subs r1, r0
- strh r1, [r5]
- lsls r6, 16
- lsrs r6, 16
- subs r0, r7, 0x1
- cmp r6, r0
- blt _08148674
-_081486D4:
- mov r1, r8
- adds r0, r1, r7
- lsls r0, 1
- mov r2, r10
- adds r1, r0, r2
- mov r3, sp
- ldrh r3, [r3]
- strh r3, [r1]
- movs r1, 0x80
- lsls r1, 3
- add r1, r10
- adds r0, r1
- mov r4, r9
- strh r4, [r0]
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08148700: .4byte gUnknown_03005FA0
-_08148704: .4byte 0x0201cffe
-_08148708: .4byte 0x0201d000
-_0814870C: .4byte 0x0201d400
- thumb_func_end sub_814862C
-
- thumb_func_start sub_8148710
-sub_8148710: @ 8148710
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r0, 0
- str r0, [sp]
- ldr r1, _081487A4 @ =gUnknown_03005FA0
- ldrh r2, [r1, 0x1A]
- ldrh r0, [r1, 0x14]
- subs r2, r0
- ldrh r3, [r1, 0x1C]
- ldrh r0, [r1, 0x16]
- subs r3, r0
- adds r6, r1, 0
- ldr r1, _081487A8 @ =0x0201d000
- mov r9, r1
- lsls r2, 16
- asrs r2, 16
- mov r8, r2
- movs r2, 0x80
- lsls r2, 3
- add r2, r9
- mov r10, r2
- lsls r3, 16
- asrs r7, r3, 16
-_08148746:
- movs r1, 0xA
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bge _08148750
- negs r0, r0
-_08148750:
- lsls r0, 16
- lsrs r0, 16
- ldrh r2, [r6, 0x6]
- adds r0, r2
- lsls r5, r0, 16
- strh r0, [r6, 0x6]
- ldrh r2, [r6, 0x4]
- movs r1, 0x4
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bge _0814876A
- movs r0, 0x1
- str r0, [sp]
-_0814876A:
- ldrh r0, [r6, 0x18]
- ldrh r1, [r6, 0x8]
- subs r0, r1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r1, 0
- beq _081487F0
- ldr r1, [sp]
- cmp r1, 0
- bne _081487AC
- movs r1, 0
- ldrsh r0, [r6, r1]
- lsrs r5, 24
- adds r1, r2, r5
- lsls r1, 16
- asrs r1, 16
- bl Sin
- lsls r4, 1
- mov r2, r9
- adds r1, r4, r2
- add r0, r8
- strh r0, [r1]
- movs r1, 0
- ldrsh r0, [r6, r1]
- ldrh r1, [r6, 0x6]
- adds r1, r5
- b _081487CE
- .align 2, 0
-_081487A4: .4byte gUnknown_03005FA0
-_081487A8: .4byte 0x0201d000
-_081487AC:
- movs r1, 0
- ldrsh r0, [r6, r1]
- lsrs r5, 24
- subs r1, r2, r5
- lsls r1, 16
- asrs r1, 16
- bl Sin
- lsls r4, 1
- mov r2, r9
- adds r1, r4, r2
- add r0, r8
- strh r0, [r1]
- movs r1, 0
- ldrsh r0, [r6, r1]
- ldrh r1, [r6, 0x6]
- subs r1, r5
-_081487CE:
- lsls r1, 16
- asrs r1, 16
- bl Cos
- add r4, r10
- adds r0, r7, r0
- strh r0, [r4]
- ldrh r0, [r6, 0x2]
- ldrh r2, [r6]
- adds r0, r2
- movs r1, 0xFF
- ands r0, r1
- strh r0, [r6]
- ldrh r0, [r6, 0x8]
- subs r0, 0x1
- strh r0, [r6, 0x8]
- b _08148746
-_081487F0:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8148710
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokedex_area_screen.s b/asm/pokedex_area_screen.s
index 542eed201..9e380f597 100644
--- a/asm/pokedex_area_screen.s
+++ b/asm/pokedex_area_screen.s
@@ -518,7 +518,7 @@ _08110A44:
bl GetRoamerLocation
ldrb r0, [r4, 0x10]
ldrb r1, [r4, 0x11]
- bl get_mapheader_by_bank_and_number
+ bl Overworld_GetMapHeaderByGroupAndId
ldrb r0, [r0, 0x14]
strh r0, [r4, 0x12]
movs r3, 0x88
@@ -566,7 +566,7 @@ SetAreaHasMon: @ 8110A98
adds r0, r5
strb r1, [r0, 0x11]
adds r0, r2, 0
- bl get_mapheader_by_bank_and_number
+ bl Overworld_GetMapHeaderByGroupAndId
ldrb r0, [r0, 0x14]
bl sub_80FBA04
ldrh r1, [r4]
@@ -599,7 +599,7 @@ SetSpecialMapHasMon: @ 8110AE4
cmp r0, 0x1F
bhi _08110B96
adds r0, r2, 0
- bl get_mapheader_by_bank_and_number
+ bl Overworld_GetMapHeaderByGroupAndId
adds r6, r0, 0
ldrb r0, [r6, 0x14]
cmp r0, 0x57
diff --git a/asm/pokemon_menu.s b/asm/pokemon_menu.s
deleted file mode 100644
index fe1b41724..000000000
--- a/asm/pokemon_menu.s
+++ /dev/null
@@ -1,3438 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_8089A70
-sub_8089A70: @ 8089A70
- push {lr}
- ldr r0, _08089A88 @ =gPaletteFade
- ldrb r1, [r0, 0x8]
- movs r2, 0x80
- orrs r1, r2
- strb r1, [r0, 0x8]
- movs r0, 0
- movs r1, 0
- bl OpenPartyMenu
- pop {r0}
- bx r0
- .align 2, 0
-_08089A88: .4byte gPaletteFade
- thumb_func_end sub_8089A70
-
- thumb_func_start sub_8089A8C
-sub_8089A8C: @ 8089A8C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r5, _08089AD0 @ =gUnknown_0202FFA9
- movs r0, 0
- strb r0, [r5]
- ldr r0, _08089AD4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08089AD8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _08089AE0
- ldr r4, _08089ADC @ =gUnknown_0202FFAA
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl AppendToList
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x1
- bl AppendToList
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x3
- bl AppendToList
- b _08089BC8
- .align 2, 0
-_08089AD0: .4byte gUnknown_0202FFA9
-_08089AD4: .4byte gLastFieldPokeMenuOpened
-_08089AD8: .4byte gPlayerParty
-_08089ADC: .4byte gUnknown_0202FFAA
-_08089AE0:
- movs r6, 0
- ldr r0, _08089B24 @ =gUnknown_0839F554
- ldrh r0, [r0]
- mov r8, r0
-_08089AE8:
- movs r4, 0
- adds r7, r6, 0x1
- mov r0, r8
- cmp r0, 0xFF
- beq _08089B48
- ldr r5, _08089B24 @ =gUnknown_0839F554
-_08089AF4:
- ldr r0, _08089B28 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08089B2C @ =gPlayerParty
- adds r0, r1
- adds r1, r6, 0
- adds r1, 0xD
- bl GetMonData
- lsls r1, r4, 1
- adds r1, r5
- ldrh r1, [r1]
- cmp r0, r1
- bne _08089B38
- adds r2, r4, 0
- adds r2, 0xA
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _08089B30 @ =gUnknown_0202FFAA
- ldr r1, _08089B34 @ =gUnknown_0202FFA9
- bl AppendToList
- b _08089B48
- .align 2, 0
-_08089B24: .4byte gUnknown_0839F554
-_08089B28: .4byte gLastFieldPokeMenuOpened
-_08089B2C: .4byte gPlayerParty
-_08089B30: .4byte gUnknown_0202FFAA
-_08089B34: .4byte gUnknown_0202FFA9
-_08089B38:
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- lsls r0, r4, 1
- adds r0, r5
- ldrh r0, [r0]
- cmp r0, 0xFF
- bne _08089AF4
-_08089B48:
- lsls r0, r7, 16
- lsrs r6, r0, 16
- cmp r6, 0x3
- bls _08089AE8
- ldr r4, _08089BA4 @ =gUnknown_0202FFAA
- ldr r5, _08089BA8 @ =gUnknown_0202FFA9
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl AppendToList
- ldr r6, _08089BAC @ =gPlayerParty + 1 * 0x64
- adds r0, r6, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _08089B76
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x1
- bl AppendToList
-_08089B76:
- ldr r0, _08089BB0 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- adds r1, r6, 0
- subs r1, 0x64
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _08089BB4
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x7
- bl AppendToList
- b _08089BBE
- .align 2, 0
-_08089BA4: .4byte gUnknown_0202FFAA
-_08089BA8: .4byte gUnknown_0202FFA9
-_08089BAC: .4byte gPlayerParty + 1 * 0x64
-_08089BB0: .4byte gLastFieldPokeMenuOpened
-_08089BB4:
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0x2
- bl AppendToList
-_08089BBE:
- ldr r0, _08089BD4 @ =gUnknown_0202FFAA
- ldr r1, _08089BD8 @ =gUnknown_0202FFA9
- movs r2, 0x3
- bl AppendToList
-_08089BC8:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08089BD4: .4byte gUnknown_0202FFAA
-_08089BD8: .4byte gUnknown_0202FFA9
- thumb_func_end sub_8089A8C
-
- thumb_func_start sub_8089BDC
-sub_8089BDC: @ 8089BDC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- adds r5, r0, 0
- adds r6, r1, 0
- adds r4, r2, 0
- mov r8, r3
- ldr r7, [sp, 0x20]
- ldr r1, [sp, 0x24]
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x5
- bl sub_806D538
- adds r4, r5, r4
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- lsls r3, r0, 1
- adds r3, r6, r3
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl MenuDrawTextWindow
- adds r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- adds r6, 0x1
- lsls r6, 24
- lsrs r6, 24
- str r7, [sp]
- adds r0, r5, 0
- adds r1, r6, 0
- mov r2, r8
- ldr r3, [sp, 0x1C]
- bl PrintMenuItemsReordered
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8089BDC
-
- thumb_func_start sub_8089C50
-sub_8089C50: @ 8089C50
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r4, [sp, 0x18]
- ldr r5, [sp, 0x1C]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- movs r4, 0x1
- str r4, [sp, 0x8]
- bl sub_8089BDC
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8089C50
-
- thumb_func_start sub_8089C7C
-sub_8089C7C: @ 8089C7C
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r6, _08089CC8 @ =gUnknown_0202FFA9
- ldrb r0, [r6]
- lsls r0, 1
- movs r4, 0x12
- subs r4, r0
- lsls r4, 24
- lsrs r4, 24
- ldrb r3, [r6]
- ldr r0, _08089CCC @ =gPokemonMenuActions
- str r0, [sp]
- ldr r0, _08089CD0 @ =gUnknown_0202FFAA
- str r0, [sp, 0x4]
- movs r0, 0x3
- str r0, [sp, 0x8]
- movs r0, 0x13
- adds r1, r4, 0
- movs r2, 0xA
- bl sub_8089BDC
- movs r2, 0x1
- orrs r2, r4
- ldrb r3, [r6]
- str r5, [sp]
- movs r0, 0x9
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x14
- bl InitMenu
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08089CC8: .4byte gUnknown_0202FFA9
-_08089CCC: .4byte gPokemonMenuActions
-_08089CD0: .4byte gUnknown_0202FFAA
- thumb_func_end sub_8089C7C
-
- thumb_func_start sub_8089CD4
-sub_8089CD4: @ 8089CD4
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08089D00 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08089D84
- adds r0, r4, 0
- bl sub_806BD80
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _08089D04
- cmp r0, 0x2
- beq _08089D60
- b _08089D84
- .align 2, 0
-_08089D00: .4byte gPaletteFade
-_08089D04:
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_806CA38
- ldr r1, _08089D48 @ =gLastFieldPokeMenuOpened
- strb r0, [r1]
- ldrb r1, [r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08089D4C @ =gPlayerParty
- adds r0, r1
- ldr r1, _08089D50 @ =gStringVar1
- bl GetMonNickname
- bl sub_8089A8C
- ldr r0, _08089D54 @ =gUnknown_0202FFA8
- strb r5, [r0]
- movs r0, 0
- bl sub_8089C7C
- ldr r1, _08089D58 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08089D5C @ =sub_8089D94
- str r1, [r0]
- adds r0, r4, 0
- bl sub_808B5B4
- b _08089D84
- .align 2, 0
-_08089D48: .4byte gLastFieldPokeMenuOpened
-_08089D4C: .4byte gPlayerParty
-_08089D50: .4byte gStringVar1
-_08089D54: .4byte gUnknown_0202FFA8
-_08089D58: .4byte gTasks
-_08089D5C: .4byte sub_8089D94
-_08089D60:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _08089D8C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _08089D90 @ =sub_8089E4C
- str r1, [r0]
-_08089D84:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08089D8C: .4byte gTasks
-_08089D90: .4byte sub_8089E4C
- thumb_func_end sub_8089CD4
-
- thumb_func_start sub_8089D94
-sub_8089D94: @ 8089D94
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r5, r4, 0
- ldr r0, _08089DC8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08089E44
- ldr r2, _08089DCC @ =gMain
- ldrh r0, [r2, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _08089DD4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursor
- ldr r1, _08089DD0 @ =gUnknown_0202FFA8
- strb r0, [r1]
- b _08089E1A
- .align 2, 0
-_08089DC8: .4byte gPaletteFade
-_08089DCC: .4byte gMain
-_08089DD0: .4byte gUnknown_0202FFA8
-_08089DD4:
- cmp r1, 0x80
- bne _08089DF0
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- bl MoveMenuCursor
- ldr r1, _08089DEC @ =gUnknown_0202FFA8
- strb r0, [r1]
- b _08089E1A
- .align 2, 0
-_08089DEC: .4byte gUnknown_0202FFA8
-_08089DF0:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08089E30
- movs r0, 0x5
- bl PlaySE
- ldr r1, _08089E24 @ =gPokemonMenuActions
- ldr r2, _08089E28 @ =gUnknown_0202FFAA
- ldr r0, _08089E2C @ =gUnknown_0202FFA8
- ldrb r0, [r0]
- adds r0, r2
- ldrb r0, [r0]
- lsls r0, 3
- adds r1, 0x4
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
-_08089E1A:
- adds r0, r4, 0
- bl sub_808B5B4
- b _08089E44
- .align 2, 0
-_08089E24: .4byte gPokemonMenuActions
-_08089E28: .4byte gUnknown_0202FFAA
-_08089E2C: .4byte gUnknown_0202FFA8
-_08089E30:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08089E44
- adds r0, r5, 0
- bl PokemonMenu_Cancel
- adds r0, r5, 0
- bl sub_808B5B4
-_08089E44:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8089D94
-
- thumb_func_start sub_8089E4C
-sub_8089E4C: @ 8089E4C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _08089E78 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _08089E72
- ldr r0, _08089E7C @ =gLastFieldPokeMenuOpened
- strb r1, [r0]
- ldr r0, _08089E80 @ =sub_805469C
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_08089E72:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08089E78: .4byte gPaletteFade
-_08089E7C: .4byte gLastFieldPokeMenuOpened
-_08089E80: .4byte sub_805469C
- thumb_func_end sub_8089E4C
-
- thumb_func_start sub_8089E84
-sub_8089E84: @ 8089E84
- push {lr}
- ldr r0, _08089EAC @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08089EB0 @ =gPlayerParty
- adds r0, r1
- ldr r1, _08089EB4 @ =gStringVar1
- bl GetMonNickname
- bl sub_8089A8C
- ldr r1, _08089EB8 @ =gUnknown_0202FFA8
- movs r0, 0
- strb r0, [r1]
- movs r0, 0
- bl sub_8089C7C
- pop {r0}
- bx r0
- .align 2, 0
-_08089EAC: .4byte gLastFieldPokeMenuOpened
-_08089EB0: .4byte gPlayerParty
-_08089EB4: .4byte gStringVar1
-_08089EB8: .4byte gUnknown_0202FFA8
- thumb_func_end sub_8089E84
-
- thumb_func_start sub_8089EBC
-sub_8089EBC: @ 8089EBC
- push {r4,r5,lr}
- ldr r4, _08089EC4 @ =0x0201b260
- ldr r5, _08089EC8 @ =gUnknown_020384F0
- b _08089ED8
- .align 2, 0
-_08089EC4: .4byte 0x0201b260
-_08089EC8: .4byte gUnknown_020384F0
-_08089ECC:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08089F04
-_08089ED8:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08089ECC
- ldrb r0, [r4]
- ldrb r1, [r5]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldr r1, _08089F0C @ =gLastFieldPokeMenuOpened
- ldrb r0, [r5]
- strb r0, [r1]
- bl sub_8089E84
- ldr r0, _08089F10 @ =sub_806AEDC
- bl SetMainCallback2
-_08089F04:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08089F0C: .4byte gLastFieldPokeMenuOpened
-_08089F10: .4byte sub_806AEDC
- thumb_func_end sub_8089EBC
-
- thumb_func_start sub_8089F14
-sub_8089F14: @ 8089F14
- push {lr}
- ldr r2, _08089F38 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r2, _08089F3C @ =sub_8089D94
- movs r0, 0
- movs r1, 0xFF
- movs r3, 0x5
- bl sub_806AF4C
- ldr r0, _08089F40 @ =sub_8089EBC
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_08089F38: .4byte gPaletteFade
-_08089F3C: .4byte sub_8089D94
-_08089F40: .4byte sub_8089EBC
- thumb_func_end sub_8089F14
-
- thumb_func_start sub_8089F44
-sub_8089F44: @ 8089F44
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _08089FAC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08089FA2
- ldr r2, _08089FB0 @ =gSprites
- ldr r1, _08089FB4 @ =gTasks
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- adds r0, r1
- ldrh r1, [r0, 0xE]
- lsls r1, 16
- asrs r1, 24
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r4, [r0, 0x2E]
- lsls r4, 24
- lsrs r4, 24
- adds r0, r3, 0
- bl DestroyTask
- ldr r0, _08089FB8 @ =0x0201b000
- ldr r1, _08089FBC @ =0x00000262
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, _08089FC0 @ =gPlayerParty
- ldr r1, _08089FC4 @ =gPlayerPartyCount
- ldrb r2, [r1]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _08089FC8 @ =sub_8089F14
- str r5, [sp]
- adds r1, r4, 0
- bl ShowPokemonSummaryScreen
-_08089FA2:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08089FAC: .4byte gPaletteFade
-_08089FB0: .4byte gSprites
-_08089FB4: .4byte gTasks
-_08089FB8: .4byte 0x0201b000
-_08089FBC: .4byte 0x00000262
-_08089FC0: .4byte gPlayerParty
-_08089FC4: .4byte gPlayerPartyCount
-_08089FC8: .4byte sub_8089F14
- thumb_func_end sub_8089F44
-
- thumb_func_start PokemonMenu_Summary
-PokemonMenu_Summary: @ 8089FCC
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _08089FFC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A000 @ =sub_8089F44
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08089FFC: .4byte gTasks
-_0808A000: .4byte sub_8089F44
- thumb_func_end PokemonMenu_Summary
-
- thumb_func_start sub_808A004
-sub_808A004: @ 808A004
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0808A024 @ =sub_806CA60
- ldr r2, _0808A028 @ =sub_8089CD4
- bl SetTaskFuncWithFollowupFunc
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- pop {r0}
- bx r0
- .align 2, 0
-_0808A024: .4byte sub_806CA60
-_0808A028: .4byte sub_8089CD4
- thumb_func_end sub_808A004
-
- thumb_func_start PokemonMenu_Switch
-PokemonMenu_Switch: @ 808A02C
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- ldr r0, _0808A054 @ =0x02001000
- ldr r1, _0808A058 @ =sub_806CD5C
- str r1, [r0, 0xC]
- ldr r1, _0808A05C @ =0x0001a272
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0]
- adds r0, r4, 0
- bl sub_808A004
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A054: .4byte 0x02001000
-_0808A058: .4byte sub_806CD5C
-_0808A05C: .4byte 0x0001a272
- thumb_func_end PokemonMenu_Switch
-
- thumb_func_start sub_808A060
-sub_808A060: @ 808A060
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0808A0D0 @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0x40
- bne _0808A086
- ldr r4, _0808A0D4 @ =gUnknown_0202FFA8
- ldrb r0, [r4]
- cmp r0, 0
- beq _0808A086
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursor
- strb r0, [r4]
- movs r0, 0x5
- bl PlaySE
-_0808A086:
- ldr r0, _0808A0D0 @ =gMain
- ldrh r0, [r0, 0x2E]
- cmp r0, 0x80
- bne _0808A0A4
- ldr r4, _0808A0D4 @ =gUnknown_0202FFA8
- ldrb r0, [r4]
- cmp r0, 0x2
- beq _0808A0A4
- movs r0, 0x1
- bl MoveMenuCursor
- strb r0, [r4]
- movs r0, 0x5
- bl PlaySE
-_0808A0A4:
- ldr r0, _0808A0D0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0808A0E0
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0808A0D8 @ =gUnknown_0839F578
- ldr r2, _0808A0DC @ =gPokemonMenuActions
- ldr r0, _0808A0D4 @ =gUnknown_0202FFA8
- ldrb r3, [r0]
- movs r0, 0
- bl PartyMenuGetPopupMenuFunc
- adds r1, r0, 0
- adds r0, r5, 0
- bl _call_via_r1
- b _0808A0F6
- .align 2, 0
-_0808A0D0: .4byte gMain
-_0808A0D4: .4byte gUnknown_0202FFA8
-_0808A0D8: .4byte gUnknown_0839F578
-_0808A0DC: .4byte gPokemonMenuActions
-_0808A0E0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0808A0F6
- ldr r1, _0808A0FC @ =gUnknown_0839F578
- movs r0, 0
- bl sub_806E7D0
- adds r0, r5, 0
- bl PokemonMenu_CancelSubmenu
-_0808A0F6:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A0FC: .4byte gUnknown_0839F578
- thumb_func_end sub_808A060
-
- thumb_func_start sub_808A100
-sub_808A100: @ 808A100
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0808A130 @ =gUnknown_0839F578
- ldr r2, _0808A134 @ =gPokemonMenuActions
- movs r0, 0
- movs r3, 0
- bl sub_806E750
- movs r0, 0xD
- movs r1, 0x2
- bl sub_806D538
- ldr r1, _0808A138 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A13C @ =sub_808A060
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A130: .4byte gUnknown_0839F578
-_0808A134: .4byte gPokemonMenuActions
-_0808A138: .4byte gTasks
-_0808A13C: .4byte sub_808A060
- thumb_func_end sub_808A100
-
- thumb_func_start PokemonMenu_Item
-PokemonMenu_Item: @ 808A140
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- ldr r1, _0808A174 @ =gUnknown_0202FFA8
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _0808A178 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A17C @ =sub_808A100
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A174: .4byte gUnknown_0202FFA8
-_0808A178: .4byte gTasks
-_0808A17C: .4byte sub_808A100
- thumb_func_end PokemonMenu_Item
-
- thumb_func_start sub_808A180
-sub_808A180: @ 808A180
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0808A1D0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808A1CA
- adds r0, r5, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0808A1D4 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x40
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl DestroyTask
- lsls r1, r4, 3
- adds r1, r4
- lsls r1, 2
- ldr r0, _0808A1D8 @ =gSaveBlock1 + 0x2B4C
- adds r1, r0
- ldr r2, _0808A1DC @ =sub_808A520
- movs r0, 0x4
- movs r3, 0x3
- bl sub_80E62A0
-_0808A1CA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A1D0: .4byte gPaletteFade
-_0808A1D4: .4byte gPlayerParty
-_0808A1D8: .4byte gSaveBlock1 + 0x2B4C
-_0808A1DC: .4byte sub_808A520
- thumb_func_end sub_808A180
-
- thumb_func_start sub_808A1E0
-sub_808A1E0: @ 808A1E0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808A21C @ =gUnknown_0202E8F6
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0808A216
- adds r0, r4, 0
- bl sub_806CA38
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl SetHeldItemIconVisibility
- movs r0, 0
- movs r1, 0
- bl sub_806D538
- ldr r1, _0808A220 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A224 @ =sub_8089CD4
- str r1, [r0]
-_0808A216:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A21C: .4byte gUnknown_0202E8F6
-_0808A220: .4byte gTasks
-_0808A224: .4byte sub_8089CD4
- thumb_func_end sub_808A1E0
-
- thumb_func_start sub_808A228
-sub_808A228: @ 808A228
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808A268 @ =gScriptItemId
- ldrh r0, [r0]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _0808A278
- ldr r0, _0808A26C @ =gUnknown_0202E8F4
- ldrb r0, [r0]
- cmp r0, 0
- beq _0808A278
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0808A270 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A274 @ =sub_808A180
- str r1, [r0]
- b _0808A29A
- .align 2, 0
-_0808A268: .4byte gScriptItemId
-_0808A26C: .4byte gUnknown_0202E8F4
-_0808A270: .4byte gTasks
-_0808A274: .4byte sub_808A180
-_0808A278:
- movs r0, 0
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r0, 0
- movs r1, 0
- bl sub_806D538
- ldr r0, _0808A2A4 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0808A2A8 @ =sub_8089CD4
- str r0, [r1]
-_0808A29A:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A2A4: .4byte gTasks
-_0808A2A8: .4byte sub_8089CD4
- thumb_func_end sub_808A228
-
- thumb_func_start sub_808A2AC
-sub_808A2AC: @ 808A2AC
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r0, _0808A2D0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808A2CA
- ldr r0, _0808A2D4 @ =gScriptItemId
- ldrh r1, [r0]
- ldr r2, _0808A2D8 @ =sub_808A228
- adds r0, r3, 0
- bl PartyMenuTryGiveMonHeldItem
-_0808A2CA:
- pop {r0}
- bx r0
- .align 2, 0
-_0808A2D0: .4byte gPaletteFade
-_0808A2D4: .4byte gScriptItemId
-_0808A2D8: .4byte sub_808A228
- thumb_func_end sub_808A2AC
-
- thumb_func_start sub_808A2DC
-sub_808A2DC: @ 808A2DC
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r5, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0808A324 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x40
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl DestroyTask
- lsls r1, r4, 3
- adds r1, r4
- lsls r1, 2
- ldr r0, _0808A328 @ =gSaveBlock1 + 0x2B4C
- adds r1, r0
- ldr r2, _0808A32C @ =sub_808A520
- movs r0, 0x4
- movs r3, 0x3
- bl sub_80E62A0
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A324: .4byte gPlayerParty
-_0808A328: .4byte gSaveBlock1 + 0x2B4C
-_0808A32C: .4byte sub_808A520
- thumb_func_end sub_808A2DC
-
- thumb_func_start sub_808A330
-sub_808A330: @ 808A330
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0808A344 @ =gScriptItemId
- ldrh r1, [r1]
- ldr r2, _0808A348 @ =sub_808A2DC
- bl PartyMenuTryGiveMonHeldItem
- pop {r0}
- bx r0
- .align 2, 0
-_0808A344: .4byte gScriptItemId
-_0808A348: .4byte sub_808A2DC
- thumb_func_end sub_808A330
-
- thumb_func_start sub_808A34C
-sub_808A34C: @ 808A34C
- push {lr}
- bl RunTasks
- pop {r0}
- bx r0
- thumb_func_end sub_808A34C
-
- thumb_func_start sub_808A358
-sub_808A358: @ 808A358
- push {r4,lr}
- ldr r4, _0808A360 @ =0x0201b260
- b _0808A370
- .align 2, 0
-_0808A360: .4byte 0x0201b260
-_0808A364:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808A394
-_0808A370:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808A364
- ldrb r0, [r4]
- ldr r1, _0808A39C @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldr r0, _0808A3A0 @ =sub_806AEDC
- bl SetMainCallback2
-_0808A394:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A39C: .4byte gLastFieldPokeMenuOpened
-_0808A3A0: .4byte sub_806AEDC
- thumb_func_end sub_808A358
-
- thumb_func_start sub_808A3A4
-sub_808A3A4: @ 808A3A4
- push {r4,r5,lr}
- ldr r4, _0808A3D8 @ =0x0201b260
- adds r5, r4, 0x2
-_0808A3AA:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808A3E4
- ldrb r0, [r4]
- ldr r1, _0808A3DC @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- movs r0, 0x3
- strb r0, [r5]
- bl sub_8089E84
- ldr r0, _0808A3E0 @ =sub_806AEDC
- bl SetMainCallback2
- b _0808A3F0
- .align 2, 0
-_0808A3D8: .4byte 0x0201b260
-_0808A3DC: .4byte gLastFieldPokeMenuOpened
-_0808A3E0: .4byte sub_806AEDC
-_0808A3E4:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808A3AA
-_0808A3F0:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_808A3A4
-
- thumb_func_start sub_808A3F8
-sub_808A3F8: @ 808A3F8
- push {r4,lr}
- ldr r0, _0808A460 @ =gScriptItemId
- ldrh r0, [r0]
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _0808A47E
- ldr r0, _0808A464 @ =sub_808A330
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r2, _0808A468 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- adds r0, r4, 0
- movs r1, 0
- bl sub_806BD58
- ldr r0, _0808A46C @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- adds r0, r4, 0
- bl sub_806C994
- adds r0, r4, 0
- movs r1, 0
- bl sub_806BF74
- adds r0, r4, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0808A470 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xC
- bl GetMonData
- lsls r0, 24
- cmp r0, 0
- bne _0808A478
- ldr r0, _0808A474 @ =sub_808A34C
- bl SetMainCallback2
- b _0808A4C6
- .align 2, 0
-_0808A460: .4byte gScriptItemId
-_0808A464: .4byte sub_808A330
-_0808A468: .4byte gPaletteFade
-_0808A46C: .4byte gLastFieldPokeMenuOpened
-_0808A470: .4byte gPlayerParty
-_0808A474: .4byte sub_808A34C
-_0808A478:
- adds r0, r4, 0
- bl DestroyTask
-_0808A47E:
- ldr r2, _0808A4A4 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _0808A4A8 @ =gScriptItemId
- ldrh r0, [r0]
- cmp r0, 0
- beq _0808A4B4
- ldr r2, _0808A4AC @ =sub_808A2AC
- movs r0, 0
- movs r1, 0xFF
- movs r3, 0xFF
- bl sub_806AF4C
- ldr r0, _0808A4B0 @ =sub_808A358
- bl SetMainCallback2
- b _0808A4C6
- .align 2, 0
-_0808A4A4: .4byte gPaletteFade
-_0808A4A8: .4byte gScriptItemId
-_0808A4AC: .4byte sub_808A2AC
-_0808A4B0: .4byte sub_808A358
-_0808A4B4:
- ldr r2, _0808A4CC @ =sub_8089D94
- movs r0, 0
- movs r1, 0xFF
- movs r3, 0x5
- bl sub_806AF4C
- ldr r0, _0808A4D0 @ =sub_808A3A4
- bl SetMainCallback2
-_0808A4C6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A4CC: .4byte sub_8089D94
-_0808A4D0: .4byte sub_808A3A4
- thumb_func_end sub_808A3F8
-
- thumb_func_start sub_808A4D4
-sub_808A4D4: @ 808A4D4
- push {r4,lr}
- ldr r4, _0808A4DC @ =0x0201b260
- b _0808A4EC
- .align 2, 0
-_0808A4DC: .4byte 0x0201b260
-_0808A4E0:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808A510
-_0808A4EC:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808A4E0
- ldrb r0, [r4]
- ldr r1, _0808A518 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldr r0, _0808A51C @ =sub_806AEDC
- bl SetMainCallback2
-_0808A510:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A518: .4byte gLastFieldPokeMenuOpened
-_0808A51C: .4byte sub_806AEDC
- thumb_func_end sub_808A4D4
-
- thumb_func_start sub_808A520
-sub_808A520: @ 808A520
- push {r4-r7,lr}
- ldr r2, _0808A584 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _0808A588 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _0808A59C
- ldr r7, _0808A58C @ =gUnknown_0202E8F8
- ldrh r0, [r7]
- cmp r0, 0
- beq _0808A542
- movs r1, 0x1
- bl RemoveBagItem
-_0808A542:
- ldr r6, _0808A590 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r6]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _0808A594 @ =gPlayerParty
- adds r0, r4
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl AddBagItem
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- bl TakeMailFromMon
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- movs r1, 0xC
- adds r2, r7, 0
- bl SetMonData
- ldr r2, _0808A598 @ =sub_8089CD4
- movs r0, 0
- movs r1, 0xFF
- movs r3, 0
- bl sub_806AF4C
- b _0808A5A8
- .align 2, 0
-_0808A584: .4byte gPaletteFade
-_0808A588: .4byte gScriptResult
-_0808A58C: .4byte gUnknown_0202E8F8
-_0808A590: .4byte gLastFieldPokeMenuOpened
-_0808A594: .4byte gPlayerParty
-_0808A598: .4byte sub_8089CD4
-_0808A59C:
- ldr r2, _0808A5B4 @ =sub_808A5BC
- movs r0, 0
- movs r1, 0xFF
- movs r3, 0xFF
- bl sub_806AF4C
-_0808A5A8:
- ldr r0, _0808A5B8 @ =sub_808A4D4
- bl SetMainCallback2
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A5B4: .4byte sub_808A5BC
-_0808A5B8: .4byte sub_808A4D4
- thumb_func_end sub_808A520
-
- thumb_func_start sub_808A5BC
-sub_808A5BC: @ 808A5BC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808A5F0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808A5EA
- ldr r0, _0808A5F4 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r0]
- ldr r1, _0808A5F8 @ =gScriptItemId
- ldrh r1, [r1]
- movs r2, 0
- bl DisplayGiveHeldItemMessage
- ldr r1, _0808A5FC @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A600 @ =sub_808A1E0
- str r1, [r0]
-_0808A5EA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A5F0: .4byte gPaletteFade
-_0808A5F4: .4byte gLastFieldPokeMenuOpened
-_0808A5F8: .4byte gScriptItemId
-_0808A5FC: .4byte gTasks
-_0808A600: .4byte sub_808A1E0
- thumb_func_end sub_808A5BC
-
- thumb_func_start sub_808A604
-sub_808A604: @ 808A604
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808A628 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808A622
- ldr r0, _0808A62C @ =sub_80A61D0
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_0808A622:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A628: .4byte gPaletteFade
-_0808A62C: .4byte sub_80A61D0
- thumb_func_end sub_808A604
-
- thumb_func_start PokemonMenu_GiveItem
-PokemonMenu_GiveItem: @ 808A630
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl sub_806CA38
- ldr r1, _0808A66C @ =gUnknown_0202E8F5
- strb r0, [r1]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0808A670 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A674 @ =sub_808A604
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A66C: .4byte gUnknown_0202E8F5
-_0808A670: .4byte gTasks
-_0808A674: .4byte sub_808A604
- thumb_func_end PokemonMenu_GiveItem
-
- thumb_func_start sub_808A678
-sub_808A678: @ 808A678
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_808A8D4
- pop {r0}
- bx r0
- thumb_func_end sub_808A678
-
- thumb_func_start PokemonMenu_TakeItem
-PokemonMenu_TakeItem: @ 808A688
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- bl sub_806D5A4
- ldr r1, _0808A6B4 @ =sub_808A678
- adds r0, r4, 0
- bl PartyMenuTryGiveMonHeldItem_806ECE8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A6B4: .4byte sub_808A678
- thumb_func_end PokemonMenu_TakeItem
-
- thumb_func_start PokemonMenu_TakeMail
-PokemonMenu_TakeMail: @ 808A6B8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- bl sub_806D5A4
- ldr r1, _0808A6E4 @ =sub_808A678
- adds r0, r4, 0
- bl DoTakeMail
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A6E4: .4byte sub_808A678
- thumb_func_end PokemonMenu_TakeMail
-
- thumb_func_start PokemonMenu_Mail
-PokemonMenu_Mail: @ 808A6E8
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- ldr r1, _0808A728 @ =gUnknown_0202FFA8
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldr r1, _0808A72C @ =gUnknown_0839F584
- ldr r2, _0808A730 @ =gPokemonMenuActions
- movs r0, 0
- movs r3, 0
- bl sub_806E750
- ldr r1, _0808A734 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A738 @ =sub_808A73C
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A728: .4byte gUnknown_0202FFA8
-_0808A72C: .4byte gUnknown_0839F584
-_0808A730: .4byte gPokemonMenuActions
-_0808A734: .4byte gTasks
-_0808A738: .4byte sub_808A73C
- thumb_func_end PokemonMenu_Mail
-
- thumb_func_start sub_808A73C
-sub_808A73C: @ 808A73C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0808A764 @ =gMain
- ldrh r0, [r0, 0x30]
- cmp r0, 0x40
- bne _0808A77A
- movs r0, 0x5
- bl PlaySE
- ldr r4, _0808A768 @ =gUnknown_0202FFA8
- ldrb r0, [r4]
- cmp r0, 0
- bne _0808A770
- ldr r0, _0808A76C @ =gUnknown_0839F584
- ldrb r0, [r0]
- subs r0, 0x1
- lsls r0, 24
- asrs r0, 24
- b _0808A774
- .align 2, 0
-_0808A764: .4byte gMain
-_0808A768: .4byte gUnknown_0202FFA8
-_0808A76C: .4byte gUnknown_0839F584
-_0808A770:
- movs r0, 0x1
- negs r0, r0
-_0808A774:
- bl MoveMenuCursor
- strb r0, [r4]
-_0808A77A:
- ldr r0, _0808A7A0 @ =gMain
- ldrh r0, [r0, 0x30]
- cmp r0, 0x80
- bne _0808A7B4
- movs r0, 0x5
- bl PlaySE
- ldr r4, _0808A7A4 @ =gUnknown_0202FFA8
- ldrb r0, [r4]
- ldr r1, _0808A7A8 @ =gUnknown_0839F584
- ldrb r2, [r1]
- subs r1, r2, 0x1
- cmp r0, r1
- bne _0808A7AC
- movs r0, 0x1
- subs r0, r2
- lsls r0, 24
- asrs r0, 24
- b _0808A7AE
- .align 2, 0
-_0808A7A0: .4byte gMain
-_0808A7A4: .4byte gUnknown_0202FFA8
-_0808A7A8: .4byte gUnknown_0839F584
-_0808A7AC:
- movs r0, 0x1
-_0808A7AE:
- bl MoveMenuCursor
- strb r0, [r4]
-_0808A7B4:
- ldr r0, _0808A7E0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0808A7F0
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0808A7E4 @ =gUnknown_0839F584
- ldr r2, _0808A7E8 @ =gPokemonMenuActions
- ldr r0, _0808A7EC @ =gUnknown_0202FFA8
- ldrb r3, [r0]
- movs r0, 0
- bl PartyMenuGetPopupMenuFunc
- adds r1, r0, 0
- adds r0, r5, 0
- bl _call_via_r1
- b _0808A806
- .align 2, 0
-_0808A7E0: .4byte gMain
-_0808A7E4: .4byte gUnknown_0839F584
-_0808A7E8: .4byte gPokemonMenuActions
-_0808A7EC: .4byte gUnknown_0202FFA8
-_0808A7F0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0808A806
- ldr r1, _0808A80C @ =gUnknown_0839F584
- movs r0, 0
- bl sub_806E7D0
- adds r0, r5, 0
- bl PokemonMenu_Cancel
-_0808A806:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A80C: .4byte gUnknown_0839F584
- thumb_func_end sub_808A73C
-
- thumb_func_start PokemonMenu_ReadMail
-PokemonMenu_ReadMail: @ 808A810
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0808A840 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A844 @ =sub_808A848
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A840: .4byte gTasks
-_0808A844: .4byte sub_808A848
- thumb_func_end PokemonMenu_ReadMail
-
- thumb_func_start sub_808A848
-sub_808A848: @ 808A848
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0808A898 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808A890
- adds r0, r5, 0
- bl sub_806CA38
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0808A89C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x40
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl DestroyTask
- lsls r0, r4, 3
- adds r0, r4
- lsls r0, 2
- ldr r1, _0808A8A0 @ =gSaveBlock1 + 0x2B4C
- adds r0, r1
- ldr r1, _0808A8A4 @ =sub_808A8A8
- movs r2, 0x1
- bl HandleReadMail
-_0808A890:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A898: .4byte gPaletteFade
-_0808A89C: .4byte gPlayerParty
-_0808A8A0: .4byte gSaveBlock1 + 0x2B4C
-_0808A8A4: .4byte sub_808A8A8
- thumb_func_end sub_808A848
-
- thumb_func_start sub_808A8A8
-sub_808A8A8: @ 808A8A8
- push {lr}
- ldr r1, _0808A8C4 @ =gUnknown_020384F0
- ldr r0, _0808A8C8 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r0]
- strb r0, [r1]
- ldr r0, _0808A8CC @ =0x0201b000
- ldr r1, _0808A8D0 @ =0x00000262
- adds r0, r1
- movs r1, 0x4
- strb r1, [r0]
- bl sub_8089F14
- pop {r0}
- bx r0
- .align 2, 0
-_0808A8C4: .4byte gUnknown_020384F0
-_0808A8C8: .4byte gLastFieldPokeMenuOpened
-_0808A8CC: .4byte 0x0201b000
-_0808A8D0: .4byte 0x00000262
- thumb_func_end sub_808A8A8
-
- thumb_func_start sub_808A8D4
-sub_808A8D4: @ 808A8D4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0808A90C @ =gUnknown_0202FFA8
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r0, 0
- movs r1, 0
- bl sub_806D538
- ldr r1, _0808A910 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A914 @ =sub_8089CD4
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A90C: .4byte gUnknown_0202FFA8
-_0808A910: .4byte gTasks
-_0808A914: .4byte sub_8089CD4
- thumb_func_end sub_808A8D4
-
- thumb_func_start PokemonMenu_Cancel
-PokemonMenu_Cancel: @ 808A918
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- movs r0, 0x5
- bl PlaySE
- adds r0, r4, 0
- bl sub_808A8D4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end PokemonMenu_Cancel
-
- thumb_func_start PokemonMenu_CancelSubmenu
-PokemonMenu_CancelSubmenu: @ 808A938
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl HandleDestroyMenuCursors
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- bl sub_806D5A4
- ldr r0, _0808A978 @ =gUnknown_0202FFA8
- ldrb r0, [r0]
- bl sub_8089C7C
- ldr r1, _0808A97C @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808A980 @ =sub_8089D94
- str r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808A978: .4byte gUnknown_0202FFA8
-_0808A97C: .4byte gTasks
-_0808A980: .4byte sub_8089D94
- thumb_func_end PokemonMenu_CancelSubmenu
-
- thumb_func_start PokemonMenu_FieldMove
-PokemonMenu_FieldMove: @ 808A984
- push {r4-r7,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r6, r0, 3
- ldr r7, _0808A9D0 @ =gTasks + 0x8
- adds r4, r6, r7
- bl HandleDestroyMenuCursors
- ldr r1, _0808A9D4 @ =gUnknown_0202FFAA
- ldr r0, _0808A9D8 @ =gUnknown_0202FFA8
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- subs r0, 0xA
- strh r0, [r4, 0x16]
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808A9DC
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldrh r0, [r4, 0x16]
- subs r0, 0xB
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bhi _0808AABA
- movs r0, 0x9
- b _0808AAB2
- .align 2, 0
-_0808A9D0: .4byte gTasks + 0x8
-_0808A9D4: .4byte gUnknown_0202FFAA
-_0808A9D8: .4byte gUnknown_0202FFA8
-_0808A9DC:
- ldrh r1, [r4, 0x16]
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- cmp r0, 0x7
- bgt _0808AA2C
- ldr r2, _0808AA20 @ =0x00000807
- adds r0, r1, r2
- lsls r0, 16
- lsrs r0, 16
- bl FlagGet
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808AA2C
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- bl sub_806D5A4
- ldr r0, _0808AA24 @ =gOtherText_CantBeUsedBadge
- movs r1, 0x1
- bl sub_806E834
- adds r0, r7, 0
- subs r0, 0x8
- adds r0, r6, r0
- ldr r1, _0808AA28 @ =sub_808AAF0
- str r1, [r0]
- b _0808AADA
- .align 2, 0
-_0808AA20: .4byte 0x00000807
-_0808AA24: .4byte gOtherText_CantBeUsedBadge
-_0808AA28: .4byte sub_808AAF0
-_0808AA2C:
- ldr r1, _0808AA78 @ =gFieldMoveFuncs
- movs r2, 0x16
- ldrsh r0, [r4, r2]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0]
- bl _call_via_r0
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AA90
- ldr r1, _0808AA7C @ =gUnknown_0202FFA8
- movs r0, 0
- strb r0, [r1]
- ldrh r0, [r4, 0x16]
- subs r0, 0xB
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _0808AA88
- ldr r1, _0808AA80 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808AA84 @ =sub_808AB34
- str r1, [r0]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0808AADA
- .align 2, 0
-_0808AA78: .4byte gFieldMoveFuncs
-_0808AA7C: .4byte gUnknown_0202FFA8
-_0808AA80: .4byte gTasks
-_0808AA84: .4byte sub_808AB34
-_0808AA88:
- adds r0, r5, 0
- bl sub_8133D28
- b _0808AADA
-_0808AA90:
- movs r0, 0x13
- movs r1, 0
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r1, 0x16
- ldrsh r0, [r4, r1]
- cmp r0, 0x4
- bne _0808AABA
- movs r0, 0x8
- bl TestPlayerAvatarFlags
- lsls r0, 24
- cmp r0, 0
- beq _0808AABA
- movs r0, 0x8
-_0808AAB2:
- movs r1, 0
- bl sub_806D538
- b _0808AACC
-_0808AABA:
- ldr r0, _0808AAE4 @ =gFieldMoveFuncs
- movs r2, 0x16
- ldrsh r1, [r4, r2]
- lsls r1, 3
- adds r1, r0
- ldrb r0, [r1, 0x4]
- movs r1, 0
- bl sub_806D538
-_0808AACC:
- ldr r0, _0808AAE8 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _0808AAEC @ =sub_808ABF4
- str r0, [r1]
-_0808AADA:
- add sp, 0x4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808AAE4: .4byte gFieldMoveFuncs
-_0808AAE8: .4byte gTasks
-_0808AAEC: .4byte sub_808ABF4
- thumb_func_end PokemonMenu_FieldMove
-
- thumb_func_start sub_808AAF0
-sub_808AAF0: @ 808AAF0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808AB2C @ =gUnknown_0202E8F6
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0808AB24
- ldr r0, _0808AB30 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0808AB12
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0808AB24
-_0808AB12:
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- adds r0, r4, 0
- bl PokemonMenu_Cancel
-_0808AB24:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808AB2C: .4byte gUnknown_0202E8F6
-_0808AB30: .4byte gMain
- thumb_func_end sub_808AAF0
-
- thumb_func_start sub_808AB34
-sub_808AB34: @ 808AB34
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808AB6C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808AB84
- ldr r0, _0808AB70 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r2, 0x1E
- ldrsh r0, [r1, r2]
- cmp r0, 0x5
- bne _0808AB62
- bl ShouldDoBrailleFlyEffect
- lsls r0, 24
- cmp r0, 0
- beq _0808AB78
-_0808AB62:
- ldr r0, _0808AB74 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- b _0808AB7E
- .align 2, 0
-_0808AB6C: .4byte gPaletteFade
-_0808AB70: .4byte gTasks
-_0808AB74: .4byte c2_exit_to_overworld_2_switch
-_0808AB78:
- ldr r0, _0808AB8C @ =CB2_InitFlyRegionMap
- bl SetMainCallback2
-_0808AB7E:
- adds r0, r4, 0
- bl DestroyTask
-_0808AB84:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808AB8C: .4byte CB2_InitFlyRegionMap
- thumb_func_end sub_808AB34
-
- thumb_func_start sub_808AB90
-sub_808AB90: @ 808AB90
- push {lr}
- bl pal_fill_black
- ldr r0, _0808ABA4 @ =sub_808ABA8
- movs r1, 0x8
- bl CreateTask
- pop {r0}
- bx r0
- .align 2, 0
-_0808ABA4: .4byte sub_808ABA8
- thumb_func_end sub_808AB90
-
- thumb_func_start sub_808ABA8
-sub_808ABA8: @ 808ABA8
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_807D770
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808ABDE
- ldr r0, _0808ABE4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0808ABE8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- ldr r1, _0808ABEC @ =gUnknown_0202FF84
- str r0, [r1]
- ldr r0, _0808ABF0 @ =gUnknown_03005CE4
- ldr r0, [r0]
- bl _call_via_r0
- adds r0, r4, 0
- bl DestroyTask
-_0808ABDE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808ABE4: .4byte gLastFieldPokeMenuOpened
-_0808ABE8: .4byte gPlayerParty
-_0808ABEC: .4byte gUnknown_0202FF84
-_0808ABF0: .4byte gUnknown_03005CE4
- thumb_func_end sub_808ABA8
-
- thumb_func_start sub_808ABF4
-sub_808ABF4: @ 808ABF4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808AC28 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0808AC0E
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0808AC20
-_0808AC0E:
- movs r0, 0x1
- movs r1, 0x11
- movs r2, 0x1C
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- adds r0, r4, 0
- bl PokemonMenu_Cancel
-_0808AC20:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808AC28: .4byte gMain
- thumb_func_end sub_808ABF4
-
- thumb_func_start sub_808AC2C
-sub_808AC2C: @ 808AC2C
- push {lr}
- ldr r0, _0808AC40 @ =gUnknown_0202FF84
- ldr r1, _0808AC44 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- str r1, [r0]
- movs r0, 0x9
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_0808AC40: .4byte gUnknown_0202FF84
-_0808AC44: .4byte gLastFieldPokeMenuOpened
- thumb_func_end sub_808AC2C
-
- thumb_func_start SetUpFieldMove_Surf
-SetUpFieldMove_Surf: @ 808AC48
- push {lr}
- bl PartyHasMonWithSurf
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AC84
- bl IsPlayerFacingSurfableFishableWater
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AC84
- ldr r1, _0808AC74 @ =gFieldCallback
- ldr r0, _0808AC78 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0808AC7C @ =gUnknown_03005CE4
- ldr r0, _0808AC80 @ =sub_808AC2C
- str r0, [r1]
- movs r0, 0x1
- b _0808AC86
- .align 2, 0
-_0808AC74: .4byte gFieldCallback
-_0808AC78: .4byte sub_808AB90
-_0808AC7C: .4byte gUnknown_03005CE4
-_0808AC80: .4byte sub_808AC2C
-_0808AC84:
- movs r0, 0
-_0808AC86:
- pop {r1}
- bx r1
- thumb_func_end SetUpFieldMove_Surf
-
- thumb_func_start sub_808AC8C
-sub_808AC8C: @ 808AC8C
- push {lr}
- ldr r0, _0808ACA0 @ =gUnknown_0202FF84
- ldr r1, _0808ACA4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- str r1, [r0]
- movs r0, 0x1F
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_0808ACA0: .4byte gUnknown_0202FF84
-_0808ACA4: .4byte gLastFieldPokeMenuOpened
- thumb_func_end sub_808AC8C
-
- thumb_func_start SetUpFieldMove_Fly
-SetUpFieldMove_Fly: @ 808ACA8
- push {lr}
- bl ShouldDoBrailleFlyEffect
- lsls r0, 24
- cmp r0, 0
- beq _0808ACD0
- ldr r1, _0808ACC0 @ =gFieldCallback
- ldr r0, _0808ACC4 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0808ACC8 @ =gUnknown_03005CE4
- ldr r0, _0808ACCC @ =DoBrailleFlyEffect
- b _0808ACF2
- .align 2, 0
-_0808ACC0: .4byte gFieldCallback
-_0808ACC4: .4byte sub_808AB90
-_0808ACC8: .4byte gUnknown_03005CE4
-_0808ACCC: .4byte DoBrailleFlyEffect
-_0808ACD0:
- ldr r0, _0808ACE4 @ =gMapHeader
- ldrb r0, [r0, 0x17]
- bl is_light_level_1_2_3_or_6
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808ACE8
- movs r0, 0
- b _0808ACF6
- .align 2, 0
-_0808ACE4: .4byte gMapHeader
-_0808ACE8:
- ldr r1, _0808ACFC @ =gFieldCallback
- ldr r0, _0808AD00 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0808AD04 @ =gUnknown_03005CE4
- ldr r0, _0808AD08 @ =sub_808AC8C
-_0808ACF2:
- str r0, [r1]
- movs r0, 0x1
-_0808ACF6:
- pop {r1}
- bx r1
- .align 2, 0
-_0808ACFC: .4byte gFieldCallback
-_0808AD00: .4byte sub_808AB90
-_0808AD04: .4byte gUnknown_03005CE4
-_0808AD08: .4byte sub_808AC8C
- thumb_func_end SetUpFieldMove_Fly
-
- thumb_func_start sub_808AD0C
-sub_808AD0C: @ 808AD0C
- push {r4,lr}
- ldr r4, _0808AD14 @ =0x0201b260
- b _0808AD24
- .align 2, 0
-_0808AD14: .4byte 0x0201b260
-_0808AD18:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808AD48
-_0808AD24:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AD18
- ldrb r0, [r4]
- ldr r1, _0808AD50 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldr r0, _0808AD54 @ =sub_806AEDC
- bl SetMainCallback2
-_0808AD48:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808AD50: .4byte gLastFieldPokeMenuOpened
-_0808AD54: .4byte sub_806AEDC
- thumb_func_end sub_808AD0C
-
- thumb_func_start sub_808AD58
-sub_808AD58: @ 808AD58
- push {lr}
- ldr r2, _0808AD7C @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r2, _0808AD80 @ =sub_8089CD4
- movs r0, 0
- movs r1, 0xFF
- movs r3, 0
- bl sub_806AF4C
- ldr r0, _0808AD84 @ =sub_808AD0C
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0808AD7C: .4byte gPaletteFade
-_0808AD80: .4byte sub_8089CD4
-_0808AD84: .4byte sub_808AD0C
- thumb_func_end sub_808AD58
-
- thumb_func_start unref_sub_808AD88
-unref_sub_808AD88: @ 808AD88
- push {lr}
- ldr r0, _0808ADA4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0808ADA8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- pop {r1}
- bx r1
- .align 2, 0
-_0808ADA4: .4byte gLastFieldPokeMenuOpened
-_0808ADA8: .4byte gPlayerParty
- thumb_func_end unref_sub_808AD88
-
- thumb_func_start sub_808ADAC
-sub_808ADAC: @ 808ADAC
- push {lr}
- ldr r0, _0808ADC0 @ =gUnknown_0202FF84
- ldr r1, _0808ADC4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- str r1, [r0]
- movs r0, 0x2C
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_0808ADC0: .4byte gUnknown_0202FF84
-_0808ADC4: .4byte gLastFieldPokeMenuOpened
- thumb_func_end sub_808ADAC
-
- thumb_func_start SetUpFieldMove_Dive
-SetUpFieldMove_Dive: @ 808ADC8
- push {lr}
- bl sub_8068F18
- ldr r1, _0808ADE0 @ =gUnknown_0202FF84
- lsls r0, 24
- lsrs r0, 24
- str r0, [r1, 0x4]
- cmp r0, 0
- bne _0808ADE4
- movs r0, 0
- b _0808ADF2
- .align 2, 0
-_0808ADE0: .4byte gUnknown_0202FF84
-_0808ADE4:
- ldr r1, _0808ADF8 @ =gFieldCallback
- ldr r0, _0808ADFC @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0808AE00 @ =gUnknown_03005CE4
- ldr r0, _0808AE04 @ =sub_808ADAC
- str r0, [r1]
- movs r0, 0x1
-_0808ADF2:
- pop {r1}
- bx r1
- .align 2, 0
-_0808ADF8: .4byte gFieldCallback
-_0808ADFC: .4byte sub_808AB90
-_0808AE00: .4byte gUnknown_03005CE4
-_0808AE04: .4byte sub_808ADAC
- thumb_func_end SetUpFieldMove_Dive
-
- thumb_func_start sub_808AE08
-sub_808AE08: @ 808AE08
- push {lr}
- ldr r0, _0808AE1C @ =gUnknown_0202FF84
- ldr r1, _0808AE20 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- str r1, [r0]
- movs r0, 0x2B
- bl FieldEffectStart
- pop {r0}
- bx r0
- .align 2, 0
-_0808AE1C: .4byte gUnknown_0202FF84
-_0808AE20: .4byte gLastFieldPokeMenuOpened
- thumb_func_end sub_808AE08
-
- thumb_func_start SetUpFieldMove_Waterfall
-SetUpFieldMove_Waterfall: @ 808AE24
- push {r4,lr}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- movs r2, 0
- ldrsh r1, [r4, r2]
- bl MapGridGetMetatileBehaviorAt
- lsls r0, 24
- lsrs r0, 24
- bl MetatileBehavior_IsWaterfall
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AE80
- bl IsPlayerSurfingNorth
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AE80
- ldr r1, _0808AE70 @ =gFieldCallback
- ldr r0, _0808AE74 @ =sub_808AB90
- str r0, [r1]
- ldr r1, _0808AE78 @ =gUnknown_03005CE4
- ldr r0, _0808AE7C @ =sub_808AE08
- str r0, [r1]
- movs r0, 0x1
- b _0808AE82
- .align 2, 0
-_0808AE70: .4byte gFieldCallback
-_0808AE74: .4byte sub_808AB90
-_0808AE78: .4byte gUnknown_03005CE4
-_0808AE7C: .4byte sub_808AE08
-_0808AE80:
- movs r0, 0
-_0808AE82:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end SetUpFieldMove_Waterfall
-
- thumb_func_start sub_808AE8C
-sub_808AE8C: @ 808AE8C
- push {r4-r6,lr}
- ldr r0, _0808AED8 @ =gScriptItemId
- ldrb r0, [r0]
- subs r0, 0x21
- lsls r0, 24
- lsrs r6, r0, 24
- movs r5, 0
-_0808AE9A:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0808AEDC @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0808AF10
- adds r0, r5, 0
- bl sub_806D668
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0808AECE
- adds r0, r4, 0
- adds r1, r6, 0
- bl CanMonLearnTMHM
- cmp r0, 0
- bne _0808AEE0
-_0808AECE:
- adds r0, r5, 0
- movs r1, 0x9A
- bl sub_806BC3C
- b _0808AF10
- .align 2, 0
-_0808AED8: .4byte gScriptItemId
-_0808AEDC: .4byte gPlayerParty
-_0808AEE0:
- ldr r0, _0808AF04 @ =gScriptItemId
- ldrh r0, [r0]
- bl ItemIdToBattleMoveId
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl pokemon_has_move
- lsls r0, 24
- cmp r0, 0
- beq _0808AF08
- adds r0, r5, 0
- movs r1, 0xA8
- bl sub_806BC3C
- b _0808AF10
- .align 2, 0
-_0808AF04: .4byte gScriptItemId
-_0808AF08:
- adds r0, r5, 0
- movs r1, 0x8C
- bl sub_806BC3C
-_0808AF10:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _0808AE9A
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_808AE8C
-
- thumb_func_start sub_808AF20
-sub_808AF20: @ 808AF20
- push {r4,r5,lr}
- movs r5, 0
-_0808AF24:
- movs r0, 0x64
- adds r1, r5, 0
- muls r1, r0
- ldr r0, _0808AF78 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- beq _0808AF66
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0808AF58
- ldr r0, _0808AF7C @ =gScriptItemId
- ldrh r2, [r0]
- adds r0, r4, 0
- movs r1, 0x3
- bl GetEvolutionTargetSpecies
- lsls r0, 16
- cmp r0, 0
- bne _0808AF66
-_0808AF58:
- adds r0, r5, 0
- bl sub_806D668
- adds r0, r5, 0
- movs r1, 0
- bl sub_806BC3C
-_0808AF66:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _0808AF24
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808AF78: .4byte gPlayerParty
-_0808AF7C: .4byte gScriptItemId
- thumb_func_end sub_808AF20
-
- thumb_func_start sub_808AF80
-sub_808AF80: @ 808AF80
- push {r4,r5,lr}
- ldr r5, _0808AFB0 @ =0x0201b260
-_0808AF84:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808B00C
- ldr r0, _0808AFB4 @ =gUnknown_02038561
- ldrb r0, [r0]
- cmp r0, 0
- bne _0808AFC6
- ldr r0, _0808AFB8 @ =gScriptItemId
- ldrh r0, [r0]
- bl CheckIfItemIsTMHMOrEvolutionStone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808AFBC
- cmp r0, 0x2
- beq _0808AFC2
- b _0808AFC6
- .align 2, 0
-_0808AFB0: .4byte 0x0201b260
-_0808AFB4: .4byte gUnknown_02038561
-_0808AFB8: .4byte gScriptItemId
-_0808AFBC:
- bl sub_808AE8C
- b _0808AFC6
-_0808AFC2:
- bl sub_808AF20
-_0808AFC6:
- ldr r4, _0808B000 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r4]
- cmp r0, 0x5
- bhi _0808AFE2
- adds r1, r0, 0
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0808B004 @ =gPlayerParty
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- cmp r0, 0
- bne _0808AFE6
-_0808AFE2:
- movs r0, 0
- strb r0, [r4]
-_0808AFE6:
- ldrb r0, [r5]
- ldr r1, _0808B000 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r5]
- movs r1, 0
- bl sub_806BF74
- ldr r0, _0808B008 @ =sub_806AEDC
- bl SetMainCallback2
- b _0808B018
- .align 2, 0
-_0808B000: .4byte gLastFieldPokeMenuOpened
-_0808B004: .4byte gPlayerParty
-_0808B008: .4byte sub_806AEDC
-_0808B00C:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808AF84
-_0808B018:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_808AF80
-
- thumb_func_start sub_808B020
-sub_808B020: @ 808B020
- push {lr}
- ldr r2, _0808B040 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _0808B044 @ =gUnknown_02038561
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0808B0A0
- cmp r0, 0x1
- bgt _0808B048
- cmp r0, 0
- beq _0808B052
- b _0808B0AC
- .align 2, 0
-_0808B040: .4byte gPaletteFade
-_0808B044: .4byte gUnknown_02038561
-_0808B048:
- cmp r0, 0x3
- beq _0808B0A0
- cmp r0, 0x4
- beq _0808B08C
- b _0808B0AC
-_0808B052:
- ldr r0, _0808B070 @ =gScriptItemId
- ldrh r0, [r0]
- bl CheckIfItemIsTMHMOrEvolutionStone
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808B078
- ldr r2, _0808B074 @ =sub_808B0C0
- movs r0, 0
- movs r1, 0
- movs r3, 0x14
- bl sub_806AF4C
- b _0808B0AC
- .align 2, 0
-_0808B070: .4byte gScriptItemId
-_0808B074: .4byte sub_808B0C0
-_0808B078:
- ldr r2, _0808B088 @ =sub_808B0C0
- movs r0, 0
- movs r1, 0
- movs r3, 0x3
- bl sub_806AF4C
- b _0808B0AC
- .align 2, 0
-_0808B088: .4byte sub_808B0C0
-_0808B08C:
- ldr r2, _0808B09C @ =sub_808B1EC
- movs r0, 0
- movs r1, 0
- movs r3, 0xFF
- bl sub_806AF4C
- b _0808B0AC
- .align 2, 0
-_0808B09C: .4byte sub_808B1EC
-_0808B0A0:
- ldr r2, _0808B0B8 @ =sub_808B0C0
- movs r0, 0
- movs r1, 0
- movs r3, 0x4
- bl sub_806AF4C
-_0808B0AC:
- ldr r0, _0808B0BC @ =sub_808AF80
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0808B0B8: .4byte sub_808B0C0
-_0808B0BC: .4byte sub_808AF80
- thumb_func_end sub_808B020
-
- thumb_func_start sub_808B0C0
-sub_808B0C0: @ 808B0C0
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808B0EC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0808B1CE
- adds r0, r4, 0
- bl sub_806BD80
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- beq _0808B0F0
- cmp r0, 0x2
- beq _0808B184
- b _0808B1CE
- .align 2, 0
-_0808B0EC: .4byte gPaletteFade
-_0808B0F0:
- adds r0, r4, 0
- bl sub_806CA38
- ldr r1, _0808B118 @ =gLastFieldPokeMenuOpened
- strb r0, [r1]
- ldrb r1, [r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0808B11C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- beq _0808B120
- movs r0, 0x20
- bl PlaySE
- b _0808B1CE
- .align 2, 0
-_0808B118: .4byte gLastFieldPokeMenuOpened
-_0808B11C: .4byte gPlayerParty
-_0808B120:
- bl sub_806D5A4
- ldr r5, _0808B16C @ =gUnknown_02038561
- ldrb r0, [r5]
- cmp r0, 0
- bne _0808B13C
- ldr r3, _0808B170 @ =gUnknown_03004AE4
- ldr r0, _0808B174 @ =gScriptItemId
- ldrh r1, [r0]
- ldr r2, _0808B178 @ =sub_808B224
- ldr r3, [r3]
- adds r0, r4, 0
- bl _call_via_r3
-_0808B13C:
- ldrb r0, [r5]
- cmp r0, 0x1
- bne _0808B154
- movs r0, 0x5
- bl PlaySE
- ldr r0, _0808B174 @ =gScriptItemId
- ldrh r1, [r0]
- ldr r2, _0808B17C @ =sub_808B2EC
- adds r0, r4, 0
- bl PartyMenuTryGiveMonHeldItem
-_0808B154:
- ldrb r0, [r5]
- cmp r0, 0x3
- bne _0808B1CE
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0808B180 @ =sub_808B2B4
- adds r0, r4, 0
- bl PartyMenuTryGiveMonMail
- b _0808B1CE
- .align 2, 0
-_0808B16C: .4byte gUnknown_02038561
-_0808B170: .4byte gUnknown_03004AE4
-_0808B174: .4byte gScriptItemId
-_0808B178: .4byte sub_808B224
-_0808B17C: .4byte sub_808B2EC
-_0808B180: .4byte sub_808B2B4
-_0808B184:
- adds r0, r4, 0
- bl sub_806CA38
- ldr r1, _0808B1D8 @ =gLastFieldPokeMenuOpened
- strb r0, [r1]
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r2, _0808B1DC @ =gUnknown_02038561
- ldrb r0, [r2]
- cmp r0, 0x1
- bhi _0808B1BA
- ldr r0, _0808B1E0 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0808B1E4 @ =sub_808B25C
- str r0, [r1]
-_0808B1BA:
- ldrb r0, [r2]
- cmp r0, 0x3
- bne _0808B1CE
- ldr r0, _0808B1E0 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _0808B1E8 @ =sub_808B2B4
- str r0, [r1]
-_0808B1CE:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B1D8: .4byte gLastFieldPokeMenuOpened
-_0808B1DC: .4byte gUnknown_02038561
-_0808B1E0: .4byte gTasks
-_0808B1E4: .4byte sub_808B25C
-_0808B1E8: .4byte sub_808B2B4
- thumb_func_end sub_808B0C0
-
- thumb_func_start sub_808B1EC
-sub_808B1EC: @ 808B1EC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808B214 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808B20E
- ldr r3, _0808B218 @ =gUnknown_03004AE4
- ldr r0, _0808B21C @ =gScriptItemId
- ldrh r1, [r0]
- ldr r2, _0808B220 @ =sub_808B224
- ldr r3, [r3]
- adds r0, r4, 0
- bl _call_via_r3
-_0808B20E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B214: .4byte gPaletteFade
-_0808B218: .4byte gUnknown_03004AE4
-_0808B21C: .4byte gScriptItemId
-_0808B220: .4byte sub_808B224
- thumb_func_end sub_808B1EC
-
- thumb_func_start sub_808B224
-sub_808B224: @ 808B224
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0808B254 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808B258 @ =sub_808B25C
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B254: .4byte gTasks
-_0808B258: .4byte sub_808B25C
- thumb_func_end sub_808B224
-
- thumb_func_start sub_808B25C
-sub_808B25C: @ 808B25C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808B280 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808B27A
- ldr r0, _0808B284 @ =sub_80A5B40
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_0808B27A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B280: .4byte gPaletteFade
-_0808B284: .4byte sub_80A5B40
- thumb_func_end sub_808B25C
-
- thumb_func_start sub_808B288
-sub_808B288: @ 808B288
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808B2AC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808B2A6
- ldr r0, _0808B2B0 @ =Mailbox_ReturnToMailListAfterDeposit
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_0808B2A6:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B2AC: .4byte gPaletteFade
-_0808B2B0: .4byte Mailbox_ReturnToMailListAfterDeposit
- thumb_func_end sub_808B288
-
- thumb_func_start sub_808B2B4
-sub_808B2B4: @ 808B2B4
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0808B2E4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808B2E8 @ =sub_808B288
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B2E4: .4byte gTasks
-_0808B2E8: .4byte sub_808B288
- thumb_func_end sub_808B2B4
-
- thumb_func_start sub_808B2EC
-sub_808B2EC: @ 808B2EC
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808B31C @ =gUnknown_0202E8F4
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0808B328
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0808B320 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808B324 @ =sub_808B338
- str r1, [r0]
- b _0808B32E
- .align 2, 0
-_0808B31C: .4byte gUnknown_0202E8F4
-_0808B320: .4byte gTasks
-_0808B324: .4byte sub_808B338
-_0808B328:
- adds r0, r4, 0
- bl sub_808B224
-_0808B32E:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_808B2EC
-
- thumb_func_start sub_808B338
-sub_808B338: @ 808B338
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0808B38C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808B384
- adds r0, r5, 0
- bl sub_806CA38
- ldr r1, _0808B390 @ =gLastFieldPokeMenuOpened
- strb r0, [r1]
- ldrb r1, [r1]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0808B394 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x40
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- bl DestroyTask
- lsls r1, r4, 3
- adds r1, r4
- lsls r1, 2
- ldr r0, _0808B398 @ =gSaveBlock1 + 0x2B4C
- adds r1, r0
- ldr r2, _0808B39C @ =sub_808B3EC
- movs r0, 0x4
- movs r3, 0x3
- bl sub_80E62A0
-_0808B384:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B38C: .4byte gPaletteFade
-_0808B390: .4byte gLastFieldPokeMenuOpened
-_0808B394: .4byte gPlayerParty
-_0808B398: .4byte gSaveBlock1 + 0x2B4C
-_0808B39C: .4byte sub_808B3EC
- thumb_func_end sub_808B338
-
- thumb_func_start sub_808B3A0
-sub_808B3A0: @ 808B3A0
- push {r4,lr}
- ldr r4, _0808B3A8 @ =0x0201b260
- b _0808B3B8
- .align 2, 0
-_0808B3A8: .4byte 0x0201b260
-_0808B3AC:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808B3DC
-_0808B3B8:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808B3AC
- ldrb r0, [r4]
- ldr r1, _0808B3E4 @ =gLastFieldPokeMenuOpened
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldr r0, _0808B3E8 @ =sub_806AEDC
- bl SetMainCallback2
-_0808B3DC:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B3E4: .4byte gLastFieldPokeMenuOpened
-_0808B3E8: .4byte sub_806AEDC
- thumb_func_end sub_808B3A0
-
- thumb_func_start sub_808B3EC
-sub_808B3EC: @ 808B3EC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _0808B464 @ =gPaletteFade
- mov r8, r0
- ldrb r0, [r0, 0x8]
- movs r1, 0x80
- orrs r0, r1
- mov r1, r8
- strb r0, [r1, 0x8]
- ldr r0, _0808B468 @ =gScriptResult
- ldrh r0, [r0]
- cmp r0, 0
- bne _0808B480
- ldr r7, _0808B46C @ =gUnknown_0202E8F8
- ldrh r0, [r7]
- cmp r0, 0
- beq _0808B416
- movs r1, 0x1
- bl RemoveBagItem
-_0808B416:
- ldr r6, _0808B470 @ =gLastFieldPokeMenuOpened
- ldrb r0, [r6]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _0808B474 @ =gPlayerParty
- adds r0, r4
- movs r1, 0xC
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1
- bl AddBagItem
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- bl TakeMailFromMon
- ldrb r0, [r6]
- muls r0, r5
- adds r0, r4
- movs r1, 0xC
- adds r2, r7, 0
- bl SetMonData
- ldr r0, _0808B478 @ =sub_808B25C
- movs r1, 0x5
- bl CreateTask
- mov r0, r8
- ldrb r1, [r0, 0x8]
- movs r0, 0x7F
- ands r0, r1
- mov r1, r8
- strb r0, [r1, 0x8]
- ldr r0, _0808B47C @ =sub_806AEDC
- b _0808B48E
- .align 2, 0
-_0808B464: .4byte gPaletteFade
-_0808B468: .4byte gScriptResult
-_0808B46C: .4byte gUnknown_0202E8F8
-_0808B470: .4byte gLastFieldPokeMenuOpened
-_0808B474: .4byte gPlayerParty
-_0808B478: .4byte sub_808B25C
-_0808B47C: .4byte sub_806AEDC
-_0808B480:
- ldr r2, _0808B49C @ =sub_808B4A4
- movs r0, 0
- movs r1, 0
- movs r3, 0xFF
- bl sub_806AF4C
- ldr r0, _0808B4A0 @ =sub_808B3A0
-_0808B48E:
- bl SetMainCallback2
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B49C: .4byte sub_808B4A4
-_0808B4A0: .4byte sub_808B3A0
- thumb_func_end sub_808B3EC
-
- thumb_func_start sub_808B4A4
-sub_808B4A4: @ 808B4A4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0808B4D8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0808B4D2
- ldr r0, _0808B4DC @ =gLastFieldPokeMenuOpened
- ldrb r0, [r0]
- ldr r1, _0808B4E0 @ =gScriptItemId
- ldrh r1, [r1]
- movs r2, 0x1
- bl DisplayGiveHeldItemMessage
- ldr r1, _0808B4E4 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808B4E8 @ =sub_808B4EC
- str r1, [r0]
-_0808B4D2:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B4D8: .4byte gPaletteFade
-_0808B4DC: .4byte gLastFieldPokeMenuOpened
-_0808B4E0: .4byte gScriptItemId
-_0808B4E4: .4byte gTasks
-_0808B4E8: .4byte sub_808B4EC
- thumb_func_end sub_808B4A4
-
- thumb_func_start sub_808B4EC
-sub_808B4EC: @ 808B4EC
- push {lr}
- lsls r0, 24
- lsrs r1, r0, 24
- ldr r0, _0808B504 @ =gUnknown_0202E8F6
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0808B500
- adds r0, r1, 0
- bl sub_808B224
-_0808B500:
- pop {r0}
- bx r0
- .align 2, 0
-_0808B504: .4byte gUnknown_0202E8F6
- thumb_func_end sub_808B4EC
-
- thumb_func_start sub_808B508
-sub_808B508: @ 808B508
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_808B224
- pop {r0}
- bx r0
- thumb_func_end sub_808B508
-
- thumb_func_start sub_808B518
-sub_808B518: @ 808B518
- push {r4,lr}
- ldr r4, _0808B520 @ =0x0201b260
- b _0808B530
- .align 2, 0
-_0808B520: .4byte 0x0201b260
-_0808B524:
- bl sub_80F9344
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0808B554
-_0808B530:
- bl sub_806B124
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0808B524
- ldrb r0, [r4]
- ldr r1, _0808B55C @ =gUnknown_020384F0
- ldrb r1, [r1]
- bl sub_806C994
- ldrb r0, [r4]
- movs r1, 0
- bl sub_806BF74
- ldr r0, _0808B560 @ =sub_806AEDC
- bl SetMainCallback2
-_0808B554:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B55C: .4byte gUnknown_020384F0
-_0808B560: .4byte sub_806AEDC
- thumb_func_end sub_808B518
-
- thumb_func_start sub_808B564
-sub_808B564: @ 808B564
- push {lr}
- ldr r2, _0808B58C @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- bl sub_809FA30
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x4
- beq _0808B594
- ldr r2, _0808B590 @ =TaughtMove
- movs r0, 0
- movs r1, 0
- movs r3, 0xFF
- bl sub_806AF4C
- b _0808B5A0
- .align 2, 0
-_0808B58C: .4byte gPaletteFade
-_0808B590: .4byte TaughtMove
-_0808B594:
- ldr r2, _0808B5AC @ =StopTryingToTeachMove_806F588
- movs r0, 0
- movs r1, 0
- movs r3, 0xFF
- bl sub_806AF4C
-_0808B5A0:
- ldr r0, _0808B5B0 @ =sub_808B518
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0808B5AC: .4byte StopTryingToTeachMove_806F588
-_0808B5B0: .4byte sub_808B518
- thumb_func_end sub_808B564
-
- thumb_func_start sub_808B5B4
-sub_808B5B4: @ 808B5B4
- push {lr}
- ldr r3, _0808B5D8 @ =gUnknown_03005CF0
- ldr r2, _0808B5DC @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldr r2, [r1]
- str r2, [r3]
- ldr r2, _0808B5E0 @ =sub_808B5E4
- str r2, [r1]
- lsls r0, 24
- lsrs r0, 24
- bl _call_via_r2
- pop {r0}
- bx r0
- .align 2, 0
-_0808B5D8: .4byte gUnknown_03005CF0
-_0808B5DC: .4byte gTasks
-_0808B5E0: .4byte sub_808B5E4
- thumb_func_end sub_808B5B4
-
- thumb_func_start sub_808B5E4
-sub_808B5E4: @ 808B5E4
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- bl sub_8055870
- cmp r0, 0x1
- beq _0808B602
- ldr r1, _0808B608 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0808B60C @ =gUnknown_03005CF0
- ldr r1, [r1]
- str r1, [r0]
-_0808B602:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0808B608: .4byte gTasks
-_0808B60C: .4byte gUnknown_03005CF0
- thumb_func_end sub_808B5E4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index db16c2788..eaf44749b 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -12958,7 +12958,7 @@ _0809C08C:
adds r1, r6, r2
str r0, [r1]
adds r0, r7, 0
- bl pokemon_get_pal
+ bl GetMonSpritePal
ldr r2, _0809C11C @ =0x000011e8
adds r1, r6, r2
str r0, [r1]
@@ -13031,7 +13031,7 @@ _0809C120:
str r2, [r4]
ldrh r0, [r5]
mov r1, r9
- bl species_and_otid_get_pal
+ bl GetMonSpritePalFromOtIdPersonality
ldr r2, _0809C1D0 @ =0x000011e8
adds r1, r6, r2
str r0, [r1]
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index fea619ac8..859fd177f 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -3859,7 +3859,7 @@ _0809F718:
adds r1, r0, 0
adds r0, r5, 0
adds r2, r6, 0
- bl sub_80409C8
+ bl GetMonSpritePalStructFromOtIdPersonality
adds r4, r0, 0
bl LoadCompressedObjectPalette
ldrh r0, [r4, 0x4]
@@ -7620,7 +7620,7 @@ sub_80A1808: @ 80A1808
ldr r0, _080A1868 @ =sub_80A1888
str r0, [r4]
adds r0, r6, 0
- bl sub_8040A3C
+ bl IsPokeSpriteNotFlipped
lsls r0, 24
cmp r0, 0
bne _080A186C
diff --git a/asm/pokenav.s b/asm/pokenav.s
index cb6a40450..a4d585815 100644
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -17787,7 +17787,7 @@ sub_80F4824: @ 80F4824
adds r0, r5, 0
mov r1, r8
adds r2, r4, 0
- bl species_and_otid_get_pal
+ bl GetMonSpritePalFromOtIdPersonality
mov r2, r9
lsls r1, r2, 7
adds r1, r7, r1
@@ -22370,7 +22370,7 @@ _080F6C3A:
adds r6, r0, r1
ldrh r7, [r6]
adds r0, r7, 0
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _080F6CA0
@@ -22402,7 +22402,7 @@ _080F6C3A:
strb r1, [r0]
ldrh r0, [r6, 0xA]
ldrh r1, [r6, 0xC]
- bl get_mapheader_by_bank_and_number
+ bl Overworld_GetMapHeaderByGroupAndId
ldrh r1, [r5]
lsls r1, 3
adds r4, r1
@@ -22431,7 +22431,7 @@ _080F6CB4:
adds r5, r0, r1
ldrh r4, [r5]
adds r0, r4, 0
- bl trainer_flag_check
+ bl HasTrainerAlreadyBeenFought
lsls r0, 24
cmp r0, 0
beq _080F6D0E
diff --git a/asm/reshow_battle_screen.s b/asm/reshow_battle_screen.s
deleted file mode 100644
index 59b08dd01..000000000
--- a/asm/reshow_battle_screen.s
+++ /dev/null
@@ -1,1097 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start nullsub_14
-nullsub_14: @ 807AD54
- bx lr
- thumb_func_end nullsub_14
-
- thumb_func_start ReshowBattleScreenAfterMenu
-ReshowBattleScreenAfterMenu: @ 807AD58
- push {lr}
- ldr r2, _0807AD90 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- movs r0, 0
- bl SetHBlankCallback
- movs r0, 0
- bl SetVBlankCallback
- ldr r0, _0807AD94 @ =REG_MOSAIC
- movs r2, 0
- strh r2, [r0]
- ldr r0, _0807AD98 @ =0x02000000
- ldr r3, _0807AD9C @ =0x0001ffff
- adds r1, r0, r3
- strb r2, [r1]
- ldr r1, _0807ADA0 @ =0x0001fffe
- adds r0, r1
- strb r2, [r0]
- ldr r0, _0807ADA4 @ =CB2_ReshowBattleScreenAfterMenu
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0807AD90: .4byte gPaletteFade
-_0807AD94: .4byte REG_MOSAIC
-_0807AD98: .4byte 0x02000000
-_0807AD9C: .4byte 0x0001ffff
-_0807ADA0: .4byte 0x0001fffe
-_0807ADA4: .4byte CB2_ReshowBattleScreenAfterMenu
- thumb_func_end ReshowBattleScreenAfterMenu
-
- thumb_func_start CB2_ReshowBattleScreenAfterMenu
-CB2_ReshowBattleScreenAfterMenu: @ 807ADA8
- push {r4-r7,lr}
- sub sp, 0x8
- ldr r0, _0807ADC4 @ =0x02000000
- ldr r1, _0807ADC8 @ =0x0001ffff
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x13
- bls _0807ADBA
- b _0807B010
-_0807ADBA:
- lsls r0, 2
- ldr r1, _0807ADCC @ =_0807ADD0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0807ADC4: .4byte 0x02000000
-_0807ADC8: .4byte 0x0001ffff
-_0807ADCC: .4byte _0807ADD0
- .align 2, 0
-_0807ADD0:
- .4byte _0807AE20
- .4byte _0807AE84
- .4byte _0807AE9C
- .4byte _0807AEC8
- .4byte _0807AECE
- .4byte _0807AEE0
- .4byte _0807AEE6
- .4byte _0807AF18
- .4byte _0807AF1C
- .4byte _0807AF20
- .4byte _0807AF24
- .4byte _0807AF48
- .4byte _0807AF50
- .4byte _0807AF58
- .4byte _0807AF60
- .4byte _0807AF68
- .4byte _0807AF70
- .4byte _0807AF78
- .4byte _0807AF80
- .4byte _0807AF88
-_0807AE20:
- bl dp12_8087EA4
- ldr r4, _0807AE5C @ =gWindowConfig_81E6C58
- adds r0, r4, 0
- bl SetUpWindowConfig
- bl ResetPaletteFade
- ldr r0, _0807AE60 @ =gUnknown_03004210
- adds r1, r4, 0
- bl InitWindowFromConfig
- ldr r0, _0807AE64 @ =gUnknown_030042A4
- movs r1, 0
- strh r1, [r0]
- ldr r0, _0807AE68 @ =gUnknown_030042A0
- strh r1, [r0]
- ldr r0, _0807AE6C @ =gUnknown_030042C0
- strh r1, [r0]
- ldr r0, _0807AE70 @ =gUnknown_030041B4
- strh r1, [r0]
- ldr r0, _0807AE74 @ =gUnknown_03004288
- strh r1, [r0]
- ldr r0, _0807AE78 @ =gUnknown_03004280
- strh r1, [r0]
- ldr r0, _0807AE7C @ =gUnknown_030041B0
- strh r1, [r0]
- ldr r0, _0807AE80 @ =gUnknown_030041B8
- strh r1, [r0]
- b _0807B040
- .align 2, 0
-_0807AE5C: .4byte gWindowConfig_81E6C58
-_0807AE60: .4byte gUnknown_03004210
-_0807AE64: .4byte gUnknown_030042A4
-_0807AE68: .4byte gUnknown_030042A0
-_0807AE6C: .4byte gUnknown_030042C0
-_0807AE70: .4byte gUnknown_030041B4
-_0807AE74: .4byte gUnknown_03004288
-_0807AE78: .4byte gUnknown_03004280
-_0807AE7C: .4byte gUnknown_030041B0
-_0807AE80: .4byte gUnknown_030041B8
-_0807AE84:
- movs r0, 0
- str r0, [sp, 0x4]
- movs r1, 0xC0
- lsls r1, 19
- ldr r2, _0807AE98 @ =0x01006000
- add r0, sp, 0x4
- bl CpuFastSet
- b _0807B040
- .align 2, 0
-_0807AE98: .4byte 0x01006000
-_0807AE9C:
- ldr r5, _0807AEBC @ =0x02000000
- ldr r0, _0807AEC0 @ =0x0001fffe
- adds r4, r5, r0
- ldrb r0, [r4]
- bl sub_800E414
- lsls r0, 24
- cmp r0, 0
- bne _0807AEF8
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r0, _0807AEC4 @ =0x0001ffff
- adds r1, r5, r0
- b _0807AF38
- .align 2, 0
-_0807AEBC: .4byte 0x02000000
-_0807AEC0: .4byte 0x0001fffe
-_0807AEC4: .4byte 0x0001ffff
-_0807AEC8:
- bl ResetSpriteData
- b _0807B040
-_0807AECE:
- bl FreeAllSpritePalettes
- ldr r1, _0807AEDC @ =gReservedSpritePaletteCount
- movs r0, 0x4
- strb r0, [r1]
- b _0807B040
- .align 2, 0
-_0807AEDC: .4byte gReservedSpritePaletteCount
-_0807AEE0:
- bl sub_8031EE8
- b _0807B040
-_0807AEE6:
- ldr r5, _0807AF00 @ =0x02000000
- ldr r1, _0807AF04 @ =0x0001fffe
- adds r4, r5, r1
- ldrb r0, [r4]
- bl sub_8031C30
- lsls r0, 24
- cmp r0, 0
- beq _0807AF08
-_0807AEF8:
- movs r0, 0
- strb r0, [r4]
- b _0807B040
- .align 2, 0
-_0807AF00: .4byte 0x02000000
-_0807AF04: .4byte 0x0001fffe
-_0807AF08:
- ldrb r0, [r4]
- adds r0, 0x1
- strb r0, [r4]
- ldr r0, _0807AF14 @ =0x0001ffff
- adds r1, r5, r0
- b _0807AF38
- .align 2, 0
-_0807AF14: .4byte 0x0001ffff
-_0807AF18:
- movs r0, 0
- b _0807AF26
-_0807AF1C:
- movs r0, 0x1
- b _0807AF26
-_0807AF20:
- movs r0, 0x2
- b _0807AF26
-_0807AF24:
- movs r0, 0x3
-_0807AF26:
- bl sub_807B094
- lsls r0, 24
- cmp r0, 0
- beq _0807AF32
- b _0807B040
-_0807AF32:
- ldr r1, _0807AF40 @ =0x02000000
- ldr r0, _0807AF44 @ =0x0001ffff
- adds r1, r0
-_0807AF38:
- ldrb r0, [r1]
- subs r0, 0x1
- strb r0, [r1]
- b _0807B040
- .align 2, 0
-_0807AF40: .4byte 0x02000000
-_0807AF44: .4byte 0x0001ffff
-_0807AF48:
- movs r0, 0
- bl sub_807B184
- b _0807B040
-_0807AF50:
- movs r0, 0x1
- bl sub_807B184
- b _0807B040
-_0807AF58:
- movs r0, 0x2
- bl sub_807B184
- b _0807B040
-_0807AF60:
- movs r0, 0x3
- bl sub_807B184
- b _0807B040
-_0807AF68:
- movs r0, 0
- bl sub_807B508
- b _0807B040
-_0807AF70:
- movs r0, 0x1
- bl sub_807B508
- b _0807B040
-_0807AF78:
- movs r0, 0x2
- bl sub_807B508
- b _0807B040
-_0807AF80:
- movs r0, 0x3
- bl sub_807B508
- b _0807B040
-_0807AF88:
- bl sub_80327CC
- movs r0, 0x1
- bl GetBankByPlayerAI
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r7, _0807B000 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r7
- ldrh r0, [r0]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _0807B004 @ =gEnemyParty
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8032984
- bl IsDoubleBattle
- lsls r0, 24
- cmp r0, 0
- beq _0807AFEC
- movs r0, 0x3
- bl GetBankByPlayerAI
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 1
- adds r0, r7
- ldrh r0, [r0]
- muls r0, r6
- adds r0, r5
- movs r1, 0xB
- bl GetMonData
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_8032984
-_0807AFEC:
- ldr r1, _0807B008 @ =gActionSelectionCursor
- ldr r0, _0807B00C @ =gBankInMenu
- ldrb r0, [r0]
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_802E3E4
- b _0807B040
- .align 2, 0
-_0807B000: .4byte gBattlePartyID
-_0807B004: .4byte gEnemyParty
-_0807B008: .4byte gActionSelectionCursor
-_0807B00C: .4byte gBankInMenu
-_0807B010:
- ldr r0, _0807B054 @ =sub_800FCD4
- bl SetHBlankCallback
- ldr r0, _0807B058 @ =sub_800FCFC
- bl SetVBlankCallback
- bl sub_807B06C
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginHardwarePaletteFade
- ldr r2, _0807B05C @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _0807B060 @ =sub_800F808
- bl SetMainCallback2
-_0807B040:
- ldr r1, _0807B064 @ =0x02000000
- ldr r0, _0807B068 @ =0x0001ffff
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807B054: .4byte sub_800FCD4
-_0807B058: .4byte sub_800FCFC
-_0807B05C: .4byte gPaletteFade
-_0807B060: .4byte sub_800F808
-_0807B064: .4byte 0x02000000
-_0807B068: .4byte 0x0001ffff
- thumb_func_end CB2_ReshowBattleScreenAfterMenu
-
- thumb_func_start sub_807B06C
-sub_807B06C: @ 807B06C
- push {lr}
- bl sub_800D6D4
- ldr r3, _0807B08C @ =REG_BG1CNT
- ldrb r2, [r3]
- movs r1, 0xD
- negs r1, r1
- adds r0, r1, 0
- ands r0, r2
- strb r0, [r3]
- ldr r2, _0807B090 @ =REG_BG2CNT
- ldrb r0, [r2]
- ands r1, r0
- strb r1, [r2]
- pop {r0}
- bx r0
- .align 2, 0
-_0807B08C: .4byte REG_BG1CNT
-_0807B090: .4byte REG_BG2CNT
- thumb_func_end sub_807B06C
-
- thumb_func_start sub_807B094
-sub_807B094: @ 807B094
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0807B0D8 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r4, r0
- bcs _0807B172
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0807B0F2
- lsls r0, r4, 2
- ldr r1, _0807B0DC @ =0x02017800
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0807B0E8
- ldr r1, _0807B0E0 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0807B0E4 @ =gEnemyParty
- adds r0, r1
- adds r1, r4, 0
- bl sub_8031794
- b _0807B168
- .align 2, 0
-_0807B0D8: .4byte gNoOfAllBanks
-_0807B0DC: .4byte 0x02017800
-_0807B0E0: .4byte gBattlePartyID
-_0807B0E4: .4byte gEnemyParty
-_0807B0E8:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8032350
- b _0807B168
-_0807B0F2:
- ldr r2, _0807B108 @ =gBattleTypeFlags
- ldrh r1, [r2]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0807B110
- cmp r4, 0
- bne _0807B110
- ldr r0, _0807B10C @ =gSaveBlock2
- ldrb r0, [r0, 0x8]
- b _0807B122
- .align 2, 0
-_0807B108: .4byte gBattleTypeFlags
-_0807B10C: .4byte gSaveBlock2
-_0807B110:
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _0807B12A
- cmp r4, 0
- bne _0807B12A
- movs r0, 0x2
-_0807B122:
- movs r1, 0
- bl sub_8031AF4
- b _0807B168
-_0807B12A:
- lsls r0, r4, 2
- ldr r1, _0807B154 @ =0x02017800
- adds r0, r1
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0807B160
- ldr r1, _0807B158 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0807B15C @ =gPlayerParty
- adds r0, r1
- adds r1, r4, 0
- bl sub_80318FC
- b _0807B168
- .align 2, 0
-_0807B154: .4byte 0x02017800
-_0807B158: .4byte gBattlePartyID
-_0807B15C: .4byte gPlayerParty
-_0807B160:
- adds r0, r4, 0
- movs r1, 0
- bl sub_8032350
-_0807B168:
- ldr r0, _0807B17C @ =0x02000000
- ldr r1, _0807B180 @ =0x0001fffe
- adds r0, r1
- movs r1, 0
- strb r1, [r0]
-_0807B172:
- movs r0, 0x1
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0807B17C: .4byte 0x02000000
-_0807B180: .4byte 0x0001fffe
- thumb_func_end sub_807B094
-
- thumb_func_start sub_807B184
-sub_807B184: @ 807B184
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _0807B1B8 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r7, r0
- bcc _0807B19E
- b _0807B4D8
-_0807B19E:
- lsls r2, r7, 2
- ldr r0, _0807B1BC @ =0x02017800
- adds r0, r2, r0
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- str r2, [sp]
- cmp r0, 0
- beq _0807B1C0
- adds r0, r7, 0
- bl sub_8077F7C
- b _0807B1C6
- .align 2, 0
-_0807B1B8: .4byte gNoOfAllBanks
-_0807B1BC: .4byte 0x02017800
-_0807B1C0:
- adds r0, r7, 0
- bl sub_8077F68
-_0807B1C6:
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r7, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- bne _0807B1DA
- b _0807B2D8
-_0807B1DA:
- ldr r1, _0807B2BC @ =gBattlePartyID
- lsls r0, r7, 1
- adds r6, r0, r1
- ldrh r0, [r6]
- movs r1, 0x64
- mov r10, r1
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- ldr r1, _0807B2C0 @ =gEnemyParty
- mov r9, r1
- add r0, r9
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _0807B1FE
- b _0807B4D8
-_0807B1FE:
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl GetMonSpriteTemplate_803C56C
- ldr r5, _0807B2C4 @ =gUnknown_02024E8C
- adds r0, r7, 0
- movs r1, 0x2
- bl sub_8077ABC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- bl sub_8079E90
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r8
- bl CreateSprite
- ldr r4, _0807B2C8 @ =gObjectBankIDs
- adds r4, r7, r4
- strb r0, [r4]
- ldr r5, _0807B2CC @ =gSprites
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, r7, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _0807B2D0 @ =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r7, [r0, 0x2E]
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- strh r0, [r1, 0x32]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _0807B2D4 @ =gBattleMonForms
- adds r1, r7, r1
- ldrb r1, [r1]
- bl StartSpriteAnim
- b _0807B4AC
- .align 2, 0
-_0807B2BC: .4byte gBattlePartyID
-_0807B2C0: .4byte gEnemyParty
-_0807B2C4: .4byte gUnknown_02024E8C
-_0807B2C8: .4byte gObjectBankIDs
-_0807B2CC: .4byte gSprites
-_0807B2D0: .4byte SpriteCallbackDummy
-_0807B2D4: .4byte gBattleMonForms
-_0807B2D8:
- ldr r2, _0807B328 @ =gBattleTypeFlags
- ldrh r1, [r2]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0807B338
- cmp r7, 0
- bne _0807B338
- ldr r5, _0807B32C @ =gSaveBlock2
- ldrb r4, [r5, 0x8]
- movs r0, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl GetMonSpriteTemplate_803C5A0
- ldr r6, _0807B330 @ =gUnknown_02024E8C
- ldr r1, _0807B334 @ =gTrainerBackPicCoords
- ldrb r0, [r5, 0x8]
- lsls r0, 2
- adds r0, r1
- ldrb r0, [r0]
- movs r4, 0x8
- subs r4, r0
- lsls r4, 18
- movs r0, 0xA0
- lsls r0, 15
- adds r4, r0
- asrs r4, 16
- movs r0, 0
- bl sub_8079E90
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r6, 0
- b _0807B37C
- .align 2, 0
-_0807B328: .4byte gBattleTypeFlags
-_0807B32C: .4byte gSaveBlock2
-_0807B330: .4byte gUnknown_02024E8C
-_0807B334: .4byte gTrainerBackPicCoords
-_0807B338:
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _0807B3D0
- cmp r7, 0
- bne _0807B3D0
- movs r0, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x2
- bl GetMonSpriteTemplate_803C5A0
- ldr r5, _0807B3BC @ =gUnknown_02024E8C
- ldr r0, _0807B3C0 @ =gTrainerBackPicCoords
- ldrb r0, [r0, 0x8]
- movs r4, 0x8
- subs r4, r0
- lsls r4, 18
- movs r1, 0xA0
- lsls r1, 15
- adds r4, r1
- asrs r4, 16
- movs r0, 0
- bl sub_8079E90
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
-_0807B37C:
- movs r1, 0x50
- adds r2, r4, 0
- bl CreateSprite
- ldr r3, _0807B3C4 @ =gObjectBankIDs
- strb r0, [r3]
- ldr r4, _0807B3C8 @ =gSprites
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- strb r0, [r1, 0x5]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _0807B3CC @ =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r7, [r0, 0x2E]
- b _0807B4AC
- .align 2, 0
-_0807B3BC: .4byte gUnknown_02024E8C
-_0807B3C0: .4byte gTrainerBackPicCoords
-_0807B3C4: .4byte gObjectBankIDs
-_0807B3C8: .4byte gSprites
-_0807B3CC: .4byte SpriteCallbackDummy
-_0807B3D0:
- ldr r1, _0807B4E8 @ =gBattlePartyID
- lsls r0, r7, 1
- adds r6, r0, r1
- ldrh r0, [r6]
- movs r1, 0x64
- mov r10, r1
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- ldr r1, _0807B4EC @ =gPlayerParty
- mov r9, r1
- add r0, r9
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- beq _0807B4D8
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r7, 0
- bl GetBankIdentity
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl GetMonSpriteTemplate_803C56C
- ldr r5, _0807B4F0 @ =gUnknown_02024E8C
- adds r0, r7, 0
- movs r1, 0x2
- bl sub_8077ABC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- bl sub_8079E90
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- adds r0, r5, 0
- adds r1, r4, 0
- mov r2, r8
- bl CreateSprite
- ldr r4, _0807B4F4 @ =gObjectBankIDs
- adds r4, r7, r4
- strb r0, [r4]
- ldr r5, _0807B4F8 @ =gSprites
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- lsls r3, r7, 4
- ldrb r2, [r1, 0x5]
- movs r0, 0xF
- ands r0, r2
- orrs r0, r3
- strb r0, [r1, 0x5]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _0807B4FC @ =SpriteCallbackDummy
- str r1, [r0]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r7, [r0, 0x2E]
- ldrh r0, [r6]
- mov r1, r10
- muls r1, r0
- adds r0, r1, 0
- add r0, r9
- movs r1, 0xB
- bl GetMonData
- ldrb r2, [r4]
- lsls r1, r2, 4
- adds r1, r2
- lsls r1, 2
- adds r1, r5
- strh r0, [r1, 0x32]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldr r1, _0807B500 @ =gBattleMonForms
- adds r1, r7, r1
- ldrb r1, [r1]
- bl StartSpriteAnim
-_0807B4AC:
- ldr r1, _0807B4F8 @ =gSprites
- ldr r0, _0807B4F4 @ =gObjectBankIDs
- adds r0, r7, r0
- ldrb r0, [r0]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldr r0, _0807B504 @ =0x02017800
- ldr r1, [sp]
- adds r0, r1, r0
- ldr r1, [r0]
- lsls r1, 31
- adds r2, 0x3E
- lsrs r1, 31
- lsls r1, 2
- ldrb r3, [r2]
- movs r0, 0x5
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_0807B4D8:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0807B4E8: .4byte gBattlePartyID
-_0807B4EC: .4byte gPlayerParty
-_0807B4F0: .4byte gUnknown_02024E8C
-_0807B4F4: .4byte gObjectBankIDs
-_0807B4F8: .4byte gSprites
-_0807B4FC: .4byte SpriteCallbackDummy
-_0807B500: .4byte gBattleMonForms
-_0807B504: .4byte 0x02017800
- thumb_func_end sub_807B184
-
- thumb_func_start sub_807B508
-sub_807B508: @ 807B508
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0807B530 @ =gNoOfAllBanks
- ldrb r0, [r0]
- cmp r5, r0
- bcc _0807B518
- b _0807B68A
-_0807B518:
- ldr r2, _0807B534 @ =gBattleTypeFlags
- ldrh r1, [r2]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0807B538
- cmp r5, 0
- bne _0807B538
- bl battle_make_oam_safari_battle
- b _0807B550
- .align 2, 0
-_0807B530: .4byte gNoOfAllBanks
-_0807B534: .4byte gBattleTypeFlags
-_0807B538:
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 2
- ands r0, r1
- cmp r0, 0
- beq _0807B54A
- cmp r5, 0
- bne _0807B54A
- b _0807B68A
-_0807B54A:
- adds r0, r5, 0
- bl battle_make_oam_normal_battle
-_0807B550:
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _0807B58C @ =gHealthboxIDs
- adds r4, r5, r0
- strb r6, [r4]
- adds r0, r5, 0
- bl sub_8043F44
- adds r0, r6, 0
- bl sub_8043DFC
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0807B598
- ldrb r0, [r4]
- ldr r1, _0807B590 @ =gBattlePartyID
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0807B594 @ =gEnemyParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
- b _0807B5E4
- .align 2, 0
-_0807B58C: .4byte gHealthboxIDs
-_0807B590: .4byte gBattlePartyID
-_0807B594: .4byte gEnemyParty
-_0807B598:
- ldr r0, _0807B5C0 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0807B5CC
- ldrb r0, [r4]
- ldr r1, _0807B5C4 @ =gBattlePartyID
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0807B5C8 @ =gPlayerParty
- adds r1, r2
- movs r2, 0xA
- bl sub_8045A5C
- b _0807B5E4
- .align 2, 0
-_0807B5C0: .4byte gBattleTypeFlags
-_0807B5C4: .4byte gBattlePartyID
-_0807B5C8: .4byte gPlayerParty
-_0807B5CC:
- ldrb r0, [r4]
- ldr r1, _0807B610 @ =gBattlePartyID
- lsls r4, r5, 1
- adds r1, r4, r1
- ldrh r2, [r1]
- movs r1, 0x64
- muls r1, r2
- ldr r2, _0807B614 @ =gPlayerParty
- adds r1, r2
- movs r2, 0
- bl sub_8045A5C
-_0807B5E4:
- adds r0, r5, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _0807B600
- adds r0, r5, 0
- bl GetBankIdentity
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _0807B61C
-_0807B600:
- ldr r0, _0807B618 @ =gHealthboxIDs
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0x1
- bl nullsub_11
- b _0807B628
- .align 2, 0
-_0807B610: .4byte gBattlePartyID
-_0807B614: .4byte gPlayerParty
-_0807B618: .4byte gHealthboxIDs
-_0807B61C:
- ldr r0, _0807B654 @ =gHealthboxIDs
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0
- bl nullsub_11
-_0807B628:
- adds r0, r5, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0807B660
- ldr r0, _0807B658 @ =gBattlePartyID
- adds r0, r4, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0807B65C @ =gEnemyParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _0807B68A
- adds r0, r6, 0
- bl sub_8043DB0
- b _0807B68A
- .align 2, 0
-_0807B654: .4byte gHealthboxIDs
-_0807B658: .4byte gBattlePartyID
-_0807B65C: .4byte gEnemyParty
-_0807B660:
- ldr r0, _0807B690 @ =gBattleTypeFlags
- ldrh r1, [r0]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0807B68A
- ldr r0, _0807B694 @ =gBattlePartyID
- adds r0, r4, r0
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0807B698 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x39
- bl GetMonData
- cmp r0, 0
- bne _0807B68A
- adds r0, r6, 0
- bl sub_8043DB0
-_0807B68A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0807B690: .4byte gBattleTypeFlags
-_0807B694: .4byte gBattlePartyID
-_0807B698: .4byte gPlayerParty
- thumb_func_end sub_807B508
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/shop.s b/asm/shop.s
deleted file mode 100644
index a341e90a1..000000000
--- a/asm/shop.s
+++ /dev/null
@@ -1,2613 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80B33D0
-sub_80B33D0: @ 80B33D0
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- adds r6, r0, 0
- adds r4, r1, 0
- mov r8, r2
- lsls r4, 22
- ldr r5, _080B3418 @ =gBGTilemapBuffers + 0x1800
- lsls r6, 17
- asrs r6, 16
- movs r0, 0x80
- lsls r0, 15
- adds r4, r0
- asrs r4, 16
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- mov r3, r8
- bl BuyMenuDrawMapMetatileLayer
- ldr r0, _080B341C @ =0xfffff800
- adds r5, r0
- movs r0, 0x8
- add r8, r0
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- mov r3, r8
- bl BuyMenuDrawMapMetatileLayer
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3418: .4byte gBGTilemapBuffers + 0x1800
-_080B341C: .4byte 0xfffff800
- thumb_func_end sub_80B33D0
-
- thumb_func_start sub_80B3420
-sub_80B3420: @ 80B3420
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- mov r1, sp
- mov r0, sp
- ldrh r0, [r0]
- subs r0, 0x3
- strh r0, [r1]
- ldrh r0, [r4]
- subs r0, 0x3
- strh r0, [r4]
- movs r1, 0
- ldr r0, _080B34A8 @ =0x000001ff
- mov r10, r0
- ldr r2, _080B34AC @ =gMapHeader
- mov r9, r2
-_080B3452:
- movs r4, 0
- lsls r1, 16
- mov r8, r1
- asrs r7, r1, 16
-_080B345A:
- mov r0, sp
- movs r3, 0
- ldrsh r0, [r0, r3]
- lsls r4, 16
- asrs r6, r4, 16
- adds r0, r6
- mov r2, sp
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- adds r1, r7
- bl MapGridGetMetatileIdAt
- lsls r0, 16
- lsrs r5, r0, 16
- cmp r7, 0x5
- beq _080B34D0
- cmp r6, 0x6
- beq _080B34D0
- mov r0, sp
- movs r1, 0
- ldrsh r0, [r0, r1]
- adds r0, r6
- mov r2, sp
- movs r3, 0x2
- ldrsh r1, [r2, r3]
- adds r1, r7
- bl MapGridGetMetatileLayerTypeAt
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r5, r10
- bhi _080B34B0
- mov r1, r9
- ldr r0, [r1]
- ldr r0, [r0, 0x10]
- lsls r1, r5, 4
- ldr r2, [r0, 0xC]
- adds r2, r1
- b _080B34C0
- .align 2, 0
-_080B34A8: .4byte 0x000001ff
-_080B34AC: .4byte gMapHeader
-_080B34B0:
- mov r2, r9
- ldr r0, [r2]
- ldr r1, [r0, 0x14]
- ldr r2, _080B34CC @ =0xfffffe00
- adds r0, r5, r2
- lsls r0, 4
- ldr r2, [r1, 0xC]
- adds r2, r0
-_080B34C0:
- adds r0, r6, 0
- adds r1, r7, 0
- bl BuyMenuDrawMapMetatile
- b _080B3506
- .align 2, 0
-_080B34CC: .4byte 0xfffffe00
-_080B34D0:
- cmp r5, r10
- bhi _080B34EC
- asrs r0, r4, 16
- mov r3, r9
- ldr r1, [r3]
- ldr r1, [r1, 0x10]
- lsls r3, r5, 4
- ldr r2, [r1, 0xC]
- adds r2, r3
- mov r3, r8
- asrs r1, r3, 16
- bl sub_80B33D0
- b _080B3506
-_080B34EC:
- asrs r0, r4, 16
- mov r2, r9
- ldr r1, [r2]
- ldr r2, [r1, 0x14]
- ldr r3, _080B354C @ =0xfffffe00
- adds r1, r5, r3
- lsls r1, 4
- ldr r2, [r2, 0xC]
- adds r2, r1
- mov r3, r8
- asrs r1, r3, 16
- bl sub_80B33D0
-_080B3506:
- cmp r7, 0
- bne _080B3520
- asrs r1, r4, 16
- cmp r1, 0
- beq _080B3520
- cmp r1, 0x6
- beq _080B3520
- lsls r1, 17
- asrs r1, 16
- ldr r0, _080B3550 @ =gBGTilemapBuffers + 0x800
- movs r2, 0x40
- bl sub_80B32EC
-_080B3520:
- movs r1, 0x80
- lsls r1, 9
- adds r0, r4, r1
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x6
- ble _080B345A
- adds r0, r1, 0
- add r0, r8
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, 0x5
- ble _080B3452
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B354C: .4byte 0xfffffe00
-_080B3550: .4byte gBGTilemapBuffers + 0x800
- thumb_func_end sub_80B3420
-
- thumb_func_start BuyMenuDrawMapGraphics
-BuyMenuDrawMapGraphics: @ 80B3554
- push {lr}
- bl sub_80F9020
- bl sub_80B356C
- bl sub_80B368C
- bl sub_80B3420
- pop {r0}
- bx r0
- thumb_func_end BuyMenuDrawMapGraphics
-
- thumb_func_start sub_80B356C
-sub_80B356C: @ 80B356C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- movs r0, 0
- mov r8, r0
- mov r4, sp
- adds r4, 0x2
- mov r0, sp
- adds r1, r4, 0
- bl GetXYCoordsOneStepInFrontOfPlayer
- bl PlayerGetZCoord
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x4]
- movs r5, 0
- ldr r2, _080B3674 @ =gUnknown_020386A4
- movs r1, 0x10
-_080B3598:
- lsls r0, r5, 3
- adds r0, r2
- strh r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _080B3598
- movs r5, 0
- ldr r7, _080B3678 @ =gUnknown_020386AA
- subs r1, r7, 0x6
- mov r9, r1
-_080B35B0:
- movs r4, 0
- adds r2, r5, 0x1
- mov r10, r2
-_080B35B6:
- mov r1, sp
- ldr r3, _080B367C @ =0x0000fffd
- adds r0, r3, 0
- ldrh r1, [r1]
- adds r0, r1
- adds r0, r4
- lsls r0, 16
- lsrs r0, 16
- ldr r2, _080B3680 @ =0x0000fffe
- adds r1, r2, 0
- mov r3, sp
- ldrh r3, [r3, 0x2]
- adds r1, r3
- adds r1, r5
- lsls r1, 16
- lsrs r1, 16
- ldr r2, [sp, 0x4]
- bl GetFieldObjectIdByXYZ
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x10
- beq _080B3650
- mov r0, r8
- lsls r3, r0, 3
- mov r1, r9
- adds r0, r3, r1
- movs r6, 0
- strh r2, [r0]
- mov r0, r9
- adds r0, 0x2
- adds r0, r3, r0
- strh r4, [r0]
- ldr r1, _080B3684 @ =gUnknown_020386A8
- adds r0, r3, r1
- strh r5, [r0]
- ldr r1, _080B3688 @ =gMapObjects
- lsls r0, r2, 3
- adds r0, r2
- lsls r0, 2
- adds r2, r0, r1
- ldrb r0, [r2, 0x18]
- lsls r0, 28
- lsrs r0, 28
- cmp r0, 0x1
- bne _080B3616
- adds r0, r3, r7
- strh r6, [r0]
-_080B3616:
- ldrb r0, [r2, 0x18]
- lsls r0, 28
- lsrs r0, 28
- cmp r0, 0x2
- bne _080B3626
- adds r1, r3, r7
- movs r0, 0x1
- strh r0, [r1]
-_080B3626:
- ldrb r0, [r2, 0x18]
- lsls r0, 28
- lsrs r0, 28
- cmp r0, 0x3
- bne _080B3636
- adds r1, r3, r7
- movs r0, 0x2
- strh r0, [r1]
-_080B3636:
- ldrb r0, [r2, 0x18]
- lsls r0, 28
- lsrs r0, 28
- cmp r0, 0x4
- bne _080B3646
- adds r1, r3, r7
- movs r0, 0x3
- strh r0, [r1]
-_080B3646:
- mov r0, r8
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
-_080B3650:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bls _080B35B6
- mov r2, r10
- lsls r0, r2, 24
- lsrs r5, r0, 24
- cmp r5, 0x4
- bls _080B35B0
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3674: .4byte gUnknown_020386A4
-_080B3678: .4byte gUnknown_020386AA
-_080B367C: .4byte 0x0000fffd
-_080B3680: .4byte 0x0000fffe
-_080B3684: .4byte gUnknown_020386A8
-_080B3688: .4byte gMapObjects
- thumb_func_end sub_80B356C
-
- thumb_func_start sub_80B368C
-sub_80B368C: @ 80B368C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x4
- movs r5, 0
- ldr r6, _080B3710 @ =gUnknown_020386A4
- adds r0, r6, 0x6
- mov r8, r0
- ldr r7, _080B3714 @ =gMapObjects
-_080B369E:
- lsls r4, r5, 3
- adds r1, r4, r6
- movs r2, 0
- ldrsh r0, [r1, r2]
- cmp r0, 0x10
- beq _080B36F8
- adds r1, r0, 0
- lsls r0, r1, 3
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldrb r0, [r0, 0x5]
- adds r1, r6, 0x2
- adds r1, r4, r1
- ldrh r2, [r1]
- lsls r2, 4
- adds r2, 0x8
- lsls r2, 16
- asrs r2, 16
- adds r1, r6, 0x4
- adds r1, r4, r1
- ldrh r3, [r1]
- lsls r3, 20
- movs r1, 0x80
- lsls r1, 14
- adds r3, r1
- asrs r3, 16
- movs r1, 0x2
- str r1, [sp]
- ldr r1, _080B3718 @ =SpriteCallbackDummy
- bl AddPseudoFieldObject
- lsls r0, 24
- lsrs r0, 24
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r0, _080B371C @ =gSprites
- adds r2, r0
- mov r1, r8
- adds r0, r4, r1
- ldrb r1, [r0]
- adds r0, r2, 0
- bl StartSpriteAnim
-_080B36F8:
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _080B369E
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3710: .4byte gUnknown_020386A4
-_080B3714: .4byte gMapObjects
-_080B3718: .4byte SpriteCallbackDummy
-_080B371C: .4byte gSprites
- thumb_func_end sub_80B368C
-
- thumb_func_start sub_80B3720
-sub_80B3720: @ 80B3720
- push {r4-r6,lr}
- movs r1, 0
- ldr r6, _080B3754 @ =gBGTilemapBuffers + 0x800
- ldr r5, _080B3758 @ =0x000003ff
- ldr r4, _080B375C @ =0x02018000
- ldr r0, _080B3760 @ =0x0000c3e0
- adds r3, r0, 0
-_080B372E:
- lsls r0, r1, 16
- asrs r2, r0, 16
- lsls r1, r2, 1
- adds r0, r1, r4
- ldrh r0, [r0]
- cmp r0, 0
- beq _080B3742
- adds r1, r6
- adds r0, r3
- strh r0, [r1]
-_080B3742:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r1, r0, 16
- asrs r0, 16
- cmp r0, r5
- ble _080B372E
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3754: .4byte gBGTilemapBuffers + 0x800
-_080B3758: .4byte 0x000003ff
-_080B375C: .4byte 0x02018000
-_080B3760: .4byte 0x0000c3e0
- thumb_func_end sub_80B3720
-
- thumb_func_start sub_80B3764
-sub_80B3764: @ 80B3764
- push {r4,r5,lr}
- sub sp, 0x8
- adds r4, r0, 0
- adds r5, r1, 0
- bl sub_80B3720
- adds r0, r4, 0
- adds r1, r5, 0
- movs r2, 0
- bl sub_80B39D0
- ldr r0, _080B3798 @ =gUnknown_03000708
- ldrb r0, [r0, 0x9]
- str r0, [sp]
- movs r0, 0xF
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x2
- movs r3, 0x8
- bl InitMenu
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3798: .4byte gUnknown_03000708
- thumb_func_end sub_80B3764
-
- thumb_func_start sub_80B379C
-sub_80B379C: @ 80B379C
- push {r4-r7,lr}
- movs r1, 0
- ldr r0, _080B37E0 @ =gBGTilemapBuffers + 0x800
- mov r12, r0
- ldr r7, _080B37E4 @ =0x02018300
- ldr r0, _080B37E8 @ =0x0000c3e0
- adds r6, r0, 0
-_080B37AA:
- movs r2, 0
- adds r0, r1, 0
- adds r0, 0xC
- adds r5, r1, 0x1
- lsls r4, r0, 5
- lsls r3, r1, 5
-_080B37B6:
- adds r1, r4, r2
- lsls r1, 1
- add r1, r12
- adds r0, r3, r2
- lsls r0, 1
- adds r0, r7
- ldrh r0, [r0]
- adds r0, r6, r0
- strh r0, [r1]
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0xD
- bls _080B37B6
- lsls r0, r5, 16
- lsrs r1, r0, 16
- cmp r1, 0x7
- bls _080B37AA
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B37E0: .4byte gBGTilemapBuffers + 0x800
-_080B37E4: .4byte 0x02018300
-_080B37E8: .4byte 0x0000c3e0
- thumb_func_end sub_80B379C
-
- thumb_func_start sub_80B37EC
-sub_80B37EC: @ 80B37EC
- push {lr}
- bl sub_80B3A70
- pop {r0}
- bx r0
- thumb_func_end sub_80B37EC
-
- thumb_func_start sub_80B37F8
-sub_80B37F8: @ 80B37F8
- push {r4-r6,lr}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldr r1, _080B3884 @ =gUnknown_03000708
- ldrb r0, [r1, 0xB]
- ldrb r2, [r1, 0x9]
- adds r0, r2
- ldr r1, [r1, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetPrice
- adds r4, r0, 0
- movs r0, 0x1
- bl GetPriceReduction
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- asrs r4, r0
- ldr r0, _080B3888 @ =gTasks
- lsls r5, r6, 2
- adds r5, r6
- lsls r5, 3
- adds r5, r0
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- muls r0, r4
- movs r1, 0x6
- movs r2, 0x6
- movs r3, 0xB
- bl sub_80B7A94
- ldr r0, _080B388C @ =gStringVar1
- movs r1, 0xFC
- strb r1, [r0]
- movs r1, 0x14
- strb r1, [r0, 0x1]
- movs r1, 0x6
- strb r1, [r0, 0x2]
- adds r0, 0x3
- movs r2, 0xA
- ldrsh r1, [r5, r2]
- movs r2, 0x1
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, _080B3890 @ =gOtherText_xString1
- movs r1, 0x1
- movs r2, 0xB
- bl MenuPrint
- ldr r0, _080B3894 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x2
- str r1, [sp]
- ldr r1, _080B3898 @ =0x0000c3e1
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0xB
- movs r3, 0xC
- bl sub_80A3FA0
- add sp, 0x8
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3884: .4byte gUnknown_03000708
-_080B3888: .4byte gTasks
-_080B388C: .4byte gStringVar1
-_080B3890: .4byte gOtherText_xString1
-_080B3894: .4byte gBGTilemapBuffers + 0x800
-_080B3898: .4byte 0x0000c3e1
- thumb_func_end sub_80B37F8
-
- thumb_func_start sub_80B389C
-sub_80B389C: @ 80B389C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- mov r8, r2
- lsls r0, 16
- lsrs r2, r0, 16
- mov r9, r2
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r5, _080B392C @ =gStringVar1
- mov r0, r8
- cmp r0, 0
- beq _080B38C8
- movs r0, 0xFC
- strb r0, [r5]
- movs r0, 0x1
- strb r0, [r5, 0x1]
- movs r0, 0x2
- strb r0, [r5, 0x2]
- adds r5, 0x3
-_080B38C8:
- adds r0, r2, 0
- adds r1, r5, 0
- bl CopyItemName
- ldr r6, _080B392C @ =gStringVar1
- lsls r7, r4, 3
- movs r0, 0x1
- str r0, [sp]
- adds r0, r6, 0
- movs r1, 0x70
- adds r2, r7, 0
- movs r3, 0x58
- bl sub_8072A18
- adds r5, r6, 0
- mov r0, r8
- cmp r0, 0
- beq _080B38EE
- adds r5, r6, 0x3
-_080B38EE:
- mov r0, r9
- bl ItemId_GetPrice
- adds r4, r0, 0
- movs r0, 0x1
- bl GetPriceReduction
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- asrs r4, r0
- adds r0, r5, 0
- adds r1, r4, 0
- movs r2, 0x4
- bl sub_80B79F8
- adds r0, r6, 0
- movs r1, 0xCA
- adds r2, r7, 0
- movs r3, 0x1
- bl MenuPrint_PixelCoords
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B392C: .4byte gStringVar1
- thumb_func_end sub_80B389C
-
- thumb_func_start sub_80B3930
-sub_80B3930: @ 80B3930
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r4, r2, 0
- lsls r0, 16
- lsrs r3, r0, 16
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r2, _080B39A0 @ =gStringVar1
- cmp r4, 0
- beq _080B395A
- movs r0, 0xFC
- strb r0, [r2]
- movs r0, 0x1
- strb r0, [r2, 0x1]
- movs r0, 0x2
- strb r0, [r2, 0x2]
- adds r2, 0x3
-_080B395A:
- lsls r6, r3, 5
- ldr r0, _080B39A4 @ =gDecorations + 0x1
- mov r8, r0
- adds r1, r6, r0
- adds r0, r2, 0
- bl StringCopy
- ldr r5, _080B39A0 @ =gStringVar1
- mov r0, r9
- lsls r7, r0, 3
- movs r0, 0x1
- str r0, [sp]
- adds r0, r5, 0
- movs r1, 0x70
- adds r2, r7, 0
- movs r3, 0x58
- bl sub_8072A18
- adds r2, r5, 0
- cmp r4, 0
- beq _080B3986
- adds r2, r5, 0x3
-_080B3986:
- mov r0, r8
- subs r0, 0x1
- adds r3, r6, r0
- ldrh r1, [r3, 0x14]
- ldr r0, _080B39A8 @ =0x00002710
- cmp r1, r0
- bne _080B39AC
- movs r0, 0x19
- mov r1, r9
- adds r2, r4, 0
- bl sub_80B7B34
- b _080B39C2
- .align 2, 0
-_080B39A0: .4byte gStringVar1
-_080B39A4: .4byte gDecorations + 0x1
-_080B39A8: .4byte 0x00002710
-_080B39AC:
- ldrh r1, [r3, 0x14]
- adds r0, r2, 0
- movs r2, 0x4
- bl sub_80B79F8
- adds r0, r5, 0
- movs r1, 0xCA
- adds r2, r7, 0
- movs r3, 0x1
- bl MenuPrint_PixelCoords
-_080B39C2:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3930
-
- thumb_func_start sub_80B39D0
-sub_80B39D0: @ 80B39D0
- push {r4-r6,lr}
- adds r6, r1, 0
- adds r5, r2, 0
- b _080B3A1A
-_080B39D8:
- ldrb r0, [r1, 0xC]
- cmp r0, 0
- bne _080B39FC
- ldrb r0, [r1, 0xB]
- adds r0, r4
- ldr r1, [r1, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r4, 25
- movs r2, 0x80
- lsls r2, 18
- adds r1, r2
- lsrs r1, 24
- adds r2, r5, 0
- bl sub_80B389C
- b _080B3A18
-_080B39FC:
- ldrb r0, [r1, 0xB]
- adds r0, r4
- ldr r1, [r1, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r4, 25
- movs r2, 0x80
- lsls r2, 18
- adds r1, r2
- lsrs r1, 24
- adds r2, r5, 0
- bl sub_80B3930
-_080B3A18:
- adds r0, r4, 0x1
-_080B3A1A:
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bgt _080B3A2E
- ldr r1, _080B3A68 @ =gUnknown_03000708
- ldrb r0, [r1, 0xB]
- adds r0, r4
- ldrb r2, [r1, 0x8]
- cmp r0, r2
- blt _080B39D8
-_080B3A2E:
- cmp r4, 0x8
- beq _080B3A60
- ldr r1, _080B3A68 @ =gUnknown_03000708
- ldrb r0, [r1, 0xB]
- adds r0, r4
- ldrb r1, [r1, 0x8]
- cmp r0, r1
- bne _080B3A60
- lsls r3, r4, 1
- adds r4, r3, 0x2
- lsls r4, 24
- lsrs r4, 24
- adds r3, 0x3
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0xE
- adds r1, r4, 0
- movs r2, 0x1C
- bl MenuFillWindowRectWithBlankTile
- ldr r0, _080B3A6C @ =gOtherText_CancelNoTerminator
- movs r1, 0xE
- adds r2, r4, 0
- bl MenuPrint
-_080B3A60:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3A68: .4byte gUnknown_03000708
-_080B3A6C: .4byte gOtherText_CancelNoTerminator
- thumb_func_end sub_80B39D0
-
- thumb_func_start sub_80B3A70
-sub_80B3A70: @ 80B3A70
- push {r4,lr}
- sub sp, 0x8
- ldr r2, _080B3A9C @ =gUnknown_03000708
- ldrb r1, [r2, 0xB]
- ldrb r0, [r2, 0x9]
- adds r0, r1, r0
- ldrb r1, [r2, 0x8]
- cmp r0, r1
- beq _080B3ACC
- ldrb r4, [r2, 0xC]
- cmp r4, 0
- bne _080B3AA0
- ldr r1, [r2, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetDescription
- movs r1, 0x30
- str r1, [sp]
- str r4, [sp, 0x4]
- b _080B3ABA
- .align 2, 0
-_080B3A9C: .4byte gUnknown_03000708
-_080B3AA0:
- ldr r1, _080B3AC8 @ =gDecorations
- ldr r2, [r2, 0x4]
- lsls r0, 1
- adds r0, r2
- ldrh r0, [r0]
- lsls r0, 5
- adds r1, 0x18
- adds r0, r1
- ldr r0, [r0]
- movs r1, 0x30
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
-_080B3ABA:
- movs r1, 0x4
- movs r2, 0x68
- movs r3, 0x68
- bl sub_8072AB0
- b _080B3AE0
- .align 2, 0
-_080B3AC8: .4byte gDecorations
-_080B3ACC:
- ldr r0, _080B3AE8 @ =gOtherText_QuitShopping
- movs r1, 0x30
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x4
- movs r2, 0x68
- movs r3, 0x68
- bl sub_8072AB0
-_080B3AE0:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3AE8: .4byte gOtherText_QuitShopping
- thumb_func_end sub_80B3A70
-
- thumb_func_start sub_80B3AEC
-sub_80B3AEC: @ 80B3AEC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _080B3B5C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080B3B06
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080B3B7A
-_080B3B06:
- ldr r4, _080B3B60 @ =gUnknown_03000708
- ldrb r1, [r4, 0x9]
- adds r0, r1, 0
- movs r2, 0
- bl sub_80B39D0
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0xB]
- ldrb r1, [r4, 0x9]
- adds r0, r1
- ldr r1, [r4, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- cmp r0, 0x4
- bne _080B3B74
- ldr r0, _080B3B64 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0x9
- ble _080B3B74
- movs r0, 0xC
- movs r1, 0x1
- bl AddBagItem
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B3B74
- ldr r1, _080B3B68 @ =gOtherText_FreePremierBall
- ldr r2, _080B3B6C @ =sub_80B4378
- ldr r3, _080B3B70 @ =0x0000c3e1
- adds r0, r5, 0
- bl DisplayItemMessageOnField
- b _080B3B7A
- .align 2, 0
-_080B3B5C: .4byte gMain
-_080B3B60: .4byte gUnknown_03000708
-_080B3B64: .4byte gTasks
-_080B3B68: .4byte gOtherText_FreePremierBall
-_080B3B6C: .4byte sub_80B4378
-_080B3B70: .4byte 0x0000c3e1
-_080B3B74:
- adds r0, r5, 0
- bl sub_80B4378
-_080B3B7A:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3AEC
-
- thumb_func_start sub_80B3B80
-sub_80B3B80: @ 80B3B80
- push {r4,r5,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x26
- bl IncrementGameStat
- ldr r5, _080B3BC0 @ =gSaveBlock1 + 0x490
- ldr r0, _080B3BC4 @ =gUnknown_020386A0
- ldr r1, [r0]
- adds r0, r5, 0
- bl sub_80B79E0
- movs r0, 0x5F
- bl PlaySE
- ldr r0, [r5]
- movs r1, 0
- movs r2, 0
- bl sub_80B7BEC
- ldr r1, _080B3BC8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080B3BCC @ =sub_80B3AEC
- str r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3BC0: .4byte gSaveBlock1 + 0x490
-_080B3BC4: .4byte gUnknown_020386A0
-_080B3BC8: .4byte gTasks
-_080B3BCC: .4byte sub_80B3AEC
- thumb_func_end sub_80B3B80
-
- thumb_func_start sub_80B3BD0
-sub_80B3BD0: @ 80B3BD0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080B3BF0 @ =gUnknown_03000708
- ldrb r1, [r0, 0x9]
- adds r0, r1, 0
- movs r2, 0
- bl sub_80B39D0
- adds r0, r4, 0
- bl sub_80B4378
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3BF0: .4byte gUnknown_03000708
- thumb_func_end sub_80B3BD0
-
- thumb_func_start sub_80B3BF4
-sub_80B3BF4: @ 80B3BF4
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- movs r0, 0x7
- movs r1, 0x8
- movs r2, 0xD
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080B3C7C @ =gBGTilemapBuffers + 0x800
- movs r1, 0x4
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x8
- movs r2, 0x9
- movs r3, 0x4
- bl sub_80A3FA0
- bl sub_80B379C
- bl sub_80B3420
- ldr r0, _080B3C80 @ =gSaveBlock1
- movs r1, 0x92
- lsls r1, 3
- adds r0, r1
- ldr r0, [r0]
- ldr r1, _080B3C84 @ =gUnknown_020386A0
- ldr r1, [r1]
- bl IsEnoughMoney
- lsls r0, 24
- cmp r0, 0
- beq _080B3D18
- ldr r4, _080B3C88 @ =gUnknown_03000708
- ldrb r0, [r4, 0xC]
- cmp r0, 0
- bne _080B3CAC
- ldrb r0, [r4, 0xB]
- ldrb r1, [r4, 0x9]
- adds r0, r1
- ldr r1, [r4, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- ldr r2, _080B3C8C @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r2
- ldrh r1, [r1, 0xA]
- bl AddBagItem
- lsls r0, 24
- cmp r0, 0
- beq _080B3C9C
- ldr r1, _080B3C90 @ =gOtherText_HereYouGo
- ldr r2, _080B3C94 @ =sub_80B3B80
- ldr r3, _080B3C98 @ =0x0000c3e1
- adds r0, r5, 0
- bl DisplayItemMessageOnField
- adds r0, r5, 0
- bl sub_80B4470
- b _080B3D24
- .align 2, 0
-_080B3C7C: .4byte gBGTilemapBuffers + 0x800
-_080B3C80: .4byte gSaveBlock1
-_080B3C84: .4byte gUnknown_020386A0
-_080B3C88: .4byte gUnknown_03000708
-_080B3C8C: .4byte gTasks
-_080B3C90: .4byte gOtherText_HereYouGo
-_080B3C94: .4byte sub_80B3B80
-_080B3C98: .4byte 0x0000c3e1
-_080B3C9C:
- ldr r1, _080B3CA4 @ =gOtherText_NoRoomFor
- ldr r2, _080B3CA8 @ =sub_80B3BD0
- b _080B3CD8
- .align 2, 0
-_080B3CA4: .4byte gOtherText_NoRoomFor
-_080B3CA8: .4byte sub_80B3BD0
-_080B3CAC:
- ldrb r0, [r4, 0xB]
- ldrb r1, [r4, 0x9]
- adds r0, r1
- ldr r1, [r4, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrb r0, [r0]
- bl IsThereStorageSpaceForDecoration
- lsls r0, 24
- cmp r0, 0
- beq _080B3CF0
- ldrb r0, [r4, 0xC]
- cmp r0, 0x1
- bne _080B3CD4
- ldr r1, _080B3CD0 @ =gOtherText_HereYouGo2
- b _080B3CD6
- .align 2, 0
-_080B3CD0: .4byte gOtherText_HereYouGo2
-_080B3CD4:
- ldr r1, _080B3CE4 @ =gOtherText_HereYouGo3
-_080B3CD6:
- ldr r2, _080B3CE8 @ =sub_80B3B80
-_080B3CD8:
- ldr r3, _080B3CEC @ =0x0000c3e1
- adds r0, r5, 0
- bl DisplayItemMessageOnField
- b _080B3D24
- .align 2, 0
-_080B3CE4: .4byte gOtherText_HereYouGo3
-_080B3CE8: .4byte sub_80B3B80
-_080B3CEC: .4byte 0x0000c3e1
-_080B3CF0:
- ldr r4, _080B3D08 @ =gStringVar4
- ldr r1, _080B3D0C @ =gOtherText_SpaceForIsFull
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, _080B3D10 @ =sub_80B3BD0
- ldr r3, _080B3D14 @ =0x0000c3e1
- adds r0, r5, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _080B3D24
- .align 2, 0
-_080B3D08: .4byte gStringVar4
-_080B3D0C: .4byte gOtherText_SpaceForIsFull
-_080B3D10: .4byte sub_80B3BD0
-_080B3D14: .4byte 0x0000c3e1
-_080B3D18:
- ldr r1, _080B3D2C @ =gOtherText_NotEnoughMoney
- ldr r2, _080B3D30 @ =sub_80B3BD0
- ldr r3, _080B3D34 @ =0x0000c3e1
- adds r0, r5, 0
- bl DisplayItemMessageOnField
-_080B3D24:
- add sp, 0x8
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3D2C: .4byte gOtherText_NotEnoughMoney
-_080B3D30: .4byte sub_80B3BD0
-_080B3D34: .4byte 0x0000c3e1
- thumb_func_end sub_80B3BF4
-
- thumb_func_start sub_80B3D38
-sub_80B3D38: @ 80B3D38
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0x7
- movs r1, 0x8
- movs r2, 0x1
- bl DisplayYesNoMenu
- ldr r0, _080B3D70 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x4
- str r1, [sp]
- ldr r1, _080B3D74 @ =0x0000c3e1
- str r1, [sp, 0x4]
- movs r1, 0x8
- movs r2, 0x9
- movs r3, 0x4
- bl sub_80A3FA0
- ldr r1, _080B3D78 @ =gUnknown_083CC708
- adds r0, r4, 0
- bl DoYesNoFuncWithChoice
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3D70: .4byte gBGTilemapBuffers + 0x800
-_080B3D74: .4byte 0x0000c3e1
-_080B3D78: .4byte gUnknown_083CC708
- thumb_func_end sub_80B3D38
-
- thumb_func_start sub_80B3D7C
-sub_80B3D7C: @ 80B3D7C
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _080B3DC0 @ =gUnknown_03000708
- ldrb r1, [r0, 0x9]
- adds r0, r1, 0
- movs r2, 0
- bl sub_80B39D0
- movs r0, 0x7
- movs r1, 0x8
- movs r2, 0xD
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080B3DC4 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x4
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x8
- movs r2, 0x9
- movs r3, 0x4
- bl sub_80A3FA0
- adds r0, r4, 0
- bl sub_80B4378
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3DC0: .4byte gUnknown_03000708
-_080B3DC4: .4byte gBGTilemapBuffers + 0x800
- thumb_func_end sub_80B3D7C
-
- thumb_func_start sub_80B3DC8
-sub_80B3DC8: @ 80B3DC8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- adds r4, r6, 0
- ldr r7, _080B3EA8 @ =gUnknown_03000708
- ldrb r1, [r7, 0xD]
- adds r0, r6, 0
- bl sub_80A52C4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080B3DEE
- adds r0, r6, 0
- bl sub_80B37F8
-_080B3DEE:
- ldr r0, _080B3EAC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080B3ED8
- ldr r0, _080B3EB0 @ =gUnknown_020386A0
- mov r8, r0
- ldrb r0, [r7, 0xB]
- ldrb r1, [r7, 0x9]
- adds r0, r1
- ldr r1, [r7, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetPrice
- adds r4, r0, 0
- movs r0, 0x1
- bl GetPriceReduction
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- asrs r4, r0
- ldr r0, _080B3EB4 @ =gTasks
- lsls r5, r6, 2
- adds r5, r6
- lsls r5, 3
- adds r5, r0
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- muls r0, r4
- mov r2, r8
- str r0, [r2]
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xD
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080B3EB8 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0xB
- movs r3, 0xC
- bl sub_80A3FA0
- bl sub_80B379C
- bl sub_80B3420
- ldrb r0, [r7, 0xB]
- ldrb r1, [r7, 0x9]
- adds r0, r1
- ldr r1, [r7, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- ldr r1, _080B3EBC @ =gStringVar1
- bl CopyItemName
- ldr r0, _080B3EC0 @ =gStringVar2
- movs r2, 0xA
- ldrsh r1, [r5, r2]
- movs r2, 0
- movs r3, 0x2
- bl ConvertIntToDecimalStringN
- ldr r0, _080B3EC4 @ =gStringVar3
- mov r2, r8
- ldr r1, [r2]
- movs r2, 0
- movs r3, 0x8
- bl ConvertIntToDecimalStringN
- ldr r4, _080B3EC8 @ =gStringVar4
- ldr r1, _080B3ECC @ =gOtherText_ThatWillBe
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, _080B3ED0 @ =sub_80B3D38
- ldr r3, _080B3ED4 @ =0x0000c3e1
- adds r0, r6, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _080B3EF0
- .align 2, 0
-_080B3EA8: .4byte gUnknown_03000708
-_080B3EAC: .4byte gMain
-_080B3EB0: .4byte gUnknown_020386A0
-_080B3EB4: .4byte gTasks
-_080B3EB8: .4byte gBGTilemapBuffers + 0x800
-_080B3EBC: .4byte gStringVar1
-_080B3EC0: .4byte gStringVar2
-_080B3EC4: .4byte gStringVar3
-_080B3EC8: .4byte gStringVar4
-_080B3ECC: .4byte gOtherText_ThatWillBe
-_080B3ED0: .4byte sub_80B3D38
-_080B3ED4: .4byte 0x0000c3e1
-_080B3ED8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080B3EF0
- ldrb r1, [r7, 0x9]
- adds r0, r1, 0
- movs r2, 0
- bl sub_80B39D0
- adds r0, r4, 0
- bl sub_80B4378
-_080B3EF0:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B3DC8
-
- thumb_func_start sub_80B3EFC
-sub_80B3EFC: @ 80B3EFC
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r1, _080B3F78 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r1
- movs r1, 0x1
- strh r1, [r0, 0xA]
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xD
- movs r3, 0xD
- bl MenuDrawTextWindow
- adds r0, r5, 0
- bl sub_80B37F8
- ldr r6, _080B3F7C @ =gUnknown_03000708
- ldrb r0, [r6, 0xB]
- ldrb r1, [r6, 0x9]
- adds r0, r1
- ldr r1, [r6, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetPrice
- adds r4, r0, 0
- movs r0, 0x1
- bl GetPriceReduction
- ldr r1, _080B3F80 @ =gSaveBlock1
- movs r2, 0x92
- lsls r2, 3
- adds r1, r2
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- asrs r4, r0
- ldr r0, [r1]
- adds r1, r4, 0
- bl __udivsi3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x63
- bls _080B3F62
- movs r0, 0x63
-_080B3F62:
- strb r0, [r6, 0xD]
- ldr r0, _080B3F78 @ =gTasks
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- adds r1, r0
- ldr r0, _080B3F84 @ =sub_80B3DC8
- str r0, [r1]
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080B3F78: .4byte gTasks
-_080B3F7C: .4byte gUnknown_03000708
-_080B3F80: .4byte gSaveBlock1
-_080B3F84: .4byte sub_80B3DC8
- thumb_func_end sub_80B3EFC
-
- thumb_func_start sub_80B3F88
-sub_80B3F88: @ 80B3F88
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _080B4020 @ =gMenuWindow
- mov r8, r0
- ldr r1, [r0, 0x28]
- ldr r3, _080B4024 @ =0x000003de
- adds r1, r3
- adds r2, r1, 0
- adds r2, 0x80
- ldr r7, [r0, 0x24]
- mov r10, r7
- ldr r0, _080B4028 @ =0x000003ff
- mov r9, r0
- movs r6, 0xD
-_080B3FAC:
- adds r3, r2, 0
- subs r3, 0x40
- str r3, [sp]
- movs r7, 0x40
- negs r7, r7
- adds r7, r1
- mov r12, r7
- adds r3, r2, 0
- adds r4, r1, 0
- movs r5, 0xE
-_080B3FC0:
- ldrh r2, [r4]
- mov r1, r9
- ands r1, r2
- mov r7, r8
- ldrh r0, [r7, 0x1A]
- adds r0, 0x1
- cmp r1, r0
- ble _080B3FD4
- adds r0, r2, 0
- adds r0, 0x3C
-_080B3FD4:
- strh r0, [r3]
- adds r3, 0x2
- adds r4, 0x2
- subs r5, 0x1
- cmp r5, 0
- bge _080B3FC0
- ldr r2, [sp]
- mov r1, r12
- subs r6, 0x1
- cmp r6, 0
- bge _080B3FAC
- ldr r1, _080B402C @ =0x00003a20
- add r1, r10
- movs r0, 0xF0
- lsls r0, 3
- adds r2, r1, r0
- ldr r3, _080B4030 @ =0x040000d4
- ldr r5, _080B4034 @ =0x800000f0
- ldr r4, _080B4038 @ =0xfffffc40
- movs r6, 0xD
-_080B3FFC:
- str r1, [r3]
- str r2, [r3, 0x4]
- str r5, [r3, 0x8]
- ldr r0, [r3, 0x8]
- adds r2, r4
- adds r1, r4
- subs r6, 0x1
- cmp r6, 0
- bge _080B3FFC
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4020: .4byte gMenuWindow
-_080B4024: .4byte 0x000003de
-_080B4028: .4byte 0x000003ff
-_080B402C: .4byte 0x00003a20
-_080B4030: .4byte 0x040000d4
-_080B4034: .4byte 0x800000f0
-_080B4038: .4byte 0xfffffc40
- thumb_func_end sub_80B3F88
-
- thumb_func_start sub_80B403C
-sub_80B403C: @ 80B403C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r0, _080B40D8 @ =gMenuWindow
- mov r8, r0
- ldr r2, [r0, 0x28]
- adds r1, r2, 0
- adds r1, 0x9E
- adds r2, r1, 0
- adds r1, 0x80
- ldr r3, [r0, 0x24]
- mov r10, r3
- ldr r7, _080B40DC @ =0x000003ff
- mov r9, r7
- movs r6, 0xD
-_080B4060:
- adds r0, r2, 0
- adds r0, 0x40
- str r0, [sp]
- movs r3, 0x40
- adds r3, r1
- mov r12, r3
- adds r3, r2, 0
- adds r4, r1, 0
- movs r5, 0xE
-_080B4072:
- ldrh r2, [r4]
- mov r1, r9
- ands r1, r2
- mov r7, r8
- ldrh r0, [r7, 0x1A]
- adds r0, 0x1
- cmp r1, r0
- ble _080B4086
- adds r0, r2, 0
- subs r0, 0x3C
-_080B4086:
- strh r0, [r3]
- adds r3, 0x2
- adds r4, 0x2
- subs r5, 0x1
- cmp r5, 0
- bge _080B4072
- ldr r2, [sp]
- mov r1, r12
- subs r6, 0x1
- cmp r6, 0
- bge _080B4060
- movs r1, 0x96
- lsls r1, 4
- add r1, r10
- adds r2, r1, 0
- movs r0, 0xF0
- lsls r0, 3
- adds r1, r0
- ldr r3, _080B40E0 @ =0x040000d4
- ldr r5, _080B40E4 @ =0x800000f0
- movs r4, 0xF0
- lsls r4, 2
- movs r6, 0xD
-_080B40B4:
- str r1, [r3]
- str r2, [r3, 0x4]
- str r5, [r3, 0x8]
- ldr r0, [r3, 0x8]
- adds r2, r4
- adds r1, r4
- subs r6, 0x1
- cmp r6, 0
- bge _080B40B4
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B40D8: .4byte gMenuWindow
-_080B40DC: .4byte 0x000003ff
-_080B40E0: .4byte 0x040000d4
-_080B40E4: .4byte 0x800000f0
- thumb_func_end sub_80B403C
-
- thumb_func_start sub_80B40E8
-sub_80B40E8: @ 80B40E8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r7, r0, 24
- mov r8, r7
- ldr r0, _080B4134 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080B4102
- b _080B436C
-_080B4102:
- ldr r2, _080B4138 @ =gMain
- ldrh r0, [r2, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _080B414C
- ldr r4, _080B413C @ =gUnknown_03000708
- ldrb r0, [r4, 0x9]
- cmp r0, 0
- bne _080B4140
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _080B411E
- b _080B436C
-_080B411E:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0xB]
- subs r0, 0x1
- strb r0, [r4, 0xB]
- bl sub_80B3F88
- movs r0, 0
- movs r1, 0
- b _080B417A
- .align 2, 0
-_080B4134: .4byte gPaletteFade
-_080B4138: .4byte gMain
-_080B413C: .4byte gUnknown_03000708
-_080B4140:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _080B41A0
-_080B414C:
- cmp r1, 0x80
- bne _080B41AC
- ldr r4, _080B418C @ =gUnknown_03000708
- ldrb r0, [r4, 0x9]
- cmp r0, 0x7
- bne _080B4190
- ldrb r0, [r4, 0xB]
- ldrb r1, [r4, 0x9]
- adds r0, r1
- ldrb r1, [r4, 0x8]
- cmp r0, r1
- bne _080B4166
- b _080B436C
-_080B4166:
- movs r0, 0x5
- bl PlaySE
- ldrb r0, [r4, 0xB]
- adds r0, 0x1
- strb r0, [r4, 0xB]
- bl sub_80B403C
- movs r0, 0x7
- movs r1, 0x7
-_080B417A:
- movs r2, 0
- bl sub_80B39D0
- bl sub_80B3A70
- bl sub_80B32A4
- b _080B436C
- .align 2, 0
-_080B418C: .4byte gUnknown_03000708
-_080B4190:
- ldrb r2, [r4, 0x8]
- cmp r0, r2
- bne _080B4198
- b _080B436C
-_080B4198:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_080B41A0:
- bl MoveMenuCursor
- strb r0, [r4, 0x9]
- bl sub_80B3A70
- b _080B436C
-_080B41AC:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _080B41B8
- b _080B4358
-_080B41B8:
- movs r0, 0x5
- bl PlaySE
- ldr r6, _080B426C @ =gUnknown_03000708
- ldrb r0, [r6, 0xB]
- ldrb r1, [r6, 0x9]
- adds r0, r1
- ldrb r1, [r6, 0x8]
- cmp r0, r1
- bne _080B41CE
- b _080B4350
-_080B41CE:
- movs r0, 0
- bl PauseVerticalScrollIndicator
- movs r0, 0x1
- bl PauseVerticalScrollIndicator
- movs r0, 0x1
- movs r1, 0x1
- bl sub_80F979C
- ldrb r1, [r6, 0x9]
- adds r0, r1, 0
- movs r2, 0x1
- bl sub_80B39D0
- bl HandleDestroyMenuCursors
- movs r0, 0
- movs r1, 0xC
- movs r2, 0xD
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- ldrb r0, [r6, 0xC]
- cmp r0, 0
- bne _080B428C
- ldr r5, _080B4270 @ =gUnknown_020386A0
- ldrb r0, [r6, 0xB]
- ldrb r1, [r6, 0x9]
- adds r0, r1
- ldr r1, [r6, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- bl ItemId_GetPrice
- adds r4, r0, 0
- movs r0, 0x1
- bl GetPriceReduction
- lsls r4, 16
- lsrs r4, 16
- lsls r0, 24
- lsrs r0, 24
- asrs r4, r0
- str r4, [r5]
- ldr r0, _080B4274 @ =gSaveBlock1
- movs r2, 0x92
- lsls r2, 3
- adds r0, r2
- ldr r0, [r0]
- adds r1, r4, 0
- bl IsEnoughMoney
- lsls r0, 24
- cmp r0, 0
- beq _080B42BA
- ldrb r0, [r6, 0xB]
- ldrb r1, [r6, 0x9]
- adds r0, r1
- ldr r1, [r6, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- ldr r1, _080B4278 @ =gStringVar1
- bl CopyItemName
- ldr r4, _080B427C @ =gStringVar4
- ldr r1, _080B4280 @ =gOtherText_HowManyYouWant
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r2, _080B4284 @ =sub_80B3EFC
- ldr r3, _080B4288 @ =0x0000c3e1
- adds r0, r7, 0
- adds r1, r4, 0
- bl DisplayItemMessageOnField
- b _080B436C
- .align 2, 0
-_080B426C: .4byte gUnknown_03000708
-_080B4270: .4byte gUnknown_020386A0
-_080B4274: .4byte gSaveBlock1
-_080B4278: .4byte gStringVar1
-_080B427C: .4byte gStringVar4
-_080B4280: .4byte gOtherText_HowManyYouWant
-_080B4284: .4byte sub_80B3EFC
-_080B4288: .4byte 0x0000c3e1
-_080B428C:
- ldr r5, _080B42C8 @ =gUnknown_020386A0
- ldr r4, _080B42CC @ =gDecorations
- ldrb r0, [r6, 0xB]
- ldrb r1, [r6, 0x9]
- adds r0, r1
- ldr r1, [r6, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- lsls r0, 5
- adds r0, r4
- ldrh r1, [r0, 0x14]
- str r1, [r5]
- ldr r0, _080B42D0 @ =gSaveBlock1
- movs r2, 0x92
- lsls r2, 3
- adds r0, r2
- ldr r0, [r0]
- bl IsEnoughMoney
- lsls r0, 24
- cmp r0, 0
- bne _080B42E0
-_080B42BA:
- ldr r1, _080B42D4 @ =gOtherText_NotEnoughMoney
- ldr r2, _080B42D8 @ =sub_80B3BD0
- ldr r3, _080B42DC @ =0x0000c3e1
- adds r0, r7, 0
- bl DisplayItemMessageOnField
- b _080B436C
- .align 2, 0
-_080B42C8: .4byte gUnknown_020386A0
-_080B42CC: .4byte gDecorations
-_080B42D0: .4byte gSaveBlock1
-_080B42D4: .4byte gOtherText_NotEnoughMoney
-_080B42D8: .4byte sub_80B3BD0
-_080B42DC: .4byte 0x0000c3e1
-_080B42E0:
- ldr r0, _080B4318 @ =gStringVar1
- ldrb r1, [r6, 0xB]
- ldrb r2, [r6, 0x9]
- adds r1, r2
- ldr r2, [r6, 0x4]
- lsls r1, 1
- adds r1, r2
- ldrh r1, [r1]
- lsls r1, 5
- adds r2, r4, 0x1
- adds r1, r2
- bl StringCopy
- ldr r0, _080B431C @ =gStringVar2
- ldr r1, [r5]
- movs r2, 0
- movs r3, 0x8
- bl ConvertIntToDecimalStringN
- ldrb r0, [r6, 0xC]
- cmp r0, 0x1
- bne _080B4328
- ldr r0, _080B4320 @ =gStringVar4
- ldr r1, _080B4324 @ =gOtherText_ThatWillBe2
- bl StringExpandPlaceholders
- b _080B4330
- .align 2, 0
-_080B4318: .4byte gStringVar1
-_080B431C: .4byte gStringVar2
-_080B4320: .4byte gStringVar4
-_080B4324: .4byte gOtherText_ThatWillBe2
-_080B4328:
- ldr r0, _080B4340 @ =gStringVar4
- ldr r1, _080B4344 @ =gOtherText_ThatWillBe3
- bl StringExpandPlaceholders
-_080B4330:
- ldr r1, _080B4340 @ =gStringVar4
- ldr r2, _080B4348 @ =sub_80B3D38
- ldr r3, _080B434C @ =0x0000c3e1
- mov r0, r8
- bl DisplayItemMessageOnField
- b _080B436C
- .align 2, 0
-_080B4340: .4byte gStringVar4
-_080B4344: .4byte gOtherText_ThatWillBe3
-_080B4348: .4byte sub_80B3D38
-_080B434C: .4byte 0x0000c3e1
-_080B4350:
- adds r0, r7, 0
- bl sub_80B43F0
- b _080B436C
-_080B4358:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080B436C
- movs r0, 0x5
- bl PlaySE
- mov r0, r8
- bl sub_80B43F0
-_080B436C:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B40E8
-
- thumb_func_start sub_80B4378
-sub_80B4378: @ 80B4378
- push {r4,lr}
- sub sp, 0x8
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0xE
- movs r2, 0x1D
- movs r3, 0x13
- bl MenuZeroFillWindowRect
- movs r0, 0
- movs r1, 0xA
- movs r2, 0xD
- movs r3, 0xD
- bl MenuZeroFillWindowRect
- ldr r0, _080B43E4 @ =gBGTilemapBuffers + 0x800
- movs r1, 0x2
- str r1, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0xB
- movs r3, 0xC
- bl sub_80A3FA0
- bl sub_80B3420
- movs r0, 0x6
- movs r1, 0x7
- bl sub_80B3764
- bl sub_80B37EC
- movs r0, 0
- bl StartVerticalScrollIndicators
- movs r0, 0x1
- bl StartVerticalScrollIndicators
- bl sub_80B32A4
- ldr r1, _080B43E8 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080B43EC @ =sub_80B40E8
- str r1, [r0]
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B43E4: .4byte gBGTilemapBuffers + 0x800
-_080B43E8: .4byte gTasks
-_080B43EC: .4byte sub_80B40E8
- thumb_func_end sub_80B4378
-
- thumb_func_start sub_80B43F0
-sub_80B43F0: @ 80B43F0
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _080B4428 @ =gFieldCallback
- ldr r0, _080B442C @ =sub_80B3050
- str r0, [r1]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _080B4430 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _080B4434 @ =Task_ExitBuyMenu
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4428: .4byte gFieldCallback
-_080B442C: .4byte sub_80B3050
-_080B4430: .4byte gTasks
-_080B4434: .4byte Task_ExitBuyMenu
- thumb_func_end sub_80B43F0
-
- thumb_func_start Task_ExitBuyMenu
-Task_ExitBuyMenu: @ 80B4438
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080B4468 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080B4462
- movs r0, 0
- movs r1, 0
- bl RemoveMoneyLabelObject
- bl BuyMenuFreeMemory
- ldr r0, _080B446C @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- adds r0, r4, 0
- bl DestroyTask
-_080B4462:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4468: .4byte gPaletteFade
-_080B446C: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end Task_ExitBuyMenu
-
- thumb_func_start sub_80B4470
-sub_80B4470: @ 80B4470
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r2, 0
- ldr r0, _080B44C8 @ =gUnknown_02038724
- mov r12, r0
- ldr r6, _080B44CC @ =gUnknown_03000708
- mov r8, r12
- adds r4, r6, 0
- ldr r1, _080B44D0 @ =gTasks
- mov r9, r1
- lsls r0, r5, 2
- adds r0, r5
- lsls r7, r0, 3
-_080B4492:
- lsls r0, r2, 2
- mov r1, r8
- adds r3, r0, r1
- ldrb r0, [r4, 0xB]
- ldrb r1, [r4, 0x9]
- adds r0, r1
- ldr r1, [r4, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r1, [r3]
- ldrh r0, [r0]
- cmp r1, r0
- bne _080B44DC
- ldrh r0, [r3, 0x2]
- cmp r0, 0
- beq _080B44DC
- adds r2, r0, 0
- mov r4, r9
- adds r1, r7, r4
- movs r4, 0xA
- ldrsh r0, [r1, r4]
- adds r0, r2, r0
- cmp r0, 0xFF
- ble _080B44D4
- movs r0, 0xFF
- strh r0, [r3, 0x2]
- b _080B451E
- .align 2, 0
-_080B44C8: .4byte gUnknown_02038724
-_080B44CC: .4byte gUnknown_03000708
-_080B44D0: .4byte gTasks
-_080B44D4:
- ldrh r0, [r1, 0xA]
- adds r0, r2, r0
- strh r0, [r3, 0x2]
- b _080B451E
-_080B44DC:
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- cmp r2, 0x2
- bls _080B4492
- ldr r3, _080B452C @ =gUnknown_02038730
- ldrb r0, [r3]
- cmp r0, 0x2
- bhi _080B451E
- adds r2, r0, 0
- lsls r2, 2
- add r2, r12
- ldrb r0, [r6, 0xB]
- ldrb r1, [r6, 0x9]
- adds r0, r1
- ldr r1, [r6, 0x4]
- lsls r0, 1
- adds r0, r1
- ldrh r0, [r0]
- strh r0, [r2]
- ldrb r1, [r3]
- lsls r1, 2
- add r1, r12
- ldr r2, _080B4530 @ =gTasks
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- adds r0, r2
- ldrh r0, [r0, 0xA]
- strh r0, [r1, 0x2]
- ldrb r0, [r3]
- adds r0, 0x1
- strb r0, [r3]
-_080B451E:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080B452C: .4byte gUnknown_02038730
-_080B4530: .4byte gTasks
- thumb_func_end sub_80B4470
-
- thumb_func_start ClearItemPurchases
-ClearItemPurchases: @ 80B4534
- push {lr}
- ldr r0, _080B4548 @ =gUnknown_02038730
- movs r1, 0
- strb r1, [r0]
- ldr r0, _080B454C @ =gUnknown_02038724
- movs r1, 0x3
- bl ClearItemSlots
- pop {r0}
- bx r0
- .align 2, 0
-_080B4548: .4byte gUnknown_02038730
-_080B454C: .4byte gUnknown_02038724
- thumb_func_end ClearItemPurchases
-
- thumb_func_start CreatePokemartMenu
-CreatePokemartMenu: @ 80B4550
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0
- bl CreateShopMenu
- adds r0, r4, 0
- bl SetShopItemsForSale
- bl ClearItemPurchases
- ldr r0, _080B4570 @ =EnableBothScriptContexts
- bl SetShopMenuCallback
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4570: .4byte EnableBothScriptContexts
- thumb_func_end CreatePokemartMenu
-
- thumb_func_start CreateDecorationShop1Menu
-CreateDecorationShop1Menu: @ 80B4574
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x1
- bl CreateShopMenu
- adds r0, r4, 0
- bl SetShopItemsForSale
- ldr r0, _080B4590 @ =EnableBothScriptContexts
- bl SetShopMenuCallback
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B4590: .4byte EnableBothScriptContexts
- thumb_func_end CreateDecorationShop1Menu
-
- thumb_func_start CreateDecorationShop2Menu
-CreateDecorationShop2Menu: @ 80B4594
- push {r4,lr}
- adds r4, r0, 0
- movs r0, 0x2
- bl CreateShopMenu
- adds r0, r4, 0
- bl SetShopItemsForSale
- ldr r0, _080B45B0 @ =EnableBothScriptContexts
- bl SetShopMenuCallback
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080B45B0: .4byte EnableBothScriptContexts
- thumb_func_end CreateDecorationShop2Menu
-
- thumb_func_start sub_80B45B4
-sub_80B45B4: @ 80B45B4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x10
- mov r9, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r2, 16
- lsrs r2, 16
- mov r10, r2
- ldr r2, _080B4648 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- ldrh r0, [r1, 0x10]
- subs r0, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- ldrh r0, [r1, 0x12]
- subs r0, 0x1
- lsls r0, 16
- lsrs r3, r0, 16
- ldrh r4, [r1, 0xA]
- movs r2, 0xC
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080B4678
- movs r2, 0
- lsls r5, 16
- str r5, [sp, 0xC]
- lsls r0, r3, 16
- lsls r1, r4, 16
- asrs r0, 16
- str r0, [sp]
- asrs r1, 16
- str r1, [sp, 0x4]
- lsls r0, r1, 1
- mov r1, r9
- adds r7, r0, r1
-_080B4608:
- movs r4, 0
- lsls r2, 16
- mov r8, r2
- asrs r0, r2, 16
- ldr r2, [sp]
- adds r6, r2, r0
-_080B4614:
- ldr r0, [sp, 0xC]
- asrs r1, r0, 16
- lsls r4, 16
- asrs r0, r4, 16
- adds r5, r1, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridGetMetatileIdAt
- movs r2, 0
- ldrsh r1, [r7, r2]
- lsls r0, 16
- asrs r0, 16
- cmp r1, r0
- bne _080B465C
- ldr r0, [sp, 0x4]
- cmp r0, 0x2
- beq _080B464C
- ldrh r0, [r7, 0x2]
- mov r2, r10
- orrs r2, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
- b _080B465C
- .align 2, 0
-_080B4648: .4byte gTasks
-_080B464C:
- mov r1, r9
- ldrh r0, [r1]
- mov r2, r10
- orrs r2, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
-_080B465C:
- movs r2, 0x80
- lsls r2, 9
- adds r0, r4, r2
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B4614
- adds r0, r2, 0
- add r0, r8
- lsrs r2, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B4608
- b _080B4700
-_080B4678:
- movs r2, 0
- lsls r5, 16
- str r5, [sp, 0xC]
- lsls r0, r3, 16
- lsls r1, r4, 16
- asrs r0, 16
- str r0, [sp, 0x8]
- asrs r7, r1, 16
-_080B4688:
- movs r4, 0
- lsls r2, 16
- mov r8, r2
- asrs r0, r2, 16
- ldr r1, [sp, 0x8]
- adds r6, r1, r0
-_080B4694:
- ldr r2, [sp, 0xC]
- asrs r1, r2, 16
- lsls r4, 16
- asrs r0, r4, 16
- adds r5, r1, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridGetMetatileIdAt
- movs r1, 0x2
- subs r1, r7
- lsls r1, 1
- add r1, r9
- movs r2, 0
- ldrsh r1, [r1, r2]
- lsls r0, 16
- asrs r0, 16
- cmp r1, r0
- bne _080B46E6
- cmp r7, 0x2
- beq _080B46D6
- movs r0, 0x1
- subs r0, r7
- lsls r0, 1
- add r0, r9
- ldrh r0, [r0]
- mov r2, r10
- orrs r2, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
- b _080B46E6
-_080B46D6:
- mov r1, r9
- ldrh r0, [r1, 0x4]
- mov r2, r10
- orrs r2, r0
- adds r0, r5, 0
- adds r1, r6, 0
- bl MapGridSetMetatileIdAt
-_080B46E6:
- movs r2, 0x80
- lsls r2, 9
- adds r0, r4, r2
- lsrs r4, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B4694
- adds r0, r2, 0
- add r0, r8
- lsrs r2, r0, 16
- asrs r0, 16
- cmp r0, 0x2
- ble _080B4688
-_080B4700:
- add sp, 0x10
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80B45B4
-
- thumb_func_start sub_80B4710
-sub_80B4710: @ 80B4710
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r3, r0, 24
- lsls r0, r3, 2
- adds r0, r3
- lsls r0, 3
- ldr r1, _080B4738 @ =gTasks + 0x8
- adds r4, r0, r1
- movs r0, 0x1
- strh r0, [r4, 0x6]
- movs r1, 0
- ldrsh r0, [r4, r1]
- cmp r0, 0x6
- bhi _080B47AA
- lsls r0, 2
- ldr r1, _080B473C @ =_080B4740
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080B4738: .4byte gTasks + 0x8
-_080B473C: .4byte _080B4740
- .align 2, 0
-_080B4740:
- .4byte _080B475C
- .4byte _080B4764
- .4byte _080B476C
- .4byte _080B4774
- .4byte _080B477C
- .4byte _080B4790
- .4byte _080B47A0
-_080B475C:
- ldr r1, _080B4760 @ =gUnknown_083CC714
- b _080B4792
- .align 2, 0
-_080B4760: .4byte gUnknown_083CC714
-_080B4764:
- ldr r1, _080B4768 @ =gUnknown_083CC71A
- b _080B4792
- .align 2, 0
-_080B4768: .4byte gUnknown_083CC71A
-_080B476C:
- ldr r1, _080B4770 @ =gUnknown_083CC720
- b _080B477E
- .align 2, 0
-_080B4770: .4byte gUnknown_083CC720
-_080B4774:
- ldr r1, _080B4778 @ =gUnknown_083CC726
- b _080B4792
- .align 2, 0
-_080B4778: .4byte gUnknown_083CC726
-_080B477C:
- ldr r1, _080B478C @ =gUnknown_083CC72C
-_080B477E:
- movs r2, 0xC0
- lsls r2, 4
- adds r0, r3, 0
- bl sub_80B45B4
- b _080B47AA
- .align 2, 0
-_080B478C: .4byte gUnknown_083CC72C
-_080B4790:
- ldr r1, _080B479C @ =gUnknown_083CC732
-_080B4792:
- adds r0, r3, 0
- movs r2, 0
- bl sub_80B45B4
- b _080B47AA
- .align 2, 0
-_080B479C: .4byte gUnknown_083CC732
-_080B47A0:
- ldr r1, _080B47D4 @ =gUnknown_083CC738
- adds r0, r3, 0
- movs r2, 0
- bl sub_80B45B4
-_080B47AA:
- ldrh r0, [r4]
- adds r0, 0x1
- movs r1, 0x7
- ands r0, r1
- strh r0, [r4]
- adds r5, r0, 0
- cmp r5, 0
- bne _080B47CE
- bl DrawWholeMapView
- movs r1, 0x2
- ldrsh r0, [r4, r1]
- adds r0, 0x1
- movs r1, 0x3
- bl __modsi3
- strh r0, [r4, 0x2]
- strh r5, [r4, 0x6]
-_080B47CE:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080B47D4: .4byte gUnknown_083CC738
- thumb_func_end sub_80B4710
-
- thumb_func_start sub_80B47D8
-sub_80B47D8: @ 80B47D8
- push {r4-r7,lr}
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- ldr r6, _080B481C @ =sub_80B4710
- adds r0, r6, 0
- movs r1, 0
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _080B4820 @ =gTasks + 0x8
- adds r7, r0, r1
- adds r0, r7, 0
- adds r0, 0x8
- adds r1, r7, 0
- adds r1, 0xA
- bl PlayerGetDestCoords
- movs r0, 0
- strh r0, [r7]
- strh r0, [r7, 0x2]
- strh r5, [r7, 0x4]
- adds r0, r4, 0
- bl _call_via_r6
- adds r0, r4, 0
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_080B481C: .4byte sub_80B4710
-_080B4820: .4byte gTasks + 0x8
- thumb_func_end sub_80B47D8
-
- thumb_func_start sub_80B4824
-sub_80B4824: @ 80B4824
- push {lr}
- lsls r0, 24
- lsrs r0, 24
- bl sub_80B47D8
- ldr r1, _080B4838 @ =gUnknown_02038731
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_080B4838: .4byte gUnknown_02038731
- thumb_func_end sub_80B4824
-
- thumb_func_start sub_80B483C
-sub_80B483C: @ 80B483C
- push {lr}
- ldr r0, _080B484C @ =gUnknown_02038731
- ldrb r0, [r0]
- bl DestroyTask
- pop {r0}
- bx r0
- .align 2, 0
-_080B484C: .4byte gUnknown_02038731
- thumb_func_end sub_80B483C
-
- thumb_func_start sub_80B4850
-sub_80B4850: @ 80B4850
- push {lr}
- ldr r2, _080B4874 @ =gTasks
- ldr r0, _080B4878 @ =gUnknown_02038731
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- adds r1, r0, r2
- movs r2, 0xE
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _080B487C
- movs r2, 0xA
- ldrsh r0, [r1, r2]
- cmp r0, 0x2
- bne _080B487C
- movs r0, 0
- b _080B487E
- .align 2, 0
-_080B4874: .4byte gTasks
-_080B4878: .4byte gUnknown_02038731
-_080B487C:
- movs r0, 0x1
-_080B487E:
- pop {r1}
- bx r1
- thumb_func_end sub_80B4850
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index 46af5bc0f..bebe3633e 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -10098,13 +10098,13 @@ sub_81063C0: @ 81063C0
ldr r0, _081063F0 @ =gSlotMachineReelTimeLights_Gfx
ldr r4, _081063F4 @ =0x02010000
adds r1, r4, 0
- bl sub_800D238
+ bl LZDecompressWram
ldr r0, _081063F8 @ =gUnknown_083EDE8C
movs r1, 0xC8
lsls r1, 6
adds r4, r1
adds r1, r4, 0
- bl sub_800D238
+ bl LZDecompressWram
ldr r0, _081063FC @ =gUnknown_083EDC2C
bl LoadSpriteSheets
ldr r0, _08106400 @ =gSlotMachineSpritePalettes
diff --git a/asm/trade.s b/asm/trade.s
deleted file mode 100644
index 223f62474..000000000
--- a/asm/trade.s
+++ /dev/null
@@ -1,12050 +0,0 @@
- .include "constants/gba_constants.inc"
- .include "constants/species_constants.inc"
- .include "asm/macros.inc"
-
- .syntax unified
-
- .text
-
-.ifdef ENGLISH
- .set sub_804A96C_alt, sub_804A96C
-.endif
-
- thumb_func_start sub_8047CD8
-sub_8047CD8: @ 8047CD8
- push {lr}
- ldr r0, _08047CE4 @ =sub_8047EC0
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_08047CE4: .4byte sub_8047EC0
- thumb_func_end sub_8047CD8
-
- thumb_func_start sub_8047CE8
-sub_8047CE8: @ 8047CE8
- push {r4-r6,lr}
- ldr r6, _08047D44 @ =gWindowConfig_81E725C
- ldr r5, _08047D48 @ =gUnknown_020296CC
- ldr r1, [r5]
- ldr r2, _08047D4C @ =gSaveBlock2
- adds r0, r6, 0
- movs r3, 0xC
- bl sub_804AFB8
- bl GetMultiplayerId
- lsls r0, 24
- ldr r1, [r5, 0xC]
- movs r3, 0x80
- lsls r3, 17
- eors r3, r0
- lsrs r3, 24
- lsls r2, r3, 3
- subs r2, r3
- lsls r2, 2
- ldr r0, _08047D50 @ =gLinkPlayers + 0x8
- adds r2, r0
- adds r0, r6, 0
- movs r3, 0xC
- bl sub_804AFB8
- ldr r1, [r5, 0x18]
- ldr r4, _08047D54 @ =gUnknown_0820C14C
- ldr r2, [r4]
- adds r0, r6, 0
- movs r3, 0x8
- bl sub_804AFB8
- ldr r0, [r4, 0x4]
- ldr r1, [r5, 0x20]
- movs r2, 0x14
- bl sub_804ACD8
- movs r0, 0x3
- movs r1, 0
- bl nullsub_5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08047D44: .4byte gWindowConfig_81E725C
-_08047D48: .4byte gUnknown_020296CC
-_08047D4C: .4byte gSaveBlock2
-_08047D50: .4byte gLinkPlayers + 0x8
-_08047D54: .4byte gUnknown_0820C14C
- thumb_func_end sub_8047CE8
-
- thumb_func_start sub_8047D58
-sub_8047D58: @ 8047D58
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x18
- ldr r0, _08047E30 @ =gSaveBlock2
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- cmp r0, 0x5
- bls _08047D72
- movs r1, 0x1
-_08047D72:
- movs r5, 0
- lsls r2, r1, 2
- mov r6, sp
- ldr r0, _08047E34 @ =gTradeUnknownSpriteCoords
- adds r1, r0, 0x1
- adds r1, r2
- mov r8, r1
- adds r0, r2, r0
- ldrb r0, [r0]
- lsls r4, r0, 16
-_08047D86:
- mov r1, sp
- ldr r0, _08047E38 @ =gSpriteTemplate_820C0EC
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldrh r0, [r6]
- adds r0, r5
- strh r0, [r6]
- asrs r1, r4, 16
- mov r0, sp
- mov r3, r8
- ldrb r2, [r3]
- movs r3, 0x1
- bl CreateSprite
- movs r7, 0x80
- lsls r7, 14
- adds r4, r7
- adds r5, 0x1
- cmp r5, 0x2
- ble _08047D86
- bl GetMultiplayerId
- lsls r0, 24
- movs r1, 0x80
- lsls r1, 17
- eors r1, r0
- lsrs r1, 24
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r1, _08047E3C @ =gLinkPlayers + 0x8
- adds r0, r1
- bl StringLength
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0
- cmp r0, 0x5
- bls _08047DDA
- movs r1, 0x1
-_08047DDA:
- movs r5, 0
- lsls r2, r1, 2
- mov r6, sp
- ldr r0, _08047E40 @ =gTradeUnknownSpriteCoords + 0x3
- adds r1, r2, r0
- mov r8, r1
- subs r0, 0x1
- adds r0, r2, r0
- ldrb r0, [r0]
- lsls r4, r0, 16
-_08047DEE:
- mov r1, sp
- ldr r0, _08047E38 @ =gSpriteTemplate_820C0EC
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- adds r0, r5, 0x3
- ldrh r1, [r6]
- adds r0, r1
- strh r0, [r6]
- asrs r1, r4, 16
- mov r0, sp
- mov r3, r8
- ldrb r2, [r3]
- movs r3, 0x1
- bl CreateSprite
- movs r7, 0x80
- lsls r7, 14
- adds r4, r7
- adds r5, 0x1
- cmp r5, 0x2
- ble _08047DEE
- movs r0, 0x5
- movs r1, 0
- bl nullsub_5
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08047E30: .4byte gSaveBlock2
-_08047E34: .4byte gTradeUnknownSpriteCoords
-_08047E38: .4byte gSpriteTemplate_820C0EC
-_08047E3C: .4byte gLinkPlayers + 0x8
-_08047E40: .4byte gTradeUnknownSpriteCoords + 0x3
- thumb_func_end sub_8047D58
-
- thumb_func_start sub_8047E44
-sub_8047E44: @ 8047E44
- push {r4-r7,lr}
- sub sp, 0x18
- movs r4, 0
- mov r5, sp
- movs r6, 0xD6
- lsls r6, 16
-_08047E50:
- mov r1, sp
- ldr r0, _08047EBC @ =gSpriteTemplate_820C0EC
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- adds r0, r4, 0x6
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r5]
- asrs r1, r6, 16
- mov r0, sp
- movs r2, 0x98
- movs r3, 0x1
- bl CreateSprite
- movs r2, 0x80
- lsls r2, 14
- adds r6, r2
- adds r4, 0x1
- cmp r4, 0x1
- ble _08047E50
- movs r4, 0
- mov r5, sp
- movs r6, 0xC0
- lsls r6, 13
-_08047E84:
- mov r1, sp
- ldr r0, _08047EBC @ =gSpriteTemplate_820C0EC
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- adds r0, r4, 0
- adds r0, 0x8
- ldrh r3, [r5]
- adds r0, r3
- strh r0, [r5]
- asrs r1, r6, 16
- mov r0, sp
- movs r2, 0x96
- movs r3, 0x1
- bl CreateSprite
- movs r7, 0x80
- lsls r7, 14
- adds r6, r7
- adds r4, 0x1
- cmp r4, 0x4
- ble _08047E84
- add sp, 0x18
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08047EBC: .4byte gSpriteTemplate_820C0EC
- thumb_func_end sub_8047E44
-
- thumb_func_start sub_8047EC0
-sub_8047EC0: @ 8047EC0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- ldr r1, _08047EE4 @ =gMain
- ldr r2, _08047EE8 @ =0x0000043c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r3, r1, 0
- cmp r0, 0x15
- bls _08047ED8
- b _080484C6
-_08047ED8:
- lsls r0, 2
- ldr r1, _08047EEC @ =_08047EF0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08047EE4: .4byte gMain
-_08047EE8: .4byte 0x0000043c
-_08047EEC: .4byte _08047EF0
- .align 2, 0
-_08047EF0:
- .4byte _08047F48
- .4byte _08048048
- .4byte _080480B4
- .4byte _080480E0
- .4byte _08048130
- .4byte _08048160
- .4byte _08048172
- .4byte _080482B4
- .4byte _080482DC
- .4byte _08048300
- .4byte _08048328
- .4byte _0804834C
- .4byte _08048360
- .4byte _080483B8
- .4byte _08048400
- .4byte _08048418
- .4byte _08048430
- .4byte _08048448
- .4byte _0804845A
- .4byte _08048470
- .4byte _08048488
- .4byte _080484A8
-_08047F48:
- ldr r5, _08048018 @ =gUnknown_03004824
- ldr r6, _0804801C @ =0x02017000
- str r6, [r5]
- bl sub_804AA88
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, [r5]
- adds r0, 0xC8
- ldr r1, _08048020 @ =0x06002800
- bl sub_804A964
- ldr r0, _08048024 @ =sub_80489F4
- bl SetVBlankCallback
- ldr r0, _08048028 @ =gWindowConfig_81E6CE4
- bl InitMenuWindow
- ldr r4, _0804802C @ =gWindowConfig_81E6F84
- adds r0, r4, 0
- bl SetUpWindowConfig
- ldr r0, [r5]
- adds r0, 0x4
- adds r1, r4, 0
- bl InitWindowFromConfig
- movs r0, 0x14
- bl SetTextWindowBaseTileNum
- ldr r1, [r5]
- adds r1, 0x7A
- movs r4, 0
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, 0x4
- bl LoadTextWindowGraphics
- bl MenuZeroFillScreen
- bl sub_809D51C
- ldr r0, [r5]
- adds r0, 0x75
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x7B
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x7C
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x80
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x81
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x86
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x87
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0xB4
- strb r4, [r0]
- ldr r0, _08048030 @ =gUnknown_03000508
- strb r4, [r0]
- ldr r1, _08048034 @ =gMain
- ldr r3, _08048038 @ =0x0000043c
- adds r1, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- bl sub_804AA0C
- add r0, sp, 0x10
- strh r4, [r0]
- movs r0, 0xC0
- lsls r0, 7
- adds r1, r6, r0
- ldr r2, _0804803C @ =0x01000680
- add r0, sp, 0x10
- bl CpuSet
- ldr r1, _08048040 @ =gUnknown_020296CC
- movs r2, 0xD8
- lsls r2, 7
- adds r6, r2
- adds r0, r1, 0
- adds r0, 0x30
- ldr r2, _08048044 @ =0xffffff00
-_0804800A:
- str r6, [r0]
- adds r6, r2
- subs r0, 0x4
- cmp r0, r1
- bge _0804800A
- b _080484C6
- .align 2, 0
-_08048018: .4byte gUnknown_03004824
-_0804801C: .4byte 0x02017000
-_08048020: .4byte 0x06002800
-_08048024: .4byte sub_80489F4
-_08048028: .4byte gWindowConfig_81E6CE4
-_0804802C: .4byte gWindowConfig_81E6F84
-_08048030: .4byte gUnknown_03000508
-_08048034: .4byte gMain
-_08048038: .4byte 0x0000043c
-_0804803C: .4byte 0x01000680
-_08048040: .4byte gUnknown_020296CC
-_08048044: .4byte 0xffffff00
-_08048048:
- ldr r1, _08048098 @ =gLinkType
- ldr r3, _0804809C @ =0x00001122
- adds r0, r3, 0
- strh r0, [r1]
- bl OpenLink
- movs r6, 0
- movs r4, 0
-_08048058:
- movs r0, 0x64
- muls r0, r6
- ldr r1, _080480A0 @ =gEnemyParty
- adds r0, r1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- movs r1, 0
- movs r2, 0
- movs r3, 0x20
- bl CreateMon
- adds r6, 0x1
- cmp r6, 0x5
- ble _08048058
- ldr r1, _080480A4 @ =gMain
- ldr r0, _080480A8 @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, _080480AC @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0xB4
- strb r2, [r0]
- ldr r0, _080480B0 @ =sub_8083C50
- movs r1, 0x1
- bl CreateTask
- b _080484C6
- .align 2, 0
-_08048098: .4byte gLinkType
-_0804809C: .4byte 0x00001122
-_080480A0: .4byte gEnemyParty
-_080480A4: .4byte gMain
-_080480A8: .4byte 0x0000043c
-_080480AC: .4byte gUnknown_03004824
-_080480B0: .4byte sub_8083C50
-_080480B4:
- ldr r2, _080480D8 @ =gUnknown_03004824
- ldr r1, [r2]
- adds r1, 0xB4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0xB4
- ldrb r0, [r1]
- cmp r0, 0xB
- bhi _080480CE
- b _080484C6
-_080480CE:
- movs r0, 0
- strb r0, [r1]
- ldr r2, _080480DC @ =0x0000043c
- adds r1, r3, r2
- b _08048498
- .align 2, 0
-_080480D8: .4byte gUnknown_03004824
-_080480DC: .4byte 0x0000043c
-_080480E0:
- bl GetLinkPlayerCount_2
- adds r4, r0, 0
- bl sub_800820C
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bcs _080480F4
- b _080484C6
-_080480F4:
- bl IsLinkMaster
- lsls r0, 24
- cmp r0, 0
- beq _08048120
- ldr r0, _0804811C @ =gUnknown_03004824
- ldr r1, [r0]
- adds r1, 0xB4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1E
- bhi _08048114
- b _080484C6
-_08048114:
- bl sub_8007F4C
- b _08048492
- .align 2, 0
-_0804811C: .4byte gUnknown_03004824
-_08048120:
- ldr r1, _08048128 @ =gMain
- ldr r0, _0804812C @ =0x0000043c
- adds r1, r0
- b _08048498
- .align 2, 0
-_08048128: .4byte gMain
-_0804812C: .4byte 0x0000043c
-_08048130:
- ldr r0, _08048154 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0804813A
- b _080484C6
-_0804813A:
- bl IsLinkPlayerDataExchangeComplete
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _08048148
- b _080484C6
-_08048148:
- bl CalculatePlayerPartyCount
- ldr r1, _08048158 @ =gMain
- ldr r2, _0804815C @ =0x0000043c
- adds r1, r2
- b _08048498
- .align 2, 0
-_08048154: .4byte gReceivedRemoteLinkPlayers
-_08048158: .4byte gMain
-_0804815C: .4byte 0x0000043c
-_08048160:
- bl sub_8048D44
- lsls r0, 24
- cmp r0, 0
- bne _0804816C
- b _080484C6
-_0804816C:
- bl sub_804AF84
- b _08048492
-_08048172:
- bl CalculateEnemyPartyCount
- ldr r4, _08048294 @ =gUnknown_03004824
- ldr r0, [r4]
- adds r0, 0x4
- movs r1, 0x1D
- str r1, [sp]
- movs r1, 0x13
- str r1, [sp, 0x4]
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillWindowRect_DefaultPalette
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- ldr r0, [r4]
- ldr r1, _08048298 @ =gPlayerPartyCount
- ldrb r1, [r1]
- adds r0, 0x42
- strb r1, [r0]
- ldr r0, [r4]
- ldr r1, _0804829C @ =gEnemyPartyCount
- ldrb r1, [r1]
- adds r0, 0x43
- strb r1, [r0]
- movs r6, 0
- ldr r0, [r4]
- adds r0, 0x42
- ldrb r0, [r0]
- cmp r6, r0
- bge _08048216
- mov r8, r4
- ldr r7, _080482A0 @ =gTradeMonSpriteCoords
-_080481BA:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _080482A4 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- ldrb r2, [r7]
- lsls r2, 19
- movs r1, 0xE0
- lsls r1, 12
- adds r2, r1
- asrs r2, 16
- ldrb r3, [r7, 0x1]
- lsls r3, 19
- ldr r1, _080482A8 @ =0xfff40000
- adds r3, r1
- asrs r3, 16
- movs r1, 0x1
- str r1, [sp]
- str r0, [sp, 0x4]
- adds r0, r5, 0
- ldr r1, _080482AC @ =sub_809D62C
- bl CreateMonIcon
- mov r2, r8
- ldr r1, [r2]
- adds r1, 0x34
- adds r1, r6
- strb r0, [r1]
- adds r7, 0x2
- adds r6, 0x1
- ldr r0, [r2]
- adds r0, 0x42
- ldrb r0, [r0]
- cmp r6, r0
- blt _080481BA
-_08048216:
- movs r6, 0
- ldr r1, _08048294 @ =gUnknown_03004824
- ldr r0, [r1]
- adds r0, 0x43
- ldrb r0, [r0]
- cmp r6, r0
- bge _0804828A
- ldr r0, _080482A0 @ =gTradeMonSpriteCoords
- mov r8, r1
- adds r7, r0, 0
- adds r7, 0xC
-_0804822C:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _080482B0 @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- ldrb r2, [r7]
- lsls r2, 19
- movs r3, 0xE0
- lsls r3, 12
- adds r2, r3
- asrs r2, 16
- ldrb r3, [r7, 0x1]
- lsls r3, 19
- ldr r1, _080482A8 @ =0xfff40000
- adds r3, r1
- asrs r3, 16
- movs r1, 0x1
- str r1, [sp]
- str r0, [sp, 0x4]
- adds r0, r5, 0
- ldr r1, _080482AC @ =sub_809D62C
- bl CreateMonIcon
- mov r2, r8
- ldr r1, [r2]
- adds r1, 0x3A
- adds r1, r6
- strb r0, [r1]
- adds r7, 0x2
- adds r6, 0x1
- ldr r0, [r2]
- adds r0, 0x43
- ldrb r0, [r0]
- cmp r6, r0
- blt _0804822C
-_0804828A:
- movs r0, 0x2
- movs r1, 0
- bl nullsub_5
- b _08048492
- .align 2, 0
-_08048294: .4byte gUnknown_03004824
-_08048298: .4byte gPlayerPartyCount
-_0804829C: .4byte gEnemyPartyCount
-_080482A0: .4byte gTradeMonSpriteCoords
-_080482A4: .4byte gPlayerParty
-_080482A8: .4byte 0xfff40000
-_080482AC: .4byte sub_809D62C
-_080482B0: .4byte gEnemyParty
-_080482B4:
- bl LoadHeldItemIconGraphics
- ldr r0, _080482D0 @ =gUnknown_03004824
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x42
- adds r1, 0x34
- movs r2, 0
- bl CreateHeldItemIcons
- ldr r1, _080482D4 @ =gMain
- ldr r0, _080482D8 @ =0x0000043c
- adds r1, r0
- b _08048498
- .align 2, 0
-_080482D0: .4byte gUnknown_03004824
-_080482D4: .4byte gMain
-_080482D8: .4byte 0x0000043c
-_080482DC:
- ldr r0, _080482F4 @ =gUnknown_03004824
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x42
- adds r1, 0x34
- movs r2, 0x1
- bl CreateHeldItemIcons
- ldr r1, _080482F8 @ =gMain
- ldr r2, _080482FC @ =0x0000043c
- adds r1, r2
- b _08048498
- .align 2, 0
-_080482F4: .4byte gUnknown_03004824
-_080482F8: .4byte gMain
-_080482FC: .4byte 0x0000043c
-_08048300:
- bl sub_8047CE8
- ldr r1, _0804831C @ =gMain
- ldr r3, _08048320 @ =0x0000043c
- adds r1, r3
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, _08048324 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0xB4
- strb r2, [r0]
- b _080484C6
- .align 2, 0
-_0804831C: .4byte gMain
-_08048320: .4byte 0x0000043c
-_08048324: .4byte gUnknown_03004824
-_08048328:
- movs r0, 0x4
- movs r1, 0
- bl nullsub_5
- bl sub_804ABF8
- lsls r0, 24
- cmp r0, 0
- bne _0804833C
- b _080484C6
-_0804833C:
- ldr r1, _08048344 @ =gMain
- ldr r0, _08048348 @ =0x0000043c
- adds r1, r0
- b _08048498
- .align 2, 0
-_08048344: .4byte gMain
-_08048348: .4byte 0x0000043c
-_0804834C:
- bl sub_8047D58
- ldr r1, _08048358 @ =gMain
- ldr r2, _0804835C @ =0x0000043c
- adds r1, r2
- b _08048498
- .align 2, 0
-_08048358: .4byte gMain
-_0804835C: .4byte 0x0000043c
-_08048360:
- bl sub_8047E44
- ldr r0, _080483A4 @ =gSpriteTemplate_820C134
- ldr r2, _080483A8 @ =gTradeMonSpriteCoords
- ldrb r1, [r2]
- lsls r1, 19
- movs r3, 0x80
- lsls r3, 14
- adds r1, r3
- asrs r1, 16
- ldrb r2, [r2, 0x1]
- lsls r2, 3
- movs r3, 0x2
- bl CreateSprite
- ldr r2, _080483AC @ =gUnknown_03004824
- ldr r1, [r2]
- adds r1, 0x40
- movs r3, 0
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0x41
- strb r3, [r0]
- ldr r1, _080483B0 @ =gMain
- ldr r0, _080483B4 @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0x6
- movs r1, 0
- bl nullsub_5
- b _080484C6
- .align 2, 0
-_080483A4: .4byte gSpriteTemplate_820C134
-_080483A8: .4byte gTradeMonSpriteCoords
-_080483AC: .4byte gUnknown_03004824
-_080483B0: .4byte gMain
-_080483B4: .4byte 0x0000043c
-_080483B8:
- movs r0, 0
- bl sub_804ACF4
- movs r0, 0
- bl sub_804A41C
- ldr r2, _080483F0 @ =gUnknown_03004824
- ldr r0, [r2]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0, 0x1]
- bl sub_8048C70
- ldr r1, _080483F4 @ =gMain
- ldr r2, _080483F8 @ =0x0000043c
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0x7
- movs r1, 0
- bl nullsub_5
- ldr r0, _080483FC @ =0x000001b3
- bl PlayBGM
- b _080484C6
- .align 2, 0
-_080483F0: .4byte gUnknown_03004824
-_080483F4: .4byte gMain
-_080483F8: .4byte 0x0000043c
-_080483FC: .4byte 0x000001b3
-_08048400:
- movs r0, 0x1
- bl sub_804ACF4
- movs r0, 0x1
- bl sub_804A41C
- ldr r1, _08048428 @ =gMain
- ldr r3, _0804842C @ =0x0000043c
- adds r1, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08048418:
- movs r0, 0
- bl sub_8048B0C
- ldr r1, _08048428 @ =gMain
- ldr r0, _0804842C @ =0x0000043c
- adds r1, r0
- b _08048498
- .align 2, 0
-_08048428: .4byte gMain
-_0804842C: .4byte 0x0000043c
-_08048430:
- movs r0, 0x1
- bl sub_8048B0C
- ldr r1, _08048440 @ =gMain
- ldr r2, _08048444 @ =0x0000043c
- adds r1, r2
- b _08048498
- .align 2, 0
-_08048440: .4byte gMain
-_08048444: .4byte 0x0000043c
-_08048448:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _08048492
-_0804845A:
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xFA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0804846C @ =0x0000043c
- adds r1, r3, r0
- b _08048498
- .align 2, 0
-_0804846C: .4byte 0x0000043c
-_08048470:
- movs r0, 0
- bl sub_804AE3C
- ldr r1, _08048480 @ =gMain
- ldr r2, _08048484 @ =0x0000043c
- adds r1, r2
- b _08048498
- .align 2, 0
-_08048480: .4byte gMain
-_08048484: .4byte 0x0000043c
-_08048488:
- movs r0, 0x1
- bl sub_804AE3C
- bl sub_804AF10
-_08048492:
- ldr r1, _080484A0 @ =gMain
- ldr r3, _080484A4 @ =0x0000043c
- adds r1, r3
-_08048498:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080484C6
- .align 2, 0
-_080484A0: .4byte gMain
-_080484A4: .4byte 0x0000043c
-_080484A8:
- ldr r0, _080484E4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080484C6
- ldr r0, _080484E8 @ =sub_80494D8
- str r0, [r3]
- ldr r0, _080484EC @ =sub_8048AB4
- bl SetMainCallback2
- ldr r0, _080484F0 @ =gUnknown_03000508
- strb r4, [r0]
-_080484C6:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080484E4: .4byte gPaletteFade
-_080484E8: .4byte sub_80494D8
-_080484EC: .4byte sub_8048AB4
-_080484F0: .4byte gUnknown_03000508
- thumb_func_end sub_8047EC0
-
- thumb_func_start sub_80484F4
-sub_80484F4: @ 80484F4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- ldr r1, _08048518 @ =gMain
- ldr r2, _0804851C @ =0x0000043c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x15
- bls _0804850C
- b _080489CA
-_0804850C:
- lsls r0, 2
- ldr r1, _08048520 @ =_08048524
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08048518: .4byte gMain
-_0804851C: .4byte 0x0000043c
-_08048520: .4byte _08048524
- .align 2, 0
-_08048524:
- .4byte _0804857C
- .4byte _0804865C
- .4byte _08048668
- .4byte _08048674
- .4byte _08048680
- .4byte _08048694
- .4byte _080486A0
- .4byte _080487E8
- .4byte _08048810
- .4byte _08048834
- .4byte _0804885C
- .4byte _08048880
- .4byte _08048894
- .4byte _080489CA
- .4byte _080489CA
- .4byte _08048914
- .4byte _0804891C
- .4byte _08048950
- .4byte _08048970
- .4byte _08048988
- .4byte _08048994
- .4byte _080489B0
-_0804857C:
- ldr r5, _08048630 @ =gUnknown_03004824
- ldr r6, _08048634 @ =0x02017000
- str r6, [r5]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- ldr r0, [r5]
- adds r0, 0xC8
- ldr r1, _08048638 @ =0x06002800
- bl sub_804A964
- ldr r0, _0804863C @ =sub_80489F4
- bl SetVBlankCallback
- ldr r0, _08048640 @ =gWindowConfig_81E6CE4
- bl InitMenuWindow
- ldr r4, _08048644 @ =gWindowConfig_81E6F84
- adds r0, r4, 0
- bl SetUpWindowConfig
- ldr r0, [r5]
- adds r0, 0x4
- adds r1, r4, 0
- bl InitWindowFromConfig
- movs r0, 0x14
- bl SetTextWindowBaseTileNum
- ldr r1, [r5]
- adds r1, 0x7A
- movs r4, 0
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, 0x4
- bl LoadTextWindowGraphics
- bl MenuZeroFillScreen
- bl sub_809D51C
- ldr r0, [r5]
- adds r0, 0x75
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x7B
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x7C
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x80
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x81
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x86
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x87
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0xB4
- strb r4, [r0]
- ldr r0, _08048648 @ =gUnknown_03000508
- strb r4, [r0]
- ldr r1, _0804864C @ =gMain
- ldr r3, _08048650 @ =0x0000043c
- adds r1, r3
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, _08048654 @ =gUnknown_020296CC
- movs r5, 0xD8
- lsls r5, 7
- adds r6, r5
- adds r0, r1, 0
- adds r0, 0x30
- ldr r2, _08048658 @ =0xffffff00
-_08048622:
- str r6, [r0]
- adds r6, r2
- subs r0, 0x4
- cmp r0, r1
- bge _08048622
- b _080489CA
- .align 2, 0
-_08048630: .4byte gUnknown_03004824
-_08048634: .4byte 0x02017000
-_08048638: .4byte 0x06002800
-_0804863C: .4byte sub_80489F4
-_08048640: .4byte gWindowConfig_81E6CE4
-_08048644: .4byte gWindowConfig_81E6F84
-_08048648: .4byte gUnknown_03000508
-_0804864C: .4byte gMain
-_08048650: .4byte 0x0000043c
-_08048654: .4byte gUnknown_020296CC
-_08048658: .4byte 0xffffff00
-_0804865C:
- ldr r0, _08048664 @ =0x0000043c
- adds r1, r2, r0
- b _0804883E
- .align 2, 0
-_08048664: .4byte 0x0000043c
-_08048668:
- ldr r3, _08048670 @ =0x0000043c
- adds r1, r2, r3
- b _0804899E
- .align 2, 0
-_08048670: .4byte 0x0000043c
-_08048674:
- ldr r5, _0804867C @ =0x0000043c
- adds r1, r2, r5
- b _0804899E
- .align 2, 0
-_0804867C: .4byte 0x0000043c
-_08048680:
- bl CalculatePlayerPartyCount
- ldr r1, _0804868C @ =gMain
- ldr r0, _08048690 @ =0x0000043c
- adds r1, r0
- b _0804899E
- .align 2, 0
-_0804868C: .4byte gMain
-_08048690: .4byte 0x0000043c
-_08048694:
- ldr r3, _0804869C @ =0x0000043c
- adds r1, r2, r3
- b _0804899E
- .align 2, 0
-_0804869C: .4byte 0x0000043c
-_080486A0:
- bl CalculateEnemyPartyCount
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- ldr r4, _080487C0 @ =gUnknown_03004824
- ldr r0, [r4]
- ldr r1, _080487C4 @ =gPlayerPartyCount
- ldrb r1, [r1]
- adds r0, 0x42
- strb r1, [r0]
- ldr r0, [r4]
- ldr r1, _080487C8 @ =gEnemyPartyCount
- ldrb r1, [r1]
- adds r0, 0x43
- strb r1, [r0]
- movs r0, 0
- bl sub_804A41C
- movs r0, 0x1
- bl sub_804A41C
- movs r6, 0
- ldr r0, [r4]
- adds r0, 0x42
- ldrb r0, [r0]
- cmp r6, r0
- bge _0804873C
- mov r8, r4
- ldr r7, _080487CC @ =gTradeMonSpriteCoords
-_080486DE:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _080487D0 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- ldrb r2, [r7]
- lsls r2, 19
- movs r1, 0xE0
- lsls r1, 12
- adds r2, r1
- asrs r2, 16
- ldrb r3, [r7, 0x1]
- lsls r3, 19
- ldr r1, _080487D4 @ =0xfff40000
- adds r3, r1
- asrs r3, 16
- movs r1, 0x1
- str r1, [sp]
- str r0, [sp, 0x4]
- adds r0, r5, 0
- ldr r1, _080487D8 @ =sub_809D62C
- bl CreateMonIcon
- mov r2, r8
- ldr r1, [r2]
- adds r1, 0x34
- adds r1, r6
- strb r0, [r1]
- adds r7, 0x2
- adds r6, 0x1
- ldr r0, [r2]
- adds r0, 0x42
- ldrb r0, [r0]
- cmp r6, r0
- blt _080486DE
-_0804873C:
- movs r6, 0
- ldr r1, _080487C0 @ =gUnknown_03004824
- ldr r0, [r1]
- adds r0, 0x43
- ldrb r0, [r0]
- cmp r6, r0
- bge _080487B0
- ldr r0, _080487CC @ =gTradeMonSpriteCoords
- mov r8, r1
- adds r7, r0, 0
- adds r7, 0xC
-_08048752:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _080487DC @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- ldrb r2, [r7]
- lsls r2, 19
- movs r3, 0xE0
- lsls r3, 12
- adds r2, r3
- asrs r2, 16
- ldrb r3, [r7, 0x1]
- lsls r3, 19
- ldr r1, _080487D4 @ =0xfff40000
- adds r3, r1
- asrs r3, 16
- movs r1, 0x1
- str r1, [sp]
- str r0, [sp, 0x4]
- adds r0, r5, 0
- ldr r1, _080487D8 @ =sub_809D62C
- bl CreateMonIcon
- mov r2, r8
- ldr r1, [r2]
- adds r1, 0x3A
- adds r1, r6
- strb r0, [r1]
- adds r7, 0x2
- adds r6, 0x1
- ldr r0, [r2]
- adds r0, 0x43
- ldrb r0, [r0]
- cmp r6, r0
- blt _08048752
-_080487B0:
- movs r0, 0x2
- movs r1, 0
- bl nullsub_5
- ldr r1, _080487E0 @ =gMain
- ldr r3, _080487E4 @ =0x0000043c
- adds r1, r3
- b _0804899E
- .align 2, 0
-_080487C0: .4byte gUnknown_03004824
-_080487C4: .4byte gPlayerPartyCount
-_080487C8: .4byte gEnemyPartyCount
-_080487CC: .4byte gTradeMonSpriteCoords
-_080487D0: .4byte gPlayerParty
-_080487D4: .4byte 0xfff40000
-_080487D8: .4byte sub_809D62C
-_080487DC: .4byte gEnemyParty
-_080487E0: .4byte gMain
-_080487E4: .4byte 0x0000043c
-_080487E8:
- bl LoadHeldItemIconGraphics
- ldr r0, _08048804 @ =gUnknown_03004824
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x42
- adds r1, 0x34
- movs r2, 0
- bl CreateHeldItemIcons
- ldr r1, _08048808 @ =gMain
- ldr r5, _0804880C @ =0x0000043c
- adds r1, r5
- b _0804899E
- .align 2, 0
-_08048804: .4byte gUnknown_03004824
-_08048808: .4byte gMain
-_0804880C: .4byte 0x0000043c
-_08048810:
- ldr r0, _08048828 @ =gUnknown_03004824
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x42
- adds r1, 0x34
- movs r2, 0x1
- bl CreateHeldItemIcons
- ldr r1, _0804882C @ =gMain
- ldr r0, _08048830 @ =0x0000043c
- adds r1, r0
- b _0804899E
- .align 2, 0
-_08048828: .4byte gUnknown_03004824
-_0804882C: .4byte gMain
-_08048830: .4byte 0x0000043c
-_08048834:
- bl sub_8047CE8
- ldr r1, _08048850 @ =gMain
- ldr r2, _08048854 @ =0x0000043c
- adds r1, r2
-_0804883E:
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, _08048858 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0xB4
- strb r2, [r0]
- b _080489CA
- .align 2, 0
-_08048850: .4byte gMain
-_08048854: .4byte 0x0000043c
-_08048858: .4byte gUnknown_03004824
-_0804885C:
- movs r0, 0x4
- movs r1, 0
- bl nullsub_5
- bl sub_804ABF8
- lsls r0, 24
- cmp r0, 0
- bne _08048870
- b _080489CA
-_08048870:
- ldr r1, _08048878 @ =gMain
- ldr r3, _0804887C @ =0x0000043c
- adds r1, r3
- b _0804899E
- .align 2, 0
-_08048878: .4byte gMain
-_0804887C: .4byte 0x0000043c
-_08048880:
- bl sub_8047D58
- ldr r1, _0804888C @ =gMain
- ldr r5, _08048890 @ =0x0000043c
- adds r1, r5
- b _0804899E
- .align 2, 0
-_0804888C: .4byte gMain
-_08048890: .4byte 0x0000043c
-_08048894:
- bl sub_8047E44
- ldr r2, _080488AC @ =0x02018000
- ldr r0, _080488B0 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0x41
- ldrb r0, [r1]
- cmp r0, 0x5
- bhi _080488B4
- ldrb r0, [r2, 0x9]
- b _080488B8
- .align 2, 0
-_080488AC: .4byte 0x02018000
-_080488B0: .4byte gUnknown_03004824
-_080488B4:
- ldrb r0, [r2, 0x9]
- adds r0, 0x6
-_080488B8:
- strb r0, [r1]
- ldr r0, _08048900 @ =gSpriteTemplate_820C134
- ldr r3, _08048904 @ =gTradeMonSpriteCoords
- ldr r4, _08048908 @ =gUnknown_03004824
- ldr r1, [r4]
- adds r1, 0x41
- ldrb r2, [r1]
- lsls r2, 1
- adds r1, r2, r3
- ldrb r1, [r1]
- lsls r1, 19
- movs r5, 0x80
- lsls r5, 14
- adds r1, r5
- asrs r1, 16
- adds r3, 0x1
- adds r2, r3
- ldrb r2, [r2]
- lsls r2, 3
- movs r3, 0x2
- bl CreateSprite
- ldr r1, [r4]
- adds r1, 0x40
- strb r0, [r1]
- ldr r0, _0804890C @ =gMain
- ldr r1, _08048910 @ =0x0000043c
- adds r0, r1
- movs r1, 0xF
- strb r1, [r0]
- movs r0, 0x6
- movs r1, 0
- bl nullsub_5
- b _080489CA
- .align 2, 0
-_08048900: .4byte gSpriteTemplate_820C134
-_08048904: .4byte gTradeMonSpriteCoords
-_08048908: .4byte gUnknown_03004824
-_0804890C: .4byte gMain
-_08048910: .4byte 0x0000043c
-_08048914:
- movs r0, 0
- bl sub_8048B0C
- b _08048998
-_0804891C:
- movs r0, 0x1
- bl sub_8048B0C
- ldr r2, _08048944 @ =gUnknown_03004824
- ldr r0, [r2]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0, 0x1]
- bl sub_8048C70
- movs r0, 0x7
- movs r1, 0
- bl nullsub_5
- ldr r1, _08048948 @ =gMain
- ldr r3, _0804894C @ =0x0000043c
- adds r1, r3
- b _0804899E
- .align 2, 0
-_08048944: .4byte gUnknown_03004824
-_08048948: .4byte gMain
-_0804894C: .4byte 0x0000043c
-_08048950:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, _08048968 @ =gMain
- ldr r5, _0804896C @ =0x0000043c
- adds r1, r5
- b _0804899E
- .align 2, 0
-_08048968: .4byte gMain
-_0804896C: .4byte 0x0000043c
-_08048970:
- movs r1, 0x80
- lsls r1, 19
- movs r3, 0xFA
- lsls r3, 5
- adds r0, r3, 0
- strh r0, [r1]
- ldr r5, _08048984 @ =0x0000043c
- adds r1, r2, r5
- b _0804899E
- .align 2, 0
-_08048984: .4byte 0x0000043c
-_08048988:
- ldr r0, _08048990 @ =0x0000043c
- adds r1, r2, r0
- b _0804899E
- .align 2, 0
-_08048990: .4byte 0x0000043c
-_08048994:
- bl sub_804AF10
-_08048998:
- ldr r1, _080489A8 @ =gMain
- ldr r2, _080489AC @ =0x0000043c
- adds r1, r2
-_0804899E:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080489CA
- .align 2, 0
-_080489A8: .4byte gMain
-_080489AC: .4byte 0x0000043c
-_080489B0:
- ldr r0, _080489E8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _080489CA
- ldr r0, _080489EC @ =sub_8048AB4
- bl SetMainCallback2
- ldr r0, _080489F0 @ =gUnknown_03000508
- strb r4, [r0]
-_080489CA:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080489E8: .4byte gPaletteFade
-_080489EC: .4byte sub_8048AB4
-_080489F0: .4byte gUnknown_03000508
- thumb_func_end sub_80484F4
-
- thumb_func_start sub_80489F4
-sub_80489F4: @ 80489F4
- push {lr}
- ldr r0, _08048A10 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0xC8
- bl sub_804A940
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- .align 2, 0
-_08048A10: .4byte gUnknown_03004824
- thumb_func_end sub_80489F4
-
- thumb_func_start sub_8048A14
-sub_8048A14: @ 8048A14
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _08048A4C @ =gUnknown_03004824
- ldr r1, [r4]
- adds r1, 0xB4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xF
- bls _08048A44
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, [r4]
- adds r0, 0x7B
- movs r1, 0xA
- strb r1, [r0]
-_08048A44:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08048A4C: .4byte gUnknown_03004824
- thumb_func_end sub_8048A14
-
- thumb_func_start sub_8048A50
-sub_8048A50: @ 8048A50
- push {r4,lr}
- ldr r0, _08048A84 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08048A7E
- ldr r2, _08048A88 @ =gUnknown_020297D8
- ldr r4, _08048A8C @ =gUnknown_03004824
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x41
- ldrb r1, [r1]
- strb r1, [r2]
- adds r0, 0x8A
- ldrb r0, [r0]
- strb r0, [r2, 0x1]
- bl sub_800832C
- ldr r0, [r4]
- adds r0, 0x7B
- movs r1, 0xD
- strb r1, [r0]
-_08048A7E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08048A84: .4byte gPaletteFade
-_08048A88: .4byte gUnknown_020297D8
-_08048A8C: .4byte gUnknown_03004824
- thumb_func_end sub_8048A50
-
- thumb_func_start sub_8048A90
-sub_8048A90: @ 8048A90
- push {lr}
- ldr r0, _08048AA8 @ =gReceivedRemoteLinkPlayers
- ldrb r1, [r0]
- cmp r1, 0
- bne _08048AA4
- ldr r0, _08048AAC @ =gMain
- str r1, [r0]
- ldr r0, _08048AB0 @ =sub_804B41C
- bl SetMainCallback2
-_08048AA4:
- pop {r0}
- bx r0
- .align 2, 0
-_08048AA8: .4byte gReceivedRemoteLinkPlayers
-_08048AAC: .4byte gMain
-_08048AB0: .4byte sub_804B41C
- thumb_func_end sub_8048A90
-
- thumb_func_start sub_8048AB4
-sub_8048AB4: @ 8048AB4
- push {r4,lr}
- bl sub_8049DE0
- bl sub_804AB30
- movs r0, 0
- bl sub_8049ED4
- movs r0, 0x1
- bl sub_8049ED4
- ldr r4, _08048B04 @ =REG_BG2HOFS
- ldr r3, _08048B08 @ =gUnknown_03004824
- ldr r2, [r3]
- ldrb r0, [r2]
- adds r1, r0, 0x1
- strb r1, [r2]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- adds r4, 0x4
- ldr r2, [r3]
- ldrb r0, [r2, 0x1]
- adds r1, r0, 0
- adds r1, 0xFF
- strb r1, [r2, 0x1]
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4]
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08048B04: .4byte REG_BG2HOFS
-_08048B08: .4byte gUnknown_03004824
- thumb_func_end sub_8048AB4
-
- thumb_func_start sub_8048B0C
-sub_8048B0C: @ 8048B0C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _08048B1C
- cmp r0, 0x1
- beq _08048BD0
- b _08048C3A
-_08048B1C:
- ldr r5, _08048BA0 @ =gUnknown_08EA0348
- ldr r0, _08048BA4 @ =gTradeStripesBG2Tilemap
- mov r12, r0
- ldr r1, _08048BA8 @ =gUnknown_08EA02C8
- ldr r4, _08048BAC @ =gPlttBufferFaded
- ldr r3, _08048BB0 @ =gPlttBufferUnfaded
- movs r2, 0x2F
-_08048B2A:
- ldrh r0, [r1]
- strh r0, [r3]
- ldrh r0, [r1]
- strh r0, [r4]
- adds r1, 0x2
- adds r4, 0x2
- adds r3, 0x2
- subs r2, 0x1
- cmp r2, 0
- bge _08048B2A
- adds r3, r5, 0
- movs r4, 0xC0
- lsls r4, 19
- movs r5, 0x94
- lsls r5, 5
- ldr r1, _08048BB4 @ =0x040000d4
- ldr r6, _08048BB8 @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_08048B54:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _08048B54
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r2, 0
- ldr r5, _08048BBC @ =0x000003ff
- ldr r4, _08048BC0 @ =gUnknown_03004824
- ldr r3, _08048BC4 @ =gUnknown_08EA15C8
-_08048B7A:
- ldr r0, [r4]
- lsls r1, r2, 1
- adds r0, 0xDA
- adds r0, r1
- ldrh r1, [r3]
- strh r1, [r0]
- adds r3, 0x2
- adds r2, 0x1
- cmp r2, r5
- ble _08048B7A
- ldr r1, _08048BC8 @ =0x06003000
- ldr r0, _08048BB4 @ =0x040000d4
- mov r2, r12
- str r2, [r0]
- str r1, [r0, 0x4]
- ldr r1, _08048BCC @ =0x80000400
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- b _08048C3A
- .align 2, 0
-_08048BA0: .4byte gUnknown_08EA0348
-_08048BA4: .4byte gTradeStripesBG2Tilemap
-_08048BA8: .4byte gUnknown_08EA02C8
-_08048BAC: .4byte gPlttBufferFaded
-_08048BB0: .4byte gPlttBufferUnfaded
-_08048BB4: .4byte 0x040000d4
-_08048BB8: .4byte 0x80000800
-_08048BBC: .4byte 0x000003ff
-_08048BC0: .4byte gUnknown_03004824
-_08048BC4: .4byte gUnknown_08EA15C8
-_08048BC8: .4byte 0x06003000
-_08048BCC: .4byte 0x80000400
-_08048BD0:
- ldr r1, _08048C40 @ =gTradeStripesBG3Tilemap
- ldr r2, _08048C44 @ =0x06003800
- ldr r0, _08048C48 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08048C4C @ =0x80000400
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- movs r0, 0
- bl sub_804A6DC
- movs r0, 0x1
- bl sub_804A6DC
- ldr r0, _08048C50 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0xC8
- bl sub_804A938
- ldr r2, _08048C54 @ =REG_BG0CNT
- ldrh r1, [r2]
- ldr r0, _08048C58 @ =0x0000fffc
- ands r0, r1
- strh r0, [r2]
- ldr r1, _08048C5C @ =REG_BG1CNT
- ldr r2, _08048C60 @ =0x00000501
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _08048C64 @ =0x00000602
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r2, _08048C68 @ =0x00000703
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _08048C6C @ =REG_BG0HOFS
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- subs r0, 0xA
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
- adds r0, 0x4
- strh r1, [r0]
-_08048C3A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08048C40: .4byte gTradeStripesBG3Tilemap
-_08048C44: .4byte 0x06003800
-_08048C48: .4byte 0x040000d4
-_08048C4C: .4byte 0x80000400
-_08048C50: .4byte gUnknown_03004824
-_08048C54: .4byte REG_BG0CNT
-_08048C58: .4byte 0x0000fffc
-_08048C5C: .4byte REG_BG1CNT
-_08048C60: .4byte 0x00000501
-_08048C64: .4byte 0x00000602
-_08048C68: .4byte 0x00000703
-_08048C6C: .4byte REG_BG0HOFS
- thumb_func_end sub_8048B0C
-
- thumb_func_start sub_8048C70
-sub_8048C70: @ 8048C70
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r3, 0
- ldr r5, _08048CC0 @ =gUnknown_03004824
- mov r8, r5
- ldr r0, _08048CC4 @ =gSprites
- mov r12, r0
- movs r1, 0x5
- negs r1, r1
- mov r9, r1
- movs r4, 0x6
- movs r7, 0x1
- movs r6, 0
-_08048C8E:
- mov r1, r8
- ldr r0, [r1]
- adds r1, r0, 0
- adds r1, 0x42
- ldrb r1, [r1]
- cmp r3, r1
- bge _08048CC8
- adds r0, 0x34
- adds r0, r3
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r12
- adds r1, 0x3E
- ldrb r2, [r1]
- mov r0, r9
- ands r0, r2
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, 0x44
- adds r0, r3
- strb r7, [r0]
- b _08048CCE
- .align 2, 0
-_08048CC0: .4byte gUnknown_03004824
-_08048CC4: .4byte gSprites
-_08048CC8:
- adds r0, 0x44
- adds r0, r3
- strb r6, [r0]
-_08048CCE:
- mov r1, r8
- ldr r0, [r1]
- adds r1, r0, 0
- adds r1, 0x43
- ldrb r1, [r1]
- cmp r3, r1
- bge _08048CFE
- adds r0, 0x3A
- adds r0, r3
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r12
- adds r1, 0x3E
- ldrb r2, [r1]
- mov r0, r9
- ands r0, r2
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, 0x44
- adds r0, r4
- strb r7, [r0]
- b _08048D04
-_08048CFE:
- adds r0, 0x44
- adds r0, r4
- strb r6, [r0]
-_08048D04:
- adds r4, 0x1
- adds r3, 0x1
- cmp r3, 0x5
- ble _08048C8E
- ldr r0, [r5]
- adds r0, 0x50
- movs r1, 0x1
- strb r1, [r0]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8048C70
-
- thumb_func_start nullsub_5
-nullsub_5: @ 8048D20
- bx lr
- thumb_func_end nullsub_5
-
- thumb_func_start sub_8048D24
-sub_8048D24: @ 8048D24
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r3, 0
- cmp r3, r2
- bcs _08048D3E
-_08048D30:
- adds r0, r5, r3
- adds r1, r4, r3
- ldrb r1, [r1]
- strb r1, [r0]
- adds r3, 0x1
- cmp r3, r2
- bcc _08048D30
-_08048D3E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8048D24
-
- thumb_func_start sub_8048D44
-sub_8048D44: @ 8048D44
- push {r4-r7,lr}
- sub sp, 0xC
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r6, _08048D90 @ =gUnknown_03004824
- ldr r0, [r6]
- adds r0, 0x75
- ldrb r5, [r0]
- adds r0, r5, 0
- movs r1, 0x64
- bl __udivsi3
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0x64
- bl __umodsi3
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl SetLinkDebugValues
- ldr r0, [r6]
- adds r0, 0x75
- ldrb r0, [r0]
- cmp r0, 0x10
- bls _08048D86
- b _0804907C
-_08048D86:
- lsls r0, 2
- ldr r1, _08048D94 @ =_08048D98
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08048D90: .4byte gUnknown_03004824
-_08048D94: .4byte _08048D98
- .align 2, 0
-_08048D98:
- .4byte _08048DDC
- .4byte _08048DF8
- .4byte _08048E28
- .4byte _08048E3C
- .4byte _08048E74
- .4byte _08048E90
- .4byte _08048EA4
- .4byte _08048EDC
- .4byte _08048EF8
- .4byte _08048F0C
- .4byte _08048F44
- .4byte _08048F60
- .4byte _08048F74
- .4byte _08048FAC
- .4byte _08048FC8
- .4byte _08048FDC
- .4byte _08049018
-_08048DDC:
- ldr r0, _08048DEC @ =gBlockSendBuffer
- ldr r1, _08048DF0 @ =gPlayerParty
- movs r2, 0xC8
- bl sub_8048D24
- ldr r0, _08048DF4 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048DEC: .4byte gBlockSendBuffer
-_08048DF0: .4byte gPlayerParty
-_08048DF4: .4byte gUnknown_03004824
-_08048DF8:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _08048E04
- b _0804907C
-_08048E04:
- bl GetBlockReceivedStatus
- lsls r0, 24
- cmp r0, 0
- bne _08048E18
- ldr r0, _08048E14 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048E14: .4byte gUnknown_03004824
-_08048E18:
- bl ResetBlockReceivedFlags
- ldr r0, _08048E24 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048E24: .4byte gUnknown_03004824
-_08048E28:
- cmp r7, 0
- bne _08048E32
- movs r0, 0x1
- bl sub_8007E9C
-_08048E32:
- ldr r0, _08048E38 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048E38: .4byte gUnknown_03004824
-_08048E3C:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _08048E4A
- b _0804907C
-_08048E4A:
- ldr r0, _08048E68 @ =gEnemyParty
- movs r2, 0x1
- adds r1, r7, 0
- eors r1, r2
- lsls r1, 8
- ldr r2, _08048E6C @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0xC8
- bl sub_8048D24
- bl ResetBlockReceivedFlags
- ldr r0, _08048E70 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048E68: .4byte gEnemyParty
-_08048E6C: .4byte gBlockRecvBuffer
-_08048E70: .4byte gUnknown_03004824
-_08048E74:
- ldr r0, _08048E84 @ =gBlockSendBuffer
- ldr r1, _08048E88 @ =gPlayerParty + 2 * 0x64
- movs r2, 0xC8
- bl sub_8048D24
- ldr r0, _08048E8C @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048E84: .4byte gBlockSendBuffer
-_08048E88: .4byte gPlayerParty + 2 * 0x64
-_08048E8C: .4byte gUnknown_03004824
-_08048E90:
- cmp r7, 0
- bne _08048E9A
- movs r0, 0x1
- bl sub_8007E9C
-_08048E9A:
- ldr r0, _08048EA0 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048EA0: .4byte gUnknown_03004824
-_08048EA4:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _08048EB2
- b _0804907C
-_08048EB2:
- ldr r0, _08048ED0 @ =gEnemyParty + 2 * 0x64
- movs r2, 0x1
- adds r1, r7, 0
- eors r1, r2
- lsls r1, 8
- ldr r2, _08048ED4 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0xC8
- bl sub_8048D24
- bl ResetBlockReceivedFlags
- ldr r0, _08048ED8 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048ED0: .4byte gEnemyParty + 2 * 0x64
-_08048ED4: .4byte gBlockRecvBuffer
-_08048ED8: .4byte gUnknown_03004824
-_08048EDC:
- ldr r0, _08048EEC @ =gBlockSendBuffer
- ldr r1, _08048EF0 @ =gPlayerParty + 4 * 0x64
- movs r2, 0xC8
- bl sub_8048D24
- ldr r0, _08048EF4 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048EEC: .4byte gBlockSendBuffer
-_08048EF0: .4byte gPlayerParty + 4 * 0x64
-_08048EF4: .4byte gUnknown_03004824
-_08048EF8:
- cmp r7, 0
- bne _08048F02
- movs r0, 0x1
- bl sub_8007E9C
-_08048F02:
- ldr r0, _08048F08 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048F08: .4byte gUnknown_03004824
-_08048F0C:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _08048F1A
- b _0804907C
-_08048F1A:
- ldr r0, _08048F38 @ =gEnemyParty + 4 * 0x64
- movs r2, 0x1
- adds r1, r7, 0
- eors r1, r2
- lsls r1, 8
- ldr r2, _08048F3C @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0xC8
- bl sub_8048D24
- bl ResetBlockReceivedFlags
- ldr r0, _08048F40 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048F38: .4byte gEnemyParty + 4 * 0x64
-_08048F3C: .4byte gBlockRecvBuffer
-_08048F40: .4byte gUnknown_03004824
-_08048F44:
- ldr r0, _08048F54 @ =gBlockSendBuffer
- ldr r1, _08048F58 @ =gSaveBlock1 + 0x2B4C
- movs r2, 0xDC
- bl sub_8048D24
- ldr r0, _08048F5C @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048F54: .4byte gBlockSendBuffer
-_08048F58: .4byte gSaveBlock1 + 0x2B4C
-_08048F5C: .4byte gUnknown_03004824
-_08048F60:
- cmp r7, 0
- bne _08048F6A
- movs r0, 0x3
- bl sub_8007E9C
-_08048F6A:
- ldr r0, _08048F70 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048F70: .4byte gUnknown_03004824
-_08048F74:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _08048F82
- b _0804907C
-_08048F82:
- ldr r0, _08048FA0 @ =gUnknown_02029700
- movs r2, 0x1
- adds r1, r7, 0
- eors r1, r2
- lsls r1, 8
- ldr r2, _08048FA4 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0xD8
- bl sub_8048D24
- bl ResetBlockReceivedFlags
- ldr r0, _08048FA8 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048FA0: .4byte gUnknown_02029700
-_08048FA4: .4byte gBlockRecvBuffer
-_08048FA8: .4byte gUnknown_03004824
-_08048FAC:
- ldr r0, _08048FBC @ =gBlockSendBuffer
- ldr r1, _08048FC0 @ =gSaveBlock1 + 0x3110
- movs r2, 0xB
- bl sub_8048D24
- ldr r0, _08048FC4 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048FBC: .4byte gBlockSendBuffer
-_08048FC0: .4byte gSaveBlock1 + 0x3110
-_08048FC4: .4byte gUnknown_03004824
-_08048FC8:
- cmp r7, 0
- bne _08048FD2
- movs r0, 0x4
- bl sub_8007E9C
-_08048FD2:
- ldr r0, _08048FD8 @ =gUnknown_03004824
- ldr r1, [r0]
- b _08049006
- .align 2, 0
-_08048FD8: .4byte gUnknown_03004824
-_08048FDC:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0804907C
- ldr r4, _08049010 @ =gUnknown_03004824
- ldr r0, [r4]
- adds r0, 0xB5
- movs r2, 0x1
- adds r1, r7, 0
- eors r1, r2
- lsls r1, 8
- ldr r2, _08049014 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0xB
- bl sub_8048D24
- bl ResetBlockReceivedFlags
- ldr r1, [r4]
-_08049006:
- adds r1, 0x75
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804907C
- .align 2, 0
-_08049010: .4byte gUnknown_03004824
-_08049014: .4byte gBlockRecvBuffer
-_08049018:
- ldr r4, _0804906C @ =gEnemyParty
- ldr r6, _08049070 @ =0x0000012f
- movs r5, 0x5
-_0804901E:
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _0804905E
- cmp r0, r6
- bne _0804905E
- adds r0, r4, 0
- movs r1, 0x3
- bl GetMonData
- cmp r0, 0x1
- beq _0804905E
- adds r0, r4, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- ldr r1, _08049074 @ =gUnknown_0820C3B0
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- bne _0804905E
- adds r0, r4, 0
- movs r1, 0x2
- ldr r2, _08049078 @ =gSpeciesNames + 0xD05
- bl SetMonData
-_0804905E:
- adds r4, 0x64
- subs r5, 0x1
- cmp r5, 0
- bge _0804901E
- movs r0, 0x1
- b _0804907E
- .align 2, 0
-_0804906C: .4byte gEnemyParty
-_08049070: .4byte 0x0000012f
-_08049074: .4byte gUnknown_0820C3B0
-_08049078: .4byte gSpeciesNames + 0xD05
-_0804907C:
- movs r0, 0
-_0804907E:
- add sp, 0xC
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8048D44
-
- thumb_func_start sub_8049088
-sub_8049088: @ 8049088
- push {lr}
- sub sp, 0x1C
- ldr r1, _080490B0 @ =gTradeText_TradeOkayPrompt
- mov r0, sp
- bl StringCopy
- ldr r0, _080490B4 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x7E
- ldrh r1, [r0]
- lsls r1, 5
- ldr r0, _080490B8 @ =0x06010000
- adds r1, r0
- mov r0, sp
- movs r2, 0x14
- bl sub_804ACD8
- add sp, 0x1C
- pop {r0}
- bx r0
- .align 2, 0
-_080490B0: .4byte gTradeText_TradeOkayPrompt
-_080490B4: .4byte gUnknown_03004824
-_080490B8: .4byte 0x06010000
- thumb_func_end sub_8049088
-
- thumb_func_start sub_80490BC
-sub_80490BC: @ 80490BC
- push {r4,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- movs r3, 0x1
- adds r0, r4, 0
- ands r0, r3
- cmp r0, 0
- beq _08049148
- ldr r1, _080490EC @ =gBlockRecvBuffer
- lsls r0, r2, 8
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _080490F0 @ =0x0000bbbb
- cmp r1, r0
- beq _08049128
- cmp r1, r0
- bgt _080490F8
- ldr r0, _080490F4 @ =0x0000aabb
- cmp r1, r0
- beq _08049118
- b _08049142
- .align 2, 0
-_080490EC: .4byte gBlockRecvBuffer
-_080490F0: .4byte 0x0000bbbb
-_080490F4: .4byte 0x0000aabb
-_080490F8:
- ldr r0, _0804910C @ =0x0000bbcc
- cmp r1, r0
- beq _08049138
- ldr r0, _08049110 @ =0x0000eeaa
- cmp r1, r0
- bne _08049142
- ldr r0, _08049114 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x84
- b _0804913E
- .align 2, 0
-_0804910C: .4byte 0x0000bbcc
-_08049110: .4byte 0x0000eeaa
-_08049114: .4byte gUnknown_03004824
-_08049118:
- ldr r0, _08049124 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x84
- strb r3, [r0]
- b _08049142
- .align 2, 0
-_08049124: .4byte gUnknown_03004824
-_08049128:
- ldr r0, _08049134 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x86
- strb r3, [r0]
- b _08049142
- .align 2, 0
-_08049134: .4byte gUnknown_03004824
-_08049138:
- ldr r0, _08049170 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x86
-_0804913E:
- movs r1, 0x2
- strb r1, [r0]
-_08049142:
- movs r0, 0
- bl ResetBlockReceivedFlag
-_08049148:
- movs r2, 0x2
- adds r0, r4, 0
- ands r0, r2
- cmp r0, 0
- beq _080491DA
- ldr r3, _08049174 @ =gBlockRecvBuffer
- movs r1, 0x80
- lsls r1, 1
- adds r0, r3, r1
- ldrh r1, [r0]
- ldr r0, _08049178 @ =0x0000bbbb
- cmp r1, r0
- beq _080491BC
- cmp r1, r0
- bgt _08049180
- ldr r0, _0804917C @ =0x0000aabb
- cmp r1, r0
- beq _080491A0
- b _080491D4
- .align 2, 0
-_08049170: .4byte gUnknown_03004824
-_08049174: .4byte gBlockRecvBuffer
-_08049178: .4byte 0x0000bbbb
-_0804917C: .4byte 0x0000aabb
-_08049180:
- ldr r0, _08049194 @ =0x0000bbcc
- cmp r1, r0
- beq _080491CC
- ldr r0, _08049198 @ =0x0000eeaa
- cmp r1, r0
- bne _080491D4
- ldr r0, _0804919C @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x85
- b _080491D2
- .align 2, 0
-_08049194: .4byte 0x0000bbcc
-_08049198: .4byte 0x0000eeaa
-_0804919C: .4byte gUnknown_03004824
-_080491A0:
- ldr r2, _080491B8 @ =gUnknown_03004824
- ldr r1, [r2]
- movs r4, 0x81
- lsls r4, 1
- adds r0, r3, r4
- ldrb r0, [r0]
- adds r0, 0x6
- adds r1, 0x8A
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0x85
- b _080491C2
- .align 2, 0
-_080491B8: .4byte gUnknown_03004824
-_080491BC:
- ldr r0, _080491C8 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x87
-_080491C2:
- movs r1, 0x1
- strb r1, [r0]
- b _080491D4
- .align 2, 0
-_080491C8: .4byte gUnknown_03004824
-_080491CC:
- ldr r0, _080491E0 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x87
-_080491D2:
- strb r2, [r0]
-_080491D4:
- movs r0, 0x1
- bl ResetBlockReceivedFlag
-_080491DA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080491E0: .4byte gUnknown_03004824
- thumb_func_end sub_80490BC
-
- thumb_func_start sub_80491E4
-sub_80491E4: @ 80491E4
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r1, 24
- lsrs r5, r1, 24
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _080492BE
- ldr r2, _08049210 @ =gBlockRecvBuffer
- ldrh r1, [r2]
- ldr r0, _08049214 @ =0x0000ddee
- cmp r1, r0
- beq _080492A8
- cmp r1, r0
- bgt _08049220
- ldr r0, _08049218 @ =0x0000ccdd
- cmp r1, r0
- beq _08049288
- ldr r0, _0804921C @ =0x0000dddd
- cmp r1, r0
- beq _0804925C
- b _080492B8
- .align 2, 0
-_08049210: .4byte gBlockRecvBuffer
-_08049214: .4byte 0x0000ddee
-_08049218: .4byte 0x0000ccdd
-_0804921C: .4byte 0x0000dddd
-_08049220:
- ldr r0, _08049230 @ =0x0000eebb
- cmp r1, r0
- beq _08049234
- adds r0, 0x11
- cmp r1, r0
- beq _08049258
- b _080492B8
- .align 2, 0
-_08049230: .4byte 0x0000eebb
-_08049234:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x4
- bl sub_804AA0C
- ldr r0, _08049254 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x7B
- movs r1, 0xB
- b _080492B6
- .align 2, 0
-_08049254: .4byte gUnknown_03004824
-_08049258:
- movs r0, 0x5
- b _080492AA
-_0804925C:
- ldr r4, _08049284 @ =gUnknown_03004824
- ldr r1, [r4]
- ldrb r0, [r2, 0x2]
- adds r0, 0x6
- adds r1, 0x8A
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x41
- ldrb r0, [r0]
- bl sub_8049E9C
- ldr r0, [r4]
- adds r0, 0x8A
- ldrb r0, [r0]
- bl sub_8049E9C
- ldr r0, [r4]
- adds r0, 0x7B
- movs r1, 0x7
- b _080492B6
- .align 2, 0
-_08049284: .4byte gUnknown_03004824
-_08049288:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _080492A4 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x7B
- movs r1, 0xA
- b _080492B6
- .align 2, 0
-_080492A4: .4byte gUnknown_03004824
-_080492A8:
- movs r0, 0x1
-_080492AA:
- bl sub_804AA0C
- ldr r0, _080492D4 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x7B
- movs r1, 0x8
-_080492B6:
- strb r1, [r0]
-_080492B8:
- movs r0, 0
- bl ResetBlockReceivedFlag
-_080492BE:
- movs r0, 0x2
- ands r0, r5
- cmp r0, 0
- beq _080492CC
- movs r0, 0x1
- bl ResetBlockReceivedFlag
-_080492CC:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080492D4: .4byte gUnknown_03004824
- thumb_func_end sub_80491E4
-
- thumb_func_start sub_80492D8
-sub_80492D8: @ 80492D8
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r6, _08049334 @ =gUnknown_03004824
- ldr r2, [r6]
- adds r1, r2, 0
- adds r1, 0x84
- ldrb r0, [r1]
- cmp r0, 0
- bne _080492EC
- b _08049420
-_080492EC:
- adds r0, r2, 0
- adds r0, 0x85
- ldrb r0, [r0]
- cmp r0, 0
- bne _080492F8
- b _08049420
-_080492F8:
- ldrh r1, [r1]
- ldr r0, _08049338 @ =0x00000101
- cmp r1, r0
- bne _08049340
- adds r1, r2, 0
- adds r1, 0x7B
- movs r0, 0x6
- strb r0, [r1]
- ldr r2, [r6]
- adds r1, r2, 0
- adds r1, 0x8C
- movs r4, 0
- ldr r0, _0804933C @ =0x0000dddd
- strh r0, [r1]
- adds r0, r2, 0
- adds r0, 0x41
- ldrb r1, [r0]
- adds r0, 0x4D
- strh r1, [r0]
- movs r0, 0x5
- movs r1, 0
- bl sub_804AADC
- ldr r0, [r6]
- adds r2, r0, 0
- adds r2, 0x85
- strb r4, [r2]
- adds r0, 0x84
- strb r4, [r0]
- b _08049420
- .align 2, 0
-_08049334: .4byte gUnknown_03004824
-_08049338: .4byte 0x00000101
-_0804933C: .4byte 0x0000dddd
-_08049340:
- ldr r0, _08049388 @ =0x00000201
- cmp r1, r0
- bne _08049390
- movs r0, 0x1
- bl sub_804AA0C
- ldr r1, [r6]
- adds r2, r1, 0
- adds r2, 0x8C
- movs r4, 0
- movs r3, 0
- ldr r0, _0804938C @ =0x0000eecc
- strh r0, [r2]
- adds r1, 0x8E
- strh r3, [r1]
- movs r0, 0x5
- movs r1, 0
- bl sub_804AADC
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x87
- strb r4, [r1]
- adds r0, 0x86
- strb r4, [r0]
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x85
- strb r4, [r1]
- adds r0, 0x84
- strb r4, [r0]
- ldr r0, [r6]
- adds r0, 0x7B
- movs r1, 0x8
- b _0804941E
- .align 2, 0
-_08049388: .4byte 0x00000201
-_0804938C: .4byte 0x0000eecc
-_08049390:
- movs r0, 0x81
- lsls r0, 1
- cmp r1, r0
- bne _080493DC
- movs r0, 0x5
- bl sub_804AA0C
- ldr r1, [r6]
- adds r2, r1, 0
- adds r2, 0x8C
- movs r4, 0
- movs r3, 0
- ldr r0, _080493D8 @ =0x0000ddee
- strh r0, [r2]
- adds r1, 0x8E
- strh r3, [r1]
- movs r0, 0x5
- movs r1, 0
- bl sub_804AADC
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x87
- strb r4, [r1]
- adds r0, 0x86
- strb r4, [r0]
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x85
- strb r4, [r1]
- adds r0, 0x84
- strb r4, [r0]
- ldr r0, [r6]
- adds r0, 0x7B
- movs r1, 0x8
- b _0804941E
- .align 2, 0
-_080493D8: .4byte 0x0000ddee
-_080493DC:
- ldr r0, _080494C0 @ =0x00000202
- cmp r1, r0
- bne _08049420
- adds r1, r2, 0
- adds r1, 0x8C
- movs r5, 0
- movs r4, 0
- ldr r0, _080494C4 @ =0x0000eebb
- strh r0, [r1]
- adds r0, r2, 0
- adds r0, 0x8E
- strh r4, [r0]
- movs r0, 0x5
- movs r1, 0
- bl sub_804AADC
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x85
- strb r5, [r1]
- adds r0, 0x84
- strb r5, [r0]
- ldr r0, [r6]
- adds r0, 0x7B
- movs r1, 0xB
-_0804941E:
- strb r1, [r0]
-_08049420:
- ldr r5, _080494C8 @ =gUnknown_03004824
- ldr r3, [r5]
- adds r1, r3, 0
- adds r1, 0x86
- ldrb r0, [r1]
- cmp r0, 0
- beq _080494B8
- adds r0, r3, 0
- adds r0, 0x87
- ldrb r0, [r0]
- cmp r0, 0
- beq _080494B8
- ldrh r1, [r1]
- ldr r0, _080494CC @ =0x00000101
- cmp r1, r0
- bne _0804946E
- adds r1, r3, 0
- adds r1, 0x8C
- movs r4, 0
- movs r2, 0
- ldr r0, _080494D0 @ =0x0000ccdd
- strh r0, [r1]
- adds r0, r3, 0
- adds r0, 0x8E
- strh r2, [r0]
- movs r0, 0x5
- movs r1, 0
- bl sub_804AADC
- ldr r0, [r5]
- adds r0, 0x86
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x87
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x7B
- movs r1, 0x9
- strb r1, [r0]
-_0804946E:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x86
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _08049484
- adds r0, r1, 0
- adds r0, 0x87
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _080494B8
-_08049484:
- movs r0, 0x1
- bl sub_804AA0C
- ldr r1, [r5]
- adds r2, r1, 0
- adds r2, 0x8C
- movs r4, 0
- movs r3, 0
- ldr r0, _080494D4 @ =0x0000ddee
- strh r0, [r2]
- adds r1, 0x8E
- strh r3, [r1]
- movs r0, 0x5
- movs r1, 0
- bl sub_804AADC
- ldr r0, [r5]
- adds r0, 0x86
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x87
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x7B
- movs r1, 0x8
- strb r1, [r0]
-_080494B8:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080494C0: .4byte 0x00000202
-_080494C4: .4byte 0x0000eebb
-_080494C8: .4byte gUnknown_03004824
-_080494CC: .4byte 0x00000101
-_080494D0: .4byte 0x0000ccdd
-_080494D4: .4byte 0x0000ddee
- thumb_func_end sub_80492D8
-
- thumb_func_start sub_80494D8
-sub_80494D8: @ 80494D8
- push {r4,lr}
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r4, r0, 24
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _08049504
- cmp r4, 0
- bne _080494FA
- movs r0, 0
- bl sub_80490BC
- b _08049500
-_080494FA:
- adds r0, r4, 0
- bl sub_80491E4
-_08049500:
- bl ResetBlockReceivedFlags
-_08049504:
- cmp r4, 0
- bne _0804950C
- bl sub_80492D8
-_0804950C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80494D8
-
- thumb_func_start sub_8049514
-sub_8049514: @ 8049514
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r6, 0
- movs r5, 0
- ldr r2, _08049548 @ =gUnknown_03004824
- ldr r3, [r2]
- ldr r4, _0804954C @ =gTradeNextSelectedMonTable
- lsls r2, r1, 1
- adds r2, r1
- lsls r2, 1
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r3, 0x44
- adds r2, r1
- adds r2, r4
-_0804953A:
- ldrb r1, [r2]
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _08049550
- adds r6, r1, 0
- b _08049558
- .align 2, 0
-_08049548: .4byte gUnknown_03004824
-_0804954C: .4byte gTradeNextSelectedMonTable
-_08049550:
- adds r2, 0x1
- adds r5, 0x1
- cmp r5, 0x5
- ble _0804953A
-_08049558:
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8049514
-
- thumb_func_start sub_8049560
-sub_8049560: @ 8049560
- push {r4-r7,lr}
- adds r7, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldrb r0, [r7]
- bl sub_8049514
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xC
- bne _080495B8
- ldr r5, _080495B0 @ =gUnknown_03004824
- ldr r0, [r5]
- adds r0, 0x40
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _080495B4 @ =gSprites
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r2, [r5]
- adds r2, 0x40
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xE0
- strh r1, [r0, 0x20]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xA0
- strh r1, [r0, 0x22]
- b _08049600
- .align 2, 0
-_080495B0: .4byte gUnknown_03004824
-_080495B4: .4byte gSprites
-_080495B8:
- ldr r4, _08049614 @ =gUnknown_03004824
- ldr r0, [r4]
- adds r0, 0x40
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _08049618 @ =gSprites
- adds r0, r5
- movs r1, 0
- bl StartSpriteAnim
- ldr r4, [r4]
- adds r4, 0x40
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldr r2, _0804961C @ =gTradeMonSpriteCoords
- lsls r3, r6, 1
- adds r0, r3, r2
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, 0x20
- strh r0, [r1, 0x20]
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r2, 0x1
- adds r3, r2
- ldrb r0, [r3]
- lsls r0, 3
- strh r0, [r1, 0x22]
-_08049600:
- ldrb r0, [r7]
- cmp r0, r6
- beq _0804960C
- movs r0, 0x5
- bl PlaySE
-_0804960C:
- strb r6, [r7]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08049614: .4byte gUnknown_03004824
-_08049618: .4byte gSprites
-_0804961C: .4byte gTradeMonSpriteCoords
- thumb_func_end sub_8049560
-
- thumb_func_start sub_8049620
-sub_8049620: @ 8049620
- push {r4,lr}
- movs r0, 0
- bl sub_804AA0C
- ldr r4, _08049668 @ =gUnknown_03004824
- ldr r0, [r4]
- adds r0, 0x7B
- movs r1, 0x5
- strb r1, [r0]
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08049670
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0x8C
- ldr r0, _0804966C @ =0x0000aabb
- strh r0, [r1]
- adds r0, r2, 0
- adds r0, 0x41
- ldrb r1, [r0]
- adds r0, 0x4D
- strh r1, [r0]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x8C
- movs r2, 0x14
- bl SendBlock
- b _08049678
- .align 2, 0
-_08049668: .4byte gUnknown_03004824
-_0804966C: .4byte 0x0000aabb
-_08049670:
- ldr r0, [r4]
- adds r0, 0x84
- movs r1, 0x1
- strb r1, [r0]
-_08049678:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8049620
-
- thumb_func_start sub_8049680
-sub_8049680: @ 8049680
- push {r4,lr}
- sub sp, 0x8
- ldr r0, _080496A0 @ =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _080496A8
- ldr r0, _080496A4 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x41
- movs r1, 0
- bl sub_8049560
- b _080496F4
- .align 2, 0
-_080496A0: .4byte gMain
-_080496A4: .4byte gUnknown_03004824
-_080496A8:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080496C4
- ldr r0, _080496C0 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x41
- movs r1, 0x1
- bl sub_8049560
- b _080496F4
- .align 2, 0
-_080496C0: .4byte gUnknown_03004824
-_080496C4:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080496E0
- ldr r0, _080496DC @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x41
- movs r1, 0x2
- bl sub_8049560
- b _080496F4
- .align 2, 0
-_080496DC: .4byte gUnknown_03004824
-_080496E0:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080496F4
- ldr r0, _08049750 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x41
- movs r1, 0x3
- bl sub_8049560
-_080496F4:
- ldr r0, _08049754 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080497B6
- movs r0, 0x5
- bl PlaySE
- ldr r4, _08049750 @ =gUnknown_03004824
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x41
- ldrb r1, [r1]
- cmp r1, 0x5
- bhi _0804975C
- adds r0, 0x4
- movs r1, 0x13
- str r1, [sp]
- movs r1, 0x12
- movs r2, 0xE
- movs r3, 0x1C
- bl DrawTextWindow
- ldr r3, _08049758 @ =gUnknown_0820C320
- movs r0, 0x13
- movs r1, 0xF
- movs r2, 0x2
- bl PrintMenuItems
- movs r0, 0
- str r0, [sp]
- movs r0, 0x9
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0x13
- movs r2, 0xF
- movs r3, 0x2
- bl InitMenu
- ldr r0, [r4]
- adds r0, 0x7B
- movs r1, 0x1
- strb r1, [r0]
- b _080497B6
- .align 2, 0
-_08049750: .4byte gUnknown_03004824
-_08049754: .4byte gMain
-_08049758: .4byte gUnknown_0820C320
-_0804975C:
- cmp r1, 0xB
- bhi _0804977A
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, [r4]
- adds r0, 0x7B
- movs r1, 0x2
- strb r1, [r0]
- b _080497B6
-_0804977A:
- cmp r1, 0xC
- bne _080497B6
- adds r0, 0x4
- movs r1, 0x13
- str r1, [sp]
- movs r1, 0x18
- movs r2, 0xE
- movs r3, 0x1D
- bl DrawTextWindow
- movs r0, 0x18
- movs r1, 0xE
- movs r2, 0x4
- bl InitYesNoMenu
- ldr r0, [r4]
- adds r0, 0x7B
- movs r1, 0x4
- strb r1, [r0]
- ldr r0, _080497F4 @ =gUnknown_0820C14C
- ldr r0, [r0, 0x10]
- ldr r1, [r4]
- adds r1, 0x7E
- ldrh r1, [r1]
- lsls r1, 5
- ldr r2, _080497F8 @ =0x06010000
- adds r1, r2
- movs r2, 0x14
- bl sub_804ACD8
-_080497B6:
- ldr r0, _080497FC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _080497EC
- movs r2, 0
- ldr r3, _08049800 @ =gUnknown_03004824
-_080497C8:
- ldr r0, [r3]
- lsls r1, r2, 1
- adds r0, 0x8C
- adds r0, r1
- strh r2, [r0]
- adds r2, 0x1
- cmp r2, 0x9
- ble _080497C8
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _08049800 @ =gUnknown_03004824
- ldr r1, [r1]
- adds r1, 0x8C
- movs r2, 0x14
- bl SendBlock
-_080497EC:
- add sp, 0x8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080497F4: .4byte gUnknown_0820C14C
-_080497F8: .4byte 0x06010000
-_080497FC: .4byte gMain
-_08049800: .4byte gUnknown_03004824
- thumb_func_end sub_8049680
-
- thumb_func_start sub_8049804
-sub_8049804: @ 8049804
- push {lr}
- bl HandleDestroyMenuCursors
- bl sub_804A80C
- ldr r3, _08049850 @ =gUnknown_03004824
- ldr r0, [r3]
- adds r0, 0x7B
- movs r1, 0
- strb r1, [r0]
- ldr r2, _08049854 @ =gSprites
- ldr r0, [r3]
- adds r0, 0x40
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r0, _08049858 @ =gUnknown_0820C14C
- ldr r0, [r0, 0x4]
- ldr r1, [r3]
- adds r1, 0x7E
- ldrh r1, [r1]
- lsls r1, 5
- ldr r2, _0804985C @ =0x06010000
- adds r1, r2
- movs r2, 0x14
- bl sub_804ACD8
- pop {r0}
- bx r0
- .align 2, 0
-_08049850: .4byte gUnknown_03004824
-_08049854: .4byte gSprites
-_08049858: .4byte gUnknown_0820C14C
-_0804985C: .4byte 0x06010000
- thumb_func_end sub_8049804
-
- thumb_func_start sub_8049860
-sub_8049860: @ 8049860
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0804987C @ =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08049880
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _08049890
- .align 2, 0
-_0804987C: .4byte gMain
-_08049880:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804989C
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_08049890:
- bl MoveMenuCursor
- ldr r1, _080498D8 @ =gUnknown_03004824
- ldr r1, [r1]
- adds r1, 0x7C
- strb r0, [r1]
-_0804989C:
- ldr r0, _080498DC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08049938
- movs r0, 0x5
- bl PlaySE
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- bne _080498E0
- movs r0, 0x1
- negs r0, r0
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _080498D8 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x7B
- movs r1, 0x2
- strb r1, [r0]
- b _0804994A
- .align 2, 0
-_080498D8: .4byte gUnknown_03004824
-_080498DC: .4byte gMain
-_080498E0:
- ldr r4, _08049910 @ =gUnknown_03004824
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x51
- adds r1, r2, 0
- adds r1, 0x42
- ldrb r1, [r1]
- adds r2, 0x41
- ldrb r2, [r2]
- bl sub_80499F0
- lsls r0, 24
- cmp r0, 0
- bne _08049914
- movs r0, 0x3
- movs r1, 0x2
- bl sub_804AADC
- ldr r0, [r4]
- adds r0, 0x7B
- movs r1, 0x8
- strb r1, [r0]
- b _0804994A
- .align 2, 0
-_08049910: .4byte gUnknown_03004824
-_08049914:
- bl sub_8049620
- ldr r2, _08049934 @ =gSprites
- ldr r0, [r4]
- adds r0, 0x40
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- b _0804994A
- .align 2, 0
-_08049934: .4byte gSprites
-_08049938:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0804994A
- movs r0, 0x5
- bl PlaySE
- bl sub_8049804
-_0804994A:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_8049860
-
- thumb_func_start sub_8049954
-sub_8049954: @ 8049954
- push {lr}
- ldr r0, _08049978 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0804996A
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08049974
-_0804996A:
- movs r0, 0x5
- bl PlaySE
- bl sub_8049804
-_08049974:
- pop {r0}
- bx r0
- .align 2, 0
-_08049978: .4byte gMain
- thumb_func_end sub_8049954
-
- thumb_func_start sub_804997C
-sub_804997C: @ 804997C
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _080499B4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080499E0
- ldr r0, _080499B8 @ =gUnknown_03004824
- ldr r2, [r0]
- adds r3, r2, 0
- adds r3, 0x41
- ldrb r1, [r3]
- cmp r1, 0x5
- bhi _080499C4
- ldr r0, _080499BC @ =gPlayerParty
- ldrb r1, [r3]
- adds r2, 0x42
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _080499C0 @ =sub_80484F4
- movs r4, 0x4
- str r4, [sp]
- bl ShowPokemonSummaryScreen
- b _080499E0
- .align 2, 0
-_080499B4: .4byte gPaletteFade
-_080499B8: .4byte gUnknown_03004824
-_080499BC: .4byte gPlayerParty
-_080499C0: .4byte sub_80484F4
-_080499C4:
- ldr r0, _080499E8 @ =gEnemyParty
- subs r1, 0x6
- lsls r1, 24
- lsrs r1, 24
- adds r2, 0x43
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _080499EC @ =sub_80484F4
- movs r4, 0x4
- str r4, [sp]
- bl ShowPokemonSummaryScreen
-_080499E0:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080499E8: .4byte gEnemyParty
-_080499EC: .4byte sub_80484F4
- thumb_func_end sub_804997C
-
- thumb_func_start sub_80499F0
-sub_80499F0: @ 80499F0
- push {r4,r5,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r4, r1, 24
- lsls r2, 24
- lsrs r2, 24
- movs r1, 0
- movs r3, 0
- cmp r1, r4
- bge _08049A18
-_08049A04:
- cmp r2, r3
- beq _08049A12
- adds r0, r5, r3
- ldrb r0, [r0]
- adds r0, r1, r0
- lsls r0, 24
- lsrs r1, r0, 24
-_08049A12:
- adds r3, 0x1
- cmp r3, r4
- blt _08049A04
-_08049A18:
- adds r0, r1, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_80499F0
-
- thumb_func_start sub_8049A20
-sub_8049A20: @ 8049A20
- push {r4,r5,lr}
- sub sp, 0xC
- movs r2, 0
- ldr r0, _08049A80 @ =gUnknown_03004824
- ldr r1, [r0]
- adds r3, r1, 0
- adds r3, 0x42
- adds r5, r0, 0
- ldrb r0, [r3]
- cmp r2, r0
- bge _08049A4C
- adds r4, r1, 0
- adds r4, 0x51
-_08049A3A:
- mov r1, sp
- adds r0, r1, r2
- adds r1, r4, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- ldrb r0, [r3]
- cmp r2, r0
- blt _08049A3A
-_08049A4C:
- adds r4, r5, 0
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x42
- ldrb r1, [r1]
- adds r0, 0x41
- ldrb r2, [r0]
- mov r0, sp
- bl sub_80499F0
- lsls r0, 24
- cmp r0, 0
- bne _08049A88
- movs r0, 0x3
- movs r1, 0x2
- bl sub_804AADC
- ldr r0, [r4]
- adds r0, 0x8C
- ldr r1, _08049A84 @ =0x0000bbcc
- strh r1, [r0]
- movs r0, 0xB4
- movs r1, 0
- bl sub_804AADC
- b _08049AB4
- .align 2, 0
-_08049A80: .4byte gUnknown_03004824
-_08049A84: .4byte 0x0000bbcc
-_08049A88:
- movs r0, 0x3
- movs r1, 0x1
- bl sub_804AADC
- ldr r0, [r5]
- adds r0, 0x8C
- ldr r1, _08049ABC @ =0x0000bbbb
- strh r1, [r0]
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08049AB4
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r5]
- adds r1, 0x8C
- movs r2, 0x14
- bl SendBlock
-_08049AB4:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08049ABC: .4byte 0x0000bbbb
- thumb_func_end sub_8049A20
-
- thumb_func_start sub_8049AC0
-sub_8049AC0: @ 8049AC0
- push {r4,lr}
- ldr r0, _08049ADC @ =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08049AE0
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _08049AF0
- .align 2, 0
-_08049ADC: .4byte gMain
-_08049AE0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08049AFC
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_08049AF0:
- bl MoveMenuCursor
- ldr r1, _08049B20 @ =gUnknown_03004824
- ldr r1, [r1]
- adds r1, 0x7C
- strb r0, [r1]
-_08049AFC:
- ldr r0, _08049B24 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08049B64
- movs r0, 0x5
- bl PlaySE
- bl GetMenuCursorPos
- lsls r0, 24
- cmp r0, 0
- bne _08049B28
- bl sub_8049A20
- b _08049B56
- .align 2, 0
-_08049B20: .4byte gUnknown_03004824
-_08049B24: .4byte gMain
-_08049B28:
- movs r0, 0x3
- movs r1, 0x1
- bl sub_804AADC
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _08049B56
- ldr r4, _08049B5C @ =gUnknown_03004824
- ldr r0, [r4]
- adds r0, 0x8C
- ldr r1, _08049B60 @ =0x0000bbcc
- strh r1, [r0]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x8C
- movs r2, 0x14
- bl SendBlock
-_08049B56:
- ldr r0, _08049B5C @ =gUnknown_03004824
- ldr r0, [r0]
- b _08049BAA
- .align 2, 0
-_08049B5C: .4byte gUnknown_03004824
-_08049B60: .4byte 0x0000bbcc
-_08049B64:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08049BB0
- movs r0, 0x3
- movs r1, 0x1
- bl sub_804AADC
- bl GetMenuCursorPos
- lsls r0, 24
- cmp r0, 0
- bne _08049B8C
- movs r0, 0x1
- bl MoveMenuCursor
- ldr r1, _08049BB8 @ =gUnknown_03004824
- ldr r1, [r1]
- adds r1, 0x7C
- strb r0, [r1]
-_08049B8C:
- ldr r4, _08049BB8 @ =gUnknown_03004824
- ldr r0, [r4]
- adds r0, 0x8C
- ldr r1, _08049BBC @ =0x0000bbcc
- strh r1, [r0]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x8C
- movs r2, 0x14
- bl SendBlock
- ldr r0, [r4]
-_08049BAA:
- adds r0, 0x7B
- movs r1, 0x64
- strb r1, [r0]
-_08049BB0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08049BB8: .4byte gUnknown_03004824
-_08049BBC: .4byte 0x0000bbcc
- thumb_func_end sub_8049AC0
-
- thumb_func_start sub_8049BC0
-sub_8049BC0: @ 8049BC0
- push {r4,r5,lr}
- ldr r0, _08049BDC @ =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08049BE0
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _08049BF0
- .align 2, 0
-_08049BDC: .4byte gMain
-_08049BE0:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08049BFC
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_08049BF0:
- bl MoveMenuCursor
- ldr r1, _08049C5C @ =gUnknown_03004824
- ldr r1, [r1]
- adds r1, 0x7C
- strb r0, [r1]
-_08049BFC:
- ldr r0, _08049C60 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08049C72
- movs r0, 0x5
- bl PlaySE
- bl GetMenuCursorPos
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _08049C6C
- movs r0, 0x4
- bl sub_804AA0C
- ldr r4, _08049C5C @ =gUnknown_03004824
- ldr r0, [r4]
- adds r2, r0, 0
- adds r2, 0x8C
- ldr r1, _08049C64 @ =0x0000eeaa
- strh r1, [r2]
- adds r0, 0x8E
- strh r5, [r0]
- movs r0, 0x5
- movs r1, 0
- bl sub_804AADC
- ldr r2, _08049C68 @ =gSprites
- ldr r0, [r4]
- adds r0, 0x40
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x7B
- movs r1, 0x64
- strb r1, [r0]
- b _08049C84
- .align 2, 0
-_08049C5C: .4byte gUnknown_03004824
-_08049C60: .4byte gMain
-_08049C64: .4byte 0x0000eeaa
-_08049C68: .4byte gSprites
-_08049C6C:
- bl sub_8049804
- b _08049C84
-_08049C72:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08049C84
- movs r0, 0x5
- bl PlaySE
- bl sub_8049804
-_08049C84:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_8049BC0
-
- thumb_func_start sub_8049C8C
-sub_8049C8C: @ 8049C8C
- push {r4,lr}
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _08049CAE
- ldr r4, _08049CC0 @ =gUnknown_03004824
- ldr r0, [r4]
- adds r0, 0x41
- ldrb r0, [r0]
- bl sub_8049E9C
- ldr r0, [r4]
- adds r0, 0x8A
- ldrb r0, [r0]
- bl sub_8049E9C
-_08049CAE:
- ldr r0, _08049CC0 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x7B
- movs r1, 0x7
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08049CC0: .4byte gUnknown_03004824
- thumb_func_end sub_8049C8C
-
- thumb_func_start sub_8049CC4
-sub_8049CC4: @ 8049CC4
- push {r4,lr}
- ldr r4, _08049CE8 @ =gUnknown_03004824
- ldr r0, [r4]
- adds r0, 0x80
- ldrh r1, [r0]
- ldr r0, _08049CEC @ =0x00000505
- cmp r1, r0
- bne _08049CE0
- bl sub_8049088
- ldr r0, [r4]
- adds r0, 0x7B
- movs r1, 0xE
- strb r1, [r0]
-_08049CE0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08049CE8: .4byte gUnknown_03004824
-_08049CEC: .4byte 0x00000505
- thumb_func_end sub_8049CC4
-
- thumb_func_start DisplayMessageAndContinueTask
-DisplayMessageAndContinueTask: @ 8049CF0
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _08049D40 @ =gUnknown_03004824
- ldr r1, [r4]
- adds r1, 0xB4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0xB4
- ldrb r0, [r0]
- cmp r0, 0x78
- bls _08049D36
- adds r0, r1, 0x4
- movs r1, 0x13
- str r1, [sp]
- movs r1, 0x18
- movs r2, 0xE
- movs r3, 0x1D
- bl DrawTextWindow
- movs r0, 0x18
- movs r1, 0xE
- movs r2, 0x4
- bl InitYesNoMenu
- ldr r0, [r4]
- adds r0, 0xB4
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x7B
- movs r1, 0x3
- strb r1, [r0]
-_08049D36:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08049D40: .4byte gUnknown_03004824
- thumb_func_end DisplayMessageAndContinueTask
-
- thumb_func_start sub_8049D44
-sub_8049D44: @ 8049D44
- push {lr}
- ldr r0, _08049D90 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08049D8A
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl sub_804A840
- movs r0, 0x1
- bl sub_804A840
- ldr r2, _08049D94 @ =gUnknown_03004824
- ldr r0, [r2]
- adds r0, 0x7B
- movs r1, 0
- strb r1, [r0]
- ldr r3, _08049D98 @ =gSprites
- ldr r0, [r2]
- adds r0, 0x40
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
-_08049D8A:
- pop {r0}
- bx r0
- .align 2, 0
-_08049D90: .4byte gMain
-_08049D94: .4byte gUnknown_03004824
-_08049D98: .4byte gSprites
- thumb_func_end sub_8049D44
-
- thumb_func_start sub_8049D9C
-sub_8049D9C: @ 8049D9C
- push {lr}
- ldr r0, _08049DBC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08049DB8
- bl sub_800832C
- ldr r0, _08049DC0 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x7B
- movs r1, 0xC
- strb r1, [r0]
-_08049DB8:
- pop {r0}
- bx r0
- .align 2, 0
-_08049DBC: .4byte gPaletteFade
-_08049DC0: .4byte gUnknown_03004824
- thumb_func_end sub_8049D9C
-
- thumb_func_start sub_8049DC4
-sub_8049DC4: @ 8049DC4
- push {lr}
- ldr r0, _08049DD8 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _08049DD4
- ldr r0, _08049DDC @ =sub_805465C
- bl SetMainCallback2
-_08049DD4:
- pop {r0}
- bx r0
- .align 2, 0
-_08049DD8: .4byte gReceivedRemoteLinkPlayers
-_08049DDC: .4byte sub_805465C
- thumb_func_end sub_8049DC4
-
- thumb_func_start sub_8049DE0
-sub_8049DE0: @ 8049DE0
- push {lr}
- ldr r0, _08049DF8 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x7B
- ldrb r0, [r0]
- cmp r0, 0xF
- bhi _08049E98
- lsls r0, 2
- ldr r1, _08049DFC @ =_08049E00
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08049DF8: .4byte gUnknown_03004824
-_08049DFC: .4byte _08049E00
- .align 2, 0
-_08049E00:
- .4byte _08049E40
- .4byte _08049E46
- .4byte _08049E4C
- .4byte _08049E52
- .4byte _08049E58
- .4byte _08049E98
- .4byte _08049E5E
- .4byte _08049E64
- .4byte _08049E6A
- .4byte _08049E70
- .4byte _08049E76
- .4byte _08049E7C
- .4byte _08049E82
- .4byte _08049E88
- .4byte _08049E8E
- .4byte _08049E94
-_08049E40:
- bl sub_8049680
- b _08049E98
-_08049E46:
- bl sub_8049860
- b _08049E98
-_08049E4C:
- bl sub_804997C
- b _08049E98
-_08049E52:
- bl sub_8049AC0
- b _08049E98
-_08049E58:
- bl sub_8049BC0
- b _08049E98
-_08049E5E:
- bl sub_8049C8C
- b _08049E98
-_08049E64:
- bl sub_8049CC4
- b _08049E98
-_08049E6A:
- bl sub_8049D44
- b _08049E98
-_08049E70:
- bl sub_8048A14
- b _08049E98
-_08049E76:
- bl sub_8048A50
- b _08049E98
-_08049E7C:
- bl sub_8049D9C
- b _08049E98
-_08049E82:
- bl sub_8049DC4
- b _08049E98
-_08049E88:
- bl sub_8048A90
- b _08049E98
-_08049E8E:
- bl DisplayMessageAndContinueTask
- b _08049E98
-_08049E94:
- bl sub_8049954
-_08049E98:
- pop {r0}
- bx r0
- thumb_func_end sub_8049DE0
-
- thumb_func_start sub_8049E9C
-sub_8049E9C: @ 8049E9C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- movs r1, 0x6
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r3, _08049ED0 @ =gUnknown_03004824
- ldr r0, [r3]
- adds r0, 0x80
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- bne _08049EC8
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x82
- adds r0, r2
- strb r4, [r0]
-_08049EC8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08049ED0: .4byte gUnknown_03004824
- thumb_func_end sub_8049E9C
-
- thumb_func_start sub_8049ED4
-sub_8049ED4: @ 8049ED4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x74
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- ldr r0, _08049F24 @ =gUnknown_03004824
- ldr r5, [r0]
- adds r0, r5, 0
- adds r0, 0x82
- add r0, r10
- ldrb r0, [r0]
- movs r1, 0x1
- str r1, [sp, 0x6C]
- cmp r0, 0x5
- bhi _08049EFE
- movs r2, 0
- str r2, [sp, 0x6C]
-_08049EFE:
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r5, 0
- adds r0, 0x80
- mov r1, r10
- adds r3, r0, r1
- ldrb r0, [r3]
- cmp r0, 0x2
- bne _08049F1A
- b _0804A0AC
-_08049F1A:
- cmp r0, 0x2
- bgt _08049F28
- cmp r0, 0x1
- beq _08049F36
- b _0804A294
- .align 2, 0
-_08049F24: .4byte gUnknown_03004824
-_08049F28:
- cmp r0, 0x3
- bne _08049F2E
- b _0804A0E4
-_08049F2E:
- cmp r0, 0x4
- bne _08049F34
- b _0804A244
-_08049F34:
- b _0804A294
-_08049F36:
- movs r4, 0
- adds r0, r5, 0
- adds r0, 0x42
- add r0, r10
- ldr r7, _0804A094 @ =gSprites
- ldr r2, [sp, 0x6C]
- lsls r2, 1
- mov r9, r2
- ldr r3, _0804A098 @ =gTradeMonSpriteCoords
- mov r12, r3
- mov r5, r10
- lsls r5, 4
- str r5, [sp, 0x70]
- ldrb r0, [r0]
- cmp r4, r0
- bcs _08049F8E
- adds r6, r7, 0
- ldr r2, _0804A09C @ =gUnknown_03004824
- ldr r0, [sp, 0x6C]
- add r0, r9
- lsls r3, r0, 1
- movs r5, 0x4
-_08049F62:
- ldr r0, [r2]
- adds r1, r4, r3
- adds r0, 0x34
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r5
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, [r2]
- adds r0, 0x42
- add r0, r10
- ldrb r0, [r0]
- cmp r4, r0
- bcc _08049F62
-_08049F8E:
- ldr r1, _0804A09C @ =gUnknown_03004824
- ldr r0, [r1]
- ldr r5, [sp, 0x6C]
- add r5, r9
- lsls r3, r5, 1
- mov r2, r8
- adds r6, r2, r3
- adds r0, 0x34
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r0, _0804A09C @ =gUnknown_03004824
- ldr r4, [r0]
- adds r4, 0x34
- adds r4, r6
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- movs r1, 0x14
- strh r1, [r0, 0x2E]
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r7
- lsls r5, 2
- mov r1, r12
- adds r0, r5, r1
- ldrb r0, [r0]
- adds r3, 0x1
- lsls r3, 1
- add r3, r12
- ldrb r1, [r3]
- adds r0, r1
- asrs r0, 1
- lsls r0, 3
- adds r0, 0xE
- strh r0, [r2, 0x32]
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- mov r0, r12
- adds r0, 0x1
- adds r5, r0
- ldrb r0, [r5]
- lsls r0, 3
- subs r0, 0xC
- strh r0, [r1, 0x36]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- ldr r1, _0804A0A0 @ =sub_809D62C
- bl oamt_set_x3A_32
- ldr r2, _0804A09C @ =gUnknown_03004824
- ldr r1, [r2]
- adds r1, 0x80
- add r1, r10
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0x34
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- bl sub_8078A34
- bl HandleDestroyMenuCursors
- ldr r3, _0804A09C @ =gUnknown_03004824
- ldr r0, [r3]
- adds r0, 0x4
- ldr r1, _0804A0A4 @ =gUnknown_0820C330
- mov r5, r9
- adds r2, r5, r1
- ldrb r2, [r2]
- adds r1, 0x1
- add r1, r9
- ldrb r1, [r1]
- str r1, [sp]
- movs r1, 0x13
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0
- bl FillWindowRect_DefaultPalette
- ldr r1, _0804A09C @ =gUnknown_03004824
- ldr r0, [r1]
- adds r0, 0xC8
- ldr r2, [sp, 0x70]
- mov r3, r10
- subs r1, r2, r3
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0804A0A8 @ =gTradePartyBoxTilemap
- movs r2, 0xF
- str r2, [sp]
- movs r2, 0x11
- str r2, [sp, 0x4]
- movs r5, 0
- str r5, [sp, 0x8]
- movs r2, 0
- bl sub_804A96C_alt
- ldr r0, [sp, 0x6C]
- cmp r0, 0
- beq _0804A08C
- b _0804A294
-_0804A08C:
- bl sub_804A80C
- b _0804A294
- .align 2, 0
-_0804A094: .4byte gSprites
-_0804A098: .4byte gTradeMonSpriteCoords
-_0804A09C: .4byte gUnknown_03004824
-_0804A0A0: .4byte sub_809D62C
-_0804A0A4: .4byte gUnknown_0820C330
-_0804A0A8: .4byte gTradePartyBoxTilemap
-_0804A0AC:
- ldr r2, _0804A0DC @ =gSprites
- ldr r1, [sp, 0x6C]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- add r0, r8
- adds r1, r5, 0
- adds r1, 0x34
- adds r1, r0
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0804A0E0 @ =sub_809D62C
- cmp r1, r0
- beq _0804A0D4
- b _0804A294
-_0804A0D4:
- movs r0, 0x3
- strb r0, [r3]
- b _0804A294
- .align 2, 0
-_0804A0DC: .4byte gSprites
-_0804A0E0: .4byte sub_809D62C
-_0804A0E4:
- adds r0, r5, 0
- adds r0, 0xC8
- ldr r2, [sp, 0x6C]
- lsls r1, r2, 4
- subs r1, r2
- lsls r1, 24
- lsrs r1, 24
- ldr r3, _0804A228 @ =gTradeMovesBoxTilemap
- movs r2, 0xF
- str r2, [sp]
- movs r7, 0x11
- str r7, [sp, 0x4]
- movs r5, 0
- str r5, [sp, 0x8]
- movs r2, 0
- bl sub_804A96C_alt
- ldr r0, _0804A22C @ =gUnknown_03004824
- ldr r3, [r0]
- ldr r1, [sp, 0x6C]
- lsls r6, r1, 1
- adds r1, r6
- mov r9, r1
- lsls r1, 1
- mov r2, r8
- adds r0, r2, r1
- adds r3, 0x34
- adds r3, r0
- ldrb r0, [r3]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- ldr r5, _0804A230 @ =gSprites
- adds r2, r5
- ldr r4, _0804A234 @ =gTradeMonSpriteCoords
- mov r0, r9
- lsls r5, r0, 2
- adds r0, r5, r4
- ldrb r0, [r0]
- adds r1, 0x1
- lsls r1, 1
- adds r1, r4
- ldrb r1, [r1]
- adds r0, r1
- asrs r0, 1
- lsls r0, 3
- adds r0, 0xE
- strh r0, [r2, 0x20]
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- ldr r2, _0804A230 @ =gSprites
- adds r1, r2
- adds r4, 0x1
- adds r5, r4
- ldrb r0, [r5]
- lsls r0, 3
- subs r0, 0xC
- strh r0, [r1, 0x22]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r5, 0
- strh r5, [r0, 0x24]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r5, [r0, 0x26]
- mov r0, sp
- adds r0, 0x12
- ldr r1, [sp, 0x6C]
- mov r2, r8
- bl sub_804A2B4
- add r1, sp, 0xC
- movs r3, 0xFC
- strb r3, [r1]
- adds r2, r1, 0
- movs r1, 0x6
- strb r1, [r2, 0x1]
- movs r1, 0x4
- strb r1, [r2, 0x2]
- adds r1, r2, 0
- strb r3, [r1, 0x3]
- strb r7, [r1, 0x4]
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x40
- subs r1, r0
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- strb r1, [r2, 0x5]
- ldr r0, _0804A22C @ =gUnknown_03004824
- ldr r1, [r0]
- adds r0, r1, 0x4
- adds r1, 0x7A
- ldrb r2, [r1]
- mov r1, r9
- lsls r1, 6
- mov r9, r1
- add r2, r9
- ldr r4, _0804A238 @ =gUnknown_0820C334
- ldr r3, [sp, 0x6C]
- lsls r1, r3, 2
- adds r3, r1, r4
- ldrb r3, [r3]
- ldr r5, _0804A23C @ =gUnknown_0820C334 + 0x1
- adds r1, r5
- ldrb r1, [r1]
- str r1, [sp]
- add r1, sp, 0xC
- bl sub_8003460
- add r7, sp, 0x34
- adds r0, r7, 0
- ldr r1, [sp, 0x6C]
- mov r2, r8
- bl sub_804A33C
- ldr r0, _0804A22C @ =gUnknown_03004824
- ldr r2, [r0]
- adds r0, r2, 0x4
- ldr r1, _0804A240 @ =gOtherText_Terminator2
- adds r2, 0x7A
- ldrb r2, [r2]
- add r2, r9
- adds r2, 0x20
- adds r6, 0x1
- lsls r6, 1
- adds r4, r6, r4
- ldrb r5, [r4]
- ldr r3, _0804A23C @ =gUnknown_0820C334 + 0x1
- adds r6, r3
- ldrb r4, [r6]
- adds r4, 0x1
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp]
- adds r3, r5, 0
- bl sub_8003460
- ldr r0, _0804A22C @ =gUnknown_03004824
- ldr r1, [r0]
- adds r0, r1, 0x4
- adds r1, 0x7A
- ldrb r2, [r1]
- add r2, r9
- adds r2, 0x26
- str r4, [sp]
- adds r1, r7, 0
- adds r3, r5, 0
- bl sub_8003460
- ldr r2, _0804A22C @ =gUnknown_03004824
- ldr r1, [r2]
- b _0804A28A
- .align 2, 0
-_0804A228: .4byte gTradeMovesBoxTilemap
-_0804A22C: .4byte gUnknown_03004824
-_0804A230: .4byte gSprites
-_0804A234: .4byte gTradeMonSpriteCoords
-_0804A238: .4byte gUnknown_0820C334
-_0804A23C: .4byte gUnknown_0820C334 + 0x1
-_0804A240: .4byte gOtherText_Terminator2
-_0804A244:
- ldr r0, _0804A2A4 @ =gUnknown_0820C14C
- ldr r0, [r0, 0x14]
- adds r1, r5, 0
- adds r1, 0x7E
- ldrh r1, [r1]
- lsls r1, 5
- ldr r3, _0804A2A8 @ =0x06010000
- adds r1, r3
- movs r2, 0x14
- bl sub_804ACD8
- ldr r0, _0804A2AC @ =gUnknown_0820C3D1
- mov r5, r10
- lsls r1, r5, 1
- adds r4, r1, r0
- ldrb r2, [r4]
- adds r2, 0x4
- lsls r2, 24
- lsrs r2, 24
- adds r0, 0x1
- adds r1, r0
- ldrb r3, [r1]
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r4]
- str r0, [sp]
- ldrb r0, [r1]
- str r0, [sp, 0x4]
- mov r0, r10
- mov r1, r8
- bl sub_804A51C
- ldr r0, _0804A2B0 @ =gUnknown_03004824
- ldr r1, [r0]
-_0804A28A:
- adds r1, 0x80
- add r1, r10
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804A294:
- add sp, 0x74
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804A2A4: .4byte gUnknown_0820C14C
-_0804A2A8: .4byte 0x06010000
-_0804A2AC: .4byte gUnknown_0820C3D1
-_0804A2B0: .4byte gUnknown_03004824
- thumb_func_end sub_8049ED4
-
- thumb_func_start sub_804A2B4
-sub_804A2B4: @ 804A2B4
- push {r4,r5,lr}
- sub sp, 0xC
- adds r5, r0, 0
- lsls r1, 24
- lsls r2, 24
- lsrs r2, 24
- cmp r1, 0
- bne _0804A2F4
- movs r0, 0x64
- adds r4, r2, 0
- muls r4, r0
- ldr r0, _0804A2F0 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- adds r0, r5, 0
- mov r1, sp
- bl StringCopy10
- adds r0, r4, 0
- bl GetMonGender
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
- b _0804A31E
- .align 2, 0
-_0804A2F0: .4byte gPlayerParty
-_0804A2F4:
- movs r0, 0x64
- adds r4, r2, 0
- muls r4, r0
- ldr r0, _0804A334 @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- adds r0, r5, 0
- mov r1, sp
- bl StringCopy10
- adds r0, r4, 0
- bl GetMonGender
- adds r0, r4, 0
- movs r1, 0x38
- bl GetMonData
-_0804A31E:
- ldr r0, _0804A338 @ =gWindowConfig_81E7294
- adds r1, r5, 0
- bl GetStringWidthGivenWindowConfig
- lsls r0, 24
- lsrs r0, 24
- add sp, 0xC
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0804A334: .4byte gEnemyParty
-_0804A338: .4byte gWindowConfig_81E7294
- thumb_func_end sub_804A2B4
-
- thumb_func_start sub_804A33C
-sub_804A33C: @ 804A33C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0804A384 @ =gUnknown_03004824
- ldr r1, [r0]
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 1
- adds r0, r2, r0
- adds r1, 0x5D
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- bne _0804A3F4
- movs r4, 0
- movs r0, 0x64
- adds r5, r2, 0
- muls r5, r0
- ldr r0, _0804A388 @ =gPlayerParty
- mov r9, r0
- ldr r2, _0804A38C @ =gEnemyParty
- mov r8, r2
-_0804A376:
- cmp r7, 0
- bne _0804A390
- adds r1, r4, 0
- adds r1, 0xD
- mov r2, r9
- b _0804A396
- .align 2, 0
-_0804A384: .4byte gUnknown_03004824
-_0804A388: .4byte gPlayerParty
-_0804A38C: .4byte gEnemyParty
-_0804A390:
- adds r1, r4, 0
- adds r1, 0xD
- mov r2, r8
-_0804A396:
- adds r0, r5, r2
- movs r2, 0
- bl GetMonData
- lsls r1, r4, 1
- add r1, sp
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _0804A376
- ldr r1, _0804A3E8 @ =gOtherText_Terminator
- adds r0, r6, 0
- bl StringCopy
- movs r4, 0
-_0804A3B8:
- lsls r0, r4, 1
- mov r2, sp
- adds r1, r2, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _0804A3D4
- adds r1, r0, 0
- movs r0, 0xD
- muls r1, r0
- ldr r0, _0804A3EC @ =gMoveNames
- adds r1, r0
- adds r0, r6, 0
- bl StringAppend
-_0804A3D4:
- adds r0, r6, 0
- ldr r1, _0804A3F0 @ =gOtherText_ControlAndMiscText
- bl StringAppend
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _0804A3B8
- b _0804A404
- .align 2, 0
-_0804A3E8: .4byte gOtherText_Terminator
-_0804A3EC: .4byte gMoveNames
-_0804A3F0: .4byte gOtherText_ControlAndMiscText
-_0804A3F4:
- ldr r1, _0804A414 @ =gOtherText_Terminator
- adds r0, r6, 0
- bl StringCopy
- ldr r1, _0804A418 @ =gOtherText_FourQuestions
- adds r0, r6, 0
- bl StringAppend
-_0804A404:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804A414: .4byte gOtherText_Terminator
-_0804A418: .4byte gOtherText_FourQuestions
- thumb_func_end sub_804A33C
-
- thumb_func_start sub_804A41C
-sub_804A41C: @ 804A41C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x44
- lsls r0, 24
- lsrs r5, r0, 24
- add r3, sp, 0x1C
- movs r2, 0
- movs r1, 0xFC
- strb r1, [r3]
- movs r0, 0x6
- strb r0, [r3, 0x1]
- movs r0, 0x4
- strb r0, [r3, 0x2]
- strb r1, [r3, 0x3]
- movs r0, 0x11
- strb r0, [r3, 0x4]
- strb r2, [r3, 0x5]
- movs r6, 0
- ldr r1, _0804A470 @ =gUnknown_03004824
- ldr r0, [r1]
- adds r0, 0x42
- adds r0, r5
- ldrb r0, [r0]
- cmp r6, r0
- bcs _0804A504
- mov r8, r3
- adds r7, r1, 0
- ldr r0, _0804A474 @ =gTradeMonSpriteCoords
- mov r9, r0
- movs r4, 0x1
- add r4, r9
- mov r10, r4
-_0804A462:
- cmp r5, 0
- bne _0804A47C
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _0804A478 @ =gPlayerParty
- b _0804A484
- .align 2, 0
-_0804A470: .4byte gUnknown_03004824
-_0804A474: .4byte gTradeMonSpriteCoords
-_0804A478: .4byte gPlayerParty
-_0804A47C:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _0804A514 @ =gEnemyParty
-_0804A484:
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x2
- add r2, sp, 0x4
- bl GetMonData
- mov r0, sp
- adds r0, 0x22
- add r1, sp, 0x4
- bl StringCopy10
- adds r0, r4, 0
- bl GetMonGender
- mov r1, sp
- adds r1, 0x22
- ldr r0, _0804A518 @ =gWindowConfig_81E7294
- bl GetStringWidthGivenWindowConfig
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x32
- subs r1, r0
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- mov r0, r8
- strb r1, [r0, 0x5]
- ldr r1, [r7]
- adds r0, r1, 0x4
- adds r1, 0x7A
- lsls r2, r5, 5
- adds r2, r5
- lsls r2, 2
- ldrb r1, [r1]
- adds r2, r1
- movs r1, 0x16
- muls r1, r6
- adds r2, r1
- lsls r2, 16
- lsrs r2, 16
- lsls r1, r5, 1
- adds r1, r5
- lsls r1, 1
- adds r1, r6, r1
- lsls r1, 1
- mov r4, r9
- adds r3, r1, r4
- ldrb r3, [r3]
- add r1, r10
- ldrb r1, [r1]
- str r1, [sp]
- mov r1, r8
- bl sub_8003460
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, [r7]
- adds r0, 0x42
- adds r0, r5
- ldrb r0, [r0]
- cmp r6, r0
- bcc _0804A462
-_0804A504:
- add sp, 0x44
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804A514: .4byte gEnemyParty
-_0804A518: .4byte gWindowConfig_81E7294
- thumb_func_end sub_804A41C
-
- thumb_func_start sub_804A51C
-sub_804A51C: @ 804A51C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x28
- ldr r4, [sp, 0x48]
- ldr r5, [sp, 0x4C]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- mov r10, r2
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x24]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r0, _0804A59C @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0xC8
- ldr r3, _0804A5A0 @ =gTradeMonBoxTilemap
- movs r1, 0x6
- str r1, [sp]
- movs r1, 0x3
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_804A96C
- mov r0, r8
- cmp r0, 0
- bne _0804A5A8
- movs r0, 0x64
- mov r4, r9
- muls r4, r0
- ldr r0, _0804A5A4 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x38
- movs r2, 0
- bl GetMonData
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r4, 0
- bl GetMonGender
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r4, 0
- movs r1, 0x2
- add r2, sp, 0xC
- bl GetMonData
- b _0804A5D4
- .align 2, 0
-_0804A59C: .4byte gUnknown_03004824
-_0804A5A0: .4byte gTradeMonBoxTilemap
-_0804A5A4: .4byte gPlayerParty
-_0804A5A8:
- movs r0, 0x64
- mov r4, r9
- muls r4, r0
- ldr r0, _0804A65C @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x38
- movs r2, 0
- bl GetMonData
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r4, 0
- bl GetMonGender
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r4, 0
- movs r1, 0x2
- add r2, sp, 0xC
- bl GetMonData
-_0804A5D4:
- ldr r1, _0804A660 @ =gUnknown_03004824
- ldr r5, [r1]
- mov r3, r8
- lsls r0, r3, 1
- add r0, r8
- lsls r0, 1
- add r0, r9
- adds r1, r5, 0
- adds r1, 0x5D
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- bne _0804A690
- adds r0, r6, 0
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, [sp, 0x24]
- lsls r2, r0, 5
- cmp r4, 0
- beq _0804A614
- mov r1, r10
- adds r0, r1, r2
- lsls r0, 1
- adds r1, r5, 0
- adds r1, 0xDA
- adds r1, r0
- adds r0, r4, 0
- adds r0, 0x60
- strh r0, [r1]
-_0804A614:
- ldr r3, _0804A660 @ =gUnknown_03004824
- ldr r4, [r3]
- mov r0, r10
- adds r5, r0, r2
- adds r0, r5, 0x1
- lsls r0, 1
- adds r4, 0xDA
- adds r4, r0
- adds r0, r6, 0
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x70
- strh r0, [r4]
- cmp r7, 0
- bne _0804A664
- add r0, sp, 0xC
- movs r1, 0
- bl NameHasGenderSymbol
- lsls r0, 24
- cmp r0, 0
- bne _0804A6CC
- ldr r3, _0804A660 @ =gUnknown_03004824
- ldr r1, [r3]
- adds r0, r5, 0
- subs r0, 0x1F
- lsls r0, 1
- adds r1, 0xDA
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x1
- b _0804A6CA
- .align 2, 0
-_0804A65C: .4byte gEnemyParty
-_0804A660: .4byte gUnknown_03004824
-_0804A664:
- cmp r7, 0xFE
- bne _0804A6CC
- add r0, sp, 0xC
- movs r1, 0xFE
- bl NameHasGenderSymbol
- lsls r0, 24
- cmp r0, 0
- bne _0804A6CC
- ldr r0, _0804A68C @ =gUnknown_03004824
- ldr r1, [r0]
- adds r0, r5, 0
- subs r0, 0x1F
- lsls r0, 1
- adds r1, 0xDA
- adds r1, r0
- ldrh r0, [r1]
- adds r0, 0x2
- b _0804A6CA
- .align 2, 0
-_0804A68C: .4byte gUnknown_03004824
-_0804A690:
- ldr r1, [sp, 0x24]
- lsls r0, r1, 5
- mov r1, r10
- adds r3, r1, r0
- adds r1, r3, 0
- subs r1, 0x20
- lsls r1, 1
- adds r2, r5, 0
- adds r2, 0xDA
- adds r1, r2, r1
- adds r0, r3, 0
- subs r0, 0x21
- lsls r0, 1
- adds r0, r2, r0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, r3, 0
- subs r1, 0x1F
- lsls r1, 1
- adds r1, r2, r1
- adds r0, r3, 0
- subs r0, 0x24
- lsls r0, 1
- adds r2, r0
- ldrh r2, [r2]
- movs r3, 0x80
- lsls r3, 3
- adds r0, r3, 0
- orrs r0, r2
-_0804A6CA:
- strh r0, [r1]
-_0804A6CC:
-.ifdef GERMAN
- ldr r0, _0804A6E8 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0xD8
- movs r1, 0x1
- strb r1, [r0]
-.endif
- add sp, 0x28
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
-.ifdef GERMAN
- .align 2, 0
-_0804A6E8: .4byte gUnknown_03004824
-.endif
- thumb_func_end sub_804A51C
-
- thumb_func_start sub_804A6DC
-sub_804A6DC: @ 804A6DC
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- movs r7, 0
- ldr r0, _0804A734 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x42
- adds r0, r6
- ldrb r0, [r0]
- cmp r7, r0
- bge _0804A72C
- lsls r0, r6, 1
- adds r0, r6
- ldr r1, _0804A738 @ =gTradeLevelDisplayCoords
- lsls r0, 2
- adds r5, r0, r1
- ldr r1, _0804A73C @ =gTradeMonBoxCoords
- adds r4, r0, r1
-_0804A702:
- lsls r1, r7, 24
- lsrs r1, 24
- ldrb r2, [r5]
- ldrb r3, [r5, 0x1]
- ldrb r0, [r4]
- str r0, [sp]
- ldrb r0, [r4, 0x1]
- str r0, [sp, 0x4]
- adds r0, r6, 0
- bl sub_804A51C
- adds r5, 0x2
- adds r4, 0x2
- adds r7, 0x1
- ldr r0, _0804A734 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x42
- adds r0, r6
- ldrb r0, [r0]
- cmp r7, r0
- blt _0804A702
-_0804A72C:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804A734: .4byte gUnknown_03004824
-_0804A738: .4byte gTradeLevelDisplayCoords
-_0804A73C: .4byte gTradeMonBoxCoords
- thumb_func_end sub_804A6DC
-
- thumb_func_start sub_804A740
-sub_804A740: @ 804A740
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- movs r7, 0
- ldr r3, _0804A800 @ =gUnknown_03004824
- ldr r0, [r3]
- adds r0, 0x42
- add r0, r12
- ldrb r0, [r0]
- cmp r7, r0
- bge _0804A7F2
- ldr r6, _0804A804 @ =gSprites
- mov r9, r3
- mov r1, r12
- lsls r0, r1, 1
- add r0, r12
- lsls r2, r0, 1
- mov r10, r2
- ldr r1, _0804A808 @ =gTradeMonSpriteCoords
- movs r2, 0
- mov r8, r2
- lsls r0, 2
- adds r5, r0, r1
-_0804A778:
- mov r1, r9
- ldr r0, [r1]
- mov r2, r10
- adds r4, r7, r2
- adds r0, 0x34
- adds r0, r4
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- mov r0, r9
- ldr r3, [r0]
- adds r2, r3, 0
- adds r2, 0x34
- adds r2, r4
- ldrb r0, [r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r5]
- lsls r0, 3
- adds r0, 0xE
- strh r0, [r1, 0x20]
- ldrb r0, [r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r5, 0x1]
- lsls r0, 3
- subs r0, 0xC
- strh r0, [r1, 0x22]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r1, r8
- strh r1, [r0, 0x24]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r2, r8
- strh r2, [r0, 0x26]
- adds r5, 0x2
- adds r7, 0x1
- adds r3, 0x42
- add r3, r12
- ldrb r3, [r3]
- cmp r7, r3
- blt _0804A778
-_0804A7F2:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804A800: .4byte gUnknown_03004824
-_0804A804: .4byte gSprites
-_0804A808: .4byte gTradeMonSpriteCoords
- thumb_func_end sub_804A740
-
- thumb_func_start sub_804A80C
-sub_804A80C: @ 804A80C
- push {lr}
- sub sp, 0x8
- ldr r0, _0804A838 @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0x4
- ldr r1, _0804A83C @ =gUnknown_0820C330
- ldrb r2, [r1, 0x2]
- ldrb r1, [r1, 0x3]
- str r1, [sp]
- movs r1, 0x13
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0
- bl FillWindowRect_DefaultPalette
- movs r0, 0x1
- bl sub_804A41C
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0804A838: .4byte gUnknown_03004824
-_0804A83C: .4byte gUnknown_0820C330
- thumb_func_end sub_804A80C
-
- thumb_func_start sub_804A840
-sub_804A840: @ 804A840
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0804A8A8
- ldr r4, _0804A89C @ =gUnknown_03004824
- ldr r0, [r4]
- adds r0, 0x4
- ldr r1, _0804A8A0 @ =gUnknown_0820C330
- ldrb r2, [r1]
- ldrb r1, [r1, 0x1]
- str r1, [sp]
- movs r1, 0x13
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0
- bl FillWindowRect_DefaultPalette
- ldr r0, [r4]
- adds r0, 0xC8
- ldr r3, _0804A8A4 @ =gTradePartyBoxTilemap
- movs r1, 0xF
- str r1, [sp]
- movs r1, 0x11
- str r1, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r1, 0
- movs r2, 0
- bl sub_804A96C_alt
- movs r0, 0
- bl sub_804A6DC
- movs r0, 0
- bl sub_804A41C
- movs r0, 0
- bl sub_804A740
- ldr r0, [r4]
- adds r0, 0xC8
- bl sub_804A938
- b _0804A8FA
- .align 2, 0
-_0804A89C: .4byte gUnknown_03004824
-_0804A8A0: .4byte gUnknown_0820C330
-_0804A8A4: .4byte gTradePartyBoxTilemap
-_0804A8A8:
- bl HandleDestroyMenuCursors
- ldr r4, _0804A924 @ =gUnknown_03004824
- ldr r0, [r4]
- adds r0, 0x4
- ldr r1, _0804A928 @ =gUnknown_0820C330
- ldrb r2, [r1, 0x2]
- ldrb r1, [r1, 0x3]
- str r1, [sp]
- movs r1, 0x13
- str r1, [sp, 0x4]
- movs r1, 0
- movs r3, 0
- bl FillWindowRect_DefaultPalette
- ldr r0, [r4]
- adds r0, 0xC8
- ldr r3, _0804A92C @ =gTradePartyBoxTilemap
- movs r1, 0xF
- str r1, [sp]
- movs r1, 0x11
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0xF
- movs r2, 0
- bl sub_804A96C_alt
- movs r0, 0x1
- bl sub_804A6DC
- movs r0, 0x1
- bl sub_804A41C
- movs r0, 0x1
- bl sub_804A740
- ldr r0, [r4]
- adds r0, 0xC8
- bl sub_804A938
-_0804A8FA:
- ldr r0, _0804A930 @ =gUnknown_0820C14C
- ldr r0, [r0, 0x4]
- ldr r4, _0804A924 @ =gUnknown_03004824
- ldr r1, [r4]
- adds r1, 0x7E
- ldrh r1, [r1]
- lsls r1, 5
- ldr r2, _0804A934 @ =0x06010000
- adds r1, r2
- movs r2, 0x14
- bl sub_804ACD8
- ldr r0, [r4]
- adds r0, 0x80
- adds r0, r5
- movs r1, 0
- strb r1, [r0]
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804A924: .4byte gUnknown_03004824
-_0804A928: .4byte gUnknown_0820C330
-_0804A92C: .4byte gTradePartyBoxTilemap
-_0804A930: .4byte gUnknown_0820C14C
-_0804A934: .4byte 0x06010000
- thumb_func_end sub_804A840
-
- thumb_func_start sub_804A938
-sub_804A938: @ 804A938
- movs r1, 0x1
- strb r1, [r0, 0x10]
- bx lr
- thumb_func_end sub_804A938
-
- thumb_func_start sub_804A940
-sub_804A940: @ 804A940
- push {r4,lr}
- adds r4, r0, 0
- ldrb r0, [r4, 0x10]
- cmp r0, 0
- beq _0804A95C
- adds r0, r4, 0
- adds r0, 0x12
- ldr r1, [r4, 0x8]
- movs r2, 0x80
- lsls r2, 3
- bl CpuSet
- movs r0, 0
- strb r0, [r4, 0x10]
-_0804A95C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804A940
-
- thumb_func_start sub_804A964
-sub_804A964: @ 804A964
- movs r2, 0
- strb r2, [r0, 0x10]
- str r1, [r0, 0x8]
- bx lr
- thumb_func_end sub_804A964
-
-.section .text.sub_804A9F4
-
- thumb_func_start sub_804A9F4
-sub_804A9F4: @ 804A9F4
- push {lr}
- bl MenuZeroFillScreen
- pop {r0}
- bx r0
- thumb_func_end sub_804A9F4
-
- thumb_func_start sub_804AA00
-sub_804AA00: @ 804AA00
- push {lr}
- bl MenuZeroFillScreen
- pop {r0}
- bx r0
- thumb_func_end sub_804AA00
-
- thumb_func_start sub_804AA0C
-sub_804AA0C: @ 804AA0C
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- ldr r0, _0804AA7C @ =gUnknown_03004824
- mov r8, r0
- ldr r0, [r0]
- adds r0, 0x4
- ldr r2, _0804AA80 @ =gTradeMessageWindowRects
- lsrs r4, 22
- adds r1, r4, r2
- ldrb r6, [r1]
- adds r1, r2, 0x1
- adds r1, r4, r1
- ldrb r5, [r1]
- adds r1, r2, 0x2
- adds r1, r4, r1
- ldrb r3, [r1]
- adds r2, 0x3
- adds r2, r4, r2
- ldrb r1, [r2]
- str r1, [sp]
- adds r1, r6, 0
- adds r2, r5, 0
- bl DrawTextWindow
- mov r1, r8
- ldr r3, [r1]
- adds r0, r3, 0x4
- ldr r1, _0804AA84 @ =gUnknown_0820C2F0
- adds r4, r1
- ldr r1, [r4]
- adds r3, 0x7A
- movs r4, 0xC0
- lsls r4, 1
- adds r2, r4, 0
- ldrb r3, [r3]
- adds r2, r3
- adds r6, 0x1
- lsls r6, 24
- lsrs r6, 24
- adds r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp]
- adds r3, r6, 0
- bl sub_8003460
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804AA7C: .4byte gUnknown_03004824
-_0804AA80: .4byte gTradeMessageWindowRects
-_0804AA84: .4byte gUnknown_0820C2F0
- thumb_func_end sub_804AA0C
-
- thumb_func_start sub_804AA88
-sub_804AA88: @ 804AA88
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r3, 0
- ldr r5, _0804AAD0 @ =gUnknown_03004824
- ldr r0, _0804AAD4 @ =0x000008dc
- mov r8, r0
- movs r4, 0
- ldr r2, _0804AAD8 @ =0x000008de
- mov r12, r2
- movs r7, 0x8E
- lsls r7, 4
- movs r6, 0xFF
-_0804AAA2:
- ldr r0, [r5]
- lsls r2, r3, 3
- adds r0, r2
- add r0, r8
- strb r4, [r0]
- ldr r1, [r5]
- adds r1, r2
- mov r2, r12
- adds r0, r1, r2
- strh r4, [r0]
- adds r1, r7
- ldrb r0, [r1]
- orrs r0, r6
- strb r0, [r1]
- adds r3, 0x1
- cmp r3, 0x3
- ble _0804AAA2
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804AAD0: .4byte gUnknown_03004824
-_0804AAD4: .4byte 0x000008dc
-_0804AAD8: .4byte 0x000008de
- thumb_func_end sub_804AA88
-
- thumb_func_start sub_804AADC
-sub_804AADC: @ 804AADC
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r6, r1, 24
- movs r3, 0
- ldr r4, _0804AB18 @ =gUnknown_03004824
- mov r12, r4
- ldr r7, _0804AB1C @ =0x000008dc
-_0804AAEE:
- mov r1, r12
- ldr r0, [r1]
- lsls r1, r3, 3
- adds r2, r0, r1
- adds r0, r2, r7
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804AB24
- ldr r3, _0804AB20 @ =0x000008de
- adds r0, r2, r3
- strh r5, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strb r6, [r0]
- ldr r0, [r4]
- adds r0, r1
- ldr r1, _0804AB1C @ =0x000008dc
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- b _0804AB2A
- .align 2, 0
-_0804AB18: .4byte gUnknown_03004824
-_0804AB1C: .4byte 0x000008dc
-_0804AB20: .4byte 0x000008de
-_0804AB24:
- adds r3, 0x1
- cmp r3, 0x3
- ble _0804AAEE
-_0804AB2A:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_804AADC
-
- thumb_func_start sub_804AB30
-sub_804AB30: @ 804AB30
- push {r4,r5,lr}
- movs r4, 0
- ldr r3, _0804AB58 @ =gUnknown_03004824
-_0804AB36:
- ldr r0, [r3]
- lsls r1, r4, 3
- adds r2, r0, r1
- ldr r5, _0804AB5C @ =0x000008dc
- adds r0, r2, r5
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0
- beq _0804ABE2
- ldr r0, _0804AB60 @ =0x000008de
- adds r1, r2, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _0804AB64
- subs r0, 0x1
- strh r0, [r1]
- b _0804ABE2
- .align 2, 0
-_0804AB58: .4byte gUnknown_03004824
-_0804AB5C: .4byte 0x000008dc
-_0804AB60: .4byte 0x000008de
-_0804AB64:
- movs r1, 0x8E
- lsls r1, 4
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _0804ABD2
- lsls r0, 2
- ldr r1, _0804AB7C @ =_0804AB80
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804AB7C: .4byte _0804AB80
- .align 2, 0
-_0804AB80:
- .4byte _0804AB98
- .4byte _0804ABB4
- .4byte _0804ABBC
- .4byte _0804ABC4
- .4byte _0804ABC4
- .4byte _0804ABCC
-_0804AB98:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0804ABB0 @ =gUnknown_03004824
- ldr r1, [r1]
- adds r1, 0x8C
- movs r2, 0x14
- bl SendBlock
- b _0804ABD2
- .align 2, 0
-_0804ABB0: .4byte gUnknown_03004824
-_0804ABB4:
- movs r0, 0
- bl sub_804AA0C
- b _0804ABD2
-_0804ABBC:
- movs r0, 0x2
- bl sub_804AA0C
- b _0804ABD2
-_0804ABC4:
- movs r0, 0x3
- bl sub_804AA0C
- b _0804ABD2
-_0804ABCC:
- movs r0, 0x3
- bl sub_804AA0C
-_0804ABD2:
- ldr r0, _0804ABF0 @ =gUnknown_03004824
- ldr r1, [r0]
- adds r1, r5
- ldr r2, _0804ABF4 @ =0x000008dc
- adds r1, r2
- movs r2, 0
- strb r2, [r1]
- adds r3, r0, 0
-_0804ABE2:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804AB36
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804ABF0: .4byte gUnknown_03004824
-_0804ABF4: .4byte 0x000008dc
- thumb_func_end sub_804AB30
-
- thumb_func_start sub_804ABF8
-sub_804ABF8: @ 804ABF8
- push {r4,lr}
- ldr r0, _0804AC14 @ =gUnknown_03004824
- ldr r1, [r0]
- adds r1, 0xB4
- ldrb r1, [r1]
- subs r1, 0x8
- adds r4, r0, 0
- cmp r1, 0x8
- bhi _0804ACB0
- lsls r0, r1, 2
- ldr r1, _0804AC18 @ =_0804AC1C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804AC14: .4byte gUnknown_03004824
-_0804AC18: .4byte _0804AC1C
- .align 2, 0
-_0804AC1C:
- .4byte _0804AC40
- .4byte _0804ACB0
- .4byte _0804ACB0
- .4byte _0804ACB0
- .4byte _0804ACB0
- .4byte _0804AC60
- .4byte _0804AC74
- .4byte _0804AC88
- .4byte _0804AC9A
-_0804AC40:
- ldr r0, [r4]
- adds r0, 0xB4
- ldrb r0, [r0]
- lsls r0, 3
- ldr r1, _0804AC5C @ =gUnknown_0820C07C
- adds r0, r1
- bl LoadSpriteSheet
- ldr r1, [r4]
- adds r2, r1, 0
- adds r2, 0x7E
- strh r0, [r2]
- b _0804ACC2
- .align 2, 0
-_0804AC5C: .4byte gUnknown_0820C07C
-_0804AC60:
- ldr r0, _0804AC6C @ =gSpritePalette_TradeScreenText
- bl LoadSpritePalette
- ldr r0, _0804AC70 @ =gUnknown_03004824
- ldr r1, [r0]
- b _0804ACC2
- .align 2, 0
-_0804AC6C: .4byte gSpritePalette_TradeScreenText
-_0804AC70: .4byte gUnknown_03004824
-_0804AC74:
- ldr r0, _0804AC80 @ =gUnknown_0820C12C
- bl LoadSpritePalette
- ldr r0, _0804AC84 @ =gUnknown_03004824
- ldr r1, [r0]
- b _0804ACC2
- .align 2, 0
-_0804AC80: .4byte gUnknown_0820C12C
-_0804AC84: .4byte gUnknown_03004824
-_0804AC88:
- ldr r0, _0804ACA8 @ =gUnknown_0820C124
- bl LoadSpriteSheet
- ldr r0, _0804ACAC @ =gUnknown_03004824
- ldr r1, [r0]
- adds r1, 0xB4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804AC9A:
- ldr r0, _0804ACAC @ =gUnknown_03004824
- ldr r0, [r0]
- adds r0, 0xB4
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x1
- b _0804ACCC
- .align 2, 0
-_0804ACA8: .4byte gUnknown_0820C124
-_0804ACAC: .4byte gUnknown_03004824
-_0804ACB0:
- ldr r0, [r4]
- adds r0, 0xB4
- ldrb r0, [r0]
- lsls r0, 3
- ldr r1, _0804ACD4 @ =gUnknown_0820C07C
- adds r0, r1
- bl LoadSpriteSheet
- ldr r1, [r4]
-_0804ACC2:
- adds r1, 0xB4
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
-_0804ACCC:
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0804ACD4: .4byte gUnknown_0820C07C
- thumb_func_end sub_804ABF8
-
- thumb_func_start sub_804ACD8
-sub_804ACD8: @ 804ACD8
- push {r4,lr}
- adds r4, r0, 0
- lsls r3, r2, 24
- lsrs r3, 24
- ldr r0, _0804ACF0 @ =gWindowConfig_81E725C
- adds r2, r4, 0
- bl sub_804AFB8
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804ACF0: .4byte gWindowConfig_81E725C
- thumb_func_end sub_804ACD8
-
- thumb_func_start sub_804ACF4
-sub_804ACF4: @ 804ACF4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0
- beq _0804AD0C
- cmp r0, 0x1
- beq _0804ADA0
- b _0804AE2C
-_0804AD0C:
- movs r7, 0
- ldr r1, _0804AD4C @ =gUnknown_03004824
- ldr r0, [r1]
- adds r0, 0x42
- ldrb r0, [r0]
- cmp r7, r0
- blt _0804AD1C
- b _0804AE2C
-_0804AD1C:
- adds r6, r1, 0
- movs r5, 0
- mov r9, r5
-_0804AD22:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _0804AD50 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- adds r1, r0, 0
- cmp r1, 0x1
- bne _0804AD54
- ldr r0, [r6]
- adds r0, 0x51
- adds r0, r5
- mov r2, r9
- strb r2, [r0]
- ldr r0, [r6]
- adds r0, 0x5D
- adds r0, r5
- b _0804AD84
- .align 2, 0
-_0804AD4C: .4byte gUnknown_03004824
-_0804AD50: .4byte gPlayerParty
-_0804AD54:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- cmp r1, 0
- bne _0804AD72
- ldr r0, [r6]
- adds r0, 0x51
- adds r0, r5
- strb r1, [r0]
- ldr r0, [r6]
- adds r0, 0x5D
- adds r0, r5
- b _0804AD84
-_0804AD72:
- ldr r0, [r6]
- adds r0, 0x51
- adds r0, r5
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r6]
- adds r0, 0x5D
- adds r0, r5
- mov r1, r9
-_0804AD84:
- strb r1, [r0]
- ldr r0, _0804AD9C @ =gUnknown_03004824
- adds r5, 0x1
- adds r7, 0x1
- ldr r0, [r0]
- adds r0, 0x42
- add r0, r8
- ldrb r0, [r0]
- cmp r7, r0
- blt _0804AD22
- b _0804AE2C
- .align 2, 0
-_0804AD9C: .4byte gUnknown_03004824
-_0804ADA0:
- movs r7, 0
- ldr r1, _0804ADE0 @ =gUnknown_03004824
- ldr r0, [r1]
- adds r0, 0x43
- ldrb r0, [r0]
- cmp r7, r0
- bge _0804AE2C
- adds r6, r1, 0
- movs r5, 0x6
- movs r2, 0
- mov r9, r2
-_0804ADB6:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _0804ADE4 @ =gEnemyParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- adds r1, r0, 0
- cmp r1, 0x1
- bne _0804ADE8
- ldr r0, [r6]
- adds r0, 0x51
- adds r0, r5
- mov r2, r9
- strb r2, [r0]
- ldr r0, [r6]
- adds r0, 0x5D
- adds r0, r5
- b _0804AE18
- .align 2, 0
-_0804ADE0: .4byte gUnknown_03004824
-_0804ADE4: .4byte gEnemyParty
-_0804ADE8:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- cmp r1, 0
- bne _0804AE06
- ldr r0, [r6]
- adds r0, 0x51
- adds r0, r5
- strb r1, [r0]
- ldr r0, [r6]
- adds r0, 0x5D
- adds r0, r5
- b _0804AE18
-_0804AE06:
- ldr r0, [r6]
- adds r0, 0x51
- adds r0, r5
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r6]
- adds r0, 0x5D
- adds r0, r5
- mov r1, r9
-_0804AE18:
- strb r1, [r0]
- ldr r0, _0804AE38 @ =gUnknown_03004824
- adds r5, 0x1
- adds r7, 0x1
- ldr r0, [r0]
- adds r0, 0x42
- add r0, r8
- ldrb r0, [r0]
- cmp r7, r0
- blt _0804ADB6
-_0804AE2C:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804AE38: .4byte gUnknown_03004824
- thumb_func_end sub_804ACF4
-
- thumb_func_start sub_804AE3C
-sub_804AE3C: @ 804AE3C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0804AE4C
- cmp r0, 0x1
- beq _0804AEAC
- b _0804AF00
-_0804AE4C:
- movs r6, 0
- ldr r1, _0804AEA4 @ =gUnknown_03004824
- ldr r0, [r1]
- adds r0, 0x42
- ldrb r0, [r0]
- cmp r6, r0
- bcs _0804AF00
- adds r7, r1, 0
-_0804AE5C:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _0804AEA8 @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- lsls r0, r5, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl GetHPBarLevel
- ldr r1, [r7]
- adds r1, 0x69
- adds r1, r6
- strb r0, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, [r7]
- adds r0, 0x42
- ldrb r0, [r0]
- cmp r6, r0
- bcc _0804AE5C
- b _0804AF00
- .align 2, 0
-_0804AEA4: .4byte gUnknown_03004824
-_0804AEA8: .4byte gPlayerParty
-_0804AEAC:
- movs r6, 0
- ldr r1, _0804AF08 @ =gUnknown_03004824
- ldr r0, [r1]
- adds r0, 0x43
- ldrb r0, [r0]
- cmp r6, r0
- bcs _0804AF00
- adds r7, r1, 0
-_0804AEBC:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _0804AF0C @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- lsls r0, r5, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl GetHPBarLevel
- ldr r1, [r7]
- adds r1, 0x6F
- adds r1, r6
- strb r0, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, [r7]
- adds r0, 0x43
- ldrb r0, [r0]
- cmp r6, r0
- bcc _0804AEBC
-_0804AF00:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804AF08: .4byte gUnknown_03004824
-_0804AF0C: .4byte gEnemyParty
- thumb_func_end sub_804AE3C
-
- thumb_func_start sub_804AF10
-sub_804AF10: @ 804AF10
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r5, 0
-_0804AF18:
- movs r4, 0
- ldr r2, _0804AF7C @ =gUnknown_03004824
- ldr r0, [r2]
- adds r0, 0x42
- adds r0, r5
- adds r1, r5, 0x1
- mov r8, r1
- ldrb r0, [r0]
- cmp r4, r0
- bge _0804AF6A
- adds r6, r2, 0
- lsls r0, r5, 1
- adds r0, r5
- lsls r7, r0, 1
-_0804AF34:
- ldr r2, [r6]
- adds r3, r4, r7
- adds r0, r2, 0
- adds r0, 0x34
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804AF80 @ =gSprites
- adds r0, r1
- adds r2, 0x69
- adds r2, r3
- ldrb r2, [r2]
- movs r1, 0x4
- subs r1, r2
- lsls r1, 24
- lsrs r1, 24
- bl sub_809D824
- adds r4, 0x1
- ldr r0, [r6]
- adds r0, 0x42
- adds r0, r5
- ldrb r0, [r0]
- cmp r4, r0
- blt _0804AF34
-_0804AF6A:
- mov r5, r8
- cmp r5, 0x1
- ble _0804AF18
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804AF7C: .4byte gUnknown_03004824
-_0804AF80: .4byte gSprites
- thumb_func_end sub_804AF10
-
- thumb_func_start sub_804AF84
-sub_804AF84: @ 804AF84
- push {r4,lr}
- movs r2, 0
- ldr r4, _0804AFB0 @ =gSaveBlock1 + 0x3110
- ldr r3, _0804AFB4 @ =gUnknown_03004824
-_0804AF8C:
- adds r1, r2, r4
- ldrb r0, [r1]
- cmp r0, 0
- bne _0804AFA2
- ldr r0, [r3]
- adds r0, 0xB5
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804AFA2
- strb r0, [r1]
-_0804AFA2:
- adds r2, 0x1
- cmp r2, 0xA
- ble _0804AF8C
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804AFB0: .4byte gSaveBlock1 + 0x3110
-_0804AFB4: .4byte gUnknown_03004824
- thumb_func_end sub_804AF84
-
- thumb_func_start sub_804AFB8
-sub_804AFB8: @ 804AFB8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r9, r0
- mov r8, r1
- mov r10, r2
- lsls r3, 24
- lsrs r6, r3, 24
- adds r0, r6, 0x3
- lsrs r6, r0, 2
- ldr r7, _0804B054 @ =gTileBuffer
- mov r0, sp
- movs r5, 0
- strh r5, [r0]
- lsls r4, r6, 6
- movs r0, 0x80
- lsls r0, 17
- orrs r4, r0
- mov r0, sp
- adds r1, r7, 0
- adds r2, r4, 0
- bl CpuSet
- mov r0, sp
- adds r0, 0x2
- strh r5, [r0]
- mov r2, r9
- ldrb r1, [r2, 0xD]
- lsls r1, 5
- adds r1, r7
- adds r2, r4, 0
- bl CpuSet
- mov r0, r9
- adds r1, r7, 0
- mov r2, r10
- bl sub_8004E3C
- movs r4, 0
- cmp r4, r6
- bcs _0804B042
-_0804B010:
- lsls r0, r4, 7
- adds r0, r7, r0
- lsls r1, r4, 8
- add r1, r8
- movs r2, 0x40
- bl CpuSet
- lsls r0, r4, 2
- mov r1, r9
- ldrb r1, [r1, 0xD]
- adds r0, r1
- lsls r0, 5
- adds r0, r7, r0
- lsls r1, r4, 3
- adds r1, 0x4
- lsls r1, 5
- add r1, r8
- movs r2, 0x40
- bl CpuSet
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _0804B010
-_0804B042:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804B054: .4byte gTileBuffer
- thumb_func_end sub_804AFB8
-
- thumb_func_start sub_804B058
-sub_804B058: @ 804B058
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _0804B074
- movs r0, 0x17
- bl PlaySE
- movs r0, 0
- strh r0, [r4, 0x2E]
-_0804B074:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804B058
-
- thumb_func_start sub_804B07C
-sub_804B07C: @ 804B07C
- push {lr}
- adds r2, r0, 0
- movs r0, 0x30
- ldrsh r1, [r2, r0]
- cmp r1, 0
- bne _0804B0B2
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bne _0804B098
- strh r1, [r2, 0x2E]
-_0804B098:
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- lsls r0, 1
- ldr r1, _0804B0B8 @ =gTradeGlow2PaletteAnimTable
- adds r0, r1
- ldrb r1, [r2, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- lsls r1, 4
- adds r1, 0x4
- movs r2, 0x2
- bl LoadPalette
-_0804B0B2:
- pop {r0}
- bx r0
- .align 2, 0
-_0804B0B8: .4byte gTradeGlow2PaletteAnimTable
- thumb_func_end sub_804B07C
-
- thumb_func_start sub_804B0BC
-sub_804B0BC: @ 804B0BC
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x2E]
- adds r1, 0x1
- strh r1, [r2, 0x2E]
- ldrh r0, [r2, 0x26]
- adds r0, 0x1
- strh r0, [r2, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0xA
- bne _0804B0DA
- adds r0, r2, 0
- bl DestroySprite
-_0804B0DA:
- pop {r0}
- bx r0
- thumb_func_end sub_804B0BC
-
- thumb_func_start sub_804B0E0
-sub_804B0E0: @ 804B0E0
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x2E]
- adds r1, 0x1
- strh r1, [r2, 0x2E]
- ldrh r0, [r2, 0x26]
- subs r0, 0x1
- strh r0, [r2, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0xA
- bne _0804B0FE
- adds r0, r2, 0
- bl DestroySprite
-_0804B0FE:
- pop {r0}
- bx r0
- thumb_func_end sub_804B0E0
-
- thumb_func_start sub_804B104
-sub_804B104: @ 804B104
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bne _0804B120
- movs r0, 0xCC
- bl PlaySE
- movs r0, 0
- strh r0, [r4, 0x2E]
-_0804B120:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804B104
-
- thumb_func_start sub_804B128
-sub_804B128: @ 804B128
- push {r4,r5,lr}
- sub sp, 0x20
- ldr r0, _0804B1B4 @ =gUnknown_03004828
- ldr r0, [r0]
- mov r12, r0
- movs r0, 0x82
- lsls r0, 1
- add r0, r12
- ldrh r1, [r0]
- lsls r1, 8
- movs r0, 0x83
- lsls r0, 1
- add r0, r12
- ldrh r2, [r0]
- lsls r2, 8
- movs r0, 0x86
- lsls r0, 1
- add r0, r12
- movs r4, 0
- ldrsh r3, [r0, r4]
- movs r0, 0x87
- lsls r0, 1
- add r0, r12
- movs r5, 0
- ldrsh r0, [r0, r5]
- str r0, [sp]
- movs r4, 0x8C
- lsls r4, 1
- add r4, r12
- movs r5, 0
- ldrsh r0, [r4, r5]
- str r0, [sp, 0x4]
- movs r5, 0
- ldrsh r0, [r4, r5]
- str r0, [sp, 0x8]
- movs r0, 0x8E
- lsls r0, 1
- add r0, r12
- ldrh r0, [r0]
- str r0, [sp, 0xC]
- add r0, sp, 0x10
- bl DoBgAffineSet
- ldr r1, _0804B1B8 @ =REG_BG2PA
- add r0, sp, 0x10
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, 0x2
- add r0, sp, 0x10
- ldrh r0, [r0, 0x2]
- strh r0, [r1]
- adds r1, 0x2
- add r0, sp, 0x10
- ldrh r0, [r0, 0x4]
- strh r0, [r1]
- adds r1, 0x2
- add r0, sp, 0x10
- ldrh r0, [r0, 0x6]
- strh r0, [r1]
- adds r1, 0x2
- ldr r0, [sp, 0x18]
- str r0, [r1]
- adds r1, 0x4
- ldr r0, [sp, 0x1C]
- str r0, [r1]
- add sp, 0x20
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804B1B4: .4byte gUnknown_03004828
-_0804B1B8: .4byte REG_BG2PA
- thumb_func_end sub_804B128
-
- thumb_func_start sub_804B1BC
-sub_804B1BC: @ 804B1BC
- push {lr}
- ldr r1, _0804B1FC @ =REG_BG1VOFS
- ldr r0, _0804B200 @ =gUnknown_03004828
- ldr r2, [r0]
- movs r3, 0x88
- lsls r3, 1
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- subs r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- movs r0, 0x80
- lsls r0, 19
- ldrh r0, [r0]
- movs r1, 0x7
- ands r0, r1
- cmp r0, 0
- bne _0804B208
- ldr r1, _0804B204 @ =REG_BG2VOFS
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- subs r1, 0x2
- adds r3, 0x2
- adds r0, r2, r3
- ldrh r0, [r0]
- strh r0, [r1]
- b _0804B20C
- .align 2, 0
-_0804B1FC: .4byte REG_BG1VOFS
-_0804B200: .4byte gUnknown_03004828
-_0804B204: .4byte REG_BG2VOFS
-_0804B208:
- bl sub_804B128
-_0804B20C:
- pop {r0}
- bx r0
- thumb_func_end sub_804B1BC
-
- thumb_func_start sub_804B210
-sub_804B210: @ 804B210
- push {lr}
- bl sub_804B1BC
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_804B210
-
- thumb_func_start sub_804B228
-sub_804B228: @ 804B228
- push {r4,lr}
- ldr r4, _0804B248 @ =gUnknown_03004828
- ldr r1, [r4]
- adds r2, r1, 0
- adds r2, 0xB4
- movs r3, 0
- movs r0, 0
- strh r0, [r2]
- adds r1, 0xB2
- strb r3, [r1]
- ldr r0, [r4]
- adds r0, 0xB3
- strb r3, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804B248: .4byte gUnknown_03004828
- thumb_func_end sub_804B228
-
- thumb_func_start sub_804B24C
-sub_804B24C: @ 804B24C
- push {r4,r5,lr}
- ldr r1, _0804B270 @ =gUnknown_03004828
- ldr r2, [r1]
- adds r0, r2, 0
- adds r0, 0xB2
- adds r3, r2, 0
- adds r3, 0xB3
- ldrb r0, [r0]
- adds r5, r1, 0
- ldrb r3, [r3]
- cmp r0, r3
- bne _0804B274
- adds r1, r2, 0
- adds r1, 0xB4
- ldrh r0, [r1]
- adds r0, 0x1
- b _0804B27A
- .align 2, 0
-_0804B270: .4byte gUnknown_03004828
-_0804B274:
- adds r1, r2, 0
- adds r1, 0xB4
- movs r0, 0
-_0804B27A:
- strh r0, [r1]
- adds r4, r5, 0
- ldr r3, [r4]
- adds r2, r3, 0
- adds r2, 0xB4
- ldrh r0, [r2]
- cmp r0, 0xB4
- bls _0804B29C
- movs r1, 0
- movs r0, 0
- strh r0, [r2]
- adds r0, r3, 0
- adds r0, 0xB3
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0xB2
- strb r1, [r0]
-_0804B29C:
- ldr r0, [r5]
- adds r1, r0, 0
- adds r1, 0xB2
- ldrb r1, [r1]
- adds r0, 0xB3
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_804B24C
-
- thumb_func_start sub_804B2B0
-sub_804B2B0: @ 804B2B0
- push {lr}
- ldr r0, _0804B2C0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804B2C4
- movs r0, 0
- b _0804B2CC
- .align 2, 0
-_0804B2C0: .4byte gReceivedRemoteLinkPlayers
-_0804B2C4:
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
-_0804B2CC:
- pop {r1}
- bx r1
- thumb_func_end sub_804B2B0
-
- thumb_func_start sub_804B2D0
-sub_804B2D0: @ 804B2D0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- movs r4, 0
- mov r10, r4
- cmp r7, 0
- bne _0804B2FC
- ldr r0, _0804B324 @ =gUnknown_020297D8
- ldrb r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _0804B328 @ =gPlayerParty
- adds r1, r0
- mov r10, r1
- movs r4, 0x1
-_0804B2FC:
- cmp r7, 0x1
- bne _0804B31A
- ldr r0, _0804B324 @ =gUnknown_020297D8
- ldrb r0, [r0, 0x1]
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r1, r0
- ldr r0, _0804B32C @ =gEnemyParty
- adds r1, r0
- mov r10, r1
- movs r4, 0x3
-_0804B31A:
- cmp r5, 0
- beq _0804B330
- cmp r5, 0x1
- beq _0804B3A4
- b _0804B3FA
- .align 2, 0
-_0804B324: .4byte gUnknown_020297D8
-_0804B328: .4byte gPlayerParty
-_0804B32C: .4byte gEnemyParty
-_0804B330:
- mov r0, r10
- movs r1, 0x41
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- mov r0, r10
- movs r1, 0
- bl GetMonData
- mov r9, r0
- lsls r0, r5, 3
- ldr r1, _0804B390 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _0804B394 @ =gMonFrontPicCoords
- lsls r2, r5, 2
- adds r2, r1
- ldrb r1, [r2]
- ldrb r2, [r2, 0x1]
- ldr r3, _0804B398 @ =0x02000000
- ldr r6, _0804B39C @ =gUnknown_081FAF4C
- lsls r7, 1
- mov r8, r7
- mov r4, r8
- adds r4, 0x1
- lsls r4, 2
- adds r4, r6
- ldr r4, [r4]
- str r4, [sp]
- str r5, [sp, 0x4]
- mov r4, r9
- str r4, [sp, 0x8]
- bl HandleLoadSpecialPokePic
- mov r0, r10
- bl sub_8040990
- bl LoadCompressedObjectPalette
- ldr r0, _0804B3A0 @ =gUnknown_03004828
- ldr r0, [r0]
- movs r1, 0x90
- lsls r1, 1
- adds r0, r1
- add r0, r8
- strh r5, [r0]
- b _0804B3FA
- .align 2, 0
-_0804B390: .4byte gMonFrontPicTable
-_0804B394: .4byte gMonFrontPicCoords
-_0804B398: .4byte 0x02000000
-_0804B39C: .4byte gUnknown_081FAF4C
-_0804B3A0: .4byte gUnknown_03004828
-_0804B3A4:
- mov r0, r10
- bl sub_8040990
- ldrh r0, [r0, 0x4]
- adds r1, r4, 0
- bl GetMonSpriteTemplate_803C56C
- ldr r0, _0804B40C @ =gUnknown_02024E8C
- movs r1, 0x78
- movs r2, 0x3C
- movs r3, 0x6
- bl CreateSprite
- ldr r4, _0804B410 @ =gUnknown_03004828
- ldr r1, [r4]
- adds r1, 0xB8
- adds r1, r7
- strb r0, [r1]
- ldr r3, _0804B414 @ =gSprites
- ldr r0, [r4]
- adds r0, 0xB8
- adds r0, r7
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0xB8
- adds r0, r7
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, 0x1C
- adds r0, r3
- ldr r1, _0804B418 @ =SpriteCallbackDummy
- str r1, [r0]
-_0804B3FA:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804B40C: .4byte gUnknown_02024E8C
-_0804B410: .4byte gUnknown_03004828
-_0804B414: .4byte gSprites
-_0804B418: .4byte SpriteCallbackDummy
- thumb_func_end sub_804B2D0
-
- thumb_func_start sub_804B41C
-sub_804B41C: @ 804B41C
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r1, _0804B43C @ =gMain
- ldr r2, _0804B440 @ =0x0000043c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0xC
- bls _0804B430
- b _0804B76E
-_0804B430:
- lsls r0, 2
- ldr r1, _0804B444 @ =_0804B448
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804B43C: .4byte gMain
-_0804B440: .4byte 0x0000043c
-_0804B444: .4byte _0804B448
- .align 2, 0
-_0804B448:
- .4byte _0804B47C
- .4byte _0804B5AC
- .4byte _0804B5D4
- .4byte _0804B5FC
- .4byte _0804B648
- .4byte _0804B678
- .4byte _0804B6A8
- .4byte _0804B6B2
- .4byte _0804B6CC
- .4byte _0804B6E4
- .4byte _0804B71C
- .4byte _0804B726
- .4byte _0804B75C
-_0804B47C:
- movs r1, 0x80
- lsls r1, 19
- movs r0, 0
- strh r0, [r1]
- bl ResetTasks
- bl CloseLink
- ldr r6, _0804B570 @ =gUnknown_03004828
- ldr r5, _0804B574 @ =0x0201f000
- str r5, [r6]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r0, _0804B578 @ =sub_804B210
- bl SetVBlankCallback
- bl sub_804B228
- ldr r4, _0804B57C @ =gWindowConfig_81E6F84
- adds r0, r4, 0
- bl SetUpWindowConfig
- ldr r0, [r6]
- adds r0, 0x4
- adds r1, r4, 0
- bl InitWindowFromConfig
- movs r0, 0x2
- bl SetTextWindowBaseTileNum
- ldr r1, [r6]
- adds r1, 0x34
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x4
- bl LoadTextWindowGraphics
- bl MenuZeroFillScreen
- ldr r1, _0804B580 @ =gLinkType
- ldr r4, _0804B584 @ =0x00001144
- adds r0, r4, 0
- strh r0, [r1]
- ldr r1, _0804B588 @ =gMain
- ldr r0, _0804B58C @ =0x0000043c
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, _0804B590 @ =gUnknown_08D00000
- movs r1, 0xC0
- lsls r1, 19
- bl LZDecompressVram
- ldr r0, _0804B594 @ =gUnknown_08D00524
- ldr r1, _0804B598 @ =0xfffe1000
- adds r5, r1
- movs r2, 0x80
- lsls r2, 4
- adds r1, r5, 0
- bl CpuSet
- ldr r1, _0804B59C @ =0x06002800
- ldr r0, _0804B5A0 @ =0x040000d4
- str r5, [r0]
- str r1, [r0, 0x4]
- ldr r1, _0804B5A4 @ =0x80000280
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, _0804B5A8 @ =gUnknown_08D004E0
- movs r1, 0
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r1, [r6]
- adds r0, r1, 0
- adds r0, 0xB6
- movs r2, 0
- strh r2, [r0]
- adds r0, 0xE
- strh r2, [r0]
- movs r4, 0x8F
- lsls r4, 1
- adds r1, r4
- movs r0, 0x1
- strb r0, [r1]
- ldr r3, [r6]
- movs r1, 0x82
- lsls r1, 1
- adds r0, r3, r1
- movs r1, 0x40
- strh r1, [r0]
- subs r4, 0x18
- adds r0, r3, r4
- strh r1, [r0]
- adds r1, 0xC8
- adds r0, r3, r1
- strh r2, [r0]
- adds r4, 0x4
- adds r0, r3, r4
- strh r2, [r0]
- movs r0, 0x86
- lsls r0, 1
- adds r1, r3, r0
- movs r0, 0x78
- strh r0, [r1]
- adds r4, 0x4
- adds r1, r3, r4
- movs r0, 0x50
- strh r0, [r1]
- adds r0, 0xC8
- adds r1, r3, r0
- subs r0, 0x18
- strh r0, [r1]
- movs r1, 0x8E
- lsls r1, 1
- adds r0, r3, r1
- strh r2, [r0]
- b _0804B76E
- .align 2, 0
-_0804B570: .4byte gUnknown_03004828
-_0804B574: .4byte 0x0201f000
-_0804B578: .4byte sub_804B210
-_0804B57C: .4byte gWindowConfig_81E6F84
-_0804B580: .4byte gLinkType
-_0804B584: .4byte 0x00001144
-_0804B588: .4byte gMain
-_0804B58C: .4byte 0x0000043c
-_0804B590: .4byte gUnknown_08D00000
-_0804B594: .4byte gUnknown_08D00524
-_0804B598: .4byte 0xfffe1000
-_0804B59C: .4byte 0x06002800
-_0804B5A0: .4byte 0x040000d4
-_0804B5A4: .4byte 0x80000280
-_0804B5A8: .4byte gUnknown_08D004E0
-_0804B5AC:
- bl OpenLink
- ldr r1, _0804B5C8 @ =gMain
- ldr r2, _0804B5CC @ =0x0000043c
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, _0804B5D0 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0xC0
- str r2, [r0]
- b _0804B76E
- .align 2, 0
-_0804B5C8: .4byte gMain
-_0804B5CC: .4byte 0x0000043c
-_0804B5D0: .4byte gUnknown_03004828
-_0804B5D4:
- ldr r0, _0804B5F4 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0xC0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bhi _0804B5E8
- b _0804B76E
-_0804B5E8:
- movs r0, 0
- str r0, [r1]
- ldr r4, _0804B5F8 @ =0x0000043c
- adds r1, r2, r4
- b _0804B74C
- .align 2, 0
-_0804B5F4: .4byte gUnknown_03004828
-_0804B5F8: .4byte 0x0000043c
-_0804B5FC:
- bl IsLinkMaster
- lsls r0, 24
- cmp r0, 0
- bne _0804B608
- b _0804B746
-_0804B608:
- bl GetLinkPlayerCount_2
- adds r4, r0, 0
- bl sub_800820C
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bcs _0804B61C
- b _0804B76E
-_0804B61C:
- ldr r0, _0804B63C @ =gUnknown_03004828
- ldr r1, [r0]
- adds r1, 0xC0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x1E
- bhi _0804B62E
- b _0804B76E
-_0804B62E:
- bl sub_8007F4C
- ldr r1, _0804B640 @ =gMain
- ldr r0, _0804B644 @ =0x0000043c
- adds r1, r0
- b _0804B74C
- .align 2, 0
-_0804B63C: .4byte gUnknown_03004828
-_0804B640: .4byte gMain
-_0804B644: .4byte 0x0000043c
-_0804B648:
- bl sub_804B24C
- ldr r0, _0804B66C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0804B656
- b _0804B76E
-_0804B656:
- bl IsLinkPlayerDataExchangeComplete
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0804B664
- b _0804B76E
-_0804B664:
- ldr r1, _0804B670 @ =gMain
- ldr r4, _0804B674 @ =0x0000043c
- adds r1, r4
- b _0804B74C
- .align 2, 0
-_0804B66C: .4byte gReceivedRemoteLinkPlayers
-_0804B670: .4byte gMain
-_0804B674: .4byte 0x0000043c
-_0804B678:
- ldr r2, _0804B69C @ =gUnknown_03004828
- ldr r0, [r2]
- adds r0, 0x9C
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0x9D
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0xBD
- strb r1, [r0]
- movs r0, 0
- bl sub_804B2D0
- ldr r1, _0804B6A0 @ =gMain
- ldr r0, _0804B6A4 @ =0x0000043c
- adds r1, r0
- b _0804B74C
- .align 2, 0
-_0804B69C: .4byte gUnknown_03004828
-_0804B6A0: .4byte gMain
-_0804B6A4: .4byte 0x0000043c
-_0804B6A8:
- movs r0, 0
- movs r1, 0x1
- bl sub_804B2D0
- b _0804B746
-_0804B6B2:
- movs r0, 0x1
- movs r1, 0
- bl sub_804B2D0
- ldr r1, _0804B6C4 @ =gMain
- ldr r4, _0804B6C8 @ =0x0000043c
- adds r1, r4
- b _0804B74C
- .align 2, 0
-_0804B6C4: .4byte gMain
-_0804B6C8: .4byte 0x0000043c
-_0804B6CC:
- movs r0, 0x1
- movs r1, 0x1
- bl sub_804B2D0
- ldr r1, _0804B6DC @ =gMain
- ldr r0, _0804B6E0 @ =0x0000043c
- adds r1, r0
- b _0804B74C
- .align 2, 0
-_0804B6DC: .4byte gMain
-_0804B6E0: .4byte 0x0000043c
-_0804B6E4:
- bl sub_804C164
- ldr r0, _0804B704 @ =gUnknown_0821594C
- bl LoadSpriteSheet
- ldr r0, _0804B708 @ =gUnknown_08215954
- bl LoadSpritePalette
- ldr r1, _0804B70C @ =REG_BG1CNT
- ldr r2, _0804B710 @ =0x00000502
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _0804B714 @ =gMain
- ldr r4, _0804B718 @ =0x0000043c
- adds r1, r4
- b _0804B74C
- .align 2, 0
-_0804B704: .4byte gUnknown_0821594C
-_0804B708: .4byte gUnknown_08215954
-_0804B70C: .4byte REG_BG1CNT
-_0804B710: .4byte 0x00000502
-_0804B714: .4byte gMain
-_0804B718: .4byte 0x0000043c
-_0804B71C:
- ldr r0, _0804B754 @ =0x0000043c
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804B726:
- movs r0, 0x5
- bl sub_804BBE8
- movs r0, 0
- bl sub_804BBE8
- bl sub_804C1A8
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_0804B746:
- ldr r1, _0804B758 @ =gMain
- ldr r2, _0804B754 @ =0x0000043c
- adds r1, r2
-_0804B74C:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804B76E
- .align 2, 0
-_0804B754: .4byte 0x0000043c
-_0804B758: .4byte gMain
-_0804B75C:
- ldr r0, _0804B788 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804B76E
- ldr r0, _0804B78C @ =sub_804DB84
- bl SetMainCallback2
-_0804B76E:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804B788: .4byte gPaletteFade
-_0804B78C: .4byte sub_804DB84
- thumb_func_end sub_804B41C
-
- thumb_func_start sub_804B790
-sub_804B790: @ 804B790
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x10
- ldr r1, _0804B7B4 @ =gMain
- ldr r2, _0804B7B8 @ =0x0000043c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0xC
- bls _0804B7A8
- b _0804B9F2
-_0804B7A8:
- lsls r0, 2
- ldr r1, _0804B7BC @ =_0804B7C0
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804B7B4: .4byte gMain
-_0804B7B8: .4byte 0x0000043c
-_0804B7BC: .4byte _0804B7C0
- .align 2, 0
-_0804B7C0:
- .4byte _0804B7F4
- .4byte _0804B9F2
- .4byte _0804B9F2
- .4byte _0804B9F2
- .4byte _0804B9F2
- .4byte _0804B914
- .4byte _0804B92C
- .4byte _0804B944
- .4byte _0804B94E
- .4byte _0804B968
- .4byte _0804B9A0
- .4byte _0804B9AA
- .4byte _0804B9E0
-_0804B7F4:
- ldr r1, _0804B8E0 @ =gUnknown_020297D8
- ldr r0, _0804B8E4 @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- movs r6, 0
- strb r0, [r1]
- movs r0, 0x6
- strb r0, [r1, 0x1]
- ldr r4, _0804B8E8 @ =gLinkPlayers + 0x8
- ldr r1, _0804B8EC @ =gSaveBlock2
- adds r0, r4, 0
- bl StringCopy
- ldr r0, _0804B8F0 @ =gEnemyParty
- movs r1, 0x7
- add r2, sp, 0x4
- bl GetMonData
- adds r4, 0x1C
- adds r0, r4, 0
- add r1, sp, 0x4
- bl StringCopy
- movs r0, 0x80
- lsls r0, 19
- movs r3, 0
- mov r8, r3
- strh r6, [r0]
- bl ResetTasks
- ldr r5, _0804B8F4 @ =gUnknown_03004828
- ldr r0, _0804B8F8 @ =0x0201f000
- str r0, [r5]
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r0, _0804B8FC @ =sub_804B210
- bl SetVBlankCallback
- bl sub_804B228
- ldr r4, _0804B900 @ =gWindowConfig_81E717C
- adds r0, r4, 0
- bl SetUpWindowConfig
- ldr r0, [r5]
- adds r0, 0x4
- adds r1, r4, 0
- bl InitWindowFromConfig
- movs r0, 0x2
- bl SetTextWindowBaseTileNum
- ldr r1, [r5]
- adds r1, 0x34
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, 0x4
- bl LoadTextWindowGraphics
- bl MenuZeroFillScreen
- ldr r1, _0804B904 @ =gLinkType
- ldr r2, _0804B908 @ =0x00001144
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, [r5]
- movs r3, 0x8F
- lsls r3, 1
- adds r0, r3
- mov r1, r8
- strb r1, [r0]
- ldr r2, [r5]
- adds r0, r2, 0
- adds r0, 0xB6
- strh r6, [r0]
- adds r0, 0xE
- strh r6, [r0]
- subs r3, 0x1A
- adds r0, r2, r3
- movs r1, 0x40
- strh r1, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strh r1, [r0]
- adds r1, 0xC8
- adds r0, r2, r1
- strh r6, [r0]
- adds r3, 0x4
- adds r0, r2, r3
- strh r6, [r0]
- movs r0, 0x86
- lsls r0, 1
- adds r1, r2, r0
- movs r0, 0x78
- strh r0, [r1]
- adds r3, 0x4
- adds r1, r2, r3
- movs r0, 0x50
- strh r0, [r1]
- adds r0, 0xC8
- adds r1, r2, r0
- subs r0, 0x18
- strh r0, [r1]
- movs r1, 0x8E
- lsls r1, 1
- adds r0, r2, r1
- strh r6, [r0]
- adds r0, r2, 0
- adds r0, 0xC0
- str r6, [r0]
- ldr r0, _0804B90C @ =gMain
- ldr r2, _0804B910 @ =0x0000043c
- adds r0, r2
- movs r1, 0x5
- strb r1, [r0]
- b _0804B9F2
- .align 2, 0
-_0804B8E0: .4byte gUnknown_020297D8
-_0804B8E4: .4byte gSpecialVar_0x8005
-_0804B8E8: .4byte gLinkPlayers + 0x8
-_0804B8EC: .4byte gSaveBlock2
-_0804B8F0: .4byte gEnemyParty
-_0804B8F4: .4byte gUnknown_03004828
-_0804B8F8: .4byte 0x0201f000
-_0804B8FC: .4byte sub_804B210
-_0804B900: .4byte gWindowConfig_81E717C
-_0804B904: .4byte gLinkType
-_0804B908: .4byte 0x00001144
-_0804B90C: .4byte gMain
-_0804B910: .4byte 0x0000043c
-_0804B914:
- movs r0, 0
- movs r1, 0
- bl sub_804B2D0
- ldr r1, _0804B924 @ =gMain
- ldr r3, _0804B928 @ =0x0000043c
- adds r1, r3
- b _0804B9D0
- .align 2, 0
-_0804B924: .4byte gMain
-_0804B928: .4byte 0x0000043c
-_0804B92C:
- movs r0, 0
- movs r1, 0x1
- bl sub_804B2D0
- ldr r1, _0804B93C @ =gMain
- ldr r0, _0804B940 @ =0x0000043c
- adds r1, r0
- b _0804B9D0
- .align 2, 0
-_0804B93C: .4byte gMain
-_0804B940: .4byte 0x0000043c
-_0804B944:
- movs r0, 0x1
- movs r1, 0
- bl sub_804B2D0
- b _0804B9CA
-_0804B94E:
- movs r0, 0x1
- movs r1, 0x1
- bl sub_804B2D0
- ldr r1, _0804B960 @ =gMain
- ldr r3, _0804B964 @ =0x0000043c
- adds r1, r3
- b _0804B9D0
- .align 2, 0
-_0804B960: .4byte gMain
-_0804B964: .4byte 0x0000043c
-_0804B968:
- bl sub_804C164
- ldr r0, _0804B988 @ =gUnknown_0821594C
- bl LoadSpriteSheet
- ldr r0, _0804B98C @ =gUnknown_08215954
- bl LoadSpritePalette
- ldr r1, _0804B990 @ =REG_BG1CNT
- ldr r2, _0804B994 @ =0x00000502
- adds r0, r2, 0
- strh r0, [r1]
- ldr r1, _0804B998 @ =gMain
- ldr r3, _0804B99C @ =0x0000043c
- adds r1, r3
- b _0804B9D0
- .align 2, 0
-_0804B988: .4byte gUnknown_0821594C
-_0804B98C: .4byte gUnknown_08215954
-_0804B990: .4byte REG_BG1CNT
-_0804B994: .4byte 0x00000502
-_0804B998: .4byte gMain
-_0804B99C: .4byte 0x0000043c
-_0804B9A0:
- ldr r0, _0804B9D8 @ =0x0000043c
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804B9AA:
- movs r0, 0x5
- bl sub_804BBE8
- movs r0, 0
- bl sub_804BBE8
- bl sub_804C1A8
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_0804B9CA:
- ldr r1, _0804B9DC @ =gMain
- ldr r2, _0804B9D8 @ =0x0000043c
- adds r1, r2
-_0804B9D0:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804B9F2
- .align 2, 0
-_0804B9D8: .4byte 0x0000043c
-_0804B9DC: .4byte gMain
-_0804B9E0:
- ldr r0, _0804BA10 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804B9F2
- ldr r0, _0804BA14 @ =sub_804BBCC
- bl SetMainCallback2
-_0804B9F2:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804BA10: .4byte gPaletteFade
-_0804BA14: .4byte sub_804BBCC
- thumb_func_end sub_804B790
-
- thumb_func_start sub_804BA18
-sub_804BA18: @ 804BA18
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r1, r0
- ldr r0, _0804BA60 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0804BA5A
- adds r0, r4, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- bl SpeciesToNationalPokedexNum
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x2
- bl GetNationalPokedexFlag
- adds r0, r4, 0
- movs r1, 0x3
- bl GetNationalPokedexFlag
-_0804BA5A:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804BA60: .4byte gPlayerParty
- thumb_func_end sub_804BA18
-
- thumb_func_start sub_804BA64
-sub_804BA64: @ 804BA64
- push {lr}
- bl GetMultiplayerId
- lsls r0, 24
- ldr r2, _0804BA90 @ =gLinkPlayers
- movs r1, 0x80
- lsls r1, 17
- eors r1, r0
- lsrs r1, 24
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x2]
- movs r0, 0x80
- lsls r0, 8
- cmp r1, r0
- bne _0804BA8C
- bl EnableNationalPokedex
-_0804BA8C:
- pop {r0}
- bx r0
- .align 2, 0
-_0804BA90: .4byte gLinkPlayers
- thumb_func_end sub_804BA64
-
- thumb_func_start sub_804BA94
-sub_804BA94: @ 804BA94
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r4, 24
- lsrs r4, 24
- movs r5, 0x64
- mov r1, r9
- muls r1, r5
- ldr r0, _0804BB60 @ =gPlayerParty
- adds r7, r1, r0
- adds r0, r7, 0
- movs r1, 0x40
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r1, r4, 0
- muls r1, r5
- ldr r0, _0804BB64 @ =gEnemyParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x40
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r6, 0xFF
- beq _0804BAE8
- lsls r0, r6, 3
- adds r0, r6
- lsls r0, 2
- ldr r1, _0804BB68 @ =gSaveBlock1 + 0x2B4C
- adds r0, r1
- bl ClearMailStruct
-_0804BAE8:
- ldr r4, _0804BB6C @ =gUnknown_03004828
- ldr r0, [r4]
- adds r0, 0x38
- adds r1, r7, 0
- movs r2, 0x64
- bl memcpy
- adds r0, r7, 0
- adds r1, r5, 0
- movs r2, 0x64
- bl memcpy
- ldr r1, [r4]
- adds r1, 0x38
- adds r0, r5, 0
- movs r2, 0x64
- bl memcpy
- movs r1, 0x46
- mov r0, sp
- strb r1, [r0]
- adds r0, r7, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0804BB28
- adds r0, r7, 0
- movs r1, 0x20
- mov r2, sp
- bl SetMonData
-_0804BB28:
- mov r0, r8
- cmp r0, 0xFF
- beq _0804BB3E
- lsls r1, r0, 3
- add r1, r8
- lsls r1, 2
- ldr r0, _0804BB70 @ =gUnknown_02029700
- adds r1, r0
- adds r0, r7, 0
- bl GiveMailToMon2
-_0804BB3E:
- mov r0, r9
- bl sub_804BA18
- ldr r0, _0804BB74 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804BB50
- bl sub_804BA64
-_0804BB50:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804BB60: .4byte gPlayerParty
-_0804BB64: .4byte gEnemyParty
-_0804BB68: .4byte gSaveBlock1 + 0x2B4C
-_0804BB6C: .4byte gUnknown_03004828
-_0804BB70: .4byte gUnknown_02029700
-_0804BB74: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_804BA94
-
- thumb_func_start sub_804BB78
-sub_804BB78: @ 804BB78
- push {r4,lr}
- ldr r4, _0804BB8C @ =gUnknown_03004828
- ldr r0, [r4]
- adds r0, 0xBD
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0804BB90
- cmp r0, 0x2
- beq _0804BBB6
- b _0804BBC0
- .align 2, 0
-_0804BB8C: .4byte gUnknown_03004828
-_0804BB90:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _0804BBB6
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x9E
- movs r2, 0x14
- bl SendBlock
- ldr r1, [r4]
- adds r1, 0xBD
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804BBB6:
- ldr r0, _0804BBC8 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0xBD
- movs r1, 0
- strb r1, [r0]
-_0804BBC0:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804BBC8: .4byte gUnknown_03004828
- thumb_func_end sub_804BB78
-
- thumb_func_start sub_804BBCC
-sub_804BBCC: @ 804BBCC
- push {lr}
- bl sub_804C29C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_804BBCC
-
- thumb_func_start sub_804BBE8
-sub_804BBE8: @ 804BBE8
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x7
- bls _0804BBF4
- b _0804C0CA
-_0804BBF4:
- lsls r0, 2
- ldr r1, _0804BC00 @ =_0804BC04
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804BC00: .4byte _0804BC04
- .align 2, 0
-_0804BC04:
- .4byte _0804BC24
- .4byte _0804BCC4
- .4byte _0804BD5C
- .4byte _0804BDA4
- .4byte _0804BE48
- .4byte _0804BEF8
- .4byte _0804BFA0
- .4byte _0804C060
-_0804BC24:
- ldr r0, _0804BCA0 @ =gUnknown_0820C9F8
- movs r1, 0x10
- movs r2, 0xA0
- bl LoadPalette
- ldr r3, _0804BCA4 @ =gUnknown_0820CA98
- ldr r4, _0804BCA8 @ =0x06004000
- movs r5, 0x98
- lsls r5, 5
- ldr r1, _0804BCAC @ =0x040000d4
- ldr r6, _0804BCB0 @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_0804BC42:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _0804BC42
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _0804BCB4 @ =gUnknown_0820F798
- ldr r2, _0804BCB8 @ =0x06009000
- ldr r0, _0804BCAC @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804BCB0 @ =0x80000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, _0804BCBC @ =gUnknown_03004828
- ldr r2, [r0]
- movs r0, 0x8A
- lsls r0, 1
- adds r1, r2, r0
- movs r0, 0
- strh r0, [r1]
- movs r3, 0x8B
- lsls r3, 1
- adds r1, r2, r3
- movs r0, 0xB4
- strh r0, [r1]
- movs r1, 0x80
- lsls r1, 19
- movs r4, 0xBA
- lsls r4, 5
- adds r0, r4, 0
- strh r0, [r1]
- adds r1, 0xC
- ldr r2, _0804BCC0 @ =0x00005206
- adds r0, r2, 0
- strh r0, [r1]
- b _0804C0CA
- .align 2, 0
-_0804BCA0: .4byte gUnknown_0820C9F8
-_0804BCA4: .4byte gUnknown_0820CA98
-_0804BCA8: .4byte 0x06004000
-_0804BCAC: .4byte 0x040000d4
-_0804BCB0: .4byte 0x80000800
-_0804BCB4: .4byte gUnknown_0820F798
-_0804BCB8: .4byte 0x06009000
-_0804BCBC: .4byte gUnknown_03004828
-_0804BCC0: .4byte 0x00005206
-_0804BCC4:
- ldr r0, _0804BD3C @ =gUnknown_03004828
- ldr r2, [r0]
- movs r3, 0x89
- lsls r3, 1
- adds r1, r2, r3
- movs r0, 0
- strh r0, [r1]
- movs r4, 0x88
- lsls r4, 1
- adds r0, r2, r4
- movs r1, 0xAE
- lsls r1, 1
- strh r1, [r0]
- ldr r0, _0804BD40 @ =REG_BG1VOFS
- strh r1, [r0]
- ldr r1, _0804BD44 @ =REG_BG1CNT
- ldr r2, _0804BD48 @ =0x00008502
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0804BD4C @ =gUnknown_08210798
- ldr r2, _0804BD50 @ =0x06002800
- movs r3, 0x80
- lsls r3, 5
- adds r1, 0xCA
- str r0, [r1]
- str r2, [r1, 0x4]
- lsrs r0, r3, 1
- movs r2, 0x80
- lsls r2, 24
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r4, [r1, 0x8]
- ldr r4, _0804BD54 @ =gUnknown_0820CA98
- movs r5, 0xC0
- lsls r5, 19
- movs r6, 0x98
- lsls r6, 5
- adds r7, r0, 0
-_0804BD10:
- str r4, [r1]
- str r5, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r4, r3
- adds r5, r3
- subs r6, r3
- cmp r6, r3
- bhi _0804BD10
- str r4, [r1]
- str r5, [r1, 0x4]
- lsrs r0, r6, 1
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r1, 0x80
- lsls r1, 19
- ldr r3, _0804BD58 @ =0x00001241
- adds r0, r3, 0
- strh r0, [r1]
- b _0804C0CA
- .align 2, 0
-_0804BD3C: .4byte gUnknown_03004828
-_0804BD40: .4byte REG_BG1VOFS
-_0804BD44: .4byte REG_BG1CNT
-_0804BD48: .4byte 0x00008502
-_0804BD4C: .4byte gUnknown_08210798
-_0804BD50: .4byte 0x06002800
-_0804BD54: .4byte gUnknown_0820CA98
-_0804BD58: .4byte 0x00001241
-_0804BD5C:
- ldr r0, _0804BD8C @ =gUnknown_03004828
- ldr r2, [r0]
- movs r4, 0x88
- lsls r4, 1
- adds r0, r2, r4
- movs r1, 0
- strh r1, [r0]
- movs r3, 0x89
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- movs r1, 0x80
- lsls r1, 19
- ldr r4, _0804BD90 @ =0x00001241
- adds r0, r4, 0
- strh r0, [r1]
- ldr r1, _0804BD94 @ =gUnknown_08211798
- ldr r2, _0804BD98 @ =0x06002800
- ldr r0, _0804BD9C @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804BDA0 @ =0x80000400
- b _0804C0C6
- .align 2, 0
-_0804BD8C: .4byte gUnknown_03004828
-_0804BD90: .4byte 0x00001241
-_0804BD94: .4byte gUnknown_08211798
-_0804BD98: .4byte 0x06002800
-_0804BD9C: .4byte 0x040000d4
-_0804BDA0: .4byte 0x80000400
-_0804BDA4:
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0x92
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0804BE24 @ =gUnknown_03004828
- ldr r3, [r0]
- movs r4, 0x82
- lsls r4, 1
- adds r1, r3, r4
- movs r2, 0
- movs r0, 0x40
- strh r0, [r1]
- adds r4, 0x2
- adds r1, r3, r4
- strh r0, [r1]
- adds r0, 0xCC
- adds r1, r3, r0
- movs r0, 0x78
- strh r0, [r1]
- adds r4, 0x8
- adds r1, r3, r4
- ldr r0, _0804BE28 @ =0x0000ffba
- strh r0, [r1]
- movs r1, 0x8E
- lsls r1, 1
- adds r0, r3, r1
- strh r2, [r0]
- ldr r3, _0804BE2C @ =gUnknown_0820DD98
- ldr r4, _0804BE30 @ =0x06004000
- movs r5, 0xD0
- lsls r5, 5
- ldr r2, _0804BE34 @ =gUnknown_08211F98
- mov r12, r2
- ldr r1, _0804BE38 @ =0x040000d4
- ldr r6, _0804BE3C @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_0804BDF6:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _0804BDF6
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _0804BE40 @ =0x06009000
- ldr r0, _0804BE38 @ =0x040000d4
- mov r3, r12
- str r3, [r0]
- str r1, [r0, 0x4]
- ldr r1, _0804BE44 @ =0x80000080
- b _0804C0C6
- .align 2, 0
-_0804BE24: .4byte gUnknown_03004828
-_0804BE28: .4byte 0x0000ffba
-_0804BE2C: .4byte gUnknown_0820DD98
-_0804BE30: .4byte 0x06004000
-_0804BE34: .4byte gUnknown_08211F98
-_0804BE38: .4byte 0x040000d4
-_0804BE3C: .4byte 0x80000800
-_0804BE40: .4byte 0x06009000
-_0804BE44: .4byte 0x80000080
-_0804BE48:
- movs r1, 0x80
- lsls r1, 19
- ldr r4, _0804BED0 @ =0x00001441
- adds r0, r4, 0
- strh r0, [r1]
- adds r1, 0xC
- ldr r2, _0804BED4 @ =0x00001287
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, _0804BED8 @ =gUnknown_03004828
- ldr r3, [r0]
- movs r4, 0x82
- lsls r4, 1
- adds r1, r3, r4
- movs r2, 0
- movs r0, 0x40
- strh r0, [r1]
- adds r0, 0xC6
- adds r1, r3, r0
- movs r0, 0x5C
- strh r0, [r1]
- adds r4, 0x14
- adds r1, r3, r4
- movs r0, 0x20
- strh r0, [r1]
- adds r0, 0xFA
- adds r1, r3, r0
- movs r0, 0x80
- lsls r0, 3
- strh r0, [r1]
- movs r1, 0x8E
- lsls r1, 1
- adds r0, r3, r1
- strh r2, [r0]
- ldr r3, _0804BEDC @ =gUnknown_08213738
- ldr r4, _0804BEE0 @ =0x06004000
- movs r5, 0x81
- lsls r5, 6
- ldr r2, _0804BEE4 @ =gUnknown_08215778
- mov r12, r2
- ldr r1, _0804BEE8 @ =0x040000d4
- ldr r6, _0804BEEC @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_0804BEA4:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _0804BEA4
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _0804BEF0 @ =0x06009000
- ldr r0, _0804BEE8 @ =0x040000d4
- mov r3, r12
- str r3, [r0]
- str r1, [r0, 0x4]
- ldr r1, _0804BEF4 @ =0x80000080
- b _0804C0C6
- .align 2, 0
-_0804BED0: .4byte 0x00001441
-_0804BED4: .4byte 0x00001287
-_0804BED8: .4byte gUnknown_03004828
-_0804BEDC: .4byte gUnknown_08213738
-_0804BEE0: .4byte 0x06004000
-_0804BEE4: .4byte gUnknown_08215778
-_0804BEE8: .4byte 0x040000d4
-_0804BEEC: .4byte 0x80000800
-_0804BEF0: .4byte 0x06009000
-_0804BEF4: .4byte 0x80000080
-_0804BEF8:
- ldr r0, _0804BF78 @ =gUnknown_03004828
- ldr r2, [r0]
- movs r4, 0x88
- lsls r4, 1
- adds r0, r2, r4
- movs r1, 0
- strh r1, [r0]
- movs r3, 0x89
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- ldr r1, _0804BF7C @ =REG_BG1CNT
- ldr r4, _0804BF80 @ =0x00000502
- adds r0, r4, 0
- strh r0, [r1]
- ldr r0, _0804BF84 @ =gUnknown_08D00000
- movs r1, 0xC0
- lsls r1, 19
- bl LZDecompressVram
- ldr r0, _0804BF88 @ =gUnknown_08D00524
- ldr r4, _0804BF8C @ =0x02000000
- movs r2, 0x80
- lsls r2, 4
- adds r1, r4, 0
- bl CpuSet
- ldr r0, _0804BF90 @ =gUnknown_08D004E0
- movs r1, 0x70
- movs r2, 0x20
- bl LoadCompressedPalette
- movs r0, 0
- movs r1, 0
- movs r2, 0x2
- bl FillPalette
- movs r0, 0xE0
- lsls r0, 7
- adds r2, r0, 0
- movs r1, 0xA0
- lsls r1, 2
-_0804BF4C:
- ldrh r0, [r4]
- orrs r0, r2
- strh r0, [r4]
- adds r4, 0x2
- subs r1, 0x1
- cmp r1, 0
- bne _0804BF4C
- ldr r1, _0804BF8C @ =0x02000000
- ldr r2, _0804BF94 @ =0x06002800
- ldr r0, _0804BF98 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804BF9C @ =0x80000280
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- movs r0, 0x2
- movs r1, 0xF
- movs r2, 0x1B
- movs r3, 0x12
- bl MenuZeroFillWindowRect
- b _0804C0CA
- .align 2, 0
-_0804BF78: .4byte gUnknown_03004828
-_0804BF7C: .4byte REG_BG1CNT
-_0804BF80: .4byte 0x00000502
-_0804BF84: .4byte gUnknown_08D00000
-_0804BF88: .4byte gUnknown_08D00524
-_0804BF8C: .4byte 0x02000000
-_0804BF90: .4byte gUnknown_08D004E0
-_0804BF94: .4byte 0x06002800
-_0804BF98: .4byte 0x040000d4
-_0804BF9C: .4byte 0x80000280
-_0804BFA0:
- movs r1, 0x80
- lsls r1, 19
- ldr r2, _0804C038 @ =0x00001441
- adds r0, r2, 0
- strh r0, [r1]
- adds r1, 0xC
- ldr r3, _0804C03C @ =0x00001287
- adds r0, r3, 0
- strh r0, [r1]
- ldr r0, _0804C040 @ =gUnknown_03004828
- ldr r3, [r0]
- movs r4, 0x82
- lsls r4, 1
- adds r1, r3, r4
- movs r2, 0
- movs r0, 0x40
- strh r0, [r1]
- adds r0, 0xC6
- adds r1, r3, r0
- movs r0, 0x5C
- strh r0, [r1]
- adds r4, 0x14
- adds r1, r3, r4
- adds r0, 0xA4
- strh r0, [r1]
- adds r0, 0x1A
- adds r1, r3, r0
- movs r0, 0x80
- strh r0, [r1]
- subs r4, 0xC
- adds r1, r3, r4
- movs r0, 0x78
- strh r0, [r1]
- adds r0, 0x96
- adds r1, r3, r0
- movs r0, 0x50
- strh r0, [r1]
- movs r1, 0x8E
- lsls r1, 1
- adds r0, r3, r1
- strh r2, [r0]
- ldr r3, _0804C044 @ =gUnknown_08213738
- ldr r4, _0804C048 @ =0x06004000
- movs r5, 0x81
- lsls r5, 6
- ldr r2, _0804C04C @ =gUnknown_08215778
- mov r12, r2
- ldr r1, _0804C050 @ =0x040000d4
- ldr r6, _0804C054 @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_0804C00A:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _0804C00A
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _0804C058 @ =0x06009000
- ldr r0, _0804C050 @ =0x040000d4
- mov r3, r12
- str r3, [r0]
- str r1, [r0, 0x4]
- ldr r1, _0804C05C @ =0x80000080
- b _0804C0C6
- .align 2, 0
-_0804C038: .4byte 0x00001441
-_0804C03C: .4byte 0x00001287
-_0804C040: .4byte gUnknown_03004828
-_0804C044: .4byte gUnknown_08213738
-_0804C048: .4byte 0x06004000
-_0804C04C: .4byte gUnknown_08215778
-_0804C050: .4byte 0x040000d4
-_0804C054: .4byte 0x80000800
-_0804C058: .4byte 0x06009000
-_0804C05C: .4byte 0x80000080
-_0804C060:
- ldr r0, _0804C0D0 @ =gUnknown_03004828
- ldr r2, [r0]
- movs r4, 0x8A
- lsls r4, 1
- adds r0, r2, r4
- movs r1, 0
- strh r1, [r0]
- movs r3, 0x8B
- lsls r3, 1
- adds r0, r2, r3
- strh r1, [r0]
- ldr r1, _0804C0D4 @ =REG_BG2CNT
- ldr r4, _0804C0D8 @ =0x00005206
- adds r0, r4, 0
- strh r0, [r1]
- ldr r0, _0804C0DC @ =gUnknown_0820C9F8
- movs r1, 0x10
- movs r2, 0xA0
- bl LoadPalette
- ldr r3, _0804C0E0 @ =gUnknown_0820CA98
- ldr r4, _0804C0E4 @ =0x06004000
- movs r5, 0x98
- lsls r5, 5
- ldr r1, _0804C0E8 @ =0x040000d4
- ldr r6, _0804C0EC @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_0804C09C:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _0804C09C
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _0804C0F0 @ =gUnknown_0820F798
- ldr r2, _0804C0F4 @ =0x06009000
- ldr r0, _0804C0E8 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _0804C0EC @ =0x80000800
-_0804C0C6:
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
-_0804C0CA:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804C0D0: .4byte gUnknown_03004828
-_0804C0D4: .4byte REG_BG2CNT
-_0804C0D8: .4byte 0x00005206
-_0804C0DC: .4byte gUnknown_0820C9F8
-_0804C0E0: .4byte gUnknown_0820CA98
-_0804C0E4: .4byte 0x06004000
-_0804C0E8: .4byte 0x040000d4
-_0804C0EC: .4byte 0x80000800
-_0804C0F0: .4byte gUnknown_0820F798
-_0804C0F4: .4byte 0x06009000
- thumb_func_end sub_804BBE8
-
- thumb_func_start sub_804C0F8
-sub_804C0F8: @ 804C0F8
- push {lr}
- lsls r0, 24
- cmp r0, 0
- bne _0804C130
- ldr r0, _0804C128 @ =gUnknown_03004828
- ldr r2, [r0]
- movs r1, 0x88
- lsls r1, 1
- adds r0, r2, r1
- movs r3, 0
- ldrsh r1, [r0, r3]
- ldr r0, _0804C12C @ =0x00000109
- cmp r1, r0
- bgt _0804C15A
- adds r0, 0x5
- adds r1, r2, r0
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r3, 0x8E
- lsls r3, 1
- adds r1, r2, r3
- b _0804C154
- .align 2, 0
-_0804C128: .4byte gUnknown_03004828
-_0804C12C: .4byte 0x00000109
-_0804C130:
- ldr r0, _0804C160 @ =gUnknown_03004828
- ldr r0, [r0]
- mov r12, r0
- movs r2, 0x87
- lsls r2, 1
- add r2, r12
- ldrh r3, [r2]
- movs r0, 0
- ldrsh r1, [r2, r0]
- movs r0, 0x40
- negs r0, r0
- cmp r1, r0
- ble _0804C15A
- subs r0, r3, 0x1
- strh r0, [r2]
- movs r1, 0x8E
- lsls r1, 1
- add r1, r12
-_0804C154:
- ldrh r0, [r1]
- adds r0, 0x40
- strh r0, [r1]
-_0804C15A:
- pop {r0}
- bx r0
- .align 2, 0
-_0804C160: .4byte gUnknown_03004828
- thumb_func_end sub_804C0F8
-
- thumb_func_start sub_804C164
-sub_804C164: @ 804C164
- push {lr}
- ldr r0, _0804C190 @ =gUnknown_082159A4
- bl LoadSpriteSheet
- ldr r0, _0804C194 @ =gUnknown_082159F4
- bl LoadSpriteSheet
- ldr r0, _0804C198 @ =gUnknown_08215A28
- bl LoadSpriteSheet
- ldr r0, _0804C19C @ =gUnknown_08215A78
- bl LoadSpriteSheet
- ldr r0, _0804C1A0 @ =gUnknown_082159AC
- bl LoadSpritePalette
- ldr r0, _0804C1A4 @ =gUnknown_082159B4
- bl LoadSpritePalette
- pop {r0}
- bx r0
- .align 2, 0
-_0804C190: .4byte gUnknown_082159A4
-_0804C194: .4byte gUnknown_082159F4
-_0804C198: .4byte gUnknown_08215A28
-_0804C19C: .4byte gUnknown_08215A78
-_0804C1A0: .4byte gUnknown_082159AC
-_0804C1A4: .4byte gUnknown_082159B4
- thumb_func_end sub_804C164
-
- thumb_func_start sub_804C1A8
-sub_804C1A8: @ 804C1A8
- push {r4,r5,lr}
- sub sp, 0x14
- ldr r0, _0804C21C @ =gUnknown_03004828
- ldr r0, [r0]
- movs r1, 0x8F
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804C23C
- bl GetMultiplayerId
- lsls r0, 24
- ldr r3, _0804C220 @ =gStringVar1
- movs r2, 0x80
- lsls r2, 17
- eors r2, r0
- lsrs r2, 24
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, _0804C224 @ =gLinkPlayers + 0x8
- adds r1, r0
- adds r0, r3, 0
- bl StringCopy
- ldr r5, _0804C228 @ =gUnknown_020297D8
- ldrb r0, [r5, 0x1]
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0x64
- muls r0, r4
- ldr r1, _0804C22C @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r0, _0804C230 @ =gStringVar3
- mov r1, sp
- bl StringCopy10
- ldrb r0, [r5]
- muls r0, r4
- ldr r1, _0804C234 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r0, _0804C238 @ =gStringVar2
- mov r1, sp
- bl StringCopy10
- b _0804C278
- .align 2, 0
-_0804C21C: .4byte gUnknown_03004828
-_0804C220: .4byte gStringVar1
-_0804C224: .4byte gLinkPlayers + 0x8
-_0804C228: .4byte gUnknown_020297D8
-_0804C22C: .4byte gEnemyParty
-_0804C230: .4byte gStringVar3
-_0804C234: .4byte gPlayerParty
-_0804C238: .4byte gStringVar2
-_0804C23C:
- ldr r0, _0804C280 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- lsls r4, r0, 4
- subs r4, r0
- lsls r4, 2
- ldr r0, _0804C284 @ =gIngameTrades
- adds r4, r0
- ldr r0, _0804C288 @ =gStringVar1
- adds r1, r4, 0
- adds r1, 0x2B
- bl StringCopy
- ldr r0, _0804C28C @ =gStringVar3
- adds r1, r4, 0
- bl StringCopy10
- ldr r0, _0804C290 @ =gSpecialVar_0x8005
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0804C294 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r0, _0804C298 @ =gStringVar2
- mov r1, sp
- bl StringCopy10
-_0804C278:
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804C280: .4byte gSpecialVar_0x8004
-_0804C284: .4byte gIngameTrades
-_0804C288: .4byte gStringVar1
-_0804C28C: .4byte gStringVar3
-_0804C290: .4byte gSpecialVar_0x8005
-_0804C294: .4byte gPlayerParty
-_0804C298: .4byte gStringVar2
- thumb_func_end sub_804C1A8
-
- thumb_func_start sub_804C29C
-sub_804C29C: @ 804C29C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- ldr r1, _0804C2C0 @ =gUnknown_03004828
- ldr r0, [r1]
- adds r0, 0xC4
- ldrh r0, [r0]
- adds r6, r1, 0
- cmp r0, 0xC8
- bls _0804C2B6
- bl _0804D570
-_0804C2B6:
- lsls r0, 2
- ldr r1, _0804C2C4 @ =_0804C2C8
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804C2C0: .4byte gUnknown_03004828
-_0804C2C4: .4byte _0804C2C8
- .align 2, 0
-_0804C2C8:
- .4byte _0804C5EC
- .4byte _0804C66C
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804C6C8
- .4byte _0804C704
- .4byte _0804C79C
- .4byte _0804D570
- .4byte _0804C824
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804C848
- .4byte _0804C868
- .4byte _0804C87A
- .4byte _0804C89C
- .4byte _0804C8F4
- .4byte _0804C92C
- .4byte _0804C978
- .4byte _0804C9C8
- .4byte _0804CA1C
- .4byte _0804CAB4
- .4byte _0804CAD8
- .4byte _0804CB24
- .4byte _0804CB70
- .4byte _0804CBCC
- .4byte _0804CC2C
- .4byte _0804CC40
- .4byte _0804CC54
- .4byte _0804CC68
- .4byte _0804CD94
- .4byte _0804CE64
- .4byte _0804CEEC
- .4byte _0804CF68
- .4byte _0804CF78
- .4byte _0804CFA0
- .4byte _0804CFFC
- .4byte _0804D028
- .4byte _0804D054
- .4byte _0804D06A
- .4byte _0804D0D4
- .4byte _0804D570
- .4byte _0804D0FC
- .4byte _0804D13C
- .4byte _0804D182
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D1A4
- .4byte _0804D1C4
- .4byte _0804D1D2
- .4byte _0804D1F4
- .4byte _0804D2A8
- .4byte _0804D2E4
- .4byte _0804D314
- .4byte _0804D3C4
- .4byte _0804D41C
- .4byte _0804D48C
- .4byte _0804D4A0
- .4byte _0804D4A6
- .4byte _0804D4CC
- .4byte _0804D528
- .4byte _0804D54C
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804D570
- .4byte _0804CA54
-_0804C5EC:
- ldr r3, _0804C65C @ =gSprites
- ldr r0, [r6]
- adds r0, 0xB8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r4, [r6]
- adds r2, r4, 0
- adds r2, 0xB8
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldr r1, _0804C660 @ =0x0000ff4c
- strh r1, [r0, 0x24]
- ldrb r0, [r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldr r2, _0804C664 @ =gMonFrontPicCoords
- movs r3, 0x90
- lsls r3, 1
- adds r0, r4, r3
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- strh r0, [r1, 0x26]
- adds r1, r4, 0
- adds r1, 0xC4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- bl GetCurrentMapMusic
- ldr r1, [r6]
- movs r7, 0x92
- lsls r7, 1
- adds r1, r7
- strh r0, [r1]
- ldr r0, _0804C668 @ =0x00000179
- bl PlayBGM
- bl _0804D570
- .align 2, 0
-_0804C65C: .4byte gSprites
-_0804C660: .4byte 0x0000ff4c
-_0804C664: .4byte gMonFrontPicCoords
-_0804C668: .4byte 0x00000179
-_0804C66C:
- ldr r4, [r6]
- movs r0, 0x8B
- lsls r0, 1
- adds r5, r4, r0
- movs r1, 0
- ldrsh r0, [r5, r1]
- cmp r0, 0
- ble _0804C6A0
- ldr r2, _0804C69C @ =gSprites
- adds r0, r4, 0
- adds r0, 0xB8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- adds r1, 0x3
- strh r1, [r0, 0x24]
- ldrh r0, [r5]
- subs r0, 0x3
- strh r0, [r5]
- bl _0804D570
- .align 2, 0
-_0804C69C: .4byte gSprites
-_0804C6A0:
- ldr r2, _0804C6C4 @ =gSprites
- adds r0, r4, 0
- adds r0, 0xB8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x24]
- strh r1, [r5]
- adds r1, r4, 0
- adds r1, 0xC4
- movs r0, 0xA
- strh r0, [r1]
- bl _0804D570
- .align 2, 0
-_0804C6C4: .4byte gSprites
-_0804C6C8:
- ldr r5, _0804C6F8 @ =gStringVar4
- ldr r1, _0804C6FC @ =gTradeText_WillBeSent
- adds r0, r5, 0
- bl StringExpandPlaceholders
- ldr r4, _0804C700 @ =gUnknown_03004828
- ldr r1, [r4]
- adds r0, r1, 0x4
- adds r1, 0x34
- ldrb r2, [r1]
- movs r1, 0xF
- str r1, [sp]
- adds r1, r5, 0
- movs r3, 0x2
- bl sub_8003460
- ldr r1, [r4]
- adds r2, r1, 0
- adds r2, 0xC4
- movs r3, 0
- movs r0, 0xB
- bl _0804D40C
- .align 2, 0
-_0804C6F8: .4byte gStringVar4
-_0804C6FC: .4byte gTradeText_WillBeSent
-_0804C700: .4byte gUnknown_03004828
-_0804C704:
- ldr r2, [r6]
- adds r1, r2, 0
- adds r1, 0xC0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x50
- beq _0804C718
- bl _0804D570
-_0804C718:
- adds r0, r2, 0
- adds r0, 0xB8
- ldrb r0, [r0]
- ldr r2, _0804C78C @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x5]
- lsrs r1, 4
- movs r2, 0x2
- str r2, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r2, 0x14
- str r2, [sp, 0x8]
- ldr r2, _0804C790 @ =0x000fffff
- str r2, [sp, 0xC]
- movs r2, 0x78
- movs r3, 0x20
- bl sub_8047580
- ldr r1, [r6]
- movs r2, 0x81
- lsls r2, 1
- adds r1, r2
- strb r0, [r1]
- ldr r0, [r6]
- adds r2, r0, 0
- adds r2, 0xC4
- ldrh r1, [r2]
- adds r1, 0x1
- strh r1, [r2]
- adds r0, 0x4
- movs r1, 0x13
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x1D
- bl ZeroFillWindowRect
- ldr r4, _0804C794 @ =gStringVar4
- ldr r1, _0804C798 @ =gTradeText_ByeBye
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r1, [r6]
- adds r0, r1, 0x4
- adds r1, 0x34
- ldrb r2, [r1]
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r3, 0x2
- bl sub_8003460
- bl _0804D570
- .align 2, 0
-_0804C78C: .4byte gSprites
-_0804C790: .4byte 0x000fffff
-_0804C794: .4byte gStringVar4
-_0804C798: .4byte gTradeText_ByeBye
-_0804C79C:
- ldr r7, _0804C810 @ =gSprites
- ldr r2, [r6]
- movs r5, 0x81
- lsls r5, 1
- adds r0, r2, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r7, 0
- adds r4, 0x1C
- adds r0, r4
- ldr r1, [r0]
- ldr r0, _0804C814 @ =SpriteCallbackDummy
- cmp r1, r0
- beq _0804C7C0
- bl _0804D570
-_0804C7C0:
- adds r0, r2, 0x4
- bl sub_80035AC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0804C7D2
- bl _0804D570
-_0804C7D2:
- ldr r0, _0804C818 @ =gSpriteTemplate_821595C
- movs r1, 0x78
- movs r2, 0x20
- movs r3, 0
- bl CreateSprite
- ldr r1, [r6]
- ldr r2, _0804C81C @ =0x00000103
- adds r1, r2
- strb r0, [r1]
- ldr r3, [r6]
- adds r2, r3, r2
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _0804C820 @ =sub_804D738
- str r1, [r0]
- adds r3, r5
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r7
- bl DestroySprite
- ldr r1, [r6]
- bl _0804D53C
- .align 2, 0
-_0804C810: .4byte gSprites
-_0804C814: .4byte SpriteCallbackDummy
-_0804C818: .4byte gSpriteTemplate_821595C
-_0804C81C: .4byte 0x00000103
-_0804C820: .4byte sub_804D738
-_0804C824:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0804C844 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0xC4
- movs r1, 0x14
- strh r1, [r0]
- bl _0804D570
- .align 2, 0
-_0804C844: .4byte gUnknown_03004828
-_0804C848:
- ldr r0, _0804C864 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804C858
- bl _0804D570
-_0804C858:
- movs r0, 0x4
- bl sub_804BBE8
- bl _0804D538
- .align 2, 0
-_0804C864: .4byte gPaletteFade
-_0804C868:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0x10
- movs r3, 0
- bl _0804D534
-_0804C87A:
- ldr r0, _0804C898 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804C88A
- bl _0804D570
-_0804C88A:
- ldr r0, [r6]
- adds r0, 0xC4
- movs r1, 0x17
- strh r1, [r0]
- bl _0804D570
- .align 2, 0
-_0804C898: .4byte gPaletteFade
-_0804C89C:
- ldr r4, _0804C8B8 @ =gUnknown_03004828
- ldr r0, [r4]
- movs r3, 0x8D
- lsls r3, 1
- adds r2, r0, r3
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- bls _0804C8BC
- adds r0, r1, 0
- subs r0, 0x34
- strh r0, [r2]
- b _0804C8E0
- .align 2, 0
-_0804C8B8: .4byte gUnknown_03004828
-_0804C8BC:
- movs r0, 0x1
- bl sub_804BBE8
- ldr r3, [r4]
- movs r7, 0x8D
- lsls r7, 1
- adds r1, r3, r7
- movs r2, 0
- movs r0, 0x80
- strh r0, [r1]
- adds r1, r3, 0
- adds r1, 0xC4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- adds r0, r3, 0
- adds r0, 0xC0
- str r2, [r0]
-_0804C8E0:
- ldr r0, _0804C8F0 @ =gUnknown_03004828
- ldr r4, [r0]
- movs r1, 0x8D
- lsls r1, 1
- adds r0, r4, r1
- bl _0804D16E
- .align 2, 0
-_0804C8F0: .4byte gUnknown_03004828
-_0804C8F4:
- ldr r1, [r6]
- adds r1, 0xC0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x14
- bhi _0804C906
- bl _0804D570
-_0804C906:
- movs r0, 0x3
- bl sub_804BBE8
- bl sub_804B128
- ldr r0, _0804C928 @ =gSpriteTemplate_8215A80
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0xBB
- strb r0, [r1]
- ldr r1, [r6]
- bl _0804D53C
- .align 2, 0
-_0804C928: .4byte gSpriteTemplate_8215A80
-_0804C92C:
- ldr r2, _0804C96C @ =gSprites
- ldr r0, [r6]
- adds r0, 0xBB
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- cmp r0, 0
- blt _0804C94C
- bl _0804D570
-_0804C94C:
- adds r0, r1, 0
- bl DestroySprite
- ldr r1, _0804C970 @ =REG_BLDCNT
- movs r3, 0xC8
- lsls r3, 3
- adds r0, r3, 0
- strh r0, [r1]
- adds r1, 0x2
- ldr r7, _0804C974 @ =0x0000040c
- adds r0, r7, 0
- strh r0, [r1]
- ldr r1, [r6]
- bl _0804D53C
- .align 2, 0
-_0804C96C: .4byte gSprites
-_0804C970: .4byte REG_BLDCNT
-_0804C974: .4byte 0x0000040c
-_0804C978:
- ldr r2, [r6]
- movs r3, 0x88
- lsls r3, 1
- adds r0, r2, r3
- ldrh r1, [r0]
- subs r1, 0x1
- strh r1, [r0]
- lsls r1, 16
- movs r0, 0x9E
- lsls r0, 17
- cmp r1, r0
- bne _0804C99A
- adds r1, r2, 0
- adds r1, 0xC4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0804C99A:
- ldr r0, [r6]
- adds r0, r3
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0xA4
- lsls r0, 1
- cmp r1, r0
- beq _0804C9AE
- bl _0804D570
-_0804C9AE:
- ldr r0, _0804C9C4 @ =gSpriteTemplate_8215A30
- movs r1, 0x80
- movs r2, 0x41
- movs r3, 0
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0xBC
- strb r0, [r1]
- bl _0804D570
- .align 2, 0
-_0804C9C4: .4byte gSpriteTemplate_8215A30
-_0804C9C8:
- ldr r0, _0804CA0C @ =gSpriteTemplate_82159BC
- movs r1, 0x80
- movs r2, 0x50
- movs r3, 0x3
- bl CreateSprite
- ldr r4, _0804CA10 @ =gUnknown_03004828
- ldr r1, [r4]
- adds r1, 0xBA
- strb r0, [r1]
- ldr r0, _0804CA14 @ =gSpriteTemplate_82159FC
- movs r1, 0x80
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- adds r1, 0xBB
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0xBB
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804CA18 @ =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r1, [r4]
- bl _0804D53C
- .align 2, 0
-_0804CA0C: .4byte gSpriteTemplate_82159BC
-_0804CA10: .4byte gUnknown_03004828
-_0804CA14: .4byte gSpriteTemplate_82159FC
-_0804CA18: .4byte gSprites
-_0804CA1C:
- ldr r2, [r6]
- movs r3, 0x88
- lsls r3, 1
- adds r1, r2, r3
- ldrh r0, [r1]
- subs r0, 0x2
- strh r0, [r1]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA6
- bne _0804CA3A
- adds r1, r2, 0
- adds r1, 0xC4
- movs r0, 0xC8
- strh r0, [r1]
-_0804CA3A:
- movs r0, 0
- bl sub_804C0F8
- movs r1, 0x80
- lsls r1, 19
- ldr r7, _0804CA50 @ =0x00001641
- adds r0, r7, 0
- strh r0, [r1]
- bl _0804D570
- .align 2, 0
-_0804CA50: .4byte 0x00001641
-_0804CA54:
- ldr r4, _0804CAB0 @ =gSprites
- ldr r2, [r6]
- adds r0, r2, 0
- adds r0, 0xBA
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x22]
- subs r1, 0x2
- strh r1, [r0, 0x22]
- adds r2, 0xBB
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x22]
- subs r1, 0x2
- strh r1, [r0, 0x22]
- movs r0, 0
- bl sub_804C0F8
- ldr r2, [r6]
- adds r0, r2, 0
- adds r0, 0xBA
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r3, 0x22
- ldrsh r1, [r0, r3]
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- blt _0804CAA4
- bl _0804D570
-_0804CAA4:
- adds r1, r2, 0
- adds r1, 0xC4
- movs r0, 0x1D
- strh r0, [r1]
- bl _0804D570
- .align 2, 0
-_0804CAB0: .4byte gSprites
-_0804CAB4:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0804CAD4 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0xC4
- movs r1, 0x1E
- strh r1, [r0]
- bl _0804D570
- .align 2, 0
-_0804CAD4: .4byte gUnknown_03004828
-_0804CAD8:
- ldr r0, _0804CB1C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804CAE8
- bl _0804D570
-_0804CAE8:
- ldr r0, [r6]
- adds r0, 0xBA
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _0804CB20 @ =gSprites
- adds r0, r4
- bl DestroySprite
- ldr r0, [r6]
- adds r0, 0xBB
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- movs r0, 0x2
- bl sub_804BBE8
- ldr r1, [r6]
- bl _0804D53C
- .align 2, 0
-_0804CB1C: .4byte gPaletteFade
-_0804CB20: .4byte gSprites
-_0804CB24:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r5, _0804CB68 @ =gSpriteTemplate_82159FC
- adds r0, r5, 0
- movs r1, 0x6F
- movs r2, 0xAA
- movs r3, 0
- bl CreateSprite
- ldr r4, _0804CB6C @ =gUnknown_03004828
- ldr r1, [r4]
- adds r1, 0xBA
- strb r0, [r1]
- movs r2, 0xA
- negs r2, r2
- adds r0, r5, 0
- movs r1, 0x81
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- adds r1, 0xBB
- strb r0, [r1]
- ldr r1, [r4]
- bl _0804D53C
- .align 2, 0
-_0804CB68: .4byte gSpriteTemplate_82159FC
-_0804CB6C: .4byte gUnknown_03004828
-_0804CB70:
- ldr r0, _0804CBC0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804CB8E
- movs r0, 0x2E
- bl PlaySE
- ldr r0, _0804CBC4 @ =gUnknown_03004828
- ldr r1, [r0]
- adds r1, 0xC4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0804CB8E:
- ldr r3, _0804CBC8 @ =gSprites
- ldr r0, _0804CBC4 @ =gUnknown_03004828
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0xBA
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x26]
- subs r1, 0x3
- strh r1, [r0, 0x26]
- adds r2, 0xBB
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- strh r1, [r0, 0x26]
- bl _0804D570
- .align 2, 0
-_0804CBC0: .4byte gPaletteFade
-_0804CBC4: .4byte gUnknown_03004828
-_0804CBC8: .4byte gSprites
-_0804CBCC:
- ldr r5, _0804CC28 @ =gSprites
- ldr r4, [r6]
- adds r2, r4, 0
- adds r2, 0xBA
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r1, [r0, 0x26]
- subs r1, 0x3
- strh r1, [r0, 0x26]
- adds r6, r4, 0
- adds r6, 0xBB
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- strh r1, [r0, 0x26]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, r0, r5
- movs r7, 0x26
- ldrsh r1, [r3, r7]
- movs r0, 0x5A
- negs r0, r0
- cmp r1, r0
- ble _0804CC12
- bl _0804D570
-_0804CC12:
- movs r2, 0x1
- strh r2, [r3, 0x30]
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x30]
- adds r1, r4, 0
- bl _0804D53C
- .align 2, 0
-_0804CC28: .4byte gSprites
-_0804CC2C:
- ldr r2, _0804CC3C @ =0x0000ffff
- movs r0, 0x1
- movs r1, 0x10
- bl BlendPalettes
- bl _0804D538
- .align 2, 0
-_0804CC3C: .4byte 0x0000ffff
-_0804CC40:
- ldr r2, _0804CC50 @ =0x0000ffff
- movs r0, 0x1
- movs r1, 0
- bl BlendPalettes
- bl _0804D538
- .align 2, 0
-_0804CC50: .4byte 0x0000ffff
-_0804CC54:
- ldr r2, _0804CC64 @ =0x0000ffff
- movs r0, 0x1
- movs r1, 0x10
- bl BlendPalettes
- bl _0804D538
- .align 2, 0
-_0804CC64: .4byte 0x0000ffff
-_0804CC68:
- ldr r5, _0804CCD8 @ =gUnknown_03004828
- ldr r0, [r5]
- movs r1, 0x90
- lsls r1, 1
- adds r0, r1
- ldrh r0, [r0]
- bl sub_8040A3C
- lsls r0, 24
- cmp r0, 0
- bne _0804CCE4
- ldr r4, _0804CCDC @ =gSprites
- ldr r2, [r5]
- adds r2, 0xB8
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x10
- adds r0, r1
- ldr r1, _0804CCE0 @ =gSpriteAffineAnimTable_8215AC0
- str r1, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x1]
- movs r2, 0x3
- orrs r1, r2
- strb r1, [r0, 0x1]
- ldr r0, [r5]
- adds r0, 0xB8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x3
- bl CalcCenterToCornerVec
- ldr r0, [r5]
- adds r0, 0xB8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0
- bl StartSpriteAffineAnim
- b _0804CCFA
- .align 2, 0
-_0804CCD8: .4byte gUnknown_03004828
-_0804CCDC: .4byte gSprites
-_0804CCE0: .4byte gSpriteAffineAnimTable_8215AC0
-_0804CCE4:
- ldr r0, [r5]
- adds r0, 0xB8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804CD88 @ =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAffineAnim
-_0804CCFA:
- ldr r5, _0804CD8C @ =gUnknown_03004828
- ldr r0, [r5]
- adds r0, 0xB9
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _0804CD88 @ =gSprites
- adds r0, r4
- movs r1, 0
- bl StartSpriteAffineAnim
- ldr r2, [r5]
- adds r3, r2, 0
- adds r3, 0xB8
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x3C
- strh r1, [r0, 0x20]
- adds r2, 0xB9
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xB4
- strh r1, [r0, 0x20]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xC0
- strh r1, [r0, 0x22]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _0804CD90 @ =0x0000ffe0
- strh r1, [r0, 0x22]
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, 0xB9
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- ldr r1, [r5]
- bl _0804D53C
- .align 2, 0
-_0804CD88: .4byte gSprites
-_0804CD8C: .4byte gUnknown_03004828
-_0804CD90: .4byte 0x0000ffe0
-_0804CD94:
- ldr r4, _0804CE5C @ =gSprites
- ldr r2, [r6]
- adds r3, r2, 0
- adds r3, 0xB8
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x26]
- subs r1, 0x3
- movs r5, 0
- strh r1, [r0, 0x26]
- adds r2, 0xB9
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- strh r1, [r0, 0x26]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x26]
- adds r0, 0xA3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bhi _0804CDDC
- movs r0, 0x2D
- bl PlaySE
-_0804CDDC:
- ldr r2, [r6]
- adds r3, r2, 0
- adds r3, 0xB8
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r7, 0x26
- ldrsh r1, [r0, r7]
- movs r0, 0xDE
- negs r0, r0
- cmp r1, r0
- blt _0804CDFA
- b _0804D570
-_0804CDFA:
- adds r0, r2, 0
- adds r0, 0xBA
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r5, [r0, 0x30]
- adds r0, r2, 0
- adds r0, 0xBB
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r5, [r0, 0x30]
- adds r1, r2, 0
- adds r1, 0xC4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r0, [r6]
- adds r0, 0xB9
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- ldr r2, _0804CE60 @ =0x0000ffff
- movs r0, 0x1
- movs r1, 0
- bl BlendPalettes
- b _0804D570
- .align 2, 0
-_0804CE5C: .4byte gSprites
-_0804CE60: .4byte 0x0000ffff
-_0804CE64:
- ldr r4, _0804CEE8 @ =gSprites
- ldr r2, [r6]
- adds r3, r2, 0
- adds r3, 0xBA
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x26]
- subs r1, 0x3
- strh r1, [r0, 0x26]
- adds r2, 0xBB
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- strh r1, [r0, 0x26]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r2, 0x26
- ldrsh r1, [r0, r2]
- movs r0, 0xDE
- negs r0, r0
- cmp r1, r0
- ble _0804CEA6
- b _0804D570
-_0804CEA6:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r6]
- adds r2, r1, 0
- adds r2, 0xC4
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- adds r1, 0xBA
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldr r0, [r6]
- adds r0, 0xBB
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- b _0804D570
- .align 2, 0
-_0804CEE8: .4byte gSprites
-_0804CEEC:
- ldr r0, _0804CF58 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804CEFA
- b _0804D570
-_0804CEFA:
- ldr r1, [r6]
- adds r1, 0xC4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x1
- bl sub_804BBE8
- ldr r0, [r6]
- movs r3, 0x88
- lsls r3, 1
- adds r0, r3
- movs r1, 0xA6
- strh r1, [r0]
- ldr r0, _0804CF5C @ =gSpriteTemplate_82159BC
- movs r4, 0x14
- negs r4, r4
- movs r1, 0x80
- adds r2, r4, 0
- movs r3, 0x3
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0xBA
- strb r0, [r1]
- ldr r0, _0804CF60 @ =gSpriteTemplate_82159FC
- movs r1, 0x80
- adds r2, r4, 0
- movs r3, 0
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0xBB
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0xBB
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804CF64 @ =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- b _0804D570
- .align 2, 0
-_0804CF58: .4byte gPaletteFade
-_0804CF5C: .4byte gSpriteTemplate_82159BC
-_0804CF60: .4byte gSpriteTemplate_82159FC
-_0804CF64: .4byte gSprites
-_0804CF68:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0x10
- movs r3, 0
- b _0804D534
-_0804CF78:
- movs r1, 0x80
- lsls r1, 19
- ldr r7, _0804CF98 @ =0x00001641
- adds r0, r7, 0
- strh r0, [r1]
- movs r0, 0x1
- bl sub_804C0F8
- ldr r0, _0804CF9C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804CF96
- b _0804D570
-_0804CF96:
- b _0804D538
- .align 2, 0
-_0804CF98: .4byte 0x00001641
-_0804CF9C: .4byte gPaletteFade
-_0804CFA0:
- movs r0, 0x1
- bl sub_804C0F8
- ldr r2, _0804CFF4 @ =gSprites
- ldr r0, _0804CFF8 @ =gUnknown_03004828
- ldr r3, [r0]
- adds r4, r3, 0
- adds r4, 0xBA
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- strh r1, [r0, 0x26]
- adds r0, r3, 0
- adds r0, 0xBB
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- strh r1, [r0, 0x26]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r2, 0x26
- ldrsh r1, [r0, r2]
- movs r7, 0x22
- ldrsh r0, [r0, r7]
- adds r1, r0
- cmp r1, 0x40
- beq _0804CFEE
- b _0804D570
-_0804CFEE:
- adds r1, r3, 0
- b _0804D53C
- .align 2, 0
-_0804CFF4: .4byte gSprites
-_0804CFF8: .4byte gUnknown_03004828
-_0804CFFC:
- movs r0, 0x1
- bl sub_804C0F8
- ldr r0, _0804D024 @ =gUnknown_03004828
- ldr r1, [r0]
- movs r0, 0x88
- lsls r0, 1
- adds r2, r1, r0
- ldrh r0, [r2]
- adds r0, 0x2
- strh r0, [r2]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x9E
- lsls r3, 1
- cmp r0, r3
- bgt _0804D020
- b _0804D570
-_0804D020:
- strh r3, [r2]
- b _0804D53C
- .align 2, 0
-_0804D024: .4byte gUnknown_03004828
-_0804D028:
- ldr r0, [r6]
- adds r0, 0xBA
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _0804D050 @ =gSprites
- adds r0, r4
- bl DestroySprite
- ldr r0, [r6]
- adds r0, 0xBB
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- b _0804D400
- .align 2, 0
-_0804D050: .4byte gSprites
-_0804D054:
- ldr r2, [r6]
- adds r1, r2, 0
- adds r1, 0xC0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0xA
- beq _0804D066
- b _0804D570
-_0804D066:
- adds r1, 0x4
- b _0804D53E
-_0804D06A:
- ldr r1, [r6]
- movs r4, 0x88
- lsls r4, 1
- adds r2, r1, r4
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0xAE
- lsls r3, 1
- cmp r0, r3
- ble _0804D08E
- strh r3, [r2]
- adds r1, 0xC4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0804D08E:
- ldr r0, [r6]
- adds r0, r4
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0xA4
- lsls r0, 1
- cmp r1, r0
- bne _0804D0B0
- ldr r0, _0804D0C8 @ =gSpriteTemplate_8215A30
- movs r1, 0x80
- movs r2, 0x41
- movs r3, 0
- bl CreateSprite
- ldr r1, [r6]
- adds r1, 0xBC
- strb r0, [r1]
-_0804D0B0:
- ldr r2, _0804D0CC @ =gSprites
- ldr r0, [r6]
- adds r0, 0xBC
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _0804D0D0 @ =sub_804B0E0
- str r1, [r0]
- b _0804D570
- .align 2, 0
-_0804D0C8: .4byte gSpriteTemplate_8215A30
-_0804D0CC: .4byte gSprites
-_0804D0D0: .4byte sub_804B0E0
-_0804D0D4:
- ldr r0, _0804D0F4 @ =gSpriteTemplate_8215A80
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- ldr r2, _0804D0F8 @ =gUnknown_03004828
- ldr r1, [r2]
- adds r1, 0xBB
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0xC4
- movs r1, 0x32
- strh r1, [r0]
- b _0804D570
- .align 2, 0
-_0804D0F4: .4byte gSpriteTemplate_8215A80
-_0804D0F8: .4byte gUnknown_03004828
-_0804D0FC:
- ldr r2, _0804D138 @ =gSprites
- ldr r0, [r6]
- adds r0, 0xBB
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- cmp r0, 0
- blt _0804D11A
- b _0804D570
-_0804D11A:
- adds r0, r1, 0
- bl DestroySprite
- movs r0, 0x6
- bl sub_804BBE8
- ldr r1, [r6]
- adds r1, 0xC4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x9F
- bl PlaySE
- b _0804D570
- .align 2, 0
-_0804D138: .4byte gSprites
-_0804D13C:
- ldr r1, [r6]
- movs r3, 0x8D
- lsls r3, 1
- adds r2, r1, r3
- ldrh r3, [r2]
- ldr r0, _0804D154 @ =0x000003ff
- cmp r3, r0
- bhi _0804D158
- adds r0, r3, 0
- adds r0, 0x34
- strh r0, [r2]
- b _0804D166
- .align 2, 0
-_0804D154: .4byte 0x000003ff
-_0804D158:
- movs r0, 0x80
- lsls r0, 3
- strh r0, [r2]
- adds r1, 0xC4
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0804D166:
- ldr r4, [r6]
- movs r7, 0x8D
- lsls r7, 1
- adds r0, r4, r7
-_0804D16E:
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 8
- bl __divsi3
- movs r2, 0x8C
- lsls r2, 1
- adds r1, r4, r2
- strh r0, [r1]
- b _0804D570
-_0804D182:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0804D1A0 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0xC4
- movs r1, 0x3C
- strh r1, [r0]
- b _0804D570
- .align 2, 0
-_0804D1A0: .4byte gUnknown_03004828
-_0804D1A4:
- ldr r0, _0804D1C0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804D1B2
- b _0804D570
-_0804D1B2:
- movs r0, 0x5
- bl sub_804BBE8
- movs r0, 0x7
- bl sub_804BBE8
- b _0804D538
- .align 2, 0
-_0804D1C0: .4byte gPaletteFade
-_0804D1C4:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- b _0804D534
-_0804D1D2:
- movs r1, 0x80
- lsls r1, 19
- movs r3, 0xA2
- lsls r3, 5
- adds r0, r3, 0
- strh r0, [r1]
- ldr r0, _0804D1F0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804D1EC
- b _0804D570
-_0804D1EC:
- ldr r1, [r6]
- b _0804D53C
- .align 2, 0
-_0804D1F0: .4byte gPaletteFade
-_0804D1F4:
- ldr r0, _0804D290 @ =gSpriteTemplate_821595C
- movs r2, 0x8
- negs r2, r2
- movs r1, 0x78
- movs r3, 0
- bl CreateSprite
- ldr r6, _0804D294 @ =gUnknown_03004828
- ldr r1, [r6]
- ldr r5, _0804D298 @ =0x00000103
- adds r1, r5
- movs r7, 0
- mov r8, r7
- strb r0, [r1]
- ldr r4, _0804D29C @ =gSprites
- ldr r2, [r6]
- adds r2, r5
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x4A
- strh r1, [r0, 0x34]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _0804D2A0 @ =sub_804D80C
- str r1, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldr r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- ldr r2, _0804D2A4 @ =0x0000ffff
- movs r1, 0x10
- bl BlendPalettes
- ldr r1, [r6]
- adds r2, r1, 0
- adds r2, 0xC4
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- adds r1, 0xC0
- mov r0, r8
- str r0, [r1]
- b _0804D570
- .align 2, 0
-_0804D290: .4byte gSpriteTemplate_821595C
-_0804D294: .4byte gUnknown_03004828
-_0804D298: .4byte 0x00000103
-_0804D29C: .4byte gSprites
-_0804D2A0: .4byte sub_804D80C
-_0804D2A4: .4byte 0x0000ffff
-_0804D2A8:
- ldr r2, _0804D2D8 @ =gSprites
- ldr r0, [r6]
- ldr r1, _0804D2DC @ =0x00000103
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- ldr r1, _0804D2E0 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, [r6]
- b _0804D53C
- .align 2, 0
-_0804D2D8: .4byte gSprites
-_0804D2DC: .4byte 0x00000103
-_0804D2E0: .4byte 0x0000ffff
-_0804D2E4:
- ldr r2, _0804D308 @ =gSprites
- ldr r3, [r6]
- ldr r7, _0804D30C @ =0x00000103
- adds r0, r3, r7
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0804D310 @ =SpriteCallbackDummy
- cmp r1, r0
- beq _0804D302
- b _0804D570
-_0804D302:
- adds r1, r3, 0
- b _0804D53C
- .align 2, 0
-_0804D308: .4byte gSprites
-_0804D30C: .4byte 0x00000103
-_0804D310: .4byte SpriteCallbackDummy
-_0804D314:
- ldr r4, _0804D3B4 @ =gSprites
- ldr r0, [r6]
- mov r8, r0
- mov r5, r8
- adds r5, 0xB9
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r3, 0
- movs r1, 0x78
- strh r1, [r0, 0x20]
- ldrb r0, [r5]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldr r2, _0804D3B8 @ =gMonFrontPicCoords
- movs r0, 0x91
- lsls r0, 1
- add r0, r8
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- adds r0, 0x3C
- strh r0, [r1, 0x22]
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r3, [r0, 0x24]
- ldrb r1, [r5]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r3, [r0, 0x26]
- ldrb r0, [r5]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r1, [r1, 0x5]
- lsrs r1, 4
- movs r2, 0x2
- str r2, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r2, 0x14
- str r2, [sp, 0x8]
- ldr r2, _0804D3BC @ =0x000fffff
- str r2, [sp, 0xC]
- movs r2, 0x78
- movs r3, 0x54
- bl CreatePokeballSprite
- ldr r0, [r6]
- ldr r5, _0804D3C0 @ =0x00000103
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldr r0, [r6]
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldr r1, [r6]
- b _0804D53C
- .align 2, 0
-_0804D3B4: .4byte gSprites
-_0804D3B8: .4byte gMonFrontPicCoords
-_0804D3BC: .4byte 0x000fffff
-_0804D3C0: .4byte 0x00000103
-_0804D3C4:
- movs r1, 0x80
- lsls r1, 19
- movs r2, 0xBA
- lsls r2, 5
- adds r0, r2, 0
- strh r0, [r1]
- ldr r0, [r6]
- adds r0, 0x4
- movs r1, 0x13
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x1D
- bl ZeroFillWindowRect
- ldr r4, _0804D414 @ =gStringVar4
- ldr r1, _0804D418 @ =gTradeText_SentOverPoke
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r1, [r6]
- adds r0, r1, 0x4
- adds r1, 0x34
- ldrb r2, [r1]
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r3, 0x2
- bl sub_8003460
-_0804D400:
- ldr r1, [r6]
- adds r2, r1, 0
- adds r2, 0xC4
- ldrh r0, [r2]
- adds r0, 0x1
- movs r3, 0
-_0804D40C:
- strh r0, [r2]
- adds r1, 0xC0
- str r3, [r1]
- b _0804D570
- .align 2, 0
-_0804D414: .4byte gStringVar4
-_0804D418: .4byte gTradeText_SentOverPoke
-_0804D41C:
- ldr r1, [r6]
- adds r1, 0xC0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x4
- bne _0804D430
- ldr r0, _0804D480 @ =0x00000173
- bl PlayFanfare
-_0804D430:
- ldr r2, [r6]
- adds r0, r2, 0
- adds r0, 0xC0
- ldr r0, [r0]
- cmp r0, 0xF0
- beq _0804D43E
- b _0804D570
-_0804D43E:
- adds r1, r2, 0
- adds r1, 0xC4
- ldrh r0, [r1]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r1]
- adds r0, r2, 0x4
- movs r1, 0x13
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x1D
- bl ZeroFillWindowRect
- ldr r4, _0804D484 @ =gStringVar4
- ldr r1, _0804D488 @ =gTradeText_TakeGoodCare
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r1, [r6]
- adds r0, r1, 0x4
- adds r1, 0x34
- ldrb r2, [r1]
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- movs r3, 0x2
- bl sub_8003460
- ldr r0, [r6]
- adds r0, 0xC0
- str r5, [r0]
- b _0804D570
- .align 2, 0
-_0804D480: .4byte 0x00000173
-_0804D484: .4byte gStringVar4
-_0804D488: .4byte gTradeText_TakeGoodCare
-_0804D48C:
- ldr r2, [r6]
- adds r1, r2, 0
- adds r1, 0xC0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bne _0804D570
- adds r1, 0x4
- b _0804D53E
-_0804D4A0:
- bl sub_804E1DC
- b _0804D538
-_0804D4A6:
- ldr r2, [r6]
- movs r3, 0x8F
- lsls r3, 1
- adds r0, r2, r3
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804D4B8
- movs r0, 0x1
- b _0804D572
-_0804D4B8:
- ldr r0, _0804D4C8 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0804D570
- adds r1, r2, 0
- b _0804D53C
- .align 2, 0
-_0804D4C8: .4byte gMain
-_0804D4CC:
- ldr r0, _0804D510 @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- movs r1, 0
- bl sub_804BA94
- ldr r1, _0804D514 @ =gUnknown_03005E94
- ldr r0, _0804D518 @ =sub_804BBCC
- str r0, [r1]
- ldr r7, _0804D51C @ =gUnknown_020297D8
- ldrb r0, [r7]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _0804D520 @ =gPlayerParty
- adds r0, r5
- movs r1, 0x1
- movs r2, 0
- bl GetEvolutionTargetSpecies
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _0804D538
- ldrb r3, [r7]
- adds r0, r3, 0
- muls r0, r6
- adds r0, r5
- ldr r1, _0804D524 @ =gUnknown_03004828
- ldr r1, [r1]
- adds r1, 0xB9
- ldrb r2, [r1]
- adds r1, r4, 0
- bl TradeEvolutionScene
- b _0804D538
- .align 2, 0
-_0804D510: .4byte gSpecialVar_0x8005
-_0804D514: .4byte gUnknown_03005E94
-_0804D518: .4byte sub_804BBCC
-_0804D51C: .4byte gUnknown_020297D8
-_0804D520: .4byte gPlayerParty
-_0804D524: .4byte gUnknown_03004828
-_0804D528:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
-_0804D534:
- bl BeginNormalPaletteFade
-_0804D538:
- ldr r0, _0804D548 @ =gUnknown_03004828
- ldr r1, [r0]
-_0804D53C:
- adds r1, 0xC4
-_0804D53E:
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _0804D570
- .align 2, 0
-_0804D548: .4byte gUnknown_03004828
-_0804D54C:
- ldr r0, _0804D580 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804D570
- ldr r0, [r6]
- movs r7, 0x92
- lsls r7, 1
- adds r0, r7
- ldrh r0, [r0]
- bl PlayBGM
- ldr r0, _0804D584 @ =c2_exit_to_overworld_2_switch
- bl SetMainCallback2
- bl sub_804D8E4
-_0804D570:
- movs r0, 0
-_0804D572:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0804D580: .4byte gPaletteFade
-_0804D584: .4byte c2_exit_to_overworld_2_switch
- thumb_func_end sub_804C29C
-
- thumb_func_start sub_804D588
-sub_804D588: @ 804D588
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _0804D5A0 @ =gMain
- ldr r2, _0804D5A4 @ =0x0000043c
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- beq _0804D5A8
- cmp r0, 0x4
- beq _0804D5B8
- b _0804D614
- .align 2, 0
-_0804D5A0: .4byte gMain
-_0804D5A4: .4byte 0x0000043c
-_0804D5A8:
- movs r0, 0x4
- strb r0, [r1]
- ldr r1, _0804D5B4 @ =gSoftResetDisabled
- movs r0, 0x1
- b _0804D612
- .align 2, 0
-_0804D5B4: .4byte gSoftResetDisabled
-_0804D5B8:
- ldr r0, _0804D5F4 @ =gUnknown_03005E94
- ldr r1, _0804D5F8 @ =sub_804DC88
- mov r8, r1
- str r1, [r0]
- ldr r7, _0804D5FC @ =gUnknown_020297D8
- ldrb r0, [r7]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _0804D600 @ =gPlayerParty
- adds r0, r5
- movs r1, 0x1
- movs r2, 0
- bl GetEvolutionTargetSpecies
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _0804D608
- ldrb r3, [r7]
- adds r0, r3, 0
- muls r0, r6
- adds r0, r5
- ldr r1, _0804D604 @ =gUnknown_03004828
- ldr r1, [r1]
- adds r1, 0xB9
- ldrb r2, [r1]
- adds r1, r4, 0
- bl TradeEvolutionScene
- b _0804D60E
- .align 2, 0
-_0804D5F4: .4byte gUnknown_03005E94
-_0804D5F8: .4byte sub_804DC88
-_0804D5FC: .4byte gUnknown_020297D8
-_0804D600: .4byte gPlayerParty
-_0804D604: .4byte gUnknown_03004828
-_0804D608:
- mov r0, r8
- bl SetMainCallback2
-_0804D60E:
- ldr r1, _0804D638 @ =gUnknown_020297D8
- movs r0, 0xFF
-_0804D612:
- strb r0, [r1]
-_0804D614:
- bl HasLinkErrorOccurred
- lsls r0, 24
- cmp r0, 0
- bne _0804D622
- bl RunTasks
-_0804D622:
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D638: .4byte gUnknown_020297D8
- thumb_func_end sub_804D588
-
- thumb_func_start sub_804D63C
-sub_804D63C: @ 804D63C
- push {r4-r6,lr}
- bl sub_804B2B0
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0x1
- adds r0, r5, 0
- ands r0, r6
- cmp r0, 0
- beq _0804D67A
- ldr r4, _0804D6A8 @ =gBlockRecvBuffer
- ldrh r1, [r4]
- ldr r0, _0804D6AC @ =0x0000dcba
- cmp r1, r0
- bne _0804D664
- ldr r0, _0804D6B0 @ =sub_804D588
- bl SetMainCallback2
-_0804D664:
- ldrh r1, [r4]
- ldr r0, _0804D6B4 @ =0x0000abcd
- cmp r1, r0
- bne _0804D674
- ldr r0, _0804D6B8 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0x9C
- strb r6, [r0]
-_0804D674:
- movs r0, 0
- bl ResetBlockReceivedFlag
-_0804D67A:
- movs r0, 0x2
- ands r0, r5
- cmp r0, 0
- beq _0804D6A2
- ldr r0, _0804D6A8 @ =gBlockRecvBuffer
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _0804D6B4 @ =0x0000abcd
- cmp r1, r0
- bne _0804D69C
- ldr r0, _0804D6B8 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0x9D
- movs r1, 0x1
- strb r1, [r0]
-_0804D69C:
- movs r0, 0x1
- bl ResetBlockReceivedFlag
-_0804D6A2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D6A8: .4byte gBlockRecvBuffer
-_0804D6AC: .4byte 0x0000dcba
-_0804D6B0: .4byte sub_804D588
-_0804D6B4: .4byte 0x0000abcd
-_0804D6B8: .4byte gUnknown_03004828
- thumb_func_end sub_804D63C
-
- thumb_func_start sub_804D6BC
-sub_804D6BC: @ 804D6BC
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- movs r1, 0xA
- bl __divsi3
- ldrh r4, [r5, 0x22]
- adds r4, r0
- strh r4, [r5, 0x22]
- ldrh r0, [r5, 0x30]
- ldrh r2, [r5, 0x38]
- adds r0, r2
- strh r0, [r5, 0x38]
- movs r1, 0x38
- ldrsh r0, [r5, r1]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r5, 0x20]
- lsls r4, 16
- asrs r4, 16
- cmp r4, 0x4C
- ble _0804D70A
- movs r0, 0x4C
- strh r0, [r5, 0x22]
- movs r2, 0x2E
- ldrsh r1, [r5, r2]
- movs r2, 0x32
- ldrsh r0, [r5, r2]
- muls r0, r1
- negs r0, r0
- movs r1, 0x64
- bl __divsi3
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
-_0804D70A:
- movs r1, 0x20
- ldrsh r0, [r5, r1]
- cmp r0, 0x78
- bne _0804D716
- movs r0, 0
- strh r0, [r5, 0x30]
-_0804D716:
- ldrh r0, [r5, 0x36]
- ldrh r2, [r5, 0x2E]
- adds r0, r2
- strh r0, [r5, 0x2E]
- movs r1, 0x34
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bne _0804D72E
- movs r0, 0x1
- strh r0, [r5, 0x3C]
- ldr r0, _0804D734 @ =SpriteCallbackDummy
- str r0, [r5, 0x1C]
-_0804D72E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D734: .4byte SpriteCallbackDummy
- thumb_func_end sub_804D6BC
-
- thumb_func_start sub_804D738
-sub_804D738: @ 804D738
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r1, _0804D7A0 @ =gTradeBallVerticalVelocityTable
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0x16
- bne _0804D760
- movs r0, 0x38
- bl PlaySE
-_0804D760:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2C
- bne _0804D796
- movs r0, 0x8C
- bl PlaySE
- ldr r0, _0804D7A4 @ =sub_804D7AC
- str r0, [r4, 0x1C]
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldrb r1, [r4, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- movs r1, 0x1
- negs r1, r1
- ldr r2, _0804D7A8 @ =0x0000ffff
- str r2, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_0804D796:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D7A0: .4byte gTradeBallVerticalVelocityTable
-_0804D7A4: .4byte sub_804D7AC
-_0804D7A8: .4byte 0x0000ffff
- thumb_func_end sub_804D738
-
- thumb_func_start sub_804D7AC
-sub_804D7AC: @ 804D7AC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x14
- bne _0804D7C0
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_0804D7C0:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _0804D7FE
- ldr r1, _0804D804 @ =gTradeBallVerticalVelocityTable
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- adds r0, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- ldrh r0, [r4, 0x26]
- subs r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x17
- bne _0804D7FE
- adds r0, r4, 0
- bl DestroySprite
- ldr r0, _0804D808 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0xC4
- movs r1, 0xE
- strh r1, [r0]
-_0804D7FE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D804: .4byte gTradeBallVerticalVelocityTable
-_0804D808: .4byte gUnknown_03004828
- thumb_func_end sub_804D7AC
-
- thumb_func_start sub_804D80C
-sub_804D80C: @ 804D80C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x32]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _0804D83C
- ldrh r0, [r4, 0x22]
- adds r0, 0x4
- strh r0, [r4, 0x22]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x34
- ldrsh r1, [r4, r3]
- cmp r0, r1
- ble _0804D88C
- adds r0, r2, 0x1
- strh r0, [r4, 0x32]
- movs r0, 0x16
- strh r0, [r4, 0x2E]
- movs r0, 0x38
- bl PlaySE
- b _0804D88C
-_0804D83C:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x42
- bne _0804D84A
- movs r0, 0x39
- bl PlaySE
-_0804D84A:
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0x5C
- bne _0804D858
- movs r0, 0x3A
- bl PlaySE
-_0804D858:
- movs r3, 0x2E
- ldrsh r0, [r4, r3]
- cmp r0, 0x6B
- bne _0804D866
- movs r0, 0x3B
- bl PlaySE
-_0804D866:
- ldr r1, _0804D894 @ =gTradeBallVerticalVelocityTable
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r3, [r4, 0x26]
- adds r0, r3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6C
- bne _0804D88C
- ldr r0, _0804D898 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_0804D88C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D894: .4byte gTradeBallVerticalVelocityTable
-_0804D898: .4byte SpriteCallbackDummy
- thumb_func_end sub_804D80C
-
- thumb_func_start sub_804D89C
-sub_804D89C: @ 804D89C
- push {r4-r6,lr}
- ldr r0, _0804D8D0 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- lsls r4, r0, 4
- subs r4, r0
- lsls r4, 2
- ldr r0, _0804D8D4 @ =gIngameTrades
- adds r4, r0
- ldr r0, _0804D8D8 @ =gStringVar1
- ldrh r1, [r4, 0x38]
- movs r6, 0xB
- muls r1, r6
- ldr r5, _0804D8DC @ =gSpeciesNames
- adds r1, r5
- bl StringCopy
- ldr r0, _0804D8E0 @ =gStringVar2
- ldrh r1, [r4, 0xC]
- muls r1, r6
- adds r1, r5
- bl StringCopy
- ldrh r0, [r4, 0x38]
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0804D8D0: .4byte gSpecialVar_0x8004
-_0804D8D4: .4byte gIngameTrades
-_0804D8D8: .4byte gStringVar1
-_0804D8DC: .4byte gSpeciesNames
-_0804D8E0: .4byte gStringVar2
- thumb_func_end sub_804D89C
-
- thumb_func_start sub_804D8E4
-sub_804D8E4: @ 804D8E4
- push {r4,lr}
- sub sp, 0x20
- ldr r0, _0804D92C @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- lsls r4, r0, 4
- subs r4, r0
- lsls r4, 2
- ldr r0, _0804D930 @ =gIngameTrades
- adds r4, r0
- ldr r0, _0804D934 @ =gSpecialVar_0x8005
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0804D938 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r0, _0804D93C @ =gStringVar1
- mov r1, sp
- bl StringCopy10
- ldr r0, _0804D940 @ =gStringVar2
- ldrh r2, [r4, 0xC]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _0804D944 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- add sp, 0x20
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D92C: .4byte gSpecialVar_0x8004
-_0804D930: .4byte gIngameTrades
-_0804D934: .4byte gSpecialVar_0x8005
-_0804D938: .4byte gPlayerParty
-_0804D93C: .4byte gStringVar1
-_0804D940: .4byte gStringVar2
-_0804D944: .4byte gSpeciesNames
- thumb_func_end sub_804D8E4
-
- thumb_func_start sub_804D948
-sub_804D948: @ 804D948
- push {r4-r7,lr}
- sub sp, 0x38
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, r1, 4
- subs r2, r1
- lsls r2, 2
- ldr r1, _0804DAA4 @ =gIngameTrades
- adds r5, r2, r1
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0804DAA8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x38
- bl GetMonData
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- add r4, sp, 0x34
- movs r0, 0xFE
- strb r0, [r4]
- ldr r6, _0804DAAC @ =gEnemyParty
- ldrh r1, [r5, 0xC]
- movs r3, 0x1
- str r3, [sp]
- ldr r0, [r5, 0x24]
- str r0, [sp, 0x4]
- str r3, [sp, 0x8]
- ldr r0, [r5, 0x18]
- str r0, [sp, 0xC]
- adds r0, r6, 0
- movs r3, 0x20
- bl CreateMon
- adds r2, r5, 0
- adds r2, 0xE
- adds r0, r6, 0
- movs r1, 0x27
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0xF
- adds r0, r6, 0
- movs r1, 0x28
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x10
- adds r0, r6, 0
- movs r1, 0x29
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x11
- adds r0, r6, 0
- movs r1, 0x2A
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x12
- adds r0, r6, 0
- movs r1, 0x2B
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x13
- adds r0, r6, 0
- movs r1, 0x2C
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x2
- adds r2, r5, 0
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x2B
- adds r0, r6, 0
- movs r1, 0x7
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x36
- adds r0, r6, 0
- movs r1, 0x31
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x14
- adds r0, r6, 0
- movs r1, 0x2E
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x1D
- adds r0, r6, 0
- movs r1, 0x17
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x1E
- adds r0, r6, 0
- movs r1, 0x18
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x1C
- adds r0, r6, 0
- movs r1, 0x16
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x1F
- adds r0, r6, 0
- movs r1, 0x21
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x20
- adds r0, r6, 0
- movs r1, 0x2F
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x37
- adds r0, r6, 0
- movs r1, 0x30
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x23
- adds r2, r4, 0
- bl SetMonData
- mov r4, sp
- adds r4, 0x35
- movs r0, 0
- strb r0, [r4]
- ldrh r0, [r5, 0x28]
- cmp r0, 0
- beq _0804DAC0
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _0804DAB4
- add r0, sp, 0x10
- adds r1, r5, 0
- bl sub_804DAD4
- ldr r0, _0804DAB0 @ =gUnknown_02029700
- add r1, sp, 0x10
- ldm r1!, {r2,r3,r7}
- stm r0!, {r2,r3,r7}
- ldm r1!, {r2,r3,r7}
- stm r0!, {r2,r3,r7}
- ldm r1!, {r2,r3,r7}
- stm r0!, {r2,r3,r7}
- adds r0, r6, 0
- movs r1, 0x40
- adds r2, r4, 0
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x28
- adds r0, r6, 0
- movs r1, 0xC
- bl SetMonData
- b _0804DAC0
- .align 2, 0
-_0804DAA4: .4byte gIngameTrades
-_0804DAA8: .4byte gPlayerParty
-_0804DAAC: .4byte gEnemyParty
-_0804DAB0: .4byte gUnknown_02029700
-_0804DAB4:
- adds r2, r5, 0
- adds r2, 0x28
- adds r0, r6, 0
- movs r1, 0xC
- bl SetMonData
-_0804DAC0:
- ldr r0, _0804DAD0 @ =gEnemyParty
- bl CalculateMonStats
- add sp, 0x38
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804DAD0: .4byte gEnemyParty
- thumb_func_end sub_804D948
-
-.section .text.sub_804DB2C
-
- thumb_func_start sub_804DB2C
-sub_804DB2C: @ 804DB2C
- push {r4-r6,lr}
- ldr r6, _0804DB58 @ =gSpecialVar_0x8005
- ldrh r0, [r6]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _0804DB5C @ =gPlayerParty
- adds r0, r4
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _0804DB60
- ldrh r0, [r6]
- muls r0, r5
- adds r0, r4
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- b _0804DB62
- .align 2, 0
-_0804DB58: .4byte gSpecialVar_0x8005
-_0804DB5C: .4byte gPlayerParty
-_0804DB60:
- movs r0, 0
-_0804DB62:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_804DB2C
-
- thumb_func_start sub_804DB68
-sub_804DB68: @ 804DB68
- push {lr}
- ldr r0, _0804DB7C @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- ldr r1, _0804DB80 @ =gSpecialVar_0x8004
- ldrb r1, [r1]
- bl sub_804D948
- pop {r0}
- bx r0
- .align 2, 0
-_0804DB7C: .4byte gSpecialVar_0x8005
-_0804DB80: .4byte gSpecialVar_0x8004
- thumb_func_end sub_804DB68
-
- thumb_func_start sub_804DB84
-sub_804DB84: @ 804DB84
- push {r4-r6,lr}
- bl sub_804C29C
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- bne _0804DBE6
- ldr r5, _0804DC04 @ =gUnknown_03004828
- ldr r0, [r5]
- adds r0, 0xB8
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _0804DC08 @ =gSprites
- adds r0, r4
- bl DestroySprite
- ldr r0, [r5]
- adds r0, 0xB9
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldr r0, _0804DC0C @ =gUnknown_020297D8
- ldrb r4, [r0]
- ldrb r0, [r0, 0x1]
- movs r1, 0x6
- bl __umodsi3
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_804BA94
- ldr r0, [r5]
- adds r2, r0, 0
- adds r2, 0x9E
- ldr r1, _0804DC10 @ =0x0000abcd
- strh r1, [r2]
- adds r0, 0xBD
- strb r6, [r0]
- ldr r0, _0804DC14 @ =sub_804DC18
- bl SetMainCallback2
-_0804DBE6:
- bl sub_804BB78
- bl sub_804D63C
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804DC04: .4byte gUnknown_03004828
-_0804DC08: .4byte gSprites
-_0804DC0C: .4byte gUnknown_020297D8
-_0804DC10: .4byte 0x0000abcd
-_0804DC14: .4byte sub_804DC18
- thumb_func_end sub_804DB84
-
- thumb_func_start sub_804DC18
-sub_804DC18: @ 804DC18
- push {r4,lr}
- bl sub_804B2B0
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_804D63C
- cmp r4, 0
- bne _0804DC64
- ldr r4, _0804DC7C @ =gUnknown_03004828
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x9C
- ldrh r1, [r0]
- ldr r0, _0804DC80 @ =0x00000101
- cmp r1, r0
- bne _0804DC64
- adds r1, r2, 0
- adds r1, 0x9E
- ldr r0, _0804DC84 @ =0x0000dcba
- strh r0, [r1]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x9E
- movs r2, 0x14
- bl SendBlock
- ldr r0, [r4]
- adds r0, 0x9C
- movs r1, 0x2
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x9D
- strb r1, [r0]
-_0804DC64:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804DC7C: .4byte gUnknown_03004828
-_0804DC80: .4byte 0x00000101
-_0804DC84: .4byte 0x0000dcba
- thumb_func_end sub_804DC18
-
- thumb_func_start sub_804DC88
-sub_804DC88: @ 804DC88
- push {r4,r5,lr}
- sub sp, 0x4
- ldr r1, _0804DCA8 @ =gMain
- ldr r2, _0804DCAC @ =0x0000043c
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x65
- bls _0804DC9C
- b _0804E11A
-_0804DC9C:
- lsls r0, 2
- ldr r1, _0804DCB0 @ =_0804DCB4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804DCA8: .4byte gMain
-_0804DCAC: .4byte 0x0000043c
-_0804DCB0: .4byte _0804DCB4
- .align 2, 0
-_0804DCB4:
- .4byte _0804DE4C
- .4byte _0804DE9C
- .4byte _0804DF14
- .4byte _0804E11A
- .4byte _0804DFE0
- .4byte _0804E078
- .4byte _0804E0A0
- .4byte _0804E0BC
- .4byte _0804E0E4
- .4byte _0804E10C
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E008
- .4byte _0804E034
- .4byte _0804E04C
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804DF54
- .4byte _0804DF7C
- .4byte _0804DF9C
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804E11A
- .4byte _0804DEB4
- .4byte _0804DEF4
-_0804DE4C:
- ldr r5, _0804DE88 @ =gUnknown_03004828
- ldr r0, _0804DE8C @ =0x0201f000
- str r0, [r5]
- ldr r1, _0804DE90 @ =0x0000043c
- adds r2, r1
- ldrb r1, [r2]
- adds r1, 0x1
- strb r1, [r2]
- adds r0, 0x4
- movs r1, 0x13
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x1D
- bl ZeroFillWindowRect
- ldr r4, _0804DE94 @ =gStringVar4
- ldr r1, _0804DE98 @ =gOtherText_LinkStandby2
- adds r0, r4, 0
- bl StringExpandPlaceholders
- ldr r1, [r5]
- adds r0, r1, 0x4
- adds r1, 0x34
- ldrb r2, [r1]
- movs r1, 0xF
- str r1, [sp]
- adds r1, r4, 0
- b _0804DF3E
- .align 2, 0
-_0804DE88: .4byte gUnknown_03004828
-_0804DE8C: .4byte 0x0201f000
-_0804DE90: .4byte 0x0000043c
-_0804DE94: .4byte gStringVar4
-_0804DE98: .4byte gOtherText_LinkStandby2
-_0804DE9C:
- bl sub_80084A4
- ldr r0, _0804DEAC @ =gMain
- ldr r2, _0804DEB0 @ =0x0000043c
- adds r0, r2
- movs r2, 0
- movs r1, 0x64
- b _0804DFEE
- .align 2, 0
-_0804DEAC: .4byte gMain
-_0804DEB0: .4byte 0x0000043c
-_0804DEB4:
- ldr r0, _0804DEE8 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r3, r0, 0
- adds r3, 0xC0
- ldr r0, [r3]
- adds r0, 0x1
- str r0, [r3]
- cmp r0, 0xB4
- bls _0804DED2
- ldr r1, _0804DEEC @ =0x0000043c
- adds r0, r2, r1
- movs r2, 0
- movs r1, 0x65
- strb r1, [r0]
- str r2, [r3]
-_0804DED2:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _0804DEDE
- b _0804E11A
-_0804DEDE:
- ldr r0, _0804DEF0 @ =gMain
- ldr r2, _0804DEEC @ =0x0000043c
- adds r0, r2
- b _0804DF06
- .align 2, 0
-_0804DEE8: .4byte gUnknown_03004828
-_0804DEEC: .4byte 0x0000043c
-_0804DEF0: .4byte gMain
-_0804DEF4:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- bne _0804DF00
- b _0804E11A
-_0804DF00:
- ldr r0, _0804DF0C @ =gMain
- ldr r1, _0804DF10 @ =0x0000043c
- adds r0, r1
-_0804DF06:
- movs r1, 0x2
- strb r1, [r0]
- b _0804E11A
- .align 2, 0
-_0804DF0C: .4byte gMain
-_0804DF10: .4byte 0x0000043c
-_0804DF14:
- ldr r0, _0804DF48 @ =0x0000043c
- adds r1, r2, r0
- movs r0, 0x32
- strb r0, [r1]
- ldr r4, _0804DF4C @ =gUnknown_03004828
- ldr r0, [r4]
- adds r0, 0x4
- movs r1, 0x13
- str r1, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x1D
- bl ZeroFillWindowRect
- ldr r2, [r4]
- adds r0, r2, 0x4
- ldr r1, _0804DF50 @ =gSystemText_Saving
- adds r2, 0x34
- ldrb r2, [r2]
- movs r3, 0xF
- str r3, [sp]
-_0804DF3E:
- movs r3, 0x2
- bl sub_8003460
- b _0804E11A
- .align 2, 0
-_0804DF48: .4byte 0x0000043c
-_0804DF4C: .4byte gUnknown_03004828
-_0804DF50: .4byte gSystemText_Saving
-_0804DF54:
- bl SetSecretBase2Field_9_AndHideBG
- movs r0, 0x15
- bl IncrementGameStat
- bl sub_8125D80
- ldr r1, _0804DF74 @ =gMain
- ldr r2, _0804DF78 @ =0x0000043c
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- b _0804DFF0
- .align 2, 0
-_0804DF74: .4byte gMain
-_0804DF78: .4byte 0x0000043c
-_0804DF7C:
- ldr r0, _0804DF94 @ =gUnknown_03004828
- ldr r1, [r0]
- adds r1, 0xC0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x5
- beq _0804DF8E
- b _0804E11A
-_0804DF8E:
- ldr r0, _0804DF98 @ =0x0000043c
- adds r1, r2, r0
- b _0804E0FA
- .align 2, 0
-_0804DF94: .4byte gUnknown_03004828
-_0804DF98: .4byte 0x0000043c
-_0804DF9C:
- bl sub_8125DA8
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0804DFC0
- bl ClearSecretBase2Field_9_2
- ldr r0, _0804DFB8 @ =gMain
- ldr r1, _0804DFBC @ =0x0000043c
- adds r0, r1
- movs r1, 0x4
- strb r1, [r0]
- b _0804E11A
- .align 2, 0
-_0804DFB8: .4byte gMain
-_0804DFBC: .4byte 0x0000043c
-_0804DFC0:
- ldr r0, _0804DFD4 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0xC0
- str r1, [r0]
- ldr r0, _0804DFD8 @ =gMain
- ldr r2, _0804DFDC @ =0x0000043c
- adds r0, r2
- movs r1, 0x33
- strb r1, [r0]
- b _0804E11A
- .align 2, 0
-_0804DFD4: .4byte gUnknown_03004828
-_0804DFD8: .4byte gMain
-_0804DFDC: .4byte 0x0000043c
-_0804DFE0:
- bl sub_8125DDC
- ldr r0, _0804DFFC @ =gMain
- ldr r1, _0804E000 @ =0x0000043c
- adds r0, r1
- movs r2, 0
- movs r1, 0x28
-_0804DFEE:
- strb r1, [r0]
-_0804DFF0:
- ldr r0, _0804E004 @ =gUnknown_03004828
- ldr r0, [r0]
- adds r0, 0xC0
- str r2, [r0]
- b _0804E11A
- .align 2, 0
-_0804DFFC: .4byte gMain
-_0804E000: .4byte 0x0000043c
-_0804E004: .4byte gUnknown_03004828
-_0804E008:
- ldr r0, _0804E02C @ =gUnknown_03004828
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0xC0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x32
- bhi _0804E01C
- b _0804E11A
-_0804E01C:
- movs r0, 0
- str r0, [r1]
- ldr r0, _0804E030 @ =0x0000043c
- adds r1, r2, r0
- movs r0, 0x29
- strb r0, [r1]
- b _0804E11A
- .align 2, 0
-_0804E02C: .4byte gUnknown_03004828
-_0804E030: .4byte 0x0000043c
-_0804E034:
- bl sub_80084A4
- ldr r0, _0804E044 @ =gMain
- ldr r1, _0804E048 @ =0x0000043c
- adds r0, r1
- movs r1, 0x2A
- strb r1, [r0]
- b _0804E11A
- .align 2, 0
-_0804E044: .4byte gMain
-_0804E048: .4byte 0x0000043c
-_0804E04C:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _0804E11A
- bl sub_8125E04
- ldr r1, _0804E06C @ =gSoftResetDisabled
- movs r0, 0
- strb r0, [r1]
- ldr r0, _0804E070 @ =gMain
- ldr r2, _0804E074 @ =0x0000043c
- adds r0, r2
- movs r1, 0x5
- strb r1, [r0]
- b _0804E11A
- .align 2, 0
-_0804E06C: .4byte gSoftResetDisabled
-_0804E070: .4byte gMain
-_0804E074: .4byte 0x0000043c
-_0804E078:
- ldr r0, _0804E098 @ =gUnknown_03004828
- ldr r1, [r0]
- adds r1, 0xC0
- ldr r0, [r1]
- adds r0, 0x1
- str r0, [r1]
- cmp r0, 0x3C
- bls _0804E11A
- ldr r0, _0804E09C @ =0x0000043c
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_80084A4
- b _0804E11A
- .align 2, 0
-_0804E098: .4byte gUnknown_03004828
-_0804E09C: .4byte 0x0000043c
-_0804E0A0:
- bl sub_8007ECC
- lsls r0, 24
- cmp r0, 0
- beq _0804E11A
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _0804E0F4
-_0804E0BC:
- ldr r0, _0804E0D8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804E11A
- movs r0, 0x3
- bl FadeOutBGM
- ldr r1, _0804E0DC @ =gMain
- ldr r0, _0804E0E0 @ =0x0000043c
- adds r1, r0
- b _0804E0FA
- .align 2, 0
-_0804E0D8: .4byte gPaletteFade
-_0804E0DC: .4byte gMain
-_0804E0E0: .4byte 0x0000043c
-_0804E0E4:
- bl IsBGMStopped
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0804E11A
- bl sub_800832C
-_0804E0F4:
- ldr r1, _0804E104 @ =gMain
- ldr r2, _0804E108 @ =0x0000043c
- adds r1, r2
-_0804E0FA:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804E11A
- .align 2, 0
-_0804E104: .4byte gMain
-_0804E108: .4byte 0x0000043c
-_0804E10C:
- ldr r0, _0804E13C @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804E11A
- ldr r0, _0804E140 @ =sub_804E144
- bl SetMainCallback2
-_0804E11A:
- bl HasLinkErrorOccurred
- lsls r0, 24
- cmp r0, 0
- bne _0804E128
- bl RunTasks
-_0804E128:
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E13C: .4byte gReceivedRemoteLinkPlayers
-_0804E140: .4byte sub_804E144
- thumb_func_end sub_804DC88
-
- thumb_func_start sub_804E144
-sub_804E144: @ 804E144
- push {lr}
- ldr r0, _0804E16C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804E158
- ldr r0, _0804E170 @ =sub_8047CD8
- bl SetMainCallback2
-_0804E158:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- .align 2, 0
-_0804E16C: .4byte gPaletteFade
-_0804E170: .4byte sub_8047CD8
- thumb_func_end sub_804E144
-
- thumb_func_start sub_804E174
-sub_804E174: @ 804E174
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _0804E19C @ =sub_804E1A0
- movs r1, 0xA
- bl CreateTask
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0804E19C: .4byte sub_804E1A0
- thumb_func_end sub_804E174
-
- thumb_func_start sub_804E1A0
-sub_804E1A0: @ 804E1A0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0804E1CC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804E1C4
- ldr r0, _0804E1D0 @ =sub_804B790
- bl SetMainCallback2
- ldr r1, _0804E1D4 @ =gFieldCallback
- ldr r0, _0804E1D8 @ =sub_8080990
- str r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
-_0804E1C4:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E1CC: .4byte gPaletteFade
-_0804E1D0: .4byte sub_804B790
-_0804E1D4: .4byte gFieldCallback
-_0804E1D8: .4byte sub_8080990
- thumb_func_end sub_804E1A0
-
- thumb_func_start sub_804E1DC
-sub_804E1DC: @ 804E1DC
- push {r4,r5,lr}
- movs r5, 0
- movs r4, 0
-_0804E1E2:
- ldr r0, _0804E220 @ =gUnknown_020297D8
- ldrb r0, [r0, 0x1]
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _0804E224 @ =gEnemyParty
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0x43
- bl GetMonData
- adds r0, r5, r0
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xB
- bls _0804E1E2
- cmp r5, 0
- beq _0804E21A
- ldr r0, _0804E228 @ =0x0000083b
- bl FlagSet
-_0804E21A:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E220: .4byte gUnknown_020297D8
-_0804E224: .4byte gEnemyParty
-_0804E228: .4byte 0x0000083b
- thumb_func_end sub_804E1DC
-
- thumb_func_start sub_804E22C
-sub_804E22C: @ 804E22C
- push {r4,lr}
- ldr r0, _0804E26C @ =gUnknown_08D00000
- movs r1, 0xC0
- lsls r1, 19
- bl LZDecompressVram
- ldr r0, _0804E270 @ =gUnknown_08D00524
- ldr r4, _0804E274 @ =0x02000000
- movs r2, 0x80
- lsls r2, 4
- adds r1, r4, 0
- bl CpuSet
- ldr r1, _0804E278 @ =0x06002800
- ldr r0, _0804E27C @ =0x040000d4
- str r4, [r0]
- str r1, [r0, 0x4]
- ldr r1, _0804E280 @ =0x80000280
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r0, _0804E284 @ =gUnknown_08D004E0
- movs r1, 0
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r1, _0804E288 @ =REG_BG1CNT
- ldr r2, _0804E28C @ =0x00000502
- adds r0, r2, 0
- strh r0, [r1]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E26C: .4byte gUnknown_08D00000
-_0804E270: .4byte gUnknown_08D00524
-_0804E274: .4byte 0x02000000
-_0804E278: .4byte 0x06002800
-_0804E27C: .4byte 0x040000d4
-_0804E280: .4byte 0x80000280
-_0804E284: .4byte gUnknown_08D004E0
-_0804E288: .4byte REG_BG1CNT
-_0804E28C: .4byte 0x00000502
- thumb_func_end sub_804E22C
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asmdiff.sh b/asmdiff.sh
new file mode 100644
index 000000000..a4b465b6e
--- /dev/null
+++ b/asmdiff.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+OBJDUMP="$DEVKITARM/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb"
+OPTIONS="--start-address=$(($1)) --stop-address=$(($1 + $2))"
+$OBJDUMP $OPTIONS baserom.gba > baserom.dump
+$OBJDUMP $OPTIONS pokeruby.gba > pokeruby.dump
+diff baserom.dump pokeruby.dump
diff --git a/common_syms/battle_anim.txt b/common_syms/battle/battle_anim.txt
index a93ac9b5d..a93ac9b5d 100644
--- a/common_syms/battle_anim.txt
+++ b/common_syms/battle/battle_anim.txt
diff --git a/common_syms/mori_debug_menu.txt b/common_syms/debug/mori_debug_menu.txt
index 77ab5531c..77ab5531c 100644
--- a/common_syms/mori_debug_menu.txt
+++ b/common_syms/debug/mori_debug_menu.txt
diff --git a/common_syms/sound_check_menu.txt b/common_syms/debug/sound_check_menu.txt
index ba350ad8e..e9e3032e6 100644
--- a/common_syms/sound_check_menu.txt
+++ b/common_syms/debug/sound_check_menu.txt
@@ -1 +1,2 @@
gUnknown_03005D30
+gSoundTestCryNum
diff --git a/common_syms/link.txt b/common_syms/engine/link.txt
index faafda4d0..faafda4d0 100644
--- a/common_syms/link.txt
+++ b/common_syms/engine/link.txt
diff --git a/common_syms/load_save.txt b/common_syms/engine/load_save.txt
index 3b969deca..3b969deca 100644
--- a/common_syms/load_save.txt
+++ b/common_syms/engine/load_save.txt
diff --git a/common_syms/main.txt b/common_syms/engine/main.txt
index a620083d1..a620083d1 100644
--- a/common_syms/main.txt
+++ b/common_syms/engine/main.txt
diff --git a/common_syms/record_mixing.txt b/common_syms/engine/record_mixing.txt
index a6f4f8df3..a6f4f8df3 100644
--- a/common_syms/record_mixing.txt
+++ b/common_syms/engine/record_mixing.txt
diff --git a/common_syms/rng.txt b/common_syms/engine/rng.txt
index 794439ea5..794439ea5 100644
--- a/common_syms/rng.txt
+++ b/common_syms/engine/rng.txt
diff --git a/common_syms/rtc.txt b/common_syms/engine/rtc.txt
index fa00a34d5..fa00a34d5 100644
--- a/common_syms/rtc.txt
+++ b/common_syms/engine/rtc.txt
diff --git a/common_syms/save.txt b/common_syms/engine/save.txt
index d09a52bcf..d09a52bcf 100644
--- a/common_syms/save.txt
+++ b/common_syms/engine/save.txt
diff --git a/common_syms/sound.txt b/common_syms/engine/sound.txt
index 0f6f2fc75..0f6f2fc75 100644
--- a/common_syms/sound.txt
+++ b/common_syms/engine/sound.txt
diff --git a/common_syms/sprite.txt b/common_syms/engine/sprite.txt
index fe38dc61f..fe38dc61f 100644
--- a/common_syms/sprite.txt
+++ b/common_syms/engine/sprite.txt
diff --git a/common_syms/string_util.txt b/common_syms/engine/string_util.txt
index 1ee62aaad..1ee62aaad 100644
--- a/common_syms/string_util.txt
+++ b/common_syms/engine/string_util.txt
diff --git a/common_syms/task.txt b/common_syms/engine/task.txt
index 6601bd11b..6601bd11b 100644
--- a/common_syms/task.txt
+++ b/common_syms/engine/task.txt
diff --git a/common_syms/field_camera.txt b/common_syms/field/field_camera.txt
index 7aad967f8..7aad967f8 100644
--- a/common_syms/field_camera.txt
+++ b/common_syms/field/field_camera.txt
diff --git a/common_syms/field_control_avatar.txt b/common_syms/field/field_control_avatar.txt
index 040a9e6c1..040a9e6c1 100644
--- a/common_syms/field_control_avatar.txt
+++ b/common_syms/field/field_control_avatar.txt
diff --git a/common_syms/field_map_obj.txt b/common_syms/field/field_map_obj.txt
index 32d8b1915..32d8b1915 100644
--- a/common_syms/field_map_obj.txt
+++ b/common_syms/field/field_map_obj.txt
diff --git a/common_syms/fieldmap.txt b/common_syms/field/fieldmap.txt
index 7819b3b40..7819b3b40 100644
--- a/common_syms/fieldmap.txt
+++ b/common_syms/field/fieldmap.txt
diff --git a/common_syms/rom4.txt b/common_syms/field/overworld.txt
index ecdb190b2..ecdb190b2 100644
--- a/common_syms/rom4.txt
+++ b/common_syms/field/overworld.txt
diff --git a/common_syms/start_menu.txt b/common_syms/field/start_menu.txt
index bc0c247d1..bc0c247d1 100644
--- a/common_syms/start_menu.txt
+++ b/common_syms/field/start_menu.txt
diff --git a/common_syms/tv.txt b/common_syms/field/tv.txt
index 829139f8f..829139f8f 100644
--- a/common_syms/tv.txt
+++ b/common_syms/field/tv.txt
diff --git a/common_syms/agb_flash.txt b/common_syms/libs/agb_flash.txt
index cb421ec80..cb421ec80 100644
--- a/common_syms/agb_flash.txt
+++ b/common_syms/libs/agb_flash.txt
diff --git a/common_syms/m4a_2.txt b/common_syms/libs/m4a_2.txt
index a80d8a79d..a80d8a79d 100644
--- a/common_syms/m4a_2.txt
+++ b/common_syms/libs/m4a_2.txt
diff --git a/common_syms/pokemon/pokeblock_feed.txt b/common_syms/pokemon/pokeblock_feed.txt
new file mode 100644
index 000000000..827e6526e
--- /dev/null
+++ b/common_syms/pokemon/pokeblock_feed.txt
@@ -0,0 +1,12 @@
+gPokeblockFeedPokeSprite
+gPokeblockFeedMonSpecies
+gPokeblockMonNotFlipped
+gPokeblockFeedMonSpriteID
+gPokeblockFeedMonNature
+gUnknown_03005F34
+gPokeblockFeedUnused0
+gUnknown_03005F3C
+gUnknown_03005F40
+gPokeblockFeedPokeSpriteCopy
+gUnknown_03005F94
+gUnknown_03005FA0
diff --git a/common_syms/pokedex.txt b/common_syms/pokemon/pokedex.txt
index 18b14f3ed..18b14f3ed 100644
--- a/common_syms/pokedex.txt
+++ b/common_syms/pokemon/pokedex.txt
diff --git a/common_syms/pokemon_1.txt b/common_syms/pokemon/pokemon_1.txt
index c588d53a7..c588d53a7 100644
--- a/common_syms/pokemon_1.txt
+++ b/common_syms/pokemon/pokemon_1.txt
diff --git a/common_syms/pokemon/pokemon_menu.txt b/common_syms/pokemon/pokemon_menu.txt
new file mode 100644
index 000000000..98a1bf53b
--- /dev/null
+++ b/common_syms/pokemon/pokemon_menu.txt
@@ -0,0 +1,2 @@
+gLastFieldPokeMenuOpened
+gUnknown_03005CE4
diff --git a/common_syms/scene/berry_blender.txt b/common_syms/scene/berry_blender.txt
new file mode 100644
index 000000000..524a31411
--- /dev/null
+++ b/common_syms/scene/berry_blender.txt
@@ -0,0 +1,4 @@
+gUnknown_03004830
+gInGameOpponentsNo
+gUnknown_03004840
+gBerryBlenderData
diff --git a/common_syms/contest_painting.txt b/common_syms/scene/contest_painting.txt
index 2e8490348..2e8490348 100644
--- a/common_syms/contest_painting.txt
+++ b/common_syms/scene/contest_painting.txt
diff --git a/common_syms/scene/cute_sketch.txt b/common_syms/scene/cute_sketch.txt
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/common_syms/scene/cute_sketch.txt
diff --git a/common_syms/scene/egg_hatch.txt b/common_syms/scene/egg_hatch.txt
new file mode 100644
index 000000000..891ccc104
--- /dev/null
+++ b/common_syms/scene/egg_hatch.txt
@@ -0,0 +1 @@
+gEggHatchData
diff --git a/common_syms/scene/evolution_scene.txt b/common_syms/scene/evolution_scene.txt
new file mode 100644
index 000000000..137cd3e05
--- /dev/null
+++ b/common_syms/scene/evolution_scene.txt
@@ -0,0 +1 @@
+gCB2_AfterEvolution
diff --git a/common_syms/intro.txt b/common_syms/scene/intro.txt
index d069b1014..d069b1014 100644
--- a/common_syms/intro.txt
+++ b/common_syms/scene/intro.txt
diff --git a/data-de/event_scripts.s b/data-de/event_scripts.s
index 4d809241c..677aa9f21 100644
--- a/data-de/event_scripts.s
+++ b/data-de/event_scripts.s
@@ -386,27 +386,27 @@ gStdScripts_End::
gUnknown_0815F36C:: @ 815F36C
lockall
- playsfx 2
+ playse 2
message UnknownString_81A3A72
- doanimation 61
+ dofieldeffect 61
waitstate
- waittext
+ waitmessage
waitbutton
- playsfx 5
- jump EventScript_15F384
+ playse 5
+ goto EventScript_15F384
end
EventScript_15F384:
message UnknownString_81A3A87
- waittext
+ waitmessage
checkflag 268
- jumpeq EventScript_15F3A0
- jump EventScript_15F3E2
+ goto_if_eq EventScript_15F3A0
+ goto EventScript_15F3E2
end
gUnknown_0815F399:: @ 815F399
lockall
- jump EventScript_15F384
+ goto EventScript_15F384
end
EventScript_15F3A0:
@@ -431,8 +431,8 @@ EventScript_15F3E2:
EventScript_15F419:
msgbox UnknownString_81A38FB, 5
compare RESULT, 0
- jumpeq EventScript_15F384
- closebutton
+ goto_if_eq EventScript_15F384
+ closemessage
special SecretBasePC_PackUp
releaseall
end
@@ -448,18 +448,18 @@ EventScript_15F436:
gUnknown_0815F43A:: @ 815F43A
lockall
message UnknownString_81A3A72
- playsfx 2
- doanimation 61
+ playse 2
+ dofieldeffect 61
waitstate
- waittext
+ waitmessage
waitbutton
- playsfx 5
- jump EventScript_15F452
+ playse 5
+ goto EventScript_15F452
end
EventScript_15F452:
message UnknownString_81A3A87
- waittext
+ waitmessage
multichoice 0, 0, 7, 0
switch RESULT
case 0, EventScript_15F4A1
@@ -471,19 +471,19 @@ EventScript_15F452:
gUnknown_0815F49A:: @ 815F49A
lockall
- jump EventScript_15F452
+ goto EventScript_15F452
end
EventScript_15F4A1:
special sub_80BC56C
compare RESULT, 1
- jumpeq EventScript_15F4E0
+ goto_if_eq EventScript_15F4E0
compare RESULT, 2
- jumpeq EventScript_15F503
+ goto_if_eq EventScript_15F503
special sub_80BC224
msgbox UnknownString_81A3958, 5
compare RESULT, 0
- jumpeq EventScript_15F452
+ goto_if_eq EventScript_15F452
msgbox UnknownString_81A3A22, 3
special sub_80BC5BC
special sub_80C683C
@@ -493,7 +493,7 @@ EventScript_15F4A1:
EventScript_15F4E0:
msgbox UnknownString_81A3982, 5
compare RESULT, 0
- jumpeq EventScript_15F452
+ goto_if_eq EventScript_15F452
msgbox UnknownString_81A3A3A, 3
special sub_80BC5BC
special sub_80C683C
@@ -503,37 +503,37 @@ EventScript_15F4E0:
EventScript_15F503:
msgbox UnknownString_81A39C0, 3
special sub_80C683C
- closebutton
+ closemessage
releaseall
end
EventScript_15F511:
message UnknownString_81A3AA2
- waittext
- jump EventScript_15F452
+ waitmessage
+ goto EventScript_15F452
end
EventScript_15F51D:
special sub_80C683C
- closebutton
+ closemessage
releaseall
end
gUnknown_0815F523:: @ 815F523
- doanimation 52
+ dofieldeffect 52
waitstate
end
gUnknown_0815F528:: @ 815F528
special GetShieldToyTVDecorationInfo
compare RESULT, 0
- jumpeq EventScript_15F558
+ goto_if_eq EventScript_15F558
compare RESULT, 1
- jumpeq EventScript_15F561
+ goto_if_eq EventScript_15F561
compare RESULT, 2
- jumpeq EventScript_15F56A
+ goto_if_eq EventScript_15F56A
compare RESULT, 3
- jumpeq EventScript_15F573
+ goto_if_eq EventScript_15F573
end
EventScript_15F558:
@@ -891,7 +891,7 @@ Std_2:
lock
faceplayer
message 0x0
- waittext
+ waitmessage
waitbutton
release
return
@@ -899,137 +899,137 @@ Std_2:
Std_3:
lockall
message 0x0
- waittext
+ waitmessage
waitbutton
releaseall
return
Std_4:
message 0x0
- waittext
+ waitmessage
waitbutton
return
Std_5:
message 0x0
- waittext
+ waitmessage
yesnobox 20, 8
return
@ 819F805
return
-BattleTower_Lobby_EventScript_19F806:: @ 819F806
-FallarborTown_ContestLobby_EventScript_19F806:: @ 819F806
-LilycoveCity_ContestLobby_EventScript_19F806:: @ 819F806
-MossdeepCity_GameCorner_1F_EventScript_19F806:: @ 819F806
-OldaleTown_PokemonCenter_2F_EventScript_19F806:: @ 819F806
-SecretBase_RedCave1_EventScript_19F806:: @ 819F806
- special InitSaveDialog
+S_DoSaveDialog:: @ 819F806
+S_DoSaveDialog:: @ 819F806
+S_DoSaveDialog:: @ 819F806
+S_DoSaveDialog:: @ 819F806
+S_DoSaveDialog:: @ 819F806
+S_DoSaveDialog:: @ 819F806
+ special ScrSpecial_DoSaveDialog
waitstate
return
gUnknown_0819F80B:: @ 819F80B
lock
special PlayTrainerEncounterMusic
- special sub_80847C8
+ special ScrSpecial_EndTrainerApproach
waitstate
- jump EventScript_19F8F2
+ goto EventScript_19F8F2
gUnknown_0819F818:: @ 819F818
lock
faceplayer
- move LAST_TALKED, Movement_19F8F0
- waitmove 0
- specialval RESULT, sub_8082564
+ applymovement LAST_TALKED, Movement_19F8F0
+ waitmovement 0
+ specialvar RESULT, ScrSpecial_HasTrainerBeenFought
compare RESULT, 0
- jumpif 5, EventScript_19F83F
+ goto_if 5, EventScript_19F83F
special PlayTrainerEncounterMusic
special sub_8082524
- jump EventScript_19F8F2
+ goto EventScript_19F8F2
EventScript_19F83F:
- endtrainerbattle
+ ontrainerbattleend
gUnknown_0819F840:: @ 819F840
lock
faceplayer
call EventScript_19F8E5
- specialval RESULT, sub_8082564
+ specialvar RESULT, ScrSpecial_HasTrainerBeenFought
compare RESULT, 0
- jumpif 5, EventScript_19F877
+ goto_if 5, EventScript_19F877
special CheckForAlivePartyMons
compare RESULT, 0
- jumpif 5, EventScript_19F870
+ goto_if 5, EventScript_19F870
special PlayTrainerEncounterMusic
special sub_8082524
- jump EventScript_19F8F2
+ goto EventScript_19F8F2
EventScript_19F870:
- special sub_8082718
- waittext
+ special ScrSpecial_ShowTrainerNonBattlingSpeech
+ waitmessage
waitbutton
release
end
EventScript_19F877:
- endtrainerbattle
+ ontrainerbattleend
gUnknown_0819F878:: @ 819F878
- move LAST_TALKED, Movement_19F8F0
- waitmove 0
+ applymovement LAST_TALKED, Movement_19F8F0
+ waitmovement 0
special PlayTrainerEncounterMusic
- reptrainerbattle
- endtrainerbattle
+ battlebegin
+ ontrainerbattleend
gUnknown_0819F887:: @ 819F887
call EventScript_19F8E5
- specialval RESULT, sub_8082C9C
+ specialvar RESULT, ScrSpecial_GetTrainerEyeRematchFlag
compare RESULT, 0
- jumpeq EventScript_19F8AD
+ goto_if_eq EventScript_19F8AD
special PlayTrainerEncounterMusic
special sub_8082524
- special sub_80826D8
- waittext
+ special ScrSpecial_ShowTrainerIntroSpeech
+ waitmessage
waitbutton
- special sub_80826B0
+ special ScrSpecial_StartTrainerEyeRematch
waitstate
releaseall
end
EventScript_19F8AD:
- endtrainerbattle
+ ontrainerbattleend
gUnknown_0819F8AE:: @ 819F8AE
- specialval RESULT, sub_8082C9C
+ specialvar RESULT, ScrSpecial_GetTrainerEyeRematchFlag
compare RESULT, 0
- jumpeq EventScript_19F8DD
+ goto_if_eq EventScript_19F8DD
special CheckForAlivePartyMons
compare RESULT, 0
- jumpif 5, EventScript_19F8DE
+ goto_if 5, EventScript_19F8DE
special PlayTrainerEncounterMusic
special sub_8082524
- special sub_80826D8
- waittext
+ special ScrSpecial_ShowTrainerIntroSpeech
+ waitmessage
waitbutton
- special sub_80826B0
+ special ScrSpecial_StartTrainerEyeRematch
waitstate
releaseall
end
EventScript_19F8DD:
- endtrainerbattle
+ ontrainerbattleend
EventScript_19F8DE:
- special sub_8082718
- waittext
+ special ScrSpecial_ShowTrainerNonBattlingSpeech
+ waitmessage
waitbutton
release
end
EventScript_19F8E5:
- move LAST_TALKED, Movement_19F8F0
- waitmove 0
+ applymovement LAST_TALKED, Movement_19F8F0
+ waitmovement 0
return
Movement_19F8F0::
@@ -1037,117 +1037,117 @@ Movement_19F8F0::
step_end
EventScript_19F8F2:
- special sub_80826D8
- waittext
+ special ScrSpecial_ShowTrainerIntroSpeech
+ waitmessage
waitbutton
- reptrainerbattle
- specialval RESULT, sub_8082558
+ battlebegin
+ specialvar RESULT, ScrSpecial_GetTrainerBattleMode
compare RESULT, 0
- jumpeq EventScript_19F934
+ goto_if_eq EventScript_19F934
compare RESULT, 2
- jumpeq EventScript_19F936
+ goto_if_eq EventScript_19F936
compare RESULT, 1
- jumpeq EventScript_19F936
+ goto_if_eq EventScript_19F936
compare RESULT, 6
- jumpeq EventScript_19F936
+ goto_if_eq EventScript_19F936
compare RESULT, 8
- jumpeq EventScript_19F936
+ goto_if_eq EventScript_19F936
EventScript_19F934:
releaseall
end
EventScript_19F936:
- endtrainerbattle2
+ ontrainerbattleendgoto
Std_6::
message 0x0
- waittext
+ waitmessage
waitbutton
release
return
Event_ResetBerryTrees: @ 19F940
- event_8a 2, 7, 5
- event_8a 1, 3, 5
- event_8a 11, 7, 5
- event_8a 13, 3, 5
- event_8a 4, 7, 5
- event_8a 76, 1, 5
- event_8a 8, 1, 5
- event_8a 10, 6, 5
- event_8a 25, 20, 5
- event_8a 26, 2, 5
- event_8a 66, 2, 5
- event_8a 67, 20, 5
- event_8a 69, 22, 5
- event_8a 70, 22, 5
- event_8a 71, 22, 5
- event_8a 55, 17, 5
- event_8a 56, 17, 5
- event_8a 5, 1, 5
- event_8a 6, 6, 5
- event_8a 7, 1, 5
- event_8a 16, 18, 5
- event_8a 17, 18, 5
- event_8a 18, 18, 5
- event_8a 29, 19, 5
- event_8a 28, 19, 5
- event_8a 27, 19, 5
- event_8a 24, 4, 5
- event_8a 23, 3, 5
- event_8a 22, 3, 5
- event_8a 21, 4, 5
- event_8a 19, 16, 5
- event_8a 20, 16, 5
- event_8a 80, 7, 5
- event_8a 81, 7, 5
- event_8a 77, 8, 5
- event_8a 78, 8, 5
- event_8a 68, 8, 5
- event_8a 31, 10, 5
- event_8a 33, 10, 5
- event_8a 34, 21, 5
- event_8a 35, 21, 5
- event_8a 36, 21, 5
- event_8a 83, 24, 5
- event_8a 84, 24, 5
- event_8a 85, 10, 5
- event_8a 86, 6, 5
- event_8a 37, 5, 5
- event_8a 38, 5, 5
- event_8a 39, 5, 5
- event_8a 40, 3, 5
- event_8a 41, 3, 5
- event_8a 42, 3, 5
- event_8a 46, 19, 5
- event_8a 45, 20, 5
- event_8a 44, 18, 5
- event_8a 43, 16, 5
- event_8a 47, 8, 5
- event_8a 48, 5, 5
- event_8a 49, 4, 5
- event_8a 50, 2, 5
- event_8a 52, 18, 5
- event_8a 53, 18, 5
- event_8a 62, 6, 5
- event_8a 64, 6, 5
- event_8a 58, 21, 5
- event_8a 59, 21, 5
- event_8a 60, 25, 5
- event_8a 61, 25, 5
- event_8a 79, 23, 5
- event_8a 14, 23, 5
- event_8a 15, 21, 5
- event_8a 30, 21, 5
- event_8a 65, 25, 5
- event_8a 72, 25, 5
- event_8a 73, 23, 5
- event_8a 74, 23, 5
- event_8a 87, 3, 5
- event_8a 88, 10, 5
- event_8a 89, 4, 5
- event_8a 82, 36, 5
+ plantberrytree 2, 7, 5
+ plantberrytree 1, 3, 5
+ plantberrytree 11, 7, 5
+ plantberrytree 13, 3, 5
+ plantberrytree 4, 7, 5
+ plantberrytree 76, 1, 5
+ plantberrytree 8, 1, 5
+ plantberrytree 10, 6, 5
+ plantberrytree 25, 20, 5
+ plantberrytree 26, 2, 5
+ plantberrytree 66, 2, 5
+ plantberrytree 67, 20, 5
+ plantberrytree 69, 22, 5
+ plantberrytree 70, 22, 5
+ plantberrytree 71, 22, 5
+ plantberrytree 55, 17, 5
+ plantberrytree 56, 17, 5
+ plantberrytree 5, 1, 5
+ plantberrytree 6, 6, 5
+ plantberrytree 7, 1, 5
+ plantberrytree 16, 18, 5
+ plantberrytree 17, 18, 5
+ plantberrytree 18, 18, 5
+ plantberrytree 29, 19, 5
+ plantberrytree 28, 19, 5
+ plantberrytree 27, 19, 5
+ plantberrytree 24, 4, 5
+ plantberrytree 23, 3, 5
+ plantberrytree 22, 3, 5
+ plantberrytree 21, 4, 5
+ plantberrytree 19, 16, 5
+ plantberrytree 20, 16, 5
+ plantberrytree 80, 7, 5
+ plantberrytree 81, 7, 5
+ plantberrytree 77, 8, 5
+ plantberrytree 78, 8, 5
+ plantberrytree 68, 8, 5
+ plantberrytree 31, 10, 5
+ plantberrytree 33, 10, 5
+ plantberrytree 34, 21, 5
+ plantberrytree 35, 21, 5
+ plantberrytree 36, 21, 5
+ plantberrytree 83, 24, 5
+ plantberrytree 84, 24, 5
+ plantberrytree 85, 10, 5
+ plantberrytree 86, 6, 5
+ plantberrytree 37, 5, 5
+ plantberrytree 38, 5, 5
+ plantberrytree 39, 5, 5
+ plantberrytree 40, 3, 5
+ plantberrytree 41, 3, 5
+ plantberrytree 42, 3, 5
+ plantberrytree 46, 19, 5
+ plantberrytree 45, 20, 5
+ plantberrytree 44, 18, 5
+ plantberrytree 43, 16, 5
+ plantberrytree 47, 8, 5
+ plantberrytree 48, 5, 5
+ plantberrytree 49, 4, 5
+ plantberrytree 50, 2, 5
+ plantberrytree 52, 18, 5
+ plantberrytree 53, 18, 5
+ plantberrytree 62, 6, 5
+ plantberrytree 64, 6, 5
+ plantberrytree 58, 21, 5
+ plantberrytree 59, 21, 5
+ plantberrytree 60, 25, 5
+ plantberrytree 61, 25, 5
+ plantberrytree 79, 23, 5
+ plantberrytree 14, 23, 5
+ plantberrytree 15, 21, 5
+ plantberrytree 30, 21, 5
+ plantberrytree 65, 25, 5
+ plantberrytree 72, 25, 5
+ plantberrytree 73, 23, 5
+ plantberrytree 74, 23, 5
+ plantberrytree 87, 3, 5
+ plantberrytree 88, 10, 5
+ plantberrytree 89, 4, 5
+ plantberrytree 82, 36, 5
return
gUnknown_0819FA81:: @ 819FA81
@@ -1298,13 +1298,13 @@ EverGrandeCity_HallOfFame_EventScript_19FC13:: @ 819FC13
clearflag 861
special sub_810FAA0
checkflag 291
- callif 0, EverGrandeCity_HallOfFame_EventScript_19FC62
+ call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC62
checkflag 255
- callif 0, EverGrandeCity_HallOfFame_EventScript_19FC70
+ call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC70
checkflag 298
- callif 0, EverGrandeCity_HallOfFame_EventScript_19FC5A
+ call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC5A
checkflag 123
- callif 0, EverGrandeCity_HallOfFame_EventScript_19FC5E
+ call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC5E
return
EverGrandeCity_HallOfFame_EventScript_19FC5A:: @ 819FC5A
@@ -1325,28 +1325,28 @@ EverGrandeCity_HallOfFame_EventScript_19FC70:: @ 819FC70
setflag 2141
return
-EventScript_LeagueWhiteOut:: @ 819FC74
+S_WhiteOut:: @ 819FC74
call EverGrandeCity_HallOfFame_EventScript_19FD09
call EventScript_19FC84
- jump gUnknown_0819FC9F
+ goto gUnknown_0819FC9F
end
EventScript_19FC84:
checkflag 221
- jumpeq Route101_EventScript_1A14DC
+ goto_if_eq Route101_EventScript_1A14DC
checkflag 1213
- jumpif 0, Route101_EventScript_1A14DC
+ goto_if 0, Route101_EventScript_1A14DC
clearflag 929
setvar 0x4053, 2
return
gUnknown_0819FC9F:: @ 819FC9F
compare 0x4096, 1
- jumpeq EventScript_19FCC1
+ goto_if_eq EventScript_19FCC1
compare 0x4096, 2
- jumpeq EventScript_19FCD7
+ goto_if_eq EventScript_19FCD7
compare 0x4096, 3
- jumpeq EventScript_19FCF0
+ goto_if_eq EventScript_19FCF0
end
EventScript_19FCC1:
@@ -1399,15 +1399,15 @@ RustboroCity_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B
SlateportCity_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B
VerdanturfTown_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B
checkflag 188
- jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_1A14DC
+ goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_1A14DC
checkflag 1217
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_1A14DC
+ goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_1A14DC
checkflag 742
- jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD49
+ goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD49
checkflag 740
- jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD4F
+ goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD4F
checkflag 741
- jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD55
+ goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD55
return
OldaleTown_PokemonCenter_1F_EventScript_19FD49:: @ 819FD49
@@ -1438,54 +1438,54 @@ SootopolisCity_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B
VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B
lock
faceplayer
- msgbox OldaleTown_PokemonCenter_1F_Text_1A0A7D, 5
+ msgbox gText_NurseJoy_Welcome, 5
compare RESULT, 1
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FD7C
+ goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FD7C
compare RESULT, 0
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDC7
+ goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDC7
end
OldaleTown_PokemonCenter_1F_EventScript_19FD7C:: @ 819FD7C
- inccounter GAME_STAT_USED_POKECENTER
- message OldaleTown_PokemonCenter_1F_Text_1A1245
- waittext
- move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F
- waitmove 0
- doanimation 25
- checkanimation 25
- move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845
- waitmove 0
- special HealPlayerParty
+ incrementgamestat GAME_STAT_USED_POKECENTER
+ message gText_NurseJoy_OkayIllTakeYourPokemon
+ waitmessage
+ applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F
+ waitmovement 0
+ dofieldeffect 25
+ waitfieldeffect 25
+ applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845
+ waitmovement 0
+ special ScrSpecial_HealPlayerParty
checkflag 273
- jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE
- jump OldaleTown_PokemonCenter_1F_EventScript_19FDB0
+ goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE
+ goto OldaleTown_PokemonCenter_1F_EventScript_19FDB0
end
OldaleTown_PokemonCenter_1F_EventScript_19FDB0:: @ 819FDB0
- message OldaleTown_PokemonCenter_1F_Text_1A0B14
- waittext
- move 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4
- waitmove 0
- message OldaleTown_PokemonCenter_1F_Text_1A0AFA
- waittext
+ message gText_NurseJoy_ThankYouForWaiting
+ waitmessage
+ applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4
+ waitmovement 0
+ message gText_NurseJoy_WeHopeToSeeYouAgain
+ waitmessage
return
OldaleTown_PokemonCenter_1F_EventScript_19FDC7:: @ 819FDC7
- message OldaleTown_PokemonCenter_1F_Text_1A0AFA
- waittext
+ message gText_NurseJoy_WeHopeToSeeYouAgain
+ waitmessage
return
OldaleTown_PokemonCenter_1F_EventScript_19FDCE:: @ 819FDCE
- specialval RESULT, IsPokerusInParty
+ specialvar RESULT, IsPokerusInParty
compare RESULT, 1
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDEA
+ goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDEA
compare RESULT, 0
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDB0
+ goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDB0
end
OldaleTown_PokemonCenter_1F_EventScript_19FDEA:: @ 819FDEA
- message OldaleTown_PokemonCenter_1F_Text_1A1275
- waittext
+ message gText_NurseJoy_Pokerus
+ waitmessage
setflag 273
return
@@ -1501,13 +1501,13 @@ Std_ObtainItem: @ 819FDF7
return
Std_ObtainItem_: @ 819FE07
- bufferitem 1, 0x8000
+ getitemname 1, 0x8000
checkitemtype 0x8000
call GetItem_HandlePocket
compare 0x8007, 0x1
- callif 1, Std_ObtainItem_Success
+ call_if 1, Std_ObtainItem_Success
compare 0x8007, 0x0
- callif 1, Std_ObtainItem_Fail
+ call_if 1, Std_ObtainItem_Fail
return
GetItem_HandlePocket:
@@ -1520,39 +1520,39 @@ GetItem_HandlePocket:
end
GetItem_HandlePocket_Items:
- bufferstd 2, 0xE
+ getstdstring 2, 0xE
compare 0x8007, 1
- callif 1, PlayGetItemFanfare
+ call_if 1, PlayGetItemFanfare
return
GetItem_HandlePocket_KeyItems:
- bufferstd 2, 0xF
+ getstdstring 2, 0xF
compare 0x8007, 1
- callif 1, PlayGetItemFanfare
+ call_if 1, PlayGetItemFanfare
return
GetItem_HandlePocket_PokeBalls:
- bufferstd 2, 0x10
+ getstdstring 2, 0x10
compare 0x8007, 1
- callif 1, PlayGetItemFanfare
+ call_if 1, PlayGetItemFanfare
return
GetItem_HandlePocket_TMsHMs:
- bufferstd 2, 0x11
+ getstdstring 2, 0x11
compare 0x8007, 1
- callif 1, PlayGetTMHMFanfare
+ call_if 1, PlayGetTMHMFanfare
return
GetItem_HandlePocket_Berries:
- bufferstd 2, 0x12
+ getstdstring 2, 0x12
compare 0x8007, 1
- callif 1, PlayGetItemFanfare
+ call_if 1, PlayGetItemFanfare
return
Std_ObtainItem_Success: @ 819FEB7
message Message_ObtainedItem
waitfanfare
- waittext
+ waitmessage
msgbox Message_PutAwayItem
setvar RESULT, 1
return
@@ -1562,11 +1562,11 @@ Std_ObtainItem_Fail: @ 819FECC
return
PlayGetItemFanfare:
- fanfare 0x172
+ playfanfare 0x172
return
PlayGetTMHMFanfare:
- fanfare 0x174
+ playfanfare 0x174
return
Std_ObtainDecoration: @ 819FEDA
@@ -1576,18 +1576,18 @@ Std_ObtainDecoration: @ 819FEDA
return
Std_ObtainDecoration_: @ 819FEE8
- bufferdecor 1, 0x8000
+ getdecorname 1, 0x8000
compare 0x8007, 1
- callif 1, Std_ObtainDecoration_Success
+ call_if 1, Std_ObtainDecoration_Success
compare 0x8007, 0
- callif 1, Std_ObtainDecoration_Fail
+ call_if 1, Std_ObtainDecoration_Fail
return
Std_ObtainDecoration_Success: @ 819FF03
- fanfare 0x172
+ playfanfare 0x172
message Message_ObtainedDecoration
waitfanfare
- waittext
+ waitmessage
msgbox Message_TransferredToPC
setvar RESULT, 1
return
@@ -1599,24 +1599,24 @@ Std_ObtainDecoration_Fail: @ 819FF1B
Std_FindItem: @ 819FF21
lock
faceplayer
- checksound
+ waitse
additem 0x8000, 0x8001
copyvar 0x8007, RESULT
- bufferitem 1, 0x8000
+ getitemname 1, 0x8000
checkitemtype 0x8000
call GetItem_HandlePocket
compare 0x8007, 1
- callif 1, Std_FindItem_Success
+ call_if 1, Std_FindItem_Success
compare 0x8007, 0
- callif 1, Std_FindItem_Fail
+ call_if 1, Std_FindItem_Fail
release
return
Std_FindItem_Success: @ 819FF52
- disappear LAST_TALKED
+ removeobject LAST_TALKED
message Message_FoundOneItem
waitfanfare
- waittext
+ waitmessage
msgbox Message_PutAwayItem
return
@@ -1628,22 +1628,22 @@ Std_FindItem_Fail: @ 819FF65
HiddenItemScript:: @ 819FF7B
lockall
- checksound
+ waitse
additem 0x8005, 1
copyvar 0x8007, RESULT
- bufferitem 0x1, 0x8005
+ getitemname 0x1, 0x8005
checkitemtype 0x8005
call GetItem_HandlePocket
compare 0x8007, 1
- jumpeq HiddenItemScript_Success
+ goto_if_eq HiddenItemScript_Success
compare 0x8007, 0
- jumpeq HiddenItemScript_Fail
+ goto_if_eq HiddenItemScript_Fail
end
HiddenItemScript_Success:
message Message_FoundOneItem
waitfanfare
- waittext
+ waitmessage
msgbox Message_PutAwayItem
special SetFlagInVar
releaseall
@@ -1661,10 +1661,10 @@ UnusedMixRecordsScript: @ 819FFD5
faceplayer
msgbox UnusedMixRecordsPromptText, 5
compare RESULT, 1
- jumpeq UnusedMixRecordsScript_Yes
+ goto_if_eq UnusedMixRecordsScript_Yes
compare RESULT, 0
- jumpeq UnusedMixRecordsScript_Done
- jump UnusedMixRecordsScript_Done
+ goto_if_eq UnusedMixRecordsScript_Done
+ goto UnusedMixRecordsScript_Done
UnusedMixRecordsScript_Yes: @ 819FFFA
special sub_80B929C
waitstate
@@ -1672,7 +1672,7 @@ UnusedMixRecordsScript_Yes: @ 819FFFA
faceplayer
UnusedMixRecordsScript_Done: @ 81A0000
message UnusedMixRecordsSeeYouAgainText
- waittext
+ waitmessage
waitbutton
release
end
@@ -1681,17 +1681,17 @@ gUnknown_081A0009:: @ 81A0009
lockall
setvar 0x8004, 0
special DoPCTurnOnEffect
- playsfx 4
+ playse 4
msgbox UnknownString_81A09EC, 4
- jump EventScript_1A0023
+ goto EventScript_1A0023
end
EventScript_1A0023:
message gPCText_WhichPCShouldBeAccessed
- waittext
- special TryCreatePCMenu
+ waitmessage
+ special ScrSpecial_CreatePCMenu
waitstate
- jump EventScript_1A0033
+ goto EventScript_1A0033
end
EventScript_1A0033:
@@ -1704,23 +1704,23 @@ EventScript_1A0033:
end
EventScript_1A0070:
- playsfx 2
+ playse 2
msgbox UnknownString_81A0A54, 4
special PlayerPC
waitstate
- jump EventScript_1A0023
+ goto EventScript_1A0023
end
EventScript_1A0085:
- playsfx 2
+ playse 2
checkflag 2123
- callif 0, EventScript_1A00AC
+ call_if 0, EventScript_1A00AC
checkflag 2123
- callif 1, EventScript_1A00B5
+ call_if 1, EventScript_1A00B5
msgbox UnknownString_81A0A35, 4
special ShowPokemonStorageSystem
waitstate
- jump EventScript_1A0023
+ goto EventScript_1A0023
end
EventScript_1A00AC:
@@ -1733,18 +1733,18 @@ EventScript_1A00B5:
EventScript_1A00BE:
setvar 0x8004, 0
- playsfx 3
+ playse 3
special DoPCTurnOffEffect
releaseall
end
EventScript_1A00CB:
checkflag 2052
- jumpif 0, EventScript_1A00BE
- playsfx 2
+ goto_if 0, EventScript_1A00BE
+ playse 2
special AccessHallOfFamePC
waitstate
- jump EventScript_1A0033
+ goto EventScript_1A0033
end
FallarborTown_EventScript_1A00E1:: @ 81A00E1
@@ -1803,7 +1803,7 @@ RustboroCity_Gym_EventScript_1A00FB:: @ 81A00FB
DewfordTown_EventScript_1A0102:: @ 81A0102
DewfordTown_Hall_EventScript_1A0102:: @ 81A0102
- checkdailyflags
+ dodailyevents
setvar 0x8004, 0
special sub_80FA5BC
return
@@ -1816,17 +1816,17 @@ Route109_EventScript_1A010C:: @ 81A010C
return
UseSurfScript:: @ 81A0117
- checkattack MOVE_SURF
+ checkpokemove MOVE_SURF
compare RESULT, 6
- jumpeq UseSurfScript_NoMon
- bufferpartypoke 0, RESULT
- setanimation 0, RESULT
+ goto_if_eq UseSurfScript_NoMon
+ getpartypokename 0, RESULT
+ setfieldeffect 0, RESULT
lockall
msgbox UseSurfPromptText, 5
compare RESULT, 0
- jumpeq UseSurfScript_No
+ goto_if_eq UseSurfScript_No
msgbox UsedSurfText, 4
- doanimation 9
+ dofieldeffect 9
UseSurfScript_No: @ 81A014C
releaseall
UseSurfScript_NoMon: @ 81A014D
@@ -1841,11 +1841,11 @@ Route103_EventScript_1A014E:: @ 81A014E
Route110_EventScript_1A014E:: @ 81A014E
Route119_EventScript_1A014E:: @ 81A014E
RustboroCity_EventScript_1A014E:: @ 81A014E
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq RustboroCity_EventScript_1A0166
+ goto_if_eq RustboroCity_EventScript_1A0166
compare RESULT, 1
- jumpeq RustboroCity_EventScript_1A016C
+ goto_if_eq RustboroCity_EventScript_1A016C
end
RustboroCity_EventScript_1A0166:: @ 81A0166
@@ -1859,11 +1859,11 @@ RustboroCity_EventScript_1A016C:: @ 81A016C
LavaridgeTown_EventScript_1A0172:: @ 81A0172
Route110_EventScript_1A0172:: @ 81A0172
Route119_EventScript_1A0172:: @ 81A0172
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq LavaridgeTown_EventScript_1A018A
+ goto_if_eq LavaridgeTown_EventScript_1A018A
compare RESULT, 1
- jumpeq LavaridgeTown_EventScript_1A0190
+ goto_if_eq LavaridgeTown_EventScript_1A0190
end
LavaridgeTown_EventScript_1A018A:: @ 81A018A
@@ -1945,66 +1945,66 @@ SootopolisCity_Gym_1F_EventScript_1A01C0:: @ 81A01C0
end
DewfordTown_Gym_EventScript_1A021E:: @ 81A021E
- cleartrainerflag OPPONENT_JOSH
- cleartrainerflag OPPONENT_TOMMY
+ settrainerflag OPPONENT_JOSH
+ settrainerflag OPPONENT_TOMMY
return
DewfordTown_Gym_EventScript_1A0225:: @ 81A0225
- cleartrainerflag OPPONENT_HIDEKI
- cleartrainerflag OPPONENT_TESSA
- cleartrainerflag OPPONENT_LAURA
+ settrainerflag OPPONENT_HIDEKI
+ settrainerflag OPPONENT_TESSA
+ settrainerflag OPPONENT_LAURA
return
DewfordTown_Gym_EventScript_1A022F:: @ 81A022F
- cleartrainerflag OPPONENT_KIRK
- cleartrainerflag OPPONENT_SHAWN
- cleartrainerflag OPPONENT_BEN
- cleartrainerflag OPPONENT_VIVIAN
+ settrainerflag OPPONENT_KIRK
+ settrainerflag OPPONENT_SHAWN
+ settrainerflag OPPONENT_BEN
+ settrainerflag OPPONENT_VIVIAN
return
DewfordTown_Gym_EventScript_1A023C:: @ 81A023C
- cleartrainerflag OPPONENT_COLE
- cleartrainerflag OPPONENT_AXLE
- cleartrainerflag OPPONENT_ANDY
- cleartrainerflag OPPONENT_ZANE
- cleartrainerflag OPPONENT_SADIE
+ settrainerflag OPPONENT_COLE
+ settrainerflag OPPONENT_AXLE
+ settrainerflag OPPONENT_ANDY
+ settrainerflag OPPONENT_ZANE
+ settrainerflag OPPONENT_SADIE
return
DewfordTown_Gym_EventScript_1A024C:: @ 81A024C
- cleartrainerflag OPPONENT_RANDALL
- cleartrainerflag OPPONENT_PARKER
- cleartrainerflag OPPONENT_GEORGE
- cleartrainerflag OPPONENT_BERKE
- cleartrainerflag OPPONENT_MARY
- cleartrainerflag OPPONENT_LORI
- cleartrainerflag OPPONENT_JODY
+ settrainerflag OPPONENT_RANDALL
+ settrainerflag OPPONENT_PARKER
+ settrainerflag OPPONENT_GEORGE
+ settrainerflag OPPONENT_BERKE
+ settrainerflag OPPONENT_MARY
+ settrainerflag OPPONENT_LORI
+ settrainerflag OPPONENT_JODY
return
DewfordTown_Gym_EventScript_1A0262:: @ 81A0262
- cleartrainerflag OPPONENT_JARED
- cleartrainerflag OPPONENT_TERRELL
- cleartrainerflag OPPONENT_KYLEE
- cleartrainerflag OPPONENT_WILL
+ settrainerflag OPPONENT_JARED
+ settrainerflag OPPONENT_TERRELL
+ settrainerflag OPPONENT_KYLEE
+ settrainerflag OPPONENT_WILL
return
DewfordTown_Gym_EventScript_1A026F:: @ 81A026F
- cleartrainerflag OPPONENT_PRESTON
- cleartrainerflag OPPONENT_VIRGIL
- cleartrainerflag OPPONENT_FRITZ
- cleartrainerflag OPPONENT_HANNAH
- cleartrainerflag OPPONENT_SAMANTHA
- cleartrainerflag OPPONENT_MAURA
+ settrainerflag OPPONENT_PRESTON
+ settrainerflag OPPONENT_VIRGIL
+ settrainerflag OPPONENT_FRITZ
+ settrainerflag OPPONENT_HANNAH
+ settrainerflag OPPONENT_SAMANTHA
+ settrainerflag OPPONENT_MAURA
return
DewfordTown_Gym_EventScript_1A0282:: @ 81A0282
- cleartrainerflag OPPONENT_ANDREA
- cleartrainerflag OPPONENT_CRISSY
- cleartrainerflag OPPONENT_BRIANNA_2
- cleartrainerflag OPPONENT_CONNIE
- cleartrainerflag OPPONENT_BRIDGET
- cleartrainerflag OPPONENT_OLIVIA
- cleartrainerflag OPPONENT_TIFFANY
- cleartrainerflag OPPONENT_MARISSA
+ settrainerflag OPPONENT_ANDREA
+ settrainerflag OPPONENT_CRISSY
+ settrainerflag OPPONENT_BRIANNA_2
+ settrainerflag OPPONENT_CONNIE
+ settrainerflag OPPONENT_BRIDGET
+ settrainerflag OPPONENT_OLIVIA
+ settrainerflag OPPONENT_TIFFANY
+ settrainerflag OPPONENT_MARISSA
return
DewfordTown_Gym_EventScript_1A029B:: @ 81A029B
@@ -2101,7 +2101,7 @@ MossdeepCity_Gym_EventScript_1A02C5:: @ 81A02C5
PetalburgCity_Gym_EventScript_1A02C5:: @ 81A02C5
RustboroCity_Gym_EventScript_1A02C5:: @ 81A02C5
SootopolisCity_Gym_1F_EventScript_1A02C5:: @ 81A02C5
- fanfare 369
+ playfanfare 369
waitfanfare
return
@@ -2110,9 +2110,9 @@ Route111_OldLadysRestStop_EventScript_1A02CA:: @ 81A02CA
Route119_WeatherInstitute_1F_EventScript_1A02CA:: @ 81A02CA
SSTidalRooms_EventScript_1A02CA:: @ 81A02CA
fadescreen 1
- fanfare 368
+ playfanfare 368
waitfanfare
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
fadescreen 0
return
@@ -2129,37 +2129,37 @@ DewfordTown_EventScript_1A02E7:: @ 81A02E7
Route104_EventScript_1A02E7:: @ 81A02E7
Route109_EventScript_1A02E7:: @ 81A02E7
setflag 0x4001
- playmusic 431, 0
+ playbgm 431, 0
return
DewfordTown_EventScript_1A02EF:: @ 81A02EF
Route104_EventScript_1A02EF:: @ 81A02EF
Route109_EventScript_1A02EF:: @ 81A02EF
clearflag 0x4001
- fadedefault
+ fadedefaultbgm
return
LittlerootTown_ProfessorBirchsLab_EventScript_1A02F4:: @ 81A02F4
Route101_EventScript_1A02F4:: @ 81A02F4
Route103_EventScript_1A02F4:: @ 81A02F4
compare 0x4085, 0
- jumpeq Route101_EventScript_1A14DC
+ goto_if_eq Route101_EventScript_1A14DC
compare 0x4049, 0
- callif 1, Route101_EventScript_1A0358
+ call_if 1, Route101_EventScript_1A0358
compare 0x4049, 1
- callif 1, Route101_EventScript_1A0358
+ call_if 1, Route101_EventScript_1A0358
compare 0x4049, 2
- callif 1, Route101_EventScript_1A0365
+ call_if 1, Route101_EventScript_1A0365
compare 0x4049, 3
- callif 1, Route101_EventScript_1A0365
+ call_if 1, Route101_EventScript_1A0365
compare 0x4049, 4
- callif 1, Route101_EventScript_1A0372
+ call_if 1, Route101_EventScript_1A0372
compare 0x4049, 5
- callif 1, Route101_EventScript_1A0372
+ call_if 1, Route101_EventScript_1A0372
compare 0x4049, 6
- callif 1, Route101_EventScript_1A0358
+ call_if 1, Route101_EventScript_1A0358
compare 0x4049, 7
- callif 1, Route101_EventScript_1A0358
+ call_if 1, Route101_EventScript_1A0358
return
Route101_EventScript_1A0358:: @ 81A0358
@@ -2190,7 +2190,7 @@ Route103_EventScript_1A037F:: @ 81A037F
faceplayer
msgbox Route101_Text_1C4449, 5
compare RESULT, 0
- jumpeq Route101_EventScript_1A039B
+ goto_if_eq Route101_EventScript_1A039B
call Route101_EventScript_1A03B0
release
end
@@ -2203,38 +2203,38 @@ Route101_EventScript_1A039B:: @ 81A039B
Route101_EventScript_1A03A5:: @ 81A03A5
copyvar 0x8004, 0x8009
special ShowPokedexRatingMessage
- waittext
+ waitmessage
waitbutton
return
EverGrandeCity_ChampionsRoom_EventScript_1A03B0:: @ 81A03B0
Route101_EventScript_1A03B0:: @ 81A03B0
setvar 0x8004, 0
- specialval RESULT, ScriptGetPokedexInfo
+ specialvar RESULT, ScriptGetPokedexInfo
copyvar 0x8008, 0x8005
copyvar 0x8009, 0x8006
copyvar 0x800a, RESULT
- buffernum 0, 0x8008
- buffernum 1, 0x8009
+ getnumberstring 0, 0x8008
+ getnumberstring 1, 0x8009
msgbox Route101_Text_1C44DC, 4
call Route101_EventScript_1A03A5
compare 0x800a, 0
- jumpeq Route101_EventScript_1A14DC
+ goto_if_eq Route101_EventScript_1A14DC
setvar 0x8004, 1
- specialval RESULT, ScriptGetPokedexInfo
+ specialvar RESULT, ScriptGetPokedexInfo
copyvar 0x8008, 0x8005
copyvar 0x8009, 0x8006
- buffernum 0, 0x8008
- buffernum 1, 0x8009
+ getnumberstring 0, 0x8008
+ getnumberstring 1, 0x8009
msgbox Route101_Text_1C4B05, 4
return
BattleTower_Outside_EventScript_1A040E:: @ 81A040E
LilycoveCity_Harbor_EventScript_1A040E:: @ 81A040E
SlateportCity_Harbor_EventScript_1A040E:: @ 81A040E
- pause 60
- move 0x8004, SlateportCity_Harbor_Movement_1A041C
- waitmove 0
+ delay 60
+ applymovement 0x8004, SlateportCity_Harbor_Movement_1A041C
+ waitmovement 0
return
SlateportCity_Harbor_Movement_1A041C:: @ 81A041C
@@ -2260,8 +2260,8 @@ PetalburgCity_Gym_EventScript_1A0424:: @ 81A0424
return
RusturfTunnel_EventScript_1A0442:: @ 81A0442
- disappear 1
- disappear 10
+ removeobject 1
+ removeobject 10
clearflag 808
clearflag 984
setvar 0x409a, 6
@@ -2269,14 +2269,14 @@ RusturfTunnel_EventScript_1A0442:: @ 81A0442
return
EventScript_1A0457: @ unreferenced?
- pause 30
- move 255, SlateportCity_OceanicMuseum_2F_Movement_1A0841
- waitmove 0
- spritevisible 255, 0, 0
- pause 30
- move 255, Movement_1A047A
- waitmove 0
- pause 30
+ delay 30
+ applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_1A0841
+ waitmovement 0
+ showobject 255, 0, 0
+ delay 30
+ applymovement 255, Movement_1A047A
+ waitmovement 0
+ delay 30
return
Movement_1A047A:
@@ -2286,18 +2286,18 @@ Movement_1A047A:
BattleTower_Outside_EventScript_1A047C:: @ 81A047C
SouthernIsland_Exterior_EventScript_1A047C:: @ 81A047C
compare FACING, 1
- callif 1, BattleTower_Outside_EventScript_160B2F
+ call_if 1, BattleTower_Outside_EventScript_160B2F
compare FACING, 3
- callif 1, BattleTower_Outside_EventScript_160B3A
- pause 30
- spriteinvisible 255, 0, 0
+ call_if 1, BattleTower_Outside_EventScript_160B3A
+ delay 30
+ hideobject 255, 0, 0
call BattleTower_Outside_EventScript_1A040E
return
CaveOfOrigin_B4F_EventScript_1A04A0:: @ 81A04A0
lockall
- checksound
- pokecry SPECIES_GROUDON_OR_KYOGRE, 2
+ waitse
+ playpokecry SPECIES_GROUDON_OR_KYOGRE, 2
waitpokecry
setvar 0x4005, 1
releaseall
@@ -2309,20 +2309,20 @@ CaveOfOrigin_B2F_EventScript_1A04AF:: @ 81A04AF
CaveOfOrigin_B3F_EventScript_1A04AF:: @ 81A04AF
lockall
setvar 0x4001, 1
- jump CaveOfOrigin_1F_EventScript_1A04D3
+ goto CaveOfOrigin_1F_EventScript_1A04D3
end
CaveOfOrigin_B2F_EventScript_1A04BB:: @ 81A04BB
CaveOfOrigin_B3F_EventScript_1A04BB:: @ 81A04BB
lockall
setvar 0x4002, 1
- jump CaveOfOrigin_B2F_EventScript_1A04D3
+ goto CaveOfOrigin_B2F_EventScript_1A04D3
end
@ 81A04C7
lockall
setvar 0x4003, 1
- jump CaveOfOrigin_B2F_EventScript_1A04D3
+ goto CaveOfOrigin_B2F_EventScript_1A04D3
end
CaveOfOrigin_1F_EventScript_1A04D3:: @ 81A04D3
@@ -2351,9 +2351,9 @@ MagmaHideout_B1F_EventScript_1A04FD:: @ 81A04FD
lock
faceplayer
setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE
- checksound
- pokecry SPECIES_ELECTRODE, 2
- pause 40
+ waitse
+ playpokecry SPECIES_ELECTRODE, 2
+ delay 40
waitpokecry
setflag 977
setflag 2145
@@ -2367,9 +2367,9 @@ MagmaHideout_B1F_EventScript_1A051B:: @ 81A051B
lock
faceplayer
setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE
- checksound
- pokecry SPECIES_ELECTRODE, 2
- pause 40
+ waitse
+ playpokecry SPECIES_ELECTRODE, 2
+ delay 40
waitpokecry
setflag 978
setflag 2145
@@ -2382,56 +2382,56 @@ Route120_EventScript_1A0539:: @ 81A0539
lock
faceplayer
setvar 0x8004, 1
- jump Route120_EventScript_1A0594
+ goto Route120_EventScript_1A0594
end
Route120_EventScript_1A0546:: @ 81A0546
lock
faceplayer
setvar 0x8004, 2
- jump Route120_EventScript_1A0594
+ goto Route120_EventScript_1A0594
end
Route120_EventScript_1A0553:: @ 81A0553
lock
faceplayer
setvar 0x8004, 3
- jump Route120_EventScript_1A0594
+ goto Route120_EventScript_1A0594
end
Route120_EventScript_1A0560:: @ 81A0560
lock
faceplayer
setvar 0x8004, 4
- jump Route120_EventScript_1A0594
+ goto Route120_EventScript_1A0594
end
Route120_EventScript_1A056D:: @ 81A056D
lock
faceplayer
setvar 0x8004, 5
- jump Route120_EventScript_1A0594
+ goto Route120_EventScript_1A0594
end
Route119_EventScript_1A057A:: @ 81A057A
lock
faceplayer
setvar 0x8004, 6
- jump Route119_EventScript_1A0594
+ goto Route119_EventScript_1A0594
end
Route119_EventScript_1A0587:: @ 81A0587
lock
faceplayer
setvar 0x8004, 7
- jump Route119_EventScript_1A0594
+ goto Route119_EventScript_1A0594
end
Route119_EventScript_1A0594:: @ 81A0594
Route120_EventScript_1A0594:: @ 81A0594
checkitem ITEM_DEVON_SCOPE, 1
compare RESULT, 1
- jumpeq Route119_EventScript_1A05AE
+ goto_if_eq Route119_EventScript_1A05AE
msgbox Route119_Text_171B93, 4
release
end
@@ -2439,36 +2439,36 @@ Route120_EventScript_1A0594:: @ 81A0594
Route119_EventScript_1A05AE:: @ 81A05AE
msgbox Route119_Text_171BB6, 5
compare RESULT, 1
- jumpeq Route119_EventScript_1A05C3
+ goto_if_eq Route119_EventScript_1A05C3
release
end
Route119_EventScript_1A05C3:: @ 81A05C3
msgbox Route119_Text_171BF6, 4
- closebutton
- move LAST_TALKED, Route119_Movement_1A0839
- waitmove 0
- move LAST_TALKED, Route119_Movement_1A0662
- waitmove 0
- checksound
- pokecry SPECIES_KECLEON, 2
- pause 40
+ closemessage
+ applymovement LAST_TALKED, Route119_Movement_1A0839
+ waitmovement 0
+ applymovement LAST_TALKED, Route119_Movement_1A0662
+ waitmovement 0
+ waitse
+ playpokecry SPECIES_KECLEON, 2
+ delay 40
waitpokecry
setwildbattle SPECIES_KECLEON, 30, ITEM_NONE
compare 0x8004, 1
- callif 1, Route119_EventScript_1A0646
+ call_if 1, Route119_EventScript_1A0646
compare 0x8004, 2
- callif 1, Route119_EventScript_1A064A
+ call_if 1, Route119_EventScript_1A064A
compare 0x8004, 3
- callif 1, Route119_EventScript_1A064E
+ call_if 1, Route119_EventScript_1A064E
compare 0x8004, 4
- callif 1, Route119_EventScript_1A0652
+ call_if 1, Route119_EventScript_1A0652
compare 0x8004, 5
- callif 1, Route119_EventScript_1A0656
+ call_if 1, Route119_EventScript_1A0656
compare 0x8004, 6
- callif 1, Route119_EventScript_1A065A
+ call_if 1, Route119_EventScript_1A065A
compare 0x8004, 7
- callif 1, Route119_EventScript_1A065E
+ call_if 1, Route119_EventScript_1A065E
setflag 2145
dowildbattle
clearflag 2145
@@ -2542,10 +2542,10 @@ FallarborTown_House1_EventScript_1A067F:: @ 81A067F
GraniteCave_StevensRoom_EventScript_1A067F:: @ 81A067F
MtPyre_Summit_EventScript_1A067F:: @ 81A067F
SlateportCity_OceanicMuseum_2F_EventScript_1A067F:: @ 81A067F
- bufferitem 0, 0x8004
- fanfare 372
+ getitemname 0, 0x8004
+ playfanfare 372
message FallarborTown_House1_Text_1A1498
- waittext
+ waitmessage
waitfanfare
removeitem 0x8004, 1
return
@@ -2554,9 +2554,9 @@ EverGrandeCity_DrakesRoom_EventScript_1A0693:: @ 81A0693
EverGrandeCity_GlaciasRoom_EventScript_1A0693:: @ 81A0693
EverGrandeCity_PhoebesRoom_EventScript_1A0693:: @ 81A0693
EverGrandeCity_SidneysRoom_EventScript_1A0693:: @ 81A0693
- move 255, EverGrandeCity_SidneysRoom_Movement_1A0853
- waitmove 0
- playsfx 8
+ applymovement 255, EverGrandeCity_SidneysRoom_Movement_1A0853
+ waitmovement 0
+ playse 8
setmaptile 6, 1, 836, 0
setmaptile 6, 2, 837, 0
setmaptile 0, 2, 734, 1
@@ -2576,9 +2576,9 @@ EverGrandeCity_DrakesRoom_EventScript_1A0710:: @ 81A0710
EverGrandeCity_GlaciasRoom_EventScript_1A0710:: @ 81A0710
EverGrandeCity_PhoebesRoom_EventScript_1A0710:: @ 81A0710
EverGrandeCity_SidneysRoom_EventScript_1A0710:: @ 81A0710
- move 255, EverGrandeCity_SidneysRoom_Movement_1A0847
- waitmove 0
- playsfx 52
+ applymovement 255, EverGrandeCity_SidneysRoom_Movement_1A0847
+ waitmovement 0
+ playse 52
setmaptile 5, 12, 518, 1
setmaptile 6, 12, 518, 1
setmaptile 7, 12, 518, 1
@@ -2986,16 +2986,16 @@ UnknownString_81A0A54: @ 81A0A54
UnknownString_81A0A66: @ 81A0A66
.string "Verbindung zu LANETTES PC hergestellt.$"
-OldaleTown_PokemonCenter_1F_Text_1A0A7D:: @ 81A0A7D
+gText_NurseJoy_Welcome:: @ 81A0A7D
.string "Willkommen im POKéMON-CENTER!\p"
.string "Wir heilen deine POKéMON und\n"
.string "machen sie wieder fit.\p"
.string "O.K. Wir benötigen deine POKéMON.$"
-OldaleTown_PokemonCenter_1F_Text_1A0AFA:: @ 81A0AFA
+gText_NurseJoy_WeHopeToSeeYouAgain:: @ 81A0AFA
.string "Komm jederzeit wieder vorbei!$"
-OldaleTown_PokemonCenter_1F_Text_1A0B14:: @ 81A0B14
+gText_NurseJoy_ThankYouForWaiting:: @ 81A0B14
.string "Danke!\p"
.string "Deine POKéMON sind wieder topfit!$"
@@ -3214,11 +3214,11 @@ SlateportCity_Text_1A116E:: @ 81A116E
.string "nehmen und dir unter der Hand tolle\l"
.string "Sachen verkaufen.$"
-OldaleTown_PokemonCenter_1F_Text_1A1245:: @ 81A1245
+gText_NurseJoy_OkayIllTakeYourPokemon:: @ 81A1245
.string "Okay, ich nehme deine POKéMON für einen\n"
.string "Moment in meine Obhut.$"
-OldaleTown_PokemonCenter_1F_Text_1A1275:: @ 81A1275
+gText_NurseJoy_Pokerus:: @ 81A1275
.string "Dein POKéMON scheint von dem\n"
.string "POKéRUS befallen zu sein.\p"
.string "Über den POKéRUS ist bisher wenig be-\n"
@@ -3264,13 +3264,13 @@ gUnknown_081A14B8:: @ 81A14B8
special ExecuteWhiteOut
waitstate
compare RESULT, 1
- jumpeq EventScript_1A14CA
+ goto_if_eq EventScript_1A14CA
releaseall
end
EventScript_1A14CA::
message UnknownString_81A1141
- waittext
+ waitmessage
waitbutton
special sub_8081924
waitstate
@@ -3619,44 +3619,44 @@ gUnknown_081A2C51:: @ 81A2C51
special sub_80BB70C
special sub_80BB63C
compare RESULT, 1
- jumpeq EventScript_1A2E45
- checkattack MOVE_SECRET_POWER
- setanimation 0, RESULT
- bufferattack 1, MOVE_SECRET_POWER
+ goto_if_eq EventScript_1A2E45
+ checkpokemove MOVE_SECRET_POWER
+ setfieldeffect 0, RESULT
+ getmovename 1, MOVE_SECRET_POWER
compare 0x8007, 1
- jumpeq EventScript_1A2CB0
+ goto_if_eq EventScript_1A2CB0
compare 0x8007, 2
- jumpeq EventScript_1A2CB0
+ goto_if_eq EventScript_1A2CB0
compare 0x8007, 3
- jumpeq EventScript_1A2CB0
+ goto_if_eq EventScript_1A2CB0
compare 0x8007, 4
- jumpeq EventScript_1A2CB0
+ goto_if_eq EventScript_1A2CB0
compare 0x8007, 5
- jumpeq EventScript_1A2D08
+ goto_if_eq EventScript_1A2D08
compare 0x8007, 6
- jumpeq EventScript_1A2D60
+ goto_if_eq EventScript_1A2D60
end
EventScript_1A2CB0:
lockall
compare RESULT, 6
- jumpeq EventScript_1A2CF1
- bufferpartypoke 0, RESULT
+ goto_if_eq EventScript_1A2CF1
+ getpartypokename 0, RESULT
msgbox UnknownString_8198F34, 5
compare RESULT, 0
- jumpeq EventScript_1A2F3A
+ goto_if_eq EventScript_1A2F3A
msgbox UsedCutRockSmashText, 4
- closebutton
- doanimation 11
+ closemessage
+ dofieldeffect 11
waitstate
- jump EventScript_1A2CFA
+ goto EventScript_1A2CFA
end
gUnknown_081A2CE6:: @ 81A2CE6
lockall
- doanimation 11
+ dofieldeffect 11
waitstate
- jump EventScript_1A2CFA
+ goto EventScript_1A2CFA
end
EventScript_1A2CF1:
@@ -3665,29 +3665,29 @@ EventScript_1A2CF1:
EventScript_1A2CFA:
msgbox UnknownString_8198F6E, 4
- jump EventScript_1A2DB8
+ goto EventScript_1A2DB8
end
EventScript_1A2D08:
lockall
compare RESULT, 6
- jumpeq EventScript_1A2D49
- bufferpartypoke 0, RESULT
+ goto_if_eq EventScript_1A2D49
+ getpartypokename 0, RESULT
msgbox UnknownString_81A197B, 5
compare RESULT, 0
- jumpeq EventScript_1A2F3A
+ goto_if_eq EventScript_1A2F3A
msgbox UsedCutRockSmashText, 4
- closebutton
- doanimation 26
+ closemessage
+ dofieldeffect 26
waitstate
- jump EventScript_1A2D52
+ goto EventScript_1A2D52
end
gUnknown_081A2D3E:: @ 81A2D3E
lockall
- doanimation 26
+ dofieldeffect 26
waitstate
- jump EventScript_1A2D52
+ goto EventScript_1A2D52
end
EventScript_1A2D49:
@@ -3696,29 +3696,29 @@ EventScript_1A2D49:
EventScript_1A2D52:
msgbox UnknownString_81A19C4, 4
- jump EventScript_1A2DB8
+ goto EventScript_1A2DB8
end
EventScript_1A2D60:
lockall
compare RESULT, 6
- jumpeq EventScript_1A2DA1
- bufferpartypoke 0, RESULT
+ goto_if_eq EventScript_1A2DA1
+ getpartypokename 0, RESULT
msgbox UnknownString_81A1A4B, 5
compare RESULT, 0
- jumpeq EventScript_1A2F3A
+ goto_if_eq EventScript_1A2F3A
msgbox UsedCutRockSmashText, 4
- closebutton
- doanimation 27
+ closemessage
+ dofieldeffect 27
waitstate
- jump EventScript_1A2DAA
+ goto EventScript_1A2DAA
end
gUnknown_081A2D96:: @ 81A2D96
lockall
- doanimation 27
+ dofieldeffect 27
waitstate
- jump EventScript_1A2DAA
+ goto EventScript_1A2DAA
end
EventScript_1A2DA1:
@@ -3727,12 +3727,12 @@ EventScript_1A2DA1:
EventScript_1A2DAA:
msgbox UnknownString_81A1AA9, 4
- jump EventScript_1A2DB8
+ goto EventScript_1A2DB8
end
EventScript_1A2DB8:
- closebutton
- playsfx 9
+ closemessage
+ playse 9
setvar 0x4097, 0
setflag 173
special sub_80BB8CC
@@ -3745,19 +3745,19 @@ EventScript_1A2DB8:
end
SecretBase_RedCave1_EventScript_1A2DDE:: @ 81A2DDE
- move 255, SecretBase_RedCave1_Movement_1A2E11
- waitmove 0
+ applymovement 255, SecretBase_RedCave1_Movement_1A2E11
+ waitmovement 0
setvar 0x4097, 1
msgbox SecretBase_RedCave1_Text_198F89, 5
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A2E08
- closebutton
- playsfx 9
+ goto_if_eq SecretBase_RedCave1_EventScript_1A2E08
+ closemessage
+ playse 9
special sub_80BC440
end
SecretBase_RedCave1_EventScript_1A2E08:: @ 81A2E08
- closebutton
+ closemessage
setflag 96
special sub_80BBC78
waitstate
@@ -3771,10 +3771,10 @@ SecretBase_RedCave1_Movement_1A2E11:: @ 81A2E11
gUnknown_081A2E14:: @ 81A2E14
lockall
setvar 0x4097, 1
- playsfx 9
+ playse 9
special sub_80BC114
compare RESULT, 0
- jumpeq EventScript_1A2E38
+ goto_if_eq EventScript_1A2E38
clearflag 173
special sub_80BBAF0
setvar 0x4089, 0
@@ -3789,63 +3789,63 @@ EventScript_1A2E38:
end
EventScript_1A2E45:
- checkattack MOVE_SECRET_POWER
+ checkpokemove MOVE_SECRET_POWER
compare RESULT, 6
- jumpeq EventScript_1A2EF7
- setanimation 0, RESULT
+ goto_if_eq EventScript_1A2EF7
+ setfieldeffect 0, RESULT
setorcopyvar 0x8004, RESULT
lockall
special GetSecretBaseNearbyMapName
msgbox UnknownString_81A3C71, 5
compare RESULT, 0
- jumpeq EventScript_1A2F3A
+ goto_if_eq EventScript_1A2F3A
msgbox UnknownString_81A38FB, 5
compare RESULT, 0
- jumpeq EventScript_1A2F3A
+ goto_if_eq EventScript_1A2F3A
fadescreen 1
special sub_80BC50C
- closebutton
+ closemessage
fadescreen 0
msgbox UnknownString_81A3CC9, 5
compare RESULT, 0
- jumpeq EventScript_1A2F3A
- bufferpartypoke 0, 0x8004
- bufferattack 1, MOVE_SECRET_POWER
+ goto_if_eq EventScript_1A2F3A
+ getpartypokename 0, 0x8004
+ getmovename 1, MOVE_SECRET_POWER
msgbox UsedCutRockSmashText, 4
- closebutton
- closebutton
+ closemessage
+ closemessage
compare 0x8007, 1
- jumpeq gUnknown_081A2CE6
+ goto_if_eq gUnknown_081A2CE6
compare 0x8007, 2
- jumpeq gUnknown_081A2CE6
+ goto_if_eq gUnknown_081A2CE6
compare 0x8007, 3
- jumpeq gUnknown_081A2CE6
+ goto_if_eq gUnknown_081A2CE6
compare 0x8007, 4
- jumpeq gUnknown_081A2CE6
+ goto_if_eq gUnknown_081A2CE6
compare 0x8007, 5
- jumpeq gUnknown_081A2D3E
+ goto_if_eq gUnknown_081A2D3E
compare 0x8007, 6
- jumpeq gUnknown_081A2D96
+ goto_if_eq gUnknown_081A2D96
releaseall
end
EventScript_1A2EF7::
compare 0x8007, 1
- jumpeq EventScript_1A2CF1
+ goto_if_eq EventScript_1A2CF1
compare 0x8007, 2
- jumpeq EventScript_1A2CF1
+ goto_if_eq EventScript_1A2CF1
compare 0x8007, 3
- jumpeq EventScript_1A2CF1
+ goto_if_eq EventScript_1A2CF1
compare 0x8007, 4
- jumpeq EventScript_1A2CF1
+ goto_if_eq EventScript_1A2CF1
compare 0x8007, 5
- jumpeq EventScript_1A2D49
+ goto_if_eq EventScript_1A2D49
compare 0x8007, 6
- jumpeq EventScript_1A2DA1
+ goto_if_eq EventScript_1A2DA1
end
EventScript_1A2F3A::
- closebutton
+ closemessage
releaseall
end
@@ -3879,7 +3879,7 @@ SecretBase_RedCave1_EventScript_1A2F68:: @ 81A2F68
gUnknown_081A2F7B:: @ 81A2F7B
setvar 0x8005, 0
- jump EventScript_1A2F86
+ goto EventScript_1A2F86
end
EventScript_1A2F86:
@@ -3888,19 +3888,19 @@ EventScript_1A2F86:
gUnknown_081A2F8A:: @ 81A2F8A
setvar 0x8004, 0
- jump EventScript_1A2F95
+ goto EventScript_1A2F95
end
EventScript_1A2F95:
special sub_8100A7C
compare RESULT, 1
- jumpeq EventScript_1A2FBF
+ goto_if_eq EventScript_1A2FBF
addvar 0x8004, 1
compare 0x8005, 0
- jumpeq EventScript_1A2F95
- disappear 0x8006
+ goto_if_eq EventScript_1A2F95
+ removeobject 0x8006
setflag 0x8005
- jump EventScript_1A2F95
+ goto EventScript_1A2F95
end
EventScript_1A2FBF:
@@ -3932,45 +3932,45 @@ SecretBase_YellowCave3_EventScript_1A2FC0:: @ 81A2FC0
SecretBase_YellowCave4_EventScript_1A2FC0:: @ 81A2FC0
special sub_80BCE90
compare 0x8004, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3032
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3032
compare 0x8004, 1
- jumpeq SecretBase_RedCave1_EventScript_1A30AE
+ goto_if_eq SecretBase_RedCave1_EventScript_1A30AE
compare 0x8004, 2
- jumpeq SecretBase_RedCave1_EventScript_1A312A
+ goto_if_eq SecretBase_RedCave1_EventScript_1A312A
compare 0x8004, 3
- jumpeq SecretBase_RedCave1_EventScript_1A31A6
+ goto_if_eq SecretBase_RedCave1_EventScript_1A31A6
compare 0x8004, 4
- jumpeq SecretBase_RedCave1_EventScript_1A3222
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3222
compare 0x8004, 5
- jumpeq SecretBase_RedCave1_EventScript_1A329E
+ goto_if_eq SecretBase_RedCave1_EventScript_1A329E
compare 0x8004, 6
- jumpeq SecretBase_RedCave1_EventScript_1A331A
+ goto_if_eq SecretBase_RedCave1_EventScript_1A331A
compare 0x8004, 7
- jumpeq SecretBase_RedCave1_EventScript_1A3396
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3396
compare 0x8004, 8
- jumpeq SecretBase_RedCave1_EventScript_1A3412
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3412
compare 0x8004, 9
- jumpeq SecretBase_RedCave1_EventScript_1A348E
+ goto_if_eq SecretBase_RedCave1_EventScript_1A348E
end
SecretBase_RedCave1_EventScript_1A3032:: @ 81A3032
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A3086
+ goto_if 0, SecretBase_RedCave1_EventScript_1A3086
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A30A5
+ goto_if_eq SecretBase_RedCave1_EventScript_1A30A5
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A1AEA, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A308F
+ goto_if_eq SecretBase_RedCave1_EventScript_1A308F
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A308F
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A308F
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1B83, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086
@@ -3980,7 +3980,7 @@ SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086
SecretBase_RedCave1_EventScript_1A308F:: @ 81A308F
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1B97, 2
end
@@ -3990,22 +3990,22 @@ SecretBase_RedCave1_EventScript_1A30A5:: @ 81A30A5
SecretBase_RedCave1_EventScript_1A30AE:: @ 81A30AE
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A3102
+ goto_if 0, SecretBase_RedCave1_EventScript_1A3102
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3121
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3121
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A1E67, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A310B
+ goto_if_eq SecretBase_RedCave1_EventScript_1A310B
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A310B
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A310B
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1F04, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102
@@ -4015,7 +4015,7 @@ SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102
SecretBase_RedCave1_EventScript_1A310B:: @ 81A310B
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1F2E, 2
end
@@ -4025,22 +4025,22 @@ SecretBase_RedCave1_EventScript_1A3121:: @ 81A3121
SecretBase_RedCave1_EventScript_1A312A:: @ 81A312A
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A317E
+ goto_if 0, SecretBase_RedCave1_EventScript_1A317E
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A319D
+ goto_if_eq SecretBase_RedCave1_EventScript_1A319D
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A218F, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3187
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3187
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3187
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3187
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2220, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E
@@ -4050,7 +4050,7 @@ SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E
SecretBase_RedCave1_EventScript_1A3187:: @ 81A3187
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2230, 2
end
@@ -4060,22 +4060,22 @@ SecretBase_RedCave1_EventScript_1A319D:: @ 81A319D
SecretBase_RedCave1_EventScript_1A31A6:: @ 81A31A6
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A31FA
+ goto_if 0, SecretBase_RedCave1_EventScript_1A31FA
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3219
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3219
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A24E1, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3203
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3203
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3203
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3203
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A256F, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA
@@ -4085,7 +4085,7 @@ SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA
SecretBase_RedCave1_EventScript_1A3203:: @ 81A3203
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A258A, 2
end
@@ -4095,22 +4095,22 @@ SecretBase_RedCave1_EventScript_1A3219:: @ 81A3219
SecretBase_RedCave1_EventScript_1A3222:: @ 81A3222
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A3276
+ goto_if 0, SecretBase_RedCave1_EventScript_1A3276
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3295
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3295
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A2830, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A327F
+ goto_if_eq SecretBase_RedCave1_EventScript_1A327F
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A327F
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A327F
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A28D7, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276
@@ -4120,7 +4120,7 @@ SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276
SecretBase_RedCave1_EventScript_1A327F:: @ 81A327F
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A28F4, 2
end
@@ -4130,22 +4130,22 @@ SecretBase_RedCave1_EventScript_1A3295:: @ 81A3295
SecretBase_RedCave1_EventScript_1A329E:: @ 81A329E
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A32F2
+ goto_if 0, SecretBase_RedCave1_EventScript_1A32F2
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3311
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3311
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A1CB2, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A32FB
+ goto_if_eq SecretBase_RedCave1_EventScript_1A32FB
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A32FB
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A32FB
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1D48, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2
@@ -4155,7 +4155,7 @@ SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2
SecretBase_RedCave1_EventScript_1A32FB:: @ 81A32FB
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1D59, 2
end
@@ -4165,22 +4165,22 @@ SecretBase_RedCave1_EventScript_1A3311:: @ 81A3311
SecretBase_RedCave1_EventScript_1A331A:: @ 81A331A
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A336E
+ goto_if 0, SecretBase_RedCave1_EventScript_1A336E
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A338D
+ goto_if_eq SecretBase_RedCave1_EventScript_1A338D
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A2026, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3377
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3377
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3377
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3377
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2095, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E
@@ -4190,7 +4190,7 @@ SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E
SecretBase_RedCave1_EventScript_1A3377:: @ 81A3377
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A20AE, 2
end
@@ -4200,22 +4200,22 @@ SecretBase_RedCave1_EventScript_1A338D:: @ 81A338D
SecretBase_RedCave1_EventScript_1A3396:: @ 81A3396
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A33EA
+ goto_if 0, SecretBase_RedCave1_EventScript_1A33EA
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3409
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3409
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A236A, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A33F3
+ goto_if_eq SecretBase_RedCave1_EventScript_1A33F3
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A33F3
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A33F3
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2405, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA
@@ -4225,7 +4225,7 @@ SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA
SecretBase_RedCave1_EventScript_1A33F3:: @ 81A33F3
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2420, 2
end
@@ -4235,22 +4235,22 @@ SecretBase_RedCave1_EventScript_1A3409:: @ 81A3409
SecretBase_RedCave1_EventScript_1A3412:: @ 81A3412
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A3466
+ goto_if 0, SecretBase_RedCave1_EventScript_1A3466
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3485
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3485
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A2663, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A346F
+ goto_if_eq SecretBase_RedCave1_EventScript_1A346F
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A346F
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A346F
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2710, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466
@@ -4260,7 +4260,7 @@ SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466
SecretBase_RedCave1_EventScript_1A346F:: @ 81A346F
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2736, 2
end
@@ -4270,22 +4270,22 @@ SecretBase_RedCave1_EventScript_1A3485:: @ 81A3485
SecretBase_RedCave1_EventScript_1A348E:: @ 81A348E
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A34E2
+ goto_if 0, SecretBase_RedCave1_EventScript_1A34E2
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3501
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3501
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A2A13, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A34EB
+ goto_if_eq SecretBase_RedCave1_EventScript_1A34EB
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A34EB
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A34EB
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2AE2, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2
@@ -4295,7 +4295,7 @@ SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2
SecretBase_RedCave1_EventScript_1A34EB:: @ 81A34EB
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2AFB, 2
end
@@ -4309,7 +4309,7 @@ SecretBase_RedCave1_EventScript_1A350A:: @ 81A350A
setvar 0x8005, 0
special sub_813556C
waitstate
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
release
end
@@ -4406,7 +4406,7 @@ FallarborTown_ContestLobby_EventScript_1ADE46:: @ 81ADE46
SlateportCity_OceanicMuseum_1F_EventScript_1ADE46:: @ 81ADE46
SlateportCity_PokemonFanClub_EventScript_1ADE46:: @ 81ADE46
special sub_80BDE48
- inccounter GAME_STAT_GOT_INTERVIEWED
+ incrementgamestat GAME_STAT_GOT_INTERVIEWED
release
end
@@ -4414,13 +4414,13 @@ SlateportCity_PokemonFanClub_EventScript_1ADE4D:: @ 81ADE4D
setvar 0x8005, 1
special sub_80BF2C4
compare RESULT, 1
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADED6
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADED6
copyvar 0x8009, 0x8006
msgbox SlateportCity_PokemonFanClub_Text_1A8704, 5
compare RESULT, 1
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE84
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADE84
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEB9
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEB9
end
SlateportCity_PokemonFanClub_EventScript_1ADE84:: @ 81ADE84
@@ -4432,9 +4432,9 @@ SlateportCity_PokemonFanClub_EventScript_1ADE84:: @ 81ADE84
lock
faceplayer
compare RESULT, 1
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEC3
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEC3
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEB9
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEB9
end
SlateportCity_PokemonFanClub_EventScript_1ADEB9:: @ 81ADEB9
@@ -4445,7 +4445,7 @@ SlateportCity_PokemonFanClub_EventScript_1ADEB9:: @ 81ADEB9
SlateportCity_PokemonFanClub_EventScript_1ADEC3:: @ 81ADEC3
msgbox SlateportCity_PokemonFanClub_Text_1A8818, 4
setvar 0x8005, 1
- jump SlateportCity_PokemonFanClub_EventScript_1ADE46
+ goto SlateportCity_PokemonFanClub_EventScript_1ADE46
end
SlateportCity_PokemonFanClub_EventScript_1ADED6:: @ 81ADED6
@@ -4459,24 +4459,24 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADEE0:: @ 81ADEE0
setvar 0x8005, 2
special sub_80BF2C4
compare RESULT, 1
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96
copyvar 0x8009, 0x8006
checkflag 105
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF25
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF25
setflag 105
msgbox SlateportCity_OceanicMuseum_1F_Text_1A927F, 5
compare RESULT, 1
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44
compare RESULT, 0
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79
end
SlateportCity_OceanicMuseum_1F_EventScript_1ADF25:: @ 81ADF25
msgbox SlateportCity_OceanicMuseum_1F_Text_1A934C, 5
compare RESULT, 1
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44
compare RESULT, 0
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79
end
SlateportCity_OceanicMuseum_1F_EventScript_1ADF44:: @ 81ADF44
@@ -4488,9 +4488,9 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF44:: @ 81ADF44
lock
faceplayer
compare RESULT, 1
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF83
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF83
compare RESULT, 0
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79
end
SlateportCity_OceanicMuseum_1F_EventScript_1ADF79:: @ 81ADF79
@@ -4501,7 +4501,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF79:: @ 81ADF79
SlateportCity_OceanicMuseum_1F_EventScript_1ADF83:: @ 81ADF83
msgbox SlateportCity_OceanicMuseum_1F_Text_1A949A, 4
setvar 0x8005, 2
- jump SlateportCity_OceanicMuseum_1F_EventScript_1ADE46
+ goto SlateportCity_OceanicMuseum_1F_EventScript_1ADE46
end
SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96
@@ -4512,19 +4512,19 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96
SlateportCity_PokemonFanClub_EventScript_1ADFA0:: @ 81ADFA0
lock
faceplayer
- specialval RESULT, sub_80BF544
+ specialvar RESULT, sub_80BF544
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE4D
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADE4D
setvar 0x8005, 3
special sub_80BF2C4
compare RESULT, 1
- jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0AC
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0AC
copyvar 0x8009, 0x8006
msgbox SlateportCity_PokemonFanClub_Text_1A82F1, 5
compare RESULT, 1
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADFE9
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADFE9
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2
end
SlateportCity_PokemonFanClub_EventScript_1ADFE9:: @ 81ADFE9
@@ -4539,17 +4539,17 @@ SlateportCity_PokemonFanClub_EventScript_1ADFE9:: @ 81ADFE9
SlateportCity_PokemonFanClub_EventScript_1AE020:: @ 81AE020
msgbox SlateportCity_PokemonFanClub_Text_1A8414, 4
- jump SlateportCity_PokemonFanClub_EventScript_1AE04A
+ goto SlateportCity_PokemonFanClub_EventScript_1AE04A
end
SlateportCity_PokemonFanClub_EventScript_1AE02E:: @ 81AE02E
msgbox SlateportCity_PokemonFanClub_Text_1A8470, 4
- jump SlateportCity_PokemonFanClub_EventScript_1AE04A
+ goto SlateportCity_PokemonFanClub_EventScript_1AE04A
end
SlateportCity_PokemonFanClub_EventScript_1AE03C:: @ 81AE03C
msgbox SlateportCity_PokemonFanClub_Text_1A84D5, 4
- jump SlateportCity_PokemonFanClub_EventScript_1AE04A
+ goto SlateportCity_PokemonFanClub_EventScript_1AE04A
end
SlateportCity_PokemonFanClub_EventScript_1AE04A:: @ 81AE04A
@@ -4560,18 +4560,18 @@ SlateportCity_PokemonFanClub_EventScript_1AE04A:: @ 81AE04A
lock
faceplayer
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2
msgbox SlateportCity_PokemonFanClub_Text_1A852D, 4
setvar 0x8006, 1
call SlateportCity_PokemonFanClub_EventScript_1A00F3
lock
faceplayer
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2
msgbox SlateportCity_PokemonFanClub_Text_1A85A6, 4
copyvar 0x8007, 0x800a
setvar 0x8005, 3
- jump SlateportCity_PokemonFanClub_EventScript_1ADE46
+ goto SlateportCity_PokemonFanClub_EventScript_1ADE46
end
SlateportCity_PokemonFanClub_EventScript_1AE0A2:: @ 81AE0A2
@@ -4591,17 +4591,17 @@ VerdanturfTown_ContestLobby_EventScript_1AE0B6:: @ 81AE0B6
lock
faceplayer
checkflag 2
- jumpeq FallarborTown_ContestLobby_EventScript_1AE17E
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE17E
setvar 0x8005, 6
special sub_80BF2C4
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1AE17E
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE17E
copyvar 0x8009, 0x8006
msgbox FallarborTown_ContestLobby_Text_1A6F7C, 5
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1AE0F8
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE0F8
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1AE12D
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D
end
FallarborTown_ContestLobby_EventScript_1AE0F8:: @ 81AE0F8
@@ -4613,9 +4613,9 @@ FallarborTown_ContestLobby_EventScript_1AE0F8:: @ 81AE0F8
lock
faceplayer
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1AE137
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE137
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1AE12D
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D
end
FallarborTown_ContestLobby_EventScript_1AE12D:: @ 81AE12D
@@ -4634,11 +4634,11 @@ FallarborTown_ContestLobby_EventScript_1AE137:: @ 81AE137
lock
faceplayer
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1AE12D
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D
msgbox FallarborTown_ContestLobby_Text_1A7153, 4
setflag 2
setvar 0x8005, 6
- jump FallarborTown_ContestLobby_EventScript_1ADE46
+ goto FallarborTown_ContestLobby_EventScript_1ADE46
end
FallarborTown_ContestLobby_EventScript_1AE17E:: @ 81AE17E
@@ -4651,11 +4651,11 @@ LilycoveCity_ContestLobby_EventScript_1AE188:: @ 81AE188
SlateportCity_ContestLobby_EventScript_1AE188:: @ 81AE188
VerdanturfTown_ContestLobby_EventScript_1AE188:: @ 81AE188
compare 0x4086, 2
- jumpif 5, FallarborTown_ContestLobby_EventScript_1AE1FE
+ goto_if 5, FallarborTown_ContestLobby_EventScript_1AE1FE
setvar 0x8005, 6
special sub_80BF2C4
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1AE1FE
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE1FE
switch 0x4088
case 0, FallarborTown_ContestLobby_EventScript_1AE1FE
case 2, FallarborTown_ContestLobby_EventScript_1AE1EE
@@ -4688,28 +4688,28 @@ BattleTower_Lobby_EventScript_1AE1FF:: @ 81AE1FF
lock
faceplayer
checkflag 2
- jumpeq BattleTower_Lobby_EventScript_1AE2E3
+ goto_if_eq BattleTower_Lobby_EventScript_1AE2E3
setvar 0x8005, 7
special sub_80BF2C4
compare RESULT, 1
- jumpeq BattleTower_Lobby_EventScript_1AE2E3
+ goto_if_eq BattleTower_Lobby_EventScript_1AE2E3
copyvar 0x8009, 0x8006
msgbox BattleTower_Lobby_Text_1A776D, 5
compare RESULT, 1
- jumpeq BattleTower_Lobby_EventScript_1AE241
+ goto_if_eq BattleTower_Lobby_EventScript_1AE241
compare RESULT, 0
- jumpeq BattleTower_Lobby_EventScript_1AE297
+ goto_if_eq BattleTower_Lobby_EventScript_1AE297
end
BattleTower_Lobby_EventScript_1AE241:: @ 81AE241
message BattleTower_Lobby_Text_1A7823
- waittext
+ waitmessage
multichoice 19, 8, 45, 1
copyvar 0x8008, RESULT
compare RESULT, 0
- callif 1, BattleTower_Lobby_EventScript_1AE2A1
+ call_if 1, BattleTower_Lobby_EventScript_1AE2A1
compare RESULT, 1
- callif 1, BattleTower_Lobby_EventScript_1AE2AA
+ call_if 1, BattleTower_Lobby_EventScript_1AE2AA
msgbox BattleTower_Lobby_Text_1A79EB, 4
setvar 0x8004, 12
copyvar 0x8005, 0x8009
@@ -4717,9 +4717,9 @@ BattleTower_Lobby_EventScript_1AE241:: @ 81AE241
lock
faceplayer
compare RESULT, 1
- jumpeq BattleTower_Lobby_EventScript_1AE2B3
+ goto_if_eq BattleTower_Lobby_EventScript_1AE2B3
compare RESULT, 0
- jumpeq BattleTower_Lobby_EventScript_1AE2D9
+ goto_if_eq BattleTower_Lobby_EventScript_1AE2D9
end
BattleTower_Lobby_EventScript_1AE297:: @ 81AE297
@@ -4737,12 +4737,12 @@ BattleTower_Lobby_EventScript_1AE2AA:: @ 81AE2AA
BattleTower_Lobby_EventScript_1AE2B3:: @ 81AE2B3
compare RESULT, 0
- jumpeq BattleTower_Lobby_EventScript_1AE2D9
+ goto_if_eq BattleTower_Lobby_EventScript_1AE2D9
msgbox BattleTower_Lobby_Text_1A7A6E, 4
setflag 2
copyvar 0x8004, 0x8008
setvar 0x8005, 7
- jump BattleTower_Lobby_EventScript_1ADE46
+ goto BattleTower_Lobby_EventScript_1ADE46
end
BattleTower_Lobby_EventScript_1AE2D9:: @ 81AE2D9
@@ -4757,11 +4757,11 @@ BattleTower_Lobby_EventScript_1AE2E3:: @ 81AE2E3
BattleTower_Lobby_EventScript_1AE2ED:: @ 81AE2ED
compare 0x40bc, 0
- jumpeq BattleTower_Lobby_EventScript_1AE30F
+ goto_if_eq BattleTower_Lobby_EventScript_1AE30F
setvar 0x8005, 7
special sub_80BF2C4
compare RESULT, 1
- jumpeq BattleTower_Lobby_EventScript_1AE30F
+ goto_if_eq BattleTower_Lobby_EventScript_1AE30F
clearflag 918
return
@@ -4771,16 +4771,7 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F
.include "data/scripts/gabby_and_ty.inc"
- .include "data/scripts/bard.inc"
- .include "data/scripts/hipster.inc"
- .include "data/text/trader.inc"
- .include "data/scripts/trader.inc"
- .include "data/text/storyteller.inc"
- .include "data/scripts/storyteller.inc"
- .include "data/text/giddy.inc"
- .include "data/scripts/giddy.inc"
- .include "data/text/bard.inc"
- .include "data/text/hipster.inc"
+ .include "data/scripts/mauville_man.inc"
.include "data/field_move_scripts.inc"
.include "data/item_ball_scripts.inc"
@@ -4804,13 +4795,13 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F
.include "data/text/magma_summit.inc"
gUnknown_081B694A:: @ 81B694A
- lighten 1
- darken 1
+ animdarklevel 1
+ setdarklevel 1
end
.include "data/scripts/players_house.inc"
-Event_RunningShoesManual:: @ 81B6E5A
+S_RunningShoesManual:: @ 81B6E5A
msgbox UnknownString_81728E3, 3
end
@@ -4819,7 +4810,7 @@ Event_RunningShoesManual:: @ 81B6E5A
.include "data/text/trainers.inc"
-Event_RepelWoreOff:: @ 81C33E6
+S_RepelWoreOff:: @ 81C33E6
msgbox Text_RepelWoreOff, 3
end
@@ -4832,25 +4823,25 @@ Text_RepelWoreOff: @ 81C33EF
MauvilleCity_GameCorner_EventScript_1C407E:: @ 81C407E
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 0
- event_96 2
+ getpricereduction 2
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1C40DA
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1C40DA
addvar 0x8004, 128
- jump MauvilleCity_GameCorner_EventScript_1C40DA
+ goto MauvilleCity_GameCorner_EventScript_1C40DA
end
MauvilleCity_GameCorner_EventScript_1C40AC:: @ 81C40AC
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 1
- event_96 2
+ getpricereduction 2
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1C40DA
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1C40DA
addvar 0x8004, 128
- jump MauvilleCity_GameCorner_EventScript_1C40DA
+ goto MauvilleCity_GameCorner_EventScript_1C40DA
end
MauvilleCity_GameCorner_EventScript_1C40DA:: @ 81C40DA
@@ -4899,7 +4890,7 @@ GraniteCave_B1F_MapScript2_1C6BB5:: @ 81C6BB5
MtPyre_2F_MapScript2_1C6BB5:: @ 81C6BB5
SkyPillar_2F_MapScript2_1C6BB5:: @ 81C6BB5
SkyPillar_4F_MapScript2_1C6BB5:: @ 81C6BB5
- map_script_2 0x4022, 0, GraniteCave_B1F_EventScript_1C6BC5
+ map_script_2 0x4022, 0, S_FallDownHole
.2byte 0
GraniteCave_B1F_MapScript1_1C6BBF:: @ 81C6BBF
@@ -4909,24 +4900,24 @@ SkyPillar_4F_MapScript1_1C6BBF:: @ 81C6BBF
copyvar 0x4022, 0x1
end
-GraniteCave_B1F_EventScript_1C6BC5:: @ 81C6BC5
+S_FallDownHole:: @ 81C6BC5
lockall
- pause 20
- move 255, GraniteCave_B1F_Movement_1C6BF7
- waitmove 0
- playsfx 43
- pause 60
+ delay 20
+ applymovement 255, GraniteCave_B1F_Movement_1C6BF7
+ waitmovement 0
+ playse 43
+ delay 60
warphole UNDEFINED
waitstate
end
gUnknown_081C6BDE:: @ 81C6BDE
lockall
- pause 20
- move 255, GraniteCave_B1F_Movement_1C6BF7
- waitmove 0
- playsfx 43
- pause 60
+ delay 20
+ applymovement 255, GraniteCave_B1F_Movement_1C6BF7
+ waitmovement 0
+ playse 43
+ delay 60
special sp13F_fall_to_last_warp
waitstate
end
@@ -4958,9 +4949,9 @@ gUnknown_081C6C02:: @ 81C6C02
@ 81C6C1D
lockall
- braillemsg Underwater_SealedChamber_Braille_1C533D
+ braillemessage Underwater_SealedChamber_Braille_1C533D
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
diff --git a/data-de/field_move_scripts.inc b/data-de/field_move_scripts.inc
index 91c3dcca8..497408299 100644
--- a/data-de/field_move_scripts.inc
+++ b/data-de/field_move_scripts.inc
@@ -1,34 +1,34 @@
-CuttableTreeScript:: @ 81B0DCC
+S_CuttableTree:: @ 81B0DCC
lockall
checkflag 2055
- jumpif 0, CannotUseCut
- checkattack MOVE_CUT
+ goto_if 0, CannotUseCut
+ checkpokemove MOVE_CUT
compare RESULT, 6
- jumpeq CannotUseCut
- setanimation 0, RESULT
- bufferpartypoke 0, RESULT
- bufferattack 1, MOVE_CUT
+ goto_if_eq CannotUseCut
+ setfieldeffect 0, RESULT
+ getpartypokename 0, RESULT
+ getmovename 1, MOVE_CUT
msgbox UseCutPromptText, 5
compare RESULT, 0
- jumpeq Cut_ChoseNo
+ goto_if_eq Cut_ChoseNo
msgbox UsedCutRockSmashText, 4
- closebutton
- doanimation 2
+ closemessage
+ dofieldeffect 2
waitstate
- jump DoTreeCutMovement
+ goto DoTreeCutMovement
end
-UseCutScript:: @ 81B0E16
+S_UseCut:: @ 81B0E16
lockall
- doanimation 2
+ dofieldeffect 2
waitstate
- jump DoTreeCutMovement
+ goto DoTreeCutMovement
end
DoTreeCutMovement: @ 81B0E21
- move LAST_TALKED, TreeCutMovement @ tree cut animation
- waitmove 0
- disappear LAST_TALKED @ tree disappears
+ applymovement LAST_TALKED, TreeCutMovement @ tree cut animation
+ waitmovement 0
+ removeobject LAST_TALKED @ tree disappears
releaseall
end
@@ -42,7 +42,7 @@ CannotUseCut: @ 81B0E32
end
Cut_ChoseNo: @ 81B0E3C
- closebutton
+ closemessage
releaseall
end
@@ -59,43 +59,43 @@ CannotUseCutText: @ 81B0E8E
.string "Der ZERSCHNEIDER kann hier eingesetzt\n"
.string "werden.$"
-BreakableRockScript:: @ 81B0EB7
+S_BreakableRock:: @ 81B0EB7
lockall
checkflag 2057
- jumpif 0, CannotUseRockSmash
- checkattack MOVE_ROCK_SMASH
+ goto_if 0, CannotUseRockSmash
+ checkpokemove MOVE_ROCK_SMASH
compare RESULT, 6
- jumpeq CannotUseRockSmash
- setanimation 0, RESULT
- bufferpartypoke 0, RESULT
- bufferattack 1, MOVE_ROCK_SMASH
+ goto_if_eq CannotUseRockSmash
+ setfieldeffect 0, RESULT
+ getpartypokename 0, RESULT
+ getmovename 1, MOVE_ROCK_SMASH
msgbox UseRockSmashPromptText, 5
compare RESULT, 0
- jumpeq RockSmash_ChoseNo
+ goto_if_eq RockSmash_ChoseNo
msgbox UsedCutRockSmashText, 4
- closebutton
- doanimation 37
+ closemessage
+ dofieldeffect 37
waitstate
- jump DoRockSmashMovement
+ goto DoRockSmashMovement
end
-UseRockSmashScript:: @ 81B0F01
+S_UseRockSmash:: @ 81B0F01
lockall
- doanimation 37
+ dofieldeffect 37
waitstate
- jump DoRockSmashMovement
+ goto DoRockSmashMovement
end
DoRockSmashMovement: @ 81B0F0C
- move LAST_TALKED, RockSmashMovement
- waitmove 0
- disappear LAST_TALKED
- specialval RESULT, sub_810F5BC
+ applymovement LAST_TALKED, RockSmashMovement
+ waitmovement 0
+ removeobject LAST_TALKED
+ specialvar RESULT, sub_810F5BC
compare RESULT, 1
- jumpeq DoRockSmashMovement_Done
- special RockSmashWildEncounter
+ goto_if_eq DoRockSmashMovement_Done
+ special ScrSpecial_RockSmashWildEncounter
compare RESULT, 0
- jumpeq DoRockSmashMovement_Done
+ goto_if_eq DoRockSmashMovement_Done
waitstate
releaseall
end
@@ -114,7 +114,7 @@ CannotUseRockSmash: @ 81B0F3E
end
RockSmash_ChoseNo: @ 81B0F48
- closebutton
+ closemessage
releaseall
end
@@ -126,30 +126,30 @@ CannotUseRockSmashText: @ 81B0F90
.string "Ein großer Felsen. Ein POKéMON könnte\n"
.string "ihn vielleicht zertrümmern.$"
-PushableBoulderScript:: @ 81B0FCB
+S_PushableBoulder:: @ 81B0FCB
lockall
checkflag 2058
- jumpif 0, CannotUseStrength
+ goto_if 0, CannotUseStrength
checkflag 2089
- jumpeq AlreadyUsedStrength
- checkattack 70
+ goto_if_eq AlreadyUsedStrength
+ checkpokemove 70
compare RESULT, 6
- jumpeq CannotUseStrength
- setanimation 0, RESULT
+ goto_if_eq CannotUseStrength
+ setfieldeffect 0, RESULT
msgbox UseStrengthPromptText, 5
compare RESULT, 0
- jumpeq Strength_ChoseNo
- closebutton
- doanimation 40
+ goto_if_eq Strength_ChoseNo
+ closemessage
+ dofieldeffect 40
waitstate
- jump UsedStrength
+ goto UsedStrength
end
-UseStrengthScript:: @ 81B100E
+S_UseStrength:: @ 81B100E
lockall
- doanimation 40
+ dofieldeffect 40
waitstate
- jump UsedStrength
+ goto UsedStrength
end
UsedStrength: @ 81B1019
@@ -169,7 +169,7 @@ AlreadyUsedStrength: @ 81B1030
end
Strength_ChoseNo: @ 81B103A
- closebutton
+ closemessage
releaseall
end
@@ -191,21 +191,21 @@ AlreadyUsedStrengthText: @ 81B1127
.string "STÄRKE ermöglicht es, Felsen zu\n"
.string "bewegen.$"
-UseWaterfallScript:: @ 81B115A
+S_UseWaterfall:: @ 81B115A
lockall
- checkattack MOVE_WATERFALL
+ checkpokemove MOVE_WATERFALL
compare RESULT, 6
- jumpeq Waterfall_NoMonKnows
- bufferpartypoke 0, RESULT
- setanimation 0, RESULT
+ goto_if_eq Waterfall_NoMonKnows
+ getpartypokename 0, RESULT
+ setfieldeffect 0, RESULT
msgbox UseWaterfallPromptText, 5
compare RESULT, 0
- jumpeq Waterfall_Done
+ goto_if_eq Waterfall_Done
msgbox UsedWaterfallText, 4
- doanimation 43
- jump Waterfall_Done
+ dofieldeffect 43
+ goto Waterfall_Done
-CannotUseWaterfallScript:: @ 81B1194
+S_CannotUseWaterfall:: @ 81B1194
lockall
Waterfall_NoMonKnows: @ 81B1195
msgbox CannotUseWaterfallText, 4
@@ -226,18 +226,18 @@ UsedWaterfallText: @ 81B120D
UseDiveScript:: @ 81B1220
lockall
- checkattack MOVE_DIVE
+ checkpokemove MOVE_DIVE
compare RESULT, 6
- jumpeq CannotUseDive
- bufferpartypoke 0, RESULT
- setanimation 0, RESULT
- setanimation 1, 1
+ goto_if_eq CannotUseDive
+ getpartypokename 0, RESULT
+ setfieldeffect 0, RESULT
+ setfieldeffect 1, 1
msgbox UseDivePromptText, 5
compare RESULT, 0
- jumpeq Dive_Done
+ goto_if_eq Dive_Done
msgbox UsedDiveText, 4
- doanimation 44
- jump Dive_Done
+ dofieldeffect 44
+ goto Dive_Done
lockall
CannotUseDive: @ 81B125F
@@ -247,25 +247,25 @@ Dive_Done: @ 81B1267
releaseall
end
-UnderwaterUseDiveScript:: @ 81B1269
+S_UseDiveUnderwater:: @ 81B1269
lockall
- checkattack MOVE_DIVE
+ checkpokemove MOVE_DIVE
compare RESULT, 6
- jumpeq UnderwaterCannotUseDive
- bufferpartypoke 0, RESULT
- setanimation 0, RESULT
- setanimation 1, 1
+ goto_if_eq UnderwaterCannotUseDive
+ getpartypokename 0, RESULT
+ setfieldeffect 0, RESULT
+ setfieldeffect 1, 1
msgbox UnderwaterUseDivePromptText, 5
compare RESULT, 0
- jumpeq UnderwaterDive_Done
+ goto_if_eq UnderwaterDive_Done
msgbox UsedDiveText, 4
- doanimation 44
- jump UnderwaterDive_Done
+ dofieldeffect 44
+ goto UnderwaterDive_Done
UnderwaterCannotUseDive: @ 81B12A7
lockall
msgbox UnderwaterCannotUseDiveText, 4
- jump UnderwaterDive_Done
+ goto UnderwaterDive_Done
@ not used
SurfacingBlocked: @ 81B12B5
diff --git a/data-de/text/bard.inc b/data-de/text/bard.inc
index 089741d00..dbfb7d400 100644
--- a/data-de/text/bard.inc
+++ b/data-de/text/bard.inc
@@ -1,20 +1,20 @@
-UnknownString_81B0A83: @ 81B0A83
+gTextBard_BardTesting: @ 81B0A83
.string "BARDEN Test.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0A91:: @ 81B0A91
+gTextBard_HiImTheBard:: @ 81B0A91
.string "Hallo, ich bin der BARDE.\n"
.string "Möchtest du meinem Lied lauschen?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0AC3:: @ 81B0AC3
+gTextBard_OhYouveLeftMe:: @ 81B0AC3
.string "Oh...\n"
.string "Du überlässt mich meinem Blues?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0AED:: @ 81B0AED
+gTextBard_OhWhatAMovingSong:: @ 81B0AED
.string "Hach, was für ein bewegendes Lied...\n"
.string "Ich wünschte, ich könnte es für\l"
.string "andere spielen...$"
-MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C
+gTextBard_SoHowDoYouLikeMySong:: @ 81B0B2C
.string "So?\n"
.string "Wie fandest du mein Lied?\p"
.string "Ich bin noch nicht ganz zufrieden mit\n"
@@ -22,17 +22,17 @@ MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C
.string "Hast du nicht Lust, den Text für mich\n"
.string "neu zu schreiben?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0BA6:: @ 81B0BA6
+gTextBard_OhYouveLeftMe2:: @ 81B0BA6
.string "Oh... Und wieder werde ich meinem\n"
.string "Blues überlassen.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0BD0:: @ 81B0BD0
+gTextBard_ThankYouKindly:: @ 81B0BD0
.string "Vielen herzlichen Dank!\n"
.string "Ich möchte für dich singen.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0BFA:: @ 81B0BFA
+gTextBard_WasThatHowYouWanted:: @ 81B0BFA
.string "Hast du dir dein Lied so vorgestellt?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0C23:: @ 81B0C23
+gTextBard_OkayThatsIt:: @ 81B0C23
.string "Okay! Das ist es! Dieses Lied werde\n"
.string "ich nun für eine Weile singen.$"
diff --git a/data-de/text/giddy.inc b/data-de/text/giddy.inc
index 6e1a46883..8bc5bebda 100644
--- a/data-de/text/giddy.inc
+++ b/data-de/text/giddy.inc
@@ -1,16 +1,16 @@
-MauvilleCity_PokemonCenter_1F_Text_1B092A:: @ 81B092A
+gTextGiddy_Introduction:: @ 81B092A
.string "Ich bin MÄRCHEN-MAN! Ich habe eine sehr\n"
.string "geistreiche Geschichte für dich!\p"
.string "Soll ich sie dir erzählen?$"
-MauvilleCity_PokemonCenter_1F_Text_1B097C:: @ 81B097C
+gTextGiddy_YouveDeflatedMe:: @ 81B097C
.string "Oh...\n"
.string "Du hast mir die Luft rausgelassen...$"
-MauvilleCity_PokemonCenter_1F_Text_1B0998:: @ 81B0998
+gTextGiddy_AlsoIWasThinking:: @ 81B0998
.string "Und ich war in Gedanken vertieft...$"
-MauvilleCity_PokemonCenter_1F_Text_1B09B0:: @ 81B09B0
+gTextGiddy_ByeBye:: @ 81B09B0
.string "Das wäre alles, glaube ich...\p"
.string "Wir sollten bald wieder ein Schwätzchen\n"
.string "halten! Tschüss!$"
diff --git a/data-de/text/hipster.inc b/data-de/text/hipster.inc
index c315b523d..8801b05fd 100644
--- a/data-de/text/hipster.inc
+++ b/data-de/text/hipster.inc
@@ -1,18 +1,18 @@
-MauvilleCity_PokemonCenter_1F_Text_1B0C5B:: @ 81B0C5B
+gTextHipster_TheyCallMeTheHipster:: @ 81B0C5B
.string "Hey, yo! Man nennt mich TRENDWIG. Ich\n"
.string "zeige dir, was hip ist und abgeht.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0CA7:: @ 81B0CA7
+gTextHipster_TaughtYouAlready:: @ 81B0CA7
.string "Aber, hey, ich habe dir doch schon ge-\n"
.string "zeigt, was hip ist und abgeht.\p"
.string "Ich will das auch anderen mitteilen.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0D11:: @ 81B0D11
+gTextHipster_YouAlreadyKnowALot:: @ 81B0D11
.string "Aber, hey, ich habe dir doch schon ge-\n"
.string "zeigt, was hip ist und abgeht.\p"
.string "Ich habe nichts mehr in petto.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0D75:: @ 81B0D75
+gTextHipster_HaveYouHeardAbout:: @ 81B0D75
.string "Hast du schon von\n"
.string "“{STR_VAR_1}” gehört?\p"
.string "Was das heißt? Ähäm...\n"
diff --git a/data-de/text/storyteller.inc b/data-de/text/storyteller.inc
index ee2068766..abcc8a4a8 100644
--- a/data-de/text/storyteller.inc
+++ b/data-de/text/storyteller.inc
@@ -1,25 +1,25 @@
-MauvilleCity_PokemonCenter_1F_Text_1AECC6:: @ 81AECC6
+gTextStoryteller_Introduction:: @ 81AECC6
.string "Ich bin der GESCHICHTENERZÄHLER.\n"
.string "Ich erzähle dir die Geschichten von\l"
.string "legendären TRAINERN.\p"
.string "Soll ich dir etwas erzählen?$"
-MauvilleCity_PokemonCenter_1F_Text_1AED1D:: @ 81AED1D
+gTextStoryteller_OhIFeelStifled:: @ 81AED1D
.string "Oh...\n"
.string "Keiner mag mich...$"
-MauvilleCity_PokemonCenter_1F_Text_1AED35:: @ 81AED35
+gTextStoryteller_WhichTale:: @ 81AED35
.string "Ich kenne viele dieser Legenden.\n"
.string "Welche möchtest du hören?$"
-MauvilleCity_PokemonCenter_1F_Text_1AED70:: @ 81AED70
+gTextStoryteller_ButIKnowOfNoLegendaryTrainers:: @ 81AED70
.string "Aber ich weiß nichts über legendäre\n"
.string "TRAINER. Also habe ich keine Ge-\l"
.string "schichte auf Lager.\p"
.string "Wo findet man wohl einen TRAINER, der\n"
.string "einer lebenden Legende gleicht?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8
+gTextStoryteller_BirthOfANewLegend:: @ 81AEDE8
.string "Was ist?\n"
.string "Du... Du...\p"
.string "{STR_VAR_2}\n"
@@ -27,39 +27,39 @@ MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8
.string "Das ist einfach großartig!\n"
.string "Die Geburt einer neuen Legende!$"
-MauvilleCity_PokemonCenter_1F_Text_1AEE50:: @ 81AEE50
+gTextStoryteller_CouldThereBeOtherTrainers:: @ 81AEE50
.string "Ich überlege, ob es nicht noch andere\n"
.string "TRAINER gibt, die mir beeindruckende\l"
.string "Geschichten erzählen können.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEEB4:: @ 81AEEB4
+gTextStoryteller_HaveYouAnyTales:: @ 81AEEB4
.string "Bist du ein TRAINER?\p"
.string "Dann sag mir, ob du Geschichten\n"
.string "für mich hast, die legendär sind?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEF0A:: @ 81AEF0A
+gTextStoryteller_HearAnotherLegendaryTale:: @ 81AEF0A
.string "Übrigens... Möchtest du eine weitere\n"
.string "legendäre Geschichte hören?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEF49:: @ 81AEF49
+gTextStoryteller_ImNotSatisfied:: @ 81AEF49
.string "Hmm...\n"
.string "Ich bin nicht zufrieden...\p"
.string "Ich wünschte, du würdest mir Neuig-\n"
.string "keiten erzählen, die den Titel Legende\l"
.string "verdienen.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEFA5:: @ 81AEFA5
+gTextStoryteller_WishMorePeopleWould:: @ 81AEFA5
.string "Ich wollte, mehr Leute würden sich für\n"
.string "meine epischen Geschichten über\l"
.string "legendäre TRAINER interessieren.$"
-UnknownString_81AEFFC:: @ 81AEFFC
+gTextStoryteller_Story1Title:: @ 81AEFFC
.string "Der speicherfreudige TRAINER$"
-UnknownString_81AF013:: @ 81AF013
+gTextStoryteller_Story1Action:: @ 81AF013
.string "Hast das Spiel gespeichert?$"
-UnknownString_81AF022:: @ 81AF022
+gTextStoryteller_Story1Text:: @ 81AF022
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat das Spiel\n"
@@ -67,13 +67,13 @@ UnknownString_81AF022:: @ 81AF022
.string "Einen vorsichtigeren TRAINER als\n"
.string "{STR_VAR_3} wird man nicht finden!$"
-UnknownString_81AF0A3:: @ 81AF0A3
+gTextStoryteller_Story2Title:: @ 81AF0A3
.string "Der TRAINER als Trendsetter$"
-UnknownString_81AF0BB:: @ 81AF0BB
+gTextStoryteller_Story2Action:: @ 81AF0BB
.string "Hast Trends gesetzt?$"
-UnknownString_81AF0CA:: @ 81AF0CA
+gTextStoryteller_Story2Text:: @ 81AF0CA
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -81,13 +81,13 @@ UnknownString_81AF0CA:: @ 81AF0CA
.string "{STR_VAR_3} setzt den Trend für alle - in\n"
.string "der ganzen HOENN-Region!$"
-UnknownString_81AF149:: @ 81AF149
+gTextStoryteller_Story3Title:: @ 81AF149
.string "Der BEEREN pflanzende TRAINER$"
-UnknownString_81AF164:: @ 81AF164
+gTextStoryteller_Story3Action:: @ 81AF164
.string "Hast BEEREN gepflanzt?$"
-UnknownString_81AF174:: @ 81AF174
+gTextStoryteller_Story3Text:: @ 81AF174
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -95,13 +95,13 @@ UnknownString_81AF174:: @ 81AF174
.string "{STR_VAR_3} ist ein legendärer Lieb-\n"
.string "haber von BEEREN!$"
-UnknownString_81AF1E5:: @ 81AF1E5
+gTextStoryteller_Story4Title:: @ 81AF1E5
.string "Der RAD verrückte TRAINER$"
-UnknownString_81AF1FD:: @ 81AF1FD
+gTextStoryteller_Story4Action:: @ 81AF1FD
.string "Hast RÄDER getauscht?$"
-UnknownString_81AF20A:: @ 81AF20A
+gTextStoryteller_Story4Text:: @ 81AF20A
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -109,13 +109,13 @@ UnknownString_81AF20A:: @ 81AF20A
.string "{STR_VAR_3} ist ein TRAINER, dessen\n"
.string "Passion das RADfahren ist!$"
-UnknownString_81AF281:: @ 81AF281
+gTextStoryteller_Story5Title:: @ 81AF281
.string "Der Interviews gebende TRAINER$"
-UnknownString_81AF299:: @ 81AF299
+gTextStoryteller_Story5Action:: @ 81AF299
.string "Hast Interviews gegeben?$"
-UnknownString_81AF2A9:: @ 81AF2A9
+gTextStoryteller_Story5Text:: @ 81AF2A9
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER wurde {STR_VAR_1}-mal\n"
@@ -123,13 +123,13 @@ UnknownString_81AF2A9:: @ 81AF2A9
.string "{STR_VAR_3} ist ein TRAINER, der überall\n"
.string "Aufmerksamkeit erregt!$"
-UnknownString_81AF32C:: @ 81AF32C
+gTextStoryteller_Story6Title:: @ 81AF32C
.string "Der kampfliebende TRAINER$"
-UnknownString_81AF345:: @ 81AF345
+gTextStoryteller_Story6Action:: @ 81AF345
.string "Hast oft gekämpft?$"
-UnknownString_81AF34D:: @ 81AF34D
+gTextStoryteller_Story6Text:: @ 81AF34D
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -137,13 +137,13 @@ UnknownString_81AF34D:: @ 81AF34D
.string "{STR_VAR_3} ist ein TRAINER, der zu\n"
.string "einem Kampf nicht nein sagt!$"
-UnknownString_81AF3D0:: @ 81AF3D0
+gTextStoryteller_Story7Title:: @ 81AF3D0
.string "Der POKéMON fangende TRAINER$"
-UnknownString_81AF3ED:: @ 81AF3ED
+gTextStoryteller_Story7Action:: @ 81AF3ED
.string "Hast POKéMON gefangen?$"
-UnknownString_81AF3FC:: @ 81AF3FC
+gTextStoryteller_Story7Text:: @ 81AF3FC
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}\n"
@@ -151,13 +151,13 @@ UnknownString_81AF3FC:: @ 81AF3FC
.string "{STR_VAR_3} ist ein legendärer Fänger\n"
.string "von POKéMON!$"
-UnknownString_81AF46D:: @ 81AF46D
+gTextStoryteller_Story8Title:: @ 81AF46D
.string "Der angelnde TRAINER$"
-UnknownString_81AF481:: @ 81AF481
+gTextStoryteller_Story8Action:: @ 81AF481
.string "Hast POKéMON mit einer ANGEL gefangen?$"
-UnknownString_81AF49B:: @ 81AF49B
+gTextStoryteller_Story8Text:: @ 81AF49B
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}\n"
@@ -165,13 +165,13 @@ UnknownString_81AF49B:: @ 81AF49B
.string "{STR_VAR_3} ist ein legendärer Angel-\n"
.string "experte!$"
-UnknownString_81AF511:: @ 81AF511
+gTextStoryteller_Story9Title:: @ 81AF511
.string "Der EIER wärmende TRAINER$"
-UnknownString_81AF529:: @ 81AF529
+gTextStoryteller_Story9Action:: @ 81AF529
.string "Hast EIER ausgebrütet?$"
-UnknownString_81AF536:: @ 81AF536
+gTextStoryteller_Story9Text:: @ 81AF536
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Es passierte {STR_VAR_1}-mal, dass der TRAINER\n"
@@ -179,13 +179,13 @@ UnknownString_81AF536:: @ 81AF536
.string "{STR_VAR_3} ist ein legendärer Pfleger\n"
.string "von EIERN!$"
-UnknownString_81AF5A9:: @ 81AF5A9
+gTextStoryteller_Story10Title:: @ 81AF5A9
.string "Der TRAINER der Entwicklungen$"
-UnknownString_81AF5BD:: @ 81AF5BD
+gTextStoryteller_Story10Action:: @ 81AF5BD
.string "Hast POKéMON sich entwickeln lassen?$"
-UnknownString_81AF5CD:: @ 81AF5CD
+gTextStoryteller_Story10Text:: @ 81AF5CD
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}\n"
@@ -193,13 +193,13 @@ UnknownString_81AF5CD:: @ 81AF5CD
.string "{STR_VAR_3} ist der ultimative Ent-\n"
.string "wickler von POKéMON!$"
-UnknownString_81AF63F:: @ 81AF63F
+gTextStoryteller_Story11Title:: @ 81AF63F
.string "Der PKMN-CENTER liebende TRAINER$"
-UnknownString_81AF661:: @ 81AF661
+gTextStoryteller_Story11Action:: @ 81AF661
.string "Gingst in ein POKéMON-CENTER?$"
-UnknownString_81AF676:: @ 81AF676
+gTextStoryteller_Story11Text:: @ 81AF676
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat POKéMON\n"
@@ -208,13 +208,13 @@ UnknownString_81AF676:: @ 81AF676
.string "Es gibt keinen größeren Fan der\n"
.string "POKéMON-CENTER als {STR_VAR_3}!$"
-UnknownString_81AF711:: @ 81AF711
+gTextStoryteller_Story12Title:: @ 81AF711
.string "Der gastfreundliche TRAINER$"
-UnknownString_81AF726:: @ 81AF726
+gTextStoryteller_Story12Action:: @ 81AF726
.string "POKéMON haben sich bei dir erholt?$"
-UnknownString_81AF73D:: @ 81AF73D
+gTextStoryteller_Story12Text:: @ 81AF73D
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat POKéMON\n"
@@ -223,13 +223,13 @@ UnknownString_81AF73D:: @ 81AF73D
.string "Kein TRAINER ist so gastfreundlich\n"
.string "wie {STR_VAR_3}!$"
-UnknownString_81AF7BF:: @ 81AF7BF
+gTextStoryteller_Story13Title:: @ 81AF7BF
.string "Der SAFARI liebende TRAINER$"
-UnknownString_81AF7D9:: @ 81AF7D9
+gTextStoryteller_Story13Action:: @ 81AF7D9
.string "Bist in die SAFARI-ZONE gegangen?$"
-UnknownString_81AF7F1:: @ 81AF7F1
+gTextStoryteller_Story13Text:: @ 81AF7F1
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER ist {STR_VAR_1}-mal in die\n"
@@ -238,13 +238,13 @@ UnknownString_81AF7F1:: @ 81AF7F1
.string "wilde Seite in der SAFARI-ZONE zum\l"
.string "Vorschein kommt!$"
-UnknownString_81AF88A:: @ 81AF88A
+gTextStoryteller_Story14Title:: @ 81AF88A
.string "Der TRAINER als ZERSCHNEIDER$"
-UnknownString_81AF8A1:: @ 81AF8A1
+gTextStoryteller_Story14Action:: @ 81AF8A1
.string "Hast ZERSCHNEIDER eingesetzt?$"
-UnknownString_81AF8AA:: @ 81AF8AA
+gTextStoryteller_Story14Text:: @ 81AF8AA
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -252,13 +252,13 @@ UnknownString_81AF8AA:: @ 81AF8AA
.string "{STR_VAR_3} ist ein TRAINER, der es\n"
.string "liebt, etwas zu ZERSCHNEIDEN.$"
-UnknownString_81AF91B:: @ 81AF91B
+gTextStoryteller_Story15Title:: @ 81AF91B
.string "Der TRAINER als ZERTRÜMMERER$"
-UnknownString_81AF935:: @ 81AF935
+gTextStoryteller_Story15Action:: @ 81AF935
.string "Hast Felsen ZERTRÜMMERT?$"
-UnknownString_81AF943:: @ 81AF943
+gTextStoryteller_Story15Text:: @ 81AF943
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -266,13 +266,13 @@ UnknownString_81AF943:: @ 81AF943
.string "{STR_VAR_3} ist ein TRAINER, der keinen\n"
.string "Felsen unbeschädigt lassen kann.$"
-UnknownString_81AF9C8:: @ 81AF9C8
+gTextStoryteller_Story16Title:: @ 81AF9C8
.string "Der Umzüge liebende TRAINER$"
-UnknownString_81AF9E0:: @ 81AF9E0
+gTextStoryteller_Story16Action:: @ 81AF9E0
.string "Bist du mit der GEHEIMBASIS umgezogen?$"
-UnknownString_81AF9F6:: @ 81AF9F6
+gTextStoryteller_Story16Text:: @ 81AF9F6
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER ist {STR_VAR_1}-mal mit\n"
@@ -280,13 +280,13 @@ UnknownString_81AF9F6:: @ 81AF9F6
.string "{STR_VAR_3} ist ein TRAINER, der es\n"
.string "liebt, sich ein neues Haus einzurichten.$"
-UnknownString_81AFA79:: @ 81AFA79
+gTextStoryteller_Story17Title:: @ 81AFA79
.string "Der PLATSCHER des TRAINERS$"
-UnknownString_81AFA92:: @ 81AFA92
+gTextStoryteller_Story17Action:: @ 81AFA92
.string "Hast PLATSCHER eingesetzt?$"
-UnknownString_81AFA9E:: @ 81AFA9E
+gTextStoryteller_Story17Text:: @ 81AFA9E
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -294,13 +294,13 @@ UnknownString_81AFA9E:: @ 81AFA9E
.string "{STR_VAR_3} ist ein TRAINER, der es\n"
.string "liebt, zu PLATSCHEN.$"
-UnknownString_81AFB17:: @ 81AFB17
+gTextStoryteller_Story18Title:: @ 81AFB17
.string "Der verbissene TRAINER$"
-UnknownString_81AFB2D:: @ 81AFB2D
+gTextStoryteller_Story18Action:: @ 81AFB2D
.string "Hast VERZWEIFLER angewendet?$"
-UnknownString_81AFB48:: @ 81AFB48
+gTextStoryteller_Story18Text:: @ 81AFB48
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat sich {STR_VAR_1}-mal\n"
@@ -308,13 +308,13 @@ UnknownString_81AFB48:: @ 81AFB48
.string "{STR_VAR_3}... Ein verbissener TRAINER,\n"
.string "der auch in der Not nicht aufgibt.$"
-UnknownString_81AFBD8:: @ 81AFBD8
+gTextStoryteller_Story19Title:: @ 81AFBD8
.string "Der König der EINARMIGEN BANDITEN$"
-UnknownString_81AFBE7:: @ 81AFBE7
+gTextStoryteller_Story19Action:: @ 81AFBE7
.string "Hast den EINARMIGEN BANDITEN besiegt?$"
-UnknownString_81AFC04:: @ 81AFC04
+gTextStoryteller_Story19Text:: @ 81AFC04
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -322,13 +322,13 @@ UnknownString_81AFC04:: @ 81AFC04
.string "{STR_VAR_3}... Ein TRAINER, der am\n"
.string "EINARMIGEN BANDITEN Glück hat.$"
-UnknownString_81AFC8A:: @ 81AFC8A
+gTextStoryteller_Story20Title:: @ 81AFC8A
.string "Der König des ROULETTES$"
-UnknownString_81AFC9D:: @ 81AFC9D
+gTextStoryteller_Story20Action:: @ 81AFC9D
.string "Hast in Folge beim ROULETTE gewonnen,$"
-UnknownString_81AFCBE:: @ 81AFCBE
+gTextStoryteller_Story20Text:: @ 81AFCBE
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal in Folge\n"
@@ -336,13 +336,13 @@ UnknownString_81AFCBE:: @ 81AFCBE
.string "{STR_VAR_3}... Ein TRAINER, dem die Kugel\n"
.string "beim ROULETTE gehorcht.$"
-UnknownString_81AFD44:: @ 81AFD44
+gTextStoryteller_Story21Title:: @ 81AFD44
.string "Der Herausforderer im DUELLTURM$"
-UnknownString_81AFD60:: @ 81AFD60
+gTextStoryteller_Story21Action:: @ 81AFD60
.string "Hast Gegner im DUELLTURM gefordert?$"
-UnknownString_81AFD80:: @ 81AFD80
+gTextStoryteller_Story21Text:: @ 81AFD80
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal Gegner\n"
@@ -350,13 +350,13 @@ UnknownString_81AFD80:: @ 81AFD80
.string "{STR_VAR_3}... Ein TRAINER, der im DUELL-\n"
.string "TURM nach Perfektion strebt.$"
-UnknownString_81AFE1D:: @ 81AFE1D
+gTextStoryteller_Story22Title:: @ 81AFE1D
.string "Der mixende TRAINER$"
-UnknownString_81AFE36:: @ 81AFE36
+gTextStoryteller_Story22Action:: @ 81AFE36
.string "Hast {POKEBLOCK} hergestellt?$"
-UnknownString_81AFE42:: @ 81AFE42
+gTextStoryteller_Story22Text:: @ 81AFE42
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -364,13 +364,13 @@ UnknownString_81AFE42:: @ 81AFE42
.string "Niemand bedient den BEERENMIXER\n"
.string "besser als {STR_VAR_3}.$"
-UnknownString_81AFEC2:: @ 81AFEC2
+gTextStoryteller_Story23Title:: @ 81AFEC2
.string "Der Fan der WETTBEWERBE$"
-UnknownString_81AFEDD:: @ 81AFEDD
+gTextStoryteller_Story23Action:: @ 81AFEDD
.string "Hast an WETTBEWERBEN teilgenommen?$"
-UnknownString_81AFEEE:: @ 81AFEEE
+gTextStoryteller_Story23Text:: @ 81AFEEE
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -378,13 +378,13 @@ UnknownString_81AFEEE:: @ 81AFEEE
.string "{STR_VAR_3} liebt es, anderen seine\n"
.string "POKéMON zu zeigen.$"
-UnknownString_81AFF68:: @ 81AFF68
+gTextStoryteller_Story24Title:: @ 81AFF68
.string "Der Meister der WETTBEWERBE$"
-UnknownString_81AFF7B:: @ 81AFF7B
+gTextStoryteller_Story24Action:: @ 81AFF7B
.string "Hast WETTBEWERBE gewonnen?$"
-UnknownString_81AFF88:: @ 81AFF88
+gTextStoryteller_Story24Text:: @ 81AFF88
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -392,26 +392,26 @@ UnknownString_81AFF88:: @ 81AFF88
.string "{STR_VAR_3} ist ein unvergleichlicher\n"
.string "Meister der WETTBEWERBE.$"
-UnknownString_81AFFFB:: @ 81AFFFB
+gTextStoryteller_Story25Title:: @ 81AFFFB
.string "Der glückliche Einkäufer$"
-UnknownString_81B000D:: @ 81B000D
+gTextStoryteller_Story25Action:: @ 81B000D
.string "Bist einkaufen gegangen?$"
-UnknownString_81B0015:: @ 81B0015
+gTextStoryteller_Story25Text:: @ 81B0015
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
.string "in einem Geschäft Items gekauft!\p"
.string "{STR_VAR_3} ein geborener Einkäufer.$"
-UnknownString_81B009D:: @ 81B009D
+gTextStoryteller_Story26Title:: @ 81B009D
.string "Der TRAINER, der Items findet$"
-UnknownString_81B00B6:: @ 81B00B6
+gTextStoryteller_Story26Action:: @ 81B00B6
.string "Hast den DETEKTOR eingesetzt?$"
-UnknownString_81B00C9:: @ 81B00C9
+gTextStoryteller_Story26Text:: @ 81B00C9
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -419,13 +419,13 @@ UnknownString_81B00C9:: @ 81B00C9
.string "{STR_VAR_3} liebt es, den Boden nach\n"
.string "verborgenen Items abzusuchen.$"
-UnknownString_81B014D:: @ 81B014D
+gTextStoryteller_Story27Title:: @ 81B014D
.string "Der regennasse TRAINER$"
-UnknownString_81B0165:: @ 81B0165
+gTextStoryteller_Story27Action:: @ 81B0165
.string "Wurdest nass geregnet?$"
-UnknownString_81B0173:: @ 81B0173
+gTextStoryteller_Story27Text:: @ 81B0173
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER wurde {STR_VAR_1}-mal\n"
@@ -433,13 +433,13 @@ UnknownString_81B0173:: @ 81B0173
.string "Das Charisma von {STR_VAR_3} zieht\n"
.string "sogar den Regen an.$"
-UnknownString_81B01E9:: @ 81B01E9
+gTextStoryteller_Story28Title:: @ 81B01E9
.string "Der passionierte POKéDEX-Leser$"
-UnknownString_81B0201:: @ 81B0201
+gTextStoryteller_Story28Action:: @ 81B0201
.string "Hast im POKéDEX nachgeschlagen?$"
-UnknownString_81B0213:: @ 81B0213
+gTextStoryteller_Story28Text:: @ 81B0213
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -447,13 +447,13 @@ UnknownString_81B0213:: @ 81B0213
.string "{STR_VAR_3} liebt es, alles über\n"
.string "POKéMON im POKéDEX nachzulesen.$"
-UnknownString_81B0290:: @ 81B0290
+gTextStoryteller_Story29Title:: @ 81B0290
.string "Der Sammler der BÄNDER$"
-UnknownString_81B02A5:: @ 81B02A5
+gTextStoryteller_Story29Action:: @ 81B02A5
.string "Hast BÄNDER erhalten?$"
-UnknownString_81B02B6:: @ 81B02B6
+gTextStoryteller_Story29Text:: @ 81B02B6
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}\n"
@@ -461,13 +461,13 @@ UnknownString_81B02B6:: @ 81B02B6
.string "{STR_VAR_3} ist ein TRAINER, der es\n"
.string "liebt, BÄNDER zu sammeln.$"
-UnknownString_81B0337:: @ 81B0337
+gTextStoryteller_Story30Title:: @ 81B0337
.string "Der springende TRAINER$"
-UnknownString_81B0351:: @ 81B0351
+gTextStoryteller_Story30Action:: @ 81B0351
.string "Bist Absätze heruntergesprungen?$"
-UnknownString_81B0364:: @ 81B0364
+gTextStoryteller_Story30Text:: @ 81B0364
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER ist {STR_VAR_1}-mal\n"
@@ -476,26 +476,26 @@ UnknownString_81B0364:: @ 81B0364
.string "TRAINER {STR_VAR_3} einfach hinab-\l"
.string "springen.$"
-UnknownString_81B03E9:: @ 81B03E9
+gTextStoryteller_Story31Title:: @ 81B03E9
.string "Der legendäre Fernsehzuschauer$"
-UnknownString_81B0401:: @ 81B0401
+gTextStoryteller_Story31Action:: @ 81B0401
.string "Hast ferngeschaut?$"
-UnknownString_81B040C:: @ 81B040C
+gTextStoryteller_Story31Text:: @ 81B040C
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
.string "Fernsehen geschaut!\p"
.string "{STR_VAR_3} liebt es, fernzusehen.$"
-UnknownString_81B046E:: @ 81B046E
+gTextStoryteller_Story32Title:: @ 81B046E
.string "Der zeitbewusste TRAINER$"
-UnknownString_81B0489:: @ 81B0489
+gTextStoryteller_Story32Action:: @ 81B0489
.string "Hast nach der Uhrzeit gesehen?$"
-UnknownString_81B049A:: @ 81B049A
+gTextStoryteller_Story32Text:: @ 81B049A
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -503,13 +503,13 @@ UnknownString_81B049A:: @ 81B049A
.string "{STR_VAR_3} ist ein pünktlicher\n"
.string "TRAINER, der sich der Zeit bewusst ist.$"
-UnknownString_81B0523:: @ 81B0523
+gTextStoryteller_Story33Title:: @ 81B0523
.string "Der Zauberer der POKéMON-LOTTERIE$"
-UnknownString_81B053E:: @ 81B053E
+gTextStoryteller_Story33Action:: @ 81B053E
.string "Hast in der LOTTERIE gewonnen?$"
-UnknownString_81B0554:: @ 81B0554
+gTextStoryteller_Story33Text:: @ 81B0554
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -517,13 +517,13 @@ UnknownString_81B0554:: @ 81B0554
.string "TRAINER {STR_VAR_3} hat viele Freunde,\n"
.string "die mit ihm POKéMON tauschen.$"
-UnknownString_81B05D8:: @ 81B05D8
+gTextStoryteller_Story34Title:: @ 81B05D8
.string "Der TRAINER und die PENSION$"
-UnknownString_81B05F3:: @ 81B05F3
+gTextStoryteller_Story34Action:: @ 81B05F3
.string "Hast POKéMON in die PENSION gebracht?$"
-UnknownString_81B0610:: @ 81B0610
+gTextStoryteller_Story34Text:: @ 81B0610
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
@@ -532,13 +532,13 @@ UnknownString_81B0610:: @ 81B0610
.string "alles für die Entwicklung seiner\l"
.string "POKéMON tut.$"
-UnknownString_81B06A9:: @ 81B06A9
+gTextStoryteller_Story35Title:: @ 81B06A9
.string "Der SEILBAHN verrückte TRAINER$"
-UnknownString_81B06C6:: @ 81B06C6
+gTextStoryteller_Story35Action:: @ 81B06C6
.string "Bist mit der SEILBAHN gefahren?$"
-UnknownString_81B06D9:: @ 81B06D9
+gTextStoryteller_Story35Text:: @ 81B06D9
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER ist {STR_VAR_1}-mal\n"
@@ -547,13 +547,13 @@ UnknownString_81B06D9:: @ 81B06D9
.string "TRAINER, der ständig rauf und runter\l"
.string "fährt.$"
-UnknownString_81B0763:: @ 81B0763
+gTextStoryteller_Story36Title:: @ 81B0763
.string "Der Liebhaber der Heißen Quellen$"
-UnknownString_81B0781:: @ 81B0781
+gTextStoryteller_Story36Action:: @ 81B0781
.string "Hast in den Heißen Quellen gebadet?$"
-UnknownString_81B0797:: @ 81B0797
+gTextStoryteller_Story36Text:: @ 81B0797
.string "Dies ist die Geschichte eines TRAINERS\n"
.string "namens {STR_VAR_3}.\p"
.string "Dieser TRAINER hat {STR_VAR_1}-mal\n"
diff --git a/data-de/text/trader.inc b/data-de/text/trader.inc
index adf5d3aeb..dae453e8b 100644
--- a/data-de/text/trader.inc
+++ b/data-de/text/trader.inc
@@ -1,58 +1,58 @@
-MauvilleCity_PokemonCenter_1F_Text_1AE88F:: @ 81AE88F
+gTextTrader_Introduction:: @ 81AE88F
.string "Hallo! Ich bin der HÄNDLER. Möchtest\n"
.string "du Dekorationen mit mir tauschen?$"
-MauvilleCity_PokemonCenter_1F_Text_1AE8C6:: @ 81AE8C6
+gTextTrader_FeelUnwanted1:: @ 81AE8C6
.string "Oh...\n"
.string "Ich fühle mich überflüssig...$"
-MauvilleCity_PokemonCenter_1F_Text_1AE8DF:: @ 81AE8DF
+gTextTrader_TradedAlready:: @ 81AE8DF
.string "Aber wir beide haben doch bereits\n"
.string "Dekorationen ausgetauscht.$"
-MauvilleCity_PokemonCenter_1F_Text_1AE910:: @ 81AE910
+gTextTrader_MenuPrompt:: @ 81AE910
.string "Wenn du etwas Dekoratives siehst, das\n"
.string "du haben möchtest, lass es mich wissen.$"
-MauvilleCity_PokemonCenter_1F_Text_1AE950:: @ 81AE950
+gTextTrader_DontWantAnything:: @ 81AE950
.string "Du möchtest nichts haben?\n"
.string "Ich fühle mich so überflüssig...$"
-MauvilleCity_PokemonCenter_1F_Text_1AE97C:: @ 81AE97C
+gTextTrader_ItemOnceBelongedTo:: @ 81AE97C
.string "Das dekorative Item gehörte einst\n"
.string "{STR_VAR_1}.\p"
.string "Möchtest du es haben?$"
-MauvilleCity_PokemonCenter_1F_Text_1AE9B6:: @ 81AE9B6
+gTextTrader_YouDontHaveDecorations:: @ 81AE9B6
.string "Äh... Warte eine Sekunde. Du hast über-\n"
.string "haupt kein dekoratives Item!$"
-MauvilleCity_PokemonCenter_1F_Text_1AE9F8:: @ 81AE9F8
+gTextTrader_PickDecorationYoullTrade:: @ 81AE9F8
.string "Okay, wähle die Dekoration aus, die du\n"
.string "mit mir tauschen willst.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEA2B:: @ 81AEA2B
+gTextTrader_FeelUnwanted2:: @ 81AEA2B
.string "Du willst nicht mit mir tauschen?\n"
.string "Ich fühle mich überflüssig...$"
-MauvilleCity_PokemonCenter_1F_Text_1AEA57:: @ 81AEA57
+gTextTrader_NoRoomForThis:: @ 81AEA57
.string "Du hast keinen Platz mehr für eine/n\n"
.string "{STR_VAR_2}.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEA9B:: @ 81AEA9B
+gTextTrader_SoWellTrade:: @ 81AEA9B
.string "Okay, dann lass uns tauschen:\n"
.string "{STR_VAR_3} gegen\l"
.string "{STR_VAR_2}!$"
-MauvilleCity_PokemonCenter_1F_Text_1AEAC3:: @ 81AEAC3
+gTextTrader_InUseYouCantTradeIt:: @ 81AEAC3
.string "Dieses Dekorationsstück ist im Ge-\n"
.string "brauch. Das kannst du nicht tauschen.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEAFB:: @ 81AEAFB
+gTextTrader_ThenWellTrade:: @ 81AEAFB
.string "Dann lass uns tauschen! Ich werde meine\n"
.string "Dekorationen auf deinen PC senden.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEB31:: @ 81AEB31
+gTextTrader_ICantTradeThatOneAway:: @ 81AEB31
.string "Huups! Tut mir Leid!\n"
.string "Das ist ein ganz seltenes Stück!\l"
.string "Das kann ich nicht tauschen!\p"
diff --git a/data/battle_811DA74.s b/data/battle_811DA74.s
deleted file mode 100644
index 873c76eb9..000000000
--- a/data/battle_811DA74.s
+++ /dev/null
@@ -1,64 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gLinkPartnerBufferCommands:: @ 83FE4F4
- .4byte LinkPartnerHandleGetAttributes
- .4byte sub_811EC04
- .4byte LinkPartnerHandleSetAttributes
- .4byte sub_811F664
- .4byte sub_811F6D8
- .4byte sub_811F7F4
- .4byte sub_811F9D0
- .4byte sub_811FAE4
- .4byte sub_811FC30
- .4byte sub_811FC3C
- .4byte sub_811FCE8
- .4byte sub_811FDCC
- .4byte sub_811FDD8
- .4byte sub_811FDE4
- .4byte sub_811FDF0
- .4byte sub_811FDFC
- .4byte sub_8120094
- .4byte sub_81200F8
- .4byte sub_8120104
- .4byte sub_8120110
- .4byte sub_812011C
- .4byte sub_8120128
- .4byte sub_8120134
- .4byte sub_8120140
- .4byte LinkPartnerHandleHealthBarUpdate
- .4byte LinkPartnerHandleExpBarUpdate
- .4byte LinkPartnerHandleStatusIconUpdate
- .4byte LinkPartnerHandleStatusAnimation
- .4byte sub_8120324
- .4byte sub_8120330
- .4byte sub_812033C
- .4byte sub_8120348
- .4byte sub_8120354
- .4byte sub_8120360
- .4byte sub_812036C
- .4byte sub_8120378
- .4byte sub_8120384
- .4byte sub_8120390
- .4byte sub_81203AC
- .4byte sub_81203E4
- .4byte sub_81203FC
- .4byte LinkPartnerHandleHitAnimation
- .4byte sub_8120494
- .4byte LinkPartnerHandleEffectivenessSound
- .4byte sub_81204E4
- .4byte LinkPartnerHandleFaintingCry
- .4byte dp01t_2E_3_battle_intro
- .4byte sub_8120588
- .4byte dp01t_30_3_80EB11C
- .4byte sub_8120920
- .4byte sub_812096C
- .4byte sub_8120978
- .4byte sub_81209D8
- .4byte sub_8120A40
- .4byte sub_8120A4C
- .4byte sub_8120A58
- .4byte nullsub_75
diff --git a/data/battle_anim_807B69C.s b/data/battle_anim_807B69C.s
deleted file mode 100644
index 0ed7d7cf0..000000000
--- a/data/battle_anim_807B69C.s
+++ /dev/null
@@ -1,23 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gSubspriteTable_83931B8:: @ 83931B8
- subsprite -16, -16, 2, 0, 64x64
- subsprite -16, 48, 2, 64, 64x32
- subsprite 48, -16, 2, 96, 32x64
- subsprite 48, 48, 2, 128, 32x32
-
- .align 2
-gSubspriteTables_83931D8:: @ 83931D8
- .4byte 4, gSubspriteTable_83931B8
-
- .align 2
-gSpriteTemplate_83931E0:: @ 83931E0
- spr_template 10010, 10010, gOamData_837E05C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gSpriteTemplate_83931F8:: @ 83931F8
- spr_template 10136, 10136, gOamData_837DF24, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_807B870
diff --git a/data/battle_anim_81258BC.s b/data/battle_anim_81258BC.s
deleted file mode 100644
index 993adbc2e..000000000
--- a/data/battle_anim_81258BC.s
+++ /dev/null
@@ -1,64 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gSafariBufferCommands:: @ 8402080
- .4byte SafariHandleGetAttributes
- .4byte sub_812B870
- .4byte sub_812B87C
- .4byte sub_812B888
- .4byte sub_812B894
- .4byte sub_812B8A0
- .4byte sub_812B8AC
- .4byte sub_812B8B8
- .4byte sub_812B994
- .4byte sub_812B9A0
- .4byte sub_812B9AC
- .4byte sub_812B9B8
- .4byte sub_812B9C4
- .4byte sub_812BA14
- .4byte sub_812BA70
- .4byte sub_812BA7C
- .4byte SafariHandlePrintString
- .4byte SafariHandlePrintStringPlayerOnly
- .4byte sub_812BB10
- .4byte sub_812BBFC
- .4byte sub_812BC08
- .4byte sub_812BC14
- .4byte sub_812BC54
- .4byte sub_812BC60
- .4byte sub_812BC6C
- .4byte sub_812BC78
- .4byte sub_812BC84
- .4byte sub_812BCC0
- .4byte sub_812BCCC
- .4byte sub_812BCD8
- .4byte sub_812BCE4
- .4byte sub_812BCF0
- .4byte sub_812BCFC
- .4byte sub_812BD08
- .4byte sub_812BD14
- .4byte sub_812BD20
- .4byte sub_812BD2C
- .4byte sub_812BD38
- .4byte sub_812BD44
- .4byte sub_812BD50
- .4byte sub_812BD5C
- .4byte sub_812BD68
- .4byte sub_812BD74
- .4byte sub_812BD80
- .4byte sub_812BDC4
- .4byte sub_812BDF4
- .4byte dp01t_2E_6_battle_intro
- .4byte sub_812BE64
- .4byte sub_812BEB0
- .4byte sub_812BEBC
- .4byte sub_812BEC8
- .4byte sub_812BED4
- .4byte sub_812BEE0
- .4byte sub_812BF3C
- .4byte sub_812BF48
- .4byte sub_812BF54
- .4byte nullsub_78
diff --git a/data/battle_anim_8137220.s b/data/battle_anim_8137220.s
deleted file mode 100644
index c1673af9a..000000000
--- a/data/battle_anim_8137220.s
+++ /dev/null
@@ -1,64 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gWallyBufferCommands:: @ 84061A4
- .4byte dp01t_00_5_getattr
- .4byte sub_8138230
- .4byte sub_813823C
- .4byte sub_8138C90
- .4byte sub_8138C9C
- .4byte sub_8138CA8
- .4byte sub_8138CB4
- .4byte sub_8138D38
- .4byte sub_8138E04
- .4byte sub_8138ED0
- .4byte sub_8138EDC
- .4byte sub_8138EE8
- .4byte sub_8138EF4
- .4byte sub_8138F44
- .4byte sub_8138FA0
- .4byte sub_8138FAC
- .4byte sub_8139208
- .4byte dp01t_11_5_message_for_player_only
- .4byte sub_8139298
- .4byte sub_8139378
- .4byte sub_8139384
- .4byte sub_81393EC
- .4byte sub_813942C
- .4byte sub_8139438
- .4byte sub_8139444
- .4byte sub_8139544
- .4byte sub_8139550
- .4byte sub_813955C
- .4byte sub_8139568
- .4byte sub_8139574
- .4byte sub_8139580
- .4byte sub_813958C
- .4byte sub_8139598
- .4byte sub_81395A4
- .4byte sub_81395B0
- .4byte sub_81395BC
- .4byte sub_81395C8
- .4byte sub_81395D4
- .4byte sub_81395E0
- .4byte sub_81395EC
- .4byte sub_81395F8
- .4byte sub_8139604
- .4byte sub_8139674
- .4byte sub_8139680
- .4byte sub_81396B0
- .4byte sub_81396E0
- .4byte dp01t_2E_5_battle_intro
- .4byte sub_8139750
- .4byte sub_8139AA0
- .4byte sub_8139B20
- .4byte sub_8139B2C
- .4byte sub_8139B38
- .4byte sub_8139B44
- .4byte sub_8139BA0
- .4byte sub_8139BAC
- .4byte sub_8139BB8
- .4byte nullsub_80
diff --git a/data/battle_moves.inc b/data/battle_moves.s
index ff7e2cb33..ea32446d2 100644
--- a/data/battle_moves.inc
+++ b/data/battle_moves.s
@@ -1,3 +1,8 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
.align 2
gBattleMoves:: @ 81FB12C
@ NONE
diff --git a/data/battle_scripts_1.s b/data/battle_scripts_1.s
index fbb0826fc..e046794b3 100644
--- a/data/battle_scripts_1.s
+++ b/data/battle_scripts_1.s
@@ -4,7 +4,7 @@
.section script_data, "aw", %progbits
-gUnknown_081D6BBC:: @ 81D6BBC
+gBattleScriptsEffectsTable:: @ 81D6BBC
.4byte MoveEffect_Hit
.4byte MoveEffect_Sleep
.4byte MoveEffect_PoisonHit
@@ -305,11 +305,11 @@ MoveEffect_Sleep: @ 81D6F81
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
jumpifstatus TARGET, SLP, BattleScript_1D6FC4
jumpifcannotsleep BattleScript_1D6FE0
- jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 0
+ jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 0
jumpifhalverset TARGET, 32, BattleScript_1D9037
attackanimation
waitanimation
@@ -638,9 +638,9 @@ MoveEffect_Roar: @ 81D72C5
ppreduce
jumpifability TARGET, ABILITY_SUCTION_CUPS, BattleScript_1D988D
jumpifspecialstatusflag TARGET, 0x400, 0, BattleScript_1D93EC
- accuracycheck BattleScript_1D83D6, 65535
+ accuracycheck BattleScript_ButItFailed, 65535
accuracycheck BattleScript_1D6F77, 0
- forcerandomswitch BattleScript_1D83D6
+ forcerandomswitch BattleScript_ButItFailed
MoveEffect_MultiHit: @ 81D72ED
attackcanceler
@@ -707,7 +707,7 @@ MoveEffect_Conversion: @ 81D73B1
attackcanceler
attackstring
ppreduce
- changetypestoenemyattacktype BattleScript_1D83D6
+ changetypestoenemyattacktype BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_TypeTransform
@@ -737,13 +737,13 @@ MoveEffect_Toxic: @ 81D73F4
attackstring
ppreduce
jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_1D7463
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
jumpifstatus TARGET, PSN, BattleScript_1D7455
jumpifstatus TARGET, TOX, BattleScript_1D7455
- jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
+ jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
jumpiftype TARGET, TYPE_POISON, BattleScript_1D83E8
jumpiftype TARGET, TYPE_STEEL, BattleScript_1D83E8
- accuracycheck BattleScript_1D83D6, 0
+ accuracycheck BattleScript_ButItFailed, 0
jumpifhalverset TARGET, 32, BattleScript_1D9037
attackanimation
waitanimation
@@ -810,7 +810,7 @@ MoveEffect_Ohko: @ 81D74E4
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 65535
+ accuracycheck BattleScript_ButItFailed, 65535
atk6
jumpifbyte 4, 0x2024c68, 41, BattleScript_1D6F48
koplussomethings BattleScript_1D7505
@@ -939,7 +939,7 @@ MoveEffect_FocusEnergy: @ 81D7689
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus USER, S_FOCUS_ENERGY, BattleScript_1D83D6
+ jumpifsecondarytstatus USER, S_FOCUS_ENERGY, BattleScript_ButItFailed
setincreasedcriticalchance
attackanimation
waitanimation
@@ -958,9 +958,9 @@ MoveEffect_Confuse: @ 81D76BF
attackstring
ppreduce
jumpifability TARGET, ABILITY_OWN_TEMPO, BattleScript_1D98E5
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
jumpifsecondarytstatus TARGET, S_CONFUSED, BattleScript_1D76FE
- accuracycheck BattleScript_1D83D6, 0
+ accuracycheck BattleScript_ButItFailed, 0
jumpifhalverset TARGET, 32, BattleScript_1D9037
attackanimation
waitanimation
@@ -1041,13 +1041,13 @@ MoveEffect_Poison: @ 81D7795
attackstring
ppreduce
jumpifability TARGET, ABILITY_IMMUNITY, BattleScript_1D7463
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
jumpifstatus TARGET, PSN, BattleScript_1D7455
jumpifstatus TARGET, TOX, BattleScript_1D7455
jumpiftype TARGET, TYPE_POISON, BattleScript_1D83E8
jumpiftype TARGET, TYPE_STEEL, BattleScript_1D83E8
- jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 0
+ jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 0
jumpifhalverset TARGET, 32, BattleScript_1D9037
attackanimation
waitanimation
@@ -1062,12 +1062,12 @@ MoveEffect_Paralyze: @ 81D77F6
attackstring
ppreduce
jumpifability TARGET, ABILITY_LIMBER, BattleScript_1D7859
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
atk6
- jumpifbyte 4, 0x2024c68, 41, BattleScript_1D83D6
+ jumpifbyte 4, 0x2024c68, 41, BattleScript_ButItFailed
jumpifstatus TARGET, PAR, BattleScript_1D784B
- jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 0
+ jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 0
jumpifhalverset TARGET, 32, BattleScript_1D9037
attackanimation
waitanimation
@@ -1168,7 +1168,7 @@ MoveEffect_Recharge: @ 81D7943
setbyte 0x2024d21, 221
jump BattleScript_1D6F42
-gUnknown_081D7956:: @ 81D7956
+BattleScript_MoveUsedMustRecharge:: @ 81D7956
printstring BATTLE_TEXT_MustRecharge
waitmessage 64
jump BattleScript_EndTurn
@@ -1190,9 +1190,9 @@ MoveEffect_Mimic: @ 81D7988
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 65535
- copyattack BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 65535
+ copyattack BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_LearnedMove2
@@ -1214,7 +1214,7 @@ MoveEffect_LeechSeed: @ 81D79C2
attackstring
pause 32
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
accuracycheck BattleScript_1D79D9, 0
BattleScript_1D79D9: @ 81D79D9
@@ -1240,8 +1240,8 @@ MoveEffect_Disable: @ 81D79FB
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 0
- disablelastusedattack BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 0
+ disablelastusedattack BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_MoveWasDisabled
@@ -1285,7 +1285,7 @@ MoveEffect_Encore: @ 81D7A5D
accuracycheck BattleScript_1D6F72, 0
attackstring
ppreduce
- setencore BattleScript_1D83D6
+ setencore BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_EncoreGot
@@ -1296,8 +1296,8 @@ MoveEffect_PainSplit: @ 81D7A79
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 65535
- painsplitdamagecalculator BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 65535
+ painsplitdamagecalculator BattleScript_ButItFailed
attackanimation
waitanimation
orword 0x2024c6c, 0x100
@@ -1315,7 +1315,7 @@ MoveEffect_Snore: @ 81D7AB0
jumpifstatus USER, SLP, BattleScript_1D7AC2
attackstring
ppreduce
- jump BattleScript_1D83D6
+ jump BattleScript_ButItFailed
BattleScript_1D7AC2: @ 81D7AC2
jumpifhalfword 0, 0x2024be8, 214, BattleScript_1D7AD6
@@ -1334,7 +1334,7 @@ MoveEffect_Conversion2: @ 81D7AEA
attackcanceler
attackstring
ppreduce
- settypetorandomresistance BattleScript_1D83D6
+ settypetorandomresistance BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_TypeTransform
@@ -1345,8 +1345,8 @@ MoveEffect_LockOn: @ 81D7AFF
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 0
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 0
setalwayshitflag
attackanimation
waitanimation
@@ -1358,8 +1358,8 @@ MoveEffect_Sketch: @ 81D7B21
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
- copymovepermanently BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
+ copymovepermanently BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_SketchedMove
@@ -1371,7 +1371,7 @@ MoveEffect_SleepTalk: @ 81D7B40
jumpifstatus USER, SLP, BattleScript_1D7B52
attackstring
ppreduce
- jump BattleScript_1D83D6
+ jump BattleScript_ButItFailed
BattleScript_1D7B52: @ 81D7B52
printstring BATTLE_TEXT_FastAsleep
@@ -1382,7 +1382,7 @@ BattleScript_1D7B52: @ 81D7B52
orword 0x2024c6c, 0x800
selectrandommovefromusermoves BattleScript_1D7B72
pause 64
- jump BattleScript_1D83D6
+ jump BattleScript_ButItFailed
BattleScript_1D7B72: @ 81D7B72
attackanimation
@@ -1410,8 +1410,8 @@ MoveEffect_Spite: @ 81D7B99
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 0
- reducepprandom BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 0
+ reducepprandom BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_ReducedBy
@@ -1512,8 +1512,8 @@ MoveEffect_MeanLook: @ 81D7CCC
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 65534
- jumpifsecondarytstatus TARGET, S_MEAN_LOOK, BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 65534
+ jumpifsecondarytstatus TARGET, S_MEAN_LOOK, BattleScript_ButItFailed
attackanimation
waitanimation
setbyte 0x2024d21, 32
@@ -1526,10 +1526,10 @@ MoveEffect_Nightmare: @ 81D7CF4
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
- jumpifsecondarytstatus TARGET, S_NIGHTMARE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
+ jumpifsecondarytstatus TARGET, S_NIGHTMARE, BattleScript_ButItFailed
jumpifstatus TARGET, SLP, BattleScript_1D7D1A
- jump BattleScript_1D83D6
+ jump BattleScript_ButItFailed
BattleScript_1D7D1A: @ 81D7D1A
attackanimation
@@ -1553,7 +1553,7 @@ MoveEffect_Curse: @ 81D7D3B
ppreduce
jumpifstat USER, 2, 3, 0, BattleScript_1D7D60
jumpifstat USER, 1, 1, 12, BattleScript_1D7D60
- jumpifstat USER, 0, 2, 12, BattleScript_1D83D6
+ jumpifstat USER, 0, 2, 12, BattleScript_ButItFailed
BattleScript_1D7D60: @ 81D7D60
copyarray 0x2024c08, 0x2024c07, 1
@@ -1588,8 +1588,8 @@ BattleScript_1D7DC4: @ 81D7DC4
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
- cursetarget BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
+ cursetarget BattleScript_ButItFailed
orword 0x2024c6c, 0x100
setbyte 0x2016002, 0
attackanimation
@@ -1640,7 +1640,7 @@ MoveEffect_PerishSong: @ 81D7E3D
attackcanceler
attackstring
ppreduce
- setperishsong BattleScript_1D83D6
+ setperishsong BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_PerishSong
@@ -1687,7 +1687,7 @@ MoveEffect_Swagger: @ 81D7EA2
accuracycheck BattleScript_1D6F72, 0
attackstring
ppreduce
- jumpifconfusedandattackmaxed 1, BattleScript_1D83D6
+ jumpifconfusedandattackmaxed 1, BattleScript_ButItFailed
attackanimation
waitanimation
setbyte 0x201601e, 33
@@ -1724,8 +1724,8 @@ MoveEffect_Attract: @ 81D7F1F
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 0
- tryinfatuatetarget BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 0
+ tryinfatuatetarget BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_FellLove
@@ -1773,10 +1773,10 @@ MoveEffect_BatonPass: @ 81D7F7C
attackcanceler
attackstring
ppreduce
- jumpifcannotswitch 129, BattleScript_1D83D6
+ jumpifcannotswitch 129, BattleScript_ButItFailed
attackanimation
waitanimation
- openpartyscreen USER, BattleScript_1D83D6
+ openpartyscreen USER, BattleScript_ButItFailed
atke2 USER
waitstateatk
atk51 USER, 2
@@ -1858,7 +1858,7 @@ MoveEffect_BellyDrum: @ 81D8038
attackcanceler
attackstring
ppreduce
- maxattackhalvehp BattleScript_1D83D6
+ maxattackhalvehp BattleScript_ButItFailed
orword 0x2024c6c, 0x100
attackanimation
waitanimation
@@ -1872,7 +1872,7 @@ MoveEffect_PsychUp: @ 81D805A
attackcanceler
attackstring
ppreduce
- copyfoestats BattleScript_1D83D6
+ copyfoestats BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_CopyStatChanges
@@ -1971,7 +1971,7 @@ MoveEffect_FutureSight: @ 81D817D
attackcanceler
attackstring
ppreduce
- setfutureattack BattleScript_1D83D6
+ setfutureattack BattleScript_ButItFailed
attackanimation
waitanimation
printfromtable BattleTextList_4015E2
@@ -2017,9 +2017,9 @@ MoveEffect_Teleport: @ 81D8233
attackcanceler
attackstring
ppreduce
- jumpifhalfword 4, 0x20239f8, 8, BattleScript_1D83D6
+ jumpifhalfword 4, 0x20239f8, 8, BattleScript_ButItFailed
atk76 USER, 2
- jumpifbyte 0, 0x2024d1e, 1, BattleScript_1D83D6
+ jumpifbyte 0, 0x2024d1e, 1, BattleScript_ButItFailed
jumpifbyte 0, 0x2024d1e, 2, BattleScript_1D8839
attackanimation
waitanimation
@@ -2038,7 +2038,7 @@ MoveEffect_BeatUp: @ 81D826E
BattleScript_1D8281: @ 81D8281
atk25
- beatupcalculation BattleScript_1D82C4, BattleScript_1D83D6
+ beatupcalculation BattleScript_1D82C4, BattleScript_ButItFailed
printstring BATTLE_TEXT_PokeAttack
critcalc
jumpifbyte 1, 0x2024c0d, 2, BattleScript_1D829C
@@ -2156,7 +2156,7 @@ BattleScript_1D83D4: @ 81D83D4
BattleScript_1D83D5: @ 81D83D5
ppreduce
-BattleScript_1D83D6:: @ 81D83D6
+BattleScript_ButItFailed:: @ 81D83D6
pause 32
orbyte 0x2024c68, 32
resultmessage
@@ -2243,8 +2243,8 @@ MoveEffect_Torment: @ 81D8495
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 0
- settorment BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 0
+ settorment BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_TormentSubject
@@ -2257,7 +2257,7 @@ MoveEffect_Flatter: @ 81D84B1
accuracycheck BattleScript_1D6F72, 0
attackstring
ppreduce
- jumpifconfusedandattackmaxed 4, BattleScript_1D83D6
+ jumpifconfusedandattackmaxed 4, BattleScript_ButItFailed
attackanimation
waitanimation
setbyte 0x201601e, 20
@@ -2279,12 +2279,12 @@ MoveEffect_WillOWisp: @ 81D850F
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
jumpifstatus TARGET, BRN, BattleScript_1D8575
jumpiftype TARGET, TYPE_FIRE, BattleScript_1D83E8
jumpifability TARGET, ABILITY_WATER_VEIL, BattleScript_1D855B
- jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 0
+ jumpifstatus TARGET, SLP | PSN | BRN | FRZ | PAR | TOX, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 0
jumpifhalverset TARGET, 32, BattleScript_1D9037
attackanimation
waitanimation
@@ -2309,7 +2309,7 @@ MoveEffect_Memento: @ 81D8583
jumpifbyte 0, 0x2024d24, 1, BattleScript_1D860A
attackstring
ppreduce
- jumpifattackandspecialattackcannotfall BattleScript_1D83D6
+ jumpifattackandspecialattackcannotfall BattleScript_ButItFailed
setuserhptozero
attackanimation
waitanimation
@@ -2415,8 +2415,8 @@ MoveEffect_Taunt: @ 81D86AB
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 0
- settaunt BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 0
+ settaunt BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_TauntFell
@@ -2427,7 +2427,7 @@ MoveEffect_HelpingHand: @ 81D86C7
attackcanceler
attackstring
ppreduce
- sethelpinghand BattleScript_1D83D6
+ sethelpinghand BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_ReadyToHelp
@@ -2438,9 +2438,9 @@ MoveEffect_Trick: @ 81D86DC
attackcanceler
attackstring
ppreduce
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
- accuracycheck BattleScript_1D83D6, 0
- itemswap BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
+ accuracycheck BattleScript_ButItFailed, 0
+ itemswap BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_SwitchedItems
@@ -2453,8 +2453,8 @@ MoveEffect_RolePlay: @ 81D870A
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 65535
- copyability BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 65535
+ copyability BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_CopiedObject
@@ -2465,7 +2465,7 @@ MoveEffect_Wish: @ 81D8726
attackcanceler
attackstring
ppreduce
- atkd4 0, BattleScript_1D83D6
+ atkd4 0, BattleScript_ButItFailed
attackanimation
waitanimation
jump BattleScript_EndTurn
@@ -2484,7 +2484,7 @@ MoveEffect_Ingrain: @ 81D874D
attackcanceler
attackstring
ppreduce
- setroots BattleScript_1D83D6
+ setroots BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_PlantedRoots
@@ -2510,7 +2510,7 @@ MoveEffect_Recycle: @ 81D8782
attackcanceler
attackstring
ppreduce
- recycleitem BattleScript_1D83D6
+ recycleitem BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_FoundOne
@@ -2562,11 +2562,11 @@ MoveEffect_Yawn: @ 81D87EE
ppreduce
jumpifability TARGET, ABILITY_VITAL_SPIRIT, BattleScript_1D882F
jumpifability TARGET, ABILITY_INSOMNIA, BattleScript_1D882F
- jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_1D83D6
+ jumpifsecondarytstatus TARGET, S_SUBSTITUTE, BattleScript_ButItFailed
jumpifhalverset TARGET, 32, BattleScript_1D9037
- accuracycheck BattleScript_1D83D6, 65535
- jumpifcannotsleep BattleScript_1D83D6
- setyawn BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 65535
+ jumpifcannotsleep BattleScript_ButItFailed
+ setyawn BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_DrowsyMade
@@ -2590,7 +2590,7 @@ MoveEffect_Endeavor: @ 81D8852
attackcanceler
attackstring
ppreduce
- setdamagetohealthdifference BattleScript_1D83D6
+ setdamagetohealthdifference BattleScript_ButItFailed
copyarray 0x2024bf0, 0x2024bec, 4
accuracycheck BattleScript_1D6F77, 0
atk6
@@ -2608,8 +2608,8 @@ MoveEffect_SkillSwap: @ 81D8893
attackcanceler
attackstring
ppreduce
- accuracycheck BattleScript_1D83D6, 65535
- abilityswap BattleScript_1D83D6
+ accuracycheck BattleScript_ButItFailed, 65535
+ abilityswap BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_AbilitySwap
@@ -2620,7 +2620,7 @@ MoveEffect_Imprison: @ 81D88AF
attackcanceler
attackstring
ppreduce
- imprisoneffect BattleScript_1D83D6
+ imprisoneffect BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_SealedMove
@@ -2631,7 +2631,7 @@ MoveEffect_Refresh: @ 81D88C4
attackcanceler
attackstring
ppreduce
- cureifburnedparalysedorpoisoned BattleScript_1D83D6
+ cureifburnedparalysedorpoisoned BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_StatusNormal
@@ -2643,7 +2643,7 @@ MoveEffect_Grudge: @ 81D88DB
attackcanceler
attackstring
ppreduce
- setgrudge BattleScript_1D83D6
+ setgrudge BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_GrudgeBear
@@ -2740,7 +2740,7 @@ MoveEffect_WaterSport: @ 81D89D7
attackcanceler
attackstring
ppreduce
- settypebasedhalvers BattleScript_1D83D6
+ settypebasedhalvers BattleScript_ButItFailed
attackanimation
waitanimation
printfromtable BattleTextList_4015D4
@@ -2767,7 +2767,7 @@ MoveEffect_Tickle: @ 81D8A0A
jumpifstat TARGET, 0, 2, 0, BattleScript_1D8A7D
BattleScript_1D8A1F: @ 81D8A1F
- accuracycheck BattleScript_1D83D6, 0
+ accuracycheck BattleScript_ButItFailed, 0
attackanimation
waitanimation
setbyte 0x20160dc, 0
@@ -2924,7 +2924,7 @@ MoveEffect_Camouflage: @ 81D8C43
attackcanceler
attackstring
ppreduce
- settypetoterrain BattleScript_1D83D6
+ settypetoterrain BattleScript_ButItFailed
attackanimation
waitanimation
printstring BATTLE_TEXT_TypeTransform
@@ -3311,7 +3311,7 @@ gUnknown_081D9041:: @ 81D9041
waitmessage 64
end2
-gUnknown_081D904B:: @ 81D904B
+BattleScript_LeechSeedTurnDrain:: @ 81D904B
playanimation USER, 14, 0x20160a4
orword 0x2024c6c, 0x100100
graphicalhpupdate USER
@@ -3335,12 +3335,12 @@ BattleScript_1D9083: @ 81D9083
faintpokemon TARGET, 0, 0x0
end2
-gUnknown_081D90A7:: @ 81D90A7
+BattleScript_BideStoringEnergy:: @ 81D90A7
printstring BATTLE_TEXT_StoringEnergy
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D90B2:: @ 81D90B2
+BattleScript_BideAttack:: @ 81D90B2
printstring BATTLE_TEXT_UnleashedEnergy
waitmessage 64
accuracycheck BattleScript_1D6F77, 0
@@ -3361,10 +3361,10 @@ gUnknown_081D90B2:: @ 81D90B2
faintpokemon TARGET, 0, 0x0
jump BattleScript_EndTurn
-gUnknown_081D90F1:: @ 81D90F1
+BattleScript_BideNoEnergyToAttack:: @ 81D90F1
printstring BATTLE_TEXT_UnleashedEnergy
waitmessage 64
- jump BattleScript_1D83D6
+ jump BattleScript_ButItFailed
gUnknown_081D90FC:: @ 81D90FC
attackanimation
@@ -3385,7 +3385,7 @@ BattleScript_1D9116: @ 81D9116
atk52 TARGET
jump BattleScript_EndTurn
-gUnknown_081D9128:: @ 81D9128
+BattleScript_MistProtected:: @ 81D9128
pause 32
printstring BATTLE_TEXT_MistProtect
waitmessage 64
@@ -3396,21 +3396,21 @@ gUnknown_081D9132:: @ 81D9132
waitmessage 64
return
-gUnknown_081D9139:: @ 81D9139
+BattleScript_MoveUsedIsDisabled:: @ 81D9139
printstring BATTLE_TEXT_MoveIsDisabled
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D9144:: @ 81D9144
+BattleScript_MoveSelectionDisabledMove:: @ 81D9144
printstring2 BATTLE_TEXT_MoveIsDisabled
atk44
-gUnknown_081D9148:: @ 81D9148
+BattleScript_DisabledNoMore:: @ 81D9148
printstring BATTLE_TEXT_DisabledNoMore
waitmessage 64
end2
-gUnknown_081D914F:: @ 81D914F
+BattleScript_EncoredNoMore:: @ 81D914F
printstring BATTLE_TEXT_EncoreEnded
waitmessage 64
end2
@@ -3471,7 +3471,7 @@ BattleScript_1D91FB: @ 81D91FB
waitmessage 64
return
-gUnknown_081D9202:: @ 81D9202
+BattleScript_PerishSongHits:: @ 81D9202
printstring BATTLE_TEXT_PerishSongFell
waitmessage 64
orword 0x2024c6c, 0x100100
@@ -3480,12 +3480,12 @@ gUnknown_081D9202:: @ 81D9202
faintpokemon USER, 0, 0x0
end2
-gUnknown_081D921D:: @ 81D921D
+BattleScript_PerishSongTimerGoesDown:: @ 81D921D
printstring BATTLE_TEXT_PerishSongFell
waitmessage 64
end2
-gUnknown_081D9224:: @ 81D9224
+BattleScript_AllStatsUp:: @ 81D9224
jumpifstat USER, 3, 1, 12, BattleScript_1D9251
jumpifstat USER, 3, 2, 12, BattleScript_1D9251
jumpifstat USER, 3, 3, 12, BattleScript_1D9251
@@ -3531,22 +3531,22 @@ BattleScript_RapidSpinAway:: @ 81D92C0
breakfree
return
-gUnknown_081D92C2:: @ 81D92C2
+BattleScript_WrapFree:: @ 81D92C2
printstring BATTLE_TEXT_GotFreeFrom
waitmessage 64
return
-gUnknown_081D92C9:: @ 81D92C9
+BattleScript_LeechSeedFree:: @ 81D92C9
printstring BATTLE_TEXT_LeechShed
waitmessage 64
return
-gUnknown_081D92D0:: @ 81D92D0
+BattleScript_SpikesFree:: @ 81D92D0
printstring BATTLE_TEXT_SpikesBlownAway
waitmessage 64
return
-gUnknown_081D92D7:: @ 81D92D7
+BattleScript_FutureSightHits:: @ 81D92D7
printstring BATTLE_TEXT_TookAttack
waitmessage 64
jumpifbyte 1, 0x2024d23, 0, BattleScript_1D92F4
@@ -3593,11 +3593,11 @@ BattleScript_1D934B: @ 81D934B
setbyte 0x2024c68, 0
end2
-gUnknown_081D9365:: @ 81D9365
+BattleScript_NoMovesLeft:: @ 81D9365
printstring2 BATTLE_TEXT_NoMovesLeft
atk44
-gUnknown_081D9369:: @ 81D9369
+BattleScript_MoveSelectionNoPP:: @ 81D9369
printstring2 BATTLE_TEXT_NoPP1
atk44
@@ -3608,23 +3608,23 @@ BattleScript_NoPPForMove:: @ 81D936D
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D937C:: @ 81D937C
+BattleScript_MoveSelectionTormented:: @ 81D937C
printstring2 BATTLE_TEXT_TormentNoUse
atk44
printstring BATTLE_TEXT_TormentNoUse
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D938B:: @ 81D938B
+BattleScript_MoveSelectionTaunted:: @ 81D938B
printstring2 BATTLE_TEXT_TauntNoUse
atk44
-gUnknown_081D938F:: @ 81D938F
+BattleScript_MoveUsedIsTaunted:: @ 81D938F
printstring BATTLE_TEXT_TauntNoUse
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D939A:: @ 81D939A
+BattleScript_WishComesTrue:: @ 81D939A
atkd4 1, BattleScript_1D93C1
playanimation TARGET, 22, 0x0
printstring BATTLE_TEXT_WishTrue
@@ -3644,7 +3644,7 @@ BattleScript_1D93C1: @ 81D93C1
waitmessage 64
end2
-gUnknown_081D93D1:: @ 81D93D1
+BattleScript_IngrainTurnHeal:: @ 81D93D1
playanimation USER, 21, 0x0
printstring BATTLE_TEXT_AbsorbNutrients
waitmessage 64
@@ -3659,7 +3659,7 @@ BattleScript_1D93EC: @ 81D93EC
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D93FA:: @ 81D93FA
+BattleScript_AtkDefDown:: @ 81D93FA
setbyte 0x20160dc, 0
playstatchangeanimation USER, 6, 13
playstatchangeanimation USER, 2, 9
@@ -3686,12 +3686,12 @@ BattleScript_KnockedOff:: @ 81D944B
waitmessage 64
return
-gUnknown_081D9459:: @ 81D9459
+BattleScript_MoveUsedIsImprisoned:: @ 81D9459
printstring BATTLE_TEXT_SealedNoUse
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D9464:: @ 81D9464
+BattleScript_MoveSelectionImprisoned:: @ 81D9464
printstring2 BATTLE_TEXT_SealedNoUse
atk44
@@ -3731,7 +3731,7 @@ BattleScript_OneHitKOMsg:: @ 81D94A9
waitmessage 64
return
-gUnknown_081D94B0:: @ 81D94B0
+BattleScript_SAtkDown2:: @ 81D94B0
setbyte 0x20160dc, 0
playstatchangeanimation USER, 16, 11
setbyte 0x201601e, 164
@@ -3751,13 +3751,13 @@ gUnknown_081D94DA:: @ 81D94DA
waitmessage 64
end2
-gUnknown_081D94EE:: @ 81D94EE
+BattleScript_MoveUsedIsAsleep:: @ 81D94EE
printstring BATTLE_TEXT_FastAsleep
waitmessage 64
statusanimation USER
jump BattleScript_EndTurn
-gUnknown_081D94FB:: @ 81D94FB
+BattleScript_MoveUsedWokeUp:: @ 81D94FB
bicword 0x2024c6c, 0x10
printfromtable BattleTextList_401562
waitmessage 64
@@ -3770,7 +3770,7 @@ gUnknown_081D950F:: @ 81D950F
atk98 1
end2
-gUnknown_081D9518:: @ 81D9518
+BattleScript_PoisonTurnDmg:: @ 81D9518
printstring BATTLE_TEXT_PoisonHurt
waitmessage 64
@@ -3787,18 +3787,18 @@ BattleScript_1D9520: @ 81D9520
BattleScript_1D9539: @ 81D9539
end2
-gUnknown_081D953A:: @ 81D953A
+BattleScript_BurnTurnDmg:: @ 81D953A
printstring BATTLE_TEXT_BurnHurt
waitmessage 64
jump BattleScript_1D951E
-gUnknown_081D9545:: @ 81D9545
+BattleScript_MoveUsedIsFrozen:: @ 81D9545
printstring BATTLE_TEXT_FrozenSolid
waitmessage 64
statusanimation USER
jump BattleScript_EndTurn
-gUnknown_081D9552:: @ 81D9552
+BattleScript_MoveUsedUnfroze:: @ 81D9552
printfromtable BattleTextList_4015C4
waitmessage 64
atk98 1
@@ -3810,13 +3810,13 @@ gUnknown_081D955D:: @ 81D955D
atk98 0
return
-gUnknown_081D9566:: @ 81D9566
+BattleScript_MoveUsedIsParalyzed:: @ 81D9566
printstring BATTLE_TEXT_Paralyzed3
waitmessage 64
statusanimation USER
jump BattleScript_EndTurn
-gUnknown_081D9573:: @ 81D9573
+BattleScript_MoveUsedFlinched:: @ 81D9573
printstring BATTLE_TEXT_Flinched
waitmessage 64
jump BattleScript_EndTurn
@@ -3826,13 +3826,13 @@ gUnknown_081D957E:: @ 81D957E
waitmessage 64
end2
-gUnknown_081D9587:: @ 81D9587
+BattleScript_ThrashConfuses:: @ 81D9587
atk66 1, 1, S_CONFUSED
printstring BATTLE_TEXT_FatigueConfuse
waitmessage 64
end2
-gUnknown_081D9595:: @ 81D9595
+BattleScript_MoveUsedIsConfused:: @ 81D9595
printstring BATTLE_TEXT_Confused
waitmessage 64
atk65 1, 0x7
@@ -3855,7 +3855,7 @@ BattleScript_1D95AC: @ 81D95AC
BattleScript_1D95D3: @ 81D95D3
return
-gUnknown_081D95D4:: @ 81D95D4
+BattleScript_MoveUsedIsConfusedNoMore:: @ 81D95D4
printstring BATTLE_TEXT_ConfusionSnapOut
waitmessage 64
return
@@ -3865,35 +3865,35 @@ gUnknown_081D95DB:: @ 81D95DB
waitmessage 64
return
-gUnknown_081D95E2:: @ 81D95E2
+BattleScript_WrapTurnDmg:: @ 81D95E2
playanimation USER, 6, 0x20160a4
printstring BATTLE_TEXT_HurtBy
waitmessage 64
jump BattleScript_1D9520
-gUnknown_081D95F4:: @ 81D95F4
+BattleScript_WrapEnds:: @ 81D95F4
printstring BATTLE_TEXT_FreedFrom
waitmessage 64
end2
-gUnknown_081D95FB:: @ 81D95FB
+BattleScript_MoveUsedIsInLove:: @ 81D95FB
printstring BATTLE_TEXT_InLoveWith
waitmessage 64
atk65 1, 0xf0000
return
-gUnknown_081D9608:: @ 81D9608
+BattleScript_MoveUsedIsParalyzedCantAttack:: @ 81D9608
printstring BATTLE_TEXT_ImmobilizedBy
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D9613:: @ 81D9613
+BattleScript_NightmareTurnDmg:: @ 81D9613
printstring BATTLE_TEXT_NightmareLock
waitmessage 64
atk65 1, Start
jump BattleScript_1D9520
-gUnknown_081D9624:: @ 81D9624
+BattleScript_CurseTurnDmg:: @ 81D9624
printstring BATTLE_TEXT_CurseAfflict
waitmessage 64
atk65 1, 0x10000000
@@ -3915,7 +3915,7 @@ BattleScript_1D9648: @ 81D9648
waitstateatk
return
-gUnknown_081D964C:: @ 81D964C
+BattleScript_YawnMakesAsleep:: @ 81D964C
statusanimation 2
printstring BATTLE_TEXT_FellAsleep
waitmessage 64
@@ -3996,7 +3996,7 @@ BattleScript_ItemSteal:: @ 81D96F6
waitmessage 64
return
-gUnknown_081D9704:: @ 81D9704
+BattleScript_DrizzleActivates:: @ 81D9704
pause 32
printstring BATTLE_TEXT_RainMade
waitstateatk
@@ -4004,19 +4004,19 @@ gUnknown_081D9704:: @ 81D9704
callatk BattleScript_1D9761
end3
-gUnknown_081D9718:: @ 81D9718
+BattleScript_SpeedBoostActivates:: @ 81D9718
playanimation USER, 1, 0x20160a4
printstring BATTLE_TEXT_SpeedRisen
waitmessage 64
end3
-gUnknown_081D9726:: @ 81D9726
+BattleScript_TraceActivates:: @ 81D9726
pause 32
printstring BATTLE_TEXT_Traced
waitmessage 64
end3
-gUnknown_081D9730:: @ 81D9730
+BattleScript_RainDishActivates:: @ 81D9730
printstring BATTLE_TEXT_RestoredHPByItem
waitmessage 64
orword 0x2024c6c, 0x100
@@ -4024,7 +4024,7 @@ gUnknown_081D9730:: @ 81D9730
datahpupdate USER
end3
-gUnknown_081D9744:: @ 81D9744
+BattleScript_SandstreamActivates:: @ 81D9744
pause 32
printstring BATTLE_TEXT_WhipSandstorm
waitstateatk
@@ -4032,7 +4032,7 @@ gUnknown_081D9744:: @ 81D9744
callatk BattleScript_1D9761
end3
-gUnknown_081D9758:: @ 81D9758
+BattleScript_ShedSkinActivates:: @ 81D9758
printstring BATTLE_TEXT_CuredProblem
waitmessage 64
atk98 1
@@ -4047,7 +4047,7 @@ BattleScript_1D9767: @ 81D9767
jumpifarraynotequal 0x2016003, 0x2024a68, 1, BattleScript_1D9767
return
-gUnknown_081D977D:: @ 81D977D
+BattleScript_CastformChange:: @ 81D977D
callatk BattleScript_1D9783
end3
@@ -4095,7 +4095,7 @@ BattleScript_1D97F0: @ 81D97F0
waitmessage 64
jump BattleScript_1D97E4
-gUnknown_081D97FE:: @ 81D97FE
+BattleScript_DroughtActivates:: @ 81D97FE
pause 32
printstring BATTLE_TEXT_SunIntensified
waitstateatk
@@ -4123,10 +4123,10 @@ gUnknown_081D9834:: @ 81D9834
pause 64
jump BattleScript_EndTurn
-gUnknown_081D9842:: @ 81D9842
+BattleScript_MoveHPDrain_PPLoss:: @ 81D9842
ppreduce
-gUnknown_081D9843:: @ 81D9843
+BattleScript_MoveHPDrain:: @ 81D9843
attackstring
pause 32
orword 0x2024c6c, 0x100
@@ -4137,10 +4137,10 @@ gUnknown_081D9843:: @ 81D9843
orbyte 0x2024c68, 8
jump BattleScript_EndTurn
-gUnknown_081D9865:: @ 81D9865
+BattleScript_MoveHPDrain_FullHP_PPLoss:: @ 81D9865
ppreduce
-gUnknown_081D9866:: @ 81D9866
+BattleScript_MoveHPDrain_FullHP:: @ 81D9866
attackstring
pause 32
printstring BATTLE_TEXT_MadeUseless
@@ -4148,10 +4148,10 @@ gUnknown_081D9866:: @ 81D9866
orbyte 0x2024c68, 8
jump BattleScript_EndTurn
-gUnknown_081D987B:: @ 81D987B
+BattleScript_FlashFireBoost_PPLoss:: @ 81D987B
ppreduce
-gUnknown_081D987C:: @ 81D987C
+BattleScript_FlashFireBoost:: @ 81D987C
attackstring
pause 32
printfromtable BattleTextList_401648
@@ -4164,7 +4164,7 @@ BattleScript_1D988D: @ 81D988D
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D989B:: @ 81D989B
+BattleScript_AbilityNoStatLoss:: @ 81D989B
pause 32
printstring BATTLE_TEXT_PreventedStatLoss
waitmessage 64
@@ -4188,7 +4188,7 @@ BattleScript_PSNPrevention:: @ 81D98BD
waitmessage 64
return
-gUnknown_081D98C9:: @ 81D98C9
+BattleScript_ObliviousPreventsAttraction:: @ 81D98C9
pause 32
printstring BATTLE_TEXT_PreventedRomance
waitmessage 64
@@ -4206,7 +4206,7 @@ BattleScript_1D98E5: @ 81D98E5
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D98F3:: @ 81D98F3
+BattleScript_SoundproofProtected:: @ 81D98F3
attackstring
ppreduce
pause 32
@@ -4214,7 +4214,7 @@ gUnknown_081D98F3:: @ 81D98F3
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D9903:: @ 81D9903
+BattleScript_AbilityNoSpecificStatLoss:: @ 81D9903
pause 32
printstring BATTLE_TEXT_PreventedLoss
waitmessage 64
@@ -4227,12 +4227,12 @@ BattleScript_NoItemSteal:: @ 81D9913
waitmessage 64
jump BattleScript_EndTurn
-gUnknown_081D9921:: @ 81D9921
+BattleScript_ColorChangeActivates:: @ 81D9921
printstring BATTLE_TEXT_MadeType
waitmessage 64
return
-gUnknown_081D9928:: @ 81D9928
+BattleScript_RoughSkinActivates:: @ 81D9928
orword 0x2024c6c, 0x100100
graphicalhpupdate USER
datahpupdate USER
@@ -4241,18 +4241,18 @@ gUnknown_081D9928:: @ 81D9928
faintpokemon USER, 0, 0x0
return
-gUnknown_081D9943:: @ 81D9943
+BattleScript_CuteCharmActivates:: @ 81D9943
atk65 1, 0xf0000
printstring BATTLE_TEXT_InfatuatedPoke
waitmessage 64
return
-gUnknown_081D9950:: @ 81D9950
+BattleScript_ApplySecondaryEffect:: @ 81D9950
waitstateatk
seteffectuser
return
-gUnknown_081D9953:: @ 81D9953
+BattleScript_SynchronizeActivates:: @ 81D9953
waitstateatk
seteffecttarget
return
@@ -4275,7 +4275,7 @@ gUnknown_081D996F:: @ 81D996F
waitmessage 64
jumptoattack TARGET
-gUnknown_081D9977:: @ 81D9977
+BattleScript_MoveUsedLoafingAround:: @ 81D9977
printfromtable BattleTextList_40160E
waitmessage 64
setbyte 0x201600c, 0
@@ -4301,11 +4301,11 @@ BattleScript_SubstituteFade:: @ 81D99AB
printstring BATTLE_TEXT_SubFaded
return
-gUnknown_081D99B6:: @ 81D99B6
- callatk gUnknown_081D99BC
+BattleScript_BerryCurePrlzEnd2:: @ 81D99B6
+ callatk BattleScript_BerryCureParRet
end2
-gUnknown_081D99BC:: @ 81D99BC
+BattleScript_BerryCureParRet:: @ 81D99BC
playanimation 10, 7, 0x0
printstring BATTLE_TEXT_CuredParalysis
waitmessage 64
@@ -4313,11 +4313,11 @@ gUnknown_081D99BC:: @ 81D99BC
removeitem 10
return
-gUnknown_081D99CE:: @ 81D99CE
- callatk gUnknown_081D99D4
+BattleScript_BerryCurePsnEnd2:: @ 81D99CE
+ callatk BattleScript_BerryCurePsnRet
end2
-gUnknown_081D99D4:: @ 81D99D4
+BattleScript_BerryCurePsnRet:: @ 81D99D4
playanimation 10, 7, 0x0
printstring BATTLE_TEXT_CuredPoison
waitmessage 64
@@ -4325,11 +4325,11 @@ gUnknown_081D99D4:: @ 81D99D4
removeitem 10
return
-gUnknown_081D99E6:: @ 81D99E6
- callatk gUnknown_081D99EC
+BattleScript_BerryCureBrnEnd2:: @ 81D99E6
+ callatk BattleScript_BerryCureBrnRet
end2
-gUnknown_081D99EC:: @ 81D99EC
+BattleScript_BerryCureBrnRet:: @ 81D99EC
playanimation 10, 7, 0x0
printstring BATTLE_TEXT_CuredBurn
waitmessage 64
@@ -4337,11 +4337,11 @@ gUnknown_081D99EC:: @ 81D99EC
removeitem 10
return
-gUnknown_081D99FE:: @ 81D99FE
- callatk gUnknown_081D9A04
+BattleScript_BerryCureFrzEnd2:: @ 81D99FE
+ callatk BattleScript_BerryCureFrzRet
end2
-gUnknown_081D9A04:: @ 81D9A04
+BattleScript_BerryCureFrzRet:: @ 81D9A04
playanimation 10, 7, 0x0
printstring BATTLE_TEXT_CuredFreeze
waitmessage 64
@@ -4349,11 +4349,11 @@ gUnknown_081D9A04:: @ 81D9A04
removeitem 10
return
-gUnknown_081D9A16:: @ 81D9A16
- callatk gUnknown_081D9A1C
+BattleScript_BerryCureSlpEnd2:: @ 81D9A16
+ callatk BattleScript_BerryCureSlpRet
end2
-gUnknown_081D9A1C:: @ 81D9A1C
+BattleScript_BerryCureSlpRet:: @ 81D9A1C
playanimation 10, 7, 0x0
printstring BATTLE_TEXT_CuredSleep
waitmessage 64
@@ -4361,11 +4361,11 @@ gUnknown_081D9A1C:: @ 81D9A1C
removeitem 10
return
-gUnknown_081D9A2E:: @ 81D9A2E
- callatk gUnknown_081D9A34
+BattleScript_BerryCureConfusionEnd2:: @ 81D9A2E
+ callatk BattleScript_BerryCureConfusionRet
end2
-gUnknown_081D9A34:: @ 81D9A34
+BattleScript_BerryCureConfusionRet:: @ 81D9A34
playanimation 10, 7, 0x0
printstring BATTLE_TEXT_CuredConfusion
waitmessage 64
@@ -4384,18 +4384,18 @@ gUnknown_081D9A4A:: @ 81D9A4A
removeitem 10
return
-gUnknown_081D9A5E:: @ 81D9A5E
- callatk gUnknown_081D9A64
+BattleScript_WhiteHerbEnd2:: @ 81D9A5E
+ callatk BattleScript_WhiteHerbRet
end2
-gUnknown_081D9A64:: @ 81D9A64
+BattleScript_WhiteHerbRet:: @ 81D9A64
playanimation 10, 7, 0x0
printstring BATTLE_TEXT_RestoredStatus
waitmessage 64
removeitem 10
return
-gUnknown_081D9A74:: @ 81D9A74
+BattleScript_ItemHealHP_RemoveItem:: @ 81D9A74
playanimation USER, 7, 0x0
printstring BATTLE_TEXT_RestoredHealth
waitmessage 64
@@ -4405,18 +4405,18 @@ gUnknown_081D9A74:: @ 81D9A74
removeitem USER
end2
-gUnknown_081D9A91:: @ 81D9A91
+BattleScript_BerryPPHealEnd2:: @ 81D9A91
playanimation USER, 7, 0x0
printstring BATTLE_TEXT_RestoredPP
waitmessage 64
removeitem USER
end2
-gUnknown_081D9AA1:: @ 81D9AA1
- callatk gUnknown_081D9AA7
+BattleScript_ItemHealHP_End2:: @ 81D9AA1
+ callatk BattleScript_ItemHealHP_Ret
end2
-gUnknown_081D9AA7:: @ 81D9AA7
+BattleScript_ItemHealHP_Ret:: @ 81D9AA7
playanimation USER, 7, 0x0
printstring BATTLE_TEXT_RestoredHPLittle
waitmessage 64
@@ -4425,7 +4425,7 @@ gUnknown_081D9AA7:: @ 81D9AA7
datahpupdate USER
return
-gUnknown_081D9AC2:: @ 81D9AC2
+BattleScript_MoveSelectionChoiceBanded:: @ 81D9AC2
printstring2 BATTLE_TEXT_ChoiceBand
atk44
@@ -4435,7 +4435,7 @@ BattleScript_HangedOnMsg:: @ 81D9AC6
waitmessage 64
return
-gUnknown_081D9AD4:: @ 81D9AD4
+BattleScript_BerryConfuseHealEnd2:: @ 81D9AD4
playanimation USER, 7, 0x0
printstring BATTLE_TEXT_RestoredHealth
waitmessage 64
@@ -4449,7 +4449,7 @@ gUnknown_081D9AD4:: @ 81D9AD4
removeitem USER
end2
-gUnknown_081D9AFE:: @ 81D9AFE
+BattleScript_BerryStatRaiseEnd2:: @ 81D9AFE
playanimation USER, 7, 0x0
statbuffchange 65, BattleScript_1D9B0B
@@ -4459,7 +4459,7 @@ BattleScript_1D9B0B: @ 81D9B0B
removeitem USER
end2
-gUnknown_081D9B19:: @ 81D9B19
+BattleScript_BerryFocusEnergyEnd2:: @ 81D9B19
playanimation USER, 7, 0x0
printstring BATTLE_TEXT_HustleUse
waitmessage 64
diff --git a/data/battle_scripts_2.s b/data/battle_scripts_2.s
index 3f0dc8af1..b10b7f96f 100644
--- a/data/battle_scripts_2.s
+++ b/data/battle_scripts_2.s
@@ -51,7 +51,7 @@ BattleScript_1D9EBC: @ 81D9EBC
atk98 1
pokemoncatchfunction
-gUnknown_081D9EC2:: @ 81D9EC2
+BattleScript_SuccessBallThrow:: @ 81D9EC2
jumpifhalfword 0, gLastUsedItem, 5, BattleScript_1D9ED0
atk60 11
@@ -76,12 +76,12 @@ BattleScript_1D9EF8: @ 81D9EF8
setbyte gBattleOutcome, 7
activesidesomething
-gUnknown_081D9F00:: @ 81D9F00
+BattleScript_WallyBallThrow:: @ 81D9F00
printstring BATTLE_TEXT_BallCaught2
setbyte gBattleOutcome, 7
activesidesomething
-gUnknown_081D9F0A:: @ 81D9F0A
+BattleScript_ShakeBallThrow:: @ 81D9F0A
printfromtable BattleTextList_4015E6
waitmessage 64
jumpifbyte 5, gBattleTypeFlags, 128, BattleScript_1D9F34
@@ -93,7 +93,7 @@ gUnknown_081D9F0A:: @ 81D9F0A
BattleScript_1D9F34: @ 81D9F34
atkf6
-gUnknown_081D9F35:: @ 81D9F35
+BattleScript_TrainerBallBlock:: @ 81D9F35
waitmessage 64
printstring BATTLE_TEXT_BlockBall
waitmessage 64
diff --git a/data/battle_transition.s b/data/battle_transition.s
deleted file mode 100644
index 0d463ddef..000000000
--- a/data/battle_transition.s
+++ /dev/null
@@ -1,399 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_083FBB88:: @ 83FBB88
- .incbin "graphics/battle_transitions/big_pokeball.4bpp"
-
- .align 2
-gUnknown_083FC108:: @ 83FC108
- .incbin "graphics/battle_transitions/pokeball_trail.4bpp"
-
- .align 2
-gSpriteImage_83FC148:: @ 83FC148
- .incbin "graphics/battle_transitions/pokeball.4bpp"
-
- .align 2
-gUnknown_083FC348:: @ 83FC348
- .incbin "graphics/battle_transitions/elite_four_bg.4bpp"
-
- .align 2
-gSpriteImage_83FC528:: @ 83FC528
- .incbin "graphics/battle_transitions/unused_brendan.4bpp"
-
- .align 2
-gSpriteImage_83FCD28:: @ 83FCD28
- .incbin "graphics/battle_transitions/unused_lass.4bpp"
-
- .align 2
-gUnknown_083FD528:: @ 83FD528
- .incbin "graphics/battle_transitions/shrinking_box.4bpp"
-
- .align 2
-gUnknown_083FD708:: @ 83FD708
- .4byte 0x0200c000
-
- .align 2
-gUnknown_083FD70C:: @ 83FD70C
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
- .4byte sub_811AC64
-
- .align 2
-gBattleTransitionFuncs:: @ 83FD750
- .4byte sub_811ACB4
- .4byte sub_811ADAC
- .4byte sub_811AF44
- .4byte sub_811B0F0
- .4byte sub_811B578
- .4byte sub_811B7E8
- .4byte sub_811BCBC
- .4byte sub_811BEA0
- .4byte sub_811CA5C
- .4byte sub_811CCDC
- .4byte sub_811D0B8
- .4byte sub_811D1C8
- .4byte sub_811C08C
- .4byte sub_811C0AC
- .4byte sub_811C0CC
- .4byte sub_811C0EC
- .4byte sub_811C10C
-
- .align 2
-gUnknown_083FD794:: @ 83FD794
- .4byte sub_811AB88
- .4byte sub_811ABD8
- .4byte sub_811AC0C
- .4byte sub_811AC34
-
- .align 2
-gUnknown_083FD7A4:: @ 83FD7A4
- .4byte sub_811ACEC
- .4byte sub_811AD1C
- .4byte sub_811AD80
-
- .align 2
-gUnknown_083FD7B0:: @ 83FD7B0
- .4byte sub_811ADE4
- .4byte sub_811AE70
-
- .align 2
-gUnknown_083FD7B8:: @ 83FD7B8
- .4byte sub_811AF7C
- .4byte sub_811B000
-
- .align 2
-gUnknown_083FD7C0:: @ 83FD7C0
- .4byte sub_811B128
- .4byte sub_811B1D8
- .4byte sub_811B268
- .4byte sub_811B2F4
- .4byte sub_811B380
- .4byte sub_811B3EC
-
- .align 2
-gUnknown_083FD7D8:: @ 83FD7D8
- .4byte sub_811B5B0
- .4byte sub_811B5FC
- .4byte sub_811B688
-
- .align 1
-gUnknown_083FD7E4:: @ 83FD7E4
- .2byte -16
- .2byte 256
-
- .align 1
-gUnknown_083FD7E8:: @ 83FD7E8
- .2byte 0
- .2byte 32
- .2byte 64
- .2byte 18
- .2byte 48
-
- .align 1
-gUnknown_083FD7F2:: @ 83FD7F2
- .2byte 8
- .2byte -8
-
- .align 2
-gUnknown_083FD7F8:: @ 83FD7F8
- .4byte sub_811B820
- .4byte sub_811B884
- .4byte sub_811B90C
- .4byte sub_811B9F0
- .4byte sub_811BA70
- .4byte sub_811BB60
- .4byte sub_811BBEC
-
- .align 2
-gUnknown_083FD814:: @ 83FD814
- .4byte sub_811BCF4
- .4byte sub_811BD60
-
- .align 2
-gUnknown_083FD81C:: @ 83FD81C
- .4byte sub_811BED8
- .4byte sub_811BF2C
- .4byte sub_811BFC4
-
- .align 2
-gUnknown_083FD828:: @ 83FD828
- .4byte sub_811C164
- .4byte sub_811C1CC
- .4byte sub_811C2A4
- .4byte sub_811C38C
- .4byte sub_811C400
- .4byte sub_811C43C
- .4byte sub_811C4F0
- .4byte sub_811C5B4
- .4byte sub_811C5E8
- .4byte sub_811C630
-
-gUnknown_083FD850:: @ 83FD850
- .byte TRAINER_PIC_SIDNEY
- .byte TRAINER_PIC_PHOEBE
- .byte TRAINER_PIC_GLACIA
- .byte TRAINER_PIC_DRAKE
- .byte TRAINER_PIC_STEVEN
-
- .align 1
-gUnknown_083FD856:: @ 83FD856
- .2byte 0x200, 0x200
- .2byte 0x200, 0x200
- .2byte 0x1B0, 0x1B0
- .2byte 0x1A0, 0x1A0
- .2byte 0x188, 0x188
-
- .align 1
-gUnknown_083FD86A:: @ 83FD86A
- .2byte 0, 0
- .2byte 0, 0
- .2byte -4, 4
- .2byte 0, 5
- .2byte 0, 7
-
- .align 2
-gUnknown_083FD880:: @ 83FD880
- .4byte sub_811C934
- .4byte sub_811C938
- .4byte sub_811C984
- .4byte sub_811C9B8
- .4byte sub_811C934
- .4byte sub_811C9E4
- .4byte sub_811C934
-
- .align 1
-gUnknown_083FD89C:: @ 83FD89C
- .2byte 12, -12
-
- .align 1
-gUnknown_083FD8A0:: @ 83FD8A0
- .2byte -1, 1
-
- .align 2
-gUnknown_083FD8A4:: @ 83FD8A4
- .4byte sub_811CA94
- .4byte sub_811CB20
- .4byte sub_811CBE8
-
- .align 2
-gUnknown_083FD8B0:: @ 83FD8B0
- .4byte sub_811CD14
- .4byte sub_811CDA0
- .4byte sub_811CE14
- .4byte sub_811CE4C
- .4byte sub_811CEB0
-
- .align 1
-gUnknown_083FD8C4:: @ 83FD8C4
- .2byte 0
- .2byte 20
- .2byte 15
- .2byte 40
- .2byte 10
- .2byte 25
- .2byte 35
- .2byte 5
-
- .align 2
-gUnknown_083FD8D4:: @ 83FD8D4
- .4byte sub_811D0F0
- .4byte sub_811D144
- .4byte sub_811D19C
-
- .align 2
-gUnknown_083FD8E0:: @ 83FD8E0
- .4byte sub_811D200
- .4byte sub_811D260
- .4byte sub_811D2D8
- .4byte sub_811D3B0
- .4byte sub_811D41C
-
- .align 1
-gUnknown_083FD8F4:: @ 83FD8F4
- .2byte 56, 0, 0, 160, 0
- .2byte 104, 160, 240, 88, 1
- .2byte 240, 72, 56, 0, 1
- .2byte 0, 32, 144, 160, 0
- .2byte 144, 160, 184, 0, 1
- .2byte 56, 0, 168, 160, 0
- .2byte 168, 160, 48, 0, 1
-
- .align 1
-gUnknown_083FD93A:: @ 83FD93A
- .2byte 8
- .2byte 4
- .2byte 2
- .2byte 1
- .2byte 1
- .2byte 1
- .2byte 0
-
- .align 2
-gUnknown_083FD948:: @ 83FD948
- .4byte sub_811D584
- .4byte sub_811D5E0
-
- .align 2
-gSpriteImageTable_83FD950:: @ 83FD950
- obj_frame_tiles gSpriteImage_83FC148, 0x200
-
- .align 2
-gSpriteAnim_83FD958:: @ 83FD958
- obj_image_anim_frame 0, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83FD960:: @ 83FD960
- .4byte gSpriteAnim_83FD958
-
- .align 2
-gSpriteAffineAnim_83FD964:: @ 83FD964
- obj_rot_scal_anim_frame 0x0, 0x0, -4, 1
- obj_rot_scal_anim_jump 0
-
- .align 2
-gSpriteAffineAnim_83FD974:: @ 83FD974
- obj_rot_scal_anim_frame 0x0, 0x0, 4, 1
- obj_rot_scal_anim_jump 0
-
- .align 2
-gSpriteAffineAnimTable_83FD984:: @ 83FD984
- .4byte gSpriteAffineAnim_83FD964
- .4byte gSpriteAffineAnim_83FD974
-
- .align 2
-gSpriteTemplate_83FD98C:: @ 83FD98C
- spr_template 0xFFFF, 4105, gFieldOamData_32x32, gSpriteAnimTable_83FD960, gSpriteImageTable_83FD950, gSpriteAffineAnimTable_83FD984, sub_811B720
-
- .align 2
-gOamData_83FD9A4:: @ 83FD9A4
- .2byte 0x0000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gSpriteImageTable_83FD9AC:: @ 83FD9AC
- obj_frame_tiles gSpriteImage_83FC528, 0x800
-
- .align 2
-gSpriteImageTable_83FD9B4:: @ 83FD9B4
- obj_frame_tiles gSpriteImage_83FCD28, 0x800
-
- .align 2
-gSpriteAnim_83FD9BC:: @ 83FD9BC
- obj_image_anim_frame 0, 1
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_83FD9C4:: @ 83FD9C4
- .4byte gSpriteAnim_83FD9BC
-
- .align 2
-gSpriteTemplate_83FD9C8:: @ 83FD9C8
- spr_template 0xFFFF, 4106, gOamData_83FD9A4, gSpriteAnimTable_83FD9C4, gSpriteImageTable_83FD9AC, gDummySpriteAffineAnimTable, sub_811C90C
-
- .align 2
-gSpriteTemplate_83FD9E0:: @ 83FD9E0
- spr_template 0xFFFF, 4106, gOamData_83FD9A4, gSpriteAnimTable_83FD9C4, gSpriteImageTable_83FD9B4, gDummySpriteAffineAnimTable, sub_811C90C
-
- .align 2
-gFieldEffectObjectPalette10:: @ 83FD9F8
- .incbin "graphics/field_effect_objects/palettes/10.gbapal"
-
- .align 2
-gFieldEffectObjectPaletteInfo10:: @ 83FDA18
- obj_pal gFieldEffectObjectPalette10, 0x1009
-
- .align 2
-Unknown_83FDA20:
- .incbin "graphics/battle_transitions/sidney_bg.gbapal"
-
- .align 2
-Unknown_83FDA40:
- .incbin "graphics/battle_transitions/phoebe_bg.gbapal"
-
- .align 2
-Unknown_83FDA60:
- .incbin "graphics/battle_transitions/glacia_bg.gbapal"
-
- .align 2
-Unknown_83FDA80:
- .incbin "graphics/battle_transitions/drake_bg.gbapal"
-
- .align 2
-Unknown_83FDAA0:
- .incbin "graphics/battle_transitions/steven_bg.gbapal"
-
- .align 2
-Unknown_83FDAC0:
- .incbin "graphics/battle_transitions/brendan_bg.gbapal"
-
- .align 2
-Unknown_83FDAE0:
- .incbin "graphics/battle_transitions/may_bg.gbapal"
-
- .align 2
-gUnknown_083FDB00:: @ 83FDB00
- .4byte Unknown_83FDA20
- .4byte Unknown_83FDA40
- .4byte Unknown_83FDA60
- .4byte Unknown_83FDA80
- .4byte Unknown_83FDAA0
-
- .align 2
-gUnknown_083FDB14:: @ 83FDB14
- .4byte Unknown_83FDAC0
- .4byte Unknown_83FDAE0
-
- .align 2
-UnusedTrainerPalette:
- .incbin "graphics/battle_transitions/unused_trainer.gbapal"
-
- .align 2
-gSpritePalette_UnusedTrainer:: @ 83FDB3C
- obj_pal UnusedTrainerPalette, 0x100A
-
- .align 2
-gUnknown_083FDB44:: @ 83FDB44
- .incbin "graphics/battle_transitions/big_pokeball_map.bin"
-
- .align 2
-gUnknown_083FDFF4:: @ 83FDFF4
- .incbin "graphics/battle_transitions/elite_four_bg_map.bin"
diff --git a/data/berry_blender.s b/data/berry_blender.s
deleted file mode 100644
index ff0f06473..000000000
--- a/data/berry_blender.s
+++ /dev/null
@@ -1,456 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_08215C0C:: @ 8215C0C
- .incbin "graphics/berry_blender/center.gbapal"
-
- .align 2
-gUnknown_08215C2C:: @ 8215C2C
- .incbin "graphics/berry_blender/center_map.bin"
-
- .align 2
-gUnknown_0821602C:: @ 821602C
- .incbin "graphics/berry_blender/outer.gbapal"
-
- .incbin "graphics/unused/unknown/821604C.gbapal"
-
- .space 0x1C0
-
- .string "▶$"
- .string " $"
- .string "カッコイ$" @ "cool" (missing an イ at the end)
- .string "カワイイ$" @ "cute"
- .string "ウツクシ$" @ "beautiful" (missing an イ at the end)
- .string "カシコイ$" @ "smart"
- .string "タクマシ$" @ "tough" (missing an イ at the end)
-
-gUnknown_08216249:: @ 8216249
- .string "\p$"
-
-@ unreferenced
-@ These appear to be the first names of four people who worked on the game.
- .string "てつじ$", 10 @ Tetsuji (Ohta)
- .string "あきと$", 10 @ Akito (Mori)
- .string "シゲル$", 10 @ Shigeru (Ohmori)
- .string "ヨシノリ$", 10 @ Yoshinori (Matsuda)
-
-UnknownText_2Pok:
- .string "2Pok$"
-UnknownText_3Pok:
- .string "3Pok$"
-UnknownText_4Pok:
- .string "4Pok$"
-
- .align 2
-gUnknown_08216284:: @ 8216284
- .4byte UnknownText_2Pok
- .4byte UnknownText_3Pok
- .4byte UnknownText_4Pok
-
-@ unreferenced
- .string "1P$", 4
- .string "2P$", 4
- .string "3P$", 4
- .string "4P$", 4
-
-.ifdef ENGLISH
-UnknownText_Mister:
- .string "MISTER$"
-UnknownText_Laddie:
- .string "LADDIE$"
-UnknownText_Lassie:
- .string "LASSIE$"
-.else
-UnknownText_Mister:
- .string "OPI$"
-UnknownText_Laddie:
- .string "KUMPEL$"
-UnknownText_Lassie:
- .string "TUSSI$"
-.endif
-
- .align 2
-gUnknown_082162B8:: @ 82162B8
- .4byte UnknownText_Mister
- .4byte UnknownText_Laddie
- .4byte UnknownText_Lassie
-
-gUnknown_082162C4:: @ 82162C4
- .string "{COLOR RED}$"
-
-gUnknown_082162C8:: @ 82162C8
- .string "\n$"
-
- .string " $"
-
-gUnknown_082162CC:: @ 82162CC
- .byte -1, -1
- .byte 1, -1
- .byte -1, 1
- .byte 1, 1
-
-gUnknown_082162D4:: @ 82162D4
- .byte 2, 6
- .byte 23, 6
- .byte 2, 12
- .byte 23, 12
- .byte 1, 6
- .byte 22, 6
- .byte 1, 12
- .byte 22, 12
-
-gUnknown_082162E4:: @ 82162E4
- .byte 72, 32
- .byte 168, 32
- .byte 72, 128
- .byte 168, 128
-
-gUnknown_082162EC:: @ 82162EC
- .byte -1, 0, 1, -1
- .byte -1, 0, 1, 2
- .byte 0, 1, 2, 3
-
- .align 1
-gUnknown_082162F8:: @ 82162F8
- .2byte 0x0000, 0xC000, 0x4000, 0x8000
-
-gUnknown_08216300:: @ 8216300
- .byte 1
- .byte 1
- .byte 0
-
-gUnknown_08216303:: @ 8216303
- .byte 32
- .byte 224
- .byte 96
- .byte 160
- .byte 0
-
- .align 2
-gUnknown_08216308:: @ 8216308
- .4byte sub_804F8C8
- .4byte sub_804F9F4
- .4byte sub_804FB1C
-
- .align 2
-gOamData_8216314:: @ 8216314
- .2byte 0x0000
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_821631C:: @ 821631C
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216324:: @ 8216324
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821632C:: @ 821632C
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216334:: @ 8216334
- obj_image_anim_frame 16, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821633C:: @ 821633C
- obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216350:: @ 8216350
- obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216364:: @ 8216364
- obj_image_anim_frame 48, 2, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 32, 5, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 48, 3, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 16, 5, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216378:: @ 8216378
- obj_image_anim_frame 48, 2
- obj_image_anim_frame 32, 5
- obj_image_anim_frame 48, 3
- obj_image_anim_frame 16, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821638C:: @ 821638C
- obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216394:: @ 8216394
- obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821639C:: @ 821639C
- obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_82163A4:: @ 82163A4
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_82163AC:: @ 82163AC
- .4byte gSpriteAnim_821631C
- .4byte gSpriteAnim_8216324
- .4byte gSpriteAnim_821632C
- .4byte gSpriteAnim_8216334
- .4byte gSpriteAnim_821633C
- .4byte gSpriteAnim_8216350
- .4byte gSpriteAnim_8216364
- .4byte gSpriteAnim_8216378
- .4byte gSpriteAnim_821638C
- .4byte gSpriteAnim_8216394
- .4byte gSpriteAnim_821639C
- .4byte gSpriteAnim_82163A4
-
- .align 2
-gUnknown_082163DC:: @ 82163DC
- obj_tiles gBerryBlenderArrowTiles, 0x800, 46545
-
- .align 2
-gUnknown_082163E4:: @ 82163E4
- obj_pal gBerryBlenderMiscPalette, 46546
-
- .align 2
-gUnknown_082163EC:: @ 82163EC
- obj_pal gBerryBlenderArrowPalette, 12312
-
- .align 2
-gSpriteTemplate_82163F4:: @ 82163F4
- spr_template 46545, 12312, gOamData_8216314, gSpriteAnimTable_82163AC, NULL, gDummySpriteAffineAnimTable, sub_8051C04
-
- .align 2
-gOamData_821640C:: @ 821640C
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_8216414:: @ 8216414
- obj_image_anim_frame 0, 20
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821641C:: @ 821641C
- obj_image_anim_frame 4, 20, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216424:: @ 8216424
- obj_image_anim_frame 8, 4
- obj_image_anim_frame 12, 4
- obj_image_anim_frame 8, 4
- obj_image_anim_frame 12, 4
- obj_image_anim_frame 8, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821643C:: @ 821643C
- obj_image_anim_frame 8, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8216444:: @ 8216444
- .4byte gSpriteAnim_8216414
- .4byte gSpriteAnim_821641C
- .4byte gSpriteAnim_8216424
- .4byte gSpriteAnim_821643C
-
- .align 2
-gUnknown_08216454:: @ 8216454
- obj_tiles gBerryBlenderMarubatsuTiles, 0x200, 48888
-
- .align 2
-gSpriteTemplate_821645C:: @ 821645C
- spr_template 48888, 46546, gOamData_821640C, gSpriteAnimTable_8216444, NULL, gDummySpriteAffineAnimTable, sub_8051650
-
- .align 2
-gOamData_8216474:: @ 8216474
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_821647C:: @ 821647C
- obj_image_anim_frame 0, 3
- obj_image_anim_frame 1, 4
- obj_image_anim_frame 3, 5
- obj_image_anim_frame 1, 4
- obj_image_anim_frame 0, 3
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216494:: @ 8216494
- obj_image_anim_frame 0, 3
- obj_image_anim_frame 2, 4
- obj_image_anim_frame 4, 5
- obj_image_anim_frame 2, 4
- obj_image_anim_frame 0, 3
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_82164AC:: @ 82164AC
- obj_image_anim_frame 0, 2
- obj_image_anim_frame 1, 2
- obj_image_anim_frame 2, 2
- obj_image_anim_frame 4, 4
- obj_image_anim_frame 3, 3
- obj_image_anim_frame 2, 2
- obj_image_anim_frame 1, 2
- obj_image_anim_frame 0, 2
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_82164D0:: @ 82164D0
- obj_image_anim_frame 5, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_82164D8:: @ 82164D8
- obj_image_anim_frame 6, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_82164E0:: @ 82164E0
- .4byte gSpriteAnim_821647C
- .4byte gSpriteAnim_8216494
- .4byte gSpriteAnim_82164AC
- .4byte gSpriteAnim_82164D0
- .4byte gSpriteAnim_82164D8
-
- .align 2
-gUnknown_082164F4:: @ 82164F4
- obj_tiles gBerryBlenderParticlesTiles, 0xE0, 23456
-
- .align 2
-gSpriteTemplate_82164FC:: @ 82164FC
- spr_template 23456, 46546, gOamData_8216474, gSpriteAnimTable_82164E0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gOamData_8216514:: @ 8216514
- .2byte 0x0000
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_821651C:: @ 821651C
- obj_image_anim_frame 32, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8216524:: @ 8216524
- obj_image_anim_frame 16, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_821652C:: @ 821652C
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8216534:: @ 8216534
- .4byte gSpriteAnim_821651C
- .4byte gSpriteAnim_8216524
- .4byte gSpriteAnim_821652C
-
- .align 2
-gUnknown_08216540:: @ 8216540
- obj_tiles gBerryBlenderCountdownNumbersTiles, 0x600, 12345
-
- .align 2
-gSpriteTemplate_8216548:: @ 8216548
- spr_template 12345, 46546, gOamData_8216514, gSpriteAnimTable_8216534, NULL, gDummySpriteAffineAnimTable, sub_805181C
-
- .align 2
-gOamData_8216560:: @ 8216560
- .2byte 0x4000
- .2byte 0xC000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_8216568:: @ 8216568
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8216570:: @ 8216570
- .4byte gSpriteAnim_8216568
-
- .align 2
-gUnknown_08216574:: @ 8216574
- obj_tiles gBerryBlenderStartTiles, 0x400, 12346
-
- .align 2
-gSpriteTemplate_821657C:: @ 821657C
- spr_template 12346, 46546, gOamData_8216560, gSpriteAnimTable_8216570, NULL, gDummySpriteAffineAnimTable, sub_80518CC
-
- .align 1
-gUnknown_08216594:: @ 8216594
- .2byte -10, 20, 10, 2, 1
- .2byte 250, 20, 10, -2, 1
- .2byte -10, 140, 10, 2, -1
- .2byte 250, 140, 10, -2, -1
-
-gUnknown_082165BC:: @ 82165BC
- .byte 4, 3, 2
- .byte 0, 4, 3
- .byte 1, 0, 4
- .byte 2, 1, 0
- .byte 3, 2, 1
- .byte 0, 2, 3
- .byte 1, 3, 4
- .byte 2, 4, 0
- .byte 3, 0, 1
- .byte 4, 1, 2
-
-gUnknown_082165DA:: @ 82165DA
- .byte 1, 1, 2, 3, 4
-
-gUnknown_082165DF:: @ 82165DF
- .byte 0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15
-
-gUnknown_082165E9:: @ 82165E9
- .byte 6, 6, 6, 6, 5
-
-gUnknown_082165EE:: @ 82165EE
- .byte 3, 3, 3, 2, 2
-
-gUnknown_082165F3:: @ 82165F3
- .byte 3, 3, 3, 3, 2
-
-gUnknown_082165F8:: @ 82165F8
- .string " $"
-
-gOtherText_BPMAndDash:: @ 82165FA
- .string "BPM$"
- .string "-$"
-
-gUnknown_08216600:: @ 8216600
- .string "\n$"
-
- .string "\n$"
diff --git a/data/data2.s b/data/data2a.s
index 00ef5c26e..657fc6908 100644
--- a/data/data2.s
+++ b/data/data2a.s
@@ -1015,7 +1015,7 @@ gUnknown_081FA71F:: @ 81FA71F
.byte 4, 4, 4, 4
.align 1
-gUnknown_081FA724:: @ 81FA724
+gSoundMovesTable:: @ 81FA724
.2byte 0x2D
.2byte 0x2E
.2byte 0x2F
@@ -1027,778 +1027,3 @@ gUnknown_081FA724:: @ 81FA724
.2byte 0x140
.2byte 0x130
.2byte 0xFFFF
-
- .align 2
-gBattleScriptingCommandsTable:: @ 81FA73C
- .4byte atk00_attackcanceler
- .4byte atk01_accuracycheck
- .4byte atk02_attackstring
- .4byte atk03_ppreduce
- .4byte atk04_critcalc
- .4byte atk05_damagecalc1
- .4byte atk06_typecalc
- .4byte atk07_dmg_adjustment
- .4byte atk08_dmg_adjustment2
- .4byte atk09_attackanimation
- .4byte atk0A_waitanimation
- .4byte atk0B_healthbarupdate
- .4byte atk0C_datahpupdate
- .4byte atk0D_critmessage
- .4byte atk0E_effectiveness_sound
- .4byte atk0F_resultmessage
- .4byte atk10_printstring
- .4byte atk11_printstring_playeronly
- .4byte atk12_waitmessage
- .4byte atk13_printfromtable
- .4byte atk14_printfromtable_playeronly
- .4byte atk15_seteffectwithchancetarget
- .4byte atk16_seteffectprimary
- .4byte atk17_seteffectsecondary
- .4byte atk18_status_effect_clear
- .4byte atk19_faint_pokemon
- .4byte atk1A_faint_animation
- .4byte atk1B_faint_effects_clear
- .4byte atk1C_jumpifstatus
- .4byte atk1D_jumpifstatus2
- .4byte atk1E_jumpifability
- .4byte atk1F_jumpifsideaffecting
- .4byte atk20_jumpifstat
- .4byte atk21_jumpifstatus3
- .4byte atk22_jumpiftype
- .4byte atk23_getexp
- .4byte atk24
- .4byte atk25_move_values_cleanup
- .4byte atk26_set_multihit
- .4byte atk27_decrement_multihit
- .4byte atk28_goto
- .4byte atk29_jumpifbyte
- .4byte atk2A_jumpifhalfword
- .4byte atk2B_jumpifword
- .4byte atk2C_jumpifarrayequal
- .4byte atk2D_jumpifarraynotequal
- .4byte atk2E_setbyte
- .4byte atk2F_addbyte
- .4byte atk30_subbyte
- .4byte atk31_copyarray
- .4byte atk32_copyarray_withindex
- .4byte atk33_orbyte
- .4byte atk34_orhalfword
- .4byte atk35_orword
- .4byte atk36_bicbyte
- .4byte atk37_bichalfword
- .4byte atk38_bicword
- .4byte atk39_pause
- .4byte atk3A_waitstate
- .4byte atk3B_healthbar_update
- .4byte atk3C_return
- .4byte atk3D_end
- .4byte atk3E_end2
- .4byte atk3F_end3
- .4byte atk40_jump_if_move_affected_by_protect
- .4byte atk41_call
- .4byte atk42_jumpiftype2
- .4byte atk43_jumpifabilitypresent
- .4byte atk44
- .4byte atk45_playanimation
- .4byte atk46_playanimation2
- .4byte atk47_setgraphicalstatchangevalues_setgraphicalstatchangevalues_setgraphicalstatchangevalues
- .4byte atk48_playstatchangeanimation
- .4byte sub_80217F8
- .4byte atk4A_damageflags
- .4byte atk4B_cmd4b
- .4byte atk4C_switch1
- .4byte sub_80225F0
- .4byte sub_8022784
- .4byte sub_8022830
- .4byte atk50_openpartyscreen
- .4byte sub_802331C
- .4byte sub_8023524
- .4byte sub_80237CC
- .4byte atk54_802511C
- .4byte sub_8023848
- .4byte atk56_8025194
- .4byte atk57_80251C4_flee
- .4byte atk58_cmd58
- .4byte atk59_8025230
- .4byte sub_8023AF8
- .4byte atk5B_80256E0
- .4byte atk5C_cmd5c
- .4byte sub_8024014
- .4byte atk5E_8025A70
- .4byte atk5F_8025B24
- .4byte atk60_cmd60
- .4byte atk61_8025BA4
- .4byte atk62_08025C6C
- .4byte atk63_jumptoattack
- .4byte atk64_statusanimation
- .4byte atk65_8025D90
- .4byte atk66_8025E38
- .4byte atk67_8025ECC
- .4byte sub_80246A0
- .4byte atk69_8025FE0
- .4byte atk6A_stash_item_for_side
- .4byte sub_80248C0
- .4byte sub_80248FC
- .4byte sub_8024C4C
- .4byte atk6E_state0_side_becomes_attacker
- .4byte atk6F_8026810
- .4byte atk70_record_ability_usage_of_side
- .4byte atk71_80268A0
- .4byte atk72_flee
- .4byte atk73_cmd73
- .4byte atk74_hp_tresholds_2
- .4byte atk75_8026A58
- .4byte sub_8024F40
- .4byte atk77_setprotect
- .4byte atk78_faintifabilitynotdamp
- .4byte atk79_setuserhptozero
- .4byte sub_80253E8
- .4byte sub_802548C
- .4byte sub_8025508
- .4byte sub_80256D0
- .4byte atk7E_setreflect
- .4byte sub_80257DC
- .4byte atk80_manipulatedamage
- .4byte atk81_setrest
- .4byte atk82_jumpifnotfirstturn
- .4byte sub_8025A34
- .4byte sub_8025AE0
- .4byte sub_8025B5C
- .4byte atk86_stockpiletobasedamage
- .4byte sub_8025D00
- .4byte atk88_negativedamage
- .4byte atk89_statbuffchange
- .4byte atk8A_normalisebuffs
- .4byte atk8B_setbide
- .4byte atk8C_confuseifrepeatingattackends
- .4byte atk8D_setloopcounter
- .4byte sub_8026468
- .4byte sub_8026590
- .4byte sub_802688C
- .4byte atk91_givemoney
- .4byte atk92_setlightscreen
- .4byte sub_8026B78
- .4byte atk94_gethalfcurrentenemyhp
- .4byte sub_8026E94
- .4byte sub_8026EEC
- .4byte sub_8027064
- .4byte sub_8027238
- .4byte sub_8027348
- .4byte atk9A_setincreasedcriticalchance
- .4byte atk9B_transformdataexecution
- .4byte sub_80275D8
- .4byte atk9D_copyattack
- .4byte sub_80278B8
- .4byte sub_8027960
- .4byte atkA0_psywavedamageeffect
- .4byte atkA1_counterdamagecalculator
- .4byte atkA2_mirrorcoatdamagecalculator
- .4byte atkA3_disablelastusedattack
- .4byte atkA4_setencore
- .4byte sub_8027E4C
- .4byte sub_8027F44
- .4byte atkA7_setalwayshitflag
- .4byte atkA8_copymovepermanently
- .4byte sub_8028420
- .4byte sub_8028558
- .4byte atkAB_802A458
- .4byte atkAC_remaininghptopower
- .4byte sub_8028668
- .4byte sub_8028858
- .4byte sub_8028AD4
- .4byte sub_8028B70
- .4byte sub_8028BFC
- .4byte atkB2_setperishsong
- .4byte atkB3_rolloutdamagecalculation
- .4byte atkB4_jumpifconfusedandattackmaxed
- .4byte sub_8028EC8
- .4byte atkB6_happinesstodamagecalculation
- .4byte atkB7_presentdamagecalculation
- .4byte sub_80290BC
- .4byte atkB9_magnitudedamagecalculation
- .4byte sub_8029270
- .4byte sub_80293E8
- .4byte atkBC_maxattackhalvehp
- .4byte atkBD_copyfoestats
- .4byte atkBE_breakfree
- .4byte sub_802964C
- .4byte atkC0_recoverbasedonsunlight
- .4byte sub_8029784
- .4byte atkC2_selectnexttarget
- .4byte atkC3_setfutureattack
- .4byte atkC4_802B910
- .4byte atkC5_hidepreattack
- .4byte atkC6_unhidepostattack
- .4byte atkC7_setminimize
- .4byte sub_8029DAC
- .4byte atkC9_jumpifattackandspecialattackcannotfall
- .4byte atkCA_setforcedtarget
- .4byte atkCB_setcharge
- .4byte atkCC_callterrainattack
- .4byte atkCD_cureifburnedparalysedorpoisoned
- .4byte atkCE_settorment
- .4byte atkCF_jumpifnodamage
- .4byte atkD0_settaunt
- .4byte sub_802A170
- .4byte sub_802A218
- .4byte sub_802A4B0
- .4byte atkD4_802C408
- .4byte sub_802A5FC
- .4byte atkD6_doubledamagedealtifdamaged
- .4byte sub_802A6BC
- .4byte atkD8_setdamagetohealthdifference
- .4byte atkD9_scaledamagebyhealthratio
- .4byte atkDA_abilityswap
- .4byte atkDB_imprisoneffect
- .4byte atkDC_setgrudge
- .4byte atkDD_weightdamagecalculation
- .4byte atkDE_asistattackselect
- .4byte atkDF_setmagiccoat
- .4byte atkE0_setstealstatchange
- .4byte atkE1_802CBE4
- .4byte sub_802ADD8
- .4byte atkE3_jumpiffainted
- .4byte sub_802AEB0
- .4byte sub_802AF68
- .4byte atkE6_castform_transform
- .4byte atkE7_castform_switch
- .4byte atkE8_settypebasedhalvers
- .4byte sub_802B1C0
- .4byte atkEA_recycleitem
- .4byte atkEB_settypetoterrain
- .4byte sub_802B3E0
- .4byte sub_802B4B4
- .4byte sub_802B51C
- .4byte sub_802B5B8
- .4byte sub_802B960
- .4byte sub_802B9E0
- .4byte sub_802BA90
- .4byte atkF3_receive_new_pokemon_maybe
- .4byte sub_802BEF0
- .4byte sub_802BF20
- .4byte sub_802BF48
- .4byte sub_802BF54
-
- .align 2
-gAccuracyStageRatios:: @ 81FAB1C
- .byte 33, 100, 0, 0 @ -6
- .byte 36, 100, 0, 0 @ -5
- .byte 43, 100, 0, 0 @ -4
- .byte 50, 100, 0, 0 @ -3
- .byte 60, 100, 0, 0 @ -2
- .byte 75, 100, 0, 0 @ -1
- .byte 1, 1, 0, 0 @ 0
- .byte 133, 100, 0, 0 @ +1
- .byte 166, 100, 0, 0 @ +2
- .byte 2, 1, 0, 0 @ +3
- .byte 233, 100, 0, 0 @ +4
- .byte 133, 50, 0, 0 @ +5
- .byte 3, 1, 0, 0 @ +6
-
-@ The chance is 1/N for each stage.
- .align 1
-gCriticalHitChance:: @ 81FAB50
- .2byte 16 @ +0
- .2byte 8 @ +1
- .2byte 4 @ +2
- .2byte 3 @ +3
- .2byte 2 @ +4
-
- .align 2
-gStatusFlagsForMoveEffects:: @ 81FAB5C
- .4byte 0x00000000
- .4byte 0x00000007
- .4byte 0x00000008
- .4byte 0x00000010
- .4byte 0x00000020
- .4byte 0x00000040
- .4byte 0x00000080
- .4byte 0x00000007
- .4byte 0x00000008
- .4byte 0x00000000
- .4byte 0x00000070
- .4byte 0x00000000
- .4byte 0x00001000
- .4byte 0x0000E000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00400000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x04000000
- .4byte 0x08000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000C00
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
- .4byte 0x00000000
-
- .align 2
-gMoveEffectBS_Ptrs:: @ 81FAC4C
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D965A
- .4byte BattleScript_1D9669
- .4byte BattleScript_1D9678
- .4byte BattleScript_1D9687
- .4byte BattleScript_1D969D
- .4byte BattleScript_1D96BA
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D9696
- .4byte BattleScript_1D96AA
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D96B1
- .4byte BattleScript_1D96C8
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D963E
- .4byte BattleScript_1D96C8
-
-@ unreferenced bit masks
- .byte 0x00, 0x01, 0x03, 0x07, 0x0F, 0x1F, 0x3F
-
-gLevelUpStatBoxStats:: @ 81FACEF
- .byte 0x3A @ HP
- .byte 0x3E @ Sp. Attack
- .byte 0x3B @ Attack
- .byte 0x3F @ Sp. Defense
- .byte 0x3C @ Defense
- .byte 0x3D @ Speed
-
- .align 1
-gProtectSuccessRates:: @ 81FACF6
- .2byte 0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF
-
- .align 1
-gUnknown_081FACFE:: @ 81FACFE
- .2byte MOVE_METRONOME
- .2byte MOVE_STRUGGLE
- .2byte MOVE_SKETCH
- .2byte MOVE_MIMIC
- .2byte 0xFFFE
- .2byte MOVE_COUNTER
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_PROTECT
- .2byte MOVE_DETECT
- .2byte MOVE_ENDURE
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_THIEF
- .2byte MOVE_FOLLOW_ME
- .2byte MOVE_SNATCH
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_COVET
- .2byte MOVE_TRICK
- .2byte MOVE_FOCUS_PUNCH
- .2byte 0xFFFF
-
-gUnknown_081FAD26:: @ 81FAD26
- .byte 1, 200
- .byte 4, 150
- .byte 9, 100
- .byte 16, 80
- .byte 32, 40
- .byte 48, 20
-
- .align 1
-gNaturePowerMoves:: @ 81FAD32
- .2byte MOVE_STUN_SPORE
- .2byte MOVE_RAZOR_LEAF
- .2byte MOVE_EARTHQUAKE
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_SURF
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SHADOW_BALL
- .2byte MOVE_SWIFT
- .2byte MOVE_SWIFT
-
-@ weight-based damage table for Low Kick
-@ format: min. weight (hectograms), base power
-
- .align 1
-gWeightDamage:: @ 81FAD46
- .2byte 100, 20
- .2byte 250, 40
- .2byte 500, 60
- .2byte 1000, 80
- .2byte 2000, 100
- .2byte -1, -1
-
- .align 1
-gPickupItems:: @ 81FAD5E
- .2byte ITEM_SUPER_POTION, 30
- .2byte ITEM_FULL_HEAL, 40
- .2byte ITEM_ULTRA_BALL, 50
- .2byte ITEM_RARE_CANDY, 60
- .2byte ITEM_FULL_RESTORE, 70
- .2byte ITEM_REVIVE, 80
- .2byte ITEM_NUGGET, 90
- .2byte ITEM_PROTEIN, 95
- .2byte ITEM_PP_UP, 99
- .2byte ITEM_KINGS_ROCK, 1
-
-gTerrainToType:: @ 81FAD86
- .byte TYPE_GRASS @ tall grass
- .byte TYPE_GRASS @ long grass
- .byte TYPE_GROUND @ sand
- .byte TYPE_WATER @ underwater
- .byte TYPE_WATER @ water
- .byte TYPE_WATER @ pond water
- .byte TYPE_ROCK @ rock
- .byte TYPE_ROCK @ cave
- .byte TYPE_NORMAL @ building
- .byte TYPE_NORMAL @ plain
-
-gBallCatchBonuses:: @ 81FAD90
- .byte 20 @ Ultra Ball
- .byte 15 @ Great Ball
- .byte 10 @ Poké Ball
- .byte 15 @ Safari Ball
-
- .string "ターン$" @ "turn"
-
- .align 2
-gPlayerBufferCommands:: @ 81FAD98
- .4byte PlayerHandleGetAttributes
- .4byte sub_802ECF0
- .4byte PlayerHandleSetAttributes
- .4byte sub_802F7CC
- .4byte PlayerHandleLoadPokeSprite
- .4byte PlayerHandleSendOutPoke
- .4byte PlayerHandleReturnPokeToBall
- .4byte PlayerHandleTrainerThrow
- .4byte PlayerHandleTrainerSlide
- .4byte PlayerHandleTrainerSlideBack
- .4byte sub_802FE7C
- .4byte sub_802FF60
- .4byte sub_802FF80
- .4byte PlayerHandleBallThrow
- .4byte PlayerHandlePuase
- .4byte PlayerHandleMoveAnimation
- .4byte PlayerHandlePrintString
- .4byte PlayerHandlePrintStringPlayerOnly
- .4byte sub_803037C
- .4byte nullsub_42
- .4byte sub_8030468
- .4byte PlayerHandleOpenBag
- .4byte sub_8030594
- .4byte sub_8030674
- .4byte PlayerHandleHealthBarUpdate
- .4byte PlayerHandleExpBarUpdate
- .4byte PlayerHandleStatusIconUpdate
- .4byte PlayerHandleStatusAnimation
- .4byte PlayerHandleStatusXor
- .4byte sub_803097C
- .4byte PlayerHandleDMATransfer
- .4byte sub_8030A3C
- .4byte sub_8030A6C
- .4byte sub_8030A78
- .4byte sub_8030A8C
- .4byte sub_8030AA0
- .4byte sub_8030AB4
- .4byte sub_8030AC8
- .4byte sub_8030AE4
- .4byte sub_8030B1C
- .4byte sub_8030B34
- .4byte PlayerHandleHitAnimation
- .4byte sub_8030BCC
- .4byte PlayerHandleEffectivenessSound
- .4byte sub_8030C1C
- .4byte PlayerHandleFaintingCry
- .4byte PlayerHandleIntroSlide
- .4byte PlayerHandleTrainerBallThrow
- .4byte sub_8030FAC
- .4byte sub_80310A4
- .4byte sub_80310F0
- .4byte PlayerHandleSpriteInvisibility
- .4byte PlayerHandleBattleAnimation
- .4byte PlayerHandleLinkStandbyMsg
- .4byte PlayerHandleResetActionMoveSelection
- .4byte sub_80312A0
- .4byte nullsub_43
-
-gUnknown_081FAE7C:: @ 81FAE7C
- .byte 0, 2, 3, 1
-
-gUnknown_081FAE80:: @ 81FAE80
- .string "{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}$"
-
-gUnknown_081FAE89:: @ 81FAE89
- .byte 8, 120
- .byte 88, 120
- .byte 8, 136
- .byte 88, 136
-
-gUnknown_081FAE91:: @ 81FAE91
- .byte 144, 120
- .byte 190, 120
- .byte 144, 136
- .byte 190, 136
- .byte 72, 72
- .byte 32, 90
- .byte 80, 80
- .byte 80, 88
-
- .align 2
-gUnknown_081FAEA4:: @ 81FAEA4
- obj_tiles gSmokescreenImpactTiles, 0x180, 55019
-
- .align 2
-gUnknown_081FAEAC:: @ 81FAEAC
- obj_pal gSmokescreenImpactPalette, 55019
-
- .align 2
-gOamData_81FAEB4:: @ 81FAEB4
- .2byte 0x0000
- .2byte 0x4000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_81FAEBC:: @ 81FAEBC
- obj_image_anim_frame 0, 4
- obj_image_anim_frame 4, 4
- obj_image_anim_frame 8, 4
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_81FAECC:: @ 81FAECC
- obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_81FAEDC:: @ 81FAEDC
- obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_81FAEEC:: @ 81FAEEC
- obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_81FAEFC:: @ 81FAEFC
- .4byte gSpriteAnim_81FAEBC
- .4byte gSpriteAnim_81FAECC
- .4byte gSpriteAnim_81FAEDC
- .4byte gSpriteAnim_81FAEEC
-
- .align 2
-gSpriteTemplate_81FAF0C:: @ 81FAF0C
- spr_template 55019, 55019, gOamData_81FAEB4, gSpriteAnimTable_81FAEFC, NULL, gDummySpriteAffineAnimTable, sub_80463CC
-
- .align 2
-gUnknown_081FAF24:: @ 81FAF24
- obj_tiles gEnemyMonShadow_Gfx, 128, 0xD759
-
- .align 2
-gOamData_81FAF2C:: @ 81FAF2C
- .2byte 0x4000
- .2byte 0x4000
- .2byte 0x0C00
-
- .align 2
-gSpriteTemplate_81FAF34:: @ 81FAF34
- spr_template 55129, 55039, gOamData_81FAF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8032978
-
- .align 2
-gUnknown_081FAF4C:: @ 81FAF4C
- .4byte 0x02008000
- .4byte 0x0200a000
- .4byte 0x0200c000
- .4byte 0x0200e000
-
- .align 2
-gOpponentBufferCommands:: @ 81FAF5C
- .4byte OpponentHandleGetAttributes
- .4byte dp01t_01_2_read_pokmon_data_slice
- .4byte OpponentHandleSetAttributes
- .4byte sub_8034744
- .4byte OpponentHandleLoadPokeSprite
- .4byte OpponentHandleSendOutPoke
- .4byte OpponentHandleReturnPokeToBall
- .4byte OpponentHandleTrainerThrow
- .4byte OpponentHandleTrainerSlide
- .4byte OpponentHandleTrainerSlideBack
- .4byte sub_8035030
- .4byte sub_80350D4
- .4byte sub_80350E0
- .4byte OpponentHandleBallThrow
- .4byte OpponentHandlePause
- .4byte OpponentHandleMoveAnimation
- .4byte OpponentHandlePrintString
- .4byte OpponentHandlePrintStringPlayerOnly
- .4byte sub_803540C
- .4byte sub_803541C
- .4byte sub_8035428
- .4byte sub_8035590
- .4byte sub_80355C0
- .4byte sub_80356C0
- .4byte OpponentHandleHealthBarUpdate
- .4byte OpponentHandleExpBarUpdate
- .4byte OpponentHandleStatusIconUpdate
- .4byte OpponentHandleStatusAnimation
- .4byte OpponentHandleStatusXor
- .4byte sub_80358B0
- .4byte OpponentHandleDMATransfer
- .4byte sub_80358C8
- .4byte sub_80358D4
- .4byte sub_80358E0
- .4byte sub_80358EC
- .4byte sub_80358F8
- .4byte sub_8035904
- .4byte sub_8035910
- .4byte sub_803592C
- .4byte sub_8035964
- .4byte sub_803597C
- .4byte OpponentHandleHitAnimation
- .4byte sub_8035A14
- .4byte OpponentHandleEffectivenessSound
- .4byte sub_8035A64
- .4byte OpponentHandleFaintingCry
- .4byte dp01t_2E_7_battle_intro
- .4byte sub_8035B04
- .4byte dp01t_30_7_0803D67C
- .4byte sub_8035E6C
- .4byte sub_8035EB8
- .4byte OpponentHandleSpriteInvisibility
- .4byte OpponentHandleBattleAnimation
- .4byte OpponentHandleLinkStandbyMsg
- .4byte OpponentHandleResetActionMoveSelection
- .4byte sub_8035FA4
- .4byte nullsub_46
-
-@ unreferenced unknown values
- .byte 0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20
-
- .align 2
-gLinkOpponentBufferCommands:: @ 81FB048
- .4byte LinkOpponentHandleGetAttributes
- .4byte sub_803889C
- .4byte sub_80388A8
- .4byte sub_8039220
- .4byte sub_8039294
- .4byte sub_80393E4
- .4byte sub_80395B4
- .4byte sub_80396D0
- .4byte sub_80398A4
- .4byte sub_80398B0
- .4byte sub_803995C
- .4byte sub_8039A00
- .4byte sub_8039A0C
- .4byte sub_8039A18
- .4byte sub_8039A24
- .4byte sub_8039A30
- .4byte sub_8039CC8
- .4byte sub_8039D2C
- .4byte sub_8039D38
- .4byte sub_8039D44
- .4byte sub_8039D50
- .4byte sub_8039D5C
- .4byte sub_8039D68
- .4byte sub_8039D74
- .4byte sub_8039D80
- .4byte sub_8039E70
- .4byte sub_8039E7C
- .4byte sub_8039EF0
- .4byte sub_8039F58
- .4byte sub_8039F64
- .4byte sub_8039F70
- .4byte sub_8039F7C
- .4byte sub_8039F88
- .4byte sub_8039F94
- .4byte sub_8039FA0
- .4byte sub_8039FAC
- .4byte sub_8039FB8
- .4byte sub_8039FC4
- .4byte sub_8039FE0
- .4byte sub_803A018
- .4byte sub_803A030
- .4byte dp01t_29_4_blink
- .4byte sub_803A0C8
- .4byte sub_803A0D4
- .4byte sub_803A118
- .4byte sub_803A148
- .4byte dp01t_2E_4_battle_intro
- .4byte sub_803A1B8
- .4byte sub_803A3DC
- .4byte sub_803A520
- .4byte sub_803A56C
- .4byte sub_803A578
- .4byte bx_exec_buffer_A_ch0_tbl4
- .4byte sub_803A640
- .4byte sub_803A64C
- .4byte sub_803A658
- .4byte nullsub_48
-
-@ 81FB12C
- .include "data/battle_moves.inc"
-
- .align 2
-gUnknown_081FC1D0:: @ 81FC1D0
- .2byte 0x34, 0x10, 0x101
- .space 2
-
- .2byte -1, -1, -1
- .space 2
diff --git a/data/data2b.s b/data/data2b.s
new file mode 100644
index 000000000..329384396
--- /dev/null
+++ b/data/data2b.s
@@ -0,0 +1,78 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .section .rodata
+
+ .align 2
+gUnknown_081FAEA4:: @ 81FAEA4
+ obj_tiles gSmokescreenImpactTiles, 0x180, 55019
+
+ .align 2
+gUnknown_081FAEAC:: @ 81FAEAC
+ obj_pal gSmokescreenImpactPalette, 55019
+
+ .align 2
+gOamData_81FAEB4:: @ 81FAEB4
+ .2byte 0x0000
+ .2byte 0x4000
+ .2byte 0x0400
+
+ .align 2
+gSpriteAnim_81FAEBC:: @ 81FAEBC
+ obj_image_anim_frame 0, 4
+ obj_image_anim_frame 4, 4
+ obj_image_anim_frame 8, 4
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnim_81FAECC:: @ 81FAECC
+ obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_H_FLIP
+ obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_H_FLIP
+ obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_H_FLIP
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnim_81FAEDC:: @ 81FAEDC
+ obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP
+ obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP
+ obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnim_81FAEEC:: @ 81FAEEC
+ obj_image_anim_frame 0, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
+ obj_image_anim_frame 4, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
+ obj_image_anim_frame 8, 4, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
+ obj_image_anim_end
+
+ .align 2
+gSpriteAnimTable_81FAEFC:: @ 81FAEFC
+ .4byte gSpriteAnim_81FAEBC
+ .4byte gSpriteAnim_81FAECC
+ .4byte gSpriteAnim_81FAEDC
+ .4byte gSpriteAnim_81FAEEC
+
+ .align 2
+gSpriteTemplate_81FAF0C:: @ 81FAF0C
+ spr_template 55019, 55019, gOamData_81FAEB4, gSpriteAnimTable_81FAEFC, NULL, gDummySpriteAffineAnimTable, sub_80463CC
+
+ .align 2
+gUnknown_081FAF24:: @ 81FAF24
+ obj_tiles gEnemyMonShadow_Gfx, 128, 0xD759
+
+ .align 2
+gOamData_81FAF2C:: @ 81FAF2C
+ .2byte 0x4000
+ .2byte 0x4000
+ .2byte 0x0C00
+
+ .align 2
+gSpriteTemplate_81FAF34:: @ 81FAF34
+ spr_template 55129, 55039, gOamData_81FAF2C, gDummySpriteAnimTable, NULL, gDummySpriteAffineAnimTable, sub_8032978
+
+ .align 2
+gUnknown_081FAF4C:: @ 81FAF4C
+ .4byte 0x02008000
+ .4byte 0x0200a000
+ .4byte 0x0200c000
+ .4byte 0x0200e000
diff --git a/data/daycare.s b/data/daycare.s
deleted file mode 100644
index 92eb4637e..000000000
--- a/data/daycare.s
+++ /dev/null
@@ -1,17 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 82091DC
- .include "data/egg_moves.inc"
-
- .align 2
-gUnknown_08209AC4:: @ 8209AC4
- .4byte DaycareText_GetAlongVeryWell
- .4byte DaycareText_GetAlong
- .4byte DaycareText_DontLikeOther
- .4byte DaycareText_PlayOther
-
-gUnknown_08209AD4:: @ 8209AD4
- .string "タマゴ$"
diff --git a/data/egg_hatch.s b/data/egg_hatch.s
deleted file mode 100644
index 1823409dd..000000000
--- a/data/egg_hatch.s
+++ /dev/null
@@ -1,122 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-EggPalette:: @ 8209AD8
- .incbin "graphics/pokemon/egg/palette.gbapal"
-
-EggHatchTiles:: @ 8209AF8
- .incbin "graphics/misc/egg_hatch.4bpp"
-
-EggShardTiles:: @ 820A2F8
- .incbin "graphics/misc/egg_shard.4bpp"
-
- .align 2
-gOamData_820A378:: @ 820A378
- .2byte 0x0000
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_820A380:: @ 820A380
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820A388:: @ 820A388
- obj_image_anim_frame 16, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820A390:: @ 820A390
- obj_image_anim_frame 32, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820A398:: @ 820A398
- obj_image_anim_frame 48, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_820A3A0:: @ 820A3A0
- .4byte gSpriteAnim_820A380
- .4byte gSpriteAnim_820A388
- .4byte gSpriteAnim_820A390
- .4byte gSpriteAnim_820A398
-
- .align 2
-gUnknown_0820A3B0:: @ 820A3B0
- obj_tiles EggHatchTiles, 2048, 12345
-
- .align 2
-gUnknown_0820A3B8:: @ 820A3B8
- obj_tiles EggShardTiles, 128, 23456
-
- .align 2
-gUnknown_0820A3C0:: @ 820A3C0
- obj_pal EggPalette, 54321
-
- .align 2
-gSpriteTemplate_820A3C8:: @ 820A3C8
- spr_template 12345, 54321, gOamData_820A378, gSpriteAnimTable_820A3A0, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gOamData_820A3E0:: @ 820A3E0
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0800
-
- .align 2
-gSpriteAnim_820A3E8:: @ 820A3E8
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820A3F0:: @ 820A3F0
- obj_image_anim_frame 1, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820A3F8:: @ 820A3F8
- obj_image_anim_frame 2, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820A400:: @ 820A400
- obj_image_anim_frame 3, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_820A408:: @ 820A408
- .4byte gSpriteAnim_820A3E8
- .4byte gSpriteAnim_820A3F0
- .4byte gSpriteAnim_820A3F8
- .4byte gSpriteAnim_820A400
-
- .align 2
-gSpriteTemplate_820A418:: @ 820A418
- spr_template 23456, 54321, gOamData_820A3E0, gSpriteAnimTable_820A408, NULL, gDummySpriteAffineAnimTable, SpriteCB_EggShard
-
-@ The values are Q8.8 fixed-point numbers.
- .align 1
-gEggShardVelocities:: @ 820A430
- .2byte 0xFE80, 0xFC40 @ (-1.5, -3.75)
- .2byte 0xFB00, 0xFD00 @ (-5, -3)
- .2byte 0x0380, 0xFD00 @ (3.5, -3)
- .2byte 0xFC00, 0xFC40 @ (-4, -3.75)
- .2byte 0x0200, 0xFE80 @ (2, -1.5)
- .2byte 0xFF80, 0xF940 @ (-0.5, -6.75)
- .2byte 0x0500, 0xFDC0 @ (5, -2.25)
- .2byte 0xFE80, 0xFC40 @ (-1.5, -3.75)
- .2byte 0x0480, 0xFE80 @ (4.5, -1.5)
- .2byte 0xFF00, 0xF940 @ (-1, -6.75)
- .2byte 0x0400, 0xFDC0 @ (4, -2.25)
- .2byte 0xFC80, 0xFC40 @ (-3.5, -3.75)
- .2byte 0x0100, 0xFE80 @ (1, -1.5)
- .2byte 0xFC7C, 0xF940 @ (-3.515625, -6.75)
- .2byte 0x0480, 0xFDC0 @ (4.5, -2.25)
- .2byte 0xFF80, 0xF880 @ (-0.5, -7.5)
- .2byte 0x0100, 0xFB80 @ (1, -4.5)
- .2byte 0xFD80, 0xFDC0 @ (-2.5, -2.25)
- .2byte 0x0280, 0xF880 @ (2.5, -7.5)
diff --git a/data/egg_moves.inc b/data/egg_moves.inc
deleted file mode 100644
index e684e04ce..000000000
--- a/data/egg_moves.inc
+++ /dev/null
@@ -1,1306 +0,0 @@
- .align 2
-gEggMoves:: @ 82091DC
- egg_moves_begin SPECIES_BULBASAUR
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_SKULL_BASH
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CHARM
- .2byte MOVE_PETAL_DANCE
- .2byte MOVE_MAGICAL_LEAF
- .2byte MOVE_GRASS_WHISTLE
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_CHARMANDER
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_BITE
- .2byte MOVE_OUTRAGE
- .2byte MOVE_BEAT_UP
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_DRAGON_DANCE
-
- egg_moves_begin SPECIES_SQUIRTLE
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_HAZE
- .2byte MOVE_MIST
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FLAIL
- .2byte MOVE_REFRESH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_YAWN
-
- egg_moves_begin SPECIES_PIDGEY
- .2byte MOVE_PURSUIT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_FORESIGHT
- .2byte MOVE_STEEL_WING
- .2byte MOVE_AIR_CUTTER
-
- egg_moves_begin SPECIES_RATTATA
- .2byte MOVE_SCREECH
- .2byte MOVE_FLAME_WHEEL
- .2byte MOVE_FURY_SWIPES
- .2byte MOVE_BITE
- .2byte MOVE_COUNTER
- .2byte MOVE_REVERSAL
- .2byte MOVE_UPROAR
- .2byte MOVE_SWAGGER
-
- egg_moves_begin SPECIES_SPEAROW
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_SCARY_FACE
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_TRI_ATTACK
- .2byte MOVE_ASTONISH
- .2byte MOVE_SKY_ATTACK
-
- egg_moves_begin SPECIES_EKANS
- .2byte MOVE_PURSUIT
- .2byte MOVE_SLAM
- .2byte MOVE_SPITE
- .2byte MOVE_BEAT_UP
- .2byte MOVE_POISON_FANG
-
- egg_moves_begin SPECIES_SANDSHREW
- .2byte MOVE_FLAIL
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_COUNTER
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_METAL_CLAW
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_NIDORAN_F
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_DISABLE
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_CHARM
- .2byte MOVE_COUNTER
- .2byte MOVE_BEAT_UP
-
- egg_moves_begin SPECIES_NIDORAN_M
- .2byte MOVE_COUNTER
- .2byte MOVE_DISABLE
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_AMNESIA
- .2byte MOVE_CONFUSION
- .2byte MOVE_BEAT_UP
-
- egg_moves_begin SPECIES_VULPIX
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_FLAIL
- .2byte MOVE_SPITE
- .2byte MOVE_DISABLE
- .2byte MOVE_HOWL
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_HEAT_WAVE
-
- egg_moves_begin SPECIES_ZUBAT
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_PURSUIT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_GUST
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_ODDISH
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_RAZOR_LEAF
- .2byte MOVE_FLAIL
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_CHARM
- .2byte MOVE_INGRAIN
-
- egg_moves_begin SPECIES_PARAS
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_SCREECH
- .2byte MOVE_COUNTER
- .2byte MOVE_PSYBEAM
- .2byte MOVE_FLAIL
- .2byte MOVE_SWEET_SCENT
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_PURSUIT
-
- egg_moves_begin SPECIES_VENONAT
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SCREECH
- .2byte MOVE_GIGA_DRAIN
- .2byte MOVE_SIGNAL_BEAM
-
- egg_moves_begin SPECIES_DIGLETT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_SCREECH
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_PURSUIT
- .2byte MOVE_BEAT_UP
- .2byte MOVE_UPROAR
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_MEOWTH
- .2byte MOVE_SPITE
- .2byte MOVE_CHARM
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_AMNESIA
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_ASSIST
-
- egg_moves_begin SPECIES_PSYDUCK
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_PSYBEAM
- .2byte MOVE_FORESIGHT
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_PSYCHIC
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_REFRESH
-
- egg_moves_begin SPECIES_MANKEY
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_FORESIGHT
- .2byte MOVE_MEDITATE
- .2byte MOVE_COUNTER
- .2byte MOVE_REVERSAL
- .2byte MOVE_BEAT_UP
- .2byte MOVE_REVENGE
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_GROWLITHE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CRUNCH
- .2byte MOVE_THRASH
- .2byte MOVE_FIRE_SPIN
- .2byte MOVE_HOWL
- .2byte MOVE_HEAT_WAVE
-
- egg_moves_begin SPECIES_POLIWAG
- .2byte MOVE_MIST
- .2byte MOVE_SPLASH
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_HAZE
- .2byte MOVE_MIND_READER
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_ICE_BALL
-
- egg_moves_begin SPECIES_ABRA
- .2byte MOVE_ENCORE
- .2byte MOVE_BARRIER
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_THUNDER_PUNCH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_MACHOP
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_MEDITATE
- .2byte MOVE_ROLLING_KICK
- .2byte MOVE_ENCORE
- .2byte MOVE_SMELLING_SALT
- .2byte MOVE_COUNTER
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_BELLSPROUT
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_ENCORE
- .2byte MOVE_REFLECT
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_LEECH_LIFE
- .2byte MOVE_INGRAIN
- .2byte MOVE_MAGICAL_LEAF
-
- egg_moves_begin SPECIES_TENTACOOL
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_HAZE
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_GEODUDE
- .2byte MOVE_MEGA_PUNCH
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_BLOCK
-
- egg_moves_begin SPECIES_PONYTA
- .2byte MOVE_FLAME_WHEEL
- .2byte MOVE_THRASH
- .2byte MOVE_DOUBLE_KICK
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_CHARM
- .2byte MOVE_DOUBLE_EDGE
-
- egg_moves_begin SPECIES_SLOWPOKE
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_STOMP
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_SNORE
-
- egg_moves_begin SPECIES_FARFETCHD
- .2byte MOVE_STEEL_WING
- .2byte MOVE_FORESIGHT
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_GUST
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_FLAIL
- .2byte MOVE_FEATHER_DANCE
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_DODUO
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_HAZE
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_FLAIL
- .2byte MOVE_ENDEAVOR
-
- egg_moves_begin SPECIES_SEEL
- .2byte MOVE_LICK
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_DISABLE
- .2byte MOVE_HORN_DRILL
- .2byte MOVE_SLAM
- .2byte MOVE_ENCORE
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_ICICLE_SPEAR
-
- egg_moves_begin SPECIES_GRIMER
- .2byte MOVE_HAZE
- .2byte MOVE_MEAN_LOOK
- .2byte MOVE_LICK
- .2byte MOVE_IMPRISON
- .2byte MOVE_CURSE
- .2byte MOVE_SHADOW_PUNCH
- .2byte MOVE_EXPLOSION
-
- egg_moves_begin SPECIES_SHELLDER
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_BARRIER
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_SCREECH
- .2byte MOVE_ICICLE_SPEAR
-
- egg_moves_begin SPECIES_GASTLY
- .2byte MOVE_PSYWAVE
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_HAZE
- .2byte MOVE_ASTONISH
- .2byte MOVE_WILL_O_WISP
- .2byte MOVE_GRUDGE
- .2byte MOVE_EXPLOSION
-
- egg_moves_begin SPECIES_ONIX
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_FLAIL
- .2byte MOVE_EXPLOSION
- .2byte MOVE_BLOCK
-
- egg_moves_begin SPECIES_DROWZEE
- .2byte MOVE_BARRIER
- .2byte MOVE_ASSIST
- .2byte MOVE_ROLE_PLAY
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_THUNDER_PUNCH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_KRABBY
- .2byte MOVE_DIG
- .2byte MOVE_HAZE
- .2byte MOVE_AMNESIA
- .2byte MOVE_FLAIL
- .2byte MOVE_SLAM
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_SWORDS_DANCE
-
- egg_moves_begin SPECIES_EXEGGCUTE
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_MOONLIGHT
- .2byte MOVE_REFLECT
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_INGRAIN
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_CUBONE
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_SCREECH
- .2byte MOVE_SKULL_BASH
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_SWORDS_DANCE
-
- egg_moves_begin SPECIES_LICKITUNG
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_CURSE
- .2byte MOVE_SMELLING_SALT
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_SNORE
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_KOFFING
- .2byte MOVE_SCREECH
- .2byte MOVE_PSYWAVE
- .2byte MOVE_PSYBEAM
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_PAIN_SPLIT
- .2byte MOVE_WILL_O_WISP
-
- egg_moves_begin SPECIES_RHYHORN
- .2byte MOVE_CRUNCH
- .2byte MOVE_REVERSAL
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_COUNTER
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_CURSE
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_CHANSEY
- .2byte MOVE_PRESENT
- .2byte MOVE_METRONOME
- .2byte MOVE_HEAL_BELL
- .2byte MOVE_AROMATHERAPY
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_TANGELA
- .2byte MOVE_FLAIL
- .2byte MOVE_CONFUSION
- .2byte MOVE_MEGA_DRAIN
- .2byte MOVE_REFLECT
- .2byte MOVE_AMNESIA
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_NATURE_POWER
-
- egg_moves_begin SPECIES_KANGASKHAN
- .2byte MOVE_STOMP
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_DISABLE
- .2byte MOVE_COUNTER
- .2byte MOVE_CRUSH_CLAW
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_HORSEA
- .2byte MOVE_FLAIL
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_OCTAZOOKA
- .2byte MOVE_DISABLE
- .2byte MOVE_SPLASH
- .2byte MOVE_DRAGON_RAGE
- .2byte MOVE_DRAGON_BREATH
-
- egg_moves_begin SPECIES_GOLDEEN
- .2byte MOVE_PSYBEAM
- .2byte MOVE_HAZE
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_MUD_SPORT
-
- egg_moves_begin SPECIES_MR_MIME
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_MIMIC
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_SCYTHER
- .2byte MOVE_COUNTER
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_BATON_PASS
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_REVERSAL
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_ENDURE
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_PINSIR
- .2byte MOVE_FURY_ATTACK
- .2byte MOVE_FLAIL
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_FAINT_ATTACK
-
- egg_moves_begin SPECIES_LAPRAS
- .2byte MOVE_FORESIGHT
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TICKLE
- .2byte MOVE_REFRESH
- .2byte MOVE_DRAGON_DANCE
- .2byte MOVE_CURSE
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_HORN_DRILL
-
- egg_moves_begin SPECIES_EEVEE
- .2byte MOVE_CHARM
- .2byte MOVE_FLAIL
- .2byte MOVE_ENDURE
- .2byte MOVE_CURSE
- .2byte MOVE_TICKLE
- .2byte MOVE_WISH
-
- egg_moves_begin SPECIES_OMANYTE
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_SLAM
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_HAZE
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SPIKES
-
- egg_moves_begin SPECIES_KABUTO
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_DIG
- .2byte MOVE_FLAIL
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_AERODACTYL
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_PURSUIT
- .2byte MOVE_FORESIGHT
- .2byte MOVE_STEEL_WING
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_SNORLAX
- .2byte MOVE_LICK
- .2byte MOVE_CHARM
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_CURSE
- .2byte MOVE_FISSURE
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_DRATINI
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_MIST
- .2byte MOVE_HAZE
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_DRAGON_DANCE
-
- egg_moves_begin SPECIES_CHIKORITA
- .2byte MOVE_VINE_WHIP
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_COUNTER
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_FLAIL
- .2byte MOVE_NATURE_POWER
- .2byte MOVE_INGRAIN
- .2byte MOVE_GRASS_WHISTLE
-
- egg_moves_begin SPECIES_CYNDAQUIL
- .2byte MOVE_FURY_SWIPES
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_REVERSAL
- .2byte MOVE_THRASH
- .2byte MOVE_FORESIGHT
- .2byte MOVE_COVET
- .2byte MOVE_HOWL
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_TOTODILE
- .2byte MOVE_CRUNCH
- .2byte MOVE_THRASH
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_DRAGON_CLAW
-
- egg_moves_begin SPECIES_SENTRET
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_PURSUIT
- .2byte MOVE_SLASH
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_REVERSAL
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TRICK
- .2byte MOVE_ASSIST
-
- egg_moves_begin SPECIES_HOOTHOOT
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_WING_ATTACK
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_SKY_ATTACK
- .2byte MOVE_FEATHER_DANCE
-
- egg_moves_begin SPECIES_LEDYBA
- .2byte MOVE_PSYBEAM
- .2byte MOVE_BIDE
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_SPINARAK
- .2byte MOVE_PSYBEAM
- .2byte MOVE_DISABLE
- .2byte MOVE_SONIC_BOOM
- .2byte MOVE_BATON_PASS
- .2byte MOVE_PURSUIT
- .2byte MOVE_SIGNAL_BEAM
-
- egg_moves_begin SPECIES_CHINCHOU
- .2byte MOVE_FLAIL
- .2byte MOVE_SCREECH
- .2byte MOVE_AMNESIA
-
- egg_moves_begin SPECIES_PICHU
- .2byte MOVE_REVERSAL
- .2byte MOVE_BIDE
- .2byte MOVE_PRESENT
- .2byte MOVE_ENCORE
- .2byte MOVE_DOUBLE_SLAP
- .2byte MOVE_WISH
- .2byte MOVE_CHARGE
-
- egg_moves_begin SPECIES_CLEFFA
- .2byte MOVE_PRESENT
- .2byte MOVE_METRONOME
- .2byte MOVE_AMNESIA
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_SPLASH
- .2byte MOVE_MIMIC
- .2byte MOVE_WISH
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_IGGLYBUFF
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_PRESENT
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_WISH
- .2byte MOVE_FAKE_TEARS
-
- egg_moves_begin SPECIES_TOGEPI
- .2byte MOVE_PRESENT
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_PECK
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_PSYCH_UP
-
- egg_moves_begin SPECIES_NATU
- .2byte MOVE_HAZE
- .2byte MOVE_DRILL_PECK
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_STEEL_WING
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_FEATHER_DANCE
- .2byte MOVE_REFRESH
-
- egg_moves_begin SPECIES_MAREEP
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_SCREECH
- .2byte MOVE_REFLECT
- .2byte MOVE_ODOR_SLEUTH
- .2byte MOVE_CHARGE
-
- egg_moves_begin SPECIES_MARILL
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_PRESENT
- .2byte MOVE_AMNESIA
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_BELLY_DRUM
- .2byte MOVE_PERISH_SONG
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_SUDOWOODO
- .2byte MOVE_SELF_DESTRUCT
-
- egg_moves_begin SPECIES_HOPPIP
- .2byte MOVE_CONFUSION
- .2byte MOVE_ENCORE
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_REFLECT
- .2byte MOVE_AMNESIA
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_PSYCH_UP
-
- egg_moves_begin SPECIES_AIPOM
- .2byte MOVE_COUNTER
- .2byte MOVE_SCREECH
- .2byte MOVE_PURSUIT
- .2byte MOVE_AGILITY
- .2byte MOVE_SPITE
- .2byte MOVE_SLAM
- .2byte MOVE_DOUBLE_SLAP
- .2byte MOVE_BEAT_UP
-
- egg_moves_begin SPECIES_SUNKERN
- .2byte MOVE_GRASS_WHISTLE
- .2byte MOVE_ENCORE
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_NATURE_POWER
- .2byte MOVE_CURSE
- .2byte MOVE_HELPING_HAND
-
- egg_moves_begin SPECIES_YANMA
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_REVERSAL
- .2byte MOVE_LEECH_LIFE
- .2byte MOVE_SIGNAL_BEAM
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_WOOPER
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_SAFEGUARD
- .2byte MOVE_CURSE
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_STOCKPILE
- .2byte MOVE_SWALLOW
- .2byte MOVE_SPIT_UP
-
- egg_moves_begin SPECIES_MURKROW
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_DRILL_PECK
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_WING_ATTACK
- .2byte MOVE_SKY_ATTACK
- .2byte MOVE_CONFUSE_RAY
- .2byte MOVE_FEATHER_DANCE
- .2byte MOVE_PERISH_SONG
-
- egg_moves_begin SPECIES_MISDREAVUS
- .2byte MOVE_SCREECH
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_IMPRISON
-
- egg_moves_begin SPECIES_GIRAFARIG
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_AMNESIA
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_BEAT_UP
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_WISH
- .2byte MOVE_MAGIC_COAT
-
- egg_moves_begin SPECIES_PINECO
- .2byte MOVE_REFLECT
- .2byte MOVE_PIN_MISSILE
- .2byte MOVE_FLAIL
- .2byte MOVE_SWIFT
- .2byte MOVE_COUNTER
- .2byte MOVE_SAND_TOMB
-
- egg_moves_begin SPECIES_DUNSPARCE
- .2byte MOVE_BIDE
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_BITE
- .2byte MOVE_HEADBUTT
- .2byte MOVE_ASTONISH
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_GLIGAR
- .2byte MOVE_METAL_CLAW
- .2byte MOVE_WING_ATTACK
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_COUNTER
- .2byte MOVE_SAND_TOMB
-
- egg_moves_begin SPECIES_SNUBBULL
- .2byte MOVE_METRONOME
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_REFLECT
- .2byte MOVE_PRESENT
- .2byte MOVE_CRUNCH
- .2byte MOVE_HEAL_BELL
- .2byte MOVE_SNORE
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_QWILFISH
- .2byte MOVE_FLAIL
- .2byte MOVE_HAZE
- .2byte MOVE_BUBBLE_BEAM
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_ASTONISH
-
- egg_moves_begin SPECIES_SHUCKLE
- .2byte MOVE_SWEET_SCENT
-
- egg_moves_begin SPECIES_HERACROSS
- .2byte MOVE_HARDEN
- .2byte MOVE_BIDE
- .2byte MOVE_FLAIL
- .2byte MOVE_FALSE_SWIPE
-
- egg_moves_begin SPECIES_SNEASEL
- .2byte MOVE_COUNTER
- .2byte MOVE_SPITE
- .2byte MOVE_FORESIGHT
- .2byte MOVE_REFLECT
- .2byte MOVE_BITE
- .2byte MOVE_CRUSH_CLAW
- .2byte MOVE_FAKE_OUT
-
- egg_moves_begin SPECIES_TEDDIURSA
- .2byte MOVE_CRUNCH
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_SEISMIC_TOSS
- .2byte MOVE_COUNTER
- .2byte MOVE_METAL_CLAW
- .2byte MOVE_FAKE_TEARS
- .2byte MOVE_YAWN
- .2byte MOVE_SLEEP_TALK
-
- egg_moves_begin SPECIES_SLUGMA
- .2byte MOVE_ACID_ARMOR
- .2byte MOVE_HEAT_WAVE
-
- egg_moves_begin SPECIES_SWINUB
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_BITE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_MUD_SHOT
- .2byte MOVE_ICICLE_SPEAR
- .2byte MOVE_DOUBLE_EDGE
-
- egg_moves_begin SPECIES_CORSOLA
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SCREECH
- .2byte MOVE_MIST
- .2byte MOVE_AMNESIA
- .2byte MOVE_BARRIER
- .2byte MOVE_INGRAIN
- .2byte MOVE_CONFUSE_RAY
- .2byte MOVE_ICICLE_SPEAR
-
- egg_moves_begin SPECIES_REMORAID
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_OCTAZOOKA
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_HAZE
- .2byte MOVE_SCREECH
- .2byte MOVE_THUNDER_WAVE
- .2byte MOVE_ROCK_BLAST
-
- egg_moves_begin SPECIES_DELIBIRD
- .2byte MOVE_AURORA_BEAM
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_SPLASH
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_ICE_BALL
-
- egg_moves_begin SPECIES_MANTINE
- .2byte MOVE_TWISTER
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_HAZE
- .2byte MOVE_SLAM
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_SKARMORY
- .2byte MOVE_DRILL_PECK
- .2byte MOVE_PURSUIT
- .2byte MOVE_WHIRLWIND
- .2byte MOVE_SKY_ATTACK
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_HOUNDOUR
- .2byte MOVE_FIRE_SPIN
- .2byte MOVE_RAGE
- .2byte MOVE_PURSUIT
- .2byte MOVE_COUNTER
- .2byte MOVE_SPITE
- .2byte MOVE_REVERSAL
- .2byte MOVE_BEAT_UP
- .2byte MOVE_WILL_O_WISP
-
- egg_moves_begin SPECIES_PHANPY
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_SNORE
- .2byte MOVE_COUNTER
- .2byte MOVE_FISSURE
-
- egg_moves_begin SPECIES_STANTLER
- .2byte MOVE_SPITE
- .2byte MOVE_DISABLE
- .2byte MOVE_BITE
- .2byte MOVE_SWAGGER
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_EXTRASENSORY
-
- egg_moves_begin SPECIES_TYROGUE
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_HI_JUMP_KICK
- .2byte MOVE_MACH_PUNCH
- .2byte MOVE_MIND_READER
- .2byte MOVE_HELPING_HAND
-
- egg_moves_begin SPECIES_SMOOCHUM
- .2byte MOVE_MEDITATE
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_WISH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_ELEKID
- .2byte MOVE_KARATE_CHOP
- .2byte MOVE_BARRIER
- .2byte MOVE_ROLLING_KICK
- .2byte MOVE_MEDITATE
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_ICE_PUNCH
-
- egg_moves_begin SPECIES_MAGBY
- .2byte MOVE_KARATE_CHOP
- .2byte MOVE_MEGA_PUNCH
- .2byte MOVE_BARRIER
- .2byte MOVE_SCREECH
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_THUNDER_PUNCH
-
- egg_moves_begin SPECIES_MILTANK
- .2byte MOVE_PRESENT
- .2byte MOVE_REVERSAL
- .2byte MOVE_SEISMIC_TOSS
- .2byte MOVE_ENDURE
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_CURSE
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_SLEEP_TALK
-
- egg_moves_begin SPECIES_LARVITAR
- .2byte MOVE_PURSUIT
- .2byte MOVE_STOMP
- .2byte MOVE_OUTRAGE
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_DRAGON_DANCE
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_TREECKO
- .2byte MOVE_CRUNCH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_ENDEAVOR
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_CRUSH_CLAW
-
- egg_moves_begin SPECIES_TORCHIC
- .2byte MOVE_COUNTER
- .2byte MOVE_REVERSAL
- .2byte MOVE_ENDURE
- .2byte MOVE_SWAGGER
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_MUDKIP
- .2byte MOVE_REFRESH
- .2byte MOVE_UPROAR
- .2byte MOVE_CURSE
- .2byte MOVE_STOMP
- .2byte MOVE_ICE_BALL
- .2byte MOVE_MIRROR_COAT
-
- egg_moves_begin SPECIES_POOCHYENA
- .2byte MOVE_ASTONISH
- .2byte MOVE_POISON_FANG
- .2byte MOVE_COVET
- .2byte MOVE_LEER
- .2byte MOVE_YAWN
-
- egg_moves_begin SPECIES_ZIGZAGOON
- .2byte MOVE_CHARM
- .2byte MOVE_PURSUIT
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TICKLE
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_LOTAD
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_RAZOR_LEAF
- .2byte MOVE_SWEET_SCENT
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_FLAIL
- .2byte MOVE_WATER_GUN
-
- egg_moves_begin SPECIES_SEEDOT
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_AMNESIA
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_FALSE_SWIPE
-
- egg_moves_begin SPECIES_NINCADA
- .2byte MOVE_ENDURE
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_GUST
- .2byte MOVE_SILVER_WIND
-
- egg_moves_begin SPECIES_TAILLOW
- .2byte MOVE_PURSUIT
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_REFRESH
- .2byte MOVE_MIRROR_MOVE
- .2byte MOVE_RAGE
- .2byte MOVE_SKY_ATTACK
-
- egg_moves_begin SPECIES_SHROOMISH
- .2byte MOVE_FAKE_TEARS
- .2byte MOVE_SWAGGER
- .2byte MOVE_CHARM
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_HELPING_HAND
-
- egg_moves_begin SPECIES_SPINDA
- .2byte MOVE_ENCORE
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_ASSIST
- .2byte MOVE_DISABLE
- .2byte MOVE_BATON_PASS
- .2byte MOVE_WISH
- .2byte MOVE_TRICK
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_WINGULL
- .2byte MOVE_MIST
- .2byte MOVE_TWISTER
- .2byte MOVE_AGILITY
- .2byte MOVE_GUST
- .2byte MOVE_WATER_SPORT
-
- egg_moves_begin SPECIES_SURSKIT
- .2byte MOVE_FORESIGHT
- .2byte MOVE_MUD_SHOT
- .2byte MOVE_PSYBEAM
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_MIND_READER
-
- egg_moves_begin SPECIES_WAILMER
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_THRASH
- .2byte MOVE_SWAGGER
- .2byte MOVE_SNORE
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_CURSE
- .2byte MOVE_FISSURE
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_SKITTY
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_UPROAR
- .2byte MOVE_FAKE_TEARS
- .2byte MOVE_WISH
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_KECLEON
- .2byte MOVE_DISABLE
- .2byte MOVE_MAGIC_COAT
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_NOSEPASS
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_ROLLOUT
- .2byte MOVE_EXPLOSION
-
- egg_moves_begin SPECIES_TORKOAL
- .2byte MOVE_ERUPTION
- .2byte MOVE_ENDURE
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_YAWN
-
- egg_moves_begin SPECIES_SABLEYE
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_RECOVER
- .2byte MOVE_MOONLIGHT
-
- egg_moves_begin SPECIES_BARBOACH
- .2byte MOVE_THRASH
- .2byte MOVE_WHIRLPOOL
- .2byte MOVE_SPARK
-
- egg_moves_begin SPECIES_LUVDISC
- .2byte MOVE_SPLASH
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_MUD_SPORT
-
- egg_moves_begin SPECIES_CORPHISH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_ENDEAVOR
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ANCIENT_POWER
-
- egg_moves_begin SPECIES_FEEBAS
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_DRAGON_BREATH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_LIGHT_SCREEN
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_CARVANHA
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_THRASH
-
- egg_moves_begin SPECIES_TRAPINCH
- .2byte MOVE_FOCUS_ENERGY
- .2byte MOVE_QUICK_ATTACK
- .2byte MOVE_GUST
-
- egg_moves_begin SPECIES_MAKUHITA
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_DETECT
- .2byte MOVE_FORESIGHT
- .2byte MOVE_HELPING_HAND
- .2byte MOVE_CROSS_CHOP
- .2byte MOVE_REVENGE
- .2byte MOVE_DYNAMIC_PUNCH
- .2byte MOVE_COUNTER
-
- egg_moves_begin SPECIES_ELECTRIKE
- .2byte MOVE_CRUNCH
- .2byte MOVE_HEADBUTT
- .2byte MOVE_UPROAR
- .2byte MOVE_CURSE
- .2byte MOVE_SWIFT
-
- egg_moves_begin SPECIES_NUMEL
- .2byte MOVE_HOWL
- .2byte MOVE_SCARY_FACE
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_ROLLOUT
- .2byte MOVE_DEFENSE_CURL
- .2byte MOVE_STOMP
-
- egg_moves_begin SPECIES_SPHEAL
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_STOCKPILE
- .2byte MOVE_SWALLOW
- .2byte MOVE_SPIT_UP
- .2byte MOVE_YAWN
- .2byte MOVE_ROCK_SLIDE
- .2byte MOVE_CURSE
- .2byte MOVE_FISSURE
-
- egg_moves_begin SPECIES_CACNEA
- .2byte MOVE_GRASS_WHISTLE
- .2byte MOVE_ACID
- .2byte MOVE_TEETER_DANCE
- .2byte MOVE_DYNAMIC_PUNCH
- .2byte MOVE_COUNTER
-
- egg_moves_begin SPECIES_SNORUNT
- .2byte MOVE_BLOCK
- .2byte MOVE_SPIKES
-
- egg_moves_begin SPECIES_AZURILL
- .2byte MOVE_ENCORE
- .2byte MOVE_SING
- .2byte MOVE_REFRESH
- .2byte MOVE_SLAM
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_SPOINK
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_EXTRASENSORY
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_PLUSLE
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_WISH
-
- egg_moves_begin SPECIES_MINUN
- .2byte MOVE_SUBSTITUTE
- .2byte MOVE_WISH
-
- egg_moves_begin SPECIES_MAWILE
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_FALSE_SWIPE
- .2byte MOVE_POISON_FANG
- .2byte MOVE_PSYCH_UP
- .2byte MOVE_ANCIENT_POWER
- .2byte MOVE_TICKLE
-
- egg_moves_begin SPECIES_MEDITITE
- .2byte MOVE_FIRE_PUNCH
- .2byte MOVE_THUNDER_PUNCH
- .2byte MOVE_ICE_PUNCH
- .2byte MOVE_FORESIGHT
- .2byte MOVE_FAKE_OUT
- .2byte MOVE_BATON_PASS
- .2byte MOVE_DYNAMIC_PUNCH
-
- egg_moves_begin SPECIES_SWABLU
- .2byte MOVE_AGILITY
- .2byte MOVE_HAZE
- .2byte MOVE_PURSUIT
- .2byte MOVE_RAGE
-
- egg_moves_begin SPECIES_DUSKULL
- .2byte MOVE_IMPRISON
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_PAIN_SPLIT
- .2byte MOVE_GRUDGE
- .2byte MOVE_MEMENTO
- .2byte MOVE_FAINT_ATTACK
-
- egg_moves_begin SPECIES_ROSELIA
- .2byte MOVE_SPIKES
- .2byte MOVE_SYNTHESIS
- .2byte MOVE_PIN_MISSILE
- .2byte MOVE_COTTON_SPORE
-
- egg_moves_begin SPECIES_SLAKOTH
- .2byte MOVE_PURSUIT
- .2byte MOVE_SLASH
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SNORE
- .2byte MOVE_CRUSH_CLAW
- .2byte MOVE_CURSE
- .2byte MOVE_SLEEP_TALK
-
- egg_moves_begin SPECIES_GULPIN
- .2byte MOVE_DREAM_EATER
- .2byte MOVE_ACID_ARMOR
- .2byte MOVE_SMOG
- .2byte MOVE_PAIN_SPLIT
-
- egg_moves_begin SPECIES_TROPIUS
- .2byte MOVE_HEADBUTT
- .2byte MOVE_SLAM
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_LEECH_SEED
- .2byte MOVE_NATURE_POWER
-
- egg_moves_begin SPECIES_WHISMUR
- .2byte MOVE_TAKE_DOWN
- .2byte MOVE_SNORE
- .2byte MOVE_SWAGGER
- .2byte MOVE_EXTRASENSORY
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_CLAMPERL
- .2byte MOVE_REFRESH
- .2byte MOVE_MUD_SPORT
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_SUPERSONIC
- .2byte MOVE_BARRIER
- .2byte MOVE_CONFUSE_RAY
-
- egg_moves_begin SPECIES_ABSOL
- .2byte MOVE_BATON_PASS
- .2byte MOVE_FAINT_ATTACK
- .2byte MOVE_DOUBLE_EDGE
- .2byte MOVE_MAGIC_COAT
- .2byte MOVE_CURSE
- .2byte MOVE_SUBSTITUTE
-
- egg_moves_begin SPECIES_SHUPPET
- .2byte MOVE_DISABLE
- .2byte MOVE_DESTINY_BOND
- .2byte MOVE_FORESIGHT
- .2byte MOVE_ASTONISH
- .2byte MOVE_IMPRISON
-
- egg_moves_begin SPECIES_SEVIPER
- .2byte MOVE_STOCKPILE
- .2byte MOVE_SWALLOW
- .2byte MOVE_SPIT_UP
- .2byte MOVE_BODY_SLAM
-
- egg_moves_begin SPECIES_ZANGOOSE
- .2byte MOVE_FLAIL
- .2byte MOVE_DOUBLE_KICK
- .2byte MOVE_RAZOR_WIND
- .2byte MOVE_COUNTER
- .2byte MOVE_ROAR
- .2byte MOVE_CURSE
-
- egg_moves_begin SPECIES_RELICANTH
- .2byte MOVE_MAGNITUDE
- .2byte MOVE_SKULL_BASH
- .2byte MOVE_WATER_SPORT
- .2byte MOVE_AMNESIA
- .2byte MOVE_SLEEP_TALK
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_ARON
- .2byte MOVE_ENDEAVOR
- .2byte MOVE_BODY_SLAM
- .2byte MOVE_STOMP
- .2byte MOVE_SMELLING_SALT
-
- egg_moves_begin SPECIES_CASTFORM
- .2byte MOVE_FUTURE_SIGHT
- .2byte MOVE_PSYCH_UP
-
- egg_moves_begin SPECIES_VOLBEAT
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SILVER_WIND
- .2byte MOVE_TRICK
-
- egg_moves_begin SPECIES_ILLUMISE
- .2byte MOVE_BATON_PASS
- .2byte MOVE_SILVER_WIND
- .2byte MOVE_GROWTH
-
- egg_moves_begin SPECIES_LILEEP
- .2byte MOVE_BARRIER
- .2byte MOVE_RECOVER
- .2byte MOVE_MIRROR_COAT
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_ANORITH
- .2byte MOVE_RAPID_SPIN
- .2byte MOVE_KNOCK_OFF
- .2byte MOVE_SWORDS_DANCE
- .2byte MOVE_ROCK_SLIDE
-
- egg_moves_begin SPECIES_RALTS
- .2byte MOVE_DISABLE
- .2byte MOVE_WILL_O_WISP
- .2byte MOVE_MEAN_LOOK
- .2byte MOVE_MEMENTO
- .2byte MOVE_DESTINY_BOND
-
- egg_moves_begin SPECIES_BAGON
- .2byte MOVE_HYDRO_PUMP
- .2byte MOVE_THRASH
- .2byte MOVE_DRAGON_RAGE
- .2byte MOVE_TWISTER
- .2byte MOVE_DRAGON_DANCE
-
- egg_moves_begin SPECIES_CHIMECHO
- .2byte MOVE_DISABLE
- .2byte MOVE_CURSE
- .2byte MOVE_HYPNOSIS
- .2byte MOVE_DREAM_EATER
-
- .2byte -1
diff --git a/data/event_scripts.s b/data/event_scripts.s
index d6702745a..854b52c9e 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -386,27 +386,27 @@ gStdScripts_End::
gUnknown_0815F36C:: @ 815F36C
lockall
- playsfx 2
+ playse 2
message UnknownString_81A3A72
- doanimation 61
+ dofieldeffect 61
waitstate
- waittext
+ waitmessage
waitbutton
- playsfx 5
- jump EventScript_15F384
+ playse 5
+ goto EventScript_15F384
end
EventScript_15F384:
message UnknownString_81A3A87
- waittext
+ waitmessage
checkflag 268
- jumpeq EventScript_15F3A0
- jump EventScript_15F3E2
+ goto_if_eq EventScript_15F3A0
+ goto EventScript_15F3E2
end
gUnknown_0815F399:: @ 815F399
lockall
- jump EventScript_15F384
+ goto EventScript_15F384
end
EventScript_15F3A0:
@@ -431,8 +431,8 @@ EventScript_15F3E2:
EventScript_15F419:
msgbox UnknownString_81A38FB, 5
compare RESULT, 0
- jumpeq EventScript_15F384
- closebutton
+ goto_if_eq EventScript_15F384
+ closemessage
special SecretBasePC_PackUp
releaseall
end
@@ -448,18 +448,18 @@ EventScript_15F436:
gUnknown_0815F43A:: @ 815F43A
lockall
message UnknownString_81A3A72
- playsfx 2
- doanimation 61
+ playse 2
+ dofieldeffect 61
waitstate
- waittext
+ waitmessage
waitbutton
- playsfx 5
- jump EventScript_15F452
+ playse 5
+ goto EventScript_15F452
end
EventScript_15F452:
message UnknownString_81A3A87
- waittext
+ waitmessage
multichoice 0, 0, 7, 0
switch RESULT
case 0, EventScript_15F4A1
@@ -471,19 +471,19 @@ EventScript_15F452:
gUnknown_0815F49A:: @ 815F49A
lockall
- jump EventScript_15F452
+ goto EventScript_15F452
end
EventScript_15F4A1:
special sub_80BC56C
compare RESULT, 1
- jumpeq EventScript_15F4E0
+ goto_if_eq EventScript_15F4E0
compare RESULT, 2
- jumpeq EventScript_15F503
+ goto_if_eq EventScript_15F503
special sub_80BC224
msgbox UnknownString_81A3958, 5
compare RESULT, 0
- jumpeq EventScript_15F452
+ goto_if_eq EventScript_15F452
msgbox UnknownString_81A3A22, 3
special sub_80BC5BC
special sub_80C683C
@@ -493,7 +493,7 @@ EventScript_15F4A1:
EventScript_15F4E0:
msgbox UnknownString_81A3982, 5
compare RESULT, 0
- jumpeq EventScript_15F452
+ goto_if_eq EventScript_15F452
msgbox UnknownString_81A3A3A, 3
special sub_80BC5BC
special sub_80C683C
@@ -503,37 +503,37 @@ EventScript_15F4E0:
EventScript_15F503:
msgbox UnknownString_81A39C0, 3
special sub_80C683C
- closebutton
+ closemessage
releaseall
end
EventScript_15F511:
message UnknownString_81A3AA2
- waittext
- jump EventScript_15F452
+ waitmessage
+ goto EventScript_15F452
end
EventScript_15F51D:
special sub_80C683C
- closebutton
+ closemessage
releaseall
end
gUnknown_0815F523:: @ 815F523
- doanimation 52
+ dofieldeffect 52
waitstate
end
gUnknown_0815F528:: @ 815F528
special GetShieldToyTVDecorationInfo
compare RESULT, 0
- jumpeq EventScript_15F558
+ goto_if_eq EventScript_15F558
compare RESULT, 1
- jumpeq EventScript_15F561
+ goto_if_eq EventScript_15F561
compare RESULT, 2
- jumpeq EventScript_15F56A
+ goto_if_eq EventScript_15F56A
compare RESULT, 3
- jumpeq EventScript_15F573
+ goto_if_eq EventScript_15F573
end
EventScript_15F558:
@@ -890,7 +890,7 @@ Std_2:
lock
faceplayer
message 0x0
- waittext
+ waitmessage
waitbutton
release
return
@@ -898,137 +898,132 @@ Std_2:
Std_3:
lockall
message 0x0
- waittext
+ waitmessage
waitbutton
releaseall
return
Std_4:
message 0x0
- waittext
+ waitmessage
waitbutton
return
Std_5:
message 0x0
- waittext
+ waitmessage
yesnobox 20, 8
return
@ 819F805
return
-BattleTower_Lobby_EventScript_19F806:: @ 819F806
-FallarborTown_ContestLobby_EventScript_19F806:: @ 819F806
-LilycoveCity_ContestLobby_EventScript_19F806:: @ 819F806
-MossdeepCity_GameCorner_1F_EventScript_19F806:: @ 819F806
-OldaleTown_PokemonCenter_2F_EventScript_19F806:: @ 819F806
-SecretBase_RedCave1_EventScript_19F806:: @ 819F806
- special InitSaveDialog
+S_DoSaveDialog:: @ 819F806
+ special ScrSpecial_DoSaveDialog
waitstate
return
gUnknown_0819F80B:: @ 819F80B
lock
special PlayTrainerEncounterMusic
- special sub_80847C8
+ special ScrSpecial_EndTrainerApproach
waitstate
- jump EventScript_19F8F2
+ goto EventScript_19F8F2
gUnknown_0819F818:: @ 819F818
lock
faceplayer
- move LAST_TALKED, Movement_19F8F0
- waitmove 0
- specialval RESULT, sub_8082564
+ applymovement LAST_TALKED, Movement_19F8F0
+ waitmovement 0
+ specialvar RESULT, ScrSpecial_HasTrainerBeenFought
compare RESULT, 0
- jumpif 5, EventScript_19F83F
+ goto_if 5, EventScript_19F83F
special PlayTrainerEncounterMusic
special sub_8082524
- jump EventScript_19F8F2
+ goto EventScript_19F8F2
EventScript_19F83F:
- endtrainerbattle
+ ontrainerbattleend
gUnknown_0819F840:: @ 819F840
lock
faceplayer
call EventScript_19F8E5
- specialval RESULT, sub_8082564
+ specialvar RESULT, ScrSpecial_HasTrainerBeenFought
compare RESULT, 0
- jumpif 5, EventScript_19F877
+ goto_if 5, EventScript_19F877
special CheckForAlivePartyMons
compare RESULT, 0
- jumpif 5, EventScript_19F870
+ goto_if 5, EventScript_19F870
special PlayTrainerEncounterMusic
special sub_8082524
- jump EventScript_19F8F2
+ goto EventScript_19F8F2
EventScript_19F870:
- special sub_8082718
- waittext
+ special ScrSpecial_ShowTrainerNonBattlingSpeech
+ waitmessage
waitbutton
release
end
EventScript_19F877:
- endtrainerbattle
+ ontrainerbattleend
gUnknown_0819F878:: @ 819F878
- move LAST_TALKED, Movement_19F8F0
- waitmove 0
+ applymovement LAST_TALKED, Movement_19F8F0
+ waitmovement 0
special PlayTrainerEncounterMusic
- reptrainerbattle
- endtrainerbattle
+ battlebegin
+ ontrainerbattleend
gUnknown_0819F887:: @ 819F887
call EventScript_19F8E5
- specialval RESULT, sub_8082C9C
+ specialvar RESULT, ScrSpecial_GetTrainerEyeRematchFlag
compare RESULT, 0
- jumpeq EventScript_19F8AD
+ goto_if_eq EventScript_19F8AD
special PlayTrainerEncounterMusic
special sub_8082524
- special sub_80826D8
- waittext
+ special ScrSpecial_ShowTrainerIntroSpeech
+ waitmessage
waitbutton
- special sub_80826B0
+ special ScrSpecial_StartTrainerEyeRematch
waitstate
releaseall
end
EventScript_19F8AD:
- endtrainerbattle
+ ontrainerbattleend
gUnknown_0819F8AE:: @ 819F8AE
- specialval RESULT, sub_8082C9C
+ specialvar RESULT, ScrSpecial_GetTrainerEyeRematchFlag
compare RESULT, 0
- jumpeq EventScript_19F8DD
+ goto_if_eq EventScript_19F8DD
special CheckForAlivePartyMons
compare RESULT, 0
- jumpif 5, EventScript_19F8DE
+ goto_if 5, EventScript_19F8DE
special PlayTrainerEncounterMusic
special sub_8082524
- special sub_80826D8
- waittext
+ special ScrSpecial_ShowTrainerIntroSpeech
+ waitmessage
waitbutton
- special sub_80826B0
+ special ScrSpecial_StartTrainerEyeRematch
waitstate
releaseall
end
EventScript_19F8DD:
- endtrainerbattle
+ ontrainerbattleend
EventScript_19F8DE:
- special sub_8082718
- waittext
+ special ScrSpecial_ShowTrainerNonBattlingSpeech
+ waitmessage
waitbutton
release
end
EventScript_19F8E5:
- move LAST_TALKED, Movement_19F8F0
- waitmove 0
+ applymovement LAST_TALKED, Movement_19F8F0
+ waitmovement 0
return
Movement_19F8F0::
@@ -1036,117 +1031,117 @@ Movement_19F8F0::
step_end
EventScript_19F8F2:
- special sub_80826D8
- waittext
+ special ScrSpecial_ShowTrainerIntroSpeech
+ waitmessage
waitbutton
- reptrainerbattle
- specialval RESULT, sub_8082558
+ battlebegin
+ specialvar RESULT, ScrSpecial_GetTrainerBattleMode
compare RESULT, 0
- jumpeq EventScript_19F934
+ goto_if_eq EventScript_19F934
compare RESULT, 2
- jumpeq EventScript_19F936
+ goto_if_eq EventScript_19F936
compare RESULT, 1
- jumpeq EventScript_19F936
+ goto_if_eq EventScript_19F936
compare RESULT, 6
- jumpeq EventScript_19F936
+ goto_if_eq EventScript_19F936
compare RESULT, 8
- jumpeq EventScript_19F936
+ goto_if_eq EventScript_19F936
EventScript_19F934:
releaseall
end
EventScript_19F936:
- endtrainerbattle2
+ ontrainerbattleendgoto
Std_6::
message 0x0
- waittext
+ waitmessage
waitbutton
release
return
Event_ResetBerryTrees: @ 19F940
- event_8a 2, 7, 5
- event_8a 1, 3, 5
- event_8a 11, 7, 5
- event_8a 13, 3, 5
- event_8a 4, 7, 5
- event_8a 76, 1, 5
- event_8a 8, 1, 5
- event_8a 10, 6, 5
- event_8a 25, 20, 5
- event_8a 26, 2, 5
- event_8a 66, 2, 5
- event_8a 67, 20, 5
- event_8a 69, 22, 5
- event_8a 70, 22, 5
- event_8a 71, 22, 5
- event_8a 55, 17, 5
- event_8a 56, 17, 5
- event_8a 5, 1, 5
- event_8a 6, 6, 5
- event_8a 7, 1, 5
- event_8a 16, 18, 5
- event_8a 17, 18, 5
- event_8a 18, 18, 5
- event_8a 29, 19, 5
- event_8a 28, 19, 5
- event_8a 27, 19, 5
- event_8a 24, 4, 5
- event_8a 23, 3, 5
- event_8a 22, 3, 5
- event_8a 21, 4, 5
- event_8a 19, 16, 5
- event_8a 20, 16, 5
- event_8a 80, 7, 5
- event_8a 81, 7, 5
- event_8a 77, 8, 5
- event_8a 78, 8, 5
- event_8a 68, 8, 5
- event_8a 31, 10, 5
- event_8a 33, 10, 5
- event_8a 34, 21, 5
- event_8a 35, 21, 5
- event_8a 36, 21, 5
- event_8a 83, 24, 5
- event_8a 84, 24, 5
- event_8a 85, 10, 5
- event_8a 86, 6, 5
- event_8a 37, 5, 5
- event_8a 38, 5, 5
- event_8a 39, 5, 5
- event_8a 40, 3, 5
- event_8a 41, 3, 5
- event_8a 42, 3, 5
- event_8a 46, 19, 5
- event_8a 45, 20, 5
- event_8a 44, 18, 5
- event_8a 43, 16, 5
- event_8a 47, 8, 5
- event_8a 48, 5, 5
- event_8a 49, 4, 5
- event_8a 50, 2, 5
- event_8a 52, 18, 5
- event_8a 53, 18, 5
- event_8a 62, 6, 5
- event_8a 64, 6, 5
- event_8a 58, 21, 5
- event_8a 59, 21, 5
- event_8a 60, 25, 5
- event_8a 61, 25, 5
- event_8a 79, 23, 5
- event_8a 14, 23, 5
- event_8a 15, 21, 5
- event_8a 30, 21, 5
- event_8a 65, 25, 5
- event_8a 72, 25, 5
- event_8a 73, 23, 5
- event_8a 74, 23, 5
- event_8a 87, 3, 5
- event_8a 88, 10, 5
- event_8a 89, 4, 5
- event_8a 82, 36, 5
+ plantberrytree 2, 7, 5
+ plantberrytree 1, 3, 5
+ plantberrytree 11, 7, 5
+ plantberrytree 13, 3, 5
+ plantberrytree 4, 7, 5
+ plantberrytree 76, 1, 5
+ plantberrytree 8, 1, 5
+ plantberrytree 10, 6, 5
+ plantberrytree 25, 20, 5
+ plantberrytree 26, 2, 5
+ plantberrytree 66, 2, 5
+ plantberrytree 67, 20, 5
+ plantberrytree 69, 22, 5
+ plantberrytree 70, 22, 5
+ plantberrytree 71, 22, 5
+ plantberrytree 55, 17, 5
+ plantberrytree 56, 17, 5
+ plantberrytree 5, 1, 5
+ plantberrytree 6, 6, 5
+ plantberrytree 7, 1, 5
+ plantberrytree 16, 18, 5
+ plantberrytree 17, 18, 5
+ plantberrytree 18, 18, 5
+ plantberrytree 29, 19, 5
+ plantberrytree 28, 19, 5
+ plantberrytree 27, 19, 5
+ plantberrytree 24, 4, 5
+ plantberrytree 23, 3, 5
+ plantberrytree 22, 3, 5
+ plantberrytree 21, 4, 5
+ plantberrytree 19, 16, 5
+ plantberrytree 20, 16, 5
+ plantberrytree 80, 7, 5
+ plantberrytree 81, 7, 5
+ plantberrytree 77, 8, 5
+ plantberrytree 78, 8, 5
+ plantberrytree 68, 8, 5
+ plantberrytree 31, 10, 5
+ plantberrytree 33, 10, 5
+ plantberrytree 34, 21, 5
+ plantberrytree 35, 21, 5
+ plantberrytree 36, 21, 5
+ plantberrytree 83, 24, 5
+ plantberrytree 84, 24, 5
+ plantberrytree 85, 10, 5
+ plantberrytree 86, 6, 5
+ plantberrytree 37, 5, 5
+ plantberrytree 38, 5, 5
+ plantberrytree 39, 5, 5
+ plantberrytree 40, 3, 5
+ plantberrytree 41, 3, 5
+ plantberrytree 42, 3, 5
+ plantberrytree 46, 19, 5
+ plantberrytree 45, 20, 5
+ plantberrytree 44, 18, 5
+ plantberrytree 43, 16, 5
+ plantberrytree 47, 8, 5
+ plantberrytree 48, 5, 5
+ plantberrytree 49, 4, 5
+ plantberrytree 50, 2, 5
+ plantberrytree 52, 18, 5
+ plantberrytree 53, 18, 5
+ plantberrytree 62, 6, 5
+ plantberrytree 64, 6, 5
+ plantberrytree 58, 21, 5
+ plantberrytree 59, 21, 5
+ plantberrytree 60, 25, 5
+ plantberrytree 61, 25, 5
+ plantberrytree 79, 23, 5
+ plantberrytree 14, 23, 5
+ plantberrytree 15, 21, 5
+ plantberrytree 30, 21, 5
+ plantberrytree 65, 25, 5
+ plantberrytree 72, 25, 5
+ plantberrytree 73, 23, 5
+ plantberrytree 74, 23, 5
+ plantberrytree 87, 3, 5
+ plantberrytree 88, 10, 5
+ plantberrytree 89, 4, 5
+ plantberrytree 82, 36, 5
return
gUnknown_0819FA81:: @ 819FA81
@@ -1297,13 +1292,13 @@ EverGrandeCity_HallOfFame_EventScript_19FC13:: @ 819FC13
clearflag 861
special sub_810FAA0
checkflag 291
- callif 0, EverGrandeCity_HallOfFame_EventScript_19FC62
+ call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC62
checkflag 255
- callif 0, EverGrandeCity_HallOfFame_EventScript_19FC70
+ call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC70
checkflag 298
- callif 0, EverGrandeCity_HallOfFame_EventScript_19FC5A
+ call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC5A
checkflag 123
- callif 0, EverGrandeCity_HallOfFame_EventScript_19FC5E
+ call_if 0, EverGrandeCity_HallOfFame_EventScript_19FC5E
return
EverGrandeCity_HallOfFame_EventScript_19FC5A:: @ 819FC5A
@@ -1324,28 +1319,28 @@ EverGrandeCity_HallOfFame_EventScript_19FC70:: @ 819FC70
setflag 2141
return
-EventScript_LeagueWhiteOut:: @ 819FC74
+S_WhiteOut:: @ 819FC74
call EverGrandeCity_HallOfFame_EventScript_19FD09
call EventScript_19FC84
- jump gUnknown_0819FC9F
+ goto gUnknown_0819FC9F
end
EventScript_19FC84:
checkflag 221
- jumpeq Route101_EventScript_1A14DC
+ goto_if_eq Route101_EventScript_1A14DC
checkflag 1213
- jumpif 0, Route101_EventScript_1A14DC
+ goto_if 0, Route101_EventScript_1A14DC
clearflag 929
setvar 0x4053, 2
return
gUnknown_0819FC9F:: @ 819FC9F
compare 0x4096, 1
- jumpeq EventScript_19FCC1
+ goto_if_eq EventScript_19FCC1
compare 0x4096, 2
- jumpeq EventScript_19FCD7
+ goto_if_eq EventScript_19FCD7
compare 0x4096, 3
- jumpeq EventScript_19FCF0
+ goto_if_eq EventScript_19FCF0
end
EventScript_19FCC1:
@@ -1398,15 +1393,15 @@ RustboroCity_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B
SlateportCity_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B
VerdanturfTown_PokemonCenter_1F_EventScript_19FD1B:: @ 819FD1B
checkflag 188
- jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_1A14DC
+ goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_1A14DC
checkflag 1217
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_1A14DC
+ goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_1A14DC
checkflag 742
- jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD49
+ goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD49
checkflag 740
- jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD4F
+ goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD4F
checkflag 741
- jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FD55
+ goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FD55
return
OldaleTown_PokemonCenter_1F_EventScript_19FD49:: @ 819FD49
@@ -1437,54 +1432,54 @@ SootopolisCity_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B
VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B:: @ 819FD5B
lock
faceplayer
- msgbox OldaleTown_PokemonCenter_1F_Text_1A0A7D, 5
+ msgbox gText_NurseJoy_Welcome, MSGBOX_YESNO
compare RESULT, 1
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FD7C
+ goto_if_eq do_heal_party
compare RESULT, 0
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDC7
- end
-
-OldaleTown_PokemonCenter_1F_EventScript_19FD7C:: @ 819FD7C
- inccounter GAME_STAT_USED_POKECENTER
- message OldaleTown_PokemonCenter_1F_Text_1A1245
- waittext
- move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F
- waitmove 0
- doanimation 25
- checkanimation 25
- move 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845
- waitmove 0
- special HealPlayerParty
+ goto_if_eq dont_heal_party
+ end
+
+do_heal_party:: @ 819FD7C
+ incrementgamestat GAME_STAT_USED_POKECENTER
+ message gText_NurseJoy_OkayIllTakeYourPokemon
+ waitmessage
+ applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A083F
+ waitmovement 0
+ dofieldeffect 25
+ waitfieldeffect 25
+ applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_1A0845
+ waitmovement 0
+ special ScrSpecial_HealPlayerParty
checkflag 273
- jumpif 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE
- jump OldaleTown_PokemonCenter_1F_EventScript_19FDB0
+ goto_if 0, OldaleTown_PokemonCenter_1F_EventScript_19FDCE
+ goto OldaleTown_PokemonCenter_1F_EventScript_19FDB0
end
OldaleTown_PokemonCenter_1F_EventScript_19FDB0:: @ 819FDB0
- message OldaleTown_PokemonCenter_1F_Text_1A0B14
- waittext
- move 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4
- waitmove 0
- message OldaleTown_PokemonCenter_1F_Text_1A0AFA
- waittext
+ message gText_NurseJoy_ThankYouForWaiting
+ waitmessage
+ applymovement 0x800b, OldaleTown_PokemonCenter_1F_Movement_19FDF4
+ waitmovement 0
+ message gText_NurseJoy_WeHopeToSeeYouAgain
+ waitmessage
return
-OldaleTown_PokemonCenter_1F_EventScript_19FDC7:: @ 819FDC7
- message OldaleTown_PokemonCenter_1F_Text_1A0AFA
- waittext
+dont_heal_party:: @ 819FDC7
+ message gText_NurseJoy_WeHopeToSeeYouAgain
+ waitmessage
return
OldaleTown_PokemonCenter_1F_EventScript_19FDCE:: @ 819FDCE
- specialval RESULT, IsPokerusInParty
+ specialvar RESULT, IsPokerusInParty
compare RESULT, 1
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDEA
+ goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDEA
compare RESULT, 0
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_19FDB0
+ goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_19FDB0
end
OldaleTown_PokemonCenter_1F_EventScript_19FDEA:: @ 819FDEA
- message OldaleTown_PokemonCenter_1F_Text_1A1275
- waittext
+ message gText_NurseJoy_Pokerus
+ waitmessage
setflag 273
return
@@ -1500,13 +1495,13 @@ Std_ObtainItem: @ 819FDF7
return
Std_ObtainItem_: @ 819FE07
- bufferitem 1, 0x8000
+ getitemname 1, 0x8000
checkitemtype 0x8000
call GetItem_HandlePocket
compare 0x8007, 0x1
- callif 1, Std_ObtainItem_Success
+ call_if 1, Std_ObtainItem_Success
compare 0x8007, 0x0
- callif 1, Std_ObtainItem_Fail
+ call_if 1, Std_ObtainItem_Fail
return
GetItem_HandlePocket:
@@ -1519,39 +1514,39 @@ GetItem_HandlePocket:
end
GetItem_HandlePocket_Items:
- bufferstd 2, 0xE
+ getstdstring 2, 0xE
compare 0x8007, 1
- callif 1, PlayGetItemFanfare
+ call_if 1, PlayGetItemFanfare
return
GetItem_HandlePocket_KeyItems:
- bufferstd 2, 0xF
+ getstdstring 2, 0xF
compare 0x8007, 1
- callif 1, PlayGetItemFanfare
+ call_if 1, PlayGetItemFanfare
return
GetItem_HandlePocket_PokeBalls:
- bufferstd 2, 0x10
+ getstdstring 2, 0x10
compare 0x8007, 1
- callif 1, PlayGetItemFanfare
+ call_if 1, PlayGetItemFanfare
return
GetItem_HandlePocket_TMsHMs:
- bufferstd 2, 0x11
+ getstdstring 2, 0x11
compare 0x8007, 1
- callif 1, PlayGetTMHMFanfare
+ call_if 1, PlayGetTMHMFanfare
return
GetItem_HandlePocket_Berries:
- bufferstd 2, 0x12
+ getstdstring 2, 0x12
compare 0x8007, 1
- callif 1, PlayGetItemFanfare
+ call_if 1, PlayGetItemFanfare
return
Std_ObtainItem_Success: @ 819FEB7
message Message_ObtainedItem
waitfanfare
- waittext
+ waitmessage
msgbox Message_PutAwayItem
setvar RESULT, 1
return
@@ -1561,11 +1556,11 @@ Std_ObtainItem_Fail: @ 819FECC
return
PlayGetItemFanfare:
- fanfare 0x172
+ playfanfare 0x172
return
PlayGetTMHMFanfare:
- fanfare 0x174
+ playfanfare 0x174
return
Std_ObtainDecoration: @ 819FEDA
@@ -1575,18 +1570,18 @@ Std_ObtainDecoration: @ 819FEDA
return
Std_ObtainDecoration_: @ 819FEE8
- bufferdecor 1, 0x8000
+ getdecorname 1, 0x8000
compare 0x8007, 1
- callif 1, Std_ObtainDecoration_Success
+ call_if 1, Std_ObtainDecoration_Success
compare 0x8007, 0
- callif 1, Std_ObtainDecoration_Fail
+ call_if 1, Std_ObtainDecoration_Fail
return
Std_ObtainDecoration_Success: @ 819FF03
- fanfare 0x172
+ playfanfare 0x172
message Message_ObtainedDecoration
waitfanfare
- waittext
+ waitmessage
msgbox Message_TransferredToPC
setvar RESULT, 1
return
@@ -1598,24 +1593,24 @@ Std_ObtainDecoration_Fail: @ 819FF1B
Std_FindItem: @ 819FF21
lock
faceplayer
- checksound
+ waitse
additem 0x8000, 0x8001
copyvar 0x8007, RESULT
- bufferitem 1, 0x8000
+ getitemname 1, 0x8000
checkitemtype 0x8000
call GetItem_HandlePocket
compare 0x8007, 1
- callif 1, Std_FindItem_Success
+ call_if 1, Std_FindItem_Success
compare 0x8007, 0
- callif 1, Std_FindItem_Fail
+ call_if 1, Std_FindItem_Fail
release
return
Std_FindItem_Success: @ 819FF52
- disappear LAST_TALKED
+ removeobject LAST_TALKED
message Message_FoundOneItem
waitfanfare
- waittext
+ waitmessage
msgbox Message_PutAwayItem
return
@@ -1627,22 +1622,22 @@ Std_FindItem_Fail: @ 819FF65
HiddenItemScript:: @ 819FF7B
lockall
- checksound
+ waitse
additem 0x8005, 1
copyvar 0x8007, RESULT
- bufferitem 0x1, 0x8005
+ getitemname 0x1, 0x8005
checkitemtype 0x8005
call GetItem_HandlePocket
compare 0x8007, 1
- jumpeq HiddenItemScript_Success
+ goto_if_eq HiddenItemScript_Success
compare 0x8007, 0
- jumpeq HiddenItemScript_Fail
+ goto_if_eq HiddenItemScript_Fail
end
HiddenItemScript_Success:
message Message_FoundOneItem
waitfanfare
- waittext
+ waitmessage
msgbox Message_PutAwayItem
special SetFlagInVar
releaseall
@@ -1660,10 +1655,10 @@ UnusedMixRecordsScript: @ 819FFD5
faceplayer
msgbox UnusedMixRecordsPromptText, 5
compare RESULT, 1
- jumpeq UnusedMixRecordsScript_Yes
+ goto_if_eq UnusedMixRecordsScript_Yes
compare RESULT, 0
- jumpeq UnusedMixRecordsScript_Done
- jump UnusedMixRecordsScript_Done
+ goto_if_eq UnusedMixRecordsScript_Done
+ goto UnusedMixRecordsScript_Done
UnusedMixRecordsScript_Yes: @ 819FFFA
special sub_80B929C
waitstate
@@ -1671,7 +1666,7 @@ UnusedMixRecordsScript_Yes: @ 819FFFA
faceplayer
UnusedMixRecordsScript_Done: @ 81A0000
message UnusedMixRecordsSeeYouAgainText
- waittext
+ waitmessage
waitbutton
release
end
@@ -1680,17 +1675,17 @@ gUnknown_081A0009:: @ 81A0009
lockall
setvar 0x8004, 0
special DoPCTurnOnEffect
- playsfx 4
+ playse 4
msgbox UnknownString_81A09EC, 4
- jump EventScript_1A0023
+ goto EventScript_1A0023
end
EventScript_1A0023:
message gPCText_WhichPCShouldBeAccessed
- waittext
- special TryCreatePCMenu
+ waitmessage
+ special ScrSpecial_CreatePCMenu
waitstate
- jump EventScript_1A0033
+ goto EventScript_1A0033
end
EventScript_1A0033:
@@ -1703,23 +1698,23 @@ EventScript_1A0033:
end
EventScript_1A0070:
- playsfx 2
+ playse 2
msgbox UnknownString_81A0A54, 4
special PlayerPC
waitstate
- jump EventScript_1A0023
+ goto EventScript_1A0023
end
EventScript_1A0085:
- playsfx 2
+ playse 2
checkflag 2123
- callif 0, EventScript_1A00AC
+ call_if 0, EventScript_1A00AC
checkflag 2123
- callif 1, EventScript_1A00B5
+ call_if 1, EventScript_1A00B5
msgbox UnknownString_81A0A35, 4
special ShowPokemonStorageSystem
waitstate
- jump EventScript_1A0023
+ goto EventScript_1A0023
end
EventScript_1A00AC:
@@ -1732,18 +1727,18 @@ EventScript_1A00B5:
EventScript_1A00BE:
setvar 0x8004, 0
- playsfx 3
+ playse 3
special DoPCTurnOffEffect
releaseall
end
EventScript_1A00CB:
checkflag 2052
- jumpif 0, EventScript_1A00BE
- playsfx 2
+ goto_if 0, EventScript_1A00BE
+ playse 2
special AccessHallOfFamePC
waitstate
- jump EventScript_1A0033
+ goto EventScript_1A0033
end
FallarborTown_EventScript_1A00E1:: @ 81A00E1
@@ -1802,7 +1797,7 @@ RustboroCity_Gym_EventScript_1A00FB:: @ 81A00FB
DewfordTown_EventScript_1A0102:: @ 81A0102
DewfordTown_Hall_EventScript_1A0102:: @ 81A0102
- checkdailyflags
+ dodailyevents
setvar 0x8004, 0
special sub_80FA5BC
return
@@ -1815,17 +1810,17 @@ Route109_EventScript_1A010C:: @ 81A010C
return
UseSurfScript:: @ 81A0117
- checkattack MOVE_SURF
+ checkpokemove MOVE_SURF
compare RESULT, 6
- jumpeq UseSurfScript_NoMon
- bufferpartypoke 0, RESULT
- setanimation 0, RESULT
+ goto_if_eq UseSurfScript_NoMon
+ getpartypokename 0, RESULT
+ setfieldeffect 0, RESULT
lockall
msgbox UseSurfPromptText, 5
compare RESULT, 0
- jumpeq UseSurfScript_No
+ goto_if_eq UseSurfScript_No
msgbox UsedSurfText, 4
- doanimation 9
+ dofieldeffect 9
UseSurfScript_No: @ 81A014C
releaseall
UseSurfScript_NoMon: @ 81A014D
@@ -1840,11 +1835,11 @@ Route103_EventScript_1A014E:: @ 81A014E
Route110_EventScript_1A014E:: @ 81A014E
Route119_EventScript_1A014E:: @ 81A014E
RustboroCity_EventScript_1A014E:: @ 81A014E
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq RustboroCity_EventScript_1A0166
+ goto_if_eq RustboroCity_EventScript_1A0166
compare RESULT, 1
- jumpeq RustboroCity_EventScript_1A016C
+ goto_if_eq RustboroCity_EventScript_1A016C
end
RustboroCity_EventScript_1A0166:: @ 81A0166
@@ -1858,11 +1853,11 @@ RustboroCity_EventScript_1A016C:: @ 81A016C
LavaridgeTown_EventScript_1A0172:: @ 81A0172
Route110_EventScript_1A0172:: @ 81A0172
Route119_EventScript_1A0172:: @ 81A0172
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq LavaridgeTown_EventScript_1A018A
+ goto_if_eq LavaridgeTown_EventScript_1A018A
compare RESULT, 1
- jumpeq LavaridgeTown_EventScript_1A0190
+ goto_if_eq LavaridgeTown_EventScript_1A0190
end
LavaridgeTown_EventScript_1A018A:: @ 81A018A
@@ -1944,66 +1939,66 @@ SootopolisCity_Gym_1F_EventScript_1A01C0:: @ 81A01C0
end
DewfordTown_Gym_EventScript_1A021E:: @ 81A021E
- cleartrainerflag OPPONENT_JOSH
- cleartrainerflag OPPONENT_TOMMY
+ settrainerflag OPPONENT_JOSH
+ settrainerflag OPPONENT_TOMMY
return
DewfordTown_Gym_EventScript_1A0225:: @ 81A0225
- cleartrainerflag OPPONENT_HIDEKI
- cleartrainerflag OPPONENT_TESSA
- cleartrainerflag OPPONENT_LAURA
+ settrainerflag OPPONENT_HIDEKI
+ settrainerflag OPPONENT_TESSA
+ settrainerflag OPPONENT_LAURA
return
DewfordTown_Gym_EventScript_1A022F:: @ 81A022F
- cleartrainerflag OPPONENT_KIRK
- cleartrainerflag OPPONENT_SHAWN
- cleartrainerflag OPPONENT_BEN
- cleartrainerflag OPPONENT_VIVIAN
+ settrainerflag OPPONENT_KIRK
+ settrainerflag OPPONENT_SHAWN
+ settrainerflag OPPONENT_BEN
+ settrainerflag OPPONENT_VIVIAN
return
DewfordTown_Gym_EventScript_1A023C:: @ 81A023C
- cleartrainerflag OPPONENT_COLE
- cleartrainerflag OPPONENT_AXLE
- cleartrainerflag OPPONENT_ANDY
- cleartrainerflag OPPONENT_ZANE
- cleartrainerflag OPPONENT_SADIE
+ settrainerflag OPPONENT_COLE
+ settrainerflag OPPONENT_AXLE
+ settrainerflag OPPONENT_ANDY
+ settrainerflag OPPONENT_ZANE
+ settrainerflag OPPONENT_SADIE
return
DewfordTown_Gym_EventScript_1A024C:: @ 81A024C
- cleartrainerflag OPPONENT_RANDALL
- cleartrainerflag OPPONENT_PARKER
- cleartrainerflag OPPONENT_GEORGE
- cleartrainerflag OPPONENT_BERKE
- cleartrainerflag OPPONENT_MARY
- cleartrainerflag OPPONENT_LORI
- cleartrainerflag OPPONENT_JODY
+ settrainerflag OPPONENT_RANDALL
+ settrainerflag OPPONENT_PARKER
+ settrainerflag OPPONENT_GEORGE
+ settrainerflag OPPONENT_BERKE
+ settrainerflag OPPONENT_MARY
+ settrainerflag OPPONENT_LORI
+ settrainerflag OPPONENT_JODY
return
DewfordTown_Gym_EventScript_1A0262:: @ 81A0262
- cleartrainerflag OPPONENT_JARED
- cleartrainerflag OPPONENT_TERRELL
- cleartrainerflag OPPONENT_KYLEE
- cleartrainerflag OPPONENT_WILL
+ settrainerflag OPPONENT_JARED
+ settrainerflag OPPONENT_TERRELL
+ settrainerflag OPPONENT_KYLEE
+ settrainerflag OPPONENT_WILL
return
DewfordTown_Gym_EventScript_1A026F:: @ 81A026F
- cleartrainerflag OPPONENT_PRESTON
- cleartrainerflag OPPONENT_VIRGIL
- cleartrainerflag OPPONENT_FRITZ
- cleartrainerflag OPPONENT_HANNAH
- cleartrainerflag OPPONENT_SAMANTHA
- cleartrainerflag OPPONENT_MAURA
+ settrainerflag OPPONENT_PRESTON
+ settrainerflag OPPONENT_VIRGIL
+ settrainerflag OPPONENT_FRITZ
+ settrainerflag OPPONENT_HANNAH
+ settrainerflag OPPONENT_SAMANTHA
+ settrainerflag OPPONENT_MAURA
return
DewfordTown_Gym_EventScript_1A0282:: @ 81A0282
- cleartrainerflag OPPONENT_ANDREA
- cleartrainerflag OPPONENT_CRISSY
- cleartrainerflag OPPONENT_BRIANNA_2
- cleartrainerflag OPPONENT_CONNIE
- cleartrainerflag OPPONENT_BRIDGET
- cleartrainerflag OPPONENT_OLIVIA
- cleartrainerflag OPPONENT_TIFFANY
- cleartrainerflag OPPONENT_MARISSA
+ settrainerflag OPPONENT_ANDREA
+ settrainerflag OPPONENT_CRISSY
+ settrainerflag OPPONENT_BRIANNA_2
+ settrainerflag OPPONENT_CONNIE
+ settrainerflag OPPONENT_BRIDGET
+ settrainerflag OPPONENT_OLIVIA
+ settrainerflag OPPONENT_TIFFANY
+ settrainerflag OPPONENT_MARISSA
return
DewfordTown_Gym_EventScript_1A029B:: @ 81A029B
@@ -2100,7 +2095,7 @@ MossdeepCity_Gym_EventScript_1A02C5:: @ 81A02C5
PetalburgCity_Gym_EventScript_1A02C5:: @ 81A02C5
RustboroCity_Gym_EventScript_1A02C5:: @ 81A02C5
SootopolisCity_Gym_1F_EventScript_1A02C5:: @ 81A02C5
- fanfare 369
+ playfanfare 369
waitfanfare
return
@@ -2109,9 +2104,9 @@ Route111_OldLadysRestStop_EventScript_1A02CA:: @ 81A02CA
Route119_WeatherInstitute_1F_EventScript_1A02CA:: @ 81A02CA
SSTidalRooms_EventScript_1A02CA:: @ 81A02CA
fadescreen 1
- fanfare 368
+ playfanfare 368
waitfanfare
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
fadescreen 0
return
@@ -2128,37 +2123,37 @@ DewfordTown_EventScript_1A02E7:: @ 81A02E7
Route104_EventScript_1A02E7:: @ 81A02E7
Route109_EventScript_1A02E7:: @ 81A02E7
setflag 0x4001
- playmusic 431, 0
+ playbgm 431, 0
return
DewfordTown_EventScript_1A02EF:: @ 81A02EF
Route104_EventScript_1A02EF:: @ 81A02EF
Route109_EventScript_1A02EF:: @ 81A02EF
clearflag 0x4001
- fadedefault
+ fadedefaultbgm
return
LittlerootTown_ProfessorBirchsLab_EventScript_1A02F4:: @ 81A02F4
Route101_EventScript_1A02F4:: @ 81A02F4
Route103_EventScript_1A02F4:: @ 81A02F4
compare 0x4085, 0
- jumpeq Route101_EventScript_1A14DC
+ goto_if_eq Route101_EventScript_1A14DC
compare 0x4049, 0
- callif 1, Route101_EventScript_1A0358
+ call_if 1, Route101_EventScript_1A0358
compare 0x4049, 1
- callif 1, Route101_EventScript_1A0358
+ call_if 1, Route101_EventScript_1A0358
compare 0x4049, 2
- callif 1, Route101_EventScript_1A0365
+ call_if 1, Route101_EventScript_1A0365
compare 0x4049, 3
- callif 1, Route101_EventScript_1A0365
+ call_if 1, Route101_EventScript_1A0365
compare 0x4049, 4
- callif 1, Route101_EventScript_1A0372
+ call_if 1, Route101_EventScript_1A0372
compare 0x4049, 5
- callif 1, Route101_EventScript_1A0372
+ call_if 1, Route101_EventScript_1A0372
compare 0x4049, 6
- callif 1, Route101_EventScript_1A0358
+ call_if 1, Route101_EventScript_1A0358
compare 0x4049, 7
- callif 1, Route101_EventScript_1A0358
+ call_if 1, Route101_EventScript_1A0358
return
Route101_EventScript_1A0358:: @ 81A0358
@@ -2189,7 +2184,7 @@ Route103_EventScript_1A037F:: @ 81A037F
faceplayer
msgbox Route101_Text_1C4449, 5
compare RESULT, 0
- jumpeq Route101_EventScript_1A039B
+ goto_if_eq Route101_EventScript_1A039B
call Route101_EventScript_1A03B0
release
end
@@ -2202,38 +2197,38 @@ Route101_EventScript_1A039B:: @ 81A039B
Route101_EventScript_1A03A5:: @ 81A03A5
copyvar 0x8004, 0x8009
special ShowPokedexRatingMessage
- waittext
+ waitmessage
waitbutton
return
EverGrandeCity_ChampionsRoom_EventScript_1A03B0:: @ 81A03B0
Route101_EventScript_1A03B0:: @ 81A03B0
setvar 0x8004, 0
- specialval RESULT, ScriptGetPokedexInfo
+ specialvar RESULT, ScriptGetPokedexInfo
copyvar 0x8008, 0x8005
copyvar 0x8009, 0x8006
copyvar 0x800a, RESULT
- buffernum 0, 0x8008
- buffernum 1, 0x8009
+ getnumberstring 0, 0x8008
+ getnumberstring 1, 0x8009
msgbox Route101_Text_1C44DC, 4
call Route101_EventScript_1A03A5
compare 0x800a, 0
- jumpeq Route101_EventScript_1A14DC
+ goto_if_eq Route101_EventScript_1A14DC
setvar 0x8004, 1
- specialval RESULT, ScriptGetPokedexInfo
+ specialvar RESULT, ScriptGetPokedexInfo
copyvar 0x8008, 0x8005
copyvar 0x8009, 0x8006
- buffernum 0, 0x8008
- buffernum 1, 0x8009
+ getnumberstring 0, 0x8008
+ getnumberstring 1, 0x8009
msgbox Route101_Text_1C4B05, 4
return
BattleTower_Outside_EventScript_1A040E:: @ 81A040E
LilycoveCity_Harbor_EventScript_1A040E:: @ 81A040E
SlateportCity_Harbor_EventScript_1A040E:: @ 81A040E
- pause 60
- move 0x8004, SlateportCity_Harbor_Movement_1A041C
- waitmove 0
+ delay 60
+ applymovement 0x8004, SlateportCity_Harbor_Movement_1A041C
+ waitmovement 0
return
SlateportCity_Harbor_Movement_1A041C:: @ 81A041C
@@ -2259,8 +2254,8 @@ PetalburgCity_Gym_EventScript_1A0424:: @ 81A0424
return
RusturfTunnel_EventScript_1A0442:: @ 81A0442
- disappear 1
- disappear 10
+ removeobject 1
+ removeobject 10
clearflag 808
clearflag 984
setvar 0x409a, 6
@@ -2268,14 +2263,14 @@ RusturfTunnel_EventScript_1A0442:: @ 81A0442
return
EventScript_1A0457: @ unreferenced?
- pause 30
- move 255, SlateportCity_OceanicMuseum_2F_Movement_1A0841
- waitmove 0
- spritevisible 255, 0, 0
- pause 30
- move 255, Movement_1A047A
- waitmove 0
- pause 30
+ delay 30
+ applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_1A0841
+ waitmovement 0
+ showobject 255, 0, 0
+ delay 30
+ applymovement 255, Movement_1A047A
+ waitmovement 0
+ delay 30
return
Movement_1A047A:
@@ -2285,18 +2280,18 @@ Movement_1A047A:
BattleTower_Outside_EventScript_1A047C:: @ 81A047C
SouthernIsland_Exterior_EventScript_1A047C:: @ 81A047C
compare FACING, 1
- callif 1, BattleTower_Outside_EventScript_160B2F
+ call_if 1, BattleTower_Outside_EventScript_160B2F
compare FACING, 3
- callif 1, BattleTower_Outside_EventScript_160B3A
- pause 30
- spriteinvisible 255, 0, 0
+ call_if 1, BattleTower_Outside_EventScript_160B3A
+ delay 30
+ hideobject 255, 0, 0
call BattleTower_Outside_EventScript_1A040E
return
CaveOfOrigin_B4F_EventScript_1A04A0:: @ 81A04A0
lockall
- checksound
- pokecry SPECIES_GROUDON_OR_KYOGRE, 2
+ waitse
+ playpokecry SPECIES_GROUDON_OR_KYOGRE, 2
waitpokecry
setvar 0x4005, 1
releaseall
@@ -2308,20 +2303,20 @@ CaveOfOrigin_B2F_EventScript_1A04AF:: @ 81A04AF
CaveOfOrigin_B3F_EventScript_1A04AF:: @ 81A04AF
lockall
setvar 0x4001, 1
- jump CaveOfOrigin_1F_EventScript_1A04D3
+ goto CaveOfOrigin_1F_EventScript_1A04D3
end
CaveOfOrigin_B2F_EventScript_1A04BB:: @ 81A04BB
CaveOfOrigin_B3F_EventScript_1A04BB:: @ 81A04BB
lockall
setvar 0x4002, 1
- jump CaveOfOrigin_B2F_EventScript_1A04D3
+ goto CaveOfOrigin_B2F_EventScript_1A04D3
end
@ 81A04C7
lockall
setvar 0x4003, 1
- jump CaveOfOrigin_B2F_EventScript_1A04D3
+ goto CaveOfOrigin_B2F_EventScript_1A04D3
end
CaveOfOrigin_1F_EventScript_1A04D3:: @ 81A04D3
@@ -2350,9 +2345,9 @@ MagmaHideout_B1F_EventScript_1A04FD:: @ 81A04FD
lock
faceplayer
setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE
- checksound
- pokecry SPECIES_ELECTRODE, 2
- pause 40
+ waitse
+ playpokecry SPECIES_ELECTRODE, 2
+ delay 40
waitpokecry
setflag 977
setflag 2145
@@ -2366,9 +2361,9 @@ MagmaHideout_B1F_EventScript_1A051B:: @ 81A051B
lock
faceplayer
setwildbattle SPECIES_ELECTRODE, 30, ITEM_NONE
- checksound
- pokecry SPECIES_ELECTRODE, 2
- pause 40
+ waitse
+ playpokecry SPECIES_ELECTRODE, 2
+ delay 40
waitpokecry
setflag 978
setflag 2145
@@ -2381,56 +2376,56 @@ Route120_EventScript_1A0539:: @ 81A0539
lock
faceplayer
setvar 0x8004, 1
- jump Route120_EventScript_1A0594
+ goto Route120_EventScript_1A0594
end
Route120_EventScript_1A0546:: @ 81A0546
lock
faceplayer
setvar 0x8004, 2
- jump Route120_EventScript_1A0594
+ goto Route120_EventScript_1A0594
end
Route120_EventScript_1A0553:: @ 81A0553
lock
faceplayer
setvar 0x8004, 3
- jump Route120_EventScript_1A0594
+ goto Route120_EventScript_1A0594
end
Route120_EventScript_1A0560:: @ 81A0560
lock
faceplayer
setvar 0x8004, 4
- jump Route120_EventScript_1A0594
+ goto Route120_EventScript_1A0594
end
Route120_EventScript_1A056D:: @ 81A056D
lock
faceplayer
setvar 0x8004, 5
- jump Route120_EventScript_1A0594
+ goto Route120_EventScript_1A0594
end
Route119_EventScript_1A057A:: @ 81A057A
lock
faceplayer
setvar 0x8004, 6
- jump Route119_EventScript_1A0594
+ goto Route119_EventScript_1A0594
end
Route119_EventScript_1A0587:: @ 81A0587
lock
faceplayer
setvar 0x8004, 7
- jump Route119_EventScript_1A0594
+ goto Route119_EventScript_1A0594
end
Route119_EventScript_1A0594:: @ 81A0594
Route120_EventScript_1A0594:: @ 81A0594
checkitem ITEM_DEVON_SCOPE, 1
compare RESULT, 1
- jumpeq Route119_EventScript_1A05AE
+ goto_if_eq Route119_EventScript_1A05AE
msgbox Route119_Text_171B93, 4
release
end
@@ -2438,36 +2433,36 @@ Route120_EventScript_1A0594:: @ 81A0594
Route119_EventScript_1A05AE:: @ 81A05AE
msgbox Route119_Text_171BB6, 5
compare RESULT, 1
- jumpeq Route119_EventScript_1A05C3
+ goto_if_eq Route119_EventScript_1A05C3
release
end
Route119_EventScript_1A05C3:: @ 81A05C3
msgbox Route119_Text_171BF6, 4
- closebutton
- move LAST_TALKED, Route119_Movement_1A0839
- waitmove 0
- move LAST_TALKED, Route119_Movement_1A0662
- waitmove 0
- checksound
- pokecry SPECIES_KECLEON, 2
- pause 40
+ closemessage
+ applymovement LAST_TALKED, Route119_Movement_1A0839
+ waitmovement 0
+ applymovement LAST_TALKED, Route119_Movement_1A0662
+ waitmovement 0
+ waitse
+ playpokecry SPECIES_KECLEON, 2
+ delay 40
waitpokecry
setwildbattle SPECIES_KECLEON, 30, ITEM_NONE
compare 0x8004, 1
- callif 1, Route119_EventScript_1A0646
+ call_if 1, Route119_EventScript_1A0646
compare 0x8004, 2
- callif 1, Route119_EventScript_1A064A
+ call_if 1, Route119_EventScript_1A064A
compare 0x8004, 3
- callif 1, Route119_EventScript_1A064E
+ call_if 1, Route119_EventScript_1A064E
compare 0x8004, 4
- callif 1, Route119_EventScript_1A0652
+ call_if 1, Route119_EventScript_1A0652
compare 0x8004, 5
- callif 1, Route119_EventScript_1A0656
+ call_if 1, Route119_EventScript_1A0656
compare 0x8004, 6
- callif 1, Route119_EventScript_1A065A
+ call_if 1, Route119_EventScript_1A065A
compare 0x8004, 7
- callif 1, Route119_EventScript_1A065E
+ call_if 1, Route119_EventScript_1A065E
setflag 2145
dowildbattle
clearflag 2145
@@ -2541,10 +2536,10 @@ FallarborTown_House1_EventScript_1A067F:: @ 81A067F
GraniteCave_StevensRoom_EventScript_1A067F:: @ 81A067F
MtPyre_Summit_EventScript_1A067F:: @ 81A067F
SlateportCity_OceanicMuseum_2F_EventScript_1A067F:: @ 81A067F
- bufferitem 0, 0x8004
- fanfare 372
+ getitemname 0, 0x8004
+ playfanfare 372
message FallarborTown_House1_Text_1A1498
- waittext
+ waitmessage
waitfanfare
removeitem 0x8004, 1
return
@@ -2553,9 +2548,9 @@ EverGrandeCity_DrakesRoom_EventScript_1A0693:: @ 81A0693
EverGrandeCity_GlaciasRoom_EventScript_1A0693:: @ 81A0693
EverGrandeCity_PhoebesRoom_EventScript_1A0693:: @ 81A0693
EverGrandeCity_SidneysRoom_EventScript_1A0693:: @ 81A0693
- move 255, EverGrandeCity_SidneysRoom_Movement_1A0853
- waitmove 0
- playsfx 8
+ applymovement 255, EverGrandeCity_SidneysRoom_Movement_1A0853
+ waitmovement 0
+ playse 8
setmaptile 6, 1, 836, 0
setmaptile 6, 2, 837, 0
setmaptile 0, 2, 734, 1
@@ -2575,9 +2570,9 @@ EverGrandeCity_DrakesRoom_EventScript_1A0710:: @ 81A0710
EverGrandeCity_GlaciasRoom_EventScript_1A0710:: @ 81A0710
EverGrandeCity_PhoebesRoom_EventScript_1A0710:: @ 81A0710
EverGrandeCity_SidneysRoom_EventScript_1A0710:: @ 81A0710
- move 255, EverGrandeCity_SidneysRoom_Movement_1A0847
- waitmove 0
- playsfx 52
+ applymovement 255, EverGrandeCity_SidneysRoom_Movement_1A0847
+ waitmovement 0
+ playse 52
setmaptile 5, 12, 518, 1
setmaptile 6, 12, 518, 1
setmaptile 7, 12, 518, 1
@@ -2985,17 +2980,17 @@ UnknownString_81A0A54: @ 81A0A54
UnknownString_81A0A66: @ 81A0A66
.string "Accessed LANETTE’s PC.$"
-OldaleTown_PokemonCenter_1F_Text_1A0A7D:: @ 81A0A7D
+gText_NurseJoy_Welcome:: @ 81A0A7D
.string "Hello, and welcome to the POKéMON\n"
.string "CENTER.\p"
.string "We restore your tired POKéMON to\n"
.string "full health.\p"
.string "Would you like to rest your POKéMON?$"
-OldaleTown_PokemonCenter_1F_Text_1A0AFA:: @ 81A0AFA
+gText_NurseJoy_WeHopeToSeeYouAgain:: @ 81A0AFA
.string "We hope to see you again!$"
-OldaleTown_PokemonCenter_1F_Text_1A0B14:: @ 81A0B14
+gText_NurseJoy_ThankYouForWaiting:: @ 81A0B14
.string "Thank you for waiting.\p"
.string "We’ve restored your POKéMON to\n"
.string "full health.$"
@@ -3209,11 +3204,11 @@ SlateportCity_Text_1A116E:: @ 81A116E
.string "We’ll accept you as a member and sell\n"
.string "you good stuff in secrecy.$"
-OldaleTown_PokemonCenter_1F_Text_1A1245:: @ 81A1245
+gText_NurseJoy_OkayIllTakeYourPokemon:: @ 81A1245
.string "Okay, I’ll take your POKéMON for a\n"
.string "few seconds.$"
-OldaleTown_PokemonCenter_1F_Text_1A1275:: @ 81A1275
+gText_NurseJoy_Pokerus:: @ 81A1275
.string "Your POKéMON may be infected with\n"
.string "POKéRUS.\p"
.string "Little is known about the POKéRUS\n"
@@ -3259,13 +3254,13 @@ gUnknown_081A14B8:: @ 81A14B8
special ExecuteWhiteOut
waitstate
compare RESULT, 1
- jumpeq EventScript_1A14CA
+ goto_if_eq EventScript_1A14CA
releaseall
end
EventScript_1A14CA::
message UnknownString_81A1141
- waittext
+ waitmessage
waitbutton
special sub_8081924
waitstate
@@ -3603,44 +3598,44 @@ gUnknown_081A2C51:: @ 81A2C51
special sub_80BB70C
special sub_80BB63C
compare RESULT, 1
- jumpeq EventScript_1A2E45
- checkattack MOVE_SECRET_POWER
- setanimation 0, RESULT
- bufferattack 1, MOVE_SECRET_POWER
+ goto_if_eq EventScript_1A2E45
+ checkpokemove MOVE_SECRET_POWER
+ setfieldeffect 0, RESULT
+ getmovename 1, MOVE_SECRET_POWER
compare 0x8007, 1
- jumpeq EventScript_1A2CB0
+ goto_if_eq EventScript_1A2CB0
compare 0x8007, 2
- jumpeq EventScript_1A2CB0
+ goto_if_eq EventScript_1A2CB0
compare 0x8007, 3
- jumpeq EventScript_1A2CB0
+ goto_if_eq EventScript_1A2CB0
compare 0x8007, 4
- jumpeq EventScript_1A2CB0
+ goto_if_eq EventScript_1A2CB0
compare 0x8007, 5
- jumpeq EventScript_1A2D08
+ goto_if_eq EventScript_1A2D08
compare 0x8007, 6
- jumpeq EventScript_1A2D60
+ goto_if_eq EventScript_1A2D60
end
EventScript_1A2CB0:
lockall
compare RESULT, 6
- jumpeq EventScript_1A2CF1
- bufferpartypoke 0, RESULT
+ goto_if_eq EventScript_1A2CF1
+ getpartypokename 0, RESULT
msgbox UnknownString_8198F34, 5
compare RESULT, 0
- jumpeq EventScript_1A2F3A
+ goto_if_eq EventScript_1A2F3A
msgbox UsedCutRockSmashText, 4
- closebutton
- doanimation 11
+ closemessage
+ dofieldeffect 11
waitstate
- jump EventScript_1A2CFA
+ goto EventScript_1A2CFA
end
gUnknown_081A2CE6:: @ 81A2CE6
lockall
- doanimation 11
+ dofieldeffect 11
waitstate
- jump EventScript_1A2CFA
+ goto EventScript_1A2CFA
end
EventScript_1A2CF1:
@@ -3649,29 +3644,29 @@ EventScript_1A2CF1:
EventScript_1A2CFA:
msgbox UnknownString_8198F6E, 4
- jump EventScript_1A2DB8
+ goto EventScript_1A2DB8
end
EventScript_1A2D08:
lockall
compare RESULT, 6
- jumpeq EventScript_1A2D49
- bufferpartypoke 0, RESULT
+ goto_if_eq EventScript_1A2D49
+ getpartypokename 0, RESULT
msgbox UnknownString_81A197B, 5
compare RESULT, 0
- jumpeq EventScript_1A2F3A
+ goto_if_eq EventScript_1A2F3A
msgbox UsedCutRockSmashText, 4
- closebutton
- doanimation 26
+ closemessage
+ dofieldeffect 26
waitstate
- jump EventScript_1A2D52
+ goto EventScript_1A2D52
end
gUnknown_081A2D3E:: @ 81A2D3E
lockall
- doanimation 26
+ dofieldeffect 26
waitstate
- jump EventScript_1A2D52
+ goto EventScript_1A2D52
end
EventScript_1A2D49:
@@ -3680,29 +3675,29 @@ EventScript_1A2D49:
EventScript_1A2D52:
msgbox UnknownString_81A19C4, 4
- jump EventScript_1A2DB8
+ goto EventScript_1A2DB8
end
EventScript_1A2D60:
lockall
compare RESULT, 6
- jumpeq EventScript_1A2DA1
- bufferpartypoke 0, RESULT
+ goto_if_eq EventScript_1A2DA1
+ getpartypokename 0, RESULT
msgbox UnknownString_81A1A4B, 5
compare RESULT, 0
- jumpeq EventScript_1A2F3A
+ goto_if_eq EventScript_1A2F3A
msgbox UsedCutRockSmashText, 4
- closebutton
- doanimation 27
+ closemessage
+ dofieldeffect 27
waitstate
- jump EventScript_1A2DAA
+ goto EventScript_1A2DAA
end
gUnknown_081A2D96:: @ 81A2D96
lockall
- doanimation 27
+ dofieldeffect 27
waitstate
- jump EventScript_1A2DAA
+ goto EventScript_1A2DAA
end
EventScript_1A2DA1:
@@ -3711,12 +3706,12 @@ EventScript_1A2DA1:
EventScript_1A2DAA:
msgbox UnknownString_81A1AA9, 4
- jump EventScript_1A2DB8
+ goto EventScript_1A2DB8
end
EventScript_1A2DB8:
- closebutton
- playsfx 9
+ closemessage
+ playse 9
setvar 0x4097, 0
setflag 173
special sub_80BB8CC
@@ -3729,19 +3724,19 @@ EventScript_1A2DB8:
end
SecretBase_RedCave1_EventScript_1A2DDE:: @ 81A2DDE
- move 255, SecretBase_RedCave1_Movement_1A2E11
- waitmove 0
+ applymovement 255, SecretBase_RedCave1_Movement_1A2E11
+ waitmovement 0
setvar 0x4097, 1
msgbox SecretBase_RedCave1_Text_198F89, 5
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A2E08
- closebutton
- playsfx 9
+ goto_if_eq SecretBase_RedCave1_EventScript_1A2E08
+ closemessage
+ playse 9
special sub_80BC440
end
SecretBase_RedCave1_EventScript_1A2E08:: @ 81A2E08
- closebutton
+ closemessage
setflag 96
special sub_80BBC78
waitstate
@@ -3755,10 +3750,10 @@ SecretBase_RedCave1_Movement_1A2E11:: @ 81A2E11
gUnknown_081A2E14:: @ 81A2E14
lockall
setvar 0x4097, 1
- playsfx 9
+ playse 9
special sub_80BC114
compare RESULT, 0
- jumpeq EventScript_1A2E38
+ goto_if_eq EventScript_1A2E38
clearflag 173
special sub_80BBAF0
setvar 0x4089, 0
@@ -3773,63 +3768,63 @@ EventScript_1A2E38:
end
EventScript_1A2E45:
- checkattack MOVE_SECRET_POWER
+ checkpokemove MOVE_SECRET_POWER
compare RESULT, 6
- jumpeq EventScript_1A2EF7
- setanimation 0, RESULT
+ goto_if_eq EventScript_1A2EF7
+ setfieldeffect 0, RESULT
setorcopyvar 0x8004, RESULT
lockall
special GetSecretBaseNearbyMapName
msgbox UnknownString_81A3C71, 5
compare RESULT, 0
- jumpeq EventScript_1A2F3A
+ goto_if_eq EventScript_1A2F3A
msgbox UnknownString_81A38FB, 5
compare RESULT, 0
- jumpeq EventScript_1A2F3A
+ goto_if_eq EventScript_1A2F3A
fadescreen 1
special sub_80BC50C
- closebutton
+ closemessage
fadescreen 0
msgbox UnknownString_81A3CC9, 5
compare RESULT, 0
- jumpeq EventScript_1A2F3A
- bufferpartypoke 0, 0x8004
- bufferattack 1, MOVE_SECRET_POWER
+ goto_if_eq EventScript_1A2F3A
+ getpartypokename 0, 0x8004
+ getmovename 1, MOVE_SECRET_POWER
msgbox UsedCutRockSmashText, 4
- closebutton
- closebutton
+ closemessage
+ closemessage
compare 0x8007, 1
- jumpeq gUnknown_081A2CE6
+ goto_if_eq gUnknown_081A2CE6
compare 0x8007, 2
- jumpeq gUnknown_081A2CE6
+ goto_if_eq gUnknown_081A2CE6
compare 0x8007, 3
- jumpeq gUnknown_081A2CE6
+ goto_if_eq gUnknown_081A2CE6
compare 0x8007, 4
- jumpeq gUnknown_081A2CE6
+ goto_if_eq gUnknown_081A2CE6
compare 0x8007, 5
- jumpeq gUnknown_081A2D3E
+ goto_if_eq gUnknown_081A2D3E
compare 0x8007, 6
- jumpeq gUnknown_081A2D96
+ goto_if_eq gUnknown_081A2D96
releaseall
end
EventScript_1A2EF7::
compare 0x8007, 1
- jumpeq EventScript_1A2CF1
+ goto_if_eq EventScript_1A2CF1
compare 0x8007, 2
- jumpeq EventScript_1A2CF1
+ goto_if_eq EventScript_1A2CF1
compare 0x8007, 3
- jumpeq EventScript_1A2CF1
+ goto_if_eq EventScript_1A2CF1
compare 0x8007, 4
- jumpeq EventScript_1A2CF1
+ goto_if_eq EventScript_1A2CF1
compare 0x8007, 5
- jumpeq EventScript_1A2D49
+ goto_if_eq EventScript_1A2D49
compare 0x8007, 6
- jumpeq EventScript_1A2DA1
+ goto_if_eq EventScript_1A2DA1
end
EventScript_1A2F3A::
- closebutton
+ closemessage
releaseall
end
@@ -3863,7 +3858,7 @@ SecretBase_RedCave1_EventScript_1A2F68:: @ 81A2F68
gUnknown_081A2F7B:: @ 81A2F7B
setvar 0x8005, 0
- jump EventScript_1A2F86
+ goto EventScript_1A2F86
end
EventScript_1A2F86:
@@ -3872,19 +3867,19 @@ EventScript_1A2F86:
gUnknown_081A2F8A:: @ 81A2F8A
setvar 0x8004, 0
- jump EventScript_1A2F95
+ goto EventScript_1A2F95
end
EventScript_1A2F95:
special sub_8100A7C
compare RESULT, 1
- jumpeq EventScript_1A2FBF
+ goto_if_eq EventScript_1A2FBF
addvar 0x8004, 1
compare 0x8005, 0
- jumpeq EventScript_1A2F95
- disappear 0x8006
+ goto_if_eq EventScript_1A2F95
+ removeobject 0x8006
setflag 0x8005
- jump EventScript_1A2F95
+ goto EventScript_1A2F95
end
EventScript_1A2FBF:
@@ -3916,45 +3911,45 @@ SecretBase_YellowCave3_EventScript_1A2FC0:: @ 81A2FC0
SecretBase_YellowCave4_EventScript_1A2FC0:: @ 81A2FC0
special sub_80BCE90
compare 0x8004, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3032
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3032
compare 0x8004, 1
- jumpeq SecretBase_RedCave1_EventScript_1A30AE
+ goto_if_eq SecretBase_RedCave1_EventScript_1A30AE
compare 0x8004, 2
- jumpeq SecretBase_RedCave1_EventScript_1A312A
+ goto_if_eq SecretBase_RedCave1_EventScript_1A312A
compare 0x8004, 3
- jumpeq SecretBase_RedCave1_EventScript_1A31A6
+ goto_if_eq SecretBase_RedCave1_EventScript_1A31A6
compare 0x8004, 4
- jumpeq SecretBase_RedCave1_EventScript_1A3222
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3222
compare 0x8004, 5
- jumpeq SecretBase_RedCave1_EventScript_1A329E
+ goto_if_eq SecretBase_RedCave1_EventScript_1A329E
compare 0x8004, 6
- jumpeq SecretBase_RedCave1_EventScript_1A331A
+ goto_if_eq SecretBase_RedCave1_EventScript_1A331A
compare 0x8004, 7
- jumpeq SecretBase_RedCave1_EventScript_1A3396
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3396
compare 0x8004, 8
- jumpeq SecretBase_RedCave1_EventScript_1A3412
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3412
compare 0x8004, 9
- jumpeq SecretBase_RedCave1_EventScript_1A348E
+ goto_if_eq SecretBase_RedCave1_EventScript_1A348E
end
SecretBase_RedCave1_EventScript_1A3032:: @ 81A3032
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A3086
+ goto_if 0, SecretBase_RedCave1_EventScript_1A3086
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A30A5
+ goto_if_eq SecretBase_RedCave1_EventScript_1A30A5
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A1AEA, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A308F
+ goto_if_eq SecretBase_RedCave1_EventScript_1A308F
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A308F
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A308F
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1B83, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086
@@ -3964,7 +3959,7 @@ SecretBase_RedCave1_EventScript_1A3086:: @ 81A3086
SecretBase_RedCave1_EventScript_1A308F:: @ 81A308F
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1B97, 2
end
@@ -3974,22 +3969,22 @@ SecretBase_RedCave1_EventScript_1A30A5:: @ 81A30A5
SecretBase_RedCave1_EventScript_1A30AE:: @ 81A30AE
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A3102
+ goto_if 0, SecretBase_RedCave1_EventScript_1A3102
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3121
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3121
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A1E67, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A310B
+ goto_if_eq SecretBase_RedCave1_EventScript_1A310B
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A310B
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A310B
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1F04, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102
@@ -3999,7 +3994,7 @@ SecretBase_RedCave1_EventScript_1A3102:: @ 81A3102
SecretBase_RedCave1_EventScript_1A310B:: @ 81A310B
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1F2E, 2
end
@@ -4009,22 +4004,22 @@ SecretBase_RedCave1_EventScript_1A3121:: @ 81A3121
SecretBase_RedCave1_EventScript_1A312A:: @ 81A312A
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A317E
+ goto_if 0, SecretBase_RedCave1_EventScript_1A317E
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A319D
+ goto_if_eq SecretBase_RedCave1_EventScript_1A319D
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A218F, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3187
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3187
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3187
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3187
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2220, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E
@@ -4034,7 +4029,7 @@ SecretBase_RedCave1_EventScript_1A317E:: @ 81A317E
SecretBase_RedCave1_EventScript_1A3187:: @ 81A3187
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2230, 2
end
@@ -4044,22 +4039,22 @@ SecretBase_RedCave1_EventScript_1A319D:: @ 81A319D
SecretBase_RedCave1_EventScript_1A31A6:: @ 81A31A6
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A31FA
+ goto_if 0, SecretBase_RedCave1_EventScript_1A31FA
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3219
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3219
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A24E1, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3203
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3203
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3203
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3203
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A256F, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA
@@ -4069,7 +4064,7 @@ SecretBase_RedCave1_EventScript_1A31FA:: @ 81A31FA
SecretBase_RedCave1_EventScript_1A3203:: @ 81A3203
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A258A, 2
end
@@ -4079,22 +4074,22 @@ SecretBase_RedCave1_EventScript_1A3219:: @ 81A3219
SecretBase_RedCave1_EventScript_1A3222:: @ 81A3222
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A3276
+ goto_if 0, SecretBase_RedCave1_EventScript_1A3276
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3295
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3295
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A2830, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A327F
+ goto_if_eq SecretBase_RedCave1_EventScript_1A327F
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A327F
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A327F
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A28D7, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276
@@ -4104,7 +4099,7 @@ SecretBase_RedCave1_EventScript_1A3276:: @ 81A3276
SecretBase_RedCave1_EventScript_1A327F:: @ 81A327F
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A28F4, 2
end
@@ -4114,22 +4109,22 @@ SecretBase_RedCave1_EventScript_1A3295:: @ 81A3295
SecretBase_RedCave1_EventScript_1A329E:: @ 81A329E
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A32F2
+ goto_if 0, SecretBase_RedCave1_EventScript_1A32F2
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3311
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3311
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A1CB2, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A32FB
+ goto_if_eq SecretBase_RedCave1_EventScript_1A32FB
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A32FB
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A32FB
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1D48, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2
@@ -4139,7 +4134,7 @@ SecretBase_RedCave1_EventScript_1A32F2:: @ 81A32F2
SecretBase_RedCave1_EventScript_1A32FB:: @ 81A32FB
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A1D59, 2
end
@@ -4149,22 +4144,22 @@ SecretBase_RedCave1_EventScript_1A3311:: @ 81A3311
SecretBase_RedCave1_EventScript_1A331A:: @ 81A331A
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A336E
+ goto_if 0, SecretBase_RedCave1_EventScript_1A336E
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A338D
+ goto_if_eq SecretBase_RedCave1_EventScript_1A338D
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A2026, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3377
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3377
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A3377
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3377
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2095, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E
@@ -4174,7 +4169,7 @@ SecretBase_RedCave1_EventScript_1A336E:: @ 81A336E
SecretBase_RedCave1_EventScript_1A3377:: @ 81A3377
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A20AE, 2
end
@@ -4184,22 +4179,22 @@ SecretBase_RedCave1_EventScript_1A338D:: @ 81A338D
SecretBase_RedCave1_EventScript_1A3396:: @ 81A3396
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A33EA
+ goto_if 0, SecretBase_RedCave1_EventScript_1A33EA
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3409
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3409
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A236A, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A33F3
+ goto_if_eq SecretBase_RedCave1_EventScript_1A33F3
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A33F3
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A33F3
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2405, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA
@@ -4209,7 +4204,7 @@ SecretBase_RedCave1_EventScript_1A33EA:: @ 81A33EA
SecretBase_RedCave1_EventScript_1A33F3:: @ 81A33F3
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2420, 2
end
@@ -4219,22 +4214,22 @@ SecretBase_RedCave1_EventScript_1A3409:: @ 81A3409
SecretBase_RedCave1_EventScript_1A3412:: @ 81A3412
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A3466
+ goto_if 0, SecretBase_RedCave1_EventScript_1A3466
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3485
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3485
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A2663, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A346F
+ goto_if_eq SecretBase_RedCave1_EventScript_1A346F
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A346F
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A346F
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2710, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466
@@ -4244,7 +4239,7 @@ SecretBase_RedCave1_EventScript_1A3466:: @ 81A3466
SecretBase_RedCave1_EventScript_1A346F:: @ 81A346F
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2736, 2
end
@@ -4254,22 +4249,22 @@ SecretBase_RedCave1_EventScript_1A3485:: @ 81A3485
SecretBase_RedCave1_EventScript_1A348E:: @ 81A348E
checkflag 2052
- jumpif 0, SecretBase_RedCave1_EventScript_1A34E2
+ goto_if 0, SecretBase_RedCave1_EventScript_1A34E2
compare RESULT, 1
- jumpeq SecretBase_RedCave1_EventScript_1A3501
+ goto_if_eq SecretBase_RedCave1_EventScript_1A3501
lock
faceplayer
msgbox SecretBase_RedCave1_Text_1A2A13, 5
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A34EB
+ goto_if_eq SecretBase_RedCave1_EventScript_1A34EB
setvar RESULT, 1
special sub_80BCE4C
- call SecretBase_RedCave1_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq SecretBase_RedCave1_EventScript_1A34EB
- hidebox 0, 0, 15, 10
+ goto_if_eq SecretBase_RedCave1_EventScript_1A34EB
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2AE2, 4
- jump SecretBase_RedCave1_EventScript_1A350A
+ goto SecretBase_RedCave1_EventScript_1A350A
end
SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2
@@ -4279,7 +4274,7 @@ SecretBase_RedCave1_EventScript_1A34E2:: @ 81A34E2
SecretBase_RedCave1_EventScript_1A34EB:: @ 81A34EB
setvar RESULT, 0
special sub_80BCE4C
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
msgbox SecretBase_RedCave1_Text_1A2AFB, 2
end
@@ -4293,7 +4288,7 @@ SecretBase_RedCave1_EventScript_1A350A:: @ 81A350A
setvar 0x8005, 0
special sub_813556C
waitstate
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
release
end
@@ -4379,7 +4374,7 @@ FallarborTown_ContestLobby_EventScript_1ADE46:: @ 81ADE46
SlateportCity_OceanicMuseum_1F_EventScript_1ADE46:: @ 81ADE46
SlateportCity_PokemonFanClub_EventScript_1ADE46:: @ 81ADE46
special sub_80BDE48
- inccounter GAME_STAT_GOT_INTERVIEWED
+ incrementgamestat GAME_STAT_GOT_INTERVIEWED
release
end
@@ -4387,13 +4382,13 @@ SlateportCity_PokemonFanClub_EventScript_1ADE4D:: @ 81ADE4D
setvar 0x8005, 1
special sub_80BF2C4
compare RESULT, 1
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADED6
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADED6
copyvar 0x8009, 0x8006
msgbox SlateportCity_PokemonFanClub_Text_1A8704, 5
compare RESULT, 1
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE84
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADE84
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEB9
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEB9
end
SlateportCity_PokemonFanClub_EventScript_1ADE84:: @ 81ADE84
@@ -4405,9 +4400,9 @@ SlateportCity_PokemonFanClub_EventScript_1ADE84:: @ 81ADE84
lock
faceplayer
compare RESULT, 1
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEC3
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEC3
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADEB9
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADEB9
end
SlateportCity_PokemonFanClub_EventScript_1ADEB9:: @ 81ADEB9
@@ -4418,7 +4413,7 @@ SlateportCity_PokemonFanClub_EventScript_1ADEB9:: @ 81ADEB9
SlateportCity_PokemonFanClub_EventScript_1ADEC3:: @ 81ADEC3
msgbox SlateportCity_PokemonFanClub_Text_1A8818, 4
setvar 0x8005, 1
- jump SlateportCity_PokemonFanClub_EventScript_1ADE46
+ goto SlateportCity_PokemonFanClub_EventScript_1ADE46
end
SlateportCity_PokemonFanClub_EventScript_1ADED6:: @ 81ADED6
@@ -4432,24 +4427,24 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADEE0:: @ 81ADEE0
setvar 0x8005, 2
special sub_80BF2C4
compare RESULT, 1
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF96
copyvar 0x8009, 0x8006
checkflag 105
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF25
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF25
setflag 105
msgbox SlateportCity_OceanicMuseum_1F_Text_1A927F, 5
compare RESULT, 1
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44
compare RESULT, 0
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79
end
SlateportCity_OceanicMuseum_1F_EventScript_1ADF25:: @ 81ADF25
msgbox SlateportCity_OceanicMuseum_1F_Text_1A934C, 5
compare RESULT, 1
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF44
compare RESULT, 0
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79
end
SlateportCity_OceanicMuseum_1F_EventScript_1ADF44:: @ 81ADF44
@@ -4461,9 +4456,9 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF44:: @ 81ADF44
lock
faceplayer
compare RESULT, 1
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF83
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF83
compare RESULT, 0
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_1ADF79
end
SlateportCity_OceanicMuseum_1F_EventScript_1ADF79:: @ 81ADF79
@@ -4474,7 +4469,7 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF79:: @ 81ADF79
SlateportCity_OceanicMuseum_1F_EventScript_1ADF83:: @ 81ADF83
msgbox SlateportCity_OceanicMuseum_1F_Text_1A949A, 4
setvar 0x8005, 2
- jump SlateportCity_OceanicMuseum_1F_EventScript_1ADE46
+ goto SlateportCity_OceanicMuseum_1F_EventScript_1ADE46
end
SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96
@@ -4485,19 +4480,19 @@ SlateportCity_OceanicMuseum_1F_EventScript_1ADF96:: @ 81ADF96
SlateportCity_PokemonFanClub_EventScript_1ADFA0:: @ 81ADFA0
lock
faceplayer
- specialval RESULT, sub_80BF544
+ specialvar RESULT, sub_80BF544
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADE4D
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADE4D
setvar 0x8005, 3
special sub_80BF2C4
compare RESULT, 1
- jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0AC
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0AC
copyvar 0x8009, 0x8006
msgbox SlateportCity_PokemonFanClub_Text_1A82F1, 5
compare RESULT, 1
- jumpeq SlateportCity_PokemonFanClub_EventScript_1ADFE9
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1ADFE9
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2
end
SlateportCity_PokemonFanClub_EventScript_1ADFE9:: @ 81ADFE9
@@ -4512,17 +4507,17 @@ SlateportCity_PokemonFanClub_EventScript_1ADFE9:: @ 81ADFE9
SlateportCity_PokemonFanClub_EventScript_1AE020:: @ 81AE020
msgbox SlateportCity_PokemonFanClub_Text_1A8414, 4
- jump SlateportCity_PokemonFanClub_EventScript_1AE04A
+ goto SlateportCity_PokemonFanClub_EventScript_1AE04A
end
SlateportCity_PokemonFanClub_EventScript_1AE02E:: @ 81AE02E
msgbox SlateportCity_PokemonFanClub_Text_1A8470, 4
- jump SlateportCity_PokemonFanClub_EventScript_1AE04A
+ goto SlateportCity_PokemonFanClub_EventScript_1AE04A
end
SlateportCity_PokemonFanClub_EventScript_1AE03C:: @ 81AE03C
msgbox SlateportCity_PokemonFanClub_Text_1A84D5, 4
- jump SlateportCity_PokemonFanClub_EventScript_1AE04A
+ goto SlateportCity_PokemonFanClub_EventScript_1AE04A
end
SlateportCity_PokemonFanClub_EventScript_1AE04A:: @ 81AE04A
@@ -4533,18 +4528,18 @@ SlateportCity_PokemonFanClub_EventScript_1AE04A:: @ 81AE04A
lock
faceplayer
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2
msgbox SlateportCity_PokemonFanClub_Text_1A852D, 4
setvar 0x8006, 1
call SlateportCity_PokemonFanClub_EventScript_1A00F3
lock
faceplayer
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1AE0A2
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1AE0A2
msgbox SlateportCity_PokemonFanClub_Text_1A85A6, 4
copyvar 0x8007, 0x800a
setvar 0x8005, 3
- jump SlateportCity_PokemonFanClub_EventScript_1ADE46
+ goto SlateportCity_PokemonFanClub_EventScript_1ADE46
end
SlateportCity_PokemonFanClub_EventScript_1AE0A2:: @ 81AE0A2
@@ -4564,17 +4559,17 @@ VerdanturfTown_ContestLobby_EventScript_1AE0B6:: @ 81AE0B6
lock
faceplayer
checkflag 2
- jumpeq FallarborTown_ContestLobby_EventScript_1AE17E
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE17E
setvar 0x8005, 6
special sub_80BF2C4
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1AE17E
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE17E
copyvar 0x8009, 0x8006
msgbox FallarborTown_ContestLobby_Text_1A6F7C, 5
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1AE0F8
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE0F8
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1AE12D
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D
end
FallarborTown_ContestLobby_EventScript_1AE0F8:: @ 81AE0F8
@@ -4586,9 +4581,9 @@ FallarborTown_ContestLobby_EventScript_1AE0F8:: @ 81AE0F8
lock
faceplayer
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1AE137
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE137
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1AE12D
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D
end
FallarborTown_ContestLobby_EventScript_1AE12D:: @ 81AE12D
@@ -4607,11 +4602,11 @@ FallarborTown_ContestLobby_EventScript_1AE137:: @ 81AE137
lock
faceplayer
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1AE12D
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE12D
msgbox FallarborTown_ContestLobby_Text_1A7153, 4
setflag 2
setvar 0x8005, 6
- jump FallarborTown_ContestLobby_EventScript_1ADE46
+ goto FallarborTown_ContestLobby_EventScript_1ADE46
end
FallarborTown_ContestLobby_EventScript_1AE17E:: @ 81AE17E
@@ -4624,11 +4619,11 @@ LilycoveCity_ContestLobby_EventScript_1AE188:: @ 81AE188
SlateportCity_ContestLobby_EventScript_1AE188:: @ 81AE188
VerdanturfTown_ContestLobby_EventScript_1AE188:: @ 81AE188
compare 0x4086, 2
- jumpif 5, FallarborTown_ContestLobby_EventScript_1AE1FE
+ goto_if 5, FallarborTown_ContestLobby_EventScript_1AE1FE
setvar 0x8005, 6
special sub_80BF2C4
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1AE1FE
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1AE1FE
switch 0x4088
case 0, FallarborTown_ContestLobby_EventScript_1AE1FE
case 2, FallarborTown_ContestLobby_EventScript_1AE1EE
@@ -4661,28 +4656,28 @@ BattleTower_Lobby_EventScript_1AE1FF:: @ 81AE1FF
lock
faceplayer
checkflag 2
- jumpeq BattleTower_Lobby_EventScript_1AE2E3
+ goto_if_eq BattleTower_Lobby_EventScript_1AE2E3
setvar 0x8005, 7
special sub_80BF2C4
compare RESULT, 1
- jumpeq BattleTower_Lobby_EventScript_1AE2E3
+ goto_if_eq BattleTower_Lobby_EventScript_1AE2E3
copyvar 0x8009, 0x8006
msgbox BattleTower_Lobby_Text_1A776D, 5
compare RESULT, 1
- jumpeq BattleTower_Lobby_EventScript_1AE241
+ goto_if_eq BattleTower_Lobby_EventScript_1AE241
compare RESULT, 0
- jumpeq BattleTower_Lobby_EventScript_1AE297
+ goto_if_eq BattleTower_Lobby_EventScript_1AE297
end
BattleTower_Lobby_EventScript_1AE241:: @ 81AE241
message BattleTower_Lobby_Text_1A7823
- waittext
+ waitmessage
multichoice 19, 8, 45, 1
copyvar 0x8008, RESULT
compare RESULT, 0
- callif 1, BattleTower_Lobby_EventScript_1AE2A1
+ call_if 1, BattleTower_Lobby_EventScript_1AE2A1
compare RESULT, 1
- callif 1, BattleTower_Lobby_EventScript_1AE2AA
+ call_if 1, BattleTower_Lobby_EventScript_1AE2AA
msgbox BattleTower_Lobby_Text_1A79EB, 4
setvar 0x8004, 12
copyvar 0x8005, 0x8009
@@ -4690,9 +4685,9 @@ BattleTower_Lobby_EventScript_1AE241:: @ 81AE241
lock
faceplayer
compare RESULT, 1
- jumpeq BattleTower_Lobby_EventScript_1AE2B3
+ goto_if_eq BattleTower_Lobby_EventScript_1AE2B3
compare RESULT, 0
- jumpeq BattleTower_Lobby_EventScript_1AE2D9
+ goto_if_eq BattleTower_Lobby_EventScript_1AE2D9
end
BattleTower_Lobby_EventScript_1AE297:: @ 81AE297
@@ -4710,12 +4705,12 @@ BattleTower_Lobby_EventScript_1AE2AA:: @ 81AE2AA
BattleTower_Lobby_EventScript_1AE2B3:: @ 81AE2B3
compare RESULT, 0
- jumpeq BattleTower_Lobby_EventScript_1AE2D9
+ goto_if_eq BattleTower_Lobby_EventScript_1AE2D9
msgbox BattleTower_Lobby_Text_1A7A6E, 4
setflag 2
copyvar 0x8004, 0x8008
setvar 0x8005, 7
- jump BattleTower_Lobby_EventScript_1ADE46
+ goto BattleTower_Lobby_EventScript_1ADE46
end
BattleTower_Lobby_EventScript_1AE2D9:: @ 81AE2D9
@@ -4730,11 +4725,11 @@ BattleTower_Lobby_EventScript_1AE2E3:: @ 81AE2E3
BattleTower_Lobby_EventScript_1AE2ED:: @ 81AE2ED
compare 0x40bc, 0
- jumpeq BattleTower_Lobby_EventScript_1AE30F
+ goto_if_eq BattleTower_Lobby_EventScript_1AE30F
setvar 0x8005, 7
special sub_80BF2C4
compare RESULT, 1
- jumpeq BattleTower_Lobby_EventScript_1AE30F
+ goto_if_eq BattleTower_Lobby_EventScript_1AE30F
clearflag 918
return
@@ -4744,16 +4739,7 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F
.include "data/scripts/gabby_and_ty.inc"
- .include "data/scripts/bard.inc"
- .include "data/scripts/hipster.inc"
- .include "data/text/trader.inc"
- .include "data/scripts/trader.inc"
- .include "data/text/storyteller.inc"
- .include "data/scripts/storyteller.inc"
- .include "data/text/giddy.inc"
- .include "data/scripts/giddy.inc"
- .include "data/text/bard.inc"
- .include "data/text/hipster.inc"
+ .include "data/scripts/mauville_man.inc"
.include "data/field_move_scripts.inc"
.include "data/item_ball_scripts.inc"
@@ -4777,13 +4763,13 @@ BattleTower_Lobby_EventScript_1AE30F:: @ 81AE30F
.include "data/text/magma_summit.inc"
gUnknown_081B694A:: @ 81B694A
- lighten 1
- darken 1
+ animdarklevel 1
+ setdarklevel 1
end
.include "data/scripts/players_house.inc"
-Event_RunningShoesManual:: @ 81B6E5A
+S_RunningShoesManual:: @ 81B6E5A
msgbox UnknownString_81728E3, 3
end
@@ -4792,7 +4778,7 @@ Event_RunningShoesManual:: @ 81B6E5A
.include "data/text/trainers.inc"
-Event_RepelWoreOff:: @ 81C33E6
+S_RepelWoreOff:: @ 81C33E6
msgbox Text_RepelWoreOff, 3
end
@@ -4805,25 +4791,25 @@ Text_RepelWoreOff: @ 81C33EF
MauvilleCity_GameCorner_EventScript_1C407E:: @ 81C407E
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 0
- event_96 2
+ getpricereduction 2
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1C40DA
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1C40DA
addvar 0x8004, 128
- jump MauvilleCity_GameCorner_EventScript_1C40DA
+ goto MauvilleCity_GameCorner_EventScript_1C40DA
end
MauvilleCity_GameCorner_EventScript_1C40AC:: @ 81C40AC
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 1
- event_96 2
+ getpricereduction 2
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1C40DA
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1C40DA
addvar 0x8004, 128
- jump MauvilleCity_GameCorner_EventScript_1C40DA
+ goto MauvilleCity_GameCorner_EventScript_1C40DA
end
MauvilleCity_GameCorner_EventScript_1C40DA:: @ 81C40DA
@@ -4872,7 +4858,7 @@ GraniteCave_B1F_MapScript2_1C6BB5:: @ 81C6BB5
MtPyre_2F_MapScript2_1C6BB5:: @ 81C6BB5
SkyPillar_2F_MapScript2_1C6BB5:: @ 81C6BB5
SkyPillar_4F_MapScript2_1C6BB5:: @ 81C6BB5
- map_script_2 0x4022, 0, GraniteCave_B1F_EventScript_1C6BC5
+ map_script_2 0x4022, 0, S_FallDownHole
.2byte 0
GraniteCave_B1F_MapScript1_1C6BBF:: @ 81C6BBF
@@ -4882,24 +4868,24 @@ SkyPillar_4F_MapScript1_1C6BBF:: @ 81C6BBF
copyvar 0x4022, 0x1
end
-GraniteCave_B1F_EventScript_1C6BC5:: @ 81C6BC5
+S_FallDownHole:: @ 81C6BC5
lockall
- pause 20
- move 255, GraniteCave_B1F_Movement_1C6BF7
- waitmove 0
- playsfx 43
- pause 60
+ delay 20
+ applymovement 255, GraniteCave_B1F_Movement_1C6BF7
+ waitmovement 0
+ playse 43
+ delay 60
warphole UNDEFINED
waitstate
end
gUnknown_081C6BDE:: @ 81C6BDE
lockall
- pause 20
- move 255, GraniteCave_B1F_Movement_1C6BF7
- waitmove 0
- playsfx 43
- pause 60
+ delay 20
+ applymovement 255, GraniteCave_B1F_Movement_1C6BF7
+ waitmovement 0
+ playse 43
+ delay 60
special sp13F_fall_to_last_warp
waitstate
end
@@ -4931,9 +4917,9 @@ gUnknown_081C6C02:: @ 81C6C02
@ 81C6C1D
lockall
- braillemsg Underwater_SealedChamber_Braille_1C533D
+ braillemessage Underwater_SealedChamber_Braille_1C533D
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
diff --git a/data/evolution_graphics.s b/data/evolution_graphics.s
deleted file mode 100644
index e362b4dba..000000000
--- a/data/evolution_graphics.s
+++ /dev/null
@@ -1,70 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gEvoSparklePalette: @ 8416E44
- .incbin "graphics/misc/evo_sparkle.gbapal"
-
- .align 2
-gEvoSparkleTiles: @ 8416E64
- .incbin "graphics/misc/evo_sparkle.4bpp.lz"
-
-gUnknown_08416E84:: @ 8416E84
- obj_tiles gEvoSparkleTiles, 0x20, 1001
- .space 8
-
-gUnknown_08416E94:: @ 8416E94
- obj_pal gEvoSparklePalette, 1001
- .space 8
-
- .align 2
-gOamData_8416EA4:: @ 8416EA4
- .2byte 0x00A0
- .2byte 0x0000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_8416EAC:: @ 8416EAC
- obj_image_anim_frame 0, 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8416EB4:: @ 8416EB4
- .4byte gSpriteAnim_8416EAC
-
- .align 2
-gSpriteTemplate_8416EB8:: @ 8416EB8
- spr_template 1001, 1001, gOamData_8416EA4, gSpriteAnimTable_8416EB4, NULL, gDummySpriteAffineAnimTable, nullsub_84
-
- .align 1
-gUnknown_08416ED0:: @ 8416ED0
- .2byte 0x3C0
- .2byte 0x380
- .2byte 0x340
- .2byte 0x300
- .2byte 0x2C0
- .2byte 0x280
- .2byte 0x240
- .2byte 0x200
- .2byte 0x1C0
- .2byte 0x180
- .2byte 0x140
- .2byte 0x100
- .2byte 0xFFFC
- .2byte 0x10
- .2byte 0xFFFD
- .2byte 0x30
- .2byte 0xFFFE
- .2byte 0x50
- .2byte 0xFFFF
- .2byte 0x70
- .2byte 0x1
- .2byte 0x70
- .2byte 0x2
- .2byte 0x50
- .2byte 0x3
- .2byte 0x30
- .2byte 0x4
- .2byte 0x10
diff --git a/data/evolution_scene.s b/data/evolution_scene.s
deleted file mode 100644
index 24744a196..000000000
--- a/data/evolution_scene.s
+++ /dev/null
@@ -1,14 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-gUnknown_083F868C:: @ 83F868C
- .string "ヌケニン$"
-
- .string "{COLOR DARK_GREY}{HIGHLIGHT WHITE2}{SHADOW LIGHT_GREY}$"
- .string "▶\n $"
- .string " \n▶$"
- .string " \n $"
-
- .space 9
diff --git a/data/field_effect_helpers.s b/data/field_effect_helpers.s
deleted file mode 100644
index d22bd8dde..000000000
--- a/data/field_effect_helpers.s
+++ /dev/null
@@ -1,37 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ XXX: Unused? Probably aligned because it's at the beginning of an object file.
- .align 2
- .string "タマゴ$"
-
- .align 1
-gUnknown_08401E2C:: @ 8401E2C
- .2byte 0xC, 0x1C, 0x2C
-
-gUnknown_08401E32:: @ 8401E32
- .byte 0, 1, 2, 3
-
- .align 1
-gUnknown_08401E36:: @ 8401E36
- .2byte 4, 4, 4, 16
-
- .align 2
-gUnknown_08401E40:: @ 8401E40
- .4byte sub_81275A0
- .4byte sub_81275C4
-
- .align 2
-gUnknown_08401E48:: @ 8401E48
- .4byte sub_8127DA0
- .4byte sub_8127DD0
- .4byte sub_8127E30
-
-gUnknown_08401E54:: @ 8401E54
- .byte 0, 0, 1, 2, 3
-
- .align 1
-gUnknown_08401E5A:: @ 8401E5A
- .2byte 3, 7
diff --git a/data/field_ground_effect.s b/data/field_ground_effect.s
deleted file mode 100644
index d3dbceedb..000000000
--- a/data/field_ground_effect.s
+++ /dev/null
@@ -1,72 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_08376040:: @ 8376040
- .4byte MetatileBehavior_IsJumpSouth
- .4byte MetatileBehavior_IsJumpNorth
- .4byte MetatileBehavior_IsJumpWest
- .4byte MetatileBehavior_IsJumpEast
-
-gUnknown_08376050:: @ 8376050
- .byte 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73
-
-@ Each byte corresponds to a sprite priority for a field object.
-@ This is directly the inverse of gFieldObjectPriorities_08376070.
-gFieldObjectPriorities_08376060:: @ 8376060
- .byte 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2
-
-@ Each byte corresponds to a sprite priority for a field object.
-@ This is the inverse of gFieldObjectPriorities_08376060.
-@ 1 = Above player sprite
-@ 2 = Below player sprite
-gFieldObjectPriorities_08376070:: @ 8376070
- .byte 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1
-
- .align 2
-gUnknown_08376080:: @ 8376080
- .4byte nullsub_50
- .4byte DoTracksGroundEffect_Footprints
- .4byte DoTracksGroundEffect_BikeTireTracks
-
-@ First byte is a Field Effect script id. (gFieldEffectScriptPointers)
-@ Last three bytes are unknown.
-gSandFootprints_FieldEffectData:: @ 837608C
- .byte 0xD, 0x0, 0x18, 0x0
-
-@ Specifies which bike track shape to show next.
-@ For example, when the bike turns from up to right, it will show
-@ a track that curves to the right.
-@ Each 4-byte row corresponds to the initial direction of the bike, and
-@ each byte in that row is for the next direction of the bike in the order
-@ of down, up, left, right.
-gBikeTireTracks_Transitions:: @ 8376090
- .byte 1, 2, 7, 8
- .byte 1, 2, 6, 5
- .byte 5, 8, 3, 4
- .byte 6, 7, 3, 4
-
- .align 2
-gUnknown_083760A0:: @ 83760A0
- .4byte GroundEffect_SpawnOnTallGrass
- .4byte sub_8063E94
- .4byte sub_8063EE0
- .4byte sub_8063F2C
- .4byte GroundEffect_WaterReflection
- .4byte GroundEffect_IceReflection
- .4byte GroundEffect_FlowingWater
- .4byte sub_8063FA0
- .4byte sub_8063FCC
- .4byte GroundEffect_Ripple
- .4byte GroundEffect_StepOnPuddle
- .4byte GroundEffect_SandPile
- .4byte GroundEffect_JumpOnTallGrass
- .4byte GroundEffect_JumpOnLongGrass
- .4byte GroundEffect_JumpOnShallowWater
- .4byte GroundEffect_JumpOnWater
- .4byte GroundEffect_JumpLandingDust
- .4byte GroundEffect_ShortGrass
- .4byte GroundEffect_HotSprings
- .4byte GroundEffect_Seaweed
diff --git a/data/field_move_scripts.inc b/data/field_move_scripts.inc
index 315217055..c36f95460 100644
--- a/data/field_move_scripts.inc
+++ b/data/field_move_scripts.inc
@@ -1,34 +1,34 @@
-CuttableTreeScript:: @ 81B0DCC
+S_CuttableTree:: @ 81B0DCC
lockall
checkflag 2055
- jumpif 0, CannotUseCut
- checkattack MOVE_CUT
+ goto_if 0, CannotUseCut
+ checkpokemove MOVE_CUT
compare RESULT, 6
- jumpeq CannotUseCut
- setanimation 0, RESULT
- bufferpartypoke 0, RESULT
- bufferattack 1, MOVE_CUT
+ goto_if_eq CannotUseCut
+ setfieldeffect 0, RESULT
+ getpartypokename 0, RESULT
+ getmovename 1, MOVE_CUT
msgbox UseCutPromptText, 5
compare RESULT, 0
- jumpeq Cut_ChoseNo
+ goto_if_eq Cut_ChoseNo
msgbox UsedCutRockSmashText, 4
- closebutton
- doanimation 2
+ closemessage
+ dofieldeffect 2
waitstate
- jump DoTreeCutMovement
+ goto DoTreeCutMovement
end
-UseCutScript:: @ 81B0E16
+S_UseCut:: @ 81B0E16
lockall
- doanimation 2
+ dofieldeffect 2
waitstate
- jump DoTreeCutMovement
+ goto DoTreeCutMovement
end
DoTreeCutMovement: @ 81B0E21
- move LAST_TALKED, TreeCutMovement @ tree cut animation
- waitmove 0
- disappear LAST_TALKED @ tree disappears
+ applymovement LAST_TALKED, TreeCutMovement @ tree cut animation
+ waitmovement 0
+ removeobject LAST_TALKED @ tree disappears
releaseall
end
@@ -42,7 +42,7 @@ CannotUseCut: @ 81B0E32
end
Cut_ChoseNo: @ 81B0E3C
- closebutton
+ closemessage
releaseall
end
@@ -56,43 +56,43 @@ UsedCutRockSmashText: @ 81B0E82
CannotUseCutText: @ 81B0E8E
.string "This tree looks like it can be CUT down.$"
-BreakableRockScript:: @ 81B0EB7
+S_BreakableRock:: @ 81B0EB7
lockall
checkflag 2057
- jumpif 0, CannotUseRockSmash
- checkattack MOVE_ROCK_SMASH
+ goto_if 0, CannotUseRockSmash
+ checkpokemove MOVE_ROCK_SMASH
compare RESULT, 6
- jumpeq CannotUseRockSmash
- setanimation 0, RESULT
- bufferpartypoke 0, RESULT
- bufferattack 1, MOVE_ROCK_SMASH
+ goto_if_eq CannotUseRockSmash
+ setfieldeffect 0, RESULT
+ getpartypokename 0, RESULT
+ getmovename 1, MOVE_ROCK_SMASH
msgbox UseRockSmashPromptText, 5
compare RESULT, 0
- jumpeq RockSmash_ChoseNo
+ goto_if_eq RockSmash_ChoseNo
msgbox UsedCutRockSmashText, 4
- closebutton
- doanimation 37
+ closemessage
+ dofieldeffect 37
waitstate
- jump DoRockSmashMovement
+ goto DoRockSmashMovement
end
-UseRockSmashScript:: @ 81B0F01
+S_UseRockSmash:: @ 81B0F01
lockall
- doanimation 37
+ dofieldeffect 37
waitstate
- jump DoRockSmashMovement
+ goto DoRockSmashMovement
end
DoRockSmashMovement: @ 81B0F0C
- move LAST_TALKED, RockSmashMovement
- waitmove 0
- disappear LAST_TALKED
- specialval RESULT, sub_810F5BC
+ applymovement LAST_TALKED, RockSmashMovement
+ waitmovement 0
+ removeobject LAST_TALKED
+ specialvar RESULT, sub_810F5BC
compare RESULT, 1
- jumpeq DoRockSmashMovement_Done
- special RockSmashWildEncounter
+ goto_if_eq DoRockSmashMovement_Done
+ special ScrSpecial_RockSmashWildEncounter
compare RESULT, 0
- jumpeq DoRockSmashMovement_Done
+ goto_if_eq DoRockSmashMovement_Done
waitstate
releaseall
end
@@ -111,7 +111,7 @@ CannotUseRockSmash: @ 81B0F3E
end
RockSmash_ChoseNo: @ 81B0F48
- closebutton
+ closemessage
releaseall
end
@@ -123,30 +123,30 @@ CannotUseRockSmashText: @ 81B0F90
.string "It’s a rugged rock, but a POKéMON\n"
.string "may be able to smash it.$"
-PushableBoulderScript:: @ 81B0FCB
+S_PushableBoulder:: @ 81B0FCB
lockall
checkflag 2058
- jumpif 0, CannotUseStrength
+ goto_if 0, CannotUseStrength
checkflag 2089
- jumpeq AlreadyUsedStrength
- checkattack 70
+ goto_if_eq AlreadyUsedStrength
+ checkpokemove 70
compare RESULT, 6
- jumpeq CannotUseStrength
- setanimation 0, RESULT
+ goto_if_eq CannotUseStrength
+ setfieldeffect 0, RESULT
msgbox UseStrengthPromptText, 5
compare RESULT, 0
- jumpeq Strength_ChoseNo
- closebutton
- doanimation 40
+ goto_if_eq Strength_ChoseNo
+ closemessage
+ dofieldeffect 40
waitstate
- jump UsedStrength
+ goto UsedStrength
end
-UseStrengthScript:: @ 81B100E
+S_UseStrength:: @ 81B100E
lockall
- doanimation 40
+ dofieldeffect 40
waitstate
- jump UsedStrength
+ goto UsedStrength
end
UsedStrength: @ 81B1019
@@ -166,7 +166,7 @@ AlreadyUsedStrength: @ 81B1030
end
Strength_ChoseNo: @ 81B103A
- closebutton
+ closemessage
releaseall
end
@@ -188,21 +188,21 @@ AlreadyUsedStrengthText: @ 81B1127
.string "STRENGTH made it possible to move\n"
.string "boulders around.$"
-UseWaterfallScript:: @ 81B115A
+S_UseWaterfall:: @ 81B115A
lockall
- checkattack MOVE_WATERFALL
+ checkpokemove MOVE_WATERFALL
compare RESULT, 6
- jumpeq Waterfall_NoMonKnows
- bufferpartypoke 0, RESULT
- setanimation 0, RESULT
+ goto_if_eq Waterfall_NoMonKnows
+ getpartypokename 0, RESULT
+ setfieldeffect 0, RESULT
msgbox UseWaterfallPromptText, 5
compare RESULT, 0
- jumpeq Waterfall_Done
+ goto_if_eq Waterfall_Done
msgbox UsedWaterfallText, 4
- doanimation 43
- jump Waterfall_Done
+ dofieldeffect 43
+ goto Waterfall_Done
-CannotUseWaterfallScript:: @ 81B1194
+S_CannotUseWaterfall:: @ 81B1194
lockall
Waterfall_NoMonKnows: @ 81B1195
msgbox CannotUseWaterfallText, 4
@@ -223,18 +223,18 @@ UsedWaterfallText: @ 81B120D
UseDiveScript:: @ 81B1220
lockall
- checkattack MOVE_DIVE
+ checkpokemove MOVE_DIVE
compare RESULT, 6
- jumpeq CannotUseDive
- bufferpartypoke 0, RESULT
- setanimation 0, RESULT
- setanimation 1, 1
+ goto_if_eq CannotUseDive
+ getpartypokename 0, RESULT
+ setfieldeffect 0, RESULT
+ setfieldeffect 1, 1
msgbox UseDivePromptText, 5
compare RESULT, 0
- jumpeq Dive_Done
+ goto_if_eq Dive_Done
msgbox UsedDiveText, 4
- doanimation 44
- jump Dive_Done
+ dofieldeffect 44
+ goto Dive_Done
lockall
CannotUseDive: @ 81B125F
@@ -244,25 +244,25 @@ Dive_Done: @ 81B1267
releaseall
end
-UnderwaterUseDiveScript:: @ 81B1269
+S_UseDiveUnderwater:: @ 81B1269
lockall
- checkattack MOVE_DIVE
+ checkpokemove MOVE_DIVE
compare RESULT, 6
- jumpeq UnderwaterCannotUseDive
- bufferpartypoke 0, RESULT
- setanimation 0, RESULT
- setanimation 1, 1
+ goto_if_eq UnderwaterCannotUseDive
+ getpartypokename 0, RESULT
+ setfieldeffect 0, RESULT
+ setfieldeffect 1, 1
msgbox UnderwaterUseDivePromptText, 5
compare RESULT, 0
- jumpeq UnderwaterDive_Done
+ goto_if_eq UnderwaterDive_Done
msgbox UsedDiveText, 4
- doanimation 44
- jump UnderwaterDive_Done
+ dofieldeffect 44
+ goto UnderwaterDive_Done
UnderwaterCannotUseDive: @ 81B12A7
lockall
msgbox UnderwaterCannotUseDiveText, 4
- jump UnderwaterDive_Done
+ goto UnderwaterDive_Done
@ not used
SurfacingBlocked: @ 81B12B5
diff --git a/data/hall_of_fame.s b/data/hall_of_fame.s
deleted file mode 100644
index 0795e7389..000000000
--- a/data/hall_of_fame.s
+++ /dev/null
@@ -1,230 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_0840B514:: @ 840B514
- obj_tiles gContestConfetti_Gfx, 0x220, 1001
- .space 8
-
-gUnknown_0840B524:: @ 840B524
- obj_pal gContestConfetti_Pal, 1001
- .space 8
-
- .align 2
-gUnknown_0840B534:: @ 840B534
- .2byte 120,210,120, 40
- .2byte 326,220, 56, 40
- .2byte -86,220,184, 40
- .2byte 120,-62,120, 88
- .2byte -25,-62,200, 88
- .2byte 265,-62, 40, 88
-
- .align 2
-gUnknown_0840B564:: @ 840B564
- .2byte 120,214,120, 64
- .2byte 281,214, 56, 64
- .2byte -41,214,184, 64
-
- .align 2
-gUnknown_0840B57C:: @ 840B57C
- .2byte 1002
- .2byte 1002
- .space 0x10
-
-@ unused data?
- .byte 2, 1, 3, 6, 4, 5
-
- .align 2
-gOamData_840B598:: @ 840B598
- .2byte 0x0000
- .2byte 0xC000
- .2byte 0x0000
-
- .align 2
-gUnknown_0840B5A0:: @ 840B5A0
- .4byte 0x02008000
- .4byte 0x0200A000
- .4byte 0x0200C000
- .4byte 0x0200E000
- .4byte 0x02010000
- .4byte 0x02014000
- .4byte 0x02018000
-
- .align 2
-gSpriteImageTable_840B5BC:: @ 840B5BC
- obj_frame_tiles 0x02008000, 0x800
- obj_frame_tiles 0x02008800, 0x800
- obj_frame_tiles 0x02009000, 0x800
- obj_frame_tiles 0x02009800, 0x800
-
- .align 2
-gSpriteImageTable_840B5DC:: @ 840B5DC
- obj_frame_tiles 0x0200A000, 0x800
- obj_frame_tiles 0x0200A800, 0x800
- obj_frame_tiles 0x0200B000, 0x800
- obj_frame_tiles 0x0200B800, 0x800
-
- .align 2
-gSpriteImageTable_840B5FC:: @ 840B5FC
- obj_frame_tiles 0x0200C000, 0x800
- obj_frame_tiles 0x0200C800, 0x800
- obj_frame_tiles 0x0200D000, 0x800
- obj_frame_tiles 0x0200D800, 0x800
-
- .align 2
-gSpriteImageTable_840B61C:: @ 840B61C
- obj_frame_tiles 0x0200E000, 0x800
- obj_frame_tiles 0x0200E800, 0x800
- obj_frame_tiles 0x0200F000, 0x800
- obj_frame_tiles 0x0200F800, 0x800
-
- .align 2
-gSpriteImageTable_840B63C:: @ 840B63C
- obj_frame_tiles 0x02010000, 0x800
- obj_frame_tiles 0x02010800, 0x800
- obj_frame_tiles 0x02011000, 0x800
- obj_frame_tiles 0x02011800, 0x800
-
- .align 2
-gSpriteImageTable_840B65C:: @ 840B65C
- obj_frame_tiles 0x02014000, 0x800
- obj_frame_tiles 0x02014800, 0x800
- obj_frame_tiles 0x02015000, 0x800
- obj_frame_tiles 0x02015800, 0x800
-
- .align 2
-gSpriteImageTable_840B67C:: @ 840B67C
- obj_frame_tiles 0x02018000, 0x800
- obj_frame_tiles 0x02018800, 0x800
- obj_frame_tiles 0x02019000, 0x800
- obj_frame_tiles 0x02019800, 0x800
-
- .align 2
-gUnknown_0840B69C:: @ 840B69C
- .4byte gSpriteImageTable_840B5BC
- .4byte gSpriteImageTable_840B5DC
- .4byte gSpriteImageTable_840B5FC
- .4byte gSpriteImageTable_840B61C
- .4byte gSpriteImageTable_840B63C
- .4byte gSpriteImageTable_840B65C
- .4byte gSpriteImageTable_840B67C
-
-gUnknown_0840B6B8:: @ 840B6B8
- spr_template -1, -1, gOamData_840B598, NULL, gSpriteImageTable_840B5BC, gDummySpriteAffineAnimTable, nullsub_81
-
- .align 2
-gOamData_840B6D0:: @ 840B6D0
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_840B6D8:: @ 840B6D8
- obj_image_anim_frame 0, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B6E0:: @ 840B6E0
- obj_image_anim_frame 1, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B6E8:: @ 840B6E8
- obj_image_anim_frame 2, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B6F0:: @ 840B6F0
- obj_image_anim_frame 3, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B6F8:: @ 840B6F8
- obj_image_anim_frame 4, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B700:: @ 840B700
- obj_image_anim_frame 5, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B708:: @ 840B708
- obj_image_anim_frame 6, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B710:: @ 840B710
- obj_image_anim_frame 7, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B718:: @ 840B718
- obj_image_anim_frame 8, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B720:: @ 840B720
- obj_image_anim_frame 9, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B728:: @ 840B728
- obj_image_anim_frame 10, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B730:: @ 840B730
- obj_image_anim_frame 11, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B738:: @ 840B738
- obj_image_anim_frame 12, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B740:: @ 840B740
- obj_image_anim_frame 13, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B748:: @ 840B748
- obj_image_anim_frame 14, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B750:: @ 840B750
- obj_image_anim_frame 15, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_840B758:: @ 840B758
- obj_image_anim_frame 16, 30
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_840B760:: @ 840B760
- .4byte gSpriteAnim_840B6D8
- .4byte gSpriteAnim_840B6E0
- .4byte gSpriteAnim_840B6E8
- .4byte gSpriteAnim_840B6F0
- .4byte gSpriteAnim_840B6F8
- .4byte gSpriteAnim_840B700
- .4byte gSpriteAnim_840B708
- .4byte gSpriteAnim_840B710
- .4byte gSpriteAnim_840B718
- .4byte gSpriteAnim_840B720
- .4byte gSpriteAnim_840B728
- .4byte gSpriteAnim_840B730
- .4byte gSpriteAnim_840B738
- .4byte gSpriteAnim_840B740
- .4byte gSpriteAnim_840B748
- .4byte gSpriteAnim_840B750
- .4byte gSpriteAnim_840B758
-
- .align 2
-gSpriteTemplate_840B7A4:: @ 840B7A4
- spr_template 1001, 1001, gOamData_840B6D0, gSpriteAnimTable_840B760, NULL, gDummySpriteAffineAnimTable, sub_814386C
diff --git a/data/ingame_trades.inc b/data/ingame_trades.inc
deleted file mode 100644
index f5258e26c..000000000
--- a/data/ingame_trades.inc
+++ /dev/null
@@ -1,108 +0,0 @@
- .align 2
-gIngameTrades:: @ 8215AC4
- .string "MAKIT$", 11 @ nickname
- .space 1
- .2byte SPECIES_MAKUHITA @ NPC mon species
- .byte 5 @ HP IV
- .byte 5 @ attack IV
- .byte 4 @ defense IV
- .byte 4 @ speed IV
- .byte 4 @ sp. attack IV
- .byte 4 @ sp. defense IV
- .byte TRUE @ second ability
- .space 3
- .4byte 49562 @ OT ID
- .byte 5 @ cool
- .byte 5 @ beauty
- .byte 5 @ cute
- .byte 5 @ smart
- .byte 30 @ tough
- .space 3
- .4byte 0x9C40 @ personality value
- .2byte ITEM_X_ATTACK @ held item
- .byte -1 @ mail num
- .string "ELYSSA$", 11 @ OT name
- .byte MALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_SLAKOTH @ player mon species
- .space 2
-
- .string "SKITIT$", 11 @ nickname
- .space 1
- .2byte SPECIES_SKITTY @ NPC mon species
- .byte 5 @ HP IV
- .byte 4 @ attack IV
- .byte 4 @ defense IV
- .byte 5 @ speed IV
- .byte 4 @ sp. attack IV
- .byte 4 @ sp. defense IV
- .byte FALSE @ second ability
- .space 3
- .4byte 2259 @ OT ID
- .byte 5 @ cool
- .byte 5 @ beauty
- .byte 30 @ cute
- .byte 5 @ smart
- .byte 5 @ tough
- .space 3
- .4byte 0x498A2E17 @ personality value
- .2byte ITEM_GLITTER_MAIL @ held item
- .byte 0 @ mail num
- .string "DARRELL$", 11 @ OT name
- .byte FEMALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_PIKACHU @ player mon species
- .space 2
-
- .string "COROSO$", 11 @ nickname
- .space 1
- .2byte SPECIES_CORSOLA @ NPC mon species
- .byte 4 @ HP IV
- .byte 4 @ attack IV
- .byte 5 @ defense IV
- .byte 4 @ speed IV
- .byte 4 @ sp. attack IV
- .byte 5 @ sp. defense IV
- .byte TRUE @ second ability
- .space 3
- .4byte 50183 @ OT ID
- .byte 5 @ cool
- .byte 30 @ beauty
- .byte 5 @ cute
- .byte 5 @ smart
- .byte 5 @ tough
- .space 3
- .4byte 0x4C970B7F @ personality value
- .2byte ITEM_TROPIC_MAIL @ held item
- .byte 1 @ mail num
- .string "LANE$", 11 @ OT name
- .byte FEMALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_BELLOSSOM @ player mon species
- .space 2
-
- .align 1
-gIngameTradeMail:: @ 8215B78
-@ 0
- ec_pokemon1 PIKACHU
- ec_word THANK_YOU
- ec_word EXCL
- ec_word MY
- ec_pokemon1 SKITTY
- ec_word EATS
- ec_word A_LOT
- ec_word NOW
- ec_word EXCL
- .2byte 0
-
-@ 1
- ec_word I
- ec_word WANT
- ec_word TO
- ec_word SEE
- ec_word A
- ec_move2 PETAL_DANCE
- ec_word IT_S
- ec_word SO
- ec_word PRETTY
- .2byte 0
diff --git a/data/intro_credits_graphics.s b/data/intro_credits_graphics.s
index 82931f6ee..8c096e1cd 100644
--- a/data/intro_credits_graphics.s
+++ b/data/intro_credits_graphics.s
@@ -338,11 +338,11 @@ gSpriteAnimTable_8416D28:: @ 8416D28
.4byte gSpriteAnim_8416D14
.align 2
-gSpriteTemplate_8416D2C:: @ 8416D2C
+gSpriteTemplate_Brendan:: @ 8416D2C
spr_template 1001, 1002, gOamData_8416D0C, gSpriteAnimTable_8416D28, NULL, gDummySpriteAffineAnimTable, sub_81492A0
.align 2
-gSpriteTemplate_8416D44:: @ 8416D44
+gSpriteTemplate_May:: @ 8416D44
spr_template 1001, 1003, gOamData_8416D0C, gSpriteAnimTable_8416D28, NULL, gDummySpriteAffineAnimTable, sub_81492A0
.align 2
diff --git a/data/learn_move.s b/data/learn_move.s
deleted file mode 100644
index 369fbfdf0..000000000
--- a/data/learn_move.s
+++ /dev/null
@@ -1,150 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gDexArrows_Pal::
- .incbin "graphics/pokedex/arrows.gbapal"
-
- .align 2
-gDexArrows_Gfx::
- .incbin "graphics/pokedex/arrows.4bpp"
-
-gUnknown_08402CF8:: @ 8402CF8
- .byte 0, 0, 9, 13
- .byte 10, 0, 29, 7
- .byte 2, 14, 27, 19
- .byte 10, 8, 29, 13
-
-gUnknown_08402D08:: @ 8402D08
- .4byte OtherText_Battle
- .byte 1, 1, 0, 0
- .4byte OtherText_Power
- .byte 1, 4, 1, 0
- .4byte OtherText_Accuracy
- .byte 1, 9, 2, 0
- .space 8
-
- .4byte OtherText_Contest
- .byte 1, 1, 0, 0
- .4byte OtherText_Appeal
- .byte 1, 4, 1, 0
- .4byte OtherText_Jam
- .byte 1, 9, 2, 0
- .space 8
-
- .4byte 0xFF00FFEF
- .4byte gTileBuffer
-
- .align 2
-gOamData_8402D50:: @ 8402D50
- .2byte 0x0000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gOamData_8402D58:: @ 8402D58
- .2byte 0x8000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gOamData_8402D60:: @ 8402D60
- .2byte 0x4000
- .2byte 0x0000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_8402D68:: @ 8402D68
- obj_image_anim_frame 2, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8402D70:: @ 8402D70
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8402D78:: @ 8402D78
- .4byte gSpriteAnim_8402D68
- .4byte gSpriteAnim_8402D70
-
- .align 2
-gUnknown_08402D80:: @ 8402D80
- obj_tiles gDexArrows_Gfx, 384, 0x1595
-
- .align 2
-gUnknown_08402D88:: @ 8402D88
- obj_pal gDexArrows_Pal, 0x1596
-
- .align 2
-gSpriteTemplate_8402D90:: @ 8402D90
- spr_template 5525, 5526, gOamData_8402D58, gSpriteAnimTable_8402D78, NULL, gDummySpriteAffineAnimTable, sub_8133300
-
- .align 2
-gSpriteAnim_8402DA8:: @ 8402DA8
- obj_image_anim_frame 4, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8402DB0:: @ 8402DB0
- obj_image_anim_frame 6, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8402DB8:: @ 8402DB8
- .4byte gSpriteAnim_8402DA8
- .4byte gSpriteAnim_8402DB0
-
- .align 2
-gSpriteTemplate_8402DC0:: @ 8402DC0
- spr_template 5525, 5526, gOamData_8402D60, gSpriteAnimTable_8402DB8, NULL, gDummySpriteAffineAnimTable, sub_8133300
-
- .align 2
-gSpriteAnim_8402DD8:: @ 8402DD8
- obj_image_anim_frame 8, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8402DE0:: @ 8402DE0
- obj_image_anim_frame 9, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8402DE8:: @ 8402DE8
- obj_image_anim_frame 10, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_8402DF0:: @ 8402DF0
- obj_image_anim_frame 11, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8402DF8:: @ 8402DF8
- .4byte gSpriteAnim_8402DD8
- .4byte gSpriteAnim_8402DE0
- .4byte gSpriteAnim_8402DE8
- .4byte gSpriteAnim_8402DF0
-
- .align 2
-gSpriteTemplate_8402E08:: @ 8402E08
- spr_template 5525, 5526, gOamData_8402D50, gSpriteAnimTable_8402DF8, NULL, gDummySpriteAffineAnimTable, sub_8133300
-
- .string "あきと$" @ programmer Akito Mori?
-
-gUnknown_08402E24:: @ 8402E24
- .byte 11, 1, 1
- .byte 3, 6, 2
- .byte 24, 1, 3
- .byte 3, 11, 4
- .byte 5, 4, 5
- .byte 3, 6, 6
- .byte 3, 11, 7
-
-gUnknown_08402E39:: @ 8402E39
- .byte 0, 1, 2, 3
-
-gUnknown_08402E3D:: @ 8402E3D
- .byte 4, 5, 6
diff --git a/data/maps/events/FieryPath.inc b/data/maps/events/FieryPath.inc
index 01b7b3efe..a4ac688d8 100644
--- a/data/maps/events/FieryPath.inc
+++ b/data/maps/events/FieryPath.inc
@@ -1,11 +1,11 @@
FieryPath_MapObjects:: @ 838C718
object_event 1, MAP_OBJ_GFX_ITEM_BALL, 0, 8, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, FieryPath_EventScript_1B17EE, 1091, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 10, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 17, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 23, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0
- object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 24, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 10, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 17, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 23, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0
+ object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 24, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0
object_event 8, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 32, 0, 3, 1, 17, 0, 0, 0, 0, 0, FieryPath_EventScript_1B17E1, 1111, 0, 0
FieryPath_MapWarps:: @ 838C7D8
diff --git a/data/maps/events/GraniteCave_B2F.inc b/data/maps/events/GraniteCave_B2F.inc
index 49c0bace0..158577482 100644
--- a/data/maps/events/GraniteCave_B2F.inc
+++ b/data/maps/events/GraniteCave_B2F.inc
@@ -1,13 +1,13 @@
GraniteCave_B2F_MapObjects:: @ 838BFEC
object_event 1, MAP_OBJ_GFX_ITEM_BALL, 0, 4, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, GraniteCave_B2F_EventScript_1B17BA, 1053, 0, 0
object_event 2, MAP_OBJ_GFX_ITEM_BALL, 0, 29, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, GraniteCave_B2F_EventScript_1B17C7, 1054, 0, 0
- object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0
- object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0
- object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 16, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0
- object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0
- object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0
- object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 6, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0
- object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 23, 0, 0
+ object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0
+ object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0
+ object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 16, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0
+ object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0
+ object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0
+ object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 6, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0
+ object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 23, 0, 0
GraniteCave_B2F_MapWarps:: @ 838C0C4
warp_def 29, 13, 3, 2, GraniteCave_B1F
diff --git a/data/maps/events/PetalburgWoods.inc b/data/maps/events/PetalburgWoods.inc
index 0ec69c1a2..cb0ff7ca1 100644
--- a/data/maps/events/PetalburgWoods.inc
+++ b/data/maps/events/PetalburgWoods.inc
@@ -1,6 +1,6 @@
PetalburgWoods_MapObjects:: @ 838C14C
- object_event 1, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
- object_event 2, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
+ object_event 1, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
+ object_event 2, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 19, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
object_event 3, 241, 0, 26, 0, 17, 0, 3, 10, 0, 0, 0, 0, 0, 0, 0x0, 725, 0, 0
object_event 4, MAP_OBJ_GFX_MAN_2, 0, 26, 0, 20, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0x0, 724, 0, 0
object_event 5, MAP_OBJ_GFX_ITEM_BALL, 0, 45, 0, 7, 0, 3, 8, 0, 0, 0, 0, 0, 0, PetalburgWoods_EventScript_1B175F, 1056, 0, 0
diff --git a/data/maps/events/Route102.inc b/data/maps/events/Route102.inc
index 9cf97de4b..7ffa0e191 100644
--- a/data/maps/events/Route102.inc
+++ b/data/maps/events/Route102.inc
@@ -5,8 +5,8 @@ Route102_MapObjects:: @ 83811FC
object_event 4, MAP_OBJ_GFX_LASS, 0, 8, 0, 7, 0, 3, 18, 0, 0, 1, 0, 3, 0, Route102_EventScript_14EB53, 0, 0, 0
object_event 5, MAP_OBJ_GFX_BOY_1, 0, 37, 0, 4, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route102_EventScript_14EAF5, 0, 0, 0
object_event 6, MAP_OBJ_GFX_ITEM_BALL, 0, 11, 0, 15, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route102_EventScript_1B1439, 1000, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 2, 0, 3, 12, 0, 0, 0, 0, 2, 0, BerryTreeScript, 0, 0, 0
- object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 2, 0, 3, 12, 0, 0, 0, 0, 1, 0, BerryTreeScript, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 2, 0, 3, 12, 0, 0, 0, 0, 2, 0, S_BerryTree, 0, 0, 0
+ object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 2, 0, 3, 12, 0, 0, 0, 0, 1, 0, S_BerryTree, 0, 0, 0
object_event 9, MAP_OBJ_GFX_YOUNGSTER, 0, 19, 0, 4, 0, 3, 8, 17, 0, 1, 0, 3, 0, Route102_EventScript_14EB6A, 0, 0, 0
Route102_MapBGEvents:: @ 83812D4
diff --git a/data/maps/events/Route103.inc b/data/maps/events/Route103.inc
index 01640eb65..462fe1a3b 100644
--- a/data/maps/events/Route103.inc
+++ b/data/maps/events/Route103.inc
@@ -5,15 +5,15 @@ Route103_MapObjects:: @ 8381300
object_event 4, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 65, 0, 11, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route103_EventScript_14EDF1, 0, 0, 0
object_event 5, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 64, 0, 11, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route103_EventScript_14EDAB, 0, 0, 0
object_event 6, MAP_OBJ_GFX_FISHERMAN, 0, 50, 0, 8, 0, 3, 26, 16, 0, 1, 0, 3, 0, Route103_EventScript_14EE37, 0, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 58, 0, 5, 0, 3, 12, 0, 0, 0, 0, 5, 0, BerryTreeScript, 0, 0, 0
- object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 59, 0, 5, 0, 3, 12, 0, 0, 0, 0, 6, 0, BerryTreeScript, 0, 0, 0
- object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 60, 0, 5, 0, 3, 12, 0, 0, 0, 0, 7, 0, BerryTreeScript, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 58, 0, 5, 0, 3, 12, 0, 0, 0, 0, 5, 0, S_BerryTree, 0, 0, 0
+ object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 59, 0, 5, 0, 3, 12, 0, 0, 0, 0, 6, 0, S_BerryTree, 0, 0, 0
+ object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 60, 0, 5, 0, 3, 12, 0, 0, 0, 0, 7, 0, S_BerryTree, 0, 0, 0
object_event 10, MAP_OBJ_GFX_BOY_1, 0, 20, 0, 10, 0, 3, 2, 33, 0, 0, 0, 0, 0, Route103_EventScript_14ED79, 0, 0, 0
object_event 11, MAP_OBJ_GFX_PROF_BIRCH, 0, 7, 0, 3, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route103_EventScript_1A037F, 898, 0, 0
object_event 12, MAP_OBJ_GFX_MAN_3, 0, 56, 0, 12, 0, 3, 10, 0, 0, 1, 0, 5, 0, Route103_EventScript_14EE4E, 0, 0, 0
object_event 13, MAP_OBJ_GFX_ITEM_BALL, 0, 63, 0, 8, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route103_EventScript_1B1446, 1114, 0, 0
- object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 67, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
- object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 69, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0
+ object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 67, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
+ object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 69, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0
Route103_MapBGEvents:: @ 8381468
bg_event 11, 9, 0, 0, 0, Route103_EventScript_14ED8B
diff --git a/data/maps/events/Route104.inc b/data/maps/events/Route104.inc
index da4b5ffc1..b4c8a2834 100644
--- a/data/maps/events/Route104.inc
+++ b/data/maps/events/Route104.inc
@@ -8,17 +8,17 @@ Route104_MapObjects:: @ 8381488
object_event 7, MAP_OBJ_GFX_MR_BRINEYS_BOAT, 0, 12, 0, 54, 0, 1, 7, 0, 0, 0, 0, 0, 0, 0x0, 742, 0, 0
object_event 8, MAP_OBJ_GFX_OLD_MAN_1, 0, 12, 0, 51, 0, 4, 10, 0, 0, 0, 0, 0, 0, 0x0, 738, 0, 0
object_event 9, MAP_OBJ_GFX_FISHERMAN, 0, 29, 0, 8, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route104_EventScript_14F172, 0, 0, 0
- object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 6, 0, 3, 12, 0, 0, 0, 0, 8, 0, BerryTreeScript, 0, 0, 0
- object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 6, 0, 3, 12, 0, 0, 0, 0, 9, 0, BerryTreeScript, 0, 0, 0
- object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 6, 0, 3, 12, 0, 0, 0, 0, 10, 0, BerryTreeScript, 0, 0, 0
- object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 41, 0, 3, 12, 0, 0, 0, 0, 11, 0, BerryTreeScript, 0, 0, 0
- object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 41, 0, 3, 12, 0, 0, 0, 0, 12, 0, BerryTreeScript, 0, 0, 0
- object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 41, 0, 3, 12, 0, 0, 0, 0, 13, 0, BerryTreeScript, 0, 0, 0
+ object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 6, 0, 3, 12, 0, 0, 0, 0, 8, 0, S_BerryTree, 0, 0, 0
+ object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 6, 0, 3, 12, 0, 0, 0, 0, 9, 0, S_BerryTree, 0, 0, 0
+ object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 6, 0, 3, 12, 0, 0, 0, 0, 10, 0, S_BerryTree, 0, 0, 0
+ object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 41, 0, 3, 12, 0, 0, 0, 0, 11, 0, S_BerryTree, 0, 0, 0
+ object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 41, 0, 3, 12, 0, 0, 0, 0, 12, 0, S_BerryTree, 0, 0, 0
+ object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 41, 0, 3, 12, 0, 0, 0, 0, 13, 0, S_BerryTree, 0, 0, 0
object_event 16, MAP_OBJ_GFX_OLD_WOMAN_1, 0, 37, 0, 8, 0, 3, 9, 17, 0, 0, 0, 0, 0, Route104_EventScript_14EEC8, 0, 0, 0
- object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 22, 0, 3, 12, 0, 0, 0, 0, 3, 0, BerryTreeScript, 0, 0, 0
- object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 23, 0, 3, 12, 0, 0, 0, 0, 4, 0, BerryTreeScript, 0, 0, 0
- object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 24, 0, 3, 12, 0, 0, 0, 0, 75, 0, BerryTreeScript, 0, 0, 0
- object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 25, 0, 3, 12, 0, 0, 0, 0, 76, 0, BerryTreeScript, 0, 0, 0
+ object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 22, 0, 3, 12, 0, 0, 0, 0, 3, 0, S_BerryTree, 0, 0, 0
+ object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 23, 0, 3, 12, 0, 0, 0, 0, 4, 0, S_BerryTree, 0, 0, 0
+ object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 24, 0, 3, 12, 0, 0, 0, 0, 75, 0, S_BerryTree, 0, 0, 0
+ object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 3, 0, 25, 0, 3, 12, 0, 0, 0, 0, 76, 0, S_BerryTree, 0, 0, 0
object_event 21, MAP_OBJ_GFX_ITEM_BALL, 0, 39, 0, 15, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route104_EventScript_1B1453, 1002, 0, 0
object_event 22, MAP_OBJ_GFX_WOMAN_7, 0, 8, 0, 19, 0, 3, 5, 1, 0, 0, 0, 0, 0, Route104_EventScript_14EF09, 906, 0, 0
object_event 23, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 27, 0, 15, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route104_EventScript_14F25A, 0, 0, 0
@@ -28,7 +28,7 @@ Route104_MapObjects:: @ 8381488
object_event 27, MAP_OBJ_GFX_ITEM_BALL, 0, 29, 0, 53, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_1B1460, 1057, 0, 0
object_event 28, MAP_OBJ_GFX_YOUNGSTER, 0, 18, 0, 67, 0, 3, 46, 101, 0, 1, 0, 2, 0, Route104_EventScript_14F189, 0, 0, 0
object_event 29, MAP_OBJ_GFX_ITEM_BALL, 0, 37, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_1B146D, 1115, 0, 0
- object_event 30, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
+ object_event 30, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 22, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
object_event 31, MAP_OBJ_GFX_ITEM_BALL, 0, 5, 0, 8, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_1B147A, 1135, 0, 0
object_event 32, MAP_OBJ_GFX_BOY_2, 0, 5, 0, 26, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route104_EventScript_14EF93, 0, 0, 0
diff --git a/data/maps/events/Route110.inc b/data/maps/events/Route110.inc
index 4ece25549..3db4ce8e8 100644
--- a/data/maps/events/Route110.inc
+++ b/data/maps/events/Route110.inc
@@ -14,9 +14,9 @@ Route110_MapObjects:: @ 8381D58
object_event 13, MAP_OBJ_GFX_LASS, 0, 33, 0, 15, 0, 3, 9, 0, 0, 1, 0, 1, 0, Route110_EventScript_14FAA5, 0, 0, 0
object_event 14, MAP_OBJ_GFX_MANIAC, 0, 23, 0, 40, 0, 3, 20, 0, 0, 1, 0, 3, 0, Route110_EventScript_14FABC, 0, 0, 0
object_event 15, MAP_OBJ_GFX_FISHERMAN, 0, 10, 0, 19, 0, 3, 8, 0, 0, 1, 0, 1, 0, Route110_EventScript_14FAFA, 0, 0, 0
- object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 11, 0, 3, 12, 0, 0, 0, 0, 16, 0, BerryTreeScript, 0, 0, 0
- object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 11, 0, 3, 12, 0, 0, 0, 0, 17, 0, BerryTreeScript, 0, 0, 0
- object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 11, 0, 3, 12, 0, 0, 0, 0, 18, 0, BerryTreeScript, 0, 0, 0
+ object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 11, 0, 3, 12, 0, 0, 0, 0, 16, 0, S_BerryTree, 0, 0, 0
+ object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 11, 0, 3, 12, 0, 0, 0, 0, 17, 0, S_BerryTree, 0, 0, 0
+ object_event 18, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 11, 0, 3, 12, 0, 0, 0, 0, 18, 0, S_BerryTree, 0, 0, 0
object_event 19, MAP_OBJ_GFX_ITEM_BALL, 0, 30, 0, 69, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_EventScript_1B14BB, 1007, 0, 0
object_event 20, MAP_OBJ_GFX_ITEM_BALL, 0, 26, 0, 47, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_EventScript_1B14AE, 1006, 0, 0
object_event 21, MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, 0, 27, 0, 92, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route110_EventScript_14FA53, 0, 0, 0
diff --git a/data/maps/events/Route110_TrickHousePuzzle1.inc b/data/maps/events/Route110_TrickHousePuzzle1.inc
index 7e282f0e8..3660e3c3f 100644
--- a/data/maps/events/Route110_TrickHousePuzzle1.inc
+++ b/data/maps/events/Route110_TrickHousePuzzle1.inc
@@ -2,22 +2,22 @@ Route110_TrickHousePuzzle1_MapObjects:: @ 839225C
object_event 1, MAP_OBJ_GFX_LASS, 0, 13, 0, 21, 0, 3, 9, 0, 0, 1, 0, 5, 0, Route110_TrickHousePuzzle1_EventScript_161D31, 0, 0, 0
object_event 2, MAP_OBJ_GFX_YOUNGSTER, 0, 13, 0, 7, 0, 3, 8, 0, 0, 1, 0, 2, 0, Route110_TrickHousePuzzle1_EventScript_161D48, 0, 0, 0
object_event 3, MAP_OBJ_GFX_LASS, 0, 3, 0, 8, 0, 3, 9, 0, 0, 1, 0, 3, 0, Route110_TrickHousePuzzle1_EventScript_161D5F, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0
- object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 7, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
- object_event 6, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
- object_event 7, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 10, 0, 16, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 20, 0, 0
- object_event 8, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 23, 0, 0
- object_event 9, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 22, 0, 0
- object_event 10, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 21, 0, 0
- object_event 11, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 25, 0, 0
- object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 24, 0, 0
- object_event 13, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 9, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 26, 0, 0
- object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 28, 0, 0
- object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 27, 0, 0
- object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 29, 0, 0
- object_event 17, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 11, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 30, 0, 0
+ object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0
+ object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 7, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
+ object_event 6, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
+ object_event 7, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 10, 0, 16, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 20, 0, 0
+ object_event 8, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 12, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 23, 0, 0
+ object_event 9, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 3, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 22, 0, 0
+ object_event 10, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 21, 0, 0
+ object_event 11, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 25, 0, 0
+ object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 24, 0, 0
+ object_event 13, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 9, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 26, 0, 0
+ object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 2, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 28, 0, 0
+ object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 0, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 27, 0, 0
+ object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 29, 0, 0
+ object_event 17, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 11, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 30, 0, 0
object_event 18, MAP_OBJ_GFX_ITEM_BALL, 0, 9, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle1_EventScript_1B1A51, 1060, 0, 0
- object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 14, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 31, 0, 0
+ object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 14, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 31, 0, 0
Route110_TrickHousePuzzle1_MapWarps:: @ 8392424
warp_def 0, 21, 3, 2, Route110_TrickHouseEntrance
diff --git a/data/maps/events/Route110_TrickHousePuzzle3.inc b/data/maps/events/Route110_TrickHousePuzzle3.inc
index b7a902a54..abccae1d4 100644
--- a/data/maps/events/Route110_TrickHousePuzzle3.inc
+++ b/data/maps/events/Route110_TrickHousePuzzle3.inc
@@ -2,14 +2,14 @@ Route110_TrickHousePuzzle3_MapObjects:: @ 839254C
object_event 1, MAP_OBJ_GFX_CAMPER, 0, 10, 0, 16, 0, 3, 8, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle3_EventScript_162708, 0, 0, 0
object_event 2, MAP_OBJ_GFX_PICNICKER, 0, 1, 0, 13, 0, 3, 10, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle3_EventScript_16271F, 0, 0, 0
object_event 3, MAP_OBJ_GFX_HIKER, 0, 11, 0, 4, 0, 3, 8, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle3_EventScript_162736, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0
- object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0
- object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0
- object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0
+ object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 4, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0
+ object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0
+ object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0
+ object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0
object_event 8, MAP_OBJ_GFX_ITEM_BALL, 0, 0, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle3_EventScript_1B1A85, 1064, 0, 0
object_event 9, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle3_EventScript_1B1A78, 1063, 0, 0
- object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 20, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0
- object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0
+ object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 1, 0, 20, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0
+ object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 2, 0, 21, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0
Route110_TrickHousePuzzle3_MapWarps:: @ 8392654
warp_def 0, 21, 3, 2, Route110_TrickHouseEntrance
diff --git a/data/maps/events/Route110_TrickHousePuzzle4.inc b/data/maps/events/Route110_TrickHousePuzzle4.inc
index ac3e152a2..ef450800d 100644
--- a/data/maps/events/Route110_TrickHousePuzzle4.inc
+++ b/data/maps/events/Route110_TrickHousePuzzle4.inc
@@ -3,17 +3,17 @@ Route110_TrickHousePuzzle4_MapObjects:: @ 83926FC
object_event 2, MAP_OBJ_GFX_GIRL_3, 0, 10, 0, 4, 0, 3, 10, 0, 0, 1, 0, 1, 0, Route110_TrickHousePuzzle4_EventScript_162799, 0, 0, 0
object_event 3, MAP_OBJ_GFX_BLACK_BELT, 0, 7, 0, 4, 0, 3, 9, 0, 0, 1, 0, 2, 0, Route110_TrickHousePuzzle4_EventScript_162782, 0, 0, 0
object_event 4, MAP_OBJ_GFX_ITEM_BALL, 0, 4, 0, 4, 0, 0, 1, 0, 0, 0, 0, 0, 0, Route110_TrickHousePuzzle4_EventScript_1B1A92, 1065, 0, 0
- object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 13, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 2, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
- object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0
- object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0
- object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0
- object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 24, 0, 0
- object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 25, 0, 0
- object_event 14, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 26, 0, 0
- object_event 15, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 27, 0, 0
+ object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 13, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 2, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
+ object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0
+ object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0
+ object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0
+ object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 24, 0, 0
+ object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 25, 0, 0
+ object_event 14, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 26, 0, 0
+ object_event 15, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 14, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 27, 0, 0
Route110_TrickHousePuzzle4_MapWarps:: @ 8392864
warp_def 0, 21, 3, 2, Route110_TrickHouseEntrance
diff --git a/data/maps/events/Route111.inc b/data/maps/events/Route111.inc
index 9eeed5ede..e36cd7e74 100644
--- a/data/maps/events/Route111.inc
+++ b/data/maps/events/Route111.inc
@@ -4,8 +4,8 @@ Route111_MapObjects:: @ 83821A0
object_event 3, MAP_OBJ_GFX_LASS, 0, 13, 0, 113, 0, 0, 8, 1, 0, 0, 0, 0, 0, 0x0, 770, 0, 0
object_event 4, MAP_OBJ_GFX_OLD_WOMAN_1, 0, 13, 0, 113, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0x0, 771, 0, 0
object_event 5, MAP_OBJ_GFX_PICNICKER, 0, 28, 0, 51, 0, 3, 17, 0, 0, 1, 0, 3, 0, Route111_EventScript_1503BE, 0, 0, 0
- object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 5, 0, 3, 12, 0, 0, 0, 0, 19, 0, BerryTreeScript, 0, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 5, 0, 3, 12, 0, 0, 0, 0, 20, 0, BerryTreeScript, 0, 0, 0
+ object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 22, 0, 5, 0, 3, 12, 0, 0, 0, 0, 19, 0, S_BerryTree, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 23, 0, 5, 0, 3, 12, 0, 0, 0, 0, 20, 0, S_BerryTree, 0, 0, 0
object_event 8, MAP_OBJ_GFX_MAN_4, 0, 8, 0, 91, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route111_EventScript_150395, 0, 0, 0
object_event 9, MAP_OBJ_GFX_CAMPER, 0, 24, 0, 60, 0, 3, 21, 0, 0, 1, 0, 3, 0, Route111_EventScript_1503A7, 0, 0, 0
object_event 10, MAP_OBJ_GFX_HIKER, 0, 27, 0, 69, 0, 3, 50, 34, 0, 1, 0, 2, 0, Route111_EventScript_150403, 0, 0, 0
@@ -13,19 +13,19 @@ Route111_MapObjects:: @ 83821A0
object_event 12, MAP_OBJ_GFX_PICNICKER, 0, 32, 0, 72, 0, 3, 24, 0, 0, 1, 0, 3, 0, Route111_EventScript_1503EC, 0, 0, 0
object_event 13, MAP_OBJ_GFX_CAMERAMAN, 0, 14, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE442, 796, 0, 0
object_event 14, MAP_OBJ_GFX_REPORTER_F, 0, 13, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE422, 796, 0, 0
- object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 101, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0
- object_event 16, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 100, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0
+ object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 101, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0
+ object_event 16, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 100, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0
object_event 17, MAP_OBJ_GFX_GIRL_1, 0, 23, 0, 8, 0, 3, 5, 1, 0, 0, 0, 0, 0, Route111_EventScript_1500C5, 0, 0, 0
object_event 18, MAP_OBJ_GFX_ITEM_BALL, 0, 32, 0, 105, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route111_EventScript_1B14C8, 1008, 0, 0
- object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 80, 0, BerryTreeScript, 0, 0, 0
- object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 5, 0, 3, 12, 0, 0, 0, 0, 81, 0, BerryTreeScript, 0, 0, 0
+ object_event 19, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 80, 0, S_BerryTree, 0, 0, 0
+ object_event 20, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 5, 0, 3, 12, 0, 0, 0, 0, 81, 0, S_BerryTree, 0, 0, 0
object_event 21, MAP_OBJ_GFX_REPORTER_F, 0, 13, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE4E2, 799, 0, 0
object_event 22, MAP_OBJ_GFX_CAMERAMAN, 0, 14, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE502, 799, 0, 0
object_event 23, MAP_OBJ_GFX_REPORTER_F, 0, 13, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE562, 903, 0, 0
object_event 24, MAP_OBJ_GFX_CAMERAMAN, 0, 14, 0, 86, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route111_EventScript_1AE582, 903, 0, 0
object_event 25, MAP_OBJ_GFX_ITEM_BALL, 0, 12, 0, 54, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route111_EventScript_1B14D5, 1009, 0, 0
object_event 26, MAP_OBJ_GFX_ITEM_BALL, 0, 3, 0, 114, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route111_EventScript_1B14E2, 1010, 0, 0
- object_event 27, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 22, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0
+ object_event 27, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 22, 0, 21, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0
object_event 28, MAP_OBJ_GFX_PICNICKER, 0, 10, 0, 82, 0, 3, 14, 0, 0, 1, 0, 2, 0, Route111_EventScript_150458, 0, 0, 0
object_event 29, MAP_OBJ_GFX_CAMPER, 0, 11, 0, 71, 0, 3, 22, 0, 0, 1, 0, 3, 0, Route111_EventScript_150441, 0, 0, 0
object_event 30, MAP_OBJ_GFX_BLACK_BELT, 0, 32, 0, 29, 0, 3, 28, 1, 0, 1, 0, 2, 0, Route111_EventScript_15046F, 0, 0, 0
diff --git a/data/maps/events/Route112.inc b/data/maps/events/Route112.inc
index f6dfcfbe5..a4991a907 100644
--- a/data/maps/events/Route112.inc
+++ b/data/maps/events/Route112.inc
@@ -5,10 +5,10 @@ Route112_MapObjects:: @ 8382818
object_event 4, MAP_OBJ_GFX_PICNICKER, 0, 22, 0, 46, 0, 3, 23, 0, 0, 1, 0, 3, 0, Route112_EventScript_1505B5, 0, 0, 0
object_event 5, MAP_OBJ_GFX_HIKER, 0, 17, 0, 40, 0, 3, 16, 0, 0, 1, 0, 4, 0, Route112_EventScript_150560, 0, 0, 0
object_event 6, 241, 0, 27, 0, 30, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route112_EventScript_15051C, 819, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 27, 0, 6, 0, 0, 12, 0, 0, 0, 0, 24, 0, BerryTreeScript, 0, 0, 0
- object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 28, 0, 6, 0, 0, 12, 0, 0, 0, 0, 23, 0, BerryTreeScript, 0, 0, 0
- object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 6, 0, 0, 12, 0, 0, 0, 0, 22, 0, BerryTreeScript, 0, 0, 0
- object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 6, 0, 3, 12, 0, 0, 0, 0, 21, 0, BerryTreeScript, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 27, 0, 6, 0, 0, 12, 0, 0, 0, 0, 24, 0, S_BerryTree, 0, 0, 0
+ object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 28, 0, 6, 0, 0, 12, 0, 0, 0, 0, 23, 0, S_BerryTree, 0, 0, 0
+ object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 6, 0, 0, 12, 0, 0, 0, 0, 22, 0, S_BerryTree, 0, 0, 0
+ object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 6, 0, 3, 12, 0, 0, 0, 0, 21, 0, S_BerryTree, 0, 0, 0
object_event 11, MAP_OBJ_GFX_HIKER, 0, 8, 0, 50, 0, 3, 26, 48, 0, 0, 0, 0, 0, Route112_EventScript_150540, 0, 0, 0
object_event 12, MAP_OBJ_GFX_ITEM_BALL, 0, 14, 0, 43, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route112_EventScript_1B14EF, 1011, 0, 0
diff --git a/data/maps/events/Route114.inc b/data/maps/events/Route114.inc
index a2d948d33..1f4d761e3 100644
--- a/data/maps/events/Route114.inc
+++ b/data/maps/events/Route114.inc
@@ -1,25 +1,25 @@
Route114_MapObjects:: @ 8382C48
- object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 43, 0, 3, 12, 0, 0, 0, 0, 77, 0, BerryTreeScript, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 44, 0, 3, 12, 0, 0, 0, 0, 78, 0, BerryTreeScript, 0, 0, 0
+ object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 43, 0, 3, 12, 0, 0, 0, 0, 77, 0, S_BerryTree, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 44, 0, 3, 12, 0, 0, 0, 0, 78, 0, S_BerryTree, 0, 0, 0
object_event 3, MAP_OBJ_GFX_HIKER, 0, 15, 0, 65, 0, 7, 10, 0, 0, 1, 0, 6, 0, Route114_EventScript_1507F1, 0, 0, 0
object_event 4, MAP_OBJ_GFX_HIKER, 0, 30, 0, 72, 0, 5, 15, 0, 0, 1, 0, 4, 0, Route114_EventScript_150808, 0, 0, 0
object_event 5, MAP_OBJ_GFX_CAMPER, 0, 22, 0, 50, 0, 3, 10, 0, 0, 1, 0, 3, 0, Route114_EventScript_15081F, 0, 0, 0
object_event 6, MAP_OBJ_GFX_PICNICKER, 0, 19, 0, 35, 0, 3, 1, 0, 0, 1, 0, 3, 0, Route114_EventScript_150836, 0, 0, 0
object_event 7, MAP_OBJ_GFX_MANIAC, 0, 20, 0, 56, 0, 3, 7, 0, 0, 1, 0, 3, 0, Route114_EventScript_15084D, 0, 0, 0
- object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 45, 0, 3, 12, 0, 0, 0, 0, 68, 0, BerryTreeScript, 0, 0, 0
+ object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 45, 0, 3, 12, 0, 0, 0, 0, 68, 0, S_BerryTree, 0, 0, 0
object_event 9, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route114_EventScript_1B1516, 1014, 0, 0
object_event 10, MAP_OBJ_GFX_ITEM_BALL, 0, 11, 0, 37, 0, 4, 1, 0, 0, 0, 0, 0, 0, Route114_EventScript_1B1523, 1015, 0, 0
- object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 12, 0, 43, 0, 4, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0
+ object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 12, 0, 43, 0, 4, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0
object_event 12, MAP_OBJ_GFX_GENTLEMAN, 0, 19, 0, 11, 0, 3, 10, 0, 0, 0, 0, 0, 0, Route114_EventScript_150782, 0, 0, 0
object_event 13, MAP_OBJ_GFX_POOCHYENA, 0, 19, 0, 12, 0, 3, 10, 0, 0, 0, 0, 0, 0, Route114_EventScript_1507C3, 0, 0, 0
object_event 14, MAP_OBJ_GFX_MAN_5, 0, 27, 0, 42, 0, 3, 3, 16, 0, 0, 0, 0, 0, Route114_EventScript_150733, 0, 0, 0
object_event 15, MAP_OBJ_GFX_FISHERMAN, 0, 23, 0, 20, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route114_EventScript_1508E0, 0, 0, 0
object_event 16, MAP_OBJ_GFX_FISHERMAN, 0, 19, 0, 26, 0, 3, 9, 0, 0, 1, 0, 0, 0, Route114_EventScript_1508C9, 0, 0, 0
object_event 17, MAP_OBJ_GFX_MAN_6, 0, 30, 0, 58, 0, 5, 23, 0, 0, 1, 0, 3, 0, Route114_EventScript_15088B, 0, 0, 0
- object_event 18, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 53, 0, 5, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0
- object_event 19, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 30, 0, 54, 0, 5, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0
- object_event 20, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 22, 0, 69, 0, 7, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0
- object_event 21, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 64, 0, 5, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0
+ object_event 18, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 53, 0, 5, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0
+ object_event 19, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 30, 0, 54, 0, 5, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0
+ object_event 20, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 22, 0, 69, 0, 7, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0
+ object_event 21, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 64, 0, 5, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0
object_event 22, MAP_OBJ_GFX_LASS, 0, 24, 0, 44, 0, 3, 8, 17, 0, 1, 0, 0, 0, Route114_EventScript_150912, 0, 0, 0
object_event 23, MAP_OBJ_GFX_LASS, 0, 23, 0, 44, 0, 3, 8, 17, 0, 1, 0, 0, 0, Route114_EventScript_1508F7, 0, 0, 0
diff --git a/data/maps/events/Route115.inc b/data/maps/events/Route115.inc
index cba3c3e7d..ddca08fad 100644
--- a/data/maps/events/Route115.inc
+++ b/data/maps/events/Route115.inc
@@ -2,18 +2,18 @@ Route115_MapObjects:: @ 8382F2C
object_event 1, MAP_OBJ_GFX_WOMAN_3, 0, 18, 0, 68, 0, 3, 2, 17, 0, 0, 0, 0, 0, Route115_EventScript_15092E, 0, 0, 0
object_event 2, MAP_OBJ_GFX_OLD_MAN_1, 0, 5, 0, 15, 0, 3, 10, 0, 0, 1, 0, 6, 0, Route115_EventScript_150949, 0, 0, 0
object_event 3, MAP_OBJ_GFX_BLACK_BELT, 0, 27, 0, 53, 0, 3, 15, 17, 0, 1, 0, 4, 0, Route115_EventScript_15099E, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 69, 0, BerryTreeScript, 0, 0, 0
- object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 70, 0, BerryTreeScript, 0, 0, 0
- object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 13, 0, 5, 0, 3, 12, 0, 0, 0, 0, 71, 0, BerryTreeScript, 0, 0, 0
+ object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 69, 0, S_BerryTree, 0, 0, 0
+ object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 70, 0, S_BerryTree, 0, 0, 0
+ object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 13, 0, 5, 0, 3, 12, 0, 0, 0, 0, 71, 0, S_BerryTree, 0, 0, 0
object_event 7, MAP_OBJ_GFX_GIRL_3, 0, 15, 0, 50, 0, 3, 64, 0, 0, 1, 0, 3, 0, Route115_EventScript_1509DC, 0, 0, 0
object_event 8, MAP_OBJ_GFX_BLACK_BELT, 0, 17, 0, 17, 0, 3, 50, 51, 0, 1, 0, 2, 0, Route115_EventScript_150987, 0, 0, 0
object_event 9, MAP_OBJ_GFX_MANIAC, 0, 25, 0, 61, 0, 3, 14, 0, 0, 1, 0, 3, 0, Route115_EventScript_150A1A, 0, 0, 0
object_event 10, MAP_OBJ_GFX_ITEM_BALL, 0, 20, 0, 60, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route115_EventScript_1B1530, 1016, 0, 0
object_event 11, MAP_OBJ_GFX_ITEM_BALL, 0, 19, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route115_EventScript_1B153D, 1017, 0, 0
object_event 12, MAP_OBJ_GFX_ITEM_BALL, 0, 23, 0, 29, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route115_EventScript_1B154A, 1018, 0, 0
- object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 64, 0, 3, 12, 0, 0, 0, 0, 55, 0, BerryTreeScript, 0, 0, 0
- object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 65, 0, 3, 12, 0, 0, 0, 0, 56, 0, BerryTreeScript, 0, 0, 0
- object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 50, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0
+ object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 64, 0, 3, 12, 0, 0, 0, 0, 55, 0, S_BerryTree, 0, 0, 0
+ object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 31, 0, 65, 0, 3, 12, 0, 0, 0, 0, 56, 0, S_BerryTree, 0, 0, 0
+ object_event 15, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 29, 0, 50, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0
object_event 16, MAP_OBJ_GFX_ITEM_BALL, 0, 31, 0, 56, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route115_EventScript_1B1557, 1118, 0, 0
Route115_MapWarps:: @ 83830AC
diff --git a/data/maps/events/Route116.inc b/data/maps/events/Route116.inc
index 18717be4e..b5f922524 100644
--- a/data/maps/events/Route116.inc
+++ b/data/maps/events/Route116.inc
@@ -1,18 +1,18 @@
Route116_MapObjects:: @ 8383170
- object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 2, 0, 3, 12, 0, 0, 0, 0, 25, 0, BerryTreeScript, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 2, 0, 3, 12, 0, 0, 0, 0, 26, 0, BerryTreeScript, 0, 0, 0
+ object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 2, 0, 3, 12, 0, 0, 0, 0, 25, 0, S_BerryTree, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 19, 0, 2, 0, 3, 12, 0, 0, 0, 0, 26, 0, S_BerryTree, 0, 0, 0
object_event 3, MAP_OBJ_GFX_YOUNGSTER, 0, 12, 0, 7, 0, 3, 16, 0, 0, 1, 0, 3, 0, Route116_EventScript_150C62, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 21, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
- object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 33, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
+ object_event 4, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 21, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
+ object_event 5, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 33, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
object_event 6, MAP_OBJ_GFX_BUG_CATCHER, 0, 13, 0, 17, 0, 3, 24, 0, 0, 1, 0, 2, 0, Route116_EventScript_150C79, 0, 0, 0
object_event 7, MAP_OBJ_GFX_ITEM_BALL, 0, 19, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_1B1571, 1019, 0, 0
object_event 8, MAP_OBJ_GFX_ITEM_BALL, 0, 10, 0, 17, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_1B157E, 1020, 0, 0
- object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 20, 0, 2, 0, 3, 12, 0, 0, 0, 0, 66, 0, BerryTreeScript, 0, 0, 0
- object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 21, 0, 2, 0, 3, 12, 0, 0, 0, 0, 67, 0, BerryTreeScript, 0, 0, 0
+ object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 20, 0, 2, 0, 3, 12, 0, 0, 0, 0, 66, 0, S_BerryTree, 0, 0, 0
+ object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 21, 0, 2, 0, 3, 12, 0, 0, 0, 0, 67, 0, S_BerryTree, 0, 0, 0
object_event 11, MAP_OBJ_GFX_OLD_MAN_1, 0, 46, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_150B5D, 891, 0, 0
- object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 30, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0
+ object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 30, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0
object_event 13, MAP_OBJ_GFX_HIKER, 0, 36, 0, 15, 0, 3, 13, 0, 0, 1, 0, 2, 0, Route116_EventScript_150CCE, 0, 0, 0
- object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 24, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 20, 0, 0
+ object_event 14, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 24, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 20, 0, 0
object_event 15, MAP_OBJ_GFX_ITEM_BALL, 0, 80, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route116_EventScript_1B158B, 1021, 0, 0
object_event 16, MAP_OBJ_GFX_LASS, 0, 22, 0, 16, 0, 3, 13, 0, 0, 1, 0, 3, 0, Route116_EventScript_150CE5, 0, 0, 0
object_event 17, MAP_OBJ_GFX_GIRL_3, 0, 25, 0, 4, 0, 3, 8, 0, 0, 1, 0, 2, 0, Route116_EventScript_150CFC, 0, 0, 0
diff --git a/data/maps/events/Route117.inc b/data/maps/events/Route117.inc
index b53e3de57..bf6aeb5d0 100644
--- a/data/maps/events/Route117.inc
+++ b/data/maps/events/Route117.inc
@@ -9,11 +9,11 @@ Route117_MapObjects:: @ 8383440
object_event 8, MAP_OBJ_GFX_RUNNING_TRIATHLETE_M, 0, 35, 0, 7, 0, 3, 28, 7, 0, 1, 0, 4, 0, Route117_EventScript_150E09, 0, 0, 0
object_event 9, MAP_OBJ_GFX_WOMAN_3, 0, 31, 0, 11, 0, 3, 23, 0, 0, 1, 0, 3, 0, Route117_EventScript_150DCB, 0, 0, 0
object_event 10, MAP_OBJ_GFX_MAN_5, 0, 10, 0, 9, 0, 3, 18, 0, 0, 1, 0, 3, 0, Route117_EventScript_150D8D, 0, 0, 0
- object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 41, 0, 13, 0, 3, 12, 0, 0, 0, 0, 29, 0, BerryTreeScript, 0, 0, 0
- object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 42, 0, 13, 0, 3, 12, 0, 0, 0, 0, 28, 0, BerryTreeScript, 0, 0, 0
- object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 43, 0, 13, 0, 3, 12, 0, 0, 0, 0, 27, 0, BerryTreeScript, 0, 0, 0
+ object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 41, 0, 13, 0, 3, 12, 0, 0, 0, 0, 29, 0, S_BerryTree, 0, 0, 0
+ object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 42, 0, 13, 0, 3, 12, 0, 0, 0, 0, 28, 0, S_BerryTree, 0, 0, 0
+ object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 43, 0, 13, 0, 3, 12, 0, 0, 0, 0, 27, 0, S_BerryTree, 0, 0, 0
object_event 14, MAP_OBJ_GFX_ITEM_BALL, 0, 16, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route117_EventScript_1B1598, 1022, 0, 0
- object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
+ object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
object_event 16, MAP_OBJ_GFX_ITEM_BALL, 0, 9, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route117_EventScript_1B15A5, 1023, 0, 0
object_event 17, MAP_OBJ_GFX_RUNNING_TRIATHLETE_F, 0, 21, 0, 1, 0, 3, 40, 68, 0, 1, 0, 3, 0, Route117_EventScript_150E47, 0, 0, 0
object_event 18, MAP_OBJ_GFX_MANIAC, 0, 17, 0, 12, 0, 3, 7, 17, 0, 1, 0, 4, 0, Route117_EventScript_150E85, 0, 0, 0
diff --git a/data/maps/events/Route118.inc b/data/maps/events/Route118.inc
index f912b6fbd..df887ba1e 100644
--- a/data/maps/events/Route118.inc
+++ b/data/maps/events/Route118.inc
@@ -1,7 +1,7 @@
Route118_MapObjects:: @ 8383684
- object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 5, 0, 3, 12, 0, 0, 0, 0, 31, 0, BerryTreeScript, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 5, 0, 3, 12, 0, 0, 0, 0, 32, 0, BerryTreeScript, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 37, 0, 5, 0, 3, 12, 0, 0, 0, 0, 33, 0, BerryTreeScript, 0, 0, 0
+ object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 5, 0, 3, 12, 0, 0, 0, 0, 31, 0, S_BerryTree, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 5, 0, 3, 12, 0, 0, 0, 0, 32, 0, S_BerryTree, 0, 0, 0
+ object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 37, 0, 5, 0, 3, 12, 0, 0, 0, 0, 33, 0, S_BerryTree, 0, 0, 0
object_event 4, MAP_OBJ_GFX_MAN_6, 0, 64, 0, 10, 0, 3, 8, 0, 0, 1, 0, 3, 0, Route118_EventScript_151139, 0, 0, 0
object_event 5, MAP_OBJ_GFX_REPORTER_F, 0, 33, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE462, 797, 0, 0
object_event 6, MAP_OBJ_GFX_CAMERAMAN, 0, 34, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE482, 797, 0, 0
@@ -10,7 +10,7 @@ Route118_MapObjects:: @ 8383684
object_event 9, MAP_OBJ_GFX_CAMERAMAN, 0, 34, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE542, 901, 0, 0
object_event 10, MAP_OBJ_GFX_REPORTER_F, 0, 33, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE562, 904, 0, 0
object_event 11, MAP_OBJ_GFX_CAMERAMAN, 0, 34, 0, 8, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route118_EventScript_1AE582, 904, 0, 0
- object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 38, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
+ object_event 12, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 38, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
object_event 13, MAP_OBJ_GFX_FISHERMAN, 0, 28, 0, 8, 0, 3, 9, 0, 0, 0, 0, 0, 0, Route118_EventScript_150F34, 0, 0, 0
object_event 14, MAP_OBJ_GFX_WOMAN_3, 0, 7, 0, 10, 0, 3, 24, 0, 0, 1, 0, 4, 0, Route118_EventScript_15108F, 0, 0, 0
object_event 15, MAP_OBJ_GFX_FISHERMAN, 0, 14, 0, 14, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route118_EventScript_1510E4, 0, 0, 0
diff --git a/data/maps/events/Route119.inc b/data/maps/events/Route119.inc
index 966ae6058..08e6e3649 100644
--- a/data/maps/events/Route119.inc
+++ b/data/maps/events/Route119.inc
@@ -1,7 +1,7 @@
Route119_MapObjects:: @ 8383914
- object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 5, 0, 3, 12, 0, 0, 0, 0, 34, 0, BerryTreeScript, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 5, 0, 3, 12, 0, 0, 0, 0, 35, 0, BerryTreeScript, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 26, 0, 5, 0, 3, 12, 0, 0, 0, 0, 36, 0, BerryTreeScript, 0, 0, 0
+ object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 24, 0, 5, 0, 3, 12, 0, 0, 0, 0, 34, 0, S_BerryTree, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 25, 0, 5, 0, 3, 12, 0, 0, 0, 0, 35, 0, S_BerryTree, 0, 0, 0
+ object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 26, 0, 5, 0, 3, 12, 0, 0, 0, 0, 36, 0, S_BerryTree, 0, 0, 0
object_event 4, MAP_OBJ_GFX_BUG_CATCHER, 0, 12, 0, 123, 0, 3, 59, 0, 0, 1, 0, 1, 0, Route119_EventScript_151491, 0, 0, 0
object_event 5, MAP_OBJ_GFX_MANIAC, 0, 26, 0, 123, 0, 3, 60, 0, 0, 1, 0, 1, 0, Route119_EventScript_151463, 0, 0, 0
object_event 6, MAP_OBJ_GFX_MANIAC, 0, 5, 0, 125, 0, 3, 62, 0, 0, 1, 0, 1, 0, Route119_EventScript_15144C, 0, 0, 0
@@ -25,10 +25,10 @@ Route119_MapObjects:: @ 8383914
object_event 24, 241, 0, 13, 0, 34, 0, 4, 10, 0, 0, 0, 0, 0, 0, Route119_EventScript_1515DC, 890, 0, 0
object_event 25, 243, 0, 17, 0, 33, 0, 4, 7, 0, 0, 0, 0, 0, 0, 0x0, 923, 0, 0
object_event 26, MAP_OBJ_GFX_BOY_3, 0, 31, 0, 109, 0, 3, 8, 17, 0, 0, 0, 0, 0, Route119_EventScript_1515F3, 0, 0, 0
- object_event 27, MAP_OBJ_GFX_BERRY_TREE, 0, 8, 0, 23, 0, 3, 12, 0, 0, 0, 0, 83, 0, BerryTreeScript, 0, 0, 0
- object_event 28, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 23, 0, 3, 12, 0, 0, 0, 0, 84, 0, BerryTreeScript, 0, 0, 0
- object_event 29, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 90, 0, 3, 12, 0, 0, 0, 0, 85, 0, BerryTreeScript, 0, 0, 0
- object_event 30, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 90, 0, 3, 12, 0, 0, 0, 0, 86, 0, BerryTreeScript, 0, 0, 0
+ object_event 27, MAP_OBJ_GFX_BERRY_TREE, 0, 8, 0, 23, 0, 3, 12, 0, 0, 0, 0, 83, 0, S_BerryTree, 0, 0, 0
+ object_event 28, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 23, 0, 3, 12, 0, 0, 0, 0, 84, 0, S_BerryTree, 0, 0, 0
+ object_event 29, MAP_OBJ_GFX_BERRY_TREE, 0, 29, 0, 90, 0, 3, 12, 0, 0, 0, 0, 85, 0, S_BerryTree, 0, 0, 0
+ object_event 30, MAP_OBJ_GFX_BERRY_TREE, 0, 30, 0, 90, 0, 3, 12, 0, 0, 0, 0, 86, 0, S_BerryTree, 0, 0, 0
object_event 31, MAP_OBJ_GFX_CYCLING_TRIATHLETE_M, 0, 19, 0, 133, 0, 3, 5, 18, 0, 0, 0, 0, 0, Route119_EventScript_15141A, 0, 0, 0
object_event 32, MAP_OBJ_GFX_ITEM_BALL, 0, 3, 0, 56, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route119_EventScript_1B160D, 1106, 0, 0
object_event 33, MAP_OBJ_GFX_BOY_2, 0, 35, 0, 93, 0, 4, 2, 17, 0, 0, 0, 0, 0, Route119_EventScript_1515FC, 0, 0, 0
diff --git a/data/maps/events/Route120.inc b/data/maps/events/Route120.inc
index 43a67ee99..81fa21c7f 100644
--- a/data/maps/events/Route120.inc
+++ b/data/maps/events/Route120.inc
@@ -1,14 +1,14 @@
Route120_MapObjects:: @ 8383F30
- object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 4, 0, 79, 0, 3, 12, 0, 0, 0, 0, 46, 0, BerryTreeScript, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 79, 0, 3, 12, 0, 0, 0, 0, 45, 0, BerryTreeScript, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 79, 0, 3, 12, 0, 0, 0, 0, 44, 0, BerryTreeScript, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 79, 0, 3, 12, 0, 0, 0, 0, 43, 0, BerryTreeScript, 0, 0, 0
- object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 24, 0, 3, 12, 0, 0, 0, 0, 37, 0, BerryTreeScript, 0, 0, 0
- object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 24, 0, 3, 12, 0, 0, 0, 0, 38, 0, BerryTreeScript, 0, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 24, 0, 3, 12, 0, 0, 0, 0, 39, 0, BerryTreeScript, 0, 0, 0
- object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 92, 0, 5, 12, 0, 0, 0, 0, 40, 0, BerryTreeScript, 0, 0, 0
- object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 10, 0, 92, 0, 5, 12, 0, 0, 0, 0, 41, 0, BerryTreeScript, 0, 0, 0
- object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 92, 0, 5, 12, 0, 0, 0, 0, 42, 0, BerryTreeScript, 0, 0, 0
+ object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 4, 0, 79, 0, 3, 12, 0, 0, 0, 0, 46, 0, S_BerryTree, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 5, 0, 79, 0, 3, 12, 0, 0, 0, 0, 45, 0, S_BerryTree, 0, 0, 0
+ object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 6, 0, 79, 0, 3, 12, 0, 0, 0, 0, 44, 0, S_BerryTree, 0, 0, 0
+ object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 7, 0, 79, 0, 3, 12, 0, 0, 0, 0, 43, 0, S_BerryTree, 0, 0, 0
+ object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 34, 0, 24, 0, 3, 12, 0, 0, 0, 0, 37, 0, S_BerryTree, 0, 0, 0
+ object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 35, 0, 24, 0, 3, 12, 0, 0, 0, 0, 38, 0, S_BerryTree, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 36, 0, 24, 0, 3, 12, 0, 0, 0, 0, 39, 0, S_BerryTree, 0, 0, 0
+ object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 9, 0, 92, 0, 5, 12, 0, 0, 0, 0, 40, 0, S_BerryTree, 0, 0, 0
+ object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 10, 0, 92, 0, 5, 12, 0, 0, 0, 0, 41, 0, S_BerryTree, 0, 0, 0
+ object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 92, 0, 5, 12, 0, 0, 0, 0, 42, 0, S_BerryTree, 0, 0, 0
object_event 11, MAP_OBJ_GFX_MAN_6, 0, 5, 0, 22, 0, 3, 14, 0, 0, 1, 0, 3, 0, Route120_EventScript_1519B3, 0, 0, 0
object_event 12, MAP_OBJ_GFX_MAN_6, 0, 32, 0, 14, 0, 3, 10, 0, 0, 1, 0, 3, 0, Route120_EventScript_1519CA, 0, 0, 0
object_event 13, MAP_OBJ_GFX_CAMPER, 0, 27, 0, 51, 0, 3, 9, 0, 0, 1, 0, 7, 0, Route120_EventScript_151A08, 0, 0, 0
@@ -19,7 +19,7 @@ Route120_MapObjects:: @ 8383F30
object_event 18, MAP_OBJ_GFX_REPORTER_F, 0, 36, 0, 5, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route120_EventScript_1AE4A2, 798, 0, 0
object_event 19, MAP_OBJ_GFX_REPORTER_F, 0, 36, 0, 5, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route120_EventScript_1AE562, 902, 0, 0
object_event 20, MAP_OBJ_GFX_CAMERAMAN, 0, 37, 0, 5, 0, 3, 8, 0, 0, 0, 0, 0, 0, Route120_EventScript_1AE582, 902, 0, 0
- object_event 21, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 32, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
+ object_event 21, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 35, 0, 32, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
object_event 22, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 89, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route120_EventScript_1B1627, 1031, 0, 0
object_event 23, MAP_OBJ_GFX_BEAUTY, 0, 14, 0, 92, 0, 5, 5, 1, 0, 0, 0, 0, 0, Route120_EventScript_151739, 0, 0, 0
object_event 24, MAP_OBJ_GFX_WOMAN_7, 0, 28, 0, 35, 0, 3, 15, 0, 0, 1, 0, 4, 0, Route120_EventScript_151A74, 0, 0, 0
@@ -30,8 +30,8 @@ Route120_MapObjects:: @ 8383F30
object_event 29, MAP_OBJ_GFX_ITEM_BALL, 0, 23, 0, 82, 0, 5, 1, 17, 0, 0, 0, 0, 0, Route120_EventScript_1B1634, 1107, 0, 0
object_event 30, MAP_OBJ_GFX_KECLEON_1, 0, 12, 0, 16, 0, 4, 76, 17, 0, 0, 0, 0, 0, Route120_EventScript_151998, 970, 0, 0
object_event 31, MAP_OBJ_GFX_STEVEN, 0, 13, 0, 15, 0, 4, 8, 17, 0, 0, 0, 0, 0, Route120_EventScript_151853, 972, 0, 0
- object_event 32, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 20, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 20, 0, 0
- object_event 33, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
+ object_event 32, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 20, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 20, 0, 0
+ object_event 33, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 15, 0, 1, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
object_event 34, MAP_OBJ_GFX_LITTLE_BOY_1, 0, 10, 0, 72, 0, 3, 58, 17, 0, 1, 0, 3, 0, Route120_EventScript_151AD0, 0, 0, 0
object_event 35, MAP_OBJ_GFX_LITTLE_BOY_1, 0, 19, 0, 28, 0, 3, 57, 17, 0, 1, 0, 3, 0, Route120_EventScript_151AE7, 0, 0, 0
object_event 36, MAP_OBJ_GFX_KECLEON_2, 0, 12, 0, 16, 0, 3, 8, 17, 0, 0, 0, 0, 0, 0x0, 981, 0, 0
diff --git a/data/maps/events/Route121.inc b/data/maps/events/Route121.inc
index 514f51349..9961344a8 100644
--- a/data/maps/events/Route121.inc
+++ b/data/maps/events/Route121.inc
@@ -1,26 +1,26 @@
Route121_MapObjects:: @ 8384504
object_event 1, MAP_OBJ_GFX_WOMAN_4, 0, 29, 0, 14, 0, 3, 10, 17, 0, 0, 0, 0, 0, Route121_EventScript_151B0A, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 2, 0, 3, 12, 0, 0, 0, 0, 47, 0, BerryTreeScript, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 2, 0, 3, 12, 0, 0, 0, 0, 48, 0, BerryTreeScript, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 16, 0, 2, 0, 3, 12, 0, 0, 0, 0, 49, 0, BerryTreeScript, 0, 0, 0
- object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 2, 0, 3, 12, 0, 0, 0, 0, 50, 0, BerryTreeScript, 0, 0, 0
- object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 64, 0, 14, 0, 3, 12, 0, 0, 0, 0, 51, 0, BerryTreeScript, 0, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 65, 0, 14, 0, 3, 12, 0, 0, 0, 0, 52, 0, BerryTreeScript, 0, 0, 0
- object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 66, 0, 14, 0, 3, 12, 0, 0, 0, 0, 53, 0, BerryTreeScript, 0, 0, 0
- object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 67, 0, 14, 0, 3, 12, 0, 0, 0, 0, 54, 0, BerryTreeScript, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 2, 0, 3, 12, 0, 0, 0, 0, 47, 0, S_BerryTree, 0, 0, 0
+ object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 2, 0, 3, 12, 0, 0, 0, 0, 48, 0, S_BerryTree, 0, 0, 0
+ object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 16, 0, 2, 0, 3, 12, 0, 0, 0, 0, 49, 0, S_BerryTree, 0, 0, 0
+ object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 2, 0, 3, 12, 0, 0, 0, 0, 50, 0, S_BerryTree, 0, 0, 0
+ object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 64, 0, 14, 0, 3, 12, 0, 0, 0, 0, 51, 0, S_BerryTree, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 65, 0, 14, 0, 3, 12, 0, 0, 0, 0, 52, 0, S_BerryTree, 0, 0, 0
+ object_event 8, MAP_OBJ_GFX_BERRY_TREE, 0, 66, 0, 14, 0, 3, 12, 0, 0, 0, 0, 53, 0, S_BerryTree, 0, 0, 0
+ object_event 9, MAP_OBJ_GFX_BERRY_TREE, 0, 67, 0, 14, 0, 3, 12, 0, 0, 0, 0, 54, 0, S_BerryTree, 0, 0, 0
object_event 10, MAP_OBJ_GFX_LASS, 0, 39, 0, 9, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route121_EventScript_151BDE, 0, 0, 0
object_event 11, MAP_OBJ_GFX_LASS, 0, 40, 0, 9, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route121_EventScript_151BF9, 0, 0, 0
object_event 12, 241, 0, 30, 0, 8, 0, 3, 7, 0, 0, 0, 0, 0, 0, 0x0, 914, 0, 0
object_event 13, 241, 0, 30, 0, 7, 0, 3, 10, 0, 0, 0, 0, 0, 0, 0x0, 914, 0, 0
object_event 14, 241, 0, 31, 0, 7, 0, 3, 9, 0, 0, 0, 0, 0, 0, 0x0, 914, 0, 0
- object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 32, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
- object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 65, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
+ object_event 15, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 32, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
+ object_event 16, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 65, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
object_event 17, MAP_OBJ_GFX_WOMAN_2, 0, 63, 0, 5, 0, 3, 9, 0, 0, 1, 0, 4, 0, Route121_EventScript_151B72, 0, 0, 0
object_event 18, MAP_OBJ_GFX_GENTLEMAN, 0, 55, 0, 8, 0, 3, 17, 0, 0, 1, 0, 3, 0, Route121_EventScript_151B89, 0, 0, 0
object_event 19, MAP_OBJ_GFX_HEX_MANIAC, 0, 11, 0, 10, 0, 3, 15, 0, 0, 1, 0, 4, 0, Route121_EventScript_151BC7, 0, 0, 0
object_event 20, MAP_OBJ_GFX_BEAUTY, 0, 22, 0, 5, 0, 3, 17, 0, 0, 1, 0, 4, 0, Route121_EventScript_151C14, 0, 0, 0
object_event 21, MAP_OBJ_GFX_ITEM_BALL, 0, 55, 0, 10, 0, 3, 1, 17, 0, 0, 0, 0, 0, Route121_EventScript_1B164E, 1103, 0, 0
- object_event 22, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 26, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0
+ object_event 22, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 26, 0, 12, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0
Route121_MapWarps:: @ 8384714
warp_def 37, 5, 0, 2, Route121_SafariZoneEntrance
diff --git a/data/maps/events/Route123.inc b/data/maps/events/Route123.inc
index 6b97bafe5..dc5ac0fb4 100644
--- a/data/maps/events/Route123.inc
+++ b/data/maps/events/Route123.inc
@@ -1,30 +1,30 @@
Route123_MapObjects:: @ 83847F8
- object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 3, 0, 3, 12, 0, 0, 0, 0, 58, 0, BerryTreeScript, 0, 0, 0
- object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 3, 0, 3, 12, 0, 0, 0, 0, 59, 0, BerryTreeScript, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 3, 0, 3, 12, 0, 0, 0, 0, 60, 0, BerryTreeScript, 0, 0, 0
- object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 3, 0, 3, 12, 0, 0, 0, 0, 61, 0, BerryTreeScript, 0, 0, 0
- object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 81, 0, 1, 0, 3, 12, 0, 0, 0, 0, 62, 0, BerryTreeScript, 0, 0, 0
- object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 82, 0, 1, 0, 3, 12, 0, 0, 0, 0, 63, 0, BerryTreeScript, 0, 0, 0
- object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 83, 0, 1, 0, 3, 12, 0, 0, 0, 0, 64, 0, BerryTreeScript, 0, 0, 0
+ object_event 1, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 3, 0, 3, 12, 0, 0, 0, 0, 58, 0, S_BerryTree, 0, 0, 0
+ object_event 2, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 3, 0, 3, 12, 0, 0, 0, 0, 59, 0, S_BerryTree, 0, 0, 0
+ object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 3, 0, 3, 12, 0, 0, 0, 0, 60, 0, S_BerryTree, 0, 0, 0
+ object_event 4, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 3, 0, 3, 12, 0, 0, 0, 0, 61, 0, S_BerryTree, 0, 0, 0
+ object_event 5, MAP_OBJ_GFX_BERRY_TREE, 0, 81, 0, 1, 0, 3, 12, 0, 0, 0, 0, 62, 0, S_BerryTree, 0, 0, 0
+ object_event 6, MAP_OBJ_GFX_BERRY_TREE, 0, 82, 0, 1, 0, 3, 12, 0, 0, 0, 0, 63, 0, S_BerryTree, 0, 0, 0
+ object_event 7, MAP_OBJ_GFX_BERRY_TREE, 0, 83, 0, 1, 0, 3, 12, 0, 0, 0, 0, 64, 0, S_BerryTree, 0, 0, 0
object_event 8, MAP_OBJ_GFX_WOMAN_7, 0, 70, 0, 12, 0, 3, 24, 0, 0, 1, 0, 1, 0, Route123_EventScript_151CD1, 0, 0, 0
object_event 9, MAP_OBJ_GFX_MAN_4, 0, 58, 0, 7, 0, 3, 17, 0, 0, 1, 0, 2, 0, Route123_EventScript_151CE8, 0, 0, 0
- object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 5, 0, 3, 12, 0, 0, 0, 0, 65, 0, BerryTreeScript, 0, 0, 0
- object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 5, 0, 3, 12, 0, 0, 0, 0, 72, 0, BerryTreeScript, 0, 0, 0
- object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 5, 0, 3, 12, 0, 0, 0, 0, 73, 0, BerryTreeScript, 0, 0, 0
- object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 74, 0, BerryTreeScript, 0, 0, 0
- object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 3, 0, 3, 12, 0, 0, 0, 0, 79, 0, BerryTreeScript, 0, 0, 0
- object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 3, 0, 3, 12, 0, 0, 0, 0, 14, 0, BerryTreeScript, 0, 0, 0
- object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 15, 0, BerryTreeScript, 0, 0, 0
- object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 30, 0, BerryTreeScript, 0, 0, 0
- object_event 18, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 101, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 17, 0, 0
- object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 129, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 18, 0, 0
- object_event 20, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 92, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, CuttableTreeScript, 19, 0, 0
+ object_event 10, MAP_OBJ_GFX_BERRY_TREE, 0, 14, 0, 5, 0, 3, 12, 0, 0, 0, 0, 65, 0, S_BerryTree, 0, 0, 0
+ object_event 11, MAP_OBJ_GFX_BERRY_TREE, 0, 15, 0, 5, 0, 3, 12, 0, 0, 0, 0, 72, 0, S_BerryTree, 0, 0, 0
+ object_event 12, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 5, 0, 3, 12, 0, 0, 0, 0, 73, 0, S_BerryTree, 0, 0, 0
+ object_event 13, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 5, 0, 3, 12, 0, 0, 0, 0, 74, 0, S_BerryTree, 0, 0, 0
+ object_event 14, MAP_OBJ_GFX_BERRY_TREE, 0, 17, 0, 3, 0, 3, 12, 0, 0, 0, 0, 79, 0, S_BerryTree, 0, 0, 0
+ object_event 15, MAP_OBJ_GFX_BERRY_TREE, 0, 18, 0, 3, 0, 3, 12, 0, 0, 0, 0, 14, 0, S_BerryTree, 0, 0, 0
+ object_event 16, MAP_OBJ_GFX_BERRY_TREE, 0, 11, 0, 5, 0, 3, 12, 0, 0, 0, 0, 15, 0, S_BerryTree, 0, 0, 0
+ object_event 17, MAP_OBJ_GFX_BERRY_TREE, 0, 12, 0, 5, 0, 3, 12, 0, 0, 0, 0, 30, 0, S_BerryTree, 0, 0, 0
+ object_event 18, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 101, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 17, 0, 0
+ object_event 19, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 129, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 18, 0, 0
+ object_event 20, MAP_OBJ_GFX_CUTTABLE_TREE, 0, 92, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_CuttableTree, 19, 0, 0
object_event 21, MAP_OBJ_GFX_ITEM_BALL, 0, 31, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route123_EventScript_1B165B, 1032, 0, 0
object_event 22, MAP_OBJ_GFX_ITEM_BALL, 0, 139, 0, 18, 0, 3, 1, 0, 0, 0, 0, 0, 0, Route123_EventScript_1B1668, 1033, 0, 0
object_event 23, MAP_OBJ_GFX_GIRL_3, 0, 108, 0, 13, 0, 3, 15, 0, 0, 0, 0, 0, 0, Route123_EventScript_151C5D, 0, 0, 0
- object_event 24, MAP_OBJ_GFX_BERRY_TREE, 0, 109, 0, 13, 0, 3, 12, 0, 0, 0, 0, 87, 0, BerryTreeScript, 0, 0, 0
- object_event 25, MAP_OBJ_GFX_BERRY_TREE, 0, 110, 0, 13, 0, 3, 12, 0, 0, 0, 0, 88, 0, BerryTreeScript, 0, 0, 0
- object_event 26, MAP_OBJ_GFX_BERRY_TREE, 0, 111, 0, 13, 0, 3, 12, 0, 0, 0, 0, 89, 0, BerryTreeScript, 0, 0, 0
+ object_event 24, MAP_OBJ_GFX_BERRY_TREE, 0, 109, 0, 13, 0, 3, 12, 0, 0, 0, 0, 87, 0, S_BerryTree, 0, 0, 0
+ object_event 25, MAP_OBJ_GFX_BERRY_TREE, 0, 110, 0, 13, 0, 3, 12, 0, 0, 0, 0, 88, 0, S_BerryTree, 0, 0, 0
+ object_event 26, MAP_OBJ_GFX_BERRY_TREE, 0, 111, 0, 13, 0, 3, 12, 0, 0, 0, 0, 89, 0, S_BerryTree, 0, 0, 0
object_event 27, MAP_OBJ_GFX_WOMAN_3, 0, 16, 0, 9, 0, 3, 23, 0, 0, 1, 0, 2, 0, Route123_EventScript_151CFF, 0, 0, 0
object_event 28, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 38, 0, 13, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route123_EventScript_151DAD, 0, 0, 0
object_event 29, MAP_OBJ_GFX_LITTLE_GIRL_1, 0, 37, 0, 13, 0, 3, 8, 0, 0, 1, 0, 0, 0, Route123_EventScript_151D92, 0, 0, 0
diff --git a/data/maps/events/Route130.inc b/data/maps/events/Route130.inc
index f2c72ef2d..009604d4b 100644
--- a/data/maps/events/Route130.inc
+++ b/data/maps/events/Route130.inc
@@ -1,7 +1,7 @@
Route130_MapObjects:: @ 838523C
object_event 1, MAP_OBJ_GFX_SWIMMER_M, 0, 7, 0, 26, 0, 1, 29, 99, 0, 1, 0, 3, 0, Route130_EventScript_152410, 0, 0, 0
object_event 2, MAP_OBJ_GFX_SWIMMER_F, 0, 68, 0, 22, 0, 1, 13, 17, 0, 1, 0, 3, 0, Route130_EventScript_152427, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 52, 0, 9, 0, 3, 12, 0, 0, 0, 0, 82, 0, BerryTreeScript, 17, 0, 0
+ object_event 3, MAP_OBJ_GFX_BERRY_TREE, 0, 52, 0, 9, 0, 3, 12, 0, 0, 0, 0, 82, 0, S_BerryTree, 17, 0, 0
Route130_MapEvents:: @ 8385284
map_events Route130_MapObjects, 0x0, 0x0, 0x0
diff --git a/data/maps/events/RusturfTunnel.inc b/data/maps/events/RusturfTunnel.inc
index 490afda7b..ef1559687 100644
--- a/data/maps/events/RusturfTunnel.inc
+++ b/data/maps/events/RusturfTunnel.inc
@@ -1,12 +1,12 @@
RusturfTunnel_MapObjects:: @ 838BD2C
object_event 1, MAP_OBJ_GFX_BLACK_BELT, 0, 23, 0, 5, 0, 3, 10, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C799, 807, 0, 0
- object_event 2, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 931, 0, 0
+ object_event 2, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 931, 0, 0
object_event 3, MAP_OBJ_GFX_ITEM_BALL, 0, 3, 0, 1, 0, 3, 1, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_1B1786, 1048, 0, 0
object_event 4, MAP_OBJ_GFX_ITEM_BALL, 0, 30, 0, 2, 0, 3, 1, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_1B1793, 1049, 0, 0
object_event 5, MAP_OBJ_GFX_OLD_MAN_1, 0, 5, 0, 4, 0, 3, 10, 0, 0, 0, 0, 0, 0, 0x0, 879, 0, 0
object_event 6, 241, 0, 14, 0, 5, 0, 3, 9, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C9EA, 878, 0, 0
object_event 7, MAP_OBJ_GFX_WINGULL, 0, 14, 0, 4, 0, 3, 9, 0, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C9D7, 880, 0, 0
- object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 4, 0, 3, 8, 0, 0, 0, 0, 0, 0, BreakableRockScript, 932, 0, 0
+ object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 24, 0, 4, 0, 3, 8, 0, 0, 0, 0, 0, 0, S_BreakableRock, 932, 0, 0
object_event 9, MAP_OBJ_GFX_HIKER, 0, 32, 0, 13, 0, 3, 9, 17, 0, 1, 0, 3, 0, RusturfTunnel_EventScript_15CACD, 0, 0, 0
object_event 10, MAP_OBJ_GFX_WOMAN_3, 0, 25, 0, 4, 0, 3, 9, 17, 0, 0, 0, 0, 0, RusturfTunnel_EventScript_15C782, 983, 0, 0
diff --git a/data/maps/events/SafariZone_Northeast.inc b/data/maps/events/SafariZone_Northeast.inc
index 30921f095..cea87fb14 100644
--- a/data/maps/events/SafariZone_Northeast.inc
+++ b/data/maps/events/SafariZone_Northeast.inc
@@ -1,12 +1,12 @@
SafariZone_Northeast_MapObjects:: @ 8391A2C
object_event 1, MAP_OBJ_GFX_FISHERMAN, 0, 22, 0, 9, 0, 3, 2, 17, 0, 0, 0, 0, 0, SafariZone_Northeast_EventScript_160011, 0, 0, 0
object_event 2, MAP_OBJ_GFX_MAN_5, 0, 6, 0, 29, 0, 3, 2, 17, 0, 0, 0, 0, 0, SafariZone_Northeast_EventScript_16001A, 0, 0, 0
- object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 10, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 17, 0, 0
- object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 13, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 18, 0, 0
- object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 28, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0
- object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 23, 0, 6, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 20, 0, 0
- object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0
- object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 27, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0
+ object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 10, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 17, 0, 0
+ object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 25, 0, 13, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 18, 0, 0
+ object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 28, 0, 14, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0
+ object_event 6, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 23, 0, 6, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 20, 0, 0
+ object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0
+ object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 27, 0, 7, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0
object_event 9, MAP_OBJ_GFX_ITEM_BALL, 0, 7, 0, 6, 0, 3, 1, 17, 0, 0, 0, 0, 0, SafariZone_Northeast_EventScript_1B1919, 1119, 0, 0
SafariZone_Northeast_MapEvents:: @ 8391B04
diff --git a/data/maps/events/SeafloorCavern_Room1.inc b/data/maps/events/SeafloorCavern_Room1.inc
index 1e791f884..093934481 100644
--- a/data/maps/events/SeafloorCavern_Room1.inc
+++ b/data/maps/events/SeafloorCavern_Room1.inc
@@ -1,7 +1,7 @@
SeafloorCavern_Room1_MapObjects:: @ 838D0B8
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 19, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 3, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 5, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 19, 0, 0
object_event 4, 241, 0, 8, 0, 6, 0, 3, 1, 17, 0, 1, 0, 2, 0, SeafloorCavern_Room1_EventScript_15DA6D, 946, 0, 0
object_event 5, 241, 0, 15, 0, 10, 0, 3, 16, 17, 0, 1, 0, 3, 0, SeafloorCavern_Room1_EventScript_15DA84, 946, 0, 0
diff --git a/data/maps/events/SeafloorCavern_Room2.inc b/data/maps/events/SeafloorCavern_Room2.inc
index 3dbe5e8a7..86a0354e4 100644
--- a/data/maps/events/SeafloorCavern_Room2.inc
+++ b/data/maps/events/SeafloorCavern_Room2.inc
@@ -1,13 +1,13 @@
SeafloorCavern_Room2_MapObjects:: @ 838D15C
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
- object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0
- object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 24, 0, 0
- object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 25, 0, 0
- object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 15, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
+ object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 14, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0
+ object_event 7, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 11, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 24, 0, 0
+ object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 25, 0, 0
+ object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 15, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0
SeafloorCavern_Room2_MapWarps:: @ 838D234
warp_def 12, 19, 3, 2, SeafloorCavern_Room1
diff --git a/data/maps/events/SeafloorCavern_Room3.inc b/data/maps/events/SeafloorCavern_Room3.inc
index 98e6066f2..5c5c9c219 100644
--- a/data/maps/events/SeafloorCavern_Room3.inc
+++ b/data/maps/events/SeafloorCavern_Room3.inc
@@ -1,13 +1,13 @@
SeafloorCavern_Room3_MapObjects:: @ 838D268
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
- object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0
- object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0
- object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 24, 0, 0
- object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 25, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
+ object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 8, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0
+ object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0
+ object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 24, 0, 0
+ object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 9, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 25, 0, 0
object_event 10, 242, 0, 10, 0, 5, 0, 3, 8, 17, 0, 1, 0, 3, 0, SeafloorCavern_Room3_EventScript_15DAA8, 946, 0, 0
SeafloorCavern_Room3_MapWarps:: @ 838D358
diff --git a/data/maps/events/SeafloorCavern_Room5.inc b/data/maps/events/SeafloorCavern_Room5.inc
index 0ebd46a56..37a501512 100644
--- a/data/maps/events/SeafloorCavern_Room5.inc
+++ b/data/maps/events/SeafloorCavern_Room5.inc
@@ -1,10 +1,10 @@
SeafloorCavern_Room5_MapObjects:: @ 838D3D0
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 21, 0, 0
- object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 22, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 11, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 11, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 4, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 3, 0, 13, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 21, 0, 0
+ object_event 5, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 13, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 22, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 12, 0, 8, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
SeafloorCavern_Room5_MapWarps:: @ 838D460
warp_def 4, 1, 3, 1, SeafloorCavern_Room1
diff --git a/data/maps/events/SeafloorCavern_Room8.inc b/data/maps/events/SeafloorCavern_Room8.inc
index 610937753..2d7329aec 100644
--- a/data/maps/events/SeafloorCavern_Room8.inc
+++ b/data/maps/events/SeafloorCavern_Room8.inc
@@ -1,16 +1,16 @@
SeafloorCavern_Room8_MapObjects:: @ 838D4DC
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
- object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 21, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0
- object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0
- object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 24, 0, 0
- object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 25, 0, 0
- object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 26, 0, 0
- object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 27, 0, 0
- object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 28, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
+ object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 21, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0
+ object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 5, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0
+ object_event 8, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 24, 0, 0
+ object_event 9, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 3, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 25, 0, 0
+ object_event 10, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 26, 0, 0
+ object_event 11, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 6, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 27, 0, 0
+ object_event 12, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 7, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 28, 0, 0
SeafloorCavern_Room8_MapWarps:: @ 838D5FC
warp_def 5, 2, 3, 0, SeafloorCavern_Room9
diff --git a/data/maps/events/ShoalCave_LowTideLowerRoom.inc b/data/maps/events/ShoalCave_LowTideLowerRoom.inc
index a1770b5bb..858f919e0 100644
--- a/data/maps/events/ShoalCave_LowTideLowerRoom.inc
+++ b/data/maps/events/ShoalCave_LowTideLowerRoom.inc
@@ -1,5 +1,5 @@
ShoalCave_LowTideLowerRoom_MapObjects:: @ 838DE3C
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 25, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 25, 0, 3, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
object_event 2, MAP_OBJ_GFX_BLACK_BELT, 0, 11, 0, 4, 0, 3, 2, 17, 0, 0, 0, 0, 0, ShoalCave_LowTideLowerRoom_EventScript_15E44F, 0, 0, 0
ShoalCave_LowTideLowerRoom_MapWarps:: @ 838DE6C
diff --git a/data/maps/events/VictoryRoad_B1F.inc b/data/maps/events/VictoryRoad_B1F.inc
index a4f778c4d..b00074990 100644
--- a/data/maps/events/VictoryRoad_B1F.inc
+++ b/data/maps/events/VictoryRoad_B1F.inc
@@ -1,21 +1,21 @@
VictoryRoad_B1F_MapObjects:: @ 838DA04
- object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 19, 0, 0
- object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 20, 0, 0
- object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 17, 0, 0
- object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 18, 0, 0
- object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 23, 0, 0
- object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 22, 0, 0
- object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 35, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 30, 0, 0
- object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 25, 0, 0
- object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 26, 0, 0
- object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 27, 0, 0
- object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 28, 0, 0
- object_event 12, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 21, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, BreakableRockScript, 29, 0, 0
- object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 34, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, PushableBoulderScript, 31, 0, 0
+ object_event 1, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 19, 0, 0
+ object_event 2, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 20, 0, 0
+ object_event 3, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 4, 0, 7, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 17, 0, 0
+ object_event 4, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 9, 0, 10, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 18, 0, 0
+ object_event 5, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 20, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 23, 0, 0
+ object_event 6, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 21, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 22, 0, 0
+ object_event 7, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 35, 0, 6, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 30, 0, 0
+ object_event 8, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 19, 0, 5, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 25, 0, 0
+ object_event 9, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 26, 0, 0
+ object_event 10, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 18, 0, 12, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 27, 0, 0
+ object_event 11, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 20, 0, 25, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 28, 0, 0
+ object_event 12, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 21, 0, 26, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_BreakableRock, 29, 0, 0
+ object_event 13, MAP_OBJ_GFX_PUSHABLE_BOULDER, 0, 34, 0, 4, 0, 3, 1, 0, 0, 0, 0, 0, 0, S_PushableBoulder, 31, 0, 0
object_event 14, MAP_OBJ_GFX_MAN_4, 0, 37, 0, 12, 0, 3, 9, 0, 0, 1, 0, 3, 0, VictoryRoad_B1F_EventScript_15DFB5, 0, 0, 0
object_event 15, MAP_OBJ_GFX_WOMAN_7, 0, 26, 0, 16, 0, 3, 7, 0, 0, 1, 0, 4, 0, VictoryRoad_B1F_EventScript_15DFCC, 0, 0, 0
object_event 16, MAP_OBJ_GFX_WOMAN_7, 0, 5, 0, 21, 0, 3, 9, 0, 0, 1, 0, 2, 0, VictoryRoad_B1F_EventScript_15DFE3, 0, 0, 0
- object_event 17, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 34, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, BreakableRockScript, 32, 0, 0
+ object_event 17, MAP_OBJ_GFX_BREAKABLE_ROCK, 0, 34, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, S_BreakableRock, 32, 0, 0
object_event 18, MAP_OBJ_GFX_ITEM_BALL, 0, 42, 0, 8, 0, 4, 1, 17, 0, 0, 0, 0, 0, VictoryRoad_B1F_EventScript_1B1AE0, 1086, 0, 0
object_event 19, MAP_OBJ_GFX_ITEM_BALL, 0, 32, 0, 3, 0, 3, 1, 17, 0, 0, 0, 0, 0, VictoryRoad_B1F_EventScript_1B1AED, 1087, 0, 0
diff --git a/data/mauville_old_man.s b/data/mauville_old_man.s
deleted file mode 100644
index 5c4bd47b9..000000000
--- a/data/mauville_old_man.s
+++ /dev/null
@@ -1,101 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 1
-gUnknown_083E537C:: @ 83E537C
-.ifdef ENGLISH
- ec_word SISTER
- ec_word EATS
- ec_word SWEETS
- ec_word VORACIOUS
- ec_word AND
- ec_word DROOLING
-.else
- ec_word SISTER
- ec_word MUST_BE
- ec_word SWEETS
- ec_word VORACIOUS
- ec_word DROOLING
- ec_word THICK
-.endif
-
-
- .align 2
-gUnknown_083E5388:: @ 83E5388
- .4byte OtherText_SoPretty
- .4byte OtherText_SoDarling
- .4byte OtherText_SoRelaxed
- .4byte OtherText_SoSunny
- .4byte OtherText_SoDesirable
- .4byte OtherText_SoExciting
- .4byte OtherText_SoAmusing
- .4byte OtherText_SoMagical
-
- .align 2
-gUnknown_083E53A8:: @ 83E53A8
- .4byte OtherText_WantVacationNicePlace
- .4byte OtherText_BoughtCrayonsIsNice
- .4byte OtherText_IfWeCouldFloat
- .4byte OtherText_SandWashesAwayMakeSad
- .4byte OtherText_WhatsBottomSeaLike
- .4byte OtherText_SeeSettingSun
- .4byte OtherText_LyingInGreenGrass
- .4byte OtherText_SecretBasesWonderful
-
- .align 1
-gUnknown_083E53C8:: @ 83E53C8
- .2byte 0x0, 0
- .2byte 0xC, 0
- .2byte 0xD, 0
- .2byte 0x12, 0
- .2byte 0x13, 0
- .2byte 0x15, 0
-
- .align 2
-gUnknown_083E53E0:: @ 83E53E0
- .4byte 0x132, UnknownString_81AEFFC, UnknownString_81AF013, UnknownString_81AF022
- .4byte 0x102, UnknownString_81AF0A3, UnknownString_81AF0BB, UnknownString_81AF0CA
- .4byte 0x103, UnknownString_81AF149, UnknownString_81AF164, UnknownString_81AF174
- .4byte 0x104, UnknownString_81AF1E5, UnknownString_81AF1FD, UnknownString_81AF20A
- .4byte 0x106, UnknownString_81AF281, UnknownString_81AF299, UnknownString_81AF2A9
- .4byte 0x109, UnknownString_81AF32C, UnknownString_81AF345, UnknownString_81AF34D
- .4byte 0x10b, UnknownString_81AF3D0, UnknownString_81AF3ED, UnknownString_81AF3FC
- .4byte 0x10c, UnknownString_81AF46D, UnknownString_81AF481, UnknownString_81AF49B
- .4byte 0x10d, UnknownString_81AF511, UnknownString_81AF529, UnknownString_81AF536
- .4byte 0x10e, UnknownString_81AF5A9, UnknownString_81AF5BD, UnknownString_81AF5CD
- .4byte 0x10f, UnknownString_81AF63F, UnknownString_81AF661, UnknownString_81AF676
- .4byte 0x110, UnknownString_81AF711, UnknownString_81AF726, UnknownString_81AF73D
- .4byte 0x111, UnknownString_81AF7BF, UnknownString_81AF7D9, UnknownString_81AF7F1
- .4byte 0x112, UnknownString_81AF88A, UnknownString_81AF8A1, UnknownString_81AF8AA
- .4byte 0x113, UnknownString_81AF91B, UnknownString_81AF935, UnknownString_81AF943
- .4byte 0x114, UnknownString_81AF9C8, UnknownString_81AF9E0, UnknownString_81AF9F6
- .4byte 0x11a, UnknownString_81AFA79, UnknownString_81AFA92, UnknownString_81AFA9E
- .4byte 0x11b, UnknownString_81AFB17, UnknownString_81AFB2D, UnknownString_81AFB48
- .4byte 0x11c, UnknownString_81AFBD8, UnknownString_81AFBE7, UnknownString_81AFC04
- .4byte 0x21d, UnknownString_81AFC8A, UnknownString_81AFC9D, UnknownString_81AFCBE
- .4byte 0x11e, UnknownString_81AFD44, UnknownString_81AFD60, UnknownString_81AFD80
- .4byte 0x121, UnknownString_81AFE1D, UnknownString_81AFE36, UnknownString_81AFE42
- .4byte 0x124, UnknownString_81AFEC2, UnknownString_81AFEDD, UnknownString_81AFEEE
- .4byte 0x125, UnknownString_81AFF68, UnknownString_81AFF7B, UnknownString_81AFF88
- .4byte 0x126, UnknownString_81AFFFB, UnknownString_81B000D, UnknownString_81B0015
- .4byte 0x127, UnknownString_81B009D, UnknownString_81B00B6, UnknownString_81B00C9
- .4byte 0x128, UnknownString_81B014D, UnknownString_81B0165, UnknownString_81B0173
- .4byte 0x129, UnknownString_81B01E9, UnknownString_81B0201, UnknownString_81B0213
- .4byte 0x12a, UnknownString_81B0290, UnknownString_81B02A5, UnknownString_81B02B6
- .4byte 0x12b, UnknownString_81B0337, UnknownString_81B0351, UnknownString_81B0364
- .4byte 0x12c, UnknownString_81B03E9, UnknownString_81B0401, UnknownString_81B040C
- .4byte 0x12d, UnknownString_81B046E, UnknownString_81B0489, UnknownString_81B049A
- .4byte 0x12e, UnknownString_81B0523, UnknownString_81B053E, UnknownString_81B0554
- .4byte 0x12f, UnknownString_81B05D8, UnknownString_81B05F3, UnknownString_81B0610
- .4byte 0x130, UnknownString_81B06A9, UnknownString_81B06C6, UnknownString_81B06D9
-
-gUnknown_083E5610:: @ 83E5610
- .4byte 0x131, UnknownString_81B0763, UnknownString_81B0781, UnknownString_81B0797
-
- .align 2
-gUnknown_083E5620:: @ 83E5620
- .4byte 0x24
- .4byte gSaveBlock1 + 0x2D94
- .4byte 0xC
diff --git a/data/mon_pokeblock_anims.inc b/data/mon_pokeblock_anims.inc
deleted file mode 100644
index d8df29c1d..000000000
--- a/data/mon_pokeblock_anims.inc
+++ /dev/null
@@ -1,133 +0,0 @@
-gNatureToMonPokeblockAnim:: @ 8411A10
- .byte 0, 0 @ HARDY
- .byte 3, 0 @ LONELY
- .byte 4, 1 @ BRAVE
- .byte 5, 0 @ ADAMANT
- .byte 10, 0 @ NAUGHTY
- .byte 13, 0 @ BOLD
- .byte 15, 0 @ DOCILE
- .byte 16, 2 @ RELAXED
- .byte 18, 0 @ IMPISH
- .byte 19, 0 @ LAX
- .byte 20, 0 @ TIMID
- .byte 25, 0 @ HASTY
- .byte 27, 3 @ SERIOUS
- .byte 28, 0 @ JOLLY
- .byte 29, 0 @ NAIVE
- .byte 33, 4 @ MODEST
- .byte 36, 0 @ MILD
- .byte 37, 0 @ QUIET
- .byte 39, 0 @ BASHFUL
- .byte 42, 0 @ RASH
- .byte 45, 0 @ CALM
- .byte 46, 5 @ GENTLE
- .byte 47, 6 @ SASSY
- .byte 48, 0 @ CAREFUL
- .byte 53, 0 @ QUIRKY
-
- .align 1
-gMonPokeblockAnims:: @ 8411A42
- @ HARDY
- .2byte 0, 4, 0, 8, 24, 0, 0, 0, 12, 0
- .2byte 0, 4, 0, 16, 24, 0, 0, 0, 12, 0
- .2byte 0, 4, 0, 32, 32, 0, 0, 0, 16, 1
-
- @ LONELY
- .2byte 0, 3, 6, 0, 48, 0, 0, 0, 24, 1
-
- @ BRAVE
- .2byte 64, 16, -24, 0, 32, 0, 0, 0, 0, 1
-
- @ ADAMANT
- .2byte 0, 4, 8, 0, 16, 0, -8, 0, 0, 0
- .2byte 0, 0, 0, 0, 16, 0, 0, 0, 0, 0
- .2byte 0, 4, 8, 0, 16, 0, -8, 0, 0, 0
- .2byte 0, 0, 0, 0, 16, 0, 0, 0, 0, 0
- .2byte 0, 4, -16, 0, 4, 0, 16, 0, 0, 1
-
- @ NAUGHTY
- .2byte 0, 3, 6, 0, 12, 0, 0, 0, 6, 0
- .2byte 0, 3, -6, 0, 12, 0, 0, 0, 6, 0
- .2byte 0, 16, 16, 0, 45, 1, 0, 0, 0, 1
-
- @ BOLD
- .2byte 0, 16, 0, 24, 32, 0, 0, 0, 16, 0
- .2byte 0, 16, 0, 23, 32, 0, 0, 0, 16, 1
-
- @ DOCILE
- .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 1
-
- @ RELAXED
- .2byte 0, 2, 8, 0, 32, 0, 0, 0, 0, 0
- .2byte 0, 2, -8, 0, 32, 0, 0, 0, 0, 1
-
- @ IMPISH
- .2byte 0, 32, 2, 1, 48, 1, 0, 0, 24, 1
-
- @ LAX
- .2byte 0, 2, 16, 16, 128, 0, 0, 0, 0, 1
-
- @ TIMID
- .2byte 0, 2, -8, 0, 48, 0, -24, 0, 0, 0
- .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0
- .2byte 64, 32, 2, 0, 36, 0, 0, 0, 0, 0
- .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0
- .2byte 0, 2, 8, 0, 48, 0, 24, 0, 0, 1
-
- @ HASTY
- .2byte 64, 24, 16, 0, 32, 0, 0, 0, 0, 0
- .2byte 0, 28, 2, 1, 32, 1, 0, 0, 16, 1
-
- @ SERIOUS
- .2byte 0, 0, 0, 0, 32, 0, 0, 0, 0, 1
-
- @ JOLLY
- .2byte 64, 16, -16, 2, 48, 0, 0, 0, 32, 1
-
- @ NAIVE
- .2byte 0, 12, -8, 4, 24, 0, 8, 0, 12, 0
- .2byte 0, 12, 8, 8, 24, 0, -16, 0, 12, 0
- .2byte 0, 12, -8, 16, 24, 0, 16, 0, 12, 0
- .2byte 0, 12, 8, 28, 24, 0, -8, 0, 12, 1
-
- @ MODEST
- .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 0
- .2byte 64, 16, -4, 0, 32, 0, 0, 0, 0, 0
- .2byte 0, 0, 0, 0, 8, 0, 0, 0, 0, 1
-
- @ MILD
- .2byte 128, 4, 0, 8, 64, 0, 0, 0, 0, 1
-
- @ QUIET
- .2byte 0, 2, 16, 0, 48, 0, 0, 0, 0, 0
- .2byte 128, 2, 16, 0, 48, 0, 0, 0, 0, 1
-
- @ BASHFUL
- .2byte 0, 2, -4, 0, 48, 0, -48, 0, 0, 0
- .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 0
- .2byte 0, 2, 8, 0, 24, 0, 48, 0, 0, 1
-
- @ RASH
- .2byte 64, 4, 64, 58, 52, 0, -88, 0, 0, 0
- .2byte 0, 0, 0, 0, 80, 0, 0, 0, 0, 0
- .2byte 0, 24, 80, 0, 32, 0, 88, 0, 0, 1
-
- @ CALM
- .2byte 0, 2, 16, 4, 64, 0, 0, 0, 0, 1
-
- @ GENTLE
- .2byte 0, 0, 0, 0, 32, 0, 0, 0, 0, 1
-
- @ SASSY
- .2byte 0, 0, 0, 0, 42, 0, 0, 0, 0, 1
-
- @ CAREFUL
- .2byte 0, 4, 0, 8, 24, 0, 0, 0, 12, 0
- .2byte 0, 0, 0, 0, 12, 0, 0, 0, 0, 0
- .2byte 0, 4, 0, 12, 24, 0, 0, 0, 12, 0
- .2byte 0, 0, 0, 0, 12, 0, 0, 0, 0, 0
- .2byte 0, 4, 0, 4, 24, 0, 0, 0, 12, 1
-
- @ QUIRKY
- .2byte 0, 4, 16, 12, 64, 0, 0, 0, 0, 0
- .2byte 0, -4, 16, 12, 64, 0, 0, 0, 0, 1
diff --git a/data/mystery_event_script_cmd_table.s b/data/mystery_event_script_cmd_table.s
new file mode 100644
index 000000000..171c35b4e
--- /dev/null
+++ b/data/mystery_event_script_cmd_table.s
@@ -0,0 +1,22 @@
+ .section script_data, "aw", %progbits
+
+ .align 2
+gMysteryEventScriptCmdTable:: @ 81DCAF4
+ .4byte MEScrCmd_nop
+ .4byte MEScrCmd_checkcompat
+ .4byte MEScrCmd_end
+ .4byte MEScrCmd_setmsg
+ .4byte MEScrCmd_setstatus
+ .4byte MEScrCmd_runscript
+ .4byte MEScrCmd_initramscript
+ .4byte MEScrCmd_setenigmaberry
+ .4byte MEScrCmd_giveribbon
+ .4byte MEScrCmd_givenationaldex
+ .4byte MEScrCmd_addrareword
+ .4byte MEScrCmd_setrecordmixinggift
+ .4byte MEScrCmd_givepokemon
+ .4byte MEScrCmd_addtrainer
+ .4byte MEScrCmd_enableresetrtc
+ .4byte MEScrCmd_checksum
+ .4byte MEScrCmd_crc
+gMysteryEventScriptCmdTableEnd::
diff --git a/data/pokeblock_feed.s b/data/pokeblock_feed.s
deleted file mode 100644
index ae5b17d12..000000000
--- a/data/pokeblock_feed.s
+++ /dev/null
@@ -1,225 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
-@ 8411A10
- .include "data/mon_pokeblock_anims.inc"
-
- .align 2
-gSpriteAffineAnim_8411E90:: @ 8411E90
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411EA0:: @ 8411EA0
- obj_rot_scal_anim_frame 0x0, 0x0, 12, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 30
- obj_rot_scal_anim_frame 0x0, 0x0, -12, 1
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411EC0:: @ 8411EC0
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, 12, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 28
- obj_rot_scal_anim_frame 0x0, 0x0, -4, 3
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411EE8:: @ 8411EE8
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 16
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 32
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 16
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411F08:: @ 8411F08
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 16
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 32
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 16
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411F30:: @ 8411F30
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 8
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 16
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 8
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411F50:: @ 8411F50
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 8
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 16
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 8
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411F78:: @ 8411F78
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 8
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 32
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 8
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411F98:: @ 8411F98
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 8
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 32
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 8
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411FC0:: @ 8411FC0
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 4
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 24
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 4
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8411FE0:: @ 8411FE0
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, -1, 4
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 24
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 4
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8412008:: @ 8412008
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 24
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 16
- obj_rot_scal_anim_frame 0x0, 0x0, -12, 2
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8412028:: @ 8412028
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, 1, 24
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 16
- obj_rot_scal_anim_frame 0x0, 0x0, -12, 2
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_8412050:: @ 8412050
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411EA0
- .4byte gSpriteAffineAnim_8411EE8
- .4byte gSpriteAffineAnim_8411F30
- .4byte gSpriteAffineAnim_8411F78
- .4byte gSpriteAffineAnim_8411FC0
- .4byte gSpriteAffineAnim_8412008
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411EC0
- .4byte gSpriteAffineAnim_8411F08
- .4byte gSpriteAffineAnim_8411F50
- .4byte gSpriteAffineAnim_8411F98
- .4byte gSpriteAffineAnim_8411FE0
- .4byte gSpriteAffineAnim_8412028
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411E90
- .4byte gSpriteAffineAnim_8411E90
-
- .align 2
-gUnknown_084120A4:: @ 84120A4
- .4byte gPokeblockRed_Pal
- .4byte gPokeblockBlue_Pal
- .4byte gPokeblockPink_Pal
- .4byte gPokeblockGreen_Pal
- .4byte gPokeblockYellow_Pal
- .4byte gPokeblockPurple_Pal
- .4byte gPokeblockIndigo_Pal
- .4byte gPokeblockBrown_Pal
- .4byte gPokeblockLiteBlue_Pal
- .4byte gPokeblockOlive_Pal
- .4byte gPokeblockGray_Pal
- .4byte gPokeblockBlack_Pal
- .4byte gPokeblockWhite_Pal
- .4byte gPokeblockGold_Pal
-
- .align 2
-gSpriteAffineAnim_84120DC:: @ 84120DC
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_84120EC:: @ 84120EC
- .4byte gSpriteAffineAnim_84120DC
-
- .align 2
-gSpriteAffineAnim_84120F0:: @ 84120F0
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, -8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, -8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, -8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, -8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 8
- obj_rot_scal_anim_frame 0x0, 0x0, 16, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 16, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 16, 1
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8412148:: @ 8412148
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, 8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 8, 1
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 8
- obj_rot_scal_anim_frame 0x0, 0x0, -16, 1
- obj_rot_scal_anim_frame 0x0, 0x0, -16, 1
- obj_rot_scal_anim_frame 0x0, 0x0, -16, 1
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_84121A0:: @ 84121A0
- .4byte gSpriteAffineAnim_84120DC
-
- .align 2
-gSpriteAffineAnimTable_84121A4:: @ 84121A4
- .4byte gSpriteAffineAnim_84120F0
-
- .align 2
-gSpriteAffineAnimTable_84121A8:: @ 84121A8
- .4byte gSpriteAffineAnim_8412148
-
- .align 2
-gOamData_84121AC:: @ 84121AC
- .2byte 0x0300
- .2byte 0x0000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_84121B4:: @ 84121B4
- obj_image_anim_frame 0, 0
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_84121BC:: @ 84121BC
- .4byte gSpriteAnim_84121B4
-
- .align 2
-gSpriteAffineAnim_84121C0:: @ 84121C0
- obj_rot_scal_anim_frame 0x100, 0x100, 0, 0
- obj_rot_scal_anim_frame 0xFFF8, 0xFFF8, 0, 1
- obj_rot_scal_anim_jump 1
-
- .align 2
-gSpriteAffineAnimTable_84121D8:: @ 84121D8
- .4byte gSpriteAffineAnim_84121C0
-
- .align 2
-gUnknown_084121DC:: @ 84121DC
- obj_tiles gPokeblock_Gfx, 0x20, 14818
-
- .align 2
-gSpriteTemplate_84121E4:: @ 84121E4
- spr_template 14818, 14818, gOamData_84121AC, gSpriteAnimTable_84121BC, NULL, gSpriteAffineAnimTable_84121D8, sub_81481B0
diff --git a/data/pokemon_menu.s b/data/pokemon_menu.s
deleted file mode 100644
index 9e2ce2864..000000000
--- a/data/pokemon_menu.s
+++ /dev/null
@@ -1,82 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gPokemonMenuActions:: @ 839F494
- .4byte OtherText_Summary, PokemonMenu_Summary
- .4byte OtherText_Switch2, PokemonMenu_Switch
- .4byte OtherText_Item, PokemonMenu_Item
- .4byte gOtherText_CancelNoTerminator, PokemonMenu_Cancel
- .4byte OtherText_Give2, PokemonMenu_GiveItem
- .4byte OtherText_Take2, PokemonMenu_TakeItem
- .4byte OtherText_Take, PokemonMenu_TakeMail
- .4byte OtherText_Mail, PokemonMenu_Mail
- .4byte OtherText_Read2, PokemonMenu_ReadMail
- .4byte gOtherText_CancelNoTerminator, PokemonMenu_CancelSubmenu
- .4byte gMoveNames + 13 * MOVE_CUT, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_FLASH, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_ROCK_SMASH, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_STRENGTH, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_SURF, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_FLY, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_DIVE, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_WATERFALL, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_TELEPORT, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_DIG, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_SECRET_POWER, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_MILK_DRINK, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_SOFT_BOILED, PokemonMenu_FieldMove
- .4byte gMoveNames + 13 * MOVE_SWEET_SCENT, PokemonMenu_FieldMove
-
- .align 1
-gUnknown_0839F554:: @ 839F554
- .2byte MOVE_CUT
- .2byte MOVE_FLASH
- .2byte MOVE_ROCK_SMASH
- .2byte MOVE_STRENGTH
- .2byte MOVE_SURF
- .2byte MOVE_FLY
- .2byte MOVE_DIVE
- .2byte MOVE_WATERFALL
- .2byte MOVE_TELEPORT
- .2byte MOVE_DIG
- .2byte MOVE_SECRET_POWER
- .2byte MOVE_MILK_DRINK
- .2byte MOVE_SOFT_BOILED
- .2byte MOVE_SWEET_SCENT
- .2byte 0xFF
-
-Unknown_39F572: @ 839F572
- .byte 4, 5, 9, 0
-
- .align 2
-gUnknown_0839F578:: @ 839F578
- .byte 3, 6, 0, 0
- .4byte Unknown_39F572
-
-Unknown_39F580: @ 839F580
- .byte 8, 6, 9, 0
-
- .align 2
-gUnknown_0839F584:: @ 839F584
- .byte 3, 9, 0, 0
- .4byte Unknown_39F580
-
- .align 2
-gFieldMoveFuncs:: @ 839F58C
- .4byte SetUpFieldMove_Cut, 0x6
- .4byte SetUpFieldMove_Flash, 0x9
- .4byte SetUpFieldMove_RockSmash, 0x9
- .4byte SetUpFieldMove_Strength, 0x9
- .4byte SetUpFieldMove_Surf, 0x7
- .4byte SetUpFieldMove_Fly, 0x9
- .4byte SetUpFieldMove_Dive, 0x9
- .4byte SetUpFieldMove_Waterfall, 0x9
- .4byte SetUpFieldMove_Teleport, 0x9
- .4byte SetUpFieldMove_Dig, 0x9
- .4byte SetUpFieldMove_SecretPower, 0x9
- .4byte SetUpFieldMove_SoftBoiled, 0x10
- .4byte SetUpFieldMove_SoftBoiled, 0x10
- .4byte SetUpFieldMove_SweetScent, 0x9
diff --git a/data/rom4.s b/data/rom4.s
deleted file mode 100644
index 6f883c64c..000000000
--- a/data/rom4.s
+++ /dev/null
@@ -1,66 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gDummyWarpData:: @ 8216624
- .byte -1
- .byte -1
- .byte -1
- .space 1
- .2byte -1
- .2byte -1
-
-@ unused, unknown data
- .byte 0xB0, 0x04, 0x00, 0x00
- .byte 0x10, 0x0E, 0x00, 0x00
- .byte 0xB0, 0x04, 0x00, 0x00
- .byte 0x60, 0x09, 0x00, 0x00
- .byte 0x32, 0x00, 0x00, 0x00
- .byte 0x50, 0x00, 0x00, 0x00
- .byte 0xD4, 0xFF, 0xFF, 0xFF
- .byte 0x2C, 0x00, 0x00, 0x00
-
- .align 2
-gUnknown_0821664C:: @ 821664C
- .4byte 0, 0
- .4byte 0, 1
- .4byte 0, -1
- .4byte -1, 0
- .4byte 1, 0
- .4byte -1, 1
- .4byte 1, 1
- .4byte -1, -1
- .4byte 1, -1
-
- .align 2
-gUnknown_08216694:: @ 8216694
- .4byte REG_WIN0H
- .4byte ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1
- .4byte 1
-
- .align 2
-gUnknown_082166A0:: @ 82166A0
- .4byte sub_8055C68
- .4byte sub_8055C88
- .4byte sub_8055C8C
-
- .align 2
-gUnknown_082166AC:: @ 82166AC
- .4byte sub_8055CAC
- .4byte sub_8055CB0
- .4byte sub_8055CB0
- .4byte sub_8055CB0
- .4byte sub_8055CB0
- .4byte sub_8055CAC
- .4byte sub_8055CAC
- .4byte sub_8055D18
- .4byte sub_8055D18
- .4byte sub_8055D18
- .4byte sub_8055D18
-
- .align 2
-gUnknown_082166D8:: @ 82166D8
- .4byte sub_8055D30
- .4byte sub_8055D38
diff --git a/data/script_cmd_table.inc b/data/script_cmd_table.inc
index a68f2ca8d..b6b7401f3 100644
--- a/data/script_cmd_table.inc
+++ b/data/script_cmd_table.inc
@@ -1,203 +1,203 @@
.align 2
gScriptCmdTable:: @ 814AE30
- .4byte ScrCmd_snop
- .4byte ScrCmd_snop1
- .4byte ScrCmd_end
- .4byte ScrCmd_return
- .4byte ScrCmd_call
- .4byte ScrCmd_jump
- .4byte ScrCmd_jumpif
- .4byte ScrCmd_callif
- .4byte ScrCmd_jumpstd
- .4byte ScrCmd_callstd
- .4byte ScrCmd_jumpstdif
- .4byte ScrCmd_callstdif
- .4byte ScrCmd_jumpram
- .4byte ScrCmd_die
- .4byte ScrCmd_setbyte
- .4byte ScrCmd_loadptr
- .4byte ScrCmd_setbufferbyte
- .4byte ScrCmd_writebytetooffset
- .4byte ScrCmd_loadbytefrompointer
- .4byte ScrCmd_setptrbyte
- .4byte ScrCmd_copybuffers
- .4byte ScrCmd_copybyte
- .4byte ScrCmd_setvar
- .4byte ScrCmd_addvar
- .4byte ScrCmd_subvar
- .4byte ScrCmd_copyvar
- .4byte ScrCmd_setorcopyvar
- .4byte ScrCmd_comparebuffers
- .4byte ScrCmd_comparebuffertobyte
- .4byte ScrCmd_comparebuffertoptrbyte
- .4byte ScrCmd_compareptrbytetobuffer
- .4byte ScrCmd_compareptrbytetobyte
- .4byte ScrCmd_compareptrbytes
- .4byte ScrCmd_compare
- .4byte ScrCmd_comparevars
- .4byte ScrCmd_callasm
- .4byte ScrCmd_jumpasm
- .4byte ScrCmd_special
- .4byte ScrCmd_specialval
- .4byte ScrCmd_waitstate
- .4byte ScrCmd_pause
- .4byte ScrCmd_setflag
- .4byte ScrCmd_clearflag
- .4byte ScrCmd_checkflag
- .4byte ScrCmd_compareflags
- .4byte ScrCmd_checkdailyflags
- .4byte ScrCmd_resetvars
- .4byte ScrCmd_playsfx
- .4byte ScrCmd_checksound
- .4byte ScrCmd_fanfare
- .4byte ScrCmd_waitfanfare
- .4byte ScrCmd_playmusic
- .4byte ScrCmd_playmusicbattle
- .4byte ScrCmd_fadedefault
- .4byte ScrCmd_fademusic
- .4byte ScrCmd_fadeout
- .4byte ScrCmd_fadein
- .4byte ScrCmd_warp
- .4byte ScrCmd_warpmuted
- .4byte ScrCmd_warpwalk
- .4byte ScrCmd_warphole
- .4byte ScrCmd_warpteleport
- .4byte ScrCmd_warp3
- .4byte ScrCmd_warpplace
- .4byte ScrCmd_warp4
- .4byte ScrCmd_warp5
- .4byte ScrCmd_getplayerxy
- .4byte ScrCmd_countpokemon
- .4byte ScrCmd_additem
- .4byte ScrCmd_removeitem
- .4byte ScrCmd_checkitemspace
- .4byte ScrCmd_checkitem
- .4byte ScrCmd_checkitemtype
- .4byte ScrCmd_addpcitem
- .4byte ScrCmd_checkpcitem
- .4byte ScrCmd_adddecor
- .4byte ScrCmd_removedecor
- .4byte ScrCmd_testdecor
- .4byte ScrCmd_checkdecor
- .4byte ScrCmd_move
- .4byte ScrCmd_movecoords
- .4byte ScrCmd_waitmove
- .4byte ScrCmd_waitmovexy
- .4byte ScrCmd_disappear
- .4byte ScrCmd_disappearxy
- .4byte ScrCmd_reappear
- .4byte ScrCmd_reappearxy
- .4byte ScrCmd_movesprite
- .4byte ScrCmd_spritevisible
- .4byte ScrCmd_spriteinvisible
- .4byte ScrCmd_faceplayer
- .4byte ScrCmd_spriteface
- .4byte ScrCmd_trainerbattle
- .4byte ScrCmd_reptrainerbattle
- .4byte ScrCmd_endtrainerbattle
- .4byte ScrCmd_endtrainerbattle2
- .4byte ScrCmd_checktrainerflag
- .4byte ScrCmd_cleartrainerflag
- .4byte ScrCmd_settrainerflag
- .4byte ScrCmd_movespriteperm
- .4byte ScrCmd_moveoffscreen
- .4byte ScrCmd_spritebehave
- .4byte ScrCmd_waittext
- .4byte ScrCmd_message
- .4byte ScrCmd_closebutton
- .4byte ScrCmd_lockall
- .4byte ScrCmd_lock
- .4byte ScrCmd_releaseall
- .4byte ScrCmd_release
- .4byte ScrCmd_waitbutton
- .4byte ScrCmd_yesnobox
- .4byte ScrCmd_multichoice
- .4byte ScrCmd_multichoicedef
- .4byte ScrCmd_multichoicerow
- .4byte ScrCmd_showbox
- .4byte ScrCmd_hidebox
- .4byte ScrCmd_clearbox
- .4byte ScrCmd_showpokepic
- .4byte ScrCmd_hidepokepic
- .4byte ScrCmd_showcontestwinner
- .4byte ScrCmd_braillemsg
- .4byte ScrCmd_givepokemon
- .4byte ScrCmd_giveegg
- .4byte ScrCmd_setpokemove
- .4byte ScrCmd_checkattack
- .4byte ScrCmd_bufferpoke
- .4byte ScrCmd_bufferfirstpoke
- .4byte ScrCmd_bufferpartypoke
- .4byte ScrCmd_bufferitem
- .4byte ScrCmd_bufferdecor
- .4byte ScrCmd_bufferattack
- .4byte ScrCmd_buffernum
- .4byte ScrCmd_bufferstd
- .4byte ScrCmd_buffertext
- .4byte ScrCmd_pokemart
- .4byte ScrCmd_pokemartdecor
- .4byte ScrCmd_pokemartbp
- .4byte ScrCmd_pokecasino
- .4byte ScrCmd_event_8a
- .4byte ScrCmd_choosecontestpkmn
- .4byte ScrCmd_startcontest
- .4byte ScrCmd_showcontestresults
- .4byte ScrCmd_contestlinktransfer
- .4byte ScrCmd_random
- .4byte ScrCmd_givemoney
- .4byte ScrCmd_paymoney
- .4byte ScrCmd_checkmoney
- .4byte ScrCmd_showmoney
- .4byte ScrCmd_hidemoney
- .4byte ScrCmd_updatemoney
- .4byte ScrCmd_event_96
- .4byte ScrCmd_fadescreen
- .4byte ScrCmd_fadescreendelay
- .4byte ScrCmd_darken
- .4byte ScrCmd_lighten
- .4byte ScrCmd_message2
- .4byte ScrCmd_doanimation
- .4byte ScrCmd_setanimation
- .4byte ScrCmd_checkanimation
- .4byte ScrCmd_sethealplace
- .4byte ScrCmd_checkgender
- .4byte ScrCmd_pokecry
- .4byte ScrCmd_setmaptile
- .4byte ScrCmd_resetweather
- .4byte ScrCmd_setweather
- .4byte ScrCmd_doweather
- .4byte ScrCmd_tileeffect
- .4byte ScrCmd_setmapfooter
- .4byte ScrCmd_spritelevelup
- .4byte ScrCmd_restorespritelevel
- .4byte ScrCmd_createvsprite
- .4byte ScrCmd_vspriteface
- .4byte ScrCmd_setdooropened
- .4byte ScrCmd_setdoorclosed
- .4byte ScrCmd_doorchange
- .4byte ScrCmd_setdooropened2
- .4byte ScrCmd_setdoorclosed2
- .4byte ScrCmd_event_b1
- .4byte ScrCmd_event_b2
- .4byte ScrCmd_checkcoins
- .4byte ScrCmd_givecoins
- .4byte ScrCmd_removecoins
- .4byte ScrCmd_setwildbattle
- .4byte ScrCmd_dowildbattle
- .4byte ScrCmd_setvaddress
- .4byte ScrCmd_vjump
- .4byte ScrCmd_vcall
- .4byte ScrCmd_if5
- .4byte ScrCmd_if6
- .4byte ScrCmd_vtext
- .4byte ScrCmd_vloadptr
- .4byte ScrCmd_vbuffer
- .4byte ScrCmd_showcoins
- .4byte ScrCmd_hidecoins
- .4byte ScrCmd_updatecoins
- .4byte ScrCmd_inccounter
- .4byte ScrCmd_warp6
- .4byte ScrCmd_waitpokecry
+ .4byte ScrCmd_nop @ 0x00
+ .4byte ScrCmd_nop1 @ 0x01
+ .4byte ScrCmd_end @ 0x02
+ .4byte ScrCmd_return @ 0x03
+ .4byte ScrCmd_call @ 0x04
+ .4byte ScrCmd_goto @ 0x05
+ .4byte ScrCmd_goto_if @ 0x06
+ .4byte ScrCmd_call_if @ 0x07
+ .4byte ScrCmd_gotostd @ 0x08
+ .4byte ScrCmd_callstd @ 0x09
+ .4byte ScrCmd_gotostd_if @ 0x0A
+ .4byte ScrCmd_callstd_if @ 0x0B
+ .4byte ScrCmd_gotoram @ 0x0C
+ .4byte ScrCmd_killscript @ 0x0D
+ .4byte ScrCmd_setmysteryeventstatus @ 0x0E
+ .4byte ScrCmd_loadword @ 0x0F
+ .4byte ScrCmd_loadbyte @ 0x10
+ .4byte ScrCmd_writebytetoaddr @ 0x11
+ .4byte ScrCmd_loadbytefromaddr @ 0x12
+ .4byte ScrCmd_setptrbyte @ 0x13
+ .4byte ScrCmd_copylocal @ 0x14
+ .4byte ScrCmd_copybyte @ 0x15
+ .4byte ScrCmd_setvar @ 0x16
+ .4byte ScrCmd_addvar @ 0x17
+ .4byte ScrCmd_subvar @ 0x18
+ .4byte ScrCmd_copyvar @ 0x19
+ .4byte ScrCmd_setorcopyvar @ 0x1A
+ .4byte ScrCmd_compare_local_to_local @ 0x1B
+ .4byte ScrCmd_compare_local_to_value @ 0x1C
+ .4byte ScrCmd_compare_local_to_addr @ 0x1D
+ .4byte ScrCmd_compare_addr_to_local @ 0x1E
+ .4byte ScrCmd_compare_addr_to_value @ 0x1F
+ .4byte ScrCmd_compare_addr_to_addr @ 0x20
+ .4byte ScrCmd_compare_var_to_value @ 0x21
+ .4byte ScrCmd_compare_var_to_var @ 0x22
+ .4byte ScrCmd_callnative @ 0x23
+ .4byte ScrCmd_gotonative @ 0x24
+ .4byte ScrCmd_special @ 0x25
+ .4byte ScrCmd_specialvar @ 0x26
+ .4byte ScrCmd_waitstate @ 0x27
+ .4byte ScrCmd_delay @ 0x28
+ .4byte ScrCmd_setflag @ 0x29
+ .4byte ScrCmd_clearflag @ 0x2A
+ .4byte ScrCmd_checkflag @ 0x2B
+ .4byte ScrCmd_initclock @ 0x2C
+ .4byte ScrCmd_dodailyevents @ 0x2D
+ .4byte ScrCmd_gettime @ 0x2E
+ .4byte ScrCmd_playse @ 0x2F
+ .4byte ScrCmd_waitse @ 0x30
+ .4byte ScrCmd_playfanfare @ 0x31
+ .4byte ScrCmd_waitfanfare @ 0x32
+ .4byte ScrCmd_playbgm @ 0x33
+ .4byte ScrCmd_savebgm @ 0x34
+ .4byte ScrCmd_fadedefaultbgm @ 0x35
+ .4byte ScrCmd_fadenewbgm @ 0x36
+ .4byte ScrCmd_fadeoutbgm @ 0x37
+ .4byte ScrCmd_fadeinbgm @ 0x38
+ .4byte ScrCmd_warp @ 0x39
+ .4byte ScrCmd_warpsilent @ 0x3A
+ .4byte ScrCmd_warpdoor @ 0x3B
+ .4byte ScrCmd_warphole @ 0x3C
+ .4byte ScrCmd_warpteleport @ 0x3D
+ .4byte ScrCmd_setwarp @ 0x3E
+ .4byte ScrCmd_setdynamicwarp @ 0x3F
+ .4byte ScrCmd_setdivewarp @ 0x40
+ .4byte ScrCmd_setholewarp @ 0x41
+ .4byte ScrCmd_getplayerxy @ 0x42
+ .4byte ScrCmd_countpokemon @ 0x43
+ .4byte ScrCmd_additem @ 0x44
+ .4byte ScrCmd_removeitem @ 0x45
+ .4byte ScrCmd_checkitemspace @ 0x46
+ .4byte ScrCmd_checkitem @ 0x47
+ .4byte ScrCmd_checkitemtype @ 0x48
+ .4byte ScrCmd_addpcitem @ 0x49
+ .4byte ScrCmd_checkpcitem @ 0x4A
+ .4byte ScrCmd_adddecor @ 0x4B
+ .4byte ScrCmd_removedecor @ 0x4C
+ .4byte ScrCmd_hasdecor @ 0x4D
+ .4byte ScrCmd_checkdecor @ 0x4E
+ .4byte ScrCmd_applymovement @ 0x4F
+ .4byte ScrCmd_applymovement_at @ 0x50
+ .4byte ScrCmd_waitmovement @ 0x51
+ .4byte ScrCmd_waitmovement_at @ 0x52
+ .4byte ScrCmd_removeobject @ 0x53
+ .4byte ScrCmd_removeobject_at @ 0x54
+ .4byte ScrCmd_addobject @ 0x55
+ .4byte ScrCmd_addobject_at @ 0x56
+ .4byte ScrCmd_setobjectxy @ 0x57
+ .4byte ScrCmd_showobject @ 0x58
+ .4byte ScrCmd_hideobject @ 0x59
+ .4byte ScrCmd_faceplayer @ 0x5A
+ .4byte ScrCmd_turnobject @ 0x5B
+ .4byte ScrCmd_trainerbattle @ 0x5C
+ .4byte ScrCmd_battlebegin @ 0x5D
+ .4byte ScrCmd_ontrainerbattleend @ 0x5E
+ .4byte ScrCmd_ontrainerbattleendgoto @ 0x5F
+ .4byte ScrCmd_checktrainerflag @ 0x60
+ .4byte ScrCmd_settrainerflag @ 0x61
+ .4byte ScrCmd_cleartrainerflag @ 0x62
+ .4byte ScrCmd_setobjectxyperm @ 0x63
+ .4byte ScrCmd_moveobjectoffscreen @ 0x64
+ .4byte ScrCmd_setobjectmovementtype @ 0x65
+ .4byte ScrCmd_waitmessage @ 0x66
+ .4byte ScrCmd_message @ 0x67
+ .4byte ScrCmd_closemessage @ 0x68
+ .4byte ScrCmd_lockall @ 0x69
+ .4byte ScrCmd_lock @ 0x6A
+ .4byte ScrCmd_releaseall @ 0x6B
+ .4byte ScrCmd_release @ 0x6C
+ .4byte ScrCmd_waitbutton @ 0x6D
+ .4byte ScrCmd_yesnobox @ 0x6E
+ .4byte ScrCmd_multichoice @ 0x6F
+ .4byte ScrCmd_multichoicedefault @ 0x70
+ .4byte ScrCmd_multichoicegrid @ 0x71
+ .4byte ScrCmd_drawbox @ 0x72
+ .4byte ScrCmd_erasebox @ 0x73
+ .4byte ScrCmd_drawboxtext @ 0x74
+ .4byte ScrCmd_drawpokepic @ 0x75
+ .4byte ScrCmd_erasepokepic @ 0x76
+ .4byte ScrCmd_drawcontestwinner @ 0x77
+ .4byte ScrCmd_braillemessage @ 0x78
+ .4byte ScrCmd_givepoke @ 0x79
+ .4byte ScrCmd_giveegg @ 0x7A
+ .4byte ScrCmd_setpokemove @ 0x7B
+ .4byte ScrCmd_checkpokemove @ 0x7C
+ .4byte ScrCmd_getspeciesname @ 0x7D
+ .4byte ScrCmd_getfirstpartypokename @ 0x7E
+ .4byte ScrCmd_getpartypokename @ 0x7F
+ .4byte ScrCmd_getitemname @ 0x80
+ .4byte ScrCmd_getdecorname @ 0x81
+ .4byte ScrCmd_getmovename @ 0x82
+ .4byte ScrCmd_getnumberstring @ 0x83
+ .4byte ScrCmd_getstdstring @ 0x84
+ .4byte ScrCmd_getstring @ 0x85
+ .4byte ScrCmd_pokemart @ 0x86
+ .4byte ScrCmd_pokemartdecor @ 0x87
+ .4byte ScrCmd_pokemartbp @ 0x88
+ .4byte ScrCmd_playslotmachine @ 0x89
+ .4byte ScrCmd_plantberrytree @ 0x8A
+ .4byte ScrCmd_choosecontestpkmn @ 0x8B
+ .4byte ScrCmd_startcontest @ 0x8C
+ .4byte ScrCmd_showcontestresults @ 0x8D
+ .4byte ScrCmd_contestlinktransfer @ 0x8E
+ .4byte ScrCmd_random @ 0x8F
+ .4byte ScrCmd_givemoney @ 0x90
+ .4byte ScrCmd_takemoney @ 0x91
+ .4byte ScrCmd_checkmoney @ 0x92
+ .4byte ScrCmd_showmoneybox @ 0x93
+ .4byte ScrCmd_hidemoneybox @ 0x94
+ .4byte ScrCmd_updatemoneybox @ 0x95
+ .4byte ScrCmd_getpricereduction @ 0x96
+ .4byte ScrCmd_fadescreen @ 0x97
+ .4byte ScrCmd_fadescreendelay @ 0x98
+ .4byte ScrCmd_setdarklevel @ 0x99
+ .4byte ScrCmd_animdarklevel @ 0x9A
+ .4byte ScrCmd_messageautoscroll @ 0x9B
+ .4byte ScrCmd_dofieldeffect @ 0x9C
+ .4byte ScrCmd_setfieldeffect @ 0x9D
+ .4byte ScrCmd_waitfieldeffect @ 0x9E
+ .4byte ScrCmd_sethealplace @ 0x9F
+ .4byte ScrCmd_checkplayergender @ 0xA0
+ .4byte ScrCmd_playpokecry @ 0xA1
+ .4byte ScrCmd_setmaptile @ 0xA2
+ .4byte ScrCmd_resetweather @ 0xA3
+ .4byte ScrCmd_setweather @ 0xA4
+ .4byte ScrCmd_doweather @ 0xA5
+ .4byte ScrCmd_tileeffect @ 0xA6
+ .4byte ScrCmd_setmaplayoutindex @ 0xA7
+ .4byte ScrCmd_setobjectpriority @ 0xA8
+ .4byte ScrCmd_resetobjectpriority @ 0xA9
+ .4byte ScrCmd_createvobject @ 0xAA
+ .4byte ScrCmd_turnvobject @ 0xAB
+ .4byte ScrCmd_opendoor @ 0xAC
+ .4byte ScrCmd_closedoor @ 0xAD
+ .4byte ScrCmd_waitdooranim @ 0xAE
+ .4byte ScrCmd_setdooropen @ 0xAF
+ .4byte ScrCmd_setdoorclosed @ 0xB0
+ .4byte ScrCmd_addelevmenuitem @ 0xB1
+ .4byte ScrCmd_showelevmenu @ 0xB2
+ .4byte ScrCmd_checkcoins @ 0xB3
+ .4byte ScrCmd_givecoins @ 0xB4
+ .4byte ScrCmd_takecoins @ 0xB5
+ .4byte ScrCmd_setwildbattle @ 0xB6
+ .4byte ScrCmd_dowildbattle @ 0xB7
+ .4byte ScrCmd_setvaddress @ 0xB8
+ .4byte ScrCmd_vgoto @ 0xB9
+ .4byte ScrCmd_vcall @ 0xBA
+ .4byte ScrCmd_vgoto_if @ 0xBB
+ .4byte ScrCmd_vcall_if @ 0xBC
+ .4byte ScrCmd_vmessage @ 0xBD
+ .4byte ScrCmd_vloadword @ 0xBE
+ .4byte ScrCmd_vgetstring @ 0xBF
+ .4byte ScrCmd_showcoinsbox @ 0xC0
+ .4byte ScrCmd_hidecoinsbox @ 0xC1
+ .4byte ScrCmd_updatecoinsbox @ 0xC2
+ .4byte ScrCmd_incrementgamestat @ 0xC3
+ .4byte ScrCmd_setescapewarp @ 0xC4
+ .4byte ScrCmd_waitpokecry @ 0xC5
gScriptCmdTableEnd::
- .4byte ScrCmd_snop
+ .4byte ScrCmd_nop
diff --git a/data/script_funcs.s b/data/script_funcs.s
deleted file mode 100644
index 23d7a76f5..000000000
--- a/data/script_funcs.s
+++ /dev/null
@@ -1,22 +0,0 @@
- .section script_data, "aw", %progbits
-
- .align 2
-gScriptFuncs:: @ 81DCAF4
- .4byte sub_81263D0
- .4byte sub_8126380
- .4byte script_status_stop_and_ret_1
- .4byte sub_81263E4
- .4byte sub_81263D4
- .4byte sub_812641C
- .4byte sub_8126524
- .4byte sub_8126438
- .4byte sub_81264F0
- .4byte sub_812658C
- .4byte sub_81265B0
- .4byte sub_81265DC
- .4byte sub_8126608
- .4byte sub_8126714
- .4byte sub_8126754
- .4byte sub_8126778
- .4byte sub_81267C0
-gScriptFuncs_End::
diff --git a/data/scripts/bard.inc b/data/scripts/bard.inc
deleted file mode 100644
index 3f25b100f..000000000
--- a/data/scripts/bard.inc
+++ /dev/null
@@ -1,67 +0,0 @@
-MauvilleCity_PokemonCenter_1F_EventScript_1AE744:: @ 81AE744
- special sub_80F7B14
- switch RESULT
- case 0, MauvilleCity_PokemonCenter_1F_EventScript_1AE784
- case 1, MauvilleCity_PokemonCenter_1F_EventScript_1AE845
- case 2, MauvilleCity_PokemonCenter_1F_EventScript_1AEBAB
- case 3, MauvilleCity_PokemonCenter_1F_EventScript_1B0816
- case 4, MauvilleCity_PokemonCenter_1F_EventScript_1B09EB
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE784:: @ 81AE784
- lock
- faceplayer
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0A91, 5
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7A5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7C8
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE7A5:: @ 81AE7A5
- setvar 0x8004, 0
- special sub_80F7C54
- pause 60
- special sub_80F7B2C
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7D2
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0AED, 4
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE7C8:: @ 81AE7C8
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0AC3, 4
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE7D2:: @ 81AE7D2
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0B2C, 5
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE83B
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1:: @ 81AE7F1
- setvar 0x8004, 6
- call MauvilleCity_PokemonCenter_1F_EventScript_1A00F3
- lock
- faceplayer
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE83B
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BD0, 4
- setvar 0x8004, 1
- special sub_80F7C54
- pause 60
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BFA, 5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE7F1
- special sub_80F7B40
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0C23, 4
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE83B:: @ 81AE83B
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0BA6, 4
- release
- end
diff --git a/data/scripts/berry_tree.inc b/data/scripts/berry_tree.inc
index 1bbe7d355..9e219a339 100644
--- a/data/scripts/berry_tree.inc
+++ b/data/scripts/berry_tree.inc
@@ -1,4 +1,4 @@
-BerryTreeScript:: @ 81A14DD
+S_BerryTree:: @ 81A14DD
special FieldObjectInteractionGetBerryTreeData
switch 0x8004
case 255, Route102_EventScript_1A1533
@@ -13,7 +13,7 @@ BerryTreeScript:: @ 81A14DD
Route102_EventScript_1A1533:: @ 81A1533
lockall
message Route102_Text_1A1946
- waittext
+ waitmessage
waitbutton
releaseall
end
@@ -21,11 +21,11 @@ Route102_EventScript_1A1533:: @ 81A1533
Route102_EventScript_1A153D:: @ 81A153D
lock
faceplayer
- specialval RESULT, PlayerHasBerries
+ specialvar RESULT, PlayerHasBerries
compare RESULT, 1
- jumpeq Route102_EventScript_1A1558
+ goto_if_eq Route102_EventScript_1A1558
message Route102_Text_1A16B6
- waittext
+ waitmessage
waitbutton
release
end
@@ -33,18 +33,18 @@ Route102_EventScript_1A153D:: @ 81A153D
Route102_EventScript_1A1558:: @ 81A1558
msgbox Route102_Text_1A16CD, 5
compare RESULT, 1
- jumpeq Route102_EventScript_1A1577
+ goto_if_eq Route102_EventScript_1A1577
compare RESULT, 0
- jumpeq Route102_EventScript_1A1593
+ goto_if_eq Route102_EventScript_1A1593
end
Route102_EventScript_1A1577:: @ 81A1577
fadescreen 1
- closebutton
+ closemessage
special sub_80B4EE4
waitstate
compare ITEM_ID, 0
- jumpeq Route102_EventScript_1A1593
+ goto_if_eq Route102_EventScript_1A1593
removeitem ITEM_ID, 1
call Route102_EventScript_1A16A9
@@ -55,84 +55,84 @@ Route102_EventScript_1A1593:: @ 81A1593
Route102_EventScript_1A1595:: @ 81A1595
lockall
message Route102_Text_1A172C
- waittext
+ waitmessage
waitbutton
- jump Route102_EventScript_1A165F
+ goto Route102_EventScript_1A165F
Route102_EventScript_1A15A2:: @ 81A15A2
lockall
message Route102_Text_1A174B
- waittext
+ waitmessage
waitbutton
- jump Route102_EventScript_1A165F
+ goto Route102_EventScript_1A165F
Route102_EventScript_1A15AF:: @ 81A15AF
lockall
message Route102_Text_1A175C
- waittext
+ waitmessage
waitbutton
- jump Route102_EventScript_1A165F
+ goto Route102_EventScript_1A165F
Route102_EventScript_1A15BC:: @ 81A15BC
call Route102_EventScript_1A15CE
lockall
message Route102_Text_1A177D
- waittext
+ waitmessage
waitbutton
- jump Route102_EventScript_1A165F
+ goto Route102_EventScript_1A165F
Route102_EventScript_1A15CE:: @ 81A15CE
compare 0x8005, 0
- jumpeq Route102_EventScript_1A15F2
+ goto_if_eq Route102_EventScript_1A15F2
compare 0x8005, 4
- jumpeq Route102_EventScript_1A15EB
- buffertext 1, Route102_Text_1A17B7
+ goto_if_eq Route102_EventScript_1A15EB
+ getstring 1, Route102_Text_1A17B7
return
Route102_EventScript_1A15EB:: @ 81A15EB
- buffertext 1, Route102_Text_1A179F
+ getstring 1, Route102_Text_1A179F
return
Route102_EventScript_1A15F2:: @ 81A15F2
- buffertext 1, Route102_Text_1A17B0
+ getstring 1, Route102_Text_1A17B0
return
Route102_EventScript_1A15F9:: @ 81A15F9
- buffernum 1, 0x8006
+ getnumberstring 1, 0x8006
lock
faceplayer
msgbox Route102_Text_1A17C0, 5
compare RESULT, 1
- jumpeq Route102_EventScript_1A161D
+ goto_if_eq Route102_EventScript_1A161D
compare RESULT, 0
- jumpeq Route102_EventScript_1A164B
+ goto_if_eq Route102_EventScript_1A164B
Route102_EventScript_1A161D:: @ 81A161D
special FieldObjectInteractionPickBerryTree
compare 0x8004, 0
- jumpeq Route102_EventScript_1A1642
+ goto_if_eq Route102_EventScript_1A1642
special FieldObjectInteractionRemoveBerryTree
message Route102_Text_1A17FD
- fanfare 387
- waittext
+ playfanfare 387
+ waitmessage
waitfanfare
waitbutton
message Route102_Text_1A181A
- waittext
+ waitmessage
waitbutton
release
end
Route102_EventScript_1A1642:: @ 81A1642
message Route102_Text_1A1881
- waittext
+ waitmessage
waitbutton
release
end
Route102_EventScript_1A164B:: @ 81A164B
message Route102_Text_1A18C5
- waittext
+ waitmessage
waitbutton
release
end
@@ -147,12 +147,12 @@ gUnknown_081A1654:: @ 81A1654
Route102_EventScript_1A165F:: @ 81A165F
checkitem ITEM_WAILMER_PAIL, 1
compare RESULT, 0
- jumpeq Route102_EventScript_1A168D
+ goto_if_eq Route102_EventScript_1A168D
msgbox Route102_Text_1A18E6, 5
compare RESULT, 1
- jumpeq Route102_EventScript_1A1693
+ goto_if_eq Route102_EventScript_1A1693
compare RESULT, 0
- jumpeq Route102_EventScript_1A168D
+ goto_if_eq Route102_EventScript_1A168D
Route102_EventScript_1A168D:: @ 81A168D
releaseall
@@ -164,20 +164,20 @@ gUnknown_081A168F:: @ 81A168F
Route102_EventScript_1A1693:: @ 81A1693
message Route102_Text_1A1912
- waittext
+ waitmessage
special FieldObjectInteractionWaterBerryTree
special DoWateringBerryTreeAnim
waitstate
message Route102_Text_1A1925
- waittext
+ waitmessage
waitbutton
releaseall
end
Route102_EventScript_1A16A9:: @ 81A16A9
special FieldObjectInteractionPlantBerryTree
- inccounter GAME_STAT_PLANTED_BERRIES
+ incrementgamestat GAME_STAT_PLANTED_BERRIES
message Route102_Text_1A16FB
- waittext
+ waitmessage
waitbutton
return
diff --git a/data/scripts/cable_club.inc b/data/scripts/cable_club.inc
index 4a919c597..9f44e131b 100644
--- a/data/scripts/cable_club.inc
+++ b/data/scripts/cable_club.inc
@@ -21,7 +21,7 @@ VerdanturfTown_PokemonCenter_2F_MapScript2_1A3D03:: @ 81A3D03
.2byte 0
OldaleTown_PokemonCenter_2F_EventScript_1A3D2D:: @ 81A3D2D
- spriteface 0x8007, 4
+ turnobject 0x8007, 4
end
DewfordTown_PokemonCenter_2F_MapScript1_1A3D32:: @ 81A3D32
@@ -40,15 +40,15 @@ SlateportCity_PokemonCenter_2F_MapScript1_1A3D32:: @ 81A3D32
SootopolisCity_PokemonCenter_2F_MapScript1_1A3D32:: @ 81A3D32
VerdanturfTown_PokemonCenter_2F_MapScript1_1A3D32:: @ 81A3D32
compare 0x4087, 1
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A
compare 0x4087, 2
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A
compare 0x4087, 5
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D6A
compare 0x4087, 3
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D74
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D74
compare 0x4087, 4
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3D7E
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3D7E
end
OldaleTown_PokemonCenter_2F_EventScript_1A3D6A:: @ 81A3D6A
@@ -88,12 +88,12 @@ VerdanturfTown_PokemonCenter_2F_MapScript2_1A3D88:: @ 81A3D88
OldaleTown_PokemonCenter_2F_EventScript_1A3DB2:: @ 81A3DB2
special CloseLink
setvar 0x4087, 0
- move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358
- waitmove 0
+ applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4358
+ waitmovement 0
compare 0x8007, 0
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3DD9
- move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354
- waitmove 0
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3DD9
+ applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354
+ waitmovement 0
OldaleTown_PokemonCenter_2F_EventScript_1A3DD9:: @ 81A3DD9
return
@@ -102,18 +102,18 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3DDA:: @ 81A3DDA
special CloseLink
setvar 0x4087, 0
compare 0x8007, 0
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C
- move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4356
- waitmove 0
- move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358
- waitmove 0
- move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354
- waitmove 0
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C
+ applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4356
+ waitmovement 0
+ applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4358
+ waitmovement 0
+ applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354
+ waitmovement 0
return
OldaleTown_PokemonCenter_2F_EventScript_1A3E0C:: @ 81A3E0C
- move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358
- waitmove 0
+ applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4358
+ waitmovement 0
return
OldaleTown_PokemonCenter_2F_EventScript_1A3E17:: @ 81A3E17
@@ -121,7 +121,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3E17:: @ 81A3E17
call OldaleTown_PokemonCenter_2F_EventScript_1A3E30
setmaptile 8, 3, 605, 1
special DrawWholeMapView
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
@@ -129,20 +129,20 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3E30:: @ 81A3E30
special CloseLink
setvar 0x4087, 0
compare 0x8007, 0
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C
- move 255, OldaleTown_PokemonCenter_2F_Movement_1A4361
- waitmove 0
- move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4356
- waitmove 0
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3E0C
+ applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4361
+ waitmovement 0
+ applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4356
+ waitmovement 0
message OldaleTown_PokemonCenter_2F_Text_1A4E50
- waittext
- playsfx 21
+ waitmessage
+ playse 21
message OldaleTown_PokemonCenter_2F_Text_1A4E79
- waittext
- move 255, OldaleTown_PokemonCenter_2F_Movement_1A4358
- waitmove 0
- move 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354
- waitmove 0
+ waitmessage
+ applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A4358
+ waitmovement 0
+ applymovement 0x8007, OldaleTown_PokemonCenter_2F_Movement_1A4354
+ waitmovement 0
return
OldaleTown_PokemonCenter_2F_EventScript_1A3E7B:: @ 81A3E7B
@@ -156,7 +156,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3E8D:: @ 81A3E8D
call OldaleTown_PokemonCenter_2F_EventScript_1A3DDA
setmaptile 5, 3, 605, 1
special DrawWholeMapView
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
@@ -175,12 +175,12 @@ SlateportCity_PokemonCenter_2F_EventScript_1A3EA6:: @ 81A3EA6
SootopolisCity_PokemonCenter_2F_EventScript_1A3EA6:: @ 81A3EA6
VerdanturfTown_PokemonCenter_2F_EventScript_1A3EA6:: @ 81A3EA6
checkflag 2049
- jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A4342
+ goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_1A4342
copyvar 0x8007, LAST_TALKED
lock
faceplayer
message OldaleTown_PokemonCenter_2F_Text_1A4510
- waittext
+ waitmessage
OldaleTown_PokemonCenter_2F_EventScript_1A3EBC:: @ 81A3EBC
multichoice 17, 6, 17, 0
@@ -191,54 +191,54 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3EBC:: @ 81A3EBC
case 127, OldaleTown_PokemonCenter_2F_EventScript_1A4319
OldaleTown_PokemonCenter_2F_EventScript_1A3EF2:: @ 81A3EF2
- call OldaleTown_PokemonCenter_2F_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319
call OldaleTown_PokemonCenter_2F_EventScript_1A3FEF
compare 0x8004, 0
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319
message OldaleTown_PokemonCenter_2F_Text_1A490C
- waittext
+ waitmessage
special sub_808347C
waitstate
compare RESULT, 1
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3F5E
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3F5E
compare RESULT, 2
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4301
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4301
compare RESULT, 3
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A430D
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A430D
compare RESULT, 4
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4068
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4068
compare RESULT, 5
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319
compare RESULT, 6
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42F5
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A42F5
OldaleTown_PokemonCenter_2F_EventScript_1A3F5E:: @ 81A3F5E
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
special SavePlayerParty
special LoadPlayerBag
copyvar 0x4087, 0x8004
- message2 OldaleTown_PokemonCenter_2F_Text_1A4A22
- waittext
+ messageautoscroll OldaleTown_PokemonCenter_2F_Text_1A4A22
+ waitmessage
setmaptile 5, 3, 514, 0
special DrawWholeMapView
- pause 60
- move LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356
- waitmove 0
- closebutton
- move 255, OldaleTown_PokemonCenter_2F_Movement_1A435B
- waitmove 0
- setdooropened 5, 1
- doorchange
- move 255, OldaleTown_PokemonCenter_2F_Movement_1A435F
- waitmove 0
- spriteinvisible 255, 0, 0
- setdoorclosed 5, 1
- doorchange
+ delay 60
+ applymovement LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356
+ waitmovement 0
+ closemessage
+ applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435B
+ waitmovement 0
+ opendoor 5, 1
+ waitdooranim
+ applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435F
+ waitmovement 0
+ hideobject 255, 0, 0
+ closedoor 5, 1
+ waitdooranim
release
compare 0x8004, 5
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A3FCD
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A3FCD
special SetCableClubWarp
warp SingleBattleColosseum, 255, 6, 8
special DoCableClubWarp
@@ -254,15 +254,15 @@ OldaleTown_PokemonCenter_2F_EventScript_1A3FCD:: @ 81A3FCD
OldaleTown_PokemonCenter_2F_EventScript_1A3FDD:: @ 81A3FDD
message OldaleTown_PokemonCenter_2F_Text_1A4696
- waittext
+ waitmessage
waitbutton
message OldaleTown_PokemonCenter_2F_Text_1A4826
- waittext
- jump OldaleTown_PokemonCenter_2F_EventScript_1A3EBC
+ waitmessage
+ goto OldaleTown_PokemonCenter_2F_EventScript_1A3EBC
OldaleTown_PokemonCenter_2F_EventScript_1A3FEF:: @ 81A3FEF
message OldaleTown_PokemonCenter_2F_Text_1A4840
- waittext
+ waitmessage
multichoice 0, 0, 18, 0
switch RESULT
case 0, OldaleTown_PokemonCenter_2F_EventScript_1A4062
@@ -282,15 +282,15 @@ OldaleTown_PokemonCenter_2F_EventScript_1A403C:: @ 81A403C
OldaleTown_PokemonCenter_2F_EventScript_1A4042:: @ 81A4042
special CheckForAlivePartyMons
compare RESULT, 0
- jumpif 5, OldaleTown_PokemonCenter_2F_EventScript_1A4056
+ goto_if 5, OldaleTown_PokemonCenter_2F_EventScript_1A4056
setvar 0x8004, 2
return
OldaleTown_PokemonCenter_2F_EventScript_1A4056:: @ 81A4056
message OldaleTown_PokemonCenter_2F_Text_1A486A
- waittext
+ waitmessage
waitbutton
- jump OldaleTown_PokemonCenter_2F_EventScript_1A3FEF
+ goto OldaleTown_PokemonCenter_2F_EventScript_1A3FEF
OldaleTown_PokemonCenter_2F_EventScript_1A4062:: @ 81A4062
setvar 0x8004, 1
@@ -301,33 +301,33 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4068:: @ 81A4068
case 1, OldaleTown_PokemonCenter_2F_EventScript_1A40B1
case 2, OldaleTown_PokemonCenter_2F_EventScript_1A40A2
case 5, OldaleTown_PokemonCenter_2F_EventScript_1A4093
- jump OldaleTown_PokemonCenter_2F_EventScript_1A432D
+ goto OldaleTown_PokemonCenter_2F_EventScript_1A432D
OldaleTown_PokemonCenter_2F_EventScript_1A4093:: @ 81A4093
special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4C03
- waittext
+ waitmessage
waitbutton
- jump OldaleTown_PokemonCenter_2F_EventScript_1A40C0
+ goto OldaleTown_PokemonCenter_2F_EventScript_1A40C0
OldaleTown_PokemonCenter_2F_EventScript_1A40A2:: @ 81A40A2
special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4BCC
- waittext
+ waitmessage
waitbutton
- jump OldaleTown_PokemonCenter_2F_EventScript_1A40C0
+ goto OldaleTown_PokemonCenter_2F_EventScript_1A40C0
OldaleTown_PokemonCenter_2F_EventScript_1A40B1:: @ 81A40B1
special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4B95
- waittext
+ waitmessage
waitbutton
- jump OldaleTown_PokemonCenter_2F_EventScript_1A40C0
+ goto OldaleTown_PokemonCenter_2F_EventScript_1A40C0
OldaleTown_PokemonCenter_2F_EventScript_1A40C0:: @ 81A40C0
special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4C38
- waittext
+ waitmessage
waitbutton
release
end
@@ -347,83 +347,83 @@ SlateportCity_PokemonCenter_2F_EventScript_1A40CC:: @ 81A40CC
SootopolisCity_PokemonCenter_2F_EventScript_1A40CC:: @ 81A40CC
VerdanturfTown_PokemonCenter_2F_EventScript_1A40CC:: @ 81A40CC
checkflag 2049
- jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A4339
+ goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_1A4339
copyvar 0x8007, LAST_TALKED
lock
faceplayer
msgbox OldaleTown_PokemonCenter_2F_Text_1A457E, 5
compare RESULT, 0
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319
compare RESULT, 1
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A40FA
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A40FA
OldaleTown_PokemonCenter_2F_EventScript_1A40FA:: @ 81A40FA
call OldaleTown_PokemonCenter_2F_EventScript_1A41BB
compare RESULT, 0
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
- call OldaleTown_PokemonCenter_2F_EventScript_19F806
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319
message OldaleTown_PokemonCenter_2F_Text_1A490C
- waittext
+ waitmessage
special sub_80834E4
waitstate
compare RESULT, 1
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4166
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4166
compare RESULT, 2
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4301
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4301
compare RESULT, 3
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A430D
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A430D
compare RESULT, 4
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A432D
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A432D
compare RESULT, 5
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319
compare RESULT, 6
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42F5
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A42F5
OldaleTown_PokemonCenter_2F_EventScript_1A4166:: @ 81A4166
setvar 0x8004, 3
copyvar 0x4087, 0x8004
- message2 OldaleTown_PokemonCenter_2F_Text_1A4A22
- waittext
+ messageautoscroll OldaleTown_PokemonCenter_2F_Text_1A4A22
+ waitmessage
setmaptile 8, 3, 514, 0
special DrawWholeMapView
- pause 60
- move LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356
- waitmove 0
- closebutton
- move 255, OldaleTown_PokemonCenter_2F_Movement_1A435B
- waitmove 0
- setdooropened 8, 1
- doorchange
- move 255, OldaleTown_PokemonCenter_2F_Movement_1A435F
- waitmove 0
- spriteinvisible 255, 0, 0
- setdoorclosed 8, 1
- doorchange
+ delay 60
+ applymovement LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356
+ waitmovement 0
+ closemessage
+ applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435B
+ waitmovement 0
+ opendoor 8, 1
+ waitdooranim
+ applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435F
+ waitmovement 0
+ hideobject 255, 0, 0
+ closedoor 8, 1
+ waitdooranim
release
- jump OldaleTown_PokemonCenter_2F_EventScript_1A4325
+ goto OldaleTown_PokemonCenter_2F_EventScript_1A4325
OldaleTown_PokemonCenter_2F_EventScript_1A41BB:: @ 81A41BB
- specialval RESULT, CalculatePlayerPartyCount
+ specialvar RESULT, CalculatePlayerPartyCount
compare RESULT, 2
- jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A41E1
- specialval RESULT, GetNameOfEnigmaBerryInPlayerParty
+ goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_1A41E1
+ specialvar RESULT, GetNameOfEnigmaBerryInPlayerParty
compare RESULT, 1
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A41EE
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A41EE
setvar RESULT, 1
return
OldaleTown_PokemonCenter_2F_EventScript_1A41E1:: @ 81A41E1
message OldaleTown_PokemonCenter_2F_Text_1A48A3
- waittext
+ waitmessage
waitbutton
setvar RESULT, 0
return
OldaleTown_PokemonCenter_2F_EventScript_1A41EE:: @ 81A41EE
message OldaleTown_PokemonCenter_2F_Text_1A48DD
- waittext
+ waitmessage
waitbutton
setvar RESULT, 0
return
@@ -444,68 +444,68 @@ SlateportCity_PokemonCenter_2F_EventScript_1A41FB:: @ 81A41FB
SootopolisCity_PokemonCenter_2F_EventScript_1A41FB:: @ 81A41FB
VerdanturfTown_PokemonCenter_2F_EventScript_1A41FB:: @ 81A41FB
checkflag 2072
- jumpif 0, OldaleTown_PokemonCenter_2F_EventScript_1A434B
+ goto_if 0, OldaleTown_PokemonCenter_2F_EventScript_1A434B
copyvar 0x8007, LAST_TALKED
lock
faceplayer
msgbox OldaleTown_PokemonCenter_2F_Text_1A45FE, 5
compare RESULT, 0
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319
compare RESULT, 1
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4229
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4229
OldaleTown_PokemonCenter_2F_EventScript_1A4229:: @ 81A4229
- call OldaleTown_PokemonCenter_2F_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319
message OldaleTown_PokemonCenter_2F_Text_1A490C
- waittext
+ waitmessage
special sub_808350C
waitstate
special sub_80835D8
waitstate
compare RESULT, 1
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4294
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4294
compare RESULT, 2
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4301
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4301
compare RESULT, 3
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A430D
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A430D
compare RESULT, 4
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A432D
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A432D
compare RESULT, 5
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A4319
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A4319
compare RESULT, 6
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42F5
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A42F5
compare RESULT, 7
- jumpeq OldaleTown_PokemonCenter_2F_EventScript_1A42E9
+ goto_if_eq OldaleTown_PokemonCenter_2F_EventScript_1A42E9
OldaleTown_PokemonCenter_2F_EventScript_1A4294:: @ 81A4294
setvar 0x8004, 4
copyvar 0x4087, 0x8004
- message2 OldaleTown_PokemonCenter_2F_Text_1A4A22
- waittext
+ messageautoscroll OldaleTown_PokemonCenter_2F_Text_1A4A22
+ waitmessage
setmaptile 11, 3, 514, 0
special DrawWholeMapView
- pause 60
- move LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356
- waitmove 0
- closebutton
- move 255, OldaleTown_PokemonCenter_2F_Movement_1A435B
- waitmove 0
- setdooropened 11, 1
- doorchange
- move 255, OldaleTown_PokemonCenter_2F_Movement_1A435F
- waitmove 0
- spriteinvisible 255, 0, 0
- setdoorclosed 11, 1
- doorchange
+ delay 60
+ applymovement LAST_TALKED, OldaleTown_PokemonCenter_2F_Movement_1A4356
+ waitmovement 0
+ closemessage
+ applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435B
+ waitmovement 0
+ opendoor 11, 1
+ waitdooranim
+ applymovement 255, OldaleTown_PokemonCenter_2F_Movement_1A435F
+ waitmovement 0
+ hideobject 255, 0, 0
+ closedoor 11, 1
+ waitdooranim
release
- jump OldaleTown_PokemonCenter_2F_EventScript_1A4325
+ goto OldaleTown_PokemonCenter_2F_EventScript_1A4325
OldaleTown_PokemonCenter_2F_EventScript_1A42E9:: @ 81A42E9
special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4AC8
- waittext
+ waitmessage
waitbutton
release
end
@@ -513,7 +513,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A42E9:: @ 81A42E9
OldaleTown_PokemonCenter_2F_EventScript_1A42F5:: @ 81A42F5
special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4A85
- waittext
+ waitmessage
waitbutton
release
end
@@ -521,7 +521,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A42F5:: @ 81A42F5
OldaleTown_PokemonCenter_2F_EventScript_1A4301:: @ 81A4301
special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4A30
- waittext
+ waitmessage
waitbutton
release
end
@@ -529,7 +529,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4301:: @ 81A4301
OldaleTown_PokemonCenter_2F_EventScript_1A430D:: @ 81A430D
special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4B1D
- waittext
+ waitmessage
waitbutton
release
end
@@ -537,7 +537,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A430D:: @ 81A430D
OldaleTown_PokemonCenter_2F_EventScript_1A4319:: @ 81A4319
special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4B59
- waittext
+ waitmessage
waitbutton
release
end
@@ -551,7 +551,7 @@ OldaleTown_PokemonCenter_2F_EventScript_1A4325:: @ 81A4325
OldaleTown_PokemonCenter_2F_EventScript_1A432D:: @ 81A432D
special CloseLink
message OldaleTown_PokemonCenter_2F_Text_1A4B6C
- waittext
+ waitmessage
waitbutton
release
end
@@ -599,7 +599,7 @@ gUnknown_081A4363:: @ 81A4363
lockall
special ShowLinkBattleRecords
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
@@ -620,7 +620,7 @@ DoubleBattleColosseum_EventScript_1A4383:: @ 81A4383
special sub_80C5568
waitstate
compare RESULT, 0
- jumpeq DoubleBattleColosseum_EventScript_1A43EF
+ goto_if_eq DoubleBattleColosseum_EventScript_1A43EF
setvar 0x8005, 0
special sub_8083B90
waitstate
@@ -631,7 +631,7 @@ DoubleBattleColosseum_EventScript_1A439E:: @ 81A439E
special sub_80C5568
waitstate
compare RESULT, 0
- jumpeq DoubleBattleColosseum_EventScript_1A43EF
+ goto_if_eq DoubleBattleColosseum_EventScript_1A43EF
setvar 0x8005, 1
special sub_8083B90
waitstate
@@ -642,7 +642,7 @@ DoubleBattleColosseum_EventScript_1A43B9:: @ 81A43B9
special sub_80C5568
waitstate
compare RESULT, 0
- jumpeq DoubleBattleColosseum_EventScript_1A43EF
+ goto_if_eq DoubleBattleColosseum_EventScript_1A43EF
setvar 0x8005, 2
special sub_8083B90
waitstate
@@ -653,7 +653,7 @@ DoubleBattleColosseum_EventScript_1A43D4:: @ 81A43D4
special sub_80C5568
waitstate
compare RESULT, 0
- jumpeq DoubleBattleColosseum_EventScript_1A43EF
+ goto_if_eq DoubleBattleColosseum_EventScript_1A43EF
setvar 0x8005, 3
special sub_8083B90
waitstate
@@ -691,7 +691,7 @@ RecordCorner_EventScript_1A4418:: @ 81A4418
special sub_80B929C
waitstate
compare 0x4001, 0
- jumpif 5, RecordCorner_EventScript_1A446C
+ goto_if 5, RecordCorner_EventScript_1A446C
end
RecordCorner_EventScript_1A442D:: @ 81A442D
@@ -699,7 +699,7 @@ RecordCorner_EventScript_1A442D:: @ 81A442D
special sub_80B929C
waitstate
compare 0x4001, 0
- jumpif 5, RecordCorner_EventScript_1A446C
+ goto_if 5, RecordCorner_EventScript_1A446C
end
RecordCorner_EventScript_1A4442:: @ 81A4442
@@ -707,7 +707,7 @@ RecordCorner_EventScript_1A4442:: @ 81A4442
special sub_80B929C
waitstate
compare 0x4001, 0
- jumpif 5, RecordCorner_EventScript_1A446C
+ goto_if 5, RecordCorner_EventScript_1A446C
end
RecordCorner_EventScript_1A4457:: @ 81A4457
@@ -715,20 +715,20 @@ RecordCorner_EventScript_1A4457:: @ 81A4457
special sub_80B929C
waitstate
compare 0x4001, 0
- jumpif 5, RecordCorner_EventScript_1A446C
+ goto_if 5, RecordCorner_EventScript_1A446C
end
RecordCorner_EventScript_1A446C:: @ 81A446C
- bufferitem 1, 0x4001
+ getitemname 1, 0x4001
message RecordCorner_Text_1A4E3B
- waittext
+ waitmessage
waitbutton
releaseall
end
TradeRoom_ReadTrainerCard1:: @ 81A4479
message CableClub_LookAtTrainerCard1
- waittext
+ waitmessage
waitbutton
fadescreen 1
special sub_8083BDC
@@ -737,7 +737,7 @@ TradeRoom_ReadTrainerCard1:: @ 81A4479
TradeRoom_ReadTrainerCard2:: @ 81A4487
message CableClub_LookAtTrainerCard2
- waittext
+ waitmessage
waitbutton
fadescreen 1
special sub_8083BDC
@@ -746,59 +746,59 @@ TradeRoom_ReadTrainerCard2:: @ 81A4487
TradeRoom_TooBusyToNotice:: @ 81A4495
message CableClub_TooBusyToNotice
- waittext
+ waitmessage
waitbutton
- closebutton
+ closemessage
end
SingleBattleColosseum_EventScript_1A449E:: @ 81A449E
special sub_8064EAC
message SingleBattleColosseum_Text_1A4D7E
- waittext
+ waitmessage
waitbutton
special sub_8064ED4
- closebutton
+ closemessage
end
TradeCenter_EventScript_1A44AD:: @ 81A44AD
special sub_8064EAC
message TradeCenter_Text_1A4DAB
- waittext
+ waitmessage
waitbutton
special sub_8064ED4
- closebutton
+ closemessage
end
RecordCorner_EventScript_1A44BC:: @ 81A44BC
compare 0x4000, 0
- jumpif 5, RecordCorner_EventScript_1A44D6
+ goto_if 5, RecordCorner_EventScript_1A44D6
special sub_8064EAC
message RecordCorner_Text_1A4DD7
- waittext
+ waitmessage
waitbutton
special sub_8064ED4
- closebutton
+ closemessage
end
RecordCorner_EventScript_1A44D6:: @ 81A44D6
special sub_8064EAC
message RecordCorner_Text_1A4DF7
- waittext
+ waitmessage
waitbutton
special sub_8064ED4
- closebutton
+ closemessage
end
TradeRoom_PromptToCancelLink:: @ 81A44E5
msgbox TradeRoom_WillLinkBeTerminated, 5
compare RESULT, 1
- jumpeq TradeRoom_TerminateLink
- hidebox 0, 0, 29, 19
+ goto_if_eq TradeRoom_TerminateLink
+ erasebox 0, 0, 29, 19
end
TradeRoom_TerminateLink:: @ 81A44FE
- message2 TradeRoom_TerminatingLink
- waittext
+ messageautoscroll TradeRoom_TerminatingLink
+ waitmessage
special sub_80839D0
end
diff --git a/data/scripts/contest_hall.inc b/data/scripts/contest_hall.inc
index 1952264d2..1b5c29fee 100644
--- a/data/scripts/contest_hall.inc
+++ b/data/scripts/contest_hall.inc
@@ -6,18 +6,18 @@ VerdanturfTown_ContestLobby_EventScript_1A4E92:: @ 81A4E92
faceplayer
checkitem ITEM_CONTEST_PASS, 1
compare RESULT, 0
- callif 1, FallarborTown_ContestLobby_EventScript_1A4EDD
+ call_if 1, FallarborTown_ContestLobby_EventScript_1A4EDD
compare 0x408a, 0
- jumpif 5, FallarborTown_ContestLobby_EventScript_1A4F4E
+ goto_if 5, FallarborTown_ContestLobby_EventScript_1A4F4E
checkflag 1
- jumpeq FallarborTown_ContestLobby_EventScript_1A4F8F
- bufferstd 0, 0x800b
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1A4F8F
+ getstdstring 0, 0x800b
msgbox FallarborTown_ContestLobby_Text_1A5DFC, 4
checkitem ITEM_CONTEST_PASS, 1
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1A4EE1
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1A4EE1
setflag 1
- jump FallarborTown_ContestLobby_EventScript_1A4F8F
+ goto FallarborTown_ContestLobby_EventScript_1A4F8F
end
FallarborTown_ContestLobby_EventScript_1A4EDD:: @ 81A4EDD
@@ -26,7 +26,7 @@ FallarborTown_ContestLobby_EventScript_1A4EDD:: @ 81A4EDD
FallarborTown_ContestLobby_EventScript_1A4EE1:: @ 81A4EE1
compare CONTEST_RANK, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1A4EF6
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1A4EF6
msgbox FallarborTown_ContestLobby_Text_1A6340, 4
releaseall
end
@@ -34,20 +34,20 @@ FallarborTown_ContestLobby_EventScript_1A4EE1:: @ 81A4EE1
FallarborTown_ContestLobby_EventScript_1A4EF6:: @ 81A4EF6
msgbox FallarborTown_ContestLobby_Text_1A64F4, 5
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1A4F13
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1A4F13
msgbox FallarborTown_ContestLobby_Text_1A65EA, 4
releaseall
end
FallarborTown_ContestLobby_EventScript_1A4F13:: @ 81A4F13
checkflag 150
- jumpeq FallarborTown_ContestLobby_EventScript_1A4F44
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1A4F44
msgbox FallarborTown_ContestLobby_Text_1A6583, 4
giveitem ITEM_CONTEST_PASS
setflag 150
setflag 1
msgbox FallarborTown_ContestLobby_Text_1A5E98, 4
- jump FallarborTown_ContestLobby_EventScript_1A4F8F
+ goto FallarborTown_ContestLobby_EventScript_1A4F8F
end
FallarborTown_ContestLobby_EventScript_1A4F44:: @ 81A4F44
@@ -64,9 +64,9 @@ FallarborTown_ContestLobby_EventScript_1A4F4E:: @ 81A4F4E
FallarborTown_ContestLobby_EventScript_1A4F67:: @ 81A4F67
giveitem ITEM_LUXURY_BALL
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1A4F86
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1A4F86
setvar 0x408a, 0
- closebutton
+ closemessage
release
end
@@ -76,7 +76,7 @@ FallarborTown_ContestLobby_EventScript_1A4F86:: @ 81A4F86
FallarborTown_ContestLobby_EventScript_1A4F8F:: @ 81A4F8F
message FallarborTown_ContestLobby_Text_1A5E46
- waittext
+ waitmessage
multichoice 0, 0, 2, 0
switch RESULT
case 0, FallarborTown_ContestLobby_EventScript_1A5097
@@ -87,7 +87,7 @@ FallarborTown_ContestLobby_EventScript_1A4F8F:: @ 81A4F8F
FallarborTown_ContestLobby_EventScript_1A4FCC:: @ 81A4FCC
message FallarborTown_ContestLobby_Text_1A5E7C
- waittext
+ waitmessage
multichoice 0, 0, 3, 0
switch RESULT
case 0, FallarborTown_ContestLobby_EventScript_1A5014
@@ -99,17 +99,17 @@ FallarborTown_ContestLobby_EventScript_1A4FCC:: @ 81A4FCC
FallarborTown_ContestLobby_EventScript_1A5014:: @ 81A5014
msgbox FallarborTown_ContestLobby_Text_1A5E98, 4
- jump FallarborTown_ContestLobby_EventScript_1A4FCC
+ goto FallarborTown_ContestLobby_EventScript_1A4FCC
end
FallarborTown_ContestLobby_EventScript_1A5022:: @ 81A5022
msgbox FallarborTown_ContestLobby_Text_1A609B, 4
- jump FallarborTown_ContestLobby_EventScript_1A4FCC
+ goto FallarborTown_ContestLobby_EventScript_1A4FCC
end
FallarborTown_ContestLobby_EventScript_1A5030:: @ 81A5030
msgbox FallarborTown_ContestLobby_Text_1A613F, 4
- jump FallarborTown_ContestLobby_EventScript_1A4FCC
+ goto FallarborTown_ContestLobby_EventScript_1A4FCC
end
FallarborTown_ContestLobby_EventScript_1A503E:: @ 81A503E
@@ -121,34 +121,34 @@ FallarborTown_ContestLobby_EventScript_1A5048:: @ 81A5048
msgbox FallarborTown_ContestLobby_Text_1A6319, 4
choosecontestpkmn
compare 0x8004, 255
- jumpeq FallarborTown_ContestLobby_EventScript_1A5097
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1A5097
special sub_80C43F4
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1A50C8
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1A50C8
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1A50D7
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1A50D7
compare RESULT, 2
- jumpeq FallarborTown_ContestLobby_EventScript_1A50FB
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1A50FB
compare RESULT, 3
- jumpeq FallarborTown_ContestLobby_EventScript_1A511F
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1A511F
compare RESULT, 4
- jumpeq FallarborTown_ContestLobby_EventScript_1A512E
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1A512E
end
FallarborTown_ContestLobby_EventScript_1A5097:: @ 81A5097
message FallarborTown_ContestLobby_Text_1A6623
- waittext
+ waitmessage
multichoice 0, 0, 4, 0
switch RESULT
case 5, FallarborTown_ContestLobby_EventScript_1A503E
case 127, FallarborTown_ContestLobby_EventScript_1A503E
copyvar CONTEST_CATEGORY, RESULT
- jump FallarborTown_ContestLobby_EventScript_1A5048
+ goto FallarborTown_ContestLobby_EventScript_1A5048
end
FallarborTown_ContestLobby_EventScript_1A50C8:: @ 81A50C8
msgbox FallarborTown_ContestLobby_Text_1A664A, 4
- jump FallarborTown_ContestLobby_EventScript_1A5048
+ goto FallarborTown_ContestLobby_EventScript_1A5048
release
end
@@ -168,19 +168,19 @@ FallarborTown_ContestLobby_EventScript_1A50FB:: @ 81A50FB
FallarborTown_ContestLobby_EventScript_1A511F:: @ 81A511F
msgbox FallarborTown_ContestLobby_Text_1A669F, 4
- jump FallarborTown_ContestLobby_EventScript_1A5048
+ goto FallarborTown_ContestLobby_EventScript_1A5048
release
end
FallarborTown_ContestLobby_EventScript_1A512E:: @ 81A512E
msgbox FallarborTown_ContestLobby_Text_1A66DC, 4
- jump FallarborTown_ContestLobby_EventScript_1A5048
+ goto FallarborTown_ContestLobby_EventScript_1A5048
release
end
FallarborTown_ContestLobby_EventScript_1A513D:: @ 81A513D
msgbox FallarborTown_ContestLobby_Text_1A67C1, 4
- closebutton
+ closemessage
releaseall
setvar 0x4086, 1
return
@@ -188,10 +188,10 @@ FallarborTown_ContestLobby_EventScript_1A513D:: @ 81A513D
LinkContestRoom1_EventScript_1A514D:: @ 81A514D
setvar 0x8006, 0
lockall
- move 14, LinkContestRoom1_Movement_1A5DBF
- waitmove 0
- move 1, LinkContestRoom1_Movement_1A5D85
- waitmove 0
+ applymovement 14, LinkContestRoom1_Movement_1A5DBF
+ waitmovement 0
+ applymovement 1, LinkContestRoom1_Movement_1A5D85
+ waitmovement 0
releaseall
call LinkContestRoom1_EventScript_1A51A0
call LinkContestRoom1_EventScript_1A51EA
@@ -260,24 +260,24 @@ LinkContestRoom1_EventScript_1A523F:: @ 81A523F
return
LinkContestRoom1_EventScript_1A5245:: @ 81A5245
- bufferstd 1, 0x8008
- bufferstd 2, 0x8009
+ getstdstring 1, 0x8008
+ getstdstring 2, 0x8009
call LinkContestRoom1_EventScript_1A525F
lockall
- move 1, LinkContestRoom1_Movement_1A5D87
- waitmove 0
+ applymovement 1, LinkContestRoom1_Movement_1A5D87
+ waitmovement 0
releaseall
return
LinkContestRoom1_EventScript_1A525F:: @ 81A525F
compare 0x4088, 5
- jumpeq LinkContestRoom1_EventScript_1A5273
+ goto_if_eq LinkContestRoom1_EventScript_1A5273
msgbox LinkContestRoom1_Text_1A68F0, 3
return
LinkContestRoom1_EventScript_1A5273:: @ 81A5273
- message2 LinkContestRoom1_Text_1A6976
- waittext
+ messageautoscroll LinkContestRoom1_Text_1A6976
+ waitmessage
return
LinkContestRoom1_EventScript_1A527A:: @ 81A527A
@@ -288,50 +288,50 @@ LinkContestRoom1_EventScript_1A527A:: @ 81A527A
call LinkContestRoom1_EventScript_1A5880
addvar 0x8006, 1
compare 0x8006, 4
- jumpif 5, LinkContestRoom1_EventScript_1A527A
+ goto_if 5, LinkContestRoom1_EventScript_1A527A
call LinkContestRoom1_EventScript_1A5377
setvar 0x4001, 6
return
LinkContestRoom1_EventScript_1A52AE:: @ 81A52AE
compare 0x8006, 0
- jumpeq LinkContestRoom1_EventScript_1A52DB
+ goto_if_eq LinkContestRoom1_EventScript_1A52DB
compare 0x8006, 1
- jumpeq LinkContestRoom1_EventScript_1A52ED
+ goto_if_eq LinkContestRoom1_EventScript_1A52ED
compare 0x8006, 2
- jumpeq LinkContestRoom1_EventScript_1A52FF
+ goto_if_eq LinkContestRoom1_EventScript_1A52FF
compare 0x8006, 3
- jumpeq LinkContestRoom1_EventScript_1A5311
+ goto_if_eq LinkContestRoom1_EventScript_1A5311
return
LinkContestRoom1_EventScript_1A52DB:: @ 81A52DB
lockall
- move 3, LinkContestRoom1_Movement_1A5DCE
- waitmove 0
+ applymovement 3, LinkContestRoom1_Movement_1A5DCE
+ waitmovement 0
releaseall
setvar 0x800b, 3
return
LinkContestRoom1_EventScript_1A52ED:: @ 81A52ED
lockall
- move 4, LinkContestRoom1_Movement_1A5DDA
- waitmove 0
+ applymovement 4, LinkContestRoom1_Movement_1A5DDA
+ waitmovement 0
releaseall
setvar 0x800b, 4
return
LinkContestRoom1_EventScript_1A52FF:: @ 81A52FF
lockall
- move 5, LinkContestRoom1_Movement_1A5DE2
- waitmove 0
+ applymovement 5, LinkContestRoom1_Movement_1A5DE2
+ waitmovement 0
releaseall
setvar 0x800b, 5
return
LinkContestRoom1_EventScript_1A5311:: @ 81A5311
lockall
- move 14, LinkContestRoom1_Movement_1A5DEA
- waitmove 0
+ applymovement 14, LinkContestRoom1_Movement_1A5DEA
+ waitmovement 0
releaseall
setvar 0x800b, 14
return
@@ -339,108 +339,108 @@ LinkContestRoom1_EventScript_1A5311:: @ 81A5311
LinkContestRoom1_EventScript_1A5323:: @ 81A5323
special sub_80C4C64
addvar 0x8006, 1
- buffernum 1, 0x8006
+ getnumberstring 1, 0x8006
lockall
- move 0x800b, LinkContestRoom1_Movement_1A5D9C
- waitmove 0
+ applymovement 0x800b, LinkContestRoom1_Movement_1A5D9C
+ waitmovement 0
releaseall
- reappear 13
- playsfx 10
+ addobject 13
+ playse 10
lockall
- move 0x800b, LinkContestRoom1_Movement_1A5D9C
- waitmove 0
+ applymovement 0x800b, LinkContestRoom1_Movement_1A5D9C
+ waitmovement 0
releaseall
addvar 0x8006, -1
- playsfx 15
+ playse 15
special ShowContestEntryMonPic
call LinkContestRoom1_EventScript_1A535E
return
LinkContestRoom1_EventScript_1A535E:: @ 81A535E
compare 0x4088, 5
- jumpeq LinkContestRoom1_EventScript_1A5370
+ goto_if_eq LinkContestRoom1_EventScript_1A5370
message LinkContestRoom1_Text_1A6A04
- waittext
+ waitmessage
return
LinkContestRoom1_EventScript_1A5370:: @ 81A5370
- message2 LinkContestRoom1_Text_1A6A04
- waittext
+ messageautoscroll LinkContestRoom1_Text_1A6A04
+ waitmessage
return
LinkContestRoom1_EventScript_1A5377:: @ 81A5377
call LinkContestRoom1_EventScript_1A53B3
call LinkContestRoom1_EventScript_1A53CE
- playsfx 223
- waittext
+ playse 223
+ waitmessage
call LinkContestRoom1_EventScript_1A5A90
- move 1, LinkContestRoom1_Movement_1A5D9F
- waitmove 0
- move 2, LinkContestRoom1_Movement_1A5DA1
- waitmove 0
- pause 20
- move 1, LinkContestRoom1_Movement_1A5D8F
- move 2, LinkContestRoom1_Movement_1A5D8F
- waitmove 0
+ applymovement 1, LinkContestRoom1_Movement_1A5D9F
+ waitmovement 0
+ applymovement 2, LinkContestRoom1_Movement_1A5DA1
+ waitmovement 0
+ delay 20
+ applymovement 1, LinkContestRoom1_Movement_1A5D8F
+ applymovement 2, LinkContestRoom1_Movement_1A5D8F
+ waitmovement 0
return
LinkContestRoom1_EventScript_1A53B3:: @ 81A53B3
compare 0x4088, 5
- jumpeq LinkContestRoom1_EventScript_1A53C7
+ goto_if_eq LinkContestRoom1_EventScript_1A53C7
msgbox LinkContestRoom1_Text_1A6A1F, 4
return
LinkContestRoom1_EventScript_1A53C7:: @ 81A53C7
- message2 LinkContestRoom1_Text_1A6A1F
- waittext
+ messageautoscroll LinkContestRoom1_Text_1A6A1F
+ waitmessage
return
LinkContestRoom1_EventScript_1A53CE:: @ 81A53CE
compare 0x4088, 5
- jumpeq LinkContestRoom1_EventScript_1A53DF
+ goto_if_eq LinkContestRoom1_EventScript_1A53DF
message LinkContestRoom1_Text_1A6AE1
return
LinkContestRoom1_EventScript_1A53DF:: @ 81A53DF
- message2 LinkContestRoom1_Text_1A6AE1
+ messageautoscroll LinkContestRoom1_Text_1A6AE1
return
LinkContestRoom1_EventScript_1A53E5:: @ 81A53E5
- move 1, LinkContestRoom1_Movement_1A5DAF
- waitmove 0
- playsfx 223
+ applymovement 1, LinkContestRoom1_Movement_1A5DAF
+ waitmovement 0
+ playse 223
call LinkContestRoom1_EventScript_1A5AE4
- move 9, LinkContestRoom1_Movement_1A5DB7
- move 12, LinkContestRoom1_Movement_1A5DBB
- move 7, LinkContestRoom1_Movement_1A5DB7
- waitmove 0
- move 1, LinkContestRoom1_Movement_1A5DB7
- waitmove 0
- move 10, LinkContestRoom1_Movement_1A5DAF
- move 11, LinkContestRoom1_Movement_1A5DBB
- move 6, LinkContestRoom1_Movement_1A5DB3
- move 8, LinkContestRoom1_Movement_1A5DAF
- waitmove 0
- move 1, LinkContestRoom1_Movement_1A5DC1
- waitmove 0
- move 1, LinkContestRoom1_Movement_1A5DCA
- move 2, LinkContestRoom1_Movement_1A5DC5
- waitmove 0
+ applymovement 9, LinkContestRoom1_Movement_1A5DB7
+ applymovement 12, LinkContestRoom1_Movement_1A5DBB
+ applymovement 7, LinkContestRoom1_Movement_1A5DB7
+ waitmovement 0
+ applymovement 1, LinkContestRoom1_Movement_1A5DB7
+ waitmovement 0
+ applymovement 10, LinkContestRoom1_Movement_1A5DAF
+ applymovement 11, LinkContestRoom1_Movement_1A5DBB
+ applymovement 6, LinkContestRoom1_Movement_1A5DB3
+ applymovement 8, LinkContestRoom1_Movement_1A5DAF
+ waitmovement 0
+ applymovement 1, LinkContestRoom1_Movement_1A5DC1
+ waitmovement 0
+ applymovement 1, LinkContestRoom1_Movement_1A5DCA
+ applymovement 2, LinkContestRoom1_Movement_1A5DC5
+ waitmovement 0
releaseall
return
LinkContestRoom1_EventScript_1A5455:: @ 81A5455
special sub_80C47A0
compare 0x4088, 1
- callif 1, LinkContestRoom1_EventScript_1A555A
+ call_if 1, LinkContestRoom1_EventScript_1A555A
compare 0x4088, 2
- callif 1, LinkContestRoom1_EventScript_1A55B8
+ call_if 1, LinkContestRoom1_EventScript_1A55B8
compare 0x4088, 3
- callif 1, LinkContestRoom1_EventScript_1A5616
+ call_if 1, LinkContestRoom1_EventScript_1A5616
compare 0x4088, 4
- callif 1, LinkContestRoom1_EventScript_1A5674
+ call_if 1, LinkContestRoom1_EventScript_1A5674
compare 0x4088, 5
- callif 1, LinkContestRoom1_EventScript_1A56D2
+ call_if 1, LinkContestRoom1_EventScript_1A56D2
setvar 0x4001, 9
setvar 0x4002, 9
setvar 0x4003, 9
@@ -450,7 +450,7 @@ LinkContestRoom1_EventScript_1A5455:: @ 81A5455
setvar 0x4007, 9
setvar 0x4008, 9
compare 0x4000, 0
- callif 2, LinkContestRoom1_EventScript_1A54EB
+ call_if 2, LinkContestRoom1_EventScript_1A54EB
setvar 0x4001, 0
setvar 0x4002, 0
setvar 0x4003, 0
@@ -465,123 +465,123 @@ LinkContestRoom1_EventScript_1A54EB:: @ 81A54EB
setvar RESULT, 8
special ScriptRandom
compare RESULT, 0
- callif 1, LinkContestRoom1_EventScript_1A5760
+ call_if 1, LinkContestRoom1_EventScript_1A5760
compare RESULT, 1
- callif 1, LinkContestRoom1_EventScript_1A5784
+ call_if 1, LinkContestRoom1_EventScript_1A5784
compare RESULT, 2
- callif 1, LinkContestRoom1_EventScript_1A57A8
+ call_if 1, LinkContestRoom1_EventScript_1A57A8
compare RESULT, 3
- callif 1, LinkContestRoom1_EventScript_1A57CC
+ call_if 1, LinkContestRoom1_EventScript_1A57CC
compare RESULT, 4
- callif 1, LinkContestRoom1_EventScript_1A57F0
+ call_if 1, LinkContestRoom1_EventScript_1A57F0
compare RESULT, 5
- callif 1, LinkContestRoom1_EventScript_1A5814
+ call_if 1, LinkContestRoom1_EventScript_1A5814
compare RESULT, 6
- callif 1, LinkContestRoom1_EventScript_1A5838
+ call_if 1, LinkContestRoom1_EventScript_1A5838
compare RESULT, 7
- callif 1, LinkContestRoom1_EventScript_1A585C
+ call_if 1, LinkContestRoom1_EventScript_1A585C
compare 0x4000, 0
- jumpif 2, LinkContestRoom1_EventScript_1A54EB
- waitmove 0
+ goto_if 2, LinkContestRoom1_EventScript_1A54EB
+ waitmovement 0
return
LinkContestRoom1_EventScript_1A555A:: @ 81A555A
compare 0x8004, 80
- jumpif 2, LinkContestRoom1_EventScript_1A575A
+ goto_if 2, LinkContestRoom1_EventScript_1A575A
compare 0x8004, 70
- jumpif 2, LinkContestRoom1_EventScript_1A5754
+ goto_if 2, LinkContestRoom1_EventScript_1A5754
compare 0x8004, 60
- jumpif 2, LinkContestRoom1_EventScript_1A574E
+ goto_if 2, LinkContestRoom1_EventScript_1A574E
compare 0x8004, 50
- jumpif 2, LinkContestRoom1_EventScript_1A5748
+ goto_if 2, LinkContestRoom1_EventScript_1A5748
compare 0x8004, 40
- jumpif 2, LinkContestRoom1_EventScript_1A5742
+ goto_if 2, LinkContestRoom1_EventScript_1A5742
compare 0x8004, 30
- jumpif 2, LinkContestRoom1_EventScript_1A573C
+ goto_if 2, LinkContestRoom1_EventScript_1A573C
compare 0x8004, 20
- jumpif 2, LinkContestRoom1_EventScript_1A5736
+ goto_if 2, LinkContestRoom1_EventScript_1A5736
compare 0x8004, 10
- jumpif 2, LinkContestRoom1_EventScript_1A5730
+ goto_if 2, LinkContestRoom1_EventScript_1A5730
setvar 0x4000, 0
return
LinkContestRoom1_EventScript_1A55B8:: @ 81A55B8
compare 0x8004, 230
- jumpif 2, LinkContestRoom1_EventScript_1A575A
+ goto_if 2, LinkContestRoom1_EventScript_1A575A
compare 0x8004, 210
- jumpif 2, LinkContestRoom1_EventScript_1A5754
+ goto_if 2, LinkContestRoom1_EventScript_1A5754
compare 0x8004, 190
- jumpif 2, LinkContestRoom1_EventScript_1A574E
+ goto_if 2, LinkContestRoom1_EventScript_1A574E
compare 0x8004, 170
- jumpif 2, LinkContestRoom1_EventScript_1A5748
+ goto_if 2, LinkContestRoom1_EventScript_1A5748
compare 0x8004, 150
- jumpif 2, LinkContestRoom1_EventScript_1A5742
+ goto_if 2, LinkContestRoom1_EventScript_1A5742
compare 0x8004, 130
- jumpif 2, LinkContestRoom1_EventScript_1A573C
+ goto_if 2, LinkContestRoom1_EventScript_1A573C
compare 0x8004, 110
- jumpif 2, LinkContestRoom1_EventScript_1A5736
+ goto_if 2, LinkContestRoom1_EventScript_1A5736
compare 0x8004, 90
- jumpif 2, LinkContestRoom1_EventScript_1A5730
+ goto_if 2, LinkContestRoom1_EventScript_1A5730
setvar 0x4000, 0
return
LinkContestRoom1_EventScript_1A5616:: @ 81A5616
compare 0x8004, 380
- jumpif 2, LinkContestRoom1_EventScript_1A575A
+ goto_if 2, LinkContestRoom1_EventScript_1A575A
compare 0x8004, 350
- jumpif 2, LinkContestRoom1_EventScript_1A5754
+ goto_if 2, LinkContestRoom1_EventScript_1A5754
compare 0x8004, 320
- jumpif 2, LinkContestRoom1_EventScript_1A574E
+ goto_if 2, LinkContestRoom1_EventScript_1A574E
compare 0x8004, 290
- jumpif 2, LinkContestRoom1_EventScript_1A5748
+ goto_if 2, LinkContestRoom1_EventScript_1A5748
compare 0x8004, 260
- jumpif 2, LinkContestRoom1_EventScript_1A5742
+ goto_if 2, LinkContestRoom1_EventScript_1A5742
compare 0x8004, 230
- jumpif 2, LinkContestRoom1_EventScript_1A573C
+ goto_if 2, LinkContestRoom1_EventScript_1A573C
compare 0x8004, 200
- jumpif 2, LinkContestRoom1_EventScript_1A5736
+ goto_if 2, LinkContestRoom1_EventScript_1A5736
compare 0x8004, 170
- jumpif 2, LinkContestRoom1_EventScript_1A5730
+ goto_if 2, LinkContestRoom1_EventScript_1A5730
setvar 0x4000, 0
return
LinkContestRoom1_EventScript_1A5674:: @ 81A5674
compare 0x8004, 600
- jumpif 2, LinkContestRoom1_EventScript_1A575A
+ goto_if 2, LinkContestRoom1_EventScript_1A575A
compare 0x8004, 560
- jumpif 2, LinkContestRoom1_EventScript_1A5754
+ goto_if 2, LinkContestRoom1_EventScript_1A5754
compare 0x8004, 520
- jumpif 2, LinkContestRoom1_EventScript_1A574E
+ goto_if 2, LinkContestRoom1_EventScript_1A574E
compare 0x8004, 480
- jumpif 2, LinkContestRoom1_EventScript_1A5748
+ goto_if 2, LinkContestRoom1_EventScript_1A5748
compare 0x8004, 440
- jumpif 2, LinkContestRoom1_EventScript_1A5742
+ goto_if 2, LinkContestRoom1_EventScript_1A5742
compare 0x8004, 400
- jumpif 2, LinkContestRoom1_EventScript_1A573C
+ goto_if 2, LinkContestRoom1_EventScript_1A573C
compare 0x8004, 360
- jumpif 2, LinkContestRoom1_EventScript_1A5736
+ goto_if 2, LinkContestRoom1_EventScript_1A5736
compare 0x8004, 320
- jumpif 2, LinkContestRoom1_EventScript_1A5730
+ goto_if 2, LinkContestRoom1_EventScript_1A5730
setvar 0x4000, 0
return
LinkContestRoom1_EventScript_1A56D2:: @ 81A56D2
compare 0x8004, 600
- jumpif 2, LinkContestRoom1_EventScript_1A575A
+ goto_if 2, LinkContestRoom1_EventScript_1A575A
compare 0x8004, 550
- jumpif 2, LinkContestRoom1_EventScript_1A5754
+ goto_if 2, LinkContestRoom1_EventScript_1A5754
compare 0x8004, 500
- jumpif 2, LinkContestRoom1_EventScript_1A574E
+ goto_if 2, LinkContestRoom1_EventScript_1A574E
compare 0x8004, 450
- jumpif 2, LinkContestRoom1_EventScript_1A5748
+ goto_if 2, LinkContestRoom1_EventScript_1A5748
compare 0x8004, 400
- jumpif 2, LinkContestRoom1_EventScript_1A5742
+ goto_if 2, LinkContestRoom1_EventScript_1A5742
compare 0x8004, 300
- jumpif 2, LinkContestRoom1_EventScript_1A573C
+ goto_if 2, LinkContestRoom1_EventScript_1A573C
compare 0x8004, 200
- jumpif 2, LinkContestRoom1_EventScript_1A5736
+ goto_if 2, LinkContestRoom1_EventScript_1A5736
compare 0x8004, 100
- jumpif 2, LinkContestRoom1_EventScript_1A5730
+ goto_if 2, LinkContestRoom1_EventScript_1A5730
setvar 0x4000, 0
return
@@ -619,10 +619,10 @@ LinkContestRoom1_EventScript_1A575A:: @ 81A575A
LinkContestRoom1_EventScript_1A5760:: @ 81A5760
compare 0x4001, 1
- jumpeq LinkContestRoom1_EventScript_1A5783
- move 6, LinkContestRoom1_Movement_1A5D8D
- playsfx 21
- pause 14
+ goto_if_eq LinkContestRoom1_EventScript_1A5783
+ applymovement 6, LinkContestRoom1_Movement_1A5D8D
+ playse 21
+ delay 14
setvar 0x4001, 1
addvar 0x4000, 65535
return
@@ -632,10 +632,10 @@ LinkContestRoom1_EventScript_1A5783:: @ 81A5783
LinkContestRoom1_EventScript_1A5784:: @ 81A5784
compare 0x4002, 1
- jumpeq LinkContestRoom1_EventScript_1A57A7
- move 12, LinkContestRoom1_Movement_1A5D8D
- playsfx 21
- pause 14
+ goto_if_eq LinkContestRoom1_EventScript_1A57A7
+ applymovement 12, LinkContestRoom1_Movement_1A5D8D
+ playse 21
+ delay 14
setvar 0x4002, 1
addvar 0x4000, 65535
return
@@ -645,10 +645,10 @@ LinkContestRoom1_EventScript_1A57A7:: @ 81A57A7
LinkContestRoom1_EventScript_1A57A8:: @ 81A57A8
compare 0x4003, 1
- jumpeq LinkContestRoom1_EventScript_1A57CB
- move 7, LinkContestRoom1_Movement_1A5D8D
- playsfx 21
- pause 14
+ goto_if_eq LinkContestRoom1_EventScript_1A57CB
+ applymovement 7, LinkContestRoom1_Movement_1A5D8D
+ playse 21
+ delay 14
setvar 0x4003, 1
addvar 0x4000, 65535
return
@@ -658,10 +658,10 @@ LinkContestRoom1_EventScript_1A57CB:: @ 81A57CB
LinkContestRoom1_EventScript_1A57CC:: @ 81A57CC
compare 0x4004, 1
- jumpeq LinkContestRoom1_EventScript_1A57EF
- move 8, LinkContestRoom1_Movement_1A5D8D
- playsfx 21
- pause 14
+ goto_if_eq LinkContestRoom1_EventScript_1A57EF
+ applymovement 8, LinkContestRoom1_Movement_1A5D8D
+ playse 21
+ delay 14
setvar 0x4004, 1
addvar 0x4000, 65535
return
@@ -671,10 +671,10 @@ LinkContestRoom1_EventScript_1A57EF:: @ 81A57EF
LinkContestRoom1_EventScript_1A57F0:: @ 81A57F0
compare 0x4005, 1
- jumpeq LinkContestRoom1_EventScript_1A5813
- move 9, LinkContestRoom1_Movement_1A5D8D
- playsfx 21
- pause 14
+ goto_if_eq LinkContestRoom1_EventScript_1A5813
+ applymovement 9, LinkContestRoom1_Movement_1A5D8D
+ playse 21
+ delay 14
setvar 0x4005, 1
addvar 0x4000, 65535
return
@@ -684,10 +684,10 @@ LinkContestRoom1_EventScript_1A5813:: @ 81A5813
LinkContestRoom1_EventScript_1A5814:: @ 81A5814
compare 0x4006, 1
- jumpeq LinkContestRoom1_EventScript_1A5837
- move 10, LinkContestRoom1_Movement_1A5D8D
- playsfx 21
- pause 14
+ goto_if_eq LinkContestRoom1_EventScript_1A5837
+ applymovement 10, LinkContestRoom1_Movement_1A5D8D
+ playse 21
+ delay 14
setvar 0x4006, 1
addvar 0x4000, 65535
return
@@ -697,10 +697,10 @@ LinkContestRoom1_EventScript_1A5837:: @ 81A5837
LinkContestRoom1_EventScript_1A5838:: @ 81A5838
compare 0x4007, 1
- jumpeq LinkContestRoom1_EventScript_1A585B
- move 11, LinkContestRoom1_Movement_1A5D8D
- playsfx 21
- pause 14
+ goto_if_eq LinkContestRoom1_EventScript_1A585B
+ applymovement 11, LinkContestRoom1_Movement_1A5D8D
+ playse 21
+ delay 14
setvar 0x4007, 1
addvar 0x4000, 65535
return
@@ -710,10 +710,10 @@ LinkContestRoom1_EventScript_1A585B:: @ 81A585B
LinkContestRoom1_EventScript_1A585C:: @ 81A585C
compare 0x4008, 1
- jumpeq LinkContestRoom1_EventScript_1A587F
- move 15, LinkContestRoom1_Movement_1A5D8D
- playsfx 21
- pause 14
+ goto_if_eq LinkContestRoom1_EventScript_1A587F
+ applymovement 15, LinkContestRoom1_Movement_1A5D8D
+ playse 21
+ delay 14
setvar 0x4008, 1
addvar 0x4000, 65535
return
@@ -722,9 +722,9 @@ LinkContestRoom1_EventScript_1A587F:: @ 81A587F
return
LinkContestRoom1_EventScript_1A5880:: @ 81A5880
- closebutton
+ closemessage
release
- disappear 13
+ removeobject 13
special sub_80C5164
switch 0x8006
case 0, LinkContestRoom1_EventScript_1A58BA
@@ -735,125 +735,125 @@ LinkContestRoom1_EventScript_1A5880:: @ 81A5880
LinkContestRoom1_EventScript_1A58BA:: @ 81A58BA
lockall
- move 0x800b, LinkContestRoom1_Movement_1A5DD4
- waitmove 0
+ applymovement 0x800b, LinkContestRoom1_Movement_1A5DD4
+ waitmovement 0
releaseall
return
LinkContestRoom1_EventScript_1A58C7:: @ 81A58C7
lockall
- move 0x800b, LinkContestRoom1_Movement_1A5DDE
- waitmove 0
+ applymovement 0x800b, LinkContestRoom1_Movement_1A5DDE
+ waitmovement 0
releaseall
return
LinkContestRoom1_EventScript_1A58D4:: @ 81A58D4
lockall
- move 0x800b, LinkContestRoom1_Movement_1A5DE6
- waitmove 0
+ applymovement 0x800b, LinkContestRoom1_Movement_1A5DE6
+ waitmovement 0
releaseall
return
LinkContestRoom1_EventScript_1A58E1:: @ 81A58E1
lockall
- move 0x800b, LinkContestRoom1_Movement_1A5DF0
- waitmove 0
+ applymovement 0x800b, LinkContestRoom1_Movement_1A5DF0
+ waitmovement 0
releaseall
return
LinkContestRoom1_EventScript_1A58EE:: @ 81A58EE
lockall
- move 1, LinkContestRoom1_Movement_1A5DA3
- waitmove 0
+ applymovement 1, LinkContestRoom1_Movement_1A5DA3
+ waitmovement 0
call LinkContestRoom1_EventScript_1A5930
- waittext
- move 1, LinkContestRoom1_Movement_1A5D91
- move 2, LinkContestRoom1_Movement_1A5D95
- waitmove 0
+ waitmessage
+ applymovement 1, LinkContestRoom1_Movement_1A5D91
+ applymovement 2, LinkContestRoom1_Movement_1A5D95
+ waitmovement 0
releaseall
setvar 0x4009, 1
startcontest
setvar 0x4009, 0
lockall
- move 1, LinkContestRoom1_Movement_1A5D95
- move 2, LinkContestRoom1_Movement_1A5D91
- waitmove 0
+ applymovement 1, LinkContestRoom1_Movement_1A5D95
+ applymovement 2, LinkContestRoom1_Movement_1A5D91
+ waitmovement 0
releaseall
return
LinkContestRoom1_EventScript_1A5930:: @ 81A5930
compare 0x4088, 5
- jumpeq LinkContestRoom1_EventScript_1A5944
+ goto_if_eq LinkContestRoom1_EventScript_1A5944
msgbox LinkContestRoom1_Text_1A6AF5, 3
return
LinkContestRoom1_EventScript_1A5944:: @ 81A5944
- message2 LinkContestRoom1_Text_1A6AF5
+ messageautoscroll LinkContestRoom1_Text_1A6AF5
return
LinkContestRoom1_EventScript_1A594A:: @ 81A594A
call LinkContestRoom1_EventScript_1A5984
call LinkContestRoom1_EventScript_1A59A2
- move 1, LinkContestRoom1_Movement_1A5D8B
- waitmove 0
+ applymovement 1, LinkContestRoom1_Movement_1A5D8B
+ waitmovement 0
call LinkContestRoom1_EventScript_1A59C0
call LinkContestRoom1_EventScript_1A59DE
- move 1, LinkContestRoom1_Movement_1A5D8F
- waitmove 0
- closebutton
+ applymovement 1, LinkContestRoom1_Movement_1A5D8F
+ waitmovement 0
+ closemessage
releaseall
setvar 0x4009, 1
showcontestresults
setvar 0x4009, 0
- playmusic 439, 0
+ playbgm 439, 0
return
LinkContestRoom1_EventScript_1A5984:: @ 81A5984
compare 0x4088, 5
- jumpeq LinkContestRoom1_EventScript_1A5998
+ goto_if_eq LinkContestRoom1_EventScript_1A5998
msgbox LinkContestRoom1_Text_1A6C06, 4
return
LinkContestRoom1_EventScript_1A5998:: @ 81A5998
- message2 LinkContestRoom1_Text_1A6C06
- waittext
- pause 30
+ messageautoscroll LinkContestRoom1_Text_1A6C06
+ waitmessage
+ delay 30
return
LinkContestRoom1_EventScript_1A59A2:: @ 81A59A2
compare 0x4088, 5
- jumpeq LinkContestRoom1_EventScript_1A59B6
+ goto_if_eq LinkContestRoom1_EventScript_1A59B6
msgbox LinkContestRoom1_Text_1A6C21, 4
return
LinkContestRoom1_EventScript_1A59B6:: @ 81A59B6
- message2 LinkContestRoom1_Text_1A6C21
- waittext
- pause 30
+ messageautoscroll LinkContestRoom1_Text_1A6C21
+ waitmessage
+ delay 30
return
LinkContestRoom1_EventScript_1A59C0:: @ 81A59C0
compare 0x4088, 5
- jumpeq LinkContestRoom1_EventScript_1A59D4
+ goto_if_eq LinkContestRoom1_EventScript_1A59D4
msgbox LinkContestRoom1_Text_1A6C9D, 4
return
LinkContestRoom1_EventScript_1A59D4:: @ 81A59D4
- message2 LinkContestRoom1_Text_1A6C9D
- waittext
- pause 30
+ messageautoscroll LinkContestRoom1_Text_1A6C9D
+ waitmessage
+ delay 30
return
LinkContestRoom1_EventScript_1A59DE:: @ 81A59DE
compare 0x4088, 5
- jumpeq LinkContestRoom1_EventScript_1A59F2
+ goto_if_eq LinkContestRoom1_EventScript_1A59F2
msgbox LinkContestRoom1_Text_1A6D16, 4
return
LinkContestRoom1_EventScript_1A59F2:: @ 81A59F2
- message2 LinkContestRoom1_Text_1A6D16
- waittext
- pause 30
+ messageautoscroll LinkContestRoom1_Text_1A6D16
+ waitmessage
+ delay 30
return
LinkContestRoom1_EventScript_1A59FC:: @ 81A59FC
@@ -885,156 +885,156 @@ LinkContestRoom1_EventScript_1A5A49:: @ 81A5A49
special sub_80C47F0
special sub_80C4858
addvar 0x8005, 1
- buffernum 1, 0x8005
+ getnumberstring 1, 0x8005
addvar 0x8005, -1
call LinkContestRoom1_EventScript_1A5A75
- move 0x4003, LinkContestRoom1_Movement_1A5D99
- waitmove 0
- playsfx 223
+ applymovement 0x4003, LinkContestRoom1_Movement_1A5D99
+ waitmovement 0
+ playse 223
setvar 0x4001, 0
return
LinkContestRoom1_EventScript_1A5A75:: @ 81A5A75
compare 0x4088, 5
- jumpeq LinkContestRoom1_EventScript_1A5A89
+ goto_if_eq LinkContestRoom1_EventScript_1A5A89
msgbox LinkContestRoom1_Text_1A6D3C, 4
return
LinkContestRoom1_EventScript_1A5A89:: @ 81A5A89
- message2 LinkContestRoom1_Text_1A6D3C
- waittext
+ messageautoscroll LinkContestRoom1_Text_1A6D3C
+ waitmessage
return
LinkContestRoom1_EventScript_1A5A90:: @ 81A5A90
addvar 0x4001, 1
lockall
compare 0x4088, 1
- callif 2, LinkContestRoom1_EventScript_1A5AE4
- move 9, LinkContestRoom1_Movement_1A5DB7
- move 12, LinkContestRoom1_Movement_1A5DBB
- move 7, LinkContestRoom1_Movement_1A5DB7
- pause 30
- move 10, LinkContestRoom1_Movement_1A5DAF
- move 11, LinkContestRoom1_Movement_1A5DBB
- move 6, LinkContestRoom1_Movement_1A5DB3
- move 8, LinkContestRoom1_Movement_1A5DAF
+ call_if 2, LinkContestRoom1_EventScript_1A5AE4
+ applymovement 9, LinkContestRoom1_Movement_1A5DB7
+ applymovement 12, LinkContestRoom1_Movement_1A5DBB
+ applymovement 7, LinkContestRoom1_Movement_1A5DB7
+ delay 30
+ applymovement 10, LinkContestRoom1_Movement_1A5DAF
+ applymovement 11, LinkContestRoom1_Movement_1A5DBB
+ applymovement 6, LinkContestRoom1_Movement_1A5DB3
+ applymovement 8, LinkContestRoom1_Movement_1A5DAF
compare 0x4001, 4
- jumpif 5, LinkContestRoom1_EventScript_1A5A90
- pause 30
+ goto_if 5, LinkContestRoom1_EventScript_1A5A90
+ delay 30
return
LinkContestRoom1_EventScript_1A5AE4:: @ 81A5AE4
- vspriteface 0, 1
- vspriteface 2, 1
- vspriteface 4, 4
- vspriteface 6, 1
- vspriteface 8, 1
- vspriteface 10, 1
- vspriteface 12, 1
- vspriteface 14, 1
- vspriteface 16, 1
- vspriteface 18, 1
- vspriteface 20, 4
- vspriteface 22, 4
- vspriteface 25, 4
- vspriteface 27, 3
- vspriteface 28, 4
- pause 10
- vspriteface 0, 4
- vspriteface 2, 4
- vspriteface 4, 4
- vspriteface 6, 4
- vspriteface 8, 4
- vspriteface 10, 3
- vspriteface 12, 3
- vspriteface 14, 3
- vspriteface 16, 3
- vspriteface 18, 3
- vspriteface 20, 1
- vspriteface 22, 1
- vspriteface 25, 2
- vspriteface 27, 2
- vspriteface 28, 2
- pause 10
- vspriteface 1, 2
- vspriteface 3, 2
- vspriteface 5, 2
- vspriteface 7, 2
- vspriteface 9, 4
- vspriteface 11, 2
- vspriteface 15, 2
- vspriteface 13, 2
- vspriteface 17, 2
- vspriteface 19, 2
- vspriteface 21, 3
- vspriteface 23, 3
- vspriteface 24, 3
- vspriteface 26, 4
- vspriteface 29, 3
- vspriteface 30, 3
- pause 10
- vspriteface 1, 4
- vspriteface 3, 4
- vspriteface 5, 4
- vspriteface 7, 4
- vspriteface 9, 4
- vspriteface 11, 3
- vspriteface 15, 3
- vspriteface 13, 3
- vspriteface 17, 3
- vspriteface 19, 3
- vspriteface 21, 1
- vspriteface 23, 1
- vspriteface 24, 1
- vspriteface 26, 2
- vspriteface 29, 2
- vspriteface 30, 2
- pause 10
+ turnvobject 0, 1
+ turnvobject 2, 1
+ turnvobject 4, 4
+ turnvobject 6, 1
+ turnvobject 8, 1
+ turnvobject 10, 1
+ turnvobject 12, 1
+ turnvobject 14, 1
+ turnvobject 16, 1
+ turnvobject 18, 1
+ turnvobject 20, 4
+ turnvobject 22, 4
+ turnvobject 25, 4
+ turnvobject 27, 3
+ turnvobject 28, 4
+ delay 10
+ turnvobject 0, 4
+ turnvobject 2, 4
+ turnvobject 4, 4
+ turnvobject 6, 4
+ turnvobject 8, 4
+ turnvobject 10, 3
+ turnvobject 12, 3
+ turnvobject 14, 3
+ turnvobject 16, 3
+ turnvobject 18, 3
+ turnvobject 20, 1
+ turnvobject 22, 1
+ turnvobject 25, 2
+ turnvobject 27, 2
+ turnvobject 28, 2
+ delay 10
+ turnvobject 1, 2
+ turnvobject 3, 2
+ turnvobject 5, 2
+ turnvobject 7, 2
+ turnvobject 9, 4
+ turnvobject 11, 2
+ turnvobject 15, 2
+ turnvobject 13, 2
+ turnvobject 17, 2
+ turnvobject 19, 2
+ turnvobject 21, 3
+ turnvobject 23, 3
+ turnvobject 24, 3
+ turnvobject 26, 4
+ turnvobject 29, 3
+ turnvobject 30, 3
+ delay 10
+ turnvobject 1, 4
+ turnvobject 3, 4
+ turnvobject 5, 4
+ turnvobject 7, 4
+ turnvobject 9, 4
+ turnvobject 11, 3
+ turnvobject 15, 3
+ turnvobject 13, 3
+ turnvobject 17, 3
+ turnvobject 19, 3
+ turnvobject 21, 1
+ turnvobject 23, 1
+ turnvobject 24, 1
+ turnvobject 26, 2
+ turnvobject 29, 2
+ turnvobject 30, 2
+ delay 10
return
LinkContestRoom1_EventScript_1A5BAB:: @ 81A5BAB
compare 0x4088, 5
- jumpeq LinkContestRoom1_EventScript_1A5C4C
+ goto_if_eq LinkContestRoom1_EventScript_1A5C4C
call LinkContestRoom1_EventScript_1A5C12
checkflag 2
- jumpeq LinkContestRoom1_EventScript_1A5BF6
+ goto_if_eq LinkContestRoom1_EventScript_1A5BF6
msgbox LinkContestRoom1_Text_1A6DC5, 3
- waittext
+ waitmessage
call LinkContestRoom1_EventScript_1A5C7F
call LinkContestRoom1_EventScript_1A5CE5
- playsfx 223
+ playse 223
setvar 0x4001, 0
call LinkContestRoom1_EventScript_1A5A90
- pause 30
+ delay 30
special sub_80C4CF8
compare 0x8004, 1
- jumpeq LinkContestRoom1_EventScript_1A5C46
+ goto_if_eq LinkContestRoom1_EventScript_1A5C46
return
LinkContestRoom1_EventScript_1A5BF6:: @ 81A5BF6
- inccounter GAME_STAT_WON_CONTEST
+ incrementgamestat GAME_STAT_WON_CONTEST
msgbox LinkContestRoom1_Text_1A6DF1, 3
- pause 90
+ delay 90
special sub_80C4CF8
compare 0x8004, 1
- jumpeq LinkContestRoom1_EventScript_1A5C46
+ goto_if_eq LinkContestRoom1_EventScript_1A5C46
return
LinkContestRoom1_EventScript_1A5C12:: @ 81A5C12
- specialval RESULT, sub_80C4440
+ specialvar RESULT, sub_80C4440
compare RESULT, 1
- jumpeq LinkContestRoom1_EventScript_1A5C23
+ goto_if_eq LinkContestRoom1_EventScript_1A5C23
return
LinkContestRoom1_EventScript_1A5C23:: @ 81A5C23
special sub_80C47C0
compare 0x8005, 3
- jumpeq LinkContestRoom1_EventScript_1A5C32
+ goto_if_eq LinkContestRoom1_EventScript_1A5C32
return
LinkContestRoom1_EventScript_1A5C32:: @ 81A5C32
compare CONTEST_RANK, 3
- jumpeq LinkContestRoom1_EventScript_1A5C41
+ goto_if_eq LinkContestRoom1_EventScript_1A5C41
setflag 2
return
@@ -1050,12 +1050,12 @@ LinkContestRoom1_EventScript_1A5C46:: @ 81A5C46
return
LinkContestRoom1_EventScript_1A5C4C:: @ 81A5C4C
- pause 60
+ delay 60
call LinkContestRoom1_EventScript_1A5C6A
special sub_80C4CF8
compare 0x8004, 1
- jumpeq LinkContestRoom1_EventScript_1A5C64
- closebutton
+ goto_if_eq LinkContestRoom1_EventScript_1A5C64
+ closemessage
return
LinkContestRoom1_EventScript_1A5C64:: @ 81A5C64
@@ -1065,12 +1065,12 @@ LinkContestRoom1_EventScript_1A5C64:: @ 81A5C64
LinkContestRoom1_EventScript_1A5C6A:: @ 81A5C6A
special sub_80C496C
special sub_80C47C0
- comparevars 0x8004, 0x8005
- jumpeq LinkContestRoom1_EventScript_1A5C7C
+ compare 0x8004, 0x8005
+ goto_if_eq LinkContestRoom1_EventScript_1A5C7C
return
LinkContestRoom1_EventScript_1A5C7C:: @ 81A5C7C
- inccounter GAME_STAT_WON_LINK_CONTEST
+ incrementgamestat GAME_STAT_WON_LINK_CONTEST
return
LinkContestRoom1_EventScript_1A5C7F:: @ 81A5C7F
@@ -1083,48 +1083,48 @@ LinkContestRoom1_EventScript_1A5C7F:: @ 81A5C7F
LinkContestRoom1_EventScript_1A5CB1:: @ 81A5CB1
lockall
- move 0x4003, LinkContestRoom1_Movement_1A5DF6
- waitmove 0
+ applymovement 0x4003, LinkContestRoom1_Movement_1A5DF6
+ waitmovement 0
releaseall
return
LinkContestRoom1_EventScript_1A5CBE:: @ 81A5CBE
lockall
- move 0x4003, LinkContestRoom1_Movement_1A5DFA
- waitmove 0
+ applymovement 0x4003, LinkContestRoom1_Movement_1A5DFA
+ waitmovement 0
releaseall
return
LinkContestRoom1_EventScript_1A5CCB:: @ 81A5CCB
lockall
- move 0x4003, LinkContestRoom1_Movement_1A5DA5
- waitmove 0
+ applymovement 0x4003, LinkContestRoom1_Movement_1A5DA5
+ waitmovement 0
releaseall
return
LinkContestRoom1_EventScript_1A5CD8:: @ 81A5CD8
lockall
- move 0x4003, LinkContestRoom1_Movement_1A5DA9
- waitmove 0
+ applymovement 0x4003, LinkContestRoom1_Movement_1A5DA9
+ waitmovement 0
releaseall
return
LinkContestRoom1_EventScript_1A5CE5:: @ 81A5CE5
special sub_80C47C0
compare 0x8005, 3
- jumpeq LinkContestRoom1_EventScript_1A5CFC
+ goto_if_eq LinkContestRoom1_EventScript_1A5CFC
msgbox LinkContestRoom1_Text_1A6DF1, 3
return
LinkContestRoom1_EventScript_1A5CFC:: @ 81A5CFC
compare 0x4088, 2
- callif 1, LinkContestRoom1_EventScript_1A5C42
- inccounter GAME_STAT_WON_CONTEST
- specialval RESULT, sub_80C4440
+ call_if 1, LinkContestRoom1_EventScript_1A5C42
+ incrementgamestat GAME_STAT_WON_CONTEST
+ specialvar RESULT, sub_80C4440
compare RESULT, 0
- jumpeq LinkContestRoom1_EventScript_1A5D5B
+ goto_if_eq LinkContestRoom1_EventScript_1A5D5B
compare CONTEST_RANK, 3
- jumpeq LinkContestRoom1_EventScript_1A5D3B
+ goto_if_eq LinkContestRoom1_EventScript_1A5D3B
msgbox LinkContestRoom1_Text_1A6DF1, 3
return
@@ -1136,17 +1136,17 @@ LinkContestRoom1_EventScript_1A5D2D:: @ 81A5D2D
LinkContestRoom1_EventScript_1A5D3B:: @ 81A5D3B
giveitem ITEM_LUXURY_BALL
compare RESULT, 0
- jumpeq LinkContestRoom1_EventScript_1A5D2D
+ goto_if_eq LinkContestRoom1_EventScript_1A5D2D
msgbox LinkContestRoom1_Text_1A6DF1, 3
return
LinkContestRoom1_EventScript_1A5D5B:: @ 81A5D5B
special sub_80C44C0
- inccounter GAME_STAT_RECEIVED_RIBBONS
+ incrementgamestat GAME_STAT_RECEIVED_RIBBONS
setflag 2107
lockall
msgbox LinkContestRoom1_Text_1A6D6A, 4
- fanfare 370
+ playfanfare 370
msgbox LinkContestRoom1_Text_1A6D96, 4
waitfanfare
special sub_80C4858
diff --git a/data/scripts/day_care.inc b/data/scripts/day_care.inc
index b5b3d4670..f8151b86a 100644
--- a/data/scripts/day_care.inc
+++ b/data/scripts/day_care.inc
@@ -2,13 +2,13 @@ Route117_EventScript_1B222D:: @ 81B222D
lock
faceplayer
special sp0B5_daycare
- specialval RESULT, sp0B6_daycare
+ specialvar RESULT, sp0B6_daycare
compare RESULT, 1
- jumpeq Route117_EventScript_1B2262
+ goto_if_eq Route117_EventScript_1B2262
compare RESULT, 2
- jumpeq Route117_EventScript_1B22E7
+ goto_if_eq Route117_EventScript_1B22E7
compare RESULT, 3
- jumpeq Route117_EventScript_1B22FE
+ goto_if_eq Route117_EventScript_1B22FE
msgbox Route117_Text_1B25CB, 4
release
end
@@ -16,10 +16,10 @@ Route117_EventScript_1B222D:: @ 81B222D
Route117_EventScript_1B2262:: @ 81B2262
msgbox Route117_Text_1B2659, 5
compare RESULT, 1
- jumpeq Route117_EventScript_1B2298
+ goto_if_eq Route117_EventScript_1B2298
msgbox Route117_Text_1B28C4, 5
compare RESULT, 1
- jumpeq Route117_EventScript_1B2298
+ goto_if_eq Route117_EventScript_1B2298
msgbox Route117_Text_1B2745, 4
clearflag 134
special sub_8041E7C
@@ -27,18 +27,18 @@ Route117_EventScript_1B2262:: @ 81B2262
end
Route117_EventScript_1B2298:: @ 81B2298
- specialval RESULT, CalculatePlayerPartyCount
+ specialvar RESULT, CalculatePlayerPartyCount
compare RESULT, 6
- jumpif 5, Route117_EventScript_1B22B2
+ goto_if 5, Route117_EventScript_1B22B2
msgbox Route117_Text_1B2766, 4
release
end
Route117_EventScript_1B22B2:: @ 81B22B2
message Route117_Text_1B27A2
- fanfare 367
+ playfanfare 367
waitfanfare
- waittext
+ waitmessage
waitbutton
msgbox Route117_Text_1B27CD, 4
special sp0B8_daycare
@@ -47,9 +47,9 @@ Route117_EventScript_1B22B2:: @ 81B22B2
end
Route117_EventScript_1B22CD:: @ 81B22CD
- specialval RESULT, sub_8042B4C
+ specialvar RESULT, sub_8042B4C
compare RESULT, 1
- callif 1, Route117_EventScript_1B22DE
+ call_if 1, Route117_EventScript_1B22DE
return
Route117_EventScript_1B22DE:: @ 81B22DE
@@ -69,7 +69,7 @@ Route117_EventScript_1B22FE:: @ 81B22FE
msgbox Route117_Text_1B2897, 4
special sp0B9_daycare_relationship_comment
special ShowFieldMessageStringVar4
- waittext
+ waitmessage
waitbutton
setvar 0x8004, 0
call Route117_EventScript_1B22CD
@@ -81,43 +81,43 @@ Route117_EventScript_1B22FE:: @ 81B22FE
Route117_PokemonDayCare_EventScript_1B2327:: @ 81B2327
lock
faceplayer
- specialval RESULT, sp0B6_daycare
+ specialvar RESULT, sp0B6_daycare
compare RESULT, 1
- jumpeq Route117_PokemonDayCare_EventScript_1B2407
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B2407
compare RESULT, 2
- jumpeq Route117_PokemonDayCare_EventScript_1B242B
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B242B
compare RESULT, 3
- jumpeq Route117_PokemonDayCare_EventScript_1B2558
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B2558
msgbox Route117_PokemonDayCare_Text_1B28F2, 5
compare RESULT, 1
- jumpeq Route117_PokemonDayCare_EventScript_1B236C
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B236C
msgbox Route117_PokemonDayCare_Text_1B2A14, 4
release
end
Route117_PokemonDayCare_EventScript_1B236C:: @ 81B236C
- specialval RESULT, sub_8095B6C
+ specialvar RESULT, sub_8095B6C
compare RESULT, 1
- jumpeq Route117_PokemonDayCare_EventScript_1B23F3
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B23F3
msgbox Route117_PokemonDayCare_Text_1B2947, 4
fadescreen 1
special ChooseSendDaycareMon
waitstate
compare 0x8004, 255
- jumpeq Route117_PokemonDayCare_EventScript_1B23D0
- specialval RESULT, sub_8095C10
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B23D0
+ specialvar RESULT, sub_8095C10
compare RESULT, 0
- jumpeq Route117_PokemonDayCare_EventScript_1B23FD
- specialval 0x8005, sub_8042328
- checksound
- pokecry 0x8005, 0
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B23FD
+ specialvar 0x8005, sub_8042328
+ waitse
+ playpokecry 0x8005, 0
msgbox Route117_PokemonDayCare_Text_1B296E, 4
waitpokecry
special Daycare_SendPokemon_Special
- inccounter GAME_STAT_USED_DAYCARE
- specialval RESULT, sp0B6_daycare
+ incrementgamestat GAME_STAT_USED_DAYCARE
+ specialvar RESULT, sp0B6_daycare
compare RESULT, 2
- jumpeq Route117_PokemonDayCare_EventScript_1B23DA
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B23DA
release
end
@@ -129,8 +129,8 @@ Route117_PokemonDayCare_EventScript_1B23D0:: @ 81B23D0
Route117_PokemonDayCare_EventScript_1B23DA:: @ 81B23DA
msgbox Route117_PokemonDayCare_Text_1B29AD, 5
compare RESULT, 1
- jumpeq Route117_PokemonDayCare_EventScript_1B236C
- jump Route117_PokemonDayCare_EventScript_1B23D0
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B236C
+ goto Route117_PokemonDayCare_EventScript_1B23D0
end
Route117_PokemonDayCare_EventScript_1B23F3:: @ 81B23F3
@@ -153,9 +153,9 @@ Route117_PokemonDayCare_EventScript_1B2411:: @ 81B2411
return
Route117_PokemonDayCare_EventScript_1B241A:: @ 81B241A
- specialval RESULT, sub_80417B8
+ specialvar RESULT, sub_80417B8
compare RESULT, 0
- callif 5, Route117_PokemonDayCare_EventScript_1B2411
+ call_if 5, Route117_PokemonDayCare_EventScript_1B2411
return
Route117_PokemonDayCare_EventScript_1B242B:: @ 81B242B
@@ -164,67 +164,67 @@ Route117_PokemonDayCare_EventScript_1B242B:: @ 81B242B
call Route117_PokemonDayCare_EventScript_1B241A
msgbox Route117_PokemonDayCare_Text_1B29AD, 5
compare RESULT, 1
- jumpeq Route117_PokemonDayCare_EventScript_1B236C
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B236C
msgbox Route117_PokemonDayCare_Text_1B2BF6, 5
compare RESULT, 1
- jumpeq Route117_PokemonDayCare_EventScript_1B2469
- jump Route117_PokemonDayCare_EventScript_1B23D0
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B2469
+ goto Route117_PokemonDayCare_EventScript_1B23D0
end
Route117_PokemonDayCare_EventScript_1B2469:: @ 81B2469
- specialval RESULT, CalculatePlayerPartyCount
+ specialvar RESULT, CalculatePlayerPartyCount
compare RESULT, 6
- jumpeq Route117_PokemonDayCare_EventScript_1B2539
- specialval RESULT, sp0B6_daycare
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B2539
+ specialvar RESULT, sp0B6_daycare
setvar 0x8004, 0
compare RESULT, 2
- jumpeq Route117_PokemonDayCare_EventScript_1B24A8
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B24A8
special ShowDaycareLevelMenu
waitstate
copyvar 0x8004, RESULT
compare RESULT, 2
- jumpeq Route117_PokemonDayCare_EventScript_1B23D0
- jump Route117_PokemonDayCare_EventScript_1B24A8
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B23D0
+ goto Route117_PokemonDayCare_EventScript_1B24A8
end
Route117_PokemonDayCare_EventScript_1B24A8:: @ 81B24A8
special sub_8041770
msgbox Route117_PokemonDayCare_Text_1B2B49, 5
compare RESULT, 1
- jumpeq Route117_PokemonDayCare_EventScript_1B24C4
- jump Route117_PokemonDayCare_EventScript_1B23D0
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B24C4
+ goto Route117_PokemonDayCare_EventScript_1B23D0
end
Route117_PokemonDayCare_EventScript_1B24C4:: @ 81B24C4
- specialval RESULT, sub_80B7CE8
+ specialvar RESULT, sub_80B7CE8
compare RESULT, 1
- jumpeq Route117_PokemonDayCare_EventScript_1B24DE
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B24DE
msgbox Route117_PokemonDayCare_Text_1B2A30, 4
release
end
Route117_PokemonDayCare_EventScript_1B24DE:: @ 81B24DE
- move 1, Route117_PokemonDayCare_Movement_1B2543
- waitmove 0
- specialval RESULT, sub_8041648
+ applymovement 1, Route117_PokemonDayCare_Movement_1B2543
+ waitmovement 0
+ specialvar RESULT, sub_8041648
special sub_80B7D0C
- playsfx 95
+ playse 95
msgbox Route117_PokemonDayCare_Text_1B2B75, 4
- checksound
- pokecry RESULT, 0
+ waitse
+ playpokecry RESULT, 0
msgbox Route117_PokemonDayCare_Text_1B2B93, 4
waitpokecry
- specialval RESULT, sp0B6_daycare
+ specialvar RESULT, sp0B6_daycare
compare RESULT, 2
- jumpeq Route117_PokemonDayCare_EventScript_1B2520
- jump Route117_PokemonDayCare_EventScript_1B23D0
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B2520
+ goto Route117_PokemonDayCare_EventScript_1B23D0
end
Route117_PokemonDayCare_EventScript_1B2520:: @ 81B2520
msgbox Route117_PokemonDayCare_Text_1B2A4F, 5
compare RESULT, 1
- jumpeq Route117_PokemonDayCare_EventScript_1B2469
- jump Route117_PokemonDayCare_EventScript_1B23D0
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B2469
+ goto Route117_PokemonDayCare_EventScript_1B23D0
end
Route117_PokemonDayCare_EventScript_1B2539:: @ 81B2539
@@ -265,7 +265,7 @@ Route117_PokemonDayCare_EventScript_1B2558:: @ 81B2558
call Route117_PokemonDayCare_EventScript_1B241A
msgbox Route117_PokemonDayCare_Text_1B2BF6, 5
compare RESULT, 1
- jumpeq Route117_PokemonDayCare_EventScript_1B2469
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B2469
msgbox Route117_PokemonDayCare_Text_1B2A76, 4
release
end
@@ -274,15 +274,15 @@ Route117_PokemonDayCare_EventScript_1B2558:: @ 81B2558
special ShowDaycareLevelMenu
waitstate
compare RESULT, 2
- jumpeq Route117_PokemonDayCare_EventScript_1B23D0
+ goto_if_eq Route117_PokemonDayCare_EventScript_1B23D0
copyvar 0x8004, RESULT
- specialval RESULT, sub_8041648
+ specialvar RESULT, sub_8041648
msgbox Route117_PokemonDayCare_Text_1B2B75, 4
msgbox Route117_PokemonDayCare_Text_1B2A76, 4
release
end
-Event_EggHatch:: @ 81B25BC
+S_EggHatch:: @ 81B25BC
lockall
msgbox UnknownString_81B2C68, 4
special EggHatch
diff --git a/data/scripts/gabby_and_ty.inc b/data/scripts/gabby_and_ty.inc
index 67a0920fa..214c61142 100644
--- a/data/scripts/gabby_and_ty.inc
+++ b/data/scripts/gabby_and_ty.inc
@@ -1,8 +1,8 @@
Route111_EventScript_1AE313:: @ 81AE313
Route118_EventScript_1AE313:: @ 81AE313
Route120_EventScript_1AE313:: @ 81AE313
- settrainerflag OPPONENT_GABBY_AND_TY_6
- specialval RESULT, GabbyAndTyGetBattleNum
+ cleartrainerflag OPPONENT_GABBY_AND_TY_6
+ specialvar RESULT, GabbyAndTyGetBattleNum
switch RESULT
case 0, Route111_EventScript_1AE384
case 1, Route111_EventScript_1AE38A
@@ -203,32 +203,32 @@ Route111_EventScript_1AE5A2:: @ 81AE5A2
special GabbyAndTyBeforeInterview
special GabbyAndTySetScriptVarsToFieldObjectLocalIds
compare FACING, 2
- callif 1, Route111_EventScript_1AE5E0
+ call_if 1, Route111_EventScript_1AE5E0
compare FACING, 1
- callif 1, Route111_EventScript_1AE5EB
+ call_if 1, Route111_EventScript_1AE5EB
compare FACING, 4
- callif 1, Route111_EventScript_1AE5FD
+ call_if 1, Route111_EventScript_1AE5FD
checkflag 1
- jumpeq Route111_EventScript_1AE73A
+ goto_if_eq Route111_EventScript_1AE73A
msgbox Route111_Text_1AC015, 5
- jump Route111_EventScript_1AE6F3
+ goto Route111_EventScript_1AE6F3
end
Route111_EventScript_1AE5E0:: @ 81AE5E0
- move 0x8004, Route111_Movement_1AE699
- waitmove 0
+ applymovement 0x8004, Route111_Movement_1AE699
+ waitmovement 0
return
Route111_EventScript_1AE5EB:: @ 81AE5EB
- move 0x8004, Route111_Movement_1AE69B
- move 0x8005, Route111_Movement_1A0841
- waitmove 0
+ applymovement 0x8004, Route111_Movement_1AE69B
+ applymovement 0x8005, Route111_Movement_1A0841
+ waitmovement 0
return
Route111_EventScript_1AE5FD:: @ 81AE5FD
- move 0x8004, Route111_Movement_1AE69D
- move 0x8005, Route111_Movement_1A083F
- waitmove 0
+ applymovement 0x8004, Route111_Movement_1AE69D
+ applymovement 0x8005, Route111_Movement_1A083F
+ waitmovement 0
return
Route111_EventScript_1AE60F:: @ 81AE60F
@@ -237,18 +237,18 @@ Route120_EventScript_1AE60F:: @ 81AE60F
special GabbyAndTyBeforeInterview
special GabbyAndTySetScriptVarsToFieldObjectLocalIds
compare FACING, 2
- callif 1, Route111_EventScript_1AE5E0
+ call_if 1, Route111_EventScript_1AE5E0
compare FACING, 1
- callif 1, Route111_EventScript_1AE5EB
+ call_if 1, Route111_EventScript_1AE5EB
compare FACING, 4
- callif 1, Route111_EventScript_1AE5FD
+ call_if 1, Route111_EventScript_1AE5FD
checkflag 1
- jumpeq Route111_EventScript_1AE73A
- specialval RESULT, GabbyAndTyGetLastQuote
+ goto_if_eq Route111_EventScript_1AE73A
+ specialvar RESULT, GabbyAndTyGetLastQuote
compare RESULT, 0
- jumpeq Route111_EventScript_1AE69F
+ goto_if_eq Route111_EventScript_1AE69F
msgbox Route111_Text_1AC10A, 4
- specialval RESULT, sub_80BDD18
+ specialvar RESULT, sub_80BDD18
switch RESULT
case 0, Route111_EventScript_1AE6AD
case 1, Route111_EventScript_1AE6BB
@@ -271,44 +271,44 @@ Route111_Movement_1AE69D:: @ 81AE69D
Route111_EventScript_1AE69F:: @ 81AE69F
msgbox Route111_Text_1AC60B, 5
- jump Route111_EventScript_1AE6F3
+ goto Route111_EventScript_1AE6F3
end
Route111_EventScript_1AE6AD:: @ 81AE6AD
msgbox Route111_Text_1AC3CF, 5
- jump Route111_EventScript_1AE6F3
+ goto Route111_EventScript_1AE6F3
end
Route111_EventScript_1AE6BB:: @ 81AE6BB
msgbox Route111_Text_1AC18D, 5
- jump Route111_EventScript_1AE6F3
+ goto Route111_EventScript_1AE6F3
end
Route111_EventScript_1AE6C9:: @ 81AE6C9
msgbox Route111_Text_1AC219, 5
- jump Route111_EventScript_1AE6F3
+ goto Route111_EventScript_1AE6F3
end
Route111_EventScript_1AE6D7:: @ 81AE6D7
msgbox Route111_Text_1AC2D6, 5
- jump Route111_EventScript_1AE6F3
+ goto Route111_EventScript_1AE6F3
end
Route111_EventScript_1AE6E5:: @ 81AE6E5
msgbox Route111_Text_1AC355, 5
- jump Route111_EventScript_1AE6F3
+ goto Route111_EventScript_1AE6F3
end
Route111_EventScript_1AE6F3:: @ 81AE6F3
compare RESULT, 0
- jumpeq Route111_EventScript_1AE72D
+ goto_if_eq Route111_EventScript_1AE72D
msgbox Route111_Text_1AC40F, 4
setvar 0x8004, 10
call Route111_EventScript_1A00F3
lock
faceplayer
compare RESULT, 0
- jumpeq Route111_EventScript_1AE72D
+ goto_if_eq Route111_EventScript_1AE72D
msgbox Route111_Text_1AC487, 4
special sub_80BDC14
setflag 1
diff --git a/data/scripts/giddy.inc b/data/scripts/giddy.inc
deleted file mode 100644
index 263589fe9..000000000
--- a/data/scripts/giddy.inc
+++ /dev/null
@@ -1,51 +0,0 @@
-MauvilleCity_PokemonCenter_1F_EventScript_1B09EB:: @ 81B09EB
- lock
- faceplayer
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B092A, 5
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A0C
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A6F
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0A0C:: @ 81B0A0C
- special sub_80F7CC8
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A79
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0A26:: @ 81B0A26
- special sub_80F7CC8
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A40
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A79
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0A40:: @ 81B0A40
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0998, 4
- jump MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0A4E:: @ 81B0A4E
- special sub_80F7CF4
- special ShowFieldMessageStringVar4
- waittext
- yesnobox 20, 8
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A26
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0A26
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0A6F:: @ 81B0A6F
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B097C, 4
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0A79:: @ 81B0A79
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B09B0, 4
- release
- end
diff --git a/data/scripts/hipster.inc b/data/scripts/hipster.inc
deleted file mode 100644
index 3e24e4868..000000000
--- a/data/scripts/hipster.inc
+++ /dev/null
@@ -1,25 +0,0 @@
-MauvilleCity_PokemonCenter_1F_EventScript_1AE845:: @ 81AE845
- lock
- faceplayer
- setflag 2054
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0C5B, 4
- special sub_80F7C70
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE86A
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0CA7, 4
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE86A:: @ 81AE86A
- special sub_80F7C90
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AE882
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0D11, 4
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AE882:: @ 81AE882
- msgbox MauvilleCity_PokemonCenter_1F_Text_1B0D75, 4
- special sub_80F7C84
- release
- end
diff --git a/data/scripts/magma_chimney.inc b/data/scripts/magma_chimney.inc
index a2f4f67b7..f13b319f4 100644
--- a/data/scripts/magma_chimney.inc
+++ b/data/scripts/magma_chimney.inc
@@ -2,12 +2,12 @@ MtChimney_EventScript_1B2C95:: @ 81B2C95
lock
faceplayer
checkflag 219
- callif 0, MtChimney_EventScript_1B2CB9
+ call_if 0, MtChimney_EventScript_1B2CB9
checkflag 219
- callif 1, MtChimney_EventScript_1B2CC2
- closebutton
- move 1, MtChimney_Movement_1A083D
- waitmove 0
+ call_if 1, MtChimney_EventScript_1B2CC2
+ closemessage
+ applymovement 1, MtChimney_Movement_1A083D
+ waitmovement 0
setflag 219
release
end
@@ -35,13 +35,13 @@ MtChimney_EventScript_1B2CCB:: @ 81B2CCB
.else
msgbox MtChimney_Text_1B37BB, 4
.endif
- move 2, MtChimney_Movement_1A0839
- waitmove 0
- playsfx 21
- move 2, MtChimney_Movement_1A0833
- waitmove 0
- move 2, MtChimney_Movement_1A0835
- waitmove 0
+ applymovement 2, MtChimney_Movement_1A0839
+ waitmovement 0
+ playse 21
+ applymovement 2, MtChimney_Movement_1A0833
+ waitmovement 0
+ applymovement 2, MtChimney_Movement_1A0835
+ waitmovement 0
.ifdef SAPPHIRE
msgbox MtChimney_Text_1B2ED9, 4
.else
@@ -57,33 +57,33 @@ MtChimney_EventScript_1B2CCB:: @ 81B2CCB
.else
msgbox MtChimney_Text_1B3A90, 4
.endif
- closebutton
- pause 30
+ closemessage
+ delay 30
fadescreen 1
- disappear 2
- disappear 3
- disappear 22
+ removeobject 2
+ removeobject 3
+ removeobject 22
setflag 926
fadescreen 0
- movespriteperm 1, 10, 12
- reappear 1
+ setobjectxyperm 1, 10, 12
+ addobject 1
compare FACING, 4
- callif 1, MtChimney_EventScript_1B2D7D
+ call_if 1, MtChimney_EventScript_1B2D7D
compare FACING, 2
- callif 1, MtChimney_EventScript_1B2D88
- move 255, MtChimney_Movement_1A083F
- waitmove 0
+ call_if 1, MtChimney_EventScript_1B2D88
+ applymovement 255, MtChimney_Movement_1A083F
+ waitmovement 0
.ifdef SAPPHIRE
msgbox MtChimney_Text_1B3608, 4
.else
msgbox MtChimney_Text_1B3FFE, 4
.endif
- closebutton
+ closemessage
compare FACING, 4
- callif 1, MtChimney_EventScript_1B2D93
+ call_if 1, MtChimney_EventScript_1B2D93
compare FACING, 2
- callif 1, MtChimney_EventScript_1B2D9E
- disappear 1
+ call_if 1, MtChimney_EventScript_1B2D9E
+ removeobject 1
setflag 927
setflag 139
clearflag 928
@@ -92,21 +92,21 @@ MtChimney_EventScript_1B2CCB:: @ 81B2CCB
end
MtChimney_EventScript_1B2D7D:: @ 81B2D7D
- move 1, MtChimney_Movement_15D025
- waitmove 0
+ applymovement 1, MtChimney_Movement_15D025
+ waitmovement 0
return
MtChimney_EventScript_1B2D88:: @ 81B2D88
- move 1, MtChimney_Movement_15D036
- waitmove 0
+ applymovement 1, MtChimney_Movement_15D036
+ waitmovement 0
return
MtChimney_EventScript_1B2D93:: @ 81B2D93
- move 1, MtChimney_Movement_15D02D
- waitmove 0
+ applymovement 1, MtChimney_Movement_15D02D
+ waitmovement 0
return
MtChimney_EventScript_1B2D9E:: @ 81B2D9E
- move 1, MtChimney_Movement_15D03E
- waitmove 0
+ applymovement 1, MtChimney_Movement_15D03E
+ waitmovement 0
return
diff --git a/data/scripts/maps/AbandonedShip_CaptainsOffice.inc b/data/scripts/maps/AbandonedShip_CaptainsOffice.inc
index cf525003e..eb912028a 100644
--- a/data/scripts/maps/AbandonedShip_CaptainsOffice.inc
+++ b/data/scripts/maps/AbandonedShip_CaptainsOffice.inc
@@ -5,12 +5,12 @@ AbandonedShip_CaptainsOffice_EventScript_15EAF5:: @ 815EAF5
lock
faceplayer
checkflag 294
- jumpeq AbandonedShip_CaptainsOffice_EventScript_15EB2D
+ goto_if_eq AbandonedShip_CaptainsOffice_EventScript_15EB2D
checkitem ITEM_SCANNER, 1
compare RESULT, 1
- jumpeq AbandonedShip_CaptainsOffice_EventScript_15EB23
+ goto_if_eq AbandonedShip_CaptainsOffice_EventScript_15EB23
checkflag 1078
- jumpeq AbandonedShip_CaptainsOffice_EventScript_15EB2D
+ goto_if_eq AbandonedShip_CaptainsOffice_EventScript_15EB2D
msgbox AbandonedShip_CaptainsOffice_Text_198C85, 4
release
end
diff --git a/data/scripts/maps/AbandonedShip_Corridors_B1F.inc b/data/scripts/maps/AbandonedShip_Corridors_B1F.inc
index b0ae966ad..f3c3c0aa0 100644
--- a/data/scripts/maps/AbandonedShip_Corridors_B1F.inc
+++ b/data/scripts/maps/AbandonedShip_Corridors_B1F.inc
@@ -4,14 +4,14 @@ AbandonedShip_Corridors_B1F_MapScripts:: @ 815E98F
.byte 0
AbandonedShip_Corridors_B1F_MapScript1_15E99A:: @ 815E99A
- warp4 AbandonedShip_Underwater1, 255, 5, 4
+ setdivewarp AbandonedShip_Underwater1, 255, 5, 4
end
AbandonedShip_Corridors_B1F_MapScript1_15E9A3:: @ 815E9A3
checkflag 239
- callif 0, AbandonedShip_Corridors_B1F_EventScript_15E9B6
+ call_if 0, AbandonedShip_Corridors_B1F_EventScript_15E9B6
checkflag 239
- callif 1, AbandonedShip_Corridors_B1F_EventScript_15E9C0
+ call_if 1, AbandonedShip_Corridors_B1F_EventScript_15E9C0
end
AbandonedShip_Corridors_B1F_EventScript_15E9B6:: @ 815E9B6
@@ -29,12 +29,12 @@ AbandonedShip_Corridors_B1F_EventScript_15E9CA:: @ 815E9CA
AbandonedShip_Corridors_B1F_EventScript_15E9D3:: @ 815E9D3
lockall
checkflag 239
- jumpeq AbandonedShip_Corridors_B1F_EventScript_15EA14
+ goto_if_eq AbandonedShip_Corridors_B1F_EventScript_15EA14
checkitem ITEM_STORAGE_KEY, 1
compare RESULT, 0
- jumpeq AbandonedShip_Corridors_B1F_EventScript_15EA0A
+ goto_if_eq AbandonedShip_Corridors_B1F_EventScript_15EA0A
msgbox AbandonedShip_Corridors_B1F_Text_198692, 4
- playsfx 21
+ playse 21
removeitem ITEM_STORAGE_KEY, 1
setflag 239
call AbandonedShip_Corridors_B1F_EventScript_15E9C0
diff --git a/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc b/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc
index 8cb2aed22..29a89a620 100644
--- a/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc
+++ b/data/scripts/maps/AbandonedShip_HiddenFloorCorridors.inc
@@ -4,26 +4,26 @@ AbandonedShip_HiddenFloorCorridors_MapScripts:: @ 815EB46
.byte 0
AbandonedShip_HiddenFloorCorridors_MapScript1_15EB51:: @ 815EB51
- warp4 AbandonedShip_Underwater1, 255, 5, 4
+ setdivewarp AbandonedShip_Underwater1, 255, 5, 4
end
AbandonedShip_HiddenFloorCorridors_MapScript1_15EB5A:: @ 815EB5A
checkflag 240
- callif 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBCB
+ call_if 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBCB
checkflag 241
- callif 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBD5
+ call_if 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBD5
checkflag 242
- callif 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBDF
+ call_if 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBDF
checkflag 243
- callif 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBE9
+ call_if 0, AbandonedShip_HiddenFloorCorridors_EventScript_15EBE9
checkflag 240
- callif 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3
+ call_if 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3
checkflag 241
- callif 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBAD
+ call_if 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBAD
checkflag 242
- callif 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBB7
+ call_if 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBB7
checkflag 243
- callif 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBC1
+ call_if 1, AbandonedShip_HiddenFloorCorridors_EventScript_15EBC1
end
AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3:: @ 815EBA3
@@ -61,12 +61,12 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EBE9:: @ 815EBE9
AbandonedShip_HiddenFloorCorridors_EventScript_15EBF3:: @ 815EBF3
lockall
checkflag 240
- jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7
+ goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7
checkitem ITEM_ROOM_1_KEY, 1
compare RESULT, 0
- jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECCF
+ goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECCF
msgbox AbandonedShip_HiddenFloorCorridors_Text_198E90, 4
- playsfx 21
+ playse 21
removeitem ITEM_ROOM_1_KEY, 1
setflag 240
call AbandonedShip_HiddenFloorCorridors_EventScript_15EBA3
@@ -77,12 +77,12 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EBF3:: @ 815EBF3
AbandonedShip_HiddenFloorCorridors_EventScript_15EC2A:: @ 815EC2A
lockall
checkflag 241
- jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7
+ goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7
checkitem ITEM_ROOM_2_KEY, 1
compare RESULT, 0
- jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECD9
+ goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECD9
msgbox AbandonedShip_HiddenFloorCorridors_Text_198E90, 4
- playsfx 21
+ playse 21
removeitem ITEM_ROOM_2_KEY, 1
setflag 241
call AbandonedShip_HiddenFloorCorridors_EventScript_15EBAD
@@ -93,12 +93,12 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EC2A:: @ 815EC2A
AbandonedShip_HiddenFloorCorridors_EventScript_15EC61:: @ 815EC61
lockall
checkflag 242
- jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7
+ goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7
checkitem ITEM_ROOM_4_KEY, 1
compare RESULT, 0
- jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECE3
+ goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECE3
msgbox AbandonedShip_HiddenFloorCorridors_Text_198E90, 4
- playsfx 21
+ playse 21
removeitem ITEM_ROOM_4_KEY, 1
setflag 242
call AbandonedShip_HiddenFloorCorridors_EventScript_15EBB7
@@ -109,12 +109,12 @@ AbandonedShip_HiddenFloorCorridors_EventScript_15EC61:: @ 815EC61
AbandonedShip_HiddenFloorCorridors_EventScript_15EC98:: @ 815EC98
lockall
checkflag 243
- jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7
+ goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECF7
checkitem ITEM_ROOM_6_KEY, 1
compare RESULT, 0
- jumpeq AbandonedShip_HiddenFloorCorridors_EventScript_15ECED
+ goto_if_eq AbandonedShip_HiddenFloorCorridors_EventScript_15ECED
msgbox AbandonedShip_HiddenFloorCorridors_Text_198E90, 4
- playsfx 21
+ playse 21
removeitem ITEM_ROOM_6_KEY, 1
setflag 243
call AbandonedShip_HiddenFloorCorridors_EventScript_15EBC1
diff --git a/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc b/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc
index 5c4c050a0..eb5c1dccd 100644
--- a/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc
+++ b/data/scripts/maps/AbandonedShip_HiddenFloorRooms.inc
@@ -11,11 +11,11 @@ AbandonedShip_HiddenFloorRooms_EventScript_15ED11:: @ 815ED11
getplayerxy 0x4002, 0x4003
setvar 0x4004, 1
compare 0x4002, 21
- callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED89
+ call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED89
compare 0x4002, 36
- callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED8F
+ call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED8F
compare 0x4003, 2
- callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED95
+ call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED95
switch 0x4004
case 1, AbandonedShip_HiddenFloorRooms_EventScript_15ED9B
case 2, AbandonedShip_HiddenFloorRooms_EventScript_15EDC4
@@ -38,102 +38,102 @@ AbandonedShip_HiddenFloorRooms_EventScript_15ED95:: @ 815ED95
return
AbandonedShip_HiddenFloorRooms_EventScript_15ED9B:: @ 815ED9B
- pause 20
- setanimation 0, 10
- setanimation 1, 10
- setanimation 2, 0
- doanimation 54
- specialval RESULT, sub_810F4D4
+ delay 20
+ setfieldeffect 0, 10
+ setfieldeffect 1, 10
+ setfieldeffect 2, 0
+ dofieldeffect 54
+ specialvar RESULT, sub_810F4D4
compare RESULT, 0
- callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE8B
- checkanimation 54
- pause 10
+ call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE8B
+ waitfieldeffect 54
+ delay 10
end
AbandonedShip_HiddenFloorRooms_EventScript_15EDC4:: @ 815EDC4
end
AbandonedShip_HiddenFloorRooms_EventScript_15EDC5:: @ 815EDC5
- specialval RESULT, sub_810F488
+ specialvar RESULT, sub_810F488
compare RESULT, 1
- jumpeq AbandonedShip_HiddenFloorRooms_EventScript_15EDEA
- pause 20
+ goto_if_eq AbandonedShip_HiddenFloorRooms_EventScript_15EDEA
+ delay 20
compare RESULT, 0
- callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE6B
- checkanimation 54
- pause 10
+ call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE6B
+ waitfieldeffect 54
+ delay 10
end
AbandonedShip_HiddenFloorRooms_EventScript_15EDEA:: @ 815EDEA
end
AbandonedShip_HiddenFloorRooms_EventScript_15EDEB:: @ 815EDEB
- pause 20
- setanimation 0, 8
- setanimation 1, 5
- setanimation 2, 0
- doanimation 54
- setanimation 0, 11
- setanimation 1, 3
- setanimation 2, 0
- doanimation 54
- specialval RESULT, sub_810F4FC
+ delay 20
+ setfieldeffect 0, 8
+ setfieldeffect 1, 5
+ setfieldeffect 2, 0
+ dofieldeffect 54
+ setfieldeffect 0, 11
+ setfieldeffect 1, 3
+ setfieldeffect 2, 0
+ dofieldeffect 54
+ specialvar RESULT, sub_810F4FC
compare RESULT, 0
- callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE9B
- checkanimation 54
- pause 10
+ call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE9B
+ waitfieldeffect 54
+ delay 10
end
AbandonedShip_HiddenFloorRooms_EventScript_15EE23:: @ 815EE23
- pause 20
- setanimation 0, 16
- setanimation 1, 3
- setanimation 2, 0
- doanimation 54
- setanimation 0, 25
- setanimation 1, 2
- setanimation 2, 0
- doanimation 54
- setanimation 0, 24
- setanimation 1, 6
- setanimation 2, 0
- doanimation 54
- specialval RESULT, sub_810F4B0
+ delay 20
+ setfieldeffect 0, 16
+ setfieldeffect 1, 3
+ setfieldeffect 2, 0
+ dofieldeffect 54
+ setfieldeffect 0, 25
+ setfieldeffect 1, 2
+ setfieldeffect 2, 0
+ dofieldeffect 54
+ setfieldeffect 0, 24
+ setfieldeffect 1, 6
+ setfieldeffect 2, 0
+ dofieldeffect 54
+ specialvar RESULT, sub_810F4B0
compare RESULT, 0
- callif 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE7B
- checkanimation 54
- pause 10
+ call_if 1, AbandonedShip_HiddenFloorRooms_EventScript_15EE7B
+ waitfieldeffect 54
+ delay 10
end
AbandonedShip_HiddenFloorRooms_EventScript_15EE6A:: @ 815EE6A
end
AbandonedShip_HiddenFloorRooms_EventScript_15EE6B:: @ 815EE6B
- setanimation 0, 42
- setanimation 1, 10
- setanimation 2, 0
- doanimation 54
+ setfieldeffect 0, 42
+ setfieldeffect 1, 10
+ setfieldeffect 2, 0
+ dofieldeffect 54
return
AbandonedShip_HiddenFloorRooms_EventScript_15EE7B:: @ 815EE7B
- setanimation 0, 20
- setanimation 1, 5
- setanimation 2, 0
- doanimation 54
+ setfieldeffect 0, 20
+ setfieldeffect 1, 5
+ setfieldeffect 2, 0
+ dofieldeffect 54
return
AbandonedShip_HiddenFloorRooms_EventScript_15EE8B:: @ 815EE8B
- setanimation 0, 1
- setanimation 1, 12
- setanimation 2, 0
- doanimation 54
+ setfieldeffect 0, 1
+ setfieldeffect 1, 12
+ setfieldeffect 2, 0
+ dofieldeffect 54
return
AbandonedShip_HiddenFloorRooms_EventScript_15EE9B:: @ 815EE9B
- setanimation 0, 1
- setanimation 1, 2
- setanimation 2, 0
- doanimation 54
+ setfieldeffect 0, 1
+ setfieldeffect 1, 2
+ setfieldeffect 2, 0
+ dofieldeffect 54
return
AbandonedShip_HiddenFloorRooms_EventScript_15EEAB:: @ 815EEAB
diff --git a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc
index a6ccdc43c..5e8ab1062 100644
--- a/data/scripts/maps/AbandonedShip_Rooms2_1F.inc
+++ b/data/scripts/maps/AbandonedShip_Rooms2_1F.inc
@@ -3,9 +3,9 @@ AbandonedShip_Rooms2_1F_MapScripts:: @ 815EA67
AbandonedShip_Rooms2_1F_EventScript_15EA68:: @ 815EA68
trainerbattle 4, OPPONENT_LOIS_AND_HAL_1, 0, AbandonedShip_Rooms2_1F_Text_1987C1, AbandonedShip_Rooms2_1F_Text_1987FE, AbandonedShip_Rooms2_1F_Text_19887F
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq AbandonedShip_Rooms2_1F_EventScript_15EA93
+ goto_if_eq AbandonedShip_Rooms2_1F_EventScript_15EA93
msgbox AbandonedShip_Rooms2_1F_Text_198835, 6
end
@@ -16,9 +16,9 @@ AbandonedShip_Rooms2_1F_EventScript_15EA93:: @ 815EA93
AbandonedShip_Rooms2_1F_EventScript_15EAAE:: @ 815EAAE
trainerbattle 4, OPPONENT_LOIS_AND_HAL_1, 0, AbandonedShip_Rooms2_1F_Text_1988CC, AbandonedShip_Rooms2_1F_Text_198916, AbandonedShip_Rooms2_1F_Text_19899A
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq AbandonedShip_Rooms2_1F_EventScript_15EAD9
+ goto_if_eq AbandonedShip_Rooms2_1F_EventScript_15EAD9
msgbox AbandonedShip_Rooms2_1F_Text_198934, 6
end
diff --git a/data/scripts/maps/AbandonedShip_Rooms_B1F.inc b/data/scripts/maps/AbandonedShip_Rooms_B1F.inc
index 44b8c5f20..218f1a2ca 100644
--- a/data/scripts/maps/AbandonedShip_Rooms_B1F.inc
+++ b/data/scripts/maps/AbandonedShip_Rooms_B1F.inc
@@ -3,7 +3,7 @@ AbandonedShip_Rooms_B1F_MapScripts:: @ 815EA35
.byte 0
AbandonedShip_Rooms_B1F_MapScript1_15EA3B:: @ 815EA3B
- warp4 AbandonedShip_Underwater2, 255, 17, 4
+ setdivewarp AbandonedShip_Underwater2, 255, 17, 4
end
AbandonedShip_Rooms_B1F_EventScript_15EA44:: @ 815EA44
diff --git a/data/scripts/maps/AbandonedShip_Underwater1.inc b/data/scripts/maps/AbandonedShip_Underwater1.inc
index 71d903682..afac470ea 100644
--- a/data/scripts/maps/AbandonedShip_Underwater1.inc
+++ b/data/scripts/maps/AbandonedShip_Underwater1.inc
@@ -3,5 +3,5 @@ AbandonedShip_Underwater1_MapScripts:: @ 815EA57
.byte 0
AbandonedShip_Underwater1_MapScript1_15EA5D:: @ 815EA5D
- warp4 AbandonedShip_HiddenFloorCorridors, 255, 0, 10
+ setdivewarp AbandonedShip_HiddenFloorCorridors, 255, 0, 10
end
diff --git a/data/scripts/maps/AbandonedShip_Underwater2.inc b/data/scripts/maps/AbandonedShip_Underwater2.inc
index f7b434c07..b8facc4ec 100644
--- a/data/scripts/maps/AbandonedShip_Underwater2.inc
+++ b/data/scripts/maps/AbandonedShip_Underwater2.inc
@@ -3,5 +3,5 @@ AbandonedShip_Underwater2_MapScripts:: @ 815EB37
.byte 0
AbandonedShip_Underwater2_MapScript1_15EB3D:: @ 815EB3D
- warp4 AbandonedShip_Rooms_B1F, 255, 13, 7
+ setdivewarp AbandonedShip_Rooms_B1F, 255, 13, 7
end
diff --git a/data/scripts/maps/AncientTomb.inc b/data/scripts/maps/AncientTomb.inc
index 7ba7540c4..188691e73 100644
--- a/data/scripts/maps/AncientTomb.inc
+++ b/data/scripts/maps/AncientTomb.inc
@@ -6,11 +6,11 @@ AncientTomb_MapScripts:: @ 815EFBE
AncientTomb_MapScript1_15EFCE:: @ 815EFCE
checkflag 2145
- callif 1, AncientTomb_EventScript_15EFD8
+ call_if 1, AncientTomb_EventScript_15EFD8
end
AncientTomb_EventScript_15EFD8:: @ 815EFD8
- disappear LAST_TALKED
+ removeobject LAST_TALKED
return
AncientTomb_MapScript1_15EFDC:: @ 815EFDC
@@ -19,7 +19,7 @@ AncientTomb_MapScript1_15EFDC:: @ 815EFDC
AncientTomb_MapScript1_15EFE0:: @ 815EFE0
checkflag 2130
- callif 0, AncientTomb_EventScript_15EFEA
+ call_if 0, AncientTomb_EventScript_15EFEA
end
AncientTomb_EventScript_15EFEA:: @ 815EFEA
@@ -34,10 +34,10 @@ AncientTomb_EventScript_15EFEA:: @ 815EFEA
AncientTomb_EventScript_15F021:: @ 815F021
lockall
checkflag 2130
- jumpeq AncientTomb_EventScript_15F038
- braillemsg AncientTomb_Braille_1C552E
+ goto_if_eq AncientTomb_EventScript_15F038
+ braillemessage AncientTomb_Braille_1C552E
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
@@ -48,23 +48,23 @@ AncientTomb_EventScript_15F038:: @ 815F038
AncientTomb_EventScript_15F042:: @ 815F042
lockall
- braillemsg AncientTomb_Braille_1C552E
+ braillemessage AncientTomb_Braille_1C552E
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
AncientTomb_EventScript_15F050:: @ 815F050
lock
faceplayer
- checksound
- pokecry SPECIES_REGISTEEL, 2
- pause 40
+ waitse
+ playpokecry SPECIES_REGISTEEL, 2
+ delay 40
waitpokecry
setwildbattle SPECIES_REGISTEEL, 40, ITEM_NONE
setflag 937
setflag 2145
- special StartBattle_Regi
+ special ScrSpecial_StartRegiBattle
waitstate
clearflag 2145
release
diff --git a/data/scripts/maps/AquaHideout_1F.inc b/data/scripts/maps/AquaHideout_1F.inc
index cc1ad33b1..2eb2ae7e9 100644
--- a/data/scripts/maps/AquaHideout_1F.inc
+++ b/data/scripts/maps/AquaHideout_1F.inc
@@ -11,7 +11,7 @@ MagmaHideout_1F_EventScript_15D7CE:: @ 815D7CE
lock
faceplayer
checkflag 111
- jumpeq AquaHideout_1F_EventScript_15D7E3
+ goto_if_eq AquaHideout_1F_EventScript_15D7E3
msgbox AquaHideout_1F_Text_196AFD, 4
release
end
@@ -26,7 +26,7 @@ MagmaHideout_1F_EventScript_15D7ED:: @ 815D7ED
lock
faceplayer
checkflag 111
- jumpeq AquaHideout_1F_EventScript_15D802
+ goto_if_eq AquaHideout_1F_EventScript_15D802
msgbox AquaHideout_1F_Text_196C83, 4
release
end
diff --git a/data/scripts/maps/AquaHideout_B1F.inc b/data/scripts/maps/AquaHideout_B1F.inc
index 969d590e3..0001d7574 100644
--- a/data/scripts/maps/AquaHideout_B1F.inc
+++ b/data/scripts/maps/AquaHideout_B1F.inc
@@ -5,11 +5,11 @@ AquaHideout_B1F_MapScripts:: @ 815D831
AquaHideout_B1F_MapScript1_15D83C:: @ 815D83C
checkflag 2145
- callif 1, AquaHideout_B1F_EventScript_15D846
+ call_if 1, AquaHideout_B1F_EventScript_15D846
end
AquaHideout_B1F_EventScript_15D846:: @ 815D846
- disappear LAST_TALKED
+ removeobject LAST_TALKED
return
AquaHideout_B1F_MapScript1_15D84A:: @ 815D84A
diff --git a/data/scripts/maps/AquaHideout_B2F.inc b/data/scripts/maps/AquaHideout_B2F.inc
index 845b755b7..230d0e2db 100644
--- a/data/scripts/maps/AquaHideout_B2F.inc
+++ b/data/scripts/maps/AquaHideout_B2F.inc
@@ -10,15 +10,15 @@ AquaHideout_B2F_EventScript_15D8BD:: @ 815D8BD
MagmaHideout_B2F_EventScript_15D8BD:: @ 815D8BD
lockall
setvar 0x8008, 1
- playsfx 21
- move 0x8008, AquaHideout_B2F_Movement_1A0833
- waitmove 0
+ playse 21
+ applymovement 0x8008, AquaHideout_B2F_Movement_1A0833
+ waitmovement 0
.ifdef SAPPHIRE
- move 0x8008, AquaHideout_B2F_Movement_1A0839
+ applymovement 0x8008, AquaHideout_B2F_Movement_1A0839
.else
- move 0x8008, AquaHideout_B2F_Movement_1A0841
+ applymovement 0x8008, AquaHideout_B2F_Movement_1A0841
.endif
- waitmove 0
+ waitmovement 0
setvar 0x4001, 1
releaseall
end
@@ -38,31 +38,31 @@ AquaHideout_B2F_EventScript_15D8FD:: @ 815D8FD
setvar 0x8009, 3
.endif
.ifdef SAPPHIRE
- move 0x8008, Movement_1A083F
+ applymovement 0x8008, Movement_1A083F
.else
- move 0x8008, AquaHideout_B2F_Movement_1A0843
+ applymovement 0x8008, AquaHideout_B2F_Movement_1A0843
.endif
- waitmove 0
- pause 20
- move 0x8008, AquaHideout_B2F_Movement_1A0839
- waitmove 0
+ waitmovement 0
+ delay 20
+ applymovement 0x8008, AquaHideout_B2F_Movement_1A0839
+ waitmovement 0
msgbox AquaHideout_B2F_Text_197162, 4
- closebutton
+ closemessage
.ifdef SAPPHIRE
- move 0x8008, Movement_1A083F
+ applymovement 0x8008, Movement_1A083F
.else
- move 0x8008, AquaHideout_B2F_Movement_1A0843
+ applymovement 0x8008, AquaHideout_B2F_Movement_1A0843
.endif
.ifdef SAPPHIRE
- move 0x8009, AquaHideout_B2F_Movement_15D958
+ applymovement 0x8009, AquaHideout_B2F_Movement_15D958
.else
- move 0x8009, AquaHideout_B2F_Movement_15D95D
+ applymovement 0x8009, AquaHideout_B2F_Movement_15D95D
.endif
- waitmove 0
- disappear 0x8009
- pause 20
- move 0x8008, AquaHideout_B2F_Movement_1A0839
- waitmove 0
+ waitmovement 0
+ removeobject 0x8009
+ delay 20
+ applymovement 0x8008, AquaHideout_B2F_Movement_1A0839
+ waitmovement 0
msgbox AquaHideout_B2F_Text_1971AE, 4
setflag 112
setflag 852
diff --git a/data/scripts/maps/BattleTower_BattleRoom.inc b/data/scripts/maps/BattleTower_BattleRoom.inc
index 176d8e8e8..3f1aad4a0 100644
--- a/data/scripts/maps/BattleTower_BattleRoom.inc
+++ b/data/scripts/maps/BattleTower_BattleRoom.inc
@@ -8,19 +8,19 @@ BattleTower_BattleRoom_MapScript2_1608E1:: @ 81608E1
BattleTower_BattleRoom_EventScript_1608EB:: @ 81608EB
setvar 0x4000, 1
- move 255, BattleTower_BattleRoom_Movement_160AB7
- waitmove 0
+ applymovement 255, BattleTower_BattleRoom_Movement_160AB7
+ waitmovement 0
BattleTower_BattleRoom_EventScript_1608FA:: @ 81608FA
special sub_81347F8
- reappear 1
- move 1, BattleTower_BattleRoom_Movement_160AC0
- waitmove 0
+ addobject 1
+ applymovement 1, BattleTower_BattleRoom_Movement_160AC0
+ waitmovement 0
special sub_8135474
msgbox 0x20234cc, 4
- waittext
- closebutton
- special HealPlayerParty
+ waitmessage
+ closemessage
+ special ScrSpecial_HealPlayerParty
setvar 0x8004, 0
setvar 0x8005, 0
special sub_813556C
@@ -43,20 +43,20 @@ BattleTower_BattleRoom_EventScript_160961:: @ 8160961
special sub_8135668
switch RESULT
case 8, BattleTower_BattleRoom_EventScript_160A56
- move 1, BattleTower_BattleRoom_Movement_160AC6
- waitmove 0
- disappear 1
- move 2, BattleTower_BattleRoom_Movement_160ACB
- waitmove 0
- move 255, BattleTower_BattleRoom_Movement_160ABC
- waitmove 0
+ applymovement 1, BattleTower_BattleRoom_Movement_160AC6
+ waitmovement 0
+ removeobject 1
+ applymovement 2, BattleTower_BattleRoom_Movement_160ACB
+ waitmovement 0
+ applymovement 255, BattleTower_BattleRoom_Movement_160ABC
+ waitmovement 0
msgbox BattleTower_BattleRoom_Text_19ACDC, 4
special LoadPlayerParty
special SavePlayerParty
special sub_8135A14
- fanfare 368
+ playfanfare 368
waitfanfare
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
BattleTower_BattleRoom_EventScript_1609B2:: @ 81609B2
msgbox BattleTower_BattleRoom_Text_19AD09, 5
@@ -80,12 +80,12 @@ BattleTower_BattleRoom_EventScript_160A0E:: @ 8160A0E
case 127, BattleTower_BattleRoom_EventScript_1609B2
BattleTower_BattleRoom_EventScript_160A3C:: @ 8160A3C
- closebutton
- move 255, BattleTower_BattleRoom_Movement_160ABE
- waitmove 0
- move 2, BattleTower_BattleRoom_Movement_160AD0
- waitmove 0
- jump BattleTower_BattleRoom_EventScript_1608FA
+ closemessage
+ applymovement 255, BattleTower_BattleRoom_Movement_160ABE
+ waitmovement 0
+ applymovement 2, BattleTower_BattleRoom_Movement_160AD0
+ waitmovement 0
+ goto BattleTower_BattleRoom_EventScript_1608FA
BattleTower_BattleRoom_EventScript_160A56:: @ 8160A56
special LoadPlayerParty
@@ -108,10 +108,10 @@ BattleTower_BattleRoom_EventScript_160A94:: @ 8160A94
setvar 0x8004, 2
special sub_8135BA0
message BattleTower_BattleRoom_Text_1C6CE1
- pause 60
- waittext
- playsfx 55
- checksound
+ delay 60
+ waitmessage
+ playse 55
+ waitse
msgbox BattleTower_BattleRoom_Text_1C6D05, 4
BattleTower_BattleRoom_EventScript_160AB1:: @ 8160AB1
diff --git a/data/scripts/maps/BattleTower_Corridor.inc b/data/scripts/maps/BattleTower_Corridor.inc
index 4ccf2028c..9d4fbc844 100644
--- a/data/scripts/maps/BattleTower_Corridor.inc
+++ b/data/scripts/maps/BattleTower_Corridor.inc
@@ -5,7 +5,7 @@ BattleTower_Corridor_MapScripts:: @ 8160845
BattleTower_Corridor_MapScript1_160850:: @ 8160850
compare 0x8006, 1
- jumpeq BattleTower_Corridor_EventScript_16086E
+ goto_if_eq BattleTower_Corridor_EventScript_16086E
setmaptile 12, 0, 519, 0
setmaptile 12, 1, 527, 0
end
@@ -22,16 +22,16 @@ BattleTower_Corridor_MapScript2_160881:: @ 8160881
BattleTower_Corridor_EventScript_16088B:: @ 816088B
setvar 0x4000, 1
compare 0x8006, 1
- jumpeq BattleTower_Corridor_EventScript_1608B1
- move 1, BattleTower_Corridor_Movement_1608D5
- move 255, BattleTower_Corridor_Movement_1608D4
- waitmove 0
- jump BattleTower_Corridor_EventScript_1608C2
+ goto_if_eq BattleTower_Corridor_EventScript_1608B1
+ applymovement 1, BattleTower_Corridor_Movement_1608D5
+ applymovement 255, BattleTower_Corridor_Movement_1608D4
+ waitmovement 0
+ goto BattleTower_Corridor_EventScript_1608C2
BattleTower_Corridor_EventScript_1608B1:: @ 81608B1
- move 1, BattleTower_Corridor_Movement_1608D2
- move 255, BattleTower_Corridor_Movement_1608D1
- waitmove 0
+ applymovement 1, BattleTower_Corridor_Movement_1608D2
+ applymovement 255, BattleTower_Corridor_Movement_1608D1
+ waitmovement 0
BattleTower_Corridor_EventScript_1608C2:: @ 81608C2
setvar 0x4000, 0
diff --git a/data/scripts/maps/BattleTower_Elevator.inc b/data/scripts/maps/BattleTower_Elevator.inc
index 408e7485e..a147a3b5a 100644
--- a/data/scripts/maps/BattleTower_Elevator.inc
+++ b/data/scripts/maps/BattleTower_Elevator.inc
@@ -9,15 +9,15 @@ BattleTower_Elevator_MapScript2_1607DA:: @ 81607DA
BattleTower_Elevator_EventScript_1607E4:: @ 81607E4
setvar 0x4000, 1
- move 1, BattleTower_Elevator_Movement_160835
- move 255, BattleTower_Elevator_Movement_160839
- waitmove 0
+ applymovement 1, BattleTower_Elevator_Movement_160835
+ applymovement 255, BattleTower_Elevator_Movement_160839
+ waitmovement 0
special sub_810EBEC
waitstate
- pause 64
- move 1, BattleTower_Elevator_Movement_16083D
- move 255, BattleTower_Elevator_Movement_160841
- waitmove 0
+ delay 64
+ applymovement 1, BattleTower_Elevator_Movement_16083D
+ applymovement 255, BattleTower_Elevator_Movement_160841
+ waitmovement 0
setvar 0x4000, 0
warp BattleTower_Corridor, 255, 8, 1
waitstate
@@ -29,7 +29,7 @@ BattleTower_Elevator_MapScript2_160821:: @ 8160821
BattleTower_Elevator_EventScript_16082B:: @ 816082B
setvar 0x4001, 1
- spriteface 255, 2
+ turnobject 255, 2
end
BattleTower_Elevator_Movement_160835:: @ 8160835
diff --git a/data/scripts/maps/BattleTower_Lobby.inc b/data/scripts/maps/BattleTower_Lobby.inc
index 8cd3639a5..3227df991 100644
--- a/data/scripts/maps/BattleTower_Lobby.inc
+++ b/data/scripts/maps/BattleTower_Lobby.inc
@@ -14,20 +14,20 @@ BattleTower_Lobby_EventScript_16029C:: @ 816029C
setvar 0x8004, 10
special sub_8135668
checkflag 238
- jumpeq BattleTower_Lobby_EventScript_1602E4
+ goto_if_eq BattleTower_Lobby_EventScript_1602E4
checkflag 237
- jumpeq BattleTower_Lobby_EventScript_1602CD
- specialval 0x8007, sub_810F404
+ goto_if_eq BattleTower_Lobby_EventScript_1602CD
+ specialvar 0x8007, sub_810F404
compare 0x8007, 50
- jumpif 0, BattleTower_Lobby_EventScript_1602E4
+ goto_if 0, BattleTower_Lobby_EventScript_1602E4
clearflag 941
special sub_810F8FC
return
BattleTower_Lobby_EventScript_1602CD:: @ 81602CD
- specialval 0x8007, sub_810F404
+ specialvar 0x8007, sub_810F404
compare 0x8007, 100
- jumpif 0, BattleTower_Lobby_EventScript_1602E4
+ goto_if 0, BattleTower_Lobby_EventScript_1602E4
clearflag 941
special sub_810F8FC
return
@@ -46,7 +46,7 @@ BattleTower_Lobby_MapScript2_1602EE:: @ 81602EE
BattleTower_Lobby_EventScript_1602F8:: @ 81602F8
setvar 0x4001, 1
- spriteface 255, 2
+ turnobject 255, 2
end
BattleTower_Lobby_MapScript2_160302:: @ 8160302
@@ -65,7 +65,7 @@ BattleTower_Lobby_EventScript_160330:: @ 8160330
lock
faceplayer
msgbox BattleTower_Lobby_Text_19A3FD, 4
- closebutton
+ closemessage
setvar 0x4000, 5
release
end
@@ -74,17 +74,17 @@ BattleTower_Lobby_EventScript_160342:: @ 8160342
lock
faceplayer
message BattleTower_Lobby_Text_19A487
- waittext
+ waitmessage
setvar 0x8004, 0
special sub_81358A4
compare RESULT, 6
- jumpeq BattleTower_Lobby_EventScript_16037D
+ goto_if_eq BattleTower_Lobby_EventScript_16037D
special sub_8135E50
compare RESULT, 0
- jumpeq BattleTower_Lobby_EventScript_16037D
+ goto_if_eq BattleTower_Lobby_EventScript_16037D
message BattleTower_Lobby_Text_19A6BE
- waittext
- fanfare 370
+ waitmessage
+ playfanfare 370
waitfanfare
msgbox BattleTower_Lobby_Text_19A719, 4
@@ -92,47 +92,47 @@ BattleTower_Lobby_EventScript_16037D:: @ 816037D
setvar 0x8004, 8
special sub_81358A4
compare RESULT, 1
- jumpeq BattleTower_Lobby_EventScript_1603AD
+ goto_if_eq BattleTower_Lobby_EventScript_1603AD
message BattleTower_Lobby_Text_19A589
- waittext
+ waitmessage
setvar 0x8004, 13
special sub_8135668
special sub_8135D84
setvar 0x8004, 3
special sub_8135BA0
- playsfx 55
- checksound
+ playse 55
+ waitse
BattleTower_Lobby_EventScript_1603AD:: @ 81603AD
setvar 0x8004, 0
setvar 0x8005, 3
special sub_8135668
message BattleTower_Lobby_Text_19A4BB
- waittext
+ waitmessage
special sub_8135DEC
switch RESULT
case 0, BattleTower_Lobby_EventScript_160408
message BattleTower_Lobby_Text_19A506
- waittext
- fanfare 370
+ waitmessage
+ playfanfare 370
waitfanfare
setvar 0x8004, 9
special sub_81358A4
compare RESULT, 49
- jumpif 5, BattleTower_Lobby_EventScript_1603F8
+ goto_if 5, BattleTower_Lobby_EventScript_1603F8
msgbox BattleTower_Lobby_Text_19A617, 4
BattleTower_Lobby_EventScript_1603F8:: @ 81603F8
msgbox BattleTower_Lobby_Text_199FA9, 4
- closebutton
+ closemessage
setvar 0x4000, 5
release
end
BattleTower_Lobby_EventScript_160408:: @ 8160408
msgbox BattleTower_Lobby_Text_19A520, 4
- waittext
- closebutton
+ waitmessage
+ closemessage
setvar 0x4000, 5
release
end
@@ -141,17 +141,17 @@ BattleTower_Lobby_EventScript_160419:: @ 8160419
lock
faceplayer
message BattleTower_Lobby_Text_19A571
- waittext
+ waitmessage
message BattleTower_Lobby_Text_19A589
- waittext
+ waitmessage
setvar 0x8004, 13
special sub_8135668
setvar 0x8004, 0
special sub_8135BA0
- playsfx 55
- checksound
+ playse 55
+ waitse
msgbox BattleTower_Lobby_Text_199FA9, 4
- closebutton
+ closemessage
setvar 0x4000, 5
release
end
@@ -161,13 +161,13 @@ BattleTower_Lobby_EventScript_16044B:: @ 816044B
faceplayer
setvar 0x40bc, 1
message BattleTower_Lobby_Text_19A5B1
- waittext
+ waitmessage
message BattleTower_Lobby_Text_19A5CE
- waittext
+ waitmessage
setvar 0x8004, 1
special sub_8135BA0
- playsfx 55
- checksound
+ playse 55
+ waitse
setvar 0x8004, 8
setvar 0x8005, 0
special sub_8135668
@@ -175,7 +175,7 @@ BattleTower_Lobby_EventScript_16044B:: @ 816044B
special SavePlayerParty
special sub_8135A14
msgbox BattleTower_Lobby_Text_19A0A8, 4
- closebutton
+ closemessage
call BattleTower_Lobby_EventScript_160664
warp BattleTower_Elevator, 255, 1, 6
setvar 0x4000, 0
@@ -187,13 +187,13 @@ BattleTower_Lobby_EventScript_16049E:: @ 816049E
setvar 0x8004, 0
special sub_81358A4
compare RESULT, 6
- jumpeq BattleTower_Lobby_EventScript_160342
+ goto_if_eq BattleTower_Lobby_EventScript_160342
special SavePlayerParty
msgbox BattleTower_Lobby_Text_199F2C, 4
BattleTower_Lobby_EventScript_1604BE:: @ 81604BE
message BattleTower_Lobby_Text_199F79
- waittext
+ waitmessage
multichoice 15, 6, 23, 0
switch RESULT
case 0, BattleTower_Lobby_EventScript_1604FA
@@ -203,14 +203,14 @@ BattleTower_Lobby_EventScript_1604BE:: @ 81604BE
BattleTower_Lobby_EventScript_1604FA:: @ 81604FA
message BattleTower_Lobby_Text_19A024
- waittext
+ waitmessage
multichoice 18, 6, 24, 0
switch RESULT
case 2, BattleTower_Lobby_EventScript_160652
case 127, BattleTower_Lobby_EventScript_160652
special CheckPartyBattleTowerBanlist
compare 0x8004, 1
- jumpeq BattleTower_Lobby_EventScript_16060D
+ goto_if_eq BattleTower_Lobby_EventScript_16060D
setvar 0x8004, 1
copyvar 0x8005, RESULT
copyvar 0x8006, RESULT
@@ -220,7 +220,7 @@ BattleTower_Lobby_EventScript_1604FA:: @ 81604FA
special ChooseBattleTowerPlayerParty
waitstate
compare RESULT, 0
- jumpeq BattleTower_Lobby_EventScript_16064F
+ goto_if_eq BattleTower_Lobby_EventScript_16064F
msgbox BattleTower_Lobby_Text_199FDA, 5
switch RESULT
case 0, BattleTower_Lobby_EventScript_16064F
@@ -240,19 +240,19 @@ BattleTower_Lobby_EventScript_160587:: @ 8160587
setvar 0x8005, 0
special sub_8135668
special LoadPlayerParty
- closebutton
- pause 2
- call BattleTower_Lobby_EventScript_19F806
+ closemessage
+ delay 2
+ call S_DoSaveDialog
setvar 0x4000, 5
- hidebox 0, 0, 15, 10
+ erasebox 0, 0, 15, 10
compare RESULT, 0
- jumpeq BattleTower_Lobby_EventScript_160642
- inccounter GAME_STAT_ENTERED_BATTLE_TOWER
+ goto_if_eq BattleTower_Lobby_EventScript_160642
+ incrementgamestat GAME_STAT_ENTERED_BATTLE_TOWER
special SavePlayerParty
special sub_8135A14
setvar 0x40bc, 1
msgbox BattleTower_Lobby_Text_19A0A8, 4
- closebutton
+ closemessage
call BattleTower_Lobby_EventScript_160664
warp BattleTower_Elevator, 255, 1, 6
setvar 0x4000, 0
@@ -260,7 +260,7 @@ BattleTower_Lobby_EventScript_160587:: @ 8160587
BattleTower_Lobby_EventScript_160600:: @ 8160600
msgbox BattleTower_Lobby_Text_19A0D1, 4
- jump BattleTower_Lobby_EventScript_1604BE
+ goto BattleTower_Lobby_EventScript_1604BE
BattleTower_Lobby_EventScript_16060D:: @ 816060D
switch RESULT
@@ -269,16 +269,16 @@ BattleTower_Lobby_EventScript_16060D:: @ 816060D
BattleTower_Lobby_EventScript_160628:: @ 8160628
msgbox BattleTower_Lobby_Text_19A249, 4
- jump BattleTower_Lobby_EventScript_160662
+ goto BattleTower_Lobby_EventScript_160662
BattleTower_Lobby_EventScript_160635:: @ 8160635
msgbox BattleTower_Lobby_Text_19A32D, 4
- jump BattleTower_Lobby_EventScript_160662
+ goto BattleTower_Lobby_EventScript_160662
BattleTower_Lobby_EventScript_160642:: @ 8160642
setvar 0x8004, 12
special sub_8135668
- jump BattleTower_Lobby_EventScript_160652
+ goto BattleTower_Lobby_EventScript_160652
BattleTower_Lobby_EventScript_16064F:: @ 816064F
special LoadPlayerParty
@@ -293,16 +293,16 @@ BattleTower_Lobby_EventScript_160662:: @ 8160662
end
BattleTower_Lobby_EventScript_160664:: @ 8160664
- move 1, BattleTower_Lobby_Movement_160693
- move 255, BattleTower_Lobby_Movement_160693
- waitmove 0
- setdooropened 6, 1
- doorchange
- move 1, BattleTower_Lobby_Movement_160697
- move 255, BattleTower_Lobby_Movement_16069A
- waitmove 0
- setdoorclosed 6, 1
- doorchange
+ applymovement 1, BattleTower_Lobby_Movement_160693
+ applymovement 255, BattleTower_Lobby_Movement_160693
+ waitmovement 0
+ opendoor 6, 1
+ waitdooranim
+ applymovement 1, BattleTower_Lobby_Movement_160697
+ applymovement 255, BattleTower_Lobby_Movement_16069A
+ waitmovement 0
+ closedoor 6, 1
+ waitdooranim
return
BattleTower_Lobby_Movement_160693:: @ 8160693
@@ -348,9 +348,9 @@ BattleTower_Lobby_EventScript_1606CC:: @ 81606CC
lock
faceplayer
compare RESULT, 0
- jumpeq BattleTower_Lobby_EventScript_160701
+ goto_if_eq BattleTower_Lobby_EventScript_160701
compare RESULT, 1
- jumpeq BattleTower_Lobby_EventScript_16070B
+ goto_if_eq BattleTower_Lobby_EventScript_16070B
end
BattleTower_Lobby_EventScript_1606F7:: @ 81606F7
@@ -380,7 +380,7 @@ BattleTower_Lobby_EventScript_160727:: @ 8160727
lockall
special ShowBattleTowerRecords
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
@@ -388,35 +388,35 @@ BattleTower_Lobby_EventScript_160733:: @ 8160733
lock
faceplayer
checkflag 238
- jumpeq BattleTower_Lobby_EventScript_1607C5
+ goto_if_eq BattleTower_Lobby_EventScript_1607C5
checkflag 237
- jumpeq BattleTower_Lobby_EventScript_160773
+ goto_if_eq BattleTower_Lobby_EventScript_160773
msgbox BattleTower_Lobby_Text_19A9EE, 4
setvar 0x8008, 42
givedecoration 42
compare RESULT, 0
- jumpeq BattleTower_Lobby_EventScript_1607AF
+ goto_if_eq BattleTower_Lobby_EventScript_1607AF
setflag 237
msgbox BattleTower_Lobby_Text_19ABAA, 4
release
end
BattleTower_Lobby_EventScript_160773:: @ 8160773
- specialval RESULT, sub_810F404
+ specialvar RESULT, sub_810F404
compare RESULT, 100
- jumpif 0, BattleTower_Lobby_EventScript_1607C5
+ goto_if 0, BattleTower_Lobby_EventScript_1607C5
msgbox BattleTower_Lobby_Text_19AAC4, 4
setvar 0x8008, 43
givedecoration 43
compare RESULT, 0
- jumpeq BattleTower_Lobby_EventScript_1607AF
+ goto_if_eq BattleTower_Lobby_EventScript_1607AF
setflag 238
msgbox BattleTower_Lobby_Text_19ABAA, 4
release
end
BattleTower_Lobby_EventScript_1607AF:: @ 81607AF
- bufferdecor 1, 0x8008
+ getdecorname 1, 0x8008
msgbox BattleTower_Lobby_Text_1A0CEF, 4
msgbox BattleTower_Lobby_Text_19ABED, 4
release
diff --git a/data/scripts/maps/BattleTower_Outside.inc b/data/scripts/maps/BattleTower_Outside.inc
index 02c4e0c6f..95c5a9d77 100644
--- a/data/scripts/maps/BattleTower_Outside.inc
+++ b/data/scripts/maps/BattleTower_Outside.inc
@@ -14,14 +14,14 @@ BattleTower_Outside_EventScript_160168:: @ 8160168
msgbox BattleTower_Outside_Text_199D06, 4
checkitem ITEM_SS_TICKET, 1
compare RESULT, 0
- jumpeq BattleTower_Outside_EventScript_1601C6
+ goto_if_eq BattleTower_Outside_EventScript_1601C6
message BattleTower_Outside_Text_199D9D
- waittext
- jump BattleTower_Outside_EventScript_16018E
+ waitmessage
+ goto BattleTower_Outside_EventScript_16018E
end
BattleTower_Outside_EventScript_16018E:: @ 816018E
- multichoicedef 21, 6, 53, 2, 0
+ multichoicedefault 21, 6, 53, 2, 0
switch RESULT
case 0, BattleTower_Outside_EventScript_1601D0
case 1, BattleTower_Outside_EventScript_1601FB
@@ -37,7 +37,7 @@ BattleTower_Outside_EventScript_1601C6:: @ 81601C6
BattleTower_Outside_EventScript_1601D0:: @ 81601D0
msgbox BattleTower_Outside_Text_199DF2, 5
compare RESULT, 0
- jumpeq BattleTower_Outside_EventScript_160226
+ goto_if_eq BattleTower_Outside_EventScript_160226
msgbox BattleTower_Outside_Text_199E4B, 4
call BattleTower_Outside_EventScript_160232
warp SlateportCity_Harbor, 255, 8, 11
@@ -48,7 +48,7 @@ BattleTower_Outside_EventScript_1601D0:: @ 81601D0
BattleTower_Outside_EventScript_1601FB:: @ 81601FB
msgbox BattleTower_Outside_Text_199E0E, 5
compare RESULT, 0
- jumpeq BattleTower_Outside_EventScript_160226
+ goto_if_eq BattleTower_Outside_EventScript_160226
msgbox BattleTower_Outside_Text_199E4B, 4
call BattleTower_Outside_EventScript_160232
warp LilycoveCity_Harbor, 255, 8, 11
@@ -58,16 +58,16 @@ BattleTower_Outside_EventScript_1601FB:: @ 81601FB
BattleTower_Outside_EventScript_160226:: @ 8160226
message BattleTower_Outside_Text_199E7A
- waittext
- jump BattleTower_Outside_EventScript_16018E
+ waitmessage
+ goto BattleTower_Outside_EventScript_16018E
end
BattleTower_Outside_EventScript_160232:: @ 8160232
- closebutton
- move LAST_TALKED, BattleTower_Outside_Movement_1A0845
- waitmove 0
- pause 30
- spriteinvisible 5, 26, 4
+ closemessage
+ applymovement LAST_TALKED, BattleTower_Outside_Movement_1A0845
+ waitmovement 0
+ delay 30
+ hideobject 5, 26, 4
setvar 0x8004, 4
call BattleTower_Outside_EventScript_1A047C
return
diff --git a/data/scripts/maps/CaveOfOrigin_1F.inc b/data/scripts/maps/CaveOfOrigin_1F.inc
index 7fd365b36..3ad36cc18 100644
--- a/data/scripts/maps/CaveOfOrigin_1F.inc
+++ b/data/scripts/maps/CaveOfOrigin_1F.inc
@@ -4,5 +4,5 @@ CaveOfOrigin_1F_MapScripts:: @ 815DD6C
CaveOfOrigin_1F_MapScript1_15DD72:: @ 815DD72
checkflag 113
- callif 1, CaveOfOrigin_1F_EventScript_1A04E3
+ call_if 1, CaveOfOrigin_1F_EventScript_1A04E3
end
diff --git a/data/scripts/maps/CaveOfOrigin_B1F.inc b/data/scripts/maps/CaveOfOrigin_B1F.inc
index 9603ae83b..c3bbdd45f 100644
--- a/data/scripts/maps/CaveOfOrigin_B1F.inc
+++ b/data/scripts/maps/CaveOfOrigin_B1F.inc
@@ -4,5 +4,5 @@ CaveOfOrigin_B1F_MapScripts:: @ 815DD7C
CaveOfOrigin_B1F_MapScript1_15DD82:: @ 815DD82
checkflag 113
- callif 1, CaveOfOrigin_B1F_EventScript_1A04E3
+ call_if 1, CaveOfOrigin_B1F_EventScript_1A04E3
end
diff --git a/data/scripts/maps/CaveOfOrigin_B2F.inc b/data/scripts/maps/CaveOfOrigin_B2F.inc
index 6b3a55648..fb65de171 100644
--- a/data/scripts/maps/CaveOfOrigin_B2F.inc
+++ b/data/scripts/maps/CaveOfOrigin_B2F.inc
@@ -4,5 +4,5 @@ CaveOfOrigin_B2F_MapScripts:: @ 815DD8C
CaveOfOrigin_B2F_MapScript1_15DD92:: @ 815DD92
checkflag 113
- callif 1, CaveOfOrigin_B2F_EventScript_1A04E3
+ call_if 1, CaveOfOrigin_B2F_EventScript_1A04E3
end
diff --git a/data/scripts/maps/CaveOfOrigin_B3F.inc b/data/scripts/maps/CaveOfOrigin_B3F.inc
index 8e61048d2..c21b04e91 100644
--- a/data/scripts/maps/CaveOfOrigin_B3F.inc
+++ b/data/scripts/maps/CaveOfOrigin_B3F.inc
@@ -4,5 +4,5 @@ CaveOfOrigin_B3F_MapScripts:: @ 815DD9C
CaveOfOrigin_B3F_MapScript1_15DDA2:: @ 815DDA2
checkflag 113
- callif 1, CaveOfOrigin_B3F_EventScript_1A04E3
+ call_if 1, CaveOfOrigin_B3F_EventScript_1A04E3
end
diff --git a/data/scripts/maps/CaveOfOrigin_B4F.inc b/data/scripts/maps/CaveOfOrigin_B4F.inc
index 023892d36..c6c3cd45e 100644
--- a/data/scripts/maps/CaveOfOrigin_B4F.inc
+++ b/data/scripts/maps/CaveOfOrigin_B4F.inc
@@ -5,69 +5,69 @@ CaveOfOrigin_B4F_MapScripts:: @ 815DDAC
CaveOfOrigin_B4F_MapScript1_15DDB7:: @ 815DDB7
checkflag 2145
- callif 1, CaveOfOrigin_B4F_EventScript_15DDC1
+ call_if 1, CaveOfOrigin_B4F_EventScript_15DDC1
end
CaveOfOrigin_B4F_EventScript_15DDC1:: @ 815DDC1
- disappear 1
+ removeobject 1
return
CaveOfOrigin_B4F_MapScript1_15DDC5:: @ 815DDC5
.ifdef SAPPHIRE
- setmapfooter 163
+ setmaplayoutindex 163
.else
- setmapfooter 313
+ setmaplayoutindex 313
.endif
call CaveOfOrigin_B4F_EventScript_1A01B5
checkflag 113
- callif 1, CaveOfOrigin_B4F_EventScript_1A04E3
+ call_if 1, CaveOfOrigin_B4F_EventScript_1A04E3
end
CaveOfOrigin_B4F_EventScript_15DDD7:: @ 815DDD7
lockall
- move 255, CaveOfOrigin_B4F_Movement_1A0841
- waitmove 0
+ applymovement 255, CaveOfOrigin_B4F_Movement_1A0841
+ waitmovement 0
.ifdef SAPPHIRE
msgbox UnknownString_81B4F03, 4
.else
msgbox CaveOfOrigin_B4F_Text_1B4FE4, 4
.endif
- closebutton
+ closemessage
setweather 0
doweather
special WaitWeather
waitstate
- playsfx 209
- setanimation 0, 9
- setanimation 1, 13
- setanimation 2, 0
- doanimation 54
- checkanimation 54
+ playse 209
+ setfieldeffect 0, 9
+ setfieldeffect 1, 13
+ setfieldeffect 2, 0
+ dofieldeffect 54
+ waitfieldeffect 54
.ifdef SAPPHIRE
setvar RESULT, 3
.else
setvar RESULT, 2
.endif
- playsfx 107
+ playse 107
special sub_80818A4
waitstate
special sub_80818FC
waitstate
- move 1, CaveOfOrigin_B4F_Movement_15DE7D
- waitmove 0
- pause 60
+ applymovement 1, CaveOfOrigin_B4F_Movement_15DE7D
+ waitmovement 0
+ delay 60
setwildbattle SPECIES_GROUDON_OR_KYOGRE, 45, ITEM_NONE
- checksound
- pokecry SPECIES_GROUDON_OR_KYOGRE, 2
- pause 40
+ waitse
+ playpokecry SPECIES_GROUDON_OR_KYOGRE, 2
+ delay 40
waitpokecry
setflag 2145
- special StartBattle_GroudonKyogre
+ special ScrSpecial_StartGroudonKyogreBattle
waitstate
clearflag 2145
- specialval RESULT, sub_810E300
+ specialvar RESULT, sub_810E300
compare RESULT, 1
- callif 1, CaveOfOrigin_B4F_EventScript_15DE73
+ call_if 1, CaveOfOrigin_B4F_EventScript_15DE73
setflag 816
setflag 855
setflag 856
@@ -87,7 +87,7 @@ CaveOfOrigin_B4F_EventScript_15DE73:: @ 815DE73
.else
msgbox CaveOfOrigin_B4F_Text_1B5009, 4
.endif
- closebutton
+ closemessage
return
CaveOfOrigin_B4F_Movement_15DE7D:: @ 815DE7D
diff --git a/data/scripts/maps/DesertRuins.inc b/data/scripts/maps/DesertRuins.inc
index df40fc126..9f6f7b388 100644
--- a/data/scripts/maps/DesertRuins.inc
+++ b/data/scripts/maps/DesertRuins.inc
@@ -6,16 +6,16 @@ DesertRuins_MapScripts:: @ 815CAF3
DesertRuins_MapScript1_15CB03:: @ 815CB03
checkflag 2145
- callif 1, DesertRuins_EventScript_15CB0D
+ call_if 1, DesertRuins_EventScript_15CB0D
end
DesertRuins_EventScript_15CB0D:: @ 815CB0D
- disappear LAST_TALKED
+ removeobject LAST_TALKED
return
DesertRuins_MapScript1_15CB11:: @ 815CB11
checkflag 2128
- callif 0, DesertRuins_EventScript_15CB1B
+ call_if 0, DesertRuins_EventScript_15CB1B
end
DesertRuins_EventScript_15CB1B:: @ 815CB1B
@@ -34,10 +34,10 @@ DesertRuins_MapScript1_15CB52:: @ 815CB52
DesertRuins_EventScript_15CB56:: @ 815CB56
lockall
checkflag 2128
- jumpeq DesertRuins_EventScript_15CB6D
- braillemsg DesertRuins_Braille_1C54C8
+ goto_if_eq DesertRuins_EventScript_15CB6D
+ braillemessage DesertRuins_Braille_1C54C8
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
@@ -48,23 +48,23 @@ DesertRuins_EventScript_15CB6D:: @ 815CB6D
DesertRuins_EventScript_15CB77:: @ 815CB77
lockall
- braillemsg DesertRuins_Braille_1C54C8
+ braillemessage DesertRuins_Braille_1C54C8
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
DesertRuins_EventScript_15CB85:: @ 815CB85
lock
faceplayer
- checksound
- pokecry SPECIES_REGIROCK, 2
- pause 40
+ waitse
+ playpokecry SPECIES_REGIROCK, 2
+ delay 40
waitpokecry
setwildbattle SPECIES_REGIROCK, 40, ITEM_NONE
setflag 935
setflag 2145
- special StartBattle_Regi
+ special ScrSpecial_StartRegiBattle
waitstate
clearflag 2145
release
diff --git a/data/scripts/maps/DewfordTown.inc b/data/scripts/maps/DewfordTown.inc
index 8ca2eb3df..aa3584741 100644
--- a/data/scripts/maps/DewfordTown.inc
+++ b/data/scripts/maps/DewfordTown.inc
@@ -10,10 +10,10 @@ DewfordTown_EventScript_14E002:: @ 814E002
lock
faceplayer
checkflag 189
- jumpif 0, DewfordTown_EventScript_14E076
+ goto_if 0, DewfordTown_EventScript_14E076
message DewfordTown_Text_16B522
- waittext
- multichoicedef 21, 6, 0, 2, 0
+ waitmessage
+ multichoicedefault 21, 6, 0, 2, 0
switch RESULT
case 0, DewfordTown_EventScript_14E04B
case 1, DewfordTown_EventScript_14E05B
@@ -23,36 +23,36 @@ DewfordTown_EventScript_14E002:: @ 814E002
DewfordTown_EventScript_14E04B:: @ 814E04B
msgbox DewfordTown_Text_16B57D, 4
- closebutton
- jump DewfordTown_EventScript_14E151
+ closemessage
+ goto DewfordTown_EventScript_14E151
release
end
DewfordTown_EventScript_14E05B:: @ 814E05B
msgbox DewfordTown_Text_16B5D2, 4
- closebutton
- jump DewfordTown_EventScript_14E1D8
+ closemessage
+ goto DewfordTown_EventScript_14E1D8
release
end
DewfordTown_EventScript_14E06B:: @ 814E06B
msgbox DewfordTown_Text_16B627, 4
- closebutton
+ closemessage
release
end
DewfordTown_EventScript_14E076:: @ 814E076
msgbox DewfordTown_Text_16B3BC, 5
compare RESULT, 1
- jumpeq DewfordTown_EventScript_14E093
+ goto_if_eq DewfordTown_EventScript_14E093
msgbox DewfordTown_Text_16B471, 4
release
end
DewfordTown_EventScript_14E093:: @ 814E093
msgbox DewfordTown_Text_16B417, 4
- closebutton
- jump DewfordTown_EventScript_14E151
+ closemessage
+ goto DewfordTown_EventScript_14E151
end
DewfordTown_EventScript_14E0A2:: @ 814E0A2
@@ -75,12 +75,12 @@ DewfordTown_EventScript_14E0C6:: @ 814E0C6
lock
faceplayer
checkflag 257
- jumpeq DewfordTown_EventScript_14E11B
+ goto_if_eq DewfordTown_EventScript_14E11B
msgbox DewfordTown_Text_16B665, 5
compare RESULT, 1
- jumpeq DewfordTown_EventScript_14E0F0
+ goto_if_eq DewfordTown_EventScript_14E0F0
compare RESULT, 0
- jumpeq DewfordTown_EventScript_14E111
+ goto_if_eq DewfordTown_EventScript_14E111
end
DewfordTown_EventScript_14E0F0:: @ 814E0F0
@@ -98,12 +98,12 @@ DewfordTown_EventScript_14E111:: @ 814E111
DewfordTown_EventScript_14E11B:: @ 814E11B
message DewfordTown_Text_16B84E
- waittext
+ waitmessage
multichoice 20, 8, 50, 1
compare RESULT, 0
- jumpeq DewfordTown_EventScript_14E13D
+ goto_if_eq DewfordTown_EventScript_14E13D
compare RESULT, 1
- jumpeq DewfordTown_EventScript_14E147
+ goto_if_eq DewfordTown_EventScript_14E147
end
DewfordTown_EventScript_14E13D:: @ 814E13D
@@ -118,30 +118,30 @@ DewfordTown_EventScript_14E147:: @ 814E147
DewfordTown_EventScript_14E151:: @ 814E151
call DewfordTown_EventScript_1A010C
- spritelevelup 2, 0, 11, 0
- spritelevelup 255, 0, 11, 0
- move 2, DewfordTown_Movement_14E40E
- waitmove 0
- disappear 2
- move 255, DewfordTown_Movement_14E402
- waitmove 0
- spriteinvisible 255, 0, 11
+ setobjectpriority 2, 0, 11, 0
+ setobjectpriority 255, 0, 11, 0
+ applymovement 2, DewfordTown_Movement_14E40E
+ waitmovement 0
+ removeobject 2
+ applymovement 255, DewfordTown_Movement_14E402
+ waitmovement 0
+ hideobject 255, 0, 11
call DewfordTown_EventScript_1A02E7
- move 4, DewfordTown_Movement_14E293
- move 255, DewfordTown_Movement_14E293
- waitmove 0
- spritevisible 255, 0, 19
+ applymovement 4, DewfordTown_Movement_14E293
+ applymovement 255, DewfordTown_Movement_14E293
+ waitmovement 0
+ showobject 255, 0, 19
call DewfordTown_EventScript_1A02EF
- move 255, DewfordTown_Movement_14E405
- waitmove 0
- spritevisible 255, 0, 19
+ applymovement 255, DewfordTown_Movement_14E405
+ waitmovement 0
+ showobject 255, 0, 19
clearflag 739
clearflag 881
clearflag 742
setflag 743
- spriteinvisible 4, 0, 11
+ hideobject 4, 0, 11
setvar 0x408e, 2
- restorespritelevel 255, 0, 11
+ resetobjectpriority 255, 0, 11
warp Route104_MrBrineysHouse, 255, 5, 4
copyvar 0x4096, 0x8008
waitstate
@@ -150,41 +150,41 @@ DewfordTown_EventScript_14E151:: @ 814E151
DewfordTown_EventScript_14E1D8:: @ 814E1D8
call DewfordTown_EventScript_1A010C
- spritelevelup 2, 0, 11, 0
- spritelevelup 255, 0, 11, 1
- move 2, DewfordTown_Movement_14E40E
- waitmove 0
- disappear 2
- move 255, DewfordTown_Movement_14E402
- waitmove 0
- spriteinvisible 255, 0, 11
+ setobjectpriority 2, 0, 11, 0
+ setobjectpriority 255, 0, 11, 1
+ applymovement 2, DewfordTown_Movement_14E40E
+ waitmovement 0
+ removeobject 2
+ applymovement 255, DewfordTown_Movement_14E402
+ waitmovement 0
+ hideobject 255, 0, 11
call DewfordTown_EventScript_1A02E7
- move 4, DewfordTown_Movement_14E356
- move 255, DewfordTown_Movement_14E356
- waitmove 0
+ applymovement 4, DewfordTown_Movement_14E356
+ applymovement 255, DewfordTown_Movement_14E356
+ waitmovement 0
call DewfordTown_EventScript_1A02EF
- spritevisible 255, 0, 24
- move 255, DewfordTown_Movement_14E409
- waitmove 0
- movespriteperm 2, 21, 26
- reappear 2
- spritelevelup 2, 0, 24, 0
- move 2, DewfordTown_Movement_14E410
- waitmove 0
+ showobject 255, 0, 24
+ applymovement 255, DewfordTown_Movement_14E409
+ waitmovement 0
+ setobjectxyperm 2, 21, 26
+ addobject 2
+ setobjectpriority 2, 0, 24, 0
+ applymovement 2, DewfordTown_Movement_14E410
+ waitmovement 0
clearflag 741
- reappear 1
+ addobject 1
clearflag 744
setflag 743
- spriteinvisible 4, 0, 11
+ hideobject 4, 0, 11
checkflag 149
- callif 0, DewfordTown_EventScript_14E281
+ call_if 0, DewfordTown_EventScript_14E281
checkflag 149
- callif 1, DewfordTown_EventScript_14E28A
- closebutton
+ call_if 1, DewfordTown_EventScript_14E28A
+ closemessage
copyvar 0x4096, 0x8008
- restorespritelevel 255, 0, 11
- restorespritelevel 2, 0, 24
- moveoffscreen 2
+ resetobjectpriority 255, 0, 11
+ resetobjectpriority 2, 0, 24
+ moveobjectoffscreen 2
release
end
@@ -600,9 +600,9 @@ DewfordTown_EventScript_14E413:: @ 814E413
call DewfordTown_EventScript_1A0102
msgbox DewfordTown_Text_16B9CE, 5
compare RESULT, 1
- jumpeq DewfordTown_EventScript_14E439
+ goto_if_eq DewfordTown_EventScript_14E439
compare RESULT, 0
- jumpeq DewfordTown_EventScript_14E443
+ goto_if_eq DewfordTown_EventScript_14E443
end
DewfordTown_EventScript_14E439:: @ 814E439
@@ -617,15 +617,15 @@ DewfordTown_EventScript_14E443:: @ 814E443
lock
faceplayer
compare RESULT, 1
- jumpeq DewfordTown_EventScript_14E46E
+ goto_if_eq DewfordTown_EventScript_14E46E
compare RESULT, 0
- jumpeq DewfordTown_EventScript_14E485
+ goto_if_eq DewfordTown_EventScript_14E485
end
DewfordTown_EventScript_14E46E:: @ 814E46E
- inccounter GAME_STAT_STARTED_TRENDS
+ incrementgamestat GAME_STAT_STARTED_TRENDS
compare 0x8004, 0
- jumpeq DewfordTown_EventScript_14E48F
+ goto_if_eq DewfordTown_EventScript_14E48F
msgbox DewfordTown_Text_16BB44, 4
release
end
diff --git a/data/scripts/maps/DewfordTown_Gym.inc b/data/scripts/maps/DewfordTown_Gym.inc
index 51d4f44ba..92776afb1 100644
--- a/data/scripts/maps/DewfordTown_Gym.inc
+++ b/data/scripts/maps/DewfordTown_Gym.inc
@@ -8,91 +8,91 @@ DewfordTown_Gym_MapScript1_15306B:: @ 815306B
DewfordTown_Gym_EventScript_153071:: @ 8153071
checktrainerflag OPPONENT_BRAWLY
- jumpeq DewfordTown_Gym_EventScript_1530AA
+ goto_if_eq DewfordTown_Gym_EventScript_1530AA
call DewfordTown_Gym_EventScript_153122
copyvar 0x8001, 0x8000
compare 0x8000, 0
- jumpeq DewfordTown_Gym_EventScript_1530BA
+ goto_if_eq DewfordTown_Gym_EventScript_1530BA
compare 0x8000, 1
- jumpeq DewfordTown_Gym_EventScript_1530B6
+ goto_if_eq DewfordTown_Gym_EventScript_1530B6
compare 0x8000, 2
- jumpeq DewfordTown_Gym_EventScript_1530B2
- jump DewfordTown_Gym_EventScript_1530AE
+ goto_if_eq DewfordTown_Gym_EventScript_1530B2
+ goto DewfordTown_Gym_EventScript_1530AE
DewfordTown_Gym_EventScript_1530AA:: @ 81530AA
- darken 0
+ setdarklevel 0
return
DewfordTown_Gym_EventScript_1530AE:: @ 81530AE
- darken 1
+ setdarklevel 1
return
DewfordTown_Gym_EventScript_1530B2:: @ 81530B2
- darken 2
+ setdarklevel 2
return
DewfordTown_Gym_EventScript_1530B6:: @ 81530B6
- darken 3
+ setdarklevel 3
return
DewfordTown_Gym_EventScript_1530BA:: @ 81530BA
- darken 4
+ setdarklevel 4
return
DewfordTown_Gym_EventScript_1530BE:: @ 81530BE
call DewfordTown_Gym_EventScript_153122
- snop1
- comparevars 0x8000, 0x8001
- jumpeq DewfordTown_Gym_EventScript_1530F5
+ nop1
+ compare 0x8000, 0x8001
+ goto_if_eq DewfordTown_Gym_EventScript_1530F5
copyvar 0x8001, 0x8000
compare 0x8000, 1
- jumpeq DewfordTown_Gym_EventScript_1530F6
+ goto_if_eq DewfordTown_Gym_EventScript_1530F6
compare 0x8000, 2
- jumpeq DewfordTown_Gym_EventScript_153101
+ goto_if_eq DewfordTown_Gym_EventScript_153101
compare 0x8000, 3
- jumpeq DewfordTown_Gym_EventScript_15310C
+ goto_if_eq DewfordTown_Gym_EventScript_15310C
DewfordTown_Gym_EventScript_1530F5:: @ 81530F5
return
DewfordTown_Gym_EventScript_1530F6:: @ 81530F6
- playsfx 35
- lighten 3
+ playse 35
+ animdarklevel 3
call DewfordTown_Gym_EventScript_153071
return
DewfordTown_Gym_EventScript_153101:: @ 8153101
- playsfx 35
- lighten 2
+ playse 35
+ animdarklevel 2
call DewfordTown_Gym_EventScript_153071
return
DewfordTown_Gym_EventScript_15310C:: @ 815310C
- playsfx 35
- lighten 1
+ playse 35
+ animdarklevel 1
call DewfordTown_Gym_EventScript_153071
return
DewfordTown_Gym_EventScript_153117:: @ 8153117
- playsfx 35
- lighten 0
+ playse 35
+ animdarklevel 0
call DewfordTown_Gym_EventScript_153071
return
DewfordTown_Gym_EventScript_153122:: @ 8153122
setvar 0x8000, 0
checktrainerflag OPPONENT_HIDEKI
- jumpif 0, DewfordTown_Gym_EventScript_153135
+ goto_if 0, DewfordTown_Gym_EventScript_153135
addvar 0x8000, 1
DewfordTown_Gym_EventScript_153135:: @ 8153135
checktrainerflag OPPONENT_TESSA
- jumpif 0, DewfordTown_Gym_EventScript_153143
+ goto_if 0, DewfordTown_Gym_EventScript_153143
addvar 0x8000, 1
DewfordTown_Gym_EventScript_153143:: @ 8153143
checktrainerflag OPPONENT_LAURA
- jumpif 0, DewfordTown_Gym_EventScript_153151
+ goto_if 0, DewfordTown_Gym_EventScript_153151
addvar 0x8000, 1
DewfordTown_Gym_EventScript_153151:: @ 8153151
@@ -101,7 +101,7 @@ DewfordTown_Gym_EventScript_153151:: @ 8153151
DewfordTown_Gym_EventScript_153152:: @ 8153152
trainerbattle 1, OPPONENT_BRAWLY, 0, DewfordTown_Gym_Text_175182, DewfordTown_Gym_Text_175246, DewfordTown_Gym_EventScript_153177
checkflag 166
- jumpif 0, DewfordTown_Gym_EventScript_1531B5
+ goto_if 0, DewfordTown_Gym_EventScript_1531B5
msgbox DewfordTown_Gym_Text_175412, 4
release
end
@@ -109,23 +109,23 @@ DewfordTown_Gym_EventScript_153152:: @ 8153152
DewfordTown_Gym_EventScript_153177:: @ 8153177
call DewfordTown_Gym_EventScript_153117
message DewfordTown_Gym_Text_1752BB
- waittext
+ waitmessage
call DewfordTown_Gym_EventScript_1A02C5
msgbox DewfordTown_Gym_Text_1752E6, 4
setflag 1204
setflag 2056
addvar 0x4085, 1
compare 0x4085, 6
- callif 1, DewfordTown_Gym_EventScript_1A00FB
+ call_if 1, DewfordTown_Gym_EventScript_1A00FB
setvar 0x8008, 2
call DewfordTown_Gym_EventScript_1A01C0
- jump DewfordTown_Gym_EventScript_1531B5
+ goto DewfordTown_Gym_EventScript_1531B5
end
DewfordTown_Gym_EventScript_1531B5:: @ 81531B5
giveitem ITEM_TM08
compare RESULT, 0
- jumpeq DewfordTown_Gym_EventScript_1A029B
+ goto_if_eq DewfordTown_Gym_EventScript_1A029B
msgbox DewfordTown_Gym_Text_1753BF, 4
setflag 166
release
@@ -165,7 +165,7 @@ DewfordTown_Gym_EventScript_15323F:: @ 815323F
lock
faceplayer
checkflag 1204
- jumpeq DewfordTown_Gym_EventScript_153254
+ goto_if_eq DewfordTown_Gym_EventScript_153254
msgbox DewfordTown_Gym_Text_174D98, 4
release
end
@@ -178,15 +178,15 @@ DewfordTown_Gym_EventScript_153254:: @ 8153254
DewfordTown_Gym_EventScript_15325E:: @ 815325E
lockall
checkflag 2056
- jumpeq DewfordTown_Gym_EventScript_15327E
- jump DewfordTown_Gym_EventScript_153288
+ goto_if_eq DewfordTown_Gym_EventScript_15327E
+ goto DewfordTown_Gym_EventScript_153288
end
DewfordTown_Gym_EventScript_15326E:: @ 815326E
lockall
checkflag 2056
- jumpeq DewfordTown_Gym_EventScript_15327E
- jump DewfordTown_Gym_EventScript_153288
+ goto_if_eq DewfordTown_Gym_EventScript_15327E
+ goto DewfordTown_Gym_EventScript_153288
end
DewfordTown_Gym_EventScript_15327E:: @ 815327E
diff --git a/data/scripts/maps/DewfordTown_Hall.inc b/data/scripts/maps/DewfordTown_Hall.inc
index 28d396a3e..ea4016147 100644
--- a/data/scripts/maps/DewfordTown_Hall.inc
+++ b/data/scripts/maps/DewfordTown_Hall.inc
@@ -7,7 +7,7 @@ DewfordTown_Hall_EventScript_153293:: @ 8153293
call DewfordTown_Hall_EventScript_1A0102
special sub_80FA5E4
compare RESULT, 1
- jumpeq DewfordTown_Hall_EventScript_1532B2
+ goto_if_eq DewfordTown_Hall_EventScript_1532B2
msgbox DewfordTown_Hall_Text_1754C9, 4
release
end
@@ -32,9 +32,9 @@ DewfordTown_Hall_EventScript_1532CD:: @ 81532CD
special sub_80EB83C
msgbox DewfordTown_Hall_Text_1755F9, 5
compare RESULT, 1
- jumpeq DewfordTown_Hall_EventScript_1532F6
+ goto_if_eq DewfordTown_Hall_EventScript_1532F6
compare RESULT, 0
- jumpeq DewfordTown_Hall_EventScript_153300
+ goto_if_eq DewfordTown_Hall_EventScript_153300
end
DewfordTown_Hall_EventScript_1532F6:: @ 81532F6
@@ -52,9 +52,9 @@ DewfordTown_Hall_EventScript_15330A:: @ 815330A
faceplayer
call DewfordTown_Hall_EventScript_1A0102
msgbox DewfordTown_Hall_Text_17570D, 4
- closebutton
- move 4, DewfordTown_Hall_Movement_1A0841
- waitmove 0
+ closemessage
+ applymovement 4, DewfordTown_Hall_Movement_1A0841
+ waitmovement 0
release
end
@@ -63,9 +63,9 @@ DewfordTown_Hall_EventScript_153326:: @ 8153326
faceplayer
call DewfordTown_Hall_EventScript_1A0102
msgbox DewfordTown_Hall_Text_17574C, 4
- closebutton
- move 5, DewfordTown_Hall_Movement_1A0841
- waitmove 0
+ closemessage
+ applymovement 5, DewfordTown_Hall_Movement_1A0841
+ waitmovement 0
release
end
@@ -122,13 +122,13 @@ DewfordTown_Hall_EventScript_1533E8:: @ 81533E8
DewfordTown_Hall_EventScript_1533F2:: @ 81533F2
lockall
setvar 0x8008, 0
- jump DewfordTown_Hall_EventScript_15340A
+ goto DewfordTown_Hall_EventScript_15340A
end
DewfordTown_Hall_EventScript_1533FE:: @ 81533FE
lockall
setvar 0x8008, 1
- jump DewfordTown_Hall_EventScript_15340A
+ goto DewfordTown_Hall_EventScript_15340A
end
DewfordTown_Hall_EventScript_15340A:: @ 815340A
@@ -189,55 +189,55 @@ DewfordTown_Hall_EventScript_1534FC:: @ 81534FC
return
DewfordTown_Hall_EventScript_1534FD:: @ 81534FD
- move 8, DewfordTown_Hall_Movement_153599
- waitmove 0
+ applymovement 8, DewfordTown_Hall_Movement_153599
+ waitmovement 0
compare 0x8008, 0
- jumpeq DewfordTown_Hall_EventScript_15351E
+ goto_if_eq DewfordTown_Hall_EventScript_15351E
compare 0x8008, 1
- jumpeq DewfordTown_Hall_EventScript_153534
+ goto_if_eq DewfordTown_Hall_EventScript_153534
end
DewfordTown_Hall_EventScript_15351E:: @ 815351E
compare FACING, 4
- jumpeq DewfordTown_Hall_EventScript_1534FC
- move 255, DewfordTown_Hall_Movement_1A0843
- waitmove 0
+ goto_if_eq DewfordTown_Hall_EventScript_1534FC
+ applymovement 255, DewfordTown_Hall_Movement_1A0843
+ waitmovement 0
return
DewfordTown_Hall_EventScript_153534:: @ 8153534
return
DewfordTown_Hall_EventScript_153535:: @ 8153535
- move 7, DewfordTown_Hall_Movement_15359B
- waitmove 0
+ applymovement 7, DewfordTown_Hall_Movement_15359B
+ waitmovement 0
compare 0x8008, 0
- jumpeq DewfordTown_Hall_EventScript_153556
+ goto_if_eq DewfordTown_Hall_EventScript_153556
compare 0x8008, 1
- jumpeq DewfordTown_Hall_EventScript_153583
+ goto_if_eq DewfordTown_Hall_EventScript_153583
end
DewfordTown_Hall_EventScript_153556:: @ 8153556
compare FACING, 2
- callif 1, DewfordTown_Hall_EventScript_15356D
+ call_if 1, DewfordTown_Hall_EventScript_15356D
compare FACING, 1
- callif 1, DewfordTown_Hall_EventScript_153578
+ call_if 1, DewfordTown_Hall_EventScript_153578
return
DewfordTown_Hall_EventScript_15356D:: @ 815356D
- move 255, DewfordTown_Hall_Movement_1A0841
- waitmove 0
+ applymovement 255, DewfordTown_Hall_Movement_1A0841
+ waitmovement 0
return
DewfordTown_Hall_EventScript_153578:: @ 8153578
- move 255, DewfordTown_Hall_Movement_1A0845
- waitmove 0
+ applymovement 255, DewfordTown_Hall_Movement_1A0845
+ waitmovement 0
return
DewfordTown_Hall_EventScript_153583:: @ 8153583
compare FACING, 3
- jumpeq DewfordTown_Hall_EventScript_1534FC
- move 255, DewfordTown_Hall_Movement_1A083F
- waitmove 0
+ goto_if_eq DewfordTown_Hall_EventScript_1534FC
+ applymovement 255, DewfordTown_Hall_Movement_1A083F
+ waitmovement 0
return
DewfordTown_Hall_Movement_153599:: @ 8153599
@@ -253,11 +253,11 @@ DewfordTown_Hall_EventScript_15359D:: @ 815359D
faceplayer
call DewfordTown_Hall_EventScript_1A0102
checkflag 230
- jumpeq DewfordTown_Hall_EventScript_1535D1
+ goto_if_eq DewfordTown_Hall_EventScript_1535D1
msgbox DewfordTown_Hall_Text_175E13, 4
giveitem ITEM_TM36
compare RESULT, 0
- jumpeq DewfordTown_Hall_EventScript_1A029B
+ goto_if_eq DewfordTown_Hall_EventScript_1A029B
setflag 230
release
end
diff --git a/data/scripts/maps/DewfordTown_House1.inc b/data/scripts/maps/DewfordTown_House1.inc
index 40e06357c..e8897b974 100644
--- a/data/scripts/maps/DewfordTown_House1.inc
+++ b/data/scripts/maps/DewfordTown_House1.inc
@@ -12,8 +12,8 @@ DewfordTown_House1_EventScript_152FF8:: @ 8152FF8
DewfordTown_House1_EventScript_153001:: @ 8153001
lock
faceplayer
- checksound
- pokecry SPECIES_ZIGZAGOON, 0
+ waitse
+ playpokecry SPECIES_ZIGZAGOON, 0
msgbox DewfordTown_House1_Text_174CC8, 4
waitpokecry
release
diff --git a/data/scripts/maps/DewfordTown_House2.inc b/data/scripts/maps/DewfordTown_House2.inc
index 529f8bb24..befe47404 100644
--- a/data/scripts/maps/DewfordTown_House2.inc
+++ b/data/scripts/maps/DewfordTown_House2.inc
@@ -5,11 +5,11 @@ DewfordTown_House2_EventScript_1535DC:: @ 81535DC
lock
faceplayer
checkflag 289
- jumpeq DewfordTown_House2_EventScript_153615
+ goto_if_eq DewfordTown_House2_EventScript_153615
msgbox DewfordTown_House2_Text_175EFE, 4
giveitem ITEM_SILK_SCARF
compare RESULT, 0
- jumpeq DewfordTown_House2_EventScript_15360B
+ goto_if_eq DewfordTown_House2_EventScript_15360B
setflag 289
release
end
diff --git a/data/scripts/maps/DewfordTown_PokemonCenter_1F.inc b/data/scripts/maps/DewfordTown_PokemonCenter_1F.inc
index 96c198ae5..70e75492e 100644
--- a/data/scripts/maps/DewfordTown_PokemonCenter_1F.inc
+++ b/data/scripts/maps/DewfordTown_PokemonCenter_1F.inc
@@ -10,7 +10,7 @@ DewfordTown_PokemonCenter_1F_MapScript1_15301A:: @ 815301A
DewfordTown_PokemonCenter_1F_EventScript_153023:: @ 8153023
setvar 0x800b, 1
call DewfordTown_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
diff --git a/data/scripts/maps/EverGrandeCity.inc b/data/scripts/maps/EverGrandeCity.inc
index 9b6d2a8b7..c9768d006 100644
--- a/data/scripts/maps/EverGrandeCity.inc
+++ b/data/scripts/maps/EverGrandeCity.inc
@@ -4,7 +4,7 @@ EverGrandeCity_MapScripts:: @ 814D4D5
EverGrandeCity_MapScript1_14D4DB:: @ 814D4DB
checkflag 2090
- callif 1, EverGrandeCity_EventScript_1A02C1
+ call_if 1, EverGrandeCity_EventScript_1A02C1
end
EverGrandeCity_EventScript_14D4E5:: @ 814D4E5
diff --git a/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc b/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc
index bddcfa74b..90df9ab4e 100644
--- a/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc
+++ b/data/scripts/maps/EverGrandeCity_ChampionsRoom.inc
@@ -13,7 +13,7 @@ EverGrandeCity_ChampionsRoom_MapScript2_15B7C5:: @ 815B7C5
.2byte 0
EverGrandeCity_ChampionsRoom_EventScript_15B7CF:: @ 815B7CF
- spriteface 255, 2
+ turnobject 255, 2
end
EverGrandeCity_ChampionsRoom_MapScript2_15B7D4:: @ 815B7D4
@@ -22,13 +22,13 @@ EverGrandeCity_ChampionsRoom_MapScript2_15B7D4:: @ 815B7D4
EverGrandeCity_ChampionsRoom_EventScript_15B7DE:: @ 815B7DE
lockall
- move 255, EverGrandeCity_ChampionsRoom_Movement_1A084E
- waitmove 0
- pause 40
- move 255, EverGrandeCity_ChampionsRoom_Movement_15B802
- waitmove 0
+ applymovement 255, EverGrandeCity_ChampionsRoom_Movement_1A084E
+ waitmovement 0
+ delay 40
+ applymovement 255, EverGrandeCity_ChampionsRoom_Movement_15B802
+ waitmovement 0
setvar 0x4001, 1
- jump EverGrandeCity_ChampionsRoom_EventScript_15B805
+ goto EverGrandeCity_ChampionsRoom_EventScript_15B805
releaseall
end
@@ -38,104 +38,104 @@ EverGrandeCity_ChampionsRoom_Movement_15B802:: @ 815B802
step_end
EverGrandeCity_ChampionsRoom_EventScript_15B805:: @ 815B805
- playmusic 454, 0
+ playbgm 454, 0
msgbox EverGrandeCity_ChampionsRoom_Text_190F9C, 4
trainerbattle 3, OPPONENT_STEVEN, 0, EverGrandeCity_ChampionsRoom_Text_1910A0
- jump EverGrandeCity_ChampionsRoom_EventScript_15B821
+ goto EverGrandeCity_ChampionsRoom_EventScript_15B821
end
EverGrandeCity_ChampionsRoom_EventScript_15B821:: @ 815B821
- playsfx 8
+ playse 8
setmaptile 6, 1, 838, 0
setmaptile 6, 2, 839, 0
special DrawWholeMapView
msgbox EverGrandeCity_ChampionsRoom_Text_1910FE, 4
- closebutton
- playsfx 8
- checkgender
+ closemessage
+ playse 8
+ checkplayergender
compare RESULT, 0
- callif 1, EverGrandeCity_ChampionsRoom_EventScript_15B87C
+ call_if 1, EverGrandeCity_ChampionsRoom_EventScript_15B87C
compare RESULT, 1
- callif 1, EverGrandeCity_ChampionsRoom_EventScript_15B881
- reappear 2
+ call_if 1, EverGrandeCity_ChampionsRoom_EventScript_15B881
+ addobject 2
call EverGrandeCity_ChampionsRoom_EventScript_15B9BD
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq EverGrandeCity_ChampionsRoom_EventScript_15B886
+ goto_if_eq EverGrandeCity_ChampionsRoom_EventScript_15B886
compare RESULT, 1
- jumpeq EverGrandeCity_ChampionsRoom_EventScript_15B8BB
+ goto_if_eq EverGrandeCity_ChampionsRoom_EventScript_15B8BB
end
EverGrandeCity_ChampionsRoom_EventScript_15B87C:: @ 815B87C
- playmusic 415, 0
+ playbgm 415, 0
return
EverGrandeCity_ChampionsRoom_EventScript_15B881:: @ 815B881
- playmusic 421, 0
+ playbgm 421, 0
return
EverGrandeCity_ChampionsRoom_EventScript_15B886:: @ 815B886
msgbox EverGrandeCity_ChampionsRoom_Text_191225, 4
- pause 40
- playsfx 21
- move 2, EverGrandeCity_ChampionsRoom_Movement_1A0833
- waitmove 0
- move 2, EverGrandeCity_ChampionsRoom_Movement_1A0835
- waitmove 0
+ delay 40
+ playse 21
+ applymovement 2, EverGrandeCity_ChampionsRoom_Movement_1A0833
+ waitmovement 0
+ applymovement 2, EverGrandeCity_ChampionsRoom_Movement_1A0835
+ waitmovement 0
call EverGrandeCity_ChampionsRoom_EventScript_15B9D2
msgbox EverGrandeCity_ChampionsRoom_Text_191268, 4
- jump EverGrandeCity_ChampionsRoom_EventScript_15B8F0
+ goto EverGrandeCity_ChampionsRoom_EventScript_15B8F0
end
EverGrandeCity_ChampionsRoom_EventScript_15B8BB:: @ 815B8BB
msgbox EverGrandeCity_ChampionsRoom_Text_1912B3, 4
- pause 40
- playsfx 21
- move 2, EverGrandeCity_ChampionsRoom_Movement_1A0833
- waitmove 0
- move 2, EverGrandeCity_ChampionsRoom_Movement_1A0835
- waitmove 0
+ delay 40
+ playse 21
+ applymovement 2, EverGrandeCity_ChampionsRoom_Movement_1A0833
+ waitmovement 0
+ applymovement 2, EverGrandeCity_ChampionsRoom_Movement_1A0835
+ waitmovement 0
call EverGrandeCity_ChampionsRoom_EventScript_15B9D2
msgbox EverGrandeCity_ChampionsRoom_Text_191305, 4
- jump EverGrandeCity_ChampionsRoom_EventScript_15B8F0
+ goto EverGrandeCity_ChampionsRoom_EventScript_15B8F0
end
EverGrandeCity_ChampionsRoom_EventScript_15B8F0:: @ 815B8F0
- closebutton
- reappear 3
- move 3, EverGrandeCity_ChampionsRoom_Movement_15BA03
- waitmove 0
- move 255, EverGrandeCity_ChampionsRoom_Movement_1A0843
- waitmove 0
+ closemessage
+ addobject 3
+ applymovement 3, EverGrandeCity_ChampionsRoom_Movement_15BA03
+ waitmovement 0
+ applymovement 255, EverGrandeCity_ChampionsRoom_Movement_1A0843
+ waitmovement 0
msgbox EverGrandeCity_ChampionsRoom_Text_19134D, 4
call EverGrandeCity_ChampionsRoom_EventScript_1A03B0
msgbox EverGrandeCity_ChampionsRoom_Text_1914C6, 4
- move 1, EverGrandeCity_ChampionsRoom_Movement_1A0841
- waitmove 0
- pause 20
- move 1, EverGrandeCity_ChampionsRoom_Movement_1A0845
- waitmove 0
+ applymovement 1, EverGrandeCity_ChampionsRoom_Movement_1A0841
+ waitmovement 0
+ delay 20
+ applymovement 1, EverGrandeCity_ChampionsRoom_Movement_1A0845
+ waitmovement 0
msgbox EverGrandeCity_ChampionsRoom_Text_191512, 4
- closebutton
- pause 30
- move 1, EverGrandeCity_ChampionsRoom_Movement_15B9FB
- move 255, EverGrandeCity_ChampionsRoom_Movement_15B9DD
- move 3, EverGrandeCity_ChampionsRoom_Movement_1A0841
- move 2, EverGrandeCity_ChampionsRoom_Movement_15B9F8
- waitmove 0
- pause 20
- move 255, EverGrandeCity_ChampionsRoom_Movement_1A0845
- waitmove 0
+ closemessage
+ delay 30
+ applymovement 1, EverGrandeCity_ChampionsRoom_Movement_15B9FB
+ applymovement 255, EverGrandeCity_ChampionsRoom_Movement_15B9DD
+ applymovement 3, EverGrandeCity_ChampionsRoom_Movement_1A0841
+ applymovement 2, EverGrandeCity_ChampionsRoom_Movement_15B9F8
+ waitmovement 0
+ delay 20
+ applymovement 255, EverGrandeCity_ChampionsRoom_Movement_1A0845
+ waitmovement 0
msgbox EverGrandeCity_ChampionsRoom_Text_191546, 4
- checkgender
+ checkplayergender
compare RESULT, 0
- callif 1, EverGrandeCity_ChampionsRoom_EventScript_15B9AB
+ call_if 1, EverGrandeCity_ChampionsRoom_EventScript_15B9AB
compare RESULT, 1
- callif 1, EverGrandeCity_ChampionsRoom_EventScript_15B9B4
- closebutton
- move 1, EverGrandeCity_ChampionsRoom_Movement_15B9FF
- move 255, EverGrandeCity_ChampionsRoom_Movement_15B9E0
- waitmove 0
+ call_if 1, EverGrandeCity_ChampionsRoom_EventScript_15B9B4
+ closemessage
+ applymovement 1, EverGrandeCity_ChampionsRoom_Movement_15B9FF
+ applymovement 255, EverGrandeCity_ChampionsRoom_Movement_15B9E0
+ waitmovement 0
setflag 781
warp EverGrandeCity_HallOfFame, 255, 7, 16
waitstate
@@ -151,15 +151,15 @@ EverGrandeCity_ChampionsRoom_EventScript_15B9B4:: @ 815B9B4
return
EverGrandeCity_ChampionsRoom_EventScript_15B9BD:: @ 815B9BD
- move 2, EverGrandeCity_ChampionsRoom_Movement_15B9E6
- waitmove 0
- move 255, EverGrandeCity_ChampionsRoom_Movement_1A083F
- waitmove 0
+ applymovement 2, EverGrandeCity_ChampionsRoom_Movement_15B9E6
+ waitmovement 0
+ applymovement 255, EverGrandeCity_ChampionsRoom_Movement_1A083F
+ waitmovement 0
return
EverGrandeCity_ChampionsRoom_EventScript_15B9D2:: @ 815B9D2
- move 2, EverGrandeCity_ChampionsRoom_Movement_15B9EF
- waitmove 0
+ applymovement 2, EverGrandeCity_ChampionsRoom_Movement_15B9EF
+ waitmovement 0
return
EverGrandeCity_ChampionsRoom_Movement_15B9DD:: @ 815B9DD
diff --git a/data/scripts/maps/EverGrandeCity_Corridor1.inc b/data/scripts/maps/EverGrandeCity_Corridor1.inc
index 499ad673f..104504960 100644
--- a/data/scripts/maps/EverGrandeCity_Corridor1.inc
+++ b/data/scripts/maps/EverGrandeCity_Corridor1.inc
@@ -7,5 +7,5 @@ EverGrandeCity_Corridor1_MapScript2_15BA12:: @ 815BA12
.2byte 0
EverGrandeCity_Corridor1_EventScript_15BA1C:: @ 815BA1C
- spriteface 255, 2
+ turnobject 255, 2
end
diff --git a/data/scripts/maps/EverGrandeCity_Corridor2.inc b/data/scripts/maps/EverGrandeCity_Corridor2.inc
index 692de1ed9..c7c049020 100644
--- a/data/scripts/maps/EverGrandeCity_Corridor2.inc
+++ b/data/scripts/maps/EverGrandeCity_Corridor2.inc
@@ -7,5 +7,5 @@ EverGrandeCity_Corridor2_MapScript2_15BA27:: @ 815BA27
.2byte 0
EverGrandeCity_Corridor2_EventScript_15BA31:: @ 815BA31
- spriteface 255, 2
+ turnobject 255, 2
end
diff --git a/data/scripts/maps/EverGrandeCity_Corridor3.inc b/data/scripts/maps/EverGrandeCity_Corridor3.inc
index f8ed19669..1714db5cc 100644
--- a/data/scripts/maps/EverGrandeCity_Corridor3.inc
+++ b/data/scripts/maps/EverGrandeCity_Corridor3.inc
@@ -7,5 +7,5 @@ EverGrandeCity_Corridor3_MapScript2_15BA3C:: @ 815BA3C
.2byte 0
EverGrandeCity_Corridor3_EventScript_15BA46:: @ 815BA46
- spriteface 255, 2
+ turnobject 255, 2
end
diff --git a/data/scripts/maps/EverGrandeCity_Corridor4.inc b/data/scripts/maps/EverGrandeCity_Corridor4.inc
index 616a25ec5..64cc234eb 100644
--- a/data/scripts/maps/EverGrandeCity_Corridor4.inc
+++ b/data/scripts/maps/EverGrandeCity_Corridor4.inc
@@ -7,5 +7,5 @@ EverGrandeCity_Corridor4_MapScript2_15BA51:: @ 815BA51
.2byte 0
EverGrandeCity_Corridor4_EventScript_15BA5B:: @ 815BA5B
- spriteface 255, 2
+ turnobject 255, 2
end
diff --git a/data/scripts/maps/EverGrandeCity_Corridor5.inc b/data/scripts/maps/EverGrandeCity_Corridor5.inc
index 783b03aec..73c0b5a84 100644
--- a/data/scripts/maps/EverGrandeCity_Corridor5.inc
+++ b/data/scripts/maps/EverGrandeCity_Corridor5.inc
@@ -7,5 +7,5 @@ EverGrandeCity_Corridor5_MapScript2_15BA66:: @ 815BA66
.2byte 0
EverGrandeCity_Corridor5_EventScript_15BA70:: @ 815BA70
- spriteface 255, 2
+ turnobject 255, 2
end
diff --git a/data/scripts/maps/EverGrandeCity_DrakesRoom.inc b/data/scripts/maps/EverGrandeCity_DrakesRoom.inc
index d10957a8e..3d3d56ff9 100644
--- a/data/scripts/maps/EverGrandeCity_DrakesRoom.inc
+++ b/data/scripts/maps/EverGrandeCity_DrakesRoom.inc
@@ -9,7 +9,7 @@ EverGrandeCity_DrakesRoom_MapScripts:: @ 815B70D
.2byte 0
EverGrandeCity_DrakesRoom_EventScript_15B727:: @ 815B727
- spriteface 255, 2
+ turnobject 255, 2
end
EverGrandeCity_DrakesRoom_MapScript2_15B72C:: @ 815B72C
@@ -25,9 +25,9 @@ EverGrandeCity_DrakesRoom_EventScript_15B736:: @ 815B736
EverGrandeCity_DrakesRoom_MapScript1_15B743:: @ 815B743
checkflag 1248
- callif 1, EverGrandeCity_DrakesRoom_EventScript_15B758
+ call_if 1, EverGrandeCity_DrakesRoom_EventScript_15B758
compare 0x409c, 4
- callif 1, EverGrandeCity_DrakesRoom_EventScript_15B75E
+ call_if 1, EverGrandeCity_DrakesRoom_EventScript_15B75E
end
EverGrandeCity_DrakesRoom_EventScript_15B758:: @ 815B758
@@ -42,11 +42,11 @@ EverGrandeCity_DrakesRoom_EventScript_15B764:: @ 815B764
lock
faceplayer
checkflag 1248
- jumpeq EverGrandeCity_DrakesRoom_EventScript_15B78B
- playmusic 450, 0
+ goto_if_eq EverGrandeCity_DrakesRoom_EventScript_15B78B
+ playbgm 450, 0
msgbox EverGrandeCity_DrakesRoom_Text_190CEB, 4
trainerbattle 3, OPPONENT_DRAKE, 0, EverGrandeCity_DrakesRoom_Text_190E42
- jump EverGrandeCity_DrakesRoom_EventScript_15B795
+ goto EverGrandeCity_DrakesRoom_EventScript_15B795
end
EverGrandeCity_DrakesRoom_EventScript_15B78B:: @ 815B78B
diff --git a/data/scripts/maps/EverGrandeCity_GlaciasRoom.inc b/data/scripts/maps/EverGrandeCity_GlaciasRoom.inc
index 039b2a772..07f6e8877 100644
--- a/data/scripts/maps/EverGrandeCity_GlaciasRoom.inc
+++ b/data/scripts/maps/EverGrandeCity_GlaciasRoom.inc
@@ -9,7 +9,7 @@ EverGrandeCity_GlaciasRoom_MapScript2_15B683:: @ 815B683
.2byte 0
EverGrandeCity_GlaciasRoom_EventScript_15B68D:: @ 815B68D
- spriteface 255, 2
+ turnobject 255, 2
end
EverGrandeCity_GlaciasRoom_MapScript2_15B692:: @ 815B692
@@ -25,9 +25,9 @@ EverGrandeCity_GlaciasRoom_EventScript_15B69C:: @ 815B69C
EverGrandeCity_GlaciasRoom_MapScript1_15B6A9:: @ 815B6A9
checkflag 1247
- callif 1, EverGrandeCity_GlaciasRoom_EventScript_15B6BE
+ call_if 1, EverGrandeCity_GlaciasRoom_EventScript_15B6BE
compare 0x409c, 3
- callif 1, EverGrandeCity_GlaciasRoom_EventScript_15B6C4
+ call_if 1, EverGrandeCity_GlaciasRoom_EventScript_15B6C4
end
EverGrandeCity_GlaciasRoom_EventScript_15B6BE:: @ 815B6BE
@@ -42,11 +42,11 @@ EverGrandeCity_GlaciasRoom_EventScript_15B6CA:: @ 815B6CA
lock
faceplayer
checkflag 1247
- jumpeq EverGrandeCity_GlaciasRoom_EventScript_15B6F1
- playmusic 450, 0
+ goto_if_eq EverGrandeCity_GlaciasRoom_EventScript_15B6F1
+ playbgm 450, 0
msgbox EverGrandeCity_GlaciasRoom_Text_190AF9, 4
trainerbattle 3, OPPONENT_GLACIA, 0, EverGrandeCity_GlaciasRoom_Text_190C01
- jump EverGrandeCity_GlaciasRoom_EventScript_15B6FB
+ goto EverGrandeCity_GlaciasRoom_EventScript_15B6FB
end
EverGrandeCity_GlaciasRoom_EventScript_15B6F1:: @ 815B6F1
diff --git a/data/scripts/maps/EverGrandeCity_HallOfFame.inc b/data/scripts/maps/EverGrandeCity_HallOfFame.inc
index 175990328..d9baaee89 100644
--- a/data/scripts/maps/EverGrandeCity_HallOfFame.inc
+++ b/data/scripts/maps/EverGrandeCity_HallOfFame.inc
@@ -8,7 +8,7 @@ EverGrandeCity_HallOfFame_MapScript2_15BB8F:: @ 815BB8F
.2byte 0
EverGrandeCity_HallOfFame_EventScript_15BB99:: @ 815BB99
- spriteface 255, 2
+ turnobject 255, 2
end
EverGrandeCity_HallOfFame_MapScript2_15BB9E:: @ 815BB9E
@@ -17,37 +17,37 @@ EverGrandeCity_HallOfFame_MapScript2_15BB9E:: @ 815BB9E
EverGrandeCity_HallOfFame_EventScript_15BBA8:: @ 815BBA8
lockall
- move 1, EverGrandeCity_HallOfFame_Movement_15BC59
- move 255, EverGrandeCity_HallOfFame_Movement_15BC59
- waitmove 0
- move 1, EverGrandeCity_HallOfFame_Movement_1A0843
- move 255, EverGrandeCity_HallOfFame_Movement_1A083F
- waitmove 0
+ applymovement 1, EverGrandeCity_HallOfFame_Movement_15BC59
+ applymovement 255, EverGrandeCity_HallOfFame_Movement_15BC59
+ waitmovement 0
+ applymovement 1, EverGrandeCity_HallOfFame_Movement_1A0843
+ applymovement 255, EverGrandeCity_HallOfFame_Movement_1A083F
+ waitmovement 0
msgbox EverGrandeCity_HallOfFame_Text_191841, 4
- closebutton
- move 1, EverGrandeCity_HallOfFame_Movement_15BC60
- move 255, EverGrandeCity_HallOfFame_Movement_15BC60
- waitmove 0
- pause 20
- move 1, EverGrandeCity_HallOfFame_Movement_1A0843
- move 255, EverGrandeCity_HallOfFame_Movement_1A083F
- waitmove 0
+ closemessage
+ applymovement 1, EverGrandeCity_HallOfFame_Movement_15BC60
+ applymovement 255, EverGrandeCity_HallOfFame_Movement_15BC60
+ waitmovement 0
+ delay 20
+ applymovement 1, EverGrandeCity_HallOfFame_Movement_1A0843
+ applymovement 255, EverGrandeCity_HallOfFame_Movement_1A083F
+ waitmovement 0
msgbox EverGrandeCity_HallOfFame_Text_1918D7, 4
- closebutton
- move 1, EverGrandeCity_HallOfFame_Movement_1A0841
- move 255, EverGrandeCity_HallOfFame_Movement_1A0841
- waitmove 0
- pause 20
- doanimation 62
- checkanimation 62
- pause 40
+ closemessage
+ applymovement 1, EverGrandeCity_HallOfFame_Movement_1A0841
+ applymovement 255, EverGrandeCity_HallOfFame_Movement_1A0841
+ waitmovement 0
+ delay 20
+ dofieldeffect 62
+ waitfieldeffect 62
+ delay 40
setvar 0x4001, 1
call EverGrandeCity_HallOfFame_EventScript_19FC13
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq EverGrandeCity_HallOfFame_EventScript_15BC41
+ goto_if_eq EverGrandeCity_HallOfFame_EventScript_15BC41
compare RESULT, 1
- jumpeq EverGrandeCity_HallOfFame_EventScript_15BC4D
+ goto_if_eq EverGrandeCity_HallOfFame_EventScript_15BC4D
end
EverGrandeCity_HallOfFame_EventScript_15BC41:: @ 815BC41
diff --git a/data/scripts/maps/EverGrandeCity_PhoebesRoom.inc b/data/scripts/maps/EverGrandeCity_PhoebesRoom.inc
index 7e8ee131a..b7c1618ba 100644
--- a/data/scripts/maps/EverGrandeCity_PhoebesRoom.inc
+++ b/data/scripts/maps/EverGrandeCity_PhoebesRoom.inc
@@ -9,7 +9,7 @@ EverGrandeCity_PhoebesRoom_MapScript2_15B5E9:: @ 815B5E9
.2byte 0
EverGrandeCity_PhoebesRoom_EventScript_15B5F3:: @ 815B5F3
- spriteface 255, 2
+ turnobject 255, 2
end
EverGrandeCity_PhoebesRoom_MapScript2_15B5F8:: @ 815B5F8
@@ -25,9 +25,9 @@ EverGrandeCity_PhoebesRoom_EventScript_15B602:: @ 815B602
EverGrandeCity_PhoebesRoom_MapScript1_15B60F:: @ 815B60F
checkflag 1246
- callif 1, EverGrandeCity_PhoebesRoom_EventScript_15B624
+ call_if 1, EverGrandeCity_PhoebesRoom_EventScript_15B624
compare 0x409c, 2
- callif 1, EverGrandeCity_PhoebesRoom_EventScript_15B62A
+ call_if 1, EverGrandeCity_PhoebesRoom_EventScript_15B62A
end
EverGrandeCity_PhoebesRoom_EventScript_15B624:: @ 815B624
@@ -42,11 +42,11 @@ EverGrandeCity_PhoebesRoom_EventScript_15B630:: @ 815B630
lock
faceplayer
checkflag 1246
- jumpeq EverGrandeCity_PhoebesRoom_EventScript_15B657
- playmusic 450, 0
+ goto_if_eq EverGrandeCity_PhoebesRoom_EventScript_15B657
+ playbgm 450, 0
msgbox EverGrandeCity_PhoebesRoom_Text_1908F5, 4
trainerbattle 3, OPPONENT_PHOEBE, 0, EverGrandeCity_PhoebesRoom_Text_190A0C
- jump EverGrandeCity_PhoebesRoom_EventScript_15B661
+ goto EverGrandeCity_PhoebesRoom_EventScript_15B661
end
EverGrandeCity_PhoebesRoom_EventScript_15B657:: @ 815B657
diff --git a/data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc b/data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc
index 7c0b8b0a4..57262b211 100644
--- a/data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc
+++ b/data/scripts/maps/EverGrandeCity_PokemonCenter_1F.inc
@@ -10,7 +10,7 @@ EverGrandeCity_PokemonCenter_1F_EventScript_15BC70:: @ 815BC70
SootopolisCity_PokemonCenter_1F_EventScript_15BC70:: @ 815BC70
setvar 0x800b, 1
call SootopolisCity_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
diff --git a/data/scripts/maps/EverGrandeCity_PokemonLeague.inc b/data/scripts/maps/EverGrandeCity_PokemonLeague.inc
index bfb3cdc1b..acbdac899 100644
--- a/data/scripts/maps/EverGrandeCity_PokemonLeague.inc
+++ b/data/scripts/maps/EverGrandeCity_PokemonLeague.inc
@@ -6,18 +6,18 @@ EverGrandeCity_PokemonLeague_MapScript1_15BA7B:: @ 815BA7B
sethealplace 20
setflag 2132
checkflag 263
- callif 0, EverGrandeCity_PokemonLeague_EventScript_15BA8B
+ call_if 0, EverGrandeCity_PokemonLeague_EventScript_15BA8B
end
EverGrandeCity_PokemonLeague_EventScript_15BA8B:: @ 815BA8B
- movespriteperm 3, 9, 2
- movespriteperm 4, 10, 2
+ setobjectxyperm 3, 9, 2
+ setobjectxyperm 4, 10, 2
return
EverGrandeCity_PokemonLeague_EventScript_15BA9A:: @ 815BA9A
setvar 0x800b, 1
call EverGrandeCity_PokemonLeague_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
@@ -26,7 +26,7 @@ EverGrandeCity_PokemonLeague_EventScript_15BAA8:: @ 815BAA8
lock
faceplayer
message EverGrandeCity_PokemonLeague_Text_1A0BE4
- waittext
+ waitmessage
pokemart EverGrandeCity_PokemonLeague_Items
msgbox EverGrandeCity_PokemonLeague_Text_1A0C02, 4
release
@@ -48,56 +48,56 @@ EverGrandeCity_PokemonLeague_Items:: @ 815BAC0
EverGrandeCity_PokemonLeague_EventScript_15BAD2:: @ 815BAD2
lockall
checkflag 263
- jumpeq EverGrandeCity_PokemonLeague_EventScript_15BB57
+ goto_if_eq EverGrandeCity_PokemonLeague_EventScript_15BB57
getplayerxy 0x4000, 0x4001
compare 0x4000, 11
- callif 4, EverGrandeCity_PokemonLeague_EventScript_15BB34
+ call_if 4, EverGrandeCity_PokemonLeague_EventScript_15BB34
compare 0x4000, 8
- callif 3, EverGrandeCity_PokemonLeague_EventScript_15BB3F
+ call_if 3, EverGrandeCity_PokemonLeague_EventScript_15BB3F
message EverGrandeCity_PokemonLeague_Text_1916FD
- waittext
- pause 75
+ waitmessage
+ delay 75
checkflag 2060
- jumpif 0, EverGrandeCity_PokemonLeague_EventScript_15BB4A
- closebutton
- move 3, EverGrandeCity_PokemonLeague_Movement_15BB7E
- move 4, EverGrandeCity_PokemonLeague_Movement_15BB81
- waitmove 0
- pause 10
- fanfare 369
+ goto_if 0, EverGrandeCity_PokemonLeague_EventScript_15BB4A
+ closemessage
+ applymovement 3, EverGrandeCity_PokemonLeague_Movement_15BB7E
+ applymovement 4, EverGrandeCity_PokemonLeague_Movement_15BB81
+ waitmovement 0
+ delay 10
+ playfanfare 369
message EverGrandeCity_PokemonLeague_Text_191804
- waittext
+ waitmessage
waitfanfare
- closebutton
- moveoffscreen 3
- moveoffscreen 4
+ closemessage
+ moveobjectoffscreen 3
+ moveobjectoffscreen 4
setflag 263
releaseall
end
EverGrandeCity_PokemonLeague_EventScript_15BB34:: @ 815BB34
- move 255, EverGrandeCity_PokemonLeague_Movement_15BB76
- waitmove 0
+ applymovement 255, EverGrandeCity_PokemonLeague_Movement_15BB76
+ waitmovement 0
return
EverGrandeCity_PokemonLeague_EventScript_15BB3F:: @ 815BB3F
- move 255, EverGrandeCity_PokemonLeague_Movement_15BB7A
- waitmove 0
+ applymovement 255, EverGrandeCity_PokemonLeague_Movement_15BB7A
+ waitmovement 0
return
EverGrandeCity_PokemonLeague_EventScript_15BB4A:: @ 815BB4A
- playsfx 32
+ playse 32
msgbox EverGrandeCity_PokemonLeague_Text_19179C, 4
releaseall
end
EverGrandeCity_PokemonLeague_EventScript_15BB57:: @ 815BB57
- move LAST_TALKED, EverGrandeCity_PokemonLeague_Movement_1A0839
- waitmove 0
+ applymovement LAST_TALKED, EverGrandeCity_PokemonLeague_Movement_1A0839
+ waitmovement 0
msgbox EverGrandeCity_PokemonLeague_Text_191804, 4
- closebutton
- move LAST_TALKED, EverGrandeCity_PokemonLeague_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, EverGrandeCity_PokemonLeague_Movement_1A083D
+ waitmovement 0
releaseall
end
diff --git a/data/scripts/maps/EverGrandeCity_SidneysRoom.inc b/data/scripts/maps/EverGrandeCity_SidneysRoom.inc
index 84a6c3fdc..daca98176 100644
--- a/data/scripts/maps/EverGrandeCity_SidneysRoom.inc
+++ b/data/scripts/maps/EverGrandeCity_SidneysRoom.inc
@@ -6,9 +6,9 @@ EverGrandeCity_SidneysRoom_MapScripts:: @ 815B53F
EverGrandeCity_SidneysRoom_MapScript1_15B54F:: @ 815B54F
checkflag 1245
- callif 1, EverGrandeCity_SidneysRoom_EventScript_15B564
+ call_if 1, EverGrandeCity_SidneysRoom_EventScript_15B564
compare 0x409c, 1
- callif 1, EverGrandeCity_SidneysRoom_EventScript_15B56A
+ call_if 1, EverGrandeCity_SidneysRoom_EventScript_15B56A
end
EverGrandeCity_SidneysRoom_EventScript_15B564:: @ 815B564
@@ -25,7 +25,7 @@ EverGrandeCity_SidneysRoom_MapScript2_15B570:: @ 815B570
.2byte 0
EverGrandeCity_SidneysRoom_EventScript_15B57A:: @ 815B57A
- spriteface 255, 2
+ turnobject 255, 2
end
EverGrandeCity_SidneysRoom_MapScript2_15B57F:: @ 815B57F
@@ -43,11 +43,11 @@ EverGrandeCity_SidneysRoom_EventScript_15B596:: @ 815B596
lock
faceplayer
checkflag 1245
- jumpeq EverGrandeCity_SidneysRoom_EventScript_15B5BD
- playmusic 450, 0
+ goto_if_eq EverGrandeCity_SidneysRoom_EventScript_15B5BD
+ playbgm 450, 0
msgbox EverGrandeCity_SidneysRoom_Text_190728, 4
trainerbattle 3, OPPONENT_SIDNEY, 0, EverGrandeCity_SidneysRoom_Text_190823
- jump EverGrandeCity_SidneysRoom_EventScript_15B5C7
+ goto EverGrandeCity_SidneysRoom_EventScript_15B5C7
end
EverGrandeCity_SidneysRoom_EventScript_15B5BD:: @ 815B5BD
diff --git a/data/scripts/maps/FallarborTown.inc b/data/scripts/maps/FallarborTown.inc
index a48be5b24..13c8a9f2e 100644
--- a/data/scripts/maps/FallarborTown.inc
+++ b/data/scripts/maps/FallarborTown.inc
@@ -13,7 +13,7 @@ FallarborTown_EventScript_14E7F5:: @ 814E7F5
lock
faceplayer
checkflag 139
- jumpeq FallarborTown_EventScript_14E80A
+ goto_if_eq FallarborTown_EventScript_14E80A
msgbox FallarborTown_Text_16C7FF, 4
release
end
@@ -34,8 +34,8 @@ FallarborTown_EventScript_14E81D:: @ 814E81D
FallarborTown_EventScript_14E826:: @ 814E826
lock
faceplayer
- checksound
- pokecry SPECIES_AZURILL, 0
+ waitse
+ playpokecry SPECIES_AZURILL, 0
msgbox FallarborTown_Text_16C92C, 4
waitpokecry
release
diff --git a/data/scripts/maps/FallarborTown_ContestLobby.inc b/data/scripts/maps/FallarborTown_ContestLobby.inc
index ed67d922d..c4c590b53 100644
--- a/data/scripts/maps/FallarborTown_ContestLobby.inc
+++ b/data/scripts/maps/FallarborTown_ContestLobby.inc
@@ -20,28 +20,28 @@ FallarborTown_ContestLobby_EventScript_1539CD:: @ 81539CD
FallarborTown_ContestLobby_EventScript_1539F8:: @ 81539F8
lockall
- move 1, FallarborTown_ContestLobby_Movement_153A7C
- waitmove 0
- playsfx 71
+ applymovement 1, FallarborTown_ContestLobby_Movement_153A7C
+ waitmovement 0
+ playse 71
setmaptile 4, 2, 545, 1
setmaptile 4, 3, 609, 1
special DrawWholeMapView
- move 1, FallarborTown_ContestLobby_Movement_153A7F
- waitmove 0
- playsfx 71
+ applymovement 1, FallarborTown_ContestLobby_Movement_153A7F
+ waitmovement 0
+ playse 71
setmaptile 4, 2, 721, 1
setmaptile 4, 3, 729, 1
special DrawWholeMapView
- pause 20
- move 1, FallarborTown_ContestLobby_Movement_153A8C
- waitmove 0
- move 255, FallarborTown_ContestLobby_Movement_153A7A
- waitmove 0
+ delay 20
+ applymovement 1, FallarborTown_ContestLobby_Movement_153A8C
+ waitmovement 0
+ applymovement 255, FallarborTown_ContestLobby_Movement_153A7A
+ waitmovement 0
msgbox FallarborTown_ContestLobby_Text_1A6832, 4
- closebutton
- move 1, FallarborTown_ContestLobby_Movement_153A83
- move 255, FallarborTown_ContestLobby_Movement_153A70
- waitmove 0
+ closemessage
+ applymovement 1, FallarborTown_ContestLobby_Movement_153A83
+ applymovement 255, FallarborTown_ContestLobby_Movement_153A70
+ waitmovement 0
releaseall
return
@@ -93,7 +93,7 @@ FallarborTown_ContestLobby_EventScript_153A8E:: @ 8153A8E
FallarborTown_ContestLobby_EventScript_153A97:: @ 8153A97
checkflag 270
- jumpeq FallarborTown_ContestLobby_EventScript_153AA9
+ goto_if_eq FallarborTown_ContestLobby_EventScript_153AA9
msgbox FallarborTown_ContestLobby_Text_177246, 2
end
@@ -108,7 +108,7 @@ FallarborTown_ContestLobby_EventScript_153AB2:: @ 8153AB2
FallarborTown_ContestLobby_EventScript_153ABB:: @ 8153ABB
lockall
fadescreen 1
- showcontestwinner 2
+ drawcontestwinner 2
releaseall
end
@@ -116,6 +116,6 @@ FallarborTown_ContestLobby_EventScript_153AC2:: @ 8153AC2
lockall
special ShowBerryBlenderRecordWindow
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
diff --git a/data/scripts/maps/FallarborTown_House1.inc b/data/scripts/maps/FallarborTown_House1.inc
index 8a44cdcfb..0228fe25d 100644
--- a/data/scripts/maps/FallarborTown_House1.inc
+++ b/data/scripts/maps/FallarborTown_House1.inc
@@ -9,25 +9,25 @@ FallarborTown_House1_EventScript_153BB5:: @ 8153BB5
lock
faceplayer
checkflag 229
- jumpeq FallarborTown_House1_EventScript_153C54
+ goto_if_eq FallarborTown_House1_EventScript_153C54
checkitem ITEM_METEORITE, 1
compare RESULT, 1
- jumpeq FallarborTown_House1_EventScript_153BDA
+ goto_if_eq FallarborTown_House1_EventScript_153BDA
msgbox FallarborTown_House1_Text_177755, 4
release
end
FallarborTown_House1_EventScript_153BDA:: @ 8153BDA
checkflag 2
- callif 0, FallarborTown_House1_EventScript_153C2D
+ call_if 0, FallarborTown_House1_EventScript_153C2D
checkflag 2
- callif 1, FallarborTown_House1_EventScript_153C3E
+ call_if 1, FallarborTown_House1_EventScript_153C3E
compare RESULT, 0
- jumpeq FallarborTown_House1_EventScript_153C47
+ goto_if_eq FallarborTown_House1_EventScript_153C47
msgbox FallarborTown_House1_Text_1778C4, 4
giveitem ITEM_TM27
compare RESULT, 0
- jumpeq FallarborTown_House1_EventScript_1A029B
+ goto_if_eq FallarborTown_House1_EventScript_1A029B
setvar 0x8004, 280
call FallarborTown_House1_EventScript_1A067F
setflag 229
@@ -59,9 +59,9 @@ FallarborTown_House1_EventScript_153C5E:: @ 8153C5E
lock
faceplayer
checkflag 229
- jumpeq FallarborTown_House1_EventScript_153C86
+ goto_if_eq FallarborTown_House1_EventScript_153C86
checkflag 139
- jumpeq FallarborTown_House1_EventScript_153C7C
+ goto_if_eq FallarborTown_House1_EventScript_153C7C
msgbox FallarborTown_House1_Text_177A2B, 4
release
end
diff --git a/data/scripts/maps/FallarborTown_House2.inc b/data/scripts/maps/FallarborTown_House2.inc
index 1351b96d3..3b215a697 100644
--- a/data/scripts/maps/FallarborTown_House2.inc
+++ b/data/scripts/maps/FallarborTown_House2.inc
@@ -3,23 +3,23 @@ FallarborTown_House2_MapScripts:: @ 8153C90
FallarborTown_House2_EventScript_153C91:: @ 8153C91
lockall
- move 1, FallarborTown_House2_Movement_1A0839
- waitmove 0
+ applymovement 1, FallarborTown_House2_Movement_1A0839
+ waitmovement 0
checkflag 1
- jumpeq FallarborTown_House2_EventScript_153CB6
+ goto_if_eq FallarborTown_House2_EventScript_153CB6
msgbox FallarborTown_House2_Text_177AF4, 4
setflag 1
- jump FallarborTown_House2_EventScript_153CB6
+ goto FallarborTown_House2_EventScript_153CB6
end
FallarborTown_House2_EventScript_153CB6:: @ 8153CB6
checkitem ITEM_HEART_SCALE, 1
compare RESULT, 0
- jumpeq FallarborTown_House2_EventScript_153D60
+ goto_if_eq FallarborTown_House2_EventScript_153D60
msgbox FallarborTown_House2_Text_177BDB, 5
switch RESULT
case 0, FallarborTown_House2_EventScript_153D60
- jump FallarborTown_House2_EventScript_153CE4
+ goto FallarborTown_House2_EventScript_153CE4
end
FallarborTown_House2_EventScript_153CE4:: @ 8153CE4
@@ -27,13 +27,13 @@ FallarborTown_House2_EventScript_153CE4:: @ 8153CE4
special sub_80F9A4C
waitstate
compare 0x8004, 255
- jumpeq FallarborTown_House2_EventScript_153D60
+ goto_if_eq FallarborTown_House2_EventScript_153D60
special sub_80FA148
compare RESULT, 1
- jumpeq FallarborTown_House2_EventScript_153D52
+ goto_if_eq FallarborTown_House2_EventScript_153D52
compare 0x8005, 0
- jumpeq FallarborTown_House2_EventScript_153D44
- jump FallarborTown_House2_EventScript_153D1A
+ goto_if_eq FallarborTown_House2_EventScript_153D44
+ goto FallarborTown_House2_EventScript_153D1A
end
FallarborTown_House2_EventScript_153D1A:: @ 8153D1A
@@ -41,20 +41,20 @@ FallarborTown_House2_EventScript_153D1A:: @ 8153D1A
special sub_8132670
waitstate
compare 0x8004, 0
- jumpeq FallarborTown_House2_EventScript_153CE4
+ goto_if_eq FallarborTown_House2_EventScript_153CE4
msgbox FallarborTown_House2_Text_177CC3, 4
removeitem ITEM_HEART_SCALE, 1
- jump FallarborTown_House2_EventScript_153D60
+ goto FallarborTown_House2_EventScript_153D60
end
FallarborTown_House2_EventScript_153D44:: @ 8153D44
msgbox FallarborTown_House2_Text_177C78, 4
- jump FallarborTown_House2_EventScript_153CE4
+ goto FallarborTown_House2_EventScript_153CE4
end
FallarborTown_House2_EventScript_153D52:: @ 8153D52
msgbox FallarborTown_House2_Text_177D33, 4
- jump FallarborTown_House2_EventScript_153CE4
+ goto FallarborTown_House2_EventScript_153CE4
end
FallarborTown_House2_EventScript_153D60:: @ 8153D60
diff --git a/data/scripts/maps/FallarborTown_Mart.inc b/data/scripts/maps/FallarborTown_Mart.inc
index 4b66546e8..e6f715697 100644
--- a/data/scripts/maps/FallarborTown_Mart.inc
+++ b/data/scripts/maps/FallarborTown_Mart.inc
@@ -5,7 +5,7 @@ FallarborTown_Mart_EventScript_153967:: @ 8153967
lock
faceplayer
message FallarborTown_Mart_Text_1A0BE4
- waittext
+ waitmessage
pokemart FallarborTown_Mart_Items
msgbox FallarborTown_Mart_Text_1A0C02, 4
release
@@ -40,8 +40,8 @@ FallarborTown_Mart_EventScript_1539A5:: @ 81539A5
FallarborTown_Mart_EventScript_1539AE:: @ 81539AE
lock
faceplayer
- checksound
- pokecry SPECIES_SKITTY, 0
+ waitse
+ playpokecry SPECIES_SKITTY, 0
msgbox FallarborTown_Mart_Text_1770D3, 4
waitpokecry
release
diff --git a/data/scripts/maps/FallarborTown_PokemonCenter_1F.inc b/data/scripts/maps/FallarborTown_PokemonCenter_1F.inc
index 636cac8f1..5b1f1c948 100644
--- a/data/scripts/maps/FallarborTown_PokemonCenter_1F.inc
+++ b/data/scripts/maps/FallarborTown_PokemonCenter_1F.inc
@@ -10,7 +10,7 @@ FallarborTown_PokemonCenter_1F_MapScript1_153AF9:: @ 8153AF9
FallarborTown_PokemonCenter_1F_EventScript_153B02:: @ 8153B02
setvar 0x800b, 1
call FallarborTown_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
@@ -27,27 +27,27 @@ FallarborTown_PokemonCenter_1F_EventScript_153B22:: @ 8153B22
lock
faceplayer
msgbox FallarborTown_PokemonCenter_1F_Text_1774D4, 4
- closebutton
+ closemessage
switch FACING
case 2, FallarborTown_PokemonCenter_1F_EventScript_153B49
case 3, FallarborTown_PokemonCenter_1F_EventScript_153B59
end
FallarborTown_PokemonCenter_1F_EventScript_153B49:: @ 8153B49
- move 4, FallarborTown_PokemonCenter_1F_Movement_153B74
- waitmove 0
- jump FallarborTown_PokemonCenter_1F_EventScript_153B69
+ applymovement 4, FallarborTown_PokemonCenter_1F_Movement_153B74
+ waitmovement 0
+ goto FallarborTown_PokemonCenter_1F_EventScript_153B69
end
FallarborTown_PokemonCenter_1F_EventScript_153B59:: @ 8153B59
- move 4, FallarborTown_PokemonCenter_1F_Movement_153B81
- waitmove 0
- jump FallarborTown_PokemonCenter_1F_EventScript_153B69
+ applymovement 4, FallarborTown_PokemonCenter_1F_Movement_153B81
+ waitmovement 0
+ goto FallarborTown_PokemonCenter_1F_EventScript_153B69
end
FallarborTown_PokemonCenter_1F_EventScript_153B69:: @ 8153B69
- playsfx 18
- disappear 4
+ playse 18
+ removeobject 4
clearflag 870
release
end
diff --git a/data/scripts/maps/FortreeCity.inc b/data/scripts/maps/FortreeCity.inc
index 7f9d5ae12..6ea89dcb7 100644
--- a/data/scripts/maps/FortreeCity.inc
+++ b/data/scripts/maps/FortreeCity.inc
@@ -19,7 +19,7 @@ FortreeCity_EventScript_14C95E:: @ 814C95E
lock
faceplayer
checkflag 295
- jumpeq FortreeCity_EventScript_14C973
+ goto_if_eq FortreeCity_EventScript_14C973
msgbox FortreeCity_Text_1675C2, 4
release
end
@@ -58,7 +58,7 @@ FortreeCity_EventScript_14C9B3:: @ 814C9B3
faceplayer
checkitem ITEM_DEVON_SCOPE, 1
compare RESULT, 1
- jumpeq FortreeCity_EventScript_14C9CF
+ goto_if_eq FortreeCity_EventScript_14C9CF
msgbox FortreeCity_Text_167868, 4
release
end
@@ -66,22 +66,22 @@ FortreeCity_EventScript_14C9B3:: @ 814C9B3
FortreeCity_EventScript_14C9CF:: @ 814C9CF
msgbox FortreeCity_Text_16788B, 5
compare RESULT, 1
- jumpeq FortreeCity_EventScript_14C9E4
+ goto_if_eq FortreeCity_EventScript_14C9E4
release
end
FortreeCity_EventScript_14C9E4:: @ 814C9E4
msgbox FortreeCity_Text_1678CB, 4
- closebutton
- move LAST_TALKED, FortreeCity_Movement_1A0662
- waitmove 0
- checksound
- pokecry SPECIES_KECLEON, 2
- pause 40
+ closemessage
+ applymovement LAST_TALKED, FortreeCity_Movement_1A0662
+ waitmovement 0
+ waitse
+ playpokecry SPECIES_KECLEON, 2
+ delay 40
waitpokecry
- move LAST_TALKED, FortreeCity_Movement_14CA13
- waitmove 0
- disappear LAST_TALKED
+ applymovement LAST_TALKED, FortreeCity_Movement_14CA13
+ waitmovement 0
+ removeobject LAST_TALKED
setflag 295
release
end
diff --git a/data/scripts/maps/FortreeCity_DecorationShop.inc b/data/scripts/maps/FortreeCity_DecorationShop.inc
index c9d9fdd4e..fca20b866 100644
--- a/data/scripts/maps/FortreeCity_DecorationShop.inc
+++ b/data/scripts/maps/FortreeCity_DecorationShop.inc
@@ -13,7 +13,7 @@ FortreeCity_DecorationShop_EventScript_15826A:: @ 815826A
lock
faceplayer
message FortreeCity_DecorationShop_Text_1A0BE4
- waittext
+ waitmessage
pokemartdecor FortreeCity_DecorationShop_Decorations1
msgbox FortreeCity_DecorationShop_Text_1A0C02, 4
release
@@ -37,7 +37,7 @@ FortreeCity_DecorationShop_EventScript_158298:: @ 8158298
lock
faceplayer
message FortreeCity_DecorationShop_Text_1A0BE4
- waittext
+ waitmessage
pokemartdecor FortreeCity_DecorationShop_Decorations2
msgbox FortreeCity_DecorationShop_Text_1A0C02, 4
release
diff --git a/data/scripts/maps/FortreeCity_Gym.inc b/data/scripts/maps/FortreeCity_Gym.inc
index 44f5890a2..7309be0bb 100644
--- a/data/scripts/maps/FortreeCity_Gym.inc
+++ b/data/scripts/maps/FortreeCity_Gym.inc
@@ -18,27 +18,27 @@ FortreeCity_Gym_EventScript_157EEC:: @ 8157EEC
FortreeCity_Gym_EventScript_157EF0:: @ 8157EF0
trainerbattle 1, OPPONENT_WINONA, 0, FortreeCity_Gym_Text_185CCB, FortreeCity_Gym_Text_185DBA, FortreeCity_Gym_EventScript_157F15
checkflag 170
- jumpif 0, FortreeCity_Gym_EventScript_157F3E
+ goto_if 0, FortreeCity_Gym_EventScript_157F3E
msgbox FortreeCity_Gym_Text_185F98, 4
release
end
FortreeCity_Gym_EventScript_157F15:: @ 8157F15
message FortreeCity_Gym_Text_185E48
- waittext
+ waitmessage
call FortreeCity_Gym_EventScript_1A02C5
msgbox FortreeCity_Gym_Text_185E73, 4
setflag 1225
setflag 2060
setvar 0x8008, 6
call FortreeCity_Gym_EventScript_1A01C0
- jump FortreeCity_Gym_EventScript_157F3E
+ goto FortreeCity_Gym_EventScript_157F3E
end
FortreeCity_Gym_EventScript_157F3E:: @ 8157F3E
giveitem ITEM_TM40
compare RESULT, 0
- jumpeq FortreeCity_Gym_EventScript_1A029B
+ goto_if_eq FortreeCity_Gym_EventScript_1A029B
msgbox FortreeCity_Gym_Text_185F4A, 4
setflag 170
release
@@ -68,7 +68,7 @@ FortreeCity_Gym_EventScript_157FBE:: @ 8157FBE
lock
faceplayer
checkflag 1225
- jumpeq FortreeCity_Gym_EventScript_157FD3
+ goto_if_eq FortreeCity_Gym_EventScript_157FD3
msgbox FortreeCity_Gym_Text_18589C, 4
release
end
@@ -81,15 +81,15 @@ FortreeCity_Gym_EventScript_157FD3:: @ 8157FD3
FortreeCity_Gym_EventScript_157FDD:: @ 8157FDD
lockall
checkflag 2060
- jumpeq FortreeCity_Gym_EventScript_157FFD
- jump FortreeCity_Gym_EventScript_158007
+ goto_if_eq FortreeCity_Gym_EventScript_157FFD
+ goto FortreeCity_Gym_EventScript_158007
end
FortreeCity_Gym_EventScript_157FED:: @ 8157FED
lockall
checkflag 2060
- jumpeq FortreeCity_Gym_EventScript_157FFD
- jump FortreeCity_Gym_EventScript_158007
+ goto_if_eq FortreeCity_Gym_EventScript_157FFD
+ goto FortreeCity_Gym_EventScript_158007
end
FortreeCity_Gym_EventScript_157FFD:: @ 8157FFD
diff --git a/data/scripts/maps/FortreeCity_House1.inc b/data/scripts/maps/FortreeCity_House1.inc
index f5bda05ab..7b7ef0b2e 100644
--- a/data/scripts/maps/FortreeCity_House1.inc
+++ b/data/scripts/maps/FortreeCity_House1.inc
@@ -5,30 +5,30 @@ FortreeCity_House1_EventScript_157E13:: @ 8157E13
lock
faceplayer
checkflag 155
- jumpeq FortreeCity_House1_EventScript_157EAD
+ goto_if_eq FortreeCity_House1_EventScript_157EAD
setvar 0x8008, 1
copyvar 0x8004, 0x8008
- specialval RESULT, sub_804D89C
+ specialvar RESULT, sub_804D89C
copyvar 0x8009, RESULT
msgbox FortreeCity_House1_Text_18568C, 5
compare RESULT, 0
- jumpeq FortreeCity_House1_EventScript_157E95
+ goto_if_eq FortreeCity_House1_EventScript_157E95
special sub_80F9A0C
waitstate
copyvar 0x800a, 0x8004
compare 0x8004, 255
- jumpeq FortreeCity_House1_EventScript_157E95
+ goto_if_eq FortreeCity_House1_EventScript_157E95
copyvar 0x8005, 0x800a
- specialval RESULT, sub_804DB2C
+ specialvar RESULT, sub_804DB2C
copyvar 0x800b, RESULT
- comparevars RESULT, 0x8009
- jumpif 5, FortreeCity_House1_EventScript_157E9F
+ compare RESULT, 0x8009
+ goto_if 5, FortreeCity_House1_EventScript_157E9F
copyvar 0x8004, 0x8008
copyvar 0x8005, 0x800a
special sub_804DB68
special sub_804E174
waitstate
- bufferpoke 0, 0x8009
+ getspeciesname 0, 0x8009
msgbox FortreeCity_House1_Text_1856F7, 4
setflag 155
release
@@ -40,7 +40,7 @@ FortreeCity_House1_EventScript_157E95:: @ 8157E95
end
FortreeCity_House1_EventScript_157E9F:: @ 8157E9F
- bufferpoke 0, 0x8009
+ getspeciesname 0, 0x8009
msgbox FortreeCity_House1_Text_185737, 4
release
end
@@ -57,8 +57,8 @@ FortreeCity_House1_EventScript_157EB7:: @ 8157EB7
FortreeCity_House1_EventScript_157EC0:: @ 8157EC0
lock
faceplayer
- checksound
- pokecry SPECIES_ZIGZAGOON, 0
+ waitse
+ playpokecry SPECIES_ZIGZAGOON, 0
msgbox FortreeCity_House1_Text_185888, 4
waitpokecry
release
diff --git a/data/scripts/maps/FortreeCity_House2.inc b/data/scripts/maps/FortreeCity_House2.inc
index ea4aad3d8..f210dd3ac 100644
--- a/data/scripts/maps/FortreeCity_House2.inc
+++ b/data/scripts/maps/FortreeCity_House2.inc
@@ -5,9 +5,9 @@ FortreeCity_House2_EventScript_1580B4:: @ 81580B4
lock
faceplayer
checkflag 264
- jumpeq FortreeCity_House2_EventScript_158157
+ goto_if_eq FortreeCity_House2_EventScript_158157
checkflag 118
- callif 0, FortreeCity_House2_EventScript_15814B
+ call_if 0, FortreeCity_House2_EventScript_15814B
msgbox FortreeCity_House2_Text_186360, 4
multichoice 21, 8, 54, 1
switch RESULT
@@ -23,7 +23,7 @@ FortreeCity_House2_EventScript_1580B4:: @ 81580B4
msgbox FortreeCity_House2_Text_1864C6, 4
giveitem ITEM_TM10
compare RESULT, 0
- jumpeq FortreeCity_House2_EventScript_1A029B
+ goto_if_eq FortreeCity_House2_EventScript_1A029B
setflag 264
msgbox FortreeCity_House2_Text_18652F, 4
release
diff --git a/data/scripts/maps/FortreeCity_House4.inc b/data/scripts/maps/FortreeCity_House4.inc
index 33d0ed1ae..b261e14fb 100644
--- a/data/scripts/maps/FortreeCity_House4.inc
+++ b/data/scripts/maps/FortreeCity_House4.inc
@@ -8,42 +8,42 @@ FortreeCity_House4_EventScript_15817F:: @ 815817F
FortreeCity_House4_EventScript_158188:: @ 8158188
lockall
checkflag 223
- jumpeq FortreeCity_House4_EventScript_158204
+ goto_if_eq FortreeCity_House4_EventScript_158204
checkflag 224
- jumpeq FortreeCity_House4_EventScript_1581D6
+ goto_if_eq FortreeCity_House4_EventScript_1581D6
checkflag 222
- jumpeq FortreeCity_House4_EventScript_1581C2
+ goto_if_eq FortreeCity_House4_EventScript_1581C2
msgbox FortreeCity_House4_Text_186835, 4
- closebutton
+ closemessage
setflag 222
clearflag 934
- move 3, FortreeCity_House4_Movement_158218
- waitmove 0
- disappear 3
+ applymovement 3, FortreeCity_House4_Movement_158218
+ waitmovement 0
+ removeobject 3
releaseall
end
FortreeCity_House4_EventScript_1581C2:: @ 81581C2
- move LAST_TALKED, FortreeCity_House4_Movement_1A0839
- waitmove 0
+ applymovement LAST_TALKED, FortreeCity_House4_Movement_1A0839
+ waitmovement 0
msgbox FortreeCity_House4_Text_18684E, 4
releaseall
end
FortreeCity_House4_EventScript_1581D6:: @ 81581D6
- move LAST_TALKED, FortreeCity_House4_Movement_1A0839
- waitmove 0
+ applymovement LAST_TALKED, FortreeCity_House4_Movement_1A0839
+ waitmovement 0
msgbox FortreeCity_House4_Text_186881, 4
giveitem ITEM_MENTAL_HERB
compare RESULT, 0
- jumpeq FortreeCity_House4_EventScript_1A029B
+ goto_if_eq FortreeCity_House4_EventScript_1A029B
setflag 223
releaseall
end
FortreeCity_House4_EventScript_158204:: @ 8158204
- move LAST_TALKED, FortreeCity_House4_Movement_1A0839
- waitmove 0
+ applymovement LAST_TALKED, FortreeCity_House4_Movement_1A0839
+ waitmovement 0
msgbox FortreeCity_House4_Text_186924, 4
releaseall
end
@@ -59,8 +59,8 @@ FortreeCity_House4_Movement_158218:: @ 8158218
FortreeCity_House4_EventScript_15821E:: @ 815821E
lock
faceplayer
- checksound
- pokecry SPECIES_WINGULL, 0
+ waitse
+ playpokecry SPECIES_WINGULL, 0
msgbox FortreeCity_House4_Text_18695C, 4
waitpokecry
release
diff --git a/data/scripts/maps/FortreeCity_House5.inc b/data/scripts/maps/FortreeCity_House5.inc
index 1144a8e81..fe10b53b0 100644
--- a/data/scripts/maps/FortreeCity_House5.inc
+++ b/data/scripts/maps/FortreeCity_House5.inc
@@ -12,8 +12,8 @@ FortreeCity_House5_EventScript_15823B:: @ 815823B
FortreeCity_House5_EventScript_158244:: @ 8158244
lock
faceplayer
- checksound
- pokecry SPECIES_ZIGZAGOON, 0
+ waitse
+ playpokecry SPECIES_ZIGZAGOON, 0
msgbox FortreeCity_House5_Text_186A4F, 4
waitpokecry
release
diff --git a/data/scripts/maps/FortreeCity_Mart.inc b/data/scripts/maps/FortreeCity_Mart.inc
index 9e5f34ff9..076f702af 100644
--- a/data/scripts/maps/FortreeCity_Mart.inc
+++ b/data/scripts/maps/FortreeCity_Mart.inc
@@ -5,7 +5,7 @@ FortreeCity_Mart_EventScript_158067:: @ 8158067
lock
faceplayer
message FortreeCity_Mart_Text_1A0BE4
- waittext
+ waitmessage
pokemart FortreeCity_Mart_Items
msgbox FortreeCity_Mart_Text_1A0C02, 4
release
diff --git a/data/scripts/maps/FortreeCity_PokemonCenter_1F.inc b/data/scripts/maps/FortreeCity_PokemonCenter_1F.inc
index 148324abf..5268cbeed 100644
--- a/data/scripts/maps/FortreeCity_PokemonCenter_1F.inc
+++ b/data/scripts/maps/FortreeCity_PokemonCenter_1F.inc
@@ -9,7 +9,7 @@ FortreeCity_PokemonCenter_1F_MapScript1_158017:: @ 8158017
FortreeCity_PokemonCenter_1F_EventScript_15801B:: @ 815801B
setvar 0x800b, 1
call FortreeCity_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
diff --git a/data/scripts/maps/GraniteCave_1F.inc b/data/scripts/maps/GraniteCave_1F.inc
index 59aaa2fc3..f389a774e 100644
--- a/data/scripts/maps/GraniteCave_1F.inc
+++ b/data/scripts/maps/GraniteCave_1F.inc
@@ -5,7 +5,7 @@ GraniteCave_1F_EventScript_15CBA7:: @ 815CBA7
lock
faceplayer
checkflag 109
- jumpeq GraniteCave_1F_EventScript_15CBD3
+ goto_if_eq GraniteCave_1F_EventScript_15CBD3
msgbox GraniteCave_1F_Text_194917, 4
giveitem ITEM_HM05
setflag 109
diff --git a/data/scripts/maps/GraniteCave_B1F.inc b/data/scripts/maps/GraniteCave_B1F.inc
index 240de1d98..aa8d705c7 100644
--- a/data/scripts/maps/GraniteCave_B1F.inc
+++ b/data/scripts/maps/GraniteCave_B1F.inc
@@ -6,5 +6,5 @@ GraniteCave_B1F_MapScripts:: @ 815CBDD
GraniteCave_B1F_MapScript1_15CBED:: @ 815CBED
tileeffect 7
- warp5 GraniteCave_B2F, 255, 0, 0
+ setholewarp GraniteCave_B2F, 255, 0, 0
end
diff --git a/data/scripts/maps/GraniteCave_StevensRoom.inc b/data/scripts/maps/GraniteCave_StevensRoom.inc
index 895241406..070276e58 100644
--- a/data/scripts/maps/GraniteCave_StevensRoom.inc
+++ b/data/scripts/maps/GraniteCave_StevensRoom.inc
@@ -11,30 +11,30 @@ GraniteCave_StevensRoom_EventScript_15CBFA:: @ 815CBFA
msgbox GraniteCave_StevensRoom_Text_194BDD, 4
giveitem ITEM_TM47
compare RESULT, 0
- callif 1, GraniteCave_StevensRoom_EventScript_15CC83
+ call_if 1, GraniteCave_StevensRoom_EventScript_15CC83
msgbox GraniteCave_StevensRoom_Text_194C8D, 4
- closebutton
+ closemessage
compare FACING, 2
- callif 1, GraniteCave_StevensRoom_EventScript_15CC6D
+ call_if 1, GraniteCave_StevensRoom_EventScript_15CC6D
compare FACING, 1
- callif 1, GraniteCave_StevensRoom_EventScript_15CC78
+ call_if 1, GraniteCave_StevensRoom_EventScript_15CC78
compare FACING, 3
- callif 1, GraniteCave_StevensRoom_EventScript_15CC6D
+ call_if 1, GraniteCave_StevensRoom_EventScript_15CC6D
compare FACING, 4
- callif 1, GraniteCave_StevensRoom_EventScript_15CC6D
- playsfx 9
- disappear 1
+ call_if 1, GraniteCave_StevensRoom_EventScript_15CC6D
+ playse 9
+ removeobject 1
release
end
GraniteCave_StevensRoom_EventScript_15CC6D:: @ 815CC6D
- move 1, GraniteCave_StevensRoom_Movement_15CC8C
- waitmove 0
+ applymovement 1, GraniteCave_StevensRoom_Movement_15CC8C
+ waitmovement 0
return
GraniteCave_StevensRoom_EventScript_15CC78:: @ 815CC78
- move 1, GraniteCave_StevensRoom_Movement_15CC93
- waitmove 0
+ applymovement 1, GraniteCave_StevensRoom_Movement_15CC93
+ waitmovement 0
return
GraniteCave_StevensRoom_EventScript_15CC83:: @ 815CC83
diff --git a/data/scripts/maps/InsideOfTruck.inc b/data/scripts/maps/InsideOfTruck.inc
index 0c26f0f88..fc2930aa5 100644
--- a/data/scripts/maps/InsideOfTruck.inc
+++ b/data/scripts/maps/InsideOfTruck.inc
@@ -16,11 +16,11 @@ InsideOfTruck_MapScript1_15FC26:: @ 815FC26
InsideOfTruck_EventScript_15FC29:: @ 815FC29
lockall
setflag 0x4000
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq InsideOfTruck_EventScript_15FC45
+ goto_if_eq InsideOfTruck_EventScript_15FC45
compare RESULT, 1
- jumpeq InsideOfTruck_EventScript_15FC68
+ goto_if_eq InsideOfTruck_EventScript_15FC68
end
InsideOfTruck_EventScript_15FC45:: @ 815FC45
@@ -31,7 +31,7 @@ InsideOfTruck_EventScript_15FC45:: @ 815FC45
setflag 784
setflag 760
setvar 0x408c, 1
- warpplace LittlerootTown, 255, 3, 10
+ setdynamicwarp LittlerootTown, 255, 3, 10
releaseall
end
@@ -43,7 +43,7 @@ InsideOfTruck_EventScript_15FC68:: @ 815FC68
setflag 785
setflag 722
setvar 0x4082, 1
- warpplace LittlerootTown, 255, 12, 10
+ setdynamicwarp LittlerootTown, 255, 12, 10
releaseall
end
diff --git a/data/scripts/maps/IslandCave.inc b/data/scripts/maps/IslandCave.inc
index b16f386d8..75399bde8 100644
--- a/data/scripts/maps/IslandCave.inc
+++ b/data/scripts/maps/IslandCave.inc
@@ -6,16 +6,16 @@ IslandCave_MapScripts:: @ 815EEB6
IslandCave_MapScript1_15EEC6:: @ 815EEC6
checkflag 2145
- callif 1, IslandCave_EventScript_15EED0
+ call_if 1, IslandCave_EventScript_15EED0
end
IslandCave_EventScript_15EED0:: @ 815EED0
- disappear LAST_TALKED
+ removeobject LAST_TALKED
return
IslandCave_MapScript1_15EED4:: @ 815EED4
checkflag 2129
- callif 0, IslandCave_EventScript_15EEDE
+ call_if 0, IslandCave_EventScript_15EEDE
end
IslandCave_EventScript_15EEDE:: @ 815EEDE
@@ -31,7 +31,7 @@ IslandCave_MapScript1_15EF15:: @ 815EF15
setflag 2133
end
-gIslandCave_EventScript_OpenRegiiceChamber:: @ 815EF19
+S_OpenRegiceChamber:: @ 815EF19
setmaptile 7, 19, 554, 1
setmaptile 8, 19, 555, 1
setmaptile 9, 19, 556, 1
@@ -39,18 +39,18 @@ gIslandCave_EventScript_OpenRegiiceChamber:: @ 815EF19
setmaptile 8, 20, 563, 0
setmaptile 9, 20, 564, 1
special DrawWholeMapView
- playsfx SE_BAN
+ playse SE_BAN
setflag 2129
end
IslandCave_EventScript_15EF59:: @ 815EF59
lockall
checkflag 2129
- jumpeq IslandCave_EventScript_15EF72
- braillemsg IslandCave_Braille_1C54FC
+ goto_if_eq IslandCave_EventScript_15EF72
+ braillemessage IslandCave_Braille_1C54FC
special DoBrailleWait
waitstate
- jump IslandCave_EventScript_15EF95
+ goto IslandCave_EventScript_15EF95
end
IslandCave_EventScript_15EF72:: @ 815EF72
@@ -60,31 +60,31 @@ IslandCave_EventScript_15EF72:: @ 815EF72
IslandCave_EventScript_15EF7C:: @ 815EF7C
lockall
- braillemsg IslandCave_Braille_1C54FC
+ braillemessage IslandCave_Braille_1C54FC
checkflag 2129
- jumpeq IslandCave_EventScript_15EF95
+ goto_if_eq IslandCave_EventScript_15EF95
special DoBrailleWait
waitstate
- jump IslandCave_EventScript_15EF95
+ goto IslandCave_EventScript_15EF95
end
IslandCave_EventScript_15EF95:: @ 815EF95
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
IslandCave_EventScript_15EF9D:: @ 815EF9D
lock
faceplayer
- checksound
- pokecry SPECIES_REGICE, 2
- pause 40
+ waitse
+ playpokecry SPECIES_REGICE, 2
+ delay 40
waitpokecry
setwildbattle SPECIES_REGICE, 40, ITEM_NONE
setflag 936
setflag 2145
- special StartBattle_Regi
+ special ScrSpecial_StartRegiBattle
waitstate
clearflag 2145
release
diff --git a/data/scripts/maps/JaggedPass.inc b/data/scripts/maps/JaggedPass.inc
index 151f1ec79..6f910d0ad 100644
--- a/data/scripts/maps/JaggedPass.inc
+++ b/data/scripts/maps/JaggedPass.inc
@@ -9,7 +9,7 @@ JaggedPass_MapScript1_15D271:: @ 815D271
JaggedPass_MapScript1_15D274:: @ 815D274
compare 0x40bd, 1
- callif 1, JaggedPass_EventScript_15D280
+ call_if 1, JaggedPass_EventScript_15D280
end
JaggedPass_EventScript_15D280:: @ 815D280
@@ -24,9 +24,9 @@ JaggedPass_EventScript_15D285:: @ 815D285
JaggedPass_EventScript_15D29C:: @ 815D29C
trainerbattle 0, OPPONENT_DIANA_1, 0, JaggedPass_Text_195E9E, JaggedPass_Text_195EDF
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq JaggedPass_EventScript_15D2C3
+ goto_if_eq JaggedPass_EventScript_15D2C3
msgbox JaggedPass_Text_195F04, 6
end
@@ -37,9 +37,9 @@ JaggedPass_EventScript_15D2C3:: @ 815D2C3
JaggedPass_EventScript_15D2DA:: @ 815D2DA
trainerbattle 0, OPPONENT_ETHAN_1, 0, JaggedPass_Text_195FF2, JaggedPass_Text_196032
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq JaggedPass_EventScript_15D301
+ goto_if_eq JaggedPass_EventScript_15D301
msgbox JaggedPass_Text_196077, 6
end
diff --git a/data/scripts/maps/LavaridgeTown.inc b/data/scripts/maps/LavaridgeTown.inc
index 685e44d58..5192176a7 100644
--- a/data/scripts/maps/LavaridgeTown.inc
+++ b/data/scripts/maps/LavaridgeTown.inc
@@ -6,16 +6,16 @@ LavaridgeTown_MapScripts:: @ 814E4A3
LavaridgeTown_MapScript1_14E4AE:: @ 814E4AE
setflag 2066
checkflag 139
- callif 1, LavaridgeTown_EventScript_14E4DF
+ call_if 1, LavaridgeTown_EventScript_14E4DF
call LavaridgeTown_EventScript_1A014E
call LavaridgeTown_EventScript_1A0172
compare 0x4053, 2
- callif 1, LavaridgeTown_EventScript_14E4D0
+ call_if 1, LavaridgeTown_EventScript_14E4D0
end
LavaridgeTown_EventScript_14E4D0:: @ 814E4D0
- movespriteperm 8, 11, 9
- movespriteperm 7, 11, 9
+ setobjectxyperm 8, 11, 9
+ setobjectxyperm 7, 11, 9
return
LavaridgeTown_EventScript_14E4DF:: @ 814E4DF
@@ -29,56 +29,56 @@ LavaridgeTown_MapScript2_14E4E3:: @ 814E4E3
LavaridgeTown_EventScript_14E4ED:: @ 814E4ED
lockall
setvar 0x8008, 1
- setdooropened 12, 15
- doorchange
- reappear 8
- move 8, LavaridgeTown_Movement_14E70E
- waitmove 0
- setdoorclosed 12, 15
- doorchange
- move 8, LavaridgeTown_Movement_1A083F
- waitmove 0
- move 255, LavaridgeTown_Movement_1A0843
- move 8, LavaridgeTown_Movement_1A0833
- waitmove 0
- move 8, LavaridgeTown_Movement_1A0835
- waitmove 0
- checkgender
+ opendoor 12, 15
+ waitdooranim
+ addobject 8
+ applymovement 8, LavaridgeTown_Movement_14E70E
+ waitmovement 0
+ closedoor 12, 15
+ waitdooranim
+ applymovement 8, LavaridgeTown_Movement_1A083F
+ waitmovement 0
+ applymovement 255, LavaridgeTown_Movement_1A0843
+ applymovement 8, LavaridgeTown_Movement_1A0833
+ waitmovement 0
+ applymovement 8, LavaridgeTown_Movement_1A0835
+ waitmovement 0
+ checkplayergender
compare RESULT, 0
- callif 1, LavaridgeTown_EventScript_14E56B
+ call_if 1, LavaridgeTown_EventScript_14E56B
compare RESULT, 1
- callif 1, LavaridgeTown_EventScript_14E570
+ call_if 1, LavaridgeTown_EventScript_14E570
compare 0x8008, 1
- callif 1, LavaridgeTown_EventScript_14E68F
- checkgender
+ call_if 1, LavaridgeTown_EventScript_14E68F
+ checkplayergender
compare RESULT, 0
- jumpeq LavaridgeTown_EventScript_14E5AB
+ goto_if_eq LavaridgeTown_EventScript_14E5AB
compare RESULT, 1
- jumpeq LavaridgeTown_EventScript_14E5D0
+ goto_if_eq LavaridgeTown_EventScript_14E5D0
end
LavaridgeTown_EventScript_14E56B:: @ 814E56B
- playmusic 415, 1
+ playbgm 415, 1
return
LavaridgeTown_EventScript_14E570:: @ 814E570
- playmusic 421, 1
+ playbgm 421, 1
return
LavaridgeTown_EventScript_14E575:: @ 814E575
lock
faceplayer
setvar 0x8008, 0
- checkgender
+ checkplayergender
compare RESULT, 0
- callif 1, LavaridgeTown_EventScript_14E56B
+ call_if 1, LavaridgeTown_EventScript_14E56B
compare RESULT, 1
- callif 1, LavaridgeTown_EventScript_14E570
- checkgender
+ call_if 1, LavaridgeTown_EventScript_14E570
+ checkplayergender
compare RESULT, 0
- jumpeq LavaridgeTown_EventScript_14E5AB
+ goto_if_eq LavaridgeTown_EventScript_14E5AB
compare RESULT, 1
- jumpeq LavaridgeTown_EventScript_14E5D0
+ goto_if_eq LavaridgeTown_EventScript_14E5D0
end
LavaridgeTown_EventScript_14E5AB:: @ 814E5AB
@@ -86,7 +86,7 @@ LavaridgeTown_EventScript_14E5AB:: @ 814E5AB
giveitem ITEM_GO_GOGGLES
setflag 221
msgbox LavaridgeTown_Text_16BE7D, 4
- jump LavaridgeTown_EventScript_14E5F5
+ goto LavaridgeTown_EventScript_14E5F5
end
LavaridgeTown_EventScript_14E5D0:: @ 814E5D0
@@ -94,28 +94,28 @@ LavaridgeTown_EventScript_14E5D0:: @ 814E5D0
giveitem ITEM_GO_GOGGLES
setflag 221
msgbox LavaridgeTown_Text_16C020, 4
- jump LavaridgeTown_EventScript_14E5F5
+ goto LavaridgeTown_EventScript_14E5F5
end
LavaridgeTown_EventScript_14E5F5:: @ 814E5F5
- closebutton
+ closemessage
compare 0x8008, 1
- callif 1, LavaridgeTown_EventScript_14E646
+ call_if 1, LavaridgeTown_EventScript_14E646
compare 0x8008, 0
- callif 1, LavaridgeTown_EventScript_14E64E
- disappear 8
- reappear 7
- pause 30
+ call_if 1, LavaridgeTown_EventScript_14E64E
+ removeobject 8
+ addobject 7
+ delay 30
compare 0x8008, 1
- callif 1, LavaridgeTown_EventScript_14E69A
+ call_if 1, LavaridgeTown_EventScript_14E69A
compare 0x8008, 0
- callif 1, LavaridgeTown_EventScript_14E6A5
- disappear 7
+ call_if 1, LavaridgeTown_EventScript_14E6A5
+ removeobject 7
setvar 0x4053, 2
- playmusicbattle 0
- fadedefault
+ savebgm 0
+ fadedefaultbgm
compare 0x8008, 0
- jumpeq LavaridgeTown_EventScript_14E644
+ goto_if_eq LavaridgeTown_EventScript_14E644
releaseall
end
@@ -124,65 +124,65 @@ LavaridgeTown_EventScript_14E644:: @ 814E644
end
LavaridgeTown_EventScript_14E646:: @ 814E646
- movespriteperm 7, 6, 16
+ setobjectxyperm 7, 6, 16
return
LavaridgeTown_EventScript_14E64E:: @ 814E64E
compare FACING, 2
- callif 1, LavaridgeTown_EventScript_14E67B
+ call_if 1, LavaridgeTown_EventScript_14E67B
compare FACING, 1
- callif 1, LavaridgeTown_EventScript_14E680
+ call_if 1, LavaridgeTown_EventScript_14E680
compare FACING, 3
- callif 1, LavaridgeTown_EventScript_14E685
+ call_if 1, LavaridgeTown_EventScript_14E685
compare FACING, 4
- callif 1, LavaridgeTown_EventScript_14E68A
+ call_if 1, LavaridgeTown_EventScript_14E68A
return
LavaridgeTown_EventScript_14E67B:: @ 814E67B
- spritebehave 7, 8
+ setobjectmovementtype 7, 8
return
LavaridgeTown_EventScript_14E680:: @ 814E680
- spritebehave 7, 7
+ setobjectmovementtype 7, 7
return
LavaridgeTown_EventScript_14E685:: @ 814E685
- spritebehave 7, 10
+ setobjectmovementtype 7, 10
return
LavaridgeTown_EventScript_14E68A:: @ 814E68A
- spritebehave 7, 9
+ setobjectmovementtype 7, 9
return
LavaridgeTown_EventScript_14E68F:: @ 814E68F
- move 8, LavaridgeTown_Movement_14E6E8
- waitmove 0
+ applymovement 8, LavaridgeTown_Movement_14E6E8
+ waitmovement 0
return
LavaridgeTown_EventScript_14E69A:: @ 814E69A
- move 7, LavaridgeTown_Movement_14E6EF
- waitmove 0
+ applymovement 7, LavaridgeTown_Movement_14E6EF
+ waitmovement 0
return
LavaridgeTown_EventScript_14E6A5:: @ 814E6A5
compare FACING, 2
- callif 1, LavaridgeTown_EventScript_14E6D2
+ call_if 1, LavaridgeTown_EventScript_14E6D2
compare FACING, 1
- callif 1, LavaridgeTown_EventScript_14E6D2
+ call_if 1, LavaridgeTown_EventScript_14E6D2
compare FACING, 3
- callif 1, LavaridgeTown_EventScript_14E6DD
+ call_if 1, LavaridgeTown_EventScript_14E6DD
compare FACING, 4
- callif 1, LavaridgeTown_EventScript_14E6D2
+ call_if 1, LavaridgeTown_EventScript_14E6D2
return
LavaridgeTown_EventScript_14E6D2:: @ 814E6D2
- move 7, LavaridgeTown_Movement_14E6FA
- waitmove 0
+ applymovement 7, LavaridgeTown_Movement_14E6FA
+ waitmovement 0
return
LavaridgeTown_EventScript_14E6DD:: @ 814E6DD
- move 7, LavaridgeTown_Movement_14E703
- waitmove 0
+ applymovement 7, LavaridgeTown_Movement_14E703
+ waitmovement 0
return
LavaridgeTown_Movement_14E6E8:: @ 814E6E8
@@ -236,13 +236,13 @@ LavaridgeTown_Movement_14E70E:: @ 814E70E
step_end
LavaridgeTown_EventScript_14E710:: @ 814E710
- specialval RESULT, player_get_direction_lower_nybble
+ specialvar RESULT, player_get_direction_lower_nybble
compare RESULT, 1
- jumpeq LavaridgeTown_EventScript_14E721
+ goto_if_eq LavaridgeTown_EventScript_14E721
end
LavaridgeTown_EventScript_14E721:: @ 814E721
- inccounter GAME_STAT_ENTERED_HOT_SPRINGS
+ incrementgamestat GAME_STAT_ENTERED_HOT_SPRINGS
end
LavaridgeTown_EventScript_14E724:: @ 814E724
@@ -273,19 +273,19 @@ LavaridgeTown_EventScript_14E75A:: @ 814E75A
lock
faceplayer
checkflag 266
- jumpeq LavaridgeTown_EventScript_14E79E
+ goto_if_eq LavaridgeTown_EventScript_14E79E
msgbox LavaridgeTown_Text_16C174, 5
compare RESULT, 0
- jumpeq LavaridgeTown_EventScript_14E7B2
+ goto_if_eq LavaridgeTown_EventScript_14E7B2
countpokemon
compare RESULT, 6
- jumpeq LavaridgeTown_EventScript_14E7A8
+ goto_if_eq LavaridgeTown_EventScript_14E7A8
msgbox LavaridgeTown_Text_16C2B6, 4
setflag 266
- fanfare 370
+ playfanfare 370
message LavaridgeTown_Text_16C2EA
waitfanfare
- waittext
+ waitmessage
giveegg 360
release
end
diff --git a/data/scripts/maps/LavaridgeTown_Gym_1F.inc b/data/scripts/maps/LavaridgeTown_Gym_1F.inc
index 57506bdb6..2edffe9f0 100644
--- a/data/scripts/maps/LavaridgeTown_Gym_1F.inc
+++ b/data/scripts/maps/LavaridgeTown_Gym_1F.inc
@@ -14,27 +14,27 @@ LavaridgeTown_Gym_1F_EventScript_15369F:: @ 815369F
setvar 0x400e, 0
setvar 0x400f, 0
checktrainerflag OPPONENT_COLE
- jumpeq LavaridgeTown_Gym_1F_EventScript_1536C6
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536C6
setvar 0x400b, 1
LavaridgeTown_Gym_1F_EventScript_1536C6:: @ 81536C6
checktrainerflag OPPONENT_ZANE
- jumpeq LavaridgeTown_Gym_1F_EventScript_1536D4
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536D4
setvar 0x400c, 1
LavaridgeTown_Gym_1F_EventScript_1536D4:: @ 81536D4
checktrainerflag OPPONENT_AXLE
- jumpeq LavaridgeTown_Gym_1F_EventScript_1536E2
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536E2
setvar 0x400d, 1
LavaridgeTown_Gym_1F_EventScript_1536E2:: @ 81536E2
checktrainerflag OPPONENT_SADIE
- jumpeq LavaridgeTown_Gym_1F_EventScript_1536F0
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536F0
setvar 0x400e, 1
LavaridgeTown_Gym_1F_EventScript_1536F0:: @ 81536F0
checktrainerflag OPPONENT_ANDY
- jumpeq LavaridgeTown_Gym_1F_EventScript_1536FE
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_1536FE
setvar 0x400f, 1
LavaridgeTown_Gym_1F_EventScript_1536FE:: @ 81536FE
@@ -42,28 +42,28 @@ LavaridgeTown_Gym_1F_EventScript_1536FE:: @ 81536FE
LavaridgeTown_Gym_1F_EventScript_1536FF:: @ 81536FF
checktrainerflag OPPONENT_COLE
- jumpeq LavaridgeTown_Gym_1F_EventScript_15370C
- spritebehave 2, 63
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_15370C
+ setobjectmovementtype 2, 63
LavaridgeTown_Gym_1F_EventScript_15370C:: @ 815370C
checktrainerflag OPPONENT_ZANE
- jumpeq LavaridgeTown_Gym_1F_EventScript_153719
- spritebehave 3, 63
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_153719
+ setobjectmovementtype 3, 63
LavaridgeTown_Gym_1F_EventScript_153719:: @ 8153719
checktrainerflag OPPONENT_AXLE
- jumpeq LavaridgeTown_Gym_1F_EventScript_153726
- spritebehave 4, 63
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_153726
+ setobjectmovementtype 4, 63
LavaridgeTown_Gym_1F_EventScript_153726:: @ 8153726
checktrainerflag OPPONENT_SADIE
- jumpeq LavaridgeTown_Gym_1F_EventScript_153733
- spritebehave 5, 63
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_153733
+ setobjectmovementtype 5, 63
LavaridgeTown_Gym_1F_EventScript_153733:: @ 8153733
checktrainerflag OPPONENT_ANDY
- jumpeq LavaridgeTown_Gym_1F_EventScript_153740
- spritebehave 7, 63
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_153740
+ setobjectmovementtype 7, 63
LavaridgeTown_Gym_1F_EventScript_153740:: @ 8153740
return
@@ -71,32 +71,32 @@ LavaridgeTown_Gym_1F_EventScript_153740:: @ 8153740
LavaridgeTown_Gym_1F_EventScript_153741:: @ 8153741
trainerbattle 1, OPPONENT_FLANNERY, 0, LavaridgeTown_Gym_1F_Text_176801, LavaridgeTown_Gym_1F_Text_176960, LavaridgeTown_Gym_1F_EventScript_153766
checkflag 168
- jumpif 0, LavaridgeTown_Gym_1F_EventScript_1537A7
+ goto_if 0, LavaridgeTown_Gym_1F_EventScript_1537A7
msgbox LavaridgeTown_Gym_1F_Text_176C4A, 4
release
end
LavaridgeTown_Gym_1F_EventScript_153766:: @ 8153766
message LavaridgeTown_Gym_1F_Text_176A62
- waittext
+ waitmessage
call LavaridgeTown_Gym_1F_EventScript_1A02C5
msgbox LavaridgeTown_Gym_1F_Text_176A8C, 4
setflag 1213
setflag 2058
addvar 0x4085, 1
compare 0x4085, 6
- callif 1, LavaridgeTown_Gym_1F_EventScript_1A00FB
+ call_if 1, LavaridgeTown_Gym_1F_EventScript_1A00FB
setvar 0x8008, 4
call LavaridgeTown_Gym_1F_EventScript_1A01C0
setflag 806
setvar 0x4053, 1
- jump LavaridgeTown_Gym_1F_EventScript_1537A7
+ goto LavaridgeTown_Gym_1F_EventScript_1537A7
end
LavaridgeTown_Gym_1F_EventScript_1537A7:: @ 81537A7
giveitem ITEM_TM50
compare RESULT, 0
- jumpeq LavaridgeTown_Gym_1F_EventScript_1A029B
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_1A029B
msgbox LavaridgeTown_Gym_1F_Text_176B8F, 4
setflag 168
release
@@ -136,7 +136,7 @@ LavaridgeTown_Gym_1F_EventScript_153859:: @ 8153859
lock
faceplayer
checkflag 1213
- jumpeq LavaridgeTown_Gym_1F_EventScript_15386E
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_15386E
msgbox LavaridgeTown_Gym_1F_Text_176312, 4
release
end
@@ -149,15 +149,15 @@ LavaridgeTown_Gym_1F_EventScript_15386E:: @ 815386E
LavaridgeTown_Gym_1F_EventScript_153878:: @ 8153878
lockall
checkflag 2058
- jumpeq LavaridgeTown_Gym_1F_EventScript_153898
- jump LavaridgeTown_Gym_1F_EventScript_1538A2
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_153898
+ goto LavaridgeTown_Gym_1F_EventScript_1538A2
end
LavaridgeTown_Gym_1F_EventScript_153888:: @ 8153888
lockall
checkflag 2058
- jumpeq LavaridgeTown_Gym_1F_EventScript_153898
- jump LavaridgeTown_Gym_1F_EventScript_1538A2
+ goto_if_eq LavaridgeTown_Gym_1F_EventScript_153898
+ goto LavaridgeTown_Gym_1F_EventScript_1538A2
end
LavaridgeTown_Gym_1F_EventScript_153898:: @ 8153898
diff --git a/data/scripts/maps/LavaridgeTown_HerbShop.inc b/data/scripts/maps/LavaridgeTown_HerbShop.inc
index 6ff103ce3..5ec6731d4 100644
--- a/data/scripts/maps/LavaridgeTown_HerbShop.inc
+++ b/data/scripts/maps/LavaridgeTown_HerbShop.inc
@@ -5,7 +5,7 @@ LavaridgeTown_HerbShop_EventScript_153629:: @ 8153629
lock
faceplayer
message LavaridgeTown_HerbShop_Text_17615C
- waittext
+ waitmessage
pokemart LavaridgeTown_HerbShop_Items
msgbox LavaridgeTown_HerbShop_Text_1A0C02, 4
release
@@ -29,11 +29,11 @@ LavaridgeTown_HerbShop_EventScript_153655:: @ 8153655
lock
faceplayer
checkflag 254
- jumpeq LavaridgeTown_HerbShop_EventScript_153684
+ goto_if_eq LavaridgeTown_HerbShop_EventScript_153684
msgbox LavaridgeTown_HerbShop_Text_1761A2, 4
giveitem ITEM_CHARCOAL
compare RESULT, 0
- jumpeq LavaridgeTown_HerbShop_EventScript_1A029B
+ goto_if_eq LavaridgeTown_HerbShop_EventScript_1A029B
setflag 254
release
end
diff --git a/data/scripts/maps/LavaridgeTown_House.inc b/data/scripts/maps/LavaridgeTown_House.inc
index 944427bb6..c75cb9e4b 100644
--- a/data/scripts/maps/LavaridgeTown_House.inc
+++ b/data/scripts/maps/LavaridgeTown_House.inc
@@ -8,8 +8,8 @@ LavaridgeTown_House_EventScript_1538AE:: @ 81538AE
LavaridgeTown_House_EventScript_1538B7:: @ 81538B7
lock
faceplayer
- checksound
- pokecry SPECIES_ZIGZAGOON, 0
+ waitse
+ playpokecry SPECIES_ZIGZAGOON, 0
msgbox LavaridgeTown_House_Text_176D94, 4
waitpokecry
release
diff --git a/data/scripts/maps/LavaridgeTown_Mart.inc b/data/scripts/maps/LavaridgeTown_Mart.inc
index 4f28e16b0..99b567e06 100644
--- a/data/scripts/maps/LavaridgeTown_Mart.inc
+++ b/data/scripts/maps/LavaridgeTown_Mart.inc
@@ -5,7 +5,7 @@ LavaridgeTown_Mart_EventScript_1538CB:: @ 81538CB
lock
faceplayer
message LavaridgeTown_Mart_Text_1A0BE4
- waittext
+ waitmessage
pokemart LavaridgeTown_Mart_Items
msgbox LavaridgeTown_Mart_Text_1A0C02, 4
release
diff --git a/data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc b/data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc
index c0762bcc3..9d0f31059 100644
--- a/data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc
+++ b/data/scripts/maps/LavaridgeTown_PokemonCenter_1F.inc
@@ -10,7 +10,7 @@ LavaridgeTown_PokemonCenter_1F_MapScript1_153912:: @ 8153912
LavaridgeTown_PokemonCenter_1F_EventScript_15391B:: @ 815391B
setvar 0x800b, 1
call LavaridgeTown_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
diff --git a/data/scripts/maps/LilycoveCity.inc b/data/scripts/maps/LilycoveCity.inc
index b688107ce..cf8e2e07d 100644
--- a/data/scripts/maps/LilycoveCity.inc
+++ b/data/scripts/maps/LilycoveCity.inc
@@ -8,7 +8,7 @@ LilycoveCity_MapScript1_14CA20:: @ 814CA20
setvar 0x4086, 0
setflag 802
checkflag 2090
- callif 1, LilycoveCity_EventScript_1A02C1
+ call_if 1, LilycoveCity_EventScript_1A02C1
call LilycoveCity_EventScript_1A0196
call LilycoveCity_EventScript_1A014E
end
@@ -29,9 +29,9 @@ LilycoveCity_MapScript1_14CA3F:: @ 814CA3F
setmaptile 72, 6, 445, 0
.endif
checkflag 112
- callif 0, LilycoveCity_EventScript_14CABE
+ call_if 0, LilycoveCity_EventScript_14CABE
checkflag 2061
- callif 1, LilycoveCity_EventScript_14CB2B
+ call_if 1, LilycoveCity_EventScript_14CB2B
end
LilycoveCity_EventScript_14CABE:: @ 814CABE
@@ -63,15 +63,15 @@ LilycoveCity_EventScript_14CB2B:: @ 814CB2B
LilycoveCity_EventScript_14CB74:: @ 814CB74
lock
faceplayer
- checkdailyflags
+ dodailyevents
checkflag 2255
- jumpeq LilycoveCity_EventScript_14CBB4
+ goto_if_eq LilycoveCity_EventScript_14CBB4
msgbox LilycoveCity_Text_1C5A7A, 4
random 10
addvar RESULT, 133
giveitem RESULT
compare RESULT, 0
- jumpeq LilycoveCity_EventScript_1A029B
+ goto_if_eq LilycoveCity_EventScript_1A029B
setflag 2255
msgbox LilycoveCity_Text_1C5B1D, 4
release
@@ -90,7 +90,7 @@ LilycoveCity_EventScript_14CBC7:: @ 814CBC7
lock
faceplayer
checkflag 2061
- jumpeq LilycoveCity_EventScript_14CBDC
+ goto_if_eq LilycoveCity_EventScript_14CBDC
msgbox LilycoveCity_Text_168750, 4
release
end
@@ -108,7 +108,7 @@ LilycoveCity_EventScript_14CBEF:: @ 814CBEF
lock
faceplayer
checkflag 112
- jumpeq LilycoveCity_EventScript_14CC04
+ goto_if_eq LilycoveCity_EventScript_14CC04
msgbox LilycoveCity_Text_1688C1, 4
release
end
@@ -122,7 +122,7 @@ LilycoveCity_EventScript_14CC0E:: @ 814CC0E
lock
faceplayer
checkflag 112
- jumpeq LilycoveCity_EventScript_14CC23
+ goto_if_eq LilycoveCity_EventScript_14CC23
msgbox LilycoveCity_Text_1689BF, 4
release
end
@@ -148,7 +148,7 @@ LilycoveCity_EventScript_14CC48:: @ 814CC48
lock
faceplayer
checkflag 2061
- jumpeq LilycoveCity_EventScript_14CC5D
+ goto_if_eq LilycoveCity_EventScript_14CC5D
msgbox LilycoveCity_Text_168C16, 4
release
end
@@ -172,7 +172,7 @@ LilycoveCity_EventScript_14CC79:: @ 814CC79
LilycoveCity_EventScript_14CC82:: @ 814CC82
lockall
- specialval 0x8004, sub_80C4D50
+ specialvar 0x8004, sub_80C4D50
switch 0x8004
case 0, LilycoveCity_EventScript_14CCA2
msgbox LilycoveCity_Text_168EA4, 4
@@ -187,7 +187,7 @@ LilycoveCity_EventScript_14CCA2:: @ 814CCA2
LilycoveCity_EventScript_14CCAC:: @ 814CCAC
lockall
checkflag 2052
- jumpeq LilycoveCity_EventScript_14CCC0
+ goto_if_eq LilycoveCity_EventScript_14CCC0
msgbox LilycoveCity_Text_168EDA, 4
releaseall
end
@@ -212,13 +212,13 @@ LilycoveCity_EventScript_14CCDC:: @ 814CCDC
LilycoveCity_EventScript_14CCE5:: @ 814CCE5
lockall
checkflag 218
- jumpeq LilycoveCity_EventScript_14CD18
+ goto_if_eq LilycoveCity_EventScript_14CD18
msgbox LilycoveCity_Text_16864A, 4
- move LAST_TALKED, LilycoveCity_Movement_1A0839
- waitmove 0
+ applymovement LAST_TALKED, LilycoveCity_Movement_1A0839
+ waitmovement 0
msgbox LilycoveCity_Text_168675, 4
- move LAST_TALKED, LilycoveCity_Movement_1A083D
- waitmove 0
+ applymovement LAST_TALKED, LilycoveCity_Movement_1A083D
+ waitmovement 0
setflag 218
releaseall
end
@@ -247,21 +247,21 @@ LilycoveCity_EventScript_14CD3D:: @ 814CD3D
LilycoveCity_EventScript_14CD46:: @ 814CD46
lock
faceplayer
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq LilycoveCity_EventScript_14CD60
+ goto_if_eq LilycoveCity_EventScript_14CD60
compare RESULT, 1
- jumpeq LilycoveCity_EventScript_14CDD3
+ goto_if_eq LilycoveCity_EventScript_14CDD3
end
LilycoveCity_EventScript_14CD60:: @ 814CD60
- playmusic 415, 1
+ playbgm 415, 1
checkflag 286
- callif 1, LilycoveCity_EventScript_14CDB0
+ call_if 1, LilycoveCity_EventScript_14CDB0
checkflag 286
- callif 0, LilycoveCity_EventScript_14CDB9
+ call_if 0, LilycoveCity_EventScript_14CDB9
compare RESULT, 0
- jumpeq LilycoveCity_EventScript_14CDC2
+ goto_if_eq LilycoveCity_EventScript_14CDC2
msgbox LilycoveCity_Text_167B94, 4
switch 0x4023
case 0, LilycoveCity_EventScript_14CE46
@@ -280,19 +280,19 @@ LilycoveCity_EventScript_14CDB9:: @ 814CDB9
LilycoveCity_EventScript_14CDC2:: @ 814CDC2
setflag 286
msgbox LilycoveCity_Text_167AEB, 4
- playmusicbattle 0
- fadedefault
+ savebgm 0
+ fadedefaultbgm
release
end
LilycoveCity_EventScript_14CDD3:: @ 814CDD3
- playmusic 421, 1
+ playbgm 421, 1
checkflag 286
- callif 1, LilycoveCity_EventScript_14CE23
+ call_if 1, LilycoveCity_EventScript_14CE23
checkflag 286
- callif 0, LilycoveCity_EventScript_14CE2C
+ call_if 0, LilycoveCity_EventScript_14CE2C
compare RESULT, 0
- jumpeq LilycoveCity_EventScript_14CE35
+ goto_if_eq LilycoveCity_EventScript_14CE35
msgbox LilycoveCity_Text_1680A9, 4
switch 0x4023
case 0, LilycoveCity_EventScript_14CE76
@@ -311,58 +311,58 @@ LilycoveCity_EventScript_14CE2C:: @ 814CE2C
LilycoveCity_EventScript_14CE35:: @ 814CE35
setflag 286
msgbox LilycoveCity_Text_16802C, 4
- playmusicbattle 0
- fadedefault
+ savebgm 0
+ fadedefaultbgm
release
end
LilycoveCity_EventScript_14CE46:: @ 814CE46
trainerbattle 3, OPPONENT_MAY_11, 0, LilycoveCity_Text_167BD5
- jump LilycoveCity_EventScript_14CEA6
+ goto LilycoveCity_EventScript_14CEA6
end
LilycoveCity_EventScript_14CE56:: @ 814CE56
trainerbattle 3, OPPONENT_MAY_12, 0, LilycoveCity_Text_167BD5
- jump LilycoveCity_EventScript_14CEA6
+ goto LilycoveCity_EventScript_14CEA6
end
LilycoveCity_EventScript_14CE66:: @ 814CE66
trainerbattle 3, OPPONENT_MAY_10, 0, LilycoveCity_Text_167BD5
- jump LilycoveCity_EventScript_14CEA6
+ goto LilycoveCity_EventScript_14CEA6
end
LilycoveCity_EventScript_14CE76:: @ 814CE76
trainerbattle 3, OPPONENT_BRENDAN_11, 0, LilycoveCity_Text_1680E4
- jump LilycoveCity_EventScript_14CF12
+ goto LilycoveCity_EventScript_14CF12
end
LilycoveCity_EventScript_14CE86:: @ 814CE86
trainerbattle 3, OPPONENT_BRENDAN_12, 0, LilycoveCity_Text_1680E4
- jump LilycoveCity_EventScript_14CF12
+ goto LilycoveCity_EventScript_14CF12
end
LilycoveCity_EventScript_14CE96:: @ 814CE96
trainerbattle 3, OPPONENT_BRENDAN_10, 0, LilycoveCity_Text_1680E4
- jump LilycoveCity_EventScript_14CF12
+ goto LilycoveCity_EventScript_14CF12
end
LilycoveCity_EventScript_14CEA6:: @ 814CEA6
msgbox LilycoveCity_Text_167C6B, 4
setvar RESULT, 0
checkflag 2060
- callif 1, LilycoveCity_EventScript_14CEDE
+ call_if 1, LilycoveCity_EventScript_14CEDE
compare RESULT, 0
- callif 1, LilycoveCity_EventScript_14CEEE
+ call_if 1, LilycoveCity_EventScript_14CEEE
compare RESULT, 1
- callif 1, LilycoveCity_EventScript_14CEF7
+ call_if 1, LilycoveCity_EventScript_14CEF7
clearflag 722
clearflag 849
- jump LilycoveCity_EventScript_14CF6B
+ goto LilycoveCity_EventScript_14CF6B
end
LilycoveCity_EventScript_14CEDE:: @ 814CEDE
checkflag 2062
- jumpeq LilycoveCity_EventScript_14CEE8
+ goto_if_eq LilycoveCity_EventScript_14CEE8
return
LilycoveCity_EventScript_14CEE8:: @ 814CEE8
@@ -375,7 +375,7 @@ LilycoveCity_EventScript_14CEEE:: @ 814CEEE
LilycoveCity_EventScript_14CEF7:: @ 814CEF7
checkflag 2052
- jumpeq LilycoveCity_EventScript_14CF09
+ goto_if_eq LilycoveCity_EventScript_14CF09
msgbox LilycoveCity_Text_167DDD, 4
return
@@ -387,13 +387,13 @@ LilycoveCity_EventScript_14CF12:: @ 814CF12
msgbox LilycoveCity_Text_168149, 4
setvar RESULT, 0
checkflag 2060
- callif 1, LilycoveCity_EventScript_14CEDE
+ call_if 1, LilycoveCity_EventScript_14CEDE
compare RESULT, 0
- callif 1, LilycoveCity_EventScript_14CF47
+ call_if 1, LilycoveCity_EventScript_14CF47
compare RESULT, 1
- callif 1, LilycoveCity_EventScript_14CF50
+ call_if 1, LilycoveCity_EventScript_14CF50
clearflag 760
- jump LilycoveCity_EventScript_14CF6B
+ goto LilycoveCity_EventScript_14CF6B
end
LilycoveCity_EventScript_14CF47:: @ 814CF47
@@ -402,7 +402,7 @@ LilycoveCity_EventScript_14CF47:: @ 814CF47
LilycoveCity_EventScript_14CF50:: @ 814CF50
checkflag 2052
- jumpeq LilycoveCity_EventScript_14CF62
+ goto_if_eq LilycoveCity_EventScript_14CF62
msgbox LilycoveCity_Text_168282, 4
return
@@ -411,17 +411,17 @@ LilycoveCity_EventScript_14CF62:: @ 814CF62
return
LilycoveCity_EventScript_14CF6B:: @ 814CF6B
- closebutton
- move LAST_TALKED, LilycoveCity_Movement_1A0845
- waitmove 0
- pause 50
- setanimation 0, 1
- doanimation 30
- pause 15
- disappear LAST_TALKED
- checkanimation 30
- playmusicbattle 0
- fadedefault
+ closemessage
+ applymovement LAST_TALKED, LilycoveCity_Movement_1A0845
+ waitmovement 0
+ delay 50
+ setfieldeffect 0, 1
+ dofieldeffect 30
+ delay 15
+ removeobject LAST_TALKED
+ waitfieldeffect 30
+ savebgm 0
+ fadedefaultbgm
setflag 292
release
end
diff --git a/data/scripts/maps/LilycoveCity_ContestHall.inc b/data/scripts/maps/LilycoveCity_ContestHall.inc
index 3601cb455..944857a21 100644
--- a/data/scripts/maps/LilycoveCity_ContestHall.inc
+++ b/data/scripts/maps/LilycoveCity_ContestHall.inc
@@ -22,48 +22,48 @@ LilycoveCity_ContestHall_EventScript_1590B6:: @ 81590B6
LilycoveCity_ContestHall_EventScript_1590BF:: @ 81590BF
msgbox LilycoveCity_ContestHall_Text_189301, 2
lockall
- move 4, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 4, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_1590D4:: @ 81590D4
msgbox LilycoveCity_ContestHall_Text_189366, 2
lockall
- move 5, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 5, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_1590E9:: @ 81590E9
msgbox LilycoveCity_ContestHall_Text_1893CE, 2
lockall
- move 6, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 6, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_1590FE:: @ 81590FE
msgbox LilycoveCity_ContestHall_Text_189463, 2
lockall
- move 7, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 7, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_159113:: @ 8159113
msgbox LilycoveCity_ContestHall_Text_189512, 2
lockall
- move 8, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 8, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_159128:: @ 8159128
msgbox LilycoveCity_ContestHall_Text_18956B, 2
lockall
- move 9, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 9, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
@@ -74,154 +74,154 @@ LilycoveCity_ContestHall_EventScript_15913D:: @ 815913D
LilycoveCity_ContestHall_EventScript_159146:: @ 8159146
msgbox LilycoveCity_ContestHall_Text_189617, 2
lockall
- move 12, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 12, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_15915B:: @ 815915B
msgbox LilycoveCity_ContestHall_Text_1896BE, 2
lockall
- move 22, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 22, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_159170:: @ 8159170
msgbox LilycoveCity_ContestHall_Text_1896FE, 2
lockall
- move 11, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 11, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_159185:: @ 8159185
msgbox LilycoveCity_ContestHall_Text_189771, 2
lockall
- move 13, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 13, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_15919A:: @ 815919A
msgbox LilycoveCity_ContestHall_Text_1897AA, 2
lockall
- move 14, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 14, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_1591AF:: @ 81591AF
msgbox LilycoveCity_ContestHall_Text_18980B, 2
lockall
- move 15, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 15, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_1591C4:: @ 81591C4
msgbox LilycoveCity_ContestHall_Text_189874, 2
lockall
- move 16, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 16, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_1591D9:: @ 81591D9
msgbox LilycoveCity_ContestHall_Text_18990A, 2
lockall
- move 17, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 17, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_1591EE:: @ 81591EE
msgbox LilycoveCity_ContestHall_Text_189981, 2
lockall
- move 18, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 18, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_159203:: @ 8159203
msgbox LilycoveCity_ContestHall_Text_189A1D, 2
lockall
- move 19, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 19, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_159218:: @ 8159218
msgbox LilycoveCity_ContestHall_Text_189A82, 2
lockall
- move 21, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 21, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_15922D:: @ 815922D
msgbox LilycoveCity_ContestHall_Text_189AE1, 2
lockall
- move 20, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 20, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_159242:: @ 8159242
msgbox LilycoveCity_ContestHall_Text_189B4E, 2
lockall
- move 23, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 23, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_159257:: @ 8159257
msgbox LilycoveCity_ContestHall_Text_189BBF, 2
lockall
- move 24, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 24, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_15926C:: @ 815926C
msgbox LilycoveCity_ContestHall_Text_189C29, 2
lockall
- move 25, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 25, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_159281:: @ 8159281
msgbox LilycoveCity_ContestHall_Text_189C67, 2
lockall
- move 26, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 26, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_159296:: @ 8159296
msgbox LilycoveCity_ContestHall_Text_189CB3, 2
lockall
- move 27, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 27, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_1592AB:: @ 81592AB
msgbox LilycoveCity_ContestHall_Text_189D11, 2
lockall
- move 28, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 28, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_1592C0:: @ 81592C0
lockall
- move 29, LilycoveCity_ContestHall_Movement_1A0839
- waitmove 0
- pause 25
- move 29, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 29, LilycoveCity_ContestHall_Movement_1A0839
+ waitmovement 0
+ delay 25
+ applymovement 29, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
msgbox LilycoveCity_ContestHall_Text_189DA2, 3
releaseall
end
@@ -229,16 +229,16 @@ LilycoveCity_ContestHall_EventScript_1592C0:: @ 81592C0
LilycoveCity_ContestHall_EventScript_1592E2:: @ 81592E2
msgbox LilycoveCity_ContestHall_Text_189E5F, 2
lockall
- move 31, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 31, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_ContestHall_EventScript_1592F7:: @ 81592F7
msgbox LilycoveCity_ContestHall_Text_189DF3, 2
lockall
- move 30, LilycoveCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 30, LilycoveCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
diff --git a/data/scripts/maps/LilycoveCity_ContestLobby.inc b/data/scripts/maps/LilycoveCity_ContestLobby.inc
index 3c8cc5bdf..a8c32a4fe 100644
--- a/data/scripts/maps/LilycoveCity_ContestLobby.inc
+++ b/data/scripts/maps/LilycoveCity_ContestLobby.inc
@@ -14,41 +14,41 @@ LilycoveCity_ContestLobby_MapScript2_158877:: @ 8158877
LilycoveCity_ContestLobby_EventScript_158889:: @ 8158889
checkflag 775
- jumpeq LilycoveCity_ContestLobby_EventScript_158898
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158898
setvar 0x4099, 0
end
LilycoveCity_ContestLobby_EventScript_158898:: @ 8158898
lockall
- reappear 4
- move 4, LilycoveCity_ContestLobby_Movement_158A3B
- waitmove 4
- move 255, LilycoveCity_ContestLobby_Movement_158A4C
- waitmove 0
+ addobject 4
+ applymovement 4, LilycoveCity_ContestLobby_Movement_158A3B
+ waitmovement 4
+ applymovement 255, LilycoveCity_ContestLobby_Movement_158A4C
+ waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_18890F, 4
lockall
fadescreen 1
- showcontestwinner 0
+ drawcontestwinner 0
lockall
msgbox LilycoveCity_ContestLobby_Text_1889FD, 5
compare RESULT, 1
- jumpeq LilycoveCity_ContestLobby_EventScript_1588DE
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_1588DE
compare RESULT, 0
- jumpeq LilycoveCity_ContestLobby_EventScript_158918
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158918
releaseall
end
LilycoveCity_ContestLobby_EventScript_1588DE:: @ 81588DE
msgbox LilycoveCity_ContestLobby_Text_188AE8, 4
- closebutton
+ closemessage
special sub_80C4CEC
setvar 0x4099, 0
- specialval RESULT, GiveMonArtistRibbon
+ specialvar RESULT, GiveMonArtistRibbon
compare RESULT, 1
- callif 1, LilycoveCity_ContestLobby_EventScript_158948
- move 4, LilycoveCity_ContestLobby_Movement_158A43
- waitmove 0
- disappear 4
+ call_if 1, LilycoveCity_ContestLobby_EventScript_158948
+ applymovement 4, LilycoveCity_ContestLobby_Movement_158A43
+ waitmovement 0
+ removeobject 4
call LilycoveCity_ContestLobby_EventScript_158994
call LilycoveCity_ContestLobby_EventScript_1589EA
releaseall
@@ -57,37 +57,37 @@ LilycoveCity_ContestLobby_EventScript_1588DE:: @ 81588DE
LilycoveCity_ContestLobby_EventScript_158918:: @ 8158918
msgbox LilycoveCity_ContestLobby_Text_188C41, 5
compare RESULT, 1
- jumpeq LilycoveCity_ContestLobby_EventScript_1588DE
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_1588DE
msgbox LilycoveCity_ContestLobby_Text_188CBD, 4
- closebutton
- move 4, LilycoveCity_ContestLobby_Movement_158A43
- waitmove 0
+ closemessage
+ applymovement 4, LilycoveCity_ContestLobby_Movement_158A43
+ waitmovement 0
setvar 0x4099, 0
- disappear 4
+ removeobject 4
releaseall
end
LilycoveCity_ContestLobby_EventScript_158948:: @ 8158948
- inccounter GAME_STAT_RECEIVED_RIBBONS
+ incrementgamestat GAME_STAT_RECEIVED_RIBBONS
special sub_80C4858
- move 4, LilycoveCity_ContestLobby_Movement_158A4E
- waitmove 0
- playsfx 21
- move 4, LilycoveCity_ContestLobby_Movement_1A0833
- waitmove 0
- move 4, LilycoveCity_ContestLobby_Movement_158A52
- waitmove 0
+ applymovement 4, LilycoveCity_ContestLobby_Movement_158A4E
+ waitmovement 0
+ playse 21
+ applymovement 4, LilycoveCity_ContestLobby_Movement_1A0833
+ waitmovement 0
+ applymovement 4, LilycoveCity_ContestLobby_Movement_158A52
+ waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_188BB5, 4
- fanfare 370
+ playfanfare 370
msgbox LilycoveCity_ContestLobby_Text_188C03, 4
waitfanfare
msgbox LilycoveCity_ContestLobby_Text_188C19, 4
msgbox LilycoveCity_ContestLobby_Text_188C32, 4
- closebutton
+ closemessage
return
LilycoveCity_ContestLobby_EventScript_158994:: @ 8158994
- specialval 0x8004, sub_80C4D50
+ specialvar 0x8004, sub_80C4D50
switch 0x8004
case 1, LilycoveCity_ContestLobby_EventScript_1589D6
case 2, LilycoveCity_ContestLobby_EventScript_1589DA
@@ -189,39 +189,39 @@ LilycoveCity_ContestLobby_Movement_158A52:: @ 8158A52
LilycoveCity_ContestLobby_EventScript_158A5B:: @ 8158A5B
checkflag 775
- jumpeq LilycoveCity_ContestLobby_EventScript_158A6A
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158A6A
setvar 0x4099, 0
end
LilycoveCity_ContestLobby_EventScript_158A6A:: @ 8158A6A
lockall
- reappear 11
- move 11, LilycoveCity_ContestLobby_Movement_158B64
- waitmove 11
- move 255, LilycoveCity_ContestLobby_Movement_158B76
- waitmove 0
+ addobject 11
+ applymovement 11, LilycoveCity_ContestLobby_Movement_158B64
+ waitmovement 11
+ applymovement 255, LilycoveCity_ContestLobby_Movement_158B76
+ waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_18890F, 4
lockall
fadescreen 1
- showcontestwinner 0
+ drawcontestwinner 0
msgbox LilycoveCity_ContestLobby_Text_1889FD, 5
compare RESULT, 1
- jumpeq LilycoveCity_ContestLobby_EventScript_158AAE
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158AAE
compare RESULT, 0
- jumpeq LilycoveCity_ContestLobby_EventScript_158AE8
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158AE8
end
LilycoveCity_ContestLobby_EventScript_158AAE:: @ 8158AAE
msgbox LilycoveCity_ContestLobby_Text_188AE8, 4
- closebutton
+ closemessage
special sub_80C4CEC
setvar 0x4099, 0
- specialval RESULT, GiveMonArtistRibbon
+ specialvar RESULT, GiveMonArtistRibbon
compare RESULT, 1
- callif 1, LilycoveCity_ContestLobby_EventScript_158B18
- move 11, LilycoveCity_ContestLobby_Movement_158B6D
- waitmove 0
- disappear 11
+ call_if 1, LilycoveCity_ContestLobby_EventScript_158B18
+ applymovement 11, LilycoveCity_ContestLobby_Movement_158B6D
+ waitmovement 0
+ removeobject 11
call LilycoveCity_ContestLobby_EventScript_158994
call LilycoveCity_ContestLobby_EventScript_1589EA
releaseall
@@ -230,33 +230,33 @@ LilycoveCity_ContestLobby_EventScript_158AAE:: @ 8158AAE
LilycoveCity_ContestLobby_EventScript_158AE8:: @ 8158AE8
msgbox LilycoveCity_ContestLobby_Text_188C41, 5
compare RESULT, 1
- jumpeq LilycoveCity_ContestLobby_EventScript_158AAE
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158AAE
msgbox LilycoveCity_ContestLobby_Text_188CBD, 4
- closebutton
- move 11, LilycoveCity_ContestLobby_Movement_158B6D
- waitmove 0
+ closemessage
+ applymovement 11, LilycoveCity_ContestLobby_Movement_158B6D
+ waitmovement 0
setvar 0x4099, 0
- disappear 11
+ removeobject 11
releaseall
end
LilycoveCity_ContestLobby_EventScript_158B18:: @ 8158B18
- inccounter GAME_STAT_RECEIVED_RIBBONS
+ incrementgamestat GAME_STAT_RECEIVED_RIBBONS
special sub_80C4858
- move 11, LilycoveCity_ContestLobby_Movement_158B78
- waitmove 0
- playsfx 21
- move 11, LilycoveCity_ContestLobby_Movement_1A0833
- waitmove 0
- move 11, LilycoveCity_ContestLobby_Movement_158B7C
- waitmove 0
+ applymovement 11, LilycoveCity_ContestLobby_Movement_158B78
+ waitmovement 0
+ playse 21
+ applymovement 11, LilycoveCity_ContestLobby_Movement_1A0833
+ waitmovement 0
+ applymovement 11, LilycoveCity_ContestLobby_Movement_158B7C
+ waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_188BB5, 4
- fanfare 370
+ playfanfare 370
msgbox LilycoveCity_ContestLobby_Text_188C03, 4
waitfanfare
msgbox LilycoveCity_ContestLobby_Text_188C19, 4
msgbox LilycoveCity_ContestLobby_Text_188C32, 4
- closebutton
+ closemessage
return
LilycoveCity_ContestLobby_Movement_158B64:: @ 8158B64
@@ -306,19 +306,19 @@ LilycoveCity_ContestLobby_EventScript_158B85:: @ 8158B85
lockall
checkitem ITEM_CONTEST_PASS, 1
compare RESULT, 0
- jumpeq LilycoveCity_ContestLobby_EventScript_158BBA
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158BBA
checkflag 2
- jumpeq LilycoveCity_ContestLobby_EventScript_158BAE
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158BAE
message LilycoveCity_ContestLobby_Text_18848C
- waittext
+ waitmessage
setflag 2
- jump LilycoveCity_ContestLobby_EventScript_158BF0
+ goto LilycoveCity_ContestLobby_EventScript_158BF0
end
LilycoveCity_ContestLobby_EventScript_158BAE:: @ 8158BAE
message LilycoveCity_ContestLobby_Text_188584
- waittext
- jump LilycoveCity_ContestLobby_EventScript_158BF0
+ waitmessage
+ goto LilycoveCity_ContestLobby_EventScript_158BF0
end
LilycoveCity_ContestLobby_EventScript_158BBA:: @ 8158BBA
@@ -329,11 +329,11 @@ LilycoveCity_ContestLobby_EventScript_158BBA:: @ 8158BBA
LilycoveCity_ContestLobby_EventScript_158BC4:: @ 8158BC4
msgbox LilycoveCity_ContestLobby_Text_188521, 5
compare RESULT, 0
- jumpeq LilycoveCity_ContestLobby_EventScript_158C35
- call LilycoveCity_ContestLobby_EventScript_19F806
- hidebox 0, 0, 15, 9
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158C35
+ call S_DoSaveDialog
+ erasebox 0, 0, 15, 9
compare RESULT, 0
- jumpeq LilycoveCity_ContestLobby_EventScript_158C35
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158C35
setflag 3
return
@@ -348,7 +348,7 @@ LilycoveCity_ContestLobby_EventScript_158BF0:: @ 8158BF0
LilycoveCity_ContestLobby_EventScript_158C27:: @ 8158C27
msgbox LilycoveCity_ContestLobby_Text_1885A7, 4
- jump LilycoveCity_ContestLobby_EventScript_158B85
+ goto LilycoveCity_ContestLobby_EventScript_158B85
end
LilycoveCity_ContestLobby_EventScript_158C35:: @ 8158C35
@@ -362,39 +362,39 @@ LilycoveCity_ContestLobby_EventScript_158C42:: @ 8158C42
setvar CONTEST_RANK, 0
choosecontestpkmn
compare 0x8004, 255
- jumpeq LilycoveCity_ContestLobby_EventScript_158CEA
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158CEA
special sub_80C43F4
compare RESULT, 0
- jumpeq LilycoveCity_ContestLobby_EventScript_158C96
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158C96
compare RESULT, 1
- jumpeq LilycoveCity_ContestLobby_EventScript_158CC0
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158CC0
compare RESULT, 2
- jumpeq LilycoveCity_ContestLobby_EventScript_158CC0
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158CC0
compare RESULT, 3
- jumpeq LilycoveCity_ContestLobby_EventScript_158CA4
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158CA4
compare RESULT, 4
- jumpeq LilycoveCity_ContestLobby_EventScript_158CB2
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158CB2
end
LilycoveCity_ContestLobby_EventScript_158C96:: @ 8158C96
msgbox LilycoveCity_ContestLobby_Text_1A664A, 4
- jump LilycoveCity_ContestLobby_EventScript_158C42
+ goto LilycoveCity_ContestLobby_EventScript_158C42
end
LilycoveCity_ContestLobby_EventScript_158CA4:: @ 8158CA4
msgbox LilycoveCity_ContestLobby_Text_1A669F, 4
- jump LilycoveCity_ContestLobby_EventScript_158C42
+ goto LilycoveCity_ContestLobby_EventScript_158C42
end
LilycoveCity_ContestLobby_EventScript_158CB2:: @ 8158CB2
msgbox LilycoveCity_ContestLobby_Text_1A66DC, 4
- jump LilycoveCity_ContestLobby_EventScript_158C42
+ goto LilycoveCity_ContestLobby_EventScript_158C42
end
LilycoveCity_ContestLobby_EventScript_158CC0:: @ 8158CC0
copyvar 0x8008, 0x8004
message LilycoveCity_ContestLobby_Text_1A67A3
- waittext
+ waitmessage
yesnobox 20, 8
switch RESULT
case 0, LilycoveCity_ContestLobby_EventScript_158C42
@@ -403,31 +403,31 @@ LilycoveCity_ContestLobby_EventScript_158CC0:: @ 8158CC0
LilycoveCity_ContestLobby_EventScript_158CEA:: @ 8158CEA
checkflag 3
- callif 0, LilycoveCity_ContestLobby_EventScript_158BC4
+ call_if 0, LilycoveCity_ContestLobby_EventScript_158BC4
message LilycoveCity_ContestLobby_Text_1886DC
- waittext
+ waitmessage
multichoice 0, 0, 4, 0
switch RESULT
case 5, LilycoveCity_ContestLobby_EventScript_158C35
case 127, LilycoveCity_ContestLobby_EventScript_158C35
copyvar CONTEST_CATEGORY, RESULT
- jump LilycoveCity_ContestLobby_EventScript_158C42
+ goto LilycoveCity_ContestLobby_EventScript_158C42
end
LilycoveCity_ContestLobby_EventScript_158D24:: @ 8158D24
message LilycoveCity_ContestLobby_Text_1887C7
- waittext
+ waitmessage
copyvar 0x8004, RESULT
special sub_808363C
waitstate
compare RESULT, 3
- jumpeq LilycoveCity_ContestLobby_EventScript_158D90
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158D90
compare RESULT, 5
- jumpeq LilycoveCity_ContestLobby_EventScript_158DA1
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158DA1
compare RESULT, 6
- jumpeq LilycoveCity_ContestLobby_EventScript_158DB2
- message2 LilycoveCity_ContestLobby_Text_18872A
- waittext
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158DB2
+ messageautoscroll LilycoveCity_ContestLobby_Text_18872A
+ waitmessage
contestlinktransfer
switch 0x8004
case 0, LilycoveCity_ContestLobby_EventScript_158DD1
@@ -437,13 +437,13 @@ LilycoveCity_ContestLobby_EventScript_158D24:: @ 8158D24
LilycoveCity_ContestLobby_EventScript_158D82:: @ 8158D82
msgbox LilycoveCity_ContestLobby_Text_188750, 4
- jump LilycoveCity_ContestLobby_EventScript_158CEA
+ goto LilycoveCity_ContestLobby_EventScript_158CEA
end
LilycoveCity_ContestLobby_EventScript_158D90:: @ 8158D90
special CloseLink
msgbox LilycoveCity_ContestLobby_Text_18878D, 4
- closebutton
+ closemessage
releaseall
clearflag 3
end
@@ -451,7 +451,7 @@ LilycoveCity_ContestLobby_EventScript_158D90:: @ 8158D90
LilycoveCity_ContestLobby_EventScript_158DA1:: @ 8158DA1
special CloseLink
msgbox LilycoveCity_ContestLobby_Text_1887F4, 4
- closebutton
+ closemessage
releaseall
clearflag 3
end
@@ -459,24 +459,24 @@ LilycoveCity_ContestLobby_EventScript_158DA1:: @ 8158DA1
LilycoveCity_ContestLobby_EventScript_158DB2:: @ 8158DB2
special CloseLink
msgbox LilycoveCity_ContestLobby_Text_18881F, 4
- closebutton
+ closemessage
releaseall
clearflag 3
end
LilycoveCity_ContestLobby_EventScript_158DC3:: @ 8158DC3
msgbox LilycoveCity_ContestLobby_Text_18873A, 4
- jump LilycoveCity_ContestLobby_EventScript_158CEA
+ goto LilycoveCity_ContestLobby_EventScript_158CEA
end
LilycoveCity_ContestLobby_EventScript_158DD1:: @ 8158DD1
special sub_80C496C
addvar 0x8004, 1
- buffernum 1, 32772
- message2 LilycoveCity_ContestLobby_Text_188845
- waittext
+ getnumberstring 1, 32772
+ messageautoscroll LilycoveCity_ContestLobby_Text_188845
+ waitmessage
addvar 0x8004, 65535
- jump LilycoveCity_ContestLobby_EventScript_158DEE
+ goto LilycoveCity_ContestLobby_EventScript_158DEE
end
LilycoveCity_ContestLobby_EventScript_158DEE:: @ 8158DEE
@@ -490,34 +490,34 @@ LilycoveCity_ContestLobby_EventScript_158DEE:: @ 8158DEE
LilycoveCity_ContestLobby_EventScript_158E0B:: @ 8158E0B
lockall
- message2 LilycoveCity_ContestLobby_Text_1888C6
- waittext
- pause 20
- closebutton
- move 2, LilycoveCity_ContestLobby_Movement_158E9C
- waitmove 0
- playsfx 71
+ messageautoscroll LilycoveCity_ContestLobby_Text_1888C6
+ waitmessage
+ delay 20
+ closemessage
+ applymovement 2, LilycoveCity_ContestLobby_Movement_158E9C
+ waitmovement 0
+ playse 71
setmaptile 9, 2, 545, 1
setmaptile 9, 3, 609, 1
special DrawWholeMapView
- move 2, LilycoveCity_ContestLobby_Movement_158EA0
- waitmove 0
- playsfx 71
+ applymovement 2, LilycoveCity_ContestLobby_Movement_158EA0
+ waitmovement 0
+ playse 71
setmaptile 9, 2, 721, 1
setmaptile 9, 3, 729, 1
special DrawWholeMapView
- pause 20
- move 2, LilycoveCity_ContestLobby_Movement_158EAE
- waitmove 0
- move 255, LilycoveCity_ContestLobby_Movement_158E99
- waitmove 0
- message2 LilycoveCity_ContestLobby_Text_1A6832
- waittext
- pause 20
- closebutton
- move 2, LilycoveCity_ContestLobby_Movement_158EA4
- move 255, LilycoveCity_ContestLobby_Movement_158E8E
- waitmove 0
+ delay 20
+ applymovement 2, LilycoveCity_ContestLobby_Movement_158EAE
+ waitmovement 0
+ applymovement 255, LilycoveCity_ContestLobby_Movement_158E99
+ waitmovement 0
+ messageautoscroll LilycoveCity_ContestLobby_Text_1A6832
+ waitmessage
+ delay 20
+ closemessage
+ applymovement 2, LilycoveCity_ContestLobby_Movement_158EA4
+ applymovement 255, LilycoveCity_ContestLobby_Movement_158E8E
+ waitmovement 0
releaseall
return
@@ -568,9 +568,9 @@ LilycoveCity_ContestLobby_Movement_158EAE:: @ 8158EAE
step_end
LilycoveCity_ContestLobby_EventScript_158EB0:: @ 8158EB0
- specialval RESULT, sub_80C5044
+ specialvar RESULT, sub_80C5044
compare RESULT, 1
- jumpeq LilycoveCity_ContestLobby_EventScript_158EE8
+ goto_if_eq LilycoveCity_ContestLobby_EventScript_158EE8
setvar 0x800b, 8
setvar CONTEST_RANK, 3
call LilycoveCity_ContestLobby_EventScript_1A4E92
@@ -602,59 +602,59 @@ LilycoveCity_ContestLobby_EventScript_158F08:: @ 8158F08
return
LilycoveCity_ContestLobby_EventScript_158F45:: @ 8158F45
- warp3 LinkContestRoom4, 255, 7, 5
+ setwarp LinkContestRoom4, 255, 7, 5
special sub_8081334
waitstate
return
LilycoveCity_ContestLobby_EventScript_158F52:: @ 8158F52
- warp3 LinkContestRoom2, 255, 7, 5
+ setwarp LinkContestRoom2, 255, 7, 5
special sub_8081334
waitstate
return
LilycoveCity_ContestLobby_EventScript_158F5F:: @ 8158F5F
- warp3 LinkContestRoom6, 255, 7, 5
+ setwarp LinkContestRoom6, 255, 7, 5
special sub_8081334
waitstate
return
LilycoveCity_ContestLobby_EventScript_158F6C:: @ 8158F6C
- warp3 LinkContestRoom5, 255, 7, 5
+ setwarp LinkContestRoom5, 255, 7, 5
special sub_8081334
waitstate
return
LilycoveCity_ContestLobby_EventScript_158F79:: @ 8158F79
- warp3 LinkContestRoom3, 255, 7, 5
+ setwarp LinkContestRoom3, 255, 7, 5
special sub_8081334
waitstate
return
LilycoveCity_ContestLobby_EventScript_158F86:: @ 8158F86
lockall
- move 1, LilycoveCity_ContestLobby_Movement_15900B
- waitmove 0
- playsfx 71
+ applymovement 1, LilycoveCity_ContestLobby_Movement_15900B
+ waitmovement 0
+ playse 71
setmaptile 4, 2, 545, 1
setmaptile 4, 3, 609, 1
special DrawWholeMapView
- move 1, LilycoveCity_ContestLobby_Movement_15900F
- waitmove 0
- playsfx 71
+ applymovement 1, LilycoveCity_ContestLobby_Movement_15900F
+ waitmovement 0
+ playse 71
setmaptile 4, 2, 721, 1
setmaptile 4, 3, 729, 1
special DrawWholeMapView
- pause 20
- move 1, LilycoveCity_ContestLobby_Movement_15901C
- waitmove 0
- move 255, LilycoveCity_ContestLobby_Movement_159008
- waitmove 0
+ delay 20
+ applymovement 1, LilycoveCity_ContestLobby_Movement_15901C
+ waitmovement 0
+ applymovement 255, LilycoveCity_ContestLobby_Movement_159008
+ waitmovement 0
msgbox LilycoveCity_ContestLobby_Text_1A6832, 4
- closebutton
- move 1, LilycoveCity_ContestLobby_Movement_159013
- move 255, LilycoveCity_ContestLobby_Movement_158FFE
- waitmove 0
+ closemessage
+ applymovement 1, LilycoveCity_ContestLobby_Movement_159013
+ applymovement 255, LilycoveCity_ContestLobby_Movement_158FFE
+ waitmovement 0
releaseall
return
@@ -708,7 +708,7 @@ LilycoveCity_ContestLobby_EventScript_15901E:: @ 815901E
LilycoveCity_ContestLobby_EventScript_159027:: @ 8159027
checkflag 150
- jumpif 0, LilycoveCity_ContestLobby_EventScript_159039
+ goto_if 0, LilycoveCity_ContestLobby_EventScript_159039
msgbox LilycoveCity_ContestLobby_Text_188DDA, 2
end
@@ -735,21 +735,21 @@ LilycoveCity_ContestLobby_EventScript_15905D:: @ 815905D
LilycoveCity_ContestLobby_EventScript_159066:: @ 8159066
lockall
fadescreen 1
- showcontestwinner 6
+ drawcontestwinner 6
releaseall
end
LilycoveCity_ContestLobby_EventScript_15906D:: @ 815906D
lockall
fadescreen 1
- showcontestwinner 7
+ drawcontestwinner 7
releaseall
end
LilycoveCity_ContestLobby_EventScript_159074:: @ 8159074
lockall
fadescreen 1
- showcontestwinner 8
+ drawcontestwinner 8
releaseall
end
@@ -766,6 +766,6 @@ SlateportCity_ContestLobby_EventScript_15908D:: @ 815908D
lockall
special ShowBerryBlenderRecordWindow
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
diff --git a/data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc b/data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc
index 95945a595..7b602b2c7 100644
--- a/data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc
+++ b/data/scripts/maps/LilycoveCity_CoveLilyMotel_1F.inc
@@ -4,57 +4,57 @@ LilycoveCity_CoveLilyMotel_1F_MapScripts:: @ 81582C4
LilycoveCity_CoveLilyMotel_1F_EventScript_1582C5:: @ 81582C5
lockall
checkflag 2052
- jumpeq LilycoveCity_CoveLilyMotel_1F_EventScript_158326
+ goto_if_eq LilycoveCity_CoveLilyMotel_1F_EventScript_158326
checkflag 2061
- jumpeq LilycoveCity_CoveLilyMotel_1F_EventScript_1582FF
+ goto_if_eq LilycoveCity_CoveLilyMotel_1F_EventScript_1582FF
msgbox LilycoveCity_CoveLilyMotel_1F_Text_186B71, 4
- move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839
- waitmove 0
+ applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839
+ waitmovement 0
msgbox LilycoveCity_CoveLilyMotel_1F_Text_186C2B, 4
- closebutton
- move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_CoveLilyMotel_1F_EventScript_1582FF:: @ 81582FF
msgbox LilycoveCity_CoveLilyMotel_1F_Text_186CCE, 4
- move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839
- waitmove 0
+ applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839
+ waitmovement 0
msgbox LilycoveCity_CoveLilyMotel_1F_Text_186D7F, 4
- closebutton
- move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_CoveLilyMotel_1F_EventScript_158326:: @ 8158326
msgbox LilycoveCity_CoveLilyMotel_1F_Text_186E57, 4
- move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839
- waitmove 0
+ applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0839
+ waitmovement 0
msgbox LilycoveCity_CoveLilyMotel_1F_Text_186F09, 4
- closebutton
- move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A083D
+ waitmovement 0
releaseall
end
LilycoveCity_CoveLilyMotel_1F_EventScript_15834D:: @ 815834D
lockall
- playsfx 21
- move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0833
- waitmove 0
- move 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0835
- waitmove 0
- move 255, LilycoveCity_CoveLilyMotel_1F_Movement_1A0845
- waitmove 0
+ playse 21
+ applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0833
+ waitmovement 0
+ applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_1A0835
+ waitmovement 0
+ applymovement 255, LilycoveCity_CoveLilyMotel_1F_Movement_1A0845
+ waitmovement 0
msgbox LilycoveCity_CoveLilyMotel_1F_Text_186CA6, 4
- closebutton
- move 255, LilycoveCity_CoveLilyMotel_1F_Movement_158395
- move 1, LilycoveCity_CoveLilyMotel_1F_Movement_15839A
- waitmove 0
- move 1, LilycoveCity_CoveLilyMotel_1F_Movement_15839C
- waitmove 0
+ closemessage
+ applymovement 255, LilycoveCity_CoveLilyMotel_1F_Movement_158395
+ applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_15839A
+ waitmovement 0
+ applymovement 1, LilycoveCity_CoveLilyMotel_1F_Movement_15839C
+ waitmovement 0
release
end
diff --git a/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc b/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc
index dcf74b77c..fd9ea8a58 100644
--- a/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc
+++ b/data/scripts/maps/LilycoveCity_CoveLilyMotel_2F.inc
@@ -5,12 +5,12 @@ LilycoveCity_CoveLilyMotel_2F_EventScript_1583A1:: @ 81583A1
lock
faceplayer
checkflag 2
- callif 0, LilycoveCity_CoveLilyMotel_2F_EventScript_1583C7
+ call_if 0, LilycoveCity_CoveLilyMotel_2F_EventScript_1583C7
checkflag 2
- callif 1, LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD
- specialval RESULT, sub_8090FC0
+ call_if 1, LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD
+ specialvar RESULT, sub_8090FC0
compare RESULT, 1
- jumpeq LilycoveCity_CoveLilyMotel_2F_EventScript_1583D0
+ goto_if_eq LilycoveCity_CoveLilyMotel_2F_EventScript_1583D0
release
end
@@ -20,16 +20,16 @@ LilycoveCity_CoveLilyMotel_2F_EventScript_1583C7:: @ 81583C7
LilycoveCity_CoveLilyMotel_2F_EventScript_1583D0:: @ 81583D0
setflag 2
- fanfare 370
+ playfanfare 370
waitfanfare
- jump LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD
+ goto LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD
end
LilycoveCity_CoveLilyMotel_2F_EventScript_1583DD:: @ 81583DD
message LilycoveCity_CoveLilyMotel_2F_Text_18708F
- waittext
+ waitmessage
call LilycoveCity_CoveLilyMotel_2F_EventScript_1A02C5
- special sub_810D6A4
+ special ScrSpecial_ShowDiploma
waitstate
release
end
diff --git a/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc b/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc
index 74b746633..9d04d2e33 100644
--- a/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc
+++ b/data/scripts/maps/LilycoveCity_DepartmentStoreElevator.inc
@@ -5,11 +5,11 @@ LilycoveCity_DepartmentStoreElevator_EventScript_15A39C:: @ 815A39C
lock
faceplayer
checkflag 2
- callif 0, LilycoveCity_DepartmentStoreElevator_EventScript_15A4CF
+ call_if 0, LilycoveCity_DepartmentStoreElevator_EventScript_15A4CF
copyvar 0x8005, 0x4043
special sub_810E944
message LilycoveCity_DepartmentStoreElevator_Text_1A0EF6
- waittext
+ waitmessage
multichoice 0, 0, 57, 0
switch RESULT
case 0, LilycoveCity_DepartmentStoreElevator_EventScript_15A402
@@ -21,59 +21,59 @@ LilycoveCity_DepartmentStoreElevator_EventScript_15A39C:: @ 815A39C
end
LilycoveCity_DepartmentStoreElevator_EventScript_15A402:: @ 815A402
- warpplace LilycoveCity_DepartmentStore_1F, 255, 2, 1
+ setdynamicwarp LilycoveCity_DepartmentStore_1F, 255, 2, 1
compare 0x4043, 0
- jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
+ goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8
setvar 0x4043, 0
- jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
+ goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
end
LilycoveCity_DepartmentStoreElevator_EventScript_15A425:: @ 815A425
- warpplace LilycoveCity_DepartmentStore_2F, 255, 2, 1
+ setdynamicwarp LilycoveCity_DepartmentStore_2F, 255, 2, 1
compare 0x4043, 1
- jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
+ goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8
setvar 0x4043, 1
- jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
+ goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
end
LilycoveCity_DepartmentStoreElevator_EventScript_15A448:: @ 815A448
- warpplace LilycoveCity_DepartmentStore_3F, 255, 2, 1
+ setdynamicwarp LilycoveCity_DepartmentStore_3F, 255, 2, 1
compare 0x4043, 2
- jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
+ goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8
setvar 0x4043, 2
- jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
+ goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
end
LilycoveCity_DepartmentStoreElevator_EventScript_15A46B:: @ 815A46B
- warpplace LilycoveCity_DepartmentStore_4F, 255, 2, 1
+ setdynamicwarp LilycoveCity_DepartmentStore_4F, 255, 2, 1
compare 0x4043, 3
- jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
+ goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8
setvar 0x4043, 3
- jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
+ goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
end
LilycoveCity_DepartmentStoreElevator_EventScript_15A48E:: @ 815A48E
- warpplace LilycoveCity_DepartmentStore_5F, 255, 2, 1
+ setdynamicwarp LilycoveCity_DepartmentStore_5F, 255, 2, 1
compare 0x4043, 4
- jumpeq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
+ goto_if_eq LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
call LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8
setvar 0x4043, 4
- jump LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
+ goto LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1
end
LilycoveCity_DepartmentStoreElevator_EventScript_15A4B1:: @ 815A4B1
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
release
end
LilycoveCity_DepartmentStoreElevator_EventScript_15A4B8:: @ 815A4B8
- hidebox 0, 0, 29, 19
- move LAST_TALKED, LilycoveCity_DepartmentStoreElevator_Movement_1A0845
- waitmove 0
+ erasebox 0, 0, 29, 19
+ applymovement LAST_TALKED, LilycoveCity_DepartmentStoreElevator_Movement_1A0845
+ waitmovement 0
special sub_810EBEC
waitstate
setflag 2
diff --git a/data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc b/data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc
index f84c84201..29914a9b5 100644
--- a/data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc
+++ b/data/scripts/maps/LilycoveCity_DepartmentStoreRooftop.inc
@@ -3,11 +3,11 @@ LilycoveCity_DepartmentStoreRooftop_MapScripts:: @ 815A13F
.byte 0
LilycoveCity_DepartmentStoreRooftop_MapScript1_15A145:: @ 815A145
- event_96 3
+ getpricereduction 3
compare RESULT, 1
- callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A15F
+ call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A15F
compare RESULT, 0
- callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A163
+ call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A163
end
LilycoveCity_DepartmentStoreRooftop_EventScript_15A15F:: @ 815A15F
@@ -22,7 +22,7 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_15A167:: @ 815A167
lock
faceplayer
message LilycoveCity_DepartmentStoreRooftop_Text_1A0BE4
- waittext
+ waitmessage
pokemartdecor LilycoveCity_DepartmentStoreRooftop_Decorations
msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C02, 4
release
@@ -51,9 +51,9 @@ LilycoveCity_DepartmentStoreRooftop_Decorations:: @ 815A180
LilycoveCity_DepartmentStoreRooftop_EventScript_15A1A0:: @ 815A1A0
lock
faceplayer
- event_96 3
+ getpricereduction 3
compare RESULT, 1
- callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A1BA
+ call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A1BA
msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C61F, 4
release
end
@@ -70,10 +70,10 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_15A1C4:: @ 815A1C4
LilycoveCity_DepartmentStoreRooftop_EventScript_15A1CD:: @ 815A1CD
lockall
message LilycoveCity_DepartmentStoreRooftop_Text_18C72B
- waittext
- showmoney 0, 0
- snop
- jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE
+ waitmessage
+ showmoneybox 0, 0
+ nop
+ goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE
end
LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE:: @ 815A1DE
@@ -84,22 +84,22 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE:: @ 815A1DE
case 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A227
case 2, LilycoveCity_DepartmentStoreRooftop_EventScript_15A232
msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C7C3, 4
- jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A396
+ goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A396
end
LilycoveCity_DepartmentStoreRooftop_EventScript_15A21C:: @ 815A21C
setvar 0x4000, 26
- jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A267
+ goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A267
end
LilycoveCity_DepartmentStoreRooftop_EventScript_15A227:: @ 815A227
setvar 0x4000, 27
- jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A267
+ goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A267
end
LilycoveCity_DepartmentStoreRooftop_EventScript_15A232:: @ 815A232
setvar 0x4000, 28
- jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A267
+ goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A267
end
LilycoveCity_DepartmentStoreRooftop_EventScript_15A23D:: @ 815A23D
@@ -115,88 +115,88 @@ LilycoveCity_DepartmentStoreRooftop_EventScript_15A24B:: @ 815A24B
return
LilycoveCity_DepartmentStoreRooftop_EventScript_15A252:: @ 815A252
- paymoney 0xc8, 0
+ takemoney 0xc8, 0
return
LilycoveCity_DepartmentStoreRooftop_EventScript_15A259:: @ 815A259
- paymoney 0x12c, 0
+ takemoney 0x12c, 0
return
LilycoveCity_DepartmentStoreRooftop_EventScript_15A260:: @ 815A260
- paymoney 0x15e, 0
+ takemoney 0x15e, 0
return
LilycoveCity_DepartmentStoreRooftop_EventScript_15A267:: @ 815A267
compare 0x4001, 0
- callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A23D
+ call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A23D
compare 0x4001, 1
- callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A244
+ call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A244
compare 0x4001, 2
- callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A24B
+ call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A24B
compare RESULT, 0
- jumpeq LilycoveCity_DepartmentStoreRooftop_EventScript_15A37A
+ goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_15A37A
checkitemspace 0x4000, 1
compare RESULT, 0
- jumpeq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388
+ goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388
compare 0x4001, 0
- callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A252
+ call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A252
compare 0x4001, 1
- callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A259
+ call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A259
compare 0x4001, 2
- callif 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A260
- updatemoney 0, 0
- snop
- bufferitem 0, 0x4000
- playsfx 106
+ call_if 1, LilycoveCity_DepartmentStoreRooftop_EventScript_15A260
+ updatemoneybox 0, 0
+ nop
+ getitemname 0, 0x4000
+ playse 106
msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C75F, 4
additem 0x4000, 1
- bufferitem 1, 0x4000
- bufferstd 2, 14
+ getitemname 1, 0x4000
+ getstdstring 2, 14
msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C8C, 4
random 64
compare RESULT, 0
- jumpif 5, LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E
+ goto_if 5, LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E
checkitemspace 0x4000, 1
compare RESULT, 0
- jumpeq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388
- playsfx 106
+ goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388
+ playse 106
msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C780, 4
additem 0x4000, 1
- bufferitem 1, 0x4000
- bufferstd 2, 14
+ getitemname 1, 0x4000
+ getstdstring 2, 14
msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C8C, 4
random 64
compare RESULT, 0
- jumpif 5, LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E
+ goto_if 5, LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E
checkitemspace 0x4000, 1
compare RESULT, 0
- jumpeq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388
- playsfx 106
+ goto_if_eq LilycoveCity_DepartmentStoreRooftop_EventScript_15A388
+ playse 106
msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C780, 4
additem 0x4000, 1
- bufferitem 1, 0x4000
- bufferstd 2, 14
+ getitemname 1, 0x4000
+ getstdstring 2, 14
msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C8C, 4
- jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E
+ goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E
end
LilycoveCity_DepartmentStoreRooftop_EventScript_15A36E:: @ 815A36E
message LilycoveCity_DepartmentStoreRooftop_Text_18C72B
- waittext
- jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE
+ waitmessage
+ goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A1DE
end
LilycoveCity_DepartmentStoreRooftop_EventScript_15A37A:: @ 815A37A
msgbox LilycoveCity_DepartmentStoreRooftop_Text_18C7AF, 4
- jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A396
+ goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A396
end
LilycoveCity_DepartmentStoreRooftop_EventScript_15A388:: @ 815A388
msgbox LilycoveCity_DepartmentStoreRooftop_Text_1A0C79, 4
- jump LilycoveCity_DepartmentStoreRooftop_EventScript_15A396
+ goto LilycoveCity_DepartmentStoreRooftop_EventScript_15A396
end
LilycoveCity_DepartmentStoreRooftop_EventScript_15A396:: @ 815A396
- hidemoney 0, 0
+ hidemoneybox 0, 0
releaseall
end
diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc
index feff49c42..7acd29523 100644
--- a/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc
+++ b/data/scripts/maps/LilycoveCity_DepartmentStore_1F.inc
@@ -8,51 +8,51 @@ LilycoveCity_DepartmentStore_1F_EventScript_159D55:: @ 8159D55
LilycoveCity_DepartmentStore_1F_EventScript_159D5E:: @ 8159D5E
lock
faceplayer
- checkdailyflags
+ dodailyevents
compare 0x4045, 0
- jumpif 5, LilycoveCity_DepartmentStore_1F_EventScript_159EB1
+ goto_if 5, LilycoveCity_DepartmentStore_1F_EventScript_159EB1
checkflag 2250
- jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159E4C
+ goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159E4C
msgbox LilycoveCity_DepartmentStore_1F_Text_1C4B5E, 5
compare RESULT, 0
- jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159E56
+ goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159E56
setflag 2250
message LilycoveCity_DepartmentStore_1F_Text_1C4CC6
- waittext
+ waitmessage
special RetrieveLotteryNumber
copyvar 0x8008, RESULT
special sub_810F9AC
msgbox LilycoveCity_DepartmentStore_1F_Text_1C4CF6, 4
- move 2, LilycoveCity_DepartmentStore_1F_Movement_1A0843
- waitmove 0
- playsfx 4
+ applymovement 2, LilycoveCity_DepartmentStore_1F_Movement_1A0843
+ waitmovement 0
+ playse 4
special DoLotteryCornerComputerEffect
special PickLotteryCornerTicket
- pause 220
+ delay 220
special EndLotteryCornerComputerEffect
- pause 10
- move 2, LilycoveCity_DepartmentStore_1F_Movement_1A0839
- waitmove 0
+ delay 10
+ applymovement 2, LilycoveCity_DepartmentStore_1F_Movement_1A0839
+ waitmovement 0
compare 0x8004, 0
- jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159E60
- inccounter GAME_STAT_WON_POKEMON_LOTTERY
+ goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159E60
+ incrementgamestat GAME_STAT_WON_POKEMON_LOTTERY
compare 0x8006, 0
- callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E3A
+ call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E3A
compare 0x8006, 1
- callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E43
- bufferitem 0, 0x8005
+ call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E43
+ getitemname 0, 0x8005
compare 0x8004, 1
- callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E78
+ call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E78
compare 0x8004, 2
- callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E81
+ call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E81
compare 0x8004, 3
- callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E8A
+ call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E8A
compare 0x8004, 4
- callif 1, LilycoveCity_DepartmentStore_1F_EventScript_159E93
+ call_if 1, LilycoveCity_DepartmentStore_1F_EventScript_159E93
giveitem 0x8005
compare RESULT, 0
- jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159E9C
- jump LilycoveCity_DepartmentStore_1F_EventScript_159E6E
+ goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159E9C
+ goto LilycoveCity_DepartmentStore_1F_EventScript_159E6E
end
LilycoveCity_DepartmentStore_1F_EventScript_159E3A:: @ 8159E3A
@@ -75,7 +75,7 @@ LilycoveCity_DepartmentStore_1F_EventScript_159E56:: @ 8159E56
LilycoveCity_DepartmentStore_1F_EventScript_159E60:: @ 8159E60
msgbox LilycoveCity_DepartmentStore_1F_Text_1C4E27, 4
- jump LilycoveCity_DepartmentStore_1F_EventScript_159E6E
+ goto LilycoveCity_DepartmentStore_1F_EventScript_159E6E
end
LilycoveCity_DepartmentStore_1F_EventScript_159E6E:: @ 8159E6E
@@ -101,7 +101,7 @@ LilycoveCity_DepartmentStore_1F_EventScript_159E93:: @ 8159E93
LilycoveCity_DepartmentStore_1F_EventScript_159E9C:: @ 8159E9C
copyvar 0x4045, 0x8005
- jump LilycoveCity_DepartmentStore_1F_EventScript_159EA7
+ goto LilycoveCity_DepartmentStore_1F_EventScript_159EA7
end
LilycoveCity_DepartmentStore_1F_EventScript_159EA7:: @ 8159EA7
@@ -113,7 +113,7 @@ LilycoveCity_DepartmentStore_1F_EventScript_159EB1:: @ 8159EB1
msgbox LilycoveCity_DepartmentStore_1F_Text_1C4FCC, 4
giveitem 0x4045
compare RESULT, 0
- jumpeq LilycoveCity_DepartmentStore_1F_EventScript_159EA7
+ goto_if_eq LilycoveCity_DepartmentStore_1F_EventScript_159EA7
setvar 0x4045, 0
release
end
@@ -133,8 +133,8 @@ LilycoveCity_DepartmentStore_1F_EventScript_159EE9:: @ 8159EE9
LilycoveCity_DepartmentStore_1F_EventScript_159EF2:: @ 8159EF2
lock
faceplayer
- checksound
- pokecry SPECIES_AZUMARILL, 0
+ waitse
+ playpokecry SPECIES_AZUMARILL, 0
msgbox LilycoveCity_DepartmentStore_1F_Text_18C0C3, 4
waitpokecry
release
diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc
index e54883714..25e981628 100644
--- a/data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc
+++ b/data/scripts/maps/LilycoveCity_DepartmentStore_2F.inc
@@ -17,7 +17,7 @@ LilycoveCity_DepartmentStore_2F_EventScript_159F2A:: @ 8159F2A
lock
faceplayer
message LilycoveCity_DepartmentStore_2F_Text_1A0BE4
- waittext
+ waitmessage
pokemart LilycoveCity_DepartmentStore_2F_Items1
msgbox LilycoveCity_DepartmentStore_2F_Text_1A0C02, 4
release
@@ -44,7 +44,7 @@ LilycoveCity_DepartmentStore_2F_EventScript_159F5E:: @ 8159F5E
lock
faceplayer
message LilycoveCity_DepartmentStore_2F_Text_1A0BE4
- waittext
+ waitmessage
pokemart LilycoveCity_DepartmentStore_2F_Items2
msgbox LilycoveCity_DepartmentStore_2F_Text_1A0C02, 4
release
diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc
index e669cef7f..1f55f5018 100644
--- a/data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc
+++ b/data/scripts/maps/LilycoveCity_DepartmentStore_3F.inc
@@ -5,7 +5,7 @@ LilycoveCity_DepartmentStore_3F_EventScript_159F91:: @ 8159F91
lock
faceplayer
message LilycoveCity_DepartmentStore_3F_Text_1A0BE4
- waittext
+ waitmessage
pokemart LilycoveCity_DepartmentStore_3F_Items1
msgbox LilycoveCity_DepartmentStore_3F_Text_1A0C02, 4
release
@@ -27,7 +27,7 @@ LilycoveCity_DepartmentStore_3F_EventScript_159FB8:: @ 8159FB8
lock
faceplayer
message LilycoveCity_DepartmentStore_3F_Text_1A0BE4
- waittext
+ waitmessage
pokemart LilycoveCity_DepartmentStore_3F_Items2
msgbox LilycoveCity_DepartmentStore_3F_Text_1A0C02, 4
release
diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc
index 994b3b63f..d922d9181 100644
--- a/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc
+++ b/data/scripts/maps/LilycoveCity_DepartmentStore_4F.inc
@@ -17,7 +17,7 @@ LilycoveCity_DepartmentStore_4F_EventScript_15A019:: @ 815A019
lock
faceplayer
message LilycoveCity_DepartmentStore_4F_Text_1A0BE4
- waittext
+ waitmessage
pokemart LilycoveCity_DepartmentStore_4F_Items1
msgbox LilycoveCity_DepartmentStore_4F_Text_1A0C02, 4
release
@@ -37,7 +37,7 @@ LilycoveCity_DepartmentStore_4F_EventScript_15A03C:: @ 815A03C
lock
faceplayer
message LilycoveCity_DepartmentStore_4F_Text_1A0BE4
- waittext
+ waitmessage
pokemart LilycoveCity_DepartmentStore_4F_Items2
msgbox LilycoveCity_DepartmentStore_4F_Text_1A0C02, 4
release
diff --git a/data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc b/data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc
index 0bef8866a..835a0f48d 100644
--- a/data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc
+++ b/data/scripts/maps/LilycoveCity_DepartmentStore_5F.inc
@@ -5,7 +5,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_15A061:: @ 815A061
lock
faceplayer
message LilycoveCity_DepartmentStore_5F_Text_1A0BE4
- waittext
+ waitmessage
pokemartbp LilycoveCity_DepartmentStore_5F_Items1
msgbox LilycoveCity_DepartmentStore_5F_Text_1A0C02, 4
release
@@ -33,7 +33,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_15A094:: @ 815A094
lock
faceplayer
message LilycoveCity_DepartmentStore_5F_Text_1A0BE4
- waittext
+ waitmessage
pokemartbp LilycoveCity_DepartmentStore_5F_Items2
msgbox LilycoveCity_DepartmentStore_5F_Text_1A0C02, 4
release
@@ -58,7 +58,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_15A0C2:: @ 815A0C2
lock
faceplayer
message LilycoveCity_DepartmentStore_5F_Text_1A0BE4
- waittext
+ waitmessage
pokemartbp LilycoveCity_DepartmentStore_5F_Items3
msgbox LilycoveCity_DepartmentStore_5F_Text_1A0C02, 4
release
@@ -83,7 +83,7 @@ LilycoveCity_DepartmentStore_5F_EventScript_15A0F2:: @ 815A0F2
lock
faceplayer
message LilycoveCity_DepartmentStore_5F_Text_1A0BE4
- waittext
+ waitmessage
pokemartbp LilycoveCity_DepartmentStore_5F_Items4
msgbox LilycoveCity_DepartmentStore_5F_Text_1A0C02, 4
release
diff --git a/data/scripts/maps/LilycoveCity_Harbor.inc b/data/scripts/maps/LilycoveCity_Harbor.inc
index f8ff8f9f3..7e14db994 100644
--- a/data/scripts/maps/LilycoveCity_Harbor.inc
+++ b/data/scripts/maps/LilycoveCity_Harbor.inc
@@ -3,7 +3,7 @@ LilycoveCity_Harbor_MapScripts:: @ 8159893
.byte 0
LilycoveCity_Harbor_MapScript1_159899:: @ 8159899
- warp6 LilycoveCity, 255, 12, 33
+ setescapewarp LilycoveCity, 255, 12, 33
end
LilycoveCity_Harbor_EventScript_1598A2:: @ 81598A2
@@ -11,13 +11,13 @@ LilycoveCity_Harbor_EventScript_1598A2:: @ 81598A2
faceplayer
checkitem ITEM_EON_TICKET, 1
compare RESULT, 1
- jumpeq LilycoveCity_Harbor_EventScript_1599EE
- jump LilycoveCity_Harbor_EventScript_1598BA
+ goto_if_eq LilycoveCity_Harbor_EventScript_1599EE
+ goto LilycoveCity_Harbor_EventScript_1598BA
end
LilycoveCity_Harbor_EventScript_1598BA:: @ 81598BA
checkflag 2052
- jumpeq LilycoveCity_Harbor_EventScript_1598CD
+ goto_if_eq LilycoveCity_Harbor_EventScript_1598CD
msgbox LilycoveCity_Harbor_Text_18B306, 4
release
end
@@ -26,14 +26,14 @@ LilycoveCity_Harbor_EventScript_1598CD:: @ 81598CD
msgbox LilycoveCity_Harbor_Text_18B36F, 4
checkitem ITEM_SS_TICKET, 1
compare RESULT, 0
- jumpeq LilycoveCity_Harbor_EventScript_159929
+ goto_if_eq LilycoveCity_Harbor_EventScript_159929
message LilycoveCity_Harbor_Text_18B406
- waittext
- jump LilycoveCity_Harbor_EventScript_1598F1
+ waitmessage
+ goto LilycoveCity_Harbor_EventScript_1598F1
end
LilycoveCity_Harbor_EventScript_1598F1:: @ 81598F1
- multichoicedef 18, 6, 56, 2, 0
+ multichoicedefault 18, 6, 56, 2, 0
switch RESULT
case 0, LilycoveCity_Harbor_EventScript_159933
case 1, LilycoveCity_Harbor_EventScript_15995B
@@ -49,7 +49,7 @@ LilycoveCity_Harbor_EventScript_159929:: @ 8159929
LilycoveCity_Harbor_EventScript_159933:: @ 8159933
msgbox LilycoveCity_Harbor_Text_18B47D, 5
compare RESULT, 0
- jumpeq LilycoveCity_Harbor_EventScript_15997E
+ goto_if_eq LilycoveCity_Harbor_EventScript_15997E
setvar 0x40b4, 5
call LilycoveCity_Harbor_EventScript_15998A
warp SSTidalCorridor, 255, 1, 10
@@ -60,7 +60,7 @@ LilycoveCity_Harbor_EventScript_159933:: @ 8159933
LilycoveCity_Harbor_EventScript_15995B:: @ 815995B
msgbox LilycoveCity_Harbor_Text_18B499, 5
compare RESULT, 0
- jumpeq LilycoveCity_Harbor_EventScript_15997E
+ goto_if_eq LilycoveCity_Harbor_EventScript_15997E
call LilycoveCity_Harbor_EventScript_15998A
warp BattleTower_Outside, 255, 19, 23
waitstate
@@ -69,35 +69,35 @@ LilycoveCity_Harbor_EventScript_15995B:: @ 815995B
LilycoveCity_Harbor_EventScript_15997E:: @ 815997E
message LilycoveCity_Harbor_Text_18B4E2
- waittext
- jump LilycoveCity_Harbor_EventScript_1598F1
+ waitmessage
+ goto LilycoveCity_Harbor_EventScript_1598F1
end
LilycoveCity_Harbor_EventScript_15998A:: @ 815998A
msgbox LilycoveCity_Harbor_Text_18B4B3, 4
- closebutton
- move LAST_TALKED, LilycoveCity_Harbor_Movement_1A0841
- waitmove 0
- pause 30
- spriteinvisible LAST_TALKED, 13, 10
+ closemessage
+ applymovement LAST_TALKED, LilycoveCity_Harbor_Movement_1A0841
+ waitmovement 0
+ delay 30
+ hideobject LAST_TALKED, 13, 10
compare FACING, 2
- callif 1, LilycoveCity_Harbor_EventScript_1599D9
+ call_if 1, LilycoveCity_Harbor_EventScript_1599D9
compare FACING, 4
- callif 1, LilycoveCity_Harbor_EventScript_1599CE
- pause 30
- spriteinvisible 255, 0, 0
+ call_if 1, LilycoveCity_Harbor_EventScript_1599CE
+ delay 30
+ hideobject 255, 0, 0
setvar 0x8004, 2
call LilycoveCity_Harbor_EventScript_1A040E
return
LilycoveCity_Harbor_EventScript_1599CE:: @ 81599CE
- move 255, LilycoveCity_Harbor_Movement_159A86
- waitmove 0
+ applymovement 255, LilycoveCity_Harbor_Movement_159A86
+ waitmovement 0
return
LilycoveCity_Harbor_EventScript_1599D9:: @ 81599D9
- move 255, LilycoveCity_Harbor_Movement_159A89
- waitmove 0
+ applymovement 255, LilycoveCity_Harbor_Movement_159A89
+ waitmovement 0
return
LilycoveCity_Harbor_EventScript_1599E4:: @ 81599E4
@@ -107,35 +107,35 @@ LilycoveCity_Harbor_EventScript_1599E4:: @ 81599E4
LilycoveCity_Harbor_EventScript_1599EE:: @ 81599EE
checkflag 2052
- jumpif 0, LilycoveCity_Harbor_EventScript_1598BA
+ goto_if 0, LilycoveCity_Harbor_EventScript_1598BA
checkflag 206
- jumpeq LilycoveCity_Harbor_EventScript_1598BA
+ goto_if_eq LilycoveCity_Harbor_EventScript_1598BA
checkflag 2131
- jumpif 0, LilycoveCity_Harbor_EventScript_1598BA
+ goto_if 0, LilycoveCity_Harbor_EventScript_1598BA
msgbox LilycoveCity_Harbor_Text_1C50F2, 4
- closebutton
- move LAST_TALKED, LilycoveCity_Harbor_Movement_1A0841
- waitmove 0
- pause 30
- spriteinvisible LAST_TALKED, 13, 10
- pause 60
- reappear 4
- pause 30
- move 4, LilycoveCity_Harbor_Movement_1A0839
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, LilycoveCity_Harbor_Movement_1A0841
+ waitmovement 0
+ delay 30
+ hideobject LAST_TALKED, 13, 10
+ delay 60
+ addobject 4
+ delay 30
+ applymovement 4, LilycoveCity_Harbor_Movement_1A0839
+ waitmovement 0
msgbox LilycoveCity_Harbor_Text_1C5120, 4
- closebutton
- move 4, LilycoveCity_Harbor_Movement_1A0841
- waitmove 0
- pause 30
- disappear 4
+ closemessage
+ applymovement 4, LilycoveCity_Harbor_Movement_1A0841
+ waitmovement 0
+ delay 30
+ removeobject 4
compare FACING, 2
- callif 1, LilycoveCity_Harbor_EventScript_1599D9
+ call_if 1, LilycoveCity_Harbor_EventScript_1599D9
compare FACING, 4
- callif 1, LilycoveCity_Harbor_EventScript_1599CE
- pause 30
- spriteinvisible 255, 0, 0
- special HealPlayerParty
+ call_if 1, LilycoveCity_Harbor_EventScript_1599CE
+ delay 30
+ hideobject 255, 0, 0
+ special ScrSpecial_HealPlayerParty
setvar 0x8004, 2
call LilycoveCity_Harbor_EventScript_1A040E
warp SouthernIsland_Exterior, 255, 13, 22
@@ -160,7 +160,7 @@ LilycoveCity_Harbor_EventScript_159A8D:: @ 8159A8D
lock
faceplayer
checkflag 2052
- jumpeq LilycoveCity_Harbor_EventScript_159AA2
+ goto_if_eq LilycoveCity_Harbor_EventScript_159AA2
msgbox LilycoveCity_Harbor_Text_18B504, 4
release
end
diff --git a/data/scripts/maps/LilycoveCity_House1.inc b/data/scripts/maps/LilycoveCity_House1.inc
index 3dae362c1..4defe37b8 100644
--- a/data/scripts/maps/LilycoveCity_House1.inc
+++ b/data/scripts/maps/LilycoveCity_House1.inc
@@ -8,8 +8,8 @@ LilycoveCity_House1_EventScript_159B86:: @ 8159B86
LilycoveCity_House1_EventScript_159B8F:: @ 8159B8F
lock
faceplayer
- checksound
- pokecry SPECIES_KECLEON, 0
+ waitse
+ playpokecry SPECIES_KECLEON, 0
msgbox LilycoveCity_House1_Text_18B82B, 4
waitpokecry
release
diff --git a/data/scripts/maps/LilycoveCity_House2.inc b/data/scripts/maps/LilycoveCity_House2.inc
index 75780667d..d3399f5ac 100644
--- a/data/scripts/maps/LilycoveCity_House2.inc
+++ b/data/scripts/maps/LilycoveCity_House2.inc
@@ -5,11 +5,11 @@ LilycoveCity_House2_EventScript_159BA3:: @ 8159BA3
lock
faceplayer
checkflag 234
- jumpeq LilycoveCity_House2_EventScript_159BDA
+ goto_if_eq LilycoveCity_House2_EventScript_159BDA
msgbox LilycoveCity_House2_Text_18B83C, 4
giveitem ITEM_TM44
compare RESULT, 0
- jumpeq LilycoveCity_House2_EventScript_1A029B
+ goto_if_eq LilycoveCity_House2_EventScript_1A029B
setflag 234
msgbox LilycoveCity_House2_Text_18B883, 4
release
diff --git a/data/scripts/maps/LilycoveCity_House3.inc b/data/scripts/maps/LilycoveCity_House3.inc
index 51e4988b3..f700eed9d 100644
--- a/data/scripts/maps/LilycoveCity_House3.inc
+++ b/data/scripts/maps/LilycoveCity_House3.inc
@@ -12,19 +12,19 @@ LilycoveCity_House3_EventScript_159BF3:: @ 8159BF3
faceplayer
msgbox LilycoveCity_House3_Text_18B8CC, 5
compare RESULT, 0
- jumpeq LilycoveCity_House3_EventScript_159C1D
+ goto_if_eq LilycoveCity_House3_EventScript_159C1D
msgbox LilycoveCity_House3_Text_18BA2B, 4
- closebutton
- move LAST_TALKED, LilycoveCity_House3_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, LilycoveCity_House3_Movement_1A083D
+ waitmovement 0
release
end
LilycoveCity_House3_EventScript_159C1D:: @ 8159C1D
msgbox LilycoveCity_House3_Text_18B9DC, 4
- closebutton
- move LAST_TALKED, LilycoveCity_House3_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, LilycoveCity_House3_Movement_1A083D
+ waitmovement 0
release
end
@@ -32,9 +32,9 @@ LilycoveCity_House3_EventScript_159C32:: @ 8159C32
lock
faceplayer
msgbox LilycoveCity_House3_Text_18BD64, 4
- closebutton
- move LAST_TALKED, LilycoveCity_House3_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, LilycoveCity_House3_Movement_1A083D
+ waitmovement 0
release
end
diff --git a/data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc b/data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc
index a481f9c32..06e82d5f8 100644
--- a/data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc
+++ b/data/scripts/maps/LilycoveCity_LilycoveMuseum_1F.inc
@@ -7,14 +7,14 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_15841C:: @ 815841C
LilycoveCity_LilycoveMuseum_1F_EventScript_158425:: @ 8158425
lockall
- move 2, LilycoveCity_LilycoveMuseum_1F_Movement_1A0839
+ applymovement 2, LilycoveCity_LilycoveMuseum_1F_Movement_1A0839
message LilycoveCity_LilycoveMuseum_1F_Text_1873B9
- waittext
+ waitmessage
multichoice 20, 8, 16, 1
compare RESULT, 0
- jumpeq LilycoveCity_LilycoveMuseum_1F_EventScript_158458
+ goto_if_eq LilycoveCity_LilycoveMuseum_1F_EventScript_158458
compare RESULT, 1
- jumpeq LilycoveCity_LilycoveMuseum_1F_EventScript_15844F
+ goto_if_eq LilycoveCity_LilycoveMuseum_1F_EventScript_15844F
end
LilycoveCity_LilycoveMuseum_1F_EventScript_15844F:: @ 815844F
@@ -24,9 +24,9 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_15844F:: @ 815844F
LilycoveCity_LilycoveMuseum_1F_EventScript_158458:: @ 8158458
msgbox LilycoveCity_LilycoveMuseum_1F_Text_187495, 5
compare RESULT, 0
- jumpeq LilycoveCity_LilycoveMuseum_1F_EventScript_158477
+ goto_if_eq LilycoveCity_LilycoveMuseum_1F_EventScript_158477
compare RESULT, 1
- jumpeq LilycoveCity_LilycoveMuseum_1F_EventScript_158481
+ goto_if_eq LilycoveCity_LilycoveMuseum_1F_EventScript_158481
end
LilycoveCity_LilycoveMuseum_1F_EventScript_158477:: @ 8158477
@@ -36,9 +36,9 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_158477:: @ 8158477
LilycoveCity_LilycoveMuseum_1F_EventScript_158481:: @ 8158481
msgbox LilycoveCity_LilycoveMuseum_1F_Text_187534, 3
- move 2, LilycoveCity_LilycoveMuseum_1F_Movement_1584FC
- waitmove 0
- disappear 2
+ applymovement 2, LilycoveCity_LilycoveMuseum_1F_Movement_1584FC
+ waitmovement 0
+ removeobject 2
switch FACING
case 2, LilycoveCity_LilycoveMuseum_1F_EventScript_1584BD
case 3, LilycoveCity_LilycoveMuseum_1F_EventScript_1584D2
@@ -47,24 +47,24 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_158481:: @ 8158481
LilycoveCity_LilycoveMuseum_1F_EventScript_1584BD:: @ 81584BD
lockall
- move 255, LilycoveCity_LilycoveMuseum_1F_Movement_158504
- waitmove 0
+ applymovement 255, LilycoveCity_LilycoveMuseum_1F_Movement_158504
+ waitmovement 0
warp LilycoveCity_LilycoveMuseum_2F, 255, 11, 8
waitstate
end
LilycoveCity_LilycoveMuseum_1F_EventScript_1584D2:: @ 81584D2
lockall
- move 255, LilycoveCity_LilycoveMuseum_1F_Movement_1584FE
- waitmove 0
+ applymovement 255, LilycoveCity_LilycoveMuseum_1F_Movement_1584FE
+ waitmovement 0
warp LilycoveCity_LilycoveMuseum_2F, 255, 11, 8
waitstate
end
LilycoveCity_LilycoveMuseum_1F_EventScript_1584E7:: @ 81584E7
lockall
- move 255, LilycoveCity_LilycoveMuseum_1F_Movement_158501
- waitmove 0
+ applymovement 255, LilycoveCity_LilycoveMuseum_1F_Movement_158501
+ waitmovement 0
warp LilycoveCity_LilycoveMuseum_2F, 255, 11, 8
waitstate
end
@@ -152,8 +152,8 @@ LilycoveCity_LilycoveMuseum_1F_EventScript_158585:: @ 8158585
LilycoveCity_LilycoveMuseum_1F_EventScript_15858E:: @ 815858E
msgbox LilycoveCity_LilycoveMuseum_1F_Text_187B04, 2
lockall
- move 8, LilycoveCity_LilycoveMuseum_1F_Movement_1A083D
- waitmove 0
+ applymovement 8, LilycoveCity_LilycoveMuseum_1F_Movement_1A083D
+ waitmovement 0
releaseall
end
diff --git a/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc b/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc
index b3564ebf5..a4599f14a 100644
--- a/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc
+++ b/data/scripts/maps/LilycoveCity_LilycoveMuseum_2F.inc
@@ -5,55 +5,55 @@ LilycoveCity_LilycoveMuseum_2F_MapScripts:: @ 81585AC
LilycoveCity_LilycoveMuseum_2F_MapScript1_1585B7:: @ 81585B7
checkflag 160
- jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_1585FD
- jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6
+ goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_1585FD
+ goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6
end
LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6:: @ 81585C6
checkflag 161
- jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158615
- jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5
+ goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158615
+ goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5
end
LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5:: @ 81585D5
checkflag 162
- jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15862D
- jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4
+ goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15862D
+ goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4
end
LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4:: @ 81585E4
checkflag 163
- jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158645
- jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3
+ goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158645
+ goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3
end
LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3:: @ 81585F3
checkflag 164
- jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15865D
+ goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15865D
end
LilycoveCity_LilycoveMuseum_2F_EventScript_1585FD:: @ 81585FD
setmaptile 10, 6, 606, 1
setmaptile 11, 6, 607, 1
- jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6
+ goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585C6
end
LilycoveCity_LilycoveMuseum_2F_EventScript_158615:: @ 8158615
setmaptile 18, 6, 604, 1
setmaptile 19, 6, 605, 1
- jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5
+ goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585D5
end
LilycoveCity_LilycoveMuseum_2F_EventScript_15862D:: @ 815862D
setmaptile 14, 10, 608, 1
setmaptile 15, 10, 609, 1
- jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4
+ goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585E4
end
LilycoveCity_LilycoveMuseum_2F_EventScript_158645:: @ 8158645
setmaptile 6, 10, 602, 1
setmaptile 7, 10, 603, 1
- jump LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3
+ goto LilycoveCity_LilycoveMuseum_2F_EventScript_1585F3
end
LilycoveCity_LilycoveMuseum_2F_EventScript_15865D:: @ 815865D
@@ -67,19 +67,19 @@ LilycoveCity_LilycoveMuseum_2F_MapScript2_158670:: @ 8158670
LilycoveCity_LilycoveMuseum_2F_EventScript_15867A:: @ 815867A
lockall
- move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839
- move 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D3
- waitmove 0
+ applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839
+ applymovement 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D3
+ waitmovement 0
msgbox LilycoveCity_LilycoveMuseum_2F_Text_187C42, 3
- move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5
- waitmove 0
- move 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5
- waitmove 0
+ applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5
+ waitmovement 0
+ applymovement 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5
+ waitmovement 0
msgbox LilycoveCity_LilycoveMuseum_2F_Text_187C64, 3
- move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839
- waitmove 0
- move 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D3
- waitmove 0
+ applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839
+ waitmovement 0
+ applymovement 255, LilycoveCity_LilycoveMuseum_2F_Movement_1586D3
+ waitmovement 0
msgbox LilycoveCity_LilycoveMuseum_2F_Text_187E1D, 3
copyvar 0x4094, 0x1
releaseall
@@ -97,8 +97,8 @@ LilycoveCity_LilycoveMuseum_2F_Movement_1586D5:: @ 81586D5
LilycoveCity_LilycoveMuseum_2F_EventScript_1586D8:: @ 81586D8
lockall
checkflag 236
- jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158793
- specialval 0x8004, sub_80C4D50
+ goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158793
+ specialvar 0x8004, sub_80C4D50
switch 0x8004
case 1, LilycoveCity_LilycoveMuseum_2F_EventScript_15872C
case 2, LilycoveCity_LilycoveMuseum_2F_EventScript_15872C
@@ -113,29 +113,29 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_15872C:: @ 815872C
end
LilycoveCity_LilycoveMuseum_2F_EventScript_158735:: @ 8158735
- move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839
- waitmove 0
+ applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839
+ waitmovement 0
msgbox LilycoveCity_LilycoveMuseum_2F_Text_18802F, 4
- move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5
+ applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1586D5
msgbox LilycoveCity_LilycoveMuseum_2F_Text_188041, 4
- jump LilycoveCity_LilycoveMuseum_2F_EventScript_15875C
+ goto LilycoveCity_LilycoveMuseum_2F_EventScript_15875C
end
LilycoveCity_LilycoveMuseum_2F_EventScript_15875C:: @ 815875C
- move 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839
+ applymovement 1, LilycoveCity_LilycoveMuseum_2F_Movement_1A0839
msgbox LilycoveCity_LilycoveMuseum_2F_Text_188120, 4
givedecoration 44
compare RESULT, 0
- jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158783
+ goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158783
setflag 236
- closebutton
+ closemessage
releaseall
end
LilycoveCity_LilycoveMuseum_2F_EventScript_158783:: @ 8158783
call LilycoveCity_LilycoveMuseum_2F_EventScript_1A02B8
msgbox LilycoveCity_LilycoveMuseum_2F_Text_188166, 4
- closebutton
+ closemessage
releaseall
end
@@ -147,35 +147,35 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_158793:: @ 8158793
LilycoveCity_LilycoveMuseum_2F_EventScript_15879D:: @ 815879D
lockall
checkflag 162
- jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15883C
+ goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15883C
msgbox LilycoveCity_LilycoveMuseum_2F_Text_188219, 3
end
LilycoveCity_LilycoveMuseum_2F_EventScript_1587B0:: @ 81587B0
lockall
checkflag 164
- jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158858
+ goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158858
msgbox LilycoveCity_LilycoveMuseum_2F_Text_18824C, 3
end
LilycoveCity_LilycoveMuseum_2F_EventScript_1587C3:: @ 81587C3
lockall
checkflag 160
- jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_158820
+ goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_158820
msgbox LilycoveCity_LilycoveMuseum_2F_Text_1882B4, 3
end
LilycoveCity_LilycoveMuseum_2F_EventScript_1587D6:: @ 81587D6
lockall
checkflag 161
- jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15882E
+ goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15882E
msgbox LilycoveCity_LilycoveMuseum_2F_Text_188281, 3
end
LilycoveCity_LilycoveMuseum_2F_EventScript_1587E9:: @ 81587E9
lockall
checkflag 163
- jumpeq LilycoveCity_LilycoveMuseum_2F_EventScript_15884A
+ goto_if_eq LilycoveCity_LilycoveMuseum_2F_EventScript_15884A
msgbox LilycoveCity_LilycoveMuseum_2F_Text_1882E6, 3
end
@@ -198,34 +198,34 @@ LilycoveCity_LilycoveMuseum_2F_EventScript_158817:: @ 8158817
LilycoveCity_LilycoveMuseum_2F_EventScript_158820:: @ 8158820
msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3
fadescreen 1
- showcontestwinner 9
+ drawcontestwinner 9
releaseall
end
LilycoveCity_LilycoveMuseum_2F_EventScript_15882E:: @ 815882E
msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3
fadescreen 1
- showcontestwinner 10
+ drawcontestwinner 10
releaseall
end
LilycoveCity_LilycoveMuseum_2F_EventScript_15883C:: @ 815883C
msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3
fadescreen 1
- showcontestwinner 11
+ drawcontestwinner 11
releaseall
end
LilycoveCity_LilycoveMuseum_2F_EventScript_15884A:: @ 815884A
msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3
fadescreen 1
- showcontestwinner 12
+ drawcontestwinner 12
releaseall
end
LilycoveCity_LilycoveMuseum_2F_EventScript_158858:: @ 8158858
msgbox LilycoveCity_LilycoveMuseum_2F_Text_18831A, 3
fadescreen 1
- showcontestwinner 13
+ drawcontestwinner 13
releaseall
end
diff --git a/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc b/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc
index 6adea2eb2..02558e9d3 100644
--- a/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc
+++ b/data/scripts/maps/LilycoveCity_MoveDeletersHouse.inc
@@ -3,8 +3,8 @@ LilycoveCity_MoveDeletersHouse_MapScripts:: @ 8159AAD
LilycoveCity_MoveDeletersHouse_EventScript_159AAE:: @ 8159AAE
lockall
- move 1, LilycoveCity_MoveDeletersHouse_Movement_1A0839
- waitmove 0
+ applymovement 1, LilycoveCity_MoveDeletersHouse_Movement_1A0839
+ waitmovement 0
msgbox LilycoveCity_MoveDeletersHouse_Text_18B622, 5
switch RESULT
case 1, LilycoveCity_MoveDeletersHouse_EventScript_159ADE
@@ -17,20 +17,20 @@ LilycoveCity_MoveDeletersHouse_EventScript_159ADE:: @ 8159ADE
special sub_80F9A0C
waitstate
compare 0x8004, 255
- jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B7B
+ goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_159B7B
special sub_80FA148
compare RESULT, 1
- jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B71
- special sub_80F9F3C
+ goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_159B71
+ special ScrSpecial_CountPokemonMoves
compare RESULT, 1
- jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159B64
+ goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_159B64
msgbox LilycoveCity_MoveDeletersHouse_Text_18B6B0, 4
fadescreen 1
special sub_80F9EEC
fadescreen 0
compare 0x8005, 4
- jumpeq LilycoveCity_MoveDeletersHouse_EventScript_159ADE
- special sub_80F9F84
+ goto_if_eq LilycoveCity_MoveDeletersHouse_EventScript_159ADE
+ special ScrSpecial_GetPokemonNicknameAndMoveName
msgbox LilycoveCity_MoveDeletersHouse_Text_18B6F2, 5
switch RESULT
case 1, LilycoveCity_MoveDeletersHouse_EventScript_159B53
@@ -40,14 +40,14 @@ LilycoveCity_MoveDeletersHouse_EventScript_159ADE:: @ 8159ADE
LilycoveCity_MoveDeletersHouse_EventScript_159B53:: @ 8159B53
special sub_80FA0DC
- fanfare 378
+ playfanfare 378
waitfanfare
msgbox LilycoveCity_MoveDeletersHouse_Text_18B71E, 4
releaseall
end
LilycoveCity_MoveDeletersHouse_EventScript_159B64:: @ 8159B64
- special sub_80F9F84
+ special ScrSpecial_GetPokemonNicknameAndMoveName
msgbox LilycoveCity_MoveDeletersHouse_Text_18B6D0, 4
releaseall
end
diff --git a/data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc b/data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc
index 5809e28c8..20b5c5f13 100644
--- a/data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc
+++ b/data/scripts/maps/LilycoveCity_PokemonCenter_1F.inc
@@ -9,7 +9,7 @@ LilycoveCity_PokemonCenter_1F_MapScript1_15932D:: @ 815932D
LilycoveCity_PokemonCenter_1F_EventScript_159331:: @ 8159331
setvar 0x800b, 1
call LilycoveCity_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
@@ -22,7 +22,7 @@ LilycoveCity_PokemonCenter_1F_EventScript_159348:: @ 8159348
lock
faceplayer
checkflag 2061
- jumpeq LilycoveCity_PokemonCenter_1F_EventScript_15935D
+ goto_if_eq LilycoveCity_PokemonCenter_1F_EventScript_15935D
msgbox LilycoveCity_PokemonCenter_1F_Text_18A048, 4
release
end
diff --git a/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc b/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc
index e503ef4ec..13217b340 100644
--- a/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc
+++ b/data/scripts/maps/LilycoveCity_PokemonTrainerFanClub.inc
@@ -9,21 +9,21 @@ LilycoveCity_PokemonTrainerFanClub_MapScript2_159395:: @ 8159395
LilycoveCity_PokemonTrainerFanClub_EventScript_15939F:: @ 815939F
lockall
- move 1, LilycoveCity_PokemonTrainerFanClub_Movement_1A0845
- waitmove 0
+ applymovement 1, LilycoveCity_PokemonTrainerFanClub_Movement_1A0845
+ waitmovement 0
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A1D6, 4
- move 4, LilycoveCity_PokemonTrainerFanClub_Movement_159402
- move 2, LilycoveCity_PokemonTrainerFanClub_Movement_1593FA
- waitmove 0
- move 255, LilycoveCity_PokemonTrainerFanClub_Movement_1A0843
- waitmove 0
+ applymovement 4, LilycoveCity_PokemonTrainerFanClub_Movement_159402
+ applymovement 2, LilycoveCity_PokemonTrainerFanClub_Movement_1593FA
+ waitmovement 0
+ applymovement 255, LilycoveCity_PokemonTrainerFanClub_Movement_1A0843
+ waitmovement 0
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A1E8, 4
- move 4, LilycoveCity_PokemonTrainerFanClub_Movement_159409
- waitmove 0
- move 255, LilycoveCity_PokemonTrainerFanClub_Movement_1A083F
- waitmove 0
- move 4, LilycoveCity_PokemonTrainerFanClub_Movement_15940C
- waitmove 0
+ applymovement 4, LilycoveCity_PokemonTrainerFanClub_Movement_159409
+ waitmovement 0
+ applymovement 255, LilycoveCity_PokemonTrainerFanClub_Movement_1A083F
+ waitmovement 0
+ applymovement 4, LilycoveCity_PokemonTrainerFanClub_Movement_15940C
+ waitmovement 0
setvar 0x4095, 2
releaseall
end
@@ -62,77 +62,77 @@ LilycoveCity_PokemonTrainerFanClub_Movement_15940C:: @ 815940C
LilycoveCity_PokemonTrainerFanClub_MapScript1_159412:: @ 8159412
compare 0x4095, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159515
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159515
compare 0x4095, 2
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159429
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159429
end
LilycoveCity_PokemonTrainerFanClub_EventScript_159429:: @ 8159429
special sub_810FCE8
setvar 0x8004, 8
- specialval RESULT, sub_810FD60
+ specialvar RESULT, sub_810FD60
compare RESULT, 0
- callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594D5
+ call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594D5
setvar 0x8004, 9
- specialval RESULT, sub_810FD60
+ specialvar RESULT, sub_810FD60
compare RESULT, 0
- callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594DD
+ call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594DD
setvar 0x8004, 10
- specialval RESULT, sub_810FD60
+ specialvar RESULT, sub_810FD60
compare RESULT, 0
- callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594E5
+ call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594E5
setvar 0x8004, 11
- specialval RESULT, sub_810FD60
+ specialvar RESULT, sub_810FD60
compare RESULT, 0
- callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594ED
+ call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594ED
setvar 0x8004, 12
- specialval RESULT, sub_810FD60
+ specialvar RESULT, sub_810FD60
compare RESULT, 0
- callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594F5
+ call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594F5
setvar 0x8004, 13
- specialval RESULT, sub_810FD60
+ specialvar RESULT, sub_810FD60
compare RESULT, 0
- callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594FD
+ call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_1594FD
setvar 0x8004, 14
- specialval RESULT, sub_810FD60
+ specialvar RESULT, sub_810FD60
compare RESULT, 0
- callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_159505
+ call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_159505
setvar 0x8004, 15
- specialval RESULT, sub_810FD60
+ specialvar RESULT, sub_810FD60
compare RESULT, 0
- callif 1, LilycoveCity_PokemonTrainerFanClub_EventScript_15950D
+ call_if 1, LilycoveCity_PokemonTrainerFanClub_EventScript_15950D
end
LilycoveCity_PokemonTrainerFanClub_EventScript_1594D5:: @ 81594D5
- movespriteperm 1, 7, 5
+ setobjectxyperm 1, 7, 5
return
LilycoveCity_PokemonTrainerFanClub_EventScript_1594DD:: @ 81594DD
- movespriteperm 3, 3, 4
+ setobjectxyperm 3, 3, 4
return
LilycoveCity_PokemonTrainerFanClub_EventScript_1594E5:: @ 81594E5
- movespriteperm 4, 7, 2
+ setobjectxyperm 4, 7, 2
return
LilycoveCity_PokemonTrainerFanClub_EventScript_1594ED:: @ 81594ED
- movespriteperm 5, 5, 5
+ setobjectxyperm 5, 5, 5
return
LilycoveCity_PokemonTrainerFanClub_EventScript_1594F5:: @ 81594F5
- movespriteperm 6, 5, 2
+ setobjectxyperm 6, 5, 2
return
LilycoveCity_PokemonTrainerFanClub_EventScript_1594FD:: @ 81594FD
- movespriteperm 2, 8, 4
+ setobjectxyperm 2, 8, 4
return
LilycoveCity_PokemonTrainerFanClub_EventScript_159505:: @ 8159505
- movespriteperm 7, 3, 3
+ setobjectxyperm 7, 3, 3
return
LilycoveCity_PokemonTrainerFanClub_EventScript_15950D:: @ 815950D
- movespriteperm 8, 8, 3
+ setobjectxyperm 8, 8, 3
return
LilycoveCity_PokemonTrainerFanClub_EventScript_159515:: @ 8159515
@@ -149,21 +149,21 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15952F:: @ 815952F
setvar 0x8004, 13
special sub_810FDAC
compare 0x4095, 0
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15959C
- specialval RESULT, sub_810FD60
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15959C
+ specialvar RESULT, sub_810FD60
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15956E
- specialval RESULT, sub_810FCB0
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15956E
+ specialvar RESULT, sub_810FCB0
compare RESULT, 7
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159592
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159592
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A400, 4
release
end
LilycoveCity_PokemonTrainerFanClub_EventScript_15956E:: @ 815956E
- specialval RESULT, sub_810FCB0
+ specialvar RESULT, sub_810FCB0
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159588
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159588
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A36A, 4
release
end
@@ -189,21 +189,21 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_1595A6:: @ 81595A6
setvar 0x8004, 8
special sub_810FDAC
compare 0x4095, 0
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159613
- specialval RESULT, sub_810FD60
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159613
+ specialvar RESULT, sub_810FD60
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1595E5
- specialval RESULT, sub_810FCB0
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1595E5
+ specialvar RESULT, sub_810FCB0
compare RESULT, 7
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159609
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159609
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A629, 4
release
end
LilycoveCity_PokemonTrainerFanClub_EventScript_1595E5:: @ 81595E5
- specialval RESULT, sub_810FCB0
+ specialvar RESULT, sub_810FCB0
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1595FF
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1595FF
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A584, 4
release
end
@@ -229,21 +229,21 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15961D:: @ 815961D
setvar 0x8004, 9
special sub_810FDAC
compare 0x4095, 0
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15968A
- specialval RESULT, sub_810FD60
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15968A
+ specialvar RESULT, sub_810FD60
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15965C
- specialval RESULT, sub_810FCB0
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15965C
+ specialvar RESULT, sub_810FCB0
compare RESULT, 7
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159680
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159680
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A814, 4
release
end
LilycoveCity_PokemonTrainerFanClub_EventScript_15965C:: @ 815965C
- specialval RESULT, sub_810FCB0
+ specialvar RESULT, sub_810FCB0
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159676
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159676
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18A71E, 4
release
end
@@ -269,21 +269,21 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_159694:: @ 8159694
setvar 0x8004, 10
special sub_810FDAC
compare 0x4095, 0
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159701
- specialval RESULT, sub_810FD60
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159701
+ specialvar RESULT, sub_810FD60
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1596D3
- specialval RESULT, sub_810FCB0
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1596D3
+ specialvar RESULT, sub_810FCB0
compare RESULT, 7
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1596F7
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1596F7
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AB0A, 4
release
end
LilycoveCity_PokemonTrainerFanClub_EventScript_1596D3:: @ 81596D3
- specialval RESULT, sub_810FCB0
+ specialvar RESULT, sub_810FCB0
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1596ED
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1596ED
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AA39, 4
release
end
@@ -308,20 +308,20 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15970B:: @ 815970B
faceplayer
setvar 0x8004, 11
special sub_810FDAC
- specialval RESULT, sub_810FD60
+ specialvar RESULT, sub_810FD60
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15973F
- specialval RESULT, sub_810FCB0
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15973F
+ specialvar RESULT, sub_810FCB0
compare RESULT, 7
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159763
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159763
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18ACC7, 4
release
end
LilycoveCity_PokemonTrainerFanClub_EventScript_15973F:: @ 815973F
- specialval RESULT, sub_810FCB0
+ specialvar RESULT, sub_810FCB0
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159759
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159759
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AC15, 4
release
end
@@ -341,20 +341,20 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_15976D:: @ 815976D
faceplayer
setvar 0x8004, 12
special sub_810FDAC
- specialval RESULT, sub_810FD60
+ specialvar RESULT, sub_810FD60
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1597A1
- specialval RESULT, sub_810FCB0
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1597A1
+ specialvar RESULT, sub_810FCB0
compare RESULT, 7
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1597C5
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1597C5
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AE63, 4
release
end
LilycoveCity_PokemonTrainerFanClub_EventScript_1597A1:: @ 81597A1
- specialval RESULT, sub_810FCB0
+ specialvar RESULT, sub_810FCB0
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_1597BB
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_1597BB
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AD6D, 4
release
end
@@ -374,20 +374,20 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_1597CF:: @ 81597CF
faceplayer
setvar 0x8004, 14
special sub_810FDAC
- specialval RESULT, sub_810FD60
+ specialvar RESULT, sub_810FD60
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159803
- specialval RESULT, sub_810FCB0
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159803
+ specialvar RESULT, sub_810FCB0
compare RESULT, 7
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159827
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159827
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18B030, 4
release
end
LilycoveCity_PokemonTrainerFanClub_EventScript_159803:: @ 8159803
- specialval RESULT, sub_810FCB0
+ specialvar RESULT, sub_810FCB0
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15981D
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15981D
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18AF62, 4
release
end
@@ -407,20 +407,20 @@ LilycoveCity_PokemonTrainerFanClub_EventScript_159831:: @ 8159831
faceplayer
setvar 0x8004, 15
special sub_810FDAC
- specialval RESULT, sub_810FD60
+ specialvar RESULT, sub_810FD60
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159865
- specialval RESULT, sub_810FCB0
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159865
+ specialvar RESULT, sub_810FCB0
compare RESULT, 7
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_159889
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_159889
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18B1FD, 4
release
end
LilycoveCity_PokemonTrainerFanClub_EventScript_159865:: @ 8159865
- specialval RESULT, sub_810FCB0
+ specialvar RESULT, sub_810FCB0
compare RESULT, 1
- jumpeq LilycoveCity_PokemonTrainerFanClub_EventScript_15987F
+ goto_if_eq LilycoveCity_PokemonTrainerFanClub_EventScript_15987F
msgbox LilycoveCity_PokemonTrainerFanClub_Text_18B16E, 4
release
end
diff --git a/data/scripts/maps/LittlerootTown.inc b/data/scripts/maps/LittlerootTown.inc
index 2a4f77529..220aeead7 100644
--- a/data/scripts/maps/LittlerootTown.inc
+++ b/data/scripts/maps/LittlerootTown.inc
@@ -6,19 +6,19 @@ LittlerootTown_MapScripts:: @ 814D509
LittlerootTown_MapScript1_14D514:: @ 814D514
setflag 2063
compare 0x4092, 2
- callif 1, LittlerootTown_EventScript_14D57B
+ call_if 1, LittlerootTown_EventScript_14D57B
checkflag 82
- callif 0, LittlerootTown_EventScript_14D583
+ call_if 0, LittlerootTown_EventScript_14D583
compare 0x4050, 3
- callif 1, LittlerootTown_EventScript_14D5A6
+ call_if 1, LittlerootTown_EventScript_14D5A6
compare 0x4082, 4
- callif 1, LittlerootTown_EventScript_14D570
+ call_if 1, LittlerootTown_EventScript_14D570
compare 0x408c, 4
- callif 1, LittlerootTown_EventScript_14D570
+ call_if 1, LittlerootTown_EventScript_14D570
compare 0x40c7, 1
- callif 1, LittlerootTown_EventScript_14D567
+ call_if 1, LittlerootTown_EventScript_14D567
compare 0x408d, 3
- callif 1, LittlerootTown_EventScript_14D563
+ call_if 1, LittlerootTown_EventScript_14D563
end
LittlerootTown_EventScript_14D563:: @ 814D563
@@ -36,37 +36,37 @@ LittlerootTown_EventScript_14D570:: @ 814D570
return
LittlerootTown_EventScript_14D57B:: @ 814D57B
- movespriteperm 4, 14, 8
+ setobjectxyperm 4, 14, 8
return
LittlerootTown_EventScript_14D583:: @ 814D583
compare 0x4050, 0
- jumpeq LittlerootTown_EventScript_14D59A
- movespriteperm 1, 10, 1
- spritebehave 1, 7
+ goto_if_eq LittlerootTown_EventScript_14D59A
+ setobjectxyperm 1, 10, 1
+ setobjectmovementtype 1, 7
return
LittlerootTown_EventScript_14D59A:: @ 814D59A
- movespriteperm 1, 7, 2
- spritebehave 1, 8
+ setobjectxyperm 1, 7, 2
+ setobjectmovementtype 1, 8
return
LittlerootTown_EventScript_14D5A6:: @ 814D5A6
clearflag 752
- spritebehave 4, 8
- checkgender
+ setobjectmovementtype 4, 8
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_EventScript_14D5C5
+ call_if 1, LittlerootTown_EventScript_14D5C5
compare RESULT, 1
- callif 1, LittlerootTown_EventScript_14D5CD
+ call_if 1, LittlerootTown_EventScript_14D5CD
return
LittlerootTown_EventScript_14D5C5:: @ 814D5C5
- movespriteperm 4, 5, 9
+ setobjectxyperm 4, 5, 9
return
LittlerootTown_EventScript_14D5CD:: @ 814D5CD
- movespriteperm 4, 14, 9
+ setobjectxyperm 4, 14, 9
return
LittlerootTown_MapScript2_14D5D5:: @ 814D5D5
@@ -81,7 +81,7 @@ LittlerootTown_EventScript_14D5EF:: @ 814D5EF
setvar 0x8005, 8
call LittlerootTown_EventScript_14D62B
setflag 761
- warpmuted LittlerootTown_BrendansHouse_1F, 255, 8, 8
+ warpsilent LittlerootTown_BrendansHouse_1F, 255, 8, 8
waitstate
releaseall
end
@@ -92,41 +92,41 @@ LittlerootTown_EventScript_14D60D:: @ 814D60D
setvar 0x8005, 8
call LittlerootTown_EventScript_14D62B
setflag 762
- warpmuted LittlerootTown_MaysHouse_1F, 255, 2, 8
+ warpsilent LittlerootTown_MaysHouse_1F, 255, 2, 8
waitstate
releaseall
end
LittlerootTown_EventScript_14D62B:: @ 814D62B
- pause 15
- playsfx 10
- move 255, LittlerootTown_Movement_14D6C0
- waitmove 0
- setdooropened 0x8004, 0x8005
- doorchange
- reappear 4
- move 4, LittlerootTown_Movement_14D6AC
- waitmove 0
- setdoorclosed 0x8004, 0x8005
- doorchange
- pause 10
- move 4, LittlerootTown_Movement_14D6AE
- waitmove 0
+ delay 15
+ playse 10
+ applymovement 255, LittlerootTown_Movement_14D6C0
+ waitmovement 0
+ opendoor 0x8004, 0x8005
+ waitdooranim
+ addobject 4
+ applymovement 4, LittlerootTown_Movement_14D6AC
+ waitmovement 0
+ closedoor 0x8004, 0x8005
+ waitdooranim
+ delay 10
+ applymovement 4, LittlerootTown_Movement_14D6AE
+ waitmovement 0
msgbox LittlerootTown_Text_16A7C9, 4
- closebutton
- move 4, LittlerootTown_Movement_14D6B1
- move 255, LittlerootTown_Movement_14D6B8
- waitmove 0
- setdooropened 0x8004, 0x8005
- doorchange
- move 4, LittlerootTown_Movement_14D6B5
- move 255, LittlerootTown_Movement_14D6BD
- waitmove 0
+ closemessage
+ applymovement 4, LittlerootTown_Movement_14D6B1
+ applymovement 255, LittlerootTown_Movement_14D6B8
+ waitmovement 0
+ opendoor 0x8004, 0x8005
+ waitdooranim
+ applymovement 4, LittlerootTown_Movement_14D6B5
+ applymovement 255, LittlerootTown_Movement_14D6BD
+ waitmovement 0
setflag 752
setvar 0x4092, 3
- spriteinvisible 255, 0, 0
- setdoorclosed 0x8004, 0x8005
- doorchange
+ hideobject 255, 0, 0
+ closedoor 0x8004, 0x8005
+ waitdooranim
clearflag 868
clearflag 0x4000
return
@@ -188,20 +188,20 @@ LittlerootTown_EventScript_14D6DF:: @ 814D6DF
lock
faceplayer
checkflag 116
- jumpeq LittlerootTown_EventScript_14D72F
+ goto_if_eq LittlerootTown_EventScript_14D72F
checkflag 82
- jumpeq LittlerootTown_EventScript_14D722
+ goto_if_eq LittlerootTown_EventScript_14D722
compare 0x4050, 0
- jumpif 5, LittlerootTown_EventScript_14D708
+ goto_if 5, LittlerootTown_EventScript_14D708
msgbox LittlerootTown_Text_16ACEB, 4
release
end
LittlerootTown_EventScript_14D708:: @ 814D708
msgbox LittlerootTown_Text_16AD82, 4
- closebutton
- move 1, LittlerootTown_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 1, LittlerootTown_Movement_1A083D
+ waitmovement 0
setvar 0x4050, 2
release
end
@@ -219,22 +219,22 @@ LittlerootTown_EventScript_14D72F:: @ 814D72F
LittlerootTown_EventScript_14D739:: @ 814D739
lockall
- move 1, LittlerootTown_Movement_14D779
- waitmove 0
+ applymovement 1, LittlerootTown_Movement_14D779
+ waitmovement 0
call LittlerootTown_EventScript_14D755
- move 1, LittlerootTown_Movement_14D789
- waitmove 0
+ applymovement 1, LittlerootTown_Movement_14D789
+ waitmovement 0
releaseall
end
LittlerootTown_EventScript_14D755:: @ 814D755
msgbox LittlerootTown_Text_16ACEB, 4
- closebutton
- move 1, LittlerootTown_Movement_14D787
- move 255, LittlerootTown_Movement_14D793
- waitmove 0
+ closemessage
+ applymovement 1, LittlerootTown_Movement_14D787
+ applymovement 255, LittlerootTown_Movement_14D793
+ waitmovement 0
msgbox LittlerootTown_Text_16AD3C, 4
- closebutton
+ closemessage
return
LittlerootTown_Movement_14D779:: @ 814D779
@@ -277,11 +277,11 @@ LittlerootTown_Movement_14D793:: @ 814D793
LittlerootTown_EventScript_14D797:: @ 814D797
lockall
- move 1, LittlerootTown_Movement_14D7B3
- waitmove 0
+ applymovement 1, LittlerootTown_Movement_14D7B3
+ waitmovement 0
call LittlerootTown_EventScript_14D755
- move 1, LittlerootTown_Movement_14D7C0
- waitmove 0
+ applymovement 1, LittlerootTown_Movement_14D7C0
+ waitmovement 0
releaseall
end
@@ -311,14 +311,14 @@ LittlerootTown_Movement_14D7C0:: @ 814D7C0
LittlerootTown_EventScript_14D7C7:: @ 814D7C7
lockall
- move 1, LittlerootTown_Movement_1A0843
- waitmove 0
- move 255, LittlerootTown_Movement_1A083F
- waitmove 0
+ applymovement 1, LittlerootTown_Movement_1A0843
+ waitmovement 0
+ applymovement 255, LittlerootTown_Movement_1A083F
+ waitmovement 0
msgbox LittlerootTown_Text_16AD82, 4
- closebutton
- move 1, LittlerootTown_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 1, LittlerootTown_Movement_1A083D
+ waitmovement 0
setvar 0x4050, 2
releaseall
end
@@ -333,11 +333,11 @@ LittlerootTown_EventScript_14D7FF:: @ 814D7FF
LittlerootTown_EventScript_14D808:: @ 814D808
lockall
- checkgender
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_EventScript_14D822
+ call_if 1, LittlerootTown_EventScript_14D822
compare RESULT, 1
- callif 1, LittlerootTown_EventScript_14D82B
+ call_if 1, LittlerootTown_EventScript_14D82B
releaseall
end
@@ -351,11 +351,11 @@ LittlerootTown_EventScript_14D82B:: @ 814D82B
LittlerootTown_EventScript_14D834:: @ 814D834
lockall
- checkgender
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_EventScript_14D84E
+ call_if 1, LittlerootTown_EventScript_14D84E
compare RESULT, 1
- callif 1, LittlerootTown_EventScript_14D857
+ call_if 1, LittlerootTown_EventScript_14D857
releaseall
end
@@ -370,66 +370,66 @@ LittlerootTown_EventScript_14D857:: @ 814D857
LittlerootTown_EventScript_14D860:: @ 814D860
lockall
setvar 0x8008, 0
- movesprite 4, 10, 9
- jump LittlerootTown_EventScript_14D8B6
+ setobjectxy 4, 10, 9
+ goto LittlerootTown_EventScript_14D8B6
end
LittlerootTown_EventScript_14D873:: @ 814D873
lockall
setvar 0x8008, 1
- movesprite 4, 11, 9
- jump LittlerootTown_EventScript_14D8B6
+ setobjectxy 4, 11, 9
+ goto LittlerootTown_EventScript_14D8B6
end
LittlerootTown_EventScript_14D886:: @ 814D886
lockall
setvar 0x8008, 2
- jump LittlerootTown_EventScript_14D8B6
+ goto LittlerootTown_EventScript_14D8B6
end
LittlerootTown_EventScript_14D892:: @ 814D892
lockall
setvar 0x8008, 3
- jump LittlerootTown_EventScript_14D8B6
+ goto LittlerootTown_EventScript_14D8B6
end
LittlerootTown_EventScript_14D89E:: @ 814D89E
lockall
setvar 0x8008, 4
- jump LittlerootTown_EventScript_14D8B6
+ goto LittlerootTown_EventScript_14D8B6
end
LittlerootTown_EventScript_14D8AA:: @ 814D8AA
lockall
setvar 0x8008, 5
- jump LittlerootTown_EventScript_14D8B6
+ goto LittlerootTown_EventScript_14D8B6
end
LittlerootTown_EventScript_14D8B6:: @ 814D8B6
- checkgender
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_EventScript_14D93C
+ call_if 1, LittlerootTown_EventScript_14D93C
compare RESULT, 1
- callif 1, LittlerootTown_EventScript_14D947
- checkgender
+ call_if 1, LittlerootTown_EventScript_14D947
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_EventScript_14D926
+ call_if 1, LittlerootTown_EventScript_14D926
compare RESULT, 1
- callif 1, LittlerootTown_EventScript_14D931
+ call_if 1, LittlerootTown_EventScript_14D931
msgbox LittlerootTown_Text_16A8EE, 4
- closebutton
- checkgender
+ closemessage
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_EventScript_14D952
+ call_if 1, LittlerootTown_EventScript_14D952
compare RESULT, 1
- callif 1, LittlerootTown_EventScript_14D995
+ call_if 1, LittlerootTown_EventScript_14D995
call LittlerootTown_EventScript_14DD38
- checkgender
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_EventScript_14DAAA
+ call_if 1, LittlerootTown_EventScript_14DAAA
compare RESULT, 1
- callif 1, LittlerootTown_EventScript_14DAED
- jump LittlerootTown_EventScript_14DD2B
+ call_if 1, LittlerootTown_EventScript_14DAED
+ goto LittlerootTown_EventScript_14DD2B
end
LittlerootTown_EventScript_14D926:: @ 814D926
@@ -443,249 +443,249 @@ LittlerootTown_EventScript_14D931:: @ 814D931
return
LittlerootTown_EventScript_14D93C:: @ 814D93C
- move 4, LittlerootTown_Movement_1A0843
- waitmove 0
+ applymovement 4, LittlerootTown_Movement_1A0843
+ waitmovement 0
return
LittlerootTown_EventScript_14D947:: @ 814D947
- move 4, LittlerootTown_Movement_1A083F
- waitmove 0
+ applymovement 4, LittlerootTown_Movement_1A083F
+ waitmovement 0
return
LittlerootTown_EventScript_14D952:: @ 814D952
compare 0x8008, 0
- callif 1, LittlerootTown_EventScript_14D9D8
+ call_if 1, LittlerootTown_EventScript_14D9D8
compare 0x8008, 1
- callif 1, LittlerootTown_EventScript_14D9ED
+ call_if 1, LittlerootTown_EventScript_14D9ED
compare 0x8008, 2
- callif 1, LittlerootTown_EventScript_14DA02
+ call_if 1, LittlerootTown_EventScript_14DA02
compare 0x8008, 3
- callif 1, LittlerootTown_EventScript_14DA17
+ call_if 1, LittlerootTown_EventScript_14DA17
compare 0x8008, 4
- callif 1, LittlerootTown_EventScript_14DA2C
+ call_if 1, LittlerootTown_EventScript_14DA2C
compare 0x8008, 5
- callif 1, LittlerootTown_EventScript_14DA41
+ call_if 1, LittlerootTown_EventScript_14DA41
return
LittlerootTown_EventScript_14D995:: @ 814D995
compare 0x8008, 0
- callif 1, LittlerootTown_EventScript_14D9D8
+ call_if 1, LittlerootTown_EventScript_14D9D8
compare 0x8008, 1
- callif 1, LittlerootTown_EventScript_14D9ED
+ call_if 1, LittlerootTown_EventScript_14D9ED
compare 0x8008, 2
- callif 1, LittlerootTown_EventScript_14DA56
+ call_if 1, LittlerootTown_EventScript_14DA56
compare 0x8008, 3
- callif 1, LittlerootTown_EventScript_14DA6B
+ call_if 1, LittlerootTown_EventScript_14DA6B
compare 0x8008, 4
- callif 1, LittlerootTown_EventScript_14DA80
+ call_if 1, LittlerootTown_EventScript_14DA80
compare 0x8008, 5
- callif 1, LittlerootTown_EventScript_14DA95
+ call_if 1, LittlerootTown_EventScript_14DA95
return
LittlerootTown_EventScript_14D9D8:: @ 814D9D8
- move 255, LittlerootTown_Movement_1A0845
- waitmove 0
- move 4, LittlerootTown_Movement_14DC76
- waitmove 0
+ applymovement 255, LittlerootTown_Movement_1A0845
+ waitmovement 0
+ applymovement 4, LittlerootTown_Movement_14DC76
+ waitmovement 0
return
LittlerootTown_EventScript_14D9ED:: @ 814D9ED
- move 255, LittlerootTown_Movement_1A0845
- waitmove 0
- move 4, LittlerootTown_Movement_14DC7D
- waitmove 0
+ applymovement 255, LittlerootTown_Movement_1A0845
+ waitmovement 0
+ applymovement 4, LittlerootTown_Movement_14DC7D
+ waitmovement 0
return
LittlerootTown_EventScript_14DA02:: @ 814DA02
- move 255, LittlerootTown_Movement_1A083F
- waitmove 0
- move 4, LittlerootTown_Movement_14DC84
- waitmove 0
+ applymovement 255, LittlerootTown_Movement_1A083F
+ waitmovement 0
+ applymovement 4, LittlerootTown_Movement_14DC84
+ waitmovement 0
return
LittlerootTown_EventScript_14DA17:: @ 814DA17
- move 255, LittlerootTown_Movement_1A083F
- waitmove 0
- move 4, LittlerootTown_Movement_14DC89
- waitmove 0
+ applymovement 255, LittlerootTown_Movement_1A083F
+ waitmovement 0
+ applymovement 4, LittlerootTown_Movement_14DC89
+ waitmovement 0
return
LittlerootTown_EventScript_14DA2C:: @ 814DA2C
- move 255, LittlerootTown_Movement_1A083F
- waitmove 0
- move 4, LittlerootTown_Movement_14DC8F
- waitmove 0
+ applymovement 255, LittlerootTown_Movement_1A083F
+ waitmovement 0
+ applymovement 4, LittlerootTown_Movement_14DC8F
+ waitmovement 0
return
LittlerootTown_EventScript_14DA41:: @ 814DA41
- move 255, LittlerootTown_Movement_1A083F
- waitmove 0
- move 4, LittlerootTown_Movement_14DC92
- waitmove 0
+ applymovement 255, LittlerootTown_Movement_1A083F
+ waitmovement 0
+ applymovement 4, LittlerootTown_Movement_14DC92
+ waitmovement 0
return
LittlerootTown_EventScript_14DA56:: @ 814DA56
- move 255, LittlerootTown_Movement_1A0843
- waitmove 0
- move 4, LittlerootTown_Movement_14DC96
- waitmove 0
+ applymovement 255, LittlerootTown_Movement_1A0843
+ waitmovement 0
+ applymovement 4, LittlerootTown_Movement_14DC96
+ waitmovement 0
return
LittlerootTown_EventScript_14DA6B:: @ 814DA6B
- move 255, LittlerootTown_Movement_1A0843
- waitmove 0
- move 4, LittlerootTown_Movement_14DC9A
- waitmove 0
+ applymovement 255, LittlerootTown_Movement_1A0843
+ waitmovement 0
+ applymovement 4, LittlerootTown_Movement_14DC9A
+ waitmovement 0
return
LittlerootTown_EventScript_14DA80:: @ 814DA80
- move 255, LittlerootTown_Movement_1A0843
- waitmove 0
- move 4, LittlerootTown_Movement_14DC9D
- waitmove 0
+ applymovement 255, LittlerootTown_Movement_1A0843
+ waitmovement 0
+ applymovement 4, LittlerootTown_Movement_14DC9D
+ waitmovement 0
return
LittlerootTown_EventScript_14DA95:: @ 814DA95
- move 255, LittlerootTown_Movement_1A0843
- waitmove 0
- move 4, LittlerootTown_Movement_14DCA3
- waitmove 0
+ applymovement 255, LittlerootTown_Movement_1A0843
+ waitmovement 0
+ applymovement 4, LittlerootTown_Movement_14DCA3
+ waitmovement 0
return
LittlerootTown_EventScript_14DAAA:: @ 814DAAA
compare 0x8008, 0
- callif 1, LittlerootTown_EventScript_14DB30
+ call_if 1, LittlerootTown_EventScript_14DB30
compare 0x8008, 1
- callif 1, LittlerootTown_EventScript_14DB3B
+ call_if 1, LittlerootTown_EventScript_14DB3B
compare 0x8008, 2
- callif 1, LittlerootTown_EventScript_14DB46
+ call_if 1, LittlerootTown_EventScript_14DB46
compare 0x8008, 3
- callif 1, LittlerootTown_EventScript_14DB6C
+ call_if 1, LittlerootTown_EventScript_14DB6C
compare 0x8008, 4
- callif 1, LittlerootTown_EventScript_14DB92
+ call_if 1, LittlerootTown_EventScript_14DB92
compare 0x8008, 5
- callif 1, LittlerootTown_EventScript_14DBB8
+ call_if 1, LittlerootTown_EventScript_14DBB8
return
LittlerootTown_EventScript_14DAED:: @ 814DAED
compare 0x8008, 0
- callif 1, LittlerootTown_EventScript_14DB30
+ call_if 1, LittlerootTown_EventScript_14DB30
compare 0x8008, 1
- callif 1, LittlerootTown_EventScript_14DB3B
+ call_if 1, LittlerootTown_EventScript_14DB3B
compare 0x8008, 2
- callif 1, LittlerootTown_EventScript_14DBDE
+ call_if 1, LittlerootTown_EventScript_14DBDE
compare 0x8008, 3
- callif 1, LittlerootTown_EventScript_14DC04
+ call_if 1, LittlerootTown_EventScript_14DC04
compare 0x8008, 4
- callif 1, LittlerootTown_EventScript_14DC2A
+ call_if 1, LittlerootTown_EventScript_14DC2A
compare 0x8008, 5
- callif 1, LittlerootTown_EventScript_14DC50
+ call_if 1, LittlerootTown_EventScript_14DC50
return
LittlerootTown_EventScript_14DB30:: @ 814DB30
- move 4, LittlerootTown_Movement_14DCA8
- waitmove 0
+ applymovement 4, LittlerootTown_Movement_14DCA8
+ waitmovement 0
return
LittlerootTown_EventScript_14DB3B:: @ 814DB3B
- move 4, LittlerootTown_Movement_14DCAE
- waitmove 0
+ applymovement 4, LittlerootTown_Movement_14DCAE
+ waitmovement 0
return
LittlerootTown_EventScript_14DB46:: @ 814DB46
- move 4, LittlerootTown_Movement_14DCB4
- waitmove 0
- setdooropened 0x8009, 0x800a
- doorchange
- move 4, LittlerootTown_Movement_14DCE0
- waitmove 0
- spriteinvisible 4, 0, 9
- setdoorclosed 0x8009, 0x800a
- doorchange
+ applymovement 4, LittlerootTown_Movement_14DCB4
+ waitmovement 0
+ opendoor 0x8009, 0x800a
+ waitdooranim
+ applymovement 4, LittlerootTown_Movement_14DCE0
+ waitmovement 0
+ hideobject 4, 0, 9
+ closedoor 0x8009, 0x800a
+ waitdooranim
return
LittlerootTown_EventScript_14DB6C:: @ 814DB6C
- move 4, LittlerootTown_Movement_14DCBA
- waitmove 0
- setdooropened 0x8009, 0x800a
- doorchange
- move 4, LittlerootTown_Movement_14DCE0
- waitmove 0
- spriteinvisible 4, 0, 9
- setdoorclosed 0x8009, 0x800a
- doorchange
+ applymovement 4, LittlerootTown_Movement_14DCBA
+ waitmovement 0
+ opendoor 0x8009, 0x800a
+ waitdooranim
+ applymovement 4, LittlerootTown_Movement_14DCE0
+ waitmovement 0
+ hideobject 4, 0, 9
+ closedoor 0x8009, 0x800a
+ waitdooranim
return
LittlerootTown_EventScript_14DB92:: @ 814DB92
- move 4, LittlerootTown_Movement_14DCC1
- waitmove 0
- setdooropened 0x8009, 0x800a
- doorchange
- move 4, LittlerootTown_Movement_14DCE0
- waitmove 0
- spriteinvisible 4, 0, 9
- setdoorclosed 0x8009, 0x800a
- doorchange
+ applymovement 4, LittlerootTown_Movement_14DCC1
+ waitmovement 0
+ opendoor 0x8009, 0x800a
+ waitdooranim
+ applymovement 4, LittlerootTown_Movement_14DCE0
+ waitmovement 0
+ hideobject 4, 0, 9
+ closedoor 0x8009, 0x800a
+ waitdooranim
return
LittlerootTown_EventScript_14DBB8:: @ 814DBB8
- move 4, LittlerootTown_Movement_14DCC5
- waitmove 0
- setdooropened 0x8009, 0x800a
- doorchange
- move 4, LittlerootTown_Movement_14DCE0
- waitmove 0
- spriteinvisible 4, 0, 9
- setdoorclosed 0x8009, 0x800a
- doorchange
+ applymovement 4, LittlerootTown_Movement_14DCC5
+ waitmovement 0
+ opendoor 0x8009, 0x800a
+ waitdooranim
+ applymovement 4, LittlerootTown_Movement_14DCE0
+ waitmovement 0
+ hideobject 4, 0, 9
+ closedoor 0x8009, 0x800a
+ waitdooranim
return
LittlerootTown_EventScript_14DBDE:: @ 814DBDE
- move 4, LittlerootTown_Movement_14DCCA
- waitmove 0
- setdooropened 0x8009, 0x800a
- doorchange
- move 4, LittlerootTown_Movement_14DCE0
- waitmove 0
- spriteinvisible 4, 0, 9
- setdoorclosed 0x8009, 0x800a
- doorchange
+ applymovement 4, LittlerootTown_Movement_14DCCA
+ waitmovement 0
+ opendoor 0x8009, 0x800a
+ waitdooranim
+ applymovement 4, LittlerootTown_Movement_14DCE0
+ waitmovement 0
+ hideobject 4, 0, 9
+ closedoor 0x8009, 0x800a
+ waitdooranim
return
LittlerootTown_EventScript_14DC04:: @ 814DC04
- move 4, LittlerootTown_Movement_14DCCF
- waitmove 0
- setdooropened 0x8009, 0x800a
- doorchange
- move 4, LittlerootTown_Movement_14DCE0
- waitmove 0
- spriteinvisible 4, 0, 9
- setdoorclosed 0x8009, 0x800a
- doorchange
+ applymovement 4, LittlerootTown_Movement_14DCCF
+ waitmovement 0
+ opendoor 0x8009, 0x800a
+ waitdooranim
+ applymovement 4, LittlerootTown_Movement_14DCE0
+ waitmovement 0
+ hideobject 4, 0, 9
+ closedoor 0x8009, 0x800a
+ waitdooranim
return
LittlerootTown_EventScript_14DC2A:: @ 814DC2A
- move 4, LittlerootTown_Movement_14DCD3
- waitmove 0
- setdooropened 0x8009, 0x800a
- doorchange
- move 4, LittlerootTown_Movement_14DCE0
- waitmove 0
- spriteinvisible 4, 0, 9
- setdoorclosed 0x8009, 0x800a
- doorchange
+ applymovement 4, LittlerootTown_Movement_14DCD3
+ waitmovement 0
+ opendoor 0x8009, 0x800a
+ waitdooranim
+ applymovement 4, LittlerootTown_Movement_14DCE0
+ waitmovement 0
+ hideobject 4, 0, 9
+ closedoor 0x8009, 0x800a
+ waitdooranim
return
LittlerootTown_EventScript_14DC50:: @ 814DC50
- move 4, LittlerootTown_Movement_14DCDA
- waitmove 0
- setdooropened 0x8009, 0x800a
- doorchange
- move 4, LittlerootTown_Movement_14DCE0
- waitmove 0
- spriteinvisible 4, 0, 9
- setdoorclosed 0x8009, 0x800a
- doorchange
+ applymovement 4, LittlerootTown_Movement_14DCDA
+ waitmovement 0
+ opendoor 0x8009, 0x800a
+ waitdooranim
+ applymovement 4, LittlerootTown_Movement_14DCE0
+ waitmovement 0
+ hideobject 4, 0, 9
+ closedoor 0x8009, 0x800a
+ waitdooranim
return
LittlerootTown_Movement_14DC76:: @ 814DC76
@@ -841,26 +841,26 @@ LittlerootTown_Movement_14DCE0:: @ 814DCE0
LittlerootTown_EventScript_14DCE2:: @ 814DCE2
lock
faceplayer
- checkgender
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_EventScript_14D926
+ call_if 1, LittlerootTown_EventScript_14D926
compare RESULT, 1
- callif 1, LittlerootTown_EventScript_14D931
+ call_if 1, LittlerootTown_EventScript_14D931
call LittlerootTown_EventScript_14DD38
- move 4, LittlerootTown_Movement_1A0841
- waitmove 0
- setdooropened 0x8009, 0x800a
- doorchange
- move 4, LittlerootTown_Movement_14DCE0
- waitmove 0
- spriteinvisible 4, 0, 9
- setdoorclosed 0x8009, 0x800a
- doorchange
- jump LittlerootTown_EventScript_14DD2B
+ applymovement 4, LittlerootTown_Movement_1A0841
+ waitmovement 0
+ opendoor 0x8009, 0x800a
+ waitdooranim
+ applymovement 4, LittlerootTown_Movement_14DCE0
+ waitmovement 0
+ hideobject 4, 0, 9
+ closedoor 0x8009, 0x800a
+ waitdooranim
+ goto LittlerootTown_EventScript_14DD2B
end
LittlerootTown_EventScript_14DD2B:: @ 814DD2B
- disappear 4
+ removeobject 4
setflag 2144
setvar 0x4050, 4
release
@@ -868,13 +868,13 @@ LittlerootTown_EventScript_14DD2B:: @ 814DD2B
LittlerootTown_EventScript_14DD38:: @ 814DD38
msgbox LittlerootTown_Text_16A8FD, 4
- fanfare 370
+ playfanfare 370
message LittlerootTown_Text_16AA32
waitfanfare
- waittext
+ waitmessage
setflag 274
msgbox LittlerootTown_Text_16AA5C, 4
msgbox LittlerootTown_Text_16AB10, 4
- closebutton
- pause 30
+ closemessage
+ delay 30
return
diff --git a/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc b/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc
index 69206566a..04256cacb 100644
--- a/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc
+++ b/data/scripts/maps/LittlerootTown_BrendansHouse_1F.inc
@@ -6,9 +6,9 @@ LittlerootTown_BrendansHouse_1F_MapScripts:: @ 815263B
LittlerootTown_BrendansHouse_1F_MapScript1_15264B:: @ 815264B
compare 0x4092, 6
- callif 0, LittlerootTown_BrendansHouse_1F_EventScript_152660
+ call_if 0, LittlerootTown_BrendansHouse_1F_EventScript_152660
checkflag 274
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_152673
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_152673
end
LittlerootTown_BrendansHouse_1F_EventScript_152660:: @ 8152660
@@ -17,9 +17,9 @@ LittlerootTown_BrendansHouse_1F_EventScript_152660:: @ 8152660
return
LittlerootTown_BrendansHouse_1F_EventScript_152673:: @ 8152673
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152680
+ goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_152680
return
LittlerootTown_BrendansHouse_1F_EventScript_152680:: @ 8152680
@@ -28,26 +28,26 @@ LittlerootTown_BrendansHouse_1F_EventScript_152680:: @ 8152680
LittlerootTown_BrendansHouse_1F_MapScript1_15268A:: @ 815268A
compare 0x4092, 3
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1526C4
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1526C4
compare 0x4092, 5
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1526AC
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1526AC
compare 0x4092, 6
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1526B8
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1526B8
end
LittlerootTown_BrendansHouse_1F_EventScript_1526AC:: @ 81526AC
- movespriteperm 1, 8, 4
- spritebehave 1, 7
+ setobjectxyperm 1, 8, 4
+ setobjectmovementtype 1, 7
return
LittlerootTown_BrendansHouse_1F_EventScript_1526B8:: @ 81526B8
- movespriteperm 1, 4, 5
- spritebehave 1, 7
+ setobjectxyperm 1, 4, 5
+ setobjectmovementtype 1, 7
return
LittlerootTown_BrendansHouse_1F_EventScript_1526C4:: @ 81526C4
- movespriteperm 1, 9, 8
- spritebehave 1, 7
+ setobjectxyperm 1, 9, 8
+ setobjectmovementtype 1, 7
return
LittlerootTown_BrendansHouse_1F_MapScript2_1526D0:: @ 81526D0
@@ -61,10 +61,10 @@ LittlerootTown_BrendansHouse_1F_MapScript2_1526D0:: @ 81526D0
LittlerootTown_BrendansHouse_1F_EventScript_1526FA:: @ 81526FA
lockall
msgbox LittlerootTown_BrendansHouse_1F_Text_172574, 4
- closebutton
- move 255, LittlerootTown_BrendansHouse_1F_Movement_152720
- move 1, LittlerootTown_BrendansHouse_1F_Movement_152720
- waitmove 0
+ closemessage
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_152720
+ applymovement 1, LittlerootTown_BrendansHouse_1F_Movement_152720
+ waitmovement 0
warp LittlerootTown_BrendansHouse_2F, 255, 7, 1
waitstate
releaseall
@@ -78,26 +78,26 @@ LittlerootTown_BrendansHouse_1F_EventScript_152722:: @ 8152722
lockall
setvar 0x8004, 1
setvar 0x8005, 0
- jump LittlerootTown_BrendansHouse_1F_EventScript_1B6956
+ goto LittlerootTown_BrendansHouse_1F_EventScript_1B6956
end
LittlerootTown_BrendansHouse_1F_EventScript_152733:: @ 8152733
lockall
setvar 0x8004, 0
setvar 0x8005, 1
- jump LittlerootTown_BrendansHouse_1F_EventScript_1B6ABF
+ goto LittlerootTown_BrendansHouse_1F_EventScript_1B6ABF
end
LittlerootTown_BrendansHouse_1F_EventScript_152744:: @ 8152744
lockall
- playsfx 21
- move 4, LittlerootTown_BrendansHouse_1F_Movement_1A0833
- waitmove 0
- move 4, LittlerootTown_BrendansHouse_1F_Movement_1A0835
- waitmove 0
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F
- move 4, LittlerootTown_BrendansHouse_1F_Movement_152782
- waitmove 0
+ playse 21
+ applymovement 4, LittlerootTown_BrendansHouse_1F_Movement_1A0833
+ waitmovement 0
+ applymovement 4, LittlerootTown_BrendansHouse_1F_Movement_1A0835
+ waitmovement 0
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F
+ applymovement 4, LittlerootTown_BrendansHouse_1F_Movement_152782
+ waitmovement 0
special GetRivalSonDaughterString
msgbox LittlerootTown_BrendansHouse_1F_Text_1730C2, 4
setflag 87
@@ -118,7 +118,7 @@ LittlerootTown_BrendansHouse_1F_EventScript_152789:: @ 8152789
lockall
setvar 0x8004, 1
setvar 0x8005, 0
- move 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A083F
- waitmove 0
- jump LittlerootTown_BrendansHouse_1F_EventScript_1B69B7
+ applymovement 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A083F
+ waitmovement 0
+ goto LittlerootTown_BrendansHouse_1F_EventScript_1B69B7
end
diff --git a/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc b/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc
index 0803cd512..8ff7f8b81 100644
--- a/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc
+++ b/data/scripts/maps/LittlerootTown_BrendansHouse_2F.inc
@@ -5,16 +5,16 @@ LittlerootTown_BrendansHouse_2F_MapScripts:: @ 81527A4
LittlerootTown_BrendansHouse_2F_MapScript1_1527AF:: @ 81527AF
checkflag 130
- callif 0, LittlerootTown_BrendansHouse_2F_EventScript_1527CE
+ call_if 0, LittlerootTown_BrendansHouse_2F_EventScript_1527CE
compare 0x4092, 4
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6950
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6950
call LittlerootTown_BrendansHouse_2F_EventScript_1A2F3D
setvar 0x4089, 0
end
LittlerootTown_BrendansHouse_2F_EventScript_1527CE:: @ 81527CE
- movespriteperm 1, 1, 2
- spritebehave 1, 7
+ setobjectxyperm 1, 1, 2
+ setobjectmovementtype 1, 7
return
LittlerootTown_BrendansHouse_2F_MapScript2_1527DA:: @ 81527DA
@@ -22,18 +22,18 @@ LittlerootTown_BrendansHouse_2F_MapScript2_1527DA:: @ 81527DA
.2byte 0
LittlerootTown_BrendansHouse_2F_EventScript_1527E4:: @ 81527E4
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq LittlerootTown_BrendansHouse_2F_EventScript_1A2F68
+ goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_1A2F68
end
@ 81527F1
lockall
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq LittlerootTown_BrendansHouse_2F_EventScript_15280A
+ goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_15280A
compare RESULT, 1
- jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152814
+ goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152814
end
LittlerootTown_BrendansHouse_2F_EventScript_15280A:: @ 815280A
@@ -50,17 +50,17 @@ gUnknown_0815281E:: @ 815281E
LittlerootTown_BrendansHouse_2F_EventScript_15281E:: @ 815281E
lockall
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152837
+ goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152837
compare RESULT, 1
- jumpeq LittlerootTown_BrendansHouse_2F_EventScript_15285D
+ goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_15285D
end
LittlerootTown_BrendansHouse_2F_EventScript_152837:: @ 8152837
setvar 0x8004, 1
special DoPCTurnOnEffect
- playsfx SE_PC_ON
+ playse SE_PC_ON
msgbox LittlerootTown_BrendansHouse_2F_Text_1A10D6, 4
special BedroomPC
waitstate
@@ -69,7 +69,7 @@ LittlerootTown_BrendansHouse_2F_EventScript_152837:: @ 8152837
gBrendanHouse_TurnPCOff:: @ 8152850
setvar 0x8004, 1
- playsfx SE_PC_OFF
+ playse SE_PC_OFF
special DoPCTurnOffEffect
releaseall
end
diff --git a/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc b/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc
index 5f7f20d63..14c7f5d8a 100644
--- a/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc
+++ b/data/scripts/maps/LittlerootTown_MaysHouse_1F.inc
@@ -6,9 +6,9 @@ LittlerootTown_MaysHouse_1F_MapScripts:: @ 8152879
LittlerootTown_MaysHouse_1F_MapScript1_152889:: @ 8152889
compare 0x4092, 6
- callif 0, LittlerootTown_MaysHouse_1F_EventScript_15289E
+ call_if 0, LittlerootTown_MaysHouse_1F_EventScript_15289E
checkflag 274
- callif 1, LittlerootTown_MaysHouse_1F_EventScript_1528B1
+ call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1528B1
end
LittlerootTown_MaysHouse_1F_EventScript_15289E:: @ 815289E
@@ -17,9 +17,9 @@ LittlerootTown_MaysHouse_1F_EventScript_15289E:: @ 815289E
return
LittlerootTown_MaysHouse_1F_EventScript_1528B1:: @ 81528B1
- checkgender
+ checkplayergender
compare RESULT, 1
- jumpeq LittlerootTown_MaysHouse_1F_EventScript_1528BE
+ goto_if_eq LittlerootTown_MaysHouse_1F_EventScript_1528BE
return
LittlerootTown_MaysHouse_1F_EventScript_1528BE:: @ 81528BE
@@ -28,26 +28,26 @@ LittlerootTown_MaysHouse_1F_EventScript_1528BE:: @ 81528BE
LittlerootTown_MaysHouse_1F_MapScript1_1528C8:: @ 81528C8
compare 0x4092, 3
- callif 1, LittlerootTown_MaysHouse_1F_EventScript_152902
+ call_if 1, LittlerootTown_MaysHouse_1F_EventScript_152902
compare 0x4092, 5
- callif 1, LittlerootTown_MaysHouse_1F_EventScript_1528EA
+ call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1528EA
compare 0x4092, 6
- callif 1, LittlerootTown_MaysHouse_1F_EventScript_1528F6
+ call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1528F6
end
LittlerootTown_MaysHouse_1F_EventScript_1528EA:: @ 81528EA
- movespriteperm 1, 2, 4
- spritebehave 1, 7
+ setobjectxyperm 1, 2, 4
+ setobjectmovementtype 1, 7
return
LittlerootTown_MaysHouse_1F_EventScript_1528F6:: @ 81528F6
- movespriteperm 1, 6, 5
- spritebehave 1, 7
+ setobjectxyperm 1, 6, 5
+ setobjectmovementtype 1, 7
return
LittlerootTown_MaysHouse_1F_EventScript_152902:: @ 8152902
- movespriteperm 1, 1, 8
- spritebehave 1, 7
+ setobjectxyperm 1, 1, 8
+ setobjectmovementtype 1, 7
return
LittlerootTown_MaysHouse_1F_MapScript2_15290E:: @ 815290E
@@ -61,10 +61,10 @@ LittlerootTown_MaysHouse_1F_MapScript2_15290E:: @ 815290E
LittlerootTown_MaysHouse_1F_EventScript_152938:: @ 8152938
lockall
msgbox LittlerootTown_MaysHouse_1F_Text_172574, 4
- closebutton
- move 255, LittlerootTown_MaysHouse_1F_Movement_15295E
- move 1, LittlerootTown_MaysHouse_1F_Movement_15295E
- waitmove 0
+ closemessage
+ applymovement 255, LittlerootTown_MaysHouse_1F_Movement_15295E
+ applymovement 1, LittlerootTown_MaysHouse_1F_Movement_15295E
+ waitmovement 0
warp LittlerootTown_MaysHouse_2F, 255, 1, 1
waitstate
releaseall
@@ -78,26 +78,26 @@ LittlerootTown_MaysHouse_1F_EventScript_152960:: @ 8152960
lockall
setvar 0x8004, 1
setvar 0x8005, 1
- jump LittlerootTown_MaysHouse_1F_EventScript_1B6956
+ goto LittlerootTown_MaysHouse_1F_EventScript_1B6956
end
LittlerootTown_MaysHouse_1F_EventScript_152971:: @ 8152971
lockall
setvar 0x8004, 1
setvar 0x8005, 1
- jump LittlerootTown_MaysHouse_1F_EventScript_1B6B2E
+ goto LittlerootTown_MaysHouse_1F_EventScript_1B6B2E
end
LittlerootTown_MaysHouse_1F_EventScript_152982:: @ 8152982
lockall
- playsfx 21
- move 4, LittlerootTown_MaysHouse_1F_Movement_1A0833
- waitmove 0
- move 4, LittlerootTown_MaysHouse_1F_Movement_1A0835
- waitmove 0
- move 255, LittlerootTown_MaysHouse_1F_Movement_1A0843
- move 4, LittlerootTown_MaysHouse_1F_Movement_1529C0
- waitmove 0
+ playse 21
+ applymovement 4, LittlerootTown_MaysHouse_1F_Movement_1A0833
+ waitmovement 0
+ applymovement 4, LittlerootTown_MaysHouse_1F_Movement_1A0835
+ waitmovement 0
+ applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1A0843
+ applymovement 4, LittlerootTown_MaysHouse_1F_Movement_1529C0
+ waitmovement 0
special GetRivalSonDaughterString
msgbox LittlerootTown_MaysHouse_1F_Text_1730C2, 4
setflag 87
@@ -116,11 +116,11 @@ LittlerootTown_MaysHouse_1F_Movement_1529C0:: @ 81529C0
@ 81529C7
lockall
- checkgender
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_MaysHouse_1F_EventScript_1529E1
+ call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1529E1
compare RESULT, 1
- callif 1, LittlerootTown_MaysHouse_1F_EventScript_1529E2
+ call_if 1, LittlerootTown_MaysHouse_1F_EventScript_1529E2
releaseall
end
@@ -136,11 +136,11 @@ LittlerootTown_MaysHouse_1F_EventScript_1529EB:: @ 81529EB
lock
faceplayer
checkflag 130
- jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152A21
+ goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_152A21
checkflag 301
- jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152A17
+ goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_152A17
compare 0x408d, 3
- jumpeq LittlerootTown_BrendansHouse_1F_EventScript_152A2B
+ goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_152A2B
special GetRivalSonDaughterString
msgbox LittlerootTown_BrendansHouse_1F_Text_1731C6, 4
release
@@ -165,7 +165,7 @@ LittlerootTown_MaysHouse_1F_EventScript_152A35:: @ 8152A35
lockall
setvar 0x8004, 1
setvar 0x8005, 1
- move 0x8004, LittlerootTown_MaysHouse_1F_Movement_1A0843
- waitmove 0
- jump LittlerootTown_MaysHouse_1F_EventScript_1B69B7
+ applymovement 0x8004, LittlerootTown_MaysHouse_1F_Movement_1A0843
+ waitmovement 0
+ goto LittlerootTown_MaysHouse_1F_EventScript_1B69B7
end
diff --git a/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc b/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc
index 85a41caff..68bdf0fcb 100644
--- a/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc
+++ b/data/scripts/maps/LittlerootTown_MaysHouse_2F.inc
@@ -5,16 +5,16 @@ LittlerootTown_MaysHouse_2F_MapScripts:: @ 8152A50
LittlerootTown_MaysHouse_2F_MapScript1_152A5B:: @ 8152A5B
checkflag 130
- callif 0, LittlerootTown_MaysHouse_2F_EventScript_152A7A
+ call_if 0, LittlerootTown_MaysHouse_2F_EventScript_152A7A
compare 0x4092, 4
- callif 1, LittlerootTown_MaysHouse_2F_EventScript_1B6950
+ call_if 1, LittlerootTown_MaysHouse_2F_EventScript_1B6950
call LittlerootTown_MaysHouse_2F_EventScript_1A2F3D
setvar 0x4089, 0
end
LittlerootTown_MaysHouse_2F_EventScript_152A7A:: @ 8152A7A
- movespriteperm 1, 7, 2
- spritebehave 1, 7
+ setobjectxyperm 1, 7, 2
+ setobjectmovementtype 1, 7
return
LittlerootTown_MaysHouse_2F_MapScript2_152A86:: @ 8152A86
@@ -22,114 +22,114 @@ LittlerootTown_MaysHouse_2F_MapScript2_152A86:: @ 8152A86
.2byte 0
LittlerootTown_MaysHouse_2F_EventScript_152A90:: @ 8152A90
- checkgender
+ checkplayergender
compare RESULT, 1
- jumpeq LittlerootTown_MaysHouse_2F_EventScript_1A2F68
+ goto_if_eq LittlerootTown_MaysHouse_2F_EventScript_1A2F68
end
LittlerootTown_BrendansHouse_2F_EventScript_152A9D:: @ 8152A9D
LittlerootTown_MaysHouse_2F_EventScript_152A9D:: @ 8152A9D
lockall
checkflag 292
- jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152BB5
- checkgender
+ goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152BB5
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152AD4
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152AD4
compare RESULT, 1
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B4A
- playsfx 9
- disappear LAST_TALKED
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B4A
+ playse 9
+ removeobject LAST_TALKED
setvar 0x408d, 3
setvar 0x4050, 1
- playmusicbattle 0
- fadedefault
+ savebgm 0
+ fadedefaultbgm
releaseall
end
LittlerootTown_BrendansHouse_2F_EventScript_152AD4:: @ 8152AD4
msgbox LittlerootTown_BrendansHouse_2F_Text_17337E, 4
- playmusic 415, 1
- move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839
- waitmove 0
- move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0833
- waitmove 0
- move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0835
- waitmove 0
+ playbgm 415, 1
+ applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839
+ waitmovement 0
+ applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0833
+ waitmovement 0
+ applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0835
+ waitmovement 0
msgbox LittlerootTown_BrendansHouse_2F_Text_1733AF, 4
- closebutton
+ closemessage
compare FACING, 4
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B29
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B29
compare FACING, 2
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B34
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B34
compare FACING, 3
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B3F
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B3F
return
LittlerootTown_BrendansHouse_2F_EventScript_152B29:: @ 8152B29
- move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C11
- waitmove 0
+ applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C11
+ waitmovement 0
return
LittlerootTown_BrendansHouse_2F_EventScript_152B34:: @ 8152B34
- move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C1C
- waitmove 0
+ applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C1C
+ waitmovement 0
return
LittlerootTown_BrendansHouse_2F_EventScript_152B3F:: @ 8152B3F
- move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C1C
- waitmove 0
+ applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C1C
+ waitmovement 0
return
LittlerootTown_BrendansHouse_2F_EventScript_152B4A:: @ 8152B4A
msgbox LittlerootTown_BrendansHouse_2F_Text_1735C9, 4
- playmusic 421, 1
- move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839
- waitmove 0
- move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0833
- waitmove 0
- move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0835
- waitmove 0
+ playbgm 421, 1
+ applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839
+ waitmovement 0
+ applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0833
+ waitmovement 0
+ applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0835
+ waitmovement 0
msgbox LittlerootTown_BrendansHouse_2F_Text_1735FC, 4
- closebutton
+ closemessage
compare FACING, 4
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B9F
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B9F
compare FACING, 2
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152B9F
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152B9F
compare FACING, 3
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152BAA
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152BAA
return
LittlerootTown_BrendansHouse_2F_EventScript_152B9F:: @ 8152B9F
- move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C30
- waitmove 0
+ applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C30
+ waitmovement 0
return
LittlerootTown_BrendansHouse_2F_EventScript_152BAA:: @ 8152BAA
- move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C25
- waitmove 0
+ applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_152C25
+ waitmovement 0
return
LittlerootTown_BrendansHouse_2F_EventScript_152BB5:: @ 8152BB5
- move LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839
- waitmove 0
- checkgender
+ applymovement LAST_TALKED, LittlerootTown_BrendansHouse_2F_Movement_1A0839
+ waitmovement 0
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152BDB
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152BDB
compare RESULT, 1
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_152BED
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_152BED
setflag 293
releaseall
end
LittlerootTown_BrendansHouse_2F_EventScript_152BDB:: @ 8152BDB
checkflag 293
- jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152BFF
+ goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152BFF
msgbox LittlerootTown_BrendansHouse_2F_Text_1737AE, 4
return
LittlerootTown_BrendansHouse_2F_EventScript_152BED:: @ 8152BED
checkflag 293
- jumpeq LittlerootTown_BrendansHouse_2F_EventScript_152C08
+ goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_152C08
msgbox LittlerootTown_BrendansHouse_2F_Text_1738F2, 4
return
@@ -193,11 +193,11 @@ gUnknown_08152C39:: @ 8152C39
LittlerootTown_MaysHouse_2F_EventScript_152C39:: @ 8152C39
lockall
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq LittlerootTown_MaysHouse_2F_EventScript_152C52
+ goto_if_eq LittlerootTown_MaysHouse_2F_EventScript_152C52
compare RESULT, 1
- jumpeq LittlerootTown_MaysHouse_2F_EventScript_152C5C
+ goto_if_eq LittlerootTown_MaysHouse_2F_EventScript_152C5C
end
LittlerootTown_MaysHouse_2F_EventScript_152C52:: @ 8152C52
@@ -208,7 +208,7 @@ LittlerootTown_MaysHouse_2F_EventScript_152C52:: @ 8152C52
LittlerootTown_MaysHouse_2F_EventScript_152C5C:: @ 8152C5C
setvar 0x8004, 2
special DoPCTurnOnEffect
- playsfx SE_PC_ON
+ playse SE_PC_ON
msgbox LittlerootTown_MaysHouse_2F_Text_1A10D6, 4
special BedroomPC
waitstate
@@ -217,7 +217,7 @@ LittlerootTown_MaysHouse_2F_EventScript_152C5C:: @ 8152C5C
gMayHouse_TurnPCOff:: @ 8152C75
setvar 0x8004, 2
- playsfx SE_PC_OFF
+ playse SE_PC_OFF
special DoPCTurnOffEffect
releaseall
end
diff --git a/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc b/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc
index 94aeadfa6..e7ccd73f6 100644
--- a/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc
+++ b/data/scripts/maps/LittlerootTown_ProfessorBirchsLab.inc
@@ -14,7 +14,7 @@ LittlerootTown_ProfessorBirchsLab_MapScript2_152C9D:: @ 8152C9D
.2byte 0
LittlerootTown_ProfessorBirchsLab_EventScript_152CA7:: @ 8152CA7
- spriteface 255, 2
+ turnobject 255, 2
end
LittlerootTown_ProfessorBirchsLab_MapScript2_152CAC:: @ 8152CAC
@@ -24,30 +24,30 @@ LittlerootTown_ProfessorBirchsLab_MapScript2_152CAC:: @ 8152CAC
LittlerootTown_ProfessorBirchsLab_EventScript_152CBE:: @ 8152CBE
lockall
- bufferfirstpoke 0
+ getfirstpartypokename 0
message LittlerootTown_ProfessorBirchsLab_Text_173D94
- waittext
- fanfare 370
+ waitmessage
+ playfanfare 370
waitfanfare
msgbox LittlerootTown_ProfessorBirchsLab_Text_173EF8, 5
compare RESULT, 1
- jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152CEA
+ goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152CEA
compare RESULT, 0
- jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152CFA
+ goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152CFA
end
LittlerootTown_ProfessorBirchsLab_EventScript_152CEA:: @ 8152CEA
setvar 0x8004, 0
call LittlerootTown_ProfessorBirchsLab_EventScript_1A0678
- jump LittlerootTown_ProfessorBirchsLab_EventScript_152CFA
+ goto LittlerootTown_ProfessorBirchsLab_EventScript_152CFA
end
LittlerootTown_ProfessorBirchsLab_EventScript_152CFA:: @ 8152CFA
msgbox LittlerootTown_ProfessorBirchsLab_Text_173F3D, 5
compare RESULT, 1
- jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D19
+ goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D19
compare RESULT, 0
- jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D2B
+ goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D2B
end
LittlerootTown_ProfessorBirchsLab_EventScript_152D19:: @ 8152D19
@@ -60,16 +60,16 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152D19:: @ 8152D19
LittlerootTown_ProfessorBirchsLab_EventScript_152D2B:: @ 8152D2B
msgbox LittlerootTown_ProfessorBirchsLab_Text_174075, 5
compare RESULT, 1
- jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D19
+ goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D19
compare RESULT, 0
- jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D2B
+ goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D2B
end
LittlerootTown_ProfessorBirchsLab_EventScript_152D4A:: @ 8152D4A
lockall
- move 255, LittlerootTown_ProfessorBirchsLab_Movement_152D5B
- waitmove 0
- jump LittlerootTown_ProfessorBirchsLab_EventScript_152DBA
+ applymovement 255, LittlerootTown_ProfessorBirchsLab_Movement_152D5B
+ waitmovement 0
+ goto LittlerootTown_ProfessorBirchsLab_EventScript_152DBA
end
LittlerootTown_ProfessorBirchsLab_Movement_152D5B:: @ 8152D5B
@@ -86,9 +86,9 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152D63:: @ 8152D63
lock
faceplayer
compare 0x4084, 3
- jumpif 4, LittlerootTown_ProfessorBirchsLab_EventScript_152D90
+ goto_if 4, LittlerootTown_ProfessorBirchsLab_EventScript_152D90
checkflag 88
- jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152D86
+ goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152D86
msgbox LittlerootTown_ProfessorBirchsLab_Text_173B29, 4
setflag 88
release
@@ -108,9 +108,9 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152D9A:: @ 8152D9A
lock
faceplayer
checkflag 896
- jumpif 0, LittlerootTown_ProfessorBirchsLab_EventScript_1A037F
+ goto_if 0, LittlerootTown_ProfessorBirchsLab_EventScript_1A037F
compare 0x4084, 5
- jumpeq LittlerootTown_ProfessorBirchsLab_EventScript_152E7B
+ goto_if_eq LittlerootTown_ProfessorBirchsLab_EventScript_152E7B
msgbox LittlerootTown_ProfessorBirchsLab_Text_1740B4, 4
release
end
@@ -119,15 +119,15 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152DBA:: @ 8152DBA
msgbox LittlerootTown_ProfessorBirchsLab_Text_17411F, 4
call LittlerootTown_ProfessorBirchsLab_EventScript_152E6D
msgbox LittlerootTown_ProfessorBirchsLab_Text_174248, 4
- move 3, LittlerootTown_ProfessorBirchsLab_Movement_152E97
- waitmove 0
- move 255, LittlerootTown_ProfessorBirchsLab_Movement_1A0843
- waitmove 0
- checkgender
+ applymovement 3, LittlerootTown_ProfessorBirchsLab_Movement_152E97
+ waitmovement 0
+ applymovement 255, LittlerootTown_ProfessorBirchsLab_Movement_1A0843
+ waitmovement 0
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E13
+ call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E13
compare RESULT, 1
- callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E40
+ call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E40
setvar 0x4084, 5
setflag 116
setvar 0x4051, 1
@@ -140,7 +140,7 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152E13:: @ 8152E13
msgbox LittlerootTown_ProfessorBirchsLab_Text_1743D4, 4
giveitem ITEM_POKE_BALL, 5
compare RESULT, 0
- callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E85
+ call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E85
msgbox LittlerootTown_ProfessorBirchsLab_Text_17443D, 4
setvar RESULT, 0
return
@@ -149,16 +149,16 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152E40:: @ 8152E40
msgbox LittlerootTown_ProfessorBirchsLab_Text_17453C, 4
giveitem ITEM_POKE_BALL, 5
compare RESULT, 0
- callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E8E
+ call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152E8E
msgbox LittlerootTown_ProfessorBirchsLab_Text_17458C, 4
setvar RESULT, 1
return
LittlerootTown_ProfessorBirchsLab_EventScript_152E6D:: @ 8152E6D
- fanfare 370
+ playfanfare 370
message LittlerootTown_ProfessorBirchsLab_Text_17422F
waitfanfare
- waittext
+ waitmessage
setflag 2049
return
@@ -187,11 +187,11 @@ LittlerootTown_ProfessorBirchsLab_EventScript_152E9A:: @ 8152E9A
LittlerootTown_ProfessorBirchsLab_EventScript_152EA3:: @ 8152EA3
lock
faceplayer
- checkgender
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152EBE
+ call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152EBE
compare RESULT, 1
- callif 1, LittlerootTown_ProfessorBirchsLab_EventScript_152EC7
+ call_if 1, LittlerootTown_ProfessorBirchsLab_EventScript_152EC7
release
end
diff --git a/data/scripts/maps/MagmaHideout_B1F.inc b/data/scripts/maps/MagmaHideout_B1F.inc
index 0304181fb..780eea4f5 100644
--- a/data/scripts/maps/MagmaHideout_B1F.inc
+++ b/data/scripts/maps/MagmaHideout_B1F.inc
@@ -4,9 +4,9 @@ MagmaHideout_B1F_MapScripts:: @ 815F2A8
MagmaHideout_B1F_MapScript1_15F2AE:: @ 815F2AE
checkflag 2145
- callif 1, MagmaHideout_B1F_EventScript_15F2B8
+ call_if 1, MagmaHideout_B1F_EventScript_15F2B8
end
MagmaHideout_B1F_EventScript_15F2B8:: @ 815F2B8
- disappear LAST_TALKED
+ removeobject LAST_TALKED
return
diff --git a/data/scripts/maps/MauvilleCity.inc b/data/scripts/maps/MauvilleCity.inc
index 1b2827f2a..5c93aa252 100644
--- a/data/scripts/maps/MauvilleCity.inc
+++ b/data/scripts/maps/MauvilleCity.inc
@@ -9,7 +9,7 @@ MauvilleCity_MapScript1_14C038:: @ 814C038
clearflag 99
setvar 0x4093, 0
checkflag 209
- callif 1, MauvilleCity_EventScript_14C053
+ call_if 1, MauvilleCity_EventScript_14C053
end
MauvilleCity_EventScript_14C053:: @ 814C053
@@ -53,7 +53,7 @@ MauvilleCity_EventScript_14C0A2:: @ 814C0A2
lock
faceplayer
checkflag 98
- jumpeq MauvilleCity_EventScript_14C0BA
+ goto_if_eq MauvilleCity_EventScript_14C0BA
msgbox MauvilleCity_Text_16674A, 4
setflag 98
release
@@ -68,94 +68,94 @@ MauvilleCity_EventScript_14C0C4:: @ 814C0C4
lock
faceplayer
checkflag 284
- jumpeq MauvilleCity_EventScript_14C0E4
+ goto_if_eq MauvilleCity_EventScript_14C0E4
msgbox MauvilleCity_Text_165B76, 4
- closebutton
- move 7, MauvilleCity_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 7, MauvilleCity_Movement_1A083D
+ waitmovement 0
release
end
MauvilleCity_EventScript_14C0E4:: @ 814C0E4
msgbox MauvilleCity_Text_165E45, 4
- closebutton
- move 7, MauvilleCity_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 7, MauvilleCity_Movement_1A083D
+ waitmovement 0
release
end
MauvilleCity_EventScript_14C0F9:: @ 814C0F9
lockall
checkflag 284
- jumpeq MauvilleCity_EventScript_14C292
- move 6, MauvilleCity_Movement_1A0843
- waitmove 0
+ goto_if_eq MauvilleCity_EventScript_14C292
+ applymovement 6, MauvilleCity_Movement_1A0843
+ waitmovement 0
msgbox MauvilleCity_Text_165BE3, 4
msgbox MauvilleCity_Text_165C57, 4
msgbox MauvilleCity_Text_165D01, 4
- move 6, MauvilleCity_Movement_1A0839
- waitmove 0
- playsfx 21
- move 6, MauvilleCity_Movement_1A0833
- waitmove 0
- move 6, MauvilleCity_Movement_1A0835
- waitmove 0
+ applymovement 6, MauvilleCity_Movement_1A0839
+ waitmovement 0
+ playse 21
+ applymovement 6, MauvilleCity_Movement_1A0833
+ waitmovement 0
+ applymovement 6, MauvilleCity_Movement_1A0835
+ waitmovement 0
msgbox MauvilleCity_Text_165D50, 5
- jump MauvilleCity_EventScript_14C154
+ goto MauvilleCity_EventScript_14C154
end
MauvilleCity_EventScript_14C154:: @ 814C154
compare RESULT, 1
- callif 1, MauvilleCity_EventScript_14C23C
+ call_if 1, MauvilleCity_EventScript_14C23C
compare RESULT, 0
- jumpeq MauvilleCity_EventScript_14C285
- closebutton
+ goto_if_eq MauvilleCity_EventScript_14C285
+ closemessage
switch FACING
case 2, MauvilleCity_EventScript_14C187
case 4, MauvilleCity_EventScript_14C1D9
end
MauvilleCity_EventScript_14C187:: @ 814C187
- move 6, MauvilleCity_Movement_14C2AA
- move 7, MauvilleCity_Movement_14C2CC
- waitmove 0
- move 6, MauvilleCity_Movement_1A0843
- waitmove 0
- pause 30
- move 7, MauvilleCity_Movement_14C2D8
- waitmove 0
- move 255, MauvilleCity_Movement_1A0845
- waitmove 0
+ applymovement 6, MauvilleCity_Movement_14C2AA
+ applymovement 7, MauvilleCity_Movement_14C2CC
+ waitmovement 0
+ applymovement 6, MauvilleCity_Movement_1A0843
+ waitmovement 0
+ delay 30
+ applymovement 7, MauvilleCity_Movement_14C2D8
+ waitmovement 0
+ applymovement 255, MauvilleCity_Movement_1A0845
+ waitmovement 0
msgbox MauvilleCity_Text_1660FA, 4
- closebutton
- move 6, MauvilleCity_Movement_14C2B6
- move 7, MauvilleCity_Movement_14C2DF
- waitmove 0
- jump MauvilleCity_EventScript_14C22B
+ closemessage
+ applymovement 6, MauvilleCity_Movement_14C2B6
+ applymovement 7, MauvilleCity_Movement_14C2DF
+ waitmovement 0
+ goto MauvilleCity_EventScript_14C22B
end
MauvilleCity_EventScript_14C1D9:: @ 814C1D9
- move 6, MauvilleCity_Movement_14C2B0
- move 7, MauvilleCity_Movement_14C2D2
- waitmove 0
- move 6, MauvilleCity_Movement_1A0843
- waitmove 0
- pause 30
- move 7, MauvilleCity_Movement_14C2DC
- waitmove 0
- move 255, MauvilleCity_Movement_1A0845
- waitmove 0
+ applymovement 6, MauvilleCity_Movement_14C2B0
+ applymovement 7, MauvilleCity_Movement_14C2D2
+ waitmovement 0
+ applymovement 6, MauvilleCity_Movement_1A0843
+ waitmovement 0
+ delay 30
+ applymovement 7, MauvilleCity_Movement_14C2DC
+ waitmovement 0
+ applymovement 255, MauvilleCity_Movement_1A0845
+ waitmovement 0
msgbox MauvilleCity_Text_1660FA, 4
- closebutton
- move 6, MauvilleCity_Movement_14C2C1
- move 7, MauvilleCity_Movement_14C2E8
- waitmove 0
- jump MauvilleCity_EventScript_14C22B
+ closemessage
+ applymovement 6, MauvilleCity_Movement_14C2C1
+ applymovement 7, MauvilleCity_Movement_14C2E8
+ waitmovement 0
+ goto MauvilleCity_EventScript_14C22B
end
MauvilleCity_EventScript_14C22B:: @ 814C22B
- disappear 6
- disappear 7
+ removeobject 6
+ removeobject 7
clearflag 806
clearflag 809
setflag 190
@@ -165,14 +165,14 @@ MauvilleCity_EventScript_14C22B:: @ 814C22B
MauvilleCity_EventScript_14C23C:: @ 814C23C
msgbox MauvilleCity_Text_165F0D, 4
trainerbattle 3, OPPONENT_WALLY_2, 0, MauvilleCity_Text_165F38
- move 6, MauvilleCity_Movement_1A0843
- waitmove 0
+ applymovement 6, MauvilleCity_Movement_1A0843
+ waitmovement 0
msgbox MauvilleCity_Text_165F85, 4
- move 6, MauvilleCity_Movement_1A0839
- waitmove 0
+ applymovement 6, MauvilleCity_Movement_1A0839
+ waitmovement 0
msgbox MauvilleCity_Text_165FB3, 4
- move 6, MauvilleCity_Movement_1A0843
- waitmove 0
+ applymovement 6, MauvilleCity_Movement_1A0843
+ waitmovement 0
msgbox MauvilleCity_Text_166050, 4
return
@@ -183,10 +183,10 @@ MauvilleCity_EventScript_14C285:: @ 814C285
end
MauvilleCity_EventScript_14C292:: @ 814C292
- move 6, MauvilleCity_Movement_1A0839
- waitmove 0
+ applymovement 6, MauvilleCity_Movement_1A0839
+ waitmovement 0
msgbox MauvilleCity_Text_165EE2, 5
- jump MauvilleCity_EventScript_14C154
+ goto MauvilleCity_EventScript_14C154
end
MauvilleCity_Movement_14C2AA:: @ 814C2AA
@@ -285,11 +285,11 @@ MauvilleCity_EventScript_14C2F2:: @ 814C2F2
lock
faceplayer
checkflag 209
- jumpeq MauvilleCity_EventScript_14C368
+ goto_if_eq MauvilleCity_EventScript_14C368
compare 0x40ba, 2
- jumpeq MauvilleCity_EventScript_14C33C
+ goto_if_eq MauvilleCity_EventScript_14C33C
checkflag 208
- jumpeq MauvilleCity_EventScript_14C332
+ goto_if_eq MauvilleCity_EventScript_14C332
msgbox MauvilleCity_Text_1661C1, 4
giveitem ITEM_BASEMENT_KEY
setflag 208
@@ -306,7 +306,7 @@ MauvilleCity_EventScript_14C33C:: @ 814C33C
msgbox MauvilleCity_Text_1663EB, 4
giveitem ITEM_TM24
compare RESULT, 0
- jumpeq MauvilleCity_EventScript_1A029B
+ goto_if_eq MauvilleCity_EventScript_1A029B
setflag 209
msgbox MauvilleCity_Text_166488, 4
release
diff --git a/data/scripts/maps/MauvilleCity_BikeShop.inc b/data/scripts/maps/MauvilleCity_BikeShop.inc
index 5436bf38a..a93ff5170 100644
--- a/data/scripts/maps/MauvilleCity_BikeShop.inc
+++ b/data/scripts/maps/MauvilleCity_BikeShop.inc
@@ -5,28 +5,28 @@ MauvilleCity_BikeShop_EventScript_156796:: @ 8156796
lock
faceplayer
checkflag 90
- jumpeq MauvilleCity_BikeShop_EventScript_15686E
+ goto_if_eq MauvilleCity_BikeShop_EventScript_15686E
checkflag 89
- jumpeq MauvilleCity_BikeShop_EventScript_1567D1
+ goto_if_eq MauvilleCity_BikeShop_EventScript_1567D1
msgbox MauvilleCity_BikeShop_Text_180F9F, 4
msgbox MauvilleCity_BikeShop_Text_181016, 5
compare RESULT, 1
- jumpeq MauvilleCity_BikeShop_EventScript_156824
+ goto_if_eq MauvilleCity_BikeShop_EventScript_156824
compare RESULT, 0
- jumpeq MauvilleCity_BikeShop_EventScript_156817
+ goto_if_eq MauvilleCity_BikeShop_EventScript_156817
end
MauvilleCity_BikeShop_EventScript_1567D1:: @ 81567D1
msgbox MauvilleCity_BikeShop_Text_181016, 5
compare RESULT, 1
- jumpeq MauvilleCity_BikeShop_EventScript_156824
+ goto_if_eq MauvilleCity_BikeShop_EventScript_156824
compare RESULT, 0
- jumpeq MauvilleCity_BikeShop_EventScript_156817
+ goto_if_eq MauvilleCity_BikeShop_EventScript_156817
end
MauvilleCity_BikeShop_EventScript_1567F0:: @ 81567F0
message MauvilleCity_BikeShop_Text_1810B1
- waittext
+ waitmessage
multichoice 21, 8, 12, 1
switch RESULT
case 0, MauvilleCity_BikeShop_EventScript_15682D
@@ -41,19 +41,19 @@ MauvilleCity_BikeShop_EventScript_156817:: @ 8156817
MauvilleCity_BikeShop_EventScript_156824:: @ 8156824
setflag 90
- jump MauvilleCity_BikeShop_EventScript_1567F0
+ goto MauvilleCity_BikeShop_EventScript_1567F0
end
MauvilleCity_BikeShop_EventScript_15682D:: @ 815682D
msgbox MauvilleCity_BikeShop_Text_181332, 4
giveitem ITEM_MACH_BIKE
- jump MauvilleCity_BikeShop_EventScript_156861
+ goto MauvilleCity_BikeShop_EventScript_156861
end
MauvilleCity_BikeShop_EventScript_156847:: @ 8156847
msgbox MauvilleCity_BikeShop_Text_18134A, 4
giveitem ITEM_ACRO_BIKE
- jump MauvilleCity_BikeShop_EventScript_156861
+ goto MauvilleCity_BikeShop_EventScript_156861
end
MauvilleCity_BikeShop_EventScript_156861:: @ 8156861
@@ -65,19 +65,19 @@ MauvilleCity_BikeShop_EventScript_156861:: @ 8156861
MauvilleCity_BikeShop_EventScript_15686E:: @ 815686E
msgbox MauvilleCity_BikeShop_Text_1813A0, 5
compare RESULT, 1
- jumpeq MauvilleCity_BikeShop_EventScript_15688D
+ goto_if_eq MauvilleCity_BikeShop_EventScript_15688D
compare RESULT, 0
- jumpeq MauvilleCity_BikeShop_EventScript_1568BF
+ goto_if_eq MauvilleCity_BikeShop_EventScript_1568BF
end
MauvilleCity_BikeShop_EventScript_15688D:: @ 815688D
msgbox MauvilleCity_BikeShop_Text_1813D4, 4
checkitem ITEM_ACRO_BIKE, 1
compare RESULT, 1
- jumpeq MauvilleCity_BikeShop_EventScript_1568C9
+ goto_if_eq MauvilleCity_BikeShop_EventScript_1568C9
checkitem ITEM_MACH_BIKE, 1
compare RESULT, 1
- jumpeq MauvilleCity_BikeShop_EventScript_1568EA
+ goto_if_eq MauvilleCity_BikeShop_EventScript_1568EA
msgbox MauvilleCity_BikeShop_Text_181498, 4
release
end
@@ -88,19 +88,19 @@ MauvilleCity_BikeShop_EventScript_1568BF:: @ 81568BF
end
MauvilleCity_BikeShop_EventScript_1568C9:: @ 81568C9
- inccounter GAME_STAT_TRADED_BIKES
+ incrementgamestat GAME_STAT_TRADED_BIKES
msgbox MauvilleCity_BikeShop_Text_181439, 4
removeitem ITEM_ACRO_BIKE, 1
giveitem ITEM_MACH_BIKE
- jump MauvilleCity_BikeShop_EventScript_156861
+ goto MauvilleCity_BikeShop_EventScript_156861
end
MauvilleCity_BikeShop_EventScript_1568EA:: @ 81568EA
- inccounter GAME_STAT_TRADED_BIKES
+ incrementgamestat GAME_STAT_TRADED_BIKES
msgbox MauvilleCity_BikeShop_Text_181408, 4
removeitem ITEM_MACH_BIKE, 1
giveitem ITEM_ACRO_BIKE
- jump MauvilleCity_BikeShop_EventScript_156861
+ goto MauvilleCity_BikeShop_EventScript_156861
end
MauvilleCity_BikeShop_EventScript_15690B:: @ 815690B
@@ -109,8 +109,8 @@ MauvilleCity_BikeShop_EventScript_15690B:: @ 815690B
MauvilleCity_BikeShop_EventScript_156914:: @ 8156914
message MauvilleCity_BikeShop_Text_1815EA
- waittext
- jump MauvilleCity_BikeShop_EventScript_156920
+ waitmessage
+ goto MauvilleCity_BikeShop_EventScript_156920
end
MauvilleCity_BikeShop_EventScript_156920:: @ 8156920
@@ -125,20 +125,20 @@ MauvilleCity_BikeShop_EventScript_156920:: @ 8156920
MauvilleCity_BikeShop_EventScript_156962:: @ 8156962
message MauvilleCity_BikeShop_Text_18162C
- waittext
- jump MauvilleCity_BikeShop_EventScript_156920
+ waitmessage
+ goto MauvilleCity_BikeShop_EventScript_156920
end
MauvilleCity_BikeShop_EventScript_15696E:: @ 815696E
message MauvilleCity_BikeShop_Text_1816F5
- waittext
- jump MauvilleCity_BikeShop_EventScript_156920
+ waitmessage
+ goto MauvilleCity_BikeShop_EventScript_156920
end
MauvilleCity_BikeShop_EventScript_15697A:: @ 815697A
message MauvilleCity_BikeShop_Text_1817BF
- waittext
- jump MauvilleCity_BikeShop_EventScript_156920
+ waitmessage
+ goto MauvilleCity_BikeShop_EventScript_156920
end
MauvilleCity_BikeShop_EventScript_156986:: @ 8156986
@@ -147,8 +147,8 @@ MauvilleCity_BikeShop_EventScript_156986:: @ 8156986
MauvilleCity_BikeShop_EventScript_156988:: @ 8156988
message MauvilleCity_BikeShop_Text_181892
- waittext
- jump MauvilleCity_BikeShop_EventScript_156994
+ waitmessage
+ goto MauvilleCity_BikeShop_EventScript_156994
end
MauvilleCity_BikeShop_EventScript_156994:: @ 8156994
@@ -163,20 +163,20 @@ MauvilleCity_BikeShop_EventScript_156994:: @ 8156994
MauvilleCity_BikeShop_EventScript_1569D6:: @ 81569D6
message MauvilleCity_BikeShop_Text_1818D4
- waittext
- jump MauvilleCity_BikeShop_EventScript_156994
+ waitmessage
+ goto MauvilleCity_BikeShop_EventScript_156994
end
MauvilleCity_BikeShop_EventScript_1569E2:: @ 81569E2
message MauvilleCity_BikeShop_Text_18199A
- waittext
- jump MauvilleCity_BikeShop_EventScript_156994
+ waitmessage
+ goto MauvilleCity_BikeShop_EventScript_156994
end
MauvilleCity_BikeShop_EventScript_1569EE:: @ 81569EE
message MauvilleCity_BikeShop_Text_181A3D
- waittext
- jump MauvilleCity_BikeShop_EventScript_156994
+ waitmessage
+ goto MauvilleCity_BikeShop_EventScript_156994
end
MauvilleCity_BikeShop_EventScript_1569FA:: @ 81569FA
diff --git a/data/scripts/maps/MauvilleCity_GameCorner.inc b/data/scripts/maps/MauvilleCity_GameCorner.inc
index f20a7dacd..2e0231287 100644
--- a/data/scripts/maps/MauvilleCity_GameCorner.inc
+++ b/data/scripts/maps/MauvilleCity_GameCorner.inc
@@ -7,65 +7,65 @@ MauvilleCity_GameCorner_EventScript_156A34:: @ 8156A34
msgbox MauvilleCity_GameCorner_Text_181C35, 4
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156B32
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156B32
message MauvilleCity_GameCorner_Text_181CB4
- waittext
- showmoney 0, 0
- snop
- showcoins 0, 5
- jump MauvilleCity_GameCorner_EventScript_156A60
+ waitmessage
+ showmoneybox 0, 0
+ nop
+ showcoinsbox 0, 5
+ goto MauvilleCity_GameCorner_EventScript_156A60
MauvilleCity_GameCorner_EventScript_156A60:: @ 8156A60
- multichoicedef 15, 0, 49, 0, 0
+ multichoicedefault 15, 0, 49, 0, 0
switch RESULT
case 0, MauvilleCity_GameCorner_EventScript_156AAE
case 1, MauvilleCity_GameCorner_EventScript_156AF0
- jump MauvilleCity_GameCorner_EventScript_156B4C
+ goto MauvilleCity_GameCorner_EventScript_156B4C
end
@ 8156A87
- multichoicedef 15, 0, 49, 1, 0
+ multichoicedefault 15, 0, 49, 1, 0
switch RESULT
case 0, MauvilleCity_GameCorner_EventScript_156AAE
case 1, MauvilleCity_GameCorner_EventScript_156AF0
- jump MauvilleCity_GameCorner_EventScript_156B4C
+ goto MauvilleCity_GameCorner_EventScript_156B4C
end
MauvilleCity_GameCorner_EventScript_156AAE:: @ 8156AAE
checkcoins 16385
compare 0x4001, 9950
- jumpif 4, MauvilleCity_GameCorner_EventScript_156B5C
+ goto_if 4, MauvilleCity_GameCorner_EventScript_156B5C
checkmoney 0x3e8, 0
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156B3C
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156B3C
givecoins 50
- paymoney 0x3e8, 0
- updatemoney 0, 0
- snop
- updatecoins 0, 5
- playsfx 95
+ takemoney 0x3e8, 0
+ updatemoneybox 0, 0
+ nop
+ updatecoinsbox 0, 5
+ playse 95
msgbox MauvilleCity_GameCorner_Text_181CFE, 4
- hidemoney 0, 0
- hidecoins 0, 5
+ hidemoneybox 0, 0
+ hidecoinsbox 0, 5
release
end
MauvilleCity_GameCorner_EventScript_156AF0:: @ 8156AF0
checkcoins 16385
compare 0x4001, 9500
- jumpif 4, MauvilleCity_GameCorner_EventScript_156B5C
+ goto_if 4, MauvilleCity_GameCorner_EventScript_156B5C
checkmoney 0x2710, 0
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156B3C
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156B3C
givecoins 500
- paymoney 0x2710, 0
- updatemoney 0, 0
- snop
- updatecoins 0, 5
- playsfx 95
+ takemoney 0x2710, 0
+ updatemoneybox 0, 0
+ nop
+ updatecoinsbox 0, 5
+ playse 95
msgbox MauvilleCity_GameCorner_Text_181CFE, 4
- hidemoney 0, 0
- hidecoins 0, 5
+ hidemoneybox 0, 0
+ hidecoinsbox 0, 5
release
end
@@ -76,22 +76,22 @@ MauvilleCity_GameCorner_EventScript_156B32:: @ 8156B32
MauvilleCity_GameCorner_EventScript_156B3C:: @ 8156B3C
msgbox MauvilleCity_GameCorner_Text_181D28, 4
- hidemoney 0, 0
- hidecoins 0, 5
+ hidemoneybox 0, 0
+ hidecoinsbox 0, 5
release
end
MauvilleCity_GameCorner_EventScript_156B4C:: @ 8156B4C
msgbox MauvilleCity_GameCorner_Text_181D73, 4
- hidemoney 0, 0
- hidecoins 0, 5
+ hidemoneybox 0, 0
+ hidecoinsbox 0, 5
release
end
MauvilleCity_GameCorner_EventScript_156B5C:: @ 8156B5C
msgbox MauvilleCity_GameCorner_Text_181D57, 4
- hidemoney 0, 0
- hidecoins 0, 5
+ hidemoneybox 0, 0
+ hidecoinsbox 0, 5
release
end
@@ -101,21 +101,21 @@ MauvilleCity_GameCorner_EventScript_156B6C:: @ 8156B6C
msgbox MauvilleCity_GameCorner_Text_181DE1, 4
checkitem ITEM_COIN_CASE, 1
compare RESULT, 1
- jumpeq MauvilleCity_GameCorner_EventScript_156B88
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156B88
release
end
MauvilleCity_GameCorner_EventScript_156B88:: @ 8156B88
message MauvilleCity_GameCorner_Text_181E17
- waittext
- showcoins 0, 0
+ waitmessage
+ showcoinsbox 0, 0
setvar 0x4001, 0
- jump MauvilleCity_GameCorner_EventScript_156BA6
+ goto MauvilleCity_GameCorner_EventScript_156BA6
MauvilleCity_GameCorner_EventScript_156B9B:: @ 8156B9B
message MauvilleCity_GameCorner_Text_181E17
- waittext
- jump MauvilleCity_GameCorner_EventScript_156BA6
+ waitmessage
+ goto MauvilleCity_GameCorner_EventScript_156BA6
MauvilleCity_GameCorner_EventScript_156BA6:: @ 8156BA6
multichoice 12, 0, 48, 0
@@ -124,28 +124,28 @@ MauvilleCity_GameCorner_EventScript_156BA6:: @ 8156BA6
case 1, MauvilleCity_GameCorner_EventScript_156BF0
case 2, MauvilleCity_GameCorner_EventScript_156BFE
case 3, MauvilleCity_GameCorner_EventScript_156D0D
- jump MauvilleCity_GameCorner_EventScript_156D0D
+ goto MauvilleCity_GameCorner_EventScript_156D0D
end
MauvilleCity_GameCorner_EventScript_156BE2:: @ 8156BE2
setvar 0x4001, 1
- bufferdecor 0, 88
- jump MauvilleCity_GameCorner_EventScript_156C0C
+ getdecorname 0, 88
+ goto MauvilleCity_GameCorner_EventScript_156C0C
MauvilleCity_GameCorner_EventScript_156BF0:: @ 8156BF0
setvar 0x4001, 2
- bufferdecor 0, 89
- jump MauvilleCity_GameCorner_EventScript_156C0C
+ getdecorname 0, 89
+ goto MauvilleCity_GameCorner_EventScript_156C0C
MauvilleCity_GameCorner_EventScript_156BFE:: @ 8156BFE
setvar 0x4001, 3
- bufferdecor 0, 90
- jump MauvilleCity_GameCorner_EventScript_156C0C
+ getdecorname 0, 90
+ goto MauvilleCity_GameCorner_EventScript_156C0C
MauvilleCity_GameCorner_EventScript_156C0C:: @ 8156C0C
msgbox MauvilleCity_GameCorner_Text_181E33, 5
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156D0D
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156D0D
switch 0x4001
case 1, MauvilleCity_GameCorner_EventScript_156C46
case 2, MauvilleCity_GameCorner_EventScript_156C80
@@ -155,64 +155,64 @@ MauvilleCity_GameCorner_EventScript_156C0C:: @ 8156C0C
MauvilleCity_GameCorner_EventScript_156C46:: @ 8156C46
checkcoins 16386
compare 0x4002, 1000
- jumpif 0, MauvilleCity_GameCorner_EventScript_156CF4
- bufferdecor 1, 88
+ goto_if 0, MauvilleCity_GameCorner_EventScript_156CF4
+ getdecorname 1, 88
checkdecor 88
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156D02
- removecoins 1000
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156D02
+ takecoins 1000
adddecor 88
- updatecoins 0, 0
- playsfx 95
+ updatecoinsbox 0, 0
+ playse 95
msgbox MauvilleCity_GameCorner_Text_181E49, 4
- jump MauvilleCity_GameCorner_EventScript_156B9B
+ goto MauvilleCity_GameCorner_EventScript_156B9B
end
MauvilleCity_GameCorner_EventScript_156C80:: @ 8156C80
checkcoins 16386
compare 0x4002, 1000
- jumpif 0, MauvilleCity_GameCorner_EventScript_156CF4
- bufferdecor 1, 89
+ goto_if 0, MauvilleCity_GameCorner_EventScript_156CF4
+ getdecorname 1, 89
checkdecor 89
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156D02
- removecoins 1000
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156D02
+ takecoins 1000
adddecor 89
- updatecoins 0, 0
- playsfx 95
+ updatecoinsbox 0, 0
+ playse 95
msgbox MauvilleCity_GameCorner_Text_181E49, 4
- jump MauvilleCity_GameCorner_EventScript_156B9B
+ goto MauvilleCity_GameCorner_EventScript_156B9B
end
MauvilleCity_GameCorner_EventScript_156CBA:: @ 8156CBA
checkcoins 16386
compare 0x4002, 1000
- jumpif 0, MauvilleCity_GameCorner_EventScript_156CF4
- bufferdecor 1, 90
+ goto_if 0, MauvilleCity_GameCorner_EventScript_156CF4
+ getdecorname 1, 90
checkdecor 90
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156D02
- removecoins 1000
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156D02
+ takecoins 1000
adddecor 90
- updatecoins 0, 0
- playsfx 95
+ updatecoinsbox 0, 0
+ playse 95
msgbox MauvilleCity_GameCorner_Text_181E49, 4
- jump MauvilleCity_GameCorner_EventScript_156B9B
+ goto MauvilleCity_GameCorner_EventScript_156B9B
end
MauvilleCity_GameCorner_EventScript_156CF4:: @ 8156CF4
msgbox MauvilleCity_GameCorner_Text_181E76, 4
- jump MauvilleCity_GameCorner_EventScript_156B9B
+ goto MauvilleCity_GameCorner_EventScript_156B9B
end
MauvilleCity_GameCorner_EventScript_156D02:: @ 8156D02
call MauvilleCity_GameCorner_EventScript_1A02B8
- jump MauvilleCity_GameCorner_EventScript_156B9B
+ goto MauvilleCity_GameCorner_EventScript_156B9B
end
MauvilleCity_GameCorner_EventScript_156D0D:: @ 8156D0D
msgbox MauvilleCity_GameCorner_Text_181EC2, 4
- hidecoins 0, 0
+ hidecoinsbox 0, 0
release
end
@@ -222,21 +222,21 @@ MauvilleCity_GameCorner_EventScript_156D1A:: @ 8156D1A
msgbox MauvilleCity_GameCorner_Text_181DE1, 4
checkitem ITEM_COIN_CASE, 1
compare RESULT, 1
- jumpeq MauvilleCity_GameCorner_EventScript_156D36
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156D36
release
end
MauvilleCity_GameCorner_EventScript_156D36:: @ 8156D36
message MauvilleCity_GameCorner_Text_181E17
- waittext
- showcoins 0, 0
+ waitmessage
+ showcoinsbox 0, 0
setvar 0x4001, 0
- jump MauvilleCity_GameCorner_EventScript_156D54
+ goto MauvilleCity_GameCorner_EventScript_156D54
MauvilleCity_GameCorner_EventScript_156D49:: @ 8156D49
message MauvilleCity_GameCorner_Text_181E17
- waittext
- jump MauvilleCity_GameCorner_EventScript_156D54
+ waitmessage
+ goto MauvilleCity_GameCorner_EventScript_156D54
MauvilleCity_GameCorner_EventScript_156D54:: @ 8156D54
multichoice 12, 0, 55, 0
@@ -247,38 +247,38 @@ MauvilleCity_GameCorner_EventScript_156D54:: @ 8156D54
case 3, MauvilleCity_GameCorner_EventScript_156DD0
case 4, MauvilleCity_GameCorner_EventScript_156DDE
case 5, MauvilleCity_GameCorner_EventScript_156F77
- jump MauvilleCity_GameCorner_EventScript_156F77
+ goto MauvilleCity_GameCorner_EventScript_156F77
end
MauvilleCity_GameCorner_EventScript_156DA6:: @ 8156DA6
setvar 0x4001, 1
- bufferitem 0, ITEM_TM32
- jump MauvilleCity_GameCorner_EventScript_156DEC
+ getitemname 0, ITEM_TM32
+ goto MauvilleCity_GameCorner_EventScript_156DEC
MauvilleCity_GameCorner_EventScript_156DB4:: @ 8156DB4
setvar 0x4001, 2
- bufferitem 0, ITEM_TM29
- jump MauvilleCity_GameCorner_EventScript_156DEC
+ getitemname 0, ITEM_TM29
+ goto MauvilleCity_GameCorner_EventScript_156DEC
MauvilleCity_GameCorner_EventScript_156DC2:: @ 8156DC2
setvar 0x4001, 3
- bufferitem 0, ITEM_TM35
- jump MauvilleCity_GameCorner_EventScript_156DEC
+ getitemname 0, ITEM_TM35
+ goto MauvilleCity_GameCorner_EventScript_156DEC
MauvilleCity_GameCorner_EventScript_156DD0:: @ 8156DD0
setvar 0x4001, 4
- bufferitem 0, ITEM_TM24
- jump MauvilleCity_GameCorner_EventScript_156DEC
+ getitemname 0, ITEM_TM24
+ goto MauvilleCity_GameCorner_EventScript_156DEC
MauvilleCity_GameCorner_EventScript_156DDE:: @ 8156DDE
setvar 0x4001, 5
- bufferitem 0, ITEM_TM13
- jump MauvilleCity_GameCorner_EventScript_156DEC
+ getitemname 0, ITEM_TM13
+ goto MauvilleCity_GameCorner_EventScript_156DEC
MauvilleCity_GameCorner_EventScript_156DEC:: @ 8156DEC
msgbox MauvilleCity_GameCorner_Text_181E33, 5
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156F77
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156F77
switch 0x4001
case 1, MauvilleCity_GameCorner_EventScript_156E3C
case 2, MauvilleCity_GameCorner_EventScript_156E76
@@ -290,91 +290,91 @@ MauvilleCity_GameCorner_EventScript_156DEC:: @ 8156DEC
MauvilleCity_GameCorner_EventScript_156E3C:: @ 8156E3C
checkcoins 16386
compare 0x4002, 1500
- jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E
+ goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E
checkitemspace ITEM_TM32, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156F6C
- removecoins 1500
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C
+ takecoins 1500
additem ITEM_TM32, 1
- updatecoins 0, 0
- playsfx 95
+ updatecoinsbox 0, 0
+ playse 95
msgbox MauvilleCity_GameCorner_Text_181F08, 4
- jump MauvilleCity_GameCorner_EventScript_156D49
+ goto MauvilleCity_GameCorner_EventScript_156D49
end
MauvilleCity_GameCorner_EventScript_156E76:: @ 8156E76
checkcoins 16386
compare 0x4002, 3500
- jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E
+ goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E
checkitemspace ITEM_TM29, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156F6C
- removecoins 3500
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C
+ takecoins 3500
additem ITEM_TM29, 1
- updatecoins 0, 0
- playsfx 95
+ updatecoinsbox 0, 0
+ playse 95
msgbox MauvilleCity_GameCorner_Text_181F08, 4
- jump MauvilleCity_GameCorner_EventScript_156D49
+ goto MauvilleCity_GameCorner_EventScript_156D49
end
MauvilleCity_GameCorner_EventScript_156EB0:: @ 8156EB0
checkcoins 16386
compare 0x4002, 4000
- jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E
+ goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E
checkitemspace ITEM_TM35, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156F6C
- removecoins 4000
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C
+ takecoins 4000
additem ITEM_TM35, 1
- updatecoins 0, 0
- playsfx 95
+ updatecoinsbox 0, 0
+ playse 95
msgbox MauvilleCity_GameCorner_Text_181F08, 4
- jump MauvilleCity_GameCorner_EventScript_156D49
+ goto MauvilleCity_GameCorner_EventScript_156D49
end
MauvilleCity_GameCorner_EventScript_156EEA:: @ 8156EEA
checkcoins 16386
compare 0x4002, 4000
- jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E
+ goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E
checkitemspace ITEM_TM24, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156F6C
- removecoins 4000
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C
+ takecoins 4000
additem ITEM_TM24, 1
- updatecoins 0, 0
- playsfx 95
+ updatecoinsbox 0, 0
+ playse 95
msgbox MauvilleCity_GameCorner_Text_181F08, 4
- jump MauvilleCity_GameCorner_EventScript_156D49
+ goto MauvilleCity_GameCorner_EventScript_156D49
end
MauvilleCity_GameCorner_EventScript_156F24:: @ 8156F24
checkcoins 16386
compare 0x4002, 4000
- jumpif 0, MauvilleCity_GameCorner_EventScript_156F5E
+ goto_if 0, MauvilleCity_GameCorner_EventScript_156F5E
checkitemspace ITEM_TM13, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_156F6C
- removecoins 4000
+ goto_if_eq MauvilleCity_GameCorner_EventScript_156F6C
+ takecoins 4000
additem ITEM_TM13, 1
- updatecoins 0, 0
- playsfx 95
+ updatecoinsbox 0, 0
+ playse 95
msgbox MauvilleCity_GameCorner_Text_181F08, 4
- jump MauvilleCity_GameCorner_EventScript_156D49
+ goto MauvilleCity_GameCorner_EventScript_156D49
end
MauvilleCity_GameCorner_EventScript_156F5E:: @ 8156F5E
msgbox MauvilleCity_GameCorner_Text_181E76, 4
- jump MauvilleCity_GameCorner_EventScript_156D49
+ goto MauvilleCity_GameCorner_EventScript_156D49
end
MauvilleCity_GameCorner_EventScript_156F6C:: @ 8156F6C
call MauvilleCity_GameCorner_EventScript_1A02A5
- jump MauvilleCity_GameCorner_EventScript_156D49
+ goto MauvilleCity_GameCorner_EventScript_156D49
end
MauvilleCity_GameCorner_EventScript_156F77:: @ 8156F77
msgbox MauvilleCity_GameCorner_Text_181EC2, 4
- hidecoins 0, 0
+ hidecoinsbox 0, 0
release
end
@@ -390,10 +390,10 @@ MauvilleCity_GameCorner_EventScript_156F96:: @ 8156F96
lock
faceplayer
checkflag 226
- jumpeq MauvilleCity_GameCorner_EventScript_157072
+ goto_if_eq MauvilleCity_GameCorner_EventScript_157072
msgbox MauvilleCity_GameCorner_Text_181F3D, 5
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_157068
+ goto_if_eq MauvilleCity_GameCorner_EventScript_157068
switch 0x4023
case 0, MauvilleCity_GameCorner_EventScript_156FDB
case 1, MauvilleCity_GameCorner_EventScript_157005
@@ -401,36 +401,36 @@ MauvilleCity_GameCorner_EventScript_156F96:: @ 8156F96
end
MauvilleCity_GameCorner_EventScript_156FDB:: @ 8156FDB
- bufferdecor 1, 88
+ getdecorname 1, 88
checkdecor 88
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_157059
+ goto_if_eq MauvilleCity_GameCorner_EventScript_157059
msgbox MauvilleCity_GameCorner_Text_181F89, 4
givedecoration 88
setflag 226
- jump MauvilleCity_GameCorner_EventScript_157072
+ goto MauvilleCity_GameCorner_EventScript_157072
end
MauvilleCity_GameCorner_EventScript_157005:: @ 8157005
- bufferdecor 1, 89
+ getdecorname 1, 89
checkdecor 89
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_157059
+ goto_if_eq MauvilleCity_GameCorner_EventScript_157059
msgbox MauvilleCity_GameCorner_Text_181F89, 4
givedecoration 89
setflag 226
- jump MauvilleCity_GameCorner_EventScript_157072
+ goto MauvilleCity_GameCorner_EventScript_157072
end
MauvilleCity_GameCorner_EventScript_15702F:: @ 815702F
- bufferdecor 1, 90
+ getdecorname 1, 90
checkdecor 90
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_157059
+ goto_if_eq MauvilleCity_GameCorner_EventScript_157059
msgbox MauvilleCity_GameCorner_Text_181F89, 4
givedecoration 90
setflag 226
- jump MauvilleCity_GameCorner_EventScript_157072
+ goto MauvilleCity_GameCorner_EventScript_157072
end
MauvilleCity_GameCorner_EventScript_157059:: @ 8157059
@@ -454,54 +454,54 @@ MauvilleCity_GameCorner_EventScript_15707C:: @ 815707C
faceplayer
checkitem ITEM_COIN_CASE, 1
compare RESULT, 1
- jumpeq MauvilleCity_GameCorner_EventScript_15709C
+ goto_if_eq MauvilleCity_GameCorner_EventScript_15709C
msgbox MauvilleCity_GameCorner_Text_18201E, 4
- jump MauvilleCity_GameCorner_EventScript_157108
+ goto MauvilleCity_GameCorner_EventScript_157108
end
MauvilleCity_GameCorner_EventScript_15709C:: @ 815709C
checkflag 225
- jumpeq MauvilleCity_GameCorner_EventScript_1570CA
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1570CA
checkcoins 16385
compare 0x4001, 1
- jumpif 4, MauvilleCity_GameCorner_EventScript_1570CA
+ goto_if 4, MauvilleCity_GameCorner_EventScript_1570CA
setflag 225
givecoins 20
msgbox MauvilleCity_GameCorner_Text_18208E, 4
- playsfx 95
- jump MauvilleCity_GameCorner_EventScript_1570CA
+ playse 95
+ goto MauvilleCity_GameCorner_EventScript_1570CA
end
MauvilleCity_GameCorner_EventScript_1570CA:: @ 81570CA
msgbox MauvilleCity_GameCorner_Text_1820DD, 4
- jump MauvilleCity_GameCorner_EventScript_157108
+ goto MauvilleCity_GameCorner_EventScript_157108
end
MauvilleCity_GameCorner_EventScript_1570D8:: @ 81570D8
lock
faceplayer
msgbox MauvilleCity_GameCorner_Text_182120, 4
- jump MauvilleCity_GameCorner_EventScript_157108
+ goto MauvilleCity_GameCorner_EventScript_157108
end
MauvilleCity_GameCorner_EventScript_1570E8:: @ 81570E8
lock
faceplayer
msgbox MauvilleCity_GameCorner_Text_18217C, 4
- jump MauvilleCity_GameCorner_EventScript_157108
+ goto MauvilleCity_GameCorner_EventScript_157108
end
MauvilleCity_GameCorner_EventScript_1570F8:: @ 81570F8
lock
faceplayer
msgbox MauvilleCity_GameCorner_Text_182241, 4
- jump MauvilleCity_GameCorner_EventScript_157108
+ goto MauvilleCity_GameCorner_EventScript_157108
end
MauvilleCity_GameCorner_EventScript_157108:: @ 8157108
- closebutton
- move LAST_TALKED, MauvilleCity_GameCorner_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, MauvilleCity_GameCorner_Movement_1A083D
+ waitmovement 0
release
end
@@ -509,24 +509,24 @@ MauvilleCity_GameCorner_EventScript_157115:: @ 8157115
lock
faceplayer
msgbox MauvilleCity_GameCorner_Text_182272, 4
- jump MauvilleCity_GameCorner_EventScript_157108
+ goto MauvilleCity_GameCorner_EventScript_157108
end
MauvilleCity_GameCorner_EventScript_157125:: @ 8157125
lock
faceplayer
msgbox MauvilleCity_GameCorner_Text_1822F4, 4
- jump MauvilleCity_GameCorner_EventScript_157108
+ goto MauvilleCity_GameCorner_EventScript_157108
end
MauvilleCity_GameCorner_EventScript_157135:: @ 8157135
lockall
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 0
- specialval RESULT, sub_810F424
- pokecasino RESULT
+ specialvar RESULT, sub_810F424
+ playslotmachine RESULT
releaseall
end
@@ -534,10 +534,10 @@ MauvilleCity_GameCorner_EventScript_157155:: @ 8157155
lockall
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 1
- specialval RESULT, sub_810F424
- pokecasino RESULT
+ specialvar RESULT, sub_810F424
+ playslotmachine RESULT
releaseall
end
@@ -545,10 +545,10 @@ MauvilleCity_GameCorner_EventScript_157175:: @ 8157175
lockall
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 2
- specialval RESULT, sub_810F424
- pokecasino RESULT
+ specialvar RESULT, sub_810F424
+ playslotmachine RESULT
releaseall
end
@@ -556,10 +556,10 @@ MauvilleCity_GameCorner_EventScript_157195:: @ 8157195
lockall
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 3
- specialval RESULT, sub_810F424
- pokecasino RESULT
+ specialvar RESULT, sub_810F424
+ playslotmachine RESULT
releaseall
end
@@ -567,10 +567,10 @@ MauvilleCity_GameCorner_EventScript_1571B5:: @ 81571B5
lockall
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 4
- specialval RESULT, sub_810F424
- pokecasino RESULT
+ specialvar RESULT, sub_810F424
+ playslotmachine RESULT
releaseall
end
@@ -578,10 +578,10 @@ MauvilleCity_GameCorner_EventScript_1571D5:: @ 81571D5
lockall
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 5
- specialval RESULT, sub_810F424
- pokecasino RESULT
+ specialvar RESULT, sub_810F424
+ playslotmachine RESULT
releaseall
end
@@ -589,10 +589,10 @@ MauvilleCity_GameCorner_EventScript_1571F5:: @ 81571F5
lockall
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 6
- specialval RESULT, sub_810F424
- pokecasino RESULT
+ specialvar RESULT, sub_810F424
+ playslotmachine RESULT
releaseall
end
@@ -600,10 +600,10 @@ MauvilleCity_GameCorner_EventScript_157215:: @ 8157215
lockall
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 7
- specialval RESULT, sub_810F424
- pokecasino RESULT
+ specialvar RESULT, sub_810F424
+ playslotmachine RESULT
releaseall
end
@@ -611,10 +611,10 @@ MauvilleCity_GameCorner_EventScript_157235:: @ 8157235
lockall
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 8
- specialval RESULT, sub_810F424
- pokecasino RESULT
+ specialvar RESULT, sub_810F424
+ playslotmachine RESULT
releaseall
end
@@ -622,10 +622,10 @@ MauvilleCity_GameCorner_EventScript_157255:: @ 8157255
lockall
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 9
- specialval RESULT, sub_810F424
- pokecasino RESULT
+ specialvar RESULT, sub_810F424
+ playslotmachine RESULT
releaseall
end
@@ -633,10 +633,10 @@ MauvilleCity_GameCorner_EventScript_157275:: @ 8157275
lockall
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 10
- specialval RESULT, sub_810F424
- pokecasino RESULT
+ specialvar RESULT, sub_810F424
+ playslotmachine RESULT
releaseall
end
@@ -644,10 +644,10 @@ MauvilleCity_GameCorner_EventScript_157295:: @ 8157295
lockall
checkitem ITEM_COIN_CASE, 1
compare RESULT, 0
- jumpeq MauvilleCity_GameCorner_EventScript_1572B5
+ goto_if_eq MauvilleCity_GameCorner_EventScript_1572B5
setvar 0x8004, 11
- specialval RESULT, sub_810F424
- pokecasino RESULT
+ specialvar RESULT, sub_810F424
+ playslotmachine RESULT
releaseall
end
diff --git a/data/scripts/maps/MauvilleCity_Gym.inc b/data/scripts/maps/MauvilleCity_Gym.inc
index bd5c119f3..5221add7a 100644
--- a/data/scripts/maps/MauvilleCity_Gym.inc
+++ b/data/scripts/maps/MauvilleCity_Gym.inc
@@ -4,7 +4,7 @@ MauvilleCity_Gym_MapScripts:: @ 8156450
MauvilleCity_Gym_MapScript1_156456:: @ 8156456
checkflag 1208
- jumpeq MauvilleCity_Gym_EventScript_1565A7
+ goto_if_eq MauvilleCity_Gym_EventScript_1565A7
switch 0x4093
case 0, MauvilleCity_Gym_EventScript_156491
case 1, MauvilleCity_Gym_EventScript_15657D
@@ -14,7 +14,7 @@ MauvilleCity_Gym_MapScript1_156456:: @ 8156456
MauvilleCity_Gym_EventScript_156491:: @ 8156491
checkflag 99
- jumpeq MauvilleCity_Gym_EventScript_15649B
+ goto_if_eq MauvilleCity_Gym_EventScript_15649B
end
MauvilleCity_Gym_EventScript_15649B:: @ 815649B
@@ -48,19 +48,19 @@ MauvilleCity_Gym_EventScript_15649B:: @ 815649B
MauvilleCity_Gym_EventScript_15657D:: @ 815657D
setvar 0x8004, 0
special MauvilleGymSpecial1
- jump MauvilleCity_Gym_EventScript_156491
+ goto MauvilleCity_Gym_EventScript_156491
end
MauvilleCity_Gym_EventScript_15658B:: @ 815658B
setvar 0x8004, 1
special MauvilleGymSpecial1
- jump MauvilleCity_Gym_EventScript_156491
+ goto MauvilleCity_Gym_EventScript_156491
end
MauvilleCity_Gym_EventScript_156599:: @ 8156599
setvar 0x8004, 2
special MauvilleGymSpecial1
- jump MauvilleCity_Gym_EventScript_156491
+ goto MauvilleCity_Gym_EventScript_156491
end
MauvilleCity_Gym_EventScript_1565A7:: @ 81565A7
@@ -70,35 +70,35 @@ MauvilleCity_Gym_EventScript_1565A7:: @ 81565A7
MauvilleCity_Gym_EventScript_1565AB:: @ 81565AB
trainerbattle 1, OPPONENT_WATTSON, 0, MauvilleCity_Gym_Text_180C32, MauvilleCity_Gym_Text_180D64, MauvilleCity_Gym_EventScript_1565DB
checkflag 167
- jumpif 0, MauvilleCity_Gym_EventScript_15661D
+ goto_if 0, MauvilleCity_Gym_EventScript_15661D
compare 0x40ba, 2
- jumpeq MauvilleCity_Gym_EventScript_156641
+ goto_if_eq MauvilleCity_Gym_EventScript_156641
msgbox MauvilleCity_Gym_Text_180EDB, 4
release
end
MauvilleCity_Gym_EventScript_1565DB:: @ 81565DB
message MauvilleCity_Gym_Text_180DAF
- waittext
+ waitmessage
call MauvilleCity_Gym_EventScript_1A02C5
msgbox MauvilleCity_Gym_Text_180DDA, 4
setflag 1208
setflag 2057
addvar 0x4085, 1
compare 0x4085, 6
- callif 1, MauvilleCity_Gym_EventScript_1A00FB
+ call_if 1, MauvilleCity_Gym_EventScript_1A00FB
setvar 0x8008, 3
call MauvilleCity_Gym_EventScript_1A01C0
special MauvilleGymSpecial3
special DrawWholeMapView
- playsfx 44
- jump MauvilleCity_Gym_EventScript_15661D
+ playse 44
+ goto MauvilleCity_Gym_EventScript_15661D
end
MauvilleCity_Gym_EventScript_15661D:: @ 815661D
giveitem ITEM_TM34
compare RESULT, 0
- jumpeq MauvilleCity_Gym_EventScript_1A029B
+ goto_if_eq MauvilleCity_Gym_EventScript_1A029B
msgbox MauvilleCity_Gym_Text_180E76, 4
setflag 167
release
@@ -112,45 +112,45 @@ MauvilleCity_Gym_EventScript_156641:: @ 8156641
MauvilleCity_Gym_EventScript_15664B:: @ 815664B
lockall
checkflag 1208
- jumpeq MauvilleCity_Gym_EventScript_1566DA
+ goto_if_eq MauvilleCity_Gym_EventScript_1566DA
compare 0x4093, 1
- jumpeq MauvilleCity_Gym_EventScript_1566DA
+ goto_if_eq MauvilleCity_Gym_EventScript_1566DA
setvar 0x4093, 1
setvar 0x8004, 0
- jump MauvilleCity_Gym_EventScript_1566BA
+ goto MauvilleCity_Gym_EventScript_1566BA
end
MauvilleCity_Gym_EventScript_156670:: @ 8156670
lockall
checkflag 1208
- jumpeq MauvilleCity_Gym_EventScript_1566DA
+ goto_if_eq MauvilleCity_Gym_EventScript_1566DA
compare 0x4093, 2
- jumpeq MauvilleCity_Gym_EventScript_1566DA
+ goto_if_eq MauvilleCity_Gym_EventScript_1566DA
setvar 0x4093, 2
setvar 0x8004, 1
- jump MauvilleCity_Gym_EventScript_1566BA
+ goto MauvilleCity_Gym_EventScript_1566BA
end
MauvilleCity_Gym_EventScript_156695:: @ 8156695
lockall
checkflag 1208
- jumpeq MauvilleCity_Gym_EventScript_1566DA
+ goto_if_eq MauvilleCity_Gym_EventScript_1566DA
compare 0x4093, 3
- jumpeq MauvilleCity_Gym_EventScript_1566DA
+ goto_if_eq MauvilleCity_Gym_EventScript_1566DA
setvar 0x4093, 3
setvar 0x8004, 2
- jump MauvilleCity_Gym_EventScript_1566BA
+ goto MauvilleCity_Gym_EventScript_1566BA
end
MauvilleCity_Gym_EventScript_1566BA:: @ 81566BA
special MauvilleGymSpecial2
special MauvilleGymSpecial1
special DrawWholeMapView
- playsfx 44
+ playse 44
checkflag 99
- jumpeq MauvilleCity_Gym_EventScript_1566E1
+ goto_if_eq MauvilleCity_Gym_EventScript_1566E1
checkflag 99
- jumpif 0, MauvilleCity_Gym_EventScript_1566DC
+ goto_if 0, MauvilleCity_Gym_EventScript_1566DC
releaseall
end
@@ -192,7 +192,7 @@ MauvilleCity_Gym_EventScript_156742:: @ 8156742
lock
faceplayer
checkflag 1208
- jumpeq MauvilleCity_Gym_EventScript_156757
+ goto_if_eq MauvilleCity_Gym_EventScript_156757
msgbox MauvilleCity_Gym_Text_180815, 4
release
end
@@ -205,15 +205,15 @@ MauvilleCity_Gym_EventScript_156757:: @ 8156757
MauvilleCity_Gym_EventScript_156761:: @ 8156761
lockall
checkflag 2057
- jumpeq MauvilleCity_Gym_EventScript_156781
- jump MauvilleCity_Gym_EventScript_15678B
+ goto_if_eq MauvilleCity_Gym_EventScript_156781
+ goto MauvilleCity_Gym_EventScript_15678B
end
MauvilleCity_Gym_EventScript_156771:: @ 8156771
lockall
checkflag 2057
- jumpeq MauvilleCity_Gym_EventScript_156781
- jump MauvilleCity_Gym_EventScript_15678B
+ goto_if_eq MauvilleCity_Gym_EventScript_156781
+ goto MauvilleCity_Gym_EventScript_15678B
end
MauvilleCity_Gym_EventScript_156781:: @ 8156781
diff --git a/data/scripts/maps/MauvilleCity_House1.inc b/data/scripts/maps/MauvilleCity_House1.inc
index 48ee31be5..e76564847 100644
--- a/data/scripts/maps/MauvilleCity_House1.inc
+++ b/data/scripts/maps/MauvilleCity_House1.inc
@@ -5,7 +5,7 @@ MauvilleCity_House1_EventScript_1569FD:: @ 81569FD
lock
faceplayer
checkflag 107
- jumpeq MauvilleCity_House1_EventScript_156A29
+ goto_if_eq MauvilleCity_House1_EventScript_156A29
msgbox MauvilleCity_House1_Text_181B1A, 4
giveitem ITEM_HM06
setflag 107
diff --git a/data/scripts/maps/MauvilleCity_House2.inc b/data/scripts/maps/MauvilleCity_House2.inc
index 8a73af034..a500a246e 100644
--- a/data/scripts/maps/MauvilleCity_House2.inc
+++ b/data/scripts/maps/MauvilleCity_House2.inc
@@ -5,25 +5,25 @@ MauvilleCity_House2_EventScript_1572C0:: @ 81572C0
lock
faceplayer
checkflag 258
- jumpeq MauvilleCity_House2_EventScript_15733D
+ goto_if_eq MauvilleCity_House2_EventScript_15733D
msgbox MauvilleCity_House2_Text_18244E, 4
checkitem ITEM_HARBOR_MAIL, 1
compare RESULT, 1
- jumpeq MauvilleCity_House2_EventScript_1572E5
+ goto_if_eq MauvilleCity_House2_EventScript_1572E5
release
end
MauvilleCity_House2_EventScript_1572E5:: @ 81572E5
- playsfx 21
- move LAST_TALKED, MauvilleCity_House2_Movement_1A0833
- waitmove 0
- move LAST_TALKED, MauvilleCity_House2_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement LAST_TALKED, MauvilleCity_House2_Movement_1A0833
+ waitmovement 0
+ applymovement LAST_TALKED, MauvilleCity_House2_Movement_1A0835
+ waitmovement 0
msgbox MauvilleCity_House2_Text_1824D8, 5
compare RESULT, 1
- jumpeq MauvilleCity_House2_EventScript_15731B
+ goto_if_eq MauvilleCity_House2_EventScript_15731B
compare RESULT, 0
- jumpeq MauvilleCity_House2_EventScript_157347
+ goto_if_eq MauvilleCity_House2_EventScript_157347
end
MauvilleCity_House2_EventScript_15731B:: @ 815731B
@@ -31,7 +31,7 @@ MauvilleCity_House2_EventScript_15731B:: @ 815731B
removeitem ITEM_HARBOR_MAIL, 1
giveitem ITEM_COIN_CASE
setflag 258
- jump MauvilleCity_House2_EventScript_15733D
+ goto MauvilleCity_House2_EventScript_15733D
end
MauvilleCity_House2_EventScript_15733D:: @ 815733D
diff --git a/data/scripts/maps/MauvilleCity_Mart.inc b/data/scripts/maps/MauvilleCity_Mart.inc
index fac5906ad..0dd66eddf 100644
--- a/data/scripts/maps/MauvilleCity_Mart.inc
+++ b/data/scripts/maps/MauvilleCity_Mart.inc
@@ -5,7 +5,7 @@ MauvilleCity_Mart_EventScript_1573BE:: @ 81573BE
lock
faceplayer
message MauvilleCity_Mart_Text_1A0BE4
- waittext
+ waitmessage
pokemart MauvilleCity_Mart_Items
msgbox MauvilleCity_Mart_Text_1A0C02, 4
release
diff --git a/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc b/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc
index b2b5dabd4..7122b8c3c 100644
--- a/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc
+++ b/data/scripts/maps/MauvilleCity_PokemonCenter_1F.inc
@@ -5,7 +5,7 @@ MauvilleCity_PokemonCenter_1F_MapScripts:: @ 8157351
MauvilleCity_PokemonCenter_1F_MapScript1_157357:: @ 8157357
sethealplace 5
call MauvilleCity_PokemonCenter_1F_EventScript_19FD1B
- jump MauvilleCity_PokemonCenter_1F_EventScript_157365
+ goto MauvilleCity_PokemonCenter_1F_EventScript_157365
end
MauvilleCity_PokemonCenter_1F_EventScript_157365:: @ 8157365
@@ -15,7 +15,7 @@ MauvilleCity_PokemonCenter_1F_EventScript_157365:: @ 8157365
MauvilleCity_PokemonCenter_1F_EventScript_157369:: @ 8157369
setvar 0x800b, 1
call MauvilleCity_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
diff --git a/data/scripts/maps/MeteorFalls_1F_1R.inc b/data/scripts/maps/MeteorFalls_1F_1R.inc
index 3e7155955..06abbc8f6 100644
--- a/data/scripts/maps/MeteorFalls_1F_1R.inc
+++ b/data/scripts/maps/MeteorFalls_1F_1R.inc
@@ -8,75 +8,75 @@ MeteorFalls_1F_1R_MapScript1_15C496:: @ 815C496
MeteorFalls_1F_1R_EventScript_15C49C:: @ 815C49C
lockall
- move 255, MeteorFalls_1F_1R_Movement_1A0845
- waitmove 0
- pause 30
- move 5, MeteorFalls_1F_1R_Movement_1A0845
- waitmove 0
+ applymovement 255, MeteorFalls_1F_1R_Movement_1A0845
+ waitmovement 0
+ delay 30
+ applymovement 5, MeteorFalls_1F_1R_Movement_1A0845
+ waitmovement 0
msgbox MeteorFalls_1F_1R_Text_193237, 4
- closebutton
- move 5, MeteorFalls_1F_1R_Movement_1A0841
- move 6, MeteorFalls_1F_1R_Movement_1A0841
- waitmove 0
- playsfx 21
- move 5, MeteorFalls_1F_1R_Movement_1A0833
- waitmove 0
- move 5, MeteorFalls_1F_1R_Movement_1A0835
- waitmove 0
+ closemessage
+ applymovement 5, MeteorFalls_1F_1R_Movement_1A0841
+ applymovement 6, MeteorFalls_1F_1R_Movement_1A0841
+ waitmovement 0
+ playse 21
+ applymovement 5, MeteorFalls_1F_1R_Movement_1A0833
+ waitmovement 0
+ applymovement 5, MeteorFalls_1F_1R_Movement_1A0835
+ waitmovement 0
msgbox MeteorFalls_1F_1R_Text_193268, 4
- closebutton
- move 5, MeteorFalls_1F_1R_Movement_15C5EE
- waitmove 0
+ closemessage
+ applymovement 5, MeteorFalls_1F_1R_Movement_15C5EE
+ waitmovement 0
msgbox MeteorFalls_1F_1R_Text_1932C5, 4
- closebutton
- move 255, MeteorFalls_1F_1R_Movement_1A083F
- move 5, MeteorFalls_1F_1R_Movement_1A083F
- move 6, MeteorFalls_1F_1R_Movement_1A083F
- waitmove 0
- reappear 7
- reappear 8
- reappear 9
- move 7, MeteorFalls_1F_1R_Movement_15C608
- move 8, MeteorFalls_1F_1R_Movement_15C60F
- move 9, MeteorFalls_1F_1R_Movement_15C617
- waitmove 0
- move 5, MeteorFalls_1F_1R_Movement_1A083F
- move 6, MeteorFalls_1F_1R_Movement_1A083F
- waitmove 0
+ closemessage
+ applymovement 255, MeteorFalls_1F_1R_Movement_1A083F
+ applymovement 5, MeteorFalls_1F_1R_Movement_1A083F
+ applymovement 6, MeteorFalls_1F_1R_Movement_1A083F
+ waitmovement 0
+ addobject 7
+ addobject 8
+ addobject 9
+ applymovement 7, MeteorFalls_1F_1R_Movement_15C608
+ applymovement 8, MeteorFalls_1F_1R_Movement_15C60F
+ applymovement 9, MeteorFalls_1F_1R_Movement_15C617
+ waitmovement 0
+ applymovement 5, MeteorFalls_1F_1R_Movement_1A083F
+ applymovement 6, MeteorFalls_1F_1R_Movement_1A083F
+ waitmovement 0
msgbox MeteorFalls_1F_1R_Text_193320, 4
- closebutton
- move 255, MeteorFalls_1F_1R_Movement_15C64F
- move 5, MeteorFalls_1F_1R_Movement_15C5F1
- move 6, MeteorFalls_1F_1R_Movement_15C5FC
- waitmove 0
- disappear 5
- disappear 6
- move 7, MeteorFalls_1F_1R_Movement_15C628
- waitmove 0
+ closemessage
+ applymovement 255, MeteorFalls_1F_1R_Movement_15C64F
+ applymovement 5, MeteorFalls_1F_1R_Movement_15C5F1
+ applymovement 6, MeteorFalls_1F_1R_Movement_15C5FC
+ waitmovement 0
+ removeobject 5
+ removeobject 6
+ applymovement 7, MeteorFalls_1F_1R_Movement_15C628
+ waitmovement 0
.ifdef SAPPHIRE
msgbox MeteorFalls_1F_1R_Text_1933EC, 4
.else
msgbox MeteorFalls_1F_1R_Text_193584, 4
.endif
- closebutton
- move 8, MeteorFalls_1F_1R_Movement_15C639
- move 9, MeteorFalls_1F_1R_Movement_15C64A
- waitmove 0
+ closemessage
+ applymovement 8, MeteorFalls_1F_1R_Movement_15C639
+ applymovement 9, MeteorFalls_1F_1R_Movement_15C64A
+ waitmovement 0
msgbox MeteorFalls_1F_1R_Text_193720, 4
- move 7, MeteorFalls_1F_1R_Movement_1A0845
- waitmove 0
+ applymovement 7, MeteorFalls_1F_1R_Movement_1A0845
+ waitmovement 0
msgbox MeteorFalls_1F_1R_Text_193747, 4
- move 7, MeteorFalls_1F_1R_Movement_1A083F
- waitmove 0
+ applymovement 7, MeteorFalls_1F_1R_Movement_1A083F
+ waitmovement 0
msgbox MeteorFalls_1F_1R_Text_1937AA, 4
- closebutton
- move 7, MeteorFalls_1F_1R_Movement_15C61F
- move 8, MeteorFalls_1F_1R_Movement_15C62E
- move 9, MeteorFalls_1F_1R_Movement_15C63E
- waitmove 0
- disappear 7
- disappear 8
- disappear 9
+ closemessage
+ applymovement 7, MeteorFalls_1F_1R_Movement_15C61F
+ applymovement 8, MeteorFalls_1F_1R_Movement_15C62E
+ applymovement 9, MeteorFalls_1F_1R_Movement_15C63E
+ waitmovement 0
+ removeobject 7
+ removeobject 8
+ removeobject 9
setflag 819
setvar 0x40bf, 1
releaseall
@@ -216,7 +216,7 @@ MeteorFalls_1F_1R_EventScript_15C656:: @ 815C656
lock
faceplayer
checkflag 244
- jumpeq MeteorFalls_1F_1R_EventScript_15C66E
+ goto_if_eq MeteorFalls_1F_1R_EventScript_15C66E
setflag 244
msgbox MeteorFalls_1F_1R_Text_1937EB, 4
release
diff --git a/data/scripts/maps/MeteorFalls_1F_2R.inc b/data/scripts/maps/MeteorFalls_1F_2R.inc
index 8e45c34ae..b3a0c51fe 100644
--- a/data/scripts/maps/MeteorFalls_1F_2R.inc
+++ b/data/scripts/maps/MeteorFalls_1F_2R.inc
@@ -3,9 +3,9 @@ MeteorFalls_1F_2R_MapScripts:: @ 815C678
MeteorFalls_1F_2R_EventScript_15C679:: @ 815C679
trainerbattle 0, OPPONENT_NICOLAS_1, 0, MeteorFalls_1F_2R_Text_1939C5, MeteorFalls_1F_2R_Text_193A35
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq MeteorFalls_1F_2R_EventScript_15C6A0
+ goto_if_eq MeteorFalls_1F_2R_EventScript_15C6A0
msgbox MeteorFalls_1F_2R_Text_193A60, 6
end
@@ -16,9 +16,9 @@ MeteorFalls_1F_2R_EventScript_15C6A0:: @ 815C6A0
MeteorFalls_1F_2R_EventScript_15C6B7:: @ 815C6B7
trainerbattle 4, OPPONENT_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_193BB7, MeteorFalls_1F_2R_Text_193C10, MeteorFalls_1F_2R_Text_193C9F
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq MeteorFalls_1F_2R_EventScript_15C6E2
+ goto_if_eq MeteorFalls_1F_2R_EventScript_15C6E2
msgbox MeteorFalls_1F_2R_Text_193C35, 6
end
@@ -29,9 +29,9 @@ MeteorFalls_1F_2R_EventScript_15C6E2:: @ 815C6E2
MeteorFalls_1F_2R_EventScript_15C6FD:: @ 815C6FD
trainerbattle 4, OPPONENT_JOHN_AND_JAY_1, 0, MeteorFalls_1F_2R_Text_193D10, MeteorFalls_1F_2R_Text_193D6E, MeteorFalls_1F_2R_Text_193DFB
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq MeteorFalls_1F_2R_EventScript_15C728
+ goto_if_eq MeteorFalls_1F_2R_EventScript_15C728
msgbox MeteorFalls_1F_2R_Text_193D9A, 6
end
diff --git a/data/scripts/maps/MossdeepCity.inc b/data/scripts/maps/MossdeepCity.inc
index ddb317364..44deb9d63 100644
--- a/data/scripts/maps/MossdeepCity.inc
+++ b/data/scripts/maps/MossdeepCity.inc
@@ -8,7 +8,7 @@ MossdeepCity_MapScript1_14CF98:: @ 814CF98
clearflag 102
clearflag 103
checkflag 2090
- callif 1, MossdeepCity_EventScript_1A02C1
+ call_if 1, MossdeepCity_EventScript_1A02C1
end
MossdeepCity_EventScript_14CFAE:: @ 814CFAE
@@ -60,8 +60,8 @@ MossdeepCity_EventScript_14D011:: @ 814D011
lock
faceplayer
msgbox MossdeepCity_Text_16944E, 4
- move LAST_TALKED, MossdeepCity_Movement_1A083D
- waitmove 0
+ applymovement LAST_TALKED, MossdeepCity_Movement_1A083D
+ waitmovement 0
release
end
@@ -69,14 +69,14 @@ MossdeepCity_EventScript_14D027:: @ 814D027
lock
faceplayer
checkflag 276
- jumpeq MossdeepCity_EventScript_14D069
+ goto_if_eq MossdeepCity_EventScript_14D069
msgbox MossdeepCity_Text_1690A9, 5
compare RESULT, 0
- jumpeq MossdeepCity_EventScript_14D073
+ goto_if_eq MossdeepCity_EventScript_14D073
msgbox MossdeepCity_Text_169117, 4
giveitem ITEM_KINGS_ROCK
compare RESULT, 0
- jumpeq MossdeepCity_EventScript_1A029B
+ goto_if_eq MossdeepCity_EventScript_1A029B
setflag 276
release
end
diff --git a/data/scripts/maps/MossdeepCity_GameCorner_1F.inc b/data/scripts/maps/MossdeepCity_GameCorner_1F.inc
index 14836f3e0..66ad747f9 100644
--- a/data/scripts/maps/MossdeepCity_GameCorner_1F.inc
+++ b/data/scripts/maps/MossdeepCity_GameCorner_1F.inc
@@ -7,7 +7,7 @@ MossdeepCity_GameCorner_1F_MapScripts:: @ 815AC52
MossdeepCity_GameCorner_1F_MapScript1_15AC62:: @ 815AC62
special sub_813601C
compare RESULT, 1
- callif 1, MossdeepCity_GameCorner_1F_EventScript_15AC71
+ call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AC71
end
MossdeepCity_GameCorner_1F_EventScript_15AC71:: @ 815AC71
@@ -18,20 +18,20 @@ MossdeepCity_GameCorner_1F_EventScript_15AC71:: @ 815AC71
MossdeepCity_GameCorner_1F_MapScript1_15AC84:: @ 815AC84
special sub_813601C
compare RESULT, 0
- callif 1, MossdeepCity_GameCorner_1F_EventScript_15AC9E
+ call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AC9E
compare 0x40c0, 0
- callif 5, MossdeepCity_GameCorner_1F_EventScript_15ACAF
+ call_if 5, MossdeepCity_GameCorner_1F_EventScript_15ACAF
end
MossdeepCity_GameCorner_1F_EventScript_15AC9E:: @ 815AC9E
setvar 0x4001, 1
- movespriteperm 1, 3, 2
- spritebehave 1, 8
+ setobjectxyperm 1, 3, 2
+ setobjectmovementtype 1, 8
return
MossdeepCity_GameCorner_1F_EventScript_15ACAF:: @ 815ACAF
- movespriteperm 1, 2, 2
- spritebehave 1, 10
+ setobjectxyperm 1, 2, 2
+ setobjectmovementtype 1, 10
return
MossdeepCity_GameCorner_1F_MapScript2_15ACBB:: @ 815ACBB
@@ -42,19 +42,19 @@ MossdeepCity_GameCorner_1F_MapScript2_15ACBB:: @ 815ACBB
MossdeepCity_GameCorner_1F_EventScript_15ACD5:: @ 815ACD5
lockall
- move 255, MossdeepCity_GameCorner_1F_Movement_15AD3D
- waitmove 0
- move 1, MossdeepCity_GameCorner_1F_Movement_15AD3F
- waitmove 0
- moveoffscreen 1
- move 255, MossdeepCity_GameCorner_1F_Movement_1A0841
- waitmove 0
+ applymovement 255, MossdeepCity_GameCorner_1F_Movement_15AD3D
+ waitmovement 0
+ applymovement 1, MossdeepCity_GameCorner_1F_Movement_15AD3F
+ waitmovement 0
+ moveobjectoffscreen 1
+ applymovement 255, MossdeepCity_GameCorner_1F_Movement_1A0841
+ waitmovement 0
compare 0x40c0, 1
- callif 1, MossdeepCity_GameCorner_1F_EventScript_15AD22
+ call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AD22
compare 0x40c0, 2
- callif 1, MossdeepCity_GameCorner_1F_EventScript_15AD2B
+ call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AD2B
compare 0x40c0, 3
- callif 1, MossdeepCity_GameCorner_1F_EventScript_15AD34
+ call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AD34
special LoadPlayerParty
setvar 0x40c0, 0
releaseall
@@ -85,7 +85,7 @@ MossdeepCity_GameCorner_1F_EventScript_15AD42:: @ 815AD42
lock
faceplayer
compare 0x4001, 1
- jumpeq MossdeepCity_GameCorner_1F_EventScript_15AD59
+ goto_if_eq MossdeepCity_GameCorner_1F_EventScript_15AD59
msgbox MossdeepCity_GameCorner_1F_Text_18E59A, 4
release
end
@@ -95,28 +95,28 @@ MossdeepCity_GameCorner_1F_EventScript_15AD59:: @ 815AD59
special sub_810F414
msgbox MossdeepCity_GameCorner_1F_Text_18E650, 5
compare RESULT, 0
- jumpeq MossdeepCity_GameCorner_1F_EventScript_15ADE8
+ goto_if_eq MossdeepCity_GameCorner_1F_EventScript_15ADE8
call MossdeepCity_GameCorner_1F_EventScript_15ADF5
compare RESULT, 0
- jumpeq MossdeepCity_GameCorner_1F_EventScript_15ADE8
+ goto_if_eq MossdeepCity_GameCorner_1F_EventScript_15ADE8
msgbox MossdeepCity_GameCorner_1F_Text_18E741, 5
compare RESULT, 0
- callif 1, MossdeepCity_GameCorner_1F_EventScript_15ADE8
+ call_if 1, MossdeepCity_GameCorner_1F_EventScript_15ADE8
special LoadPlayerParty
- call MossdeepCity_GameCorner_1F_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq MossdeepCity_GameCorner_1F_EventScript_15ADE8
- hidebox 0, 0, 15, 10
+ goto_if_eq MossdeepCity_GameCorner_1F_EventScript_15ADE8
+ erasebox 0, 0, 15, 10
special SavePlayerParty
special ReducePlayerPartyToThree
msgbox MossdeepCity_GameCorner_1F_Text_18E777, 4
- closebutton
+ closemessage
compare FACING, 2
- callif 1, MossdeepCity_GameCorner_1F_EventScript_15AE04
+ call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AE04
compare FACING, 4
- callif 1, MossdeepCity_GameCorner_1F_EventScript_15AE16
+ call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AE16
compare FACING, 3
- callif 1, MossdeepCity_GameCorner_1F_EventScript_15AE28
+ call_if 1, MossdeepCity_GameCorner_1F_EventScript_15AE28
warp MossdeepCity_GameCorner_B1F, 255, 3, 1
waitstate
release
@@ -136,21 +136,21 @@ MossdeepCity_GameCorner_1F_EventScript_15ADF5:: @ 815ADF5
return
MossdeepCity_GameCorner_1F_EventScript_15AE04:: @ 815AE04
- move LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE46
- move 255, MossdeepCity_GameCorner_1F_Movement_15AE3A
- waitmove 0
+ applymovement LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE46
+ applymovement 255, MossdeepCity_GameCorner_1F_Movement_15AE3A
+ waitmovement 0
return
MossdeepCity_GameCorner_1F_EventScript_15AE16:: @ 815AE16
- move LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE49
- move 255, MossdeepCity_GameCorner_1F_Movement_15AE3E
- waitmove 0
+ applymovement LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE49
+ applymovement 255, MossdeepCity_GameCorner_1F_Movement_15AE3E
+ waitmovement 0
return
MossdeepCity_GameCorner_1F_EventScript_15AE28:: @ 815AE28
- move LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE46
- move 255, MossdeepCity_GameCorner_1F_Movement_15AE42
- waitmove 0
+ applymovement LAST_TALKED, MossdeepCity_GameCorner_1F_Movement_15AE46
+ applymovement 255, MossdeepCity_GameCorner_1F_Movement_15AE42
+ waitmovement 0
return
MossdeepCity_GameCorner_1F_Movement_15AE3A:: @ 815AE3A
diff --git a/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc b/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc
index a5a013d5f..886c64d29 100644
--- a/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc
+++ b/data/scripts/maps/MossdeepCity_GameCorner_B1F.inc
@@ -13,25 +13,25 @@ MossdeepCity_GameCorner_B1F_MapScript2_15AE64:: @ 815AE64
MossdeepCity_GameCorner_B1F_EventScript_15AE6E:: @ 815AE6E
lockall
- move 255, MossdeepCity_GameCorner_B1F_Movement_15AEF9
- waitmove 0
+ applymovement 255, MossdeepCity_GameCorner_B1F_Movement_15AEF9
+ waitmovement 0
special sub_81360C0
msgbox 0x20234cc, 4
- closebutton
+ closemessage
setvar 0x8004, 2
setvar 0x8005, 0
special sub_813556C
waitstate
compare RESULT, 3
- callif 1, MossdeepCity_GameCorner_B1F_EventScript_15AED5
+ call_if 1, MossdeepCity_GameCorner_B1F_EventScript_15AED5
compare RESULT, 1
- callif 1, MossdeepCity_GameCorner_B1F_EventScript_15AEE3
+ call_if 1, MossdeepCity_GameCorner_B1F_EventScript_15AEE3
compare RESULT, 2
- callif 1, MossdeepCity_GameCorner_B1F_EventScript_15AEEE
- closebutton
- special HealPlayerParty
- move 255, MossdeepCity_GameCorner_B1F_Movement_15AEFF
- waitmove 0
+ call_if 1, MossdeepCity_GameCorner_B1F_EventScript_15AEEE
+ closemessage
+ special ScrSpecial_HealPlayerParty
+ applymovement 255, MossdeepCity_GameCorner_B1F_Movement_15AEFF
+ waitmovement 0
special LoadPlayerParty
setvar 0x4001, 1
warp MossdeepCity_GameCorner_1F, 255, 3, 1
@@ -47,14 +47,14 @@ MossdeepCity_GameCorner_B1F_EventScript_15AED5:: @ 815AED5
MossdeepCity_GameCorner_B1F_EventScript_15AEE3:: @ 815AEE3
setvar 0x40c0, 1
special ShowFieldMessageStringVar4
- waittext
+ waitmessage
waitbutton
return
MossdeepCity_GameCorner_B1F_EventScript_15AEEE:: @ 815AEEE
setvar 0x40c0, 2
special ShowFieldMessageStringVar4
- waittext
+ waitmessage
waitbutton
return
diff --git a/data/scripts/maps/MossdeepCity_Gym.inc b/data/scripts/maps/MossdeepCity_Gym.inc
index 20f43a150..944860f2d 100644
--- a/data/scripts/maps/MossdeepCity_Gym.inc
+++ b/data/scripts/maps/MossdeepCity_Gym.inc
@@ -4,43 +4,43 @@ MossdeepCity_Gym_MapScripts:: @ 815A4D3
MossdeepCity_Gym_MapScript1_15A4D9:: @ 815A4D9
checkflag 100
- jumpeq MossdeepCity_Gym_EventScript_15A510
- jump MossdeepCity_Gym_EventScript_15A4E8
+ goto_if_eq MossdeepCity_Gym_EventScript_15A510
+ goto MossdeepCity_Gym_EventScript_15A4E8
end
MossdeepCity_Gym_EventScript_15A4E8:: @ 815A4E8
checkflag 101
- jumpeq MossdeepCity_Gym_EventScript_15A528
- jump MossdeepCity_Gym_EventScript_15A4F7
+ goto_if_eq MossdeepCity_Gym_EventScript_15A528
+ goto MossdeepCity_Gym_EventScript_15A4F7
end
MossdeepCity_Gym_EventScript_15A4F7:: @ 815A4F7
checkflag 102
- jumpeq MossdeepCity_Gym_EventScript_15A540
- jump MossdeepCity_Gym_EventScript_15A506
+ goto_if_eq MossdeepCity_Gym_EventScript_15A540
+ goto MossdeepCity_Gym_EventScript_15A506
end
MossdeepCity_Gym_EventScript_15A506:: @ 815A506
checkflag 103
- jumpeq MossdeepCity_Gym_EventScript_15A558
+ goto_if_eq MossdeepCity_Gym_EventScript_15A558
end
MossdeepCity_Gym_EventScript_15A510:: @ 815A510
setmaptile 5, 5, 516, 0
setmaptile 2, 7, 569, 1
- jump MossdeepCity_Gym_EventScript_15A4E8
+ goto MossdeepCity_Gym_EventScript_15A4E8
end
MossdeepCity_Gym_EventScript_15A528:: @ 815A528
setmaptile 8, 14, 516, 0
setmaptile 8, 10, 569, 1
- jump MossdeepCity_Gym_EventScript_15A4F7
+ goto MossdeepCity_Gym_EventScript_15A4F7
end
MossdeepCity_Gym_EventScript_15A540:: @ 815A540
setmaptile 15, 17, 524, 0
setmaptile 17, 15, 569, 1
- jump MossdeepCity_Gym_EventScript_15A506
+ goto MossdeepCity_Gym_EventScript_15A506
end
MossdeepCity_Gym_EventScript_15A558:: @ 815A558
@@ -51,14 +51,14 @@ MossdeepCity_Gym_EventScript_15A558:: @ 815A558
MossdeepCity_Gym_EventScript_15A56B:: @ 815A56B
trainerbattle 8, OPPONENT_TATE_AND_LIZA, 0, MossdeepCity_Gym_Text_18CF02, MossdeepCity_Gym_Text_18D077, MossdeepCity_Gym_Text_18D324, MossdeepCity_Gym_EventScript_15A594
checkflag 171
- jumpif 0, MossdeepCity_Gym_EventScript_15A5C6
+ goto_if 0, MossdeepCity_Gym_EventScript_15A5C6
msgbox MossdeepCity_Gym_Text_18D273, 4
release
end
MossdeepCity_Gym_EventScript_15A594:: @ 815A594
message MossdeepCity_Gym_Text_18D0F9
- waittext
+ waitmessage
call MossdeepCity_Gym_EventScript_1A02C5
msgbox MossdeepCity_Gym_Text_18D128, 4
setflag 1229
@@ -68,13 +68,13 @@ MossdeepCity_Gym_EventScript_15A594:: @ 815A594
setvar 0x8008, 7
call MossdeepCity_Gym_EventScript_1A01C0
clearflag 905
- jump MossdeepCity_Gym_EventScript_15A5C6
+ goto MossdeepCity_Gym_EventScript_15A5C6
end
MossdeepCity_Gym_EventScript_15A5C6:: @ 815A5C6
giveitem ITEM_TM04
compare RESULT, 0
- jumpeq MossdeepCity_Gym_EventScript_1A029B
+ goto_if_eq MossdeepCity_Gym_EventScript_1A029B
msgbox MossdeepCity_Gym_Text_18D1CF, 4
setflag 171
release
@@ -83,91 +83,91 @@ MossdeepCity_Gym_EventScript_15A5C6:: @ 815A5C6
MossdeepCity_Gym_EventScript_15A5EA:: @ 815A5EA
lockall
checkflag 100
- jumpeq MossdeepCity_Gym_EventScript_15A621
+ goto_if_eq MossdeepCity_Gym_EventScript_15A621
setflag 100
- move 255, MossdeepCity_Gym_Movement_15A7F7
- waitmove 0
+ applymovement 255, MossdeepCity_Gym_Movement_15A7F7
+ waitmovement 0
setmaptile 5, 5, 516, 0
setmaptile 2, 7, 569, 1
- jump MossdeepCity_Gym_EventScript_15A619
+ goto MossdeepCity_Gym_EventScript_15A619
end
MossdeepCity_Gym_EventScript_15A619:: @ 815A619
special DrawWholeMapView
- playsfx 36
+ playse 36
releaseall
end
MossdeepCity_Gym_EventScript_15A621:: @ 815A621
clearflag 100
- move 255, MossdeepCity_Gym_Movement_15A7F7
- waitmove 0
+ applymovement 255, MossdeepCity_Gym_Movement_15A7F7
+ waitmovement 0
setmaptile 5, 5, 524, 0
setmaptile 2, 7, 568, 1
- jump MossdeepCity_Gym_EventScript_15A619
+ goto MossdeepCity_Gym_EventScript_15A619
end
MossdeepCity_Gym_EventScript_15A646:: @ 815A646
lockall
checkflag 101
- jumpeq MossdeepCity_Gym_EventScript_15A675
+ goto_if_eq MossdeepCity_Gym_EventScript_15A675
setflag 101
- move 255, MossdeepCity_Gym_Movement_15A7F7
- waitmove 0
+ applymovement 255, MossdeepCity_Gym_Movement_15A7F7
+ waitmovement 0
setmaptile 8, 14, 516, 0
setmaptile 8, 10, 569, 1
- jump MossdeepCity_Gym_EventScript_15A619
+ goto MossdeepCity_Gym_EventScript_15A619
end
MossdeepCity_Gym_EventScript_15A675:: @ 815A675
clearflag 101
- move 255, MossdeepCity_Gym_Movement_15A7F7
- waitmove 0
+ applymovement 255, MossdeepCity_Gym_Movement_15A7F7
+ waitmovement 0
setmaptile 8, 14, 517, 0
setmaptile 8, 10, 568, 1
- jump MossdeepCity_Gym_EventScript_15A619
+ goto MossdeepCity_Gym_EventScript_15A619
end
MossdeepCity_Gym_EventScript_15A69A:: @ 815A69A
lockall
checkflag 102
- jumpeq MossdeepCity_Gym_EventScript_15A6C9
+ goto_if_eq MossdeepCity_Gym_EventScript_15A6C9
setflag 102
- move 255, MossdeepCity_Gym_Movement_15A7F7
- waitmove 0
+ applymovement 255, MossdeepCity_Gym_Movement_15A7F7
+ waitmovement 0
setmaptile 15, 17, 524, 0
setmaptile 17, 15, 569, 1
- jump MossdeepCity_Gym_EventScript_15A619
+ goto MossdeepCity_Gym_EventScript_15A619
end
MossdeepCity_Gym_EventScript_15A6C9:: @ 815A6C9
clearflag 102
- move 255, MossdeepCity_Gym_Movement_15A7F7
- waitmove 0
+ applymovement 255, MossdeepCity_Gym_Movement_15A7F7
+ waitmovement 0
setmaptile 15, 17, 516, 0
setmaptile 17, 15, 568, 1
- jump MossdeepCity_Gym_EventScript_15A619
+ goto MossdeepCity_Gym_EventScript_15A619
end
MossdeepCity_Gym_EventScript_15A6EE:: @ 815A6EE
lockall
checkflag 103
- jumpeq MossdeepCity_Gym_EventScript_15A71D
+ goto_if_eq MossdeepCity_Gym_EventScript_15A71D
setflag 103
- move 255, MossdeepCity_Gym_Movement_15A7F7
- waitmove 0
+ applymovement 255, MossdeepCity_Gym_Movement_15A7F7
+ waitmovement 0
setmaptile 1, 23, 525, 0
setmaptile 5, 24, 569, 1
- jump MossdeepCity_Gym_EventScript_15A619
+ goto MossdeepCity_Gym_EventScript_15A619
end
MossdeepCity_Gym_EventScript_15A71D:: @ 815A71D
clearflag 103
- move 255, MossdeepCity_Gym_Movement_15A7F7
- waitmove 0
+ applymovement 255, MossdeepCity_Gym_Movement_15A7F7
+ waitmovement 0
setmaptile 1, 23, 516, 0
setmaptile 5, 24, 568, 1
- jump MossdeepCity_Gym_EventScript_15A619
+ goto MossdeepCity_Gym_EventScript_15A619
end
MossdeepCity_Gym_EventScript_15A742:: @ 815A742
@@ -211,7 +211,7 @@ MossdeepCity_Gym_EventScript_15A7D8:: @ 815A7D8
lock
faceplayer
checkflag 1229
- jumpeq MossdeepCity_Gym_EventScript_15A7ED
+ goto_if_eq MossdeepCity_Gym_EventScript_15A7ED
msgbox MossdeepCity_Gym_Text_18C7E3, 4
release
end
@@ -229,15 +229,15 @@ MossdeepCity_Gym_Movement_15A7F7:: @ 815A7F7
MossdeepCity_Gym_EventScript_15A7FA:: @ 815A7FA
lockall
checkflag 2061
- jumpeq MossdeepCity_Gym_EventScript_15A81A
- jump MossdeepCity_Gym_EventScript_15A824
+ goto_if_eq MossdeepCity_Gym_EventScript_15A81A
+ goto MossdeepCity_Gym_EventScript_15A824
end
MossdeepCity_Gym_EventScript_15A80A:: @ 815A80A
lockall
checkflag 2061
- jumpeq MossdeepCity_Gym_EventScript_15A81A
- jump MossdeepCity_Gym_EventScript_15A824
+ goto_if_eq MossdeepCity_Gym_EventScript_15A81A
+ goto MossdeepCity_Gym_EventScript_15A824
end
MossdeepCity_Gym_EventScript_15A81A:: @ 815A81A
diff --git a/data/scripts/maps/MossdeepCity_House1.inc b/data/scripts/maps/MossdeepCity_House1.inc
index 319dfba8e..62edffc8b 100644
--- a/data/scripts/maps/MossdeepCity_House1.inc
+++ b/data/scripts/maps/MossdeepCity_House1.inc
@@ -4,11 +4,11 @@ MossdeepCity_House1_MapScripts:: @ 815A82E
MossdeepCity_House1_EventScript_15A82F:: @ 815A82F
lock
faceplayer
- bufferfirstpoke 0
+ getfirstpartypokename 0
msgbox MossdeepCity_House1_Text_18D465, 4
- specialval RESULT, GetPokeblockNameByMonNature
+ specialvar RESULT, GetPokeblockNameByMonNature
compare RESULT, 0
- jumpeq MossdeepCity_House1_EventScript_15A855
+ goto_if_eq MossdeepCity_House1_EventScript_15A855
msgbox MossdeepCity_House1_Text_18D475, 4
release
end
diff --git a/data/scripts/maps/MossdeepCity_House2.inc b/data/scripts/maps/MossdeepCity_House2.inc
index f3d07b64e..f7f66b843 100644
--- a/data/scripts/maps/MossdeepCity_House2.inc
+++ b/data/scripts/maps/MossdeepCity_House2.inc
@@ -12,29 +12,29 @@ MossdeepCity_House2_EventScript_15A872:: @ 815A872
MossdeepCity_House2_EventScript_15A87B:: @ 815A87B
lock
faceplayer
- checksound
- pokecry SPECIES_WINGULL, 0
+ waitse
+ playpokecry SPECIES_WINGULL, 0
msgbox MossdeepCity_House2_Text_18D61E, 4
waitpokecry
- closebutton
+ closemessage
setflag 224
clearflag 933
compare FACING, 2
- callif 1, MossdeepCity_House2_EventScript_15A8AE
+ call_if 1, MossdeepCity_House2_EventScript_15A8AE
compare FACING, 3
- callif 1, MossdeepCity_House2_EventScript_15A8B9
- disappear 3
+ call_if 1, MossdeepCity_House2_EventScript_15A8B9
+ removeobject 3
release
end
MossdeepCity_House2_EventScript_15A8AE:: @ 815A8AE
- move 3, MossdeepCity_House2_Movement_15A8C4
- waitmove 0
+ applymovement 3, MossdeepCity_House2_Movement_15A8C4
+ waitmovement 0
return
MossdeepCity_House2_EventScript_15A8B9:: @ 815A8B9
- move 3, MossdeepCity_House2_Movement_15A8CB
- waitmove 0
+ applymovement 3, MossdeepCity_House2_Movement_15A8CB
+ waitmovement 0
return
MossdeepCity_House2_Movement_15A8C4:: @ 815A8C4
diff --git a/data/scripts/maps/MossdeepCity_House3.inc b/data/scripts/maps/MossdeepCity_House3.inc
index fd97ee598..8f9bf4dc5 100644
--- a/data/scripts/maps/MossdeepCity_House3.inc
+++ b/data/scripts/maps/MossdeepCity_House3.inc
@@ -5,10 +5,10 @@ MossdeepCity_House3_EventScript_15A972:: @ 815A972
lock
faceplayer
checkflag 152
- jumpeq MossdeepCity_House3_EventScript_15A9B1
+ goto_if_eq MossdeepCity_House3_EventScript_15A9B1
msgbox MossdeepCity_House3_Text_18D909, 5
compare RESULT, 0
- jumpeq MossdeepCity_House3_EventScript_15A9BB
+ goto_if_eq MossdeepCity_House3_EventScript_15A9BB
msgbox MossdeepCity_House3_Text_18D9A9, 4
giveitem ITEM_SUPER_ROD
setflag 152
diff --git a/data/scripts/maps/MossdeepCity_House4.inc b/data/scripts/maps/MossdeepCity_House4.inc
index 12dc941e7..fd173899d 100644
--- a/data/scripts/maps/MossdeepCity_House4.inc
+++ b/data/scripts/maps/MossdeepCity_House4.inc
@@ -5,7 +5,7 @@ MossdeepCity_House4_EventScript_15AB31:: @ 815AB31
lock
faceplayer
checkflag 2052
- jumpeq MossdeepCity_House4_EventScript_15AB46
+ goto_if_eq MossdeepCity_House4_EventScript_15AB46
msgbox MossdeepCity_House4_Text_18E0E3, 4
release
end
@@ -20,7 +20,7 @@ MossdeepCity_House4_EventScript_15AB50:: @ 815AB50
faceplayer
special sub_80BB63C
compare RESULT, 0
- jumpeq MossdeepCity_House4_EventScript_15AB6D
+ goto_if_eq MossdeepCity_House4_EventScript_15AB6D
special GetSecretBaseNearbyMapName
msgbox MossdeepCity_House4_Text_18E17E, 4
release
@@ -34,8 +34,8 @@ MossdeepCity_House4_EventScript_15AB6D:: @ 815AB6D
MossdeepCity_House4_EventScript_15AB77:: @ 815AB77
lock
faceplayer
- checksound
- pokecry SPECIES_SKITTY, 0
+ waitse
+ playpokecry SPECIES_SKITTY, 0
msgbox MossdeepCity_House4_Text_18E1E1, 4
waitpokecry
release
diff --git a/data/scripts/maps/MossdeepCity_Mart.inc b/data/scripts/maps/MossdeepCity_Mart.inc
index d1e861b99..ce5845c81 100644
--- a/data/scripts/maps/MossdeepCity_Mart.inc
+++ b/data/scripts/maps/MossdeepCity_Mart.inc
@@ -5,7 +5,7 @@ MossdeepCity_Mart_EventScript_15A926:: @ 815A926
lock
faceplayer
message MossdeepCity_Mart_Text_1A0BE4
- waittext
+ waitmessage
pokemart MossdeepCity_Mart_Items
msgbox MossdeepCity_Mart_Text_1A0C02, 4
release
diff --git a/data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc b/data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc
index 988608ffd..4ed3ea57e 100644
--- a/data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc
+++ b/data/scripts/maps/MossdeepCity_PokemonCenter_1F.inc
@@ -9,7 +9,7 @@ MossdeepCity_PokemonCenter_1F_MapScript1_15A8D6:: @ 815A8D6
MossdeepCity_PokemonCenter_1F_EventScript_15A8DA:: @ 815A8DA
setvar 0x800b, 1
call MossdeepCity_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
diff --git a/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc b/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc
index db31e4c62..260cb4b6e 100644
--- a/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc
+++ b/data/scripts/maps/MossdeepCity_SpaceCenter_1F.inc
@@ -4,16 +4,16 @@ MossdeepCity_SpaceCenter_1F_MapScripts:: @ 815AB8A
MossdeepCity_SpaceCenter_1F_EventScript_15AB8B:: @ 815AB8B
lock
faceplayer
- checkdailyflags
- specialval RESULT, GetWeekCount
- buffernum 0, RESULT
+ dodailyevents
+ specialvar RESULT, GetWeekCount
+ getnumberstring 0, RESULT
compare RESULT, 0
- callif 1, MossdeepCity_SpaceCenter_1F_EventScript_15ABBA
+ call_if 1, MossdeepCity_SpaceCenter_1F_EventScript_15ABBA
compare RESULT, 1
- callif 4, MossdeepCity_SpaceCenter_1F_EventScript_15ABC3
- closebutton
- move LAST_TALKED, MossdeepCity_SpaceCenter_1F_Movement_1A083D
- waitmove 0
+ call_if 4, MossdeepCity_SpaceCenter_1F_EventScript_15ABC3
+ closemessage
+ applymovement LAST_TALKED, MossdeepCity_SpaceCenter_1F_Movement_1A083D
+ waitmovement 0
release
end
@@ -33,11 +33,11 @@ MossdeepCity_SpaceCenter_1F_EventScript_15ABD5:: @ 815ABD5
lock
faceplayer
checkflag 192
- jumpeq MossdeepCity_SpaceCenter_1F_EventScript_15AC0C
+ goto_if_eq MossdeepCity_SpaceCenter_1F_EventScript_15AC0C
msgbox MossdeepCity_SpaceCenter_1F_Text_18E335, 4
giveitem ITEM_SUN_STONE
compare RESULT, 0
- jumpeq MossdeepCity_SpaceCenter_1F_EventScript_1A029B
+ goto_if_eq MossdeepCity_SpaceCenter_1F_EventScript_1A029B
setflag 192
msgbox MossdeepCity_SpaceCenter_1F_Text_18E39B, 4
release
@@ -56,8 +56,8 @@ MossdeepCity_SpaceCenter_1F_EventScript_15AC1F:: @ 815AC1F
lock
faceplayer
msgbox MossdeepCity_SpaceCenter_1F_Text_18E427, 4
- closebutton
- move LAST_TALKED, MossdeepCity_SpaceCenter_1F_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, MossdeepCity_SpaceCenter_1F_Movement_1A083D
+ waitmovement 0
release
end
diff --git a/data/scripts/maps/MossdeepCity_StevensHouse.inc b/data/scripts/maps/MossdeepCity_StevensHouse.inc
index d4477bd39..8bf899780 100644
--- a/data/scripts/maps/MossdeepCity_StevensHouse.inc
+++ b/data/scripts/maps/MossdeepCity_StevensHouse.inc
@@ -6,7 +6,7 @@ MossdeepCity_StevensHouse_MapScripts:: @ 815A9C5
MossdeepCity_StevensHouse_MapScript1_15A9D5:: @ 815A9D5
checkflag 2052
- callif 0, MossdeepCity_StevensHouse_EventScript_15A9DF
+ call_if 0, MossdeepCity_StevensHouse_EventScript_15A9DF
end
MossdeepCity_StevensHouse_EventScript_15A9DF:: @ 815A9DF
@@ -15,12 +15,12 @@ MossdeepCity_StevensHouse_EventScript_15A9DF:: @ 815A9DF
MossdeepCity_StevensHouse_MapScript1_15A9E9:: @ 815A9E9
compare 0x40c6, 1
- callif 1, MossdeepCity_StevensHouse_EventScript_15A9F5
+ call_if 1, MossdeepCity_StevensHouse_EventScript_15A9F5
end
MossdeepCity_StevensHouse_EventScript_15A9F5:: @ 815A9F5
- movespriteperm 1, 6, 5
- spritebehave 1, 7
+ setobjectxyperm 1, 6, 5
+ setobjectmovementtype 1, 7
return
MossdeepCity_StevensHouse_MapScript2_15AA01:: @ 815AA01
@@ -29,24 +29,24 @@ MossdeepCity_StevensHouse_MapScript2_15AA01:: @ 815AA01
MossdeepCity_StevensHouse_EventScript_15AA0B:: @ 815AA0B
lockall
- move 1, MossdeepCity_StevensHouse_Movement_1A083F
- waitmove 0
- playsfx 21
- move 1, MossdeepCity_StevensHouse_Movement_1A0833
- waitmove 0
- move 1, MossdeepCity_StevensHouse_Movement_1A0835
- waitmove 0
- move 1, MossdeepCity_StevensHouse_Movement_15AA6E
- waitmove 0
+ applymovement 1, MossdeepCity_StevensHouse_Movement_1A083F
+ waitmovement 0
+ playse 21
+ applymovement 1, MossdeepCity_StevensHouse_Movement_1A0833
+ waitmovement 0
+ applymovement 1, MossdeepCity_StevensHouse_Movement_1A0835
+ waitmovement 0
+ applymovement 1, MossdeepCity_StevensHouse_Movement_15AA6E
+ waitmovement 0
msgbox MossdeepCity_StevensHouse_Text_18DA77, 4
giveitem ITEM_HM08
setflag 123
setflag 302
msgbox MossdeepCity_StevensHouse_Text_18DB22, 4
- closebutton
- pause 20
- move 1, MossdeepCity_StevensHouse_Movement_15AA76
- waitmove 0
+ closemessage
+ delay 20
+ applymovement 1, MossdeepCity_StevensHouse_Movement_15AA76
+ waitmovement 0
setvar 0x40c6, 1
releaseall
end
@@ -73,21 +73,21 @@ MossdeepCity_StevensHouse_EventScript_15AA7C:: @ 815AA7C
lockall
msgbox MossdeepCity_StevensHouse_Text_18DD12, 5
compare RESULT, 0
- jumpeq MossdeepCity_StevensHouse_EventScript_15AAE6
+ goto_if_eq MossdeepCity_StevensHouse_EventScript_15AAE6
countpokemon
compare RESULT, 6
- jumpeq MossdeepCity_StevensHouse_EventScript_15AADC
+ goto_if_eq MossdeepCity_StevensHouse_EventScript_15AADC
copyvar 0x8004, RESULT
- disappear 2
- fanfare 370
+ removeobject 2
+ playfanfare 370
message MossdeepCity_StevensHouse_Text_18DD61
waitfanfare
- waittext
- givepokemon SPECIES_BELDUM, 5, ITEM_NONE, 0x0, 0x0, 0
- bufferpoke 1, SPECIES_BELDUM
+ waitmessage
+ givepoke SPECIES_BELDUM, 5, ITEM_NONE, 0x0, 0x0, 0
+ getspeciesname 1, SPECIES_BELDUM
msgbox MossdeepCity_StevensHouse_Text_1A1102, 5
compare RESULT, 1
- callif 1, MossdeepCity_StevensHouse_EventScript_1A0678
+ call_if 1, MossdeepCity_StevensHouse_EventScript_1A0678
setflag 968
setflag 298
releaseall
@@ -114,7 +114,7 @@ MossdeepCity_StevensHouse_EventScript_15AAF9:: @ 815AAF9
MossdeepCity_StevensHouse_EventScript_15AB02:: @ 815AB02
lockall
checkflag 302
- jumpeq MossdeepCity_StevensHouse_EventScript_15AB16
+ goto_if_eq MossdeepCity_StevensHouse_EventScript_15AB16
msgbox MossdeepCity_StevensHouse_Text_18DF1A, 4
releaseall
end
diff --git a/data/scripts/maps/MtChimney.inc b/data/scripts/maps/MtChimney.inc
index fdebcf102..a8eec9a32 100644
--- a/data/scripts/maps/MtChimney.inc
+++ b/data/scripts/maps/MtChimney.inc
@@ -15,46 +15,46 @@ MtChimney_MapScript1_15CF92:: @ 815CF92
MtChimney_EventScript_15CF95:: @ 815CF95
lock
faceplayer
- showmoney 0, 0
- snop
+ showmoneybox 0, 0
+ nop
msgbox MtChimney_Text_195760, 5
compare RESULT, 0
- jumpeq MtChimney_EventScript_15D00B
+ goto_if_eq MtChimney_EventScript_15D00B
checkmoney 0xc8, 0
compare RESULT, 0
- jumpeq MtChimney_EventScript_15D018
+ goto_if_eq MtChimney_EventScript_15D018
msgbox MtChimney_Text_1957A9, 4
checkitemspace ITEM_LAVA_COOKIE, 1
compare RESULT, 1
- callif 1, MtChimney_EventScript_15D000
+ call_if 1, MtChimney_EventScript_15D000
giveitem ITEM_LAVA_COOKIE
compare RESULT, 0
- jumpeq MtChimney_EventScript_15CFF3
- hidemoney 0, 0
+ goto_if_eq MtChimney_EventScript_15CFF3
+ hidemoneybox 0, 0
release
end
MtChimney_EventScript_15CFF3:: @ 815CFF3
msgbox MtChimney_Text_1A0CC2, 4
- hidemoney 0, 0
+ hidemoneybox 0, 0
release
end
MtChimney_EventScript_15D000:: @ 815D000
- paymoney 0xc8, 0
- updatemoney 0, 0
- snop
+ takemoney 0xc8, 0
+ updatemoneybox 0, 0
+ nop
return
MtChimney_EventScript_15D00B:: @ 815D00B
msgbox MtChimney_Text_1957F7, 4
- hidemoney 0, 0
+ hidemoneybox 0, 0
release
end
MtChimney_EventScript_15D018:: @ 815D018
msgbox MtChimney_Text_1957BA, 4
- hidemoney 0, 0
+ hidemoneybox 0, 0
release
end
@@ -407,12 +407,12 @@ MtChimney_EventScript_15D174:: @ 815D174
MtChimney_EventScript_15D17D:: @ 815D17D
lockall
checkflag 139
- jumpif 0, MtChimney_EventScript_15D1D0
+ goto_if 0, MtChimney_EventScript_15D1D0
checkflag 115
- jumpeq MtChimney_EventScript_15D1C6
+ goto_if_eq MtChimney_EventScript_15D1C6
msgbox MtChimney_Text_195870, 5
compare RESULT, 0
- jumpeq MtChimney_EventScript_15D1BC
+ goto_if_eq MtChimney_EventScript_15D1BC
msgbox MtChimney_Text_1958C6, 4
giveitem ITEM_METEORITE
setflag 115
@@ -440,9 +440,9 @@ MtChimney_EventScript_15D1DA:: @ 815D1DA
MtChimney_EventScript_15D1E3:: @ 815D1E3
trainerbattle 0, OPPONENT_SHELBY_1, 0, MtChimney_Text_19597F, MtChimney_Text_1959D8
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq MtChimney_EventScript_15D20A
+ goto_if_eq MtChimney_EventScript_15D20A
msgbox MtChimney_Text_195A04, 6
end
diff --git a/data/scripts/maps/MtChimney_CableCarStation.inc b/data/scripts/maps/MtChimney_CableCarStation.inc
index 24101b0cb..9d99eb5fb 100644
--- a/data/scripts/maps/MtChimney_CableCarStation.inc
+++ b/data/scripts/maps/MtChimney_CableCarStation.inc
@@ -5,12 +5,12 @@ MtChimney_CableCarStation_MapScripts:: @ 815C0FA
MtChimney_CableCarStation_MapScript1_15C105:: @ 815C105
compare 0x40a3, 1
- callif 1, MtChimney_CableCarStation_EventScript_15C111
+ call_if 1, MtChimney_CableCarStation_EventScript_15C111
end
MtChimney_CableCarStation_EventScript_15C111:: @ 815C111
- movespriteperm 1, 5, 4
- spritebehave 1, 10
+ setobjectxyperm 1, 5, 4
+ setobjectmovementtype 1, 10
return
MtChimney_CableCarStation_MapScript2_15C11D:: @ 815C11D
@@ -19,12 +19,12 @@ MtChimney_CableCarStation_MapScript2_15C11D:: @ 815C11D
MtChimney_CableCarStation_EventScript_15C127:: @ 815C127
lockall
- move 255, MtChimney_CableCarStation_Movement_15C1B4
- move 1, MtChimney_CableCarStation_Movement_15C1AA
- waitmove 0
+ applymovement 255, MtChimney_CableCarStation_Movement_15C1B4
+ applymovement 1, MtChimney_CableCarStation_Movement_15C1AA
+ waitmovement 0
setvar 0x40a3, 0
- movespriteperm 1, 6, 7
- spritebehave 1, 8
+ setobjectxyperm 1, 6, 7
+ setobjectmovementtype 1, 8
releaseall
end
@@ -33,20 +33,20 @@ MtChimney_CableCarStation_EventScript_15C14B:: @ 815C14B
faceplayer
msgbox MtChimney_CableCarStation_Text_19256A, 5
compare RESULT, 1
- jumpeq MtChimney_CableCarStation_EventScript_15C16C
+ goto_if_eq MtChimney_CableCarStation_EventScript_15C16C
compare RESULT, 0
- jumpeq MtChimney_CableCarStation_EventScript_15C19B
+ goto_if_eq MtChimney_CableCarStation_EventScript_15C19B
end
MtChimney_CableCarStation_EventScript_15C16C:: @ 815C16C
msgbox MtChimney_CableCarStation_Text_1925A9, 4
- closebutton
- move 1, MtChimney_CableCarStation_Movement_15C1A5
- move 255, MtChimney_CableCarStation_Movement_15C1AF
- waitmove 0
+ closemessage
+ applymovement 1, MtChimney_CableCarStation_Movement_15C1A5
+ applymovement 255, MtChimney_CableCarStation_Movement_15C1AF
+ waitmovement 0
setvar 0x8004, 1
setvar 0x40a3, 2
- inccounter GAME_STAT_RODE_CABLE_CAR
+ incrementgamestat GAME_STAT_RODE_CABLE_CAR
special CableCarWarp
special sub_8123218
waitstate
diff --git a/data/scripts/maps/MtPyre_1F.inc b/data/scripts/maps/MtPyre_1F.inc
index 805c4a8d3..026d54bfe 100644
--- a/data/scripts/maps/MtPyre_1F.inc
+++ b/data/scripts/maps/MtPyre_1F.inc
@@ -5,11 +5,11 @@ MtPyre_1F_EventScript_15D323:: @ 815D323
lock
faceplayer
checkflag 282
- jumpeq MtPyre_1F_EventScript_15D352
+ goto_if_eq MtPyre_1F_EventScript_15D352
msgbox MtPyre_1F_Text_196151, 4
giveitem ITEM_CLEANSE_TAG
compare RESULT, 0
- jumpeq MtPyre_1F_EventScript_1A029B
+ goto_if_eq MtPyre_1F_EventScript_1A029B
setflag 282
release
end
diff --git a/data/scripts/maps/MtPyre_2F.inc b/data/scripts/maps/MtPyre_2F.inc
index c44251af7..8d48dac84 100644
--- a/data/scripts/maps/MtPyre_2F.inc
+++ b/data/scripts/maps/MtPyre_2F.inc
@@ -6,7 +6,7 @@ MtPyre_2F_MapScripts:: @ 815D36E
MtPyre_2F_MapScript1_15D37E:: @ 815D37E
tileeffect 7
- warp5 MtPyre_1F, 255, 0, 0
+ setholewarp MtPyre_1F, 255, 0, 0
end
MtPyre_2F_EventScript_15D389:: @ 815D389
diff --git a/data/scripts/maps/MtPyre_6F.inc b/data/scripts/maps/MtPyre_6F.inc
index 657b4ef15..433b533b3 100644
--- a/data/scripts/maps/MtPyre_6F.inc
+++ b/data/scripts/maps/MtPyre_6F.inc
@@ -3,9 +3,9 @@ MtPyre_6F_MapScripts:: @ 815D447
MtPyre_6F_EventScript_15D448:: @ 815D448
trainerbattle 0, OPPONENT_VALERIE_1, 0, MtPyre_6F_Text_1969FE, MtPyre_6F_Text_196A30
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq MtPyre_6F_EventScript_15D46F
+ goto_if_eq MtPyre_6F_EventScript_15D46F
msgbox MtPyre_6F_Text_196A4C, 6
end
diff --git a/data/scripts/maps/MtPyre_Exterior.inc b/data/scripts/maps/MtPyre_Exterior.inc
index efffc7c3b..550f74d9a 100644
--- a/data/scripts/maps/MtPyre_Exterior.inc
+++ b/data/scripts/maps/MtPyre_Exterior.inc
@@ -9,7 +9,7 @@ MtPyre_Exterior_MapScript1_15D48C:: @ 815D48C
MtPyre_Exterior_EventScript_15D492:: @ 815D492
getplayerxy 0x4000, 0x4001
compare 0x4001, 12
- jumpif 0, MtPyre_Exterior_EventScript_15D4A3
+ goto_if 0, MtPyre_Exterior_EventScript_15D4A3
return
MtPyre_Exterior_EventScript_15D4A3:: @ 815D4A3
diff --git a/data/scripts/maps/MtPyre_Summit.inc b/data/scripts/maps/MtPyre_Summit.inc
index e352ac30e..533fb6e90 100644
--- a/data/scripts/maps/MtPyre_Summit.inc
+++ b/data/scripts/maps/MtPyre_Summit.inc
@@ -9,55 +9,55 @@ MtPyre_Summit_MapScript1_15D4B7:: @ 815D4B7
MtPyre_Summit_EventScript_15D4BD:: @ 815D4BD
lockall
setvar 0x8008, 0
- jump MtPyre_Summit_EventScript_15D4E1
+ goto MtPyre_Summit_EventScript_15D4E1
end
MtPyre_Summit_EventScript_15D4C9:: @ 815D4C9
lockall
setvar 0x8008, 1
- jump MtPyre_Summit_EventScript_15D4E1
+ goto MtPyre_Summit_EventScript_15D4E1
end
MtPyre_Summit_EventScript_15D4D5:: @ 815D4D5
lockall
setvar 0x8008, 2
- jump MtPyre_Summit_EventScript_15D4E1
+ goto MtPyre_Summit_EventScript_15D4E1
end
MtPyre_Summit_EventScript_15D4E1:: @ 815D4E1
- move 255, MtPyre_Summit_Movement_1A0841
- waitmove 0
- move 2, MtPyre_Summit_Movement_1A0845
- waitmove 0
- pause 50
+ applymovement 255, MtPyre_Summit_Movement_1A0841
+ waitmovement 0
+ applymovement 2, MtPyre_Summit_Movement_1A0845
+ waitmovement 0
+ delay 50
compare 0x8008, 0
- callif 1, MtPyre_Summit_EventScript_15D593
+ call_if 1, MtPyre_Summit_EventScript_15D593
compare 0x8008, 1
- callif 1, MtPyre_Summit_EventScript_15D59E
+ call_if 1, MtPyre_Summit_EventScript_15D59E
compare 0x8008, 2
- callif 1, MtPyre_Summit_EventScript_15D59F
+ call_if 1, MtPyre_Summit_EventScript_15D59F
.ifdef SAPPHIRE
msgbox UnknownString_81B52B0, 4
.else
msgbox MtPyre_Summit_Text_1B5EEC, 4
.endif
- closebutton
+ closemessage
fadescreen 1
- disappear 2
- disappear 4
- disappear 5
- disappear 6
+ removeobject 2
+ removeobject 4
+ removeobject 5
+ removeobject 6
setflag 916
setflag 917
fadescreen 0
- pause 20
+ delay 20
call MtPyre_Summit_EventScript_15D57A
compare 0x8008, 0
- callif 1, MtPyre_Summit_EventScript_15D5AA
+ call_if 1, MtPyre_Summit_EventScript_15D5AA
compare 0x8008, 1
- callif 1, MtPyre_Summit_EventScript_15D5BF
+ call_if 1, MtPyre_Summit_EventScript_15D5BF
compare 0x8008, 2
- callif 1, MtPyre_Summit_EventScript_15D5CA
+ call_if 1, MtPyre_Summit_EventScript_15D5CA
.ifdef SAPPHIRE
msgbox UnknownString_81B53AB, 4
.else
@@ -78,35 +78,35 @@ MtPyre_Summit_EventScript_15D57A:: @ 815D57A
return
MtPyre_Summit_EventScript_15D593:: @ 815D593
- move 2, MtPyre_Summit_Movement_15D5E9
- waitmove 0
+ applymovement 2, MtPyre_Summit_Movement_15D5E9
+ waitmovement 0
return
MtPyre_Summit_EventScript_15D59E:: @ 815D59E
return
MtPyre_Summit_EventScript_15D59F:: @ 815D59F
- move 2, MtPyre_Summit_Movement_15D5EC
- waitmove 0
+ applymovement 2, MtPyre_Summit_Movement_15D5EC
+ waitmovement 0
return
MtPyre_Summit_EventScript_15D5AA:: @ 815D5AA
- move 3, MtPyre_Summit_Movement_15D5DF
- waitmove 0
- move 255, MtPyre_Summit_Movement_1A0843
- waitmove 0
+ applymovement 3, MtPyre_Summit_Movement_15D5DF
+ waitmovement 0
+ applymovement 255, MtPyre_Summit_Movement_1A0843
+ waitmovement 0
return
MtPyre_Summit_EventScript_15D5BF:: @ 815D5BF
- move 3, MtPyre_Summit_Movement_15D5E3
- waitmove 0
+ applymovement 3, MtPyre_Summit_Movement_15D5E3
+ waitmovement 0
return
MtPyre_Summit_EventScript_15D5CA:: @ 815D5CA
- move 3, MtPyre_Summit_Movement_15D5E5
- waitmove 0
- move 255, MtPyre_Summit_Movement_1A083F
- waitmove 0
+ applymovement 3, MtPyre_Summit_Movement_15D5E5
+ waitmovement 0
+ applymovement 255, MtPyre_Summit_Movement_1A083F
+ waitmovement 0
return
MtPyre_Summit_Movement_15D5DF:: @ 815D5DF
@@ -144,9 +144,9 @@ MtPyre_Summit_EventScript_15D5EF:: @ 815D5EF
msgbox MtPyre_Summit_Text_1B64B3, 5
.endif
compare RESULT, 1
- callif 1, MtPyre_Summit_EventScript_15D611
+ call_if 1, MtPyre_Summit_EventScript_15D611
compare RESULT, 0
- callif 1, MtPyre_Summit_EventScript_15D61A
+ call_if 1, MtPyre_Summit_EventScript_15D61A
release
end
@@ -170,11 +170,11 @@ MtPyre_Summit_EventScript_15D623:: @ 815D623
lock
faceplayer
checkflag 259
- jumpeq MtPyre_Summit_EventScript_15D6C4
+ goto_if_eq MtPyre_Summit_EventScript_15D6C4
checkflag 113
- jumpeq MtPyre_Summit_EventScript_15D64A
+ goto_if_eq MtPyre_Summit_EventScript_15D64A
checkflag 129
- jumpeq MtPyre_Summit_EventScript_15D6BA
+ goto_if_eq MtPyre_Summit_EventScript_15D6BA
.ifdef SAPPHIRE
msgbox UnknownString_81B54BE, 4
.else
@@ -190,21 +190,21 @@ MtPyre_Summit_EventScript_15D64A:: @ 815D64A
msgbox MtPyre_Summit_Text_1B6283, 5
.endif
compare RESULT, 1
- jumpeq MtPyre_Summit_EventScript_15D669
+ goto_if_eq MtPyre_Summit_EventScript_15D669
compare RESULT, 0
- jumpeq MtPyre_Summit_EventScript_15D69B
+ goto_if_eq MtPyre_Summit_EventScript_15D69B
end
MtPyre_Summit_EventScript_15D669:: @ 815D669
setvar 0x8004, ITEM_RED_OR_BLUE_ORB
call MtPyre_Summit_EventScript_1A067F
- closebutton
- move LAST_TALKED, MtPyre_Summit_Movement_1A0841
- waitmove 0
- pause 40
- move LAST_TALKED, MtPyre_Summit_Movement_1A0839
- waitmove 0
- pause 10
+ closemessage
+ applymovement LAST_TALKED, MtPyre_Summit_Movement_1A0841
+ waitmovement 0
+ delay 40
+ applymovement LAST_TALKED, MtPyre_Summit_Movement_1A0839
+ waitmovement 0
+ delay 10
.ifdef SAPPHIRE
msgbox UnknownString_81B5762, 4
.else
@@ -221,9 +221,9 @@ MtPyre_Summit_EventScript_15D69B:: @ 815D69B
msgbox MtPyre_Summit_Text_1B62E7, 5
.endif
compare RESULT, 1
- jumpeq MtPyre_Summit_EventScript_15D669
+ goto_if_eq MtPyre_Summit_EventScript_15D669
compare RESULT, 0
- jumpeq MtPyre_Summit_EventScript_15D69B
+ goto_if_eq MtPyre_Summit_EventScript_15D69B
end
MtPyre_Summit_EventScript_15D6BA:: @ 815D6BA
@@ -247,78 +247,78 @@ MtPyre_Summit_EventScript_15D6C4:: @ 815D6C4
MtPyre_Summit_EventScript_15D6CE:: @ 815D6CE
lockall
setvar 0x8008, 0
- jump MtPyre_Summit_EventScript_15D6F2
+ goto MtPyre_Summit_EventScript_15D6F2
end
MtPyre_Summit_EventScript_15D6DA:: @ 815D6DA
lockall
setvar 0x8008, 1
- jump MtPyre_Summit_EventScript_15D6F2
+ goto MtPyre_Summit_EventScript_15D6F2
end
MtPyre_Summit_EventScript_15D6E6:: @ 815D6E6
lockall
setvar 0x8008, 2
- jump MtPyre_Summit_EventScript_15D6F2
+ goto MtPyre_Summit_EventScript_15D6F2
end
MtPyre_Summit_EventScript_15D6F2:: @ 815D6F2
- move 255, MtPyre_Summit_Movement_1A0841
- waitmove 0
- move 2, MtPyre_Summit_Movement_1A0845
- waitmove 0
- pause 50
+ applymovement 255, MtPyre_Summit_Movement_1A0841
+ waitmovement 0
+ applymovement 2, MtPyre_Summit_Movement_1A0845
+ waitmovement 0
+ delay 50
compare 0x8008, 0
- callif 1, MtPyre_Summit_EventScript_15D75E
+ call_if 1, MtPyre_Summit_EventScript_15D75E
compare 0x8008, 1
- callif 1, MtPyre_Summit_EventScript_15D769
+ call_if 1, MtPyre_Summit_EventScript_15D769
compare 0x8008, 2
- callif 1, MtPyre_Summit_EventScript_15D774
+ call_if 1, MtPyre_Summit_EventScript_15D774
.ifdef SAPPHIRE
msgbox UnknownString_81B5BFC, 4
.else
msgbox MtPyre_Summit_Text_1B6848, 4
.endif
- closebutton
+ closemessage
compare 0x8008, 0
- callif 1, MtPyre_Summit_EventScript_15D77F
+ call_if 1, MtPyre_Summit_EventScript_15D77F
compare 0x8008, 1
- callif 1, MtPyre_Summit_EventScript_15D78A
+ call_if 1, MtPyre_Summit_EventScript_15D78A
compare 0x8008, 2
- callif 1, MtPyre_Summit_EventScript_15D795
- disappear 2
+ call_if 1, MtPyre_Summit_EventScript_15D795
+ removeobject 2
setvar 0x40b9, 3
releaseall
end
MtPyre_Summit_EventScript_15D75E:: @ 815D75E
- move 2, MtPyre_Summit_Movement_15D7A0
- waitmove 0
+ applymovement 2, MtPyre_Summit_Movement_15D7A0
+ waitmovement 0
return
MtPyre_Summit_EventScript_15D769:: @ 815D769
- move 2, MtPyre_Summit_Movement_15D7A3
- waitmove 0
+ applymovement 2, MtPyre_Summit_Movement_15D7A3
+ waitmovement 0
return
MtPyre_Summit_EventScript_15D774:: @ 815D774
- move 2, MtPyre_Summit_Movement_15D7A4
- waitmove 0
+ applymovement 2, MtPyre_Summit_Movement_15D7A4
+ waitmovement 0
return
MtPyre_Summit_EventScript_15D77F:: @ 815D77F
- move 2, MtPyre_Summit_Movement_15D7A7
- waitmove 0
+ applymovement 2, MtPyre_Summit_Movement_15D7A7
+ waitmovement 0
return
MtPyre_Summit_EventScript_15D78A:: @ 815D78A
- move 2, MtPyre_Summit_Movement_15D7B0
- waitmove 0
+ applymovement 2, MtPyre_Summit_Movement_15D7B0
+ waitmovement 0
return
MtPyre_Summit_EventScript_15D795:: @ 815D795
- move 2, MtPyre_Summit_Movement_15D7B9
- waitmove 0
+ applymovement 2, MtPyre_Summit_Movement_15D7B9
+ waitmovement 0
return
MtPyre_Summit_Movement_15D7A0:: @ 815D7A0
diff --git a/data/scripts/maps/NewMauville_Entrance.inc b/data/scripts/maps/NewMauville_Entrance.inc
index 547fc72e7..6429ff2f9 100644
--- a/data/scripts/maps/NewMauville_Entrance.inc
+++ b/data/scripts/maps/NewMauville_Entrance.inc
@@ -5,7 +5,7 @@ NewMauville_Entrance_MapScripts:: @ 815E48A
NewMauville_Entrance_MapScript1_15E495:: @ 815E495
compare 0x40ba, 0
- callif 1, NewMauville_Entrance_EventScript_15E4A1
+ call_if 1, NewMauville_Entrance_EventScript_15E4A1
end
NewMauville_Entrance_EventScript_15E4A1:: @ 815E4A1
@@ -23,15 +23,15 @@ NewMauville_Entrance_MapScript1_15E4D8:: @ 815E4D8
NewMauville_Entrance_EventScript_15E4DC:: @ 815E4DC
lockall
- move 255, NewMauville_Entrance_Movement_1A0841
- waitmove 0
+ applymovement 255, NewMauville_Entrance_Movement_1A0841
+ waitmovement 0
msgbox NewMauville_Entrance_Text_1982C0, 4
checkitem ITEM_BASEMENT_KEY, 1
compare RESULT, 0
- jumpeq NewMauville_Entrance_EventScript_15E55D
+ goto_if_eq NewMauville_Entrance_EventScript_15E55D
msgbox NewMauville_Entrance_Text_1982D4, 5
compare RESULT, 0
- jumpeq NewMauville_Entrance_EventScript_15E55D
+ goto_if_eq NewMauville_Entrance_EventScript_15E55D
msgbox NewMauville_Entrance_Text_1982EA, 4
setmaptile 3, 0, 707, 0
setmaptile 4, 0, 708, 0
@@ -40,7 +40,7 @@ NewMauville_Entrance_EventScript_15E4DC:: @ 815E4DC
setmaptile 4, 1, 716, 0
setmaptile 5, 1, 717, 1
special DrawWholeMapView
- playsfx 20
+ playse 20
setvar 0x40ba, 1
releaseall
end
diff --git a/data/scripts/maps/NewMauville_Inside.inc b/data/scripts/maps/NewMauville_Inside.inc
index b088b8e7d..2d2a46ab4 100644
--- a/data/scripts/maps/NewMauville_Inside.inc
+++ b/data/scripts/maps/NewMauville_Inside.inc
@@ -6,15 +6,15 @@ NewMauville_Inside_MapScripts:: @ 815E55F
NewMauville_Inside_MapScript1_15E56F:: @ 815E56F
compare 0x4001, 1
- callif 1, NewMauville_Inside_EventScript_15E5DA
+ call_if 1, NewMauville_Inside_EventScript_15E5DA
compare 0x4002, 1
- callif 1, NewMauville_Inside_EventScript_15E728
+ call_if 1, NewMauville_Inside_EventScript_15E728
checkflag 2145
- callif 1, NewMauville_Inside_EventScript_15E58F
+ call_if 1, NewMauville_Inside_EventScript_15E58F
end
NewMauville_Inside_EventScript_15E58F:: @ 815E58F
- disappear LAST_TALKED
+ removeobject LAST_TALKED
return
NewMauville_Inside_MapScript1_15E593:: @ 815E593
@@ -24,14 +24,14 @@ NewMauville_Inside_MapScript1_15E593:: @ 815E593
NewMauville_Inside_MapScript1_15E59E:: @ 815E59E
compare 0x40ba, 2
- callif 1, NewMauville_Inside_EventScript_15E88B
+ call_if 1, NewMauville_Inside_EventScript_15E88B
end
NewMauville_Inside_EventScript_15E5AA:: @ 815E5AA
lockall
setvar 0x4001, 1
setvar 0x4002, 0
- playsfx 21
+ playse 21
call NewMauville_Inside_EventScript_15E5DA
special DrawWholeMapView
releaseall
@@ -41,7 +41,7 @@ NewMauville_Inside_EventScript_15E5C2:: @ 815E5C2
lockall
setvar 0x4001, 0
setvar 0x4002, 1
- playsfx 21
+ playse 21
call NewMauville_Inside_EventScript_15E728
special DrawWholeMapView
releaseall
@@ -151,7 +151,7 @@ NewMauville_Inside_EventScript_15E88B:: @ 815E88B
NewMauville_Inside_EventScript_15E8E0:: @ 815E8E0
lockall
compare 0x40ba, 2
- jumpeq NewMauville_Inside_EventScript_15E8F6
+ goto_if_eq NewMauville_Inside_EventScript_15E8F6
msgbox NewMauville_Inside_Text_198315, 4
releaseall
end
@@ -165,9 +165,9 @@ NewMauville_Inside_EventScript_15E900:: @ 815E900
lock
faceplayer
setwildbattle SPECIES_VOLTORB, 25, ITEM_NONE
- checksound
- pokecry SPECIES_VOLTORB, 2
- pause 40
+ waitse
+ playpokecry SPECIES_VOLTORB, 2
+ delay 40
waitpokecry
setflag 974
setflag 2145
@@ -180,9 +180,9 @@ NewMauville_Inside_EventScript_15E91E:: @ 815E91E
lock
faceplayer
setwildbattle SPECIES_VOLTORB, 25, ITEM_NONE
- checksound
- pokecry SPECIES_VOLTORB, 2
- pause 40
+ waitse
+ playpokecry SPECIES_VOLTORB, 2
+ delay 40
waitpokecry
setflag 975
setflag 2145
@@ -195,9 +195,9 @@ NewMauville_Inside_EventScript_15E93C:: @ 815E93C
lock
faceplayer
setwildbattle SPECIES_VOLTORB, 25, ITEM_NONE
- checksound
- pokecry SPECIES_VOLTORB, 2
- pause 40
+ waitse
+ playpokecry SPECIES_VOLTORB, 2
+ delay 40
waitpokecry
setflag 976
setflag 2145
diff --git a/data/scripts/maps/OldaleTown.inc b/data/scripts/maps/OldaleTown.inc
index 68ed80949..e80df2cd2 100644
--- a/data/scripts/maps/OldaleTown.inc
+++ b/data/scripts/maps/OldaleTown.inc
@@ -6,11 +6,11 @@ OldaleTown_MapScript1_14DD68:: @ 814DD68
call OldaleTown_EventScript_1A014E
setflag 2064
checkflag 116
- callif 0, OldaleTown_EventScript_14DD92
+ call_if 0, OldaleTown_EventScript_14DD92
checkflag 132
- callif 0, OldaleTown_EventScript_14DD9E
+ call_if 0, OldaleTown_EventScript_14DD9E
checkflag 116
- callif 1, OldaleTown_EventScript_14DD8C
+ call_if 1, OldaleTown_EventScript_14DD8C
end
OldaleTown_EventScript_14DD8C:: @ 814DD8C
@@ -18,13 +18,13 @@ OldaleTown_EventScript_14DD8C:: @ 814DD8C
return
OldaleTown_EventScript_14DD92:: @ 814DD92
- movespriteperm 3, 1, 11
- spritebehave 3, 9
+ setobjectxyperm 3, 1, 11
+ setobjectmovementtype 3, 9
return
OldaleTown_EventScript_14DD9E:: @ 814DD9E
- movespriteperm 2, 13, 14
- spritebehave 2, 8
+ setobjectxyperm 2, 13, 14
+ setobjectmovementtype 2, 8
return
OldaleTown_EventScript_14DDAA:: @ 814DDAA
@@ -39,13 +39,13 @@ OldaleTown_EventScript_14DDBC:: @ 814DDBC
lock
faceplayer
checkflag 132
- jumpeq OldaleTown_EventScript_14DE79
+ goto_if_eq OldaleTown_EventScript_14DE79
checkflag 1
- jumpeq OldaleTown_EventScript_14DE79
+ goto_if_eq OldaleTown_EventScript_14DE79
setflag 1
- playmusic 420, 0
+ playbgm 420, 0
msgbox OldaleTown_Text_16AEF2, 4
- closebutton
+ closemessage
switch FACING
case 1, OldaleTown_EventScript_14DE07
case 2, OldaleTown_EventScript_14DE1E
@@ -53,34 +53,34 @@ OldaleTown_EventScript_14DDBC:: @ 814DDBC
end
OldaleTown_EventScript_14DE07:: @ 814DE07
- move 2, OldaleTown_Movement_14DE97
- move 255, OldaleTown_Movement_14DEC1
- waitmove 0
- jump OldaleTown_EventScript_14DE4C
+ applymovement 2, OldaleTown_Movement_14DE97
+ applymovement 255, OldaleTown_Movement_14DEC1
+ waitmovement 0
+ goto OldaleTown_EventScript_14DE4C
end
OldaleTown_EventScript_14DE1E:: @ 814DE1E
- move 2, OldaleTown_Movement_14DEA2
- move 255, OldaleTown_Movement_14DECB
- waitmove 0
- jump OldaleTown_EventScript_14DE4C
+ applymovement 2, OldaleTown_Movement_14DEA2
+ applymovement 255, OldaleTown_Movement_14DECB
+ waitmovement 0
+ goto OldaleTown_EventScript_14DE4C
end
OldaleTown_EventScript_14DE35:: @ 814DE35
- move 255, OldaleTown_Movement_14DEB9
- move 2, OldaleTown_Movement_14DE8E
- waitmove 0
- jump OldaleTown_EventScript_14DE4C
+ applymovement 255, OldaleTown_Movement_14DEB9
+ applymovement 2, OldaleTown_Movement_14DE8E
+ waitmovement 0
+ goto OldaleTown_EventScript_14DE4C
end
OldaleTown_EventScript_14DE4C:: @ 814DE4C
msgbox OldaleTown_Text_16AF2F, 4
giveitem ITEM_POTION
compare RESULT, 0
- jumpeq OldaleTown_EventScript_14DE83
+ goto_if_eq OldaleTown_EventScript_14DE83
msgbox OldaleTown_Text_16AFE1, 4
setflag 132
- fadedefault
+ fadedefaultbgm
release
end
@@ -91,7 +91,7 @@ OldaleTown_EventScript_14DE79:: @ 814DE79
OldaleTown_EventScript_14DE83:: @ 814DE83
msgbox OldaleTown_Text_1A0CC2, 4
- fadedefault
+ fadedefaultbgm
release
end
@@ -196,23 +196,23 @@ OldaleTown_EventScript_14DEDF:: @ 814DEDF
lock
faceplayer
checkflag 116
- jumpeq OldaleTown_EventScript_14DF26
+ goto_if_eq OldaleTown_EventScript_14DF26
msgbox OldaleTown_Text_16B0CC, 4
- closebutton
- move 3, OldaleTown_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 3, OldaleTown_Movement_1A083D
+ waitmovement 0
release
end
OldaleTown_EventScript_14DEFF:: @ 814DEFF
lockall
- move 255, OldaleTown_Movement_14DFEC
- move 3, OldaleTown_Movement_14DFEF
- waitmove 0
+ applymovement 255, OldaleTown_Movement_14DFEC
+ applymovement 3, OldaleTown_Movement_14DFEF
+ waitmovement 0
msgbox OldaleTown_Text_16B045, 4
- closebutton
- move 3, OldaleTown_Movement_14DFF5
- waitmove 0
+ closemessage
+ applymovement 3, OldaleTown_Movement_14DFF5
+ waitmovement 0
releaseall
end
@@ -223,61 +223,61 @@ OldaleTown_EventScript_14DF26:: @ 814DF26
OldaleTown_EventScript_14DF30:: @ 814DF30
lockall
- move 4, OldaleTown_Movement_1A0839
- waitmove 0
- jump OldaleTown_EventScript_14DF92
+ applymovement 4, OldaleTown_Movement_1A0839
+ waitmovement 0
+ goto OldaleTown_EventScript_14DF92
end
OldaleTown_EventScript_14DF41:: @ 814DF41
lockall
- move 4, OldaleTown_Movement_14DFDE
- waitmove 0
- move 255, OldaleTown_Movement_1A0843
- waitmove 0
- jump OldaleTown_EventScript_14DF92
+ applymovement 4, OldaleTown_Movement_14DFDE
+ waitmovement 0
+ applymovement 255, OldaleTown_Movement_1A0843
+ waitmovement 0
+ goto OldaleTown_EventScript_14DF92
end
OldaleTown_EventScript_14DF5C:: @ 814DF5C
lockall
- move 4, OldaleTown_Movement_14DFE1
- waitmove 0
- move 255, OldaleTown_Movement_1A0843
- waitmove 0
- jump OldaleTown_EventScript_14DF92
+ applymovement 4, OldaleTown_Movement_14DFE1
+ waitmovement 0
+ applymovement 255, OldaleTown_Movement_1A0843
+ waitmovement 0
+ goto OldaleTown_EventScript_14DF92
end
OldaleTown_EventScript_14DF77:: @ 814DF77
lockall
- move 4, OldaleTown_Movement_14DFE3
- waitmove 0
- move 255, OldaleTown_Movement_1A0843
- waitmove 0
- jump OldaleTown_EventScript_14DF92
+ applymovement 4, OldaleTown_Movement_14DFE3
+ waitmovement 0
+ applymovement 255, OldaleTown_Movement_1A0843
+ waitmovement 0
+ goto OldaleTown_EventScript_14DF92
end
OldaleTown_EventScript_14DF92:: @ 814DF92
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq OldaleTown_EventScript_14DFAA
+ goto_if_eq OldaleTown_EventScript_14DFAA
compare RESULT, 1
- jumpeq OldaleTown_EventScript_14DFB8
+ goto_if_eq OldaleTown_EventScript_14DFB8
end
OldaleTown_EventScript_14DFAA:: @ 814DFAA
msgbox OldaleTown_Text_16B196, 4
- jump OldaleTown_EventScript_14DFC6
+ goto OldaleTown_EventScript_14DFC6
end
OldaleTown_EventScript_14DFB8:: @ 814DFB8
msgbox OldaleTown_Text_16B1BE, 4
- jump OldaleTown_EventScript_14DFC6
+ goto OldaleTown_EventScript_14DFC6
end
OldaleTown_EventScript_14DFC6:: @ 814DFC6
- closebutton
- move 4, OldaleTown_Movement_14DFE5
- waitmove 0
- disappear 4
+ closemessage
+ applymovement 4, OldaleTown_Movement_14DFE5
+ waitmovement 0
+ removeobject 4
setvar 0x40c7, 2
setflag 979
releaseall
diff --git a/data/scripts/maps/OldaleTown_Mart.inc b/data/scripts/maps/OldaleTown_Mart.inc
index 3f4994890..b9698b58f 100644
--- a/data/scripts/maps/OldaleTown_Mart.inc
+++ b/data/scripts/maps/OldaleTown_Mart.inc
@@ -5,9 +5,9 @@ OldaleTown_Mart_EventScript_152F79:: @ 8152F79
lock
faceplayer
message OldaleTown_Mart_Text_1A0BE4
- waittext
+ waitmessage
checkflag 116
- jumpeq OldaleTown_Mart_EventScript_152FA8
+ goto_if_eq OldaleTown_Mart_EventScript_152FA8
pokemart OldaleTown_Mart_Items1
msgbox OldaleTown_Mart_Text_1A0C02, 4
release
@@ -44,7 +44,7 @@ OldaleTown_Mart_EventScript_152FC6:: @ 8152FC6
lock
faceplayer
checkflag 116
- jumpeq OldaleTown_Mart_EventScript_152FDB
+ goto_if_eq OldaleTown_Mart_EventScript_152FDB
msgbox OldaleTown_Mart_Text_174A8A, 4
release
end
diff --git a/data/scripts/maps/OldaleTown_PokemonCenter_1F.inc b/data/scripts/maps/OldaleTown_PokemonCenter_1F.inc
index 4ba96ddc8..494f109fe 100644
--- a/data/scripts/maps/OldaleTown_PokemonCenter_1F.inc
+++ b/data/scripts/maps/OldaleTown_PokemonCenter_1F.inc
@@ -10,7 +10,7 @@ OldaleTown_PokemonCenter_1F_MapScript1_152F0E:: @ 8152F0E
OldaleTown_PokemonCenter_1F_EventScript_152F17:: @ 8152F17
setvar 0x800b, 1
call OldaleTown_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
@@ -27,7 +27,7 @@ OldaleTown_PokemonCenter_1F_EventScript_152F37:: @ 8152F37
lock
faceplayer
checkflag 2049
- jumpeq OldaleTown_PokemonCenter_1F_EventScript_152F4C
+ goto_if_eq OldaleTown_PokemonCenter_1F_EventScript_152F4C
msgbox OldaleTown_PokemonCenter_1F_Text_1749C0, 4
release
end
diff --git a/data/scripts/maps/PacifidlogTown_House2.inc b/data/scripts/maps/PacifidlogTown_House2.inc
index e45f09de4..e04a8caae 100644
--- a/data/scripts/maps/PacifidlogTown_House2.inc
+++ b/data/scripts/maps/PacifidlogTown_House2.inc
@@ -4,30 +4,30 @@ PacifidlogTown_House2_MapScripts:: @ 8154167
PacifidlogTown_House2_EventScript_154168:: @ 8154168
lock
faceplayer
- checkdailyflags
+ dodailyevents
call PacifidlogTown_House2_EventScript_1541B4
checkflag 299
- jumpeq PacifidlogTown_House2_EventScript_154254
+ goto_if_eq PacifidlogTown_House2_EventScript_154254
checkflag 300
- callif 1, PacifidlogTown_House2_EventScript_1541CE
+ call_if 1, PacifidlogTown_House2_EventScript_1541CE
checkflag 300
- callif 0, PacifidlogTown_House2_EventScript_1541D7
+ call_if 0, PacifidlogTown_House2_EventScript_1541D7
setflag 300
- specialval RESULT, GetLeadMonFriendshipScore
+ specialvar RESULT, GetLeadMonFriendshipScore
compare RESULT, 4
- jumpif 4, PacifidlogTown_House2_EventScript_1541EC
- specialval RESULT, GetLeadMonFriendshipScore
+ goto_if 4, PacifidlogTown_House2_EventScript_1541EC
+ specialvar RESULT, GetLeadMonFriendshipScore
compare RESULT, 2
- jumpif 4, PacifidlogTown_House2_EventScript_15421B
- jump PacifidlogTown_House2_EventScript_154225
+ goto_if 4, PacifidlogTown_House2_EventScript_15421B
+ goto PacifidlogTown_House2_EventScript_154225
end
PacifidlogTown_House2_EventScript_1541B4:: @ 81541B4
checkflag 299
- jumpif 0, PacifidlogTown_House2_EventScript_1A14DC
- specialval RESULT, sub_810F908
+ goto_if 0, PacifidlogTown_House2_EventScript_1A14DC
+ specialvar RESULT, sub_810F908
compare RESULT, 0
- callif 1, PacifidlogTown_House2_EventScript_1541E8
+ call_if 1, PacifidlogTown_House2_EventScript_1541E8
return
PacifidlogTown_House2_EventScript_1541CE:: @ 81541CE
@@ -47,7 +47,7 @@ PacifidlogTown_House2_EventScript_1541EC:: @ 81541EC
msgbox PacifidlogTown_House2_Text_179169, 4
giveitem ITEM_TM27
compare RESULT, 0
- jumpeq PacifidlogTown_House2_EventScript_1A029B
+ goto_if_eq PacifidlogTown_House2_EventScript_1A029B
setflag 299
special sub_810F950
msgbox PacifidlogTown_House2_Text_179283, 4
@@ -63,7 +63,7 @@ PacifidlogTown_House2_EventScript_154225:: @ 8154225
msgbox PacifidlogTown_House2_Text_17922D, 4
giveitem ITEM_TM21
compare RESULT, 0
- jumpeq PacifidlogTown_House2_EventScript_1A029B
+ goto_if_eq PacifidlogTown_House2_EventScript_1A029B
setflag 299
special sub_810F950
msgbox PacifidlogTown_House2_Text_179283, 4
@@ -71,8 +71,8 @@ PacifidlogTown_House2_EventScript_154225:: @ 8154225
end
PacifidlogTown_House2_EventScript_154254:: @ 8154254
- specialval RESULT, sub_810F908
- buffernum 0, RESULT
+ specialvar RESULT, sub_810F908
+ getnumberstring 0, RESULT
msgbox PacifidlogTown_House2_Text_1792F2, 4
release
end
@@ -80,8 +80,8 @@ PacifidlogTown_House2_EventScript_154254:: @ 8154254
PacifidlogTown_House2_EventScript_154267:: @ 8154267
lock
faceplayer
- checksound
- pokecry SPECIES_AZURILL, 0
+ waitse
+ playpokecry SPECIES_AZURILL, 0
msgbox PacifidlogTown_House2_Text_17938B, 4
waitpokecry
msgbox PacifidlogTown_House2_Text_17939B, 4
@@ -91,8 +91,8 @@ PacifidlogTown_House2_EventScript_154267:: @ 8154267
PacifidlogTown_House2_EventScript_154282:: @ 8154282
lock
faceplayer
- checksound
- pokecry SPECIES_AZURILL, 2
+ waitse
+ playpokecry SPECIES_AZURILL, 2
msgbox PacifidlogTown_House2_Text_1793CC, 4
waitpokecry
msgbox PacifidlogTown_House2_Text_1793DD, 4
diff --git a/data/scripts/maps/PacifidlogTown_House3.inc b/data/scripts/maps/PacifidlogTown_House3.inc
index 6ab9a09b0..28b9dbd80 100644
--- a/data/scripts/maps/PacifidlogTown_House3.inc
+++ b/data/scripts/maps/PacifidlogTown_House3.inc
@@ -5,30 +5,30 @@ PacifidlogTown_House3_EventScript_15429E:: @ 815429E
lock
faceplayer
checkflag 154
- jumpeq PacifidlogTown_House3_EventScript_154338
+ goto_if_eq PacifidlogTown_House3_EventScript_154338
setvar 0x8008, 2
copyvar 0x8004, 0x8008
- specialval RESULT, sub_804D89C
+ specialvar RESULT, sub_804D89C
copyvar 0x8009, RESULT
msgbox PacifidlogTown_House3_Text_17940E, 5
compare RESULT, 0
- jumpeq PacifidlogTown_House3_EventScript_154320
+ goto_if_eq PacifidlogTown_House3_EventScript_154320
special sub_80F9A0C
waitstate
copyvar 0x800a, 0x8004
compare 0x8004, 255
- jumpeq PacifidlogTown_House3_EventScript_154320
+ goto_if_eq PacifidlogTown_House3_EventScript_154320
copyvar 0x8005, 0x800a
- specialval RESULT, sub_804DB2C
+ specialvar RESULT, sub_804DB2C
copyvar 0x800b, RESULT
- comparevars RESULT, 0x8009
- jumpif 5, PacifidlogTown_House3_EventScript_15432A
+ compare RESULT, 0x8009
+ goto_if 5, PacifidlogTown_House3_EventScript_15432A
copyvar 0x8004, 0x8008
copyvar 0x8005, 0x800a
special sub_804DB68
special sub_804E174
waitstate
- bufferpoke 0, 0x8009
+ getspeciesname 0, 0x8009
msgbox PacifidlogTown_House3_Text_1794C4, 4
setflag 154
release
@@ -40,7 +40,7 @@ PacifidlogTown_House3_EventScript_154320:: @ 8154320
end
PacifidlogTown_House3_EventScript_15432A:: @ 815432A
- bufferpoke 0, 0x8009
+ getspeciesname 0, 0x8009
msgbox PacifidlogTown_House3_Text_1794DF, 4
release
end
diff --git a/data/scripts/maps/PacifidlogTown_House4.inc b/data/scripts/maps/PacifidlogTown_House4.inc
index e48644beb..b7a6c9f86 100644
--- a/data/scripts/maps/PacifidlogTown_House4.inc
+++ b/data/scripts/maps/PacifidlogTown_House4.inc
@@ -14,9 +14,9 @@ PacifidlogTown_House4_EventScript_15435E:: @ 815435E
faceplayer
msgbox PacifidlogTown_House4_Text_17963D, 5
compare RESULT, 1
- jumpeq PacifidlogTown_House4_EventScript_15437F
+ goto_if_eq PacifidlogTown_House4_EventScript_15437F
compare RESULT, 0
- jumpeq PacifidlogTown_House4_EventScript_154389
+ goto_if_eq PacifidlogTown_House4_EventScript_154389
end
PacifidlogTown_House4_EventScript_15437F:: @ 815437F
diff --git a/data/scripts/maps/PacifidlogTown_House5.inc b/data/scripts/maps/PacifidlogTown_House5.inc
index dca1a51b0..46b1990df 100644
--- a/data/scripts/maps/PacifidlogTown_House5.inc
+++ b/data/scripts/maps/PacifidlogTown_House5.inc
@@ -4,9 +4,9 @@ PacifidlogTown_House5_MapScripts:: @ 8154393
PacifidlogTown_House5_EventScript_154394:: @ 8154394
lock
faceplayer
- specialval RESULT, IsMirageIslandPresent
+ specialvar RESULT, IsMirageIslandPresent
compare RESULT, 1
- jumpeq PacifidlogTown_House5_EventScript_1543B0
+ goto_if_eq PacifidlogTown_House5_EventScript_1543B0
msgbox PacifidlogTown_House5_Text_179718, 4
release
end
diff --git a/data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc b/data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc
index 973f80a55..64dd5008c 100644
--- a/data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc
+++ b/data/scripts/maps/PacifidlogTown_PokemonCenter_1F.inc
@@ -9,7 +9,7 @@ PacifidlogTown_PokemonCenter_1F_MapScript1_154105:: @ 8154105
@ 8154109
setvar 0x800b, 1
call VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
diff --git a/data/scripts/maps/PetalburgCity.inc b/data/scripts/maps/PetalburgCity.inc
index dc5efe243..1c2711b83 100644
--- a/data/scripts/maps/PetalburgCity.inc
+++ b/data/scripts/maps/PetalburgCity.inc
@@ -6,17 +6,17 @@ PetalburgCity_MapScripts:: @ 814B70C
PetalburgCity_MapScript1_14B717:: @ 814B717
setflag 2070
compare 0x4057, 0
- callif 1, PetalburgCity_EventScript_14B731
+ call_if 1, PetalburgCity_EventScript_14B731
compare 0x4057, 2
- callif 1, PetalburgCity_EventScript_14B739
+ call_if 1, PetalburgCity_EventScript_14B739
end
PetalburgCity_EventScript_14B731:: @ 814B731
- movespriteperm 9, 5, 11
+ setobjectxyperm 9, 5, 11
return
PetalburgCity_EventScript_14B739:: @ 814B739
- playmusicbattle 420
+ savebgm 420
return
PetalburgCity_MapScript2_14B73D:: @ 814B73D
@@ -28,20 +28,20 @@ PetalburgCity_EventScript_14B747:: @ 814B747
setflag 0x4000
special SavePlayerParty
special PutZigzagoonInPlayerParty
- move 2, PetalburgCity_Movement_14B7ED
- move 255, PetalburgCity_Movement_14B7CC
- waitmove 0
+ applymovement 2, PetalburgCity_Movement_14B7ED
+ applymovement 255, PetalburgCity_Movement_14B7CC
+ waitmovement 0
msgbox PetalburgCity_Text_16D361, 4
- special StartBattle_WallyTutorial
+ special ScrSpecial_StartWallyTutorialBattle
waitstate
msgbox PetalburgCity_Text_16D3DE, 4
- movecoords 2, PetalburgCity_Movement_1A083F, 0, 0
- waitmovexy 0, 0, 2
+ applymovement 2, PetalburgCity_Movement_1A083F, 0, 0
+ waitmovement 0, 0, 2
msgbox PetalburgCity_Text_16D408, 4
- closebutton
+ closemessage
clearflag 0x4000
setvar 0x4057, 3
- fadedefault
+ fadedefaultbgm
clearflag 0x4001
special LoadPlayerParty
setvar 0x4085, 1
@@ -54,9 +54,9 @@ PetalburgCity_EventScript_14B7AC:: @ 814B7AC
lock
faceplayer
msgbox PetalburgCity_Text_164490, 4
- closebutton
- move 3, PetalburgCity_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 3, PetalburgCity_Movement_1A083D
+ waitmovement 0
release
end
@@ -157,114 +157,114 @@ PetalburgCity_EventScript_14B82D:: @ 814B82D
PetalburgCity_EventScript_14B836:: @ 814B836
lockall
setvar 0x8008, 0
- jump PetalburgCity_EventScript_14B866
+ goto PetalburgCity_EventScript_14B866
end
PetalburgCity_EventScript_14B842:: @ 814B842
lockall
setvar 0x8008, 1
- jump PetalburgCity_EventScript_14B866
+ goto PetalburgCity_EventScript_14B866
end
PetalburgCity_EventScript_14B84E:: @ 814B84E
lockall
setvar 0x8008, 2
- jump PetalburgCity_EventScript_14B866
+ goto PetalburgCity_EventScript_14B866
end
PetalburgCity_EventScript_14B85A:: @ 814B85A
lockall
setvar 0x8008, 3
- jump PetalburgCity_EventScript_14B866
+ goto PetalburgCity_EventScript_14B866
end
PetalburgCity_EventScript_14B866:: @ 814B866
- move 9, PetalburgCity_Movement_1A0839
- waitmove 0
- playmusic 420, 0
- playsfx 21
- move 9, PetalburgCity_Movement_1A0833
- waitmove 0
- move 9, PetalburgCity_Movement_1A0835
- waitmove 0
+ applymovement 9, PetalburgCity_Movement_1A0839
+ waitmovement 0
+ playbgm 420, 0
+ playse 21
+ applymovement 9, PetalburgCity_Movement_1A0833
+ waitmovement 0
+ applymovement 9, PetalburgCity_Movement_1A0835
+ waitmovement 0
compare 0x8008, 0
- callif 1, PetalburgCity_EventScript_14B91B
+ call_if 1, PetalburgCity_EventScript_14B91B
compare 0x8008, 1
- callif 1, PetalburgCity_EventScript_14B930
+ call_if 1, PetalburgCity_EventScript_14B930
compare 0x8008, 2
- callif 1, PetalburgCity_EventScript_14B93B
+ call_if 1, PetalburgCity_EventScript_14B93B
compare 0x8008, 3
- callif 1, PetalburgCity_EventScript_14B950
+ call_if 1, PetalburgCity_EventScript_14B950
msgbox PetalburgCity_Text_16438A, 4
- closebutton
+ closemessage
compare 0x8008, 0
- callif 1, PetalburgCity_EventScript_14B965
+ call_if 1, PetalburgCity_EventScript_14B965
compare 0x8008, 1
- callif 1, PetalburgCity_EventScript_14B977
+ call_if 1, PetalburgCity_EventScript_14B977
compare 0x8008, 2
- callif 1, PetalburgCity_EventScript_14B989
+ call_if 1, PetalburgCity_EventScript_14B989
compare 0x8008, 3
- callif 1, PetalburgCity_EventScript_14B99B
+ call_if 1, PetalburgCity_EventScript_14B99B
msgbox PetalburgCity_Text_164426, 4
- move 9, PetalburgCity_Movement_1A0843
- move 255, PetalburgCity_Movement_1A0843
- waitmove 0
+ applymovement 9, PetalburgCity_Movement_1A0843
+ applymovement 255, PetalburgCity_Movement_1A0843
+ waitmovement 0
msgbox PetalburgCity_Text_164449, 4
- closebutton
- move 9, PetalburgCity_Movement_14B9F4
- waitmove 0
- fadedefault
+ closemessage
+ applymovement 9, PetalburgCity_Movement_14B9F4
+ waitmovement 0
+ fadedefaultbgm
releaseall
end
PetalburgCity_EventScript_14B91B:: @ 814B91B
- move 9, PetalburgCity_Movement_14B9B1
- waitmove 0
- move 255, PetalburgCity_Movement_1A0845
- waitmove 0
+ applymovement 9, PetalburgCity_Movement_14B9B1
+ waitmovement 0
+ applymovement 255, PetalburgCity_Movement_1A0845
+ waitmovement 0
return
PetalburgCity_EventScript_14B930:: @ 814B930
- move 9, PetalburgCity_Movement_14B9B6
- waitmove 0
+ applymovement 9, PetalburgCity_Movement_14B9B6
+ waitmovement 0
return
PetalburgCity_EventScript_14B93B:: @ 814B93B
- move 9, PetalburgCity_Movement_14B9B9
- waitmove 0
- move 255, PetalburgCity_Movement_1A0841
- waitmove 0
+ applymovement 9, PetalburgCity_Movement_14B9B9
+ waitmovement 0
+ applymovement 255, PetalburgCity_Movement_1A0841
+ waitmovement 0
return
PetalburgCity_EventScript_14B950:: @ 814B950
- move 9, PetalburgCity_Movement_14B9BE
- waitmove 0
- move 255, PetalburgCity_Movement_1A0841
- waitmove 0
+ applymovement 9, PetalburgCity_Movement_14B9BE
+ waitmovement 0
+ applymovement 255, PetalburgCity_Movement_1A0841
+ waitmovement 0
return
PetalburgCity_EventScript_14B965:: @ 814B965
- move 9, PetalburgCity_Movement_14B9C4
- move 255, PetalburgCity_Movement_14BA01
- waitmove 0
+ applymovement 9, PetalburgCity_Movement_14B9C4
+ applymovement 255, PetalburgCity_Movement_14BA01
+ waitmovement 0
return
PetalburgCity_EventScript_14B977:: @ 814B977
- move 9, PetalburgCity_Movement_14B9CF
- move 255, PetalburgCity_Movement_14BA0B
- waitmove 0
+ applymovement 9, PetalburgCity_Movement_14B9CF
+ applymovement 255, PetalburgCity_Movement_14BA0B
+ waitmovement 0
return
PetalburgCity_EventScript_14B989:: @ 814B989
- move 9, PetalburgCity_Movement_14B9DD
- move 255, PetalburgCity_Movement_14BA18
- waitmove 0
+ applymovement 9, PetalburgCity_Movement_14B9DD
+ applymovement 255, PetalburgCity_Movement_14BA18
+ waitmovement 0
return
PetalburgCity_EventScript_14B99B:: @ 814B99B
- move 9, PetalburgCity_Movement_14B9E8
- move 255, PetalburgCity_Movement_14BA22
- waitmove 0
+ applymovement 9, PetalburgCity_Movement_14B9E8
+ applymovement 255, PetalburgCity_Movement_14BA22
+ waitmovement 0
return
@ 814B9AD
diff --git a/data/scripts/maps/PetalburgCity_Gym.inc b/data/scripts/maps/PetalburgCity_Gym.inc
index c534cb538..b2d104894 100644
--- a/data/scripts/maps/PetalburgCity_Gym.inc
+++ b/data/scripts/maps/PetalburgCity_Gym.inc
@@ -7,28 +7,28 @@ PetalburgCity_Gym_MapScripts:: @ 8154477
PetalburgCity_Gym_MapScript1_15448C:: @ 815448C
compare 0x4085, 6
- jumpeq PetalburgCity_Gym_EventScript_1544A3
+ goto_if_eq PetalburgCity_Gym_EventScript_1544A3
compare 0x4085, 7
- callif 4, PetalburgCity_Gym_EventScript_1544ED
+ call_if 4, PetalburgCity_Gym_EventScript_1544ED
end
PetalburgCity_Gym_EventScript_1544A3:: @ 81544A3
setvar 0x8005, 1
call PetalburgCity_Gym_EventScript_154F9A
checktrainerflag OPPONENT_RANDALL
- callif 1, PetalburgCity_Gym_EventScript_154FBB
+ call_if 1, PetalburgCity_Gym_EventScript_154FBB
checktrainerflag OPPONENT_MARY
- callif 1, PetalburgCity_Gym_EventScript_154FDC
+ call_if 1, PetalburgCity_Gym_EventScript_154FDC
checktrainerflag OPPONENT_PARKER
- callif 1, PetalburgCity_Gym_EventScript_154FFD
+ call_if 1, PetalburgCity_Gym_EventScript_154FFD
checktrainerflag OPPONENT_LORI
- callif 1, PetalburgCity_Gym_EventScript_15501E
+ call_if 1, PetalburgCity_Gym_EventScript_15501E
checktrainerflag OPPONENT_GEORGE
- callif 1, PetalburgCity_Gym_EventScript_15503F
+ call_if 1, PetalburgCity_Gym_EventScript_15503F
checktrainerflag OPPONENT_JODY
- callif 1, PetalburgCity_Gym_EventScript_155060
+ call_if 1, PetalburgCity_Gym_EventScript_155060
checktrainerflag OPPONENT_BERKE
- callif 1, PetalburgCity_Gym_EventScript_155081
+ call_if 1, PetalburgCity_Gym_EventScript_155081
end
PetalburgCity_Gym_EventScript_1544ED:: @ 81544ED
@@ -45,23 +45,23 @@ PetalburgCity_Gym_EventScript_1544ED:: @ 81544ED
PetalburgCity_Gym_MapScript1_15451B:: @ 815451B
compare 0x4085, 1
- callif 1, PetalburgCity_Gym_EventScript_15453B
+ call_if 1, PetalburgCity_Gym_EventScript_15453B
compare 0x4085, 6
- callif 0, PetalburgCity_Gym_EventScript_154543
+ call_if 0, PetalburgCity_Gym_EventScript_154543
checkflag 2052
- callif 1, PetalburgCity_Gym_EventScript_15454B
+ call_if 1, PetalburgCity_Gym_EventScript_15454B
end
PetalburgCity_Gym_EventScript_15453B:: @ 815453B
- movespriteperm 10, 5, 108
+ setobjectxyperm 10, 5, 108
return
PetalburgCity_Gym_EventScript_154543:: @ 8154543
- movespriteperm 1, 4, 107
+ setobjectxyperm 1, 4, 107
return
PetalburgCity_Gym_EventScript_15454B:: @ 815454B
- movespriteperm 1, 4, 107
+ setobjectxyperm 1, 4, 107
return
PetalburgCity_Gym_MapScript2_154553:: @ 8154553
@@ -69,7 +69,7 @@ PetalburgCity_Gym_MapScript2_154553:: @ 8154553
.2byte 0
PetalburgCity_Gym_EventScript_15455D:: @ 815455D
- spriteface 255, 2
+ turnobject 255, 2
end
PetalburgCity_Gym_MapScript2_154562:: @ 8154562
@@ -80,16 +80,16 @@ PetalburgCity_Gym_EventScript_15456C:: @ 815456C
lockall
msgbox PetalburgCity_Gym_Text_17A196, 4
msgbox PetalburgCity_Gym_Text_17A1B0, 4
- closebutton
- move 255, PetalburgCity_Gym_Movement_1A0845
- move 10, PetalburgCity_Gym_Movement_1545B4
- waitmove 0
- playsfx 9
- disappear 10
+ closemessage
+ applymovement 255, PetalburgCity_Gym_Movement_1A0845
+ applymovement 10, PetalburgCity_Gym_Movement_1545B4
+ waitmovement 0
+ playse 9
+ removeobject 10
setflag 726
- pause 30
- move 255, PetalburgCity_Gym_Movement_1A0841
- waitmove 0
+ delay 30
+ applymovement 255, PetalburgCity_Gym_Movement_1A0841
+ waitmovement 0
msgbox PetalburgCity_Gym_Text_17A2A4, 4
setvar 0x4085, 2
releaseall
@@ -113,7 +113,7 @@ PetalburgCity_Gym_EventScript_1545B9:: @ 81545B9
case 6, PetalburgCity_Gym_EventScript_1549D6
case 7, PetalburgCity_Gym_EventScript_15493D
msgbox PetalburgCity_Gym_Text_179DF6, 4
- closebutton
+ closemessage
switch FACING
case 1, PetalburgCity_Gym_EventScript_15463D
case 2, PetalburgCity_Gym_EventScript_154648
@@ -123,88 +123,88 @@ PetalburgCity_Gym_EventScript_1545B9:: @ 81545B9
PetalburgCity_Gym_EventScript_15463D:: @ 815463D
setvar 0x8008, 0
- jump PetalburgCity_Gym_EventScript_154669
+ goto PetalburgCity_Gym_EventScript_154669
end
PetalburgCity_Gym_EventScript_154648:: @ 8154648
setvar 0x8008, 1
- jump PetalburgCity_Gym_EventScript_154669
+ goto PetalburgCity_Gym_EventScript_154669
end
PetalburgCity_Gym_EventScript_154653:: @ 8154653
setvar 0x8008, 2
- jump PetalburgCity_Gym_EventScript_154669
+ goto PetalburgCity_Gym_EventScript_154669
end
PetalburgCity_Gym_EventScript_15465E:: @ 815465E
setvar 0x8008, 3
- jump PetalburgCity_Gym_EventScript_154669
+ goto PetalburgCity_Gym_EventScript_154669
end
PetalburgCity_Gym_EventScript_154669:: @ 8154669
- reappear 10
- playsfx 8
+ addobject 10
+ playse 8
compare 0x8008, 0
- callif 1, PetalburgCity_Gym_EventScript_1547EE
+ call_if 1, PetalburgCity_Gym_EventScript_1547EE
compare 0x8008, 1
- callif 1, PetalburgCity_Gym_EventScript_154800
+ call_if 1, PetalburgCity_Gym_EventScript_154800
compare 0x8008, 2
- callif 1, PetalburgCity_Gym_EventScript_15481C
+ call_if 1, PetalburgCity_Gym_EventScript_15481C
compare 0x8008, 3
- callif 1, PetalburgCity_Gym_EventScript_15481C
+ call_if 1, PetalburgCity_Gym_EventScript_15481C
msgbox PetalburgCity_Gym_Text_179F07, 4
msgbox PetalburgCity_Gym_Text_179F37, 4
msgbox PetalburgCity_Gym_Text_179F70, 4
msgbox PetalburgCity_Gym_Text_17A03A, 4
compare 0x8008, 0
- callif 1, PetalburgCity_Gym_EventScript_154884
+ call_if 1, PetalburgCity_Gym_EventScript_154884
compare 0x8008, 1
- callif 1, PetalburgCity_Gym_EventScript_15488F
+ call_if 1, PetalburgCity_Gym_EventScript_15488F
compare 0x8008, 2
- callif 1, PetalburgCity_Gym_EventScript_1548A1
+ call_if 1, PetalburgCity_Gym_EventScript_1548A1
compare 0x8008, 3
- callif 1, PetalburgCity_Gym_EventScript_1548B3
+ call_if 1, PetalburgCity_Gym_EventScript_1548B3
msgbox PetalburgCity_Gym_Text_17A04A, 4
compare 0x8008, 0
- callif 1, PetalburgCity_Gym_EventScript_1548C5
+ call_if 1, PetalburgCity_Gym_EventScript_1548C5
compare 0x8008, 1
- callif 1, PetalburgCity_Gym_EventScript_1548D0
+ call_if 1, PetalburgCity_Gym_EventScript_1548D0
compare 0x8008, 2
- callif 1, PetalburgCity_Gym_EventScript_1548DB
+ call_if 1, PetalburgCity_Gym_EventScript_1548DB
compare 0x8008, 3
- callif 1, PetalburgCity_Gym_EventScript_1548E6
+ call_if 1, PetalburgCity_Gym_EventScript_1548E6
msgbox PetalburgCity_Gym_Text_17A0A8, 4
msgbox PetalburgCity_Gym_Text_17A0EB, 4
msgbox PetalburgCity_Gym_Text_17A156, 4
compare 0x8008, 0
- callif 1, PetalburgCity_Gym_EventScript_15492F
+ call_if 1, PetalburgCity_Gym_EventScript_15492F
compare 0x8008, 1
- callif 1, PetalburgCity_Gym_EventScript_154930
+ call_if 1, PetalburgCity_Gym_EventScript_154930
compare 0x8008, 2
- callif 1, PetalburgCity_Gym_EventScript_15493B
+ call_if 1, PetalburgCity_Gym_EventScript_15493B
compare 0x8008, 3
- callif 1, PetalburgCity_Gym_EventScript_15493C
+ call_if 1, PetalburgCity_Gym_EventScript_15493C
compare 0x8008, 0
- callif 1, PetalburgCity_Gym_EventScript_1548F1
+ call_if 1, PetalburgCity_Gym_EventScript_1548F1
compare 0x8008, 1
- callif 1, PetalburgCity_Gym_EventScript_1548FC
+ call_if 1, PetalburgCity_Gym_EventScript_1548FC
compare 0x8008, 2
- callif 1, PetalburgCity_Gym_EventScript_1548F1
+ call_if 1, PetalburgCity_Gym_EventScript_1548F1
compare 0x8008, 3
- callif 1, PetalburgCity_Gym_EventScript_1548F1
+ call_if 1, PetalburgCity_Gym_EventScript_1548F1
msgbox PetalburgCity_Gym_Text_17A171, 4
- closebutton
+ closemessage
setflag 0x4001
- playmusic 420, 0
+ playbgm 420, 0
compare 0x8008, 0
- callif 1, PetalburgCity_Gym_EventScript_154835
+ call_if 1, PetalburgCity_Gym_EventScript_154835
compare 0x8008, 1
- callif 1, PetalburgCity_Gym_EventScript_15484E
+ call_if 1, PetalburgCity_Gym_EventScript_15484E
compare 0x8008, 2
- callif 1, PetalburgCity_Gym_EventScript_154860
+ call_if 1, PetalburgCity_Gym_EventScript_154860
compare 0x8008, 3
- callif 1, PetalburgCity_Gym_EventScript_154872
- disappear 10
+ call_if 1, PetalburgCity_Gym_EventScript_154872
+ removeobject 10
setflag 728
setvar 0x4085, 1
setvar 0x4057, 2
@@ -218,102 +218,102 @@ PetalburgCity_Gym_EventScript_154669:: @ 8154669
end
PetalburgCity_Gym_EventScript_1547EE:: @ 81547EE
- move 1, PetalburgCity_Gym_Movement_1A0845
- move 10, PetalburgCity_Gym_Movement_154B27
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0845
+ applymovement 10, PetalburgCity_Gym_Movement_154B27
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154800:: @ 8154800
- move 10, PetalburgCity_Gym_Movement_154B1D
- waitmove 0
- move 1, PetalburgCity_Gym_Movement_1A0843
- move 255, PetalburgCity_Gym_Movement_1A0843
- waitmove 0
+ applymovement 10, PetalburgCity_Gym_Movement_154B1D
+ waitmovement 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0843
+ applymovement 255, PetalburgCity_Gym_Movement_1A0843
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_15481C:: @ 815481C
- move 1, PetalburgCity_Gym_Movement_1A0845
- move 255, PetalburgCity_Gym_Movement_1A0845
- move 10, PetalburgCity_Gym_Movement_154B27
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0845
+ applymovement 255, PetalburgCity_Gym_Movement_1A0845
+ applymovement 10, PetalburgCity_Gym_Movement_154B27
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154835:: @ 8154835
- move 1, PetalburgCity_Gym_Movement_1A0845
- move 10, PetalburgCity_Gym_Movement_154B3E
- move 255, PetalburgCity_Gym_Movement_154B4D
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0845
+ applymovement 10, PetalburgCity_Gym_Movement_154B3E
+ applymovement 255, PetalburgCity_Gym_Movement_154B4D
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_15484E:: @ 815484E
- move 10, PetalburgCity_Gym_Movement_154B2E
- move 255, PetalburgCity_Gym_Movement_154B45
- waitmove 0
+ applymovement 10, PetalburgCity_Gym_Movement_154B2E
+ applymovement 255, PetalburgCity_Gym_Movement_154B45
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154860:: @ 8154860
- move 10, PetalburgCity_Gym_Movement_154B3E
- move 255, PetalburgCity_Gym_Movement_154B57
- waitmove 0
+ applymovement 10, PetalburgCity_Gym_Movement_154B3E
+ applymovement 255, PetalburgCity_Gym_Movement_154B57
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154872:: @ 8154872
- move 10, PetalburgCity_Gym_Movement_154B36
- move 255, PetalburgCity_Gym_Movement_154B5F
- waitmove 0
+ applymovement 10, PetalburgCity_Gym_Movement_154B36
+ applymovement 255, PetalburgCity_Gym_Movement_154B5F
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154884:: @ 8154884
- move 1, PetalburgCity_Gym_Movement_1A0841
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0841
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_15488F:: @ 815488F
- move 1, PetalburgCity_Gym_Movement_1A0845
- move 255, PetalburgCity_Gym_Movement_1A0841
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0845
+ applymovement 255, PetalburgCity_Gym_Movement_1A0841
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_1548A1:: @ 81548A1
- move 1, PetalburgCity_Gym_Movement_1A0843
- move 255, PetalburgCity_Gym_Movement_1A083F
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0843
+ applymovement 255, PetalburgCity_Gym_Movement_1A083F
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_1548B3:: @ 81548B3
- move 1, PetalburgCity_Gym_Movement_1A083F
- move 255, PetalburgCity_Gym_Movement_1A0843
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A083F
+ applymovement 255, PetalburgCity_Gym_Movement_1A0843
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_1548C5:: @ 81548C5
- move 1, PetalburgCity_Gym_Movement_1A0845
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0845
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_1548D0:: @ 81548D0
- move 1, PetalburgCity_Gym_Movement_1A0843
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0843
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_1548DB:: @ 81548DB
- move 1, PetalburgCity_Gym_Movement_1A0845
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0845
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_1548E6:: @ 81548E6
- move 1, PetalburgCity_Gym_Movement_1A0845
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0845
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_1548F1:: @ 81548F1
- move 10, PetalburgCity_Gym_Movement_1A0839
- waitmove 0
+ applymovement 10, PetalburgCity_Gym_Movement_1A0839
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_1548FC:: @ 81548FC
- move 10, PetalburgCity_Gym_Movement_1A0845
- waitmove 0
+ applymovement 10, PetalburgCity_Gym_Movement_1A0845
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154907:: @ 8154907
@@ -340,8 +340,8 @@ PetalburgCity_Gym_EventScript_15492F:: @ 815492F
return
PetalburgCity_Gym_EventScript_154930:: @ 8154930
- move 1, PetalburgCity_Gym_Movement_1A0845
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0845
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_15493B:: @ 815493B
@@ -353,27 +353,27 @@ PetalburgCity_Gym_EventScript_15493C:: @ 815493C
PetalburgCity_Gym_EventScript_15493D:: @ 815493D
call PetalburgCity_Gym_EventScript_154969
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_1549B8
+ goto_if_eq PetalburgCity_Gym_EventScript_1549B8
checkflag 169
- jumpif 0, PetalburgCity_Gym_EventScript_154A2C
+ goto_if 0, PetalburgCity_Gym_EventScript_154A2C
checkflag 2052
- jumpeq PetalburgCity_Gym_EventScript_154B69
+ goto_if_eq PetalburgCity_Gym_EventScript_154B69
msgbox PetalburgCity_Gym_Text_17AA6B, 4
release
end
PetalburgCity_Gym_EventScript_154969:: @ 8154969
- specialval RESULT, IsEnigmaBerryValid
+ specialvar RESULT, IsEnigmaBerryValid
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_1549B2
+ goto_if_eq PetalburgCity_Gym_EventScript_1549B2
checkitem ITEM_ENIGMA_BERRY, 1
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_1549B2
+ goto_if_eq PetalburgCity_Gym_EventScript_1549B2
checkpcitem ITEM_ENIGMA_BERRY, 1
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_1549B2
+ goto_if_eq PetalburgCity_Gym_EventScript_1549B2
compare 0x402d, 0
- jumpeq PetalburgCity_Gym_EventScript_1549B2
+ goto_if_eq PetalburgCity_Gym_EventScript_1549B2
msgbox PetalburgCity_Gym_Text_1C5570, 4
setvar RESULT, 1
return
@@ -385,7 +385,7 @@ PetalburgCity_Gym_EventScript_1549B2:: @ 81549B2
PetalburgCity_Gym_EventScript_1549B8:: @ 81549B8
giveitem ITEM_ENIGMA_BERRY
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_1A029B
+ goto_if_eq PetalburgCity_Gym_EventScript_1A029B
setvar 0x402d, 0
release
end
@@ -394,7 +394,7 @@ PetalburgCity_Gym_EventScript_1549D6:: @ 81549D6
msgbox PetalburgCity_Gym_Text_17A653, 4
trainerbattle 3, OPPONENT_NORMAN, 0, PetalburgCity_Gym_Text_17A77A
message PetalburgCity_Gym_Text_17A7DD
- waittext
+ waitmessage
call PetalburgCity_Gym_EventScript_1A02C5
msgbox PetalburgCity_Gym_Text_17A805, 4
setflag 1217
@@ -408,76 +408,76 @@ PetalburgCity_Gym_EventScript_1549D6:: @ 81549D6
clearflag 940
call PetalburgCity_Gym_EventScript_1544ED
special DrawWholeMapView
- jump PetalburgCity_Gym_EventScript_154A2C
+ goto PetalburgCity_Gym_EventScript_154A2C
end
PetalburgCity_Gym_EventScript_154A2C:: @ 8154A2C
giveitem ITEM_TM42
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_1A029B
+ goto_if_eq PetalburgCity_Gym_EventScript_1A029B
setflag 169
msgbox PetalburgCity_Gym_Text_17A8CF, 4
msgbox PetalburgCity_Gym_Text_17A976, 4
- closebutton
+ closemessage
compare FACING, 2
- callif 1, PetalburgCity_Gym_EventScript_154ABC
+ call_if 1, PetalburgCity_Gym_EventScript_154ABC
compare FACING, 1
- callif 1, PetalburgCity_Gym_EventScript_154AC7
+ call_if 1, PetalburgCity_Gym_EventScript_154AC7
compare FACING, 3
- callif 1, PetalburgCity_Gym_EventScript_154AD2
+ call_if 1, PetalburgCity_Gym_EventScript_154AD2
compare FACING, 4
- callif 1, PetalburgCity_Gym_EventScript_154ADD
- pause 70
+ call_if 1, PetalburgCity_Gym_EventScript_154ADD
+ delay 70
compare FACING, 2
- callif 1, PetalburgCity_Gym_EventScript_154AE8
+ call_if 1, PetalburgCity_Gym_EventScript_154AE8
compare FACING, 1
- callif 1, PetalburgCity_Gym_EventScript_154AF3
+ call_if 1, PetalburgCity_Gym_EventScript_154AF3
compare FACING, 3
- callif 1, PetalburgCity_Gym_EventScript_154AFE
+ call_if 1, PetalburgCity_Gym_EventScript_154AFE
compare FACING, 4
- callif 1, PetalburgCity_Gym_EventScript_154B09
+ call_if 1, PetalburgCity_Gym_EventScript_154B09
msgbox PetalburgCity_Gym_Text_17A9F6, 4
release
end
PetalburgCity_Gym_EventScript_154ABC:: @ 8154ABC
- move 1, PetalburgCity_Gym_Movement_1A0841
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0841
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154AC7:: @ 8154AC7
- move 1, PetalburgCity_Gym_Movement_1A0845
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0845
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154AD2:: @ 8154AD2
- move 1, PetalburgCity_Gym_Movement_1A083F
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A083F
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154ADD:: @ 8154ADD
- move 1, PetalburgCity_Gym_Movement_1A0843
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0843
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154AE8:: @ 8154AE8
- move 1, PetalburgCity_Gym_Movement_1A0845
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0845
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154AF3:: @ 8154AF3
- move 1, PetalburgCity_Gym_Movement_1A0841
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0841
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154AFE:: @ 8154AFE
- move 1, PetalburgCity_Gym_Movement_1A0843
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A0843
+ waitmovement 0
return
PetalburgCity_Gym_EventScript_154B09:: @ 8154B09
- move 1, PetalburgCity_Gym_Movement_1A083F
- waitmove 0
+ applymovement 1, PetalburgCity_Gym_Movement_1A083F
+ waitmovement 0
return
@ 8154B14
@@ -593,20 +593,20 @@ PetalburgCity_Gym_EventScript_154B69:: @ 8154B69
PetalburgCity_Gym_EventScript_154B73:: @ 8154B73
lockall
compare 0x4085, 6
- jumpif 0, PetalburgCity_Gym_EventScript_154BB9
+ goto_if 0, PetalburgCity_Gym_EventScript_154BB9
setvar 0x8008, 7
setvar 0x8009, 85
msgbox PetalburgCity_Gym_Text_17B870, 5
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_154BA8
+ goto_if_eq PetalburgCity_Gym_EventScript_154BA8
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_154BB7
+ goto_if_eq PetalburgCity_Gym_EventScript_154BB7
end
PetalburgCity_Gym_EventScript_154BA8:: @ 8154BA8
- closebutton
- pause 30
- warpwalk PetalburgCity_Gym, 255, 32776, 32777
+ closemessage
+ delay 30
+ warpdoor PetalburgCity_Gym, 255, 32776, 32777
waitstate
releaseall
end
@@ -623,150 +623,150 @@ PetalburgCity_Gym_EventScript_154BB9:: @ 8154BB9
PetalburgCity_Gym_EventScript_154BC3:: @ 8154BC3
lockall
compare 0x4085, 6
- jumpif 0, PetalburgCity_Gym_EventScript_154BB9
+ goto_if 0, PetalburgCity_Gym_EventScript_154BB9
setvar 0x8008, 1
setvar 0x8009, 98
msgbox PetalburgCity_Gym_Text_17B8D4, 5
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_154BA8
+ goto_if_eq PetalburgCity_Gym_EventScript_154BA8
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_154BB7
+ goto_if_eq PetalburgCity_Gym_EventScript_154BB7
end
PetalburgCity_Gym_EventScript_154BF8:: @ 8154BF8
lockall
checktrainerflag OPPONENT_RANDALL
- jumpif 0, PetalburgCity_Gym_EventScript_154BB9
+ goto_if 0, PetalburgCity_Gym_EventScript_154BB9
setvar 0x8008, 7
setvar 0x8009, 46
msgbox PetalburgCity_Gym_Text_17B90F, 5
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_154BA8
+ goto_if_eq PetalburgCity_Gym_EventScript_154BA8
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_154BB7
+ goto_if_eq PetalburgCity_Gym_EventScript_154BB7
end
PetalburgCity_Gym_EventScript_154C2B:: @ 8154C2B
lockall
checktrainerflag OPPONENT_RANDALL
- jumpif 0, PetalburgCity_Gym_EventScript_154BB9
+ goto_if 0, PetalburgCity_Gym_EventScript_154BB9
setvar 0x8008, 1
setvar 0x8009, 59
msgbox PetalburgCity_Gym_Text_17B950, 5
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_154BA8
+ goto_if_eq PetalburgCity_Gym_EventScript_154BA8
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_154BB7
+ goto_if_eq PetalburgCity_Gym_EventScript_154BB7
end
PetalburgCity_Gym_EventScript_154C5E:: @ 8154C5E
lockall
checktrainerflag OPPONENT_MARY
- jumpif 0, PetalburgCity_Gym_EventScript_154BB9
+ goto_if 0, PetalburgCity_Gym_EventScript_154BB9
setvar 0x8008, 7
setvar 0x8009, 59
msgbox PetalburgCity_Gym_Text_17B950, 5
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_154BA8
+ goto_if_eq PetalburgCity_Gym_EventScript_154BA8
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_154BB7
+ goto_if_eq PetalburgCity_Gym_EventScript_154BB7
end
PetalburgCity_Gym_EventScript_154C91:: @ 8154C91
lockall
checktrainerflag OPPONENT_MARY
- jumpif 0, PetalburgCity_Gym_EventScript_154BB9
+ goto_if 0, PetalburgCity_Gym_EventScript_154BB9
setvar 0x8008, 1
setvar 0x8009, 72
msgbox PetalburgCity_Gym_Text_17B98A, 5
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_154BA8
+ goto_if_eq PetalburgCity_Gym_EventScript_154BA8
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_154BB7
+ goto_if_eq PetalburgCity_Gym_EventScript_154BB7
end
PetalburgCity_Gym_EventScript_154CC4:: @ 8154CC4
lockall
checktrainerflag OPPONENT_PARKER
- jumpif 0, PetalburgCity_Gym_EventScript_154BB9
+ goto_if 0, PetalburgCity_Gym_EventScript_154BB9
setvar 0x8008, 1
setvar 0x8009, 20
msgbox PetalburgCity_Gym_Text_17B9C5, 5
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_154BA8
+ goto_if_eq PetalburgCity_Gym_EventScript_154BA8
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_154BB7
+ goto_if_eq PetalburgCity_Gym_EventScript_154BB7
end
PetalburgCity_Gym_EventScript_154CF7:: @ 8154CF7
lockall
checktrainerflag OPPONENT_LORI
- jumpif 0, PetalburgCity_Gym_EventScript_154BB9
+ goto_if 0, PetalburgCity_Gym_EventScript_154BB9
setvar 0x8008, 7
setvar 0x8009, 20
msgbox PetalburgCity_Gym_Text_17B9C5, 5
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_154BA8
+ goto_if_eq PetalburgCity_Gym_EventScript_154BA8
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_154BB7
+ goto_if_eq PetalburgCity_Gym_EventScript_154BB7
end
PetalburgCity_Gym_EventScript_154D2A:: @ 8154D2A
lockall
checktrainerflag OPPONENT_LORI
- jumpif 0, PetalburgCity_Gym_EventScript_154BB9
+ goto_if 0, PetalburgCity_Gym_EventScript_154BB9
setvar 0x8008, 1
setvar 0x8009, 33
msgbox PetalburgCity_Gym_Text_17BA00, 5
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_154BA8
+ goto_if_eq PetalburgCity_Gym_EventScript_154BA8
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_154BB7
+ goto_if_eq PetalburgCity_Gym_EventScript_154BB7
end
PetalburgCity_Gym_EventScript_154D5D:: @ 8154D5D
lockall
checktrainerflag OPPONENT_GEORGE
- jumpif 0, PetalburgCity_Gym_EventScript_154BB9
+ goto_if 0, PetalburgCity_Gym_EventScript_154BB9
setvar 0x8008, 7
setvar 0x8009, 33
msgbox PetalburgCity_Gym_Text_17BA00, 5
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_154BA8
+ goto_if_eq PetalburgCity_Gym_EventScript_154BA8
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_154BB7
+ goto_if_eq PetalburgCity_Gym_EventScript_154BB7
end
PetalburgCity_Gym_EventScript_154D90:: @ 8154D90
lockall
checktrainerflag OPPONENT_JODY
- jumpif 0, PetalburgCity_Gym_EventScript_154BB9
+ goto_if 0, PetalburgCity_Gym_EventScript_154BB9
setvar 0x8008, 1
setvar 0x8009, 7
msgbox PetalburgCity_Gym_Text_17BA3D, 5
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_154BA8
+ goto_if_eq PetalburgCity_Gym_EventScript_154BA8
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_154BB7
+ goto_if_eq PetalburgCity_Gym_EventScript_154BB7
end
PetalburgCity_Gym_EventScript_154DC3:: @ 8154DC3
lockall
checktrainerflag OPPONENT_BERKE
- jumpif 0, PetalburgCity_Gym_EventScript_154BB9
+ goto_if 0, PetalburgCity_Gym_EventScript_154BB9
setvar 0x8008, 7
setvar 0x8009, 7
msgbox PetalburgCity_Gym_Text_17BA3D, 5
compare RESULT, 1
- jumpeq PetalburgCity_Gym_EventScript_154BA8
+ goto_if_eq PetalburgCity_Gym_EventScript_154BA8
compare RESULT, 0
- jumpeq PetalburgCity_Gym_EventScript_154BB7
+ goto_if_eq PetalburgCity_Gym_EventScript_154BB7
end
PetalburgCity_Gym_EventScript_154DF6:: @ 8154DF6
trainerbattle 2, OPPONENT_RANDALL, 0, PetalburgCity_Gym_Text_17ADA5, PetalburgCity_Gym_Text_17AE11, PetalburgCity_Gym_EventScript_154E1A
checkflag 1217
- jumpeq PetalburgCity_Gym_EventScript_154E29
+ goto_if_eq PetalburgCity_Gym_EventScript_154E29
msgbox PetalburgCity_Gym_Text_17AE30, 6
end
@@ -784,7 +784,7 @@ PetalburgCity_Gym_EventScript_154E29:: @ 8154E29
PetalburgCity_Gym_EventScript_154E32:: @ 8154E32
trainerbattle 2, OPPONENT_PARKER, 0, PetalburgCity_Gym_Text_17AF5A, PetalburgCity_Gym_Text_17AF98, PetalburgCity_Gym_EventScript_154E56
checkflag 1217
- jumpeq PetalburgCity_Gym_EventScript_154E65
+ goto_if_eq PetalburgCity_Gym_EventScript_154E65
msgbox PetalburgCity_Gym_Text_17AFD3, 6
end
@@ -802,7 +802,7 @@ PetalburgCity_Gym_EventScript_154E65:: @ 8154E65
PetalburgCity_Gym_EventScript_154E6E:: @ 8154E6E
trainerbattle 2, OPPONENT_GEORGE, 0, PetalburgCity_Gym_Text_17B058, PetalburgCity_Gym_Text_17B0F7, PetalburgCity_Gym_EventScript_154E92
checkflag 1217
- jumpeq PetalburgCity_Gym_EventScript_154EA1
+ goto_if_eq PetalburgCity_Gym_EventScript_154EA1
msgbox PetalburgCity_Gym_Text_17B12C, 6
end
@@ -820,7 +820,7 @@ PetalburgCity_Gym_EventScript_154EA1:: @ 8154EA1
PetalburgCity_Gym_EventScript_154EAA:: @ 8154EAA
trainerbattle 2, OPPONENT_BERKE, 0, PetalburgCity_Gym_Text_17B237, PetalburgCity_Gym_Text_17B2C0, PetalburgCity_Gym_EventScript_154ECE
checkflag 1217
- jumpeq PetalburgCity_Gym_EventScript_154EDD
+ goto_if_eq PetalburgCity_Gym_EventScript_154EDD
msgbox PetalburgCity_Gym_Text_17B2E4, 6
end
@@ -838,7 +838,7 @@ PetalburgCity_Gym_EventScript_154EDD:: @ 8154EDD
PetalburgCity_Gym_EventScript_154EE6:: @ 8154EE6
trainerbattle 2, OPPONENT_MARY, 0, PetalburgCity_Gym_Text_17B3F7, PetalburgCity_Gym_Text_17B454, PetalburgCity_Gym_EventScript_154F0A
checkflag 1217
- jumpeq PetalburgCity_Gym_EventScript_154F19
+ goto_if_eq PetalburgCity_Gym_EventScript_154F19
msgbox PetalburgCity_Gym_Text_17B46F, 6
end
@@ -856,7 +856,7 @@ PetalburgCity_Gym_EventScript_154F19:: @ 8154F19
PetalburgCity_Gym_EventScript_154F22:: @ 8154F22
trainerbattle 2, OPPONENT_LORI, 0, PetalburgCity_Gym_Text_17B58D, PetalburgCity_Gym_Text_17B5CB, PetalburgCity_Gym_EventScript_154F46
checkflag 1217
- jumpeq PetalburgCity_Gym_EventScript_154F55
+ goto_if_eq PetalburgCity_Gym_EventScript_154F55
msgbox PetalburgCity_Gym_Text_17B5EA, 6
end
@@ -874,7 +874,7 @@ PetalburgCity_Gym_EventScript_154F55:: @ 8154F55
PetalburgCity_Gym_EventScript_154F5E:: @ 8154F5E
trainerbattle 2, OPPONENT_JODY, 0, PetalburgCity_Gym_Text_17B6D4, PetalburgCity_Gym_Text_17B732, PetalburgCity_Gym_EventScript_154F82
checkflag 1217
- jumpeq PetalburgCity_Gym_EventScript_154F91
+ goto_if_eq PetalburgCity_Gym_EventScript_154F91
msgbox PetalburgCity_Gym_Text_17B749, 6
end
@@ -892,72 +892,72 @@ PetalburgCity_Gym_EventScript_154F91:: @ 8154F91
PetalburgCity_Gym_EventScript_154F9A:: @ 8154F9A
setvar 0x8004, 1
compare 0x8005, 0
- callif 1, PetalburgCity_Gym_EventScript_155182
+ call_if 1, PetalburgCity_Gym_EventScript_155182
compare 0x8005, 1
- callif 1, PetalburgCity_Gym_EventScript_155187
+ call_if 1, PetalburgCity_Gym_EventScript_155187
call PetalburgCity_Gym_EventScript_1550A2
return
PetalburgCity_Gym_EventScript_154FBB:: @ 8154FBB
setvar 0x8004, 2
compare 0x8005, 0
- callif 1, PetalburgCity_Gym_EventScript_155182
+ call_if 1, PetalburgCity_Gym_EventScript_155182
compare 0x8005, 1
- callif 1, PetalburgCity_Gym_EventScript_155187
+ call_if 1, PetalburgCity_Gym_EventScript_155187
call PetalburgCity_Gym_EventScript_1550C7
return
PetalburgCity_Gym_EventScript_154FDC:: @ 8154FDC
setvar 0x8004, 3
compare 0x8005, 0
- callif 1, PetalburgCity_Gym_EventScript_155182
+ call_if 1, PetalburgCity_Gym_EventScript_155182
compare 0x8005, 1
- callif 1, PetalburgCity_Gym_EventScript_155187
+ call_if 1, PetalburgCity_Gym_EventScript_155187
call PetalburgCity_Gym_EventScript_1550EC
return
PetalburgCity_Gym_EventScript_154FFD:: @ 8154FFD
setvar 0x8004, 4
compare 0x8005, 0
- callif 1, PetalburgCity_Gym_EventScript_155182
+ call_if 1, PetalburgCity_Gym_EventScript_155182
compare 0x8005, 1
- callif 1, PetalburgCity_Gym_EventScript_155187
+ call_if 1, PetalburgCity_Gym_EventScript_155187
call PetalburgCity_Gym_EventScript_155111
return
PetalburgCity_Gym_EventScript_15501E:: @ 815501E
setvar 0x8004, 5
compare 0x8005, 0
- callif 1, PetalburgCity_Gym_EventScript_155182
+ call_if 1, PetalburgCity_Gym_EventScript_155182
compare 0x8005, 1
- callif 1, PetalburgCity_Gym_EventScript_155187
+ call_if 1, PetalburgCity_Gym_EventScript_155187
call PetalburgCity_Gym_EventScript_155124
return
PetalburgCity_Gym_EventScript_15503F:: @ 815503F
setvar 0x8004, 6
compare 0x8005, 0
- callif 1, PetalburgCity_Gym_EventScript_155182
+ call_if 1, PetalburgCity_Gym_EventScript_155182
compare 0x8005, 1
- callif 1, PetalburgCity_Gym_EventScript_155187
+ call_if 1, PetalburgCity_Gym_EventScript_155187
call PetalburgCity_Gym_EventScript_155149
return
PetalburgCity_Gym_EventScript_155060:: @ 8155060
setvar 0x8004, 7
compare 0x8005, 0
- callif 1, PetalburgCity_Gym_EventScript_155182
+ call_if 1, PetalburgCity_Gym_EventScript_155182
compare 0x8005, 1
- callif 1, PetalburgCity_Gym_EventScript_155187
+ call_if 1, PetalburgCity_Gym_EventScript_155187
call PetalburgCity_Gym_EventScript_15515C
return
PetalburgCity_Gym_EventScript_155081:: @ 8155081
setvar 0x8004, 8
compare 0x8005, 0
- callif 1, PetalburgCity_Gym_EventScript_155182
+ call_if 1, PetalburgCity_Gym_EventScript_155182
compare 0x8005, 1
- callif 1, PetalburgCity_Gym_EventScript_155187
+ call_if 1, PetalburgCity_Gym_EventScript_155187
call PetalburgCity_Gym_EventScript_15516F
return
@@ -1022,7 +1022,7 @@ PetalburgCity_Gym_EventScript_15518B:: @ 815518B
lock
faceplayer
checkflag 1217
- jumpeq PetalburgCity_Gym_EventScript_1551A0
+ goto_if_eq PetalburgCity_Gym_EventScript_1551A0
msgbox PetalburgCity_Gym_Text_17AB96, 4
release
end
@@ -1035,15 +1035,15 @@ PetalburgCity_Gym_EventScript_1551A0:: @ 81551A0
PetalburgCity_Gym_EventScript_1551AA:: @ 81551AA
lockall
checkflag 2059
- jumpeq PetalburgCity_Gym_EventScript_1551CA
- jump PetalburgCity_Gym_EventScript_1551D4
+ goto_if_eq PetalburgCity_Gym_EventScript_1551CA
+ goto PetalburgCity_Gym_EventScript_1551D4
end
PetalburgCity_Gym_EventScript_1551BA:: @ 81551BA
lockall
checkflag 2059
- jumpeq PetalburgCity_Gym_EventScript_1551CA
- jump PetalburgCity_Gym_EventScript_1551D4
+ goto_if_eq PetalburgCity_Gym_EventScript_1551CA
+ goto PetalburgCity_Gym_EventScript_1551D4
end
PetalburgCity_Gym_EventScript_1551CA:: @ 81551CA
diff --git a/data/scripts/maps/PetalburgCity_Mart.inc b/data/scripts/maps/PetalburgCity_Mart.inc
index 2eac03cac..e4186eaae 100644
--- a/data/scripts/maps/PetalburgCity_Mart.inc
+++ b/data/scripts/maps/PetalburgCity_Mart.inc
@@ -5,9 +5,9 @@ PetalburgCity_Mart_EventScript_1552B0:: @ 81552B0
lock
faceplayer
message PetalburgCity_Mart_Text_1A0BE4
- waittext
+ waitmessage
checkflag 296
- jumpeq PetalburgCity_Mart_EventScript_1552EA
+ goto_if_eq PetalburgCity_Mart_EventScript_1552EA
pokemart PetalburgCity_Mart_Items1
msgbox PetalburgCity_Mart_Text_1A0C02, 4
release
diff --git a/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc b/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc
index 5ef99eee1..e2013a1d6 100644
--- a/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc
+++ b/data/scripts/maps/PetalburgCity_PokemonCenter_1F.inc
@@ -10,7 +10,7 @@ PetalburgCity_PokemonCenter_1F_MapScript1_15520A:: @ 815520A
PetalburgCity_PokemonCenter_1F_EventScript_155213:: @ 8155213
setvar 0x800b, 1
call PetalburgCity_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
@@ -27,19 +27,19 @@ PetalburgCity_PokemonCenter_1F_EventScript_155233:: @ 8155233
lock
faceplayer
msgbox PetalburgCity_PokemonCenter_1F_Text_17BDC5, 4
- specialval RESULT, IsStarterInParty
+ specialvar RESULT, IsStarterInParty
compare RESULT, 1
- jumpeq PetalburgCity_PokemonCenter_1F_EventScript_15524F
+ goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_15524F
release
end
PetalburgCity_PokemonCenter_1F_EventScript_15524F:: @ 815524F
compare 0x4023, 0
- callif 1, PetalburgCity_PokemonCenter_1F_EventScript_155272
+ call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_155272
compare 0x4023, 1
- callif 1, PetalburgCity_PokemonCenter_1F_EventScript_15527B
+ call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_15527B
compare 0x4023, 2
- callif 1, PetalburgCity_PokemonCenter_1F_EventScript_155284
+ call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_155284
release
end
diff --git a/data/scripts/maps/PetalburgCity_WallysHouse.inc b/data/scripts/maps/PetalburgCity_WallysHouse.inc
index e8ac407dc..d8e95d8c6 100644
--- a/data/scripts/maps/PetalburgCity_WallysHouse.inc
+++ b/data/scripts/maps/PetalburgCity_WallysHouse.inc
@@ -5,13 +5,13 @@ PetalburgCity_WallysHouse_EventScript_1543C4:: @ 81543C4
lock
faceplayer
checkflag 126
- jumpeq PetalburgCity_WallysHouse_EventScript_1543F7
+ goto_if_eq PetalburgCity_WallysHouse_EventScript_1543F7
checkflag 122
- jumpeq PetalburgCity_WallysHouse_EventScript_154427
+ goto_if_eq PetalburgCity_WallysHouse_EventScript_154427
checkflag 1217
- jumpeq PetalburgCity_WallysHouse_EventScript_154406
+ goto_if_eq PetalburgCity_WallysHouse_EventScript_154406
checkflag 135
- jumpeq PetalburgCity_WallysHouse_EventScript_15443B
+ goto_if_eq PetalburgCity_WallysHouse_EventScript_15443B
msgbox PetalburgCity_WallysHouse_Text_179805, 4
setflag 135
release
@@ -19,8 +19,8 @@ PetalburgCity_WallysHouse_EventScript_1543C4:: @ 81543C4
PetalburgCity_WallysHouse_EventScript_1543F7:: @ 81543F7
checkflag 122
- jumpeq PetalburgCity_WallysHouse_EventScript_154431
- jump PetalburgCity_WallysHouse_EventScript_154406
+ goto_if_eq PetalburgCity_WallysHouse_EventScript_154431
+ goto PetalburgCity_WallysHouse_EventScript_154406
end
PetalburgCity_WallysHouse_EventScript_154406:: @ 8154406
@@ -50,9 +50,9 @@ PetalburgCity_WallysHouse_EventScript_154445:: @ 8154445
lock
faceplayer
checkflag 122
- jumpeq PetalburgCity_WallysHouse_EventScript_15446D
+ goto_if_eq PetalburgCity_WallysHouse_EventScript_15446D
checkflag 1217
- jumpeq PetalburgCity_WallysHouse_EventScript_154463
+ goto_if_eq PetalburgCity_WallysHouse_EventScript_154463
msgbox PetalburgCity_WallysHouse_Text_179C2C, 4
release
end
diff --git a/data/scripts/maps/PetalburgWoods.inc b/data/scripts/maps/PetalburgWoods.inc
index c24f7c195..0b0c72f70 100644
--- a/data/scripts/maps/PetalburgWoods.inc
+++ b/data/scripts/maps/PetalburgWoods.inc
@@ -9,108 +9,108 @@ PetalburgWoods_MapScript1_15CCA2:: @ 815CCA2
PetalburgWoods_EventScript_15CCA8:: @ 815CCA8
lockall
call PetalburgWoods_EventScript_15CDE6
- move 4, PetalburgWoods_Movement_15CE89
- waitmove 0
+ applymovement 4, PetalburgWoods_Movement_15CE89
+ waitmovement 0
msgbox PetalburgWoods_Text_194D92, 4
- closebutton
- playmusic BGM_EVIL_TEAM, 0
- move 3, PetalburgWoods_Movement_15CEC3
- waitmove 0
+ closemessage
+ playbgm BGM_EVIL_TEAM, 0
+ applymovement 3, PetalburgWoods_Movement_15CEC3
+ waitmovement 0
msgbox PetalburgWoods_Text_194DED, 4
- closebutton
- move 3, PetalburgWoods_Movement_15CEB0
- waitmove 0
- move 4, PetalburgWoods_Movement_1A0841
- waitmove 0
+ closemessage
+ applymovement 3, PetalburgWoods_Movement_15CEB0
+ waitmovement 0
+ applymovement 4, PetalburgWoods_Movement_1A0841
+ waitmovement 0
msgbox PetalburgWoods_Text_194E6B, 4
- closebutton
- move 4, PetalburgWoods_Movement_15CE9E
- waitmove 0
+ closemessage
+ applymovement 4, PetalburgWoods_Movement_15CE9E
+ waitmovement 0
msgbox PetalburgWoods_Text_194E9A, 4
- move 3, PetalburgWoods_Movement_15CEC8
- waitmove 0
+ applymovement 3, PetalburgWoods_Movement_15CEC8
+ waitmovement 0
msgbox PetalburgWoods_Text_194EE8, 4
trainerbattle 3, OPPONENT_PETALBURG_WOODS_GRUNT, 0, PetalburgWoods_Text_194F83
- move 3, PetalburgWoods_Movement_15CEB3
- waitmove 0
+ applymovement 3, PetalburgWoods_Movement_15CEB3
+ waitmovement 0
call PetalburgWoods_EventScript_15CDFA
- move 4, PetalburgWoods_Movement_15CE80
- waitmove 0
- jump PetalburgWoods_EventScript_15CE69
+ applymovement 4, PetalburgWoods_Movement_15CE80
+ waitmovement 0
+ goto PetalburgWoods_EventScript_15CE69
end
PetalburgWoods_EventScript_15CD42:: @ 815CD42
lockall
call PetalburgWoods_EventScript_15CDE6
- move 4, PetalburgWoods_Movement_15CE8E
- waitmove 0
- move 255, PetalburgWoods_Movement_1A083F
- waitmove 0
+ applymovement 4, PetalburgWoods_Movement_15CE8E
+ waitmovement 0
+ applymovement 255, PetalburgWoods_Movement_1A083F
+ waitmovement 0
msgbox PetalburgWoods_Text_194D92, 4
- closebutton
- playmusic BGM_EVIL_TEAM, 0
- move 3, PetalburgWoods_Movement_15CEC3
- waitmove 0
+ closemessage
+ playbgm BGM_EVIL_TEAM, 0
+ applymovement 3, PetalburgWoods_Movement_15CEC3
+ waitmovement 0
msgbox PetalburgWoods_Text_194DED, 4
- closebutton
- move 3, PetalburgWoods_Movement_15CEBF
- waitmove 0
- move 4, PetalburgWoods_Movement_1A0841
- waitmove 0
+ closemessage
+ applymovement 3, PetalburgWoods_Movement_15CEBF
+ waitmovement 0
+ applymovement 4, PetalburgWoods_Movement_1A0841
+ waitmovement 0
msgbox PetalburgWoods_Text_194E6B, 4
- closebutton
- move 4, PetalburgWoods_Movement_15CEA4
- waitmove 0
+ closemessage
+ applymovement 4, PetalburgWoods_Movement_15CEA4
+ waitmovement 0
msgbox PetalburgWoods_Text_194E9A, 4
- move 255, PetalburgWoods_Movement_1A0841
- waitmove 0
+ applymovement 255, PetalburgWoods_Movement_1A0841
+ waitmovement 0
msgbox PetalburgWoods_Text_194EE8, 4
trainerbattle 3, OPPONENT_PETALBURG_WOODS_GRUNT, 0, PetalburgWoods_Text_194F83
- move 3, PetalburgWoods_Movement_15CEB3
- waitmove 0
+ applymovement 3, PetalburgWoods_Movement_15CEB3
+ waitmovement 0
call PetalburgWoods_EventScript_15CDFA
- move 4, PetalburgWoods_Movement_15CE95
- waitmove 0
- jump PetalburgWoods_EventScript_15CE69
+ applymovement 4, PetalburgWoods_Movement_15CE95
+ waitmovement 0
+ goto PetalburgWoods_EventScript_15CE69
end
PetalburgWoods_EventScript_15CDE6:: @ 815CDE6
- move 4, PetalburgWoods_Movement_15CE73
- waitmove 0
+ applymovement 4, PetalburgWoods_Movement_15CE73
+ waitmovement 0
msgbox PetalburgWoods_Text_194D71, 4
- closebutton
+ closemessage
return
PetalburgWoods_EventScript_15CDFA:: @ 815CDFA
msgbox PetalburgWoods_Text_194FA4, 4
- closebutton
- move 3, PetalburgWoods_Movement_15CEB7
- waitmove 0
- disappear 3
- move 255, PetalburgWoods_Movement_1A0845
- waitmove 0
+ closemessage
+ applymovement 3, PetalburgWoods_Movement_15CEB7
+ waitmovement 0
+ removeobject 3
+ applymovement 255, PetalburgWoods_Movement_1A0845
+ waitmovement 0
msgbox PetalburgWoods_Text_19507E, 4
giveitem ITEM_GREAT_BALL
compare RESULT, 0
- jumpeq PetalburgWoods_EventScript_15CE3F
- jump PetalburgWoods_EventScript_15CE4D
+ goto_if_eq PetalburgWoods_EventScript_15CE3F
+ goto PetalburgWoods_EventScript_15CE4D
end
PetalburgWoods_EventScript_15CE3F:: @ 815CE3F
msgbox PetalburgWoods_Text_195182, 4
- jump PetalburgWoods_EventScript_15CE4D
+ goto PetalburgWoods_EventScript_15CE4D
end
PetalburgWoods_EventScript_15CE4D:: @ 815CE4D
msgbox PetalburgWoods_Text_19510A, 4
- move 4, PetalburgWoods_Movement_15CEA8
- waitmove 0
+ applymovement 4, PetalburgWoods_Movement_15CEA8
+ waitmovement 0
msgbox PetalburgWoods_Text_195153, 4
- closebutton
+ closemessage
return
PetalburgWoods_EventScript_15CE69:: @ 815CE69
- disappear 4
+ removeobject 4
setvar 0x4098, 1
releaseall
end
@@ -242,11 +242,11 @@ PetalburgWoods_EventScript_15CEDC:: @ 815CEDC
lock
faceplayer
checkflag 297
- jumpeq PetalburgWoods_EventScript_15CF0B
+ goto_if_eq PetalburgWoods_EventScript_15CF0B
msgbox PetalburgWoods_Text_19549E, 4
giveitem ITEM_MIRACLE_SEED
compare RESULT, 0
- jumpeq PetalburgWoods_EventScript_1A029B
+ goto_if_eq PetalburgWoods_EventScript_1A029B
setflag 297
release
end
@@ -271,9 +271,9 @@ PetalburgWoods_EventScript_15CF27:: @ 815CF27
PetalburgWoods_EventScript_15CF3E:: @ 815CF3E
trainerbattle 0, OPPONENT_JAMES_1, 0, PetalburgWoods_Text_19526A, PetalburgWoods_Text_1952AE
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq PetalburgWoods_EventScript_15CF65
+ goto_if_eq PetalburgWoods_EventScript_15CF65
msgbox PetalburgWoods_Text_1952CC, 6
end
diff --git a/data/scripts/maps/Route101.inc b/data/scripts/maps/Route101.inc
index 8462603a6..2fe80e098 100644
--- a/data/scripts/maps/Route101.inc
+++ b/data/scripts/maps/Route101.inc
@@ -18,25 +18,25 @@ Route101_EventScript_14E93F:: @ 814E93F
Route101_EventScript_14E948:: @ 814E948
lockall
- playmusic 410, 1
+ playbgm 410, 1
msgbox Route101_Text_16D10E, 4
- closebutton
- movesprite 2, 0, 15
- movesprite 4, 0, 16
- move 255, Route101_Movement_14EA2C
- move 2, Route101_Movement_14EA50
- move 4, Route101_Movement_14EA1F
- waitmove 0
- move 4, Route101_Movement_14EA00
- move 2, Route101_Movement_14EA31
- waitmove 0
- move 2, Route101_Movement_1A0843
- waitmove 0
- move 4, Route101_Movement_14EA27
- move 2, Route101_Movement_14EA58
- waitmove 0
+ closemessage
+ setobjectxy 2, 0, 15
+ setobjectxy 4, 0, 16
+ applymovement 255, Route101_Movement_14EA2C
+ applymovement 2, Route101_Movement_14EA50
+ applymovement 4, Route101_Movement_14EA1F
+ waitmovement 0
+ applymovement 4, Route101_Movement_14EA00
+ applymovement 2, Route101_Movement_14EA31
+ waitmovement 0
+ applymovement 2, Route101_Movement_1A0843
+ waitmovement 0
+ applymovement 4, Route101_Movement_14EA27
+ applymovement 2, Route101_Movement_14EA58
+ waitmovement 0
msgbox Route101_Text_16D119, 4
- closebutton
+ closemessage
setvar 0x4060, 2
releaseall
end
@@ -44,27 +44,27 @@ Route101_EventScript_14E948:: @ 814E948
Route101_EventScript_14E9B8:: @ 814E9B8
lockall
msgbox Route101_Text_16D15E, 4
- closebutton
- move 255, Route101_Movement_14E9FA
- waitmove 0
+ closemessage
+ applymovement 255, Route101_Movement_14E9FA
+ waitmovement 0
releaseall
end
Route101_EventScript_14E9CE:: @ 814E9CE
lockall
msgbox Route101_Text_16D15E, 4
- closebutton
- move 255, Route101_Movement_14E9FC
- waitmove 0
+ closemessage
+ applymovement 255, Route101_Movement_14E9FC
+ waitmovement 0
releaseall
end
Route101_EventScript_14E9E4:: @ 814E9E4
lockall
msgbox Route101_Text_16D15E, 4
- closebutton
- move 255, Route101_Movement_14E9FE
- waitmove 0
+ closemessage
+ applymovement 255, Route101_Movement_14E9FE
+ waitmovement 0
releaseall
end
@@ -220,16 +220,16 @@ Route101_EventScript_14EA7F:: @ 814EA7F
setflag 2048
setflag 82
fadescreen 1
- disappear 4
- movesprite 255, 6, 13
- move 255, Route101_Movement_1A083F
- waitmove 0
- special ChooseStarter
+ removeobject 4
+ setobjectxy 255, 6, 13
+ applymovement 255, Route101_Movement_1A083F
+ waitmovement 0
+ special ScrSpecial_ChooseStarter
waitstate
- move 2, Route101_Movement_14EAD7
- waitmove 0
+ applymovement 2, Route101_Movement_14EAD7
+ waitmovement 0
msgbox Route101_Text_16D191, 4
- special HealPlayerParty
+ special ScrSpecial_HealPlayerParty
setflag 720
clearflag 721
setflag 700
diff --git a/data/scripts/maps/Route102.inc b/data/scripts/maps/Route102.inc
index b0a714763..95a0a4a1f 100644
--- a/data/scripts/maps/Route102.inc
+++ b/data/scripts/maps/Route102.inc
@@ -19,9 +19,9 @@ Route102_EventScript_14EAF5:: @ 814EAF5
Route102_EventScript_14EAFE:: @ 814EAFE
trainerbattle 0, OPPONENT_CALVIN_1, 0, Route102_Text_1B79C3, Route102_Text_1B7A2C
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route102_EventScript_14EB25
+ goto_if_eq Route102_EventScript_14EB25
msgbox Route102_Text_1B7A60, 6
end
diff --git a/data/scripts/maps/Route103.inc b/data/scripts/maps/Route103.inc
index 4c7da3d0d..ff0ccce30 100644
--- a/data/scripts/maps/Route103.inc
+++ b/data/scripts/maps/Route103.inc
@@ -9,22 +9,22 @@ Route103_MapScript1_14EB87:: @ 814EB87
Route103_EventScript_14EB92:: @ 814EB92
lockall
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq Route103_EventScript_14EBAB
+ goto_if_eq Route103_EventScript_14EBAB
compare RESULT, 1
- jumpeq Route103_EventScript_14EC04
+ goto_if_eq Route103_EventScript_14EC04
end
Route103_EventScript_14EBAB:: @ 814EBAB
msgbox Route103_Text_16D57A, 4
- playmusic 415, 1
- move 2, Route103_Movement_1A0839
- waitmove 0
- move 2, Route103_Movement_1A0833
- waitmove 0
- move 2, Route103_Movement_1A0835
- waitmove 0
+ playbgm 415, 1
+ applymovement 2, Route103_Movement_1A0839
+ waitmovement 0
+ applymovement 2, Route103_Movement_1A0833
+ waitmovement 0
+ applymovement 2, Route103_Movement_1A0835
+ waitmovement 0
msgbox Route103_Text_16D5B6, 4
switch 0x4023
case 0, Route103_EventScript_14EC5D
@@ -34,13 +34,13 @@ Route103_EventScript_14EBAB:: @ 814EBAB
Route103_EventScript_14EC04:: @ 814EC04
msgbox Route103_Text_16D762, 4
- playmusic 421, 1
- move 2, Route103_Movement_1A0839
- waitmove 0
- move 2, Route103_Movement_1A0833
- waitmove 0
- move 2, Route103_Movement_1A0835
- waitmove 0
+ playbgm 421, 1
+ applymovement 2, Route103_Movement_1A0839
+ waitmovement 0
+ applymovement 2, Route103_Movement_1A0833
+ waitmovement 0
+ applymovement 2, Route103_Movement_1A0835
+ waitmovement 0
msgbox Route103_Text_16D7A9, 4
switch 0x4023
case 0, Route103_EventScript_14EC8D
@@ -50,46 +50,46 @@ Route103_EventScript_14EC04:: @ 814EC04
Route103_EventScript_14EC5D:: @ 814EC5D
trainerbattle 3, OPPONENT_MAY_4, 0, Route103_Text_16D65B
- jump Route103_EventScript_14ECBD
+ goto Route103_EventScript_14ECBD
end
Route103_EventScript_14EC6D:: @ 814EC6D
trainerbattle 3, OPPONENT_MAY_7, 0, Route103_Text_16D65B
- jump Route103_EventScript_14ECBD
+ goto Route103_EventScript_14ECBD
end
Route103_EventScript_14EC7D:: @ 814EC7D
trainerbattle 3, OPPONENT_MAY_1, 0, Route103_Text_16D65B
- jump Route103_EventScript_14ECBD
+ goto Route103_EventScript_14ECBD
end
Route103_EventScript_14EC8D:: @ 814EC8D
trainerbattle 3, OPPONENT_BRENDAN_4, 0, Route103_Text_16D836
- jump Route103_EventScript_14ECCB
+ goto Route103_EventScript_14ECCB
end
Route103_EventScript_14EC9D:: @ 814EC9D
trainerbattle 3, OPPONENT_BRENDAN_7, 0, Route103_Text_16D836
- jump Route103_EventScript_14ECCB
+ goto Route103_EventScript_14ECCB
end
Route103_EventScript_14ECAD:: @ 814ECAD
trainerbattle 3, OPPONENT_BRENDAN_1, 0, Route103_Text_16D836
- jump Route103_EventScript_14ECCB
+ goto Route103_EventScript_14ECCB
end
Route103_EventScript_14ECBD:: @ 814ECBD
msgbox Route103_Text_16D688, 4
- jump Route103_EventScript_14ECD9
+ goto Route103_EventScript_14ECD9
end
Route103_EventScript_14ECCB:: @ 814ECCB
msgbox Route103_Text_16D856, 4
- jump Route103_EventScript_14ECD9
+ goto Route103_EventScript_14ECD9
end
Route103_EventScript_14ECD9:: @ 814ECD9
- closebutton
+ closemessage
switch FACING
case 1, Route103_EventScript_14ED29
case 2, Route103_EventScript_14ED0C
@@ -98,33 +98,33 @@ Route103_EventScript_14ECD9:: @ 814ECD9
end
Route103_EventScript_14ED0C:: @ 814ED0C
- move 2, Route103_Movement_14ED67
- waitmove 0
- playsfx 10
- move 2, Route103_Movement_14ED6B
- waitmove 0
- jump Route103_EventScript_14ED46
+ applymovement 2, Route103_Movement_14ED67
+ waitmovement 0
+ playse 10
+ applymovement 2, Route103_Movement_14ED6B
+ waitmovement 0
+ goto Route103_EventScript_14ED46
end
Route103_EventScript_14ED29:: @ 814ED29
- move 2, Route103_Movement_14ED71
- waitmove 0
- playsfx 10
- move 2, Route103_Movement_14ED74
- waitmove 0
- jump Route103_EventScript_14ED46
+ applymovement 2, Route103_Movement_14ED71
+ waitmovement 0
+ playse 10
+ applymovement 2, Route103_Movement_14ED74
+ waitmovement 0
+ goto Route103_EventScript_14ED46
end
Route103_EventScript_14ED46:: @ 814ED46
- disappear 2
+ removeobject 2
setvar 0x4062, 1
setvar 0x4084, 4
clearflag 889
setflag 130
setvar 0x40c7, 1
clearflag 979
- playmusicbattle 0
- fadedefault
+ savebgm 0
+ fadedefaultbgm
releaseall
end
@@ -173,9 +173,9 @@ Route103_EventScript_14ED94:: @ 814ED94
Route103_EventScript_14EDAB:: @ 814EDAB
trainerbattle 4, OPPONENT_AMY_AND_LIV_1, 0, Route103_Text_1B7DF7, Route103_Text_1B7E3B, Route103_Text_1B7EAC
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route103_EventScript_14EDD6
+ goto_if_eq Route103_EventScript_14EDD6
msgbox Route103_Text_1B7E50, 6
end
@@ -186,9 +186,9 @@ Route103_EventScript_14EDD6:: @ 814EDD6
Route103_EventScript_14EDF1:: @ 814EDF1
trainerbattle 4, OPPONENT_AMY_AND_LIV_1, 0, Route103_Text_1B7EFB, Route103_Text_1B7F20, Route103_Text_1B7F8E
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route103_EventScript_14EE1C
+ goto_if_eq Route103_EventScript_14EE1C
msgbox Route103_Text_1B7F40, 6
end
@@ -204,9 +204,9 @@ Route103_EventScript_14EE37:: @ 814EE37
Route103_EventScript_14EE4E:: @ 814EE4E
trainerbattle 0, OPPONENT_MIGUEL_1, 0, Route103_Text_1B82A9, Route103_Text_1B82EC
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route103_EventScript_14EE75
+ goto_if_eq Route103_EventScript_14EE75
msgbox Route103_Text_1B830D, 6
end
diff --git a/data/scripts/maps/Route104.inc b/data/scripts/maps/Route104.inc
index b617767bf..651f2afb4 100644
--- a/data/scripts/maps/Route104.inc
+++ b/data/scripts/maps/Route104.inc
@@ -9,7 +9,7 @@ Route104_MapScript2_14EE97:: @ 814EE97
Route104_EventScript_14EEA1:: @ 814EEA1
lockall
- jump Route104_EventScript_14EFD5
+ goto Route104_EventScript_14EFD5
end
Route104_MapScript1_14EEA8:: @ 814EEA8
@@ -18,9 +18,9 @@ Route104_MapScript1_14EEA8:: @ 814EEA8
Route104_EventScript_14EEAE:: @ 814EEAE
checkflag 127
- jumpif 0, Route104_EventScript_14EEC4
+ goto_if 0, Route104_EventScript_14EEC4
checkflag 2057
- jumpif 0, Route104_EventScript_14EEC4
+ goto_if 0, Route104_EventScript_14EEC4
clearflag 906
return
@@ -32,11 +32,11 @@ Route104_EventScript_14EEC8:: @ 814EEC8
lock
faceplayer
checkflag 246
- jumpeq Route104_EventScript_14EEFF
+ goto_if_eq Route104_EventScript_14EEFF
msgbox Route104_Text_1C55B9, 4
giveitem ITEM_CHESTO_BERRY
compare RESULT, 0
- jumpeq Route104_EventScript_1A029B
+ goto_if_eq Route104_EventScript_1A029B
setflag 246
msgbox Route104_Text_1C5665, 4
release
@@ -51,11 +51,11 @@ Route104_EventScript_14EF09:: @ 814EF09
lock
faceplayer
checkflag 279
- jumpeq Route104_EventScript_14EF38
+ goto_if_eq Route104_EventScript_14EF38
msgbox Route104_Text_16DD91, 4
giveitem ITEM_WHITE_HERB
compare RESULT, 0
- jumpeq Route104_EventScript_1A029B
+ goto_if_eq Route104_EventScript_1A029B
setflag 279
release
end
@@ -105,11 +105,11 @@ Route104_EventScript_14EF93:: @ 814EF93
lock
faceplayer
checkflag 262
- jumpeq Route104_EventScript_14EFC2
+ goto_if_eq Route104_EventScript_14EFC2
msgbox Route104_Text_16DC5F, 4
giveitem ITEM_TM09
compare RESULT, 0
- jumpeq Route104_EventScript_1A029B
+ goto_if_eq Route104_EventScript_1A029B
setflag 262
release
end
@@ -124,44 +124,44 @@ Route104_EventScript_14EFCC:: @ 814EFCC
end
Route104_EventScript_14EFD5:: @ 814EFD5
- spritelevelup 8, 0, 19, 0
- spritelevelup 255, 0, 19, 0
- move 8, Route104_Movement_14F16C
- waitmove 0
- disappear 8
- move 255, Route104_Movement_14F162
- waitmove 0
- spriteinvisible 255, 0, 19
+ setobjectpriority 8, 0, 19, 0
+ setobjectpriority 255, 0, 19, 0
+ applymovement 8, Route104_Movement_14F16C
+ waitmovement 0
+ removeobject 8
+ applymovement 255, Route104_Movement_14F162
+ waitmovement 0
+ hideobject 255, 0, 19
call Route104_EventScript_1A02E7
- move 7, Route104_Movement_14F09F
- move 255, Route104_Movement_14F09F
- waitmove 0
- move 255, Route104_Movement_14F166
- waitmove 0
+ applymovement 7, Route104_Movement_14F09F
+ applymovement 255, Route104_Movement_14F09F
+ waitmovement 0
+ applymovement 255, Route104_Movement_14F166
+ waitmovement 0
call Route104_EventScript_1A02EF
- spritevisible 255, 0, 11
- move 255, Route104_Movement_14F168
- waitmove 0
- movespriteperm 2, 12, 8
- reappear 2
- spritelevelup 2, 0, 11, 0
+ showobject 255, 0, 11
+ applymovement 255, Route104_Movement_14F168
+ waitmovement 0
+ setobjectxyperm 2, 12, 8
+ addobject 2
+ setobjectpriority 2, 0, 11, 0
clearflag 740
- move 2, Route104_Movement_14F16F
- waitmove 0
- reappear 4
+ applymovement 2, Route104_Movement_14F16F
+ waitmovement 0
+ addobject 4
clearflag 743
call Route104_EventScript_1A02EF
setflag 742
- spriteinvisible 7, 0, 19
+ hideobject 7, 0, 19
copyvar 0x4096, 0x8008
- restorespritelevel 255, 0, 19
- restorespritelevel 2, 0, 11
- moveoffscreen 2
+ resetobjectpriority 255, 0, 19
+ resetobjectpriority 2, 0, 11
+ moveobjectoffscreen 2
setvar 0x408e, 0
checkflag 189
- jumpif 0, Route104_EventScript_14F08B
+ goto_if 0, Route104_EventScript_14F08B
checkflag 189
- jumpeq Route104_EventScript_14F095
+ goto_if_eq Route104_EventScript_14F095
end
Route104_EventScript_14F08B:: @ 814F08B
@@ -409,9 +409,9 @@ Route104_EventScript_14F189:: @ 814F189
Route104_EventScript_14F1A0:: @ 814F1A0
trainerbattle 0, OPPONENT_HALEY_1, 0, Route104_Text_1B8770, Route104_Text_1B87A7
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route104_EventScript_14F1C7
+ goto_if_eq Route104_EventScript_14F1C7
msgbox Route104_Text_1B87C3, 6
end
@@ -422,9 +422,9 @@ Route104_EventScript_14F1C7:: @ 814F1C7
Route104_EventScript_14F1DE:: @ 814F1DE
trainerbattle 0, OPPONENT_WINSTON_1, 0, Route104_Text_1B88D4, Route104_Text_1B8911
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route104_EventScript_14F205
+ goto_if_eq Route104_EventScript_14F205
msgbox Route104_Text_1B8925, 6
end
@@ -435,9 +435,9 @@ Route104_EventScript_14F205:: @ 814F205
Route104_EventScript_14F21C:: @ 814F21C
trainerbattle 0, OPPONENT_CINDY_1, 0, Route104_Text_1B8A24, Route104_Text_1B8A61
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route104_EventScript_14F243
+ goto_if_eq Route104_EventScript_14F243
msgbox Route104_Text_1B8A69, 6
end
diff --git a/data/scripts/maps/Route104_MrBrineysHouse.inc b/data/scripts/maps/Route104_MrBrineysHouse.inc
index 5c6704e67..f24e92cd4 100644
--- a/data/scripts/maps/Route104_MrBrineysHouse.inc
+++ b/data/scripts/maps/Route104_MrBrineysHouse.inc
@@ -5,9 +5,9 @@ Route104_MrBrineysHouse_MapScripts:: @ 815BCB2
Route104_MrBrineysHouse_MapScript1_15BCB8:: @ 815BCB8
setflag 2109
compare 0x4090, 1
- callif 1, Route104_MrBrineysHouse_EventScript_15BCD4
+ call_if 1, Route104_MrBrineysHouse_EventScript_15BCD4
checkflag 188
- callif 1, Route104_MrBrineysHouse_EventScript_15BCD0
+ call_if 1, Route104_MrBrineysHouse_EventScript_15BCD0
end
Route104_MrBrineysHouse_EventScript_15BCD0:: @ 815BCD0
@@ -15,22 +15,22 @@ Route104_MrBrineysHouse_EventScript_15BCD0:: @ 815BCD0
return
Route104_MrBrineysHouse_EventScript_15BCD4:: @ 815BCD4
- movespriteperm 1, 9, 3
- spritebehave 1, 50
- movespriteperm 2, 9, 6
- spritebehave 2, 51
+ setobjectxyperm 1, 9, 3
+ setobjectmovementtype 1, 50
+ setobjectxyperm 2, 9, 6
+ setobjectmovementtype 2, 51
return
Route104_MrBrineysHouse_EventScript_15BCEB:: @ 815BCEB
lock
faceplayer
checkflag 147
- callif 0, Route104_MrBrineysHouse_EventScript_15BD0E
+ call_if 0, Route104_MrBrineysHouse_EventScript_15BD0E
checkflag 189
- jumpif 0, Route104_MrBrineysHouse_EventScript_15BD65
+ goto_if 0, Route104_MrBrineysHouse_EventScript_15BD65
checkflag 149
- jumpif 0, Route104_MrBrineysHouse_EventScript_15BD7E
- jump Route104_MrBrineysHouse_EventScript_15BD32
+ goto_if 0, Route104_MrBrineysHouse_EventScript_15BD7E
+ goto Route104_MrBrineysHouse_EventScript_15BD32
end
Route104_MrBrineysHouse_EventScript_15BD0E:: @ 815BD0E
@@ -38,14 +38,14 @@ Route104_MrBrineysHouse_EventScript_15BD0E:: @ 815BD0E
msgbox Route104_MrBrineysHouse_Text_191A82, 4
msgbox Route104_MrBrineysHouse_Text_191AAD, 5
compare RESULT, 0
- jumpeq Route104_MrBrineysHouse_EventScript_15BD97
- jump Route104_MrBrineysHouse_EventScript_15BDAB
+ goto_if_eq Route104_MrBrineysHouse_EventScript_15BD97
+ goto Route104_MrBrineysHouse_EventScript_15BDAB
end
Route104_MrBrineysHouse_EventScript_15BD32:: @ 815BD32
message Route104_MrBrineysHouse_Text_191E80
- waittext
- multichoicedef 21, 8, 14, 1, 0
+ waitmessage
+ multichoicedefault 21, 8, 14, 1, 0
switch RESULT
case 0, Route104_MrBrineysHouse_EventScript_15BDAB
case 1, Route104_MrBrineysHouse_EventScript_15BDA1
@@ -55,15 +55,15 @@ Route104_MrBrineysHouse_EventScript_15BD32:: @ 815BD32
Route104_MrBrineysHouse_EventScript_15BD65:: @ 815BD65
msgbox Route104_MrBrineysHouse_Text_191CC3, 5
compare RESULT, 0
- jumpeq Route104_MrBrineysHouse_EventScript_15BD97
- jump Route104_MrBrineysHouse_EventScript_15BDAB
+ goto_if_eq Route104_MrBrineysHouse_EventScript_15BD97
+ goto Route104_MrBrineysHouse_EventScript_15BDAB
end
Route104_MrBrineysHouse_EventScript_15BD7E:: @ 815BD7E
msgbox Route104_MrBrineysHouse_Text_191DA6, 5
compare RESULT, 0
- jumpeq Route104_MrBrineysHouse_EventScript_15BD97
- jump Route104_MrBrineysHouse_EventScript_15BDAB
+ goto_if_eq Route104_MrBrineysHouse_EventScript_15BD97
+ goto Route104_MrBrineysHouse_EventScript_15BDAB
end
Route104_MrBrineysHouse_EventScript_15BD97:: @ 815BD97
@@ -91,8 +91,8 @@ Route104_MrBrineysHouse_EventScript_15BDAB:: @ 815BDAB
Route104_MrBrineysHouse_EventScript_15BDD1:: @ 815BDD1
lock
faceplayer
- checksound
- pokecry SPECIES_WINGULL, 0
+ waitse
+ playpokecry SPECIES_WINGULL, 0
msgbox Route104_MrBrineysHouse_Text_191FB9, 4
waitpokecry
release
diff --git a/data/scripts/maps/Route104_PrettyPetalFlowerShop.inc b/data/scripts/maps/Route104_PrettyPetalFlowerShop.inc
index 02842c62d..4c5becf88 100644
--- a/data/scripts/maps/Route104_PrettyPetalFlowerShop.inc
+++ b/data/scripts/maps/Route104_PrettyPetalFlowerShop.inc
@@ -5,39 +5,39 @@ Route104_PrettyPetalFlowerShop_MapScripts:: @ 815BDE4
Route104_PrettyPetalFlowerShop_MapScript1_15BDEA:: @ 815BDEA
setflag 2108
checkflag 127
- jumpif 0, Route104_PrettyPetalFlowerShop_EventScript_15BE03
+ goto_if 0, Route104_PrettyPetalFlowerShop_EventScript_15BE03
checkflag 2057
- jumpif 0, Route104_PrettyPetalFlowerShop_EventScript_15BE03
+ goto_if 0, Route104_PrettyPetalFlowerShop_EventScript_15BE03
setflag 1
end
Route104_PrettyPetalFlowerShop_EventScript_15BE03:: @ 815BE03
- movespriteperm 1, 4, 6
+ setobjectxyperm 1, 4, 6
end
Route104_PrettyPetalFlowerShop_EventScript_15BE0B:: @ 815BE0B
lock
faceplayer
checkflag 1
- jumpeq Route104_PrettyPetalFlowerShop_EventScript_15BE7C
+ goto_if_eq Route104_PrettyPetalFlowerShop_EventScript_15BE7C
msgbox Route104_PrettyPetalFlowerShop_Text_1C5EC6, 4
checkflag 127
- jumpeq Route104_PrettyPetalFlowerShop_EventScript_15BE4A
+ goto_if_eq Route104_PrettyPetalFlowerShop_EventScript_15BE4A
setflag 127
msgbox Route104_PrettyPetalFlowerShop_Text_1C5F48, 5
compare RESULT, 1
- callif 1, Route104_PrettyPetalFlowerShop_EventScript_15BE6A
+ call_if 1, Route104_PrettyPetalFlowerShop_EventScript_15BE6A
compare RESULT, 0
- callif 1, Route104_PrettyPetalFlowerShop_EventScript_15BE73
+ call_if 1, Route104_PrettyPetalFlowerShop_EventScript_15BE73
release
end
Route104_PrettyPetalFlowerShop_EventScript_15BE4A:: @ 815BE4A
msgbox Route104_PrettyPetalFlowerShop_Text_1C5F1B, 5
compare RESULT, 1
- callif 1, Route104_PrettyPetalFlowerShop_EventScript_15BE6A
+ call_if 1, Route104_PrettyPetalFlowerShop_EventScript_15BE6A
compare RESULT, 0
- callif 1, Route104_PrettyPetalFlowerShop_EventScript_15BE73
+ call_if 1, Route104_PrettyPetalFlowerShop_EventScript_15BE73
release
end
@@ -51,7 +51,7 @@ Route104_PrettyPetalFlowerShop_EventScript_15BE73:: @ 815BE73
Route104_PrettyPetalFlowerShop_EventScript_15BE7C:: @ 815BE7C
message Route104_PrettyPetalFlowerShop_Text_1A0C42
- waittext
+ waitmessage
pokemartbp Route104_PrettyPetalFlowerShop_Items
msgbox Route104_PrettyPetalFlowerShop_Text_1A0C02, 4
release
@@ -73,7 +73,7 @@ Route104_PrettyPetalFlowerShop_EventScript_15BEA4:: @ 815BEA4
lock
faceplayer
checkflag 94
- jumpif 0, Route104_PrettyPetalFlowerShop_EventScript_15BEB9
+ goto_if 0, Route104_PrettyPetalFlowerShop_EventScript_15BEB9
msgbox Route104_PrettyPetalFlowerShop_Text_1C61E8, 4
release
end
@@ -89,15 +89,15 @@ Route104_PrettyPetalFlowerShop_EventScript_15BEB9:: @ 815BEB9
Route104_PrettyPetalFlowerShop_EventScript_15BEDA:: @ 815BEDA
lock
faceplayer
- checkdailyflags
+ dodailyevents
checkflag 2256
- jumpeq Route104_PrettyPetalFlowerShop_EventScript_15BF1A
+ goto_if_eq Route104_PrettyPetalFlowerShop_EventScript_15BF1A
msgbox Route104_PrettyPetalFlowerShop_Text_1C62DA, 4
random 8
addvar RESULT, 133
giveitem RESULT
compare RESULT, 0
- jumpeq Route104_PrettyPetalFlowerShop_EventScript_1A029B
+ goto_if_eq Route104_PrettyPetalFlowerShop_EventScript_1A029B
setflag 2256
msgbox Route104_PrettyPetalFlowerShop_Text_1C6335, 4
release
diff --git a/data/scripts/maps/Route104_Prototype.inc b/data/scripts/maps/Route104_Prototype.inc
index ff1c9d258..3c218747a 100644
--- a/data/scripts/maps/Route104_Prototype.inc
+++ b/data/scripts/maps/Route104_Prototype.inc
@@ -5,21 +5,21 @@ Route104_Prototype_EventScript_160C4B:: @ 8160C4B
lock
faceplayer
checktrainerflag OPPONENT_BRIANNA_1
- jumpif 0, Route104_Prototype_EventScript_160C99
+ goto_if 0, Route104_Prototype_EventScript_160C99
checktrainerflag OPPONENT_CINDY_2
- jumpif 0, Route104_Prototype_EventScript_160C99
+ goto_if 0, Route104_Prototype_EventScript_160C99
checktrainerflag OPPONENT_AMY_AND_LIV_3
- jumpif 0, Route104_Prototype_EventScript_160C99
+ goto_if 0, Route104_Prototype_EventScript_160C99
checktrainerflag OPPONENT_GINA_AND_MIA_2
- jumpif 0, Route104_Prototype_EventScript_160C99
+ goto_if 0, Route104_Prototype_EventScript_160C99
checktrainerflag OPPONENT_LUCAS_2
- jumpif 0, Route104_Prototype_EventScript_160C99
+ goto_if 0, Route104_Prototype_EventScript_160C99
checktrainerflag OPPONENT_MIKE_1
- jumpif 0, Route104_Prototype_EventScript_160C99
+ goto_if 0, Route104_Prototype_EventScript_160C99
setflag 215
msgbox Route104_Prototype_Text_19B267, 4
checkflag 216
- jumpeq Route104_Prototype_EventScript_160CFB
+ goto_if_eq Route104_Prototype_EventScript_160CFB
release
end
@@ -32,21 +32,21 @@ Route104_Prototype_EventScript_160CA3:: @ 8160CA3
lock
faceplayer
checktrainerflag OPPONENT_BRIANNA_1
- jumpif 0, Route104_Prototype_EventScript_160CF1
+ goto_if 0, Route104_Prototype_EventScript_160CF1
checktrainerflag OPPONENT_CINDY_2
- jumpif 0, Route104_Prototype_EventScript_160CF1
+ goto_if 0, Route104_Prototype_EventScript_160CF1
checktrainerflag OPPONENT_AMY_AND_LIV_3
- jumpif 0, Route104_Prototype_EventScript_160CF1
+ goto_if 0, Route104_Prototype_EventScript_160CF1
checktrainerflag OPPONENT_GINA_AND_MIA_2
- jumpif 0, Route104_Prototype_EventScript_160CF1
+ goto_if 0, Route104_Prototype_EventScript_160CF1
checktrainerflag OPPONENT_LUCAS_2
- jumpif 0, Route104_Prototype_EventScript_160CF1
+ goto_if 0, Route104_Prototype_EventScript_160CF1
checktrainerflag OPPONENT_MIKE_1
- jumpif 0, Route104_Prototype_EventScript_160CF1
+ goto_if 0, Route104_Prototype_EventScript_160CF1
setflag 216
msgbox Route104_Prototype_Text_19B2E9, 4
checkflag 215
- jumpeq Route104_Prototype_EventScript_160CFB
+ goto_if_eq Route104_Prototype_EventScript_160CFB
release
end
@@ -56,10 +56,10 @@ Route104_Prototype_EventScript_160CF1:: @ 8160CF1
end
Route104_Prototype_EventScript_160CFB:: @ 8160CFB
- closebutton
- pause 60
+ closemessage
+ delay 60
fadescreen 1
- pause 60
+ delay 60
special DoSoftReset
waitstate
release
diff --git a/data/scripts/maps/Route105.inc b/data/scripts/maps/Route105.inc
index c71e2ce05..1182dae7e 100644
--- a/data/scripts/maps/Route105.inc
+++ b/data/scripts/maps/Route105.inc
@@ -4,7 +4,7 @@ Route105_MapScripts:: @ 814F298
Route105_MapScript1_14F29E:: @ 814F29E
checkflag 228
- callif 0, Route105_EventScript_14F2A8
+ call_if 0, Route105_EventScript_14F2A8
end
Route105_EventScript_14F2A8:: @ 814F2A8
diff --git a/data/scripts/maps/Route106.inc b/data/scripts/maps/Route106.inc
index 0c25594c6..2ec903363 100644
--- a/data/scripts/maps/Route106.inc
+++ b/data/scripts/maps/Route106.inc
@@ -17,9 +17,9 @@ Route106_EventScript_14F34F:: @ 814F34F
Route106_EventScript_14F366:: @ 814F366
trainerbattle 0, OPPONENT_ELLIOT_1, 0, Route106_Text_1B8EF0, Route106_Text_1B8F25
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route106_EventScript_14F38D
+ goto_if_eq Route106_EventScript_14F38D
msgbox Route106_Text_1B8F55, 6
end
diff --git a/data/scripts/maps/Route107.inc b/data/scripts/maps/Route107.inc
index a14bb7298..b6973407b 100644
--- a/data/scripts/maps/Route107.inc
+++ b/data/scripts/maps/Route107.inc
@@ -8,9 +8,9 @@ Route107_EventScript_14F3BC:: @ 814F3BC
Route107_EventScript_14F3D3:: @ 814F3D3
trainerbattle 0, OPPONENT_TONY_1, 0, Route107_Text_1B933A, Route107_Text_1B9365
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route107_EventScript_14F3FA
+ goto_if_eq Route107_EventScript_14F3FA
msgbox Route107_Text_1B938E, 6
end
diff --git a/data/scripts/maps/Route109.inc b/data/scripts/maps/Route109.inc
index 58c38173e..9f0ef8c8d 100644
--- a/data/scripts/maps/Route109.inc
+++ b/data/scripts/maps/Route109.inc
@@ -3,11 +3,11 @@ Route109_MapScripts:: @ 814F4D2
Route109_EventScript_14F4D3:: @ 814F4D3
call Route109_EventScript_1A010C
- spritelevelup 2, 0, 24, 0
- spritelevelup 255, 0, 24, 0
- move 2, Route109_Movement_14F67B
- waitmove 0
- disappear 2
+ setobjectpriority 2, 0, 24, 0
+ setobjectpriority 255, 0, 24, 0
+ applymovement 2, Route109_Movement_14F67B
+ waitmovement 0
+ removeobject 2
switch FACING
case 1, Route109_EventScript_14F518
case 3, Route109_EventScript_14F538
@@ -15,49 +15,49 @@ Route109_EventScript_14F4D3:: @ 814F4D3
end
Route109_EventScript_14F518:: @ 814F518
- move 255, Route109_Movement_14F66D
- waitmove 0
- jump Route109_EventScript_14F548
+ applymovement 255, Route109_Movement_14F66D
+ waitmovement 0
+ goto Route109_EventScript_14F548
end
Route109_EventScript_14F528:: @ 814F528
- move 255, Route109_Movement_14F675
- waitmove 0
- jump Route109_EventScript_14F548
+ applymovement 255, Route109_Movement_14F675
+ waitmovement 0
+ goto Route109_EventScript_14F548
end
Route109_EventScript_14F538:: @ 814F538
- move 255, Route109_Movement_14F678
- waitmove 0
- jump Route109_EventScript_14F548
+ applymovement 255, Route109_Movement_14F678
+ waitmovement 0
+ goto Route109_EventScript_14F548
end
Route109_EventScript_14F548:: @ 814F548
- spriteinvisible 255, 0, 24
+ hideobject 255, 0, 24
call Route109_EventScript_1A02E7
- move 1, Route109_Movement_14F5BF
- move 255, Route109_Movement_14F5BF
- waitmove 0
+ applymovement 1, Route109_Movement_14F5BF
+ applymovement 255, Route109_Movement_14F5BF
+ waitmovement 0
call Route109_EventScript_1A02EF
- spritevisible 255, 0, 11
- move 255, Route109_Movement_14F670
- waitmove 0
- reappear 4
+ showobject 255, 0, 11
+ applymovement 255, Route109_Movement_14F670
+ waitmovement 0
+ addobject 4
clearflag 743
- movespriteperm 2, 12, 8
- reappear 2
- spritelevelup 2, 0, 11, 0
- move 2, Route109_Movement_14F67D
- waitmove 0
+ setobjectxyperm 2, 12, 8
+ addobject 2
+ setobjectpriority 2, 0, 11, 0
+ applymovement 2, Route109_Movement_14F67D
+ waitmovement 0
clearflag 740
setflag 744
- spriteinvisible 1, 0, 24
+ hideobject 1, 0, 24
msgbox Route109_Text_16B4B5, 4
- closebutton
+ closemessage
copyvar 0x4096, 0x8008
- restorespritelevel 255, 0, 24
- restorespritelevel 2, 0, 11
- moveoffscreen 2
+ resetobjectpriority 255, 0, 24
+ resetobjectpriority 2, 0, 11
+ moveobjectoffscreen 2
release
end
@@ -272,22 +272,22 @@ Route109_EventScript_14F680:: @ 814F680
lock
faceplayer
checkflag 149
- jumpif 0, Route109_EventScript_14F691
- jump Route109_EventScript_14F6AF
+ goto_if 0, Route109_EventScript_14F691
+ goto Route109_EventScript_14F6AF
end
Route109_EventScript_14F691:: @ 814F691
message Route109_Text_16E0F9
msgbox Route109_Text_16E0F9, 5
compare RESULT, 0
- jumpeq Route109_EventScript_14F6F1
- jump Route109_EventScript_14F6E2
+ goto_if_eq Route109_EventScript_14F6F1
+ goto Route109_EventScript_14F6E2
end
Route109_EventScript_14F6AF:: @ 814F6AF
message Route109_Text_16E26A
- waittext
- multichoicedef 21, 8, 14, 1, 0
+ waitmessage
+ multichoicedefault 21, 8, 14, 1, 0
switch RESULT
case 0, Route109_EventScript_14F6E2
case 1, Route109_EventScript_14F6FB
@@ -296,8 +296,8 @@ Route109_EventScript_14F6AF:: @ 814F6AF
Route109_EventScript_14F6E2:: @ 814F6E2
msgbox Route109_Text_16E159, 4
- closebutton
- jump Route109_EventScript_14F4D3
+ closemessage
+ goto Route109_EventScript_14F4D3
end
Route109_EventScript_14F6F1:: @ 814F6F1
@@ -318,9 +318,9 @@ Route109_EventScript_14F70E:: @ 814F70E
lock
faceplayer
msgbox Route109_Text_16E405, 4
- closebutton
- move LAST_TALKED, Route109_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, Route109_Movement_1A083D
+ waitmovement 0
release
end
@@ -329,22 +329,22 @@ Route109_EventScript_14F725:: @ 814F725
faceplayer
special GetPlayerBigGuyGirlString
checkflag 280
- jumpeq Route109_EventScript_14F762
+ goto_if_eq Route109_EventScript_14F762
msgbox Route109_Text_16E433, 4
giveitem ITEM_SOFT_SAND
compare RESULT, 0
- jumpeq Route109_EventScript_1A029B
- closebutton
- move LAST_TALKED, Route109_Movement_1A083D
- waitmove 0
+ goto_if_eq Route109_EventScript_1A029B
+ closemessage
+ applymovement LAST_TALKED, Route109_Movement_1A083D
+ waitmovement 0
setflag 280
release
end
Route109_EventScript_14F762:: @ 814F762
msgbox Route109_Text_16E446, 4
- move LAST_TALKED, Route109_Movement_1A083D
- waitmove 0
+ applymovement LAST_TALKED, Route109_Movement_1A083D
+ waitmovement 0
release
end
@@ -359,8 +359,8 @@ Route109_EventScript_14F77F:: @ 814F77F
Route109_EventScript_14F788:: @ 814F788
lock
faceplayer
- checksound
- pokecry SPECIES_ZIGZAGOON, 0
+ waitse
+ playpokecry SPECIES_ZIGZAGOON, 0
msgbox Route109_Text_16E5CA, 4
waitpokecry
release
@@ -396,9 +396,9 @@ Route109_EventScript_14F7F2:: @ 814F7F2
Route109_EventScript_14F809:: @ 814F809
trainerbattle 0, OPPONENT_RICKY_1, 0, Route109_Text_1B9C23, Route109_Text_1B9C65
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route109_EventScript_14F830
+ goto_if_eq Route109_EventScript_14F830
msgbox Route109_Text_1B9C6E, 6
end
@@ -409,9 +409,9 @@ Route109_EventScript_14F830:: @ 814F830
Route109_EventScript_14F847:: @ 814F847
trainerbattle 0, OPPONENT_LOLA_1, 0, Route109_Text_1B9D54, Route109_Text_1B9D87
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route109_EventScript_14F86E
+ goto_if_eq Route109_EventScript_14F86E
msgbox Route109_Text_1B9D8E, 6
end
diff --git a/data/scripts/maps/Route109_SeashoreHouse.inc b/data/scripts/maps/Route109_SeashoreHouse.inc
index e1d9c380b..4d8d363aa 100644
--- a/data/scripts/maps/Route109_SeashoreHouse.inc
+++ b/data/scripts/maps/Route109_SeashoreHouse.inc
@@ -10,11 +10,11 @@ Route109_SeashoreHouse_EventScript_160DD4:: @ 8160DD4
lock
faceplayer
checkflag 140
- jumpeq Route109_SeashoreHouse_EventScript_160E36
+ goto_if_eq Route109_SeashoreHouse_EventScript_160E36
checkflag 141
- jumpeq Route109_SeashoreHouse_EventScript_160E08
+ goto_if_eq Route109_SeashoreHouse_EventScript_160E08
checkflag 2
- jumpeq Route109_SeashoreHouse_EventScript_160DFE
+ goto_if_eq Route109_SeashoreHouse_EventScript_160DFE
msgbox Route109_SeashoreHouse_Text_19B4D9, 4
setflag 2
release
@@ -29,7 +29,7 @@ Route109_SeashoreHouse_EventScript_160E08:: @ 8160E08
msgbox Route109_SeashoreHouse_Text_19B609, 4
giveitem ITEM_SODA_POP, 6
compare RESULT, 0
- jumpeq Route109_SeashoreHouse_EventScript_160E2C
+ goto_if_eq Route109_SeashoreHouse_EventScript_160E2C
setflag 140
release
end
@@ -40,41 +40,41 @@ Route109_SeashoreHouse_EventScript_160E2C:: @ 8160E2C
end
Route109_SeashoreHouse_EventScript_160E36:: @ 8160E36
- showmoney 0, 0
- snop
+ showmoneybox 0, 0
+ nop
msgbox Route109_SeashoreHouse_Text_19B702, 5
compare RESULT, 1
- jumpeq Route109_SeashoreHouse_EventScript_160E5A
+ goto_if_eq Route109_SeashoreHouse_EventScript_160E5A
msgbox Route109_SeashoreHouse_Text_19B773, 4
- hidemoney 0, 0
+ hidemoneybox 0, 0
release
end
Route109_SeashoreHouse_EventScript_160E5A:: @ 8160E5A
checkmoney 0x12c, 0
compare RESULT, 0
- jumpeq Route109_SeashoreHouse_EventScript_160E9E
+ goto_if_eq Route109_SeashoreHouse_EventScript_160E9E
checkitemspace ITEM_SODA_POP, 1
compare RESULT, 0
- jumpeq Route109_SeashoreHouse_EventScript_160EAB
+ goto_if_eq Route109_SeashoreHouse_EventScript_160EAB
msgbox Route109_SeashoreHouse_Text_19B74C, 4
- paymoney 0x12c, 0
- updatemoney 0, 0
- snop
+ takemoney 0x12c, 0
+ updatemoneybox 0, 0
+ nop
giveitem ITEM_SODA_POP
- hidemoney 0, 0
+ hidemoneybox 0, 0
release
end
Route109_SeashoreHouse_EventScript_160E9E:: @ 8160E9E
msgbox Route109_SeashoreHouse_Text_19B759, 4
- hidemoney 0, 0
+ hidemoneybox 0, 0
release
end
Route109_SeashoreHouse_EventScript_160EAB:: @ 8160EAB
msgbox Route109_SeashoreHouse_Text_1A0CC2, 4
- hidemoney 0, 0
+ hidemoneybox 0, 0
release
end
@@ -95,11 +95,11 @@ Route109_SeashoreHouse_EventScript_160EEE:: @ 8160EEE
Route109_SeashoreHouse_EventScript_160F09:: @ 8160F09
checktrainerflag OPPONENT_DWAYNE
- jumpif 0, Route109_SeashoreHouse_EventScript_160F29
+ goto_if 0, Route109_SeashoreHouse_EventScript_160F29
checktrainerflag OPPONENT_JOHANNA
- jumpif 0, Route109_SeashoreHouse_EventScript_160F29
+ goto_if 0, Route109_SeashoreHouse_EventScript_160F29
checktrainerflag OPPONENT_SIMON
- jumpif 0, Route109_SeashoreHouse_EventScript_160F29
+ goto_if 0, Route109_SeashoreHouse_EventScript_160F29
setflag 141
release
end
diff --git a/data/scripts/maps/Route110.inc b/data/scripts/maps/Route110.inc
index d8c19d92c..146be5959 100644
--- a/data/scripts/maps/Route110.inc
+++ b/data/scripts/maps/Route110.inc
@@ -13,11 +13,11 @@ Route110_MapScript1_14F914:: @ 814F914
call Route110_EventScript_1A014E
call Route110_EventScript_1A0172
compare 0x40a9, 1
- callif 1, Route110_EventScript_14F92F
+ call_if 1, Route110_EventScript_14F92F
end
Route110_EventScript_14F92F:: @ 814F92F
- playmusicbattle 403 @ Bicycle music
+ savebgm 403 @ Bicycle music
return
Route110_MapScript2_14F933:: @ 814F933
@@ -25,7 +25,7 @@ Route110_MapScript2_14F933:: @ 814F933
.2byte 0
Route110_EventScript_14F93D:: @ 814F93D
- special BeginCyclingRoadChallenge
+ special ScrSpecial_BeginCyclingRoadChallenge
setvar 0x40a9, 2
return
@@ -33,8 +33,8 @@ Route110_EventScript_14F946:: @ 814F946
lock
faceplayer
msgbox Route110_Text_16E6C0, 4
- move LAST_TALKED, Route110_Movement_1A083D
- waitmove 0
+ applymovement LAST_TALKED, Route110_Movement_1A083D
+ waitmovement 0
release
end
@@ -42,8 +42,8 @@ Route110_EventScript_14F95C:: @ 814F95C
lock
faceplayer
msgbox Route110_Text_16E6F2, 4
- move LAST_TALKED, Route110_Movement_1A083D
- waitmove 0
+ applymovement LAST_TALKED, Route110_Movement_1A083D
+ waitmovement 0
release
end
@@ -51,8 +51,8 @@ Route110_EventScript_14F972:: @ 814F972
lock
faceplayer
msgbox Route110_Text_16E729, 4
- move LAST_TALKED, Route110_Movement_1A083D
- waitmove 0
+ applymovement LAST_TALKED, Route110_Movement_1A083D
+ waitmovement 0
release
end
@@ -60,8 +60,8 @@ Route110_EventScript_14F988:: @ 814F988
lock
faceplayer
msgbox Route110_Text_16E76A, 4
- move LAST_TALKED, Route110_Movement_1A083D
- waitmove 0
+ applymovement LAST_TALKED, Route110_Movement_1A083D
+ waitmovement 0
release
end
@@ -131,9 +131,9 @@ Route110_EventScript_14FA25:: @ 814FA25
Route110_EventScript_14FA2E:: @ 814FA2E
lockall
- specialval RESULT, GetRecordedCyclingRoadResults
+ specialvar RESULT, GetRecordedCyclingRoadResults
compare RESULT, 0
- jumpeq Route110_EventScript_14FA49
+ goto_if_eq Route110_EventScript_14FA49
msgbox Route110_Text_16F53A, 4
releaseall
end
@@ -146,11 +146,11 @@ Route110_EventScript_14FA49:: @ 814FA49
Route110_EventScript_14FA53:: @ 814FA53
lock
faceplayer
- specialval RESULT, GetPlayerAvatarBike
+ specialvar RESULT, GetPlayerAvatarBike
compare RESULT, 1
- jumpeq Route110_EventScript_14FA84
+ goto_if_eq Route110_EventScript_14FA84
compare 0x40a9, 0
- jumpeq Route110_EventScript_14FA7A
+ goto_if_eq Route110_EventScript_14FA7A
msgbox Route110_Text_16F26A, 4
release
end
@@ -177,9 +177,9 @@ Route110_EventScript_14FAA5:: @ 814FAA5
Route110_EventScript_14FABC:: @ 814FABC
trainerbattle 0, OPPONENT_EDWIN_1, 0, Route110_Text_1BA7D2, Route110_Text_1BA803
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route110_EventScript_14FAE3
+ goto_if_eq Route110_EventScript_14FAE3
msgbox Route110_Text_1BA829, 6
end
@@ -205,9 +205,9 @@ Route110_EventScript_14FB28:: @ 814FB28
Route110_EventScript_14FB3F:: @ 814FB3F
trainerbattle 0, OPPONENT_BENJAMIN_1, 0, Route110_Text_1BA352, Route110_Text_1BA379
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route110_EventScript_14FB66
+ goto_if_eq Route110_EventScript_14FB66
msgbox Route110_Text_1BA3A5, 6
end
@@ -223,9 +223,9 @@ Route110_EventScript_14FB7D:: @ 814FB7D
Route110_EventScript_14FB94:: @ 814FB94
trainerbattle 0, OPPONENT_ABIGAIL_1, 0, Route110_Text_1BA4A0, Route110_Text_1BA50F
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route110_EventScript_14FBBB
+ goto_if_eq Route110_EventScript_14FBBB
msgbox Route110_Text_1BA52E, 6
end
@@ -236,9 +236,9 @@ Route110_EventScript_14FBBB:: @ 814FBBB
Route110_EventScript_14FBD2:: @ 814FBD2
trainerbattle 0, OPPONENT_ISABEL_1, 0, Route110_Text_1BA990, Route110_Text_1BA9D0
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route110_EventScript_14FBF9
+ goto_if_eq Route110_EventScript_14FBF9
msgbox Route110_Text_1BA9E9, 6
end
@@ -254,8 +254,8 @@ Route110_EventScript_14FC10:: @ 814FC10
Route110_EventScript_14FC27:: @ 814FC27
lockall
- move 21, Route110_Movement_1A0843
- waitmove 0
+ applymovement 21, Route110_Movement_1A0843
+ waitmovement 0
call Route110_EventScript_14FC39
releaseall
end
@@ -279,84 +279,84 @@ Route110_EventScript_14FC39:: @ 814FC39
Route110_EventScript_14FCC3:: @ 814FCC3
msgbox Route110_Text_16EF9F, 4
- jump Route110_EventScript_14FD09
+ goto Route110_EventScript_14FD09
end
Route110_EventScript_14FCD1:: @ 814FCD1
msgbox Route110_Text_16F012, 4
- jump Route110_EventScript_14FD09
+ goto Route110_EventScript_14FD09
end
Route110_EventScript_14FCDF:: @ 814FCDF
msgbox Route110_Text_16F069, 4
- jump Route110_EventScript_14FD09
+ goto Route110_EventScript_14FD09
end
Route110_EventScript_14FCED:: @ 814FCED
msgbox Route110_Text_16F0D0, 4
- jump Route110_EventScript_14FD09
+ goto Route110_EventScript_14FD09
end
Route110_EventScript_14FCFB:: @ 814FCFB
msgbox Route110_Text_16F139, 4
- jump Route110_EventScript_14FD09
+ goto Route110_EventScript_14FD09
end
Route110_EventScript_14FD09:: @ 814FD09
setvar 0x40a9, 3
- playmusicbattle 0
- fadedefault
+ savebgm 0
+ fadedefaultbgm
return
Route110_EventScript_14FD13:: @ 814FD13
setvar 0x8008, 1
- jump Route110_EventScript_14FD34
+ goto Route110_EventScript_14FD34
end
Route110_EventScript_14FD1E:: @ 814FD1E
setvar 0x8008, 2
- jump Route110_EventScript_14FD34
+ goto Route110_EventScript_14FD34
end
Route110_EventScript_14FD29:: @ 814FD29
setvar 0x8008, 3
- jump Route110_EventScript_14FD34
+ goto Route110_EventScript_14FD34
end
Route110_EventScript_14FD34:: @ 814FD34
lockall
- checkgender
+ checkplayergender
compare RESULT, 0
- callif 1, Route110_EventScript_14FDA7
+ call_if 1, Route110_EventScript_14FDA7
compare RESULT, 1
- callif 1, Route110_EventScript_14FDAC
- move 28, Route110_Movement_1A0845
- waitmove 0
- move 28, Route110_Movement_1A0833
- waitmove 0
- move 28, Route110_Movement_1A0835
- waitmove 0
- pause 30
+ call_if 1, Route110_EventScript_14FDAC
+ applymovement 28, Route110_Movement_1A0845
+ waitmovement 0
+ applymovement 28, Route110_Movement_1A0833
+ waitmovement 0
+ applymovement 28, Route110_Movement_1A0835
+ waitmovement 0
+ delay 30
compare 0x8008, 1
- callif 1, Route110_EventScript_14FF14
+ call_if 1, Route110_EventScript_14FF14
compare 0x8008, 2
- callif 1, Route110_EventScript_14FF1F
+ call_if 1, Route110_EventScript_14FF1F
compare 0x8008, 3
- callif 1, Route110_EventScript_14FF2A
- checkgender
+ call_if 1, Route110_EventScript_14FF2A
+ checkplayergender
compare RESULT, 0
- jumpeq Route110_EventScript_14FDB1
+ goto_if_eq Route110_EventScript_14FDB1
compare RESULT, 1
- jumpeq Route110_EventScript_14FE2B
+ goto_if_eq Route110_EventScript_14FE2B
releaseall
end
Route110_EventScript_14FDA7:: @ 814FDA7
- playmusic 415, 1
+ playbgm 415, 1
return
Route110_EventScript_14FDAC:: @ 814FDAC
- playmusic 421, 1
+ playbgm 421, 1
return
Route110_EventScript_14FDB1:: @ 814FDB1
@@ -369,24 +369,24 @@ Route110_EventScript_14FDB1:: @ 814FDB1
Route110_EventScript_14FDE0:: @ 814FDE0
trainerbattle 3, OPPONENT_MAY_5, 0, Route110_Text_16E826
- jump Route110_EventScript_14FE10
+ goto Route110_EventScript_14FE10
end
Route110_EventScript_14FDF0:: @ 814FDF0
trainerbattle 3, OPPONENT_MAY_8, 0, Route110_Text_16E826
- jump Route110_EventScript_14FE10
+ goto Route110_EventScript_14FE10
end
Route110_EventScript_14FE00:: @ 814FE00
trainerbattle 3, OPPONENT_MAY_2, 0, Route110_Text_16E826
- jump Route110_EventScript_14FE10
+ goto Route110_EventScript_14FE10
end
Route110_EventScript_14FE10:: @ 814FE10
msgbox Route110_Text_16E84C, 4
call Route110_EventScript_14FEA5
msgbox Route110_Text_16E8B3, 4
- jump Route110_EventScript_14FEB2
+ goto Route110_EventScript_14FEB2
end
Route110_EventScript_14FE2B:: @ 814FE2B
@@ -399,24 +399,24 @@ Route110_EventScript_14FE2B:: @ 814FE2B
Route110_EventScript_14FE5A:: @ 814FE5A
trainerbattle 3, OPPONENT_BRENDAN_5, 0, Route110_Text_16EA0F
- jump Route110_EventScript_14FE8A
+ goto Route110_EventScript_14FE8A
end
Route110_EventScript_14FE6A:: @ 814FE6A
trainerbattle 3, OPPONENT_BRENDAN_8, 0, Route110_Text_16EA0F
- jump Route110_EventScript_14FE8A
+ goto Route110_EventScript_14FE8A
end
Route110_EventScript_14FE7A:: @ 814FE7A
trainerbattle 3, OPPONENT_BRENDAN_2, 0, Route110_Text_16EA0F
- jump Route110_EventScript_14FE8A
+ goto Route110_EventScript_14FE8A
end
Route110_EventScript_14FE8A:: @ 814FE8A
msgbox Route110_Text_16EA2A, 4
call Route110_EventScript_14FEA5
msgbox Route110_Text_16EA7B, 4
- jump Route110_EventScript_14FEB2
+ goto Route110_EventScript_14FEB2
end
Route110_EventScript_14FEA5:: @ 814FEA5
@@ -424,71 +424,71 @@ Route110_EventScript_14FEA5:: @ 814FEA5
return
Route110_EventScript_14FEB2:: @ 814FEB2
- closebutton
+ closemessage
compare 0x8008, 1
- callif 1, Route110_EventScript_14FF56
+ call_if 1, Route110_EventScript_14FF56
compare 0x8008, 2
- callif 1, Route110_EventScript_14FF5E
+ call_if 1, Route110_EventScript_14FF5E
compare 0x8008, 3
- callif 1, Route110_EventScript_14FF66
- spritebehave 28, 10
- spritebehave 29, 10
- disappear 28
- reappear 29
- pause 45
+ call_if 1, Route110_EventScript_14FF66
+ setobjectmovementtype 28, 10
+ setobjectmovementtype 29, 10
+ removeobject 28
+ addobject 29
+ delay 45
compare 0x8008, 1
- callif 1, Route110_EventScript_14FF35
+ call_if 1, Route110_EventScript_14FF35
compare 0x8008, 2
- callif 1, Route110_EventScript_14FF40
+ call_if 1, Route110_EventScript_14FF40
compare 0x8008, 3
- callif 1, Route110_EventScript_14FF4B
- disappear 29
+ call_if 1, Route110_EventScript_14FF4B
+ removeobject 29
setvar 0x4069, 1
- playmusicbattle 0
- fadedefault
+ savebgm 0
+ fadedefaultbgm
releaseall
end
Route110_EventScript_14FF14:: @ 814FF14
- move 28, Route110_Movement_14FF6E
- waitmove 0
+ applymovement 28, Route110_Movement_14FF6E
+ waitmovement 0
return
Route110_EventScript_14FF1F:: @ 814FF1F
- move 28, Route110_Movement_14FF72
- waitmove 0
+ applymovement 28, Route110_Movement_14FF72
+ waitmovement 0
return
Route110_EventScript_14FF2A:: @ 814FF2A
- move 28, Route110_Movement_14FF74
- waitmove 0
+ applymovement 28, Route110_Movement_14FF74
+ waitmovement 0
return
Route110_EventScript_14FF35:: @ 814FF35
- move 29, Route110_Movement_14FF78
- waitmove 0
+ applymovement 29, Route110_Movement_14FF78
+ waitmovement 0
return
Route110_EventScript_14FF40:: @ 814FF40
- move 29, Route110_Movement_14FF80
- waitmove 0
+ applymovement 29, Route110_Movement_14FF80
+ waitmovement 0
return
Route110_EventScript_14FF4B:: @ 814FF4B
- move 29, Route110_Movement_14FF89
- waitmove 0
+ applymovement 29, Route110_Movement_14FF89
+ waitmovement 0
return
Route110_EventScript_14FF56:: @ 814FF56
- movespriteperm 29, 33, 55
+ setobjectxyperm 29, 33, 55
return
Route110_EventScript_14FF5E:: @ 814FF5E
- movespriteperm 29, 34, 55
+ setobjectxyperm 29, 34, 55
return
Route110_EventScript_14FF66:: @ 814FF66
- movespriteperm 29, 35, 55
+ setobjectxyperm 29, 35, 55
return
Route110_Movement_14FF6E:: @ 814FF6E
diff --git a/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc b/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc
index 96e492b39..c60bc366e 100644
--- a/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc
+++ b/data/scripts/maps/Route110_SeasideCyclingRoadNorthEntrance.inc
@@ -4,9 +4,9 @@ Route110_SeasideCyclingRoadNorthEntrance_MapScripts:: @ 81634C8
Route110_SeasideCyclingRoadNorthEntrance_MapScript1_1634CE:: @ 81634CE
compare 0x40a9, 3
- callif 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5
+ call_if 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5
compare 0x40a9, 2
- callif 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5
+ call_if 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5
end
Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634E5:: @ 81634E5
@@ -23,11 +23,11 @@ Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634EB:: @ 81634EB
Route110_SeasideCyclingRoadNorthEntrance_EventScript_1634F7:: @ 81634F7
@ Coord event directly in front of the gatesman heading left to right
lockall
- specialval RESULT, GetPlayerAvatarBike @ player state?
+ specialvar RESULT, GetPlayerAvatarBike @ player state?
compare RESULT, 2
- callif 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_16351D
+ call_if 1, Route110_SeasideCyclingRoadNorthEntrance_EventScript_16351D
compare RESULT, 0
- jumpeq Route110_SeasideCyclingRoadNorthEntrance_EventScript_163523
+ goto_if_eq Route110_SeasideCyclingRoadNorthEntrance_EventScript_163523
setflag 2091
setvar 0x4001, 1
releaseall
@@ -41,9 +41,9 @@ Route110_SeasideCyclingRoadNorthEntrance_EventScript_16351D:: @ 816351D
Route110_SeasideCyclingRoadNorthEntrance_EventScript_163523:: @ 8163523
@ You don't have a bike!
msgbox Route110_SeasideCyclingRoadNorthEntrance_Text_19E3AD, 4
- closebutton
- move 255, Route110_SeasideCyclingRoadNorthEntrance_Movement_163538
- waitmove 0
+ closemessage
+ applymovement 255, Route110_SeasideCyclingRoadNorthEntrance_Movement_163538
+ waitmovement 0
releaseall
end
diff --git a/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc b/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc
index 08d6fb5f1..cf18a8e36 100644
--- a/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc
+++ b/data/scripts/maps/Route110_SeasideCyclingRoadSouthEntrance.inc
@@ -10,9 +10,9 @@ Route110_SeasideCyclingRoadSouthEntrance_EventScript_16347F:: @ 816347F
Route110_SeasideCyclingRoadSouthEntrance_EventScript_16348B:: @ 816348B
lockall
- specialval RESULT, GetPlayerAvatarBike
+ specialvar RESULT, GetPlayerAvatarBike
compare RESULT, 0
- jumpeq Route110_SeasideCyclingRoadSouthEntrance_EventScript_1634A6
+ goto_if_eq Route110_SeasideCyclingRoadSouthEntrance_EventScript_1634A6
setflag 2091
setvar 0x4001, 1
releaseall
@@ -20,9 +20,9 @@ Route110_SeasideCyclingRoadSouthEntrance_EventScript_16348B:: @ 816348B
Route110_SeasideCyclingRoadSouthEntrance_EventScript_1634A6:: @ 81634A6
msgbox Route110_SeasideCyclingRoadSouthEntrance_Text_19E3AD, 4
- closebutton
- move 255, Route110_SeasideCyclingRoadSouthEntrance_Movement_1634BB
- waitmove 0
+ closemessage
+ applymovement 255, Route110_SeasideCyclingRoadSouthEntrance_Movement_1634BB
+ waitmovement 0
releaseall
end
diff --git a/data/scripts/maps/Route110_TrickHouseEnd.inc b/data/scripts/maps/Route110_TrickHouseEnd.inc
index 10e1a6865..12309207c 100644
--- a/data/scripts/maps/Route110_TrickHouseEnd.inc
+++ b/data/scripts/maps/Route110_TrickHouseEnd.inc
@@ -7,7 +7,7 @@ Route110_TrickHouseEnd_MapScripts:: @ 8161936
Route110_TrickHouseEnd_MapScript1_16194B:: @ 816194B
compare 0x4001, 1
- callif 1, Route110_TrickHouseEnd_EventScript_161994
+ call_if 1, Route110_TrickHouseEnd_EventScript_161994
end
Route110_TrickHouseEnd_MapScript1_161957:: @ 8161957
@@ -21,9 +21,9 @@ Route110_TrickHouseEnd_MapScript2_161965:: @ 8161965
.2byte 0
Route110_TrickHouseEnd_EventScript_16196F:: @ 816196F
- reappear 1
- spritevisible 1, 29, 1
- spriteface 1, 4
+ addobject 1
+ showobject 1, 29, 1
+ turnobject 1, 4
end
Route110_TrickHouseEnd_MapScript2_16197C:: @ 816197C
@@ -62,9 +62,9 @@ Route110_TrickHouseEnd_EventScript_161A0B:: @ 8161A0B
setvar 0x40c1, 0
giveitem ITEM_RARE_CANDY
compare RESULT, 0
- callif 1, Route110_TrickHouseEnd_EventScript_161C4E
+ call_if 1, Route110_TrickHouseEnd_EventScript_161C4E
msgbox Route110_TrickHouseEnd_Text_19C9BD, 4
- closebutton
+ closemessage
call Route110_TrickHouseEnd_EventScript_161C2E
release
end
@@ -75,9 +75,9 @@ Route110_TrickHouseEnd_EventScript_161A47:: @ 8161A47
setvar 0x40c1, 0
giveitem ITEM_TIMER_BALL
compare RESULT, 0
- callif 1, Route110_TrickHouseEnd_EventScript_161C4E
+ call_if 1, Route110_TrickHouseEnd_EventScript_161C4E
msgbox Route110_TrickHouseEnd_Text_19C9BD, 4
- closebutton
+ closemessage
call Route110_TrickHouseEnd_EventScript_161C2E
release
end
@@ -88,9 +88,9 @@ Route110_TrickHouseEnd_EventScript_161A83:: @ 8161A83
setvar 0x40c1, 0
giveitem ITEM_HARD_STONE
compare RESULT, 0
- callif 1, Route110_TrickHouseEnd_EventScript_161C4E
+ call_if 1, Route110_TrickHouseEnd_EventScript_161C4E
msgbox Route110_TrickHouseEnd_Text_19C9BD, 4
- closebutton
+ closemessage
call Route110_TrickHouseEnd_EventScript_161C2E
release
end
@@ -101,9 +101,9 @@ Route110_TrickHouseEnd_EventScript_161ABF:: @ 8161ABF
setvar 0x40c1, 0
giveitem ITEM_SMOKE_BALL
compare RESULT, 0
- callif 1, Route110_TrickHouseEnd_EventScript_161C4E
+ call_if 1, Route110_TrickHouseEnd_EventScript_161C4E
msgbox Route110_TrickHouseEnd_Text_19C9BD, 4
- closebutton
+ closemessage
call Route110_TrickHouseEnd_EventScript_161C2E
release
end
@@ -114,9 +114,9 @@ Route110_TrickHouseEnd_EventScript_161AFB:: @ 8161AFB
setvar 0x40c1, 0
giveitem ITEM_TM12
compare RESULT, 0
- callif 1, Route110_TrickHouseEnd_EventScript_161C4E
+ call_if 1, Route110_TrickHouseEnd_EventScript_161C4E
msgbox Route110_TrickHouseEnd_Text_19C9BD, 4
- closebutton
+ closemessage
call Route110_TrickHouseEnd_EventScript_161C2E
release
end
@@ -127,9 +127,9 @@ Route110_TrickHouseEnd_EventScript_161B37:: @ 8161B37
setvar 0x40c1, 0
giveitem ITEM_MAGNET
compare RESULT, 0
- callif 1, Route110_TrickHouseEnd_EventScript_161C4E
+ call_if 1, Route110_TrickHouseEnd_EventScript_161C4E
msgbox Route110_TrickHouseEnd_Text_19C9BD, 4
- closebutton
+ closemessage
call Route110_TrickHouseEnd_EventScript_161C2E
release
end
@@ -140,30 +140,30 @@ Route110_TrickHouseEnd_EventScript_161B73:: @ 8161B73
setvar 0x40c1, 0
giveitem ITEM_PP_MAX
compare RESULT, 0
- callif 1, Route110_TrickHouseEnd_EventScript_161C4E
+ call_if 1, Route110_TrickHouseEnd_EventScript_161C4E
msgbox Route110_TrickHouseEnd_Text_19C9BD, 4
- closebutton
+ closemessage
call Route110_TrickHouseEnd_EventScript_161C2E
release
end
Route110_TrickHouseEnd_EventScript_161BAF:: @ 8161BAF
msgbox Route110_TrickHouseEnd_Text_19C5AF, 4
- closebutton
+ closemessage
compare FACING, 1
- callif 1, Route110_TrickHouseEnd_EventScript_161C74
+ call_if 1, Route110_TrickHouseEnd_EventScript_161C74
compare FACING, 2
- callif 1, Route110_TrickHouseEnd_EventScript_161C7F
+ call_if 1, Route110_TrickHouseEnd_EventScript_161C7F
compare FACING, 3
- callif 1, Route110_TrickHouseEnd_EventScript_161C8A
+ call_if 1, Route110_TrickHouseEnd_EventScript_161C8A
compare FACING, 4
- callif 1, Route110_TrickHouseEnd_EventScript_161C95
- pause 30
+ call_if 1, Route110_TrickHouseEnd_EventScript_161C95
+ delay 30
msgbox Route110_TrickHouseEnd_Text_19C602, 4
- closebutton
- move 1, Route110_TrickHouseEnd_Movement_1A0839
- waitmove 0
- pause 30
+ closemessage
+ applymovement 1, Route110_TrickHouseEnd_Movement_1A0839
+ waitmovement 0
+ delay 30
msgbox Route110_TrickHouseEnd_Text_19C691, 4
setvar 0x40c1, 0
.ifdef SAPPHIRE
@@ -172,7 +172,7 @@ Route110_TrickHouseEnd_EventScript_161BAF:: @ 8161BAF
givedecoration 31
.endc
compare RESULT, 0
- callif 1, Route110_TrickHouseEnd_EventScript_161C61
+ call_if 1, Route110_TrickHouseEnd_EventScript_161C61
msgbox Route110_TrickHouseEnd_Text_19C85C, 4
call Route110_TrickHouseEnd_EventScript_161C2E
special ResetTrickHouseEndRoomFlag
@@ -180,12 +180,12 @@ Route110_TrickHouseEnd_EventScript_161BAF:: @ 8161BAF
end
Route110_TrickHouseEnd_EventScript_161C2E:: @ 8161C2E
- move 1, Route110_TrickHouseEnd_Movement_161315
- waitmove 0
- playsfx 178
- move 1, Route110_TrickHouseEnd_Movement_16131E
- waitmove 0
- disappear 1
+ applymovement 1, Route110_TrickHouseEnd_Movement_161315
+ waitmovement 0
+ playse 178
+ applymovement 1, Route110_TrickHouseEnd_Movement_16131E
+ waitmovement 0
+ removeobject 1
addvar 0x4044, 1
return
@@ -202,43 +202,43 @@ Route110_TrickHouseEnd_EventScript_161C61:: @ 8161C61
return
Route110_TrickHouseEnd_EventScript_161C74:: @ 8161C74
- move 1, Route110_TrickHouseEnd_Movement_1A0845
- waitmove 0
+ applymovement 1, Route110_TrickHouseEnd_Movement_1A0845
+ waitmovement 0
return
Route110_TrickHouseEnd_EventScript_161C7F:: @ 8161C7F
- move 1, Route110_TrickHouseEnd_Movement_1A0841
- waitmove 0
+ applymovement 1, Route110_TrickHouseEnd_Movement_1A0841
+ waitmovement 0
return
Route110_TrickHouseEnd_EventScript_161C8A:: @ 8161C8A
- move 1, Route110_TrickHouseEnd_Movement_1A083F
- waitmove 0
+ applymovement 1, Route110_TrickHouseEnd_Movement_1A083F
+ waitmovement 0
return
Route110_TrickHouseEnd_EventScript_161C95:: @ 8161C95
- move 1, Route110_TrickHouseEnd_Movement_1A0843
- waitmove 0
+ applymovement 1, Route110_TrickHouseEnd_Movement_1A0843
+ waitmovement 0
return
Route110_TrickHouseEnd_EventScript_161CA0:: @ 8161CA0
lockall
- spriteface 1, 3
- playsfx 21
- move 1, Route110_TrickHouseEnd_Movement_1A0833
- waitmove 0
- pause 20
- move 1, Route110_TrickHouseEnd_Movement_161CEA
- waitmove 0
- playsfx 178
- move 255, Route110_TrickHouseEnd_Movement_1A0845
- waitmove 0
+ turnobject 1, 3
+ playse 21
+ applymovement 1, Route110_TrickHouseEnd_Movement_1A0833
+ waitmovement 0
+ delay 20
+ applymovement 1, Route110_TrickHouseEnd_Movement_161CEA
+ waitmovement 0
+ playse 178
+ applymovement 255, Route110_TrickHouseEnd_Movement_1A0845
+ waitmovement 0
msgbox Route110_TrickHouseEnd_Text_19CA8B, 4
- closebutton
- move 255, Route110_TrickHouseEnd_Movement_161CE8
- waitmove 0
- pause 4
- spriteface 1, 4
+ closemessage
+ applymovement 255, Route110_TrickHouseEnd_Movement_161CE8
+ waitmovement 0
+ delay 4
+ turnobject 1, 4
releaseall
end
diff --git a/data/scripts/maps/Route110_TrickHouseEntrance.inc b/data/scripts/maps/Route110_TrickHouseEntrance.inc
index 2601942be..568ba2af6 100644
--- a/data/scripts/maps/Route110_TrickHouseEntrance.inc
+++ b/data/scripts/maps/Route110_TrickHouseEntrance.inc
@@ -7,17 +7,17 @@ Route110_TrickHouseEntrance_MapScripts:: @ 8160F2B
Route110_TrickHouseEntrance_MapScript1_160F3B:: @ 8160F3B
setflag 2114
compare 0x40b5, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_160FCE
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_160FCE
compare 0x40c1, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_160FB2
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_160FB2
compare 0x40a6, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_16108E
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_16108E
compare 0x40a7, 5
- callif 1, Route110_TrickHouseEntrance_EventScript_160FDE
+ call_if 1, Route110_TrickHouseEntrance_EventScript_160FDE
compare 0x40a7, 3
- callif 1, Route110_TrickHouseEntrance_EventScript_160FDE
+ call_if 1, Route110_TrickHouseEntrance_EventScript_160FDE
compare 0x40a7, 0
- callif 1, Route110_TrickHouseEntrance_EventScript_160FDE
+ call_if 1, Route110_TrickHouseEntrance_EventScript_160FDE
switch 0x40a7
case 0, Route110_TrickHouseEntrance_EventScript_16109A
case 1, Route110_TrickHouseEntrance_EventScript_1610A0
@@ -28,7 +28,7 @@ Route110_TrickHouseEntrance_MapScript1_160F3B:: @ 8160F3B
Route110_TrickHouseEntrance_EventScript_160FB2:: @ 8160FB2
setvar 0x40a5, 1
compare 0x4044, 8
- jumpeq Route110_TrickHouseEntrance_EventScript_160FC8
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_160FC8
setvar 0x40a7, 2
end
@@ -45,56 +45,56 @@ Route110_TrickHouseEntrance_EventScript_160FCE:: @ 8160FCE
Route110_TrickHouseEntrance_EventScript_160FDE:: @ 8160FDE
setvar 0x40a7, 0
compare 0x4044, 1
- callif 1, Route110_TrickHouseEntrance_EventScript_16103C
+ call_if 1, Route110_TrickHouseEntrance_EventScript_16103C
compare 0x4044, 2
- callif 1, Route110_TrickHouseEntrance_EventScript_161046
+ call_if 1, Route110_TrickHouseEntrance_EventScript_161046
compare 0x4044, 3
- callif 1, Route110_TrickHouseEntrance_EventScript_161050
+ call_if 1, Route110_TrickHouseEntrance_EventScript_161050
compare 0x4044, 4
- callif 1, Route110_TrickHouseEntrance_EventScript_16105A
+ call_if 1, Route110_TrickHouseEntrance_EventScript_16105A
compare 0x4044, 5
- callif 1, Route110_TrickHouseEntrance_EventScript_161064
+ call_if 1, Route110_TrickHouseEntrance_EventScript_161064
compare 0x4044, 6
- callif 1, Route110_TrickHouseEntrance_EventScript_16106E
+ call_if 1, Route110_TrickHouseEntrance_EventScript_16106E
compare 0x4044, 7
- callif 1, Route110_TrickHouseEntrance_EventScript_161078
+ call_if 1, Route110_TrickHouseEntrance_EventScript_161078
compare 0x4044, 8
- callif 1, Route110_TrickHouseEntrance_EventScript_161082
+ call_if 1, Route110_TrickHouseEntrance_EventScript_161082
return
Route110_TrickHouseEntrance_EventScript_16103C:: @ 816103C
checkflag 2057
- callif 0, Route110_TrickHouseEntrance_EventScript_161088
+ call_if 0, Route110_TrickHouseEntrance_EventScript_161088
return
Route110_TrickHouseEntrance_EventScript_161046:: @ 8161046
checkflag 2058
- callif 0, Route110_TrickHouseEntrance_EventScript_161088
+ call_if 0, Route110_TrickHouseEntrance_EventScript_161088
return
Route110_TrickHouseEntrance_EventScript_161050:: @ 8161050
checkflag 2059
- callif 0, Route110_TrickHouseEntrance_EventScript_161088
+ call_if 0, Route110_TrickHouseEntrance_EventScript_161088
return
Route110_TrickHouseEntrance_EventScript_16105A:: @ 816105A
checkflag 2060
- callif 0, Route110_TrickHouseEntrance_EventScript_161088
+ call_if 0, Route110_TrickHouseEntrance_EventScript_161088
return
Route110_TrickHouseEntrance_EventScript_161064:: @ 8161064
checkflag 2061
- callif 0, Route110_TrickHouseEntrance_EventScript_161088
+ call_if 0, Route110_TrickHouseEntrance_EventScript_161088
return
Route110_TrickHouseEntrance_EventScript_16106E:: @ 816106E
checkflag 2062
- callif 0, Route110_TrickHouseEntrance_EventScript_161088
+ call_if 0, Route110_TrickHouseEntrance_EventScript_161088
return
Route110_TrickHouseEntrance_EventScript_161078:: @ 8161078
checkflag 2052
- callif 0, Route110_TrickHouseEntrance_EventScript_161088
+ call_if 0, Route110_TrickHouseEntrance_EventScript_161088
return
Route110_TrickHouseEntrance_EventScript_161082:: @ 8161082
@@ -106,8 +106,8 @@ Route110_TrickHouseEntrance_EventScript_161088:: @ 8161088
return
Route110_TrickHouseEntrance_EventScript_16108E:: @ 816108E
- movespriteperm 1, 5, 2
- spritebehave 1, 4
+ setobjectxyperm 1, 5, 2
+ setobjectmovementtype 1, 4
end
Route110_TrickHouseEntrance_EventScript_16109A:: @ 816109A
@@ -138,15 +138,15 @@ Route110_TrickHouseEntrance_MapScript2_1610B2:: @ 81610B2
.2byte 0
Route110_TrickHouseEntrance_EventScript_1610F4:: @ 81610F4
- reappear 1
- spritevisible 1, 29, 0
- spriteface 1, 4
- spriteface 255, 3
+ addobject 1
+ showobject 1, 29, 0
+ turnobject 1, 4
+ turnobject 255, 3
end
Route110_TrickHouseEntrance_EventScript_161105:: @ 8161105
- reappear 1
- spriteinvisible 1, 29, 0
+ addobject 1
+ hideobject 1, 29, 0
switch 0x4044
case 0, Route110_TrickHouseEntrance_EventScript_16116B
case 1, Route110_TrickHouseEntrance_EventScript_161173
@@ -159,51 +159,51 @@ Route110_TrickHouseEntrance_EventScript_161105:: @ 8161105
end
Route110_TrickHouseEntrance_EventScript_16116B:: @ 816116B
- movesprite 1, 6, 3
+ setobjectxy 1, 6, 3
end
Route110_TrickHouseEntrance_EventScript_161173:: @ 8161173
- movesprite 1, 11, 5
+ setobjectxy 1, 11, 5
end
Route110_TrickHouseEntrance_EventScript_16117B:: @ 816117B
- movesprite 1, 11, 1
+ setobjectxy 1, 11, 1
end
Route110_TrickHouseEntrance_EventScript_161183:: @ 8161183
- movesprite 1, 3, 1
+ setobjectxy 1, 3, 1
end
Route110_TrickHouseEntrance_EventScript_16118B:: @ 816118B
- movesprite 1, 0, 5
+ setobjectxy 1, 0, 5
end
Route110_TrickHouseEntrance_EventScript_161193:: @ 8161193
- movesprite 1, 9, 1
+ setobjectxy 1, 9, 1
end
Route110_TrickHouseEntrance_EventScript_16119B:: @ 816119B
- movesprite 1, 8, 1
+ setobjectxy 1, 8, 1
end
Route110_TrickHouseEntrance_EventScript_1611A3:: @ 81611A3
- movesprite 1, 4, 4
+ setobjectxy 1, 4, 4
end
Route110_TrickHouseEntrance_EventScript_1611AB:: @ 81611AB
- disappear 1
+ removeobject 1
end
Route110_TrickHouseEntrance_EventScript_1611AF:: @ 81611AF
- reappear 1
- movesprite 1, 5, 2
- spriteface 1, 2
+ addobject 1
+ setobjectxy 1, 5, 2
+ turnobject 1, 2
end
Route110_TrickHouseEntrance_EventScript_1611BE:: @ 81611BE
- reappear 1
- movesprite 1, 5, 2
- spriteface 1, 1
+ addobject 1
+ setobjectxy 1, 5, 2
+ turnobject 1, 1
end
Route110_TrickHouseEntrance_MapScript2_1611CD:: @ 81611CD
@@ -212,18 +212,18 @@ Route110_TrickHouseEntrance_MapScript2_1611CD:: @ 81611CD
Route110_TrickHouseEntrance_EventScript_1611D7:: @ 81611D7
lockall
- pause 20
+ delay 20
compare 0x4044, 0
- callif 1, Route110_TrickHouseEntrance_EventScript_161327
+ call_if 1, Route110_TrickHouseEntrance_EventScript_161327
msgbox Route110_TrickHouseEntrance_Text_19BD82, 4
- closebutton
- pause 20
- move 1, Route110_TrickHouseEntrance_Movement_161315
- waitmove 0
- playsfx 178
- move 1, Route110_TrickHouseEntrance_Movement_16131E
- waitmove 0
- disappear 1
+ closemessage
+ delay 20
+ applymovement 1, Route110_TrickHouseEntrance_Movement_161315
+ waitmovement 0
+ playse 178
+ applymovement 1, Route110_TrickHouseEntrance_Movement_16131E
+ waitmovement 0
+ removeobject 1
setvar 0x40a7, 1
setvar 0x40a6, 0
releaseall
@@ -243,28 +243,28 @@ Route110_TrickHouseEntrance_EventScript_16121A:: @ 816121A
end
Route110_TrickHouseEntrance_EventScript_16124D:: @ 816124D
- playsfx 21
- move 255, Route110_TrickHouseEntrance_Movement_1A0833
- waitmove 0
- move 255, Route110_TrickHouseEntrance_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement 255, Route110_TrickHouseEntrance_Movement_1A0833
+ waitmovement 0
+ applymovement 255, Route110_TrickHouseEntrance_Movement_1A0835
+ waitmovement 0
compare 0x4044, 0
- callif 1, Route110_TrickHouseEntrance_EventScript_1612CD
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1612CD
compare 0x4044, 1
- callif 1, Route110_TrickHouseEntrance_EventScript_1612D6
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1612D6
compare 0x4044, 2
- callif 1, Route110_TrickHouseEntrance_EventScript_1612DF
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1612DF
compare 0x4044, 3
- callif 1, Route110_TrickHouseEntrance_EventScript_1612E8
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1612E8
compare 0x4044, 4
- callif 1, Route110_TrickHouseEntrance_EventScript_1612F1
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1612F1
compare 0x4044, 5
- callif 1, Route110_TrickHouseEntrance_EventScript_1612FA
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1612FA
compare 0x4044, 6
- callif 1, Route110_TrickHouseEntrance_EventScript_161303
+ call_if 1, Route110_TrickHouseEntrance_EventScript_161303
compare 0x4044, 7
- callif 1, Route110_TrickHouseEntrance_EventScript_16130C
- closebutton
+ call_if 1, Route110_TrickHouseEntrance_EventScript_16130C
+ closemessage
setvar 0x40a6, 1
warp Route110_TrickHouseEntrance, 255, 6, 2
waitstate
@@ -333,46 +333,46 @@ Route110_TrickHouseEntrance_EventScript_161327:: @ 8161327
Route110_TrickHouseEntrance_EventScript_161330:: @ 8161330
msgbox Route110_TrickHouseEntrance_Text_19BF19, 4
- closebutton
- move 1, Route110_TrickHouseEntrance_Movement_1A0839
- waitmove 0
- playsfx 21
- move 1, Route110_TrickHouseEntrance_Movement_1A0833
- waitmove 0
- move 1, Route110_TrickHouseEntrance_Movement_1A0835
- waitmove 0
+ closemessage
+ applymovement 1, Route110_TrickHouseEntrance_Movement_1A0839
+ waitmovement 0
+ playse 21
+ applymovement 1, Route110_TrickHouseEntrance_Movement_1A0833
+ waitmovement 0
+ applymovement 1, Route110_TrickHouseEntrance_Movement_1A0835
+ waitmovement 0
msgbox Route110_TrickHouseEntrance_Text_19BFAB, 4
- move 1, Route110_TrickHouseEntrance_Movement_1A0841
- waitmove 0
+ applymovement 1, Route110_TrickHouseEntrance_Movement_1A0841
+ waitmovement 0
releaseall
end
Route110_TrickHouseEntrance_EventScript_16136E:: @ 816136E
- move 1, Route110_TrickHouseEntrance_Movement_1A0839
- waitmove 0
+ applymovement 1, Route110_TrickHouseEntrance_Movement_1A0839
+ waitmovement 0
msgbox Route110_TrickHouseEntrance_Text_19C07E, 4
compare 0x4044, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_1613CE
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_1613CE
compare 0x4044, 2
- jumpeq Route110_TrickHouseEntrance_EventScript_1613FA
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_1613FA
compare 0x4044, 3
- jumpeq Route110_TrickHouseEntrance_EventScript_161426
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161426
compare 0x4044, 4
- jumpeq Route110_TrickHouseEntrance_EventScript_161452
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161452
compare 0x4044, 5
- jumpeq Route110_TrickHouseEntrance_EventScript_16147E
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_16147E
compare 0x4044, 6
- jumpeq Route110_TrickHouseEntrance_EventScript_1614AA
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_1614AA
compare 0x4044, 7
- jumpeq Route110_TrickHouseEntrance_EventScript_1614D6
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_1614D6
end
Route110_TrickHouseEntrance_EventScript_1613CE:: @ 81613CE
giveitem ITEM_RARE_CANDY
compare RESULT, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_161502
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161502
compare RESULT, 0
- callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5
msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4
releaseall
end
@@ -380,9 +380,9 @@ Route110_TrickHouseEntrance_EventScript_1613CE:: @ 81613CE
Route110_TrickHouseEntrance_EventScript_1613FA:: @ 81613FA
giveitem ITEM_TIMER_BALL
compare RESULT, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_161502
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161502
compare RESULT, 0
- callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5
msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4
releaseall
end
@@ -390,9 +390,9 @@ Route110_TrickHouseEntrance_EventScript_1613FA:: @ 81613FA
Route110_TrickHouseEntrance_EventScript_161426:: @ 8161426
giveitem ITEM_HARD_STONE
compare RESULT, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_161502
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161502
compare RESULT, 0
- callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5
msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4
releaseall
end
@@ -400,9 +400,9 @@ Route110_TrickHouseEntrance_EventScript_161426:: @ 8161426
Route110_TrickHouseEntrance_EventScript_161452:: @ 8161452
giveitem ITEM_SMOKE_BALL
compare RESULT, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_161502
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161502
compare RESULT, 0
- callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5
msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4
releaseall
end
@@ -410,9 +410,9 @@ Route110_TrickHouseEntrance_EventScript_161452:: @ 8161452
Route110_TrickHouseEntrance_EventScript_16147E:: @ 816147E
giveitem ITEM_TM12
compare RESULT, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_161502
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161502
compare RESULT, 0
- callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5
msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4
releaseall
end
@@ -420,9 +420,9 @@ Route110_TrickHouseEntrance_EventScript_16147E:: @ 816147E
Route110_TrickHouseEntrance_EventScript_1614AA:: @ 81614AA
giveitem ITEM_MAGNET
compare RESULT, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_161502
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161502
compare RESULT, 0
- callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5
msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4
releaseall
end
@@ -430,9 +430,9 @@ Route110_TrickHouseEntrance_EventScript_1614AA:: @ 81614AA
Route110_TrickHouseEntrance_EventScript_1614D6:: @ 81614D6
giveitem ITEM_PP_MAX
compare RESULT, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_161502
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161502
compare RESULT, 0
- callif 1, Route110_TrickHouseEntrance_EventScript_1A02A5
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1A02A5
msgbox Route110_TrickHouseEntrance_Text_19C0FC, 4
releaseall
end
@@ -440,14 +440,14 @@ Route110_TrickHouseEntrance_EventScript_1614D6:: @ 81614D6
Route110_TrickHouseEntrance_EventScript_161502:: @ 8161502
setvar 0x40c1, 0
setvar 0x40a7, 3
- move 1, Route110_TrickHouseEntrance_Movement_1A0841
- waitmove 0
+ applymovement 1, Route110_TrickHouseEntrance_Movement_1A0841
+ waitmovement 0
releaseall
end
Route110_TrickHouseEntrance_EventScript_161518:: @ 8161518
- move 1, Route110_TrickHouseEntrance_Movement_1A0839
- waitmove 0
+ applymovement 1, Route110_TrickHouseEntrance_Movement_1A0839
+ waitmovement 0
msgbox Route110_TrickHouseEntrance_Text_19C128, 4
.ifdef SAPPHIRE
givedecoration 32
@@ -455,24 +455,24 @@ Route110_TrickHouseEntrance_EventScript_161518:: @ 8161518
givedecoration 31
.endif
compare RESULT, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_161551
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161551
compare RESULT, 0
- callif 1, Route110_TrickHouseEntrance_EventScript_1A02B8
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1A02B8
msgbox Route110_TrickHouseEntrance_Text_19C18D, 4
releaseall
end
Route110_TrickHouseEntrance_EventScript_161551:: @ 8161551
msgbox Route110_TrickHouseEntrance_Text_19C17E, 4
- closebutton
- move 1, Route110_TrickHouseEntrance_Movement_16309F
- waitmove 0
- move 1, Route110_TrickHouseEntrance_Movement_161315
- waitmove 0
- playsfx 178
- move 1, Route110_TrickHouseEntrance_Movement_16131E
- waitmove 0
- disappear 1
+ closemessage
+ applymovement 1, Route110_TrickHouseEntrance_Movement_16309F
+ waitmovement 0
+ applymovement 1, Route110_TrickHouseEntrance_Movement_161315
+ waitmovement 0
+ playse 178
+ applymovement 1, Route110_TrickHouseEntrance_Movement_16131E
+ waitmovement 0
+ removeobject 1
setvar 0x40c1, 0
setvar 0x40a7, 5
releaseall
@@ -494,20 +494,20 @@ Route110_TrickHouseEntrance_EventScript_1615BD:: @ 81615BD
Route110_TrickHouseEntrance_EventScript_1615C7:: @ 81615C7
msgbox Route110_TrickHouseEntrance_Text_19BE7D, 5
- closebutton
+ closemessage
compare RESULT, 1
- jumpeq Route110_TrickHouseEntrance_EventScript_1615DD
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_1615DD
releaseall
end
Route110_TrickHouseEntrance_EventScript_1615DD:: @ 81615DD
setmaptile 5, 1, 537, 0
special DrawWholeMapView
- pause 20
- move 255, Route110_TrickHouseEntrance_Movement_1A0856
- waitmove 0
- move 255, Route110_TrickHouseEntrance_Movement_16165E
- waitmove 0
+ delay 20
+ applymovement 255, Route110_TrickHouseEntrance_Movement_1A0856
+ waitmovement 0
+ applymovement 255, Route110_TrickHouseEntrance_Movement_16165E
+ waitmovement 0
switch 0x4044
case 0, Route110_TrickHouseEntrance_EventScript_161660
case 1, Route110_TrickHouseEntrance_EventScript_16166B
@@ -578,7 +578,7 @@ Route110_TrickHouseEntrance_EventScript_1616B8:: @ 81616B8
Route110_TrickHouseEntrance_EventScript_1616C2:: @ 81616C2
compare 0x4044, 8
- jumpeq Route110_TrickHouseEntrance_EventScript_1616D7
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_1616D7
msgbox Route110_TrickHouseEntrance_Text_19BE6E, 4
releaseall
end
@@ -603,9 +603,9 @@ gUnknown_081616E1:: @ 81616E1
Route110_TrickHouseEntrance_EventScript_161740:: @ 8161740
compare 0x40AB, 0
- jumpeq Route110_TrickHouseEntrance_EventScript_161888
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161888
msgbox UnknownString_819CAD1, 4
- playsfx SE_PIN
+ playse SE_PIN
setvar 0x40AB, 2
setmaptile 13, 1, 523, 0
special DrawWholeMapView
@@ -614,9 +614,9 @@ Route110_TrickHouseEntrance_EventScript_161740:: @ 8161740
Route110_TrickHouseEntrance_EventScript_161769:: @ 8161769
compare 0x40AC, 0
- jumpeq Route110_TrickHouseEntrance_EventScript_161888
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161888
msgbox UnknownString_819CCCB, 4
- playsfx SE_PIN
+ playse SE_PIN
setvar 0x40AC, 2
setmaptile 13, 1, 523, 0
special DrawWholeMapView
@@ -625,9 +625,9 @@ Route110_TrickHouseEntrance_EventScript_161769:: @ 8161769
Route110_TrickHouseEntrance_EventScript_161792:: @ 8161792
compare 0x40AD, 0
- jumpeq Route110_TrickHouseEntrance_EventScript_161888
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161888
msgbox UnknownString_819CEF9, 4
- playsfx SE_PIN
+ playse SE_PIN
setvar 0x40AD, 2
setmaptile 13, 1, 523, 0
special DrawWholeMapView
@@ -636,9 +636,9 @@ Route110_TrickHouseEntrance_EventScript_161792:: @ 8161792
Route110_TrickHouseEntrance_EventScript_1617BB:: @ 81617BB
compare 0x40AE, 0
- jumpeq Route110_TrickHouseEntrance_EventScript_161888
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161888
msgbox UnknownString_819D164, 4
- playsfx SE_PIN
+ playse SE_PIN
setvar 0x40AE, 2
setmaptile 13, 1, 523, 0
special DrawWholeMapView
@@ -647,9 +647,9 @@ Route110_TrickHouseEntrance_EventScript_1617BB:: @ 81617BB
Route110_TrickHouseEntrance_EventScript_1617E4:: @ 81617E4
compare 0x40AF, 0
- jumpeq Route110_TrickHouseEntrance_EventScript_161888
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161888
msgbox UnknownString_819D3A5, 4
- playsfx SE_PIN
+ playse SE_PIN
setvar 0x40AF, 2
setmaptile 13, 1, 523, 0
special DrawWholeMapView
@@ -658,9 +658,9 @@ Route110_TrickHouseEntrance_EventScript_1617E4:: @ 81617E4
Route110_TrickHouseEntrance_EventScript_16180D:: @ 816180D
compare 0x40B0, 0
- jumpeq Route110_TrickHouseEntrance_EventScript_161888
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161888
msgbox UnknownString_819DC0A, 4
- playsfx SE_PIN
+ playse SE_PIN
setvar 0x40B0, 2
setmaptile 13, 1, 523, 0
special DrawWholeMapView
@@ -669,9 +669,9 @@ Route110_TrickHouseEntrance_EventScript_16180D:: @ 816180D
Route110_TrickHouseEntrance_EventScript_161836:: @ 8161836
compare 0x40B1, 0
- jumpeq Route110_TrickHouseEntrance_EventScript_161888
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161888
msgbox UnknownString_819DE8D, 4
- playsfx SE_PIN
+ playse SE_PIN
setvar 0x40B1, 2
setmaptile 13, 1, 523, 0
special DrawWholeMapView
@@ -680,9 +680,9 @@ Route110_TrickHouseEntrance_EventScript_161836:: @ 8161836
Route110_TrickHouseEntrance_EventScript_16185F:: @ 816185F
compare 0x40B2, 0
- jumpeq Route110_TrickHouseEntrance_EventScript_161888
+ goto_if_eq Route110_TrickHouseEntrance_EventScript_161888
msgbox UnknownString_819E0FF, 4
- playsfx SE_PIN
+ playse SE_PIN
setvar 0x40B2, 2
setmaptile 13, 1, 523, 0
special DrawWholeMapView
@@ -714,10 +714,10 @@ Route110_TrickHousePuzzle5_EventScript_16189C:: @ 816189C
Route110_TrickHousePuzzle6_EventScript_16189C:: @ 816189C
Route110_TrickHousePuzzle7_EventScript_16189C:: @ 816189C
Route110_TrickHousePuzzle8_EventScript_16189C:: @ 816189C
- fanfare 370
+ playfanfare 370
message Route110_TrickHousePuzzle1_Text_19C1B8
waitfanfare
- waittext
+ waitmessage
msgbox Route110_TrickHousePuzzle1_Text_19C1CB, 4
releaseall
end
@@ -727,11 +727,11 @@ Route110_TrickHouseEntrance_EventScript_1618B0:: @ 81618B0
msgbox Route110_TrickHouseEntrance_Text_19BA56, 4
releaseall
compare 0x4044, 0
- callif 1, Route110_TrickHouseEntrance_EventScript_1618E1
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1618E1
compare 0x4044, 1
- callif 1, Route110_TrickHouseEntrance_EventScript_1618F6
+ call_if 1, Route110_TrickHouseEntrance_EventScript_1618F6
compare 0x4044, 2
- callif 1, Route110_TrickHouseEntrance_EventScript_16190B
+ call_if 1, Route110_TrickHouseEntrance_EventScript_16190B
setvar 0x40a5, 1
end
@@ -757,10 +757,10 @@ Route110_TrickHouseEntrance_EventScript_16190B:: @ 816190B
return
Route110_TrickHouseEntrance_EventScript_161920:: @ 8161920
- setanimation 0, 32772
- setanimation 1, 32773
- setanimation 2, 32774
- doanimation 54
- checkanimation 54
- pause 10
+ setfieldeffect 0, 32772
+ setfieldeffect 1, 32773
+ setfieldeffect 2, 32774
+ dofieldeffect 54
+ waitfieldeffect 54
+ delay 10
return
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle1.inc b/data/scripts/maps/Route110_TrickHousePuzzle1.inc
index 6b6d45af2..3a89c2db1 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle1.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle1.inc
@@ -4,7 +4,7 @@ Route110_TrickHousePuzzle1_MapScripts:: @ 8161CF8
Route110_TrickHousePuzzle1_MapScript1_161CFE:: @ 8161CFE
compare 0x40ab, 2
- jumpeq Route110_TrickHousePuzzle1_EventScript_161D0A
+ goto_if_eq Route110_TrickHousePuzzle1_EventScript_161D0A
end
Route110_TrickHousePuzzle1_EventScript_161D0A:: @ 8161D0A
@@ -14,13 +14,13 @@ Route110_TrickHousePuzzle1_EventScript_161D0A:: @ 8161D0A
Route110_TrickHousePuzzle1_EventScript_161D14:: @ 8161D14
lockall
compare 0x40ab, 0
- jumpeq Route110_TrickHousePuzzle1_EventScript_161D26
- jump Route110_TrickHousePuzzle1_EventScript_161892
+ goto_if_eq Route110_TrickHousePuzzle1_EventScript_161D26
+ goto Route110_TrickHousePuzzle1_EventScript_161892
end
Route110_TrickHousePuzzle1_EventScript_161D26:: @ 8161D26
setvar 0x40ab, 1
- jump Route110_TrickHousePuzzle1_EventScript_16189C
+ goto Route110_TrickHousePuzzle1_EventScript_16189C
end
Route110_TrickHousePuzzle1_EventScript_161D31:: @ 8161D31
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle2.inc b/data/scripts/maps/Route110_TrickHousePuzzle2.inc
index 27ffad50d..f71a9611a 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle2.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle2.inc
@@ -5,13 +5,13 @@ Route110_TrickHousePuzzle2_MapScripts:: @ 8161D76
Route110_TrickHousePuzzle2_MapScript1_161D81:: @ 8161D81
compare 0x4001, 1
- callif 1, Route110_TrickHousePuzzle2_EventScript_161E2C
+ call_if 1, Route110_TrickHousePuzzle2_EventScript_161E2C
compare 0x4002, 1
- callif 1, Route110_TrickHousePuzzle2_EventScript_161E3F
+ call_if 1, Route110_TrickHousePuzzle2_EventScript_161E3F
compare 0x4003, 1
- callif 1, Route110_TrickHousePuzzle2_EventScript_161E52
+ call_if 1, Route110_TrickHousePuzzle2_EventScript_161E52
compare 0x4004, 1
- callif 1, Route110_TrickHousePuzzle2_EventScript_161E65
+ call_if 1, Route110_TrickHousePuzzle2_EventScript_161E65
end
Route110_TrickHousePuzzle2_MapScript1_161DAE:: @ 8161DAE
@@ -24,19 +24,19 @@ Route110_TrickHousePuzzle2_MapScript1_161DAE:: @ 8161DAE
Route110_TrickHousePuzzle2_EventScript_161DC3:: @ 8161DC3
lockall
compare 0x40ac, 0
- jumpeq Route110_TrickHousePuzzle2_EventScript_161DD5
- jump Route110_TrickHousePuzzle2_EventScript_161892
+ goto_if_eq Route110_TrickHousePuzzle2_EventScript_161DD5
+ goto Route110_TrickHousePuzzle2_EventScript_161892
end
Route110_TrickHousePuzzle2_EventScript_161DD5:: @ 8161DD5
setvar 0x40ac, 1
- jump Route110_TrickHousePuzzle2_EventScript_16189C
+ goto Route110_TrickHousePuzzle2_EventScript_16189C
end
Route110_TrickHousePuzzle2_EventScript_161DE0:: @ 8161DE0
lockall
setvar 0x4001, 1
- playsfx 21
+ playse 21
call Route110_TrickHousePuzzle2_EventScript_161E2C
special DrawWholeMapView
releaseall
@@ -45,7 +45,7 @@ Route110_TrickHousePuzzle2_EventScript_161DE0:: @ 8161DE0
Route110_TrickHousePuzzle2_EventScript_161DF3:: @ 8161DF3
lockall
setvar 0x4002, 1
- playsfx 21
+ playse 21
call Route110_TrickHousePuzzle2_EventScript_161E3F
special DrawWholeMapView
releaseall
@@ -54,7 +54,7 @@ Route110_TrickHousePuzzle2_EventScript_161DF3:: @ 8161DF3
Route110_TrickHousePuzzle2_EventScript_161E06:: @ 8161E06
lockall
setvar 0x4003, 1
- playsfx 21
+ playse 21
call Route110_TrickHousePuzzle2_EventScript_161E52
special DrawWholeMapView
releaseall
@@ -63,7 +63,7 @@ Route110_TrickHousePuzzle2_EventScript_161E06:: @ 8161E06
Route110_TrickHousePuzzle2_EventScript_161E19:: @ 8161E19
lockall
setvar 0x4004, 1
- playsfx 21
+ playse 21
call Route110_TrickHousePuzzle2_EventScript_161E65
special DrawWholeMapView
releaseall
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle3.inc b/data/scripts/maps/Route110_TrickHousePuzzle3.inc
index efd96ec44..a50ecd3ce 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle3.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle3.inc
@@ -6,9 +6,9 @@ Route110_TrickHousePuzzle3_MapScripts:: @ 8161EBD
Route110_TrickHousePuzzle3_MapScript1_161EC8:: @ 8161EC8
call Route110_TrickHousePuzzle3_EventScript_161F12
compare 0x4009, 0
- callif 1, Route110_TrickHousePuzzle3_EventScript_161FE5
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_161FE5
compare 0x4009, 1
- callif 1, Route110_TrickHousePuzzle3_EventScript_1622C8
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_1622C8
end
Route110_TrickHousePuzzle3_MapScript1_161EE4:: @ 8161EE4
@@ -32,19 +32,19 @@ Route110_TrickHousePuzzle3_EventScript_161F12:: @ 8161F12
setmaptile 1, 3, 600, 0
setmaptile 10, 2, 600, 0
compare 0x4008, 1
- callif 1, Route110_TrickHousePuzzle3_EventScript_161F9F
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_161F9F
compare 0x4008, 2
- callif 1, Route110_TrickHousePuzzle3_EventScript_161FA9
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_161FA9
compare 0x4008, 3
- callif 1, Route110_TrickHousePuzzle3_EventScript_161FB3
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_161FB3
compare 0x4008, 4
- callif 1, Route110_TrickHousePuzzle3_EventScript_161FBD
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_161FBD
compare 0x4008, 5
- callif 1, Route110_TrickHousePuzzle3_EventScript_161FC7
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_161FC7
compare 0x4008, 6
- callif 1, Route110_TrickHousePuzzle3_EventScript_161FD1
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_161FD1
compare 0x4008, 7
- callif 1, Route110_TrickHousePuzzle3_EventScript_161FDB
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_161FDB
return
Route110_TrickHousePuzzle3_EventScript_161F9F:: @ 8161F9F
@@ -248,50 +248,50 @@ Route110_TrickHousePuzzle3_EventScript_1622C8:: @ 81622C8
Route110_TrickHousePuzzle3_EventScript_1625AB:: @ 81625AB
lockall
setvar 0x4008, 1
- jump Route110_TrickHousePuzzle3_EventScript_1625FF
+ goto Route110_TrickHousePuzzle3_EventScript_1625FF
end
Route110_TrickHousePuzzle3_EventScript_1625B7:: @ 81625B7
lockall
setvar 0x4008, 2
- jump Route110_TrickHousePuzzle3_EventScript_1625FF
+ goto Route110_TrickHousePuzzle3_EventScript_1625FF
end
Route110_TrickHousePuzzle3_EventScript_1625C3:: @ 81625C3
lockall
setvar 0x4008, 3
- jump Route110_TrickHousePuzzle3_EventScript_1625FF
+ goto Route110_TrickHousePuzzle3_EventScript_1625FF
end
Route110_TrickHousePuzzle3_EventScript_1625CF:: @ 81625CF
lockall
setvar 0x4008, 4
- jump Route110_TrickHousePuzzle3_EventScript_1625FF
+ goto Route110_TrickHousePuzzle3_EventScript_1625FF
end
Route110_TrickHousePuzzle3_EventScript_1625DB:: @ 81625DB
lockall
setvar 0x4008, 5
- jump Route110_TrickHousePuzzle3_EventScript_1625FF
+ goto Route110_TrickHousePuzzle3_EventScript_1625FF
end
Route110_TrickHousePuzzle3_EventScript_1625E7:: @ 81625E7
lockall
setvar 0x4008, 6
- jump Route110_TrickHousePuzzle3_EventScript_1625FF
+ goto Route110_TrickHousePuzzle3_EventScript_1625FF
end
Route110_TrickHousePuzzle3_EventScript_1625F3:: @ 81625F3
lockall
setvar 0x4008, 7
- jump Route110_TrickHousePuzzle3_EventScript_1625FF
+ goto Route110_TrickHousePuzzle3_EventScript_1625FF
end
Route110_TrickHousePuzzle3_EventScript_1625FF:: @ 81625FF
call Route110_TrickHousePuzzle3_EventScript_162612
- playsfx 21
+ playse 21
call Route110_TrickHousePuzzle3_EventScript_161F12
- jump Route110_TrickHousePuzzle3_EventScript_1626AD
+ goto Route110_TrickHousePuzzle3_EventScript_1626AD
end
Route110_TrickHousePuzzle3_EventScript_162612:: @ 8162612
@@ -303,19 +303,19 @@ Route110_TrickHousePuzzle3_EventScript_162612:: @ 8162612
setvar 0x4006, 0
setvar 0x4007, 0
compare 0x4008, 1
- callif 1, Route110_TrickHousePuzzle3_EventScript_162683
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_162683
compare 0x4008, 2
- callif 1, Route110_TrickHousePuzzle3_EventScript_162689
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_162689
compare 0x4008, 3
- callif 1, Route110_TrickHousePuzzle3_EventScript_16268F
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_16268F
compare 0x4008, 4
- callif 1, Route110_TrickHousePuzzle3_EventScript_162695
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_162695
compare 0x4008, 5
- callif 1, Route110_TrickHousePuzzle3_EventScript_16269B
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_16269B
compare 0x4008, 6
- callif 1, Route110_TrickHousePuzzle3_EventScript_1626A1
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_1626A1
compare 0x4008, 7
- callif 1, Route110_TrickHousePuzzle3_EventScript_1626A7
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_1626A7
return
Route110_TrickHousePuzzle3_EventScript_162683:: @ 8162683
@@ -348,14 +348,14 @@ Route110_TrickHousePuzzle3_EventScript_1626A7:: @ 81626A7
Route110_TrickHousePuzzle3_EventScript_1626AD:: @ 81626AD
compare 0x4009, 1
- callif 1, Route110_TrickHousePuzzle3_EventScript_161FE5
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_161FE5
compare 0x4009, 0
- callif 1, Route110_TrickHousePuzzle3_EventScript_1622C8
+ call_if 1, Route110_TrickHousePuzzle3_EventScript_1622C8
special DrawWholeMapView
compare 0x4009, 1
- jumpeq Route110_TrickHousePuzzle3_EventScript_1626DD
+ goto_if_eq Route110_TrickHousePuzzle3_EventScript_1626DD
compare 0x4009, 0
- jumpeq Route110_TrickHousePuzzle3_EventScript_1626E4
+ goto_if_eq Route110_TrickHousePuzzle3_EventScript_1626E4
end
Route110_TrickHousePuzzle3_EventScript_1626DD:: @ 81626DD
@@ -371,13 +371,13 @@ Route110_TrickHousePuzzle3_EventScript_1626E4:: @ 81626E4
Route110_TrickHousePuzzle3_EventScript_1626EB:: @ 81626EB
lockall
compare 0x40ad, 0
- jumpeq Route110_TrickHousePuzzle3_EventScript_1626FD
- jump Route110_TrickHousePuzzle3_EventScript_161892
+ goto_if_eq Route110_TrickHousePuzzle3_EventScript_1626FD
+ goto Route110_TrickHousePuzzle3_EventScript_161892
end
Route110_TrickHousePuzzle3_EventScript_1626FD:: @ 81626FD
setvar 0x40ad, 1
- jump Route110_TrickHousePuzzle3_EventScript_16189C
+ goto Route110_TrickHousePuzzle3_EventScript_16189C
end
Route110_TrickHousePuzzle3_EventScript_162708:: @ 8162708
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle4.inc b/data/scripts/maps/Route110_TrickHousePuzzle4.inc
index 89d5e45c3..0c9fc426f 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle4.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle4.inc
@@ -4,13 +4,13 @@ Route110_TrickHousePuzzle4_MapScripts:: @ 816274D
Route110_TrickHousePuzzle4_EventScript_16274E:: @ 816274E
lockall
compare 0x40ae, 0
- jumpeq Route110_TrickHousePuzzle4_EventScript_162760
- jump Route110_TrickHousePuzzle4_EventScript_161892
+ goto_if_eq Route110_TrickHousePuzzle4_EventScript_162760
+ goto Route110_TrickHousePuzzle4_EventScript_161892
end
Route110_TrickHousePuzzle4_EventScript_162760:: @ 8162760
setvar 0x40ae, 1
- jump Route110_TrickHousePuzzle4_EventScript_16189C
+ goto Route110_TrickHousePuzzle4_EventScript_16189C
end
Route110_TrickHousePuzzle4_EventScript_16276B:: @ 816276B
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle5.inc b/data/scripts/maps/Route110_TrickHousePuzzle5.inc
index cd5d2fbb9..222a71138 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle5.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle5.inc
@@ -14,163 +14,163 @@ Route110_TrickHousePuzzle5_MapScript1_1627B6:: @ 81627B6
Route110_TrickHousePuzzle5_EventScript_1627D5:: @ 81627D5
lockall
compare 0x40af, 0
- jumpeq Route110_TrickHousePuzzle5_EventScript_1627E7
- jump Route110_TrickHousePuzzle5_EventScript_161892
+ goto_if_eq Route110_TrickHousePuzzle5_EventScript_1627E7
+ goto Route110_TrickHousePuzzle5_EventScript_161892
end
Route110_TrickHousePuzzle5_EventScript_1627E7:: @ 81627E7
setvar 0x40af, 1
- jump Route110_TrickHousePuzzle5_EventScript_16189C
+ goto Route110_TrickHousePuzzle5_EventScript_16189C
end
Route110_TrickHousePuzzle5_EventScript_1627F2:: @ 81627F2
lockall
- move 1, Route110_TrickHousePuzzle5_Movement_1A0839
- waitmove 0
+ applymovement 1, Route110_TrickHousePuzzle5_Movement_1A0839
+ waitmovement 0
compare 0x4001, 1
- jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9
+ goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9
setvar 0x4009, 0
- jump Route110_TrickHousePuzzle5_EventScript_16293F
+ goto Route110_TrickHousePuzzle5_EventScript_16293F
end
Route110_TrickHousePuzzle5_EventScript_162813:: @ 8162813
lockall
- move 2, Route110_TrickHousePuzzle5_Movement_1A0839
- waitmove 0
+ applymovement 2, Route110_TrickHousePuzzle5_Movement_1A0839
+ waitmovement 0
compare 0x4002, 1
- jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9
+ goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9
setvar 0x4009, 0
- jump Route110_TrickHousePuzzle5_EventScript_1629B3
+ goto Route110_TrickHousePuzzle5_EventScript_1629B3
end
Route110_TrickHousePuzzle5_EventScript_162834:: @ 8162834
lockall
- move 3, Route110_TrickHousePuzzle5_Movement_1A0839
- waitmove 0
+ applymovement 3, Route110_TrickHousePuzzle5_Movement_1A0839
+ waitmovement 0
compare 0x4003, 1
- jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9
+ goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9
setvar 0x4009, 0
- jump Route110_TrickHousePuzzle5_EventScript_162A27
+ goto Route110_TrickHousePuzzle5_EventScript_162A27
end
Route110_TrickHousePuzzle5_EventScript_162855:: @ 8162855
lockall
- move 4, Route110_TrickHousePuzzle5_Movement_1A0839
- waitmove 0
+ applymovement 4, Route110_TrickHousePuzzle5_Movement_1A0839
+ waitmovement 0
compare 0x4004, 1
- jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9
+ goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9
setvar 0x4009, 0
- jump Route110_TrickHousePuzzle5_EventScript_162A9B
+ goto Route110_TrickHousePuzzle5_EventScript_162A9B
end
Route110_TrickHousePuzzle5_EventScript_162876:: @ 8162876
lockall
- move 5, Route110_TrickHousePuzzle5_Movement_1A0839
- waitmove 0
+ applymovement 5, Route110_TrickHousePuzzle5_Movement_1A0839
+ waitmovement 0
compare 0x4005, 1
- jumpeq Route110_TrickHousePuzzle5_EventScript_162DE9
+ goto_if_eq Route110_TrickHousePuzzle5_EventScript_162DE9
setvar 0x4009, 0
- jump Route110_TrickHousePuzzle5_EventScript_162B0F
+ goto Route110_TrickHousePuzzle5_EventScript_162B0F
end
Route110_TrickHousePuzzle5_EventScript_162897:: @ 8162897
lockall
setvar 0x4009, 0
- jump Route110_TrickHousePuzzle5_EventScript_16293F
+ goto Route110_TrickHousePuzzle5_EventScript_16293F
end
Route110_TrickHousePuzzle5_EventScript_1628A3:: @ 81628A3
lockall
setvar 0x4009, 1
- jump Route110_TrickHousePuzzle5_EventScript_16293F
+ goto Route110_TrickHousePuzzle5_EventScript_16293F
end
Route110_TrickHousePuzzle5_EventScript_1628AF:: @ 81628AF
lockall
setvar 0x4009, 2
- jump Route110_TrickHousePuzzle5_EventScript_16293F
+ goto Route110_TrickHousePuzzle5_EventScript_16293F
end
Route110_TrickHousePuzzle5_EventScript_1628BB:: @ 81628BB
lockall
setvar 0x4009, 3
- jump Route110_TrickHousePuzzle5_EventScript_16293F
+ goto Route110_TrickHousePuzzle5_EventScript_16293F
end
Route110_TrickHousePuzzle5_EventScript_1628C7:: @ 81628C7
lockall
setvar 0x4009, 0
- jump Route110_TrickHousePuzzle5_EventScript_1629B3
+ goto Route110_TrickHousePuzzle5_EventScript_1629B3
end
Route110_TrickHousePuzzle5_EventScript_1628D3:: @ 81628D3
lockall
setvar 0x4009, 1
- jump Route110_TrickHousePuzzle5_EventScript_1629B3
+ goto Route110_TrickHousePuzzle5_EventScript_1629B3
end
Route110_TrickHousePuzzle5_EventScript_1628DF:: @ 81628DF
lockall
setvar 0x4009, 0
- jump Route110_TrickHousePuzzle5_EventScript_162A27
+ goto Route110_TrickHousePuzzle5_EventScript_162A27
end
Route110_TrickHousePuzzle5_EventScript_1628EB:: @ 81628EB
lockall
setvar 0x4009, 1
- jump Route110_TrickHousePuzzle5_EventScript_162A27
+ goto Route110_TrickHousePuzzle5_EventScript_162A27
end
Route110_TrickHousePuzzle5_EventScript_1628F7:: @ 81628F7
lockall
setvar 0x4009, 2
- jump Route110_TrickHousePuzzle5_EventScript_162A27
+ goto Route110_TrickHousePuzzle5_EventScript_162A27
end
Route110_TrickHousePuzzle5_EventScript_162903:: @ 8162903
lockall
setvar 0x4009, 0
- jump Route110_TrickHousePuzzle5_EventScript_162A9B
+ goto Route110_TrickHousePuzzle5_EventScript_162A9B
end
Route110_TrickHousePuzzle5_EventScript_16290F:: @ 816290F
lockall
setvar 0x4009, 1
- jump Route110_TrickHousePuzzle5_EventScript_162A9B
+ goto Route110_TrickHousePuzzle5_EventScript_162A9B
end
Route110_TrickHousePuzzle5_EventScript_16291B:: @ 816291B
lockall
setvar 0x4009, 0
- jump Route110_TrickHousePuzzle5_EventScript_162B0F
+ goto Route110_TrickHousePuzzle5_EventScript_162B0F
end
Route110_TrickHousePuzzle5_EventScript_162927:: @ 8162927
lockall
setvar 0x4009, 1
- jump Route110_TrickHousePuzzle5_EventScript_162B0F
+ goto Route110_TrickHousePuzzle5_EventScript_162B0F
end
Route110_TrickHousePuzzle5_EventScript_162933:: @ 8162933
lockall
setvar 0x4009, 2
- jump Route110_TrickHousePuzzle5_EventScript_162B0F
+ goto Route110_TrickHousePuzzle5_EventScript_162B0F
end
Route110_TrickHousePuzzle5_EventScript_16293F:: @ 816293F
setvar 0x4001, 1
setvar 0x4008, 1
- playsfx 21
- move 1, Route110_TrickHousePuzzle5_Movement_1A0833
- waitmove 0
- move 1, Route110_TrickHousePuzzle5_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement 1, Route110_TrickHousePuzzle5_Movement_1A0833
+ waitmovement 0
+ applymovement 1, Route110_TrickHousePuzzle5_Movement_1A0835
+ waitmovement 0
compare 0x4009, 1
- callif 1, Route110_TrickHousePuzzle5_EventScript_162DF3
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162DF3
compare 0x4009, 2
- callif 1, Route110_TrickHousePuzzle5_EventScript_162E2B
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162E2B
compare 0x4009, 3
- callif 1, Route110_TrickHousePuzzle5_EventScript_162E63
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162E63
msgbox Route110_TrickHousePuzzle5_Text_19D423, 4
random 3
switch RESULT
@@ -182,17 +182,17 @@ Route110_TrickHousePuzzle5_EventScript_16293F:: @ 816293F
Route110_TrickHousePuzzle5_EventScript_1629B3:: @ 81629B3
setvar 0x4002, 1
setvar 0x4008, 2
- playsfx 21
- move 2, Route110_TrickHousePuzzle5_Movement_1A0833
- waitmove 0
- move 2, Route110_TrickHousePuzzle5_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement 2, Route110_TrickHousePuzzle5_Movement_1A0833
+ waitmovement 0
+ applymovement 2, Route110_TrickHousePuzzle5_Movement_1A0835
+ waitmovement 0
compare 0x4009, 1
- callif 1, Route110_TrickHousePuzzle5_EventScript_162E9B
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162E9B
compare 0x4009, 2
- callif 1, Route110_TrickHousePuzzle5_EventScript_162ED3
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162ED3
compare 0x4009, 3
- callif 1, Route110_TrickHousePuzzle5_EventScript_162F0B
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162F0B
msgbox Route110_TrickHousePuzzle5_Text_19D636, 4
random 3
switch RESULT
@@ -204,17 +204,17 @@ Route110_TrickHousePuzzle5_EventScript_1629B3:: @ 81629B3
Route110_TrickHousePuzzle5_EventScript_162A27:: @ 8162A27
setvar 0x4003, 1
setvar 0x4008, 3
- playsfx 21
- move 3, Route110_TrickHousePuzzle5_Movement_1A0833
- waitmove 0
- move 3, Route110_TrickHousePuzzle5_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement 3, Route110_TrickHousePuzzle5_Movement_1A0833
+ waitmovement 0
+ applymovement 3, Route110_TrickHousePuzzle5_Movement_1A0835
+ waitmovement 0
compare 0x4009, 1
- callif 1, Route110_TrickHousePuzzle5_EventScript_162DF3
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162DF3
compare 0x4009, 2
- callif 1, Route110_TrickHousePuzzle5_EventScript_162E2B
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162E2B
compare 0x4009, 3
- callif 1, Route110_TrickHousePuzzle5_EventScript_162E63
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162E63
msgbox Route110_TrickHousePuzzle5_Text_19D7D3, 4
random 3
switch RESULT
@@ -226,17 +226,17 @@ Route110_TrickHousePuzzle5_EventScript_162A27:: @ 8162A27
Route110_TrickHousePuzzle5_EventScript_162A9B:: @ 8162A9B
setvar 0x4004, 1
setvar 0x4008, 4
- playsfx 21
- move 4, Route110_TrickHousePuzzle5_Movement_1A0833
- waitmove 0
- move 4, Route110_TrickHousePuzzle5_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement 4, Route110_TrickHousePuzzle5_Movement_1A0833
+ waitmovement 0
+ applymovement 4, Route110_TrickHousePuzzle5_Movement_1A0835
+ waitmovement 0
compare 0x4009, 1
- callif 1, Route110_TrickHousePuzzle5_EventScript_162DF3
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162DF3
compare 0x4009, 2
- callif 1, Route110_TrickHousePuzzle5_EventScript_162E2B
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162E2B
compare 0x4009, 3
- callif 1, Route110_TrickHousePuzzle5_EventScript_162E63
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162E63
msgbox Route110_TrickHousePuzzle5_Text_19D93D, 4
random 3
switch RESULT
@@ -248,17 +248,17 @@ Route110_TrickHousePuzzle5_EventScript_162A9B:: @ 8162A9B
Route110_TrickHousePuzzle5_EventScript_162B0F:: @ 8162B0F
setvar 0x4005, 1
setvar 0x4008, 5
- playsfx 21
- move 5, Route110_TrickHousePuzzle5_Movement_1A0833
- waitmove 0
- move 5, Route110_TrickHousePuzzle5_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement 5, Route110_TrickHousePuzzle5_Movement_1A0833
+ waitmovement 0
+ applymovement 5, Route110_TrickHousePuzzle5_Movement_1A0835
+ waitmovement 0
compare 0x4009, 1
- callif 1, Route110_TrickHousePuzzle5_EventScript_162E9B
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162E9B
compare 0x4009, 2
- callif 1, Route110_TrickHousePuzzle5_EventScript_162ED3
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162ED3
compare 0x4009, 3
- callif 1, Route110_TrickHousePuzzle5_EventScript_162F0B
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162F0B
msgbox Route110_TrickHousePuzzle5_Text_19DA9A, 4
random 3
switch RESULT
@@ -272,7 +272,7 @@ Route110_TrickHousePuzzle5_EventScript_162B83:: @ 8162B83
multichoice 0, 0, 25, 1
switch RESULT
case 1, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162BA6:: @ 8162BA6
@@ -280,7 +280,7 @@ Route110_TrickHousePuzzle5_EventScript_162BA6:: @ 8162BA6
multichoice 0, 0, 26, 1
switch RESULT
case 0, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162BC9:: @ 8162BC9
@@ -288,7 +288,7 @@ Route110_TrickHousePuzzle5_EventScript_162BC9:: @ 8162BC9
multichoice 0, 0, 27, 1
switch RESULT
case 1, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162BEC:: @ 8162BEC
@@ -296,7 +296,7 @@ Route110_TrickHousePuzzle5_EventScript_162BEC:: @ 8162BEC
multichoice 0, 0, 28, 1
switch RESULT
case 2, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162C0F:: @ 8162C0F
@@ -304,7 +304,7 @@ Route110_TrickHousePuzzle5_EventScript_162C0F:: @ 8162C0F
multichoice 0, 0, 29, 1
switch RESULT
case 0, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162C32:: @ 8162C32
@@ -312,7 +312,7 @@ Route110_TrickHousePuzzle5_EventScript_162C32:: @ 8162C32
multichoice 0, 0, 30, 1
switch RESULT
case 0, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162C55:: @ 8162C55
@@ -320,7 +320,7 @@ Route110_TrickHousePuzzle5_EventScript_162C55:: @ 8162C55
multichoice 0, 0, 31, 1
switch RESULT
case 1, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162C78:: @ 8162C78
@@ -328,7 +328,7 @@ Route110_TrickHousePuzzle5_EventScript_162C78:: @ 8162C78
multichoice 0, 0, 32, 1
switch RESULT
case 2, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162C9B:: @ 8162C9B
@@ -336,7 +336,7 @@ Route110_TrickHousePuzzle5_EventScript_162C9B:: @ 8162C9B
multichoice 0, 0, 33, 1
switch RESULT
case 1, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162CBE:: @ 8162CBE
@@ -344,7 +344,7 @@ Route110_TrickHousePuzzle5_EventScript_162CBE:: @ 8162CBE
multichoice 0, 0, 34, 1
switch RESULT
case 1, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162CE1:: @ 8162CE1
@@ -352,7 +352,7 @@ Route110_TrickHousePuzzle5_EventScript_162CE1:: @ 8162CE1
multichoice 0, 0, 35, 1
switch RESULT
case 0, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162D04:: @ 8162D04
@@ -360,7 +360,7 @@ Route110_TrickHousePuzzle5_EventScript_162D04:: @ 8162D04
multichoice 0, 0, 36, 1
switch RESULT
case 1, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162D27:: @ 8162D27
@@ -368,7 +368,7 @@ Route110_TrickHousePuzzle5_EventScript_162D27:: @ 8162D27
multichoice 0, 0, 37, 1
switch RESULT
case 1, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162D4A:: @ 8162D4A
@@ -376,7 +376,7 @@ Route110_TrickHousePuzzle5_EventScript_162D4A:: @ 8162D4A
multichoice 0, 0, 38, 1
switch RESULT
case 0, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162D6D:: @ 8162D6D
@@ -384,32 +384,32 @@ Route110_TrickHousePuzzle5_EventScript_162D6D:: @ 8162D6D
multichoice 0, 0, 39, 1
switch RESULT
case 2, Route110_TrickHousePuzzle5_EventScript_162DDF
- jump Route110_TrickHousePuzzle5_EventScript_162D90
+ goto Route110_TrickHousePuzzle5_EventScript_162D90
end
Route110_TrickHousePuzzle5_EventScript_162D90:: @ 8162D90
- checksound
- playsfx 32
+ waitse
+ playse 32
msgbox Route110_TrickHousePuzzle5_Text_19D5CF, 4
- move 1, Route110_TrickHousePuzzle5_Movement_16309F
- move 2, Route110_TrickHousePuzzle5_Movement_16309F
- move 3, Route110_TrickHousePuzzle5_Movement_16309F
- move 4, Route110_TrickHousePuzzle5_Movement_16309F
- move 5, Route110_TrickHousePuzzle5_Movement_16309F
+ applymovement 1, Route110_TrickHousePuzzle5_Movement_16309F
+ applymovement 2, Route110_TrickHousePuzzle5_Movement_16309F
+ applymovement 3, Route110_TrickHousePuzzle5_Movement_16309F
+ applymovement 4, Route110_TrickHousePuzzle5_Movement_16309F
+ applymovement 5, Route110_TrickHousePuzzle5_Movement_16309F
msgbox Route110_TrickHousePuzzle5_Text_19D5ED, 4
- waitmove 0
- closebutton
+ waitmovement 0
+ closemessage
msgbox Route110_TrickHousePuzzle5_Text_19D615, 4
- closebutton
+ closemessage
warp Route110_TrickHousePuzzle5, 255, 0, 21
waitstate
releaseall
end
Route110_TrickHousePuzzle5_EventScript_162DDF:: @ 8162DDF
- checksound
- playsfx 31
- jump Route110_TrickHousePuzzle5_EventScript_162DE9
+ waitse
+ playse 31
+ goto Route110_TrickHousePuzzle5_EventScript_162DE9
end
Route110_TrickHousePuzzle5_EventScript_162DE9:: @ 8162DE9
@@ -419,230 +419,230 @@ Route110_TrickHousePuzzle5_EventScript_162DE9:: @ 8162DE9
Route110_TrickHousePuzzle5_EventScript_162DF3:: @ 8162DF3
compare 0x4008, 1
- callif 1, Route110_TrickHousePuzzle5_EventScript_162F43
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162F43
compare 0x4008, 2
- callif 1, Route110_TrickHousePuzzle5_EventScript_162F4E
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162F4E
compare 0x4008, 3
- callif 1, Route110_TrickHousePuzzle5_EventScript_162F59
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162F59
compare 0x4008, 4
- callif 1, Route110_TrickHousePuzzle5_EventScript_162F64
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162F64
compare 0x4008, 5
- callif 1, Route110_TrickHousePuzzle5_EventScript_162F6F
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162F6F
return
Route110_TrickHousePuzzle5_EventScript_162E2B:: @ 8162E2B
compare 0x4008, 1
- callif 1, Route110_TrickHousePuzzle5_EventScript_162F7A
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162F7A
compare 0x4008, 2
- callif 1, Route110_TrickHousePuzzle5_EventScript_162F85
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162F85
compare 0x4008, 3
- callif 1, Route110_TrickHousePuzzle5_EventScript_162F90
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162F90
compare 0x4008, 4
- callif 1, Route110_TrickHousePuzzle5_EventScript_162F9B
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162F9B
compare 0x4008, 5
- callif 1, Route110_TrickHousePuzzle5_EventScript_162FA6
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162FA6
return
Route110_TrickHousePuzzle5_EventScript_162E63:: @ 8162E63
compare 0x4008, 1
- callif 1, Route110_TrickHousePuzzle5_EventScript_162FB1
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162FB1
compare 0x4008, 2
- callif 1, Route110_TrickHousePuzzle5_EventScript_162FBC
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162FBC
compare 0x4008, 3
- callif 1, Route110_TrickHousePuzzle5_EventScript_162FC7
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162FC7
compare 0x4009, 4
- callif 1, Route110_TrickHousePuzzle5_EventScript_162FD2
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162FD2
compare 0x4009, 5
- callif 1, Route110_TrickHousePuzzle5_EventScript_162FDD
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162FDD
return
Route110_TrickHousePuzzle5_EventScript_162E9B:: @ 8162E9B
compare 0x4008, 1
- callif 1, Route110_TrickHousePuzzle5_EventScript_162FE8
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162FE8
compare 0x4008, 2
- callif 1, Route110_TrickHousePuzzle5_EventScript_162FF3
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162FF3
compare 0x4008, 3
- callif 1, Route110_TrickHousePuzzle5_EventScript_162FFE
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_162FFE
compare 0x4008, 4
- callif 1, Route110_TrickHousePuzzle5_EventScript_163009
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_163009
compare 0x4008, 5
- callif 1, Route110_TrickHousePuzzle5_EventScript_163014
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_163014
return
Route110_TrickHousePuzzle5_EventScript_162ED3:: @ 8162ED3
compare 0x4008, 1
- callif 1, Route110_TrickHousePuzzle5_EventScript_16301F
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_16301F
compare 0x4008, 2
- callif 1, Route110_TrickHousePuzzle5_EventScript_16302A
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_16302A
compare 0x4008, 3
- callif 1, Route110_TrickHousePuzzle5_EventScript_163035
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_163035
compare 0x4008, 4
- callif 1, Route110_TrickHousePuzzle5_EventScript_163040
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_163040
compare 0x4008, 5
- callif 1, Route110_TrickHousePuzzle5_EventScript_16304B
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_16304B
return
Route110_TrickHousePuzzle5_EventScript_162F0B:: @ 8162F0B
compare 0x4008, 1
- callif 1, Route110_TrickHousePuzzle5_EventScript_163056
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_163056
compare 0x4008, 2
- callif 1, Route110_TrickHousePuzzle5_EventScript_163061
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_163061
compare 0x4008, 3
- callif 1, Route110_TrickHousePuzzle5_EventScript_16306C
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_16306C
compare 0x4008, 4
- callif 1, Route110_TrickHousePuzzle5_EventScript_163077
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_163077
compare 0x4008, 5
- callif 1, Route110_TrickHousePuzzle5_EventScript_163082
+ call_if 1, Route110_TrickHousePuzzle5_EventScript_163082
return
Route110_TrickHousePuzzle5_EventScript_162F43:: @ 8162F43
- move 1, Route110_TrickHousePuzzle5_Movement_16308D
- waitmove 0
+ applymovement 1, Route110_TrickHousePuzzle5_Movement_16308D
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162F4E:: @ 8162F4E
- move 2, Route110_TrickHousePuzzle5_Movement_16308D
- waitmove 0
+ applymovement 2, Route110_TrickHousePuzzle5_Movement_16308D
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162F59:: @ 8162F59
- move 3, Route110_TrickHousePuzzle5_Movement_16308D
- waitmove 0
+ applymovement 3, Route110_TrickHousePuzzle5_Movement_16308D
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162F64:: @ 8162F64
- move 4, Route110_TrickHousePuzzle5_Movement_16308D
- waitmove 0
+ applymovement 4, Route110_TrickHousePuzzle5_Movement_16308D
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162F6F:: @ 8162F6F
- move 5, Route110_TrickHousePuzzle5_Movement_16308D
- waitmove 0
+ applymovement 5, Route110_TrickHousePuzzle5_Movement_16308D
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162F7A:: @ 8162F7A
- move 1, Route110_TrickHousePuzzle5_Movement_16308F
- waitmove 0
+ applymovement 1, Route110_TrickHousePuzzle5_Movement_16308F
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162F85:: @ 8162F85
- move 2, Route110_TrickHousePuzzle5_Movement_16308F
- waitmove 0
+ applymovement 2, Route110_TrickHousePuzzle5_Movement_16308F
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162F90:: @ 8162F90
- move 3, Route110_TrickHousePuzzle5_Movement_16308F
- waitmove 0
+ applymovement 3, Route110_TrickHousePuzzle5_Movement_16308F
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162F9B:: @ 8162F9B
- move 4, Route110_TrickHousePuzzle5_Movement_16308F
- waitmove 0
+ applymovement 4, Route110_TrickHousePuzzle5_Movement_16308F
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162FA6:: @ 8162FA6
- move 5, Route110_TrickHousePuzzle5_Movement_16308F
- waitmove 0
+ applymovement 5, Route110_TrickHousePuzzle5_Movement_16308F
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162FB1:: @ 8162FB1
- move 1, Route110_TrickHousePuzzle5_Movement_163092
- waitmove 0
+ applymovement 1, Route110_TrickHousePuzzle5_Movement_163092
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162FBC:: @ 8162FBC
- move 2, Route110_TrickHousePuzzle5_Movement_163092
- waitmove 0
+ applymovement 2, Route110_TrickHousePuzzle5_Movement_163092
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162FC7:: @ 8162FC7
- move 3, Route110_TrickHousePuzzle5_Movement_163092
- waitmove 0
+ applymovement 3, Route110_TrickHousePuzzle5_Movement_163092
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162FD2:: @ 8162FD2
- move 4, Route110_TrickHousePuzzle5_Movement_163092
- waitmove 0
+ applymovement 4, Route110_TrickHousePuzzle5_Movement_163092
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162FDD:: @ 8162FDD
- move 5, Route110_TrickHousePuzzle5_Movement_163092
- waitmove 0
+ applymovement 5, Route110_TrickHousePuzzle5_Movement_163092
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162FE8:: @ 8162FE8
- move 1, Route110_TrickHousePuzzle5_Movement_163096
- waitmove 0
+ applymovement 1, Route110_TrickHousePuzzle5_Movement_163096
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162FF3:: @ 8162FF3
- move 2, Route110_TrickHousePuzzle5_Movement_163096
- waitmove 0
+ applymovement 2, Route110_TrickHousePuzzle5_Movement_163096
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_162FFE:: @ 8162FFE
- move 3, Route110_TrickHousePuzzle5_Movement_163096
- waitmove 0
+ applymovement 3, Route110_TrickHousePuzzle5_Movement_163096
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_163009:: @ 8163009
- move 4, Route110_TrickHousePuzzle5_Movement_163096
- waitmove 0
+ applymovement 4, Route110_TrickHousePuzzle5_Movement_163096
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_163014:: @ 8163014
- move 5, Route110_TrickHousePuzzle5_Movement_163096
- waitmove 0
+ applymovement 5, Route110_TrickHousePuzzle5_Movement_163096
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_16301F:: @ 816301F
- move 1, Route110_TrickHousePuzzle5_Movement_163098
- waitmove 0
+ applymovement 1, Route110_TrickHousePuzzle5_Movement_163098
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_16302A:: @ 816302A
- move 2, Route110_TrickHousePuzzle5_Movement_163098
- waitmove 0
+ applymovement 2, Route110_TrickHousePuzzle5_Movement_163098
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_163035:: @ 8163035
- move 3, Route110_TrickHousePuzzle5_Movement_163098
- waitmove 0
+ applymovement 3, Route110_TrickHousePuzzle5_Movement_163098
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_163040:: @ 8163040
- move 4, Route110_TrickHousePuzzle5_Movement_163098
- waitmove 0
+ applymovement 4, Route110_TrickHousePuzzle5_Movement_163098
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_16304B:: @ 816304B
- move 5, Route110_TrickHousePuzzle5_Movement_163098
- waitmove 0
+ applymovement 5, Route110_TrickHousePuzzle5_Movement_163098
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_163056:: @ 8163056
- move 1, Route110_TrickHousePuzzle5_Movement_16309B
- waitmove 0
+ applymovement 1, Route110_TrickHousePuzzle5_Movement_16309B
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_163061:: @ 8163061
- move 2, Route110_TrickHousePuzzle5_Movement_16309B
- waitmove 0
+ applymovement 2, Route110_TrickHousePuzzle5_Movement_16309B
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_16306C:: @ 816306C
- move 3, Route110_TrickHousePuzzle5_Movement_16309B
- waitmove 0
+ applymovement 3, Route110_TrickHousePuzzle5_Movement_16309B
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_163077:: @ 8163077
- move 4, Route110_TrickHousePuzzle5_Movement_16309B
- waitmove 0
+ applymovement 4, Route110_TrickHousePuzzle5_Movement_16309B
+ waitmovement 0
return
Route110_TrickHousePuzzle5_EventScript_163082:: @ 8163082
- move 5, Route110_TrickHousePuzzle5_Movement_16309B
- waitmove 0
+ applymovement 5, Route110_TrickHousePuzzle5_Movement_16309B
+ waitmovement 0
return
Route110_TrickHousePuzzle5_Movement_16308D:: @ 816308D
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle6.inc b/data/scripts/maps/Route110_TrickHousePuzzle6.inc
index 1e47bbd83..ddf845142 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle6.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle6.inc
@@ -18,13 +18,13 @@ Route110_TrickHousePuzzle6_EventScript_1630E6:: @ 81630E6
Route110_TrickHousePuzzle6_EventScript_1630EA:: @ 81630EA
lockall
compare 0x40b0, 0
- jumpeq Route110_TrickHousePuzzle6_EventScript_1630FC
- jump Route110_TrickHousePuzzle6_EventScript_161892
+ goto_if_eq Route110_TrickHousePuzzle6_EventScript_1630FC
+ goto Route110_TrickHousePuzzle6_EventScript_161892
end
Route110_TrickHousePuzzle6_EventScript_1630FC:: @ 81630FC
setvar 0x40b0, 1
- jump Route110_TrickHousePuzzle6_EventScript_16189C
+ goto Route110_TrickHousePuzzle6_EventScript_16189C
end
Route110_TrickHousePuzzle6_EventScript_163107:: @ 8163107
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle7.inc b/data/scripts/maps/Route110_TrickHousePuzzle7.inc
index 7f965b467..3361e3e9d 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle7.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle7.inc
@@ -11,15 +11,15 @@ Route110_TrickHousePuzzle7_MapScript1_163161:: @ 8163161
Route110_TrickHousePuzzle7_EventScript_163167:: @ 8163167
checkflag 194
- callif 1, Route110_TrickHousePuzzle7_EventScript_163195
+ call_if 1, Route110_TrickHousePuzzle7_EventScript_163195
checkflag 195
- callif 1, Route110_TrickHousePuzzle7_EventScript_1631A8
+ call_if 1, Route110_TrickHousePuzzle7_EventScript_1631A8
checkflag 196
- callif 1, Route110_TrickHousePuzzle7_EventScript_1631BB
+ call_if 1, Route110_TrickHousePuzzle7_EventScript_1631BB
checkflag 197
- callif 1, Route110_TrickHousePuzzle7_EventScript_1631CE
+ call_if 1, Route110_TrickHousePuzzle7_EventScript_1631CE
checkflag 198
- callif 1, Route110_TrickHousePuzzle7_EventScript_1631E1
+ call_if 1, Route110_TrickHousePuzzle7_EventScript_1631E1
return
Route110_TrickHousePuzzle7_EventScript_163195:: @ 8163195
@@ -74,7 +74,7 @@ Route110_TrickHousePuzzle7_EventScript_163240:: @ 8163240
Route110_TrickHousePuzzle7_MapScript1_163253:: @ 8163253
compare 0x40b6, 1
- jumpeq Route110_TrickHousePuzzle7_EventScript_16326E
+ goto_if_eq Route110_TrickHousePuzzle7_EventScript_16326E
clearflag 194
clearflag 195
clearflag 196
@@ -87,7 +87,7 @@ Route110_TrickHousePuzzle7_EventScript_16326E:: @ 816326E
Route110_TrickHousePuzzle7_MapScript1_16326F:: @ 816326F
compare 0x40b6, 1
- callif 1, Route110_TrickHousePuzzle7_EventScript_163167
+ call_if 1, Route110_TrickHousePuzzle7_EventScript_163167
end
Route110_TrickHousePuzzle7_MapScript2_16327B:: @ 816327B
@@ -101,13 +101,13 @@ Route110_TrickHousePuzzle7_EventScript_163285:: @ 8163285
Route110_TrickHousePuzzle7_EventScript_16328B:: @ 816328B
lockall
compare 0x40b1, 0
- jumpeq Route110_TrickHousePuzzle7_EventScript_16329D
- jump Route110_TrickHousePuzzle7_EventScript_161892
+ goto_if_eq Route110_TrickHousePuzzle7_EventScript_16329D
+ goto Route110_TrickHousePuzzle7_EventScript_161892
end
Route110_TrickHousePuzzle7_EventScript_16329D:: @ 816329D
setvar 0x40b1, 1
- jump Route110_TrickHousePuzzle7_EventScript_16189C
+ goto Route110_TrickHousePuzzle7_EventScript_16189C
end
Route110_TrickHousePuzzle7_EventScript_1632A8:: @ 81632A8
@@ -120,77 +120,77 @@ Route110_TrickHousePuzzle7_EventScript_1632A8:: @ 81632A8
Route110_TrickHousePuzzle7_EventScript_1632B9:: @ 81632B9
lockall
- pause 32
+ delay 32
checkflag 194
- callif 0, Route110_TrickHousePuzzle7_EventScript_163195
+ call_if 0, Route110_TrickHousePuzzle7_EventScript_163195
checkflag 194
- callif 1, Route110_TrickHousePuzzle7_EventScript_1631F4
+ call_if 1, Route110_TrickHousePuzzle7_EventScript_1631F4
special DrawWholeMapView
- playsfx 36
+ playse 36
checkflag 194
- jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633A4
+ goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633A4
checkflag 194
- jumpeq Route110_TrickHousePuzzle7_EventScript_1633A9
+ goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633A9
end
Route110_TrickHousePuzzle7_EventScript_1632E8:: @ 81632E8
lockall
- pause 32
+ delay 32
checkflag 195
- callif 0, Route110_TrickHousePuzzle7_EventScript_1631A8
+ call_if 0, Route110_TrickHousePuzzle7_EventScript_1631A8
checkflag 195
- callif 1, Route110_TrickHousePuzzle7_EventScript_163207
+ call_if 1, Route110_TrickHousePuzzle7_EventScript_163207
special DrawWholeMapView
- playsfx 36
+ playse 36
checkflag 195
- jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633AE
+ goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633AE
checkflag 195
- jumpeq Route110_TrickHousePuzzle7_EventScript_1633B3
+ goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633B3
end
Route110_TrickHousePuzzle7_EventScript_163317:: @ 8163317
lockall
- pause 32
+ delay 32
checkflag 196
- callif 0, Route110_TrickHousePuzzle7_EventScript_1631BB
+ call_if 0, Route110_TrickHousePuzzle7_EventScript_1631BB
checkflag 196
- callif 1, Route110_TrickHousePuzzle7_EventScript_16321A
+ call_if 1, Route110_TrickHousePuzzle7_EventScript_16321A
special DrawWholeMapView
- playsfx 36
+ playse 36
checkflag 196
- jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633B8
+ goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633B8
checkflag 196
- jumpeq Route110_TrickHousePuzzle7_EventScript_1633BD
+ goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633BD
end
Route110_TrickHousePuzzle7_EventScript_163346:: @ 8163346
lockall
- pause 32
+ delay 32
checkflag 197
- callif 0, Route110_TrickHousePuzzle7_EventScript_1631CE
+ call_if 0, Route110_TrickHousePuzzle7_EventScript_1631CE
checkflag 197
- callif 1, Route110_TrickHousePuzzle7_EventScript_16322D
+ call_if 1, Route110_TrickHousePuzzle7_EventScript_16322D
special DrawWholeMapView
- playsfx 36
+ playse 36
checkflag 197
- jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633C2
+ goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633C2
checkflag 197
- jumpeq Route110_TrickHousePuzzle7_EventScript_1633C7
+ goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633C7
end
Route110_TrickHousePuzzle7_EventScript_163375:: @ 8163375
lockall
- pause 32
+ delay 32
checkflag 198
- callif 0, Route110_TrickHousePuzzle7_EventScript_1631E1
+ call_if 0, Route110_TrickHousePuzzle7_EventScript_1631E1
checkflag 198
- callif 1, Route110_TrickHousePuzzle7_EventScript_163240
+ call_if 1, Route110_TrickHousePuzzle7_EventScript_163240
special DrawWholeMapView
- playsfx 36
+ playse 36
checkflag 198
- jumpif 0, Route110_TrickHousePuzzle7_EventScript_1633CC
+ goto_if 0, Route110_TrickHousePuzzle7_EventScript_1633CC
checkflag 198
- jumpeq Route110_TrickHousePuzzle7_EventScript_1633D1
+ goto_if_eq Route110_TrickHousePuzzle7_EventScript_1633D1
end
Route110_TrickHousePuzzle7_EventScript_1633A4:: @ 81633A4
diff --git a/data/scripts/maps/Route110_TrickHousePuzzle8.inc b/data/scripts/maps/Route110_TrickHousePuzzle8.inc
index a31c868be..5f0b00684 100644
--- a/data/scripts/maps/Route110_TrickHousePuzzle8.inc
+++ b/data/scripts/maps/Route110_TrickHousePuzzle8.inc
@@ -4,13 +4,13 @@ Route110_TrickHousePuzzle8_MapScripts:: @ 816341B
Route110_TrickHousePuzzle8_EventScript_16341C:: @ 816341C
lockall
compare 0x40b2, 0
- jumpeq Route110_TrickHousePuzzle8_EventScript_16342E
- jump Route110_TrickHousePuzzle8_EventScript_161892
+ goto_if_eq Route110_TrickHousePuzzle8_EventScript_16342E
+ goto Route110_TrickHousePuzzle8_EventScript_161892
end
Route110_TrickHousePuzzle8_EventScript_16342E:: @ 816342E
setvar 0x40b2, 1
- jump Route110_TrickHousePuzzle8_EventScript_16189C
+ goto Route110_TrickHousePuzzle8_EventScript_16189C
end
Route110_TrickHousePuzzle8_EventScript_163439:: @ 8163439
diff --git a/data/scripts/maps/Route111.inc b/data/scripts/maps/Route111.inc
index 1358a44be..545e62921 100644
--- a/data/scripts/maps/Route111.inc
+++ b/data/scripts/maps/Route111.inc
@@ -5,7 +5,7 @@ Route111_MapScripts:: @ 814FF91
Route111_MapScript1_14FF9C:: @ 814FF9C
checkflag 228
- callif 0, Route111_EventScript_14FFA6
+ call_if 0, Route111_EventScript_14FFA6
end
Route111_EventScript_14FFA6:: @ 814FFA6
@@ -17,21 +17,21 @@ Route111_MapScript1_14FFB9:: @ 814FFB9
call Route111_EventScript_14FFCD
call Route111_EventScript_1AE313
checktrainerflag OPPONENT_VICKY
- jumpif 0, Route111_EventScript_15000D
+ goto_if 0, Route111_EventScript_15000D
end
Route111_EventScript_14FFCD:: @ 814FFCD
getplayerxy 0x4000, 0x4001
compare 0x4001, 34
- jumpif 0, Route111_EventScript_15000C
+ goto_if 0, Route111_EventScript_15000C
compare 0x4001, 107
- jumpif 2, Route111_EventScript_15000C
+ goto_if 2, Route111_EventScript_15000C
compare 0x4001, 72
- jumpif 2, Route111_EventScript_150009
+ goto_if 2, Route111_EventScript_150009
compare 0x4000, 2000
- jumpif 2, Route111_EventScript_15000C
+ goto_if 2, Route111_EventScript_15000C
compare 0x4000, 8
- jumpif 0, Route111_EventScript_15000C
+ goto_if 0, Route111_EventScript_15000C
Route111_EventScript_150009:: @ 8150009
setweather 8
@@ -44,25 +44,25 @@ Route111_EventScript_15000D:: @ 815000D
setflag 769
setflag 770
setflag 771
- settrainerflag OPPONENT_VICTOR
- settrainerflag OPPONENT_VICTORIA
- settrainerflag OPPONENT_VIVI
+ cleartrainerflag OPPONENT_VICTOR
+ cleartrainerflag OPPONENT_VICTORIA
+ cleartrainerflag OPPONENT_VIVI
end
Route111_EventScript_150023:: @ 8150023
lockall
msgbox Route111_Text_16FA54, 5
compare RESULT, 0
- jumpeq Route111_EventScript_15005F
+ goto_if_eq Route111_EventScript_15005F
giveitem ITEM_ROOT_FOSSIL
- closebutton
+ closemessage
setflag 963
setflag 964
- disappear 34
- pause 30
- move 35, Route111_Movement_1500AF
- waitmove 0
- disappear 35
+ removeobject 34
+ delay 30
+ applymovement 35, Route111_Movement_1500AF
+ waitmovement 0
+ removeobject 35
releaseall
end
@@ -75,16 +75,16 @@ Route111_EventScript_150069:: @ 8150069
lockall
msgbox Route111_Text_16FAED, 5
compare RESULT, 0
- jumpeq Route111_EventScript_1500A5
+ goto_if_eq Route111_EventScript_1500A5
giveitem ITEM_CLAW_FOSSIL
- closebutton
+ closemessage
setflag 964
setflag 963
- disappear 35
- pause 30
- move 34, Route111_Movement_1500AF
- waitmove 0
- disappear 34
+ removeobject 35
+ delay 30
+ applymovement 34, Route111_Movement_1500AF
+ waitmovement 0
+ removeobject 34
releaseall
end
@@ -120,13 +120,13 @@ Route111_Movement_1500AF:: @ 81500AF
Route111_EventScript_1500C5:: @ 81500C5
lock
faceplayer
- checkdailyflags
+ dodailyevents
checkflag 2252
- jumpeq Route111_EventScript_150100
+ goto_if_eq Route111_EventScript_150100
msgbox Route111_Text_1C56F0, 4
giveitem ITEM_RAZZ_BERRY
compare RESULT, 0
- jumpeq Route111_EventScript_1A029B
+ goto_if_eq Route111_EventScript_1A029B
setflag 2252
special GetPlayerBigGuyGirlString
msgbox Route111_Text_1C5781, 4
@@ -141,67 +141,67 @@ Route111_EventScript_150100:: @ 8150100
@ 815010A
lockall
setvar 0x8004, 0
- jump Route111_EventScript_15013A
+ goto Route111_EventScript_15013A
end
Route111_EventScript_150116:: @ 8150116
lockall
setvar 0x8004, 1
- jump Route111_EventScript_15013A
+ goto Route111_EventScript_15013A
end
Route111_EventScript_150122:: @ 8150122
lockall
setvar 0x8004, 2
- jump Route111_EventScript_15013A
+ goto Route111_EventScript_15013A
end
@ 815012E
lockall
setvar 0x8004, 3
- jump Route111_EventScript_15013A
+ goto Route111_EventScript_15013A
end
Route111_EventScript_15013A:: @ 815013A
checkitem ITEM_GO_GOGGLES, 1
compare RESULT, 0
- jumpeq Route111_EventScript_150151
+ goto_if_eq Route111_EventScript_150151
setvar 0x4003, 1
releaseall
end
Route111_EventScript_150151:: @ 8150151
msgbox Route111_Text_1A0F93, 4
- closebutton
+ closemessage
compare 0x8004, 0
- callif 1, Route111_EventScript_150188
+ call_if 1, Route111_EventScript_150188
compare 0x8004, 1
- callif 1, Route111_EventScript_150193
+ call_if 1, Route111_EventScript_150193
compare 0x8004, 2
- callif 1, Route111_EventScript_15019E
+ call_if 1, Route111_EventScript_15019E
compare 0x8004, 3
- callif 1, Route111_EventScript_1501A9
+ call_if 1, Route111_EventScript_1501A9
releaseall
end
Route111_EventScript_150188:: @ 8150188
- move 255, Route111_Movement_1501B4
- waitmove 0
+ applymovement 255, Route111_Movement_1501B4
+ waitmovement 0
return
Route111_EventScript_150193:: @ 8150193
- move 255, Route111_Movement_1501B6
- waitmove 0
+ applymovement 255, Route111_Movement_1501B6
+ waitmovement 0
return
Route111_EventScript_15019E:: @ 815019E
- move 255, Route111_Movement_1501B8
- waitmove 0
+ applymovement 255, Route111_Movement_1501B8
+ waitmovement 0
return
Route111_EventScript_1501A9:: @ 81501A9
- move 255, Route111_Movement_1501BA
- waitmove 0
+ applymovement 255, Route111_Movement_1501BA
+ waitmovement 0
return
Route111_Movement_1501B4:: @ 81501B4
@@ -222,14 +222,14 @@ Route111_Movement_1501BA:: @ 81501BA
Route111_EventScript_1501BC:: @ 81501BC
setweather 2
- fademusic 360
+ fadenewbgm 360
doweather
setvar 0x4003, 0
end
Route111_EventScript_1501C9:: @ 81501C9
setweather 8
- fademusic 409
+ fadenewbgm 409
doweather
end
@@ -239,7 +239,7 @@ Route111_EventScript_1501D1:: @ 81501D1
setflag 2115
msgbox Route111_Text_16F705, 5
compare RESULT, 1
- jumpeq Route111_EventScript_1501F3
+ goto_if_eq Route111_EventScript_1501F3
msgbox Route111_Text_16F785, 4
release
end
@@ -247,80 +247,80 @@ Route111_EventScript_1501D1:: @ 81501D1
Route111_EventScript_1501F3:: @ 81501F3
msgbox Route111_Text_16F7B3, 4
trainerbattle 3, OPPONENT_VICTOR, 0, Route111_Text_16F7D2
- move 1, Route111_Movement_1A0841
- waitmove 0
+ applymovement 1, Route111_Movement_1A0841
+ waitmovement 0
call Route111_EventScript_150348
msgbox Route111_Text_16F7FF, 4
- closebutton
- move 1, Route111_Movement_150356
- waitmove 0
- disappear 1
+ closemessage
+ applymovement 1, Route111_Movement_150356
+ waitmovement 0
+ removeobject 1
call Route111_EventScript_15034F
- move 255, Route111_Movement_15035B
- waitmove 0
+ applymovement 255, Route111_Movement_15035B
+ waitmovement 0
call Route111_EventScript_150348
- reappear 2
- move 2, Route111_Movement_150359
- waitmove 0
+ addobject 2
+ applymovement 2, Route111_Movement_150359
+ waitmovement 0
call Route111_EventScript_15034F
msgbox Route111_Text_16F82D, 4
trainerbattle 3, OPPONENT_VICTORIA, 0, Route111_Text_16F8A6
- move 2, Route111_Movement_1A0841
- waitmove 0
+ applymovement 2, Route111_Movement_1A0841
+ waitmovement 0
call Route111_EventScript_150348
msgbox Route111_Text_16F8D5, 4
- closebutton
- move 2, Route111_Movement_150356
- waitmove 0
- disappear 2
+ closemessage
+ applymovement 2, Route111_Movement_150356
+ waitmovement 0
+ removeobject 2
call Route111_EventScript_15034F
- move 255, Route111_Movement_15035B
- waitmove 0
+ applymovement 255, Route111_Movement_15035B
+ waitmovement 0
call Route111_EventScript_150348
- reappear 3
- move 3, Route111_Movement_150359
- waitmove 0
+ addobject 3
+ applymovement 3, Route111_Movement_150359
+ waitmovement 0
call Route111_EventScript_15034F
msgbox Route111_Text_16F90E, 4
trainerbattle 3, OPPONENT_VIVI, 0, Route111_Text_16F956
- move 3, Route111_Movement_1A0841
- waitmove 0
+ applymovement 3, Route111_Movement_1A0841
+ waitmovement 0
call Route111_EventScript_150348
msgbox Route111_Text_16F96C, 4
- closebutton
- move 3, Route111_Movement_150356
- waitmove 0
- disappear 3
+ closemessage
+ applymovement 3, Route111_Movement_150356
+ waitmovement 0
+ removeobject 3
call Route111_EventScript_15034F
- move 255, Route111_Movement_15035B
- waitmove 0
+ applymovement 255, Route111_Movement_15035B
+ waitmovement 0
call Route111_EventScript_150348
- reappear 4
- move 4, Route111_Movement_150359
- waitmove 0
+ addobject 4
+ applymovement 4, Route111_Movement_150359
+ waitmovement 0
call Route111_EventScript_15034F
msgbox Route111_Text_16F991, 4
trainerbattle 3, OPPONENT_VICKY, 0, Route111_Text_16F9EC
msgbox Route111_Text_16FA22, 4
- closebutton
- move 4, Route111_Movement_1A0841
- waitmove 0
+ closemessage
+ applymovement 4, Route111_Movement_1A0841
+ waitmovement 0
call Route111_EventScript_150348
- move 4, Route111_Movement_150356
- waitmove 0
- disappear 4
+ applymovement 4, Route111_Movement_150356
+ waitmovement 0
+ removeobject 4
call Route111_EventScript_15034F
release
end
Route111_EventScript_150348:: @ 8150348
- setdooropened 13, 113
- doorchange
+ opendoor 13, 113
+ waitdooranim
return
Route111_EventScript_15034F:: @ 815034F
- setdoorclosed 13, 113
- doorchange
+ closedoor 13, 113
+ waitdooranim
return
Route111_Movement_150356:: @ 8150356
@@ -392,9 +392,9 @@ Route111_EventScript_1503EC:: @ 81503EC
Route111_EventScript_150403:: @ 8150403
trainerbattle 0, OPPONENT_DUSTY_1, 0, Route111_Text_1BAEC9, Route111_Text_1BAF14
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route111_EventScript_15042A
+ goto_if_eq Route111_EventScript_15042A
msgbox Route111_Text_1BAF5B, 6
end
@@ -420,9 +420,9 @@ Route111_EventScript_15046F:: @ 815046F
Route111_EventScript_150486:: @ 8150486
trainerbattle 0, OPPONENT_WILTON_1, 0, Route111_Text_1BB2E3, Route111_Text_1BB313
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route111_EventScript_1504AD
+ goto_if_eq Route111_EventScript_1504AD
msgbox Route111_Text_1BB33E, 6
end
@@ -433,9 +433,9 @@ Route111_EventScript_1504AD:: @ 81504AD
Route111_EventScript_1504C4:: @ 81504C4
trainerbattle 0, OPPONENT_BROOKE_1, 0, Route111_Text_1BB44F, Route111_Text_1BB49F
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route111_EventScript_1504EB
+ goto_if_eq Route111_EventScript_1504EB
msgbox Route111_Text_1BB4CE, 6
end
diff --git a/data/scripts/maps/Route111_OldLadysRestStop.inc b/data/scripts/maps/Route111_OldLadysRestStop.inc
index 107026a4b..5576a44ff 100644
--- a/data/scripts/maps/Route111_OldLadysRestStop.inc
+++ b/data/scripts/maps/Route111_OldLadysRestStop.inc
@@ -11,20 +11,20 @@ Route111_OldLadysRestStop_EventScript_15BFDB:: @ 815BFDB
faceplayer
msgbox Route111_OldLadysRestStop_Text_1923AF, 5
compare RESULT, 1
- jumpeq Route111_OldLadysRestStop_EventScript_15BFFC
+ goto_if_eq Route111_OldLadysRestStop_EventScript_15BFFC
compare RESULT, 0
- jumpeq Route111_OldLadysRestStop_EventScript_15C029
+ goto_if_eq Route111_OldLadysRestStop_EventScript_15C029
end
Route111_OldLadysRestStop_EventScript_15BFFC:: @ 815BFFC
msgbox Route111_OldLadysRestStop_Text_192423, 4
- closebutton
+ closemessage
call Route111_OldLadysRestStop_EventScript_1A02CA
msgbox Route111_OldLadysRestStop_Text_19244D, 5
compare RESULT, 1
- jumpeq Route111_OldLadysRestStop_EventScript_15BFFC
+ goto_if_eq Route111_OldLadysRestStop_EventScript_15BFFC
compare RESULT, 0
- jumpeq Route111_OldLadysRestStop_EventScript_15C029
+ goto_if_eq Route111_OldLadysRestStop_EventScript_15C029
end
Route111_OldLadysRestStop_EventScript_15C029:: @ 815C029
diff --git a/data/scripts/maps/Route111_WinstrateFamilysHouse.inc b/data/scripts/maps/Route111_WinstrateFamilysHouse.inc
index 3eb514ad2..d9a94ce75 100644
--- a/data/scripts/maps/Route111_WinstrateFamilysHouse.inc
+++ b/data/scripts/maps/Route111_WinstrateFamilysHouse.inc
@@ -6,7 +6,7 @@ Route111_WinstrateFamilysHouse_EventScript_15BF25:: @ 815BF25
faceplayer
setvar 0x8008, 2
msgbox Route111_WinstrateFamilysHouse_Text_191FCE, 4
- jump Route111_WinstrateFamilysHouse_EventScript_15BFC4
+ goto Route111_WinstrateFamilysHouse_EventScript_15BFC4
end
Route111_WinstrateFamilysHouse_EventScript_15BF3A:: @ 815BF3A
@@ -14,18 +14,18 @@ Route111_WinstrateFamilysHouse_EventScript_15BF3A:: @ 815BF3A
faceplayer
setvar 0x8008, 3
checkflag 277
- jumpeq Route111_WinstrateFamilysHouse_EventScript_15BF72
+ goto_if_eq Route111_WinstrateFamilysHouse_EventScript_15BF72
msgbox Route111_WinstrateFamilysHouse_Text_19208A, 4
giveitem ITEM_MACHO_BRACE
compare RESULT, 0
- jumpeq Route111_WinstrateFamilysHouse_EventScript_1A029B
+ goto_if_eq Route111_WinstrateFamilysHouse_EventScript_1A029B
setflag 277
- jump Route111_WinstrateFamilysHouse_EventScript_15BFC4
+ goto Route111_WinstrateFamilysHouse_EventScript_15BFC4
end
Route111_WinstrateFamilysHouse_EventScript_15BF72:: @ 815BF72
msgbox Route111_WinstrateFamilysHouse_Text_19214D, 4
- jump Route111_WinstrateFamilysHouse_EventScript_15BFC4
+ goto Route111_WinstrateFamilysHouse_EventScript_15BFC4
end
Route111_WinstrateFamilysHouse_EventScript_15BF80:: @ 815BF80
@@ -33,7 +33,7 @@ Route111_WinstrateFamilysHouse_EventScript_15BF80:: @ 815BF80
faceplayer
setvar 0x8008, 1
msgbox Route111_WinstrateFamilysHouse_Text_192190, 4
- jump Route111_WinstrateFamilysHouse_EventScript_15BFC4
+ goto Route111_WinstrateFamilysHouse_EventScript_15BFC4
end
Route111_WinstrateFamilysHouse_EventScript_15BF95:: @ 815BF95
@@ -41,20 +41,20 @@ Route111_WinstrateFamilysHouse_EventScript_15BF95:: @ 815BF95
faceplayer
setvar 0x8008, 4
checkflag 4
- jumpeq Route111_WinstrateFamilysHouse_EventScript_15BFB6
+ goto_if_eq Route111_WinstrateFamilysHouse_EventScript_15BFB6
msgbox Route111_WinstrateFamilysHouse_Text_192219, 4
setflag 4
- jump Route111_WinstrateFamilysHouse_EventScript_15BFC4
+ goto Route111_WinstrateFamilysHouse_EventScript_15BFC4
end
Route111_WinstrateFamilysHouse_EventScript_15BFB6:: @ 815BFB6
msgbox Route111_WinstrateFamilysHouse_Text_192334, 4
- jump Route111_WinstrateFamilysHouse_EventScript_15BFC4
+ goto Route111_WinstrateFamilysHouse_EventScript_15BFC4
end
Route111_WinstrateFamilysHouse_EventScript_15BFC4:: @ 815BFC4
- closebutton
- move 0x8008, Route111_WinstrateFamilysHouse_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 0x8008, Route111_WinstrateFamilysHouse_Movement_1A083D
+ waitmovement 0
release
end
diff --git a/data/scripts/maps/Route112.inc b/data/scripts/maps/Route112.inc
index 1c1e36838..d0d464207 100644
--- a/data/scripts/maps/Route112.inc
+++ b/data/scripts/maps/Route112.inc
@@ -38,9 +38,9 @@ Route112_EventScript_150549:: @ 8150549
Route112_EventScript_150560:: @ 8150560
trainerbattle 0, OPPONENT_TRENT_1, 0, Route112_Text_1BB6A0, Route112_Text_1BB707
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route112_EventScript_150587
+ goto_if_eq Route112_EventScript_150587
msgbox Route112_Text_1BB721, 6
end
diff --git a/data/scripts/maps/Route112_CableCarStation.inc b/data/scripts/maps/Route112_CableCarStation.inc
index 016b868a8..22534aa77 100644
--- a/data/scripts/maps/Route112_CableCarStation.inc
+++ b/data/scripts/maps/Route112_CableCarStation.inc
@@ -4,14 +4,14 @@ Route112_CableCarStation_MapScripts:: @ 815C033
.byte 0
Route112_CableCarStation_MapScript1_15C03E:: @ 815C03E
- warp6 Route112, 255, 28, 28
+ setescapewarp Route112, 255, 28, 28
compare 0x40a3, 2
- callif 1, Route112_CableCarStation_EventScript_15C052
+ call_if 1, Route112_CableCarStation_EventScript_15C052
end
Route112_CableCarStation_EventScript_15C052:: @ 815C052
- movespriteperm 1, 7, 4
- spritebehave 1, 9
+ setobjectxyperm 1, 7, 4
+ setobjectmovementtype 1, 9
return
Route112_CableCarStation_MapScript2_15C05E:: @ 815C05E
@@ -20,12 +20,12 @@ Route112_CableCarStation_MapScript2_15C05E:: @ 815C05E
Route112_CableCarStation_EventScript_15C068:: @ 815C068
lockall
- move 255, Route112_CableCarStation_Movement_15C0F5
- move 1, Route112_CableCarStation_Movement_15C0EB
- waitmove 0
+ applymovement 255, Route112_CableCarStation_Movement_15C0F5
+ applymovement 1, Route112_CableCarStation_Movement_15C0EB
+ waitmovement 0
setvar 0x40a3, 0
- movespriteperm 1, 6, 7
- spritebehave 1, 8
+ setobjectxyperm 1, 6, 7
+ setobjectmovementtype 1, 8
releaseall
end
@@ -34,20 +34,20 @@ Route112_CableCarStation_EventScript_15C08C:: @ 815C08C
faceplayer
msgbox Route112_CableCarStation_Text_1924F5, 5
compare RESULT, 1
- jumpeq Route112_CableCarStation_EventScript_15C0AD
+ goto_if_eq Route112_CableCarStation_EventScript_15C0AD
compare RESULT, 0
- jumpeq Route112_CableCarStation_EventScript_15C0DC
+ goto_if_eq Route112_CableCarStation_EventScript_15C0DC
end
Route112_CableCarStation_EventScript_15C0AD:: @ 815C0AD
msgbox Route112_CableCarStation_Text_1925A9, 4
- closebutton
- move 1, Route112_CableCarStation_Movement_15C0E6
- move 255, Route112_CableCarStation_Movement_15C0F0
- waitmove 0
+ closemessage
+ applymovement 1, Route112_CableCarStation_Movement_15C0E6
+ applymovement 255, Route112_CableCarStation_Movement_15C0F0
+ waitmovement 0
setvar 0x8004, 0
setvar 0x40a3, 1
- inccounter GAME_STAT_RODE_CABLE_CAR
+ incrementgamestat GAME_STAT_RODE_CABLE_CAR
special CableCarWarp
special sub_8123218
waitstate
diff --git a/data/scripts/maps/Route113.inc b/data/scripts/maps/Route113.inc
index 1fc5a9345..2eb34cdf3 100644
--- a/data/scripts/maps/Route113.inc
+++ b/data/scripts/maps/Route113.inc
@@ -15,9 +15,9 @@ Route113_MapScript1_1505DA:: @ 81505DA
Route113_EventScript_1505E5:: @ 81505E5
getplayerxy 0x4000, 0x4001
compare 0x4000, 19
- jumpif 0, Route113_EventScript_150604
+ goto_if 0, Route113_EventScript_150604
compare 0x4000, 84
- jumpif 2, Route113_EventScript_150604
+ goto_if 2, Route113_EventScript_150604
setweather 7
return
@@ -60,9 +60,9 @@ Route113_EventScript_150652:: @ 8150652
Route113_EventScript_150669:: @ 8150669
trainerbattle 0, OPPONENT_MADELINE_1, 0, Route113_Text_1BBB27, Route113_Text_1BBB7A
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route113_EventScript_150690
+ goto_if_eq Route113_EventScript_150690
msgbox Route113_Text_1BBB9A, 6
end
@@ -73,9 +73,9 @@ Route113_EventScript_150690:: @ 8150690
Route113_EventScript_1506A7:: @ 81506A7
trainerbattle 0, OPPONENT_LAO_1, 0, Route113_Text_1BBC59, Route113_Text_1BBC90
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route113_EventScript_1506CE
+ goto_if_eq Route113_EventScript_1506CE
msgbox Route113_Text_1BBCAB, 6
end
diff --git a/data/scripts/maps/Route113_GlassWorkshop.inc b/data/scripts/maps/Route113_GlassWorkshop.inc
index 83983f9bb..d0b608339 100644
--- a/data/scripts/maps/Route113_GlassWorkshop.inc
+++ b/data/scripts/maps/Route113_GlassWorkshop.inc
@@ -5,7 +5,7 @@ Route113_GlassWorkshop_MapScripts:: @ 816354A
Route113_GlassWorkshop_MapScript1_163550:: @ 8163550
setflag 2116
compare 0x40be, 1
- callif 1, Route113_GlassWorkshop_EventScript_16355F
+ call_if 1, Route113_GlassWorkshop_EventScript_16355F
end
Route113_GlassWorkshop_EventScript_16355F:: @ 816355F
@@ -16,11 +16,11 @@ Route113_GlassWorkshop_EventScript_163565:: @ 8163565
lock
faceplayer
compare 0x40be, 10
- jumpif 4, Route113_GlassWorkshop_EventScript_1638D2
+ goto_if 4, Route113_GlassWorkshop_EventScript_1638D2
compare 0x40be, 2
- jumpeq Route113_GlassWorkshop_EventScript_1635B5
+ goto_if_eq Route113_GlassWorkshop_EventScript_1635B5
compare 0x40be, 1
- jumpeq Route113_GlassWorkshop_EventScript_1635AB
+ goto_if_eq Route113_GlassWorkshop_EventScript_1635AB
msgbox Route113_GlassWorkshop_Text_19E4E6, 4
giveitem ITEM_SOOT_SACK
setvar 0x40be, 1
@@ -36,13 +36,13 @@ Route113_GlassWorkshop_EventScript_1635AB:: @ 81635AB
Route113_GlassWorkshop_EventScript_1635B5:: @ 81635B5
checkitem ITEM_SOOT_SACK, 1
compare RESULT, 0
- jumpeq Route113_GlassWorkshop_EventScript_1635E4
+ goto_if_eq Route113_GlassWorkshop_EventScript_1635E4
msgbox Route113_GlassWorkshop_Text_19E65B, 4
compare 0x4048, 250
- jumpif 0, Route113_GlassWorkshop_EventScript_163818
+ goto_if 0, Route113_GlassWorkshop_EventScript_163818
message Route113_GlassWorkshop_Text_19E757
- waittext
- jump Route113_GlassWorkshop_EventScript_1635EE
+ waitmessage
+ goto Route113_GlassWorkshop_EventScript_1635EE
end
Route113_GlassWorkshop_EventScript_1635E4:: @ 81635E4
@@ -68,102 +68,102 @@ Route113_GlassWorkshop_EventScript_1635EE:: @ 81635EE
Route113_GlassWorkshop_EventScript_163660:: @ 8163660
setvar 0x8008, 39
- bufferitem 0, 0x8008
+ getitemname 0, 0x8008
setvar 0x800a, 250
compare 0x4048, 250
- jumpif 0, Route113_GlassWorkshop_EventScript_163830
+ goto_if 0, Route113_GlassWorkshop_EventScript_163830
msgbox Route113_GlassWorkshop_Text_19E7CD, 5
compare RESULT, 0
- jumpeq Route113_GlassWorkshop_EventScript_163845
+ goto_if_eq Route113_GlassWorkshop_EventScript_163845
setvar 0x40be, 10
subvar 0x4048, 250
- jump Route113_GlassWorkshop_EventScript_163851
+ goto Route113_GlassWorkshop_EventScript_163851
end
Route113_GlassWorkshop_EventScript_16369C:: @ 816369C
setvar 0x8008, 40
- bufferitem 0, 0x8008
+ getitemname 0, 0x8008
setvar 0x800a, 500
compare 0x4048, 500
- jumpif 0, Route113_GlassWorkshop_EventScript_163830
+ goto_if 0, Route113_GlassWorkshop_EventScript_163830
msgbox Route113_GlassWorkshop_Text_19E7CD, 5
compare RESULT, 0
- jumpeq Route113_GlassWorkshop_EventScript_163845
+ goto_if_eq Route113_GlassWorkshop_EventScript_163845
setvar 0x40be, 11
subvar 0x4048, 500
- jump Route113_GlassWorkshop_EventScript_163851
+ goto Route113_GlassWorkshop_EventScript_163851
end
Route113_GlassWorkshop_EventScript_1636D8:: @ 81636D8
setvar 0x8008, 41
- bufferitem 0, 0x8008
+ getitemname 0, 0x8008
setvar 0x800a, 500
compare 0x4048, 500
- jumpif 0, Route113_GlassWorkshop_EventScript_163830
+ goto_if 0, Route113_GlassWorkshop_EventScript_163830
msgbox Route113_GlassWorkshop_Text_19E7CD, 5
compare RESULT, 0
- jumpeq Route113_GlassWorkshop_EventScript_163845
+ goto_if_eq Route113_GlassWorkshop_EventScript_163845
setvar 0x40be, 12
subvar 0x4048, 500
- jump Route113_GlassWorkshop_EventScript_163851
+ goto Route113_GlassWorkshop_EventScript_163851
end
Route113_GlassWorkshop_EventScript_163714:: @ 8163714
setvar 0x8008, 43
- bufferitem 0, 0x8008
+ getitemname 0, 0x8008
setvar 0x800a, 1000
compare 0x4048, 1000
- jumpif 0, Route113_GlassWorkshop_EventScript_163830
+ goto_if 0, Route113_GlassWorkshop_EventScript_163830
msgbox Route113_GlassWorkshop_Text_19E7CD, 5
compare RESULT, 0
- jumpeq Route113_GlassWorkshop_EventScript_163845
+ goto_if_eq Route113_GlassWorkshop_EventScript_163845
setvar 0x40be, 13
subvar 0x4048, 1000
- jump Route113_GlassWorkshop_EventScript_163851
+ goto Route113_GlassWorkshop_EventScript_163851
end
Route113_GlassWorkshop_EventScript_163750:: @ 8163750
setvar 0x8008, 42
- bufferitem 0, 0x8008
+ getitemname 0, 0x8008
setvar 0x800a, 1000
compare 0x4048, 1000
- jumpif 0, Route113_GlassWorkshop_EventScript_163830
+ goto_if 0, Route113_GlassWorkshop_EventScript_163830
msgbox Route113_GlassWorkshop_Text_19E7CD, 5
compare RESULT, 0
- jumpeq Route113_GlassWorkshop_EventScript_163845
+ goto_if_eq Route113_GlassWorkshop_EventScript_163845
setvar 0x40be, 14
subvar 0x4048, 1000
- jump Route113_GlassWorkshop_EventScript_163851
+ goto Route113_GlassWorkshop_EventScript_163851
end
Route113_GlassWorkshop_EventScript_16378C:: @ 816378C
setvar 0x8009, 1
setvar 0x8008, 13
- bufferdecor 0, 0x8008
+ getdecorname 0, 0x8008
setvar 0x800a, 6000
compare 0x4048, 6000
- jumpif 0, Route113_GlassWorkshop_EventScript_163830
+ goto_if 0, Route113_GlassWorkshop_EventScript_163830
msgbox Route113_GlassWorkshop_Text_19E7CD, 5
compare RESULT, 0
- jumpeq Route113_GlassWorkshop_EventScript_163845
+ goto_if_eq Route113_GlassWorkshop_EventScript_163845
setvar 0x40be, 15
subvar 0x4048, 6000
- jump Route113_GlassWorkshop_EventScript_163851
+ goto Route113_GlassWorkshop_EventScript_163851
end
Route113_GlassWorkshop_EventScript_1637CD:: @ 81637CD
setvar 0x8009, 1
setvar 0x8008, 6
- bufferdecor 0, 0x8008
+ getdecorname 0, 0x8008
setvar 0x800a, 8000
compare 0x4048, 8000
- jumpif 0, Route113_GlassWorkshop_EventScript_163830
+ goto_if 0, Route113_GlassWorkshop_EventScript_163830
msgbox Route113_GlassWorkshop_Text_19E7CD, 5
compare RESULT, 0
- jumpeq Route113_GlassWorkshop_EventScript_163845
+ goto_if_eq Route113_GlassWorkshop_EventScript_163845
setvar 0x40be, 16
subvar 0x4048, 8000
- jump Route113_GlassWorkshop_EventScript_163851
+ goto Route113_GlassWorkshop_EventScript_163851
end
Route113_GlassWorkshop_EventScript_16380E:: @ 816380E
@@ -174,37 +174,37 @@ Route113_GlassWorkshop_EventScript_16380E:: @ 816380E
Route113_GlassWorkshop_EventScript_163818:: @ 8163818
setvar 0x800a, 250
subvar 0x800a, 16456
- buffernum 0, 32778
+ getnumberstring 0, 32778
msgbox Route113_GlassWorkshop_Text_19E697, 4
release
end
Route113_GlassWorkshop_EventScript_163830:: @ 8163830
subvar 0x800a, 16456
- buffernum 1, 32778
+ getnumberstring 1, 32778
message Route113_GlassWorkshop_Text_19E890
- waittext
- jump Route113_GlassWorkshop_EventScript_1635EE
+ waitmessage
+ goto Route113_GlassWorkshop_EventScript_1635EE
end
Route113_GlassWorkshop_EventScript_163845:: @ 8163845
message Route113_GlassWorkshop_Text_19E802
- waittext
- jump Route113_GlassWorkshop_EventScript_1635EE
+ waitmessage
+ goto Route113_GlassWorkshop_EventScript_1635EE
end
Route113_GlassWorkshop_EventScript_163851:: @ 8163851
msgbox Route113_GlassWorkshop_Text_19E827, 4
- closebutton
+ closemessage
fadescreen 1
- playsfx 5
- pause 30
+ playse 5
+ delay 30
fadescreen 0
msgbox Route113_GlassWorkshop_Text_19E9D7, 4
compare 0x8009, 0
- callif 1, Route113_GlassWorkshop_EventScript_163889
+ call_if 1, Route113_GlassWorkshop_EventScript_163889
compare 0x8009, 1
- callif 1, Route113_GlassWorkshop_EventScript_1638A1
+ call_if 1, Route113_GlassWorkshop_EventScript_1638A1
setvar 0x40be, 2
release
end
@@ -212,13 +212,13 @@ Route113_GlassWorkshop_EventScript_163851:: @ 8163851
Route113_GlassWorkshop_EventScript_163889:: @ 8163889
giveitem 0x8008
compare RESULT, 0
- jumpeq Route113_GlassWorkshop_EventScript_1638B4
+ goto_if_eq Route113_GlassWorkshop_EventScript_1638B4
return
Route113_GlassWorkshop_EventScript_1638A1:: @ 81638A1
givedecoration 0x8008
compare RESULT, 0
- jumpeq Route113_GlassWorkshop_EventScript_1638C3
+ goto_if_eq Route113_GlassWorkshop_EventScript_1638C3
return
Route113_GlassWorkshop_EventScript_1638B4:: @ 81638B4
@@ -247,58 +247,58 @@ Route113_GlassWorkshop_EventScript_1638D2:: @ 81638D2
Route113_GlassWorkshop_EventScript_163925:: @ 8163925
setvar 0x8009, 0
setvar 0x8008, 39
- bufferitem 0, 0x8008
- jump Route113_GlassWorkshop_EventScript_1639B1
+ getitemname 0, 0x8008
+ goto Route113_GlassWorkshop_EventScript_1639B1
end
Route113_GlassWorkshop_EventScript_163939:: @ 8163939
setvar 0x8009, 0
setvar 0x8008, 40
- bufferitem 0, 0x8008
- jump Route113_GlassWorkshop_EventScript_1639B1
+ getitemname 0, 0x8008
+ goto Route113_GlassWorkshop_EventScript_1639B1
end
Route113_GlassWorkshop_EventScript_16394D:: @ 816394D
setvar 0x8009, 0
setvar 0x8008, 41
- bufferitem 0, 0x8008
- jump Route113_GlassWorkshop_EventScript_1639B1
+ getitemname 0, 0x8008
+ goto Route113_GlassWorkshop_EventScript_1639B1
end
Route113_GlassWorkshop_EventScript_163961:: @ 8163961
setvar 0x8009, 0
setvar 0x8008, 43
- bufferitem 0, 0x8008
- jump Route113_GlassWorkshop_EventScript_1639B1
+ getitemname 0, 0x8008
+ goto Route113_GlassWorkshop_EventScript_1639B1
end
Route113_GlassWorkshop_EventScript_163975:: @ 8163975
setvar 0x8009, 0
setvar 0x8008, 42
- bufferitem 0, 0x8008
- jump Route113_GlassWorkshop_EventScript_1639B1
+ getitemname 0, 0x8008
+ goto Route113_GlassWorkshop_EventScript_1639B1
end
Route113_GlassWorkshop_EventScript_163989:: @ 8163989
setvar 0x8009, 1
setvar 0x8008, 13
- bufferdecor 0, 13
- jump Route113_GlassWorkshop_EventScript_1639B1
+ getdecorname 0, 13
+ goto Route113_GlassWorkshop_EventScript_1639B1
end
Route113_GlassWorkshop_EventScript_16399D:: @ 816399D
setvar 0x8009, 1
setvar 0x8008, 6
- bufferdecor 0, 6
- jump Route113_GlassWorkshop_EventScript_1639B1
+ getdecorname 0, 6
+ goto Route113_GlassWorkshop_EventScript_1639B1
end
Route113_GlassWorkshop_EventScript_1639B1:: @ 81639B1
msgbox Route113_GlassWorkshop_Text_19E9D7, 4
compare 0x8009, 0
- callif 1, Route113_GlassWorkshop_EventScript_163889
+ call_if 1, Route113_GlassWorkshop_EventScript_163889
compare 0x8009, 1
- callif 1, Route113_GlassWorkshop_EventScript_1638A1
+ call_if 1, Route113_GlassWorkshop_EventScript_1638A1
setvar 0x40be, 2
release
end
diff --git a/data/scripts/maps/Route114.inc b/data/scripts/maps/Route114.inc
index cfe1dfe7d..0730db23a 100644
--- a/data/scripts/maps/Route114.inc
+++ b/data/scripts/maps/Route114.inc
@@ -4,16 +4,16 @@ Route114_MapScripts:: @ 8150732
Route114_EventScript_150733:: @ 8150733
lock
faceplayer
- checkdailyflags
+ dodailyevents
checkflag 2251
- jumpeq Route114_EventScript_150778
+ goto_if_eq Route114_EventScript_150778
msgbox Route114_Text_1C5803, 4
random 5
addvar RESULT, 15
addvar RESULT, 133
giveitem RESULT
compare RESULT, 0
- jumpeq Route114_EventScript_1A029B
+ goto_if_eq Route114_EventScript_1A029B
setflag 2251
msgbox Route114_Text_1C5861, 4
release
@@ -28,11 +28,11 @@ Route114_EventScript_150782:: @ 8150782
lock
faceplayer
checkflag 231
- jumpeq Route114_EventScript_1507B9
+ goto_if_eq Route114_EventScript_1507B9
msgbox Route114_Text_170154, 4
giveitem ITEM_TM05
compare RESULT, 0
- jumpeq Route114_EventScript_1A029B
+ goto_if_eq Route114_EventScript_1A029B
setflag 231
msgbox Route114_Text_1701C5, 4
release
@@ -46,8 +46,8 @@ Route114_EventScript_1507B9:: @ 81507B9
Route114_EventScript_1507C3:: @ 81507C3
lock
faceplayer
- checksound
- pokecry SPECIES_POOCHYENA, 2
+ waitse
+ playpokecry SPECIES_POOCHYENA, 2
msgbox Route114_Text_1701F9, 4
waitpokecry
release
@@ -87,9 +87,9 @@ Route114_EventScript_150836:: @ 8150836
Route114_EventScript_15084D:: @ 815084D
trainerbattle 0, OPPONENT_STEVE_1, 0, Route114_Text_1BC2F5, Route114_Text_1BC327
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route114_EventScript_150874
+ goto_if_eq Route114_EventScript_150874
msgbox Route114_Text_1BC337, 6
end
@@ -100,9 +100,9 @@ Route114_EventScript_150874:: @ 8150874
Route114_EventScript_15088B:: @ 815088B
trainerbattle 0, OPPONENT_BERNIE_1, 0, Route114_Text_1BC45A, Route114_Text_1BC499
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route114_EventScript_1508B2
+ goto_if_eq Route114_EventScript_1508B2
msgbox Route114_Text_1BC4B5, 6
end
diff --git a/data/scripts/maps/Route114_FossilManiacsHouse.inc b/data/scripts/maps/Route114_FossilManiacsHouse.inc
index 50305dc04..b217f24c4 100644
--- a/data/scripts/maps/Route114_FossilManiacsHouse.inc
+++ b/data/scripts/maps/Route114_FossilManiacsHouse.inc
@@ -10,11 +10,11 @@ Route114_FossilManiacsHouse_EventScript_15C1C3:: @ 815C1C3
lock
faceplayer
checkflag 261
- jumpeq Route114_FossilManiacsHouse_EventScript_15C1F2
+ goto_if_eq Route114_FossilManiacsHouse_EventScript_15C1F2
msgbox Route114_FossilManiacsHouse_Text_1925E1, 4
giveitem ITEM_TM28
compare RESULT, 0
- jumpeq Route114_FossilManiacsHouse_EventScript_1A029B
+ goto_if_eq Route114_FossilManiacsHouse_EventScript_1A029B
setflag 261
release
end
diff --git a/data/scripts/maps/Route114_FossilManiacsTunnel.inc b/data/scripts/maps/Route114_FossilManiacsTunnel.inc
index 7986a0436..13843f758 100644
--- a/data/scripts/maps/Route114_FossilManiacsTunnel.inc
+++ b/data/scripts/maps/Route114_FossilManiacsTunnel.inc
@@ -5,13 +5,13 @@ Route114_FossilManiacsTunnel_EventScript_15C20F:: @ 815C20F
lock
faceplayer
checkflag 267
- jumpeq Route114_FossilManiacsTunnel_EventScript_15C24E
+ goto_if_eq Route114_FossilManiacsTunnel_EventScript_15C24E
checkitem ITEM_ROOT_FOSSIL, 1
compare RESULT, 1
- jumpeq Route114_FossilManiacsTunnel_EventScript_15C244
+ goto_if_eq Route114_FossilManiacsTunnel_EventScript_15C244
checkitem ITEM_CLAW_FOSSIL, 1
compare RESULT, 1
- jumpeq Route114_FossilManiacsTunnel_EventScript_15C244
+ goto_if_eq Route114_FossilManiacsTunnel_EventScript_15C244
msgbox Route114_FossilManiacsTunnel_Text_192795, 4
release
end
diff --git a/data/scripts/maps/Route114_LanettesHouse.inc b/data/scripts/maps/Route114_LanettesHouse.inc
index ff8a1c565..e4334647c 100644
--- a/data/scripts/maps/Route114_LanettesHouse.inc
+++ b/data/scripts/maps/Route114_LanettesHouse.inc
@@ -10,7 +10,7 @@ Route114_LanettesHouse_EventScript_15C262:: @ 815C262
lock
faceplayer
checkflag 131
- jumpeq Route114_LanettesHouse_EventScript_15C28F
+ goto_if_eq Route114_LanettesHouse_EventScript_15C28F
setflag 2123
msgbox Route114_LanettesHouse_Text_192A0D, 4
.ifdef SAPPHIRE
@@ -19,7 +19,7 @@ Route114_LanettesHouse_EventScript_15C262:: @ 815C262
givedecoration 100
.endif
compare RESULT, 0
- jumpeq Route114_LanettesHouse_EventScript_1A02AE
+ goto_if_eq Route114_LanettesHouse_EventScript_1A02AE
setflag 131
release
end
@@ -33,7 +33,7 @@ Route114_LanettesHouse_EventScript_15C299:: @ 815C299
lockall
msgbox Route114_LanettesHouse_Text_192B4A, 5
compare RESULT, 1
- jumpeq Route114_LanettesHouse_EventScript_15C2B7
+ goto_if_eq Route114_LanettesHouse_EventScript_15C2B7
msgbox Route114_LanettesHouse_Text_192DA9, 4
releaseall
end
@@ -41,7 +41,7 @@ Route114_LanettesHouse_EventScript_15C299:: @ 815C299
Route114_LanettesHouse_EventScript_15C2B7:: @ 815C2B7
msgbox Route114_LanettesHouse_Text_192C01, 5
compare RESULT, 1
- callif 1, Route114_LanettesHouse_EventScript_15C2CC
+ call_if 1, Route114_LanettesHouse_EventScript_15C2CC
releaseall
end
diff --git a/data/scripts/maps/Route115.inc b/data/scripts/maps/Route115.inc
index 2b0d744ca..8e0eb7855 100644
--- a/data/scripts/maps/Route115.inc
+++ b/data/scripts/maps/Route115.inc
@@ -15,9 +15,9 @@ Route115_EventScript_150940:: @ 8150940
Route115_EventScript_150949:: @ 8150949
trainerbattle 0, OPPONENT_TIMOTHY_1, 0, Route115_Text_1BC9AC, Route115_Text_1BC9E6
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route115_EventScript_150970
+ goto_if_eq Route115_EventScript_150970
msgbox Route115_Text_1BCA0E, 6
end
@@ -33,9 +33,9 @@ Route115_EventScript_150987:: @ 8150987
Route115_EventScript_15099E:: @ 815099E
trainerbattle 0, OPPONENT_NOB_1, 0, Route115_Text_1BCB8A, Route115_Text_1BCBC1
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route115_EventScript_1509C5
+ goto_if_eq Route115_EventScript_1509C5
msgbox Route115_Text_1BCBDE, 6
end
@@ -46,9 +46,9 @@ Route115_EventScript_1509C5:: @ 81509C5
Route115_EventScript_1509DC:: @ 81509DC
trainerbattle 0, OPPONENT_CYNDY_1, 0, Route115_Text_1BCCF4, Route115_Text_1BCD32
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route115_EventScript_150A03
+ goto_if_eq Route115_EventScript_150A03
msgbox Route115_Text_1BCD4C, 6
end
diff --git a/data/scripts/maps/Route116.inc b/data/scripts/maps/Route116.inc
index f5ef82f8b..beb01e083 100644
--- a/data/scripts/maps/Route116.inc
+++ b/data/scripts/maps/Route116.inc
@@ -4,20 +4,20 @@ Route116_MapScripts:: @ 8150A31
Route116_MapScript1_150A37:: @ 8150A37
checkflag 143
- callif 1, Route116_EventScript_150A41
+ call_if 1, Route116_EventScript_150A41
end
Route116_EventScript_150A41:: @ 8150A41
- movespriteperm 21, 41, 10
+ setobjectxyperm 21, 41, 10
return
Route116_EventScript_150A49:: @ 8150A49
lock
faceplayer
checkflag 143
- jumpeq Route116_EventScript_150A67
+ goto_if_eq Route116_EventScript_150A67
checkflag 142
- jumpeq Route116_EventScript_150A71
+ goto_if_eq Route116_EventScript_150A71
msgbox Route116_Text_1703CF, 4
release
end
@@ -36,45 +36,45 @@ Route116_EventScript_150A7B:: @ 8150A7B
lock
faceplayer
checkflag 287
- jumpeq Route116_EventScript_150B04
+ goto_if_eq Route116_EventScript_150B04
msgbox Route116_Text_1705AE, 4
- jump Route116_EventScript_150A94
+ goto Route116_EventScript_150A94
end
Route116_EventScript_150A94:: @ 8150A94
setflag 287
giveitem ITEM_REPEAT_BALL
compare RESULT, 0
- jumpeq Route116_EventScript_150B12
+ goto_if_eq Route116_EventScript_150B12
msgbox Route116_Text_1707B8, 4
- closebutton
+ closemessage
compare FACING, 2
- callif 1, Route116_EventScript_150AEE
+ call_if 1, Route116_EventScript_150AEE
compare FACING, 1
- callif 1, Route116_EventScript_150AEE
+ call_if 1, Route116_EventScript_150AEE
compare FACING, 3
- callif 1, Route116_EventScript_150AEE
+ call_if 1, Route116_EventScript_150AEE
compare FACING, 4
- callif 1, Route116_EventScript_150AF9
- disappear LAST_TALKED
+ call_if 1, Route116_EventScript_150AF9
+ removeobject LAST_TALKED
clearflag 949
setflag 256
release
end
Route116_EventScript_150AEE:: @ 8150AEE
- move LAST_TALKED, Route116_Movement_150B1C
- waitmove 0
+ applymovement LAST_TALKED, Route116_Movement_150B1C
+ waitmovement 0
return
Route116_EventScript_150AF9:: @ 8150AF9
- move LAST_TALKED, Route116_Movement_150B25
- waitmove 0
+ applymovement LAST_TALKED, Route116_Movement_150B25
+ waitmovement 0
return
Route116_EventScript_150B04:: @ 8150B04
msgbox Route116_Text_170865, 4
- jump Route116_EventScript_150A94
+ goto Route116_EventScript_150A94
end
Route116_EventScript_150B12:: @ 8150B12
@@ -136,9 +136,9 @@ Route116_EventScript_150B5D:: @ 8150B5D
Route116_EventScript_150B6E:: @ 8150B6E
lockall
- move 11, Route116_Movement_1A0843
- move 255, Route116_Movement_1A083F
- waitmove 0
+ applymovement 11, Route116_Movement_1A0843
+ applymovement 255, Route116_Movement_1A083F
+ waitmovement 0
msgbox Route116_Text_17032A, 4
setvar 0x406f, 2
releaseall
@@ -149,58 +149,58 @@ Route116_EventScript_150B8F:: @ 8150B8F
faceplayer
checkitem ITEM_BLACK_GLASSES, 1
compare RESULT, 1
- jumpeq Route116_EventScript_150BCA
- specialval RESULT, sub_810F828
+ goto_if_eq Route116_EventScript_150BCA
+ specialvar RESULT, sub_810F828
compare RESULT, 1
- jumpeq Route116_EventScript_150BBB
+ goto_if_eq Route116_EventScript_150BBB
msgbox Route116_Text_1708EE, 4
release
end
Route116_EventScript_150BBB:: @ 8150BBB
msgbox Route116_Text_1709B7, 4
- closebutton
- jump Route116_EventScript_150C03
+ closemessage
+ goto Route116_EventScript_150C03
end
Route116_EventScript_150BCA:: @ 8150BCA
msgbox Route116_Text_1708EE, 4
msgbox Route116_Text_170921, 4
- specialval RESULT, sub_810F828
+ specialvar RESULT, sub_810F828
compare RESULT, 1
- jumpeq Route116_EventScript_150BF4
+ goto_if_eq Route116_EventScript_150BF4
msgbox Route116_Text_170A03, 4
release
end
Route116_EventScript_150BF4:: @ 8150BF4
msgbox Route116_Text_17094D, 4
- closebutton
- jump Route116_EventScript_150C03
+ closemessage
+ goto Route116_EventScript_150C03
end
Route116_EventScript_150C03:: @ 8150C03
- pause 20
+ delay 20
compare FACING, 2
- callif 1, Route116_EventScript_150C37
+ call_if 1, Route116_EventScript_150C37
compare FACING, 1
- callif 1, Route116_EventScript_150C37
+ call_if 1, Route116_EventScript_150C37
compare FACING, 3
- callif 1, Route116_EventScript_150C37
+ call_if 1, Route116_EventScript_150C37
compare FACING, 4
- callif 1, Route116_EventScript_150C42
- disappear LAST_TALKED
+ call_if 1, Route116_EventScript_150C42
+ removeobject LAST_TALKED
release
end
Route116_EventScript_150C37:: @ 8150C37
- move LAST_TALKED, Route116_Movement_150C4D
- waitmove 0
+ applymovement LAST_TALKED, Route116_Movement_150C4D
+ waitmovement 0
return
Route116_EventScript_150C42:: @ 8150C42
- move LAST_TALKED, Route116_Movement_150C57
- waitmove 0
+ applymovement LAST_TALKED, Route116_Movement_150C57
+ waitmovement 0
return
Route116_Movement_150C4D:: @ 8150C4D
@@ -240,9 +240,9 @@ Route116_EventScript_150C79:: @ 8150C79
Route116_EventScript_150C90:: @ 8150C90
trainerbattle 0, OPPONENT_JERRY_1, 0, Route116_Text_1BD1C0, Route116_Text_1BD21A
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route116_EventScript_150CB7
+ goto_if_eq Route116_EventScript_150CB7
msgbox Route116_Text_1BD248, 6
end
@@ -263,9 +263,9 @@ Route116_EventScript_150CE5:: @ 8150CE5
Route116_EventScript_150CFC:: @ 8150CFC
trainerbattle 0, OPPONENT_KAREN_1, 0, Route116_Text_1BD377, Route116_Text_1BD3AC
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route116_EventScript_150D23
+ goto_if_eq Route116_EventScript_150D23
msgbox Route116_Text_1BD3C3, 6
end
diff --git a/data/scripts/maps/Route116_TunnelersRestHouse.inc b/data/scripts/maps/Route116_TunnelersRestHouse.inc
index d141fae37..10991c38c 100644
--- a/data/scripts/maps/Route116_TunnelersRestHouse.inc
+++ b/data/scripts/maps/Route116_TunnelersRestHouse.inc
@@ -18,7 +18,7 @@ Route116_TunnelersRestHouse_EventScript_15C2FA:: @ 815C2FA
lock
faceplayer
checkflag 199
- jumpeq Route116_TunnelersRestHouse_EventScript_15C30F
+ goto_if_eq Route116_TunnelersRestHouse_EventScript_15C30F
msgbox Route116_TunnelersRestHouse_Text_193135, 4
release
end
diff --git a/data/scripts/maps/Route117.inc b/data/scripts/maps/Route117.inc
index 61dbf6a30..40affd3fd 100644
--- a/data/scripts/maps/Route117.inc
+++ b/data/scripts/maps/Route117.inc
@@ -8,8 +8,8 @@ Route117_MapScript1_150D40:: @ 8150D40
Route117_EventScript_150D46:: @ 8150D46
checkflag 134
- jumpif 0, Route117_EventScript_150D56
- movespriteperm 3, 47, 6
+ goto_if 0, Route117_EventScript_150D56
+ setobjectxyperm 3, 47, 6
Route117_EventScript_150D56:: @ 8150D56
return
@@ -40,9 +40,9 @@ Route117_EventScript_150D84:: @ 8150D84
Route117_EventScript_150D8D:: @ 8150D8D
trainerbattle 0, OPPONENT_ISAAC_1, 0, Route117_Text_1BD49E, Route117_Text_1BD4D9
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route117_EventScript_150DB4
+ goto_if_eq Route117_EventScript_150DB4
msgbox Route117_Text_1BD4F9, 6
end
@@ -53,9 +53,9 @@ Route117_EventScript_150DB4:: @ 8150DB4
Route117_EventScript_150DCB:: @ 8150DCB
trainerbattle 0, OPPONENT_LYDIA_1, 0, Route117_Text_1BD634, Route117_Text_1BD67B
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route117_EventScript_150DF2
+ goto_if_eq Route117_EventScript_150DF2
msgbox Route117_Text_1BD69B, 6
end
@@ -66,9 +66,9 @@ Route117_EventScript_150DF2:: @ 8150DF2
Route117_EventScript_150E09:: @ 8150E09
trainerbattle 0, OPPONENT_DYLAN_1, 0, Route117_Text_1BD79A, Route117_Text_1BD7E0
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route117_EventScript_150E30
+ goto_if_eq Route117_EventScript_150E30
msgbox Route117_Text_1BD7F5, 6
end
@@ -79,9 +79,9 @@ Route117_EventScript_150E30:: @ 8150E30
Route117_EventScript_150E47:: @ 8150E47
trainerbattle 0, OPPONENT_MARIA_1, 0, Route117_Text_1BD914, Route117_Text_1BD965
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route117_EventScript_150E6E
+ goto_if_eq Route117_EventScript_150E6E
msgbox Route117_Text_1BD98F, 6
end
@@ -97,9 +97,9 @@ Route117_EventScript_150E85:: @ 8150E85
Route117_EventScript_150E9C:: @ 8150E9C
trainerbattle 4, OPPONENT_ANNA_AND_MEG_1, 0, Route117_Text_1BDBC3, Route117_Text_1BDC07, Route117_Text_1BDC96
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route117_EventScript_150EC7
+ goto_if_eq Route117_EventScript_150EC7
msgbox Route117_Text_1BDC44, 6
end
@@ -110,9 +110,9 @@ Route117_EventScript_150EC7:: @ 8150EC7
Route117_EventScript_150EE2:: @ 8150EE2
trainerbattle 4, OPPONENT_ANNA_AND_MEG_1, 0, Route117_Text_1BDCD2, Route117_Text_1BDD1E, Route117_Text_1BDD8B
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route117_EventScript_150F0D
+ goto_if_eq Route117_EventScript_150F0D
msgbox Route117_Text_1BDD4E, 6
end
diff --git a/data/scripts/maps/Route118.inc b/data/scripts/maps/Route118.inc
index 0b5b4748e..b96346f15 100644
--- a/data/scripts/maps/Route118.inc
+++ b/data/scripts/maps/Route118.inc
@@ -10,12 +10,12 @@ Route118_EventScript_150F34:: @ 8150F34
lock
faceplayer
checkflag 227
- jumpeq Route118_EventScript_150F89
+ goto_if_eq Route118_EventScript_150F89
msgbox Route118_Text_170F12, 5
compare RESULT, 1
- jumpeq Route118_EventScript_150F5E
+ goto_if_eq Route118_EventScript_150F5E
compare RESULT, 0
- jumpeq Route118_EventScript_150F7F
+ goto_if_eq Route118_EventScript_150F7F
end
Route118_EventScript_150F5E:: @ 8150F5E
@@ -51,62 +51,62 @@ Route118_EventScript_150FA5:: @ 8150FA5
Route118_EventScript_150FAE:: @ 8150FAE
lockall
setvar 0x8008, 0
- move 255, Route118_Movement_1A0841
- waitmove 0
- move 19, Route118_Movement_151069
- waitmove 0
- jump Route118_EventScript_151004
+ applymovement 255, Route118_Movement_1A0841
+ waitmovement 0
+ applymovement 19, Route118_Movement_151069
+ waitmovement 0
+ goto Route118_EventScript_151004
end
Route118_EventScript_150FCE:: @ 8150FCE
lockall
setvar 0x8008, 1
- move 255, Route118_Movement_1A0841
- waitmove 0
- jump Route118_EventScript_151004
+ applymovement 255, Route118_Movement_1A0841
+ waitmovement 0
+ goto Route118_EventScript_151004
end
Route118_EventScript_150FE4:: @ 8150FE4
lockall
setvar 0x8008, 2
- move 255, Route118_Movement_1A0841
- waitmove 0
- move 19, Route118_Movement_15106B
- waitmove 0
- jump Route118_EventScript_151004
+ applymovement 255, Route118_Movement_1A0841
+ waitmovement 0
+ applymovement 19, Route118_Movement_15106B
+ waitmovement 0
+ goto Route118_EventScript_151004
end
Route118_EventScript_151004:: @ 8151004
- playsfx 10
- move 19, Route118_Movement_15106D
- waitmove 0
- pause 30
+ playse 10
+ applymovement 19, Route118_Movement_15106D
+ waitmovement 0
+ delay 30
msgbox Route118_Text_170D66, 4
- closebutton
+ closemessage
compare 0x8008, 0
- callif 1, Route118_EventScript_151048
+ call_if 1, Route118_EventScript_151048
compare 0x8008, 1
- callif 1, Route118_EventScript_151053
+ call_if 1, Route118_EventScript_151053
compare 0x8008, 2
- callif 1, Route118_EventScript_15105E
+ call_if 1, Route118_EventScript_15105E
setvar 0x4071, 1
- disappear 19
+ removeobject 19
releaseall
end
Route118_EventScript_151048:: @ 8151048
- move 19, Route118_Movement_151071
- waitmove 0
+ applymovement 19, Route118_Movement_151071
+ waitmovement 0
return
Route118_EventScript_151053:: @ 8151053
- move 19, Route118_Movement_15107C
- waitmove 0
+ applymovement 19, Route118_Movement_15107C
+ waitmovement 0
return
Route118_EventScript_15105E:: @ 815105E
- move 19, Route118_Movement_151086
- waitmove 0
+ applymovement 19, Route118_Movement_151086
+ waitmovement 0
return
Route118_Movement_151069:: @ 8151069
@@ -161,9 +161,9 @@ Route118_Movement_151086:: @ 8151086
Route118_EventScript_15108F:: @ 815108F
trainerbattle 0, OPPONENT_ROSE_1, 0, Route118_Text_1BDFF4, Route118_Text_1BE03C
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route118_EventScript_1510B6
+ goto_if_eq Route118_EventScript_1510B6
msgbox Route118_Text_1BE05E, 6
end
@@ -184,9 +184,9 @@ Route118_EventScript_1510E4:: @ 81510E4
Route118_EventScript_1510FB:: @ 81510FB
trainerbattle 0, OPPONENT_DALTON_1, 0, Route118_Text_1BE3E8, Route118_Text_1BE406
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route118_EventScript_151122
+ goto_if_eq Route118_EventScript_151122
msgbox Route118_Text_1BE413, 6
end
diff --git a/data/scripts/maps/Route119.inc b/data/scripts/maps/Route119.inc
index 55a3fb1dc..2179a7e18 100644
--- a/data/scripts/maps/Route119.inc
+++ b/data/scripts/maps/Route119.inc
@@ -5,22 +5,22 @@ Route119_MapScripts:: @ 8151167
Route119_MapScript1_151172:: @ 8151172
checkflag 2145
- callif 1, Route119_EventScript_15117C
+ call_if 1, Route119_EventScript_15117C
end
Route119_EventScript_15117C:: @ 815117C
compare 0x8004, 6
- callif 1, Route119_EventScript_151193
+ call_if 1, Route119_EventScript_151193
compare 0x8004, 7
- callif 1, Route119_EventScript_151197
+ call_if 1, Route119_EventScript_151197
return
Route119_EventScript_151193:: @ 8151193
- disappear 35
+ removeobject 35
return
Route119_EventScript_151197:: @ 8151197
- disappear 36
+ removeobject 36
return
Route119_MapScript1_15119B:: @ 815119B
@@ -28,7 +28,7 @@ Route119_MapScript1_15119B:: @ 815119B
call Route119_EventScript_1A0172
call Route119_EventScript_1A0196
compare 0x40b3, 1
- callif 1, Route119_EventScript_1511B9
+ call_if 1, Route119_EventScript_1511B9
special SetRoute119Weather
end
@@ -40,51 +40,51 @@ Route119_EventScript_1511B9:: @ 81511B9
Route119_EventScript_1511C5:: @ 81511C5
setvar 0x4001, 1
- jump Route119_EventScript_1511DB
+ goto Route119_EventScript_1511DB
end
Route119_EventScript_1511D0:: @ 81511D0
setvar 0x4001, 2
- jump Route119_EventScript_1511DB
+ goto Route119_EventScript_1511DB
end
Route119_EventScript_1511DB:: @ 81511DB
lockall
- reappear 25
- checkgender
+ addobject 25
+ checkplayergender
compare RESULT, 0
- callif 1, Route119_EventScript_151254
+ call_if 1, Route119_EventScript_151254
compare RESULT, 1
- callif 1, Route119_EventScript_151259
- pause 65
+ call_if 1, Route119_EventScript_151259
+ delay 65
compare 0x4001, 1
- callif 1, Route119_EventScript_1513A6
+ call_if 1, Route119_EventScript_1513A6
compare 0x4001, 2
- callif 1, Route119_EventScript_1513B1
- move 255, Route119_Movement_1A0845
- waitmove 0
- pause 30
+ call_if 1, Route119_EventScript_1513B1
+ applymovement 255, Route119_Movement_1A0845
+ waitmovement 0
+ delay 30
compare 0x4001, 1
- callif 1, Route119_EventScript_1513D2
+ call_if 1, Route119_EventScript_1513D2
compare 0x4001, 2
- callif 1, Route119_EventScript_1513E1
- disappear 25
- reappear 16
- pause 30
- checkgender
+ call_if 1, Route119_EventScript_1513E1
+ removeobject 25
+ addobject 16
+ delay 30
+ checkplayergender
compare RESULT, 0
- jumpeq Route119_EventScript_15125E
+ goto_if_eq Route119_EventScript_15125E
compare RESULT, 1
- jumpeq Route119_EventScript_1512D8
+ goto_if_eq Route119_EventScript_1512D8
releaseall
end
Route119_EventScript_151254:: @ 8151254
- playmusic 415, 1
+ playbgm 415, 1
return
Route119_EventScript_151259:: @ 8151259
- playmusic 421, 1
+ playbgm 421, 1
return
Route119_EventScript_15125E:: @ 815125E
@@ -97,24 +97,24 @@ Route119_EventScript_15125E:: @ 815125E
Route119_EventScript_15128D:: @ 815128D
trainerbattle 3, OPPONENT_MAY_6, 0, Route119_Text_171156
- jump Route119_EventScript_1512BD
+ goto Route119_EventScript_1512BD
end
Route119_EventScript_15129D:: @ 815129D
trainerbattle 3, OPPONENT_MAY_9, 0, Route119_Text_171156
- jump Route119_EventScript_1512BD
+ goto Route119_EventScript_1512BD
end
Route119_EventScript_1512AD:: @ 81512AD
trainerbattle 3, OPPONENT_MAY_3, 0, Route119_Text_171156
- jump Route119_EventScript_1512BD
+ goto Route119_EventScript_1512BD
end
Route119_EventScript_1512BD:: @ 81512BD
msgbox Route119_Text_1711B1, 4
call Route119_EventScript_151352
msgbox Route119_Text_171214, 4
- jump Route119_EventScript_151362
+ goto Route119_EventScript_151362
end
Route119_EventScript_1512D8:: @ 81512D8
@@ -127,24 +127,24 @@ Route119_EventScript_1512D8:: @ 81512D8
Route119_EventScript_151307:: @ 8151307
trainerbattle 3, OPPONENT_BRENDAN_6, 0, Route119_Text_1713E2
- jump Route119_EventScript_151337
+ goto Route119_EventScript_151337
end
Route119_EventScript_151317:: @ 8151317
trainerbattle 3, OPPONENT_BRENDAN_9, 0, Route119_Text_1713E2
- jump Route119_EventScript_151337
+ goto Route119_EventScript_151337
end
Route119_EventScript_151327:: @ 8151327
trainerbattle 3, OPPONENT_BRENDAN_3, 0, Route119_Text_1713E2
- jump Route119_EventScript_151337
+ goto Route119_EventScript_151337
end
Route119_EventScript_151337:: @ 8151337
msgbox Route119_Text_17140B, 4
call Route119_EventScript_151352
msgbox Route119_Text_171475, 4
- jump Route119_EventScript_151362
+ goto Route119_EventScript_151362
end
Route119_EventScript_151352:: @ 8151352
@@ -153,53 +153,53 @@ Route119_EventScript_151352:: @ 8151352
return
Route119_EventScript_151362:: @ 8151362
- closebutton
+ closemessage
compare 0x4001, 1
- callif 1, Route119_EventScript_1513D2
+ call_if 1, Route119_EventScript_1513D2
compare 0x4001, 2
- callif 1, Route119_EventScript_1513E1
- disappear 16
- reappear 25
- pause 30
+ call_if 1, Route119_EventScript_1513E1
+ removeobject 16
+ addobject 25
+ delay 30
compare 0x4001, 1
- callif 1, Route119_EventScript_1513BC
+ call_if 1, Route119_EventScript_1513BC
compare 0x4001, 2
- callif 1, Route119_EventScript_1513C7
- disappear 25
+ call_if 1, Route119_EventScript_1513C7
+ removeobject 25
setvar 0x4072, 1
- playmusicbattle 0
- fadedefault
+ savebgm 0
+ fadedefaultbgm
releaseall
end
Route119_EventScript_1513A6:: @ 81513A6
- move 25, Route119_Movement_1513F0
- waitmove 0
+ applymovement 25, Route119_Movement_1513F0
+ waitmovement 0
return
Route119_EventScript_1513B1:: @ 81513B1
- move 25, Route119_Movement_1513FA
- waitmove 0
+ applymovement 25, Route119_Movement_1513FA
+ waitmovement 0
return
Route119_EventScript_1513BC:: @ 81513BC
- move 25, Route119_Movement_151405
- waitmove 0
+ applymovement 25, Route119_Movement_151405
+ waitmovement 0
return
Route119_EventScript_1513C7:: @ 81513C7
- move 25, Route119_Movement_15140F
- waitmove 0
+ applymovement 25, Route119_Movement_15140F
+ waitmovement 0
return
Route119_EventScript_1513D2:: @ 81513D2
- movespriteperm 16, 25, 32
- movespriteperm 25, 25, 32
+ setobjectxyperm 16, 25, 32
+ setobjectxyperm 25, 25, 32
return
Route119_EventScript_1513E1:: @ 81513E1
- movespriteperm 16, 26, 32
- movespriteperm 25, 26, 32
+ setobjectxyperm 16, 26, 32
+ setobjectxyperm 25, 26, 32
return
Route119_Movement_1513F0:: @ 81513F0
@@ -296,9 +296,9 @@ Route119_EventScript_1514A8:: @ 81514A8
Route119_EventScript_1514BF:: @ 81514BF
trainerbattle 0, OPPONENT_JACKSON_1, 0, Route119_Text_1BE8BB, Route119_Text_1BE90E
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route119_EventScript_1514E6
+ goto_if_eq Route119_EventScript_1514E6
msgbox Route119_Text_1BE937, 6
end
@@ -309,9 +309,9 @@ Route119_EventScript_1514E6:: @ 81514E6
Route119_EventScript_1514FD:: @ 81514FD
trainerbattle 0, OPPONENT_CATHERINE_1, 0, Route119_Text_1BEA3A, Route119_Text_1BEA88
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route119_EventScript_151524
+ goto_if_eq Route119_EventScript_151524
msgbox Route119_Text_1BEAB3, 6
end
@@ -354,9 +354,9 @@ Route119_EventScript_1515C5:: @ 81515C5
lock
faceplayer
msgbox Route119_Text_171520, 4
- closebutton
- move LAST_TALKED, Route119_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, Route119_Movement_1A083D
+ waitmovement 0
release
end
@@ -364,9 +364,9 @@ Route119_EventScript_1515DC:: @ 81515DC
lock
faceplayer
msgbox Route119_Text_17157C, 4
- closebutton
- move LAST_TALKED, Route119_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, Route119_Movement_1A083D
+ waitmovement 0
release
end
diff --git a/data/scripts/maps/Route119_House.inc b/data/scripts/maps/Route119_House.inc
index 6395e40eb..42cc89068 100644
--- a/data/scripts/maps/Route119_House.inc
+++ b/data/scripts/maps/Route119_House.inc
@@ -8,8 +8,8 @@ Route119_House_EventScript_163DDE:: @ 8163DDE
Route119_House_EventScript_163DE7:: @ 8163DE7
lock
faceplayer
- checksound
- pokecry SPECIES_WINGULL, 0
+ waitse
+ playpokecry SPECIES_WINGULL, 0
msgbox Route119_House_Text_19F406, 4
waitpokecry
release
diff --git a/data/scripts/maps/Route119_WeatherInstitute_1F.inc b/data/scripts/maps/Route119_WeatherInstitute_1F.inc
index 95ec39d61..3dc9672e3 100644
--- a/data/scripts/maps/Route119_WeatherInstitute_1F.inc
+++ b/data/scripts/maps/Route119_WeatherInstitute_1F.inc
@@ -5,12 +5,12 @@ Route119_WeatherInstitute_1F_MapScripts:: @ 8163C2A
Route119_WeatherInstitute_1F_MapScript1_163C30:: @ 8163C30
call Route119_WeatherInstitute_1F_EventScript_1A0196
compare 0x40b3, 0
- callif 1, Route119_WeatherInstitute_1F_EventScript_163C41
+ call_if 1, Route119_WeatherInstitute_1F_EventScript_163C41
end
Route119_WeatherInstitute_1F_EventScript_163C41:: @ 8163C41
- movespriteperm 5, 0, 5
- spritebehave 5, 10
+ setobjectxyperm 5, 0, 5
+ setobjectmovementtype 5, 10
return
Route119_WeatherInstitute_1F_EventScript_163C4D:: @ 8163C4D
@@ -18,7 +18,7 @@ Route119_WeatherInstitute_1F_EventScript_163C4D:: @ 8163C4D
faceplayer
special GetPlayerBigGuyGirlString
compare 0x40b3, 0
- jumpeq Route119_WeatherInstitute_1F_EventScript_163C67
+ goto_if_eq Route119_WeatherInstitute_1F_EventScript_163C67
msgbox Route119_WeatherInstitute_1F_Text_19ED22, 4
release
end
@@ -39,7 +39,7 @@ Route119_WeatherInstitute_1F_EventScript_163C7A:: @ 8163C7A
Route119_WeatherInstitute_1F_EventScript_163C83:: @ 8163C83
lockall
msgbox Route119_WeatherInstitute_1F_Text_19EE8B, 4
- closebutton
+ closemessage
call Route119_WeatherInstitute_1F_EventScript_1A02CA
releaseall
end
diff --git a/data/scripts/maps/Route119_WeatherInstitute_2F.inc b/data/scripts/maps/Route119_WeatherInstitute_2F.inc
index 37f8e9ec6..ac64904a2 100644
--- a/data/scripts/maps/Route119_WeatherInstitute_2F.inc
+++ b/data/scripts/maps/Route119_WeatherInstitute_2F.inc
@@ -5,19 +5,19 @@ Route119_WeatherInstitute_2F_MapScripts:: @ 8163CC2
Route119_WeatherInstitute_2F_MapScript1_163CC8:: @ 8163CC8
call Route119_WeatherInstitute_2F_EventScript_1A0196
compare 0x40b3, 0
- callif 1, Route119_WeatherInstitute_2F_EventScript_163CE4
+ call_if 1, Route119_WeatherInstitute_2F_EventScript_163CE4
compare 0x40b3, 1
- callif 1, Route119_WeatherInstitute_2F_EventScript_163CF0
+ call_if 1, Route119_WeatherInstitute_2F_EventScript_163CF0
end
Route119_WeatherInstitute_2F_EventScript_163CE4:: @ 8163CE4
- movespriteperm 5, 1, 6
- spritebehave 5, 10
+ setobjectxyperm 5, 1, 6
+ setobjectmovementtype 5, 10
return
Route119_WeatherInstitute_2F_EventScript_163CF0:: @ 8163CF0
- movespriteperm 5, 4, 6
- spritebehave 5, 10
+ setobjectxyperm 5, 4, 6
+ setobjectmovementtype 5, 10
return
Route119_WeatherInstitute_2F_EventScript_163CFC:: @ 8163CFC
@@ -37,32 +37,32 @@ Route119_WeatherInstitute_2F_EventScript_163D2A:: @ 8163D2A
Route119_WeatherInstitute_2F_EventScript_163D45:: @ 8163D45
msgbox Route119_WeatherInstitute_2F_Text_19F11B, 4
- closebutton
+ closemessage
setvar 0x40b3, 1
clearflag 893
- fadedefault
+ fadedefaultbgm
fadescreen 1
setflag 890
- disappear 1
- disappear 2
- disappear 3
+ removeobject 1
+ removeobject 2
+ removeobject 3
fadescreen 0
- move 5, Route119_WeatherInstitute_2F_Movement_163DC8
- waitmove 0
- moveoffscreen 5
- jump Route119_WeatherInstitute_2F_EventScript_163D7A
+ applymovement 5, Route119_WeatherInstitute_2F_Movement_163DC8
+ waitmovement 0
+ moveobjectoffscreen 5
+ goto Route119_WeatherInstitute_2F_EventScript_163D7A
end
Route119_WeatherInstitute_2F_EventScript_163D7A:: @ 8163D7A
msgbox Route119_WeatherInstitute_2F_Text_19F1CF, 4
countpokemon
compare RESULT, 6
- jumpeq Route119_WeatherInstitute_2F_EventScript_163DB4
- fanfare 370
+ goto_if_eq Route119_WeatherInstitute_2F_EventScript_163DB4
+ playfanfare 370
message Route119_WeatherInstitute_2F_Text_19F267
waitfanfare
- waittext
- givepokemon SPECIES_CASTFORM, 25, ITEM_MYSTIC_WATER, 0x0, 0x0, 0
+ waitmessage
+ givepoke SPECIES_CASTFORM, 25, ITEM_MYSTIC_WATER, 0x0, 0x0, 0
setflag 151
msgbox Route119_WeatherInstitute_2F_Text_19F27D, 4
release
@@ -88,6 +88,6 @@ Route119_WeatherInstitute_2F_EventScript_163DCC:: @ 8163DCC
lock
faceplayer
checkflag 151
- jumpeq Route119_WeatherInstitute_2F_EventScript_163DBE
- jump Route119_WeatherInstitute_2F_EventScript_163D7A
+ goto_if_eq Route119_WeatherInstitute_2F_EventScript_163DBE
+ goto Route119_WeatherInstitute_2F_EventScript_163D7A
end
diff --git a/data/scripts/maps/Route120.inc b/data/scripts/maps/Route120.inc
index 75385fe8f..868d00324 100644
--- a/data/scripts/maps/Route120.inc
+++ b/data/scripts/maps/Route120.inc
@@ -6,56 +6,56 @@ Route120_MapScripts:: @ 815160E
Route120_MapScript1_15161E:: @ 815161E
checkflag 2145
- callif 1, Route120_EventScript_151628
+ call_if 1, Route120_EventScript_151628
end
Route120_EventScript_151628:: @ 8151628
compare 0x8004, 0
- callif 1, Route120_EventScript_15166B
+ call_if 1, Route120_EventScript_15166B
compare 0x8004, 1
- callif 1, Route120_EventScript_151672
+ call_if 1, Route120_EventScript_151672
compare 0x8004, 2
- callif 1, Route120_EventScript_151676
+ call_if 1, Route120_EventScript_151676
compare 0x8004, 3
- callif 1, Route120_EventScript_15167A
+ call_if 1, Route120_EventScript_15167A
compare 0x8004, 4
- callif 1, Route120_EventScript_15167E
+ call_if 1, Route120_EventScript_15167E
compare 0x8004, 5
- callif 1, Route120_EventScript_151682
+ call_if 1, Route120_EventScript_151682
return
Route120_EventScript_15166B:: @ 815166B
- disappear 30
- disappear 36
+ removeobject 30
+ removeobject 36
return
Route120_EventScript_151672:: @ 8151672
- disappear 37
+ removeobject 37
return
Route120_EventScript_151676:: @ 8151676
- disappear 38
+ removeobject 38
return
Route120_EventScript_15167A:: @ 815167A
- disappear 39
+ removeobject 39
return
Route120_EventScript_15167E:: @ 815167E
- disappear 41
+ removeobject 41
return
Route120_EventScript_151682:: @ 8151682
- disappear 40
+ removeobject 40
return
Route120_MapScript1_151686:: @ 8151686
checkflag 228
- callif 0, Route120_EventScript_1516A2
+ call_if 0, Route120_EventScript_1516A2
checkflag 285
- callif 1, Route120_EventScript_1516B5
+ call_if 1, Route120_EventScript_1516B5
checkflag 285
- callif 0, Route120_EventScript_1516DA
+ call_if 0, Route120_EventScript_1516DA
end
Route120_EventScript_1516A2:: @ 81516A2
@@ -71,7 +71,7 @@ Route120_EventScript_1516B5:: @ 81516B5
return
Route120_EventScript_1516DA:: @ 81516DA
- spritebehave 36, 10
+ setobjectmovementtype 36, 10
return
Route120_MapScript1_1516DF:: @ 81516DF
@@ -82,11 +82,11 @@ Route120_MapScript1_1516DF:: @ 81516DF
Route120_EventScript_1516EA:: @ 81516EA
getplayerxy 0x4000, 0x4001
compare 0x4001, 14
- jumpif 3, Route120_EventScript_151715
+ goto_if 3, Route120_EventScript_151715
compare 0x4001, 60
- jumpif 3, Route120_EventScript_151719
+ goto_if 3, Route120_EventScript_151719
compare 0x4001, 61
- jumpif 4, Route120_EventScript_151711
+ goto_if 4, Route120_EventScript_151711
return
Route120_EventScript_151711:: @ 8151711
@@ -99,10 +99,10 @@ Route120_EventScript_151715:: @ 8151715
Route120_EventScript_151719:: @ 8151719
compare 0x4000, 7
- jumpif 3, Route120_EventScript_151735
+ goto_if 3, Route120_EventScript_151735
compare 0x4000, 19
- jumpif 3, Route120_EventScript_151715
- jump Route120_EventScript_151735
+ goto_if 3, Route120_EventScript_151715
+ goto Route120_EventScript_151735
end
Route120_EventScript_151735:: @ 8151735
@@ -112,15 +112,15 @@ Route120_EventScript_151735:: @ 8151735
Route120_EventScript_151739:: @ 8151739
lock
faceplayer
- checkdailyflags
+ dodailyevents
checkflag 2254
- jumpeq Route120_EventScript_151837
+ goto_if_eq Route120_EventScript_151837
msgbox Route120_Text_1C58F1, 5
compare RESULT, 1
- callif 1, Route120_EventScript_151841
+ call_if 1, Route120_EventScript_151841
compare RESULT, 0
- callif 1, Route120_EventScript_15184A
- specialval RESULT, GetPlayerTrainerIdOnesDigit
+ call_if 1, Route120_EventScript_15184A
+ specialvar RESULT, GetPlayerTrainerIdOnesDigit
switch RESULT
case 0, Route120_EventScript_1517DC
case 5, Route120_EventScript_1517DC
@@ -136,33 +136,33 @@ Route120_EventScript_151739:: @ 8151739
Route120_EventScript_1517DC:: @ 81517DC
setvar 0x8004, 143
- jump Route120_EventScript_151813
+ goto Route120_EventScript_151813
end
Route120_EventScript_1517E7:: @ 81517E7
setvar 0x8004, 144
- jump Route120_EventScript_151813
+ goto Route120_EventScript_151813
end
Route120_EventScript_1517F2:: @ 81517F2
setvar 0x8004, 145
- jump Route120_EventScript_151813
+ goto Route120_EventScript_151813
end
Route120_EventScript_1517FD:: @ 81517FD
setvar 0x8004, 146
- jump Route120_EventScript_151813
+ goto Route120_EventScript_151813
end
Route120_EventScript_151808:: @ 8151808
setvar 0x8004, 147
- jump Route120_EventScript_151813
+ goto Route120_EventScript_151813
end
Route120_EventScript_151813:: @ 8151813
giveitem 0x8004
compare RESULT, 0
- jumpeq Route120_EventScript_1A029B
+ goto_if_eq Route120_EventScript_1A029B
setflag 2254
msgbox Route120_Text_1C5A0B, 4
release
@@ -185,11 +185,11 @@ Route120_EventScript_151853:: @ 8151853
lock
faceplayer
checkflag 290
- jumpeq Route120_EventScript_151884
+ goto_if_eq Route120_EventScript_151884
msgbox Route120_Text_171827, 5
compare RESULT, 0
- jumpeq Route120_EventScript_151877
- jump Route120_EventScript_15189D
+ goto_if_eq Route120_EventScript_151877
+ goto Route120_EventScript_15189D
end
Route120_EventScript_151877:: @ 8151877
@@ -201,55 +201,55 @@ Route120_EventScript_151877:: @ 8151877
Route120_EventScript_151884:: @ 8151884
msgbox Route120_Text_17196F, 5
compare RESULT, 0
- jumpeq Route120_EventScript_151877
- jump Route120_EventScript_15189D
+ goto_if_eq Route120_EventScript_151877
+ goto Route120_EventScript_15189D
end
Route120_EventScript_15189D:: @ 815189D
msgbox Route120_Text_1719A0, 4
- closebutton
+ closemessage
compare FACING, 2
- callif 1, Route120_EventScript_15197F
+ call_if 1, Route120_EventScript_15197F
compare FACING, 3
- callif 1, Route120_EventScript_15198A
- move 31, Route120_Movement_1A083F
- waitmove 0
- pause 20
+ call_if 1, Route120_EventScript_15198A
+ applymovement 31, Route120_Movement_1A083F
+ waitmovement 0
+ delay 20
msgbox Route120_Text_1719D4, 4
- closebutton
- move 30, Route120_Movement_1A0843
- waitmove 0
- move 30, Route120_Movement_1A0662
- waitmove 0
- checksound
- pokecry SPECIES_KECLEON, 2
- pause 40
+ closemessage
+ applymovement 30, Route120_Movement_1A0843
+ waitmovement 0
+ applymovement 30, Route120_Movement_1A0662
+ waitmovement 0
+ waitse
+ playpokecry SPECIES_KECLEON, 2
+ delay 40
waitpokecry
setwildbattle SPECIES_KECLEON, 30, ITEM_NONE
setvar 0x8004, 0
setflag 2145
dowildbattle
clearflag 2145
- jump Route120_EventScript_151908
+ goto Route120_EventScript_151908
end
Route120_EventScript_151908:: @ 8151908
- move 31, Route120_Movement_1A0845
- move 255, Route120_Movement_1A0841
- waitmove 0
+ applymovement 31, Route120_Movement_1A0845
+ applymovement 255, Route120_Movement_1A0841
+ waitmovement 0
msgbox Route120_Text_171A40, 4
giveitem ITEM_DEVON_SCOPE
setflag 285
msgbox Route120_Text_171B0E, 4
- closebutton
- move 31, Route120_Movement_1A0845
- waitmove 0
- pause 50
- setanimation 0, 1
- doanimation 30
- pause 15
- disappear 31
- checkanimation 30
+ closemessage
+ applymovement 31, Route120_Movement_1A0845
+ waitmovement 0
+ delay 50
+ setfieldeffect 0, 1
+ dofieldeffect 30
+ delay 15
+ removeobject 31
+ waitfieldeffect 30
setmaptile 13, 15, 663, 0
setmaptile 12, 16, 671, 0
setmaptile 12, 17, 161, 0
@@ -259,13 +259,13 @@ Route120_EventScript_151908:: @ 8151908
end
Route120_EventScript_15197F:: @ 815197F
- move 255, Route120_Movement_1A083F
- waitmove 0
+ applymovement 255, Route120_Movement_1A083F
+ waitmovement 0
return
Route120_EventScript_15198A:: @ 815198A
- move 255, Route120_Movement_151995
- waitmove 0
+ applymovement 255, Route120_Movement_151995
+ waitmovement 0
return
Route120_Movement_151995:: @ 8151995
@@ -292,9 +292,9 @@ Route120_EventScript_1519B3:: @ 81519B3
Route120_EventScript_1519CA:: @ 81519CA
trainerbattle 0, OPPONENT_ROBERT_1, 0, Route120_Text_1BF07E, Route120_Text_1BF0A5
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route120_EventScript_1519F1
+ goto_if_eq Route120_EventScript_1519F1
msgbox Route120_Text_1BF0C3, 6
end
@@ -315,9 +315,9 @@ Route120_EventScript_151A1F:: @ 8151A1F
Route120_EventScript_151A36:: @ 8151A36
trainerbattle 0, OPPONENT_BRANDON_1, 0, Route120_Text_1BF32B, Route120_Text_1BF36B
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route120_EventScript_151A5D
+ goto_if_eq Route120_EventScript_151A5D
msgbox Route120_Text_1BF38D, 6
end
diff --git a/data/scripts/maps/Route121.inc b/data/scripts/maps/Route121.inc
index e1aaec716..39443d2f9 100644
--- a/data/scripts/maps/Route121.inc
+++ b/data/scripts/maps/Route121.inc
@@ -21,14 +21,14 @@ Route121_EventScript_151B1C:: @ 8151B1C
Route121_EventScript_151B25:: @ 8151B25
lockall
msgbox Route121_Text_171C8F, 4
- closebutton
- move 12, Route121_Movement_151B57
- move 13, Route121_Movement_151B60
- move 14, Route121_Movement_151B69
- waitmove 0
- disappear 12
- disappear 13
- disappear 14
+ closemessage
+ applymovement 12, Route121_Movement_151B57
+ applymovement 13, Route121_Movement_151B60
+ applymovement 14, Route121_Movement_151B69
+ waitmovement 0
+ removeobject 12
+ removeobject 13
+ removeobject 14
setvar 0x4074, 1
releaseall
end
@@ -73,9 +73,9 @@ Route121_EventScript_151B72:: @ 8151B72
Route121_EventScript_151B89:: @ 8151B89
trainerbattle 0, OPPONENT_WALTER_1, 0, Route121_Text_1BFA1B, Route121_Text_1BFA8C
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route121_EventScript_151BB0
+ goto_if_eq Route121_EventScript_151BB0
msgbox Route121_Text_1BFA9D, 6
end
@@ -101,9 +101,9 @@ Route121_EventScript_151BF9:: @ 8151BF9
Route121_EventScript_151C14:: @ 8151C14
trainerbattle 0, OPPONENT_JESSICA_1, 0, Route121_Text_1BFE51, Route121_Text_1BFE80
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route121_EventScript_151C3B
+ goto_if_eq Route121_EventScript_151C3B
msgbox Route121_Text_1BFEAE, 6
end
diff --git a/data/scripts/maps/Route121_SafariZoneEntrance.inc b/data/scripts/maps/Route121_SafariZoneEntrance.inc
index 251b09c73..9649271f4 100644
--- a/data/scripts/maps/Route121_SafariZoneEntrance.inc
+++ b/data/scripts/maps/Route121_SafariZoneEntrance.inc
@@ -8,8 +8,8 @@ Route121_SafariZoneEntrance_MapScript2_15C329:: @ 815C329
Route121_SafariZoneEntrance_EventScript_15C333:: @ 815C333
lockall
- move 255, Route121_SafariZoneEntrance_Movement_15C348
- waitmove 0
+ applymovement 255, Route121_SafariZoneEntrance_Movement_15C348
+ waitmovement 0
special ExitSafariMode
setvar 0x40a4, 0
releaseall
@@ -35,7 +35,7 @@ Route121_SafariZoneEntrance_EventScript_15C35A:: @ 815C35A
faceplayer
msgbox Route121_SafariZoneEntrance_Text_1C3704, 5
compare RESULT, 1
- jumpeq Route121_SafariZoneEntrance_EventScript_15C379
+ goto_if_eq Route121_SafariZoneEntrance_EventScript_15C379
msgbox Route121_SafariZoneEntrance_Text_1C373C, 4
release
end
@@ -47,39 +47,39 @@ Route121_SafariZoneEntrance_EventScript_15C379:: @ 815C379
Route121_SafariZoneEntrance_EventScript_15C383:: @ 815C383
lockall
- move 255, Route121_SafariZoneEntrance_Movement_1A0841
- waitmove 0
- showmoney 0, 0
- snop
+ applymovement 255, Route121_SafariZoneEntrance_Movement_1A0841
+ waitmovement 0
+ showmoneybox 0, 0
+ nop
msgbox Route121_SafariZoneEntrance_Text_1C3832, 5
compare RESULT, 1
- jumpeq Route121_SafariZoneEntrance_EventScript_15C3B3
+ goto_if_eq Route121_SafariZoneEntrance_EventScript_15C3B3
msgbox Route121_SafariZoneEntrance_Text_1C3895, 4
- jump Route121_SafariZoneEntrance_EventScript_15C46C
+ goto Route121_SafariZoneEntrance_EventScript_15C46C
end
Route121_SafariZoneEntrance_EventScript_15C3B3:: @ 815C3B3
checkitem ITEM_POKEBLOCK_CASE, 1
compare RESULT, 0
- jumpeq Route121_SafariZoneEntrance_EventScript_15C450
+ goto_if_eq Route121_SafariZoneEntrance_EventScript_15C450
call Route121_SafariZoneEntrance_EventScript_15C425
checkmoney 0x1f4, 0
compare RESULT, 0
- jumpeq Route121_SafariZoneEntrance_EventScript_15C45E
+ goto_if_eq Route121_SafariZoneEntrance_EventScript_15C45E
msgbox Route121_SafariZoneEntrance_Text_1C38D9, 4
- paymoney 0x1f4, 0
- updatemoney 0, 0
- snop
+ takemoney 0x1f4, 0
+ updatemoneybox 0, 0
+ nop
msgbox Route121_SafariZoneEntrance_Text_1C38F4, 4
- fanfare 370
+ playfanfare 370
message Route121_SafariZoneEntrance_Text_1C3910
waitfanfare
- waittext
+ waitmessage
msgbox Route121_SafariZoneEntrance_Text_1C392D, 4
- closebutton
- hidemoney 0, 0
- move 255, Route121_SafariZoneEntrance_Movement_15C47E
- waitmove 0
+ closemessage
+ hidemoneybox 0, 0
+ applymovement 255, Route121_SafariZoneEntrance_Movement_15C47E
+ waitmovement 0
special EnterSafariMode
setvar 0x40a4, 2
warp SafariZone_Southeast, 255, 32, 33
@@ -89,12 +89,12 @@ Route121_SafariZoneEntrance_EventScript_15C3B3:: @ 815C3B3
Route121_SafariZoneEntrance_EventScript_15C425:: @ 815C425
countpokemon
compare RESULT, 6
- jumpif 5, Route121_SafariZoneEntrance_EventScript_15C44F
- specialval RESULT, CheckFreePokemonStorageSpace
+ goto_if 5, Route121_SafariZoneEntrance_EventScript_15C44F
+ specialvar RESULT, CheckFreePokemonStorageSpace
compare RESULT, 1
- jumpeq Route121_SafariZoneEntrance_EventScript_15C44F
+ goto_if_eq Route121_SafariZoneEntrance_EventScript_15C44F
msgbox Route121_SafariZoneEntrance_Text_1C39A3, 4
- jump Route121_SafariZoneEntrance_EventScript_15C46C
+ goto Route121_SafariZoneEntrance_EventScript_15C46C
end
Route121_SafariZoneEntrance_EventScript_15C44F:: @ 815C44F
@@ -102,19 +102,19 @@ Route121_SafariZoneEntrance_EventScript_15C44F:: @ 815C44F
Route121_SafariZoneEntrance_EventScript_15C450:: @ 815C450
msgbox Route121_SafariZoneEntrance_Text_1C39C3, 4
- jump Route121_SafariZoneEntrance_EventScript_15C46C
+ goto Route121_SafariZoneEntrance_EventScript_15C46C
end
Route121_SafariZoneEntrance_EventScript_15C45E:: @ 815C45E
msgbox Route121_SafariZoneEntrance_Text_1C38B5, 4
- jump Route121_SafariZoneEntrance_EventScript_15C46C
+ goto Route121_SafariZoneEntrance_EventScript_15C46C
end
Route121_SafariZoneEntrance_EventScript_15C46C:: @ 815C46C
- closebutton
- hidemoney 0, 0
- move 255, Route121_SafariZoneEntrance_Movement_15C47C
- waitmove 0
+ closemessage
+ hidemoneybox 0, 0
+ applymovement 255, Route121_SafariZoneEntrance_Movement_15C47C
+ waitmovement 0
releaseall
end
diff --git a/data/scripts/maps/Route123.inc b/data/scripts/maps/Route123.inc
index 891a395f0..14c5a2dba 100644
--- a/data/scripts/maps/Route123.inc
+++ b/data/scripts/maps/Route123.inc
@@ -10,15 +10,15 @@ Route123_EventScript_151C5D:: @ 8151C5D
lock
faceplayer
checkflag 232
- jumpeq Route123_EventScript_151CAC
+ goto_if_eq Route123_EventScript_151CAC
msgbox Route123_Text_171D83, 4
special IsGrassTypeInParty
compare RESULT, 0
- jumpeq Route123_EventScript_151CAA
+ goto_if_eq Route123_EventScript_151CAA
msgbox Route123_Text_171DC2, 4
giveitem ITEM_TM19
compare RESULT, 0
- jumpeq Route123_EventScript_1A029B
+ goto_if_eq Route123_EventScript_1A029B
setflag 232
msgbox Route123_Text_171E34, 4
release
@@ -62,9 +62,9 @@ Route123_EventScript_151CFF:: @ 8151CFF
Route123_EventScript_151D16:: @ 8151D16
trainerbattle 0, OPPONENT_CAMERON_1, 0, Route123_Text_1C013F, Route123_Text_1C01A3
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route123_EventScript_151D3D
+ goto_if_eq Route123_EventScript_151D3D
msgbox Route123_Text_1C01B1, 6
end
@@ -75,9 +75,9 @@ Route123_EventScript_151D3D:: @ 8151D3D
Route123_EventScript_151D54:: @ 8151D54
trainerbattle 0, OPPONENT_JACKI_1, 0, Route123_Text_1C028C, Route123_Text_1C0303
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route123_EventScript_151D7B
+ goto_if_eq Route123_EventScript_151D7B
msgbox Route123_Text_1C030F, 6
end
diff --git a/data/scripts/maps/Route123_BerryMastersHouse.inc b/data/scripts/maps/Route123_BerryMastersHouse.inc
index 9290f845d..64888759d 100644
--- a/data/scripts/maps/Route123_BerryMastersHouse.inc
+++ b/data/scripts/maps/Route123_BerryMastersHouse.inc
@@ -9,16 +9,16 @@ Route123_BerryMastersHouse_MapScript1_1639E5:: @ 81639E5
Route123_BerryMastersHouse_EventScript_1639E9:: @ 81639E9
lock
faceplayer
- checkdailyflags
+ dodailyevents
checkflag 2253
- jumpeq Route123_BerryMastersHouse_EventScript_163A5A
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163A5A
msgbox Route123_BerryMastersHouse_Text_1C5BC4, 4
random 10
addvar RESULT, 20
addvar RESULT, 133
giveitem RESULT
compare RESULT, 0
- jumpeq Route123_BerryMastersHouse_EventScript_1A029B
+ goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B
setflag 2253
msgbox Route123_BerryMastersHouse_Text_1C5C66, 4
random 10
@@ -26,7 +26,7 @@ Route123_BerryMastersHouse_EventScript_1639E9:: @ 81639E9
addvar RESULT, 133
giveitem RESULT
compare RESULT, 0
- jumpeq Route123_BerryMastersHouse_EventScript_1A029B
+ goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B
msgbox Route123_BerryMastersHouse_Text_1C5C83, 4
release
end
@@ -39,18 +39,18 @@ Route123_BerryMastersHouse_EventScript_163A5A:: @ 8163A5A
Route123_BerryMastersHouse_EventScript_163A64:: @ 8163A64
lock
faceplayer
- checkdailyflags
+ dodailyevents
checkflag 2257
- jumpeq Route123_BerryMastersHouse_EventScript_163C13
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163C13
msgbox Route123_BerryMastersHouse_Text_1C5D24, 4
setvar 0x8004, 13
call Route123_BerryMastersHouse_EventScript_1A00F3
lock
faceplayer
compare RESULT, 1
- jumpeq Route123_BerryMastersHouse_EventScript_163AAD
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163AAD
compare RESULT, 0
- jumpeq Route123_BerryMastersHouse_EventScript_163A9B
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163A9B
end
Route123_BerryMastersHouse_EventScript_163A9B:: @ 8163A9B
@@ -61,17 +61,17 @@ Route123_BerryMastersHouse_EventScript_163A9B:: @ 8163A9B
Route123_BerryMastersHouse_EventScript_163AAD:: @ 8163AAD
compare 0x8004, 0
- jumpeq Route123_BerryMastersHouse_EventScript_163AF0
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0
compare 0x8004, 1
- jumpeq Route123_BerryMastersHouse_EventScript_163B1E
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163B1E
compare 0x8004, 2
- jumpeq Route123_BerryMastersHouse_EventScript_163B4F
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163B4F
compare 0x8004, 3
- jumpeq Route123_BerryMastersHouse_EventScript_163B80
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163B80
compare 0x8004, 4
- jumpeq Route123_BerryMastersHouse_EventScript_163BB1
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163BB1
compare 0x8004, 5
- jumpeq Route123_BerryMastersHouse_EventScript_163BE2
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163BE2
end
Route123_BerryMastersHouse_EventScript_163AF0:: @ 8163AF0
@@ -80,64 +80,64 @@ Route123_BerryMastersHouse_EventScript_163AF0:: @ 8163AF0
addvar RESULT, 133
giveitem RESULT
compare RESULT, 0
- jumpeq Route123_BerryMastersHouse_EventScript_1A029B
- jump Route123_BerryMastersHouse_EventScript_163C1D
+ goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B
+ goto Route123_BerryMastersHouse_EventScript_163C1D
release
end
Route123_BerryMastersHouse_EventScript_163B1E:: @ 8163B1E
checkflag 248
- jumpeq Route123_BerryMastersHouse_EventScript_163AF0
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0
msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4
giveitem ITEM_SPELON_BERRY
compare RESULT, 0
- jumpeq Route123_BerryMastersHouse_EventScript_1A029B
+ goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B
setflag 248
- jump Route123_BerryMastersHouse_EventScript_163C1D
+ goto Route123_BerryMastersHouse_EventScript_163C1D
end
Route123_BerryMastersHouse_EventScript_163B4F:: @ 8163B4F
checkflag 249
- jumpeq Route123_BerryMastersHouse_EventScript_163AF0
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0
msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4
giveitem ITEM_PAMTRE_BERRY
compare RESULT, 0
- jumpeq Route123_BerryMastersHouse_EventScript_1A029B
+ goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B
setflag 249
- jump Route123_BerryMastersHouse_EventScript_163C1D
+ goto Route123_BerryMastersHouse_EventScript_163C1D
end
Route123_BerryMastersHouse_EventScript_163B80:: @ 8163B80
checkflag 250
- jumpeq Route123_BerryMastersHouse_EventScript_163AF0
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0
msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4
giveitem ITEM_WATMEL_BERRY
compare RESULT, 0
- jumpeq Route123_BerryMastersHouse_EventScript_1A029B
+ goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B
setflag 250
- jump Route123_BerryMastersHouse_EventScript_163C1D
+ goto Route123_BerryMastersHouse_EventScript_163C1D
end
Route123_BerryMastersHouse_EventScript_163BB1:: @ 8163BB1
checkflag 251
- jumpeq Route123_BerryMastersHouse_EventScript_163AF0
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0
msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4
giveitem ITEM_DURIN_BERRY
compare RESULT, 0
- jumpeq Route123_BerryMastersHouse_EventScript_1A029B
+ goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B
setflag 251
- jump Route123_BerryMastersHouse_EventScript_163C1D
+ goto Route123_BerryMastersHouse_EventScript_163C1D
end
Route123_BerryMastersHouse_EventScript_163BE2:: @ 8163BE2
checkflag 252
- jumpeq Route123_BerryMastersHouse_EventScript_163AF0
+ goto_if_eq Route123_BerryMastersHouse_EventScript_163AF0
msgbox Route123_BerryMastersHouse_Text_1C5DC1, 4
giveitem ITEM_BELUE_BERRY
compare RESULT, 0
- jumpeq Route123_BerryMastersHouse_EventScript_1A029B
+ goto_if_eq Route123_BerryMastersHouse_EventScript_1A029B
setflag 252
- jump Route123_BerryMastersHouse_EventScript_163C1D
+ goto Route123_BerryMastersHouse_EventScript_163C1D
end
Route123_BerryMastersHouse_EventScript_163C13:: @ 8163C13
diff --git a/data/scripts/maps/Route124.inc b/data/scripts/maps/Route124.inc
index 68f17b12a..ffe4cef97 100644
--- a/data/scripts/maps/Route124.inc
+++ b/data/scripts/maps/Route124.inc
@@ -4,7 +4,7 @@ Route124_MapScripts:: @ 8151DDF
Route124_MapScript1_151DE5:: @ 8151DE5
checkflag 2090
- callif 1, Route124_EventScript_1A02C1
+ call_if 1, Route124_EventScript_1A02C1
end
Route124_EventScript_151DEF:: @ 8151DEF
@@ -23,9 +23,9 @@ Route124_EventScript_151E0F:: @ 8151E0F
Route124_EventScript_151E26:: @ 8151E26
trainerbattle 0, OPPONENT_JENNY_1, 0, Route124_Text_1C07B4, Route124_Text_1C07F9
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route124_EventScript_151E4D
+ goto_if_eq Route124_EventScript_151E4D
msgbox Route124_Text_1C080E, 6
end
@@ -46,9 +46,9 @@ Route124_EventScript_151E7B:: @ 8151E7B
Route124_EventScript_151E92:: @ 8151E92
trainerbattle 4, OPPONENT_RITA_AND_SAM_1, 0, Route124_Text_1C0ABD, Route124_Text_1C0B36, Route124_Text_1C0BC8
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route124_EventScript_151EBD
+ goto_if_eq Route124_EventScript_151EBD
msgbox Route124_Text_1C0B72, 6
end
@@ -59,9 +59,9 @@ Route124_EventScript_151EBD:: @ 8151EBD
Route124_EventScript_151ED8:: @ 8151ED8
trainerbattle 4, OPPONENT_RITA_AND_SAM_1, 0, Route124_Text_1C0C0E, Route124_Text_1C0C4F, Route124_Text_1C0CE0
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route124_EventScript_151F03
+ goto_if_eq Route124_EventScript_151F03
msgbox Route124_Text_1C0C7F, 6
end
diff --git a/data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc b/data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc
index e1049c8be..7421e94e0 100644
--- a/data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc
+++ b/data/scripts/maps/Route124_DivingTreasureHuntersHouse.inc
@@ -10,38 +10,38 @@ Route124_DivingTreasureHuntersHouse_EventScript_163E04:: @ 8163E04
lock
faceplayer
checkflag 217
- jumpeq Route124_DivingTreasureHuntersHouse_EventScript_163E20
+ goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_163E20
msgbox Route124_DivingTreasureHuntersHouse_Text_19F416, 4
setflag 217
- jump Route124_DivingTreasureHuntersHouse_EventScript_163E2E
+ goto Route124_DivingTreasureHuntersHouse_EventScript_163E2E
end
Route124_DivingTreasureHuntersHouse_EventScript_163E20:: @ 8163E20
msgbox Route124_DivingTreasureHuntersHouse_Text_19F48F, 4
- jump Route124_DivingTreasureHuntersHouse_EventScript_163E2E
+ goto Route124_DivingTreasureHuntersHouse_EventScript_163E2E
end
Route124_DivingTreasureHuntersHouse_EventScript_163E2E:: @ 8163E2E
call Route124_DivingTreasureHuntersHouse_EventScript_163E44
compare 0x4001, 0
- jumpeq Route124_DivingTreasureHuntersHouse_EventScript_164329
- jump Route124_DivingTreasureHuntersHouse_EventScript_163EA2
+ goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_164329
+ goto Route124_DivingTreasureHuntersHouse_EventScript_163EA2
end
Route124_DivingTreasureHuntersHouse_EventScript_163E44:: @ 8163E44
setvar 0x4001, 0
checkitem ITEM_RED_SHARD, 1
compare RESULT, 1
- callif 1, Route124_DivingTreasureHuntersHouse_EventScript_163E8A
+ call_if 1, Route124_DivingTreasureHuntersHouse_EventScript_163E8A
checkitem ITEM_YELLOW_SHARD, 1
compare RESULT, 1
- callif 1, Route124_DivingTreasureHuntersHouse_EventScript_163E90
+ call_if 1, Route124_DivingTreasureHuntersHouse_EventScript_163E90
checkitem ITEM_BLUE_SHARD, 1
compare RESULT, 1
- callif 1, Route124_DivingTreasureHuntersHouse_EventScript_163E96
+ call_if 1, Route124_DivingTreasureHuntersHouse_EventScript_163E96
checkitem ITEM_GREEN_SHARD, 1
compare RESULT, 1
- callif 1, Route124_DivingTreasureHuntersHouse_EventScript_163E9C
+ call_if 1, Route124_DivingTreasureHuntersHouse_EventScript_163E9C
return
Route124_DivingTreasureHuntersHouse_EventScript_163E8A:: @ 8163E8A
@@ -62,12 +62,12 @@ Route124_DivingTreasureHuntersHouse_EventScript_163E9C:: @ 8163E9C
Route124_DivingTreasureHuntersHouse_EventScript_163EA2:: @ 8163EA2
msgbox Route124_DivingTreasureHuntersHouse_Text_19F544, 4
- jump Route124_DivingTreasureHuntersHouse_EventScript_163EB0
+ goto Route124_DivingTreasureHuntersHouse_EventScript_163EB0
end
Route124_DivingTreasureHuntersHouse_EventScript_163EB0:: @ 8163EB0
message Route124_DivingTreasureHuntersHouse_Text_19F5C5
- waittext
+ waitmessage
switch 0x4001
case 1, Route124_DivingTreasureHuntersHouse_EventScript_163F61
case 2, Route124_DivingTreasureHuntersHouse_EventScript_163F87
@@ -91,7 +91,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_163F61:: @ 8163F61
switch RESULT
case 0, Route124_DivingTreasureHuntersHouse_EventScript_164256
case 1, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_163F87:: @ 8163F87
@@ -99,7 +99,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_163F87:: @ 8163F87
switch RESULT
case 0, Route124_DivingTreasureHuntersHouse_EventScript_164265
case 1, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_163FAD:: @ 8163FAD
@@ -108,7 +108,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_163FAD:: @ 8163FAD
case 0, Route124_DivingTreasureHuntersHouse_EventScript_164256
case 1, Route124_DivingTreasureHuntersHouse_EventScript_164265
case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_163FDE:: @ 8163FDE
@@ -116,7 +116,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_163FDE:: @ 8163FDE
switch RESULT
case 0, Route124_DivingTreasureHuntersHouse_EventScript_164274
case 1, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_164004:: @ 8164004
@@ -125,7 +125,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164004:: @ 8164004
case 0, Route124_DivingTreasureHuntersHouse_EventScript_164256
case 1, Route124_DivingTreasureHuntersHouse_EventScript_164274
case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_164035:: @ 8164035
@@ -134,7 +134,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164035:: @ 8164035
case 0, Route124_DivingTreasureHuntersHouse_EventScript_164265
case 1, Route124_DivingTreasureHuntersHouse_EventScript_164274
case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_164066:: @ 8164066
@@ -144,7 +144,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164066:: @ 8164066
case 1, Route124_DivingTreasureHuntersHouse_EventScript_164265
case 2, Route124_DivingTreasureHuntersHouse_EventScript_164274
case 3, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_1640A2:: @ 81640A2
@@ -152,7 +152,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_1640A2:: @ 81640A2
switch RESULT
case 0, Route124_DivingTreasureHuntersHouse_EventScript_164283
case 1, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_1640C8:: @ 81640C8
@@ -161,7 +161,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_1640C8:: @ 81640C8
case 0, Route124_DivingTreasureHuntersHouse_EventScript_164256
case 1, Route124_DivingTreasureHuntersHouse_EventScript_164283
case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_1640F9:: @ 81640F9
@@ -170,7 +170,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_1640F9:: @ 81640F9
case 0, Route124_DivingTreasureHuntersHouse_EventScript_164265
case 1, Route124_DivingTreasureHuntersHouse_EventScript_164283
case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_16412A:: @ 816412A
@@ -180,7 +180,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_16412A:: @ 816412A
case 1, Route124_DivingTreasureHuntersHouse_EventScript_164265
case 2, Route124_DivingTreasureHuntersHouse_EventScript_164283
case 3, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_164166:: @ 8164166
@@ -189,7 +189,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164166:: @ 8164166
case 0, Route124_DivingTreasureHuntersHouse_EventScript_164274
case 1, Route124_DivingTreasureHuntersHouse_EventScript_164283
case 2, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_164197:: @ 8164197
@@ -199,7 +199,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_164197:: @ 8164197
case 1, Route124_DivingTreasureHuntersHouse_EventScript_164274
case 2, Route124_DivingTreasureHuntersHouse_EventScript_164283
case 3, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_1641D3:: @ 81641D3
@@ -209,7 +209,7 @@ Route124_DivingTreasureHuntersHouse_EventScript_1641D3:: @ 81641D3
case 1, Route124_DivingTreasureHuntersHouse_EventScript_164274
case 2, Route124_DivingTreasureHuntersHouse_EventScript_164283
case 3, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_16420F:: @ 816420F
@@ -220,42 +220,42 @@ Route124_DivingTreasureHuntersHouse_EventScript_16420F:: @ 816420F
case 2, Route124_DivingTreasureHuntersHouse_EventScript_164274
case 3, Route124_DivingTreasureHuntersHouse_EventScript_164283
case 4, Route124_DivingTreasureHuntersHouse_EventScript_16431F
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_164256:: @ 8164256
setvar 0x8008, 48
setvar 0x8009, 95
- jump Route124_DivingTreasureHuntersHouse_EventScript_164292
+ goto Route124_DivingTreasureHuntersHouse_EventScript_164292
Route124_DivingTreasureHuntersHouse_EventScript_164265:: @ 8164265
setvar 0x8008, 50
setvar 0x8009, 96
- jump Route124_DivingTreasureHuntersHouse_EventScript_164292
+ goto Route124_DivingTreasureHuntersHouse_EventScript_164292
Route124_DivingTreasureHuntersHouse_EventScript_164274:: @ 8164274
setvar 0x8008, 49
setvar 0x8009, 97
- jump Route124_DivingTreasureHuntersHouse_EventScript_164292
+ goto Route124_DivingTreasureHuntersHouse_EventScript_164292
Route124_DivingTreasureHuntersHouse_EventScript_164283:: @ 8164283
setvar 0x8008, 51
setvar 0x8009, 98
- jump Route124_DivingTreasureHuntersHouse_EventScript_164292
+ goto Route124_DivingTreasureHuntersHouse_EventScript_164292
Route124_DivingTreasureHuntersHouse_EventScript_164292:: @ 8164292
- bufferitem 0, 0x8008
- bufferitem 1, 0x8009
+ getitemname 0, 0x8008
+ getitemname 1, 0x8009
msgbox Route124_DivingTreasureHuntersHouse_Text_19F5E0, 5
compare RESULT, 0
- jumpeq Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_16431F
checkitemspace 0x8009, 1
compare RESULT, 1
- jumpeq Route124_DivingTreasureHuntersHouse_EventScript_1642D3
+ goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_1642D3
checkitem 0x8008, 2
compare RESULT, 0
- jumpeq Route124_DivingTreasureHuntersHouse_EventScript_1642D3
- jump Route124_DivingTreasureHuntersHouse_EventScript_164315
+ goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_1642D3
+ goto Route124_DivingTreasureHuntersHouse_EventScript_164315
end
Route124_DivingTreasureHuntersHouse_EventScript_1642D3:: @ 81642D3
@@ -264,11 +264,11 @@ Route124_DivingTreasureHuntersHouse_EventScript_1642D3:: @ 81642D3
msgbox Route124_DivingTreasureHuntersHouse_Text_19F606, 4
call Route124_DivingTreasureHuntersHouse_EventScript_163E44
compare 0x4001, 0
- jumpeq Route124_DivingTreasureHuntersHouse_EventScript_164333
+ goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_164333
msgbox Route124_DivingTreasureHuntersHouse_Text_19F629, 5
compare RESULT, 1
- jumpeq Route124_DivingTreasureHuntersHouse_EventScript_163EB0
- jump Route124_DivingTreasureHuntersHouse_EventScript_16431F
+ goto_if_eq Route124_DivingTreasureHuntersHouse_EventScript_163EB0
+ goto Route124_DivingTreasureHuntersHouse_EventScript_16431F
end
Route124_DivingTreasureHuntersHouse_EventScript_164315:: @ 8164315
diff --git a/data/scripts/maps/Route125.inc b/data/scripts/maps/Route125.inc
index a5d2457d5..489a7314b 100644
--- a/data/scripts/maps/Route125.inc
+++ b/data/scripts/maps/Route125.inc
@@ -4,7 +4,7 @@ Route125_MapScripts:: @ 8151F1E
Route125_MapScript1_151F24:: @ 8151F24
checkflag 2090
- callif 1, Route125_EventScript_1A02C1
+ call_if 1, Route125_EventScript_1A02C1
end
Route125_EventScript_151F2E:: @ 8151F2E
@@ -29,9 +29,9 @@ Route125_EventScript_151F73:: @ 8151F73
Route125_EventScript_151F8A:: @ 8151F8A
trainerbattle 0, OPPONENT_ERNEST_1, 0, Route125_Text_1C11AF, Route125_Text_1C11ED
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route125_EventScript_151FB1
+ goto_if_eq Route125_EventScript_151FB1
msgbox Route125_Text_1C1208, 6
end
diff --git a/data/scripts/maps/Route126.inc b/data/scripts/maps/Route126.inc
index f3d1a77f9..729922681 100644
--- a/data/scripts/maps/Route126.inc
+++ b/data/scripts/maps/Route126.inc
@@ -4,7 +4,7 @@ Route126_MapScripts:: @ 8151FFE
Route126_MapScript1_152004:: @ 8152004
checkflag 2090
- callif 1, Route126_EventScript_1A02C1
+ call_if 1, Route126_EventScript_1A02C1
end
Route126_EventScript_15200E:: @ 815200E
diff --git a/data/scripts/maps/Route127.inc b/data/scripts/maps/Route127.inc
index b4461b253..284d1fbd4 100644
--- a/data/scripts/maps/Route127.inc
+++ b/data/scripts/maps/Route127.inc
@@ -4,7 +4,7 @@ Route127_MapScripts:: @ 815206A
Route127_MapScript1_152070:: @ 8152070
checkflag 2090
- callif 1, Route127_EventScript_1A02C1
+ call_if 1, Route127_EventScript_1A02C1
end
Route127_EventScript_15207A:: @ 815207A
diff --git a/data/scripts/maps/Route128.inc b/data/scripts/maps/Route128.inc
index 011591400..615662fc1 100644
--- a/data/scripts/maps/Route128.inc
+++ b/data/scripts/maps/Route128.inc
@@ -5,7 +5,7 @@ Route128_MapScripts:: @ 815211B
Route128_MapScript1_152126:: @ 8152126
checkflag 2090
- callif 1, Route128_EventScript_1A02C1
+ call_if 1, Route128_EventScript_1A02C1
call Route128_EventScript_1A0196
end
@@ -15,73 +15,73 @@ Route128_MapScript2_152135:: @ 8152135
Route128_EventScript_15213F:: @ 815213F
lockall
- pause 20
+ delay 20
.ifndef SAPPHIRE
special sub_807E25C
waitstate
.endif
- move 4, Route128_Movement_152271
- waitmove 0
+ applymovement 4, Route128_Movement_152271
+ waitmovement 0
msgbox Route128_Text_171EE0, 4
- move 4, Route128_Movement_152279
- waitmove 0
+ applymovement 4, Route128_Movement_152279
+ waitmovement 0
msgbox Route128_Text_171F35, 4
- closebutton
- move 5, Route128_Movement_152293
- waitmove 0
- move 4, Route128_Movement_1A0841
- waitmove 0
+ closemessage
+ applymovement 5, Route128_Movement_152293
+ waitmovement 0
+ applymovement 4, Route128_Movement_1A0841
+ waitmovement 0
msgbox Route128_Text_171F4B, 4
- closebutton
- move 5, Route128_Movement_1522A1
- waitmove 0
- move 255, Route128_Movement_1A0841
- waitmove 0
+ closemessage
+ applymovement 5, Route128_Movement_1522A1
+ waitmovement 0
+ applymovement 255, Route128_Movement_1A0841
+ waitmovement 0
msgbox Route128_Text_172008, 4
- closebutton
- move 4, Route128_Movement_15227E
- move 255, Route128_Movement_1A083F
- move 5, Route128_Movement_152290
- waitmove 0
+ closemessage
+ applymovement 4, Route128_Movement_15227E
+ applymovement 255, Route128_Movement_1A083F
+ applymovement 5, Route128_Movement_152290
+ waitmovement 0
msgbox Route128_Text_17210B, 4
- closebutton
- pause 40
- move 5, Route128_Movement_152296
- move 4, Route128_Movement_152283
- waitmove 0
- disappear 5
- disappear 4
- pause 100
- setanimation 0, 1
- doanimation 30
- checkanimation 30
- reappear 3
- move 3, Route128_Movement_15226F
- waitmove 0
- move 255, Route128_Movement_1A0843
- waitmove 0
+ closemessage
+ delay 40
+ applymovement 5, Route128_Movement_152296
+ applymovement 4, Route128_Movement_152283
+ waitmovement 0
+ removeobject 5
+ removeobject 4
+ delay 100
+ setfieldeffect 0, 1
+ dofieldeffect 30
+ waitfieldeffect 30
+ addobject 3
+ applymovement 3, Route128_Movement_15226F
+ waitmovement 0
+ applymovement 255, Route128_Movement_1A0843
+ waitmovement 0
msgbox Route128_Text_172181, 4
- closebutton
- move 3, Route128_Movement_15226D
- move 255, Route128_Movement_1A0841
- waitmove 0
+ closemessage
+ applymovement 3, Route128_Movement_15226D
+ applymovement 255, Route128_Movement_1A0841
+ waitmovement 0
.ifdef SAPPHIRE
msgbox Route128_Text_1721A2, 4
.else
msgbox Route128_Text_1722A1, 4
.endif
- move 3, Route128_Movement_1A0845
- waitmove 0
+ applymovement 3, Route128_Movement_1A0845
+ waitmovement 0
msgbox Route128_Text_1723BE, 4
- closebutton
- move 3, Route128_Movement_1A0845
- waitmove 0
- pause 50
- setanimation 0, 1
- doanimation 30
- pause 15
- disappear 3
- checkanimation 30
+ closemessage
+ applymovement 3, Route128_Movement_1A0845
+ waitmovement 0
+ delay 50
+ setfieldeffect 0, 1
+ dofieldeffect 30
+ delay 15
+ removeobject 3
+ waitfieldeffect 30
setvar 0x407b, 2
releaseall
end
@@ -182,9 +182,9 @@ Route128_Movement_1522A1:: @ 81522A1
Route128_EventScript_1522A4:: @ 81522A4
trainerbattle 0, OPPONENT_ISAIAH_1, 0, Route128_Text_1C1C67, Route128_Text_1C1C95
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route128_EventScript_1522CB
+ goto_if_eq Route128_EventScript_1522CB
msgbox Route128_Text_1C1CC3, 6
end
@@ -195,9 +195,9 @@ Route128_EventScript_1522CB:: @ 81522CB
Route128_EventScript_1522E2:: @ 81522E2
trainerbattle 0, OPPONENT_KATELYN_1, 0, Route128_Text_1C1DB0, Route128_Text_1C1E25
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq Route128_EventScript_152309
+ goto_if_eq Route128_EventScript_152309
msgbox Route128_Text_1C1E4A, 6
end
diff --git a/data/scripts/maps/Route130.inc b/data/scripts/maps/Route130.inc
index bac6728a7..69da29471 100644
--- a/data/scripts/maps/Route130.inc
+++ b/data/scripts/maps/Route130.inc
@@ -3,9 +3,9 @@ Route130_MapScripts:: @ 81523C2
.byte 0
Route130_MapScript1_1523C8:: @ 81523C8
- specialval RESULT, IsMirageIslandPresent
+ specialvar RESULT, IsMirageIslandPresent
compare RESULT, 1
- jumpeq Route130_EventScript_15240C
+ goto_if_eq Route130_EventScript_15240C
setflag 17
setflag 18
setflag 19
@@ -22,11 +22,11 @@ Route130_MapScript1_1523C8:: @ 81523C8
setflag 30
setflag 31
setflag 32
- setmapfooter 264
+ setmaplayoutindex 264
end
Route130_EventScript_15240C:: @ 815240C
- setmapfooter 46
+ setmaplayoutindex 46
end
Route130_EventScript_152410:: @ 8152410
diff --git a/data/scripts/maps/Route131.inc b/data/scripts/maps/Route131.inc
index 81cb7dc02..50ad4222b 100644
--- a/data/scripts/maps/Route131.inc
+++ b/data/scripts/maps/Route131.inc
@@ -4,11 +4,11 @@ Route131_MapScripts:: @ 815243E
Route131_MapScript1_152444:: @ 8152444
checkflag 2052
- callif 1, Route131_EventScript_15244E
+ call_if 1, Route131_EventScript_15244E
end
Route131_EventScript_15244E:: @ 815244E
- setmapfooter 320
+ setmaplayoutindex 320
return
Route131_EventScript_152452:: @ 8152452
diff --git a/data/scripts/maps/Route134.inc b/data/scripts/maps/Route134.inc
index b1f77fac1..6b4d330d1 100644
--- a/data/scripts/maps/Route134.inc
+++ b/data/scripts/maps/Route134.inc
@@ -3,7 +3,7 @@ Route134_MapScripts:: @ 81525B5
.byte 0
Route134_MapScript1_1525BB:: @ 81525BB
- warp4 Underwater_Route134, 255, 8, 6
+ setdivewarp Underwater_Route134, 255, 8, 6
end
Route134_EventScript_1525C4:: @ 81525C4
diff --git a/data/scripts/maps/RustboroCity.inc b/data/scripts/maps/RustboroCity.inc
index c338e8b67..916eb8108 100644
--- a/data/scripts/maps/RustboroCity.inc
+++ b/data/scripts/maps/RustboroCity.inc
@@ -12,7 +12,7 @@ RustboroCity_EventScript_14C386:: @ 814C386
lock
faceplayer
checkflag 142
- jumpeq RustboroCity_EventScript_14C39B
+ goto_if_eq RustboroCity_EventScript_14C39B
msgbox RustboroCity_Text_16689D, 4
release
end
@@ -37,7 +37,7 @@ RustboroCity_EventScript_14C3BA:: @ 814C3BA
lock
faceplayer
checkflag 2055
- jumpeq RustboroCity_EventScript_14C3CF
+ goto_if_eq RustboroCity_EventScript_14C3CF
msgbox RustboroCity_Text_16696D, 4
release
end
@@ -51,7 +51,7 @@ RustboroCity_EventScript_14C3D9:: @ 814C3D9
lock
faceplayer
checkflag 188
- jumpeq RustboroCity_EventScript_14C3EE
+ goto_if_eq RustboroCity_EventScript_14C3EE
msgbox RustboroCity_Text_166B86, 4
release
end
@@ -101,8 +101,8 @@ RustboroCity_EventScript_14C449:: @ 814C449
lock
faceplayer
msgbox RustboroCity_Text_166D59, 4
- move 7, RustboroCity_Movement_1A083D
- waitmove 0
+ applymovement 7, RustboroCity_Movement_1A083D
+ waitmovement 0
release
end
@@ -110,8 +110,8 @@ RustboroCity_EventScript_14C45F:: @ 814C45F
lock
faceplayer
msgbox RustboroCity_Text_166DB0, 4
- move 8, RustboroCity_Movement_1A083D
- waitmove 0
+ applymovement 8, RustboroCity_Movement_1A083D
+ waitmovement 0
release
end
@@ -124,60 +124,60 @@ RustboroCity_EventScript_14C475:: @ 814C475
RustboroCity_EventScript_14C481:: @ 814C481
lockall
- movespriteperm 9, 14, 21
- spritebehave 9, 10
+ setobjectxyperm 9, 14, 21
+ setobjectmovementtype 9, 10
setvar 0x8004, 0
- jump RustboroCity_EventScript_14C4F4
+ goto RustboroCity_EventScript_14C4F4
end
RustboroCity_EventScript_14C498:: @ 814C498
lockall
- movespriteperm 9, 14, 21
- spritebehave 9, 10
+ setobjectxyperm 9, 14, 21
+ setobjectmovementtype 9, 10
setvar 0x8004, 1
- jump RustboroCity_EventScript_14C4F4
+ goto RustboroCity_EventScript_14C4F4
end
RustboroCity_EventScript_14C4AF:: @ 814C4AF
lockall
- movespriteperm 9, 14, 21
- spritebehave 9, 10
+ setobjectxyperm 9, 14, 21
+ setobjectmovementtype 9, 10
setvar 0x8004, 2
- jump RustboroCity_EventScript_14C4F4
+ goto RustboroCity_EventScript_14C4F4
end
RustboroCity_EventScript_14C4C6:: @ 814C4C6
lockall
- movespriteperm 9, 14, 21
- spritebehave 9, 10
+ setobjectxyperm 9, 14, 21
+ setobjectmovementtype 9, 10
setvar 0x8004, 3
- jump RustboroCity_EventScript_14C4F4
+ goto RustboroCity_EventScript_14C4F4
end
RustboroCity_EventScript_14C4DD:: @ 814C4DD
lockall
- movespriteperm 9, 14, 21
- spritebehave 9, 10
+ setobjectxyperm 9, 14, 21
+ setobjectmovementtype 9, 10
setvar 0x8004, 4
- jump RustboroCity_EventScript_14C4F4
+ goto RustboroCity_EventScript_14C4F4
end
RustboroCity_EventScript_14C4F4:: @ 814C4F4
msgbox RustboroCity_Text_166E65, 4
- closebutton
- reappear 10
- reappear 9
- move 10, RustboroCity_Movement_14C5C2
- waitmove 0
- disappear 10
- move 9, RustboroCity_Movement_14C5D3
- waitmove 0
+ closemessage
+ addobject 10
+ addobject 9
+ applymovement 10, RustboroCity_Movement_14C5C2
+ waitmovement 0
+ removeobject 10
+ applymovement 9, RustboroCity_Movement_14C5D3
+ waitmovement 0
msgbox RustboroCity_Text_166E7E, 4
- closebutton
- move 9, RustboroCity_Movement_14C5DB
- waitmove 0
- disappear 9
- movespriteperm 9, 30, 10
+ closemessage
+ applymovement 9, RustboroCity_Movement_14C5DB
+ waitmovement 0
+ removeobject 9
+ setobjectxyperm 9, 30, 10
clearflag 732
setflag 142
setvar 0x405a, 2
@@ -200,30 +200,30 @@ RustboroCity_EventScript_14C4F4:: @ 814C4F4
return
@ 814C56F
- move 9, RustboroCity_Movement_14C5E3
- waitmove 0
+ applymovement 9, RustboroCity_Movement_14C5E3
+ waitmovement 0
return
@ 814C57A
- move 9, RustboroCity_Movement_14C5E7
- waitmove 0
+ applymovement 9, RustboroCity_Movement_14C5E7
+ waitmovement 0
return
@ 814C585
- move 9, RustboroCity_Movement_14C5EC
- waitmove 0
+ applymovement 9, RustboroCity_Movement_14C5EC
+ waitmovement 0
return
@ 814C590
- move 9, RustboroCity_Movement_14C5F1
- waitmove 0
+ applymovement 9, RustboroCity_Movement_14C5F1
+ waitmovement 0
return
@ 814C59B
- move 9, RustboroCity_Movement_14C5F7
- waitmove 0
- move 255, RustboroCity_Movement_1A0841
- waitmove 0
+ applymovement 9, RustboroCity_Movement_14C5F7
+ waitmovement 0
+ applymovement 255, RustboroCity_Movement_1A0841
+ waitmovement 0
return
@ 814C5B0
@@ -327,105 +327,105 @@ RustboroCity_EventScript_14C5FF:: @ 814C5FF
lock
faceplayer
checkflag 143
- jumpeq RustboroCity_EventScript_14C614
+ goto_if_eq RustboroCity_EventScript_14C614
msgbox RustboroCity_Text_166F6B, 4
release
end
RustboroCity_EventScript_14C614:: @ 814C614
- checksound
+ waitse
setvar 0x4001, 4
- jump RustboroCity_EventScript_14C77D
+ goto RustboroCity_EventScript_14C77D
end
RustboroCity_EventScript_14C620:: @ 814C620
lockall
setvar 0x4001, 0
- jump RustboroCity_EventScript_14C650
+ goto RustboroCity_EventScript_14C650
end
RustboroCity_EventScript_14C62C:: @ 814C62C
lockall
setvar 0x4001, 1
- jump RustboroCity_EventScript_14C650
+ goto RustboroCity_EventScript_14C650
end
RustboroCity_EventScript_14C638:: @ 814C638
lockall
setvar 0x4001, 2
- jump RustboroCity_EventScript_14C650
+ goto RustboroCity_EventScript_14C650
end
RustboroCity_EventScript_14C644:: @ 814C644
lockall
setvar 0x4001, 3
- jump RustboroCity_EventScript_14C650
+ goto RustboroCity_EventScript_14C650
end
RustboroCity_EventScript_14C650:: @ 814C650
compare 0x4001, 0
- callif 1, RustboroCity_EventScript_14C691
+ call_if 1, RustboroCity_EventScript_14C691
compare 0x4001, 1
- callif 1, RustboroCity_EventScript_14C6BD
+ call_if 1, RustboroCity_EventScript_14C6BD
compare 0x4001, 2
- callif 1, RustboroCity_EventScript_14C6E9
+ call_if 1, RustboroCity_EventScript_14C6E9
compare 0x4001, 3
- callif 1, RustboroCity_EventScript_14C715
+ call_if 1, RustboroCity_EventScript_14C715
setflag 159
setvar 0x405a, 3
- moveoffscreen 9
+ moveobjectoffscreen 9
msgbox RustboroCity_Text_166EA5, 4
releaseall
end
RustboroCity_EventScript_14C691:: @ 814C691
- move 9, RustboroCity_Movement_1A0841
- waitmove 0
- playsfx 21
- move 9, RustboroCity_Movement_1A0833
- waitmove 0
- move 9, RustboroCity_Movement_1A0835
- waitmove 0
- move 255, RustboroCity_Movement_1A0845
- waitmove 0
+ applymovement 9, RustboroCity_Movement_1A0841
+ waitmovement 0
+ playse 21
+ applymovement 9, RustboroCity_Movement_1A0833
+ waitmovement 0
+ applymovement 9, RustboroCity_Movement_1A0835
+ waitmovement 0
+ applymovement 255, RustboroCity_Movement_1A0845
+ waitmovement 0
return
RustboroCity_EventScript_14C6BD:: @ 814C6BD
- move 9, RustboroCity_Movement_1A083F
- waitmove 0
- playsfx 21
- move 9, RustboroCity_Movement_1A0833
- waitmove 0
- move 9, RustboroCity_Movement_1A0835
- waitmove 0
- move 255, RustboroCity_Movement_1A0843
- waitmove 0
+ applymovement 9, RustboroCity_Movement_1A083F
+ waitmovement 0
+ playse 21
+ applymovement 9, RustboroCity_Movement_1A0833
+ waitmovement 0
+ applymovement 9, RustboroCity_Movement_1A0835
+ waitmovement 0
+ applymovement 255, RustboroCity_Movement_1A0843
+ waitmovement 0
return
RustboroCity_EventScript_14C6E9:: @ 814C6E9
- move 9, RustboroCity_Movement_1A0845
- waitmove 0
- playsfx 21
- move 9, RustboroCity_Movement_1A0833
- waitmove 0
- move 9, RustboroCity_Movement_1A0835
- waitmove 0
- move 255, RustboroCity_Movement_1A0841
- waitmove 0
+ applymovement 9, RustboroCity_Movement_1A0845
+ waitmovement 0
+ playse 21
+ applymovement 9, RustboroCity_Movement_1A0833
+ waitmovement 0
+ applymovement 9, RustboroCity_Movement_1A0835
+ waitmovement 0
+ applymovement 255, RustboroCity_Movement_1A0841
+ waitmovement 0
return
RustboroCity_EventScript_14C715:: @ 814C715
- move 9, RustboroCity_Movement_1A0845
- waitmove 0
- playsfx 21
- move 9, RustboroCity_Movement_1A0833
- waitmove 0
- move 9, RustboroCity_Movement_1A0835
- waitmove 0
- move 9, RustboroCity_Movement_14C74B
- waitmove 0
- move 255, RustboroCity_Movement_1A0841
- waitmove 0
+ applymovement 9, RustboroCity_Movement_1A0845
+ waitmovement 0
+ playse 21
+ applymovement 9, RustboroCity_Movement_1A0833
+ waitmovement 0
+ applymovement 9, RustboroCity_Movement_1A0835
+ waitmovement 0
+ applymovement 9, RustboroCity_Movement_14C74B
+ waitmovement 0
+ applymovement 255, RustboroCity_Movement_1A0841
+ waitmovement 0
return
RustboroCity_Movement_14C74B:: @ 814C74B
@@ -435,48 +435,48 @@ RustboroCity_Movement_14C74B:: @ 814C74B
RustboroCity_EventScript_14C74D:: @ 814C74D
lockall
setvar 0x4001, 0
- jump RustboroCity_EventScript_14C77D
+ goto RustboroCity_EventScript_14C77D
end
RustboroCity_EventScript_14C759:: @ 814C759
lockall
setvar 0x4001, 1
- jump RustboroCity_EventScript_14C77D
+ goto RustboroCity_EventScript_14C77D
end
RustboroCity_EventScript_14C765:: @ 814C765
lockall
setvar 0x4001, 2
- jump RustboroCity_EventScript_14C77D
+ goto RustboroCity_EventScript_14C77D
end
RustboroCity_EventScript_14C771:: @ 814C771
lockall
setvar 0x4001, 3
- jump RustboroCity_EventScript_14C77D
+ goto RustboroCity_EventScript_14C77D
end
RustboroCity_EventScript_14C77D:: @ 814C77D
compare 0x4001, 0
- callif 1, RustboroCity_EventScript_14C7FE
+ call_if 1, RustboroCity_EventScript_14C7FE
compare 0x4001, 1
- callif 1, RustboroCity_EventScript_14C82A
+ call_if 1, RustboroCity_EventScript_14C82A
compare 0x4001, 2
- callif 1, RustboroCity_EventScript_14C856
+ call_if 1, RustboroCity_EventScript_14C856
compare 0x4001, 3
- callif 1, RustboroCity_EventScript_14C882
+ call_if 1, RustboroCity_EventScript_14C882
compare 0x4001, 4
- callif 1, RustboroCity_EventScript_14C8B8
+ call_if 1, RustboroCity_EventScript_14C8B8
msgbox RustboroCity_Text_166FB4, 4
giveitem ITEM_GREAT_BALL
compare RESULT, 0
- callif 1, RustboroCity_EventScript_14C7F5
+ call_if 1, RustboroCity_EventScript_14C7F5
msgbox RustboroCity_Text_16707F, 4
- closebutton
+ closemessage
setflag 144
setflag 732
setvar 0x405a, 5
- pause 30
+ delay 30
warp RustboroCity_DevonCorp_3F, 255, 2, 2
waitstate
releaseall
@@ -487,75 +487,75 @@ RustboroCity_EventScript_14C7F5:: @ 814C7F5
return
RustboroCity_EventScript_14C7FE:: @ 814C7FE
- move 9, RustboroCity_Movement_1A0841
- waitmove 0
- playsfx 21
- move 9, RustboroCity_Movement_1A0833
- waitmove 0
- move 9, RustboroCity_Movement_1A0835
- waitmove 0
- move 255, RustboroCity_Movement_1A0845
- waitmove 0
+ applymovement 9, RustboroCity_Movement_1A0841
+ waitmovement 0
+ playse 21
+ applymovement 9, RustboroCity_Movement_1A0833
+ waitmovement 0
+ applymovement 9, RustboroCity_Movement_1A0835
+ waitmovement 0
+ applymovement 255, RustboroCity_Movement_1A0845
+ waitmovement 0
return
RustboroCity_EventScript_14C82A:: @ 814C82A
- move 9, RustboroCity_Movement_1A0843
- waitmove 0
- playsfx 21
- move 9, RustboroCity_Movement_1A0833
- waitmove 0
- move 9, RustboroCity_Movement_1A0835
- waitmove 0
- move 255, RustboroCity_Movement_1A083F
- waitmove 0
+ applymovement 9, RustboroCity_Movement_1A0843
+ waitmovement 0
+ playse 21
+ applymovement 9, RustboroCity_Movement_1A0833
+ waitmovement 0
+ applymovement 9, RustboroCity_Movement_1A0835
+ waitmovement 0
+ applymovement 255, RustboroCity_Movement_1A083F
+ waitmovement 0
return
RustboroCity_EventScript_14C856:: @ 814C856
- move 9, RustboroCity_Movement_1A0845
- waitmove 0
- playsfx 21
- move 9, RustboroCity_Movement_1A0833
- waitmove 0
- move 9, RustboroCity_Movement_1A0835
- waitmove 0
- move 255, RustboroCity_Movement_1A0841
- waitmove 0
+ applymovement 9, RustboroCity_Movement_1A0845
+ waitmovement 0
+ playse 21
+ applymovement 9, RustboroCity_Movement_1A0833
+ waitmovement 0
+ applymovement 9, RustboroCity_Movement_1A0835
+ waitmovement 0
+ applymovement 255, RustboroCity_Movement_1A0841
+ waitmovement 0
return
RustboroCity_EventScript_14C882:: @ 814C882
- move 9, RustboroCity_Movement_1A0845
- waitmove 0
- playsfx 21
- move 9, RustboroCity_Movement_1A0833
- waitmove 0
- move 9, RustboroCity_Movement_1A0835
- waitmove 0
- move 9, RustboroCity_Movement_14C74B
- waitmove 0
- move 255, RustboroCity_Movement_1A0841
- waitmove 0
+ applymovement 9, RustboroCity_Movement_1A0845
+ waitmovement 0
+ playse 21
+ applymovement 9, RustboroCity_Movement_1A0833
+ waitmovement 0
+ applymovement 9, RustboroCity_Movement_1A0835
+ waitmovement 0
+ applymovement 9, RustboroCity_Movement_14C74B
+ waitmovement 0
+ applymovement 255, RustboroCity_Movement_1A0841
+ waitmovement 0
return
RustboroCity_EventScript_14C8B8:: @ 814C8B8
- move 9, RustboroCity_Movement_1A083F
- waitmove 0
- playsfx 21
- move 9, RustboroCity_Movement_1A0833
- waitmove 0
- move 9, RustboroCity_Movement_1A0835
- waitmove 0
+ applymovement 9, RustboroCity_Movement_1A083F
+ waitmovement 0
+ playse 21
+ applymovement 9, RustboroCity_Movement_1A0833
+ waitmovement 0
+ applymovement 9, RustboroCity_Movement_1A0835
+ waitmovement 0
return
RustboroCity_EventScript_14C8DA:: @ 814C8DA
lock
faceplayer
checkflag 288
- jumpeq RustboroCity_EventScript_14C917
- checkgender
+ goto_if_eq RustboroCity_EventScript_14C917
+ checkplayergender
compare RESULT, 0
- jumpeq RustboroCity_EventScript_14C8FD
+ goto_if_eq RustboroCity_EventScript_14C8FD
compare RESULT, 1
- jumpeq RustboroCity_EventScript_14C90A
+ goto_if_eq RustboroCity_EventScript_14C90A
end
RustboroCity_EventScript_14C8FD:: @ 814C8FD
@@ -571,11 +571,11 @@ RustboroCity_EventScript_14C90A:: @ 814C90A
end
RustboroCity_EventScript_14C917:: @ 814C917
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq RustboroCity_EventScript_14C92F
+ goto_if_eq RustboroCity_EventScript_14C92F
compare RESULT, 1
- jumpeq RustboroCity_EventScript_14C939
+ goto_if_eq RustboroCity_EventScript_14C939
end
RustboroCity_EventScript_14C92F:: @ 814C92F
diff --git a/data/scripts/maps/RustboroCity_CuttersHouse.inc b/data/scripts/maps/RustboroCity_CuttersHouse.inc
index d400de1ef..3e98746f3 100644
--- a/data/scripts/maps/RustboroCity_CuttersHouse.inc
+++ b/data/scripts/maps/RustboroCity_CuttersHouse.inc
@@ -5,7 +5,7 @@ RustboroCity_CuttersHouse_EventScript_157D27:: @ 8157D27
lock
faceplayer
checkflag 137
- jumpeq RustboroCity_CuttersHouse_EventScript_157D53
+ goto_if_eq RustboroCity_CuttersHouse_EventScript_157D53
msgbox RustboroCity_CuttersHouse_Text_18509C, 4
giveitem ITEM_HM01
setflag 137
diff --git a/data/scripts/maps/RustboroCity_DevonCorp_1F.inc b/data/scripts/maps/RustboroCity_DevonCorp_1F.inc
index 97a59257f..48d8aaf9f 100644
--- a/data/scripts/maps/RustboroCity_DevonCorp_1F.inc
+++ b/data/scripts/maps/RustboroCity_DevonCorp_1F.inc
@@ -4,21 +4,21 @@ RustboroCity_DevonCorp_1F_MapScripts:: @ 8157406
RustboroCity_DevonCorp_1F_MapScript1_15740C:: @ 815740C
checkflag 144
- callif 0, RustboroCity_DevonCorp_1F_EventScript_157416
+ call_if 0, RustboroCity_DevonCorp_1F_EventScript_157416
end
RustboroCity_DevonCorp_1F_EventScript_157416:: @ 8157416
- movespriteperm 2, 14, 2
- spritebehave 2, 8
+ setobjectxyperm 2, 14, 2
+ setobjectmovementtype 2, 8
return
RustboroCity_DevonCorp_1F_EventScript_157422:: @ 8157422
lock
faceplayer
checkflag 144
- jumpeq RustboroCity_DevonCorp_1F_EventScript_15744A
+ goto_if_eq RustboroCity_DevonCorp_1F_EventScript_15744A
checkflag 142
- jumpeq RustboroCity_DevonCorp_1F_EventScript_157440
+ goto_if_eq RustboroCity_DevonCorp_1F_EventScript_157440
msgbox RustboroCity_DevonCorp_1F_Text_1829A4, 4
release
end
@@ -37,11 +37,11 @@ RustboroCity_DevonCorp_1F_EventScript_157454:: @ 8157454
lock
faceplayer
checkflag 144
- jumpeq RustboroCity_DevonCorp_1F_EventScript_15747B
+ goto_if_eq RustboroCity_DevonCorp_1F_EventScript_15747B
checkflag 143
- jumpeq RustboroCity_DevonCorp_1F_EventScript_157485
+ goto_if_eq RustboroCity_DevonCorp_1F_EventScript_157485
checkflag 142
- jumpeq RustboroCity_DevonCorp_1F_EventScript_157485
+ goto_if_eq RustboroCity_DevonCorp_1F_EventScript_157485
msgbox RustboroCity_DevonCorp_1F_Text_182AF0, 4
release
end
@@ -60,11 +60,11 @@ RustboroCity_DevonCorp_1F_EventScript_15748F:: @ 815748F
lock
faceplayer
checkflag 144
- jumpeq RustboroCity_DevonCorp_1F_EventScript_1574B6
+ goto_if_eq RustboroCity_DevonCorp_1F_EventScript_1574B6
checkflag 143
- jumpeq RustboroCity_DevonCorp_1F_EventScript_1574C0
+ goto_if_eq RustboroCity_DevonCorp_1F_EventScript_1574C0
checkflag 142
- jumpeq RustboroCity_DevonCorp_1F_EventScript_1574C0
+ goto_if_eq RustboroCity_DevonCorp_1F_EventScript_1574C0
msgbox RustboroCity_DevonCorp_1F_Text_1828EE, 4
release
end
diff --git a/data/scripts/maps/RustboroCity_DevonCorp_2F.inc b/data/scripts/maps/RustboroCity_DevonCorp_2F.inc
index e35015b3e..f40c1b87b 100644
--- a/data/scripts/maps/RustboroCity_DevonCorp_2F.inc
+++ b/data/scripts/maps/RustboroCity_DevonCorp_2F.inc
@@ -4,7 +4,7 @@ RustboroCity_DevonCorp_2F_MapScripts:: @ 81574CA
RustboroCity_DevonCorp_2F_MapScript1_1574D0:: @ 81574D0
compare 0x40c4, 1
- callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC
+ call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC
end
RustboroCity_DevonCorp_2F_EventScript_1574DC:: @ 81574DC
@@ -15,7 +15,7 @@ RustboroCity_DevonCorp_2F_EventScript_1574E2:: @ 81574E2
lock
faceplayer
compare 0x40c4, 1
- callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC
+ call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC
msgbox RustboroCity_DevonCorp_2F_Text_182B81, 4
release
end
@@ -24,9 +24,9 @@ RustboroCity_DevonCorp_2F_EventScript_1574F9:: @ 81574F9
lock
faceplayer
compare 0x40c4, 1
- callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC
+ call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC
checkflag 287
- jumpeq RustboroCity_DevonCorp_2F_EventScript_157519
+ goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157519
msgbox RustboroCity_DevonCorp_2F_Text_182BD8, 4
release
end
@@ -40,9 +40,9 @@ RustboroCity_DevonCorp_2F_EventScript_157523:: @ 8157523
lock
faceplayer
compare 0x40c4, 1
- callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC
+ call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC
checkflag 188
- jumpeq RustboroCity_DevonCorp_2F_EventScript_157543
+ goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157543
msgbox RustboroCity_DevonCorp_2F_Text_182D2A, 4
release
end
@@ -56,7 +56,7 @@ RustboroCity_DevonCorp_2F_EventScript_15754D:: @ 815754D
lock
faceplayer
compare 0x40c4, 1
- callif 1, RustboroCity_DevonCorp_2F_EventScript_1574DC
+ call_if 1, RustboroCity_DevonCorp_2F_EventScript_1574DC
msgbox RustboroCity_DevonCorp_2F_Text_182E6B, 4
release
end
@@ -65,30 +65,30 @@ RustboroCity_DevonCorp_2F_EventScript_157564:: @ 8157564
lock
faceplayer
compare 0x40c4, 2
- jumpeq RustboroCity_DevonCorp_2F_EventScript_15764A
+ goto_if_eq RustboroCity_DevonCorp_2F_EventScript_15764A
compare 0x40c4, 1
- jumpeq RustboroCity_DevonCorp_2F_EventScript_157640
+ goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157640
msgbox RustboroCity_DevonCorp_2F_Text_182ED5, 4
checkitem ITEM_ROOT_FOSSIL, 1
compare RESULT, 1
- jumpeq RustboroCity_DevonCorp_2F_EventScript_1575A6
+ goto_if_eq RustboroCity_DevonCorp_2F_EventScript_1575A6
checkitem ITEM_CLAW_FOSSIL, 1
compare RESULT, 1
- jumpeq RustboroCity_DevonCorp_2F_EventScript_1575EE
+ goto_if_eq RustboroCity_DevonCorp_2F_EventScript_1575EE
release
end
RustboroCity_DevonCorp_2F_EventScript_1575A6:: @ 81575A6
- closebutton
- playsfx 21
- move 5, RustboroCity_DevonCorp_2F_Movement_1A0833
- waitmove 0
- move 5, RustboroCity_DevonCorp_2F_Movement_1A0835
- waitmove 0
+ closemessage
+ playse 21
+ applymovement 5, RustboroCity_DevonCorp_2F_Movement_1A0833
+ waitmovement 0
+ applymovement 5, RustboroCity_DevonCorp_2F_Movement_1A0835
+ waitmovement 0
msgbox RustboroCity_DevonCorp_2F_Text_182F35, 5
compare RESULT, 0
- jumpeq RustboroCity_DevonCorp_2F_EventScript_157636
- bufferitem 0, ITEM_ROOT_FOSSIL
+ goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157636
+ getitemname 0, ITEM_ROOT_FOSSIL
msgbox RustboroCity_DevonCorp_2F_Text_183023, 4
removeitem ITEM_ROOT_FOSSIL, 1
setvar 0x40c4, 1
@@ -97,16 +97,16 @@ RustboroCity_DevonCorp_2F_EventScript_1575A6:: @ 81575A6
end
RustboroCity_DevonCorp_2F_EventScript_1575EE:: @ 81575EE
- closebutton
- playsfx 21
- move 5, RustboroCity_DevonCorp_2F_Movement_1A0833
- waitmove 0
- move 5, RustboroCity_DevonCorp_2F_Movement_1A0835
- waitmove 0
+ closemessage
+ playse 21
+ applymovement 5, RustboroCity_DevonCorp_2F_Movement_1A0833
+ waitmovement 0
+ applymovement 5, RustboroCity_DevonCorp_2F_Movement_1A0835
+ waitmovement 0
msgbox RustboroCity_DevonCorp_2F_Text_182F35, 5
compare RESULT, 0
- jumpeq RustboroCity_DevonCorp_2F_EventScript_157636
- bufferitem 0, ITEM_CLAW_FOSSIL
+ goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157636
+ getitemname 0, ITEM_CLAW_FOSSIL
msgbox RustboroCity_DevonCorp_2F_Text_183023, 4
removeitem ITEM_CLAW_FOSSIL, 1
setvar 0x40c4, 1
@@ -126,48 +126,48 @@ RustboroCity_DevonCorp_2F_EventScript_157640:: @ 8157640
RustboroCity_DevonCorp_2F_EventScript_15764A:: @ 815764A
compare 0x40c5, 1
- jumpeq RustboroCity_DevonCorp_2F_EventScript_157661
+ goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157661
compare 0x40c5, 2
- jumpeq RustboroCity_DevonCorp_2F_EventScript_1576B4
+ goto_if_eq RustboroCity_DevonCorp_2F_EventScript_1576B4
end
RustboroCity_DevonCorp_2F_EventScript_157661:: @ 8157661
- bufferpoke 1, SPECIES_LILEEP
+ getspeciesname 1, SPECIES_LILEEP
msgbox RustboroCity_DevonCorp_2F_Text_183124, 4
countpokemon
compare RESULT, 6
- jumpeq RustboroCity_DevonCorp_2F_EventScript_157707
+ goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157707
copyvar 0x8004, RESULT
setvar 0x40c4, 0
setflag 267
- fanfare 370
+ playfanfare 370
message RustboroCity_DevonCorp_2F_Text_18319E
waitfanfare
- waittext
- givepokemon SPECIES_LILEEP, 20, ITEM_NONE, 0x0, 0x0, 0
+ waitmessage
+ givepoke SPECIES_LILEEP, 20, ITEM_NONE, 0x0, 0x0, 0
msgbox RustboroCity_DevonCorp_2F_Text_1A1102, 5
compare RESULT, 1
- callif 1, RustboroCity_DevonCorp_2F_EventScript_1A0678
+ call_if 1, RustboroCity_DevonCorp_2F_EventScript_1A0678
release
end
RustboroCity_DevonCorp_2F_EventScript_1576B4:: @ 81576B4
- bufferpoke 1, SPECIES_ANORITH
+ getspeciesname 1, SPECIES_ANORITH
msgbox RustboroCity_DevonCorp_2F_Text_183124, 4
countpokemon
compare RESULT, 6
- jumpeq RustboroCity_DevonCorp_2F_EventScript_157707
+ goto_if_eq RustboroCity_DevonCorp_2F_EventScript_157707
copyvar 0x8004, RESULT
setvar 0x40c4, 0
setflag 267
- fanfare 370
+ playfanfare 370
message RustboroCity_DevonCorp_2F_Text_18319E
waitfanfare
- waittext
- givepokemon SPECIES_ANORITH, 20, ITEM_NONE, 0x0, 0x0, 0
+ waitmessage
+ givepoke SPECIES_ANORITH, 20, ITEM_NONE, 0x0, 0x0, 0
msgbox RustboroCity_DevonCorp_2F_Text_1A1102, 5
compare RESULT, 1
- callif 1, RustboroCity_DevonCorp_2F_EventScript_1A0678
+ call_if 1, RustboroCity_DevonCorp_2F_EventScript_1A0678
release
end
diff --git a/data/scripts/maps/RustboroCity_DevonCorp_3F.inc b/data/scripts/maps/RustboroCity_DevonCorp_3F.inc
index 2b749c873..6f0152e60 100644
--- a/data/scripts/maps/RustboroCity_DevonCorp_3F.inc
+++ b/data/scripts/maps/RustboroCity_DevonCorp_3F.inc
@@ -6,12 +6,12 @@ RustboroCity_DevonCorp_3F_MapScripts:: @ 8157711
RustboroCity_DevonCorp_3F_MapScript1_157721:: @ 8157721
compare 0x408f, 0
- callif 1, RustboroCity_DevonCorp_3F_EventScript_15772D
+ call_if 1, RustboroCity_DevonCorp_3F_EventScript_15772D
end
RustboroCity_DevonCorp_3F_EventScript_15772D:: @ 815772D
- movespriteperm 2, 3, 2
- spritebehave 2, 9
+ setobjectxyperm 2, 3, 2
+ setobjectmovementtype 2, 9
return
RustboroCity_DevonCorp_3F_MapScript2_157739:: @ 8157739
@@ -19,7 +19,7 @@ RustboroCity_DevonCorp_3F_MapScript2_157739:: @ 8157739
.2byte 0
RustboroCity_DevonCorp_3F_EventScript_157743:: @ 8157743
- spriteface 255, 4
+ turnobject 255, 4
end
RustboroCity_DevonCorp_3F_MapScript2_157748:: @ 8157748
@@ -29,31 +29,31 @@ RustboroCity_DevonCorp_3F_MapScript2_157748:: @ 8157748
RustboroCity_DevonCorp_3F_EventScript_157752:: @ 8157752
lockall
msgbox RustboroCity_DevonCorp_3F_Text_18374C, 4
- closebutton
- move 2, RustboroCity_DevonCorp_3F_Movement_157815
- waitmove 0
- pause 80
- move 2, RustboroCity_DevonCorp_3F_Movement_15781E
- waitmove 0
+ closemessage
+ applymovement 2, RustboroCity_DevonCorp_3F_Movement_157815
+ waitmovement 0
+ delay 80
+ applymovement 2, RustboroCity_DevonCorp_3F_Movement_15781E
+ waitmovement 0
msgbox RustboroCity_DevonCorp_3F_Text_183903, 4
- closebutton
- playmusic 420, 0
- move 2, RustboroCity_DevonCorp_3F_Movement_157803
- move 255, RustboroCity_DevonCorp_3F_Movement_157827
- waitmove 0
+ closemessage
+ playbgm 420, 0
+ applymovement 2, RustboroCity_DevonCorp_3F_Movement_157803
+ applymovement 255, RustboroCity_DevonCorp_3F_Movement_157827
+ waitmovement 0
msgbox RustboroCity_DevonCorp_3F_Text_18394A, 4
- closebutton
- fadedefault
- move 2, RustboroCity_DevonCorp_3F_Movement_157812
- move 255, RustboroCity_DevonCorp_3F_Movement_157835
- waitmove 0
+ closemessage
+ fadedefaultbgm
+ applymovement 2, RustboroCity_DevonCorp_3F_Movement_157812
+ applymovement 255, RustboroCity_DevonCorp_3F_Movement_157835
+ waitmovement 0
msgbox RustboroCity_DevonCorp_3F_Text_18320B, 4
giveitem ITEM_LETTER
msgbox RustboroCity_DevonCorp_3F_Text_18337E, 4
- fanfare 370
+ playfanfare 370
message RustboroCity_DevonCorp_3F_Text_183422
waitfanfare
- waittext
+ waitmessage
setflag 2050
setflag 188
msgbox RustboroCity_DevonCorp_3F_Text_183439, 4
@@ -147,13 +147,13 @@ RustboroCity_DevonCorp_3F_EventScript_15783B:: @ 815783B
lock
faceplayer
checkflag 272
- jumpeq RustboroCity_DevonCorp_3F_EventScript_15789B
+ goto_if_eq RustboroCity_DevonCorp_3F_EventScript_15789B
checkflag 189
- jumpeq RustboroCity_DevonCorp_3F_EventScript_157864
+ goto_if_eq RustboroCity_DevonCorp_3F_EventScript_157864
msgbox RustboroCity_DevonCorp_3F_Text_18351E, 4
- closebutton
- move LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D
+ waitmovement 0
release
end
@@ -161,20 +161,20 @@ RustboroCity_DevonCorp_3F_EventScript_157864:: @ 8157864
msgbox RustboroCity_DevonCorp_3F_Text_18353E, 4
giveitem ITEM_EXP_SHARE
compare RESULT, 0
- jumpeq RustboroCity_DevonCorp_3F_EventScript_1A029B
+ goto_if_eq RustboroCity_DevonCorp_3F_EventScript_1A029B
setflag 272
msgbox RustboroCity_DevonCorp_3F_Text_1835B3, 4
- closebutton
- move LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D
+ waitmovement 0
release
end
RustboroCity_DevonCorp_3F_EventScript_15789B:: @ 815789B
msgbox RustboroCity_DevonCorp_3F_Text_18368D, 4
- closebutton
- move LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, RustboroCity_DevonCorp_3F_Movement_1A083D
+ waitmovement 0
release
end
@@ -182,7 +182,7 @@ RustboroCity_DevonCorp_3F_EventScript_1578B0:: @ 81578B0
lock
faceplayer
checkflag 256
- jumpeq RustboroCity_DevonCorp_3F_EventScript_1578C5
+ goto_if_eq RustboroCity_DevonCorp_3F_EventScript_1578C5
msgbox RustboroCity_DevonCorp_3F_Text_18395C, 4
release
end
diff --git a/data/scripts/maps/RustboroCity_Flat2_1F.inc b/data/scripts/maps/RustboroCity_Flat2_1F.inc
index 5aa91d5d1..b6b8b41b1 100644
--- a/data/scripts/maps/RustboroCity_Flat2_1F.inc
+++ b/data/scripts/maps/RustboroCity_Flat2_1F.inc
@@ -8,8 +8,8 @@ RustboroCity_Flat2_1F_EventScript_157D7A:: @ 8157D7A
RustboroCity_Flat2_1F_EventScript_157D83:: @ 8157D83
lock
faceplayer
- checksound
- pokecry SPECIES_SKITTY, 0
+ waitse
+ playpokecry SPECIES_SKITTY, 0
msgbox RustboroCity_Flat2_1F_Text_185410, 4
waitpokecry
release
diff --git a/data/scripts/maps/RustboroCity_Flat2_2F.inc b/data/scripts/maps/RustboroCity_Flat2_2F.inc
index d6e0c92b3..0dfec5cfa 100644
--- a/data/scripts/maps/RustboroCity_Flat2_2F.inc
+++ b/data/scripts/maps/RustboroCity_Flat2_2F.inc
@@ -9,11 +9,11 @@ RustboroCity_Flat2_2F_EventScript_157DA0:: @ 8157DA0
lock
faceplayer
checkflag 213
- jumpeq RustboroCity_Flat2_2F_EventScript_157DCF
+ goto_if_eq RustboroCity_Flat2_2F_EventScript_157DCF
msgbox RustboroCity_Flat2_2F_Text_185461, 4
giveitem ITEM_PREMIER_BALL
compare RESULT, 0
- jumpeq RustboroCity_Flat2_2F_EventScript_1A029B
+ goto_if_eq RustboroCity_Flat2_2F_EventScript_1A029B
setflag 213
release
end
diff --git a/data/scripts/maps/RustboroCity_Gym.inc b/data/scripts/maps/RustboroCity_Gym.inc
index e4f91f82e..b1bbfb8d8 100644
--- a/data/scripts/maps/RustboroCity_Gym.inc
+++ b/data/scripts/maps/RustboroCity_Gym.inc
@@ -4,14 +4,14 @@ RustboroCity_Gym_MapScripts:: @ 81578D8
RustboroCity_Gym_EventScript_1578D9:: @ 81578D9
trainerbattle 1, OPPONENT_ROXANNE, 0, RustboroCity_Gym_Text_183EE5, RustboroCity_Gym_Text_183FC4, RustboroCity_Gym_EventScript_1578FE
checkflag 165
- jumpif 0, RustboroCity_Gym_EventScript_15793C
+ goto_if 0, RustboroCity_Gym_EventScript_15793C
msgbox RustboroCity_Gym_Text_184252, 4
release
end
RustboroCity_Gym_EventScript_1578FE:: @ 81578FE
message RustboroCity_Gym_Text_1840AB
- waittext
+ waitmessage
call RustboroCity_Gym_EventScript_1A02C5
msgbox RustboroCity_Gym_Text_1840D5, 4
setflag 1201
@@ -21,14 +21,14 @@ RustboroCity_Gym_EventScript_1578FE:: @ 81578FE
setvar 0x8008, 1
call RustboroCity_Gym_EventScript_1A01C0
compare 0x4085, 6
- callif 1, RustboroCity_Gym_EventScript_1A00FB
- jump RustboroCity_Gym_EventScript_15793C
+ call_if 1, RustboroCity_Gym_EventScript_1A00FB
+ goto RustboroCity_Gym_EventScript_15793C
end
RustboroCity_Gym_EventScript_15793C:: @ 815793C
giveitem ITEM_TM39
compare RESULT, 0
- jumpeq RustboroCity_Gym_EventScript_1A029B
+ goto_if_eq RustboroCity_Gym_EventScript_1A029B
setflag 165
msgbox RustboroCity_Gym_Text_184170, 4
release
@@ -48,7 +48,7 @@ RustboroCity_Gym_EventScript_15798E:: @ 815798E
lock
faceplayer
checkflag 1201
- jumpeq RustboroCity_Gym_EventScript_1579A3
+ goto_if_eq RustboroCity_Gym_EventScript_1579A3
msgbox RustboroCity_Gym_Text_183A4B, 4
release
end
@@ -61,15 +61,15 @@ RustboroCity_Gym_EventScript_1579A3:: @ 81579A3
RustboroCity_Gym_EventScript_1579AD:: @ 81579AD
lockall
checkflag 2055
- jumpeq RustboroCity_Gym_EventScript_1579CD
- jump RustboroCity_Gym_EventScript_1579D7
+ goto_if_eq RustboroCity_Gym_EventScript_1579CD
+ goto RustboroCity_Gym_EventScript_1579D7
end
RustboroCity_Gym_EventScript_1579BD:: @ 81579BD
lockall
checkflag 2055
- jumpeq RustboroCity_Gym_EventScript_1579CD
- jump RustboroCity_Gym_EventScript_1579D7
+ goto_if_eq RustboroCity_Gym_EventScript_1579CD
+ goto RustboroCity_Gym_EventScript_1579D7
end
RustboroCity_Gym_EventScript_1579CD:: @ 81579CD
diff --git a/data/scripts/maps/RustboroCity_House1.inc b/data/scripts/maps/RustboroCity_House1.inc
index 402fff1d3..b983617e0 100644
--- a/data/scripts/maps/RustboroCity_House1.inc
+++ b/data/scripts/maps/RustboroCity_House1.inc
@@ -5,24 +5,24 @@ RustboroCity_House1_EventScript_157C7D:: @ 8157C7D
lock
faceplayer
checkflag 153
- jumpeq RustboroCity_House1_EventScript_157D13
+ goto_if_eq RustboroCity_House1_EventScript_157D13
setvar 0x8008, 0
copyvar 0x8004, 0x8008
- specialval RESULT, sub_804D89C
+ specialvar RESULT, sub_804D89C
copyvar 0x8009, RESULT
msgbox RustboroCity_House1_Text_184EBA, 5
compare RESULT, 0
- jumpeq RustboroCity_House1_EventScript_157CFB
+ goto_if_eq RustboroCity_House1_EventScript_157CFB
special sub_80F9A0C
waitstate
copyvar 0x800a, 0x8004
compare 0x8004, 255
- jumpeq RustboroCity_House1_EventScript_157CFB
+ goto_if_eq RustboroCity_House1_EventScript_157CFB
copyvar 0x8005, 0x800a
- specialval RESULT, sub_804DB2C
+ specialvar RESULT, sub_804DB2C
copyvar 0x800b, RESULT
- comparevars RESULT, 0x8009
- jumpif 5, RustboroCity_House1_EventScript_157D05
+ compare RESULT, 0x8009
+ goto_if 5, RustboroCity_House1_EventScript_157D05
copyvar 0x8004, 0x8008
copyvar 0x8005, 0x800a
special sub_804DB68
@@ -39,7 +39,7 @@ RustboroCity_House1_EventScript_157CFB:: @ 8157CFB
end
RustboroCity_House1_EventScript_157D05:: @ 8157D05
- bufferpoke 0, 0x8009
+ getspeciesname 0, 0x8009
msgbox RustboroCity_House1_Text_184F8F, 4
release
end
diff --git a/data/scripts/maps/RustboroCity_House3.inc b/data/scripts/maps/RustboroCity_House3.inc
index 0e81ed158..a5088175e 100644
--- a/data/scripts/maps/RustboroCity_House3.inc
+++ b/data/scripts/maps/RustboroCity_House3.inc
@@ -12,8 +12,8 @@ RustboroCity_House3_EventScript_157DF6:: @ 8157DF6
RustboroCity_House3_EventScript_157DFF:: @ 8157DFF
lock
faceplayer
- checksound
- pokecry SPECIES_PIKACHU, 0
+ waitse
+ playpokecry SPECIES_PIKACHU, 0
msgbox RustboroCity_House3_Text_18567D, 4
waitpokecry
release
diff --git a/data/scripts/maps/RustboroCity_Mart.inc b/data/scripts/maps/RustboroCity_Mart.inc
index 6b4ff3a77..cb722a6af 100644
--- a/data/scripts/maps/RustboroCity_Mart.inc
+++ b/data/scripts/maps/RustboroCity_Mart.inc
@@ -5,11 +5,11 @@ RustboroCity_Mart_EventScript_157BD4:: @ 8157BD4
lock
faceplayer
message RustboroCity_Mart_Text_1A0BE4
- waittext
+ waitmessage
checkflag 287
- jumpif 0, RustboroCity_Mart_EventScript_157BEF
+ goto_if 0, RustboroCity_Mart_EventScript_157BEF
checkflag 287
- jumpeq RustboroCity_Mart_EventScript_157C18
+ goto_if_eq RustboroCity_Mart_EventScript_157C18
end
RustboroCity_Mart_EventScript_157BEF:: @ 8157BEF
diff --git a/data/scripts/maps/RustboroCity_PokemonCenter_1F.inc b/data/scripts/maps/RustboroCity_PokemonCenter_1F.inc
index 896e8e220..53b481832 100644
--- a/data/scripts/maps/RustboroCity_PokemonCenter_1F.inc
+++ b/data/scripts/maps/RustboroCity_PokemonCenter_1F.inc
@@ -10,7 +10,7 @@ RustboroCity_PokemonCenter_1F_MapScript1_157B7F:: @ 8157B7F
RustboroCity_PokemonCenter_1F_EventScript_157B88:: @ 8157B88
setvar 0x800b, 1
call RustboroCity_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
diff --git a/data/scripts/maps/RustboroCity_PokemonSchool.inc b/data/scripts/maps/RustboroCity_PokemonSchool.inc
index 8b037a3e7..73b364f5e 100644
--- a/data/scripts/maps/RustboroCity_PokemonSchool.inc
+++ b/data/scripts/maps/RustboroCity_PokemonSchool.inc
@@ -4,13 +4,13 @@ RustboroCity_PokemonSchool_MapScripts:: @ 81579E1
RustboroCity_PokemonSchool_EventScript_1579E2:: @ 81579E2
lockall
msgbox RustboroCity_PokemonSchool_Text_184321, 4
- jump RustboroCity_PokemonSchool_EventScript_1579F1
+ goto RustboroCity_PokemonSchool_EventScript_1579F1
end
RustboroCity_PokemonSchool_EventScript_1579F1:: @ 81579F1
message RustboroCity_PokemonSchool_Text_184368
- waittext
- multichoicerow 8, 1, 13, 3, 0
+ waitmessage
+ multichoicegrid 8, 1, 13, 3, 0
switch RESULT
case 0, RustboroCity_PokemonSchool_EventScript_157A50
case 1, RustboroCity_PokemonSchool_EventScript_157A5E
@@ -23,27 +23,27 @@ RustboroCity_PokemonSchool_EventScript_1579F1:: @ 81579F1
RustboroCity_PokemonSchool_EventScript_157A50:: @ 8157A50
msgbox RustboroCity_PokemonSchool_Text_184389, 4
- jump RustboroCity_PokemonSchool_EventScript_1579F1
+ goto RustboroCity_PokemonSchool_EventScript_1579F1
end
RustboroCity_PokemonSchool_EventScript_157A5E:: @ 8157A5E
msgbox RustboroCity_PokemonSchool_Text_184447, 4
- jump RustboroCity_PokemonSchool_EventScript_1579F1
+ goto RustboroCity_PokemonSchool_EventScript_1579F1
end
RustboroCity_PokemonSchool_EventScript_157A6C:: @ 8157A6C
msgbox RustboroCity_PokemonSchool_Text_1844EC, 4
- jump RustboroCity_PokemonSchool_EventScript_1579F1
+ goto RustboroCity_PokemonSchool_EventScript_1579F1
end
RustboroCity_PokemonSchool_EventScript_157A7A:: @ 8157A7A
msgbox RustboroCity_PokemonSchool_Text_1845A5, 4
- jump RustboroCity_PokemonSchool_EventScript_1579F1
+ goto RustboroCity_PokemonSchool_EventScript_1579F1
end
RustboroCity_PokemonSchool_EventScript_157A88:: @ 8157A88
msgbox RustboroCity_PokemonSchool_Text_184627, 4
- jump RustboroCity_PokemonSchool_EventScript_1579F1
+ goto RustboroCity_PokemonSchool_EventScript_1579F1
end
RustboroCity_PokemonSchool_EventScript_157A96:: @ 8157A96
@@ -78,37 +78,37 @@ RustboroCity_PokemonSchool_EventScript_157ACE:: @ 8157ACE
lock
faceplayer
checkflag 275
- jumpeq RustboroCity_PokemonSchool_EventScript_157B34
+ goto_if_eq RustboroCity_PokemonSchool_EventScript_157B34
compare FACING, 4
- callif 1, RustboroCity_PokemonSchool_EventScript_157B1E
+ call_if 1, RustboroCity_PokemonSchool_EventScript_157B1E
compare FACING, 3
- callif 1, RustboroCity_PokemonSchool_EventScript_157B29
+ call_if 1, RustboroCity_PokemonSchool_EventScript_157B29
msgbox RustboroCity_PokemonSchool_Text_1846A2, 4
giveitem ITEM_QUICK_CLAW
compare RESULT, 0
- jumpeq RustboroCity_PokemonSchool_EventScript_1A029B
- closebutton
- move LAST_TALKED, RustboroCity_PokemonSchool_Movement_1A0845
- waitmove 0
+ goto_if_eq RustboroCity_PokemonSchool_EventScript_1A029B
+ closemessage
+ applymovement LAST_TALKED, RustboroCity_PokemonSchool_Movement_1A0845
+ waitmovement 0
setflag 275
release
end
RustboroCity_PokemonSchool_EventScript_157B1E:: @ 8157B1E
- move LAST_TALKED, RustboroCity_PokemonSchool_Movement_157B60
- waitmove 0
+ applymovement LAST_TALKED, RustboroCity_PokemonSchool_Movement_157B60
+ waitmovement 0
return
RustboroCity_PokemonSchool_EventScript_157B29:: @ 8157B29
- move LAST_TALKED, RustboroCity_PokemonSchool_Movement_157B49
- waitmove 0
+ applymovement LAST_TALKED, RustboroCity_PokemonSchool_Movement_157B49
+ waitmovement 0
return
RustboroCity_PokemonSchool_EventScript_157B34:: @ 8157B34
msgbox RustboroCity_PokemonSchool_Text_184737, 4
- closebutton
- move LAST_TALKED, RustboroCity_PokemonSchool_Movement_1A0845
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, RustboroCity_PokemonSchool_Movement_1A0845
+ waitmovement 0
release
end
diff --git a/data/scripts/maps/RusturfTunnel.inc b/data/scripts/maps/RusturfTunnel.inc
index 129bef7c9..28f6f0ad4 100644
--- a/data/scripts/maps/RusturfTunnel.inc
+++ b/data/scripts/maps/RusturfTunnel.inc
@@ -11,21 +11,21 @@ RusturfTunnel_MapScript2_15C750:: @ 815C750
RusturfTunnel_MapScript1_15C762:: @ 815C762
call RusturfTunnel_EventScript_1A0196
compare 0x409a, 2
- callif 1, RusturfTunnel_EventScript_15C773
+ call_if 1, RusturfTunnel_EventScript_15C773
end
RusturfTunnel_EventScript_15C773:: @ 815C773
- movespriteperm 7, 13, 4
- movespriteperm 6, 13, 5
+ setobjectxyperm 7, 13, 4
+ setobjectxyperm 6, 13, 5
return
RusturfTunnel_EventScript_15C782:: @ 815C782
lock
faceplayer
msgbox RusturfTunnel_Text_194766, 4
- closebutton
- move LAST_TALKED, RusturfTunnel_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, RusturfTunnel_Movement_1A083D
+ waitmovement 0
release
end
@@ -33,126 +33,126 @@ RusturfTunnel_EventScript_15C799:: @ 815C799
lock
faceplayer
checkflag 1
- jumpeq RusturfTunnel_EventScript_15C7BC
+ goto_if_eq RusturfTunnel_EventScript_15C7BC
setflag 1
msgbox RusturfTunnel_Text_1944C5, 4
- closebutton
- move LAST_TALKED, RusturfTunnel_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, RusturfTunnel_Movement_1A083D
+ waitmovement 0
release
end
RusturfTunnel_EventScript_15C7BC:: @ 815C7BC
msgbox RusturfTunnel_Text_1945B2, 4
- closebutton
- move LAST_TALKED, RusturfTunnel_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, RusturfTunnel_Movement_1A083D
+ waitmovement 0
release
end
RusturfTunnel_EventScript_15C7D1:: @ 815C7D1
lockall
compare 0x4001, 1
- callif 1, RusturfTunnel_EventScript_15C8CA
+ call_if 1, RusturfTunnel_EventScript_15C8CA
compare 0x4001, 2
- callif 1, RusturfTunnel_EventScript_15C8DF
+ call_if 1, RusturfTunnel_EventScript_15C8DF
compare 0x4001, 3
- callif 1, RusturfTunnel_EventScript_15C8EA
+ call_if 1, RusturfTunnel_EventScript_15C8EA
call RusturfTunnel_EventScript_15C92D
msgbox RusturfTunnel_Text_19461D, 4
compare 0x4001, 2
- callif 1, RusturfTunnel_EventScript_15C8EB
+ call_if 1, RusturfTunnel_EventScript_15C8EB
compare 0x4001, 3
- callif 1, RusturfTunnel_EventScript_15C8EB
+ call_if 1, RusturfTunnel_EventScript_15C8EB
giveitem ITEM_HM04
setflag 106
msgbox RusturfTunnel_Text_194693, 4
- closebutton
+ closemessage
compare 0x4001, 1
- callif 1, RusturfTunnel_EventScript_15C880
+ call_if 1, RusturfTunnel_EventScript_15C880
compare 0x4001, 2
- callif 1, RusturfTunnel_EventScript_15C892
+ call_if 1, RusturfTunnel_EventScript_15C892
compare 0x4001, 3
- callif 1, RusturfTunnel_EventScript_15C8AE
+ call_if 1, RusturfTunnel_EventScript_15C8AE
msgbox RusturfTunnel_Text_194706, 4
- closebutton
+ closemessage
compare 0x4001, 1
- callif 1, RusturfTunnel_EventScript_15C8F7
+ call_if 1, RusturfTunnel_EventScript_15C8F7
compare 0x4001, 2
- callif 1, RusturfTunnel_EventScript_15C909
+ call_if 1, RusturfTunnel_EventScript_15C909
compare 0x4001, 3
- callif 1, RusturfTunnel_EventScript_15C91B
+ call_if 1, RusturfTunnel_EventScript_15C91B
call RusturfTunnel_EventScript_1A0442
releaseall
end
RusturfTunnel_EventScript_15C880:: @ 815C880
- move 255, RusturfTunnel_Movement_15C96A
- move 1, RusturfTunnel_Movement_15C98F
- waitmove 0
+ applymovement 255, RusturfTunnel_Movement_15C96A
+ applymovement 1, RusturfTunnel_Movement_15C98F
+ waitmovement 0
return
RusturfTunnel_EventScript_15C892:: @ 815C892
- move 255, RusturfTunnel_Movement_15C96D
- move 1, RusturfTunnel_Movement_15C994
- waitmove 0
- move 10, RusturfTunnel_Movement_1A0845
- waitmove 0
+ applymovement 255, RusturfTunnel_Movement_15C96D
+ applymovement 1, RusturfTunnel_Movement_15C994
+ waitmovement 0
+ applymovement 10, RusturfTunnel_Movement_1A0845
+ waitmovement 0
return
RusturfTunnel_EventScript_15C8AE:: @ 815C8AE
- move 255, RusturfTunnel_Movement_15C96D
- move 1, RusturfTunnel_Movement_15C994
- waitmove 0
- move 10, RusturfTunnel_Movement_1A0845
- waitmove 0
+ applymovement 255, RusturfTunnel_Movement_15C96D
+ applymovement 1, RusturfTunnel_Movement_15C994
+ waitmovement 0
+ applymovement 10, RusturfTunnel_Movement_1A0845
+ waitmovement 0
return
RusturfTunnel_EventScript_15C8CA:: @ 815C8CA
- move 1, RusturfTunnel_Movement_1A0841
- waitmove 0
- move 255, RusturfTunnel_Movement_1A0845
- waitmove 0
+ applymovement 1, RusturfTunnel_Movement_1A0841
+ waitmovement 0
+ applymovement 255, RusturfTunnel_Movement_1A0845
+ waitmovement 0
return
RusturfTunnel_EventScript_15C8DF:: @ 815C8DF
- move 1, RusturfTunnel_Movement_15C970
- waitmove 0
+ applymovement 1, RusturfTunnel_Movement_15C970
+ waitmovement 0
return
RusturfTunnel_EventScript_15C8EA:: @ 815C8EA
return
RusturfTunnel_EventScript_15C8EB:: @ 815C8EB
- closebutton
- move 1, RusturfTunnel_Movement_15C98D
- waitmove 0
+ closemessage
+ applymovement 1, RusturfTunnel_Movement_15C98D
+ waitmovement 0
return
RusturfTunnel_EventScript_15C8F7:: @ 815C8F7
- move 10, RusturfTunnel_Movement_15C945
- move 1, RusturfTunnel_Movement_15C973
- waitmove 0
+ applymovement 10, RusturfTunnel_Movement_15C945
+ applymovement 1, RusturfTunnel_Movement_15C973
+ waitmovement 0
return
RusturfTunnel_EventScript_15C909:: @ 815C909
- move 10, RusturfTunnel_Movement_15C951
- move 1, RusturfTunnel_Movement_15C980
- waitmove 0
+ applymovement 10, RusturfTunnel_Movement_15C951
+ applymovement 1, RusturfTunnel_Movement_15C980
+ waitmovement 0
return
RusturfTunnel_EventScript_15C91B:: @ 815C91B
- move 10, RusturfTunnel_Movement_15C951
- move 1, RusturfTunnel_Movement_15C980
- waitmove 0
+ applymovement 10, RusturfTunnel_Movement_15C951
+ applymovement 1, RusturfTunnel_Movement_15C980
+ waitmovement 0
return
RusturfTunnel_EventScript_15C92D:: @ 815C92D
- playsfx 21
- move 1, RusturfTunnel_Movement_1A0833
- waitmove 0
- move 1, RusturfTunnel_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement 1, RusturfTunnel_Movement_1A0833
+ waitmovement 0
+ applymovement 1, RusturfTunnel_Movement_1A0835
+ waitmovement 0
return
RusturfTunnel_Movement_15C945:: @ 815C945
@@ -280,12 +280,12 @@ RusturfTunnel_EventScript_15C9A5:: @ 815C9A5
RusturfTunnel_EventScript_15C9AB:: @ 815C9AB
lockall
msgbox RusturfTunnel_Text_194159, 4
- closebutton
- move 6, RusturfTunnel_Movement_15C9D3
- move 7, RusturfTunnel_Movement_15C9D3
- waitmove 0
- moveoffscreen 6
- moveoffscreen 7
+ closemessage
+ applymovement 6, RusturfTunnel_Movement_15C9D3
+ applymovement 7, RusturfTunnel_Movement_15C9D3
+ waitmovement 0
+ moveobjectoffscreen 6
+ moveobjectoffscreen 7
setvar 0x409a, 3
releaseall
end
@@ -299,8 +299,8 @@ RusturfTunnel_Movement_15C9D3:: @ 815C9D3
RusturfTunnel_EventScript_15C9D7:: @ 815C9D7
lock
faceplayer
- checksound
- pokecry SPECIES_WINGULL, 0
+ waitse
+ playpokecry SPECIES_WINGULL, 0
msgbox RusturfTunnel_Text_194188, 4
waitpokecry
release
@@ -309,38 +309,38 @@ RusturfTunnel_EventScript_15C9D7:: @ 815C9D7
RusturfTunnel_EventScript_15C9EA:: @ 815C9EA
lock
faceplayer
- playmusic BGM_EVIL_TEAM, 0
+ playbgm BGM_EVIL_TEAM, 0
msgbox RusturfTunnel_Text_19419B, 4
trainerbattle 3, OPPONENT_RUSTURF_TUNNEL_GRUNT, 0, RusturfTunnel_Text_194243
msgbox RusturfTunnel_Text_194274, 4
giveitem ITEM_DEVON_GOODS
- closebutton
- move 255, RusturfTunnel_Movement_15CA99
- move 6, RusturfTunnel_Movement_15CAA2
- waitmove 0
- disappear 6
- pause 50
- reappear 5
- move 5, RusturfTunnel_Movement_15CAAC
- waitmove 0
- move 255, RusturfTunnel_Movement_15CA9F
- move 5, RusturfTunnel_Movement_15CAC0
- waitmove 0
+ closemessage
+ applymovement 255, RusturfTunnel_Movement_15CA99
+ applymovement 6, RusturfTunnel_Movement_15CAA2
+ waitmovement 0
+ removeobject 6
+ delay 50
+ addobject 5
+ applymovement 5, RusturfTunnel_Movement_15CAAC
+ waitmovement 0
+ applymovement 255, RusturfTunnel_Movement_15CA9F
+ applymovement 5, RusturfTunnel_Movement_15CAC0
+ waitmovement 0
msgbox RusturfTunnel_Text_19432A, 4
- move 5, RusturfTunnel_Movement_1A0839
- waitmove 0
+ applymovement 5, RusturfTunnel_Movement_1A0839
+ waitmovement 0
message RusturfTunnel_Text_19434F
- waittext
- checksound
- pokecry SPECIES_WINGULL, 0
+ waitmessage
+ waitse
+ playpokecry SPECIES_WINGULL, 0
waitbutton
waitpokecry
- closebutton
- move 5, RusturfTunnel_Movement_15CAB4
- move 7, RusturfTunnel_Movement_15CAC3
- waitmove 0
- disappear 5
- disappear 7
+ closemessage
+ applymovement 5, RusturfTunnel_Movement_15CAB4
+ applymovement 7, RusturfTunnel_Movement_15CAC3
+ waitmovement 0
+ removeobject 5
+ removeobject 7
clearflag 142
setflag 143
setvar 0x405a, 4
diff --git a/data/scripts/maps/SSTidalCorridor.inc b/data/scripts/maps/SSTidalCorridor.inc
index 58cfbec47..2c55a9443 100644
--- a/data/scripts/maps/SSTidalCorridor.inc
+++ b/data/scripts/maps/SSTidalCorridor.inc
@@ -13,7 +13,7 @@ SSTidalCorridor_EventScript_15FCBC:: @ 815FCBC
special SetSSTidalFlag
setvar 0x40b4, 2
lockall
- playsfx 73
+ playse 73
msgbox SSTidalCorridor_Text_199007, 4
releaseall
end
@@ -21,7 +21,7 @@ SSTidalCorridor_EventScript_15FCBC:: @ 815FCBC
SSTidalCorridor_EventScript_15FCD2:: @ 815FCD2
setvar 0x40b4, 6
lockall
- playsfx 73
+ playse 73
msgbox SSTidalCorridor_Text_199088, 4
releaseall
end
@@ -29,29 +29,29 @@ SSTidalCorridor_EventScript_15FCD2:: @ 815FCD2
SSTidalRooms_EventScript_15FCE5:: @ 815FCE5
special SetSSTidalFlag
setvar 0x40b4, 7
- playsfx 73
+ playse 73
msgbox SSTidalRooms_Text_199007, 4
return
SSTidalRooms_EventScript_15FCF9:: @ 815FCF9
special ResetSSTidalFlag
setvar 0x40b4, 4
- playsfx 73
+ playse 73
msgbox SSTidalRooms_Text_1990F8, 4
return
gUnknown_0815FD0D:: @ 815FD0D
compare 0x40B4, 2
- jumpeq SSTidalCorridor_EventScript_15FD24
+ goto_if_eq SSTidalCorridor_EventScript_15FD24
compare 0x40B4, 7
- jumpeq SSTidalCorridor_EventScript_15FD3A
+ goto_if_eq SSTidalCorridor_EventScript_15FD3A
end
SSTidalCorridor_EventScript_15FD24:: @ 815FD24
special ResetSSTidalFlag
setvar 0x40b4, 3
lockall
- playsfx 73
+ playse 73
msgbox SSTidalCorridor_Text_199088, 4
releaseall
end
@@ -60,7 +60,7 @@ SSTidalCorridor_EventScript_15FD3A:: @ 815FD3A
special ResetSSTidalFlag
setvar 0x40b4, 8
lockall
- playsfx 73
+ playse 73
msgbox SSTidalCorridor_Text_1990B4, 4
releaseall
end
@@ -68,7 +68,7 @@ SSTidalCorridor_EventScript_15FD3A:: @ 815FD3A
SSTidalRooms_EventScript_15FD50:: @ 815FD50
special ResetSSTidalFlag
setvar 0x40b4, 8
- playsfx 73
+ playse 73
msgbox SSTidalRooms_Text_1990B4, 4
return
@@ -87,8 +87,8 @@ SSTidalCorridor_EventScript_15FD96:: @ 815FD96
SSTidalCorridor_EventScript_15FD9F:: @ 815FD9F
lock
faceplayer
- checksound
- pokecry SPECIES_WINGULL, 0
+ waitse
+ playpokecry SPECIES_WINGULL, 0
msgbox SSTidalCorridor_Text_199388, 4
waitpokecry
release
@@ -114,9 +114,9 @@ SSTidalCorridor_EventScript_15FDD6:: @ 815FDD6
lock
faceplayer
compare 0x40b4, 4
- jumpeq SSTidalCorridor_EventScript_15FDF8
+ goto_if_eq SSTidalCorridor_EventScript_15FDF8
compare 0x40b4, 8
- jumpeq SSTidalCorridor_EventScript_15FE17
+ goto_if_eq SSTidalCorridor_EventScript_15FE17
msgbox SSTidalCorridor_Text_19913B, 4
release
end
@@ -125,7 +125,7 @@ SSTidalCorridor_EventScript_15FDF8:: @ 815FDF8
sethealplace 8
msgbox SSTidalCorridor_Text_1991F4, 4
checkflag 260
- callif 1, SSTidalCorridor_EventScript_15FE36
+ call_if 1, SSTidalCorridor_EventScript_15FE36
warp LilycoveCity_Harbor, 255, 8, 11
waitstate
release
@@ -135,7 +135,7 @@ SSTidalCorridor_EventScript_15FE17:: @ 815FE17
sethealplace 4
msgbox SSTidalCorridor_Text_1991F4, 4
checkflag 260
- callif 1, SSTidalCorridor_EventScript_15FE36
+ call_if 1, SSTidalCorridor_EventScript_15FE36
warp SlateportCity_Harbor, 255, 8, 11
waitstate
release
@@ -148,9 +148,9 @@ SSTidalCorridor_EventScript_15FE36:: @ 815FE36
SSTidalCorridor_EventScript_15FE3A:: @ 815FE3A
lockall
compare 0x40b4, 2
- jumpeq SSTidalCorridor_EventScript_15FE5B
+ goto_if_eq SSTidalCorridor_EventScript_15FE5B
compare 0x40b4, 7
- jumpeq SSTidalCorridor_EventScript_15FE5B
+ goto_if_eq SSTidalCorridor_EventScript_15FE5B
msgbox SSTidalCorridor_Text_199268, 4
releaseall
end
@@ -164,7 +164,7 @@ SSTidalCorridor_EventScript_15FE60:: @ 815FE60
lock
faceplayer
checkflag 247
- jumpeq SSTidalCorridor_EventScript_15FE7A
+ goto_if_eq SSTidalCorridor_EventScript_15FE7A
call SSTidalCorridor_EventScript_15FE84
msgbox SSTidalCorridor_Text_199203, 4
release
@@ -177,23 +177,23 @@ SSTidalCorridor_EventScript_15FE7A:: @ 815FE7A
SSTidalCorridor_EventScript_15FE84:: @ 815FE84
checktrainerflag OPPONENT_PHILLIP
- jumpif 0, SSTidalCorridor_EventScript_15FED5
+ goto_if 0, SSTidalCorridor_EventScript_15FED5
checktrainerflag OPPONENT_LEONARD
- jumpif 0, SSTidalCorridor_EventScript_15FED5
+ goto_if 0, SSTidalCorridor_EventScript_15FED5
checktrainerflag OPPONENT_COLTON
- jumpif 0, SSTidalCorridor_EventScript_15FED5
+ goto_if 0, SSTidalCorridor_EventScript_15FED5
checktrainerflag OPPONENT_TUCKER
- jumpif 0, SSTidalCorridor_EventScript_15FED5
+ goto_if 0, SSTidalCorridor_EventScript_15FED5
checktrainerflag OPPONENT_THOMAS
- jumpif 0, SSTidalCorridor_EventScript_15FED5
+ goto_if 0, SSTidalCorridor_EventScript_15FED5
checktrainerflag OPPONENT_LEA_AND_JED
- jumpif 0, SSTidalCorridor_EventScript_15FED5
+ goto_if 0, SSTidalCorridor_EventScript_15FED5
checktrainerflag OPPONENT_GARRET
- jumpif 0, SSTidalCorridor_EventScript_15FED5
+ goto_if 0, SSTidalCorridor_EventScript_15FED5
checktrainerflag OPPONENT_ANETTE
- jumpif 0, SSTidalCorridor_EventScript_15FED5
+ goto_if 0, SSTidalCorridor_EventScript_15FED5
setflag 247
- jump SSTidalCorridor_EventScript_15FE7A
+ goto SSTidalCorridor_EventScript_15FE7A
return
SSTidalCorridor_EventScript_15FED5:: @ 815FED5
diff --git a/data/scripts/maps/SSTidalRooms.inc b/data/scripts/maps/SSTidalRooms.inc
index 4d588cd46..c7cd4447d 100644
--- a/data/scripts/maps/SSTidalRooms.inc
+++ b/data/scripts/maps/SSTidalRooms.inc
@@ -5,11 +5,11 @@ SSTidalRooms_EventScript_15FF06:: @ 815FF06
lock
faceplayer
checkflag 260
- jumpeq SSTidalRooms_EventScript_15FF3D
+ goto_if_eq SSTidalRooms_EventScript_15FF3D
msgbox SSTidalRooms_Text_199B65, 4
giveitem ITEM_TM49
compare RESULT, 0
- jumpeq SSTidalRooms_EventScript_1A029B
+ goto_if_eq SSTidalRooms_EventScript_1A029B
setflag 260
msgbox SSTidalRooms_Text_199C1A, 4
release
@@ -23,7 +23,7 @@ SSTidalRooms_EventScript_15FF3D:: @ 815FF3D
SSTidalRooms_EventScript_15FF47:: @ 815FF47
lockall
msgbox SSTidalRooms_Text_19956B, 4
- closebutton
+ closemessage
call SSTidalRooms_EventScript_1A02CA
call SSTidalRooms_EventScript_15FD64
releaseall
diff --git a/data/scripts/maps/SafariZone_Southeast.inc b/data/scripts/maps/SafariZone_Southeast.inc
index 22fd5ec56..06a400810 100644
--- a/data/scripts/maps/SafariZone_Southeast.inc
+++ b/data/scripts/maps/SafariZone_Southeast.inc
@@ -10,22 +10,22 @@ SafariZone_Southeast_MapScript2_160041:: @ 8160041
SafariZone_Southeast_EventScript_16004B:: @ 816004B
lockall
setvar 0x4001, 0
- move 255, SafariZone_Southeast_Movement_160087
- waitmove 0
- move 1, SafariZone_Southeast_Movement_160089
- waitmove 0
- movespriteperm 1, 32, 34
+ applymovement 255, SafariZone_Southeast_Movement_160087
+ waitmovement 0
+ applymovement 1, SafariZone_Southeast_Movement_160089
+ waitmovement 0
+ setobjectxyperm 1, 32, 34
setvar 0x40a4, 0
releaseall
end
SafariZone_Southeast_MapScript1_160073:: @ 8160073
compare 0x40a4, 2
- callif 1, SafariZone_Southeast_EventScript_16007F
+ call_if 1, SafariZone_Southeast_EventScript_16007F
end
SafariZone_Southeast_EventScript_16007F:: @ 816007F
- movespriteperm 1, 31, 34
+ setobjectxyperm 1, 31, 34
return
SafariZone_Southeast_Movement_160087:: @ 8160087
@@ -53,10 +53,10 @@ SafariZone_Southeast_EventScript_1600A7:: @ 81600A7
lock
faceplayer
compare 0x4001, 0
- jumpeq SafariZone_Southeast_EventScript_1600D1
+ goto_if_eq SafariZone_Southeast_EventScript_1600D1
msgbox SafariZone_Southeast_Text_1C3A56, 5
compare RESULT, 1
- jumpeq SafariZone_Southeast_EventScript_1600E0
+ goto_if_eq SafariZone_Southeast_EventScript_1600E0
msgbox SafariZone_Southeast_Text_1C3A9C, 4
release
end
@@ -69,32 +69,32 @@ SafariZone_Southeast_EventScript_1600D1:: @ 81600D1
SafariZone_Southeast_EventScript_1600E0:: @ 81600E0
msgbox SafariZone_Southeast_Text_1C3ACA, 4
- closebutton
+ closemessage
switch FACING
case 2, SafariZone_Southeast_EventScript_160105
case 4, SafariZone_Southeast_EventScript_16011F
end
SafariZone_Southeast_EventScript_160105:: @ 8160105
- move 1, SafariZone_Southeast_Movement_160150
- waitmove 0
- move 255, SafariZone_Southeast_Movement_16014B
- waitmove 0
- jump SafariZone_Southeast_EventScript_160139
+ applymovement 1, SafariZone_Southeast_Movement_160150
+ waitmovement 0
+ applymovement 255, SafariZone_Southeast_Movement_16014B
+ waitmovement 0
+ goto SafariZone_Southeast_EventScript_160139
end
SafariZone_Southeast_EventScript_16011F:: @ 816011F
- move 1, SafariZone_Southeast_Movement_160153
- waitmove 0
- move 255, SafariZone_Southeast_Movement_16014D
- waitmove 0
- jump SafariZone_Southeast_EventScript_160139
+ applymovement 1, SafariZone_Southeast_Movement_160153
+ waitmovement 0
+ applymovement 255, SafariZone_Southeast_Movement_16014D
+ waitmovement 0
+ goto SafariZone_Southeast_EventScript_160139
end
SafariZone_Southeast_EventScript_160139:: @ 8160139
setvar 0x40a4, 1
special ExitSafariMode
- warpwalk Route121_SafariZoneEntrance, 255, 2, 5
+ warpdoor Route121_SafariZoneEntrance, 255, 2, 5
waitstate
end
diff --git a/data/scripts/maps/SeafloorCavern_Entrance.inc b/data/scripts/maps/SeafloorCavern_Entrance.inc
index 0bf99d2ad..7ea46d9b0 100644
--- a/data/scripts/maps/SeafloorCavern_Entrance.inc
+++ b/data/scripts/maps/SeafloorCavern_Entrance.inc
@@ -3,6 +3,6 @@ SeafloorCavern_Entrance_MapScripts:: @ 815DA4A
.byte 0
SeafloorCavern_Entrance_MapScript1_15DA50:: @ 815DA50
- warp4 Underwater_SeafloorCavern, 255, 6, 5
- warp6 Underwater_SeafloorCavern, 255, 6, 5
+ setdivewarp Underwater_SeafloorCavern, 255, 6, 5
+ setescapewarp Underwater_SeafloorCavern, 255, 6, 5
end
diff --git a/data/scripts/maps/SeafloorCavern_Room9.inc b/data/scripts/maps/SeafloorCavern_Room9.inc
index 71184346f..eb3d108a6 100644
--- a/data/scripts/maps/SeafloorCavern_Room9.inc
+++ b/data/scripts/maps/SeafloorCavern_Room9.inc
@@ -6,9 +6,9 @@ SeafloorCavern_Room9_MapScript1_15DAEC:: @ 815DAEC
call SeafloorCavern_Room9_EventScript_1A0196
call SeafloorCavern_Room9_EventScript_1A01B5
.ifdef SAPPHIRE
- setmapfooter 157
+ setmaplayoutindex 157
.else
- setmapfooter 327
+ setmaplayoutindex 327
.endif
end
@@ -18,35 +18,35 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA
setvar 0x8005, 3
setvar 0x8006, 4
setvar 0x8007, 5
- move 255, SeafloorCavern_Room9_Movement_1A0841
- waitmove 0
- move 255, SeafloorCavern_Room9_Movement_15DD68
- waitmove 0
+ applymovement 255, SeafloorCavern_Room9_Movement_1A0841
+ waitmovement 0
+ applymovement 255, SeafloorCavern_Room9_Movement_15DD68
+ waitmovement 0
.ifdef SAPPHIRE
msgbox UnknownString_81B41B8, 4
.else
msgbox SeafloorCavern_Room9_Text_1B4850, 4
.endif
- closebutton
- reappear 0x8004
- move 255, SeafloorCavern_Room9_Movement_1A083F
- waitmove 0
- move 0x8004, SeafloorCavern_Room9_Movement_15DD36
- waitmove 0
+ closemessage
+ addobject 0x8004
+ applymovement 255, SeafloorCavern_Room9_Movement_1A083F
+ waitmovement 0
+ applymovement 0x8004, SeafloorCavern_Room9_Movement_15DD36
+ waitmovement 0
.ifdef SAPPHIRE
msgbox UnknownString_81B41D5, 4
.else
msgbox SeafloorCavern_Room9_Text_1B486C, 4
.endif
- move 0x8004, SeafloorCavern_Room9_Movement_1A0841
- waitmove 0
+ applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0841
+ waitmovement 0
.ifdef SAPPHIRE
msgbox UnknownString_81B4201, 4
.else
msgbox SeafloorCavern_Room9_Text_1B4897, 4
.endif
- move 0x8004, SeafloorCavern_Room9_Movement_1A0839
- waitmove 0
+ applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0839
+ waitmovement 0
.ifdef SAPPHIRE
msgbox UnknownString_81B4289, 4
.else
@@ -78,45 +78,45 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA
.else
setvar RESULT, 0
.endif
- playsfx 209
- setanimation 0, 16
- setanimation 1, 42
- setanimation 2, 0
- doanimation 54
- checkanimation 54
+ playse 209
+ setfieldeffect 0, 16
+ setfieldeffect 1, 42
+ setfieldeffect 2, 0
+ dofieldeffect 54
+ waitfieldeffect 54
.ifdef SAPPHIRE
setvar RESULT, 0
.else
setvar RESULT, 1
.endif
- fanfare 388
- playsfx 107
+ playfanfare 388
+ playse 107
special sub_80818A4
- move 0x8004, SeafloorCavern_Room9_Movement_1A0841
- move 255, SeafloorCavern_Room9_Movement_1A0841
- waitmove 0
- pause 150
- disappear 7
- reappear 1
+ applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0841
+ applymovement 255, SeafloorCavern_Room9_Movement_1A0841
+ waitmovement 0
+ delay 150
+ removeobject 7
+ addobject 1
waitstate
- pause 60
- move 1, SeafloorCavern_Room9_Movement_15DD4C
- waitmove 0
+ delay 60
+ applymovement 1, SeafloorCavern_Room9_Movement_15DD4C
+ waitmovement 0
special sub_80818FC
waitstate
setvar 0x8004, 1
setvar 0x8005, 1
special sub_810F758
waitstate
- move 1, SeafloorCavern_Room9_Movement_15DD57
- waitmove 0
- disappear 1
- pause 4
+ applymovement 1, SeafloorCavern_Room9_Movement_15DD57
+ waitmovement 0
+ removeobject 1
+ delay 4
setvar 0x8004, 2
setvar 0x8005, 2
special sub_810F758
waitstate
- pause 30
+ delay 30
setvar 0x8004, 2
setvar 0x8005, 3
setvar 0x8006, 4
@@ -126,52 +126,52 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA
.else
msgbox SeafloorCavern_Room9_Text_1B4A89, 4
.endif
- playsfx 2
- move 255, SeafloorCavern_Room9_Movement_1A083F
- waitmove 0
+ playse 2
+ applymovement 255, SeafloorCavern_Room9_Movement_1A083F
+ waitmovement 0
.ifdef SAPPHIRE
msgbox UnknownString_81B4443, 4
.else
msgbox SeafloorCavern_Room9_Text_1B4ADB, 4
.endif
- closebutton
- move 0x8004, SeafloorCavern_Room9_Movement_15DD41
- waitmove 0
+ closemessage
+ applymovement 0x8004, SeafloorCavern_Room9_Movement_15DD41
+ waitmovement 0
.ifdef SAPPHIRE
msgbox UnknownString_81B447A, 4
.else
msgbox SeafloorCavern_Room9_Text_1B4B11, 4
.endif
- closebutton
- playsfx 3
- pause 20
- move 0x8004, SeafloorCavern_Room9_Movement_1A0845
- waitmove 0
+ closemessage
+ playse 3
+ delay 20
+ applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0845
+ waitmovement 0
.ifdef SAPPHIRE
msgbox UnknownString_81B45C6, 4
.else
msgbox SeafloorCavern_Room9_Text_1B4C79, 4
.endif
- closebutton
- reappear 0x8005
- reappear 0x8006
- reappear 0x8007
- move 0x8007, SeafloorCavern_Room9_Movement_15DD63
- move 0x8006, SeafloorCavern_Room9_Movement_15DD63
- move 0x8005, SeafloorCavern_Room9_Movement_15DD5A
- waitmove 0
- move 0x8004, SeafloorCavern_Room9_Movement_1A083F
- waitmove 0
+ closemessage
+ addobject 0x8005
+ addobject 0x8006
+ addobject 0x8007
+ applymovement 0x8007, SeafloorCavern_Room9_Movement_15DD63
+ applymovement 0x8006, SeafloorCavern_Room9_Movement_15DD63
+ applymovement 0x8005, SeafloorCavern_Room9_Movement_15DD5A
+ waitmovement 0
+ applymovement 0x8004, SeafloorCavern_Room9_Movement_1A083F
+ waitmovement 0
.ifdef SAPPHIRE
msgbox UnknownString_81B464D, 4
.else
msgbox SeafloorCavern_Room9_Text_1B4D02, 4
.endif
- playsfx 21
- move 0x8004, SeafloorCavern_Room9_Movement_1A0833
- waitmove 0
- move 0x8004, SeafloorCavern_Room9_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0833
+ waitmovement 0
+ applymovement 0x8004, SeafloorCavern_Room9_Movement_1A0835
+ waitmovement 0
.ifdef SAPPHIRE
msgbox UnknownString_81B4723, 4
.else
@@ -182,10 +182,10 @@ SeafloorCavern_Room9_EventScript_15DAFA:: @ 815DAFA
.else
msgbox SeafloorCavern_Room9_Text_1B4E37, 4
.endif
- closebutton
- move 0x8005, SeafloorCavern_Room9_Movement_15DD60
- move 0x8004, SeafloorCavern_Room9_Movement_15DD46
- waitmove 0
+ closemessage
+ applymovement 0x8005, SeafloorCavern_Room9_Movement_15DD60
+ applymovement 0x8004, SeafloorCavern_Room9_Movement_15DD46
+ waitmovement 0
.ifdef SAPPHIRE
msgbox UnknownString_81B4818, 4
.else
diff --git a/data/scripts/maps/SealedChamber_InnerRoom.inc b/data/scripts/maps/SealedChamber_InnerRoom.inc
index 76a930dc0..526ada367 100644
--- a/data/scripts/maps/SealedChamber_InnerRoom.inc
+++ b/data/scripts/maps/SealedChamber_InnerRoom.inc
@@ -3,34 +3,34 @@ SealedChamber_InnerRoom_MapScripts:: @ 815F1E7
SealedChamber_InnerRoom_EventScript_15F1E8:: @ 815F1E8
lockall
- braillemsg SealedChamber_InnerRoom_Braille_1C53C1
+ braillemessage SealedChamber_InnerRoom_Braille_1C53C1
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
checkflag 228
- jumpeq SealedChamber_InnerRoom_EventScript_15F247
- specialval RESULT, CheckRelicanthWailord
+ goto_if_eq SealedChamber_InnerRoom_EventScript_15F247
+ specialvar RESULT, CheckRelicanthWailord
compare RESULT, 0
- jumpeq SealedChamber_InnerRoom_EventScript_15F247
- fadeout 0
- playsfx 49
+ goto_if_eq SealedChamber_InnerRoom_EventScript_15F247
+ fadeoutbgm 0
+ playse 49
special DoSealedChamberShakingEffect1
waitstate
- pause 40
+ delay 40
special DoSealedChamberShakingEffect2
waitstate
- playsfx 8
- pause 40
+ playse 8
+ delay 40
special DoSealedChamberShakingEffect2
waitstate
- playsfx 8
- pause 40
+ playse 8
+ delay 40
special DoSealedChamberShakingEffect2
waitstate
- playsfx 8
- pause 40
+ playse 8
+ delay 40
msgbox SealedChamber_InnerRoom_Text_1A138B, 4
- closebutton
- fadein 0
+ closemessage
+ fadeinbgm 0
setflag 228
releaseall
end
@@ -41,48 +41,48 @@ SealedChamber_InnerRoom_EventScript_15F247:: @ 815F247
SealedChamber_InnerRoom_EventScript_15F249:: @ 815F249
lockall
- braillemsg SealedChamber_InnerRoom_Braille_1C53F2
+ braillemessage SealedChamber_InnerRoom_Braille_1C53F2
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_InnerRoom_EventScript_15F257:: @ 815F257
lockall
- braillemsg SealedChamber_InnerRoom_Braille_1C5414
+ braillemessage SealedChamber_InnerRoom_Braille_1C5414
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_InnerRoom_EventScript_15F265:: @ 815F265
lockall
- braillemsg SealedChamber_InnerRoom_Braille_1C5435
+ braillemessage SealedChamber_InnerRoom_Braille_1C5435
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_InnerRoom_EventScript_15F273:: @ 815F273
lockall
- braillemsg SealedChamber_InnerRoom_Braille_1C545C
+ braillemessage SealedChamber_InnerRoom_Braille_1C545C
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_InnerRoom_EventScript_15F281:: @ 815F281
lockall
- braillemsg SealedChamber_InnerRoom_Braille_1C5470
+ braillemessage SealedChamber_InnerRoom_Braille_1C5470
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_InnerRoom_EventScript_15F28F:: @ 815F28F
lockall
- braillemsg SealedChamber_InnerRoom_Braille_1C549B
+ braillemessage SealedChamber_InnerRoom_Braille_1C549B
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
diff --git a/data/scripts/maps/SealedChamber_OuterRoom.inc b/data/scripts/maps/SealedChamber_OuterRoom.inc
index 83ca4e4df..f16a88802 100644
--- a/data/scripts/maps/SealedChamber_OuterRoom.inc
+++ b/data/scripts/maps/SealedChamber_OuterRoom.inc
@@ -5,8 +5,8 @@ SealedChamber_OuterRoom_MapScripts:: @ 815F0C6
.byte 0
SealedChamber_OuterRoom_MapScript1_15F0D6:: @ 815F0D6
- warp4 Underwater_SealedChamber, 255, 12, 44
- warp6 Underwater_SealedChamber, 255, 12, 44
+ setdivewarp Underwater_SealedChamber, 255, 12, 44
+ setescapewarp Underwater_SealedChamber, 255, 12, 44
end
SealedChamber_OuterRoom_MapScript1_15F0E7:: @ 815F0E7
@@ -15,7 +15,7 @@ SealedChamber_OuterRoom_MapScript1_15F0E7:: @ 815F0E7
SealedChamber_OuterRoom_MapScript1_15F0EB:: @ 815F0EB
checkflag 2127
- callif 0, SealedChamber_OuterRoom_EventScript_15F0F5
+ call_if 0, SealedChamber_OuterRoom_EventScript_15F0F5
end
SealedChamber_OuterRoom_EventScript_15F0F5:: @ 815F0F5
@@ -29,91 +29,91 @@ SealedChamber_OuterRoom_EventScript_15F0F5:: @ 815F0F5
SealedChamber_OuterRoom_EventScript_15F12C:: @ 815F12C
lockall
- braillemsg SealedChamber_OuterRoom_Braille_1C534F
+ braillemessage SealedChamber_OuterRoom_Braille_1C534F
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_OuterRoom_EventScript_15F13A:: @ 815F13A
lockall
- braillemsg SealedChamber_OuterRoom_Braille_1C5359
+ braillemessage SealedChamber_OuterRoom_Braille_1C5359
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_OuterRoom_EventScript_15F148:: @ 815F148
lockall
- braillemsg SealedChamber_OuterRoom_Braille_1C5363
+ braillemessage SealedChamber_OuterRoom_Braille_1C5363
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_OuterRoom_EventScript_15F156:: @ 815F156
lockall
- braillemsg SealedChamber_OuterRoom_Braille_1C536D
+ braillemessage SealedChamber_OuterRoom_Braille_1C536D
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_OuterRoom_EventScript_15F164:: @ 815F164
lockall
- braillemsg SealedChamber_OuterRoom_Braille_1C5377
+ braillemessage SealedChamber_OuterRoom_Braille_1C5377
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_OuterRoom_EventScript_15F172:: @ 815F172
lockall
- braillemsg SealedChamber_OuterRoom_Braille_1C5381
+ braillemessage SealedChamber_OuterRoom_Braille_1C5381
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_OuterRoom_EventScript_15F180:: @ 815F180
lockall
- braillemsg SealedChamber_OuterRoom_Braille_1C538B
+ braillemessage SealedChamber_OuterRoom_Braille_1C538B
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_OuterRoom_EventScript_15F18E:: @ 815F18E
lockall
- braillemsg SealedChamber_OuterRoom_Braille_1C5396
+ braillemessage SealedChamber_OuterRoom_Braille_1C5396
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_OuterRoom_EventScript_15F19C:: @ 815F19C
lockall
- braillemsg SealedChamber_OuterRoom_Braille_1C539E
+ braillemessage SealedChamber_OuterRoom_Braille_1C539E
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_OuterRoom_EventScript_15F1AA:: @ 815F1AA
lockall
- braillemsg SealedChamber_OuterRoom_Braille_1C53A9
+ braillemessage SealedChamber_OuterRoom_Braille_1C53A9
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
SealedChamber_OuterRoom_EventScript_15F1B8:: @ 815F1B8
lockall
checkflag 2127
- jumpeq SealedChamber_OuterRoom_EventScript_15F1CF
- braillemsg SealedChamber_OuterRoom_Braille_1C53B1
+ goto_if_eq SealedChamber_OuterRoom_EventScript_15F1CF
+ braillemessage SealedChamber_OuterRoom_Braille_1C53B1
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
@@ -124,8 +124,8 @@ SealedChamber_OuterRoom_EventScript_15F1CF:: @ 815F1CF
SealedChamber_OuterRoom_EventScript_15F1D9:: @ 815F1D9
lockall
- braillemsg SealedChamber_OuterRoom_Braille_1C53B1
+ braillemessage SealedChamber_OuterRoom_Braille_1C53B1
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
diff --git a/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc b/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc
index 38a1c9a74..52d430db5 100644
--- a/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc
+++ b/data/scripts/maps/ShoalCave_LowTideEntranceRoom.inc
@@ -5,43 +5,43 @@ ShoalCave_LowTideEntranceRoom_MapScripts:: @ 815E057
ShoalCave_LowTideEntranceRoom_MapScript1_15E05D:: @ 815E05D
special UpdateShoalTideFlag
checkflag 2106
- jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E06E
- jump ShoalCave_LowTideEntranceRoom_EventScript_15E072
+ goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E06E
+ goto ShoalCave_LowTideEntranceRoom_EventScript_15E072
ShoalCave_LowTideEntranceRoom_EventScript_15E06E:: @ 815E06E
- setmapfooter 169
+ setmaplayoutindex 169
end
ShoalCave_LowTideEntranceRoom_EventScript_15E072:: @ 815E072
- setmapfooter 165
+ setmaplayoutindex 165
end
ShoalCave_LowTideEntranceRoom_EventScript_15E076:: @ 815E076
lock
faceplayer
- checkdailyflags
+ dodailyevents
checkflag 2143
- callif 1, ShoalCave_LowTideEntranceRoom_EventScript_15E176
+ call_if 1, ShoalCave_LowTideEntranceRoom_EventScript_15E176
checkitem ITEM_SHOAL_SALT, 4
compare RESULT, 0
- jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E138
+ goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E138
checkitem ITEM_SHOAL_SHELL, 4
compare RESULT, 0
- jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E138
+ goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E138
msgbox ShoalCave_LowTideEntranceRoom_Text_1C6793, 5
compare RESULT, 0
- jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E16C
+ goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E16C
checkitemspace ITEM_SHELL_BELL, 1
compare RESULT, 0
- callif 1, ShoalCave_LowTideEntranceRoom_EventScript_15E106
+ call_if 1, ShoalCave_LowTideEntranceRoom_EventScript_15E106
compare RESULT, 2
- jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E12E
+ goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E12E
msgbox ShoalCave_LowTideEntranceRoom_Text_1C6808, 4
removeitem ITEM_SHOAL_SALT, 4
removeitem ITEM_SHOAL_SHELL, 4
giveitem ITEM_SHELL_BELL
compare RESULT, 0
- jumpeq ShoalCave_LowTideEntranceRoom_EventScript_1A029B
+ goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_1A029B
msgbox ShoalCave_LowTideEntranceRoom_Text_1C688E, 4
setflag 2
release
@@ -50,13 +50,13 @@ ShoalCave_LowTideEntranceRoom_EventScript_15E076:: @ 815E076
ShoalCave_LowTideEntranceRoom_EventScript_15E106:: @ 815E106
checkitem ITEM_SHOAL_SALT, 5
compare RESULT, 1
- jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E117
+ goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E117
return
ShoalCave_LowTideEntranceRoom_EventScript_15E117:: @ 815E117
checkitem ITEM_SHOAL_SHELL, 5
compare RESULT, 1
- jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E128
+ goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E128
return
ShoalCave_LowTideEntranceRoom_EventScript_15E128:: @ 815E128
@@ -71,10 +71,10 @@ ShoalCave_LowTideEntranceRoom_EventScript_15E12E:: @ 815E12E
ShoalCave_LowTideEntranceRoom_EventScript_15E138:: @ 815E138
checkitem ITEM_SHOAL_SALT, 1
compare RESULT, 1
- jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E162
+ goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E162
checkitem ITEM_SHOAL_SHELL, 1
compare RESULT, 1
- jumpeq ShoalCave_LowTideEntranceRoom_EventScript_15E162
+ goto_if_eq ShoalCave_LowTideEntranceRoom_EventScript_15E162
msgbox ShoalCave_LowTideEntranceRoom_Text_1C6668, 4
release
end
diff --git a/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc b/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc
index 3078b4625..ada997023 100644
--- a/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc
+++ b/data/scripts/maps/ShoalCave_LowTideInnerRoom.inc
@@ -5,15 +5,15 @@ ShoalCave_LowTideInnerRoom_MapScripts:: @ 815E192
ShoalCave_LowTideInnerRoom_MapScript1_15E19D:: @ 815E19D
checkflag 2106
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1AB
- jump ShoalCave_LowTideInnerRoom_EventScript_15E1AF
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1AB
+ goto ShoalCave_LowTideInnerRoom_EventScript_15E1AF
ShoalCave_LowTideInnerRoom_EventScript_15E1AB:: @ 815E1AB
- setmapfooter 170
+ setmaplayoutindex 170
end
ShoalCave_LowTideInnerRoom_EventScript_15E1AF:: @ 815E1AF
- setmapfooter 166
+ setmaplayoutindex 166
end
ShoalCave_LowTideInnerRoom_MapScript1_15E1B3:: @ 815E1B3
@@ -22,46 +22,46 @@ ShoalCave_LowTideInnerRoom_MapScript1_15E1B3:: @ 815E1B3
ShoalCave_LowTideInnerRoom_EventScript_15E1B9:: @ 815E1B9
checkflag 952
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1DA
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1DA
checkflag 2106
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1DA
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1DA
setmaptile 31, 8, 856, 1
- jump ShoalCave_LowTideInnerRoom_EventScript_15E1DA
+ goto ShoalCave_LowTideInnerRoom_EventScript_15E1DA
end
ShoalCave_LowTideInnerRoom_EventScript_15E1DA:: @ 815E1DA
checkflag 953
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1FB
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1FB
checkflag 2106
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E1FB
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E1FB
setmaptile 14, 26, 856, 1
- jump ShoalCave_LowTideInnerRoom_EventScript_15E1FB
+ goto ShoalCave_LowTideInnerRoom_EventScript_15E1FB
end
ShoalCave_LowTideInnerRoom_EventScript_15E1FB:: @ 815E1FB
checkflag 956
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E213
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E213
setmaptile 41, 20, 857, 1
- jump ShoalCave_LowTideInnerRoom_EventScript_15E213
+ goto ShoalCave_LowTideInnerRoom_EventScript_15E213
end
ShoalCave_LowTideInnerRoom_EventScript_15E213:: @ 815E213
checkflag 957
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E22B
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E22B
setmaptile 41, 10, 857, 1
- jump ShoalCave_LowTideInnerRoom_EventScript_15E22B
+ goto ShoalCave_LowTideInnerRoom_EventScript_15E22B
end
ShoalCave_LowTideInnerRoom_EventScript_15E22B:: @ 815E22B
checkflag 958
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E243
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E243
setmaptile 6, 9, 857, 1
- jump ShoalCave_LowTideInnerRoom_EventScript_15E243
+ goto ShoalCave_LowTideInnerRoom_EventScript_15E243
end
ShoalCave_LowTideInnerRoom_EventScript_15E243:: @ 815E243
checkflag 959
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E256
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E256
setmaptile 16, 13, 857, 1
return
@@ -71,10 +71,10 @@ ShoalCave_LowTideInnerRoom_EventScript_15E256:: @ 815E256
ShoalCave_LowTideInnerRoom_EventScript_15E257:: @ 815E257
lockall
checkflag 956
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E289
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E289
giveitem ITEM_SHOAL_SHELL
compare RESULT, 0
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B
setmaptile 41, 20, 859, 0
special DrawWholeMapView
setflag 956
@@ -89,10 +89,10 @@ ShoalCave_LowTideInnerRoom_EventScript_15E289:: @ 815E289
ShoalCave_LowTideInnerRoom_EventScript_15E293:: @ 815E293
lockall
checkflag 957
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E289
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E289
giveitem ITEM_SHOAL_SHELL
compare RESULT, 0
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B
setmaptile 41, 10, 859, 0
special DrawWholeMapView
setflag 957
@@ -102,10 +102,10 @@ ShoalCave_LowTideInnerRoom_EventScript_15E293:: @ 815E293
ShoalCave_LowTideInnerRoom_EventScript_15E2C5:: @ 815E2C5
lockall
checkflag 958
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E289
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E289
giveitem ITEM_SHOAL_SHELL
compare RESULT, 0
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B
setmaptile 6, 9, 859, 0
special DrawWholeMapView
setflag 958
@@ -115,10 +115,10 @@ ShoalCave_LowTideInnerRoom_EventScript_15E2C5:: @ 815E2C5
ShoalCave_LowTideInnerRoom_EventScript_15E2F7:: @ 815E2F7
lockall
checkflag 959
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E289
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E289
giveitem ITEM_SHOAL_SHELL
compare RESULT, 0
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B
setmaptile 16, 13, 859, 0
special DrawWholeMapView
setflag 959
@@ -128,10 +128,10 @@ ShoalCave_LowTideInnerRoom_EventScript_15E2F7:: @ 815E2F7
ShoalCave_LowTideInnerRoom_EventScript_15E329:: @ 815E329
lockall
checkflag 952
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E35B
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E35B
giveitem ITEM_SHOAL_SALT
compare RESULT, 0
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B
setmaptile 31, 8, 858, 0
special DrawWholeMapView
setflag 952
@@ -146,10 +146,10 @@ ShoalCave_LowTideInnerRoom_EventScript_15E35B:: @ 815E35B
ShoalCave_LowTideInnerRoom_EventScript_15E365:: @ 815E365
lockall
checkflag 953
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_15E35B
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_15E35B
giveitem ITEM_SHOAL_SALT
compare RESULT, 0
- jumpeq ShoalCave_LowTideInnerRoom_EventScript_1A029B
+ goto_if_eq ShoalCave_LowTideInnerRoom_EventScript_1A029B
setmaptile 14, 26, 858, 0
special DrawWholeMapView
setflag 953
diff --git a/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc b/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc
index 67de2676f..db5779efe 100644
--- a/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc
+++ b/data/scripts/maps/ShoalCave_LowTideLowerRoom.inc
@@ -8,7 +8,7 @@ ShoalCave_LowTideLowerRoom_MapScript1_15E3F9:: @ 815E3F9
ShoalCave_LowTideLowerRoom_EventScript_15E3FF:: @ 815E3FF
checkflag 955
- jumpeq ShoalCave_LowTideLowerRoom_EventScript_15E412
+ goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_15E412
setmaptile 18, 2, 856, 1
return
@@ -18,10 +18,10 @@ ShoalCave_LowTideLowerRoom_EventScript_15E412:: @ 815E412
ShoalCave_LowTideLowerRoom_EventScript_15E413:: @ 815E413
lockall
checkflag 955
- jumpeq ShoalCave_LowTideLowerRoom_EventScript_15E445
+ goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_15E445
giveitem ITEM_SHOAL_SALT
compare RESULT, 0
- jumpeq ShoalCave_LowTideLowerRoom_EventScript_1A029B
+ goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_1A029B
setmaptile 18, 2, 858, 0
special DrawWholeMapView
setflag 955
@@ -37,11 +37,11 @@ ShoalCave_LowTideLowerRoom_EventScript_15E44F:: @ 815E44F
lock
faceplayer
checkflag 283
- jumpeq ShoalCave_LowTideLowerRoom_EventScript_15E47E
+ goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_15E47E
msgbox ShoalCave_LowTideLowerRoom_Text_198200, 4
giveitem ITEM_FOCUS_BAND
compare RESULT, 0
- jumpeq ShoalCave_LowTideLowerRoom_EventScript_1A029B
+ goto_if_eq ShoalCave_LowTideLowerRoom_EventScript_1A029B
setflag 283
release
end
diff --git a/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc b/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc
index c46a2cb2d..bffb7bd49 100644
--- a/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc
+++ b/data/scripts/maps/ShoalCave_LowTideStairsRoom.inc
@@ -8,7 +8,7 @@ ShoalCave_LowTideStairsRoom_MapScript1_15E39D:: @ 815E39D
ShoalCave_LowTideStairsRoom_EventScript_15E3A3:: @ 815E3A3
checkflag 954
- jumpeq ShoalCave_LowTideStairsRoom_EventScript_15E3B6
+ goto_if_eq ShoalCave_LowTideStairsRoom_EventScript_15E3B6
setmaptile 11, 11, 856, 1
return
@@ -18,10 +18,10 @@ ShoalCave_LowTideStairsRoom_EventScript_15E3B6:: @ 815E3B6
ShoalCave_LowTideStairsRoom_EventScript_15E3B7:: @ 815E3B7
lockall
checkflag 954
- jumpeq ShoalCave_LowTideStairsRoom_EventScript_15E3E9
+ goto_if_eq ShoalCave_LowTideStairsRoom_EventScript_15E3E9
giveitem ITEM_SHOAL_SALT
compare RESULT, 0
- jumpeq ShoalCave_LowTideStairsRoom_EventScript_1A029B
+ goto_if_eq ShoalCave_LowTideStairsRoom_EventScript_1A029B
setmaptile 11, 11, 858, 0
special DrawWholeMapView
setflag 954
diff --git a/data/scripts/maps/SkyPillar_2F.inc b/data/scripts/maps/SkyPillar_2F.inc
index 62cb389f2..3b3585bf8 100644
--- a/data/scripts/maps/SkyPillar_2F.inc
+++ b/data/scripts/maps/SkyPillar_2F.inc
@@ -6,5 +6,5 @@ SkyPillar_2F_MapScripts:: @ 815F2C9
SkyPillar_2F_MapScript1_15F2D9:: @ 815F2D9
tileeffect 7
- warp5 SkyPillar_1F, 255, 0, 0
+ setholewarp SkyPillar_1F, 255, 0, 0
end
diff --git a/data/scripts/maps/SkyPillar_4F.inc b/data/scripts/maps/SkyPillar_4F.inc
index 5e1f7f4e6..3d535a25a 100644
--- a/data/scripts/maps/SkyPillar_4F.inc
+++ b/data/scripts/maps/SkyPillar_4F.inc
@@ -6,5 +6,5 @@ SkyPillar_4F_MapScripts:: @ 815F2E5
SkyPillar_4F_MapScript1_15F2F5:: @ 815F2F5
tileeffect 7
- warp5 SkyPillar_3F, 255, 0, 0
+ setholewarp SkyPillar_3F, 255, 0, 0
end
diff --git a/data/scripts/maps/SkyPillar_Top.inc b/data/scripts/maps/SkyPillar_Top.inc
index 23db6a8ea..1dee6e9c4 100644
--- a/data/scripts/maps/SkyPillar_Top.inc
+++ b/data/scripts/maps/SkyPillar_Top.inc
@@ -4,24 +4,24 @@ SkyPillar_Top_MapScripts:: @ 815F302
SkyPillar_Top_MapScript1_15F308:: @ 815F308
checkflag 2145
- callif 1, SkyPillar_Top_EventScript_15F312
+ call_if 1, SkyPillar_Top_EventScript_15F312
end
SkyPillar_Top_EventScript_15F312:: @ 815F312
- disappear LAST_TALKED
+ removeobject LAST_TALKED
return
SkyPillar_Top_EventScript_15F316:: @ 815F316
lock
faceplayer
setwildbattle SPECIES_RAYQUAZA, 70, ITEM_NONE
- checksound
- pokecry SPECIES_RAYQUAZA, 2
- pause 40
+ waitse
+ playpokecry SPECIES_RAYQUAZA, 2
+ delay 40
waitpokecry
setflag 773
setflag 2145
- special StartBattle_Rayquaza
+ special ScrSpecial_StartRayquazaBattle
waitstate
clearflag 2145
release
diff --git a/data/scripts/maps/SlateportCity.inc b/data/scripts/maps/SlateportCity.inc
index 48eb5c1df..bea1455a7 100644
--- a/data/scripts/maps/SlateportCity.inc
+++ b/data/scripts/maps/SlateportCity.inc
@@ -13,7 +13,7 @@ SlateportCity_MapScript1_14BA3C:: @ 814BA3C
setvar 0x40aa, 0
call SlateportCity_EventScript_14BA5C
compare 0x4058, 1
- callif 1, SlateportCity_EventScript_14BA68
+ call_if 1, SlateportCity_EventScript_14BA68
end
SlateportCity_EventScript_14BA5C:: @ 814BA5C
@@ -23,27 +23,27 @@ SlateportCity_EventScript_14BA5C:: @ 814BA5C
return
SlateportCity_EventScript_14BA68:: @ 814BA68
- movespriteperm 11, 28, 13
- movespriteperm 7, 25, 13
- movespriteperm 3, 25, 14
- movespriteperm 6, 27, 16
- movespriteperm 8, 28, 16
- movespriteperm 1, 29, 16
- movespriteperm 2, 31, 14
- spritebehave 11, 8
- spritebehave 7, 18
- spritebehave 3, 16
- spritebehave 6, 7
- spritebehave 8, 7
- spritebehave 1, 7
- spritebehave 2, 9
+ setobjectxyperm 11, 28, 13
+ setobjectxyperm 7, 25, 13
+ setobjectxyperm 3, 25, 14
+ setobjectxyperm 6, 27, 16
+ setobjectxyperm 8, 28, 16
+ setobjectxyperm 1, 29, 16
+ setobjectxyperm 2, 31, 14
+ setobjectmovementtype 11, 8
+ setobjectmovementtype 7, 18
+ setobjectmovementtype 3, 16
+ setobjectmovementtype 6, 7
+ setobjectmovementtype 8, 7
+ setobjectmovementtype 1, 7
+ setobjectmovementtype 2, 9
return
SlateportCity_EventScript_14BAB6:: @ 814BAB6
lock
faceplayer
message SlateportCity_Text_164642
- waittext
+ waitmessage
pokemart SlateportCity_Items1
msgbox SlateportCity_Text_1A0C02, 4
release
@@ -64,19 +64,19 @@ SlateportCity_Items1:: @ 814BAD0
SlateportCity_EventScript_14BAE0:: @ 814BAE0
lock
faceplayer
- bufferfirstpoke 0
+ getfirstpartypokename 0
msgbox SlateportCity_Text_164682, 4
- specialval RESULT, LeadMonHasEffortRibbon
+ specialvar RESULT, LeadMonHasEffortRibbon
compare RESULT, 1
- callif 1, SlateportCity_EventScript_14BB35
- specialval RESULT, GetLeadMonEVCount
+ call_if 1, SlateportCity_EventScript_14BB35
+ specialvar RESULT, ScrSpecial_AreLeadMonEVsMaxedOut
compare RESULT, 0
- callif 1, SlateportCity_EventScript_14BB2B
+ call_if 1, SlateportCity_EventScript_14BB2B
msgbox SlateportCity_Text_164691, 4
- fanfare 370
+ playfanfare 370
message SlateportCity_Text_1646DD
waitfanfare
- waittext
+ waitmessage
msgbox SlateportCity_Text_1646FC, 4
special GivLeadMonEffortRibbon
release
@@ -96,7 +96,7 @@ SlateportCity_EventScript_14BB3F:: @ 814BB3F
lock
faceplayer
compare 0x4058, 1
- callif 1, SlateportCity_EventScript_14BB56
+ call_if 1, SlateportCity_EventScript_14BB56
msgbox SlateportCity_Text_164814, 4
release
end
@@ -110,7 +110,7 @@ SlateportCity_EventScript_14BB60:: @ 814BB60
lock
faceplayer
compare 0x4058, 1
- callif 1, SlateportCity_EventScript_14BB77
+ call_if 1, SlateportCity_EventScript_14BB77
msgbox SlateportCity_Text_1648A0, 4
release
end
@@ -124,9 +124,9 @@ SlateportCity_EventScript_14BB81:: @ 814BB81
lock
faceplayer
compare 0x4058, 1
- callif 1, SlateportCity_EventScript_14BBA1
+ call_if 1, SlateportCity_EventScript_14BBA1
checkflag 96
- jumpeq SlateportCity_EventScript_14BBAB
+ goto_if_eq SlateportCity_EventScript_14BBAB
msgbox SlateportCity_Text_164937, 4
release
end
@@ -145,7 +145,7 @@ SlateportCity_EventScript_14BBB5:: @ 814BBB5
lock
faceplayer
compare 0x4058, 1
- callif 1, SlateportCity_EventScript_14BBCC
+ call_if 1, SlateportCity_EventScript_14BBCC
msgbox SlateportCity_Text_164A30, 4
release
end
@@ -157,7 +157,7 @@ SlateportCity_EventScript_14BBCC:: @ 814BBCC
SlateportCity_EventScript_14BBD6:: @ 814BBD6
compare 0x4058, 1
- jumpeq SlateportCity_EventScript_14BBEA
+ goto_if_eq SlateportCity_EventScript_14BBEA
msgbox SlateportCity_Text_164AA9, 2
end
@@ -169,7 +169,7 @@ SlateportCity_EventScript_14BBF3:: @ 814BBF3
lock
faceplayer
compare 0x4058, 1
- callif 1, SlateportCity_EventScript_14BC0A
+ call_if 1, SlateportCity_EventScript_14BC0A
msgbox SlateportCity_Text_164B34, 4
release
end
@@ -183,7 +183,7 @@ SlateportCity_EventScript_14BC14:: @ 814BC14
lock
faceplayer
checkflag 148
- jumpeq SlateportCity_EventScript_14BC29
+ goto_if_eq SlateportCity_EventScript_14BC29
msgbox SlateportCity_Text_164BBF, 4
release
end
@@ -200,9 +200,9 @@ SlateportCity_EventScript_14BC33:: @ 814BC33
SlateportCity_EventScript_14BC3C:: @ 814BC3C
lockall
checkflag 2052
- jumpeq SlateportCity_EventScript_14BC63
+ goto_if_eq SlateportCity_EventScript_14BC63
checkflag 2061
- jumpeq SlateportCity_EventScript_14BC59
+ goto_if_eq SlateportCity_EventScript_14BC59
msgbox SlateportCity_Text_1658A0, 4
releaseall
end
@@ -236,7 +236,7 @@ SlateportCity_EventScript_14BC88:: @ 814BC88
SlateportCity_EventScript_14BC91:: @ 814BC91
lockall
checkflag 2052
- jumpeq SlateportCity_EventScript_14BCA5
+ goto_if_eq SlateportCity_EventScript_14BCA5
msgbox SlateportCity_Text_165A8B, 4
releaseall
end
@@ -254,7 +254,7 @@ SlateportCity_EventScript_14BCB8:: @ 814BCB8
lock
faceplayer
compare 0x4058, 1
- callif 1, SlateportCity_EventScript_14BCCF
+ call_if 1, SlateportCity_EventScript_14BCCF
msgbox SlateportCity_Text_164F9E, 4
release
end
@@ -289,9 +289,9 @@ SlateportCity_EventScript_14BD06:: @ 814BD06
faceplayer
msgbox SlateportCity_Text_1650F1, 5
compare RESULT, 1
- callif 1, SlateportCity_EventScript_14BD28
+ call_if 1, SlateportCity_EventScript_14BD28
compare RESULT, 0
- callif 1, SlateportCity_EventScript_14BD31
+ call_if 1, SlateportCity_EventScript_14BD31
release
end
@@ -307,9 +307,9 @@ SlateportCity_EventScript_14BD3A:: @ 814BD3A
lock
faceplayer
msgbox SlateportCity_Text_164C64, 4
- closebutton
- move 5, SlateportCity_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 5, SlateportCity_Movement_1A083D
+ waitmovement 0
release
end
@@ -317,9 +317,9 @@ SlateportCity_EventScript_14BD51:: @ 814BD51
lock
faceplayer
msgbox SlateportCity_Text_164C9F, 4
- closebutton
- move 19, SlateportCity_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 19, SlateportCity_Movement_1A083D
+ waitmovement 0
release
end
@@ -327,9 +327,9 @@ SlateportCity_EventScript_14BD68:: @ 814BD68
lock
faceplayer
msgbox SlateportCity_Text_164CE8, 4
- closebutton
- move 20, SlateportCity_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 20, SlateportCity_Movement_1A083D
+ waitmovement 0
release
end
@@ -337,9 +337,9 @@ SlateportCity_EventScript_14BD7F:: @ 814BD7F
lock
faceplayer
msgbox SlateportCity_Text_164D2B, 4
- closebutton
- move 27, SlateportCity_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 27, SlateportCity_Movement_1A083D
+ waitmovement 0
release
end
@@ -347,9 +347,9 @@ SlateportCity_EventScript_14BD96:: @ 814BD96
lock
faceplayer
msgbox SlateportCity_Text_164D92, 4
- closebutton
- move 28, SlateportCity_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 28, SlateportCity_Movement_1A083D
+ waitmovement 0
release
end
@@ -357,9 +357,9 @@ SlateportCity_EventScript_14BDAD:: @ 814BDAD
lock
faceplayer
msgbox SlateportCity_Text_164DD5, 4
- closebutton
- move 29, SlateportCity_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 29, SlateportCity_Movement_1A083D
+ waitmovement 0
release
end
@@ -367,9 +367,9 @@ SlateportCity_EventScript_14BDC4:: @ 814BDC4
lock
faceplayer
msgbox SlateportCity_Text_164DF4, 4
- closebutton
- move 30, SlateportCity_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 30, SlateportCity_Movement_1A083D
+ waitmovement 0
release
end
@@ -377,9 +377,9 @@ SlateportCity_EventScript_14BDDB:: @ 814BDDB
lock
faceplayer
msgbox SlateportCity_Text_164E46, 4
- closebutton
- move 31, SlateportCity_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 31, SlateportCity_Movement_1A083D
+ waitmovement 0
release
end
@@ -387,7 +387,7 @@ SlateportCity_EventScript_14BDF2:: @ 814BDF2
lock
faceplayer
message SlateportCity_Text_1A0BE4
- waittext
+ waitmessage
pokemartdecor SlateportCity_Decorations1
msgbox SlateportCity_Text_1A0C02, 4
release
@@ -411,9 +411,9 @@ SlateportCity_EventScript_14BE20:: @ 814BE20
lock
faceplayer
checkflag 96
- jumpif 0, SlateportCity_EventScript_14BE16
+ goto_if 0, SlateportCity_EventScript_14BE16
message SlateportCity_Text_1A0BE4
- waittext
+ waitmessage
pokemartdecor SlateportCity_Decorations2
msgbox SlateportCity_Text_1A0C02, 4
release
@@ -443,9 +443,9 @@ SlateportCity_Decorations2:: @ 814BE40
lock
faceplayer
checkflag 96
- jumpif 0, SlateportCity_EventScript_14BE16
+ goto_if 0, SlateportCity_EventScript_14BE16
message SlateportCity_Text_1A0BE4
- waittext
+ waitmessage
pokemartdecor SlateportCity_Decorations3
msgbox SlateportCity_Text_1A0C02, 4
release
@@ -472,7 +472,7 @@ SlateportCity_EventScript_14BE9A:: @ 814BE9A
lock
faceplayer
message SlateportCity_Text_1A0BE4
- waittext
+ waitmessage
pokemart SlateportCity_Items2
msgbox SlateportCity_Text_1A0C02, 4
release
@@ -490,49 +490,49 @@ SlateportCity_EventScript_14BEBC:: @ 814BEBC
lockall
msgbox SlateportCity_Text_165498, 4
msgbox SlateportCity_Text_1654E0, 4
- closebutton
- move 10, SlateportCity_Movement_1A0843
- waitmove 0
- pause 10
- move 9, SlateportCity_Movement_1A0845
- waitmove 0
- pause 25
- move 11, SlateportCity_Movement_14C000
- move 255, SlateportCity_Movement_14C00E
- move 10, SlateportCity_Movement_14BFDD
- move 9, SlateportCity_Movement_14BFEA
- waitmove 0
- disappear 10
- disappear 9
+ closemessage
+ applymovement 10, SlateportCity_Movement_1A0843
+ waitmovement 0
+ delay 10
+ applymovement 9, SlateportCity_Movement_1A0845
+ waitmovement 0
+ delay 25
+ applymovement 11, SlateportCity_Movement_14C000
+ applymovement 255, SlateportCity_Movement_14C00E
+ applymovement 10, SlateportCity_Movement_14BFDD
+ applymovement 9, SlateportCity_Movement_14BFEA
+ waitmovement 0
+ removeobject 10
+ removeobject 9
msgbox SlateportCity_Text_16558D, 4
- move 11, SlateportCity_Movement_1A0841
- waitmove 0
+ applymovement 11, SlateportCity_Movement_1A0841
+ waitmovement 0
msgbox SlateportCity_Text_1655E7, 4
- playmusic BGM_EVIL_TEAM, 0
+ playbgm BGM_EVIL_TEAM, 0
msgbox SlateportCity_Text_1656BC, 4
- move 6, SlateportCity_Movement_1A083F
- move 1, SlateportCity_Movement_1A083F
- move 7, SlateportCity_Movement_14BFCD
- move 3, SlateportCity_Movement_1A0831
- move 2, SlateportCity_Movement_14BFD5
- waitmove 0
- move 11, SlateportCity_Movement_1A0845
- waitmove 0
+ applymovement 6, SlateportCity_Movement_1A083F
+ applymovement 1, SlateportCity_Movement_1A083F
+ applymovement 7, SlateportCity_Movement_14BFCD
+ applymovement 3, SlateportCity_Movement_1A0831
+ applymovement 2, SlateportCity_Movement_14BFD5
+ waitmovement 0
+ applymovement 11, SlateportCity_Movement_1A0845
+ waitmovement 0
msgbox SlateportCity_Text_16578F, 4
- playsfx 21
- move 11, SlateportCity_Movement_1A0833
- waitmove 0
- move 11, SlateportCity_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement 11, SlateportCity_Movement_1A0833
+ waitmovement 0
+ applymovement 11, SlateportCity_Movement_1A0835
+ waitmovement 0
msgbox SlateportCity_Text_1657FA, 4
- move 11, SlateportCity_Movement_1A0839
- waitmove 0
+ applymovement 11, SlateportCity_Movement_1A0839
+ waitmovement 0
msgbox SlateportCity_Text_16583A, 4
- closebutton
- move 11, SlateportCity_Movement_14BFFB
- move 255, SlateportCity_Movement_14C008
- waitmove 0
- disappear 11
+ closemessage
+ applymovement 11, SlateportCity_Movement_14BFFB
+ applymovement 255, SlateportCity_Movement_14C008
+ waitmovement 0
+ removeobject 11
clearflag 841
clearflag 848
clearflag 845
diff --git a/data/scripts/maps/SlateportCity_ContestHall.inc b/data/scripts/maps/SlateportCity_ContestHall.inc
index 559719583..f8070f1a1 100644
--- a/data/scripts/maps/SlateportCity_ContestHall.inc
+++ b/data/scripts/maps/SlateportCity_ContestHall.inc
@@ -13,11 +13,11 @@ SlateportCity_ContestHall_EventScript_15555E:: @ 815555E
lock
faceplayer
checkflag 265
- jumpeq SlateportCity_ContestHall_EventScript_155595
+ goto_if_eq SlateportCity_ContestHall_EventScript_155595
msgbox SlateportCity_ContestHall_Text_17CCE2, 4
giveitem ITEM_TM41
compare RESULT, 0
- jumpeq SlateportCity_ContestHall_EventScript_1A029B
+ goto_if_eq SlateportCity_ContestHall_EventScript_1A029B
setflag 265
msgbox SlateportCity_ContestHall_Text_17CE28, 4
release
@@ -31,80 +31,80 @@ SlateportCity_ContestHall_EventScript_155595:: @ 8155595
SlateportCity_ContestHall_EventScript_15559F:: @ 815559F
msgbox SlateportCity_ContestHall_Text_17CEF3, 2
lockall
- move 3, SlateportCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 3, SlateportCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
SlateportCity_ContestHall_EventScript_1555B4:: @ 81555B4
msgbox SlateportCity_ContestHall_Text_17CFA7, 2
lockall
- move 4, SlateportCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 4, SlateportCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
SlateportCity_ContestHall_EventScript_1555C9:: @ 81555C9
msgbox SlateportCity_ContestHall_Text_17D054, 2
lockall
- move 5, SlateportCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 5, SlateportCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
SlateportCity_ContestHall_EventScript_1555DE:: @ 81555DE
msgbox SlateportCity_ContestHall_Text_17D07F, 2
lockall
- move 6, SlateportCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 6, SlateportCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
SlateportCity_ContestHall_EventScript_1555F3:: @ 81555F3
msgbox SlateportCity_ContestHall_Text_17D0F9, 2
lockall
- move 7, SlateportCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 7, SlateportCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
SlateportCity_ContestHall_EventScript_155608:: @ 8155608
msgbox SlateportCity_ContestHall_Text_17D222, 2
lockall
- move 8, SlateportCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 8, SlateportCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
SlateportCity_ContestHall_EventScript_15561D:: @ 815561D
msgbox SlateportCity_ContestHall_Text_17D39A, 2
lockall
- move 9, SlateportCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 9, SlateportCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
SlateportCity_ContestHall_EventScript_155632:: @ 8155632
msgbox SlateportCity_ContestHall_Text_17D3F0, 2
lockall
- move 10, SlateportCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 10, SlateportCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
SlateportCity_ContestHall_EventScript_155647:: @ 8155647
msgbox SlateportCity_ContestHall_Text_17D300, 2
lockall
- move 12, SlateportCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 12, SlateportCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
SlateportCity_ContestHall_EventScript_15565C:: @ 815565C
msgbox SlateportCity_ContestHall_Text_17D27F, 2
lockall
- move 11, SlateportCity_ContestHall_Movement_1A083D
- waitmove 0
+ applymovement 11, SlateportCity_ContestHall_Movement_1A083D
+ waitmovement 0
releaseall
end
diff --git a/data/scripts/maps/SlateportCity_ContestLobby.inc b/data/scripts/maps/SlateportCity_ContestLobby.inc
index b1ce50815..cb4632d77 100644
--- a/data/scripts/maps/SlateportCity_ContestLobby.inc
+++ b/data/scripts/maps/SlateportCity_ContestLobby.inc
@@ -20,28 +20,28 @@ SlateportCity_ContestLobby_EventScript_15541D:: @ 815541D
SlateportCity_ContestLobby_EventScript_155448:: @ 8155448
lockall
- move 1, SlateportCity_ContestLobby_Movement_1554CC
- waitmove 0
- playsfx 71
+ applymovement 1, SlateportCity_ContestLobby_Movement_1554CC
+ waitmovement 0
+ playse 71
setmaptile 4, 2, 545, 1
setmaptile 4, 3, 609, 1
special DrawWholeMapView
- move 1, SlateportCity_ContestLobby_Movement_1554CF
- waitmove 0
- playsfx 71
+ applymovement 1, SlateportCity_ContestLobby_Movement_1554CF
+ waitmovement 0
+ playse 71
setmaptile 4, 2, 721, 1
setmaptile 4, 3, 729, 1
special DrawWholeMapView
- pause 20
- move 1, SlateportCity_ContestLobby_Movement_1554DC
- waitmove 0
- move 255, SlateportCity_ContestLobby_Movement_1554CA
- waitmove 0
+ delay 20
+ applymovement 1, SlateportCity_ContestLobby_Movement_1554DC
+ waitmovement 0
+ applymovement 255, SlateportCity_ContestLobby_Movement_1554CA
+ waitmovement 0
msgbox SlateportCity_ContestLobby_Text_1A6832, 4
- closebutton
- move 1, SlateportCity_ContestLobby_Movement_1554D3
- move 255, SlateportCity_ContestLobby_Movement_1554C0
- waitmove 0
+ closemessage
+ applymovement 1, SlateportCity_ContestLobby_Movement_1554D3
+ applymovement 255, SlateportCity_ContestLobby_Movement_1554C0
+ waitmovement 0
releaseall
return
@@ -102,9 +102,9 @@ SlateportCity_ContestLobby_EventScript_1554F0:: @ 81554F0
SlateportCity_ContestLobby_EventScript_1554F9:: @ 81554F9
lockall
checkflag 95
- jumpeq SlateportCity_ContestLobby_EventScript_155526
- move 7, SlateportCity_ContestLobby_Movement_1A0839
- waitmove 0
+ goto_if_eq SlateportCity_ContestLobby_EventScript_155526
+ applymovement 7, SlateportCity_ContestLobby_Movement_1A0839
+ waitmovement 0
msgbox SlateportCity_ContestLobby_Text_17CA67, 4
giveitem ITEM_POKEBLOCK_CASE
setflag 95
@@ -118,7 +118,7 @@ SlateportCity_ContestLobby_EventScript_155526:: @ 8155526
SlateportCity_ContestLobby_EventScript_15552F:: @ 815552F
lockall
fadescreen 1
- showcontestwinner 3
+ drawcontestwinner 3
releaseall
end
@@ -130,6 +130,6 @@ SlateportCity_ContestLobby_EventScript_155536:: @ 8155536
lockall
special ShowBerryBlenderRecordWindow
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
diff --git a/data/scripts/maps/SlateportCity_Harbor.inc b/data/scripts/maps/SlateportCity_Harbor.inc
index d65d28877..f145c4a3d 100644
--- a/data/scripts/maps/SlateportCity_Harbor.inc
+++ b/data/scripts/maps/SlateportCity_Harbor.inc
@@ -3,12 +3,12 @@ SlateportCity_Harbor_MapScripts:: @ 8155F5D
.byte 0
SlateportCity_Harbor_MapScript1_155F63:: @ 8155F63
- warp6 SlateportCity, 255, 28, 13
+ setescapewarp SlateportCity, 255, 28, 13
setvar 0x4001, 0
compare 0x40a0, 1
- callif 1, SlateportCity_Harbor_EventScript_155F89
+ call_if 1, SlateportCity_Harbor_EventScript_155F89
checkflag 2052
- callif 1, SlateportCity_Harbor_EventScript_155F85
+ call_if 1, SlateportCity_Harbor_EventScript_155F85
end
SlateportCity_Harbor_EventScript_155F85:: @ 8155F85
@@ -16,89 +16,89 @@ SlateportCity_Harbor_EventScript_155F85:: @ 8155F85
return
SlateportCity_Harbor_EventScript_155F89:: @ 8155F89
- playmusicbattle BGM_EVIL_TEAM
- movespriteperm 4, 12, 13
- spritebehave 4, 9
+ savebgm BGM_EVIL_TEAM
+ setobjectxyperm 4, 12, 13
+ setobjectmovementtype 4, 9
setflag 905
return
SlateportCity_Harbor_EventScript_155F9B:: @ 8155F9B
lockall
setvar 0x8008, 0
- jump SlateportCity_Harbor_EventScript_155FD5
+ goto SlateportCity_Harbor_EventScript_155FD5
end
SlateportCity_Harbor_EventScript_155FA7:: @ 8155FA7
lockall
setvar 0x8008, 1
- jump SlateportCity_Harbor_EventScript_155FD5
+ goto SlateportCity_Harbor_EventScript_155FD5
end
SlateportCity_Harbor_EventScript_155FB3:: @ 8155FB3
lockall
setvar 0x8008, 2
- jump SlateportCity_Harbor_EventScript_155FD5
+ goto SlateportCity_Harbor_EventScript_155FD5
end
SlateportCity_Harbor_EventScript_155FBF:: @ 8155FBF
lockall
setvar 0x8008, 3
- move 255, SlateportCity_Harbor_Movement_1560C2
- waitmove 0
- jump SlateportCity_Harbor_EventScript_155FD5
+ applymovement 255, SlateportCity_Harbor_Movement_1560C2
+ waitmovement 0
+ goto SlateportCity_Harbor_EventScript_155FD5
end
SlateportCity_Harbor_EventScript_155FD5:: @ 8155FD5
- move 7, SlateportCity_Harbor_Movement_1A0845
- waitmove 0
- move 255, SlateportCity_Harbor_Movement_1A0841
- waitmove 0
+ applymovement 7, SlateportCity_Harbor_Movement_1A0845
+ waitmovement 0
+ applymovement 255, SlateportCity_Harbor_Movement_1A0841
+ waitmovement 0
msgbox SlateportCity_Harbor_Text_17FD7D, 4
- closebutton
- move 6, SlateportCity_Harbor_Movement_15609B
- move 7, SlateportCity_Harbor_Movement_15609B
- move 8, SlateportCity_Harbor_Movement_1560A5
- waitmove 0
- disappear 6
- disappear 7
- disappear 8
+ closemessage
+ applymovement 6, SlateportCity_Harbor_Movement_15609B
+ applymovement 7, SlateportCity_Harbor_Movement_15609B
+ applymovement 8, SlateportCity_Harbor_Movement_1560A5
+ waitmovement 0
+ removeobject 6
+ removeobject 7
+ removeobject 8
setvar 0x40a0, 2
compare 0x8008, 0
- callif 1, SlateportCity_Harbor_EventScript_15605C
+ call_if 1, SlateportCity_Harbor_EventScript_15605C
compare 0x8008, 1
- callif 1, SlateportCity_Harbor_EventScript_156071
+ call_if 1, SlateportCity_Harbor_EventScript_156071
compare 0x8008, 2
- callif 1, SlateportCity_Harbor_EventScript_156086
+ call_if 1, SlateportCity_Harbor_EventScript_156086
compare 0x8008, 3
- callif 1, SlateportCity_Harbor_EventScript_156086
+ call_if 1, SlateportCity_Harbor_EventScript_156086
msgbox SlateportCity_Harbor_Text_17FE60, 4
- closebutton
+ closemessage
setflag 821
setflag 822
- moveoffscreen 4
- spritebehave 4, 10
+ moveobjectoffscreen 4
+ setobjectmovementtype 4, 10
releaseall
end
SlateportCity_Harbor_EventScript_15605C:: @ 815605C
- move 4, SlateportCity_Harbor_Movement_1560B3
- waitmove 0
- move 255, SlateportCity_Harbor_Movement_1A0845
- waitmove 0
+ applymovement 4, SlateportCity_Harbor_Movement_1560B3
+ waitmovement 0
+ applymovement 255, SlateportCity_Harbor_Movement_1A0845
+ waitmovement 0
return
SlateportCity_Harbor_EventScript_156071:: @ 8156071
- move 4, SlateportCity_Harbor_Movement_1560B9
- waitmove 0
- move 255, SlateportCity_Harbor_Movement_1A0843
- waitmove 0
+ applymovement 4, SlateportCity_Harbor_Movement_1560B9
+ waitmovement 0
+ applymovement 255, SlateportCity_Harbor_Movement_1A0843
+ waitmovement 0
return
SlateportCity_Harbor_EventScript_156086:: @ 8156086
- move 4, SlateportCity_Harbor_Movement_1560BE
- waitmove 0
- move 255, SlateportCity_Harbor_Movement_1A0843
- waitmove 0
+ applymovement 4, SlateportCity_Harbor_Movement_1560BE
+ waitmovement 0
+ applymovement 255, SlateportCity_Harbor_Movement_1A0843
+ waitmovement 0
return
SlateportCity_Harbor_Movement_15609B:: @ 815609B
@@ -160,7 +160,7 @@ SlateportCity_Harbor_EventScript_1560C4:: @ 81560C4
lock
faceplayer
checkflag 2052
- jumpeq SlateportCity_Harbor_EventScript_1560D9
+ goto_if_eq SlateportCity_Harbor_EventScript_1560D9
msgbox SlateportCity_Harbor_Text_17FA0A, 4
release
end
@@ -169,14 +169,14 @@ SlateportCity_Harbor_EventScript_1560D9:: @ 81560D9
msgbox SlateportCity_Harbor_Text_17FA73, 4
checkitem ITEM_SS_TICKET, 1
compare RESULT, 0
- jumpeq SlateportCity_Harbor_EventScript_156135
+ goto_if_eq SlateportCity_Harbor_EventScript_156135
message SlateportCity_Harbor_Text_17FB0A
- waittext
- jump SlateportCity_Harbor_EventScript_1560FD
+ waitmessage
+ goto SlateportCity_Harbor_EventScript_1560FD
end
SlateportCity_Harbor_EventScript_1560FD:: @ 81560FD
- multichoicedef 18, 6, 52, 2, 0
+ multichoicedefault 18, 6, 52, 2, 0
switch RESULT
case 0, SlateportCity_Harbor_EventScript_15613F
case 1, SlateportCity_Harbor_EventScript_156167
@@ -192,7 +192,7 @@ SlateportCity_Harbor_EventScript_156135:: @ 8156135
SlateportCity_Harbor_EventScript_15613F:: @ 815613F
msgbox SlateportCity_Harbor_Text_17FB81, 5
compare RESULT, 0
- jumpeq SlateportCity_Harbor_EventScript_15618A
+ goto_if_eq SlateportCity_Harbor_EventScript_15618A
setvar 0x40b4, 1
call SlateportCity_Harbor_EventScript_156196
warp SSTidalCorridor, 255, 1, 10
@@ -203,7 +203,7 @@ SlateportCity_Harbor_EventScript_15613F:: @ 815613F
SlateportCity_Harbor_EventScript_156167:: @ 8156167
msgbox SlateportCity_Harbor_Text_17FB9C, 5
compare RESULT, 0
- jumpeq SlateportCity_Harbor_EventScript_15618A
+ goto_if_eq SlateportCity_Harbor_EventScript_15618A
call SlateportCity_Harbor_EventScript_156196
warp BattleTower_Outside, 255, 19, 23
waitstate
@@ -212,23 +212,23 @@ SlateportCity_Harbor_EventScript_156167:: @ 8156167
SlateportCity_Harbor_EventScript_15618A:: @ 815618A
message SlateportCity_Harbor_Text_17FBE5
- waittext
- jump SlateportCity_Harbor_EventScript_1560FD
+ waitmessage
+ goto SlateportCity_Harbor_EventScript_1560FD
end
SlateportCity_Harbor_EventScript_156196:: @ 8156196
msgbox SlateportCity_Harbor_Text_17FBB6, 4
- closebutton
- move LAST_TALKED, SlateportCity_Harbor_Movement_1A0841
- waitmove 0
- pause 30
- spriteinvisible LAST_TALKED, 9, 8
+ closemessage
+ applymovement LAST_TALKED, SlateportCity_Harbor_Movement_1A0841
+ waitmovement 0
+ delay 30
+ hideobject LAST_TALKED, 9, 8
compare FACING, 2
- callif 1, SlateportCity_Harbor_EventScript_1561EF
+ call_if 1, SlateportCity_Harbor_EventScript_1561EF
compare FACING, 4
- callif 1, SlateportCity_Harbor_EventScript_1561E4
- pause 30
- spriteinvisible 255, 0, 0
+ call_if 1, SlateportCity_Harbor_EventScript_1561E4
+ delay 30
+ hideobject 255, 0, 0
setvar 0x8004, 5
call SlateportCity_Harbor_EventScript_1A040E
return
@@ -239,13 +239,13 @@ SlateportCity_Harbor_EventScript_1561DA:: @ 81561DA
end
SlateportCity_Harbor_EventScript_1561E4:: @ 81561E4
- move 255, SlateportCity_Harbor_Movement_1561FA
- waitmove 0
+ applymovement 255, SlateportCity_Harbor_Movement_1561FA
+ waitmovement 0
return
SlateportCity_Harbor_EventScript_1561EF:: @ 81561EF
- move 255, SlateportCity_Harbor_Movement_1561FD
- waitmove 0
+ applymovement 255, SlateportCity_Harbor_Movement_1561FD
+ waitmovement 0
return
SlateportCity_Harbor_Movement_1561FA:: @ 81561FA
@@ -269,17 +269,17 @@ SlateportCity_Harbor_EventScript_156211:: @ 8156211
lock
faceplayer
checkflag 2061
- jumpeq SlateportCity_Harbor_EventScript_15626F
+ goto_if_eq SlateportCity_Harbor_EventScript_15626F
checkflag 271
- jumpeq SlateportCity_Harbor_EventScript_156265
+ goto_if_eq SlateportCity_Harbor_EventScript_156265
checkflag 112
- jumpeq SlateportCity_Harbor_EventScript_156258
+ goto_if_eq SlateportCity_Harbor_EventScript_156258
compare 0x40a0, 2
- jumpeq SlateportCity_Harbor_EventScript_15624E
+ goto_if_eq SlateportCity_Harbor_EventScript_15624E
msgbox SlateportCity_Harbor_Text_17FD1C, 4
- closebutton
- move LAST_TALKED, SlateportCity_Harbor_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, SlateportCity_Harbor_Movement_1A083D
+ waitmovement 0
release
end
@@ -301,12 +301,12 @@ SlateportCity_Harbor_EventScript_156265:: @ 8156265
SlateportCity_Harbor_EventScript_15626F:: @ 815626F
compare 0x4001, 1
- jumpeq SlateportCity_Harbor_EventScript_156380
+ goto_if_eq SlateportCity_Harbor_EventScript_156380
checkitem ITEM_SCANNER, 1
compare RESULT, 1
- jumpeq SlateportCity_Harbor_EventScript_1562A7
+ goto_if_eq SlateportCity_Harbor_EventScript_1562A7
checkflag 2052
- jumpeq SlateportCity_Harbor_EventScript_15629D
+ goto_if_eq SlateportCity_Harbor_EventScript_15629D
msgbox SlateportCity_Harbor_Text_18017B, 4
release
end
@@ -318,8 +318,8 @@ SlateportCity_Harbor_EventScript_15629D:: @ 815629D
SlateportCity_Harbor_EventScript_1562A7:: @ 81562A7
message SlateportCity_Harbor_Text_18028B
- waittext
- jump SlateportCity_Harbor_EventScript_1562B3
+ waitmessage
+ goto SlateportCity_Harbor_EventScript_1562B3
end
SlateportCity_Harbor_EventScript_1562B3:: @ 81562B3
@@ -334,27 +334,27 @@ SlateportCity_Harbor_EventScript_1562B3:: @ 81562B3
SlateportCity_Harbor_EventScript_1562EA:: @ 81562EA
msgbox SlateportCity_Harbor_Text_1803DD, 5
compare RESULT, 0
- jumpeq SlateportCity_Harbor_EventScript_156374
+ goto_if_eq SlateportCity_Harbor_EventScript_156374
giveitem ITEM_DEEP_SEA_TOOTH
compare RESULT, 0
- jumpeq SlateportCity_Harbor_EventScript_1A029B
+ goto_if_eq SlateportCity_Harbor_EventScript_1A029B
removeitem ITEM_SCANNER, 1
msgbox SlateportCity_Harbor_Text_18046B, 4
setflag 294
- jump SlateportCity_Harbor_EventScript_156380
+ goto SlateportCity_Harbor_EventScript_156380
end
SlateportCity_Harbor_EventScript_15632A:: @ 815632A
msgbox SlateportCity_Harbor_Text_180412, 5
compare RESULT, 0
- jumpeq SlateportCity_Harbor_EventScript_156374
+ goto_if_eq SlateportCity_Harbor_EventScript_156374
giveitem ITEM_DEEP_SEA_SCALE
compare RESULT, 0
- jumpeq SlateportCity_Harbor_EventScript_1A029B
+ goto_if_eq SlateportCity_Harbor_EventScript_1A029B
removeitem ITEM_SCANNER, 1
msgbox SlateportCity_Harbor_Text_18046B, 4
setflag 294
- jump SlateportCity_Harbor_EventScript_156380
+ goto SlateportCity_Harbor_EventScript_156380
end
SlateportCity_Harbor_EventScript_15636A:: @ 815636A
@@ -364,8 +364,8 @@ SlateportCity_Harbor_EventScript_15636A:: @ 815636A
SlateportCity_Harbor_EventScript_156374:: @ 8156374
message SlateportCity_Harbor_Text_180447
- waittext
- jump SlateportCity_Harbor_EventScript_1562B3
+ waitmessage
+ goto SlateportCity_Harbor_EventScript_1562B3
end
SlateportCity_Harbor_EventScript_156380:: @ 8156380
diff --git a/data/scripts/maps/SlateportCity_House1.inc b/data/scripts/maps/SlateportCity_House1.inc
index 4161889e1..c72aa229a 100644
--- a/data/scripts/maps/SlateportCity_House1.inc
+++ b/data/scripts/maps/SlateportCity_House1.inc
@@ -6,9 +6,9 @@ SlateportCity_House1_EventScript_15567B:: @ 815567B
faceplayer
msgbox SlateportCity_House1_Text_17D46A, 5
compare RESULT, 1
- jumpeq SlateportCity_House1_EventScript_15569C
+ goto_if_eq SlateportCity_House1_EventScript_15569C
compare RESULT, 0
- jumpeq SlateportCity_House1_EventScript_1556BF
+ goto_if_eq SlateportCity_House1_EventScript_1556BF
end
SlateportCity_House1_EventScript_15569C:: @ 815569C
@@ -16,9 +16,9 @@ SlateportCity_House1_EventScript_15569C:: @ 815569C
special sub_80F9A0C
waitstate
compare 0x8004, 255
- jumpif 5, SlateportCity_House1_EventScript_1556C9
+ goto_if 5, SlateportCity_House1_EventScript_1556C9
compare 0x8004, 255
- jumpeq SlateportCity_House1_EventScript_1556BF
+ goto_if_eq SlateportCity_House1_EventScript_1556BF
end
SlateportCity_House1_EventScript_1556BF:: @ 81556BF
@@ -27,22 +27,22 @@ SlateportCity_House1_EventScript_1556BF:: @ 81556BF
end
SlateportCity_House1_EventScript_1556C9:: @ 81556C9
- specialval RESULT, ScriptGetPartyMonSpecies
+ specialvar RESULT, ScriptGetPartyMonSpecies
compare RESULT, SPECIES_EGG
- jumpeq SlateportCity_House1_EventScript_15571C
+ goto_if_eq SlateportCity_House1_EventScript_15571C
special sub_80BFAE0
special sub_80BFB10
compare RESULT, 1
- jumpeq SlateportCity_House1_EventScript_155726
- specialval RESULT, sub_810F96C
+ goto_if_eq SlateportCity_House1_EventScript_155726
+ specialvar RESULT, sub_810F96C
special sub_80BFAE0
compare RESULT, 1
- jumpeq SlateportCity_House1_EventScript_155726
+ goto_if_eq SlateportCity_House1_EventScript_155726
msgbox SlateportCity_House1_Text_17D505, 5
compare RESULT, 1
- jumpeq SlateportCity_House1_EventScript_155730
+ goto_if_eq SlateportCity_House1_EventScript_155730
compare RESULT, 0
- jumpeq SlateportCity_House1_EventScript_1556BF
+ goto_if_eq SlateportCity_House1_EventScript_1556BF
end
SlateportCity_House1_EventScript_15571C:: @ 815571C
@@ -58,10 +58,10 @@ SlateportCity_House1_EventScript_155726:: @ 8155726
SlateportCity_House1_EventScript_155730:: @ 8155730
msgbox SlateportCity_House1_Text_17D580, 4
call SlateportCity_House1_EventScript_1A0678
- specialval RESULT, sub_80BF9B4
+ specialvar RESULT, sub_80BF9B4
special sub_80BFAE0
compare RESULT, 1
- jumpeq SlateportCity_House1_EventScript_15575A
+ goto_if_eq SlateportCity_House1_EventScript_15575A
msgbox SlateportCity_House1_Text_17D63A, 4
release
end
diff --git a/data/scripts/maps/SlateportCity_House2.inc b/data/scripts/maps/SlateportCity_House2.inc
index 2d50f0851..934fae153 100644
--- a/data/scripts/maps/SlateportCity_House2.inc
+++ b/data/scripts/maps/SlateportCity_House2.inc
@@ -10,7 +10,7 @@ SlateportCity_House2_EventScript_156399:: @ 8156399
faceplayer
checkitem ITEM_CONTEST_PASS, 1
compare RESULT, 1
- jumpeq SlateportCity_House2_EventScript_1563B5
+ goto_if_eq SlateportCity_House2_EventScript_1563B5
msgbox SlateportCity_House2_Text_180567, 4
release
end
diff --git a/data/scripts/maps/SlateportCity_Mart.inc b/data/scripts/maps/SlateportCity_Mart.inc
index 730afe6d4..39a1d5ba2 100644
--- a/data/scripts/maps/SlateportCity_Mart.inc
+++ b/data/scripts/maps/SlateportCity_Mart.inc
@@ -5,7 +5,7 @@ SlateportCity_Mart_EventScript_156411:: @ 8156411
lock
faceplayer
message SlateportCity_Mart_Text_1A0BE4
- waittext
+ waitmessage
pokemart SlateportCity_Mart_Items
msgbox SlateportCity_Mart_Text_1A0C02, 4
release
diff --git a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc
index e84f8ccc6..1ee8ff39b 100644
--- a/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc
+++ b/data/scripts/maps/SlateportCity_OceanicMuseum_1F.inc
@@ -18,59 +18,59 @@ SlateportCity_OceanicMuseum_1F_EventScript_155ADB:: @ 8155ADB
SlateportCity_OceanicMuseum_1F_EventScript_155AE4:: @ 8155AE4
lockall
- move 255, SlateportCity_OceanicMuseum_1F_Movement_1A083F
- waitmove 0
- jump SlateportCity_OceanicMuseum_1F_EventScript_155B06
+ applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_1A083F
+ waitmovement 0
+ goto SlateportCity_OceanicMuseum_1F_EventScript_155B06
end
SlateportCity_OceanicMuseum_1F_EventScript_155AF5:: @ 8155AF5
lockall
- move 255, SlateportCity_OceanicMuseum_1F_Movement_1A0843
- waitmove 0
- jump SlateportCity_OceanicMuseum_1F_EventScript_155B06
+ applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_1A0843
+ waitmovement 0
+ goto SlateportCity_OceanicMuseum_1F_EventScript_155B06
end
SlateportCity_OceanicMuseum_1F_EventScript_155B06:: @ 8155B06
- showmoney 0, 0
- snop
+ showmoneybox 0, 0
+ nop
msgbox SlateportCity_OceanicMuseum_1F_Text_17E18D, 5
compare RESULT, 1
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_155B2D
- closebutton
- hidemoney 0, 0
- move 255, SlateportCity_OceanicMuseum_1F_Movement_155B8D
- waitmove 0
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155B2D
+ closemessage
+ hidemoneybox 0, 0
+ applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_155B8D
+ waitmovement 0
releaseall
end
SlateportCity_OceanicMuseum_1F_EventScript_155B2D:: @ 8155B2D
checkmoney 0x32, 0
compare RESULT, 0
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_155B5A
- paymoney 0x32, 0
- updatemoney 0, 0
- snop
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155B5A
+ takemoney 0x32, 0
+ updatemoneybox 0, 0
+ nop
msgbox SlateportCity_OceanicMuseum_1F_Text_17E1DE, 4
setvar 0x40aa, 1
- hidemoney 0, 0
+ hidemoneybox 0, 0
releaseall
end
SlateportCity_OceanicMuseum_1F_EventScript_155B5A:: @ 8155B5A
checkflag 149
- jumpif 0, SlateportCity_OceanicMuseum_1F_EventScript_155B7B
+ goto_if 0, SlateportCity_OceanicMuseum_1F_EventScript_155B7B
msgbox SlateportCity_OceanicMuseum_1F_Text_17E1F5, 4
- closebutton
- hidemoney 0, 0
- move 255, SlateportCity_OceanicMuseum_1F_Movement_155B8D
- waitmove 0
+ closemessage
+ hidemoneybox 0, 0
+ applymovement 255, SlateportCity_OceanicMuseum_1F_Movement_155B8D
+ waitmovement 0
releaseall
end
SlateportCity_OceanicMuseum_1F_EventScript_155B7B:: @ 8155B7B
msgbox SlateportCity_OceanicMuseum_1F_Text_17E22D, 4
setvar 0x40aa, 1
- hidemoney 0, 0
+ hidemoneybox 0, 0
releaseall
end
@@ -157,40 +157,40 @@ SlateportCity_OceanicMuseum_1F_EventScript_155C31:: @ 8155C31
SlateportCity_OceanicMuseum_1F_EventScript_155C3A:: @ 8155C3A
lock
faceplayer
- pause 8
- playsfx 21
- move 13, SlateportCity_OceanicMuseum_1F_Movement_1A0833
- waitmove 0
- move 13, SlateportCity_OceanicMuseum_1F_Movement_1A0835
- waitmove 0
+ delay 8
+ playse 21
+ applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_1A0833
+ waitmovement 0
+ applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_1A0835
+ waitmovement 0
msgbox SlateportCity_OceanicMuseum_1F_Text_17E582, 4
giveitem ITEM_TM46
compare RESULT, 0
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_155CC2
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155CC2
setflag 269
msgbox SlateportCity_OceanicMuseum_1F_Text_17E606, 4
- closebutton
+ closemessage
compare FACING, 2
- jumpeq SlateportCity_OceanicMuseum_1F_EventScript_155C98
+ goto_if_eq SlateportCity_OceanicMuseum_1F_EventScript_155C98
compare FACING, 2
- jumpif 5, SlateportCity_OceanicMuseum_1F_EventScript_155CAD
+ goto_if 5, SlateportCity_OceanicMuseum_1F_EventScript_155CAD
end
SlateportCity_OceanicMuseum_1F_EventScript_155C98:: @ 8155C98
- move 13, SlateportCity_OceanicMuseum_1F_Movement_155CD3
- waitmove 0
+ applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_155CD3
+ waitmovement 0
setflag 965
- playsfx 9
- disappear 13
+ playse 9
+ removeobject 13
release
end
SlateportCity_OceanicMuseum_1F_EventScript_155CAD:: @ 8155CAD
- move 13, SlateportCity_OceanicMuseum_1F_Movement_155CCC
- waitmove 0
+ applymovement 13, SlateportCity_OceanicMuseum_1F_Movement_155CCC
+ waitmovement 0
setflag 965
- playsfx 9
- disappear 13
+ playse 9
+ removeobject 13
release
end
diff --git a/data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc b/data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc
index 57bfbbd03..e379c633d 100644
--- a/data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc
+++ b/data/scripts/maps/SlateportCity_OceanicMuseum_2F.inc
@@ -10,82 +10,82 @@ SlateportCity_OceanicMuseum_2F_EventScript_155CE6:: @ 8155CE6
lock
faceplayer
msgbox SlateportCity_OceanicMuseum_2F_Text_17ECFD, 4
- closebutton
- playmusic BGM_EVIL_TEAM, 1
- reappear 3
- move 3, SlateportCity_OceanicMuseum_2F_Movement_155EB4
- waitmove 0
- reappear 4
- move 4, SlateportCity_OceanicMuseum_2F_Movement_155EC3
- waitmove 0
- move 3, SlateportCity_OceanicMuseum_2F_Movement_155EB8
- move 4, SlateportCity_OceanicMuseum_2F_Movement_155EC5
- waitmove 0
+ closemessage
+ playbgm BGM_EVIL_TEAM, 1
+ addobject 3
+ applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_155EB4
+ waitmovement 0
+ addobject 4
+ applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155EC3
+ waitmovement 0
+ applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_155EB8
+ applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155EC5
+ waitmovement 0
compare FACING, 1
- callif 1, SlateportCity_OceanicMuseum_2F_EventScript_155E62
+ call_if 1, SlateportCity_OceanicMuseum_2F_EventScript_155E62
compare FACING, 4
- callif 1, SlateportCity_OceanicMuseum_2F_EventScript_155E62
+ call_if 1, SlateportCity_OceanicMuseum_2F_EventScript_155E62
msgbox SlateportCity_OceanicMuseum_2F_Text_17EDAE, 4
compare FACING, 4
- callif 5, SlateportCity_OceanicMuseum_2F_EventScript_155E6D
+ call_if 5, SlateportCity_OceanicMuseum_2F_EventScript_155E6D
msgbox SlateportCity_OceanicMuseum_2F_Text_17EDD7, 4
msgbox SlateportCity_OceanicMuseum_2F_Text_17EE01, 4
- closebutton
- move 4, SlateportCity_OceanicMuseum_2F_Movement_155EB2
- waitmove 0
+ closemessage
+ applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155EB2
+ waitmovement 0
compare FACING, 1
- callif 1, SlateportCity_OceanicMuseum_2F_EventScript_155E78
+ call_if 1, SlateportCity_OceanicMuseum_2F_EventScript_155E78
compare FACING, 3
- callif 1, SlateportCity_OceanicMuseum_2F_EventScript_155E83
+ call_if 1, SlateportCity_OceanicMuseum_2F_EventScript_155E83
trainerbattle 3, OPPONENT_MUSEUM_2F_GRUNT_1, 0, SlateportCity_OceanicMuseum_2F_Text_17EE4E
msgbox SlateportCity_OceanicMuseum_2F_Text_17EE66, 4
- closebutton
- move 4, SlateportCity_OceanicMuseum_2F_Movement_155EBF
- waitmove 0
- move 3, SlateportCity_OceanicMuseum_2F_Movement_155EB2
- waitmove 0
+ closemessage
+ applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155EBF
+ waitmovement 0
+ applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_155EB2
+ waitmovement 0
msgbox SlateportCity_OceanicMuseum_2F_Text_17EEA5, 4
- playmusicbattle 0
+ savebgm 0
trainerbattle 3, OPPONENT_MUSEUM_2F_GRUNT_2, 0, SlateportCity_OceanicMuseum_2F_Text_17EED6
- move 3, SlateportCity_OceanicMuseum_2F_Movement_155EBF
- waitmove 0
- move 3, SlateportCity_OceanicMuseum_2F_Movement_1A0845
- move 4, SlateportCity_OceanicMuseum_2F_Movement_1A0841
- waitmove 0
+ applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_155EBF
+ waitmovement 0
+ applymovement 3, SlateportCity_OceanicMuseum_2F_Movement_1A0845
+ applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_1A0841
+ waitmovement 0
msgbox SlateportCity_OceanicMuseum_2F_Text_17EEEA, 4
- closebutton
- pause 35
- reappear 2
- move 2, SlateportCity_OceanicMuseum_2F_Movement_155EA8
- move 4, SlateportCity_OceanicMuseum_2F_Movement_155ECE
- waitmove 0
+ closemessage
+ delay 35
+ addobject 2
+ applymovement 2, SlateportCity_OceanicMuseum_2F_Movement_155EA8
+ applymovement 4, SlateportCity_OceanicMuseum_2F_Movement_155ECE
+ waitmovement 0
msgbox SlateportCity_OceanicMuseum_2F_Text_17EF62, 4
- move 2, SlateportCity_OceanicMuseum_2F_Movement_155EA6
- waitmove 0
+ applymovement 2, SlateportCity_OceanicMuseum_2F_Movement_155EA6
+ waitmovement 0
.ifdef SAPPHIRE
msgbox SlateportCity_OceanicMuseum_2F_Text_17EFC9, 4
.else
msgbox SlateportCity_OceanicMuseum_2F_Text_17F17E, 4
.endif
- closebutton
+ closemessage
fadescreen 1
- disappear 2
- disappear 3
- disappear 4
+ removeobject 2
+ removeobject 3
+ removeobject 4
fadescreen 0
- pause 30
+ delay 30
setflag 883
- move 255, SlateportCity_OceanicMuseum_2F_Movement_1A0843
- waitmove 0
+ applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_1A0843
+ waitmovement 0
msgbox SlateportCity_OceanicMuseum_2F_Text_17F352, 4
setvar 0x8004, 269
call SlateportCity_OceanicMuseum_2F_EventScript_1A067F
msgbox SlateportCity_OceanicMuseum_2F_Text_17F433, 4
- closebutton
- move 1, SlateportCity_OceanicMuseum_2F_Movement_155E98
- waitmove 0
- playsfx 9
- disappear 1
+ closemessage
+ applymovement 1, SlateportCity_OceanicMuseum_2F_Movement_155E98
+ waitmovement 0
+ playse 9
+ removeobject 1
setflag 900
setflag 149
clearflag 947
@@ -94,23 +94,23 @@ SlateportCity_OceanicMuseum_2F_EventScript_155CE6:: @ 8155CE6
end
SlateportCity_OceanicMuseum_2F_EventScript_155E62:: @ 8155E62
- move 255, SlateportCity_OceanicMuseum_2F_Movement_1A083F
- waitmove 0
+ applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_1A083F
+ waitmovement 0
return
SlateportCity_OceanicMuseum_2F_EventScript_155E6D:: @ 8155E6D
- move 1, SlateportCity_OceanicMuseum_2F_Movement_1A083F
- waitmove 0
+ applymovement 1, SlateportCity_OceanicMuseum_2F_Movement_1A083F
+ waitmovement 0
return
SlateportCity_OceanicMuseum_2F_EventScript_155E78:: @ 8155E78
- move 255, SlateportCity_OceanicMuseum_2F_Movement_155E8E
- waitmove 0
+ applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_155E8E
+ waitmovement 0
return
SlateportCity_OceanicMuseum_2F_EventScript_155E83:: @ 8155E83
- move 255, SlateportCity_OceanicMuseum_2F_Movement_155E92
- waitmove 0
+ applymovement 255, SlateportCity_OceanicMuseum_2F_Movement_155E92
+ waitmovement 0
return
SlateportCity_OceanicMuseum_2F_Movement_155E8E:: @ 8155E8E
@@ -265,8 +265,8 @@ SlateportCity_OceanicMuseum_2F_EventScript_155F46:: @ 8155F46
lock
faceplayer
msgbox SlateportCity_OceanicMuseum_2F_Text_17F53B, 4
- closebutton
- move LAST_TALKED, SlateportCity_OceanicMuseum_2F_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement LAST_TALKED, SlateportCity_OceanicMuseum_2F_Movement_1A083D
+ waitmovement 0
release
end
diff --git a/data/scripts/maps/SlateportCity_PokemonCenter_1F.inc b/data/scripts/maps/SlateportCity_PokemonCenter_1F.inc
index c550a6850..9aa326f70 100644
--- a/data/scripts/maps/SlateportCity_PokemonCenter_1F.inc
+++ b/data/scripts/maps/SlateportCity_PokemonCenter_1F.inc
@@ -10,7 +10,7 @@ SlateportCity_PokemonCenter_1F_MapScript1_1563C5:: @ 81563C5
SlateportCity_PokemonCenter_1F_EventScript_1563CE:: @ 81563CE
setvar 0x800b, 1
call SlateportCity_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
diff --git a/data/scripts/maps/SlateportCity_PokemonFanClub.inc b/data/scripts/maps/SlateportCity_PokemonFanClub.inc
index 0a7466a3b..4195ad43a 100644
--- a/data/scripts/maps/SlateportCity_PokemonFanClub.inc
+++ b/data/scripts/maps/SlateportCity_PokemonFanClub.inc
@@ -18,27 +18,27 @@ SlateportCity_PokemonFanClub_EventScript_15576B:: @ 815576B
SlateportCity_PokemonFanClub_EventScript_155795:: @ 8155795
setvar 0x40b7, 1
msgbox SlateportCity_PokemonFanClub_Text_17D773, 4
- jump SlateportCity_PokemonFanClub_EventScript_155808
+ goto SlateportCity_PokemonFanClub_EventScript_155808
end
SlateportCity_PokemonFanClub_EventScript_1557A8:: @ 81557A8
setvar 0x4002, 0
checkflag 204
- callif 1, SlateportCity_PokemonFanClub_EventScript_155893
+ call_if 1, SlateportCity_PokemonFanClub_EventScript_155893
checkflag 203
- callif 1, SlateportCity_PokemonFanClub_EventScript_155893
+ call_if 1, SlateportCity_PokemonFanClub_EventScript_155893
checkflag 202
- callif 1, SlateportCity_PokemonFanClub_EventScript_155893
+ call_if 1, SlateportCity_PokemonFanClub_EventScript_155893
checkflag 201
- callif 1, SlateportCity_PokemonFanClub_EventScript_155893
+ call_if 1, SlateportCity_PokemonFanClub_EventScript_155893
checkflag 200
- callif 1, SlateportCity_PokemonFanClub_EventScript_155893
+ call_if 1, SlateportCity_PokemonFanClub_EventScript_155893
compare 0x4002, 5
- callif 1, SlateportCity_PokemonFanClub_EventScript_15588D
+ call_if 1, SlateportCity_PokemonFanClub_EventScript_15588D
compare 0x40b7, 2
- jumpeq SlateportCity_PokemonFanClub_EventScript_1557FE
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1557FE
msgbox SlateportCity_PokemonFanClub_Text_17DA14, 4
- jump SlateportCity_PokemonFanClub_EventScript_155808
+ goto SlateportCity_PokemonFanClub_EventScript_155808
end
SlateportCity_PokemonFanClub_EventScript_1557FE:: @ 81557FE
@@ -50,16 +50,16 @@ SlateportCity_PokemonFanClub_EventScript_155808:: @ 8155808
msgbox SlateportCity_PokemonFanClub_Text_17DA49, 4
setvar 0x4001, 0
checkflag 204
- callif 0, SlateportCity_PokemonFanClub_EventScript_1559FE
+ call_if 0, SlateportCity_PokemonFanClub_EventScript_1559FE
checkflag 203
- callif 0, SlateportCity_PokemonFanClub_EventScript_1559E7
+ call_if 0, SlateportCity_PokemonFanClub_EventScript_1559E7
checkflag 202
- callif 0, SlateportCity_PokemonFanClub_EventScript_1559D0
+ call_if 0, SlateportCity_PokemonFanClub_EventScript_1559D0
checkflag 201
- callif 0, SlateportCity_PokemonFanClub_EventScript_1559B9
+ call_if 0, SlateportCity_PokemonFanClub_EventScript_1559B9
checkflag 200
- callif 0, SlateportCity_PokemonFanClub_EventScript_1559A2
- bufferfirstpoke 0
+ call_if 0, SlateportCity_PokemonFanClub_EventScript_1559A2
+ getfirstpartypokename 0
switch 0x4001
case 0, SlateportCity_PokemonFanClub_EventScript_155899
case 1, SlateportCity_PokemonFanClub_EventScript_1558A3
@@ -86,7 +86,7 @@ SlateportCity_PokemonFanClub_EventScript_155899:: @ 8155899
SlateportCity_PokemonFanClub_EventScript_1558A3:: @ 81558A3
checkitemspace ITEM_RED_SCARF, 1
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_155998
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998
msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4
setflag 200
giveitem ITEM_RED_SCARF
@@ -97,7 +97,7 @@ SlateportCity_PokemonFanClub_EventScript_1558A3:: @ 81558A3
SlateportCity_PokemonFanClub_EventScript_1558D4:: @ 81558D4
checkitemspace ITEM_BLUE_SCARF, 1
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_155998
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998
msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4
setflag 201
giveitem ITEM_BLUE_SCARF
@@ -108,7 +108,7 @@ SlateportCity_PokemonFanClub_EventScript_1558D4:: @ 81558D4
SlateportCity_PokemonFanClub_EventScript_155905:: @ 8155905
checkitemspace ITEM_PINK_SCARF, 1
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_155998
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998
msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4
setflag 202
giveitem ITEM_PINK_SCARF
@@ -119,7 +119,7 @@ SlateportCity_PokemonFanClub_EventScript_155905:: @ 8155905
SlateportCity_PokemonFanClub_EventScript_155936:: @ 8155936
checkitemspace ITEM_GREEN_SCARF, 1
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_155998
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998
msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4
setflag 203
giveitem ITEM_GREEN_SCARF
@@ -130,7 +130,7 @@ SlateportCity_PokemonFanClub_EventScript_155936:: @ 8155936
SlateportCity_PokemonFanClub_EventScript_155967:: @ 8155967
checkitemspace ITEM_YELLOW_SCARF, 1
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_155998
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_155998
msgbox SlateportCity_PokemonFanClub_Text_17DB89, 4
setflag 204
giveitem ITEM_YELLOW_SCARF
@@ -144,9 +144,9 @@ SlateportCity_PokemonFanClub_EventScript_155998:: @ 8155998
end
SlateportCity_PokemonFanClub_EventScript_1559A2:: @ 81559A2
- specialval RESULT, CheckLeadMonCool
+ specialvar RESULT, CheckLeadMonCool
compare RESULT, 1
- callif 1, SlateportCity_PokemonFanClub_EventScript_1559B3
+ call_if 1, SlateportCity_PokemonFanClub_EventScript_1559B3
return
SlateportCity_PokemonFanClub_EventScript_1559B3:: @ 81559B3
@@ -154,9 +154,9 @@ SlateportCity_PokemonFanClub_EventScript_1559B3:: @ 81559B3
return
SlateportCity_PokemonFanClub_EventScript_1559B9:: @ 81559B9
- specialval RESULT, CheckLeadMonBeauty
+ specialvar RESULT, CheckLeadMonBeauty
compare RESULT, 1
- callif 1, SlateportCity_PokemonFanClub_EventScript_1559CA
+ call_if 1, SlateportCity_PokemonFanClub_EventScript_1559CA
return
SlateportCity_PokemonFanClub_EventScript_1559CA:: @ 81559CA
@@ -164,9 +164,9 @@ SlateportCity_PokemonFanClub_EventScript_1559CA:: @ 81559CA
return
SlateportCity_PokemonFanClub_EventScript_1559D0:: @ 81559D0
- specialval RESULT, CheckLeadMonCute
+ specialvar RESULT, CheckLeadMonCute
compare RESULT, 1
- callif 1, SlateportCity_PokemonFanClub_EventScript_1559E1
+ call_if 1, SlateportCity_PokemonFanClub_EventScript_1559E1
return
SlateportCity_PokemonFanClub_EventScript_1559E1:: @ 81559E1
@@ -174,9 +174,9 @@ SlateportCity_PokemonFanClub_EventScript_1559E1:: @ 81559E1
return
SlateportCity_PokemonFanClub_EventScript_1559E7:: @ 81559E7
- specialval RESULT, CheckLeadMonSmart
+ specialvar RESULT, CheckLeadMonSmart
compare RESULT, 1
- callif 1, SlateportCity_PokemonFanClub_EventScript_1559F8
+ call_if 1, SlateportCity_PokemonFanClub_EventScript_1559F8
return
SlateportCity_PokemonFanClub_EventScript_1559F8:: @ 81559F8
@@ -184,9 +184,9 @@ SlateportCity_PokemonFanClub_EventScript_1559F8:: @ 81559F8
return
SlateportCity_PokemonFanClub_EventScript_1559FE:: @ 81559FE
- specialval RESULT, CheckLeadMonTough
+ specialvar RESULT, CheckLeadMonTough
compare RESULT, 1
- callif 1, SlateportCity_PokemonFanClub_EventScript_155A0F
+ call_if 1, SlateportCity_PokemonFanClub_EventScript_155A0F
return
SlateportCity_PokemonFanClub_EventScript_155A0F:: @ 8155A0F
@@ -197,24 +197,24 @@ SlateportCity_PokemonFanClub_EventScript_155A15:: @ 8155A15
lock
faceplayer
checkflag 278
- jumpeq SlateportCity_PokemonFanClub_EventScript_155A75
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_155A75
msgbox SlateportCity_PokemonFanClub_Text_17DE6B, 4
- specialval RESULT, GetLeadMonFriendshipScore
+ specialvar RESULT, GetLeadMonFriendshipScore
compare RESULT, 4
- jumpif 4, SlateportCity_PokemonFanClub_EventScript_155A3A
+ goto_if 4, SlateportCity_PokemonFanClub_EventScript_155A3A
release
end
SlateportCity_PokemonFanClub_EventScript_155A3A:: @ 8155A3A
- playsfx 21
- move LAST_TALKED, SlateportCity_PokemonFanClub_Movement_1A0833
- waitmove 0
- move LAST_TALKED, SlateportCity_PokemonFanClub_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement LAST_TALKED, SlateportCity_PokemonFanClub_Movement_1A0833
+ waitmovement 0
+ applymovement LAST_TALKED, SlateportCity_PokemonFanClub_Movement_1A0835
+ waitmovement 0
msgbox SlateportCity_PokemonFanClub_Text_17DF57, 4
giveitem ITEM_SOOTHE_BELL
compare RESULT, 0
- jumpeq SlateportCity_PokemonFanClub_EventScript_1A029B
+ goto_if_eq SlateportCity_PokemonFanClub_EventScript_1A029B
setflag 278
release
end
@@ -235,8 +235,8 @@ SlateportCity_PokemonFanClub_EventScript_155A88:: @ 8155A88
SlateportCity_PokemonFanClub_EventScript_155A91:: @ 8155A91
lock
faceplayer
- checksound
- pokecry SPECIES_SKITTY, 0
+ waitse
+ playpokecry SPECIES_SKITTY, 0
msgbox SlateportCity_PokemonFanClub_Text_17E14E, 4
waitpokecry
release
@@ -245,8 +245,8 @@ SlateportCity_PokemonFanClub_EventScript_155A91:: @ 8155A91
SlateportCity_PokemonFanClub_EventScript_155AA4:: @ 8155AA4
lock
faceplayer
- checksound
- pokecry SPECIES_ZIGZAGOON, 0
+ waitse
+ playpokecry SPECIES_ZIGZAGOON, 0
msgbox SlateportCity_PokemonFanClub_Text_17E164, 4
waitpokecry
release
@@ -255,8 +255,8 @@ SlateportCity_PokemonFanClub_EventScript_155AA4:: @ 8155AA4
SlateportCity_PokemonFanClub_EventScript_155AB7:: @ 8155AB7
lock
faceplayer
- checksound
- pokecry SPECIES_AZUMARILL, 0
+ waitse
+ playpokecry SPECIES_AZUMARILL, 0
msgbox SlateportCity_PokemonFanClub_Text_17E178, 4
waitpokecry
release
diff --git a/data/scripts/maps/SlateportCity_SternsShipyard_1F.inc b/data/scripts/maps/SlateportCity_SternsShipyard_1F.inc
index 4c0596d29..9fe7f1f1a 100644
--- a/data/scripts/maps/SlateportCity_SternsShipyard_1F.inc
+++ b/data/scripts/maps/SlateportCity_SternsShipyard_1F.inc
@@ -4,52 +4,52 @@ SlateportCity_SternsShipyard_1F_MapScripts:: @ 8155335
SlateportCity_SternsShipyard_1F_EventScript_155336:: @ 8155336
lockall
checkflag 2052
- jumpeq SlateportCity_SternsShipyard_1F_EventScript_155388
+ goto_if_eq SlateportCity_SternsShipyard_1F_EventScript_155388
checkflag 2061
- jumpeq SlateportCity_SternsShipyard_1F_EventScript_15539C
+ goto_if_eq SlateportCity_SternsShipyard_1F_EventScript_15539C
checkflag 149
- jumpeq SlateportCity_SternsShipyard_1F_EventScript_1553CF
+ goto_if_eq SlateportCity_SternsShipyard_1F_EventScript_1553CF
checkflag 148
- jumpeq SlateportCity_SternsShipyard_1F_EventScript_1553B0
+ goto_if_eq SlateportCity_SternsShipyard_1F_EventScript_1553B0
msgbox SlateportCity_SternsShipyard_1F_Text_17C14B, 4
- move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839
- waitmove 0
+ applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839
+ waitmovement 0
msgbox SlateportCity_SternsShipyard_1F_Text_17C1EC, 4
- closebutton
- move 1, SlateportCity_SternsShipyard_1F_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A083D
+ waitmovement 0
setflag 148
setflag 882
releaseall
end
SlateportCity_SternsShipyard_1F_EventScript_155388:: @ 8155388
- move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839
- waitmove 0
+ applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839
+ waitmovement 0
msgbox SlateportCity_SternsShipyard_1F_Text_17C472, 4
releaseall
end
SlateportCity_SternsShipyard_1F_EventScript_15539C:: @ 815539C
- move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839
- waitmove 0
+ applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839
+ waitmovement 0
msgbox SlateportCity_SternsShipyard_1F_Text_17C3F7, 4
releaseall
end
SlateportCity_SternsShipyard_1F_EventScript_1553B0:: @ 81553B0
- move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839
- waitmove 0
+ applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839
+ waitmovement 0
msgbox SlateportCity_SternsShipyard_1F_Text_17C2F2, 4
- closebutton
- move 1, SlateportCity_SternsShipyard_1F_Movement_1A083D
- waitmove 0
+ closemessage
+ applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A083D
+ waitmovement 0
releaseall
end
SlateportCity_SternsShipyard_1F_EventScript_1553CF:: @ 81553CF
- move 1, SlateportCity_SternsShipyard_1F_Movement_1A0839
- waitmove 0
+ applymovement 1, SlateportCity_SternsShipyard_1F_Movement_1A0839
+ waitmovement 0
msgbox SlateportCity_SternsShipyard_1F_Text_17C360, 4
releaseall
end
diff --git a/data/scripts/maps/SootopolisCity.inc b/data/scripts/maps/SootopolisCity.inc
index 0c22fbc37..bddc5965d 100644
--- a/data/scripts/maps/SootopolisCity.inc
+++ b/data/scripts/maps/SootopolisCity.inc
@@ -6,19 +6,19 @@ SootopolisCity_MapScripts:: @ 814D07D
SootopolisCity_MapScript1_14D08D:: @ 814D08D
checkflag 129
- callif 0, SootopolisCity_EventScript_14D0A0
+ call_if 0, SootopolisCity_EventScript_14D0A0
checkflag 129
- callif 1, SootopolisCity_EventScript_14D0B1
+ call_if 1, SootopolisCity_EventScript_14D0B1
end
SootopolisCity_EventScript_14D0A0:: @ 814D0A0
- movespriteperm 3, 31, 18
+ setobjectxyperm 3, 31, 18
setmaptile 31, 32, 592, 1
return
SootopolisCity_EventScript_14D0B1:: @ 814D0B1
checkflag 113
- callif 0, SootopolisCity_EventScript_14D0BB
+ call_if 0, SootopolisCity_EventScript_14D0BB
return
SootopolisCity_EventScript_14D0BB:: @ 814D0BB
@@ -36,40 +36,40 @@ SootopolisCity_EventScript_14D0BB:: @ 814D0BB
SootopolisCity_MapScript1_14D10D:: @ 814D10D
setflag 2077
checkflag 113
- callif 1, SootopolisCity_EventScript_14D159
+ call_if 1, SootopolisCity_EventScript_14D159
checkflag 2090
- callif 1, SootopolisCity_EventScript_14D123
+ call_if 1, SootopolisCity_EventScript_14D123
end
SootopolisCity_EventScript_14D123:: @ 814D123
call SootopolisCity_EventScript_1A02C1
- movespriteperm 1, 29, 19
- movespriteperm 2, 33, 19
+ setobjectxyperm 1, 29, 19
+ setobjectxyperm 2, 33, 19
compare 0x405e, 1
- callif 1, SootopolisCity_EventScript_14D142
+ call_if 1, SootopolisCity_EventScript_14D142
return
SootopolisCity_EventScript_14D142:: @ 814D142
- movespriteperm 10, 29, 6
- spritebehave 10, 10
- movespriteperm 5, 30, 6
- spritebehave 5, 9
+ setobjectxyperm 10, 29, 6
+ setobjectmovementtype 10, 10
+ setobjectxyperm 5, 30, 6
+ setobjectmovementtype 5, 9
return
SootopolisCity_EventScript_14D159:: @ 814D159
- movespriteperm 10, 31, 33
- spritebehave 10, 8
+ setobjectxyperm 10, 31, 33
+ setobjectmovementtype 10, 8
return
SootopolisCity_MapScript1_14D165:: @ 814D165
- warp4 Underwater_SootopolisCity, 255, 9, 6
+ setdivewarp Underwater_SootopolisCity, 255, 9, 6
end
SootopolisCity_EventScript_14D16E:: @ 814D16E
lock
faceplayer
checkflag 113
- jumpeq SootopolisCity_EventScript_14D183
+ goto_if_eq SootopolisCity_EventScript_14D183
msgbox SootopolisCity_Text_1696A4, 4
release
end
@@ -90,30 +90,30 @@ SootopolisCity_EventScript_14D196:: @ 814D196
SootopolisCity_EventScript_14D19F:: @ 814D19F
lock
faceplayer
- checkdailyflags
+ dodailyevents
special GetPlayerBigGuyGirlString
checkflag 2258
- jumpeq SootopolisCity_EventScript_14D241
+ goto_if_eq SootopolisCity_EventScript_14D241
msgbox SootopolisCity_Text_1C63F2, 4
random 10
addvar RESULT, 20
addvar RESULT, 133
giveitem RESULT
compare RESULT, 0
- jumpeq SootopolisCity_EventScript_1A029B
+ goto_if_eq SootopolisCity_EventScript_1A029B
setflag 2258
msgbox SootopolisCity_Text_1C64D0, 4
random 2
compare RESULT, 0
- jumpeq SootopolisCity_EventScript_14D1FF
+ goto_if_eq SootopolisCity_EventScript_14D1FF
compare RESULT, 1
- jumpeq SootopolisCity_EventScript_14D220
+ goto_if_eq SootopolisCity_EventScript_14D220
end
SootopolisCity_EventScript_14D1FF:: @ 814D1FF
giveitem ITEM_FIGY_BERRY
compare RESULT, 0
- jumpeq SootopolisCity_EventScript_1A029B
+ goto_if_eq SootopolisCity_EventScript_1A029B
msgbox SootopolisCity_Text_1C650B, 4
release
end
@@ -121,7 +121,7 @@ SootopolisCity_EventScript_14D1FF:: @ 814D1FF
SootopolisCity_EventScript_14D220:: @ 814D220
giveitem ITEM_IAPAPA_BERRY
compare RESULT, 0
- jumpeq SootopolisCity_EventScript_1A029B
+ goto_if_eq SootopolisCity_EventScript_1A029B
msgbox SootopolisCity_Text_1C650B, 4
release
end
@@ -129,7 +129,7 @@ SootopolisCity_EventScript_14D220:: @ 814D220
SootopolisCity_EventScript_14D241:: @ 814D241
msgbox SootopolisCity_Text_1C6540, 5
compare RESULT, 1
- jumpeq SootopolisCity_EventScript_14D25E
+ goto_if_eq SootopolisCity_EventScript_14D25E
msgbox SootopolisCity_Text_1C6626, 4
release
end
@@ -143,7 +143,7 @@ SootopolisCity_EventScript_14D268:: @ 814D268
lock
faceplayer
checkflag 1236
- jumpeq SootopolisCity_EventScript_14D27D
+ goto_if_eq SootopolisCity_EventScript_14D27D
msgbox SootopolisCity_Text_16A4D6, 4
release
end
@@ -157,7 +157,7 @@ SootopolisCity_EventScript_14D287:: @ 814D287
lock
faceplayer
checkflag 113
- jumpeq SootopolisCity_EventScript_14D29C
+ goto_if_eq SootopolisCity_EventScript_14D29C
msgbox SootopolisCity_Text_169813, 4
release
end
@@ -171,7 +171,7 @@ SootopolisCity_EventScript_14D2A6:: @ 814D2A6
lock
faceplayer
checkflag 113
- jumpeq SootopolisCity_EventScript_14D2BB
+ goto_if_eq SootopolisCity_EventScript_14D2BB
msgbox SootopolisCity_Text_1698A0, 4
release
end
@@ -185,7 +185,7 @@ SootopolisCity_EventScript_14D2C5:: @ 814D2C5
lock
faceplayer
checkflag 113
- jumpeq SootopolisCity_EventScript_14D2DA
+ goto_if_eq SootopolisCity_EventScript_14D2DA
msgbox SootopolisCity_Text_1697A7, 4
release
end
@@ -213,81 +213,81 @@ ClosedSootopolisGymDoorScript:: @ 814D2FF
SootopolisCity_EventScript_14D308:: @ 814D308
lockall
- move 10, SootopolisCity_Movement_1A083F
- move 255, SootopolisCity_Movement_1A0843
- waitmove 0
- playsfx 21
- move 10, SootopolisCity_Movement_1A0833
- waitmove 0
- move 10, SootopolisCity_Movement_1A0835
- waitmove 0
- move 10, SootopolisCity_Movement_14D413
- waitmove 0
+ applymovement 10, SootopolisCity_Movement_1A083F
+ applymovement 255, SootopolisCity_Movement_1A0843
+ waitmovement 0
+ playse 21
+ applymovement 10, SootopolisCity_Movement_1A0833
+ waitmovement 0
+ applymovement 10, SootopolisCity_Movement_1A0835
+ waitmovement 0
+ applymovement 10, SootopolisCity_Movement_14D413
+ waitmovement 0
.ifdef SAPPHIRE
msgbox SootopolisCity_Text_169988, 4
.else
msgbox SootopolisCity_Text_169E0F, 4
.endif
- closebutton
- move 10, SootopolisCity_Movement_14D417
- move 255, SootopolisCity_Movement_14D440
- waitmove 10
+ closemessage
+ applymovement 10, SootopolisCity_Movement_14D417
+ applymovement 255, SootopolisCity_Movement_14D440
+ waitmovement 10
.ifdef SAPPHIRE
msgbox SootopolisCity_Text_1699FD, 4
.else
msgbox SootopolisCity_Text_169E82, 4
.endif
- playsfx 21
- move 5, SootopolisCity_Movement_1A0833
- waitmove 0
- move 5, SootopolisCity_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement 5, SootopolisCity_Movement_1A0833
+ waitmovement 0
+ applymovement 5, SootopolisCity_Movement_1A0835
+ waitmovement 0
.ifdef SAPPHIRE
msgbox SootopolisCity_Text_169AB7, 4
.else
msgbox SootopolisCity_Text_169F3C, 4
.endif
- closebutton
- pause 30
- move 5, SootopolisCity_Movement_14D46A
- move 10, SootopolisCity_Movement_14D41D
- move 255, SootopolisCity_Movement_14D445
- waitmove 0
- move 5, SootopolisCity_Movement_1A0843
- move 255, SootopolisCity_Movement_1A0843
- waitmove 0
- pause 30
- move 10, SootopolisCity_Movement_1A0845
- waitmove 0
+ closemessage
+ delay 30
+ applymovement 5, SootopolisCity_Movement_14D46A
+ applymovement 10, SootopolisCity_Movement_14D41D
+ applymovement 255, SootopolisCity_Movement_14D445
+ waitmovement 0
+ applymovement 5, SootopolisCity_Movement_1A0843
+ applymovement 255, SootopolisCity_Movement_1A0843
+ waitmovement 0
+ delay 30
+ applymovement 10, SootopolisCity_Movement_1A0845
+ waitmovement 0
.ifdef SAPPHIRE
msgbox SootopolisCity_Text_169AE7, 4
.else
msgbox SootopolisCity_Text_169F6B, 4
.endif
- closebutton
- pause 30
- move 5, SootopolisCity_Movement_14D47C
- move 255, SootopolisCity_Movement_14D457
- move 10, SootopolisCity_Movement_14D42D
- waitmove 0
- move 5, SootopolisCity_Movement_1A083F
- waitmove 0
+ closemessage
+ delay 30
+ applymovement 5, SootopolisCity_Movement_14D47C
+ applymovement 255, SootopolisCity_Movement_14D457
+ applymovement 10, SootopolisCity_Movement_14D42D
+ waitmovement 0
+ applymovement 5, SootopolisCity_Movement_1A083F
+ waitmovement 0
.ifdef SAPPHIRE
msgbox SootopolisCity_Text_169BC7, 4
.else
msgbox SootopolisCity_Text_16A06C, 4
.endif
- move 255, SootopolisCity_Movement_1A083F
- waitmove 0
+ applymovement 255, SootopolisCity_Movement_1A083F
+ waitmovement 0
.ifdef SAPPHIRE
msgbox SootopolisCity_Text_169C99, 4
.else
msgbox SootopolisCity_Text_16A13E, 4
.endif
- moveoffscreen 5
- spritebehave 5, 9
- moveoffscreen 10
- spritebehave 10, 10
+ moveobjectoffscreen 5
+ setobjectmovementtype 5, 9
+ moveobjectoffscreen 10
+ setobjectmovementtype 10, 10
setvar 0x405e, 2
releaseall
end
@@ -446,7 +446,7 @@ SootopolisCity_EventScript_14D498:: @ 814D498
lock
faceplayer
checkflag 113
- jumpeq SootopolisCity_EventScript_14D4AD
+ goto_if_eq SootopolisCity_EventScript_14D4AD
.ifdef SAPPHIRE
msgbox SootopolisCity_Text_169DA6, 4
.else
@@ -457,14 +457,14 @@ SootopolisCity_EventScript_14D498:: @ 814D498
SootopolisCity_EventScript_14D4AD:: @ 814D4AD
msgbox SootopolisCity_Text_16A33E, 4
- closebutton
- move LAST_TALKED, SootopolisCity_Movement_1A0845
- waitmove 0
- pause 50
- setanimation 0, 1
- doanimation 30
- pause 15
- disappear LAST_TALKED
- checkanimation 30
+ closemessage
+ applymovement LAST_TALKED, SootopolisCity_Movement_1A0845
+ waitmovement 0
+ delay 50
+ setfieldeffect 0, 1
+ dofieldeffect 30
+ delay 15
+ removeobject LAST_TALKED
+ waitfieldeffect 30
release
end
diff --git a/data/scripts/maps/SootopolisCity_Gym_1F.inc b/data/scripts/maps/SootopolisCity_Gym_1F.inc
index 32bf4d619..51b67ee4b 100644
--- a/data/scripts/maps/SootopolisCity_Gym_1F.inc
+++ b/data/scripts/maps/SootopolisCity_Gym_1F.inc
@@ -20,11 +20,11 @@ SootopolisCity_Gym_1F_MapScript1_15AF25:: @ 815AF25
SootopolisCity_Gym_1F_EventScript_15AF2E:: @ 815AF2E
compare 0x4022, 8
- jumpif 0, SootopolisCity_Gym_1F_EventScript_15AF85
+ goto_if 0, SootopolisCity_Gym_1F_EventScript_15AF85
compare 0x4022, 28
- jumpif 0, SootopolisCity_Gym_1F_EventScript_15AF73
+ goto_if 0, SootopolisCity_Gym_1F_EventScript_15AF73
compare 0x4022, 69
- jumpif 0, SootopolisCity_Gym_1F_EventScript_15AF61
+ goto_if 0, SootopolisCity_Gym_1F_EventScript_15AF61
setmaptile 8, 4, 519, 0
setmaptile 8, 5, 519, 0
@@ -48,35 +48,35 @@ SootopolisCity_Gym_1F_MapScript2_15AF86:: @ 815AF86
SootopolisCity_Gym_1F_EventScript_15AFA8:: @ 815AFA8
addvar 0x4022, 1
- pause 40
- playsfx 40
+ delay 40
+ playse 40
call SootopolisCity_Gym_1F_EventScript_15AF2E
special DrawWholeMapView
end
SootopolisCity_Gym_1F_EventScript_15AFBC:: @ 815AFBC
addvar 0x4022, 1
- pause 40
- playsfx 40
+ delay 40
+ playse 40
call SootopolisCity_Gym_1F_EventScript_15AF2E
special DrawWholeMapView
end
SootopolisCity_Gym_1F_EventScript_15AFD0:: @ 815AFD0
addvar 0x4022, 1
- pause 40
- playsfx 40
+ delay 40
+ playse 40
call SootopolisCity_Gym_1F_EventScript_15AF2E
special DrawWholeMapView
end
SootopolisCity_Gym_1F_EventScript_15AFE4:: @ 815AFE4
lockall
- pause 20
- move 255, SootopolisCity_Gym_1F_Movement_15AFFD
- waitmove 0
- playsfx 43
- pause 60
+ delay 20
+ applymovement 255, SootopolisCity_Gym_1F_Movement_15AFFD
+ waitmovement 0
+ playse 43
+ delay 60
warphole SootopolisCity_Gym_B1F
waitstate
end
@@ -88,29 +88,29 @@ SootopolisCity_Gym_1F_Movement_15AFFD:: @ 815AFFD
SootopolisCity_Gym_1F_EventScript_15AFFF:: @ 815AFFF
trainerbattle 1, OPPONENT_WALLACE, 0, SootopolisCity_Gym_1F_Text_18F0CA, SootopolisCity_Gym_1F_Text_18F282, SootopolisCity_Gym_1F_EventScript_15B02D
checkflag 172
- jumpif 0, SootopolisCity_Gym_1F_EventScript_15B056
+ goto_if 0, SootopolisCity_Gym_1F_EventScript_15B056
checkflag 2060
- jumpif 0, SootopolisCity_Gym_1F_EventScript_15B07A
+ goto_if 0, SootopolisCity_Gym_1F_EventScript_15B07A
msgbox SootopolisCity_Gym_1F_Text_18F4D7, 4
release
end
SootopolisCity_Gym_1F_EventScript_15B02D:: @ 815B02D
message SootopolisCity_Gym_1F_Text_18F342
- waittext
+ waitmessage
call SootopolisCity_Gym_1F_EventScript_1A02C5
msgbox SootopolisCity_Gym_1F_Text_18F36B, 4
setflag 1236
setflag 2062
setvar 0x8008, 8
call SootopolisCity_Gym_1F_EventScript_1A01C0
- jump SootopolisCity_Gym_1F_EventScript_15B056
+ goto SootopolisCity_Gym_1F_EventScript_15B056
end
SootopolisCity_Gym_1F_EventScript_15B056:: @ 815B056
giveitem ITEM_TM03
compare RESULT, 0
- jumpeq SootopolisCity_Gym_1F_EventScript_1A029B
+ goto_if_eq SootopolisCity_Gym_1F_EventScript_1A029B
msgbox SootopolisCity_Gym_1F_Text_18F466, 4
setflag 172
release
@@ -125,7 +125,7 @@ SootopolisCity_Gym_1F_EventScript_15B084:: @ 815B084
lock
faceplayer
checkflag 1236
- jumpeq SootopolisCity_Gym_1F_EventScript_15B099
+ goto_if_eq SootopolisCity_Gym_1F_EventScript_15B099
msgbox SootopolisCity_Gym_1F_Text_18E8A5, 4
release
end
@@ -138,15 +138,15 @@ SootopolisCity_Gym_1F_EventScript_15B099:: @ 815B099
SootopolisCity_Gym_1F_EventScript_15B0A3:: @ 815B0A3
lockall
checkflag 2062
- jumpeq SootopolisCity_Gym_1F_EventScript_15B0C3
- jump SootopolisCity_Gym_1F_EventScript_15B0CD
+ goto_if_eq SootopolisCity_Gym_1F_EventScript_15B0C3
+ goto SootopolisCity_Gym_1F_EventScript_15B0CD
end
SootopolisCity_Gym_1F_EventScript_15B0B3:: @ 815B0B3
lockall
checkflag 2062
- jumpeq SootopolisCity_Gym_1F_EventScript_15B0C3
- jump SootopolisCity_Gym_1F_EventScript_15B0CD
+ goto_if_eq SootopolisCity_Gym_1F_EventScript_15B0C3
+ goto SootopolisCity_Gym_1F_EventScript_15B0CD
end
SootopolisCity_Gym_1F_EventScript_15B0C3:: @ 815B0C3
diff --git a/data/scripts/maps/SootopolisCity_House1.inc b/data/scripts/maps/SootopolisCity_House1.inc
index 604f04c4f..4877d6d6e 100644
--- a/data/scripts/maps/SootopolisCity_House1.inc
+++ b/data/scripts/maps/SootopolisCity_House1.inc
@@ -5,7 +5,7 @@ SootopolisCity_House1_EventScript_15B29B:: @ 815B29B
lock
faceplayer
checkflag 121
- jumpeq SootopolisCity_House1_EventScript_15B2C7
+ goto_if_eq SootopolisCity_House1_EventScript_15B2C7
msgbox SootopolisCity_House1_Text_18F991, 4
giveitem ITEM_TM31
setflag 121
@@ -21,8 +21,8 @@ SootopolisCity_House1_EventScript_15B2C7:: @ 815B2C7
SootopolisCity_House1_EventScript_15B2D1:: @ 815B2D1
lock
faceplayer
- checksound
- pokecry SPECIES_KECLEON, 0
+ waitse
+ playpokecry SPECIES_KECLEON, 0
msgbox SootopolisCity_House1_Text_18FA50, 4
waitpokecry
release
diff --git a/data/scripts/maps/SootopolisCity_House2.inc b/data/scripts/maps/SootopolisCity_House2.inc
index 409a871a8..011806291 100644
--- a/data/scripts/maps/SootopolisCity_House2.inc
+++ b/data/scripts/maps/SootopolisCity_House2.inc
@@ -6,9 +6,9 @@ SootopolisCity_House2_EventScript_15B2E5:: @ 815B2E5
faceplayer
msgbox SootopolisCity_House2_Text_18FA66, 5
compare RESULT, 1
- callif 1, SootopolisCity_House2_EventScript_15B307
+ call_if 1, SootopolisCity_House2_EventScript_15B307
compare RESULT, 0
- callif 1, SootopolisCity_House2_EventScript_15B310
+ call_if 1, SootopolisCity_House2_EventScript_15B310
release
end
diff --git a/data/scripts/maps/SootopolisCity_House3.inc b/data/scripts/maps/SootopolisCity_House3.inc
index 88e35730e..f1bf0bf19 100644
--- a/data/scripts/maps/SootopolisCity_House3.inc
+++ b/data/scripts/maps/SootopolisCity_House3.inc
@@ -6,7 +6,7 @@ SootopolisCity_House3_EventScript_15B31A:: @ 815B31A
faceplayer
msgbox SootopolisCity_House3_Text_18FB36, 5
compare RESULT, 1
- jumpeq SootopolisCity_House3_EventScript_15B339
+ goto_if_eq SootopolisCity_House3_EventScript_15B339
msgbox SootopolisCity_House3_Text_18FBC0, 4
release
end
diff --git a/data/scripts/maps/SootopolisCity_House4.inc b/data/scripts/maps/SootopolisCity_House4.inc
index ee3bfe61b..c192a0340 100644
--- a/data/scripts/maps/SootopolisCity_House4.inc
+++ b/data/scripts/maps/SootopolisCity_House4.inc
@@ -12,8 +12,8 @@ SootopolisCity_House4_EventScript_15B356:: @ 815B356
SootopolisCity_House4_EventScript_15B35F:: @ 815B35F
lock
faceplayer
- checksound
- pokecry SPECIES_AZUMARILL, 0
+ waitse
+ playpokecry SPECIES_AZUMARILL, 0
msgbox SootopolisCity_House4_Text_18FDD8, 4
waitpokecry
release
diff --git a/data/scripts/maps/SootopolisCity_House6.inc b/data/scripts/maps/SootopolisCity_House6.inc
index cccfa78ee..a0fdc5ca4 100644
--- a/data/scripts/maps/SootopolisCity_House6.inc
+++ b/data/scripts/maps/SootopolisCity_House6.inc
@@ -5,14 +5,14 @@ SootopolisCity_House6_EventScript_15B386:: @ 815B386
lock
faceplayer
checkflag 245
- jumpeq SootopolisCity_House6_EventScript_15B3CD
+ goto_if_eq SootopolisCity_House6_EventScript_15B3CD
msgbox SootopolisCity_House6_Text_18FEA1, 5
compare RESULT, 0
- callif 1, SootopolisCity_House6_EventScript_15B3C3
+ call_if 1, SootopolisCity_House6_EventScript_15B3C3
msgbox SootopolisCity_House6_Text_18FF12, 4
givedecoration 117
compare RESULT, 0
- jumpeq SootopolisCity_House6_EventScript_15B3D7
+ goto_if_eq SootopolisCity_House6_EventScript_15B3D7
setflag 245
release
end
@@ -28,7 +28,7 @@ SootopolisCity_House6_EventScript_15B3CD:: @ 815B3CD
end
SootopolisCity_House6_EventScript_15B3D7:: @ 815B3D7
- bufferdecor 1, 117
+ getdecorname 1, 117
msgbox SootopolisCity_House6_Text_1A0CEF, 4
msgbox SootopolisCity_House6_Text_18FF28, 4
release
diff --git a/data/scripts/maps/SootopolisCity_House8.inc b/data/scripts/maps/SootopolisCity_House8.inc
index 9d7618316..df536004e 100644
--- a/data/scripts/maps/SootopolisCity_House8.inc
+++ b/data/scripts/maps/SootopolisCity_House8.inc
@@ -10,14 +10,14 @@ SootopolisCity_House8_EventScript_15B401:: @ 815B401
waitstate
copyvar RESULT, 0x8004
compare RESULT, 255
- jumpeq SootopolisCity_House8_EventScript_15B448
+ goto_if_eq SootopolisCity_House8_EventScript_15B448
special CompareShroomishSize
compare RESULT, 1
- jumpeq SootopolisCity_House8_EventScript_15B452
+ goto_if_eq SootopolisCity_House8_EventScript_15B452
compare RESULT, 2
- jumpeq SootopolisCity_House8_EventScript_15B45C
+ goto_if_eq SootopolisCity_House8_EventScript_15B45C
compare RESULT, 3
- jumpeq SootopolisCity_House8_EventScript_15B466
+ goto_if_eq SootopolisCity_House8_EventScript_15B466
release
end
@@ -40,8 +40,8 @@ SootopolisCity_House8_EventScript_15B466:: @ 815B466
msgbox SootopolisCity_House8_Text_19021D, 4
giveitem ITEM_ELIXIR
compare RESULT, 0
- jumpeq SootopolisCity_House8_EventScript_15B488
- closebutton
+ goto_if_eq SootopolisCity_House8_EventScript_15B488
+ closemessage
release
end
@@ -59,14 +59,14 @@ SootopolisCity_House8_EventScript_15B492:: @ 815B492
waitstate
copyvar RESULT, 0x8004
compare RESULT, 255
- jumpeq SootopolisCity_House8_EventScript_15B4D9
+ goto_if_eq SootopolisCity_House8_EventScript_15B4D9
special CompareBarboachSize
compare RESULT, 1
- jumpeq SootopolisCity_House8_EventScript_15B4E3
+ goto_if_eq SootopolisCity_House8_EventScript_15B4E3
compare RESULT, 2
- jumpeq SootopolisCity_House8_EventScript_15B4ED
+ goto_if_eq SootopolisCity_House8_EventScript_15B4ED
compare RESULT, 3
- jumpeq SootopolisCity_House8_EventScript_15B4F7
+ goto_if_eq SootopolisCity_House8_EventScript_15B4F7
release
end
@@ -89,8 +89,8 @@ SootopolisCity_House8_EventScript_15B4F7:: @ 815B4F7
msgbox SootopolisCity_House8_Text_190536, 4
giveitem ITEM_ELIXIR
compare RESULT, 0
- jumpeq SootopolisCity_House8_EventScript_15B519
- closebutton
+ goto_if_eq SootopolisCity_House8_EventScript_15B519
+ closemessage
release
end
diff --git a/data/scripts/maps/SootopolisCity_Mart.inc b/data/scripts/maps/SootopolisCity_Mart.inc
index 9f37f9d0b..b88347002 100644
--- a/data/scripts/maps/SootopolisCity_Mart.inc
+++ b/data/scripts/maps/SootopolisCity_Mart.inc
@@ -5,7 +5,7 @@ SootopolisCity_Mart_EventScript_15B21B:: @ 815B21B
lock
faceplayer
message SootopolisCity_Mart_Text_1A0BE4
- waittext
+ waitmessage
pokemart SootopolisCity_Mart_Items
msgbox SootopolisCity_Mart_Text_1A0C02, 4
release
@@ -30,9 +30,9 @@ SootopolisCity_Mart_EventScript_15B24A:: @ 815B24A
lock
faceplayer
checkflag 113
- jumpeq SootopolisCity_Mart_EventScript_15B268
+ goto_if_eq SootopolisCity_Mart_EventScript_15B268
checkflag 129
- jumpif 0, SootopolisCity_Mart_EventScript_15B268
+ goto_if 0, SootopolisCity_Mart_EventScript_15B268
msgbox SootopolisCity_Mart_Text_18F8D7, 4
release
end
@@ -46,9 +46,9 @@ SootopolisCity_Mart_EventScript_15B272:: @ 815B272
lock
faceplayer
checkflag 113
- jumpeq SootopolisCity_Mart_EventScript_15B290
+ goto_if_eq SootopolisCity_Mart_EventScript_15B290
checkflag 129
- jumpif 0, SootopolisCity_Mart_EventScript_15B290
+ goto_if 0, SootopolisCity_Mart_EventScript_15B290
msgbox SootopolisCity_Mart_Text_18F96B, 4
release
end
diff --git a/data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc b/data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc
index 29cc06584..cb09d8856 100644
--- a/data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc
+++ b/data/scripts/maps/SootopolisCity_PokemonCenter_1F.inc
@@ -9,7 +9,7 @@ SootopolisCity_PokemonCenter_1F_MapScript1_15B196:: @ 815B196
@ 815B19A
setvar 0x800B, 1
call VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
@@ -18,9 +18,9 @@ SootopolisCity_PokemonCenter_1F_EventScript_15B1A8:: @ 815B1A8
lock
faceplayer
checkflag 113
- jumpeq SootopolisCity_PokemonCenter_1F_EventScript_15B1C6
+ goto_if_eq SootopolisCity_PokemonCenter_1F_EventScript_15B1C6
checkflag 129
- jumpif 0, SootopolisCity_PokemonCenter_1F_EventScript_15B1C6
+ goto_if 0, SootopolisCity_PokemonCenter_1F_EventScript_15B1C6
msgbox SootopolisCity_PokemonCenter_1F_Text_18F770, 4
release
end
@@ -34,9 +34,9 @@ SootopolisCity_PokemonCenter_1F_EventScript_15B1D0:: @ 815B1D0
lock
faceplayer
checkflag 113
- jumpeq SootopolisCity_PokemonCenter_1F_EventScript_15B1EE
+ goto_if_eq SootopolisCity_PokemonCenter_1F_EventScript_15B1EE
checkflag 129
- jumpif 0, SootopolisCity_PokemonCenter_1F_EventScript_15B1EE
+ goto_if 0, SootopolisCity_PokemonCenter_1F_EventScript_15B1EE
msgbox SootopolisCity_PokemonCenter_1F_Text_18F860, 4
release
end
diff --git a/data/scripts/maps/SouthernIsland_Exterior.inc b/data/scripts/maps/SouthernIsland_Exterior.inc
index 9723647cd..3c6426024 100644
--- a/data/scripts/maps/SouthernIsland_Exterior.inc
+++ b/data/scripts/maps/SouthernIsland_Exterior.inc
@@ -11,13 +11,13 @@ SouthernIsland_Exterior_EventScript_160AE0:: @ 8160AE0
faceplayer
msgbox SouthernIsland_Exterior_Text_1C5215, 5
compare RESULT, 0
- jumpeq SouthernIsland_Exterior_EventScript_160B25
+ goto_if_eq SouthernIsland_Exterior_EventScript_160B25
msgbox SouthernIsland_Exterior_Text_1C5281, 4
- closebutton
- move LAST_TALKED, SouthernIsland_Exterior_Movement_1A0845
- waitmove 0
- pause 30
- spriteinvisible 1, 26, 9
+ closemessage
+ applymovement LAST_TALKED, SouthernIsland_Exterior_Movement_1A0845
+ waitmovement 0
+ delay 30
+ hideobject 1, 26, 9
setvar 0x8004, 2
call SouthernIsland_Exterior_EventScript_1A047C
warp LilycoveCity_Harbor, 255, 8, 11
@@ -31,13 +31,13 @@ SouthernIsland_Exterior_EventScript_160B25:: @ 8160B25
end
BattleTower_Outside_EventScript_160B2F:: @ 8160B2F
- move 255, BattleTower_Outside_Movement_160B45
- waitmove 0
+ applymovement 255, BattleTower_Outside_Movement_160B45
+ waitmovement 0
return
BattleTower_Outside_EventScript_160B3A:: @ 8160B3A
- move 255, BattleTower_Outside_Movement_160B47
- waitmove 0
+ applymovement 255, BattleTower_Outside_Movement_160B47
+ waitmovement 0
return
BattleTower_Outside_Movement_160B45:: @ 8160B45
diff --git a/data/scripts/maps/SouthernIsland_Interior.inc b/data/scripts/maps/SouthernIsland_Interior.inc
index 3adf3545f..bcb316f96 100644
--- a/data/scripts/maps/SouthernIsland_Interior.inc
+++ b/data/scripts/maps/SouthernIsland_Interior.inc
@@ -5,11 +5,11 @@ SouthernIsland_Interior_MapScripts:: @ 8160B53
SouthernIsland_Interior_MapScript1_160B5E:: @ 8160B5E
checkflag 2145
- callif 1, SouthernIsland_Interior_EventScript_160B68
+ call_if 1, SouthernIsland_Interior_EventScript_160B68
end
SouthernIsland_Interior_EventScript_160B68:: @ 8160B68
- disappear 2
+ removeobject 2
return
SouthernIsland_Interior_MapScript1_160B6C:: @ 8160B6C
@@ -22,11 +22,11 @@ SouthernIsland_Interior_MapScript1_160B6C:: @ 8160B6C
end
SouthernIsland_Interior_EventScript_160B77:: @ 8160B77
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq SouthernIsland_Interior_EventScript_160B8F
+ goto_if_eq SouthernIsland_Interior_EventScript_160B8F
compare RESULT, 1
- jumpeq SouthernIsland_Interior_EventScript_160B95
+ goto_if_eq SouthernIsland_Interior_EventScript_160B95
end
SouthernIsland_Interior_EventScript_160B8F:: @ 8160B8F
@@ -40,34 +40,34 @@ SouthernIsland_Interior_EventScript_160B95:: @ 8160B95
SouthernIsland_Interior_EventScript_160B9B:: @ 8160B9B
lockall
setvar 0x8008, 12
- jump SouthernIsland_Interior_EventScript_160BA7
+ goto SouthernIsland_Interior_EventScript_160BA7
end
SouthernIsland_Interior_EventScript_160BA7:: @ 8160BA7
checkflag 206
- jumpeq SouthernIsland_Interior_EventScript_160C08
+ goto_if_eq SouthernIsland_Interior_EventScript_160C08
checkflag 2131
- jumpif 0, SouthernIsland_Interior_EventScript_160C08
+ goto_if 0, SouthernIsland_Interior_EventScript_160C08
setflag 206
special SpawnCameraDummy
- move 127, SouthernIsland_Interior_Movement_160C12
- waitmove 0
- pause 50
- checksound
- pokecry SPECIES_LATIAS_OR_LATIOS, 0
- pause 30
+ applymovement 127, SouthernIsland_Interior_Movement_160C12
+ waitmovement 0
+ delay 50
+ waitse
+ playpokecry SPECIES_LATIAS_OR_LATIOS, 0
+ delay 30
waitpokecry
- reappear 2
- pause 30
- move 127, SouthernIsland_Interior_Movement_160C16
- move 2, SouthernIsland_Interior_Movement_160C22
- waitmove 0
- pause 50
+ addobject 2
+ delay 30
+ applymovement 127, SouthernIsland_Interior_Movement_160C16
+ applymovement 2, SouthernIsland_Interior_Movement_160C22
+ waitmovement 0
+ delay 50
special RemoveCameraDummy
setwildbattle SPECIES_LATIAS_OR_LATIOS, 50, ITEM_SOUL_DEW
setflag 911
setflag 2145
- special StartBattle_SouthernIsland
+ special ScrSpecial_StartSouthernIslandBattle
waitstate
clearflag 2145
releaseall
diff --git a/data/scripts/maps/Underwater_Route134.inc b/data/scripts/maps/Underwater_Route134.inc
index ee79f9799..bbe7e1ce2 100644
--- a/data/scripts/maps/Underwater_Route134.inc
+++ b/data/scripts/maps/Underwater_Route134.inc
@@ -3,5 +3,5 @@ Underwater_Route134_MapScripts:: @ 815F071
.byte 0
Underwater_Route134_MapScript1_15F077:: @ 815F077
- warp4 Route134, 255, 60, 31
+ setdivewarp Route134, 255, 60, 31
end
diff --git a/data/scripts/maps/Underwater_SeafloorCavern.inc b/data/scripts/maps/Underwater_SeafloorCavern.inc
index c879ec609..3d2fe81b2 100644
--- a/data/scripts/maps/Underwater_SeafloorCavern.inc
+++ b/data/scripts/maps/Underwater_SeafloorCavern.inc
@@ -7,7 +7,7 @@ Underwater_SeafloorCavern_MapScripts:: @ 815D99E
Underwater_SeafloorCavern_MapScript1_15D9AE:: @ 815D9AE
setflag 2119
checkflag 129
- jumpeq Underwater_SeafloorCavern_EventScript_15D9BB
+ goto_if_eq Underwater_SeafloorCavern_EventScript_15D9BB
end
Underwater_SeafloorCavern_EventScript_15D9BB:: @ 815D9BB
@@ -16,7 +16,7 @@ Underwater_SeafloorCavern_EventScript_15D9BB:: @ 815D9BB
Underwater_SeafloorCavern_MapScript1_15D9BF:: @ 815D9BF
checkflag 129
- callif 1, Underwater_SeafloorCavern_EventScript_15D9C9
+ call_if 1, Underwater_SeafloorCavern_EventScript_15D9C9
end
Underwater_SeafloorCavern_EventScript_15D9C9:: @ 815D9C9
@@ -35,7 +35,7 @@ Underwater_SeafloorCavern_EventScript_15D9C9:: @ 815D9C9
return
Underwater_SeafloorCavern_MapScript1_15DA36:: @ 815DA36
- warp4 SeafloorCavern_Entrance, 255, 10, 17
+ setdivewarp SeafloorCavern_Entrance, 255, 10, 17
end
Underwater_SeafloorCavern_EventScript_15DA3F:: @ 815DA3F
diff --git a/data/scripts/maps/Underwater_SealedChamber.inc b/data/scripts/maps/Underwater_SealedChamber.inc
index d7e7aabcb..836ad86e2 100644
--- a/data/scripts/maps/Underwater_SealedChamber.inc
+++ b/data/scripts/maps/Underwater_SealedChamber.inc
@@ -5,23 +5,23 @@ Underwater_SealedChamber_MapScripts:: @ 815F080
Underwater_SealedChamber_MapScript1_15F086:: @ 815F086
getplayerxy 0x8004, 0x8005
compare 0x8004, 12
- jumpif 5, Underwater_SealedChamber_EventScript_15F0A6
+ goto_if 5, Underwater_SealedChamber_EventScript_15F0A6
compare 0x8005, 44
- jumpif 5, Underwater_SealedChamber_EventScript_15F0A6
- jump Underwater_SealedChamber_EventScript_15F0AF
+ goto_if 5, Underwater_SealedChamber_EventScript_15F0A6
+ goto Underwater_SealedChamber_EventScript_15F0AF
Underwater_SealedChamber_EventScript_15F0A6:: @ 815F0A6
- warp4 Route134, 255, 60, 31
+ setdivewarp Route134, 255, 60, 31
end
Underwater_SealedChamber_EventScript_15F0AF:: @ 815F0AF
- warp4 SealedChamber_OuterRoom, 255, 10, 19
+ setdivewarp SealedChamber_OuterRoom, 255, 10, 19
end
Underwater_SealedChamber_EventScript_15F0B8:: @ 815F0B8
lockall
- braillemsg Underwater_SealedChamber_Braille_1C533D
+ braillemessage Underwater_SealedChamber_Braille_1C533D
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
diff --git a/data/scripts/maps/Underwater_SootopolisCity.inc b/data/scripts/maps/Underwater_SootopolisCity.inc
index 624c2c83e..c9405dfd7 100644
--- a/data/scripts/maps/Underwater_SootopolisCity.inc
+++ b/data/scripts/maps/Underwater_SootopolisCity.inc
@@ -3,5 +3,5 @@ Underwater_SootopolisCity_MapScripts:: @ 815CAE4
.byte 0
Underwater_SootopolisCity_MapScript1_15CAEA:: @ 815CAEA
- warp4 SootopolisCity, 255, 29, 53
+ setdivewarp SootopolisCity, 255, 29, 53
end
diff --git a/data/scripts/maps/UnknownMap_25_34.inc b/data/scripts/maps/UnknownMap_25_34.inc
index cbd782f35..34d0bb70b 100644
--- a/data/scripts/maps/UnknownMap_25_34.inc
+++ b/data/scripts/maps/UnknownMap_25_34.inc
@@ -14,40 +14,40 @@ LinkContestRoom1_MapScript1_15F595:: @ 815F595
LinkContestRoom1_EventScript_15F5A5:: @ 815F5A5
special ScriptGetMultiplayerId
compare RESULT, 0
- callif 1, LinkContestRoom1_EventScript_15F5E0
+ call_if 1, LinkContestRoom1_EventScript_15F5E0
compare RESULT, 1
- callif 1, LinkContestRoom1_EventScript_15F5E4
+ call_if 1, LinkContestRoom1_EventScript_15F5E4
compare RESULT, 2
- callif 1, LinkContestRoom1_EventScript_15F5E8
+ call_if 1, LinkContestRoom1_EventScript_15F5E8
compare RESULT, 3
- callif 1, LinkContestRoom1_EventScript_15F5EC
+ call_if 1, LinkContestRoom1_EventScript_15F5EC
compare RESULT, 4
- callif 1, LinkContestRoom1_EventScript_15F5F0
+ call_if 1, LinkContestRoom1_EventScript_15F5F0
return
LinkContestRoom1_EventScript_15F5E0:: @ 815F5E0
- playmusicbattle 393
+ savebgm 393
return
LinkContestRoom1_EventScript_15F5E4:: @ 815F5E4
- playmusicbattle 394
+ savebgm 394
return
LinkContestRoom1_EventScript_15F5E8:: @ 815F5E8
- playmusicbattle 395
+ savebgm 395
return
LinkContestRoom1_EventScript_15F5EC:: @ 815F5EC
- playmusicbattle 396
+ savebgm 396
return
LinkContestRoom1_EventScript_15F5F0:: @ 815F5F0
- playmusicbattle 440
+ savebgm 440
return
LinkContestRoom1_MapScript1_15F5F4:: @ 815F5F4
compare 0x4009, 1
- callif 1, LinkContestRoom1_EventScript_15F600
+ call_if 1, LinkContestRoom1_EventScript_15F600
end
LinkContestRoom1_EventScript_15F600:: @ 815F600
@@ -68,7 +68,7 @@ LinkContestRoom1_EventScript_15F61A:: @ 815F61A
end
LinkContestRoom1_EventScript_15F625:: @ 815F625
- spriteinvisible 255, 0, 9
+ hideobject 255, 0, 9
call LinkContestRoom1_EventScript_15F919
end
@@ -76,7 +76,7 @@ LinkContestRoom1_EventScript_15F630:: @ 815F630
call LinkContestRoom1_EventScript_15F6E6
call LinkContestRoom1_EventScript_15F646
compare 0x4000, 8
- jumpif 0, LinkContestRoom1_EventScript_15F630
+ goto_if 0, LinkContestRoom1_EventScript_15F630
return
LinkContestRoom1_EventScript_15F646:: @ 815F646
@@ -302,73 +302,73 @@ LinkContestRoom1_EventScript_15F919:: @ 815F919
return
LinkContestRoom1_EventScript_15F956:: @ 815F956
- createvsprite 5, 20, 3, 2, 3, 1
- createvsprite 46, 24, 11, 2, 3, 1
+ createvobject 5, 20, 3, 2, 3, 1
+ createvobject 46, 24, 11, 2, 3, 1
return
LinkContestRoom1_EventScript_15F969:: @ 815F969
- createvsprite 45, 0, 2, 3, 3, 4
- createvsprite 66, 1, 2, 4, 3, 4
- createvsprite 55, 2, 2, 7, 3, 4
- createvsprite 46, 3, 2, 8, 3, 4
- createvsprite 5, 10, 12, 3, 3, 3
- createvsprite 20, 11, 12, 4, 3, 3
- createvsprite 24, 12, 12, 7, 3, 3
- createvsprite 12, 13, 12, 8, 3, 3
- createvsprite 47, 20, 3, 2, 3, 1
- createvsprite 46, 24, 11, 2, 3, 1
+ createvobject 45, 0, 2, 3, 3, 4
+ createvobject 66, 1, 2, 4, 3, 4
+ createvobject 55, 2, 2, 7, 3, 4
+ createvobject 46, 3, 2, 8, 3, 4
+ createvobject 5, 10, 12, 3, 3, 3
+ createvobject 20, 11, 12, 4, 3, 3
+ createvobject 24, 12, 12, 7, 3, 3
+ createvobject 12, 13, 12, 8, 3, 3
+ createvobject 47, 20, 3, 2, 3, 1
+ createvobject 46, 24, 11, 2, 3, 1
return
LinkContestRoom1_EventScript_15F9C4:: @ 815F9C4
- createvsprite 45, 0, 2, 3, 3, 4
- createvsprite 66, 1, 2, 4, 3, 4
- createvsprite 55, 2, 2, 7, 3, 4
- createvsprite 48, 3, 2, 8, 3, 4
- createvsprite 5, 10, 12, 3, 3, 3
- createvsprite 20, 11, 12, 4, 3, 3
- createvsprite 24, 12, 12, 7, 3, 3
- createvsprite 45, 13, 12, 8, 3, 3
- createvsprite 22, 20, 3, 2, 3, 1
- createvsprite 23, 20, 6, 2, 3, 1
- createvsprite 34, 20, 7, 2, 3, 1
- createvsprite 46, 24, 8, 2, 3, 1
- createvsprite 48, 24, 11, 2, 3, 1
- createvsprite 11, 25, 3, 9, 3, 2
- createvsprite 35, 26, 4, 9, 3, 2
- createvsprite 17, 27, 5, 9, 3, 2
- createvsprite 41, 28, 9, 9, 3, 2
- createvsprite 38, 29, 10, 9, 3, 2
- createvsprite 83, 30, 11, 9, 3, 2
+ createvobject 45, 0, 2, 3, 3, 4
+ createvobject 66, 1, 2, 4, 3, 4
+ createvobject 55, 2, 2, 7, 3, 4
+ createvobject 48, 3, 2, 8, 3, 4
+ createvobject 5, 10, 12, 3, 3, 3
+ createvobject 20, 11, 12, 4, 3, 3
+ createvobject 24, 12, 12, 7, 3, 3
+ createvobject 45, 13, 12, 8, 3, 3
+ createvobject 22, 20, 3, 2, 3, 1
+ createvobject 23, 20, 6, 2, 3, 1
+ createvobject 34, 20, 7, 2, 3, 1
+ createvobject 46, 24, 8, 2, 3, 1
+ createvobject 48, 24, 11, 2, 3, 1
+ createvobject 11, 25, 3, 9, 3, 2
+ createvobject 35, 26, 4, 9, 3, 2
+ createvobject 17, 27, 5, 9, 3, 2
+ createvobject 41, 28, 9, 9, 3, 2
+ createvobject 38, 29, 10, 9, 3, 2
+ createvobject 83, 30, 11, 9, 3, 2
return
LinkContestRoom1_EventScript_15FA70:: @ 815FA70
- createvsprite 45, 0, 2, 3, 3, 4
- createvsprite 66, 1, 2, 4, 3, 4
- createvsprite 55, 2, 2, 7, 3, 4
- createvsprite 12, 3, 2, 8, 3, 4
- createvsprite 39, 4, 1, 3, 3, 4
- createvsprite 34, 6, 1, 5, 3, 4
- createvsprite 26, 7, 1, 6, 3, 4
- createvsprite 48, 9, 1, 8, 3, 4
- createvsprite 5, 10, 12, 3, 3, 3
- createvsprite 20, 11, 12, 4, 3, 3
- createvsprite 24, 12, 12, 7, 3, 3
- createvsprite 45, 13, 12, 8, 3, 3
- createvsprite 50, 14, 13, 3, 3, 3
- createvsprite 52, 15, 13, 4, 3, 3
- createvsprite 65, 17, 13, 6, 3, 3
- createvsprite 83, 18, 13, 7, 3, 3
- createvsprite 116, 19, 13, 8, 3, 3
- createvsprite 25, 20, 3, 2, 3, 1
- createvsprite 31, 21, 6, 2, 3, 1
- createvsprite 33, 22, 7, 2, 3, 1
- createvsprite 46, 24, 11, 2, 3, 1
- createvsprite 49, 25, 3, 9, 3, 2
- createvsprite 35, 26, 4, 9, 3, 2
- createvsprite 48, 27, 5, 9, 3, 2
- createvsprite 41, 28, 9, 9, 3, 2
- createvsprite 38, 29, 10, 9, 3, 2
- createvsprite 83, 30, 11, 9, 3, 2
+ createvobject 45, 0, 2, 3, 3, 4
+ createvobject 66, 1, 2, 4, 3, 4
+ createvobject 55, 2, 2, 7, 3, 4
+ createvobject 12, 3, 2, 8, 3, 4
+ createvobject 39, 4, 1, 3, 3, 4
+ createvobject 34, 6, 1, 5, 3, 4
+ createvobject 26, 7, 1, 6, 3, 4
+ createvobject 48, 9, 1, 8, 3, 4
+ createvobject 5, 10, 12, 3, 3, 3
+ createvobject 20, 11, 12, 4, 3, 3
+ createvobject 24, 12, 12, 7, 3, 3
+ createvobject 45, 13, 12, 8, 3, 3
+ createvobject 50, 14, 13, 3, 3, 3
+ createvobject 52, 15, 13, 4, 3, 3
+ createvobject 65, 17, 13, 6, 3, 3
+ createvobject 83, 18, 13, 7, 3, 3
+ createvobject 116, 19, 13, 8, 3, 3
+ createvobject 25, 20, 3, 2, 3, 1
+ createvobject 31, 21, 6, 2, 3, 1
+ createvobject 33, 22, 7, 2, 3, 1
+ createvobject 46, 24, 11, 2, 3, 1
+ createvobject 49, 25, 3, 9, 3, 2
+ createvobject 35, 26, 4, 9, 3, 2
+ createvobject 48, 27, 5, 9, 3, 2
+ createvobject 41, 28, 9, 9, 3, 2
+ createvobject 38, 29, 10, 9, 3, 2
+ createvobject 83, 30, 11, 9, 3, 2
return
LinkContestRoom1_EventScript_15FB64:: @ 815FB64
@@ -381,25 +381,25 @@ LinkContestRoom1_EventScript_15FB64:: @ 815FB64
return
LinkContestRoom1_EventScript_15FBA1:: @ 815FBA1
- inccounter GAME_STAT_ENTERED_CONTEST
+ incrementgamestat GAME_STAT_ENTERED_CONTEST
warp VerdanturfTown_ContestLobby, 255, 5, 4
waitstate
end
LinkContestRoom1_EventScript_15FBAD:: @ 815FBAD
- inccounter GAME_STAT_ENTERED_CONTEST
+ incrementgamestat GAME_STAT_ENTERED_CONTEST
warp FallarborTown_ContestLobby, 255, 5, 4
waitstate
end
LinkContestRoom1_EventScript_15FBB9:: @ 815FBB9
- inccounter GAME_STAT_ENTERED_CONTEST
+ incrementgamestat GAME_STAT_ENTERED_CONTEST
warp SlateportCity_ContestLobby, 255, 5, 4
waitstate
end
LinkContestRoom1_EventScript_15FBC5:: @ 815FBC5
- inccounter GAME_STAT_ENTERED_CONTEST
+ incrementgamestat GAME_STAT_ENTERED_CONTEST
warp LilycoveCity_ContestLobby, 255, 6, 4
waitstate
end
@@ -413,11 +413,11 @@ FallarborTown_ContestLobby_EventScript_15FBDB:: @ 815FBDB
LilycoveCity_ContestLobby_EventScript_15FBDB:: @ 815FBDB
SlateportCity_ContestLobby_EventScript_15FBDB:: @ 815FBDB
VerdanturfTown_ContestLobby_EventScript_15FBDB:: @ 815FBDB
- checkgender
+ checkplayergender
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_15FBF3
+ goto_if_eq FallarborTown_ContestLobby_EventScript_15FBF3
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_15FBF9
+ goto_if_eq FallarborTown_ContestLobby_EventScript_15FBF9
return
FallarborTown_ContestLobby_EventScript_15FBF3:: @ 815FBF3
diff --git a/data/scripts/maps/VerdanturfTown.inc b/data/scripts/maps/VerdanturfTown.inc
index 610643823..3e8f02302 100644
--- a/data/scripts/maps/VerdanturfTown.inc
+++ b/data/scripts/maps/VerdanturfTown.inc
@@ -12,17 +12,17 @@ VerdanturfTown_EventScript_14E866:: @ 814E866
lock
faceplayer
checkflag 199
- jumpeq VerdanturfTown_EventScript_14E885
+ goto_if_eq VerdanturfTown_EventScript_14E885
msgbox VerdanturfTown_Text_16CAEB, 4
- move 2, VerdanturfTown_Movement_1A083D
- waitmove 0
+ applymovement 2, VerdanturfTown_Movement_1A083D
+ waitmovement 0
release
end
VerdanturfTown_EventScript_14E885:: @ 814E885
msgbox VerdanturfTown_Text_16CBCE, 4
- move 2, VerdanturfTown_Movement_1A083D
- waitmove 0
+ applymovement 2, VerdanturfTown_Movement_1A083D
+ waitmovement 0
release
end
@@ -38,7 +38,7 @@ VerdanturfTown_EventScript_14E8AB:: @ 814E8AB
lock
faceplayer
checkflag 199
- jumpeq VerdanturfTown_EventScript_14E8C0
+ goto_if_eq VerdanturfTown_EventScript_14E8C0
msgbox VerdanturfTown_Text_16CD4D, 4
release
end
diff --git a/data/scripts/maps/VerdanturfTown_ContestLobby.inc b/data/scripts/maps/VerdanturfTown_ContestLobby.inc
index 8fd4016d1..8462892e6 100644
--- a/data/scripts/maps/VerdanturfTown_ContestLobby.inc
+++ b/data/scripts/maps/VerdanturfTown_ContestLobby.inc
@@ -20,28 +20,28 @@ VerdanturfTown_ContestLobby_EventScript_153D76:: @ 8153D76
VerdanturfTown_ContestLobby_EventScript_153DA1:: @ 8153DA1
lockall
- move 1, VerdanturfTown_ContestLobby_Movement_153E25
- waitmove 0
- playsfx 71
+ applymovement 1, VerdanturfTown_ContestLobby_Movement_153E25
+ waitmovement 0
+ playse 71
setmaptile 4, 2, 545, 1
setmaptile 4, 3, 609, 1
special DrawWholeMapView
- move 1, VerdanturfTown_ContestLobby_Movement_153E28
- waitmove 0
- playsfx 71
+ applymovement 1, VerdanturfTown_ContestLobby_Movement_153E28
+ waitmovement 0
+ playse 71
setmaptile 4, 2, 721, 1
setmaptile 4, 3, 729, 1
special DrawWholeMapView
- pause 20
- move 1, VerdanturfTown_ContestLobby_Movement_153E35
- waitmove 0
- move 255, VerdanturfTown_ContestLobby_Movement_153E23
- waitmove 0
+ delay 20
+ applymovement 1, VerdanturfTown_ContestLobby_Movement_153E35
+ waitmovement 0
+ applymovement 255, VerdanturfTown_ContestLobby_Movement_153E23
+ waitmovement 0
msgbox VerdanturfTown_ContestLobby_Text_1A6832, 4
- closebutton
- move 1, VerdanturfTown_ContestLobby_Movement_153E2C
- move 255, VerdanturfTown_ContestLobby_Movement_153E19
- waitmove 0
+ closemessage
+ applymovement 1, VerdanturfTown_ContestLobby_Movement_153E2C
+ applymovement 255, VerdanturfTown_ContestLobby_Movement_153E19
+ waitmovement 0
releaseall
return
@@ -90,7 +90,7 @@ VerdanturfTown_ContestLobby_Movement_153E35:: @ 8153E35
VerdanturfTown_ContestLobby_EventScript_153E37:: @ 8153E37
lockall
fadescreen 1
- showcontestwinner 1
+ drawcontestwinner 1
releaseall
end
@@ -102,11 +102,11 @@ VerdanturfTown_ContestLobby_EventScript_153E47:: @ 8153E47
lock
faceplayer
checkflag 235
- jumpeq VerdanturfTown_ContestLobby_EventScript_153E76
+ goto_if_eq VerdanturfTown_ContestLobby_EventScript_153E76
msgbox VerdanturfTown_ContestLobby_Text_177DEC, 4
giveitem ITEM_TM45
compare RESULT, 0
- jumpeq VerdanturfTown_ContestLobby_EventScript_1A029B
+ goto_if_eq VerdanturfTown_ContestLobby_EventScript_1A029B
setflag 235
release
end
@@ -124,6 +124,6 @@ VerdanturfTown_ContestLobby_EventScript_153E89:: @ 8153E89
lockall
special ShowBerryBlenderRecordWindow
waitbutton
- hidebox 0, 0, 29, 19
+ erasebox 0, 0, 29, 19
releaseall
end
diff --git a/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc b/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc
index 5453fb42c..1cfa785d3 100644
--- a/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc
+++ b/data/scripts/maps/VerdanturfTown_FriendshipRatersHouse.inc
@@ -5,7 +5,7 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_154030:: @ 8154030
lock
faceplayer
msgbox VerdanturfTown_FriendshipRatersHouse_Text_178A9C, 4
- specialval RESULT, GetLeadMonFriendshipScore
+ specialvar RESULT, GetLeadMonFriendshipScore
switch RESULT
case 0, VerdanturfTown_FriendshipRatersHouse_EventScript_154093
case 1, VerdanturfTown_FriendshipRatersHouse_EventScript_15409D
@@ -55,8 +55,8 @@ VerdanturfTown_FriendshipRatersHouse_EventScript_1540CF:: @ 81540CF
VerdanturfTown_FriendshipRatersHouse_EventScript_1540D9:: @ 81540D9
lock
faceplayer
- checksound
- pokecry SPECIES_PIKACHU, 0
+ waitse
+ playpokecry SPECIES_PIKACHU, 0
msgbox VerdanturfTown_FriendshipRatersHouse_Text_178CFD, 4
waitpokecry
release
diff --git a/data/scripts/maps/VerdanturfTown_Mart.inc b/data/scripts/maps/VerdanturfTown_Mart.inc
index 4227dc8b1..db72de227 100644
--- a/data/scripts/maps/VerdanturfTown_Mart.inc
+++ b/data/scripts/maps/VerdanturfTown_Mart.inc
@@ -5,7 +5,7 @@ VerdanturfTown_Mart_EventScript_153EBC:: @ 8153EBC
lock
faceplayer
message VerdanturfTown_Mart_Text_1A0BE4
- waittext
+ waitmessage
pokemart VerdanturfTown_Mart_Items
msgbox VerdanturfTown_Mart_Text_1A0C02, 4
release
diff --git a/data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc b/data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc
index e0fee3fb8..a0b1f87de 100644
--- a/data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc
+++ b/data/scripts/maps/VerdanturfTown_PokemonCenter_1F.inc
@@ -11,7 +11,7 @@ PacifidlogTown_PokemonCenter_1F_EventScript_153F18:: @ 8153F18
VerdanturfTown_PokemonCenter_1F_EventScript_153F18:: @ 8153F18
setvar 0x800b, 1
call VerdanturfTown_PokemonCenter_1F_EventScript_19FD5B
- waittext
+ waitmessage
waitbutton
release
end
diff --git a/data/scripts/maps/VerdanturfTown_WandasHouse.inc b/data/scripts/maps/VerdanturfTown_WandasHouse.inc
index 80bd6151d..fad64292b 100644
--- a/data/scripts/maps/VerdanturfTown_WandasHouse.inc
+++ b/data/scripts/maps/VerdanturfTown_WandasHouse.inc
@@ -5,7 +5,7 @@ VerdanturfTown_WandasHouse_EventScript_153F5B:: @ 8153F5B
lock
faceplayer
checkflag 193
- jumpeq VerdanturfTown_WandasHouse_EventScript_153F73
+ goto_if_eq VerdanturfTown_WandasHouse_EventScript_153F73
msgbox VerdanturfTown_WandasHouse_Text_1783F6, 4
setflag 193
release
@@ -20,9 +20,9 @@ VerdanturfTown_WandasHouse_EventScript_153F7D:: @ 8153F7D
lock
faceplayer
checkflag 126
- jumpeq VerdanturfTown_WandasHouse_EventScript_153FA5
+ goto_if_eq VerdanturfTown_WandasHouse_EventScript_153FA5
checkflag 1213
- jumpeq VerdanturfTown_WandasHouse_EventScript_153F9B
+ goto_if_eq VerdanturfTown_WandasHouse_EventScript_153F9B
msgbox VerdanturfTown_WandasHouse_Text_17859A, 4
release
end
@@ -45,9 +45,9 @@ VerdanturfTown_WandasHouse_EventScript_153FB8:: @ 8153FB8
lock
faceplayer
checkflag 1213
- jumpeq VerdanturfTown_WandasHouse_EventScript_153FE0
+ goto_if_eq VerdanturfTown_WandasHouse_EventScript_153FE0
checkflag 190
- jumpeq VerdanturfTown_WandasHouse_EventScript_153FD6
+ goto_if_eq VerdanturfTown_WandasHouse_EventScript_153FD6
msgbox VerdanturfTown_WandasHouse_Text_1787FB, 4
release
end
@@ -66,11 +66,11 @@ VerdanturfTown_WandasHouse_EventScript_153FEA:: @ 8153FEA
lock
faceplayer
checkflag 126
- jumpeq VerdanturfTown_WandasHouse_EventScript_154025
+ goto_if_eq VerdanturfTown_WandasHouse_EventScript_154025
checkflag 1213
- jumpeq VerdanturfTown_WandasHouse_EventScript_15401B
+ goto_if_eq VerdanturfTown_WandasHouse_EventScript_15401B
checkflag 199
- jumpeq VerdanturfTown_WandasHouse_EventScript_154011
+ goto_if_eq VerdanturfTown_WandasHouse_EventScript_154011
msgbox VerdanturfTown_WandasHouse_Text_1788B1, 4
release
end
diff --git a/data/scripts/maps/VictoryRoad_1F.inc b/data/scripts/maps/VictoryRoad_1F.inc
index f64ca20ab..fe775d793 100644
--- a/data/scripts/maps/VictoryRoad_1F.inc
+++ b/data/scripts/maps/VictoryRoad_1F.inc
@@ -4,7 +4,7 @@ VictoryRoad_1F_MapScripts:: @ 815DE83
VictoryRoad_1F_MapScript1_15DE89:: @ 815DE89
checkflag 126
- callif 1, VictoryRoad_1F_EventScript_15DE93
+ call_if 1, VictoryRoad_1F_EventScript_15DE93
end
VictoryRoad_1F_EventScript_15DE93:: @ 815DE93
@@ -13,36 +13,36 @@ VictoryRoad_1F_EventScript_15DE93:: @ 815DE93
VictoryRoad_1F_EventScript_15DE97:: @ 815DE97
lockall
- reappear 4
- move 4, VictoryRoad_1F_Movement_15DF07
- waitmove 0
- jump VictoryRoad_1F_EventScript_15DED3
+ addobject 4
+ applymovement 4, VictoryRoad_1F_Movement_15DF07
+ waitmovement 0
+ goto VictoryRoad_1F_EventScript_15DED3
end
VictoryRoad_1F_EventScript_15DEAB:: @ 815DEAB
lockall
- reappear 4
- move 4, VictoryRoad_1F_Movement_15DF13
- waitmove 0
- jump VictoryRoad_1F_EventScript_15DED3
+ addobject 4
+ applymovement 4, VictoryRoad_1F_Movement_15DF13
+ waitmovement 0
+ goto VictoryRoad_1F_EventScript_15DED3
end
VictoryRoad_1F_EventScript_15DEBF:: @ 815DEBF
lockall
- reappear 4
- move 4, VictoryRoad_1F_Movement_15DF1E
- waitmove 0
- jump VictoryRoad_1F_EventScript_15DED3
+ addobject 4
+ applymovement 4, VictoryRoad_1F_Movement_15DF1E
+ waitmovement 0
+ goto VictoryRoad_1F_EventScript_15DED3
end
VictoryRoad_1F_EventScript_15DED3:: @ 815DED3
- move 255, VictoryRoad_1F_Movement_1A083F
- waitmove 0
+ applymovement 255, VictoryRoad_1F_Movement_1A083F
+ waitmovement 0
msgbox VictoryRoad_1F_Text_19782B, 4
trainerbattle 3, OPPONENT_WALLY_1, 0, VictoryRoad_1F_Text_197943
msgbox VictoryRoad_1F_Text_197967, 4
clearflag 858
- moveoffscreen 4
+ moveobjectoffscreen 4
setflag 126
setvar 0x40c3, 1
releaseall
@@ -93,9 +93,9 @@ VictoryRoad_1F_EventScript_15DF28:: @ 815DF28
VictoryRoad_1F_EventScript_15DF31:: @ 815DF31
trainerbattle 0, OPPONENT_WALLY_3, 0, VictoryRoad_1F_Text_1979BA, VictoryRoad_1F_Text_197A23
- specialval RESULT, sub_8082C68
+ specialvar RESULT, sub_8082C68
compare RESULT, 1
- jumpeq VictoryRoad_1F_EventScript_15DF58
+ goto_if_eq VictoryRoad_1F_EventScript_15DF58
msgbox VictoryRoad_1F_Text_197A47, 6
end
diff --git a/data/scripts/mauville_man.inc b/data/scripts/mauville_man.inc
new file mode 100644
index 000000000..402afae23
--- /dev/null
+++ b/data/scripts/mauville_man.inc
@@ -0,0 +1,357 @@
+@ From mauville_old_man.h
+@ TODO: Put these in a header
+
+MAUVILLE_MAN_BARD = 0
+MAUVILLE_MAN_HIPSTER = 1
+MAUVILLE_MAN_TRADER = 2
+MAUVILLE_MAN_STORYTELLER = 3
+MAUVILLE_MAN_GIDDY = 4
+
+MauvilleCity_PokemonCenter_1F_EventScript_1AE744:: @ 81AE744
+ special ScrSpecial_GetCurrentMauvilleMan
+ switch RESULT
+ case MAUVILLE_MAN_BARD, SpeakToBard
+ case MAUVILLE_MAN_HIPSTER, SpeakToHipster
+ case MAUVILLE_MAN_TRADER, SpeakToTrader
+ case MAUVILLE_MAN_STORYTELLER, SpeakToStoryteller
+ case MAUVILLE_MAN_GIDDY, SpeakToGiddy
+ end
+
+
+@-------------------------------------------------------------------------------
+@ Bard
+@-------------------------------------------------------------------------------
+
+SpeakToBard:
+ lock
+ faceplayer
+ msgbox gTextBard_HiImTheBard, MSGBOX_YESNO
+ compare RESULT, YES
+ goto_if_eq yes_hear_song
+ compare RESULT, NO
+ goto_if_eq dont_hear_song
+ end
+
+yes_hear_song:
+ setvar 0x8004, 0
+ @ Give the player ear rape
+ special ScrSpecial_PlayBardSong
+ delay 60
+ special ScrSpecial_HasBardSongBeenChanged
+ compare RESULT, FALSE
+ @ Prompt new lyrics only if song hasn't been changed
+ goto_if_eq prompt_write_lyrics
+ msgbox gTextBard_OhWhatAMovingSong, 4
+ release
+ end
+
+dont_hear_song:
+ msgbox gTextBard_OhYouveLeftMe, 4
+ release
+ end
+
+prompt_write_lyrics:
+ msgbox gTextBard_SoHowDoYouLikeMySong, MSGBOX_YESNO
+ compare RESULT, YES
+ goto_if_eq write_lyrics
+ compare RESULT, NO
+ goto_if_eq dont_write_lyrics
+ end
+
+write_lyrics:
+ setvar 0x8004, 6
+ call MauvilleCity_PokemonCenter_1F_EventScript_1A00F3
+ lock
+ faceplayer
+ compare RESULT, NO
+ goto_if_eq dont_write_lyrics
+ msgbox gTextBard_ThankYouKindly, 4
+ setvar 0x8004, 1
+ @ Give the player ear rape again
+ special ScrSpecial_PlayBardSong
+ delay 60
+ msgbox gTextBard_WasThatHowYouWanted, MSGBOX_YESNO
+ compare RESULT, NO
+ goto_if_eq write_lyrics @ Keep looping until player responds YES
+ special ScrSpecial_SaveBardSongLyrics
+ msgbox gTextBard_OkayThatsIt, 4
+ release
+ end
+
+dont_write_lyrics:
+ msgbox gTextBard_OhYouveLeftMe2, 4
+ release
+ end
+
+
+@-------------------------------------------------------------------------------
+@ Hipster
+@-------------------------------------------------------------------------------
+
+SpeakToHipster:
+ lock
+ faceplayer
+ setflag 2054
+ msgbox gTextHipster_TheyCallMeTheHipster, 4
+ special ScrSpecial_GetHipsterSpokenFlag
+ compare RESULT, FALSE
+ goto_if_eq hipster_first_time
+ msgbox gTextHipster_TaughtYouAlready, 4
+ release
+ end
+
+hipster_first_time:
+ special ScrSpecial_HipsterTeachWord
+ compare RESULT, TRUE @ TRUE if player learned a new word
+ goto_if_eq teach_new_word
+ msgbox gTextHipster_YouAlreadyKnowALot, 4
+ release
+ end
+
+teach_new_word:
+ msgbox gTextHipster_HaveYouHeardAbout, 4
+ special ScrSpecial_SetHipsterSpokenFlag
+ release
+ end
+
+
+@-------------------------------------------------------------------------------
+@ Trader
+@-------------------------------------------------------------------------------
+
+ .include "data/text/trader.inc"
+
+SpeakToTrader:
+ lock
+ faceplayer
+ msgbox gTextTrader_Introduction, MSGBOX_YESNO
+ compare RESULT, NO
+ goto_if_eq dont_want_to_trade
+ special ScrSpecial_GetTraderTradedFlag
+ compare RESULT, TRUE
+ goto_if_eq already_traded
+ message gTextTrader_MenuPrompt
+ waitmessage
+ goto do_trader_menu_get
+ end
+
+dont_want_to_trade:
+ msgbox gTextTrader_FeelUnwanted1, 2
+ end
+
+already_traded:
+ msgbox gTextTrader_TradedAlready, 2
+ end
+
+do_trader_menu_get:
+ special ScrSpecial_TraderMenuGetDecoration
+ waitstate
+ compare 0x8004, 0
+ goto_if_eq cancelled_get_menu
+ compare 0x8004, 65535
+ goto_if_eq rare_item_cant_trade_away
+ msgbox gTextTrader_ItemOnceBelongedTo, MSGBOX_YESNO
+ compare RESULT, NO
+ goto_if_eq dont_want_item
+ special ScrSpecial_DoesPlayerHaveNoDecorations
+ compare RESULT, TRUE
+ goto_if_eq player_has_no_decorations
+ goto do_trader_menu_give
+ end
+
+cancelled_get_menu:
+ msgbox gTextTrader_DontWantAnything, 2
+ end
+
+rare_item_cant_trade_away:
+ message gTextTrader_ICantTradeThatOneAway
+ waitmessage
+ goto do_trader_menu_get
+ end
+
+dont_want_item:
+ message gTextTrader_MenuPrompt
+ waitmessage
+ goto do_trader_menu_get
+ end
+
+player_has_no_decorations:
+ msgbox gTextTrader_YouDontHaveDecorations, 2
+ end
+
+do_trader_menu_give:
+ msgbox gTextTrader_PickDecorationYoullTrade, 4
+ special ScrSpecial_TraderMenuGiveDecoration
+ waitstate
+ compare 0x8006, 0
+ goto_if_eq cancelled_give_menu
+ compare 0x8006, 65535
+ goto_if_eq decoration_is_in_use
+ special ScrSpecial_IsDecorationFull
+ compare RESULT, 1
+ goto_if_eq decorations_full
+ msgbox gTextTrader_SoWellTrade, MSGBOX_YESNO
+ compare RESULT, NO
+ goto_if_eq do_trader_menu_give
+ special ScrSpecial_TraderDoDecorationTrade
+ msgbox gTextTrader_ThenWellTrade, 2
+ end
+
+cancelled_give_menu:
+ msgbox gTextTrader_FeelUnwanted2, 2
+ end
+
+decoration_is_in_use:
+ msgbox gTextTrader_InUseYouCantTradeIt, 4
+ goto do_trader_menu_give
+ end
+
+decorations_full:
+ msgbox gTextTrader_NoRoomForThis, 2
+ end
+
+
+@-------------------------------------------------------------------------------
+@ Storyteller
+@-------------------------------------------------------------------------------
+
+ .include "data/text/storyteller.inc"
+
+SpeakToStoryteller:
+ setvar 0x8008, 0
+ setvar 0x8009, 0
+ setvar 0x800a, 0
+ setvar 0x800b, 0
+ lock
+ faceplayer
+ msgbox gTextStoryteller_Introduction, MSGBOX_YESNO
+ compare RESULT, NO
+ goto_if_eq dont_hear_story
+ specialvar RESULT, ScrSpecial_StorytellerGetFreeStorySlot
+ compare RESULT, 0 @ If slot is 0, then the list is empty
+ goto_if_eq no_stories_recorded
+choose_story:
+ message gTextStoryteller_WhichTale
+ waitmessage
+ special ScrSpecial_StorytellerStoryListMenu
+ waitstate
+ compare RESULT, FALSE
+ goto_if_eq cancel_story_menu
+ setvar 0x8008, 1
+ special ScrSpecial_StorytellerDisplayStory
+ waitmessage
+ waitbutton
+ specialvar RESULT, ScrSpecial_StorytellerUpdateStat
+ compare RESULT, FALSE
+ goto_if_eq no_stat_update
+ goto stat_update
+cancel_story_menu:
+ compare 0x8008, 0
+ goto_if_eq dont_hear_story
+ goto yes_hear_story
+no_stat_update:
+ msgbox gTextStoryteller_CouldThereBeOtherTrainers, 4
+ msgbox gTextStoryteller_HearAnotherLegendaryTale, MSGBOX_YESNO
+ compare RESULT, YES
+ goto_if_eq choose_story
+yes_hear_story:
+ specialvar RESULT, ScrSpecial_HasStorytellerAlreadyRecorded
+ compare RESULT, TRUE
+ goto_if_eq cant_record_story @ already recorded story
+ specialvar RESULT, ScrSpecial_StorytellerGetFreeStorySlot
+ compare RESULT, 4
+ goto_if_eq cant_record_story @ story list is full
+ goto prompt_record_story
+no_stories_recorded:
+ msgbox gTextStoryteller_ButIKnowOfNoLegendaryTrainers, 4
+prompt_record_story:
+ msgbox gTextStoryteller_HaveYouAnyTales, MSGBOX_YESNO
+ compare RESULT, NO
+ goto_if_eq dont_hear_story
+ specialvar RESULT, ScrSpecial_StorytellerInitializeRandomStat
+ compare RESULT, TRUE
+ goto_if_eq stat_update
+ msgbox gTextStoryteller_ImNotSatisfied, 4
+ closemessage
+ release
+ end
+
+stat_update:
+ msgbox gTextStoryteller_BirthOfANewLegend, 4
+ closemessage
+ release
+ end
+
+dont_hear_story:
+ msgbox gTextStoryteller_OhIFeelStifled, 4
+ closemessage
+ release
+ end
+
+cant_record_story:
+ msgbox gTextStoryteller_WishMorePeopleWould, 4
+ closemessage
+ release
+ end
+
+
+@-------------------------------------------------------------------------------
+@ Giddy
+@-------------------------------------------------------------------------------
+
+ .include "data/text/giddy.inc"
+
+SpeakToGiddy:
+ lock
+ faceplayer
+ msgbox gTextGiddy_Introduction, MSGBOX_YESNO
+ compare RESULT, YES
+ goto_if_eq yes_hear_giddy
+ compare RESULT, NO
+ goto_if_eq dont_hear_giddy
+ end
+
+yes_hear_giddy:
+ special ScrSpecial_GiddyShouldTellAnotherTale
+ compare RESULT, TRUE
+ goto_if_eq tell_giddy_tale
+ compare RESULT, FALSE
+ goto_if_eq bye_bye
+ end
+
+tell_another_giddy_tale:
+ special ScrSpecial_GiddyShouldTellAnotherTale
+ compare RESULT, TRUE
+ goto_if_eq also_i_was_thinking
+ compare RESULT, FALSE
+ goto_if_eq bye_bye
+ end
+
+also_i_was_thinking:
+ msgbox gTextGiddy_AlsoIWasThinking, 4
+ goto tell_giddy_tale
+ end
+
+tell_giddy_tale:
+ special ScrSpecial_GenerateGiddyLine
+ special ShowFieldMessageStringVar4
+ waitmessage
+ yesnobox 20, 8
+ compare RESULT, 1
+ goto_if_eq tell_another_giddy_tale
+ compare RESULT, 0
+ goto_if_eq tell_another_giddy_tale
+ end
+
+dont_hear_giddy:
+ msgbox gTextGiddy_YouveDeflatedMe, 4
+ release
+ end
+
+bye_bye:
+ msgbox gTextGiddy_ByeBye, 4
+ release
+ end
+
+ .include "data/text/bard.inc"
+ .include "data/text/hipster.inc"
diff --git a/data/scripts/mystery_event_club.inc b/data/scripts/mystery_event_club.inc
index 5fd68beca..df097fc19 100644
--- a/data/scripts/mystery_event_club.inc
+++ b/data/scripts/mystery_event_club.inc
@@ -2,9 +2,9 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1B14:: @ 81B1B14
lock
faceplayer
checkflag 2053
- jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BDB
+ goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BDB
msgbox PetalburgCity_PokemonCenter_1F_Text_1B1C97, 4
- jump PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D
+ goto PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D
end
PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D:: @ 81B1B2D
@@ -19,22 +19,22 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D:: @ 81B1B2D
PetalburgCity_PokemonCenter_1F_EventScript_1B1B6C:: @ 81B1B6C
msgbox PetalburgCity_PokemonCenter_1F_Text_1B1D3A, 4
- jump PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D
+ goto PetalburgCity_PokemonCenter_1F_EventScript_1B1B2D
end
PetalburgCity_PokemonCenter_1F_EventScript_1B1B7A:: @ 81B1B7A
msgbox PetalburgCity_PokemonCenter_1F_Text_1B1F7B, 4
- closebutton
+ closemessage
setvar 0x8004, 0
call PetalburgCity_PokemonCenter_1F_EventScript_1A00F3
lock
faceplayer
compare 0x8004, 1
- callif 1, PetalburgCity_PokemonCenter_1F_EventScript_1B1C77
+ call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_1B1C77
compare RESULT, 0
- jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1
+ goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1
compare RESULT, 1
- jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB
+ goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB
end
PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1:: @ 81B1BB1
@@ -45,8 +45,8 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1:: @ 81B1BB1
PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB:: @ 81B1BBB
setvar 0x8004, 0
special sub_80EB7C4
- waittext
- pause 80
+ waitmessage
+ delay 80
msgbox PetalburgCity_PokemonCenter_1F_Text_1B2137, 4
release
end
@@ -58,7 +58,7 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1BD1:: @ 81B1BD1
PetalburgCity_PokemonCenter_1F_EventScript_1B1BDB:: @ 81B1BDB
msgbox PetalburgCity_PokemonCenter_1F_Text_1B202F, 4
- jump PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9
+ goto PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9
end
PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9:: @ 81B1BE9
@@ -73,22 +73,22 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9:: @ 81B1BE9
PetalburgCity_PokemonCenter_1F_EventScript_1B1C28:: @ 81B1C28
msgbox PetalburgCity_PokemonCenter_1F_Text_1B1D3A, 4
- jump PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9
+ goto PetalburgCity_PokemonCenter_1F_EventScript_1B1BE9
end
PetalburgCity_PokemonCenter_1F_EventScript_1B1C36:: @ 81B1C36
msgbox PetalburgCity_PokemonCenter_1F_Text_1B207F, 4
- closebutton
+ closemessage
setvar 0x8004, 0
call PetalburgCity_PokemonCenter_1F_EventScript_1A00F3
lock
faceplayer
compare 0x8004, 1
- callif 1, PetalburgCity_PokemonCenter_1F_EventScript_1B1C77
+ call_if 1, PetalburgCity_PokemonCenter_1F_EventScript_1B1C77
compare RESULT, 0
- jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1
+ goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BB1
compare RESULT, 1
- jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB
+ goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1BBB
end
PetalburgCity_PokemonCenter_1F_EventScript_1B1C6D:: @ 81B1C6D
@@ -98,9 +98,9 @@ PetalburgCity_PokemonCenter_1F_EventScript_1B1C6D:: @ 81B1C6D
PetalburgCity_PokemonCenter_1F_EventScript_1B1C77:: @ 81B1C77
checkflag 2059
- jumpif 0, PetalburgCity_PokemonCenter_1F_EventScript_1B1C96
+ goto_if 0, PetalburgCity_PokemonCenter_1F_EventScript_1B1C96
checkflag 2124
- jumpeq PetalburgCity_PokemonCenter_1F_EventScript_1B1C96
+ goto_if_eq PetalburgCity_PokemonCenter_1F_EventScript_1B1C96
setflag 2124
msgbox PetalburgCity_PokemonCenter_1F_Text_1B21CC, 3
release
diff --git a/data/scripts/players_house.inc b/data/scripts/players_house.inc
index ca4b2bdb9..69a4dc3e9 100644
--- a/data/scripts/players_house.inc
+++ b/data/scripts/players_house.inc
@@ -6,29 +6,29 @@ LittlerootTown_MaysHouse_2F_EventScript_1B6950:: @ 81B6950
LittlerootTown_BrendansHouse_1F_EventScript_1B6956:: @ 81B6956
LittlerootTown_MaysHouse_1F_EventScript_1B6956:: @ 81B6956
msgbox LittlerootTown_BrendansHouse_1F_Text_172429, 4
- move 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0839
- waitmove 0
+ applymovement 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0839
+ waitmovement 0
compare 0x8005, 0
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B699F
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B699F
compare 0x8005, 1
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B69AA
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B69AA
msgbox LittlerootTown_BrendansHouse_1F_Text_172453, 4
- closebutton
+ closemessage
setvar 0x4092, 4
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1B69B5
- move 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0841
- waitmove 0
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B69B5
+ applymovement 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0841
+ waitmovement 0
releaseall
end
LittlerootTown_BrendansHouse_1F_EventScript_1B699F:: @ 81B699F
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1A0843
- waitmove 0
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A0843
+ waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_1B69AA:: @ 81B69AA
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F
- waitmove 0
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F
+ waitmovement 0
return
LittlerootTown_BrendansHouse_1F_Movement_1B69B5:: @ 81B69B5
@@ -38,76 +38,76 @@ LittlerootTown_BrendansHouse_1F_Movement_1B69B5:: @ 81B69B5
LittlerootTown_BrendansHouse_1F_EventScript_1B69B7:: @ 81B69B7
LittlerootTown_MaysHouse_1F_EventScript_1B69B7:: @ 81B69B7
msgbox LittlerootTown_BrendansHouse_1F_Text_172531, 4
- closebutton
- move 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0841
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CDC
- waitmove 0
+ closemessage
+ applymovement 0x8004, LittlerootTown_BrendansHouse_1F_Movement_1A0841
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CDC
+ waitmovement 0
releaseall
end
LittlerootTown_BrendansHouse_2F_EventScript_1B69D3:: @ 81B69D3
lockall
setvar 0x8004, 0
- jump LittlerootTown_BrendansHouse_2F_EventScript_1B69EB
+ goto LittlerootTown_BrendansHouse_2F_EventScript_1B69EB
end
LittlerootTown_MaysHouse_2F_EventScript_1B69DF:: @ 81B69DF
lockall
setvar 0x8004, 1
- jump LittlerootTown_MaysHouse_2F_EventScript_1B69EB
+ goto LittlerootTown_MaysHouse_2F_EventScript_1B69EB
end
LittlerootTown_BrendansHouse_2F_EventScript_1B69EB:: @ 81B69EB
LittlerootTown_MaysHouse_2F_EventScript_1B69EB:: @ 81B69EB
checkflag 81
- jumpeq LittlerootTown_BrendansHouse_2F_EventScript_1B6A91
+ goto_if_eq LittlerootTown_BrendansHouse_2F_EventScript_1B6A91
msgbox LittlerootTown_BrendansHouse_2F_Text_172E18, 4
call LittlerootTown_BrendansHouse_2F_EventScript_1B6A9B
- pause 30
+ delay 30
setvar 0x4092, 6
setflag 81
setflag 754
setflag 755
- checkgender
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6A31
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6A31
compare RESULT, 1
- callif 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6A61
- playsfx 9
- disappear 0x8008
+ call_if 1, LittlerootTown_BrendansHouse_2F_EventScript_1B6A61
+ playse 9
+ removeobject 0x8008
releaseall
end
LittlerootTown_BrendansHouse_2F_EventScript_1B6A31:: @ 81B6A31
setvar 0x8008, 14
- reappear 0x8008
- move 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AA2
- waitmove 0
- move 255, LittlerootTown_BrendansHouse_2F_Movement_1A0843
- waitmove 0
+ addobject 0x8008
+ applymovement 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AA2
+ waitmovement 0
+ applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_1A0843
+ waitmovement 0
msgbox LittlerootTown_BrendansHouse_2F_Text_172E4C, 4
- closebutton
- move 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AA9
- waitmove 0
+ closemessage
+ applymovement 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AA9
+ waitmovement 0
return
LittlerootTown_BrendansHouse_2F_EventScript_1B6A61:: @ 81B6A61
setvar 0x8008, 14
- reappear 0x8008
- move 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AAD
- waitmove 0
- move 255, LittlerootTown_BrendansHouse_2F_Movement_1A083F
- waitmove 0
+ addobject 0x8008
+ applymovement 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AAD
+ waitmovement 0
+ applymovement 255, LittlerootTown_BrendansHouse_2F_Movement_1A083F
+ waitmovement 0
msgbox LittlerootTown_BrendansHouse_2F_Text_172E4C, 4
- closebutton
- move 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AB4
- waitmove 0
+ closemessage
+ applymovement 0x8008, LittlerootTown_BrendansHouse_2F_Movement_1B6AB4
+ waitmovement 0
return
LittlerootTown_BrendansHouse_2F_EventScript_1B6A91:: @ 81B6A91
- inccounter GAME_STAT_CHECKED_CLOCK
+ incrementgamestat GAME_STAT_CHECKED_CLOCK
fadescreen 1
- special sub_810D6B8
+ special ScrSpecial_ViewWallClock
waitstate
releaseall
end
@@ -155,75 +155,75 @@ LittlerootTown_MaysHouse_1F_EventScript_1B6AB8:: @ 81B6AB8
end
LittlerootTown_BrendansHouse_1F_EventScript_1B6ABF:: @ 81B6ABF
- move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0843
- waitmove 0
+ applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0843
+ waitmovement 0
call LittlerootTown_BrendansHouse_1F_EventScript_1B6B9D
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CCC
- waitmove 0
- playmusic 453, 0
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CCC
+ waitmovement 0
+ playbgm 453, 0
msgbox LittlerootTown_BrendansHouse_1F_Text_1725C9, 4
- closebutton
- move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1B6BDB
- waitmove 0
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CD2
- waitmove 0
+ closemessage
+ applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1B6BDB
+ waitmovement 0
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6CD2
+ waitmovement 0
call LittlerootTown_BrendansHouse_1F_EventScript_1B6BBE
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F
- waitmove 0
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A083F
+ waitmovement 0
msgbox LittlerootTown_BrendansHouse_1F_Text_1725FE, 4
msgbox LittlerootTown_BrendansHouse_1F_Text_172644, 4
- closebutton
+ closemessage
setvar 0x4001, 1
- move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1B6BE1
- waitmove 0
- jump LittlerootTown_BrendansHouse_1F_EventScript_1B6AB8
+ applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1B6BE1
+ waitmovement 0
+ goto LittlerootTown_BrendansHouse_1F_EventScript_1B6AB8
end
LittlerootTown_MaysHouse_1F_EventScript_1B6B2E:: @ 81B6B2E
- move 0x8005, LittlerootTown_MaysHouse_1F_Movement_1A083F
- waitmove 0
+ applymovement 0x8005, LittlerootTown_MaysHouse_1F_Movement_1A083F
+ waitmovement 0
call LittlerootTown_MaysHouse_1F_EventScript_1B6B9D
- move 255, LittlerootTown_MaysHouse_1F_Movement_1B6CD4
- waitmove 0
- playmusic 453, 0
+ applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1B6CD4
+ waitmovement 0
+ playbgm 453, 0
msgbox LittlerootTown_MaysHouse_1F_Text_1725C9, 4
- closebutton
- move 0x8005, LittlerootTown_MaysHouse_1F_Movement_1B6BDE
- waitmove 0
- move 255, LittlerootTown_MaysHouse_1F_Movement_1B6CDA
- waitmove 0
+ closemessage
+ applymovement 0x8005, LittlerootTown_MaysHouse_1F_Movement_1B6BDE
+ waitmovement 0
+ applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1B6CDA
+ waitmovement 0
call LittlerootTown_MaysHouse_1F_EventScript_1B6BBE
- move 255, LittlerootTown_MaysHouse_1F_Movement_1A0843
- waitmove 0
+ applymovement 255, LittlerootTown_MaysHouse_1F_Movement_1A0843
+ waitmovement 0
msgbox LittlerootTown_MaysHouse_1F_Text_1725FE, 4
msgbox LittlerootTown_MaysHouse_1F_Text_172644, 4
- closebutton
+ closemessage
setvar 0x4001, 1
- move 0x8005, LittlerootTown_MaysHouse_1F_Movement_1B6BE5
- waitmove 0
- jump LittlerootTown_MaysHouse_1F_EventScript_1B6AB8
+ applymovement 0x8005, LittlerootTown_MaysHouse_1F_Movement_1B6BE5
+ waitmovement 0
+ goto LittlerootTown_MaysHouse_1F_EventScript_1B6AB8
end
LittlerootTown_BrendansHouse_1F_EventScript_1B6B9D:: @ 81B6B9D
LittlerootTown_MaysHouse_1F_EventScript_1B6B9D:: @ 81B6B9D
- playsfx 21
- move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0833
- waitmove 0
- move 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0835
- waitmove 0
+ playse 21
+ applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0833
+ waitmovement 0
+ applymovement 0x8005, LittlerootTown_BrendansHouse_1F_Movement_1A0835
+ waitmovement 0
msgbox LittlerootTown_BrendansHouse_1F_Text_1725A3, 4
- closebutton
+ closemessage
return
LittlerootTown_BrendansHouse_1F_EventScript_1B6BBE:: @ 81B6BBE
LittlerootTown_MaysHouse_1F_EventScript_1B6BBE:: @ 81B6BBE
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1A0841
- waitmove 0
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1A0841
+ waitmovement 0
msgbox LittlerootTown_BrendansHouse_1F_Text_172841, 4
- fadedefault
+ fadedefaultbgm
special TurnOffTVScreen
setflag 2096
- pause 35
+ delay 35
return
LittlerootTown_BrendansHouse_1F_Movement_1B6BDB:: @ 81B6BDB
@@ -253,17 +253,17 @@ LittlerootTown_MaysHouse_1F_EventScript_1B6BE9:: @ 81B6BE9
lock
faceplayer
compare 0x4082, 4
- jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C33
+ goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C33
compare 0x408c, 4
- jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C33
+ goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C33
checkflag 2059
- jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C3D
+ goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C3D
checkflag 82
- jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C72
+ goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C72
compare 0x4001, 1
- jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C80
+ goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C80
compare 0x4092, 7
- jumpif 4, LittlerootTown_BrendansHouse_1F_EventScript_1B6C9C
+ goto_if 4, LittlerootTown_BrendansHouse_1F_EventScript_1B6C9C
msgbox LittlerootTown_BrendansHouse_1F_Text_172429, 4
release
end
@@ -275,11 +275,11 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6C33:: @ 81B6C33
LittlerootTown_BrendansHouse_1F_EventScript_1B6C3D:: @ 81B6C3D
checkflag 133
- jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1B6C72
+ goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1B6C72
msgbox LittlerootTown_BrendansHouse_1F_Text_172782, 4
giveitem ITEM_AMULET_COIN
compare RESULT, 0
- jumpeq LittlerootTown_BrendansHouse_1F_EventScript_1A029B
+ goto_if_eq LittlerootTown_BrendansHouse_1F_EventScript_1A029B
msgbox LittlerootTown_BrendansHouse_1F_Text_1727CD, 4
setflag 133
release
@@ -287,7 +287,7 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6C3D:: @ 81B6C3D
LittlerootTown_BrendansHouse_1F_EventScript_1B6C72:: @ 81B6C72
msgbox LittlerootTown_BrendansHouse_1F_Text_172717, 4
- jump LittlerootTown_BrendansHouse_1F_EventScript_1B6C8A
+ goto LittlerootTown_BrendansHouse_1F_EventScript_1B6C8A
end
LittlerootTown_BrendansHouse_1F_EventScript_1B6C80:: @ 81B6C80
@@ -296,9 +296,9 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6C80:: @ 81B6C80
end
LittlerootTown_BrendansHouse_1F_EventScript_1B6C8A:: @ 81B6C8A
- closebutton
+ closemessage
call LittlerootTown_BrendansHouse_1F_EventScript_1A02CA
- inccounter GAME_STAT_RESTED_AT_HOME
+ incrementgamestat GAME_STAT_RESTED_AT_HOME
msgbox LittlerootTown_BrendansHouse_1F_Text_17276B, 4
release
end
@@ -312,8 +312,8 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6CA6:: @ 81B6CA6
LittlerootTown_MaysHouse_1F_EventScript_1B6CA6:: @ 81B6CA6
lock
faceplayer
- checksound
- pokecry SPECIES_MACHOKE, 0
+ waitse
+ playpokecry SPECIES_MACHOKE, 0
msgbox LittlerootTown_BrendansHouse_1F_Text_17281D, 4
waitpokecry
release
@@ -323,8 +323,8 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6CB9:: @ 81B6CB9
LittlerootTown_MaysHouse_1F_EventScript_1B6CB9:: @ 81B6CB9
lock
faceplayer
- checksound
- pokecry SPECIES_MACHOKE, 0
+ waitse
+ playpokecry SPECIES_MACHOKE, 0
msgbox LittlerootTown_BrendansHouse_1F_Text_172831, 4
waitpokecry
release
@@ -361,43 +361,43 @@ LittlerootTown_BrendansHouse_1F_Movement_1B6CDC:: @ 81B6CDC
LittlerootTown_BrendansHouse_1F_EventScript_1B6CDE:: @ 81B6CDE
LittlerootTown_MaysHouse_1F_EventScript_1B6CDE:: @ 81B6CDE
lockall
- checkgender
+ checkplayergender
compare RESULT, 0
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DAD
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DAD
compare RESULT, 1
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DBD
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DBD
compare 0x8008, 0
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E1D
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E1D
compare 0x8008, 1
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E28
- move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0839
- waitmove 0
- playsfx 21
- move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0833
- waitmove 0
- move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0835
- waitmove 0
- pause 20
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E28
+ applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0839
+ waitmovement 0
+ playse 21
+ applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0833
+ waitmovement 0
+ applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1A0835
+ waitmovement 0
+ delay 20
compare 0x8008, 0
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DCD
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DCD
compare 0x8008, 1
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DD8
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DD8
msgbox LittlerootTown_BrendansHouse_1F_Text_17298B, 4
giveitem ITEM_SS_TICKET
msgbox LittlerootTown_BrendansHouse_1F_Text_172A7D, 4
- closebutton
+ closemessage
compare 0x8008, 0
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DE3
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DE3
compare 0x8008, 1
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DEE
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DEE
msgbox LittlerootTown_BrendansHouse_1F_Text_172B5E, 4
- closebutton
+ closemessage
compare 0x8008, 0
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DF9
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6DF9
compare 0x8008, 1
- callif 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E0B
- playsfx 8
- disappear 0x8009
+ call_if 1, LittlerootTown_BrendansHouse_1F_EventScript_1B6E0B
+ playse 8
+ removeobject 0x8009
setflag 291
setvar 0x4082, 4
setvar 0x408c, 4
@@ -417,45 +417,45 @@ LittlerootTown_BrendansHouse_1F_EventScript_1B6DBD:: @ 81B6DBD
return
LittlerootTown_BrendansHouse_1F_EventScript_1B6DCD:: @ 81B6DCD
- move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E33
- waitmove 0
+ applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E33
+ waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_1B6DD8:: @ 81B6DD8
- move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E36
- waitmove 0
+ applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E36
+ waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_1B6DE3:: @ 81B6DE3
- move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E39
- waitmove 0
+ applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E39
+ waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_1B6DEE:: @ 81B6DEE
- move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E3B
- waitmove 0
+ applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E3B
+ waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_1B6DF9:: @ 81B6DF9
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E4F
- move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E3D
- waitmove 0
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E4F
+ applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E3D
+ waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_1B6E0B:: @ 81B6E0B
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E4F
- move 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E43
- waitmove 0
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E4F
+ applymovement 0x8009, LittlerootTown_BrendansHouse_1F_Movement_1B6E43
+ waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_1B6E1D:: @ 81B6E1D
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E49
- waitmove 0
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E49
+ waitmovement 0
return
LittlerootTown_BrendansHouse_1F_EventScript_1B6E28:: @ 81B6E28
- move 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E54
- waitmove 0
+ applymovement 255, LittlerootTown_BrendansHouse_1F_Movement_1B6E54
+ waitmovement 0
return
LittlerootTown_BrendansHouse_1F_Movement_1B6E33:: @ 81B6E33
diff --git a/data/scripts/pokeblocks.inc b/data/scripts/pokeblocks.inc
index e1add8734..6fe754097 100644
--- a/data/scripts/pokeblocks.inc
+++ b/data/scripts/pokeblocks.inc
@@ -1,36 +1,36 @@
FallarborTown_ContestLobby_EventScript_1B7604:: @ 81B7604
setvar 0x8008, 4
setvar 0x8009, 1
- move 0x8008, FallarborTown_ContestLobby_Movement_1B7821
- waitmove 0
- jump FallarborTown_ContestLobby_EventScript_1B7681
+ applymovement 0x8008, FallarborTown_ContestLobby_Movement_1B7821
+ waitmovement 0
+ goto FallarborTown_ContestLobby_EventScript_1B7681
end
SlateportCity_ContestLobby_EventScript_1B761E:: @ 81B761E
setvar 0x8008, 2
setvar 0x8009, 2
- move 6, SlateportCity_ContestLobby_Movement_1A083D
- move 0x8008, SlateportCity_ContestLobby_Movement_1B7821
- waitmove 0
- jump SlateportCity_ContestLobby_EventScript_1B7681
+ applymovement 6, SlateportCity_ContestLobby_Movement_1A083D
+ applymovement 0x8008, SlateportCity_ContestLobby_Movement_1B7821
+ waitmovement 0
+ goto SlateportCity_ContestLobby_EventScript_1B7681
end
VerdanturfTown_ContestLobby_EventScript_1B763F:: @ 81B763F
setvar 0x8008, 2
setvar 0x8009, 1
- move 0x8008, VerdanturfTown_ContestLobby_Movement_1B7821
- waitmove 0
- jump VerdanturfTown_ContestLobby_EventScript_1B7681
+ applymovement 0x8008, VerdanturfTown_ContestLobby_Movement_1B7821
+ waitmovement 0
+ goto VerdanturfTown_ContestLobby_EventScript_1B7681
end
LilycoveCity_ContestLobby_EventScript_1B7659:: @ 81B7659
setvar 0x8008, 3
setvar 0x8009, 3
- move 9, LilycoveCity_ContestLobby_Movement_1A083D
- move 10, LilycoveCity_ContestLobby_Movement_1A083D
- move 0x8008, LilycoveCity_ContestLobby_Movement_1B7821
- waitmove 0
- jump LilycoveCity_ContestLobby_EventScript_1B7681
+ applymovement 9, LilycoveCity_ContestLobby_Movement_1A083D
+ applymovement 10, LilycoveCity_ContestLobby_Movement_1A083D
+ applymovement 0x8008, LilycoveCity_ContestLobby_Movement_1B7821
+ waitmovement 0
+ goto LilycoveCity_ContestLobby_EventScript_1B7681
end
FallarborTown_ContestLobby_EventScript_1B7681:: @ 81B7681
@@ -40,24 +40,24 @@ VerdanturfTown_ContestLobby_EventScript_1B7681:: @ 81B7681
lockall
msgbox FallarborTown_ContestLobby_Text_1B6E63, 5
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1B76A1
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B76A1
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1B76E5
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B76E5
end
FallarborTown_ContestLobby_EventScript_1B76A1:: @ 81B76A1
checkitem ITEM_POKEBLOCK_CASE, 1
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1B7780
- specialval RESULT, PlayerHasBerries
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7780
+ specialvar RESULT, PlayerHasBerries
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1B770E
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B770E
msgbox FallarborTown_ContestLobby_Text_1B6E9D, 4
- specialval RESULT, sub_810CA00
+ specialvar RESULT, sub_810CA00
compare RESULT, 65535
- jumpif 5, FallarborTown_ContestLobby_EventScript_1B76EF
+ goto_if 5, FallarborTown_ContestLobby_EventScript_1B76EF
compare RESULT, 65535
- jumpeq FallarborTown_ContestLobby_EventScript_1B7776
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7776
end
FallarborTown_ContestLobby_EventScript_1B76E5:: @ 81B76E5
@@ -68,27 +68,27 @@ FallarborTown_ContestLobby_EventScript_1B76E5:: @ 81B76E5
FallarborTown_ContestLobby_EventScript_1B76EF:: @ 81B76EF
msgbox FallarborTown_ContestLobby_Text_1B6ED0, 5
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1B7734
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7734
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1B7726
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7726
end
FallarborTown_ContestLobby_EventScript_1B770E:: @ 81B770E
msgbox FallarborTown_ContestLobby_Text_1B6FF0, 4
- checkdailyflags
+ dodailyevents
checkflag 2241
- jumpeq FallarborTown_ContestLobby_EventScript_1B774F
- jump FallarborTown_ContestLobby_EventScript_1B7759
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B774F
+ goto FallarborTown_ContestLobby_EventScript_1B7759
end
FallarborTown_ContestLobby_EventScript_1B7726:: @ 81B7726
msgbox FallarborTown_ContestLobby_Text_1B6F1F, 4
- jump FallarborTown_ContestLobby_EventScript_1B7734
+ goto FallarborTown_ContestLobby_EventScript_1B7734
end
FallarborTown_ContestLobby_EventScript_1B7734:: @ 81B7734
msgbox FallarborTown_ContestLobby_Text_1B6EF1, 4
- jump FallarborTown_ContestLobby_EventScript_1B7742
+ goto FallarborTown_ContestLobby_EventScript_1B7742
end
FallarborTown_ContestLobby_EventScript_1B7742:: @ 81B7742
@@ -108,7 +108,7 @@ FallarborTown_ContestLobby_EventScript_1B7759:: @ 81B7759
msgbox FallarborTown_ContestLobby_Text_1B704A, 4
giveitem ITEM_PECHA_BERRY
setflag 2241
- jump FallarborTown_ContestLobby_EventScript_1B76EF
+ goto FallarborTown_ContestLobby_EventScript_1B76EF
end
FallarborTown_ContestLobby_EventScript_1B7776:: @ 81B7776
@@ -123,22 +123,22 @@ FallarborTown_ContestLobby_EventScript_1B7780:: @ 81B7780
FallarborTown_ContestLobby_EventScript_1B778A:: @ 81B778A
setvar 0x8008, 4
- jump FallarborTown_ContestLobby_EventScript_1B77B6
+ goto FallarborTown_ContestLobby_EventScript_1B77B6
end
SlateportCity_ContestLobby_EventScript_1B7795:: @ 81B7795
setvar 0x8008, 2
- jump SlateportCity_ContestLobby_EventScript_1B77B6
+ goto SlateportCity_ContestLobby_EventScript_1B77B6
end
VerdanturfTown_ContestLobby_EventScript_1B77A0:: @ 81B77A0
setvar 0x8008, 2
- jump VerdanturfTown_ContestLobby_EventScript_1B77B6
+ goto VerdanturfTown_ContestLobby_EventScript_1B77B6
end
LilycoveCity_ContestLobby_EventScript_1B77AB:: @ 81B77AB
setvar 0x8008, 3
- jump LilycoveCity_ContestLobby_EventScript_1B77B6
+ goto LilycoveCity_ContestLobby_EventScript_1B77B6
end
FallarborTown_ContestLobby_EventScript_1B77B6:: @ 81B77B6
@@ -148,11 +148,11 @@ VerdanturfTown_ContestLobby_EventScript_1B77B6:: @ 81B77B6
lock
faceplayer
msgbox FallarborTown_ContestLobby_Text_1B742F, 4
- specialval RESULT, PlayerHasBerries
+ specialvar RESULT, PlayerHasBerries
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1B77DC
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B77DC
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1B77E6
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B77E6
end
FallarborTown_ContestLobby_EventScript_1B77DC:: @ 81B77DC
@@ -161,10 +161,10 @@ FallarborTown_ContestLobby_EventScript_1B77DC:: @ 81B77DC
end
FallarborTown_ContestLobby_EventScript_1B77E6:: @ 81B77E6
- checkdailyflags
+ dodailyevents
checkflag 2241
- jumpeq FallarborTown_ContestLobby_EventScript_1B77F6
- jump FallarborTown_ContestLobby_EventScript_1B7800
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B77F6
+ goto FallarborTown_ContestLobby_EventScript_1B7800
end
FallarborTown_ContestLobby_EventScript_1B77F6:: @ 81B77F6
@@ -188,19 +188,19 @@ VerdanturfTown_ContestLobby_Movement_1B7821:: @ 81B7821
step_end
FallarborTown_ContestLobby_EventScript_1B7823:: @ 81B7823
- jump FallarborTown_ContestLobby_EventScript_1B783B
+ goto FallarborTown_ContestLobby_EventScript_1B783B
end
SlateportCity_ContestLobby_EventScript_1B7829:: @ 81B7829
- jump SlateportCity_ContestLobby_EventScript_1B783B
+ goto SlateportCity_ContestLobby_EventScript_1B783B
end
VerdanturfTown_ContestLobby_EventScript_1B782F:: @ 81B782F
- jump VerdanturfTown_ContestLobby_EventScript_1B783B
+ goto VerdanturfTown_ContestLobby_EventScript_1B783B
end
LilycoveCity_ContestLobby_EventScript_1B7835:: @ 81B7835
- jump LilycoveCity_ContestLobby_EventScript_1B783B
+ goto LilycoveCity_ContestLobby_EventScript_1B783B
end
FallarborTown_ContestLobby_EventScript_1B783B:: @ 81B783B
@@ -208,25 +208,25 @@ LilycoveCity_ContestLobby_EventScript_1B783B:: @ 81B783B
SlateportCity_ContestLobby_EventScript_1B783B:: @ 81B783B
VerdanturfTown_ContestLobby_EventScript_1B783B:: @ 81B783B
lockall
- specialval RESULT, PlayerHasBerries
+ specialvar RESULT, PlayerHasBerries
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1B7897
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7897
checkitem ITEM_POKEBLOCK_CASE, 1
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1B7942
- specialval RESULT, sub_810CA00
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7942
+ specialvar RESULT, sub_810CA00
compare RESULT, 65535
- jumpif 5, FallarborTown_ContestLobby_EventScript_1B7878
+ goto_if 5, FallarborTown_ContestLobby_EventScript_1B7878
compare RESULT, 65535
- jumpeq FallarborTown_ContestLobby_EventScript_1B7938
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7938
end
FallarborTown_ContestLobby_EventScript_1B7878:: @ 81B7878
msgbox FallarborTown_ContestLobby_Text_1B727C, 5
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1B78A1
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B78A1
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1B7936
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7936
end
FallarborTown_ContestLobby_EventScript_1B7897:: @ 81B7897
@@ -235,47 +235,47 @@ FallarborTown_ContestLobby_EventScript_1B7897:: @ 81B7897
end
FallarborTown_ContestLobby_EventScript_1B78A1:: @ 81B78A1
- call FallarborTown_ContestLobby_EventScript_19F806
+ call S_DoSaveDialog
compare RESULT, 0
- jumpeq FallarborTown_ContestLobby_EventScript_1B7936
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7936
message FallarborTown_ContestLobby_Text_1B7304
- waittext
+ waitmessage
special sub_8083614
waitstate
compare RESULT, 1
- jumpeq FallarborTown_ContestLobby_EventScript_1B7980
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7980
compare RESULT, 2
- jumpeq FallarborTown_ContestLobby_EventScript_1B794C
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B794C
compare RESULT, 3
- jumpeq FallarborTown_ContestLobby_EventScript_1B7959
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7959
compare RESULT, 5
- jumpeq FallarborTown_ContestLobby_EventScript_1B7966
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7966
compare RESULT, 6
- jumpeq FallarborTown_ContestLobby_EventScript_1B7973
+ goto_if_eq FallarborTown_ContestLobby_EventScript_1B7973
end
FallarborTown_ContestLobby_EventScript_1B78F3:: @ 81B78F3
msgbox FallarborTown_ContestLobby_Text_1B733B, 4
- jump FallarborTown_ContestLobby_EventScript_1B791D
+ goto FallarborTown_ContestLobby_EventScript_1B791D
end
FallarborTown_ContestLobby_EventScript_1B7901:: @ 81B7901
msgbox FallarborTown_ContestLobby_Text_1B7347, 4
- jump FallarborTown_ContestLobby_EventScript_1B791D
+ goto FallarborTown_ContestLobby_EventScript_1B791D
end
FallarborTown_ContestLobby_EventScript_1B790F:: @ 81B790F
msgbox FallarborTown_ContestLobby_Text_1B735A, 4
- jump FallarborTown_ContestLobby_EventScript_1B791D
+ goto FallarborTown_ContestLobby_EventScript_1B791D
end
FallarborTown_ContestLobby_EventScript_1B791D:: @ 81B791D
setvar 0x8004, 0
fadescreen 1
- disappear 240
- disappear 239
- disappear 238
- disappear 237
+ removeobject 240
+ removeobject 239
+ removeobject 238
+ removeobject 237
special sub_804E538
waitstate
releaseall
@@ -321,11 +321,11 @@ FallarborTown_ContestLobby_EventScript_1B7973:: @ 81B7973
FallarborTown_ContestLobby_EventScript_1B7980:: @ 81B7980
fadescreen 1
- specialval RESULT, GetLinkPartnerNames
+ specialvar RESULT, GetLinkPartnerNames
copyvar 0x8008, RESULT
copyvar 0x8004, 0x8008
special SpawnBerryBlenderLinkPlayerSprites
- jump FallarborTown_ContestLobby_EventScript_1B799A
+ goto FallarborTown_ContestLobby_EventScript_1B799A
end
FallarborTown_ContestLobby_EventScript_1B799A:: @ 81B799A
diff --git a/data/scripts/safari_zone.inc b/data/scripts/safari_zone.inc
index 03293115b..d0283f072 100644
--- a/data/scripts/safari_zone.inc
+++ b/data/scripts/safari_zone.inc
@@ -1,7 +1,7 @@
gUnknown_081C340A:: @ 81C340A
setvar 0x40a4, 1
special ExitSafariMode
- warp3 Route121_SafariZoneEntrance, 255, 2, 5
+ setwarp Route121_SafariZoneEntrance, 255, 2, 5
end
EventScript_1C341B: @ 81C341B
@@ -15,39 +15,39 @@ gUnknown_081C342D:: @ 81C342D
lockall
msgbox UnknownString_81C34B2, 5
compare RESULT, 1
- jumpeq EventScript_1C3443
+ goto_if_eq EventScript_1C3443
releaseall
end
EventScript_1C3443:
- jump EventScript_1C341B
+ goto EventScript_1C341B
gUnknown_081C3448:: @ 81C3448
lockall
- playsfx 73
+ playse 73
message UnknownString_81C34E4
- waittext
+ waitmessage
waitbutton
releaseall
- jump EventScript_1C341B
+ goto EventScript_1C341B
gUnknown_081C3459:: @ 81C3459
lockall
- playsfx 73
+ playse 73
message UnknownString_81C3514
- waittext
+ waitmessage
waitbutton
releaseall
- jump EventScript_1C341B
+ goto EventScript_1C341B
gUnknown_081C346A:: @ 81C346A
lockall
special SafariZoneGetPokeblockNameInFeeder
- compare RESULT, -1
- jumpif 5, EventScript_1C34A9
+ compare RESULT, 0xFFFF
+ goto_if 5, EventScript_1C34A9
msgbox UnknownString_81C354E, 5
compare RESULT, 1
- jumpeq EventScript_1C348E
+ goto_if_eq EventScript_1C348E
releaseall
end
@@ -55,20 +55,20 @@ EventScript_1C348E:
fadescreen 1
special sub_810BAF4
waitstate
- compare RESULT, -1
- jumpif 5, EventScript_1C34A0
+ compare RESULT, 0xFFFF
+ goto_if 5, EventScript_1C34A0
end
EventScript_1C34A0:
message UnknownString_81C35A9
- waittext
+ waitmessage
waitbutton
releaseall
end
EventScript_1C34A9:
message UnknownString_81C3583
- waittext
+ waitmessage
waitbutton
releaseall
end
diff --git a/data/scripts/secret_power_tm.inc b/data/scripts/secret_power_tm.inc
index 629125030..f3c03a853 100644
--- a/data/scripts/secret_power_tm.inc
+++ b/data/scripts/secret_power_tm.inc
@@ -3,7 +3,7 @@ Route111_EventScript_1A3858:: @ 81A3858
faceplayer
msgbox Route111_Text_1A3520, 5
compare RESULT, 1
- jumpeq Route111_EventScript_1A3877
+ goto_if_eq Route111_EventScript_1A3877
msgbox Route111_Text_1A37B5, 4
release
end
@@ -11,29 +11,29 @@ Route111_EventScript_1A3858:: @ 81A3858
Route111_EventScript_1A3877:: @ 81A3877
giveitem ITEM_TM43
compare RESULT, 0
- jumpeq Route111_EventScript_1A38D9
+ goto_if_eq Route111_EventScript_1A38D9
msgbox Route111_Text_1A35C5, 4
- closebutton
+ closemessage
setflag 96
clearflag 948
compare FACING, 3
- callif 1, Route111_EventScript_1A38C3
+ call_if 1, Route111_EventScript_1A38C3
compare FACING, 4
- callif 1, Route111_EventScript_1A38C3
+ call_if 1, Route111_EventScript_1A38C3
compare FACING, 2
- callif 1, Route111_EventScript_1A38CE
- disappear LAST_TALKED
+ call_if 1, Route111_EventScript_1A38CE
+ removeobject LAST_TALKED
release
end
Route111_EventScript_1A38C3:: @ 81A38C3
- move LAST_TALKED, Route111_Movement_1A38E3
- waitmove 0
+ applymovement LAST_TALKED, Route111_Movement_1A38E3
+ waitmovement 0
return
Route111_EventScript_1A38CE:: @ 81A38CE
- move LAST_TALKED, Route111_Movement_1A38EF
- waitmove 0
+ applymovement LAST_TALKED, Route111_Movement_1A38EF
+ waitmovement 0
return
Route111_EventScript_1A38D9:: @ 81A38D9
diff --git a/data/scripts/storyteller.inc b/data/scripts/storyteller.inc
deleted file mode 100644
index eba94e698..000000000
--- a/data/scripts/storyteller.inc
+++ /dev/null
@@ -1,82 +0,0 @@
-MauvilleCity_PokemonCenter_1F_EventScript_1B0816:: @ 81B0816
- setvar 0x8008, 0
- setvar 0x8009, 0
- setvar 0x800a, 0
- setvar 0x800b, 0
- lock
- faceplayer
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AECC6, 5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914
- specialval RESULT, sub_80F889C
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B08D3
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B084F:: @ 81B084F
- message MauvilleCity_PokemonCenter_1F_Text_1AED35
- waittext
- special sub_80F8874
- waitstate
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0883
- setvar 0x8008, 1
- special sub_80F8888
- waittext
- waitbutton
- specialval RESULT, sub_80F88AC
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0893
- jump MauvilleCity_PokemonCenter_1F_EventScript_1B0909
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0883:: @ 81B0883
- compare 0x8008, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914
- jump MauvilleCity_PokemonCenter_1F_EventScript_1B08AE
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0893:: @ 81B0893
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEE50, 4
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEF0A, 5
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B084F
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B08AE:: @ 81B08AE
- specialval RESULT, sub_80F88E0
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B091F
- specialval RESULT, sub_80F889C
- compare RESULT, 4
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B091F
- jump MauvilleCity_PokemonCenter_1F_EventScript_1B08DB
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B08D3:: @ 81B08D3
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AED70, 4
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B08DB:: @ 81B08DB
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEEB4, 5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0914
- specialval RESULT, sub_80F88FC
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1B0909
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEF49, 4
- closebutton
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0909:: @ 81B0909
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEDE8, 4
- closebutton
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B0914:: @ 81B0914
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AED1D, 4
- closebutton
- release
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1B091F:: @ 81B091F
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEFA5, 4
- closebutton
- release
- end
diff --git a/data/scripts/trader.inc b/data/scripts/trader.inc
deleted file mode 100644
index b52c8a2dc..000000000
--- a/data/scripts/trader.inc
+++ /dev/null
@@ -1,88 +0,0 @@
-MauvilleCity_PokemonCenter_1F_EventScript_1AEBAB:: @ 81AEBAB
- lock
- faceplayer
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE88F, 5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEBDA
- special sub_8109C44
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEBE3
- message MauvilleCity_PokemonCenter_1F_Text_1AE910
- waittext
- jump MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEBDA:: @ 81AEBDA
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE8C6, 2
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEBE3:: @ 81AEBE3
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE8DF, 2
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC:: @ 81AEBEC
- special sub_8109E34
- waitstate
- compare 0x8004, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC2D
- compare 0x8004, 65535
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC36
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE97C, 5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC42
- special sub_8109C58
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC4E
- jump MauvilleCity_PokemonCenter_1F_EventScript_1AEC57
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEC2D:: @ 81AEC2D
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE950, 2
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEC36:: @ 81AEC36
- message MauvilleCity_PokemonCenter_1F_Text_1AEB31
- waittext
- jump MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEC42:: @ 81AEC42
- message MauvilleCity_PokemonCenter_1F_Text_1AE910
- waittext
- jump MauvilleCity_PokemonCenter_1F_EventScript_1AEBEC
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEC4E:: @ 81AEC4E
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE9B6, 2
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AEC57:: @ 81AEC57
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AE9F8, 4
- special sub_8109CF0
- waitstate
- compare 0x8006, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECA6
- compare 0x8006, 65535
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECAF
- special sub_8109C90
- compare RESULT, 1
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AECBD
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA9B, 5
- compare RESULT, 0
- jumpeq MauvilleCity_PokemonCenter_1F_EventScript_1AEC57
- special sub_8109DE0
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEAFB, 2
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AECA6:: @ 81AECA6
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA2B, 2
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AECAF:: @ 81AECAF
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEAC3, 4
- jump MauvilleCity_PokemonCenter_1F_EventScript_1AEC57
- end
-
-MauvilleCity_PokemonCenter_1F_EventScript_1AECBD:: @ 81AECBD
- msgbox MauvilleCity_PokemonCenter_1F_Text_1AEA57, 2
- end
diff --git a/data/scripts/tv.inc b/data/scripts/tv.inc
index 1f8956811..425f42a85 100644
--- a/data/scripts/tv.inc
+++ b/data/scripts/tv.inc
@@ -1,33 +1,33 @@
Event_TV:: @ 81A6E72
lockall
- inccounter GAME_STAT_WATCHED_TV
+ incrementgamestat GAME_STAT_WATCHED_TV
special sub_80C2014
- specialval RESULT, CheckForBigMovieOrEmergencyNewsOnTV
+ specialvar RESULT, CheckForBigMovieOrEmergencyNewsOnTV
compare RESULT, 2
- jumpeq EventScript_1A6F01
+ goto_if_eq EventScript_1A6F01
compare RESULT, 1
- jumpeq EventScript_1A6F0B
+ goto_if_eq EventScript_1A6F0B
checkflag 2098
- jumpif 0, EventScript_1A6EF1
+ goto_if 0, EventScript_1A6EF1
checkflag 2097
- jumpeq EventScript_1A6EF1
- specialval RESULT, IsTVShowInSearchOfTrainersAiring
+ goto_if_eq EventScript_1A6EF1
+ specialvar RESULT, IsTVShowInSearchOfTrainersAiring
compare RESULT, 1
- jumpeq EventScript_1A6F66
- jump EventScript_1A6F50
+ goto_if_eq EventScript_1A6F66
+ goto EventScript_1A6F50
end
EventScript_1A6EBB:
- specialval 0x8004, special_0x44
+ specialvar 0x8004, special_0x44
compare 0x8004, 255
- jumpeq EventScript_1A6F3F
- specialval RESULT, special_0x4a
+ goto_if_eq EventScript_1A6F3F
+ specialvar RESULT, special_0x4a
compare RESULT, 255
- jumpeq EventScript_1A6F3F
+ goto_if_eq EventScript_1A6F3F
copyvar 0x8004, RESULT
- specialval RESULT, sub_80BDA0C
+ specialvar RESULT, sub_80BDA0C
compare RESULT, 0
- jumpif 5, EventScript_1A6F21
+ goto_if 5, EventScript_1A6F21
end
EventScript_1A6EF1:
@@ -57,11 +57,11 @@ EventScript_1A6F0B:
EventScript_1A6F21:
special DoTVShow
- waittext
+ waitmessage
waitbutton
compare RESULT, 1
- jumpif 5, EventScript_1A6F21
- jump EventScript_1A6F37
+ goto_if 5, EventScript_1A6F21
+ goto EventScript_1A6F37
end
EventScript_1A6F37:
@@ -73,23 +73,23 @@ EventScript_1A6F37:
EventScript_1A6F3F:
special GetMomOrDadStringForTVMessage
msgbox UnknownString_81A0E68, 4
- jump EventScript_1A6F37
+ goto EventScript_1A6F37
end
EventScript_1A6F50:
special sub_80BECE8
compare RESULT, 0
- jumpeq EventScript_1A6EBB
- waittext
+ goto_if_eq EventScript_1A6EBB
+ waitmessage
waitbutton
- jump EventScript_1A6F37
+ goto EventScript_1A6F37
end
EventScript_1A6F66:
special DoTVShowInSearchOfTrainers
- waittext
+ waitmessage
waitbutton
compare RESULT, 0
- jumpeq EventScript_1A6F66
- jump EventScript_1A6F37
+ goto_if_eq EventScript_1A6F66
+ goto EventScript_1A6F37
end
diff --git a/data/shop.s b/data/shop.s
deleted file mode 100644
index 071874d0e..000000000
--- a/data/shop.s
+++ /dev/null
@@ -1,69 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gUnknown_083CC6D0:: @ 83CC6D0
- .4byte MartText_Buy, sub_80B2EFC
- .4byte MartText_Sell, sub_80B2F30
- .4byte MartText_Quit2, HandleShopMenuQuit
-
-gUnknown_083CC6E8:: @ 83CC6E8
- .byte 0, 1, 2
-
-gUnknown_083CC6EB:: @ 83CC6EB
- .byte 0, 2
-
-@ unknown, unreferenced data
- .align 1
- .2byte 0x2
- .2byte 0x3
- .2byte 0x4
- .2byte 0xD
- .2byte 0x121
- .2byte 0xE
- .2byte 0xE
- .2byte 0xE
- .2byte 0xE
- .2byte 0xE
- .2byte 0xE
- .2byte 0x0
- .2byte 0x0
-
- .align 2
-gUnknown_083CC708:: @ 83CC708
- .4byte sub_80B3BF4
- .4byte sub_80B3D7C
-
- .align 1
-gUnknown_083CC710:: @ 83CC710
- .2byte 0x41EE,0x7FFF
-
- .align 1
-gUnknown_083CC714:: @ 83CC714
- .2byte 0x284,0x282,0x280
-
- .align 1
-gUnknown_083CC71A:: @ 83CC71A
- .2byte 0x285,0x283,0x281
-
- .align 1
-gUnknown_083CC720:: @ 83CC720
- .2byte 0x28C,0x28A,0x288
-
- .align 1
-gUnknown_083CC726:: @ 83CC726
- .2byte 0x28D,0x28B,0x289
-
- .align 1
-gUnknown_083CC72C:: @ 83CC72C
- .2byte 0x2A0,0x2A2,0x2A4
-
- .align 1
-gUnknown_083CC732:: @ 83CC732
- .2byte 0x2A1,0x2A3,0x2A5
-
- .align 1
-gUnknown_083CC738:: @ 83CC738
- .2byte 0x2A8,0x2AA,0x2AC
diff --git a/data/specials.inc b/data/specials.inc
index 0eb6b742d..6ce9b5b1e 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -7,7 +7,7 @@
.set __special__, 0
.align 2
gSpecials::
- def_special HealPlayerParty
+ def_special ScrSpecial_HealPlayerParty
def_special SetCableClubWarp
def_special DoCableClubWarp
def_special sub_80810DC
@@ -58,15 +58,15 @@ gSpecials::
def_special FieldObjectInteractionWaterBerryTree
def_special PlayerHasBerries
def_special IsEnigmaBerryValid
- def_special sub_8082558
- def_special sub_80826D8
- def_special sub_8082718
- def_special sub_8082564
- def_special sub_80847C8
+ def_special ScrSpecial_GetTrainerBattleMode
+ def_special ScrSpecial_ShowTrainerIntroSpeech
+ def_special ScrSpecial_ShowTrainerNonBattlingSpeech
+ def_special ScrSpecial_HasTrainerBeenFought
+ def_special ScrSpecial_EndTrainerApproach
def_special PlayTrainerEncounterMusic
def_special sub_8082C68
- def_special sub_8082C9C
- def_special sub_80826B0
+ def_special ScrSpecial_GetTrainerEyeRematchFlag
+ def_special ScrSpecial_StartTrainerEyeRematch
def_special ShowPokemonStorageSystem
def_special CheckForAlivePartyMons
def_special TurnOffTVScreen
@@ -100,32 +100,32 @@ gSpecials::
def_special sub_80C5044
def_special GiveMonArtistRibbon
def_special sub_808363C
- def_special InitSaveDialog
+ def_special ScrSpecial_DoSaveDialog
def_special DoWateringBerryTreeAnim
def_special sub_80E60D8
def_special sub_80EB7C4
- def_special sub_80F7B14
- def_special sub_80F7B2C
- def_special sub_80F7B40
- def_special sub_80F7C70
- def_special sub_80F7C84
- def_special sub_80F7C90
- def_special sub_80F7C54
+ def_special ScrSpecial_GetCurrentMauvilleMan
+ def_special ScrSpecial_HasBardSongBeenChanged
+ def_special ScrSpecial_SaveBardSongLyrics
+ def_special ScrSpecial_GetHipsterSpokenFlag
+ def_special ScrSpecial_SetHipsterSpokenFlag
+ def_special ScrSpecial_HipsterTeachWord
+ def_special ScrSpecial_PlayBardSong
def_special sub_80F83D0
- def_special sub_80F7CF4
- def_special sub_80F7CC8
- def_special sub_80F889C
- def_special sub_80F8888
- def_special sub_80F8874
- def_special sub_80F88AC
- def_special sub_80F88FC
- def_special sub_80F88E0
- def_special sub_8109E34
- def_special sub_8109C44
- def_special sub_8109C58
- def_special sub_8109C90
- def_special sub_8109CF0
- def_special sub_8109DE0
+ def_special ScrSpecial_GenerateGiddyLine
+ def_special ScrSpecial_GiddyShouldTellAnotherTale
+ def_special ScrSpecial_StorytellerGetFreeStorySlot
+ def_special ScrSpecial_StorytellerDisplayStory
+ def_special ScrSpecial_StorytellerStoryListMenu
+ def_special ScrSpecial_StorytellerUpdateStat
+ def_special ScrSpecial_StorytellerInitializeRandomStat
+ def_special ScrSpecial_HasStorytellerAlreadyRecorded
+ def_special ScrSpecial_TraderMenuGetDecoration
+ def_special ScrSpecial_GetTraderTradedFlag
+ def_special ScrSpecial_DoesPlayerHaveNoDecorations
+ def_special ScrSpecial_IsDecorationFull
+ def_special ScrSpecial_TraderMenuGiveDecoration
+ def_special ScrSpecial_TraderDoDecorationTrade
def_special GetShroomishSizeRecordInfo
def_special CompareShroomishSize
def_special GetBarboachSizeRecordInfo
@@ -160,11 +160,11 @@ gSpecials::
def_special SetFlagInVar
def_special CableCarWarp
def_special sub_8123218
- def_special sub_8053E90
+ def_special Overworld_PlaySpecialMapMusic
def_special StartWallClock
- def_special sub_810D6B8
- def_special ChooseStarter
- def_special StartBattle_WallyTutorial
+ def_special ScrSpecial_ViewWallClock
+ def_special ScrSpecial_ChooseStarter
+ def_special ScrSpecial_StartWallyTutorialBattle
def_special sub_80BF9F8
def_special sub_80F9A0C
def_special sub_810CA00
@@ -178,7 +178,7 @@ gSpecials::
def_special sub_810FF48
def_special sub_810FAA0
def_special sub_810FF60
- def_special RockSmashWildEncounter
+ def_special ScrSpecial_RockSmashWildEncounter
def_special GabbyAndTyGetBattleNum
def_special sub_80BDC14
def_special GabbyAndTyBeforeInterview
@@ -229,11 +229,11 @@ gSpecials::
def_special sub_80F9A4C
def_special sub_80F9EEC
def_special sub_80FA0DC
- def_special sub_80F9F84
- def_special sub_80F9F3C
+ def_special ScrSpecial_GetPokemonNicknameAndMoveName
+ def_special ScrSpecial_CountPokemonMoves
def_special sub_8132670
def_special GetRecordedCyclingRoadResults
- def_special BeginCyclingRoadChallenge
+ def_special ScrSpecial_BeginCyclingRoadChallenge
def_special GetPlayerAvatarBike
def_special FinishCyclingRoadChallenge
def_special UpdateCyclingRoadState
@@ -269,9 +269,9 @@ gSpecials::
def_special ShowBerryBlenderRecordWindow
def_special ResetTrickHouseEndRoomFlag
def_special SetTrickHouseEndRoomFlag
- def_special TryCreatePCMenu
+ def_special ScrSpecial_CreatePCMenu
def_special AccessHallOfFamePC
- def_special sub_810D6A4
+ def_special ScrSpecial_ShowDiploma
def_special CheckLeadMonCool
def_special CheckLeadMonBeauty
def_special CheckLeadMonCute
@@ -301,7 +301,7 @@ gSpecials::
def_special sub_810F4FC
def_special LeadMonHasEffortRibbon
def_special GivLeadMonEffortRibbon
- def_special GetLeadMonEVCount
+ def_special ScrSpecial_AreLeadMonEVsMaxedOut
def_special sub_8064EAC
def_special sub_8064ED4
def_special InitRoamer
@@ -318,9 +318,9 @@ gSpecials::
def_special IsPokerusInParty
def_special sub_8069D78
def_special sub_810F758
- def_special StartBattle_GroudonKyogre
- def_special StartBattle_Rayquaza
- def_special StartBattle_Regi
+ def_special ScrSpecial_StartGroudonKyogreBattle
+ def_special ScrSpecial_StartRayquazaBattle
+ def_special ScrSpecial_StartRegiBattle
def_special sub_8082524
def_special DoSealedChamberShakingEffect2
def_special sub_810F828
@@ -330,7 +330,7 @@ gSpecials::
def_special ShowContestEntryMonPic
def_special sub_80C5164
def_special sub_8134AB4
- def_special StartBattle_SouthernIsland
+ def_special ScrSpecial_StartSouthernIslandBattle
def_special SetRoute119Weather
def_special SetRoute123Weather
def_special ScriptGetMultiplayerId
diff --git a/data/text/bard.inc b/data/text/bard.inc
index edf4942f6..bd22c97a3 100644
--- a/data/text/bard.inc
+++ b/data/text/bard.inc
@@ -1,19 +1,19 @@
-UnknownString_81B0A83: @ 81B0A83
+gTextBard_BardTesting: @ 81B0A83
.string "BARD testing!$"
-MauvilleCity_PokemonCenter_1F_Text_1B0A91:: @ 81B0A91
+gTextBard_HiImTheBard:: @ 81B0A91
.string "Hi, I’m the BARD.\n"
.string "Would you like to hear my song?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0AC3:: @ 81B0AC3
+gTextBard_OhYouveLeftMe:: @ 81B0AC3
.string "Oh...\n"
.string "You’ve left me feeling the blues...$"
-MauvilleCity_PokemonCenter_1F_Text_1B0AED:: @ 81B0AED
+gTextBard_OhWhatAMovingSong:: @ 81B0AED
.string "Oh, what a moving song...\n"
.string "I wish I could play it for others...$"
-MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C
+gTextBard_SoHowDoYouLikeMySong:: @ 81B0B2C
.string "So?\n"
.string "How do you like my song?\p"
.string "But I’m none too happy about the\n"
@@ -21,18 +21,18 @@ MauvilleCity_PokemonCenter_1F_Text_1B0B2C:: @ 81B0B2C
.string "How would you like to write some new\n"
.string "lyrics for me?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0BA6:: @ 81B0BA6
+gTextBard_OhYouveLeftMe2:: @ 81B0BA6
.string "Oh...\n"
.string "You’ve left me feeling the blues...$"
-MauvilleCity_PokemonCenter_1F_Text_1B0BD0:: @ 81B0BD0
+gTextBard_ThankYouKindly:: @ 81B0BD0
.string "Thank you kindly!\n"
.string "Let me sing it for you.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0BFA:: @ 81B0BFA
+gTextBard_WasThatHowYouWanted:: @ 81B0BFA
.string "Was that how you wanted your song\n"
.string "to go?$"
-MauvilleCity_PokemonCenter_1F_Text_1B0C23:: @ 81B0C23
+gTextBard_OkayThatsIt:: @ 81B0C23
.string "Okay! That’s it, then.\n"
.string "I’ll sing this song for a while.$"
diff --git a/data/text/giddy.inc b/data/text/giddy.inc
index 040ef2ae5..a763776bf 100644
--- a/data/text/giddy.inc
+++ b/data/text/giddy.inc
@@ -1,16 +1,16 @@
-MauvilleCity_PokemonCenter_1F_Text_1B092A:: @ 81B092A
+gTextGiddy_Introduction:: @ 81B092A
.string "I’m GIDDY!\n"
.string "I have a scintillating story for you!\p"
.string "Would you like to hear my story?$"
-MauvilleCity_PokemonCenter_1F_Text_1B097C:: @ 81B097C
+gTextGiddy_YouveDeflatedMe:: @ 81B097C
.string "Oh...\n"
.string "You’ve deflated me...$"
-MauvilleCity_PokemonCenter_1F_Text_1B0998:: @ 81B0998
+gTextGiddy_AlsoIWasThinking:: @ 81B0998
.string "Also, I was thinking...$"
-MauvilleCity_PokemonCenter_1F_Text_1B09B0:: @ 81B09B0
+gTextGiddy_ByeBye:: @ 81B09B0
.string "That’s about it, I think...\p"
.string "We should chat again!\n"
.string "Bye-bye!$"
diff --git a/data/text/hipster.inc b/data/text/hipster.inc
index a30943d3a..630db02b2 100644
--- a/data/text/hipster.inc
+++ b/data/text/hipster.inc
@@ -1,19 +1,19 @@
-MauvilleCity_PokemonCenter_1F_Text_1B0C5B:: @ 81B0C5B
+gTextHipster_TheyCallMeTheHipster:: @ 81B0C5B
.string "Hey, yo! They call me the HIPSTER.\n"
.string "I’ll teach you what’s hip and happening.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0CA7:: @ 81B0CA7
+gTextHipster_TaughtYouAlready:: @ 81B0CA7
.string "But, hey, I taught you what’s hip and\n"
.string "happening already.\p"
.string "I’d like to spread the good word to\n"
.string "other folks.$"
-MauvilleCity_PokemonCenter_1F_Text_1B0D11:: @ 81B0D11
+gTextHipster_YouAlreadyKnowALot:: @ 81B0D11
.string "But, hey, you already know a lot about\n"
.string "what’s hip and happening.\p"
.string "I’ve got nothing new to teach you!$"
-MauvilleCity_PokemonCenter_1F_Text_1B0D75:: @ 81B0D75
+gTextHipster_HaveYouHeardAbout:: @ 81B0D75
.string "Hey, have you heard about\n"
.string "“{STR_VAR_1}”?\p"
.string "What’s it mean? Well...\n"
diff --git a/data/text/storyteller.inc b/data/text/storyteller.inc
index 3cfa8a698..437a1fa21 100644
--- a/data/text/storyteller.inc
+++ b/data/text/storyteller.inc
@@ -1,24 +1,24 @@
-MauvilleCity_PokemonCenter_1F_Text_1AECC6:: @ 81AECC6
+gTextStoryteller_Introduction:: @ 81AECC6
.string "I’m the STORYTELLER.\n"
.string "I’ll tell you tales of legendary\l"
.string "TRAINERS.\p"
.string "Will you hear my tale?$"
-MauvilleCity_PokemonCenter_1F_Text_1AED1D:: @ 81AED1D
+gTextStoryteller_OhIFeelStifled:: @ 81AED1D
.string "Oh...\n"
.string "I feel stifled...$"
-MauvilleCity_PokemonCenter_1F_Text_1AED35:: @ 81AED35
+gTextStoryteller_WhichTale:: @ 81AED35
.string "I know of these legends.\n"
.string "Which tale will you have me tell?$"
-MauvilleCity_PokemonCenter_1F_Text_1AED70:: @ 81AED70
+gTextStoryteller_ButIKnowOfNoLegendaryTrainers:: @ 81AED70
.string "But, I know of no legendary TRAINERS.\n"
.string "Hence, I know no tales.\p"
.string "Where does one find a TRAINER worthy\n"
.string "of a legendary tale?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8
+gTextStoryteller_BirthOfANewLegend:: @ 81AEDE8
.string "What’s that?!\n"
.string "You... You...\p"
.string "{STR_VAR_2}\n"
@@ -26,38 +26,38 @@ MauvilleCity_PokemonCenter_1F_Text_1AEDE8:: @ 81AEDE8
.string "That is indeed magnificent!\n"
.string "It’s the birth of a new legend!$"
-MauvilleCity_PokemonCenter_1F_Text_1AEE50:: @ 81AEE50
+gTextStoryteller_CouldThereBeOtherTrainers:: @ 81AEE50
.string "It gets me thinking, could there be\n"
.string "other TRAINERS with more impressive\l"
.string "legends awaiting discovery?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEEB4:: @ 81AEEB4
+gTextStoryteller_HaveYouAnyTales:: @ 81AEEB4
.string "Are you a TRAINER?\p"
.string "Then tell me, have you any tales that\n"
.string "are even remotely legendary?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEF0A:: @ 81AEF0A
+gTextStoryteller_HearAnotherLegendaryTale:: @ 81AEF0A
.string "Incidentally... Would you care to hear\n"
.string "another legendary tale?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEF49:: @ 81AEF49
+gTextStoryteller_ImNotSatisfied:: @ 81AEF49
.string "Hmm...\n"
.string "I’m not satisfied...\p"
.string "I wish you would bring me news worthy\n"
.string "of being called a legend.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEFA5:: @ 81AEFA5
+gTextStoryteller_WishMorePeopleWould:: @ 81AEFA5
.string "I wish more people would be interested\n"
.string "in hearing my epic tales of legendary\l"
.string "TRAINERS.$"
-UnknownString_81AEFFC:: @ 81AEFFC
+gTextStoryteller_Story1Title:: @ 81AEFFC
.string "The Save-Happy TRAINER$"
-UnknownString_81AF013:: @ 81AF013
+gTextStoryteller_Story1Action:: @ 81AF013
.string "Saved the game$"
-UnknownString_81AF022:: @ 81AF022
+gTextStoryteller_Story1Text:: @ 81AF022
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER saved the game\n"
@@ -65,13 +65,13 @@ UnknownString_81AF022:: @ 81AF022
.string "A more cautious TRAINER than\n"
.string "{STR_VAR_3} one will never find!$"
-UnknownString_81AF0A3:: @ 81AF0A3
+gTextStoryteller_Story2Title:: @ 81AF0A3
.string "The Trendsetter TRAINER$"
-UnknownString_81AF0BB:: @ 81AF0BB
+gTextStoryteller_Story2Action:: @ 81AF0BB
.string "Started trends$"
-UnknownString_81AF0CA:: @ 81AF0CA
+gTextStoryteller_Story2Text:: @ 81AF0CA
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER started new trends\n"
@@ -79,13 +79,13 @@ UnknownString_81AF0CA:: @ 81AF0CA
.string "{STR_VAR_3} is setting trends for all\n"
.string "the HOENN region!$"
-UnknownString_81AF149:: @ 81AF149
+gTextStoryteller_Story3Title:: @ 81AF149
.string "The BERRY-Planting TRAINER$"
-UnknownString_81AF164:: @ 81AF164
+gTextStoryteller_Story3Action:: @ 81AF164
.string "Planted BERRIES$"
-UnknownString_81AF174:: @ 81AF174
+gTextStoryteller_Story3Text:: @ 81AF174
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER planted BERRIES\n"
@@ -93,13 +93,13 @@ UnknownString_81AF174:: @ 81AF174
.string "{STR_VAR_3} is a legendary lover of\n"
.string "BERRIES!$"
-UnknownString_81AF1E5:: @ 81AF1E5
+gTextStoryteller_Story4Title:: @ 81AF1E5
.string "The BIKE-Loving TRAINER$"
-UnknownString_81AF1FD:: @ 81AF1FD
+gTextStoryteller_Story4Action:: @ 81AF1FD
.string "Traded BIKES$"
-UnknownString_81AF20A:: @ 81AF20A
+gTextStoryteller_Story4Text:: @ 81AF20A
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER swapped BIKES\n"
@@ -107,13 +107,13 @@ UnknownString_81AF20A:: @ 81AF20A
.string "{STR_VAR_3} must love BIKES deeply\n"
.string "and passionately!$"
-UnknownString_81AF281:: @ 81AF281
+gTextStoryteller_Story5Title:: @ 81AF281
.string "The Interviewed TRAINER$"
-UnknownString_81AF299:: @ 81AF299
+gTextStoryteller_Story5Action:: @ 81AF299
.string "Got interviewed$"
-UnknownString_81AF2A9:: @ 81AF2A9
+gTextStoryteller_Story5Text:: @ 81AF2A9
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER got interviewed\n"
@@ -121,26 +121,26 @@ UnknownString_81AF2A9:: @ 81AF2A9
.string "{STR_VAR_3} must be a TRAINER who’s\n"
.string "attracting much attention!$"
-UnknownString_81AF32C:: @ 81AF32C
+gTextStoryteller_Story6Title:: @ 81AF32C
.string "The Battle-Happy TRAINER$"
-UnknownString_81AF345:: @ 81AF345
+gTextStoryteller_Story6Action:: @ 81AF345
.string "Battled$"
-UnknownString_81AF34D:: @ 81AF34D
+gTextStoryteller_Story6Text:: @ 81AF34D
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER battled {STR_VAR_1} times!\p"
.string "{STR_VAR_3} must be a TRAINER who can\n"
.string "never refuse a chance to battle!$"
-UnknownString_81AF3D0:: @ 81AF3D0
+gTextStoryteller_Story7Title:: @ 81AF3D0
.string "The POKéMON-Catching TRAINER$"
-UnknownString_81AF3ED:: @ 81AF3ED
+gTextStoryteller_Story7Action:: @ 81AF3ED
.string "Caught POKéMON$"
-UnknownString_81AF3FC:: @ 81AF3FC
+gTextStoryteller_Story7Text:: @ 81AF3FC
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER caught\n"
@@ -148,13 +148,13 @@ UnknownString_81AF3FC:: @ 81AF3FC
.string "{STR_VAR_3} is a legendary catcher of\n"
.string "wild POKéMON!$"
-UnknownString_81AF46D:: @ 81AF46D
+gTextStoryteller_Story8Title:: @ 81AF46D
.string "The Fishing TRAINER$"
-UnknownString_81AF481:: @ 81AF481
+gTextStoryteller_Story8Action:: @ 81AF481
.string "Caught POKéMON with a ROD$"
-UnknownString_81AF49B:: @ 81AF49B
+gTextStoryteller_Story8Text:: @ 81AF49B
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER caught\n"
@@ -162,13 +162,13 @@ UnknownString_81AF49B:: @ 81AF49B
.string "{STR_VAR_3} is a legendary fishing\n"
.string "expert!$"
-UnknownString_81AF511:: @ 81AF511
+gTextStoryteller_Story9Title:: @ 81AF511
.string "The EGG-Warming TRAINER$"
-UnknownString_81AF529:: @ 81AF529
+gTextStoryteller_Story9Action:: @ 81AF529
.string "Hatched EGGS$"
-UnknownString_81AF536:: @ 81AF536
+gTextStoryteller_Story9Text:: @ 81AF536
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER hatched {STR_VAR_1} POKéMON\n"
@@ -176,13 +176,13 @@ UnknownString_81AF536:: @ 81AF536
.string "{STR_VAR_3} is a legendary warmer\n"
.string "of EGGS!$"
-UnknownString_81AF5A9:: @ 81AF5A9
+gTextStoryteller_Story10Title:: @ 81AF5A9
.string "The Evolver TRAINER$"
-UnknownString_81AF5BD:: @ 81AF5BD
+gTextStoryteller_Story10Action:: @ 81AF5BD
.string "Evolved POKéMON$"
-UnknownString_81AF5CD:: @ 81AF5CD
+gTextStoryteller_Story10Text:: @ 81AF5CD
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER made {STR_VAR_1} POKéMON\n"
@@ -190,13 +190,13 @@ UnknownString_81AF5CD:: @ 81AF5CD
.string "{STR_VAR_3} is the ultimate evolver\n"
.string "of POKéMON!$"
-UnknownString_81AF63F:: @ 81AF63F
+gTextStoryteller_Story11Title:: @ 81AF63F
.string "The POKéMON CENTER-Loving TRAINER$"
-UnknownString_81AF661:: @ 81AF661
+gTextStoryteller_Story11Action:: @ 81AF661
.string "Used POKéMON CENTERS$"
-UnknownString_81AF676:: @ 81AF676
+gTextStoryteller_Story11Text:: @ 81AF676
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER healed POKéMON\n"
@@ -204,13 +204,13 @@ UnknownString_81AF676:: @ 81AF676
.string "There could be no greater lover of\n"
.string "POKéMON CENTERS than {STR_VAR_3}!$"
-UnknownString_81AF711:: @ 81AF711
+gTextStoryteller_Story12Title:: @ 81AF711
.string "The Homebody TRAINER$"
-UnknownString_81AF726:: @ 81AF726
+gTextStoryteller_Story12Action:: @ 81AF726
.string "Rested POKéMON at home$"
-UnknownString_81AF73D:: @ 81AF73D
+gTextStoryteller_Story12Text:: @ 81AF73D
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER healed POKéMON\n"
@@ -218,13 +218,13 @@ UnknownString_81AF73D:: @ 81AF73D
.string "There could be no more of a homebody\n"
.string "than {STR_VAR_3}!$"
-UnknownString_81AF7BF:: @ 81AF7BF
+gTextStoryteller_Story13Title:: @ 81AF7BF
.string "The SAFARI-Loving TRAINER$"
-UnknownString_81AF7D9:: @ 81AF7D9
+gTextStoryteller_Story13Action:: @ 81AF7D9
.string "Entered the SAFARI ZONE$"
-UnknownString_81AF7F1:: @ 81AF7F1
+gTextStoryteller_Story13Text:: @ 81AF7F1
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER went into the SAFARI ZONE\n"
@@ -232,13 +232,13 @@ UnknownString_81AF7F1:: @ 81AF7F1
.string "{STR_VAR_3} is a TRAINER whose wild side\n"
.string "must come out in the SAFARI ZONE!$"
-UnknownString_81AF88A:: @ 81AF88A
+gTextStoryteller_Story14Title:: @ 81AF88A
.string "The CUT-Frenzy TRAINER$"
-UnknownString_81AF8A1:: @ 81AF8A1
+gTextStoryteller_Story14Action:: @ 81AF8A1
.string "Used CUT$"
-UnknownString_81AF8AA:: @ 81AF8AA
+gTextStoryteller_Story14Text:: @ 81AF8AA
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER used CUT\n"
@@ -246,13 +246,13 @@ UnknownString_81AF8AA:: @ 81AF8AA
.string "{STR_VAR_3} is a TRAINER who just must\n"
.string "love to CUT!$"
-UnknownString_81AF91B:: @ 81AF91B
+gTextStoryteller_Story15Title:: @ 81AF91B
.string "The ROCK-SMASHING TRAINER$"
-UnknownString_81AF935:: @ 81AF935
+gTextStoryteller_Story15Action:: @ 81AF935
.string "Smashed rocks$"
-UnknownString_81AF943:: @ 81AF943
+gTextStoryteller_Story15Text:: @ 81AF943
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER used ROCK SMASH\n"
@@ -260,13 +260,13 @@ UnknownString_81AF943:: @ 81AF943
.string "{STR_VAR_3} must be a TRAINER who\n"
.string "can’t leave a stone unsmashed!$"
-UnknownString_81AF9C8:: @ 81AF9C8
+gTextStoryteller_Story16Title:: @ 81AF9C8
.string "The Move-Loving TRAINER$"
-UnknownString_81AF9E0:: @ 81AF9E0
+gTextStoryteller_Story16Action:: @ 81AF9E0
.string "Moved the SECRET BASE$"
-UnknownString_81AF9F6:: @ 81AF9F6
+gTextStoryteller_Story16Text:: @ 81AF9F6
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER moved the SECRET BASE\n"
@@ -274,13 +274,13 @@ UnknownString_81AF9F6:: @ 81AF9F6
.string "{STR_VAR_3} is a TRAINER who loves\n"
.string "to move houses often!$"
-UnknownString_81AFA79:: @ 81AFA79
+gTextStoryteller_Story17Title:: @ 81AFA79
.string "The SPLASH-Happy TRAINER$"
-UnknownString_81AFA92:: @ 81AFA92
+gTextStoryteller_Story17Action:: @ 81AFA92
.string "Used SPLASH$"
-UnknownString_81AFA9E:: @ 81AFA9E
+gTextStoryteller_Story17Text:: @ 81AFA9E
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER used SPLASH\n"
@@ -288,13 +288,13 @@ UnknownString_81AFA9E:: @ 81AFA9E
.string "{STR_VAR_3} is a TRAINER who must love\n"
.string "SPLASHING around!$"
-UnknownString_81AFB17:: @ 81AFB17
+gTextStoryteller_Story18Title:: @ 81AFB17
.string "The Tenacious TRAINER$"
-UnknownString_81AFB2D:: @ 81AFB2D
+gTextStoryteller_Story18Action:: @ 81AFB2D
.string "Resorted to using STRUGGLE$"
-UnknownString_81AFB48:: @ 81AFB48
+gTextStoryteller_Story18Text:: @ 81AFB48
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER had to rely on STRUGGLE\n"
@@ -302,13 +302,13 @@ UnknownString_81AFB48:: @ 81AFB48
.string "{STR_VAR_3} is a tenacious TRAINER\n"
.string "who never gives in to adversity!$"
-UnknownString_81AFBD8:: @ 81AFBD8
+gTextStoryteller_Story19Title:: @ 81AFBD8
.string "The SLOT Champ$"
-UnknownString_81AFBE7:: @ 81AFBE7
+gTextStoryteller_Story19Action:: @ 81AFBE7
.string "Won the jackpot on the SLOTS$"
-UnknownString_81AFC04:: @ 81AFC04
+gTextStoryteller_Story19Text:: @ 81AFC04
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER won the jackpot on\n"
@@ -316,13 +316,13 @@ UnknownString_81AFC04:: @ 81AFC04
.string "{STR_VAR_3} is a TRAINER who was lucky\n"
.string "on the SLOTS!$"
-UnknownString_81AFC8A:: @ 81AFC8A
+gTextStoryteller_Story20Title:: @ 81AFC8A
.string "The ROULETTE Champ$"
-UnknownString_81AFC9D:: @ 81AFC9D
+gTextStoryteller_Story20Action:: @ 81AFC9D
.string "Had consecutive ROULETTE wins of$"
-UnknownString_81AFCBE:: @ 81AFCBE
+gTextStoryteller_Story20Text:: @ 81AFCBE
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER won in ROULETTE\n"
@@ -330,13 +330,13 @@ UnknownString_81AFCBE:: @ 81AFCBE
.string "{STR_VAR_3} was lucky when the ball\n"
.string "bounced in ROULETTE!$"
-UnknownString_81AFD44:: @ 81AFD44
+gTextStoryteller_Story21Title:: @ 81AFD44
.string "The BATTLE TOWER Challenger$"
-UnknownString_81AFD60:: @ 81AFD60
+gTextStoryteller_Story21Action:: @ 81AFD60
.string "Took the BATTLE TOWER challenge$"
-UnknownString_81AFD80:: @ 81AFD80
+gTextStoryteller_Story21Text:: @ 81AFD80
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER took the BATTLE TOWER\n"
@@ -344,13 +344,13 @@ UnknownString_81AFD80:: @ 81AFD80
.string "{STR_VAR_3} is a TRAINER who aspires\n"
.string "for excellence in the BATTLE TOWER!$"
-UnknownString_81AFE1D:: @ 81AFE1D
+gTextStoryteller_Story22Title:: @ 81AFE1D
.string "The Blend-Loving TRAINER$"
-UnknownString_81AFE36:: @ 81AFE36
+gTextStoryteller_Story22Action:: @ 81AFE36
.string "Made {POKEBLOCK}S$"
-UnknownString_81AFE42:: @ 81AFE42
+gTextStoryteller_Story22Text:: @ 81AFE42
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER made {POKEBLOCK}S\n"
@@ -358,13 +358,13 @@ UnknownString_81AFE42:: @ 81AFE42
.string "There is none better at using a BERRY\n"
.string "BLENDER than {STR_VAR_3}!$"
-UnknownString_81AFEC2:: @ 81AFEC2
+gTextStoryteller_Story23Title:: @ 81AFEC2
.string "The CONTEST-Loving TRAINER$"
-UnknownString_81AFEDD:: @ 81AFEDD
+gTextStoryteller_Story23Action:: @ 81AFEDD
.string "Entered CONTESTS$"
-UnknownString_81AFEEE:: @ 81AFEEE
+gTextStoryteller_Story23Text:: @ 81AFEEE
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER entered CONTESTS\n"
@@ -372,13 +372,13 @@ UnknownString_81AFEEE:: @ 81AFEEE
.string "{STR_VAR_3} must love showing off\n"
.string "POKéMON to others!$"
-UnknownString_81AFF68:: @ 81AFF68
+gTextStoryteller_Story24Title:: @ 81AFF68
.string "The CONTEST Master$"
-UnknownString_81AFF7B:: @ 81AFF7B
+gTextStoryteller_Story24Action:: @ 81AFF7B
.string "Won CONTESTS$"
-UnknownString_81AFF88:: @ 81AFF88
+gTextStoryteller_Story24Text:: @ 81AFF88
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER won CONTESTS\n"
@@ -386,13 +386,13 @@ UnknownString_81AFF88:: @ 81AFF88
.string "{STR_VAR_3} must be an incredible\n"
.string "CONTEST master!$"
-UnknownString_81AFFFB:: @ 81AFFFB
+gTextStoryteller_Story25Title:: @ 81AFFFB
.string "The Happy Shopper$"
-UnknownString_81B000D:: @ 81B000D
+gTextStoryteller_Story25Action:: @ 81B000D
.string "Shopped$"
-UnknownString_81B0015:: @ 81B0015
+gTextStoryteller_Story25Text:: @ 81B0015
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER bought items in shops\n"
@@ -400,13 +400,13 @@ UnknownString_81B0015:: @ 81B0015
.string "{STR_VAR_3} must be one of those\n"
.string "people who are born to shop.$"
-UnknownString_81B009D:: @ 81B009D
+gTextStoryteller_Story26Title:: @ 81B009D
.string "The Item-Finding TRAINER$"
-UnknownString_81B00B6:: @ 81B00B6
+gTextStoryteller_Story26Action:: @ 81B00B6
.string "Used an ITEMFINDER$"
-UnknownString_81B00C9:: @ 81B00C9
+gTextStoryteller_Story26Text:: @ 81B00C9
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER used an ITEMFINDER\n"
@@ -414,13 +414,13 @@ UnknownString_81B00C9:: @ 81B00C9
.string "{STR_VAR_3} must enjoy scouring the\n"
.string "ground for hidden items!$"
-UnknownString_81B014D:: @ 81B014D
+gTextStoryteller_Story27Title:: @ 81B014D
.string "The Rain-Soaked TRAINER$"
-UnknownString_81B0165:: @ 81B0165
+gTextStoryteller_Story27Action:: @ 81B0165
.string "Got rained on$"
-UnknownString_81B0173:: @ 81B0173
+gTextStoryteller_Story27Text:: @ 81B0173
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER got soaked by rain\n"
@@ -428,13 +428,13 @@ UnknownString_81B0173:: @ 81B0173
.string "{STR_VAR_3}’s charisma must even\n"
.string "attract rain!$"
-UnknownString_81B01E9:: @ 81B01E9
+gTextStoryteller_Story28Title:: @ 81B01E9
.string "The Avid POKéDEX Reader$"
-UnknownString_81B0201:: @ 81B0201
+gTextStoryteller_Story28Action:: @ 81B0201
.string "Checked a POKéDEX$"
-UnknownString_81B0213:: @ 81B0213
+gTextStoryteller_Story28Text:: @ 81B0213
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER checked a POKéDEX\n"
@@ -442,13 +442,13 @@ UnknownString_81B0213:: @ 81B0213
.string "{STR_VAR_3} must love inspecting\n"
.string "POKéMON in a POKéDEX!$"
-UnknownString_81B0290:: @ 81B0290
+gTextStoryteller_Story29Title:: @ 81B0290
.string "The RIBBON Collector$"
-UnknownString_81B02A5:: @ 81B02A5
+gTextStoryteller_Story29Action:: @ 81B02A5
.string "Received RIBBONS$"
-UnknownString_81B02B6:: @ 81B02B6
+gTextStoryteller_Story29Text:: @ 81B02B6
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER received RIBBONS\n"
@@ -456,13 +456,13 @@ UnknownString_81B02B6:: @ 81B02B6
.string "{STR_VAR_3} must be a TRAINER who\n"
.string "loves to collect RIBBONS!$"
-UnknownString_81B0337:: @ 81B0337
+gTextStoryteller_Story30Title:: @ 81B0337
.string "The Ledge-Jumping TRAINER$"
-UnknownString_81B0351:: @ 81B0351
+gTextStoryteller_Story30Action:: @ 81B0351
.string "Jumped down ledges$"
-UnknownString_81B0364:: @ 81B0364
+gTextStoryteller_Story30Text:: @ 81B0364
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER jumped down ledges\n"
@@ -470,26 +470,26 @@ UnknownString_81B0364:: @ 81B0364
.string "If there’s a ledge to be jumped,\n"
.string "{STR_VAR_3} can’t ignore it!$"
-UnknownString_81B03E9:: @ 81B03E9
+gTextStoryteller_Story31Title:: @ 81B03E9
.string "The Legendary TV Viewer$"
-UnknownString_81B0401:: @ 81B0401
+gTextStoryteller_Story31Action:: @ 81B0401
.string "Watched TV$"
-UnknownString_81B040C:: @ 81B040C
+gTextStoryteller_Story31Text:: @ 81B040C
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER watched TV\n"
.string "{STR_VAR_1} times!\p"
.string "{STR_VAR_3} must love watching TV!$"
-UnknownString_81B046E:: @ 81B046E
+gTextStoryteller_Story32Title:: @ 81B046E
.string "The Time-Conscious TRAINER$"
-UnknownString_81B0489:: @ 81B0489
+gTextStoryteller_Story32Action:: @ 81B0489
.string "Checked the time$"
-UnknownString_81B049A:: @ 81B049A
+gTextStoryteller_Story32Text:: @ 81B049A
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER checked the time\n"
@@ -497,13 +497,13 @@ UnknownString_81B049A:: @ 81B049A
.string "{STR_VAR_3} must be a punctual TRAINER\n"
.string "who’s conscious of the time.$"
-UnknownString_81B0523:: @ 81B0523
+gTextStoryteller_Story33Title:: @ 81B0523
.string "The POKéMON LOTTERY Wizard$"
-UnknownString_81B053E:: @ 81B053E
+gTextStoryteller_Story33Action:: @ 81B053E
.string "Won POKéMON LOTTERIES$"
-UnknownString_81B0554:: @ 81B0554
+gTextStoryteller_Story33Text:: @ 81B0554
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER won POKéMON LOTTERIES\n"
@@ -511,13 +511,13 @@ UnknownString_81B0554:: @ 81B0554
.string "{STR_VAR_3} must have many friends\n"
.string "to trade POKéMON with!$"
-UnknownString_81B05D8:: @ 81B05D8
+gTextStoryteller_Story34Title:: @ 81B05D8
.string "The DAY CARE-Using Trainer$"
-UnknownString_81B05F3:: @ 81B05F3
+gTextStoryteller_Story34Action:: @ 81B05F3
.string "Left POKéMON at the DAY CARE$"
-UnknownString_81B0610:: @ 81B0610
+gTextStoryteller_Story34Text:: @ 81B0610
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER left POKéMON with the\n"
@@ -525,13 +525,13 @@ UnknownString_81B0610:: @ 81B0610
.string "{STR_VAR_3} must be a real go-getter\n"
.string "who raises POKéMON aggressively!$"
-UnknownString_81B06A9:: @ 81B06A9
+gTextStoryteller_Story35Title:: @ 81B06A9
.string "The CABLE CAR-Loving TRAINER$"
-UnknownString_81B06C6:: @ 81B06C6
+gTextStoryteller_Story35Action:: @ 81B06C6
.string "Rode the CABLE CAR$"
-UnknownString_81B06D9:: @ 81B06D9
+gTextStoryteller_Story35Text:: @ 81B06D9
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER rode the CABLE CAR\n"
@@ -539,13 +539,13 @@ UnknownString_81B06D9:: @ 81B06D9
.string "{STR_VAR_3} must be a busy TRAINER\n"
.string "who’s up and down all the time!$"
-UnknownString_81B0763:: @ 81B0763
+gTextStoryteller_Story36Title:: @ 81B0763
.string "The Hot Spring-Loving TRAINER$"
-UnknownString_81B0781:: @ 81B0781
+gTextStoryteller_Story36Action:: @ 81B0781
.string "Bathed in hot springs$"
-UnknownString_81B0797:: @ 81B0797
+gTextStoryteller_Story36Text:: @ 81B0797
.string "This is a tale of a TRAINER\n"
.string "named {STR_VAR_3}.\p"
.string "This TRAINER bathed in hot springs\n"
diff --git a/data/text/trader.inc b/data/text/trader.inc
index dba63bcf8..599344091 100644
--- a/data/text/trader.inc
+++ b/data/text/trader.inc
@@ -1,57 +1,57 @@
-MauvilleCity_PokemonCenter_1F_Text_1AE88F:: @ 81AE88F
+gTextTrader_Introduction:: @ 81AE88F
.string "Hi, I’m the TRADER.\n"
.string "Want to trade decorations with me?$"
-MauvilleCity_PokemonCenter_1F_Text_1AE8C6:: @ 81AE8C6
+gTextTrader_FeelUnwanted1:: @ 81AE8C6
.string "Oh...\n"
.string "I feel unwanted...$"
-MauvilleCity_PokemonCenter_1F_Text_1AE8DF:: @ 81AE8DF
+gTextTrader_TradedAlready:: @ 81AE8DF
.string "But we’ve traded decorations already,\n"
.string "you and I.$"
-MauvilleCity_PokemonCenter_1F_Text_1AE910:: @ 81AE910
+gTextTrader_MenuPrompt:: @ 81AE910
.string "If you see any decorative item that\n"
.string "you want of mine, speak up.$"
-MauvilleCity_PokemonCenter_1F_Text_1AE950:: @ 81AE950
+gTextTrader_DontWantAnything:: @ 81AE950
.string "You don’t want anything?\n"
.string "I feel unwanted...$"
-MauvilleCity_PokemonCenter_1F_Text_1AE97C:: @ 81AE97C
+gTextTrader_ItemOnceBelongedTo:: @ 81AE97C
.string "That decorative item once belonged\n"
.string "to {STR_VAR_1}.\p"
.string "Do you want it?$"
-MauvilleCity_PokemonCenter_1F_Text_1AE9B6:: @ 81AE9B6
+gTextTrader_YouDontHaveDecorations:: @ 81AE9B6
.string "Uh... Wait a second. You don’t have a\n"
.string "single piece of decoration!$"
-MauvilleCity_PokemonCenter_1F_Text_1AE9F8:: @ 81AE9F8
+gTextTrader_PickDecorationYoullTrade:: @ 81AE9F8
.string "Okay, pick the decoration that you’ll\n"
.string "trade to me.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEA2B:: @ 81AEA2B
+gTextTrader_FeelUnwanted2:: @ 81AEA2B
.string "You won’t trade with me?\n"
.string "I feel unwanted...$"
-MauvilleCity_PokemonCenter_1F_Text_1AEA57:: @ 81AEA57
+gTextTrader_NoRoomForThis:: @ 81AEA57
.string "You’ve got all the {STR_VAR_2}S that can\n"
.string "be stored. You’ve no room for this.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEA9B:: @ 81AEA9B
+gTextTrader_SoWellTrade:: @ 81AEA9B
.string "Okay, so we’ll trade my {STR_VAR_3}\n"
.string "for your {STR_VAR_2}?$"
-MauvilleCity_PokemonCenter_1F_Text_1AEAC3:: @ 81AEAC3
+gTextTrader_InUseYouCantTradeIt:: @ 81AEAC3
.string "That piece of decoration is in use.\n"
.string "You can’t trade it.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEAFB:: @ 81AEAFB
+gTextTrader_ThenWellTrade:: @ 81AEAFB
.string "Then we’ll trade!\n"
.string "I’ll send my decoration to your PC.$"
-MauvilleCity_PokemonCenter_1F_Text_1AEB31:: @ 81AEB31
+gTextTrader_ICantTradeThatOneAway:: @ 81AEB31
.string "Oops! Sorry!\n"
.string "That’s a really rare piece of decoration.\l"
.string "I can’t trade that one away!\p"
diff --git a/data/trade.s b/data/trade.s
deleted file mode 100644
index 8f96a72b1..000000000
--- a/data/trade.s
+++ /dev/null
@@ -1,774 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
- .byte 0x90, 0x08, 0x00, 0x00
- .byte 0xC0, 0x3A, 0x00, 0x00
- .byte 0x1C, 0x00, 0x00, 0x00
- .byte 0x30, 0x05, 0x00, 0x00
- .byte 0x24, 0x00, 0x00, 0x00
- .byte 0x64, 0x00, 0x00, 0x00
- .byte 0xD8, 0x04, 0x00, 0x00
-
- .align 1
-gTradeMovesBoxTilemap:: @ 820ABF0
- .incbin "graphics/trade/moves_box_map.bin"
-
- .align 1
-gTradePartyBoxTilemap:: @ 820ADEE
- .incbin "graphics/trade/party_box_map.bin"
-
- .align 2
-gTradeStripesBG2Tilemap:: @ 820AFEC
- .incbin "graphics/trade/stripes_bg2_map.bin"
-
- .align 2
-gTradeStripesBG3Tilemap:: @ 820B7EC
- .incbin "graphics/trade/stripes_bg3_map.bin"
-
- .align 2
-gOamData_820BFEC:: @ 820BFEC
- .2byte 0x4000
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_820BFF4:: @ 820BFF4
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820BFFC:: @ 820BFFC
- obj_image_anim_frame 8, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820C004:: @ 820C004
- obj_image_anim_frame 16, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820C00C:: @ 820C00C
- obj_image_anim_frame 24, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820C014:: @ 820C014
- obj_image_anim_frame 32, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820C01C:: @ 820C01C
- obj_image_anim_frame 40, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_820C024:: @ 820C024
- .4byte gSpriteAnim_820BFF4
- .4byte gSpriteAnim_820BFFC
- .4byte gSpriteAnim_820C004
- .4byte gSpriteAnim_820C00C
- .4byte gSpriteAnim_820C014
- .4byte gSpriteAnim_820C01C
-
- .align 2
-TradeScreenTextPalette: @ 820C03C
- .incbin "graphics/trade/text1.gbapal"
- .incbin "graphics/trade/text2.gbapal" @ unused?
-
- .align 2
-gUnknown_0820C07C:: @ 820C07C
- obj_tiles 0x0201d000, 256, 0x00c8
- obj_tiles 0x0201d100, 256, 0x00c9
- obj_tiles 0x0201d200, 256, 0x00ca
- obj_tiles 0x0201d300, 256, 0x00cb
- obj_tiles 0x0201d400, 256, 0x00cc
- obj_tiles 0x0201d500, 256, 0x00cd
- obj_tiles 0x0201d600, 256, 0x00ce
- obj_tiles 0x0201d700, 256, 0x00cf
- obj_tiles 0x0201d800, 256, 0x00d0
- obj_tiles 0x0201d900, 256, 0x00d1
- obj_tiles 0x0201da00, 256, 0x00d2
- obj_tiles 0x0201db00, 256, 0x00d3
- obj_tiles 0x0201dc00, 256, 0x00d4
-
- .align 2
-gSpritePalette_TradeScreenText:: @ 820C0E4
- obj_pal TradeScreenTextPalette, 4925
-
- .align 2
-gSpriteTemplate_820C0EC:: @ 820C0EC
- spr_template 200, 4925, gOamData_820BFEC, gSpriteAnimTable_820C024, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gOamData_820C104:: @ 820C104
- .2byte 0x4000
- .2byte 0xC000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_820C10C:: @ 820C10C
- obj_image_anim_frame 0, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_820C114:: @ 820C114
- obj_image_anim_frame 32, 5
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_820C11C:: @ 820C11C
- .4byte gSpriteAnim_820C10C
- .4byte gSpriteAnim_820C114
-
- .align 2
-gUnknown_0820C124:: @ 820C124
- obj_tiles gUnknown_08EA1DEC, 0x800, 300
-
- .align 2
-gUnknown_0820C12C:: @ 820C12C
- obj_pal gUnknown_08EA0328, 2345
-
- .align 2
-gSpriteTemplate_820C134:: @ 820C134
- spr_template 300, 2345, gOamData_820C104, gSpriteAnimTable_820C11C, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
- .align 2
-gUnknown_0820C14C:: @ 820C14C
- .4byte TradeText_Cancel
- .4byte TradeText_ChoosePoke
- .4byte TradeText_Summary1
- .4byte TradeText_Trade1
- .4byte TradeText_CancelTradePrompt
- .4byte TradeText_PressBToExit
-
-@ This is used to determine the next mon to select when the D-Pad is
-@ pressed in a given direction.
-@ Note that the mons are laid out like this.
-@ 0-5 are the player's party and 6-11 are the trading partner's party.
-@ 12 is the cancel button.
-@ 0 1 6 7
-@ 2 3 8 9
-@ 4 5 10 11
-@ 12
-gTradeNextSelectedMonTable:: @ 820C164
- @ 0
- .byte 4, 2, 12, 12, 0, 0 @ up
- .byte 2, 4, 12, 12, 0, 0 @ down
- .byte 7, 6, 1, 0, 0, 0 @ left
- .byte 1, 6, 7, 0, 0, 0 @ right
- @ 1
- .byte 5, 3, 12, 12, 0, 0 @ up
- .byte 3, 5, 12, 12, 0, 0 @ down
- .byte 0, 7, 6, 1, 0, 0 @ left
- .byte 6, 7, 0, 1, 0, 0 @ right
- @ 2
- .byte 0, 0, 0, 0, 0, 0 @ up
- .byte 4, 0, 0, 0, 0, 0 @ down
- .byte 9, 8, 7, 6, 0, 0 @ left
- .byte 3, 1, 0, 0, 0, 0 @ right
- @ 3
- .byte 1, 1, 1, 1, 0, 0 @ up
- .byte 5, 1, 1, 1, 0, 0 @ down
- .byte 2, 9, 8, 7, 0, 0 @ left
- .byte 8, 9, 6, 6, 0, 0 @ right
- @ 4
- .byte 2, 2, 2, 2, 0, 0 @ up
- .byte 0, 0, 0, 0, 0, 0 @ down
- .byte 11, 10, 9, 8, 7, 6 @ left
- .byte 5, 3, 1, 0, 0, 0 @ right
- @ 5
- .byte 3, 3, 3, 3, 0, 0 @ up
- .byte 1, 1, 1, 1, 0, 0 @ down
- .byte 4, 4, 4, 4, 0, 0 @ left
- .byte 10, 8, 6, 0, 0, 0 @ right
- @ 6
- .byte 10, 8, 12, 0, 0, 0 @ up
- .byte 8, 10, 12, 0, 0, 0 @ down
- .byte 1, 0, 0, 0, 0, 0 @ left
- .byte 7, 0, 1, 0, 0, 0 @ right
- @ 7
- .byte 12, 0, 0, 0, 0, 0 @ up
- .byte 9, 12, 0, 0, 0, 0 @ down
- .byte 6, 0, 0, 0, 0, 0 @ left
- .byte 0, 0, 0, 0, 0, 0 @ right
- @ 8
- .byte 6, 0, 0, 0, 0, 0 @ up
- .byte 10, 6, 0, 0, 0, 0 @ down
- .byte 3, 2, 1, 0, 0, 0 @ left
- .byte 9, 7, 0, 0, 0, 0 @ right
- @ 9
- .byte 7, 0, 0, 0, 0, 0 @ up
- .byte 11, 12, 0, 0, 0, 0 @ down
- .byte 8, 0, 0, 0, 0, 0 @ left
- .byte 2, 1, 0, 0, 0, 0 @ right
- @ 10
- .byte 8, 0, 0, 0, 0, 0 @ up
- .byte 6, 0, 0, 0, 0, 0 @ down
- .byte 5, 4, 3, 2, 1, 0 @ left
- .byte 11, 9, 7, 0, 0, 0 @ right
- @ 11
- .byte 9, 0, 0, 0, 0, 0 @ up
- .byte 12, 0, 0, 0, 0, 0 @ down
- .byte 10, 0, 0, 0, 0, 0 @ left
- .byte 4, 2, 0, 0, 0, 0 @ right
- @ 12
- .byte 11, 9, 7, 6, 0, 0 @ up
- .byte 7, 6, 0, 0, 0, 0 @ down
- .byte 12, 0, 0, 0, 0, 0 @ left
- .byte 12, 0, 0, 0, 0, 0 @ right
-
-@ The coordinates are in units of tiles.
-@ These are used for both mon icons and the selected mon cursor,
-@ but the origins of the coordinates differ.
-gTradeMonSpriteCoords:: @ 820C29C
- @ left-side party
- .byte 1, 5
- .byte 8, 5
- .byte 1, 10
- .byte 8, 10
- .byte 1, 15
- .byte 8, 15
-
- @ right-side party
- .byte 16, 5
- .byte 23, 5
- .byte 16, 10
- .byte 23, 10
- .byte 16, 15
- .byte 23, 15
-
- @ cancel button
- .byte 23, 18
-
-gTradeLevelDisplayCoords:: @ 820C2B6
- @ left-side party
- .byte 5, 4
- .byte 12, 4
- .byte 5, 9
- .byte 12, 9
- .byte 5, 14
- .byte 12, 14
-
- @ right-side party
- .byte 20, 4
- .byte 27, 4
- .byte 20, 9
- .byte 27, 9
- .byte 20, 14
- .byte 27, 14
-
-gTradeMonBoxCoords:: @ 820C2CE
- @ left-side party
- .byte 1, 3
- .byte 8, 3
- .byte 1, 8
- .byte 8, 8
- .byte 1, 13
- .byte 8, 13
-
- @ right-side party
- .byte 16, 3
- .byte 23, 3
- .byte 16, 8
- .byte 23, 8
- .byte 16, 13
- .byte 23, 13
-
-gTradeUnknownSpriteCoords:: @ 820C2E6
- .byte 59, 10
- .byte 179, 10
- .byte 59, 10
- .byte 179, 10
-
- .align 2
-gUnknown_0820C2F0:: @ 820C2F0
- .4byte TradeText_LinkStandby
- .4byte TradeText_TradeCancelled
- .4byte TradeText_OnlyPoke
- .4byte TradeText_NonTradablePoke
- .4byte TradeText_WaitingForFriend
- .4byte TradeText_WantToTrade
-
-gTradeMessageWindowRects:: @ 820C308
- .byte 8, 7, 22, 12
- .byte 8, 7, 22, 12
- .byte 6, 7, 24, 12
- .byte 6, 7, 24, 12
- .byte 8, 7, 22, 12
- .byte 7, 7, 23, 12
-
- .align 2
-gUnknown_0820C320:: @ 820C320
- .4byte TradeText_Summary2, sub_804A9F4 @unknown
- .4byte TradeText_Trade2, sub_804AA00
-
-gUnknown_0820C330:: @ 820C330
- .byte 0, 14
- .byte 15, 29
-
-gUnknown_0820C334:: @ 820C334
- .byte 3, 5
- .byte 3, 7
- .byte 18, 5
- .byte 18, 7
-
-gOtherText_Terminator::
- .string "$"
-
-gOtherText_MaleSymbol3:: @ 820C33D
- .string "♂$"
-
-gOtherText_FemaleSymbol3:: @ 820C33F
- .string "♀$"
-
-gOtherText_GenderlessSymbol:: @ 820C341
- .string "$$"
-
- .align 2
- .4byte gTileBuffer
-
-@ Unused debug strings?
- .string "かいめの そうしん$", 13
- .string "かいめの じゅしん$", 13
- .string "ポケモンアイコンセット$", 13
- .string "OBJテキストセット$", 13
- .string "セルセット$", 13
- .string "OBJテキストADD$", 13
- .string "システムメッセージADD$", 13
- .string "はいけいセット$", 13
-
-@ Shedinja's Japanese name
-@ sub_8048D44 compares a pokemon name with this string
-gUnknown_0820C3B0:: @ 820C3B0
- .string "ヌケニン$"
-
- .string "こうかんせいりつ $" @ trade completed
- .string "だめだたらしいよ $" @ it's no good (trade failed maybe?)
-
-gUnknown_0820C3D1:: @ 820C3D1
- .byte 4, 3
- .byte 19, 3
-
- .align 2
-gTradeBallPalette:: @ 820C3D8
- .incbin "graphics/trade/ball.gbapal"
-
- .align 2
-gTradeBallTiles:: @ 820C3F8
- .incbin "graphics/trade/ball.4bpp"
-
- .align 2
-gUnknown_0820C9F8:: @ 820C9F8
- .incbin "graphics/trade/unknown.gbapal"
- .incbin "graphics/trade/gba.gbapal"
- .incbin "graphics/trade/shadow.gbapal"
- .space 32
- .incbin "graphics/trade/misc.gbapal"
-
- .align 2
-gUnknown_0820CA98:: @ 820CA98
- .incbin "graphics/trade/gba.4bpp"
- .incbin "graphics/trade/shadow.4bpp"
-
- .align 2
-gUnknown_0820DD98:: @ 820DD98
- .incbin "graphics/trade/pokeball_symbol.8bpp"
-
- .align 2
-gUnknown_0820F798:: @ 820F798
- .incbin "graphics/trade/shadow_map.bin"
-
- .align 2
-gUnknown_08210798:: @ 8210798
- .incbin "graphics/trade/gba_map.bin"
-
- .align 2
-gUnknown_08211798:: @ 8211798
- .incbin "graphics/trade/cable_closeup_map.bin"
-
- .align 2
-gUnknown_08211F98:: @ 8211F98
- .incbin "graphics/trade/pokeball_symbol_map.bin"
-
- .incbin "graphics/unused/unknown/8212098.gbapal"
-
- .align 2
-gTradeCableEndPalette:: @ 82120B8
- .incbin "graphics/trade/cable_end.gbapal"
-
- .incbin "graphics/unused/unknown/82120D8.gbapal"
-
- .space 32
-
- .align 2
-gTradeGlowPalette:: @ 8212118
- .incbin "graphics/trade/glow.gbapal"
-
- .align 2
-gTradeGlow1Tiles:: @ 8212138
- .incbin "graphics/trade/glow1.4bpp"
-
- .align 2
-gTradeGlow2Tiles:: @ 8212338
- .incbin "graphics/trade/glow2.4bpp"
-
- .align 2
-gTradeCableEndTiles:: @ 8212538
- .incbin "graphics/trade/cable_end.4bpp"
-
- .align 2
-gTradeGBAScreenTiles:: @ 8212738
- .incbin "graphics/trade/gba_screen.4bpp"
-
- .align 2
-gUnknown_08213738:: @ 8213738
- .incbin "graphics/trade/gba_affine.8bpp"
-
- .align 2
-gUnknown_08215778:: @ 8215778
- .incbin "graphics/trade/gba_affine_map.bin"
-
- .align 2
-gOamData_8215878:: @ 8215878
- .2byte 0x0100
- .2byte 0x4000
- .2byte 0x0000
-
- .align 2
-gSpriteAnim_8215880:: @ 8215880
- obj_image_anim_frame 0, 3
- obj_image_anim_frame 4, 3
- obj_image_anim_frame 8, 3
- obj_image_anim_frame 12, 3
- obj_image_anim_frame 16, 3
- obj_image_anim_frame 20, 3
- obj_image_anim_frame 24, 3
- obj_image_anim_frame 28, 3
- obj_image_anim_frame 32, 3
- obj_image_anim_frame 36, 3
- obj_image_anim_frame 40, 3
- obj_image_anim_frame 44, 3
- obj_image_anim_loop 1
- obj_image_anim_frame 0, 3
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_82158BC:: @ 82158BC
- obj_image_anim_frame 0, 3
- obj_image_anim_frame 4, 3
- obj_image_anim_frame 8, 3
- obj_image_anim_frame 12, 3
- obj_image_anim_frame 16, 3
- obj_image_anim_frame 20, 3
- obj_image_anim_frame 24, 3
- obj_image_anim_frame 28, 3
- obj_image_anim_frame 32, 3
- obj_image_anim_frame 36, 3
- obj_image_anim_frame 40, 3
- obj_image_anim_frame 44, 3
- obj_image_anim_loop 2
- obj_image_anim_frame 0, 3
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_82158F8:: @ 82158F8
- .4byte gSpriteAnim_8215880
- .4byte gSpriteAnim_82158BC
-
- .align 2
-gSpriteAffineAnim_8215900:: @ 8215900
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 1
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8215910:: @ 8215910
- obj_rot_scal_anim_frame 0xFFF8, 0x0, 0, 20
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnim_8215920:: @ 8215920
- obj_rot_scal_anim_frame 0x60, 0x100, 0, 0
- obj_rot_scal_anim_frame 0x0, 0x0, 0, 5
- obj_rot_scal_anim_frame 0x8, 0x0, 0, 20
- obj_rot_scal_anim_end
-
- .align 2
-gSpriteAffineAnimTable_8215940:: @ 8215940
- .4byte gSpriteAffineAnim_8215900
- .4byte gSpriteAffineAnim_8215910
- .4byte gSpriteAffineAnim_8215920
-
- .align 2
-gUnknown_0821594C:: @ 821594C
- obj_tiles gTradeBallTiles, 0x600, 5557
-
- .align 2
-gUnknown_08215954:: @ 8215954
- obj_pal gTradeBallPalette, 5558
-
- .align 2
-gSpriteTemplate_821595C:: @ 821595C
- spr_template 5557, 5558, gOamData_8215878, gSpriteAnimTable_82158F8, NULL, gSpriteAffineAnimTable_8215940, sub_804D6BC
-
- .align 2
-gOamData_8215974:: @ 8215974
- .2byte 0x0500
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_821597C:: @ 821597C
- obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8215984:: @ 8215984
- .4byte gSpriteAnim_821597C
-
- .align 2
-gSpriteAffineAnim_8215988:: @ 8215988
- obj_rot_scal_anim_frame 0xFFF6, 0xFFF6, 0, 5
- obj_rot_scal_anim_frame 0xA, 0xA, 0, 5
- obj_rot_scal_anim_jump 0
-
- .align 2
-gSpriteAffineAnimTable_82159A0:: @ 82159A0
- .4byte gSpriteAffineAnim_8215988
-
- .align 2
-gUnknown_082159A4:: @ 82159A4
- obj_tiles gTradeGlow1Tiles, 0x200, 5550
-
- .align 2
-gUnknown_082159AC:: @ 82159AC
- obj_pal gTradeGlowPalette, 5551
-
- .align 2
-gUnknown_082159B4:: @ 82159B4
- obj_pal gTradeCableEndPalette, 5555
-
- .align 2
-gSpriteTemplate_82159BC:: @ 82159BC
- spr_template 5550, 5551, gOamData_8215974, gSpriteAnimTable_8215984, NULL, gSpriteAffineAnimTable_82159A0, sub_804B058
-
- .align 2
-gOamData_82159D4:: @ 82159D4
- .2byte 0x8000
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_82159DC:: @ 82159DC
- obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnim_82159E4:: @ 82159E4
- obj_image_anim_frame 8, 5, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_82159EC:: @ 82159EC
- .4byte gSpriteAnim_82159DC
- .4byte gSpriteAnim_82159E4
-
- .align 2
-gUnknown_082159F4:: @ 82159F4
- obj_tiles gTradeGlow2Tiles, 0x300, 5552
-
- .align 2
-gSpriteTemplate_82159FC:: @ 82159FC
- spr_template 5552, 5551, gOamData_82159D4, gSpriteAnimTable_82159EC, NULL, gDummySpriteAffineAnimTable, sub_804B07C
-
- .align 2
-gOamData_8215A14:: @ 8215A14
- .2byte 0x8000
- .2byte 0x8000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_8215A1C:: @ 8215A1C
- obj_image_anim_frame 0, 10
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8215A24:: @ 8215A24
- .4byte gSpriteAnim_8215A1C
-
- .align 2
-gUnknown_08215A28:: @ 8215A28
- obj_tiles gTradeCableEndTiles, 0x100, 5554
-
- .align 2
-gSpriteTemplate_8215A30:: @ 8215A30
- spr_template 5554, 5555, gOamData_8215A14, gSpriteAnimTable_8215A24, NULL, gDummySpriteAffineAnimTable, sub_804B0BC
-
- .align 2
-gOamData_8215A48:: @ 8215A48
- .2byte 0x4000
- .2byte 0xC000
- .2byte 0x0400
-
- .align 2
-gSpriteAnim_8215A50:: @ 8215A50
- obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 32, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 64, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 96, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 64, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 32, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_frame 0, 2, OBJ_IMAGE_ANIM_V_FLIP | OBJ_IMAGE_ANIM_H_FLIP
- obj_image_anim_loop 8
- obj_image_anim_end
-
- .align 2
-gSpriteAnimTable_8215A74:: @ 8215A74
- .4byte gSpriteAnim_8215A50
-
- .align 2
-gUnknown_08215A78:: @ 8215A78
- obj_tiles gTradeGBAScreenTiles, 0x1000, 5556
-
- .align 2
-gSpriteTemplate_8215A80:: @ 8215A80
- spr_template 5556, 5555, gOamData_8215A48, gSpriteAnimTable_8215A74, NULL, gDummySpriteAffineAnimTable, sub_804B104
-
- .align 1
-gTradeGlow2PaletteAnimTable:: @ 8215A98
- .2byte 0x7F12
- .2byte 0x7F12
- .2byte 0x7F12
- .2byte 0x7FFF
- .2byte 0x7FFF
- .2byte 0x7FFF
- .2byte 0x7F12
- .2byte 0x7F12
- .2byte 0x7F12
- .2byte 0x7FFF
- .2byte 0x7FFF
- .2byte 0x7FFF
-
- .align 2
-gSpriteAffineAnim_8215AB0:: @ 8215AB0
- obj_rot_scal_anim_frame 0xFF00, 0x100, 0, 0
- obj_rot_scal_anim_jump 0
-
- .align 2
-gSpriteAffineAnimTable_8215AC0:: @ 8215AC0
- .4byte gSpriteAffineAnim_8215AB0
-
-@ 8215AC4
- .include "data/ingame_trades.inc"
-
-gTradeBallVerticalVelocityTable:: @ 8215BA0
- .byte 0
- .byte 0
- .byte 1
- .byte 0
- .byte 1
- .byte 0
- .byte 1
- .byte 1
- .byte 1
- .byte 1
- .byte 2
- .byte 2
- .byte 2
- .byte 2
- .byte 3
- .byte 3
- .byte 3
- .byte 3
- .byte 4
- .byte 4
- .byte 4
- .byte 4
- .byte -4
- .byte -4
- .byte -4
- .byte -3
- .byte -3
- .byte -3
- .byte -3
- .byte -2
- .byte -2
- .byte -2
- .byte -2
- .byte -1
- .byte -1
- .byte -1
- .byte -1
- .byte 0
- .byte -1
- .byte 0
- .byte -1
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 1
- .byte 0
- .byte 1
- .byte 0
- .byte 1
- .byte 1
- .byte 1
- .byte 1
- .byte 2
- .byte 2
- .byte 2
- .byte 2
- .byte 3
- .byte 3
- .byte 3
- .byte 3
- .byte 4
- .byte 4
- .byte 4
- .byte 4
- .byte -4
- .byte -3
- .byte -3
- .byte -2
- .byte -2
- .byte -1
- .byte -1
- .byte -1
- .byte 0
- .byte -1
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 1
- .byte 0
- .byte 1
- .byte 1
- .byte 1
- .byte 2
- .byte 2
- .byte 3
- .byte 3
- .byte 4
- .byte -4
- .byte -3
- .byte -2
- .byte -1
- .byte -1
- .byte -1
- .byte 0
- .byte 0
- .byte 0
- .byte 0
- .byte 1
- .byte 0
- .byte 1
- .byte 1
- .byte 2
- .byte 3
diff --git a/data/trainer_see.s b/data/trainer_see.s
index 57eeae061..04a787f0c 100644
--- a/data/trainer_see.s
+++ b/data/trainer_see.s
@@ -4,47 +4,6 @@
.section .rodata
.align 2
-gSpriteImage_839B308:: @ 839B308
- .incbin "graphics/unknown_sprites/839B4E0/0.4bpp"
-
- .align 2
-gSpriteImage_839B388:: @ 839B388
- .incbin "graphics/unknown_sprites/839B4E0/1.4bpp"
-
- .align 2
-gSpriteImage_839B408:: @ 839B408
- .incbin "graphics/unknown_sprites/839B408.4bpp"
-
- .align 2
-gIsTrainerInRange:: @ 839B488
- .4byte IsTrainerInRangeSouth
- .4byte IsTrainerInRangeNorth
- .4byte IsTrainerInRangeWest
- .4byte IsTrainerInRangeEast
-
- .align 2
-gTrainerSeeFuncList:: @ 839B498
- .4byte sub_8084394
- .4byte sub_8084398
- .4byte sub_80843DC
- .4byte sub_808441C
- .4byte sub_8084478
- .4byte sub_8084534
- .4byte sub_8084578
- .4byte sub_80845AC
- .4byte sub_80845C8
- .4byte sub_80845FC
- .4byte sub_8084654
- .4byte sub_80846C8
-
- .align 2
-gTrainerSeeFuncList2:: @ 839B4C8
- .4byte sub_80845C8
- .4byte sub_80845FC
- .4byte sub_8084654
- .4byte sub_80846C8
-
- .align 2
gOamData_839B4D8:: @ 839B4D8
.2byte 0x0000
.2byte 0x4000
diff --git a/include/bard_music.h b/include/bard_music.h
new file mode 100644
index 000000000..529fd50f8
--- /dev/null
+++ b/include/bard_music.h
@@ -0,0 +1,31 @@
+#ifndef GUARD_BARD_MUSIC_H
+#define GUARD_BARD_MUSIC_H
+
+struct BardSound;
+
+struct BardPhoneme
+{
+ /*0x00*/ u16 sound;
+ /*0x02*/ u16 length;
+ /*0x04*/ s16 pitch;
+ /*0x06*/ u16 volume;
+};
+
+struct BardSong
+{
+ /*0x00*/ u8 currWord;
+ /*0x01*/ u8 currPhoneme;
+ /*0x02*/ u8 phonemeTimer;
+ /*0x03*/ u8 state;
+ /*0x04*/ s16 var04;
+ /*0x06*/ u16 volume;
+ /*0x08*/ s16 pitch;
+ /*0x0A*/ s16 voiceInflection;
+ /*0x0C*/ u16 lyrics[6];
+ /*0x18*/ struct BardPhoneme phonemes[6];
+};
+
+const struct BardSound *GetWordSounds(u16 arg0, u16 arg1);
+s32 GetWordPhonemes(struct BardSong *dest, const struct BardSound *src, u16 arg2);
+
+#endif // GUARD_BARD_MUSIC_H
diff --git a/include/battle.h b/include/battle.h
index d4cb53689..7850a9dd6 100644
--- a/include/battle.h
+++ b/include/battle.h
@@ -19,103 +19,177 @@
#define BATTLE_TYPE_LEGENDARY 0x2000
#define BATTLE_TYPE_REGI 0x4000
+#define BATTLE_WON 0x1
+#define BATTLE_LOST 0x2
+#define BATTLE_DREW 0x3
+#define BATTLE_RAN 0x4
+#define BATTLE_PLAYER_TELEPORTED 0x5
+#define BATTLE_POKE_FLED 0x6
+#define BATTLE_CAUGHT 0x7
+#define BATTLE_OPPONENT_TELEPORTED 0xA
+
#define AI_ACTION_DONE 0x0001
#define AI_ACTION_FLEE 0x0002
-#define AI_ACTION_WATCH 0x0004
-#define AI_ACTION_DO_NOT_ATTACK 0x0008
+#define AI_ACTION_WATCH 0x0004
+#define AI_ACTION_DO_NOT_ATTACK 0x0008
#define AI_ACTION_UNK5 0x0010
#define AI_ACTION_UNK6 0x0020
#define AI_ACTION_UNK7 0x0040
#define AI_ACTION_UNK8 0x0080
-#define STATUS_SLEEP 0x7
-#define STATUS_POISON 0x8
-#define STATUS_BURN 0x10
-#define STATUS_FREEZE 0x20
-#define STATUS_PARALYSIS 0x40
-#define STATUS_TOXIC_POISON 0x80
+#define STATUS_SLEEP 0x7
+#define STATUS_POISON 0x8
+#define STATUS_BURN 0x10
+#define STATUS_FREEZE 0x20
+#define STATUS_PARALYSIS 0x40
+#define STATUS_TOXIC_POISON 0x80
+#define STATUS_TOXIC_COUNTER 0xF00
+
+#define STATUS_PSN_ANY ((STATUS_POISON | STATUS_TOXIC_POISON))
+#define STATUS_ANY ((STATUS_SLEEP | STATUS_POISON | STATUS_BURN | STATUS_FREEZE | STATUS_PARALYSIS | STATUS_TOXIC_POISON))
#define STATUS2_CONFUSION 0x00000007
+#define STATUS2_FLINCHED 0x00000008
#define STATUS2_UPROAR 0x00000070
+#define STATUS2_BIDE 0x00000300 //two bits 0x100 0x200
#define STATUS2_LOCK_CONFUSE 0x00000C00
#define STATUS2_MULTIPLETURNS 0x00001000
#define STATUS2_WRAPPED 0x0000E000
+#define STATUS2_INFATUATION 0x000F0000
#define STATUS2_FOCUS_ENERGY 0x00100000
#define STATUS2_TRANSFORMED 0x00200000
#define STATUS2_RECHARGE 0x00400000
#define STATUS2_RAGE 0x00800000
#define STATUS2_SUBSTITUTE 0x01000000
+#define STATUS2_DESTINY_BOND 0x02000000
#define STATUS2_ESCAPE_PREVENTION 0x04000000
#define STATUS2_NIGHTMARE 0x08000000
#define STATUS2_CURSED 0x10000000
#define STATUS2_FORESIGHT 0x20000000
+#define STATUS2_DEFENSE_CURL 0x40000000
+#define STATUS2_TORMENT 0x80000000
-#define STATUS3_LEECHSEED_RECEIVER 0x3 //two bits for the bank that gets hp
+#define STATUS3_LEECHSEED_BANK 0x3
#define STATUS3_LEECHSEED 0x4
#define STATUS3_ALWAYS_HITS 0x18 //two bits
#define STATUS3_PERISH_SONG 0x20
#define STATUS3_ON_AIR 0x40
#define STATUS3_UNDERGROUND 0x80
#define STATUS3_MINIMIZED 0x100
-#define STATUS3_CHARGED_UP 0x200
#define STATUS3_ROOTED 0x400
+#define STATUS3_CHARGED_UP 0x200
+#define STATUS3_YAWN 0x1800 //two bits
+#define STATUS3_IMPRISIONED 0x2000
#define STATUS3_GRUDGE 0x4000
#define STATUS3_CANT_SCORE_A_CRIT 0x8000
#define STATUS3_MUDSPORT 0x10000
#define STATUS3_WATERSPORT 0x20000
#define STATUS3_UNDERWATER 0x40000
-
-#define HITMARKER_x20 0x0000020
-#define HITMARKER_DESTINYBOND 0x0000040
-#define HITMARKER_NO_ANIMATIONS 0x0000080
-#define HITMARKER_IGNORE_SUBSTITUTE 0x0000100
-#define HITMARKER_NO_ATTACKSTRING 0x0000200
-#define HITMARKER_ATTACKSTRING_PRINTED 0x0000400
-#define HITMARKER_NO_PPDEDUCT 0x0000800
-#define HITMARKER_IGNORE_SAFEGUARD 0x0002000
-#define HITMARKER_SYNCHRONISE_EFFECT 0x0004000
-#define HITMARKER_IGNORE_ON_AIR 0x0010000
-#define HITMARKER_IGNORE_UNDERGROUND 0x0020000
-#define HITMARKER_IGNORE_UNDERWATER 0x0040000
-#define HITMARKER_x80000 0x0080000
-#define HITMARKER_x100000 0x0100000
-#define HITMARKER_x400000 0x0400000
-#define HITMARKER_x800000 0x0800000
-#define HITMARKER_GRUDGE 0x1000000
-#define HITMARKER_OBEYS 0x2000000
+#define STATUS3_INTIMIDATE_POKES 0x80000
+#define STATUS3_TRACE 0x100000
+
+#define STATUS3_SEMI_INVULNERABLE ((STATUS3_UNDERGROUND | STATUS3_ON_AIR | STATUS3_UNDERWATER))
+
+#define HITMARKER_x20 0x00000020
+#define HITMARKER_DESTINYBOND 0x00000040
+#define HITMARKER_NO_ANIMATIONS 0x00000080
+#define HITMARKER_IGNORE_SUBSTITUTE 0x00000100
+#define HITMARKER_NO_ATTACKSTRING 0x00000200
+#define HITMARKER_ATTACKSTRING_PRINTED 0x00000400
+#define HITMARKER_NO_PPDEDUCT 0x00000800
+#define HITMARKER_PURSUIT_TRAP 0x00001000
+#define HITMARKER_IGNORE_SAFEGUARD 0x00002000
+#define HITMARKER_SYNCHRONISE_EFFECT 0x00004000
+#define HITMARKER_IGNORE_ON_AIR 0x00010000
+#define HITMARKER_IGNORE_UNDERGROUND 0x00020000
+#define HITMARKER_IGNORE_UNDERWATER 0x00040000
+#define HITMARKER_UNABLE_TO_USE_MOVE 0x00080000
+#define HITMARKER_x100000 0x00100000
+#define HITMARKER_x200000 0x00200000
+#define HITMARKER_x400000 0x00400000
+#define HITMARKER_x800000 0x00800000
+#define HITMARKER_GRUDGE 0x01000000
+#define HITMARKER_OBEYS 0x02000000
+#define HITMARKER_x8000000 0x08000000
#define HITMARKER_FAINTED(bank) ((gBitTable[bank] << 0x1C))
#define HITMARKER_UNK(bank) ((0x10000000 << bank))
+#define SIDE_STATUS_REFLECT (1 << 0)
+#define SIDE_STATUS_LIGHTSCREEN (1 << 1)
+#define SIDE_STATUS_X4 (1 << 2)
+#define SIDE_STATUS_SPIKES (1 << 4)
+#define SIDE_STATUS_SAFEGUARD (1 << 5)
+#define SIDE_STATUS_FUTUREATTACK (1 << 6)
+#define SIDE_STATUS_MIST (1 << 8)
+#define SIDE_STATUS_SPIKES_DAMAGED (1 << 9)
+
+#define ABILITYEFFECT_ON_SWITCHIN 0x0
+#define ABILITYEFFECT_ENDTURN 0x1
+#define ABILITYEFFECT_MOVES_BLOCK 0x2
+#define ABILITYEFFECT_ABSORBING 0x3
+#define ABILITYEFFECT_CONTACT 0x4
+#define ABILITYEFFECT_IMMUNITY 0x5
+#define ABILITYEFFECT_FORECAST 0x6
+#define ABILITYEFFECT_SYNCHRONIZE 0x7
+#define ABILITYEFFECT_ATK_SYNCHRONIZE 0x8
+#define ABILITYEFFECT_INTIMIDATE1 0x9
+#define ABILITYEFFECT_INTIMIDATE2 0xA
+#define ABILITYEFFECT_TRACE 0xB
+#define ABILITYEFFECT_CHECK_OTHER_SIDE 0xC
+#define ABILITYEFFECT_CHECK_BANK_SIDE 0xD
+#define ABILITYEFFECT_FIELD_SPORT 0xE
+#define ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK 0xF
+#define ABILITYEFFECT_COUNT_OTHER_SIZE 0x10
+#define ABILITYEFFECT_COUNT_BANK_SIDE 0x11
+#define ABILITYEFFECT_COUNT_ON_FIELD 0x12
+#define ABILITYEFFECT_CHECK_ON_FIELD 0x13
+
+#define WEATHER_HAS_EFFECT ((!AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, ABILITY_AIR_LOCK, 0, 0)))
+
+#define MOVESTATUS_MISSED (1 << 0)
+#define MOVESTATUS_SUPEREFFECTIVE (1 << 1)
+#define MOVESTATUS_NOTVERYEFFECTIVE (1 << 2)
+#define MOVESTATUS_NOTAFFECTED (1 << 3)
+#define MOVESTATUS_ONEHITKO (1 << 4)
+#define MOVESTATUS_FAILED (1 << 5)
+#define MOVESTATUS_ENDURED (1 << 6)
+#define MOVESTATUS_HUNGON (1 << 7)
+
+#define MOVESTATUS_NOEFFECT ((MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED))
+
#define MAX_TRAINER_ITEMS 4
#define MAX_MON_MOVES 4
#define MAX_BANKS_BATTLE 4
-#define weather_rain 1
-#define weather_downpour 2
-#define weather_permament_rain 4
-#define WEATHER_RAINY ((weather_rain | weather_downpour | weather_permament_rain))
-
-#define weather_sandstorm 8
-#define weather_permament_sandstorm 0x10
-#define WEATHER_SANDSTORMY ((weather_sandstorm | weather_permament_sandstorm))
-
-#define weather_sun 0x20
-#define weather_permament_sun 0x40
-#define WEATHER_SUNNY ((weather_sun | weather_permament_sun))
-
-#define weather_hail 0x80
-
-// needed to match the hack that is get_item, thanks cam, someone else clean this up later.
-extern u8 unk_2000000[];
+#define WEATHER_RAIN_TEMPORARY (1 << 0)
+#define WEATHER_RAIN_DOWNPOUR (1 << 1)
+#define WEATHER_RAIN_PERMANENT (1 << 2)
+#define WEATHER_RAIN_ANY ((WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_DOWNPOUR | WEATHER_RAIN_PERMANENT))
+#define WEATHER_SANDSTORM_TEMPORARY (1 << 3)
+#define WEATHER_SANDSTORM_PERMANENT (1 << 4)
+#define WEATHER_SANDSTORM_ANY ((WEATHER_SANDSTORM_TEMPORARY | WEATHER_SANDSTORM_PERMANENT))
+#define WEATHER_SUN_TEMPORARY (1 << 5)
+#define WEATHER_SUN_PERMANENT (1 << 6)
+#define WEATHER_SUN_ANY ((WEATHER_SUN_TEMPORARY | WEATHER_SUN_PERMANENT))
+#define WEATHER_HAIL (1 << 7)
enum
{
- WEATHER_SUN,
- WEATHER_RAIN,
- WEATHER_SANDSTORM,
- WEATHER_HAIL,
+ BATTLE_TERRAIN_GRASS,
+ BATTLE_TERRAIN_LONG_GRASS,
+ BATTLE_TERRAIN_SAND,
+ BATTLE_TERRAIN_UNDERWATER,
+ BATTLE_TERRAIN_WATER,
+ BATTLE_TERRAIN_POND,
+ BATTLE_TERRAIN_MOUNTAIN,
+ BATTLE_TERRAIN_CAVE,
+ BATTLE_TERRAIN_BUILDING,
+ BATTLE_TERRAIN_PLAIN,
};
+// needed to match the hack that is get_item, thanks cam, someone else clean this up later.
+extern u8 unk_2000000[];
+
struct Trainer
{
/*0x00*/ u8 partyFlags;
@@ -164,32 +238,30 @@ struct BattleStruct /* 0x2000000 */
u8 filler0[0x15DDE];
/*0x15DDE*/ u8 unk15DDE;
/*0x15DDF*/ u8 unk15DDF;
- /*0x15DE0*/ u8 filler15DE0[0x222];
- /*0x16002*/ u8 AnimTurn;
- /*0x16003*/ u8 ScriptingActive;
- /*0x16004*/ u8 WrappedMove1[4];
- /*0x16008*/ u8 WrappedMove2[4];
+ /*0x15DE0*/ u8 filler15DE0[0x220];
+ /*0x16000*/ u8 turnEffectsTracker;
+ /*0x16001*/ u8 turnEffectsBank;
+ /*0x16002*/ u8 animTurn;
+ /*0x16003*/ u8 scriptingActive;
+ /*0x16004*/ u8 wrappedMove[8];
/*0x1600C*/ u8 cmd49StateTracker;
/*0x1600D*/ u8 unk1600D;
- /*0x1600E*/ u8 unk1600E;
+ /*0x1600E*/ u8 turncountersTracker;
/*0x1600F*/ u8 atk23StateTracker;
- /*0x16010*/ u8 unk16010;
- /*0x16011*/ u8 unk16011;
- /*0x16012*/ u8 unk16012;
- /*0x16013*/ u8 unk16013;
+ /*0x16010*/ u8 moveTarget[4];
/*0x16014*/ u8 unk16014;
/*0x16015*/ u8 unk16015;
/*0x16016*/ u8 unk16016;
/*0x16017*/ u8 unk16017;
/*0x16018*/ u8 expGetterID;
/*0x16019*/ u8 unk16019;
- /*0x1601A*/ u8 unk1601A;
+ /*0x1601A*/ u8 atk5A_StateTracker; //also atk5B, statetracker
/*0x1601B*/ u8 wildVictorySong;
- /*0x1601C*/ u8 DynamicMoveType;
+ /*0x1601C*/ u8 dynamicMoveType;
/*0x1601D*/ u8 unk1601D;
/*0x1601E*/ u8 statChanger;
- /*0x1601F*/ u8 DmgMultiplier;
- /*0x16020*/ u8 WrappedBy[4];
+ /*0x1601F*/ u8 dmgMultiplier;
+ /*0x16020*/ u8 wrappedBy[4];
/*0x16024*/ u8 unk16024;
/*0x16025*/ u8 unk16025;
/*0x16026*/ u8 unk16026;
@@ -240,48 +312,21 @@ struct BattleStruct /* 0x2000000 */
/*0x16053*/ u8 unk16053;
/*0x16054*/ u8 unk16054;
/*0x16055*/ u8 unk16055;
- /*0x16056*/ u8 unk16056;
+ /*0x16056*/ u8 moneyMultiplier;
/*0x16057*/ u8 unk16057;
/*0x16058*/ u8 unk16058;
- /*0x16059*/ u8 unk16059;
+ /*0x16059*/ u8 sub80173A4_Tracker;
/*0x1605A*/ u8 unk1605A;
/*0x1605B*/ u8 unk1605B;
/*0x1605C*/ u16 exp;
/*0x1605E*/ u8 unk1605E;
/*0x1605F*/ u8 sentInPokes;
/*0x16060*/ u8 unk16060[4];
- /*0x16064*/ u8 unk16064;
- /*0x16065*/ u8 unk16065;
- /*0x16066*/ u8 unk16066;
- /*0x16067*/ u8 unk16067;
- /*0x16068*/ u8 unk16068;
- /*0x16069*/ u8 unk16069;
- /*0x1606A*/ u8 unk1606A;
- /*0x1606B*/ u8 unk1606B;
- /*0x1606C*/ u8 unk1606C;
- /*0x1606D*/ u8 unk1606D;
- /*0x1606E*/ u8 unk1606E;
- /*0x1606F*/ u8 unk1606F;
- /*0x16070*/ u8 unk16070;
- /*0x16071*/ u8 unk16071;
- /*0x16072*/ u8 unk16072;
- /*0x16073*/ u8 unk16073;
- /*0x16074*/ u8 unk16074;
- /*0x16075*/ u8 unk16075;
- /*0x16076*/ u8 unk16076;
- /*0x16077*/ u8 unk16077;
+ /*0x16064*/ u8 unk16064[4];
+ /*0x16068*/ u8 unk16068[4];
+ /*0x1606C*/ u8 unk1606C[4][3];
/*0x16078*/ u8 unk16078;
- /*0x16079*/ u8 unk16079;
- /*0x1607A*/ u8 unk1607A;
- /*0x1607B*/ u8 unk1607B;
- /*0x1607C*/ u8 unk1607C;
- /*0x1607D*/ u8 unk1607D;
- /*0x1607E*/ u8 unk1607E;
- /*0x1607F*/ u8 unk1607F;
- /*0x16080*/ u8 unk16080;
- /*0x16081*/ u8 unk16081;
- /*0x16082*/ u8 unk16082;
- /*0x16083*/ u8 unk16083;
+ /*0x16079*/ u8 caughtNick[11];
/*0x16084*/ u8 unk16084;
/*0x16085*/ u8 unk16085;
/*0x16086*/ u8 unk16086;
@@ -291,10 +336,7 @@ struct BattleStruct /* 0x2000000 */
/*0x1608A*/ u8 unk1608A;
/*0x1608B*/ u8 unk1608B;
/*0x1608C*/ u8 ChosenMoveID[4];
- /*0x16090*/ u8 unk16090;
- /*0x16091*/ u8 unk16091;
- /*0x16092*/ u8 unk16092;
- /*0x16093*/ u8 unk16093;
+ /*0x16090*/ s32 bideDmg;
/*0x16094*/ u8 unk16094;
/*0x16095*/ u8 unk16095;
/*0x16096*/ u8 unk16096;
@@ -302,17 +344,17 @@ struct BattleStruct /* 0x2000000 */
/*0x16098*/ u8 unk16098;
/*0x16099*/ u8 unk16099;
/*0x1609A*/ u8 unk1609a;
- /*0x1609B*/ u8 unk1609b;
- /*0x1609C*/ u8 unk1609C;
+ /*0x1609B*/ u8 castformToChangeInto;
+ /*0x1609C*/ u8 atk6C_statetracker;
/*0x1609D*/ u8 unk1609D;
/*0x1609E*/ u8 unk1609E;
/*0x1609F*/ u8 unk1609F;
- /*0x160A0*/ u8 unk160a0;
- /*0x160A1*/ u8 AnimTargetsHit;
+ /*0x160A0*/ u8 stringMoveType;
+ /*0x160A1*/ u8 animTargetsHit;
/*0x160A2*/ u8 expGetterBank;
/*0x160A3*/ u8 unk160A3;
- /*0x160A4*/ u8 AnimArg1;
- /*0x160A5*/ u8 AnimArg2;
+ /*0x160A4*/ u8 animArg1;
+ /*0x160A5*/ u8 animArg2;
/*0x160A6*/ u8 unk160A6;
/*0x160A7*/ u8 unk160A7;
/*0x160A8*/ u8 unk160A8;
@@ -335,12 +377,9 @@ struct BattleStruct /* 0x2000000 */
/*0x160B9*/ u8 unk160B9;
/*0x160BA*/ u8 unk160Ba;
/*0x160BB*/ u8 unk160Bb;
- /*0x160BC*/ u8 unk160BC;
- /*0x160BD*/ u8 unk160BD;
- /*0x160BE*/ u8 unk160BE;
- /*0x160BF*/ u8 unk160BF;
+ /*0x160BC*/ u16 HP_OnSwitchout[2];
/*0x160C0*/ u8 unk160C0;
- /*0x160C1*/ u8 unk160C1;
+ /*0x160C1*/ u8 hpScale;
/*0x160C2*/ u8 unk160C2;
/*0x160C3*/ u8 unk160C3;
/*0x160C4*/ u8 unk160C4;
@@ -349,69 +388,157 @@ struct BattleStruct /* 0x2000000 */
/*0x160C7*/ u8 unk160C7;
/*0x160C8*/ u8 unk160C8;
/*0x160C9*/ u8 unk160C9;
- /*0x160CA*/ u8 SynchroniseEffect;
+ /*0x160CA*/ u8 synchroniseEffect;
/*0x160CB*/ u8 linkPlayerIndex;
- /*0x160CC*/ u16 UsedHeldItems[4];
- u8 filler2[0x72E];
+ /*0x160CC*/ u16 usedHeldItems[4];
+ /*0x160D4*/ u8 unk160D4;
+ /*0x160D5*/ u8 unk160D5;
+ /*0x160D6*/ u8 unk160D6;
+ /*0x160D7*/ u8 unk160D7;
+ /*0x160D8*/ u8 unk160D8;
+ /*0x160D9*/ u8 unk160D9;
+ /*0x160DA*/ u8 unk160DA;
+ /*0x160DB*/ u8 unk160DB;
+ /*0x160DC*/ u8 unk160DC;
+ /*0x160DD*/ u8 intimidateBank;
+ /*0x160DE*/ u8 unk160DE;
+ /*0x160DF*/ u8 unk160DF;
+ /*0x160E0*/ u8 unk160E0;
+ /*0x160E1*/ u8 unk160E1;
+ /*0x160E2*/ u8 unk160E2;
+ /*0x160E3*/ u8 unk160E3;
+ /*0x160E4*/ u8 unk160E4;
+ /*0x160E5*/ u8 unk160E5;
+ /*0x160E6*/ u8 unk160E6;
+ /*0x160E7*/ u8 atkCancellerTracker;
+ /*0x160E8*/ u8 unk160E8;
+ /*0x160E9*/ u8 unk160E9;
+ /*0x160EA*/ u8 unk160EA;
+ /*0x160EB*/ u8 unk160EB;
+ /*0x160EC*/ u8 unk160EC;
+ /*0x160ED*/ u8 unk160ED;
+ /*0x160EE*/ u8 unk160EE;
+ /*0x160EF*/ u8 unk160EF;
+ /*0x160F0*/ u8 unk160F0;
+ /*0x160F1*/ u8 unk160F1;
+ /*0x160F2*/ u8 unk160F2;
+ /*0x160F3*/ u8 unk160F3;
+ /*0x160F4*/ u8 unk160F4;
+ /*0x160F5*/ u8 unk160F5;
+ /*0x160F6*/ u8 unk160F6;
+ /*0x160F7*/ u8 unk160F7;
+ /*0x160F8*/ u8 unk160F8;
+ /*0x160F9*/ u8 unk160F9;
+ /*0x160FA*/ u8 unk160FA;
+ /*0x160FB*/ u8 unk160FB;
+ /*0x160FC*/ u8 turnSideTracker;
+ /*0x160FD*/ u8 unk160FD;
+ /*0x160FE*/ u8 unk160FE;
+ /*0x160FF*/ u8 unk160FF;
+ /*0x16100*/ u8 unk16100;
+ /*0x16101*/ u8 unk16101;
+ /*0x16102*/ u8 unk16102;
+ /*0x16103*/ u8 unk16103;
+ /*0x16104*/ u8 unk16104;
+ /*0x16105*/ u8 unk16105;
+ /*0x16106*/ u8 unk16106;
+ /*0x16107*/ u8 unk16107;
+ /*0x16108*/ u8 unk16108;
+ /*0x16109*/ u8 unk16109;
+ /*0x1610A*/ u8 unk1610A;
+ /*0x1610B*/ u8 unk1610B;
+ /*0x1610C*/ u8 unk1610C;
+ /*0x1610D*/ u8 unk1610D;
+ /*0x1610E*/ u8 unk1610E;
+ /*0x1610F*/ u8 unk1610F;
+ /*0x16110*/ u8 sub80170DC_Tracker;
+ /*0x16111*/ u8 sub80170DC_Bank;
+ /*0x16112*/ u8 unk16112;
+ /*0x16113*/ u8 unk16113;
+ /*0x16114*/ u8 unk16114;
+ /*0x16115*/ u8 unk16115;
+ /*0x16116*/ u8 unk16116;
+ /*0x16117*/ u8 unk16117;
+ /*0x16118*/ u8 unk16118;
+ /*0x16119*/ u8 unk16119;
+ /*0x1611A*/ u8 unk1611A;
+ /*0x1611B*/ u8 unk1611B;
+ /*0x1611C*/ u8 unk1611C;
+ /*0x1611D*/ u8 unk1611D;
+ /*0x1611E*/ u8 unk1611E;
+ /*0x1611F*/ u8 unk1611F;
+
+ //u8 filler2[0x72E];
/* 0x16A00 */ struct UnkBattleStruct1 unk_2016A00_2;
};
struct DisableStruct
{
- /*0x00*/ u8 filler0[0x3];
- /*0x04*/ u16 DisabledMove;
- /*0x06*/ u16 EncoredMove;
- /*0x08*/ u8 ProtectUses;
- /*0x09*/ u8 StockpileCounter;
- /*0x0A*/ u8 SubstituteHP;
- u8 fillerB[4];
- u8 unkF_0:4;
- u8 unkF_4:4;
- u8 filler10[3];
- /*0x13*/ u8 taunt:4;
- /*0x13*/ u8 unkC:4;
- /*0x14*/ u8 BankPreventingEscape;
- /*0x15*/ u8 BankWithSureHit;
- /*0x16*/ u8 IsFirstTurn;
+ /*0x00*/ u32 unk0;
+ /*0x04*/ u16 disabledMove;
+ /*0x06*/ u16 encoredMove;
+ /*0x08*/ u8 protectUses;
+ /*0x09*/ u8 stockpileCounter;
+ /*0x0A*/ u8 substituteHP;
+ /*0x0B*/ u8 disableTimer1 : 4;
+ /*0x0B*/ u8 disableTimer2 : 4;
+ /*0x0C*/ u8 encoredMovePos;
+ /*0x0D*/ u8 unkD;
+ /*0x0E*/ u8 encoreTimer1 : 4;
+ /*0x0E*/ u8 encoreTimer2 : 4;
+ /*0x0F*/ u8 perishSong1 : 4;
+ /*0x0F*/ u8 perishSong2 : 4;
+ /*0x10*/ u8 furyCutterCounter;
+ /*0x11*/ u8 rolloutTimer1 : 4;
+ /*0x11*/ u8 rolloutTimer2 : 4;
+ /*0x12*/ u8 chargeTimer1 : 4;
+ /*0x12*/ u8 chargeTimer2 : 4;
+ /*0x13*/ u8 tauntTimer1:4;
+ /*0x13*/ u8 tauntTimer2:4;
+ /*0x14*/ u8 bankPreventingEscape;
+ /*0x15*/ u8 bankWithSureHit;
+ /*0x16*/ u8 isFirstTurn;
/*0x17*/ u8 unk17;
- /*0x18*/ u8 TruantCounter;
- /*0x19*/ u8 RechargeCounter;
+ /*0x18*/ u8 truantCounter : 1;
+ /*0x18*/ u8 unk18_a : 3;
+ /*0x18*/ u8 unk18_b : 4;
+ /*0x19*/ u8 rechargeCounter;
/*0x1A*/ u8 unk1A[2];
};
struct BattleResults
{
- u8 PlayerFaintCounter; // 0x0
- u8 OpponentFaintCounter; // 0x1
+ u8 playerFaintCounter; // 0x0
+ u8 opponentFaintCounter; // 0x1
u8 unk2; // 0x2
u8 unk3; // 0x3
u8 unk4; // 0x4
u8 unk5_0:1; // 0x5
u8 unk5_1:1; // 0x5
- u16 Poke1Species; // 0x6
- u8 PokeString1[10]; // 0x8
+ u16 poke1Species; // 0x6
+ u8 pokeString1[10]; // 0x8
u8 unk12;
- u8 BattleTurnCounter; // 0x13
- u8 PokeString2[10]; // 0x14
+ u8 battleTurnCounter; // 0x13
+ u8 pokeString2[10]; // 0x14
u8 filler1E[2];
- u16 LastOpponentSpecies; // 0x20
- u16 LastUsedMove; // 0x22
- u16 OpponentMove; // 0x24
- u16 OpponentSpecies; // 0x26
- u16 CaughtPoke; // 0x28
- u8 CaughtNick[10]; // 0x2A
+ u16 lastOpponentSpecies; // 0x20
+ u16 lastUsedMove; // 0x22
+ u16 opponentMove; // 0x24
+ u16 opponentSpecies; // 0x26
+ u16 caughtPoke; // 0x28
+ u8 caughtNick[10]; // 0x2A
u8 filler34[2];
- u8 unk36[10];
+ u8 unk36[10]; // usedBalls?
};
struct Struct2017800
{
- u8 unk0_0:1;
+ u8 invisible:1;
u8 unk0_1:1;
- u8 unk0_2:1;
+ u8 substituteSprite:1;
u8 unk0_3:1;
u8 unk0_4:1;
- u16 unk2;
+ u16 transformedSpecies;
};
struct Struct2017810
@@ -454,34 +581,34 @@ struct Struct20238C8
struct ProtectStruct
{
/*field0*/
- u32 Protected:1;
- u32 Endured:1;
- u32 OnlyStruggle:1;
- u32 HelpingHand:1;
- u32 BounceMove:1;
- u32 StealMove:1;
- u32 Flag0Unknown:1;
- u32 PrlzImmobility:1;
+ u32 protected:1;
+ u32 endured:1;
+ u32 onlyStruggle:1;
+ u32 helpingHand:1;
+ u32 bounceMove:1;
+ u32 stealMove:1;
+ u32 flag0Unknown:1;
+ u32 prlzImmobility:1;
/*field1*/
- u32 ConfusionSelfDmg:1;
- u32 NotEffective:1;
- u32 ChargingTurn:1;
- u32 FleeFlag:2; //for RunAway and Smoke Ball
- u32 UsedImprisionedMove:1;
- u32 LoveImmobility:1;
- u32 UsedDisabledMove:1;
+ u32 confusionSelfDmg:1;
+ u32 notEffective:1;
+ u32 chargingTurn:1;
+ u32 fleeFlag:2; //for RunAway and Smoke Ball
+ u32 usedImprisionedMove:1;
+ u32 loveImmobility:1;
+ u32 usedDisabledMove:1;
/*field2*/
- u32 UsedTauntedMove:1;
- u32 Flag2Unknown:1;
- u32 FlinchImmobility:1;
- u32 NotFirstStrike:1;
- u32 Free : 4;
+ u32 usedTauntedMove:1;
+ u32 flag2Unknown:1;
+ u32 flinchImmobility:1;
+ u32 notFirstStrike:1;
+ u32 free : 4;
/*field3*/
u32 field3 : 8;
- u32 PhysicalDmg;
- u32 SpecialDmg;
- u8 PhysicalBank;
- u8 SpecialBank;
+ u32 physicalDmg;
+ u32 specialDmg;
+ u8 physicalBank;
+ u8 specialBank;
u16 fieldE;
};
@@ -496,9 +623,9 @@ struct SpecialStatus
u8 flag40 : 1;
u8 focusBanded : 1;
u8 field1[3];
- u32 moveturnLostHP;
- u32 moveturnlostHP_physical;
- u32 moveturnLostHP_special;
+ s32 moveturnLostHP;
+ s32 moveturnLostHP_physical;
+ s32 moveturnLostHP_special;
u8 moveturnPhysicalBank;
u8 moveturnSpecialBank;
u8 field12;
@@ -507,18 +634,17 @@ struct SpecialStatus
struct sideTimer
{
- u8 reflectTimer;
- u8 reflectBank;
- u8 lightscreenTimer;
- u8 lightscreenBank;
- u8 mistTimer;
- u8 mistBank;
- u8 safeguardTimer;
- u8 safeguardBank;
- u8 followmeTimer;
- u8 followmeTarget;
- u8 spikesAmount;
- u8 fieldB;
+ u8 reflectTimer; //0x0
+ u8 lightscreenTimer; //0x1
+ u8 mistTimer; //0x2
+ u8 field3; //0x3
+ u16 field4; //0x4
+ u8 spikesAmount; //0x6
+ u8 safeguardTimer; //0x7
+ u8 followmeTimer; //0x8
+ u8 followmeTarget; //0x9
+ u8 fieldA; //0xA
+ u8 fieldB; //0xB
};
struct WishFutureKnock
@@ -528,9 +654,9 @@ struct WishFutureKnock
s32 futureSightDmg[MAX_BANKS_BATTLE];
u16 futureSightMove[MAX_BANKS_BATTLE];
u8 wishCounter[MAX_BANKS_BATTLE];
- u8 wishUserBank[MAX_BANKS_BATTLE];
+ u8 wishUserID[MAX_BANKS_BATTLE];
u8 weatherDuration;
- u8 knockedOffPokes[2];
+ u16 knockedOffPokes;
};
extern struct UnkBattleStruct1 unk_2016A00;
@@ -546,14 +672,76 @@ extern struct Struct20238C8 gUnknown_020238C8;
// TODO: move ewram to global.h
extern u8 ewram[];
-#define BATTLE_STRUCT ((struct BattleStruct *) (ewram + 0x00000))
-#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(ewram + 0x16800))
-#define UNK_2016A00_STRUCT ((struct UnkBattleStruct1 *) (ewram + 0x16A00))
-#define AI_STACK ((struct AI_Stack *) (ewram + 0x16C00))
-#define AI_ARRAY_160CC ((struct SmallItemStruct *) (ewram + 0x160CC))
-#define ewram17800 ((struct Struct2017800 *) (ewram + 0x17800))
-#define ewram17810 ((struct Struct2017810 *) (ewram + 0x17810))
-#define ewram17840 (*(struct Struct2017840 *) (ewram + 0x17840))
+#define BATTLE_STRUCT ((struct BattleStruct *) (ewram + 0x00000))
+#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(ewram + 0x16800))
+#define UNK_2016A00_STRUCT ((struct UnkBattleStruct1 *) (ewram + 0x16A00))
+#define AI_STACK ((struct AI_Stack *) (ewram + 0x16C00))
+#define AI_ARRAY_160CC ((struct SmallItemStruct *) (ewram + 0x160CC))
+#define B_BATTLESCRIPTS_STACK ((struct scriptsStack *) (ewram + 0x17110))
+#define B_FUNCTION_STACK ((struct funcStack *) (ewram + 0x17140))
+#define ewram17800 ((struct Struct2017800 *) (ewram + 0x17800))
+#define ewram17810 ((struct Struct2017810 *) (ewram + 0x17810))
+#define ewram17840 (*(struct Struct2017840 *) (ewram + 0x17840))
+#define ewram17000 ((u32 *) (ewram + 0x17100))
+
+typedef void (*BattleCmdFunc)(void);
+
+struct funcStack
+{
+ void* ptr[8];
+ u8 size;
+};
+
+struct scriptsStack
+{
+ u8* ptr[8];
+ u8 size;
+};
+
+extern u8 gBattleTextBuff1[];
+
+//function declarations of buffer emits
+void EmitGetAttributes(u8 buffID, u8 request, u8 c); //0x0
+void Emitcmd1(u8 a, u8 b, u8 c); //0x1
+void EmitSetAttributes(u8 a, u8 request, u8 c, u8 bytes, void *data); //0x2
+void EmitSendOutPoke(u8 a, u8 b, u8 c); //0x5
+void EmitReturnPokeToBall(u8 a, u8 b); //0x6
+void EmitTrainerSlide(u8 a); //0x8
+void Emitcmd10(u8 a); //0xA
+void EmitBallThrow(u8 a, u8 shakes); //0xD
+//void EmitMoveAnimation(u8 a, u16 move, u8 turn, u16 power, s32 dmg, u8 happiness, void *disable_struct); //0xF
+void EmitPrintString(u8 a, u16 stringID); //0x10
+//void EmitPrintStringPlayerOnly(u8 a, u16 stringID); //0x11
+void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e); //0x16
+//void EmitHealthBarUpdate(u8 a, u16 b); //0x18; Had to declare the second arg as u16 because s16 wont match in atk0b
+//void EmitExpBarUpdate(u8 a, u8 b, u16 c); //0x19
+void EmitStatusIconUpdate(u8 a, u32 b, u32 c); //0x1A
+void EmitStatusAnimation(u8 a, u8 b, u32 c); //0x1B
+void EmitStatusXor(u8 a, u8 b); //0x1C
+void EmitHitAnimation(u8 a); //0x29
+void EmitEffectivenessSound(u8 a, u16 sound); //0x2B
+void Emitcmd44(u8 a, u16 sound); //0x2C
+void EmitFaintingCry(u8 a); //0x2D
+void EmitIntroSlide(u8 a, u8 b); //0x2E
+void Emitcmd48(u8 a, u8 *b, u8 c); //0x30
+void Emitcmd49(u8 a); //0x31
+void EmitSpriteInvisibility(u8 a, u8 b); //0x33
+void EmitBattleAnimation(u8 a, u8 b, u16 c); //0x34
+void EmitResetActionMoveSelection(u8 a, u8 b); //0x36
+void Emitcmd55(u8 a, u8 b); //0x37
+
+#define REQUEST_ALL_BATTLE 0x0
+#define REQUEST_SPECIES_BATTLE 0x1
+#define REQUEST_HELDITEM_BATTLE 0x2
+#define REQUEST_MOVES_PP_BATTLE 0x3
+#define REQUEST_PPMOVE1_BATTLE 0x9
+#define REQUEST_PPMOVE2_BATTLE 0xA
+#define REQUEST_PPMOVE3_BATTLE 0xB
+#define REQUEST_PPMOVE4_BATTLE 0xC
+#define REQUEST_STATUS_BATTLE 0x28
+#define REQUEST_HP_BATTLE 0x2A
+
+void MarkBufferBankForExecution(u8 bank);
extern u8 gBattleTextBuff1[];
@@ -607,29 +795,28 @@ void BattleTurnPassed(void);
// asm/battle_2.o
void sub_8012324(void);
void sub_8012FBC(u8, u8);
-u8 b_first_side(u8, u8, u8);
+u8 GetWhoStrikesFirst(u8, u8, u8);
void TurnValuesCleanUp(u8);
void SpecialStatusesClear(void);
void sub_80138F0(void);
-void MarkBufferBankForExecution();
void sub_80155A4();
-void CancelMultiTurnMoves(u8);
+void CancelMultiTurnMoves(u8 bank);
void PrepareStringBattle();
void sub_80156DC();
void sub_80157C4(u8 index);
// asm/battle_3.o
-u8 sub_8015A98(u8, u8, u8);
-u8 UpdateTurnCounters();
-u8 TurnBasedEffects();
+u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check);
+u8 UpdateTurnCounters(void);
+u8 TurnBasedEffects(void);
u8 sub_80170DC();
u8 sub_80173A4();
-u8 AbilityBattleEffects(u8, u8, u8, u8, u16);
-u8 sub_801A02C();
+u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 move);
+u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn);
// asm/battle_4.o
void AI_CalcDmg(u8, u8);
-void TypeCalc(u16, u8, u8);
+u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def);
// asm/battle_5.o
void nullsub_91(void);
diff --git a/include/battle_anim.h b/include/battle_anim.h
index 48ceece21..2386c515c 100644
--- a/include/battle_anim.h
+++ b/include/battle_anim.h
@@ -53,14 +53,14 @@ struct UnknownStruct3
};
void DoMoveAnim(const u8 *const moveAnims[], u16 b, u8 c);
-bool8 b_side_obj__get_some_boolean(u8 a);
+bool8 IsAnimBankSpriteVisible(u8 a);
void sub_8076034(u8, u8);
bool8 IsContest(void);
void battle_anim_clear_some_data(void);
void move_anim_8072740(struct Sprite *sprite);
void DestroyAnimVisualTask(u8 task);
void DestroyAnimVisualTask(u8 task);
-bool8 b_side_obj__get_some_boolean(u8);
+bool8 IsAnimBankSpriteVisible(u8);
u8 IsContest();
diff --git a/include/battle_message.h b/include/battle_message.h
index da57333a5..3e37a1ccd 100644
--- a/include/battle_message.h
+++ b/include/battle_message.h
@@ -1,7 +1,23 @@
#ifndef GUARD_BATTLE_MESSAGE_H
#define GUARD_BATTLE_MESSAGE_H
-void StrCpyDecodeToDisplayedStringBattle(const u8 *);
-void StrCpyDecodeBattle(const u8 *, u8 *);
+struct StringInfoBattle
+{
+ u16 currentMove;
+ u16 lastMove;
+ u16 lastItem;
+ u8 lastAbility;
+ u8 scrActive;
+ u8 unk1605E;
+ u8 hpScale;
+ u8 StringBank;
+ u8 moveType;
+ u8 abilities[4];
+ u8 textBuffs[3][0x10];
+};
+
+void BufferStringBattle(u16 stringID);
+u32 StrCpyDecodeToDisplayedStringBattle(const u8* src);
+u32 StrCpyDecodeBattle(const u8* src, u8* dst);
#endif // GUARD_BATTLE_MESSAGE_H
diff --git a/include/battle_setup.h b/include/battle_setup.h
index c8c463f6d..444ab5467 100644
--- a/include/battle_setup.h
+++ b/include/battle_setup.h
@@ -40,72 +40,38 @@ struct TrainerPartyMember3
u16 moves[4];
};
-struct TrainerBattleSpec
-{
- void *ptr;
- u8 ptrType;
-};
-
struct TrainerEyeTrainer
{
- u16 trainerNums[5];
+ u16 opponentIDs[5]; // Each of these trainers has 5 increasingly stronger teams.
u16 mapGroup;
u16 mapNum;
};
-//void task01_battle_start(u8 taskId);
-//void task_add_01_battle_start(u8 transition, u16 song);
-void CheckForSafariZoneAndProceed(void);
-void StartBattle_StandardWild(void);
-void StartBattle_Roamer(void);
-void StartBattle_Safari(void);
-//void task_add_01_battle_start_with_music_and_stats(void);
-//void StartBattle_WallyTutorial(void);
-void StartBattle_ScriptedWild(void);
-//void StartBattle_SouthernIsland(void);
-//void StartBattle_Rayquaza(void);
-//void StartBattle_GroudonKyogre(void);
-//void StartBattle_Regi(void);
-void HandleWildBattleEnd(void);
-void HandleScriptedWildBattleEnd(void);
-s8 GetBattleTerrain(void);
-//s8 GetBattleTransitionTypeByMap(void);
-//u16 GetSumOfPartyMonLevel(u8 numMons);
-//u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons);
-u8 GetWildBattleTransition(void);
-u8 GetTrainerBattleTransition(void);
-u8 GetBattleTowerBattleTransition(void);
-//void ChooseStarter(void);
-void CB2_GiveStarter(void);
-void CB2_StartFirstBattle(void);
-void HandleFirstBattleEnd(void);
-//u32 TrainerBattleLoadArg32(u8 *ptr);
-//u16 TrainerBattleLoadArg16(u8 *ptr);
-//u8 TrainerBattleLoadArg8(u8 *ptr);
-//u16 trainerflag_opponent(void);
-bool32 battle_exit_is_player_defeat(u32 a1);
-//void sub_80822BC(void);
-//void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, u8 *data);
-//void battle_80801F0(void);
-u8 *TrainerBattleConfigure(const u8 *data);
+void BattleSetup_StartWildBattle(void);
+void BattleSetup_StartRoamerBattle(void);
+void BattleSetup_StartScriptedWildBattle(void);
+s8 BattleSetup_GetTerrain(void);
+u8 BattleSetup_GetBattleTowerBattleTransition(void);
+u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data);
void TrainerWantsBattle(u8, u8 *);
+
bool32 GetTrainerFlagFromScriptPointer(u8 *data);
//void sub_8082524(void);
-//u8 sub_8082558(void);
-//u8 sub_8082564(void);
+//u8 ScrSpecial_GetTrainerBattleMode(void);
+//u8 ScrSpecial_HasTrainerBeenFought(void);
//void sub_808257C(void);
//void unref_sub_8082590(void); // unused
-u8 trainer_flag_check(u16);
+u8 HasTrainerAlreadyBeenFought(u16);
void trainer_flag_set(u16);
void trainer_flag_clear(u16);
-void sub_80825E4(void);
+void BattleSetup_StartTrainerBattle(void);
void sub_808260C(void);
void do_choose_name_or_words_screen(void);
-//void sub_80826B0(void);
-//void sub_80826D8(void);
-u8 *sub_80826E8(void);
-u8 *sub_8082700(void);
-//void sub_8082718(void);
+//void ScrSpecial_StartTrainerEyeRematch(void);
+//void ScrSpecial_ShowTrainerIntroSpeech(void);
+u8 *BattleSetup_GetScriptAddrAfterBattle(void);
+u8 *BattleSetup_GetTrainerPostBattleScript(void);
+//void ScrSpecial_ShowTrainerNonBattlingSpeech(void);
//void PlayTrainerEncounterMusic(void);
//u8 *SanitizeString(u8 *str);
u8 *sub_808281C(void);
@@ -118,7 +84,7 @@ u8 *sub_8082880(void);
//s32 sub_80829A8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum);
//s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum);
//bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
-//bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
+//bool8 DoesTrainerEyeTrainerWantRematch(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
//u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
//void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
//bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum);
@@ -130,7 +96,7 @@ s32 sub_8082C0C(u16 mapGroup, u16 mapNum);
s32 unref_sub_8082C2C(u16 mapGroup, u16 mapNum);
u16 sub_8082C4C(u16 a1);
//s32 sub_8082C68(void);
-//u8 sub_8082C9C(void);
+//u8 ScrSpecial_GetTrainerEyeRematchFlag(void);
void sub_8082CB8(void);
#endif // GUARD_BATTLE_SETUP_H
diff --git a/include/battle_transition.h b/include/battle_transition.h
index b01378505..0b8766e87 100644
--- a/include/battle_transition.h
+++ b/include/battle_transition.h
@@ -1,8 +1,42 @@
#ifndef GUARD_BATTLE_TRANSITION_H
#define GUARD_BATTLE_TRANSITION_H
-void sub_811AABC(u8);
-void sub_811AAD8(u8);
-u8 sub_811AAE8(void);
+void BattleTransition_StartOnField(u8 transitionID);
+void BattleTransition_Start(u8 transitionID);
+bool8 IsBattleTransitionDone(void);
+
+#define TRANSITIONS_NO 17
+
+enum // TRANSITION_MUGSHOT
+{
+ MUGSHOT_SYDNEY,
+ MUGSHOT_PHOEBE,
+ MUGSHOT_GLACIA,
+ MUGSHOT_DRAKE,
+ MUGSHOT_STEVEN,
+};
+
+#define MUGSHOTS_NO 5
+
+// credits for the names go to Dyskinesia and Tetrable
+// names are naturally subject to change
+
+#define B_TRANSITION_BLUR 0
+#define B_TRANSITION_SWIRL 1
+#define B_TRANSITION_SHUFFLE 2
+#define B_TRANSITION_BIG_POKEBALL 3
+#define B_TRANSITION_POKEBALLS_TRAIL 4
+#define B_TRANSITION_CLOCKWISE_BLACKFADE 5
+#define B_TRANSITION_RIPPLE 6
+#define B_TRANSITION_WAVE 7
+#define B_TRANSITION_SLICE 8
+#define B_TRANSITION_WHITEFADE 9
+#define B_TRANSITION_GRID_SQUARES 10
+#define B_TRANSITION_SHARDS 11
+#define B_TRANSITION_SYDNEY 12
+#define B_TRANSITION_PHOEBE 13
+#define B_TRANSITION_GLACIA 14
+#define B_TRANSITION_DRAKE 15
+#define B_TRANSITION_STEVEN 16
#endif // GUARD_BATTLE_TRANSITION_H
diff --git a/include/berry_blender.h b/include/berry_blender.h
deleted file mode 100644
index 924b24b00..000000000
--- a/include/berry_blender.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef GUARD_BERRY_BLENDER_H
-#define GUARD_BERRY_BLENDER_H
-
-void sub_80516C4(u8, u16);
-
-#endif // GUARD_BERRY_BLENDER_H
diff --git a/include/braille_puzzles.h b/include/braille_puzzles.h
index 2b0e2bb96..e9d1f5d7c 100644
--- a/include/braille_puzzles.h
+++ b/include/braille_puzzles.h
@@ -2,6 +2,7 @@
#define GUARD_BRAILLEPUZZLES_H
bool8 ShouldDoBrailleStrengthEffect(void);
+bool8 ShouldDoBrailleFlyEffect(void);
void DoBrailleStrengthEffect(void);
void UseFlyAncientTomb_Callback(void);
void UseFlyAncientTomb_Finish(void);
@@ -10,5 +11,6 @@ bool32 BrailleWait_CheckButtonPress(void);
void SealedChamberShakingEffect(u8 taskId);
bool8 ShouldDoBrailleDigEffect(void);
void DoBrailleDigEffect(void);
+void DoBrailleFlyEffect(void);
#endif
diff --git a/include/cable_club.h b/include/cable_club.h
index 9e6a703e3..a2fe46b30 100644
--- a/include/cable_club.h
+++ b/include/cable_club.h
@@ -3,20 +3,22 @@
#include "task.h"
-void sub_8082D4C();
-void sub_8082D60(u8, u8);
-u16 sub_8082D9C(u8, u8);
-u32 sub_8082DF4(u8);
-u32 sub_8082E28(u8);
-u32 sub_8082EB8(u8);
-void sub_8082FEC(u8 taskId);
-void sub_80833C4(u8 taskId);
-void sub_8083418(u8 taskId);
-u8 sub_8083444(u8 taskId);
+void sub_808347C(u8 arg0);
+void sub_80834E4(void);
+void sub_808350C(void);
+void sub_80835D8(void);
+void sub_8083614(void);
+void sub_808363C(void);
u8 sub_8083664(void);
-void sub_8083A84(TaskFunc);
-s32 sub_8083BF4(u8 id);
-void sub_8083C50(u8);
-void sub_8083188(u8 taskId);
+void sub_8083820(void);
+void sub_80839A4(void);
+void sub_80839D0(void);
+void sub_8083A84(TaskFunc followupFunc);
+void sub_8083B5C(void);
+void sub_8083B80(void);
+void sub_8083B90(void);
+void sub_8083BDC(void);
+bool32 sub_8083BF4(u8 linkPlayerIndex);
+void sub_8083C50(u8 taskId);
#endif // GUARD_CABLE_CLUB_H
diff --git a/include/data/field_map_obj/anim_func_ptrs.h b/include/data/field_map_obj/anim_func_ptrs.h
index 63575727d..1d1fac71e 100644
--- a/include/data/field_map_obj/anim_func_ptrs.h
+++ b/include/data/field_map_obj/anim_func_ptrs.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/18/2017.
+
//
#ifndef POKERUBY_ANIM_FUNC_PTRS_H
diff --git a/include/data/field_map_obj/base_oam.h b/include/data/field_map_obj/base_oam.h
index 8595f97e7..49c14e8c2 100644
--- a/include/data/field_map_obj/base_oam.h
+++ b/include/data/field_map_obj/base_oam.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_BASE_OAM_H
diff --git a/include/data/field_map_obj/berry_tree_graphics_tables.h b/include/data/field_map_obj/berry_tree_graphics_tables.h
index 53a0fd482..5b60fee6f 100644
--- a/include/data/field_map_obj/berry_tree_graphics_tables.h
+++ b/include/data/field_map_obj/berry_tree_graphics_tables.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_BERRY_TREE_GRAPHICS_TABLES_H
diff --git a/include/data/field_map_obj/callback_subroutine_pointers.h b/include/data/field_map_obj/callback_subroutine_pointers.h
index d24a47184..a324066b7 100644
--- a/include/data/field_map_obj/callback_subroutine_pointers.h
+++ b/include/data/field_map_obj/callback_subroutine_pointers.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/18/2017.
+
//
#ifndef POKERUBY_CALLBACK_SUBROUTINE_POINTERS_H
@@ -394,7 +394,7 @@ u8 (*const gUnknown_08375588[])(struct MapObject *, struct Sprite *) = {
sub_805F3C4
};
-u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8)) = {
+u8 (*const gUnknown_08375594[])(struct MapObject *, struct Sprite *, u8, bool8(u8)) = {
sub_805F3EC,
sub_805F3F0,
sub_805F438,
diff --git a/include/data/field_map_obj/field_effect_object_template_pointers.h b/include/data/field_map_obj/field_effect_object_template_pointers.h
index 8e19747ce..320af1ff8 100644
--- a/include/data/field_map_obj/field_effect_object_template_pointers.h
+++ b/include/data/field_map_obj/field_effect_object_template_pointers.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_FIELD_EFFECT_OBJECT_TEMPLATE_POINTERS_H
diff --git a/include/data/field_map_obj/field_effect_objects.h b/include/data/field_map_obj/field_effect_objects.h
index dc8a38542..9d3ae343d 100644
--- a/include/data/field_map_obj/field_effect_objects.h
+++ b/include/data/field_map_obj/field_effect_objects.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_FIELD_EFFECT_OBJECTS_H
diff --git a/include/data/field_map_obj/map_object_anims.h b/include/data/field_map_obj/map_object_anims.h
index 0d6e299ee..0993f3efd 100644
--- a/include/data/field_map_obj/map_object_anims.h
+++ b/include/data/field_map_obj/map_object_anims.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_MAP_OBJECT_ANIMS_H
diff --git a/include/data/field_map_obj/map_object_graphics_info.h b/include/data/field_map_obj/map_object_graphics_info.h
index 818c5b90c..7b021b66d 100644
--- a/include/data/field_map_obj/map_object_graphics_info.h
+++ b/include/data/field_map_obj/map_object_graphics_info.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_MAP_OBJECT_GRAPHICS_INFO_H
diff --git a/include/data/field_map_obj/map_object_graphics_info_pointers.h b/include/data/field_map_obj/map_object_graphics_info_pointers.h
index c36827709..22a052b0d 100644
--- a/include/data/field_map_obj/map_object_graphics_info_pointers.h
+++ b/include/data/field_map_obj/map_object_graphics_info_pointers.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_MAP_OBJECT_GRAPHICS_INFO_POINTERS_H
diff --git a/include/data/field_map_obj/map_object_pic_tables.h b/include/data/field_map_obj/map_object_pic_tables.h
index 37d579512..ecb5c8836 100644
--- a/include/data/field_map_obj/map_object_pic_tables.h
+++ b/include/data/field_map_obj/map_object_pic_tables.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_MAP_OBJECT_PIC_TABLES_H
diff --git a/include/data/field_map_obj/map_object_subsprites.h b/include/data/field_map_obj/map_object_subsprites.h
index f928db88a..951d71e99 100644
--- a/include/data/field_map_obj/map_object_subsprites.h
+++ b/include/data/field_map_obj/map_object_subsprites.h
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/17/2017.
+
//
#ifndef POKERUBY_MAP_OBJECT_SUBSPRITES_H
diff --git a/include/data/pokemon/base_stats.h b/include/data/pokemon/base_stats.h
index eadfbfe30..37f59e1c6 100644
--- a/include/data/pokemon/base_stats.h
+++ b/include/data/pokemon/base_stats.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_BASE_STATS_H
diff --git a/include/data/pokemon/cry_ids.h b/include/data/pokemon/cry_ids.h
index d965a41cf..6207a92f0 100644
--- a/include/data/pokemon/cry_ids.h
+++ b/include/data/pokemon/cry_ids.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_CRY_IDS_H
diff --git a/include/data/pokemon/dex_order.h b/include/data/pokemon/dex_order.h
index 6f8582533..cbb7182ed 100644
--- a/include/data/pokemon/dex_order.h
+++ b/include/data/pokemon/dex_order.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_DEX_ORDER_H
diff --git a/include/data/pokemon/egg_moves.h b/include/data/pokemon/egg_moves.h
new file mode 100644
index 000000000..ab1b1dd33
--- /dev/null
+++ b/include/data/pokemon/egg_moves.h
@@ -0,0 +1,1318 @@
+//
+
+//
+
+#ifndef POKERUBY_DAYCARE_H
+#define POKERUBY_DAYCARE_H
+
+#define EGG_MOVES_SPECIES_OFFSET 20000
+#define egg_moves(species, moves...) (SPECIES_##species + EGG_MOVES_SPECIES_OFFSET), moves
+
+#endif //POKERUBY_DAYCARE_H
+
+const u16 gEggMoves[] = {
+ egg_moves(BULBASAUR,
+ MOVE_LIGHT_SCREEN,
+ MOVE_SKULL_BASH,
+ MOVE_SAFEGUARD,
+ MOVE_CHARM,
+ MOVE_PETAL_DANCE,
+ MOVE_MAGICAL_LEAF,
+ MOVE_GRASS_WHISTLE,
+ MOVE_CURSE),
+
+ egg_moves(CHARMANDER,
+ MOVE_BELLY_DRUM,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_BITE,
+ MOVE_OUTRAGE,
+ MOVE_BEAT_UP,
+ MOVE_SWORDS_DANCE,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(SQUIRTLE,
+ MOVE_MIRROR_COAT,
+ MOVE_HAZE,
+ MOVE_MIST,
+ MOVE_FORESIGHT,
+ MOVE_FLAIL,
+ MOVE_REFRESH,
+ MOVE_MUD_SPORT,
+ MOVE_YAWN),
+
+ egg_moves(PIDGEY,
+ MOVE_PURSUIT,
+ MOVE_FAINT_ATTACK,
+ MOVE_FORESIGHT,
+ MOVE_STEEL_WING,
+ MOVE_AIR_CUTTER),
+
+ egg_moves(RATTATA,
+ MOVE_SCREECH,
+ MOVE_FLAME_WHEEL,
+ MOVE_FURY_SWIPES,
+ MOVE_BITE,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_UPROAR,
+ MOVE_SWAGGER),
+
+ egg_moves(SPEAROW,
+ MOVE_FAINT_ATTACK,
+ MOVE_FALSE_SWIPE,
+ MOVE_SCARY_FACE,
+ MOVE_QUICK_ATTACK,
+ MOVE_TRI_ATTACK,
+ MOVE_ASTONISH,
+ MOVE_SKY_ATTACK),
+
+ egg_moves(EKANS,
+ MOVE_PURSUIT,
+ MOVE_SLAM,
+ MOVE_SPITE,
+ MOVE_BEAT_UP,
+ MOVE_POISON_FANG),
+
+ egg_moves(SANDSHREW,
+ MOVE_FLAIL,
+ MOVE_SAFEGUARD,
+ MOVE_COUNTER,
+ MOVE_RAPID_SPIN,
+ MOVE_ROCK_SLIDE,
+ MOVE_METAL_CLAW,
+ MOVE_SWORDS_DANCE,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(NIDORAN_F,
+ MOVE_SUPERSONIC,
+ MOVE_DISABLE,
+ MOVE_TAKE_DOWN,
+ MOVE_FOCUS_ENERGY,
+ MOVE_CHARM,
+ MOVE_COUNTER,
+ MOVE_BEAT_UP),
+
+ egg_moves(NIDORAN_M,
+ MOVE_COUNTER,
+ MOVE_DISABLE,
+ MOVE_SUPERSONIC,
+ MOVE_TAKE_DOWN,
+ MOVE_AMNESIA,
+ MOVE_CONFUSION,
+ MOVE_BEAT_UP),
+
+ egg_moves(VULPIX,
+ MOVE_FAINT_ATTACK,
+ MOVE_HYPNOSIS,
+ MOVE_FLAIL,
+ MOVE_SPITE,
+ MOVE_DISABLE,
+ MOVE_HOWL,
+ MOVE_PSYCH_UP,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(ZUBAT,
+ MOVE_QUICK_ATTACK,
+ MOVE_PURSUIT,
+ MOVE_FAINT_ATTACK,
+ MOVE_GUST,
+ MOVE_WHIRLWIND,
+ MOVE_CURSE),
+
+ egg_moves(ODDISH,
+ MOVE_SWORDS_DANCE,
+ MOVE_RAZOR_LEAF,
+ MOVE_FLAIL,
+ MOVE_SYNTHESIS,
+ MOVE_CHARM,
+ MOVE_INGRAIN),
+
+ egg_moves(PARAS,
+ MOVE_FALSE_SWIPE,
+ MOVE_SCREECH,
+ MOVE_COUNTER,
+ MOVE_PSYBEAM,
+ MOVE_FLAIL,
+ MOVE_SWEET_SCENT,
+ MOVE_LIGHT_SCREEN,
+ MOVE_PURSUIT),
+
+ egg_moves(VENONAT,
+ MOVE_BATON_PASS,
+ MOVE_SCREECH,
+ MOVE_GIGA_DRAIN,
+ MOVE_SIGNAL_BEAM),
+
+ egg_moves(DIGLETT,
+ MOVE_FAINT_ATTACK,
+ MOVE_SCREECH,
+ MOVE_ANCIENT_POWER,
+ MOVE_PURSUIT,
+ MOVE_BEAT_UP,
+ MOVE_UPROAR,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(MEOWTH,
+ MOVE_SPITE,
+ MOVE_CHARM,
+ MOVE_HYPNOSIS,
+ MOVE_AMNESIA,
+ MOVE_PSYCH_UP,
+ MOVE_ASSIST),
+
+ egg_moves(PSYDUCK,
+ MOVE_HYPNOSIS,
+ MOVE_PSYBEAM,
+ MOVE_FORESIGHT,
+ MOVE_LIGHT_SCREEN,
+ MOVE_FUTURE_SIGHT,
+ MOVE_PSYCHIC,
+ MOVE_CROSS_CHOP,
+ MOVE_REFRESH),
+
+ egg_moves(MANKEY,
+ MOVE_ROCK_SLIDE,
+ MOVE_FORESIGHT,
+ MOVE_MEDITATE,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_BEAT_UP,
+ MOVE_REVENGE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(GROWLITHE,
+ MOVE_BODY_SLAM,
+ MOVE_SAFEGUARD,
+ MOVE_CRUNCH,
+ MOVE_THRASH,
+ MOVE_FIRE_SPIN,
+ MOVE_HOWL,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(POLIWAG,
+ MOVE_MIST,
+ MOVE_SPLASH,
+ MOVE_BUBBLE_BEAM,
+ MOVE_HAZE,
+ MOVE_MIND_READER,
+ MOVE_WATER_SPORT,
+ MOVE_ICE_BALL),
+
+ egg_moves(ABRA,
+ MOVE_ENCORE,
+ MOVE_BARRIER,
+ MOVE_KNOCK_OFF,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(MACHOP,
+ MOVE_LIGHT_SCREEN,
+ MOVE_MEDITATE,
+ MOVE_ROLLING_KICK,
+ MOVE_ENCORE,
+ MOVE_SMELLING_SALT,
+ MOVE_COUNTER,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(BELLSPROUT,
+ MOVE_SWORDS_DANCE,
+ MOVE_ENCORE,
+ MOVE_REFLECT,
+ MOVE_SYNTHESIS,
+ MOVE_LEECH_LIFE,
+ MOVE_INGRAIN,
+ MOVE_MAGICAL_LEAF),
+
+ egg_moves(TENTACOOL,
+ MOVE_AURORA_BEAM,
+ MOVE_MIRROR_COAT,
+ MOVE_RAPID_SPIN,
+ MOVE_HAZE,
+ MOVE_SAFEGUARD,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(GEODUDE,
+ MOVE_MEGA_PUNCH,
+ MOVE_ROCK_SLIDE,
+ MOVE_BLOCK),
+
+ egg_moves(PONYTA,
+ MOVE_FLAME_WHEEL,
+ MOVE_THRASH,
+ MOVE_DOUBLE_KICK,
+ MOVE_HYPNOSIS,
+ MOVE_CHARM,
+ MOVE_DOUBLE_EDGE),
+
+ egg_moves(SLOWPOKE,
+ MOVE_SAFEGUARD,
+ MOVE_BELLY_DRUM,
+ MOVE_FUTURE_SIGHT,
+ MOVE_STOMP,
+ MOVE_MUD_SPORT,
+ MOVE_SLEEP_TALK,
+ MOVE_SNORE),
+
+ egg_moves(FARFETCHD,
+ MOVE_STEEL_WING,
+ MOVE_FORESIGHT,
+ MOVE_MIRROR_MOVE,
+ MOVE_GUST,
+ MOVE_QUICK_ATTACK,
+ MOVE_FLAIL,
+ MOVE_FEATHER_DANCE,
+ MOVE_CURSE),
+
+ egg_moves(DODUO,
+ MOVE_QUICK_ATTACK,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_FAINT_ATTACK,
+ MOVE_FLAIL,
+ MOVE_ENDEAVOR),
+
+ egg_moves(SEEL,
+ MOVE_LICK,
+ MOVE_PERISH_SONG,
+ MOVE_DISABLE,
+ MOVE_HORN_DRILL,
+ MOVE_SLAM,
+ MOVE_ENCORE,
+ MOVE_FAKE_OUT,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(GRIMER,
+ MOVE_HAZE,
+ MOVE_MEAN_LOOK,
+ MOVE_LICK,
+ MOVE_IMPRISON,
+ MOVE_CURSE,
+ MOVE_SHADOW_PUNCH,
+ MOVE_EXPLOSION),
+
+ egg_moves(SHELLDER,
+ MOVE_BUBBLE_BEAM,
+ MOVE_TAKE_DOWN,
+ MOVE_BARRIER,
+ MOVE_RAPID_SPIN,
+ MOVE_SCREECH,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(GASTLY,
+ MOVE_PSYWAVE,
+ MOVE_PERISH_SONG,
+ MOVE_HAZE,
+ MOVE_ASTONISH,
+ MOVE_WILL_O_WISP,
+ MOVE_GRUDGE,
+ MOVE_EXPLOSION),
+
+ egg_moves(ONIX,
+ MOVE_ROCK_SLIDE,
+ MOVE_FLAIL,
+ MOVE_EXPLOSION,
+ MOVE_BLOCK),
+
+ egg_moves(DROWZEE,
+ MOVE_BARRIER,
+ MOVE_ASSIST,
+ MOVE_ROLE_PLAY,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(KRABBY,
+ MOVE_DIG,
+ MOVE_HAZE,
+ MOVE_AMNESIA,
+ MOVE_FLAIL,
+ MOVE_SLAM,
+ MOVE_KNOCK_OFF,
+ MOVE_SWORDS_DANCE),
+
+ egg_moves(EXEGGCUTE,
+ MOVE_SYNTHESIS,
+ MOVE_MOONLIGHT,
+ MOVE_REFLECT,
+ MOVE_ANCIENT_POWER,
+ MOVE_PSYCH_UP,
+ MOVE_INGRAIN,
+ MOVE_CURSE),
+
+ egg_moves(CUBONE,
+ MOVE_ROCK_SLIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_BELLY_DRUM,
+ MOVE_SCREECH,
+ MOVE_SKULL_BASH,
+ MOVE_PERISH_SONG,
+ MOVE_SWORDS_DANCE),
+
+ egg_moves(LICKITUNG,
+ MOVE_BELLY_DRUM,
+ MOVE_MAGNITUDE,
+ MOVE_BODY_SLAM,
+ MOVE_CURSE,
+ MOVE_SMELLING_SALT,
+ MOVE_SLEEP_TALK,
+ MOVE_SNORE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(KOFFING,
+ MOVE_SCREECH,
+ MOVE_PSYWAVE,
+ MOVE_PSYBEAM,
+ MOVE_DESTINY_BOND,
+ MOVE_PAIN_SPLIT,
+ MOVE_WILL_O_WISP),
+
+ egg_moves(RHYHORN,
+ MOVE_CRUNCH,
+ MOVE_REVERSAL,
+ MOVE_ROCK_SLIDE,
+ MOVE_COUNTER,
+ MOVE_MAGNITUDE,
+ MOVE_SWORDS_DANCE,
+ MOVE_CURSE,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(CHANSEY,
+ MOVE_PRESENT,
+ MOVE_METRONOME,
+ MOVE_HEAL_BELL,
+ MOVE_AROMATHERAPY,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(TANGELA,
+ MOVE_FLAIL,
+ MOVE_CONFUSION,
+ MOVE_MEGA_DRAIN,
+ MOVE_REFLECT,
+ MOVE_AMNESIA,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER),
+
+ egg_moves(KANGASKHAN,
+ MOVE_STOMP,
+ MOVE_FORESIGHT,
+ MOVE_FOCUS_ENERGY,
+ MOVE_SAFEGUARD,
+ MOVE_DISABLE,
+ MOVE_COUNTER,
+ MOVE_CRUSH_CLAW,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(HORSEA,
+ MOVE_FLAIL,
+ MOVE_AURORA_BEAM,
+ MOVE_OCTAZOOKA,
+ MOVE_DISABLE,
+ MOVE_SPLASH,
+ MOVE_DRAGON_RAGE,
+ MOVE_DRAGON_BREATH),
+
+ egg_moves(GOLDEEN,
+ MOVE_PSYBEAM,
+ MOVE_HAZE,
+ MOVE_HYDRO_PUMP,
+ MOVE_SLEEP_TALK,
+ MOVE_MUD_SPORT),
+
+ egg_moves(MR_MIME,
+ MOVE_FUTURE_SIGHT,
+ MOVE_HYPNOSIS,
+ MOVE_MIMIC,
+ MOVE_PSYCH_UP,
+ MOVE_FAKE_OUT,
+ MOVE_TRICK),
+
+ egg_moves(SCYTHER,
+ MOVE_COUNTER,
+ MOVE_SAFEGUARD,
+ MOVE_BATON_PASS,
+ MOVE_RAZOR_WIND,
+ MOVE_REVERSAL,
+ MOVE_LIGHT_SCREEN,
+ MOVE_ENDURE,
+ MOVE_SILVER_WIND),
+
+ egg_moves(PINSIR,
+ MOVE_FURY_ATTACK,
+ MOVE_FLAIL,
+ MOVE_FALSE_SWIPE,
+ MOVE_FAINT_ATTACK),
+
+ egg_moves(LAPRAS,
+ MOVE_FORESIGHT,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE,
+ MOVE_REFRESH,
+ MOVE_DRAGON_DANCE,
+ MOVE_CURSE,
+ MOVE_SLEEP_TALK,
+ MOVE_HORN_DRILL),
+
+ egg_moves(EEVEE,
+ MOVE_CHARM,
+ MOVE_FLAIL,
+ MOVE_ENDURE,
+ MOVE_CURSE,
+ MOVE_TICKLE,
+ MOVE_WISH),
+
+ egg_moves(OMANYTE,
+ MOVE_BUBBLE_BEAM,
+ MOVE_AURORA_BEAM,
+ MOVE_SLAM,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_ROCK_SLIDE,
+ MOVE_SPIKES),
+
+ egg_moves(KABUTO,
+ MOVE_BUBBLE_BEAM,
+ MOVE_AURORA_BEAM,
+ MOVE_RAPID_SPIN,
+ MOVE_DIG,
+ MOVE_FLAIL,
+ MOVE_KNOCK_OFF,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(AERODACTYL,
+ MOVE_WHIRLWIND,
+ MOVE_PURSUIT,
+ MOVE_FORESIGHT,
+ MOVE_STEEL_WING,
+ MOVE_DRAGON_BREATH,
+ MOVE_CURSE),
+
+ egg_moves(SNORLAX,
+ MOVE_LICK,
+ MOVE_CHARM,
+ MOVE_DOUBLE_EDGE,
+ MOVE_CURSE,
+ MOVE_FISSURE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(DRATINI,
+ MOVE_LIGHT_SCREEN,
+ MOVE_MIST,
+ MOVE_HAZE,
+ MOVE_SUPERSONIC,
+ MOVE_DRAGON_BREATH,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(CHIKORITA,
+ MOVE_VINE_WHIP,
+ MOVE_LEECH_SEED,
+ MOVE_COUNTER,
+ MOVE_ANCIENT_POWER,
+ MOVE_FLAIL,
+ MOVE_NATURE_POWER,
+ MOVE_INGRAIN,
+ MOVE_GRASS_WHISTLE),
+
+ egg_moves(CYNDAQUIL,
+ MOVE_FURY_SWIPES,
+ MOVE_QUICK_ATTACK,
+ MOVE_REVERSAL,
+ MOVE_THRASH,
+ MOVE_FORESIGHT,
+ MOVE_COVET,
+ MOVE_HOWL,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(TOTODILE,
+ MOVE_CRUNCH,
+ MOVE_THRASH,
+ MOVE_HYDRO_PUMP,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_MUD_SPORT,
+ MOVE_WATER_SPORT,
+ MOVE_DRAGON_CLAW),
+
+ egg_moves(SENTRET,
+ MOVE_DOUBLE_EDGE,
+ MOVE_PURSUIT,
+ MOVE_SLASH,
+ MOVE_FOCUS_ENERGY,
+ MOVE_REVERSAL,
+ MOVE_SUBSTITUTE,
+ MOVE_TRICK,
+ MOVE_ASSIST),
+
+ egg_moves(HOOTHOOT,
+ MOVE_MIRROR_MOVE,
+ MOVE_SUPERSONIC,
+ MOVE_FAINT_ATTACK,
+ MOVE_WING_ATTACK,
+ MOVE_WHIRLWIND,
+ MOVE_SKY_ATTACK,
+ MOVE_FEATHER_DANCE),
+
+ egg_moves(LEDYBA,
+ MOVE_PSYBEAM,
+ MOVE_BIDE,
+ MOVE_SILVER_WIND),
+
+ egg_moves(SPINARAK,
+ MOVE_PSYBEAM,
+ MOVE_DISABLE,
+ MOVE_SONIC_BOOM,
+ MOVE_BATON_PASS,
+ MOVE_PURSUIT,
+ MOVE_SIGNAL_BEAM),
+
+ egg_moves(CHINCHOU,
+ MOVE_FLAIL,
+ MOVE_SCREECH,
+ MOVE_AMNESIA),
+
+ egg_moves(PICHU,
+ MOVE_REVERSAL,
+ MOVE_BIDE,
+ MOVE_PRESENT,
+ MOVE_ENCORE,
+ MOVE_DOUBLE_SLAP,
+ MOVE_WISH,
+ MOVE_CHARGE),
+
+ egg_moves(CLEFFA,
+ MOVE_PRESENT,
+ MOVE_METRONOME,
+ MOVE_AMNESIA,
+ MOVE_BELLY_DRUM,
+ MOVE_SPLASH,
+ MOVE_MIMIC,
+ MOVE_WISH,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(IGGLYBUFF,
+ MOVE_PERISH_SONG,
+ MOVE_PRESENT,
+ MOVE_FAINT_ATTACK,
+ MOVE_WISH,
+ MOVE_FAKE_TEARS),
+
+ egg_moves(TOGEPI,
+ MOVE_PRESENT,
+ MOVE_MIRROR_MOVE,
+ MOVE_PECK,
+ MOVE_FORESIGHT,
+ MOVE_FUTURE_SIGHT,
+ MOVE_SUBSTITUTE,
+ MOVE_PSYCH_UP),
+
+ egg_moves(NATU,
+ MOVE_HAZE,
+ MOVE_DRILL_PECK,
+ MOVE_QUICK_ATTACK,
+ MOVE_FAINT_ATTACK,
+ MOVE_STEEL_WING,
+ MOVE_PSYCH_UP,
+ MOVE_FEATHER_DANCE,
+ MOVE_REFRESH),
+
+ egg_moves(MAREEP,
+ MOVE_TAKE_DOWN,
+ MOVE_BODY_SLAM,
+ MOVE_SAFEGUARD,
+ MOVE_SCREECH,
+ MOVE_REFLECT,
+ MOVE_ODOR_SLEUTH,
+ MOVE_CHARGE),
+
+ egg_moves(MARILL,
+ MOVE_LIGHT_SCREEN,
+ MOVE_PRESENT,
+ MOVE_AMNESIA,
+ MOVE_FUTURE_SIGHT,
+ MOVE_BELLY_DRUM,
+ MOVE_PERISH_SONG,
+ MOVE_SUPERSONIC,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(SUDOWOODO,
+ MOVE_SELF_DESTRUCT),
+
+ egg_moves(HOPPIP,
+ MOVE_CONFUSION,
+ MOVE_ENCORE,
+ MOVE_DOUBLE_EDGE,
+ MOVE_REFLECT,
+ MOVE_AMNESIA,
+ MOVE_HELPING_HAND,
+ MOVE_PSYCH_UP),
+
+ egg_moves(AIPOM,
+ MOVE_COUNTER,
+ MOVE_SCREECH,
+ MOVE_PURSUIT,
+ MOVE_AGILITY,
+ MOVE_SPITE,
+ MOVE_SLAM,
+ MOVE_DOUBLE_SLAP,
+ MOVE_BEAT_UP),
+
+ egg_moves(SUNKERN,
+ MOVE_GRASS_WHISTLE,
+ MOVE_ENCORE,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER,
+ MOVE_CURSE,
+ MOVE_HELPING_HAND),
+
+ egg_moves(YANMA,
+ MOVE_WHIRLWIND,
+ MOVE_REVERSAL,
+ MOVE_LEECH_LIFE,
+ MOVE_SIGNAL_BEAM,
+ MOVE_SILVER_WIND),
+
+ egg_moves(WOOPER,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER,
+ MOVE_SAFEGUARD,
+ MOVE_CURSE,
+ MOVE_MUD_SPORT,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP),
+
+ egg_moves(MURKROW,
+ MOVE_WHIRLWIND,
+ MOVE_DRILL_PECK,
+ MOVE_MIRROR_MOVE,
+ MOVE_WING_ATTACK,
+ MOVE_SKY_ATTACK,
+ MOVE_CONFUSE_RAY,
+ MOVE_FEATHER_DANCE,
+ MOVE_PERISH_SONG),
+
+ egg_moves(MISDREAVUS,
+ MOVE_SCREECH,
+ MOVE_DESTINY_BOND,
+ MOVE_PSYCH_UP,
+ MOVE_IMPRISON),
+
+ egg_moves(GIRAFARIG,
+ MOVE_TAKE_DOWN,
+ MOVE_AMNESIA,
+ MOVE_FORESIGHT,
+ MOVE_FUTURE_SIGHT,
+ MOVE_BEAT_UP,
+ MOVE_PSYCH_UP,
+ MOVE_WISH,
+ MOVE_MAGIC_COAT),
+
+ egg_moves(PINECO,
+ MOVE_REFLECT,
+ MOVE_PIN_MISSILE,
+ MOVE_FLAIL,
+ MOVE_SWIFT,
+ MOVE_COUNTER,
+ MOVE_SAND_TOMB),
+
+ egg_moves(DUNSPARCE,
+ MOVE_BIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_ROCK_SLIDE,
+ MOVE_BITE,
+ MOVE_HEADBUTT,
+ MOVE_ASTONISH,
+ MOVE_CURSE),
+
+ egg_moves(GLIGAR,
+ MOVE_METAL_CLAW,
+ MOVE_WING_ATTACK,
+ MOVE_RAZOR_WIND,
+ MOVE_COUNTER,
+ MOVE_SAND_TOMB),
+
+ egg_moves(SNUBBULL,
+ MOVE_METRONOME,
+ MOVE_FAINT_ATTACK,
+ MOVE_REFLECT,
+ MOVE_PRESENT,
+ MOVE_CRUNCH,
+ MOVE_HEAL_BELL,
+ MOVE_SNORE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(QWILFISH,
+ MOVE_FLAIL,
+ MOVE_HAZE,
+ MOVE_BUBBLE_BEAM,
+ MOVE_SUPERSONIC,
+ MOVE_ASTONISH),
+
+ egg_moves(SHUCKLE,
+ MOVE_SWEET_SCENT),
+
+ egg_moves(HERACROSS,
+ MOVE_HARDEN,
+ MOVE_BIDE,
+ MOVE_FLAIL,
+ MOVE_FALSE_SWIPE),
+
+ egg_moves(SNEASEL,
+ MOVE_COUNTER,
+ MOVE_SPITE,
+ MOVE_FORESIGHT,
+ MOVE_REFLECT,
+ MOVE_BITE,
+ MOVE_CRUSH_CLAW,
+ MOVE_FAKE_OUT),
+
+ egg_moves(TEDDIURSA,
+ MOVE_CRUNCH,
+ MOVE_TAKE_DOWN,
+ MOVE_SEISMIC_TOSS,
+ MOVE_COUNTER,
+ MOVE_METAL_CLAW,
+ MOVE_FAKE_TEARS,
+ MOVE_YAWN,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(SLUGMA,
+ MOVE_ACID_ARMOR,
+ MOVE_HEAT_WAVE),
+
+ egg_moves(SWINUB,
+ MOVE_TAKE_DOWN,
+ MOVE_BITE,
+ MOVE_BODY_SLAM,
+ MOVE_ROCK_SLIDE,
+ MOVE_ANCIENT_POWER,
+ MOVE_MUD_SHOT,
+ MOVE_ICICLE_SPEAR,
+ MOVE_DOUBLE_EDGE),
+
+ egg_moves(CORSOLA,
+ MOVE_ROCK_SLIDE,
+ MOVE_SCREECH,
+ MOVE_MIST,
+ MOVE_AMNESIA,
+ MOVE_BARRIER,
+ MOVE_INGRAIN,
+ MOVE_CONFUSE_RAY,
+ MOVE_ICICLE_SPEAR),
+
+ egg_moves(REMORAID,
+ MOVE_AURORA_BEAM,
+ MOVE_OCTAZOOKA,
+ MOVE_SUPERSONIC,
+ MOVE_HAZE,
+ MOVE_SCREECH,
+ MOVE_THUNDER_WAVE,
+ MOVE_ROCK_BLAST),
+
+ egg_moves(DELIBIRD,
+ MOVE_AURORA_BEAM,
+ MOVE_QUICK_ATTACK,
+ MOVE_FUTURE_SIGHT,
+ MOVE_SPLASH,
+ MOVE_RAPID_SPIN,
+ MOVE_ICE_BALL),
+
+ egg_moves(MANTINE,
+ MOVE_TWISTER,
+ MOVE_HYDRO_PUMP,
+ MOVE_HAZE,
+ MOVE_SLAM,
+ MOVE_MUD_SPORT,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(SKARMORY,
+ MOVE_DRILL_PECK,
+ MOVE_PURSUIT,
+ MOVE_WHIRLWIND,
+ MOVE_SKY_ATTACK,
+ MOVE_CURSE),
+
+ egg_moves(HOUNDOUR,
+ MOVE_FIRE_SPIN,
+ MOVE_RAGE,
+ MOVE_PURSUIT,
+ MOVE_COUNTER,
+ MOVE_SPITE,
+ MOVE_REVERSAL,
+ MOVE_BEAT_UP,
+ MOVE_WILL_O_WISP),
+
+ egg_moves(PHANPY,
+ MOVE_FOCUS_ENERGY,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER,
+ MOVE_SNORE,
+ MOVE_COUNTER,
+ MOVE_FISSURE),
+
+ egg_moves(STANTLER,
+ MOVE_SPITE,
+ MOVE_DISABLE,
+ MOVE_BITE,
+ MOVE_SWAGGER,
+ MOVE_PSYCH_UP,
+ MOVE_EXTRASENSORY),
+
+ egg_moves(TYROGUE,
+ MOVE_RAPID_SPIN,
+ MOVE_HI_JUMP_KICK,
+ MOVE_MACH_PUNCH,
+ MOVE_MIND_READER,
+ MOVE_HELPING_HAND),
+
+ egg_moves(SMOOCHUM,
+ MOVE_MEDITATE,
+ MOVE_PSYCH_UP,
+ MOVE_FAKE_OUT,
+ MOVE_WISH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(ELEKID,
+ MOVE_KARATE_CHOP,
+ MOVE_BARRIER,
+ MOVE_ROLLING_KICK,
+ MOVE_MEDITATE,
+ MOVE_CROSS_CHOP,
+ MOVE_FIRE_PUNCH,
+ MOVE_ICE_PUNCH),
+
+ egg_moves(MAGBY,
+ MOVE_KARATE_CHOP,
+ MOVE_MEGA_PUNCH,
+ MOVE_BARRIER,
+ MOVE_SCREECH,
+ MOVE_CROSS_CHOP,
+ MOVE_THUNDER_PUNCH),
+
+ egg_moves(MILTANK,
+ MOVE_PRESENT,
+ MOVE_REVERSAL,
+ MOVE_SEISMIC_TOSS,
+ MOVE_ENDURE,
+ MOVE_PSYCH_UP,
+ MOVE_CURSE,
+ MOVE_HELPING_HAND,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(LARVITAR,
+ MOVE_PURSUIT,
+ MOVE_STOMP,
+ MOVE_OUTRAGE,
+ MOVE_FOCUS_ENERGY,
+ MOVE_ANCIENT_POWER,
+ MOVE_DRAGON_DANCE,
+ MOVE_CURSE),
+
+ egg_moves(TREECKO,
+ MOVE_CRUNCH,
+ MOVE_MUD_SPORT,
+ MOVE_ENDEAVOR,
+ MOVE_LEECH_SEED,
+ MOVE_DRAGON_BREATH,
+ MOVE_CRUSH_CLAW),
+
+ egg_moves(TORCHIC,
+ MOVE_COUNTER,
+ MOVE_REVERSAL,
+ MOVE_ENDURE,
+ MOVE_SWAGGER,
+ MOVE_ROCK_SLIDE,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(MUDKIP,
+ MOVE_REFRESH,
+ MOVE_UPROAR,
+ MOVE_CURSE,
+ MOVE_STOMP,
+ MOVE_ICE_BALL,
+ MOVE_MIRROR_COAT),
+
+ egg_moves(POOCHYENA,
+ MOVE_ASTONISH,
+ MOVE_POISON_FANG,
+ MOVE_COVET,
+ MOVE_LEER,
+ MOVE_YAWN),
+
+ egg_moves(ZIGZAGOON,
+ MOVE_CHARM,
+ MOVE_PURSUIT,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE,
+ MOVE_TRICK),
+
+ egg_moves(LOTAD,
+ MOVE_SYNTHESIS,
+ MOVE_RAZOR_LEAF,
+ MOVE_SWEET_SCENT,
+ MOVE_LEECH_SEED,
+ MOVE_FLAIL,
+ MOVE_WATER_GUN),
+
+ egg_moves(SEEDOT,
+ MOVE_LEECH_SEED,
+ MOVE_AMNESIA,
+ MOVE_QUICK_ATTACK,
+ MOVE_RAZOR_WIND,
+ MOVE_TAKE_DOWN,
+ MOVE_FALSE_SWIPE),
+
+ egg_moves(NINCADA,
+ MOVE_ENDURE,
+ MOVE_FAINT_ATTACK,
+ MOVE_GUST,
+ MOVE_SILVER_WIND),
+
+ egg_moves(TAILLOW,
+ MOVE_PURSUIT,
+ MOVE_SUPERSONIC,
+ MOVE_REFRESH,
+ MOVE_MIRROR_MOVE,
+ MOVE_RAGE,
+ MOVE_SKY_ATTACK),
+
+ egg_moves(SHROOMISH,
+ MOVE_FAKE_TEARS,
+ MOVE_SWAGGER,
+ MOVE_CHARM,
+ MOVE_FALSE_SWIPE,
+ MOVE_HELPING_HAND),
+
+ egg_moves(SPINDA,
+ MOVE_ENCORE,
+ MOVE_ROCK_SLIDE,
+ MOVE_ASSIST,
+ MOVE_DISABLE,
+ MOVE_BATON_PASS,
+ MOVE_WISH,
+ MOVE_TRICK,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(WINGULL,
+ MOVE_MIST,
+ MOVE_TWISTER,
+ MOVE_AGILITY,
+ MOVE_GUST,
+ MOVE_WATER_SPORT),
+
+ egg_moves(SURSKIT,
+ MOVE_FORESIGHT,
+ MOVE_MUD_SHOT,
+ MOVE_PSYBEAM,
+ MOVE_HYDRO_PUMP,
+ MOVE_MIND_READER),
+
+ egg_moves(WAILMER,
+ MOVE_DOUBLE_EDGE,
+ MOVE_THRASH,
+ MOVE_SWAGGER,
+ MOVE_SNORE,
+ MOVE_SLEEP_TALK,
+ MOVE_CURSE,
+ MOVE_FISSURE,
+ MOVE_TICKLE),
+
+ egg_moves(SKITTY,
+ MOVE_HELPING_HAND,
+ MOVE_PSYCH_UP,
+ MOVE_UPROAR,
+ MOVE_FAKE_TEARS,
+ MOVE_WISH,
+ MOVE_BATON_PASS,
+ MOVE_SUBSTITUTE,
+ MOVE_TICKLE),
+
+ egg_moves(KECLEON,
+ MOVE_DISABLE,
+ MOVE_MAGIC_COAT,
+ MOVE_TRICK),
+
+ egg_moves(NOSEPASS,
+ MOVE_MAGNITUDE,
+ MOVE_ROLLOUT,
+ MOVE_EXPLOSION),
+
+ egg_moves(TORKOAL,
+ MOVE_ERUPTION,
+ MOVE_ENDURE,
+ MOVE_SLEEP_TALK,
+ MOVE_YAWN),
+
+ egg_moves(SABLEYE,
+ MOVE_PSYCH_UP,
+ MOVE_RECOVER,
+ MOVE_MOONLIGHT),
+
+ egg_moves(BARBOACH,
+ MOVE_THRASH,
+ MOVE_WHIRLPOOL,
+ MOVE_SPARK),
+
+ egg_moves(LUVDISC,
+ MOVE_SPLASH,
+ MOVE_SUPERSONIC,
+ MOVE_WATER_SPORT,
+ MOVE_MUD_SPORT),
+
+ egg_moves(CORPHISH,
+ MOVE_MUD_SPORT,
+ MOVE_ENDEAVOR,
+ MOVE_BODY_SLAM,
+ MOVE_ANCIENT_POWER),
+
+ egg_moves(FEEBAS,
+ MOVE_MIRROR_COAT,
+ MOVE_DRAGON_BREATH,
+ MOVE_MUD_SPORT,
+ MOVE_HYPNOSIS,
+ MOVE_LIGHT_SCREEN,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(CARVANHA,
+ MOVE_HYDRO_PUMP,
+ MOVE_DOUBLE_EDGE,
+ MOVE_THRASH),
+
+ egg_moves(TRAPINCH,
+ MOVE_FOCUS_ENERGY,
+ MOVE_QUICK_ATTACK,
+ MOVE_GUST),
+
+ egg_moves(MAKUHITA,
+ MOVE_FAINT_ATTACK,
+ MOVE_DETECT,
+ MOVE_FORESIGHT,
+ MOVE_HELPING_HAND,
+ MOVE_CROSS_CHOP,
+ MOVE_REVENGE,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_COUNTER),
+
+ egg_moves(ELECTRIKE,
+ MOVE_CRUNCH,
+ MOVE_HEADBUTT,
+ MOVE_UPROAR,
+ MOVE_CURSE,
+ MOVE_SWIFT),
+
+ egg_moves(NUMEL,
+ MOVE_HOWL,
+ MOVE_SCARY_FACE,
+ MOVE_BODY_SLAM,
+ MOVE_ROLLOUT,
+ MOVE_DEFENSE_CURL,
+ MOVE_STOMP),
+
+ egg_moves(SPHEAL,
+ MOVE_WATER_SPORT,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP,
+ MOVE_YAWN,
+ MOVE_ROCK_SLIDE,
+ MOVE_CURSE,
+ MOVE_FISSURE),
+
+ egg_moves(CACNEA,
+ MOVE_GRASS_WHISTLE,
+ MOVE_ACID,
+ MOVE_TEETER_DANCE,
+ MOVE_DYNAMIC_PUNCH,
+ MOVE_COUNTER),
+
+ egg_moves(SNORUNT,
+ MOVE_BLOCK,
+ MOVE_SPIKES),
+
+ egg_moves(AZURILL,
+ MOVE_ENCORE,
+ MOVE_SING,
+ MOVE_REFRESH,
+ MOVE_SLAM,
+ MOVE_TICKLE),
+
+ egg_moves(SPOINK,
+ MOVE_FUTURE_SIGHT,
+ MOVE_EXTRASENSORY,
+ MOVE_SUBSTITUTE,
+ MOVE_TRICK),
+
+ egg_moves(PLUSLE,
+ MOVE_SUBSTITUTE,
+ MOVE_WISH),
+
+ egg_moves(MINUN,
+ MOVE_SUBSTITUTE,
+ MOVE_WISH),
+
+ egg_moves(MAWILE,
+ MOVE_SWORDS_DANCE,
+ MOVE_FALSE_SWIPE,
+ MOVE_POISON_FANG,
+ MOVE_PSYCH_UP,
+ MOVE_ANCIENT_POWER,
+ MOVE_TICKLE),
+
+ egg_moves(MEDITITE,
+ MOVE_FIRE_PUNCH,
+ MOVE_THUNDER_PUNCH,
+ MOVE_ICE_PUNCH,
+ MOVE_FORESIGHT,
+ MOVE_FAKE_OUT,
+ MOVE_BATON_PASS,
+ MOVE_DYNAMIC_PUNCH),
+
+ egg_moves(SWABLU,
+ MOVE_AGILITY,
+ MOVE_HAZE,
+ MOVE_PURSUIT,
+ MOVE_RAGE),
+
+ egg_moves(DUSKULL,
+ MOVE_IMPRISON,
+ MOVE_DESTINY_BOND,
+ MOVE_PAIN_SPLIT,
+ MOVE_GRUDGE,
+ MOVE_MEMENTO,
+ MOVE_FAINT_ATTACK),
+
+ egg_moves(ROSELIA,
+ MOVE_SPIKES,
+ MOVE_SYNTHESIS,
+ MOVE_PIN_MISSILE,
+ MOVE_COTTON_SPORE),
+
+ egg_moves(SLAKOTH,
+ MOVE_PURSUIT,
+ MOVE_SLASH,
+ MOVE_BODY_SLAM,
+ MOVE_SNORE,
+ MOVE_CRUSH_CLAW,
+ MOVE_CURSE,
+ MOVE_SLEEP_TALK),
+
+ egg_moves(GULPIN,
+ MOVE_DREAM_EATER,
+ MOVE_ACID_ARMOR,
+ MOVE_SMOG,
+ MOVE_PAIN_SPLIT),
+
+ egg_moves(TROPIUS,
+ MOVE_HEADBUTT,
+ MOVE_SLAM,
+ MOVE_RAZOR_WIND,
+ MOVE_LEECH_SEED,
+ MOVE_NATURE_POWER),
+
+ egg_moves(WHISMUR,
+ MOVE_TAKE_DOWN,
+ MOVE_SNORE,
+ MOVE_SWAGGER,
+ MOVE_EXTRASENSORY,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(CLAMPERL,
+ MOVE_REFRESH,
+ MOVE_MUD_SPORT,
+ MOVE_BODY_SLAM,
+ MOVE_SUPERSONIC,
+ MOVE_BARRIER,
+ MOVE_CONFUSE_RAY),
+
+ egg_moves(ABSOL,
+ MOVE_BATON_PASS,
+ MOVE_FAINT_ATTACK,
+ MOVE_DOUBLE_EDGE,
+ MOVE_MAGIC_COAT,
+ MOVE_CURSE,
+ MOVE_SUBSTITUTE),
+
+ egg_moves(SHUPPET,
+ MOVE_DISABLE,
+ MOVE_DESTINY_BOND,
+ MOVE_FORESIGHT,
+ MOVE_ASTONISH,
+ MOVE_IMPRISON),
+
+ egg_moves(SEVIPER,
+ MOVE_STOCKPILE,
+ MOVE_SWALLOW,
+ MOVE_SPIT_UP,
+ MOVE_BODY_SLAM),
+
+ egg_moves(ZANGOOSE,
+ MOVE_FLAIL,
+ MOVE_DOUBLE_KICK,
+ MOVE_RAZOR_WIND,
+ MOVE_COUNTER,
+ MOVE_ROAR,
+ MOVE_CURSE),
+
+ egg_moves(RELICANTH,
+ MOVE_MAGNITUDE,
+ MOVE_SKULL_BASH,
+ MOVE_WATER_SPORT,
+ MOVE_AMNESIA,
+ MOVE_SLEEP_TALK,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(ARON,
+ MOVE_ENDEAVOR,
+ MOVE_BODY_SLAM,
+ MOVE_STOMP,
+ MOVE_SMELLING_SALT),
+
+ egg_moves(CASTFORM,
+ MOVE_FUTURE_SIGHT,
+ MOVE_PSYCH_UP),
+
+ egg_moves(VOLBEAT,
+ MOVE_BATON_PASS,
+ MOVE_SILVER_WIND,
+ MOVE_TRICK),
+
+ egg_moves(ILLUMISE,
+ MOVE_BATON_PASS,
+ MOVE_SILVER_WIND,
+ MOVE_GROWTH),
+
+ egg_moves(LILEEP,
+ MOVE_BARRIER,
+ MOVE_RECOVER,
+ MOVE_MIRROR_COAT,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(ANORITH,
+ MOVE_RAPID_SPIN,
+ MOVE_KNOCK_OFF,
+ MOVE_SWORDS_DANCE,
+ MOVE_ROCK_SLIDE),
+
+ egg_moves(RALTS,
+ MOVE_DISABLE,
+ MOVE_WILL_O_WISP,
+ MOVE_MEAN_LOOK,
+ MOVE_MEMENTO,
+ MOVE_DESTINY_BOND),
+
+ egg_moves(BAGON,
+ MOVE_HYDRO_PUMP,
+ MOVE_THRASH,
+ MOVE_DRAGON_RAGE,
+ MOVE_TWISTER,
+ MOVE_DRAGON_DANCE),
+
+ egg_moves(CHIMECHO,
+ MOVE_DISABLE,
+ MOVE_CURSE,
+ MOVE_HYPNOSIS,
+ MOVE_DREAM_EATER),
+
+ 0xFFFF
+};
diff --git a/include/data/pokemon/evolution.h b/include/data/pokemon/evolution.h
index 51e993347..919416fee 100644
--- a/include/data/pokemon/evolution.h
+++ b/include/data/pokemon/evolution.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_EVOLUTION_H
diff --git a/include/data/pokemon/experience_tables.h b/include/data/pokemon/experience_tables.h
index 70c5e88ed..2fb416fe9 100644
--- a/include/data/pokemon/experience_tables.h
+++ b/include/data/pokemon/experience_tables.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_EXPERIENCE_TABLES_H
diff --git a/include/data/pokemon/item_effects.h b/include/data/pokemon/item_effects.h
index b07573933..cd06228dd 100644
--- a/include/data/pokemon/item_effects.h
+++ b/include/data/pokemon/item_effects.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_ITEM_EFFECTS_H
diff --git a/include/data/pokemon/level_up_learnset_pointers.h b/include/data/pokemon/level_up_learnset_pointers.h
index 753947d51..19761c996 100644
--- a/include/data/pokemon/level_up_learnset_pointers.h
+++ b/include/data/pokemon/level_up_learnset_pointers.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_LEVEL_UP_LEARNSET_POINTERS_H
diff --git a/include/data/pokemon/level_up_learnsets.h b/include/data/pokemon/level_up_learnsets.h
index 5b79f4bc0..bc1de82de 100644
--- a/include/data/pokemon/level_up_learnsets.h
+++ b/include/data/pokemon/level_up_learnsets.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_LEVEL_UP_LEARNSETS_H
diff --git a/include/data/pokemon/nature_stats.h b/include/data/pokemon/nature_stats.h
index 27bd98f9d..fcef2a0ac 100644
--- a/include/data/pokemon/nature_stats.h
+++ b/include/data/pokemon/nature_stats.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_NATURE_STATS_H
diff --git a/include/data/pokemon/spinda_spots.h b/include/data/pokemon/spinda_spots.h
index 234cdf00e..d045e0734 100644
--- a/include/data/pokemon/spinda_spots.h
+++ b/include/data/pokemon/spinda_spots.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_SPINDA_SPOTS_H
diff --git a/include/data/pokemon/tmhm_learnsets.h b/include/data/pokemon/tmhm_learnsets.h
index fa48f7f5c..02cd22d56 100644
--- a/include/data/pokemon/tmhm_learnsets.h
+++ b/include/data/pokemon/tmhm_learnsets.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_TMHM_LEARNSETS_H
diff --git a/include/data/pokemon/trainer_class_lookups.h b/include/data/pokemon/trainer_class_lookups.h
index 0aea322a0..c86e795c4 100644
--- a/include/data/pokemon/trainer_class_lookups.h
+++ b/include/data/pokemon/trainer_class_lookups.h
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/27/17.
+
//
#ifndef POKERUBY_TRAINER_CLASS_LOOKUPS_H
diff --git a/include/data2.h b/include/data2.h
index 9dd26fd5f..53a90944d 100644
--- a/include/data2.h
+++ b/include/data2.h
@@ -3,12 +3,7 @@
#include "sprite.h"
-struct UnknownStructD2
-{
- u32 unk0;
- u32 unk4;
- u32 unk8;
-};
+struct UnknownTaskStruct;
struct MonCoords
{
@@ -44,8 +39,10 @@ extern u8 gEnemyMonElevation[];
extern const u8 gTrainerClassNames[][13];
extern const struct Trainer gTrainers[];
extern u8 gSpeciesNames[][11];
-extern u8 gMoveNames[][13];
-extern const struct UnknownStructD2 gUnknown_081F9674;
+extern const u8 gMoveNames[][13];
+extern const u8 gAbilityNames[][13];
+extern const u8 gTypeNames[][7];
+extern const struct UnknownTaskStruct gUnknown_081F9674;
extern const u8 gUnknown_081F96C8[];
extern struct CompressedSpriteSheet gUnknown_081FAEA4;
extern struct CompressedSpritePalette gUnknown_081FAEAC;
diff --git a/include/daycare.h b/include/daycare.h
index b90c50610..e46351d72 100644
--- a/include/daycare.h
+++ b/include/daycare.h
@@ -1,14 +1,15 @@
#ifndef GUARD_DAYCARE_H
#define GUARD_DAYCARE_H
-u8 Daycare_CountPokemon(struct BoxPokemon *);
-void sub_8041324(struct BoxPokemon *, struct RecordMixing_UnknownStruct *);
-void sub_8041790(int i);
+u8 Daycare_CountPokemon(struct DayCareData *);
+void sub_8041324(struct BoxPokemon *, struct RecordMixingDayCareMail *);
+void sub_8041790(u16 i);
u16 sub_8041870(u16);
void sub_8041940(void);
void sub_8041950(void);
void sub_8042044(struct Pokemon *mon, u16, u8);
u8 sub_80422A0(void);
u8 daycare_relationship_score_from_savegame(void);
+bool8 NameHasGenderSymbol(const u8 *, u8);
#endif // GUARD_DAYCARE_H
diff --git a/include/decompress.h b/include/decompress.h
index 07d69301f..01f66971c 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -3,14 +3,14 @@
#include "sprite.h"
-void sub_800D238(const void *src, void *dest);
+void LZDecompressWram(const void *src, void *dest);
void LZDecompressVram(const void *src, void *dest);
void LoadCompressedObjectPic(const struct CompressedSpriteSheet *a);
void LoadCompressedObjectPicOverrideBuffer(const struct CompressedSpriteSheet *a, void *buffer);
void LoadCompressedObjectPalette(const struct CompressedSpritePalette *a);
void LoadCompressedObjectPaletteOverrideBuffer(const struct CompressedSpritePalette *a, void *buffer);
void DecompressPicFromTable_2(const struct CompressedSpriteSheet *a, u8 b, u8 c, void *d, void *e, s32 f);
-void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g);
+void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 pid);
void LoadSpecialPokePic(const struct CompressedSpriteSheet *spriteSheet, u32 b, u32 c, u32 d, void *dest, s32 species, u32 g, u32 h);
void Unused_LZDecompressWramIndirect(const void **src, void *dest);
diff --git a/include/diploma.h b/include/diploma.h
index 81e9e3bb2..8d730fa05 100644
--- a/include/diploma.h
+++ b/include/diploma.h
@@ -1,6 +1,6 @@
#ifndef GUARD_DIPLOMA_H
#define GUARD_DIPLOMA_H
-void sub_8145D88(void);
+void CB2_ShowDiploma(void);
#endif // GUARD_DIPLOMA_H
diff --git a/include/easy_chat.h b/include/easy_chat.h
index 03e9bb737..8a820353f 100644
--- a/include/easy_chat.h
+++ b/include/easy_chat.h
@@ -1,7 +1,8 @@
#ifndef GUARD_EASYCHAT_H
#define GUARD_EASYCHAT_H
-enum {
+enum
+{
EC_GROUP_POKEMON,
EC_GROUP_TRAINER,
EC_GROUP_STATUS,
@@ -26,6 +27,1045 @@ enum {
EC_GROUP_POKEMON_2,
};
+enum {
+ EC_WORD_I_CHOOSE_YOU = EC_GROUP_TRAINER << 9,
+ EC_WORD_GOTCHA,
+ EC_WORD_TRADE,
+ EC_WORD_SAPPHIRE,
+ EC_WORD_EVOLVE,
+ EC_WORD_ENCYCLOPEDIA,
+ EC_WORD_NATURE,
+ EC_WORD_CENTER,
+ EC_WORD_EGG,
+ EC_WORD_LINK,
+ EC_WORD_SP_ABILITY,
+ EC_WORD_TRAINER,
+ EC_WORD_VERSION,
+ EC_WORD_POKENAV,
+ EC_WORD_POKEMON,
+ EC_WORD_GET,
+ EC_WORD_POKEDEX,
+ EC_WORD_RUBY,
+ EC_WORD_LEVEL
+};
+enum {
+ EC_WORD_DARK = EC_GROUP_STATUS << 9,
+ EC_WORD_STENCH,
+ EC_WORD_THICK_FAT,
+ EC_WORD_RAIN_DISH,
+ EC_WORD_DRIZZLE,
+ EC_WORD_ARENA_TRAP,
+ EC_WORD_INTIMIDATE,
+ EC_WORD_ROCK_HEAD,
+ EC_WORD_COLOR,
+ EC_WORD_ALT_COLOR,
+ EC_WORD_ROCK,
+ EC_WORD_BEAUTIFUL,
+ EC_WORD_BEAUTY,
+ EC_WORD_AIR_LOCK,
+ EC_WORD_PSYCHIC,
+ EC_WORD_HYPER_CUTTER,
+ EC_WORD_FIGHTING,
+ EC_WORD_SHADOW_TAG,
+ EC_WORD_SMART,
+ EC_WORD_SMARTNESS,
+ EC_WORD_SPEED_BOOST,
+ EC_WORD_COOL,
+ EC_WORD_COOLNESS,
+ EC_WORD_BATTLE_ARMOR,
+ EC_WORD_CUTE,
+ EC_WORD_CUTENESS,
+ EC_WORD_STURDY,
+ EC_WORD_SUCTION_CUPS,
+ EC_WORD_GRASS,
+ EC_WORD_CLEAR_BODY,
+ EC_WORD_TORRENT,
+ EC_WORD_GHOST,
+ EC_WORD_ICE,
+ EC_WORD_GUTS,
+ EC_WORD_ROUGH_SKIN,
+ EC_WORD_SHELL_ARMOR,
+ EC_WORD_NATURAL_CURE,
+ EC_WORD_DAMP,
+ EC_WORD_GROUND,
+ EC_WORD_LIMBER,
+ EC_WORD_MAGNET_PULL,
+ EC_WORD_WHITE_SMOKE,
+ EC_WORD_SYNCHRONIZE,
+ EC_WORD_OVERGROW,
+ EC_WORD_SWIFT_SWIM,
+ EC_WORD_SAND_STREAM,
+ EC_WORD_SAND_VEIL,
+ EC_WORD_KEEN_EYE,
+ EC_WORD_INNER_FOCUS,
+ EC_WORD_STATIC,
+ EC_WORD_TYPE,
+ EC_WORD_TOUGH,
+ EC_WORD_TOUGHNESS,
+ EC_WORD_SHED_SKIN,
+ EC_WORD_HUGE_POWER,
+ EC_WORD_VOLT_ABSORB,
+ EC_WORD_WATER_ABSORB,
+ EC_WORD_ELECTRIC,
+ EC_WORD_FORECAST,
+ EC_WORD_SERENE_GRACE,
+ EC_WORD_POISON,
+ EC_WORD_POISON_POINT,
+ EC_WORD_DRAGON,
+ EC_WORD_TRACE,
+ EC_WORD_OBLIVIOUS,
+ EC_WORD_TRUANT,
+ EC_WORD_RUN_AWAY,
+ EC_WORD_STICKY_HOLD,
+ EC_WORD_CLOUD_NINE,
+ EC_WORD_NORMAL,
+ EC_WORD_STEEL,
+ EC_WORD_ILLUMINATE,
+ EC_WORD_EARLY_BIRD,
+ EC_WORD_HUSTLE,
+ EC_WORD_SHINE,
+ EC_WORD_FLYING,
+ EC_WORD_DROUGHT,
+ EC_WORD_LIGHTNINGROD,
+ EC_WORD_COMPOUNDEYES,
+ EC_WORD_MARVEL_SCALE,
+ EC_WORD_WONDER_GUARD,
+ EC_WORD_INSOMNIA,
+ EC_WORD_LEVITATE,
+ EC_WORD_PLUS,
+ EC_WORD_PRESSURE,
+ EC_WORD_LIQUID_OOZE,
+ EC_WORD_COLOR_CHANGE,
+ EC_WORD_SOUNDPROOF,
+ EC_WORD_EFFECT_SPORE,
+ EC_WORD_PKRS,
+ EC_WORD_FIRE,
+ EC_WORD_FLAME_BODY,
+ EC_WORD_MINUS,
+ EC_WORD_OWN_TEMPO,
+ EC_WORD_MAGMA_ARMOR,
+ EC_WORD_WATER,
+ EC_WORD_WATER_VEIL,
+ EC_WORD_BUG,
+ EC_WORD_SWARM,
+ EC_WORD_CUTE_CHARM,
+ EC_WORD_IMMUNITY,
+ EC_WORD_BLAZE,
+ EC_WORD_PICKUP,
+ EC_WORD_PATTERN,
+ EC_WORD_FLASH_FIRE,
+ EC_WORD_VITAL_SPIRIT,
+ EC_WORD_CHLOROPHYLL,
+ EC_WORD_PURE_POWER,
+ EC_WORD_SHIELD_DUST,
+};
+enum {
+ EC_WORD_MATCH_UP = EC_GROUP_BATTLE << 9,
+ EC_WORD_GO,
+ EC_WORD_NO_1,
+ EC_WORD_DECIDE,
+ EC_WORD_LET_ME_WIN,
+ EC_WORD_WINS,
+ EC_WORD_WIN,
+ EC_WORD_WON,
+ EC_WORD_IF_I_WIN,
+ EC_WORD_WHEN_I_WIN,
+ EC_WORD_CAN_T_WIN,
+ EC_WORD_CAN_WIN,
+ EC_WORD_NO_MATCH,
+ EC_WORD_SPIRIT,
+ EC_WORD_DECIDED,
+ EC_WORD_TRUMP_CARD,
+ EC_WORD_TAKE_THAT,
+ EC_WORD_COME_ON,
+ EC_WORD_ATTACK,
+ EC_WORD_SURRENDER,
+ EC_WORD_GUTSY,
+ EC_WORD_TALENT,
+ EC_WORD_STRATEGY,
+ EC_WORD_SMITE,
+ EC_WORD_MATCH,
+ EC_WORD_VICTORY,
+ EC_WORD_OFFENSIVE,
+ EC_WORD_SENSE,
+ EC_WORD_VERSUS,
+ EC_WORD_FIGHTS,
+ EC_WORD_POWER,
+ EC_WORD_CHALLENGE,
+ EC_WORD_STRONG,
+ EC_WORD_TOO_STRONG,
+ EC_WORD_GO_EASY,
+ EC_WORD_FOE,
+ EC_WORD_GENIUS,
+ EC_WORD_LEGEND,
+ EC_WORD_ESCAPE,
+ EC_WORD_AIM,
+ EC_WORD_BATTLE,
+ EC_WORD_FIGHT,
+ EC_WORD_RESUSCITATE,
+ EC_WORD_POINTS,
+ EC_WORD_SERIOUS,
+ EC_WORD_GIVE_UP,
+ EC_WORD_LOSS,
+ EC_WORD_IF_I_LOSE,
+ EC_WORD_LOST,
+ EC_WORD_LOSE,
+ EC_WORD_GUARD,
+ EC_WORD_PARTNER,
+ EC_WORD_REJECT,
+ EC_WORD_ACCEPT,
+ EC_WORD_INVINCIBLE,
+ EC_WORD_RECEIVED,
+ EC_WORD_EASY,
+ EC_WORD_WEAK,
+ EC_WORD_TOO_WEAK,
+ EC_WORD_PUSHOVER,
+ EC_WORD_LEADER,
+ EC_WORD_RULE,
+ EC_WORD_MOVE
+};
+enum {
+ EC_WORD_THANKS = EC_GROUP_GREETINGS << 9,
+ EC_WORD_YES,
+ EC_WORD_HERE_GOES,
+ EC_WORD_HERE_I_COME,
+ EC_WORD_HERE_IT_IS,
+ EC_WORD_YEAH,
+ EC_WORD_WELCOME,
+ EC_WORD_OI,
+ EC_WORD_HOW_DO,
+ EC_WORD_CONGRATS,
+ EC_WORD_GIVE_ME,
+ EC_WORD_SORRY,
+ EC_WORD_APOLOGIZE,
+ EC_WORD_FORGIVE,
+ EC_WORD_HEY_THERE,
+ EC_WORD_HELLO,
+ EC_WORD_GOOD_BYE,
+ EC_WORD_THANK_YOU,
+ EC_WORD_I_VE_ARRIVED,
+ EC_WORD_PARDON,
+ EC_WORD_EXCUSE,
+ EC_WORD_SEE_YA,
+ EC_WORD_EXCUSE_ME,
+ EC_WORD_WELL_THEN,
+ EC_WORD_GO_AHEAD,
+ EC_WORD_APPRECIATE,
+ EC_WORD_HEY_QUES,
+ EC_WORD_WHAT_S_UP_QUES,
+ EC_WORD_HUH_QUES,
+ EC_WORD_NO,
+ EC_WORD_HI,
+ EC_WORD_YEAH_YEAH,
+ EC_WORD_BYE_BYE,
+ EC_WORD_MEET_YOU,
+ EC_WORD_HEY,
+ EC_WORD_SMELL,
+ EC_WORD_LISTENING,
+ EC_WORD_HOO_HAH,
+ EC_WORD_YAHOO,
+ EC_WORD_YO,
+ EC_WORD_COME_OVER,
+ EC_WORD_COUNT_ON
+};
+enum {
+ EC_WORD_OPPONENT = EC_GROUP_PEOPLE << 9,
+ EC_WORD_I,
+ EC_WORD_YOU,
+ EC_WORD_YOURS,
+ EC_WORD_SON,
+ EC_WORD_YOUR,
+ EC_WORD_YOU_RE,
+ EC_WORD_YOU_VE,
+ EC_WORD_MOTHER,
+ EC_WORD_GRANDFATHER,
+ EC_WORD_UNCLE,
+ EC_WORD_FATHER,
+ EC_WORD_BOY,
+ EC_WORD_ADULT,
+ EC_WORD_BROTHER,
+ EC_WORD_SISTER,
+ EC_WORD_GRANDMOTHER,
+ EC_WORD_AUNT,
+ EC_WORD_PARENT,
+ EC_WORD_MAN,
+ EC_WORD_ME,
+ EC_WORD_GIRL,
+ EC_WORD_BABE,
+ EC_WORD_FAMILY,
+ EC_WORD_HER,
+ EC_WORD_HIM,
+ EC_WORD_HE,
+ EC_WORD_PLACE,
+ EC_WORD_DAUGHTER,
+ EC_WORD_HIS,
+ EC_WORD_HE_S,
+ EC_WORD_AREN_T,
+ EC_WORD_SIBLINGS,
+ EC_WORD_KID,
+ EC_WORD_CHILDREN,
+ EC_WORD_MR,
+ EC_WORD_MRS,
+ EC_WORD_MYSELF,
+ EC_WORD_I_WAS,
+ EC_WORD_TO_ME,
+ EC_WORD_MY,
+ EC_WORD_I_AM,
+ EC_WORD_I_VE,
+ EC_WORD_WHO,
+ EC_WORD_SOMEONE,
+ EC_WORD_WHO_WAS,
+ EC_WORD_TO_WHOM,
+ EC_WORD_WHOSE,
+ EC_WORD_WHO_IS,
+ EC_WORD_IT_S,
+ EC_WORD_LADY,
+ EC_WORD_FRIEND,
+ EC_WORD_ALLY,
+ EC_WORD_PERSON,
+ EC_WORD_DUDE,
+ EC_WORD_THEY,
+ EC_WORD_THEY_WERE,
+ EC_WORD_TO_THEM,
+ EC_WORD_THEIR,
+ EC_WORD_THEY_RE,
+ EC_WORD_THEY_VE,
+ EC_WORD_WE,
+ EC_WORD_BEEN,
+ EC_WORD_TO_US,
+ EC_WORD_OUR,
+ EC_WORD_WE_RE,
+ EC_WORD_RIVAL,
+ EC_WORD_WE_VE,
+ EC_WORD_WOMAN,
+ EC_WORD_SHE,
+ EC_WORD_SHE_WAS,
+ EC_WORD_TO_HER,
+ EC_WORD_HERS,
+ EC_WORD_SHE_IS,
+ EC_WORD_SOME
+};
+enum {
+ EC_WORD_EXCL = EC_GROUP_VOICES << 9,
+ EC_WORD_EXCL_EXCL,
+ EC_WORD_QUES_EXCL,
+ EC_WORD_QUES,
+ EC_WORD_ELLIPSIS,
+ EC_WORD_ELLIPSIS_EXCL,
+ EC_WORD_ELLIPSIS_ELLIPSIS_ELLIPSIS,
+ EC_WORD_DASH,
+ EC_WORD_DASH_DASH_DASH,
+ EC_WORD_UH_OH,
+ EC_WORD_WAAAH,
+ EC_WORD_AHAHA,
+ EC_WORD_OH_QUES,
+ EC_WORD_NOPE,
+ EC_WORD_URGH,
+ EC_WORD_HMM,
+ EC_WORD_WHOAH,
+ EC_WORD_WROOOAAR_EXCL,
+ EC_WORD_WOW,
+ EC_WORD_GIGGLE,
+ EC_WORD_SIGH,
+ EC_WORD_UNBELIEVABLE,
+ EC_WORD_CRIES,
+ EC_WORD_AGREE,
+ EC_WORD_EH_QUES,
+ EC_WORD_CRY,
+ EC_WORD_EHEHE,
+ EC_WORD_OI_OI_OI,
+ EC_WORD_OH_YEAH,
+ EC_WORD_OH,
+ EC_WORD_OOPS,
+ EC_WORD_SHOCKED,
+ EC_WORD_EEK,
+ EC_WORD_GRAAAH,
+ EC_WORD_GWAHAHAHA,
+ EC_WORD_WAY,
+ EC_WORD_TCH,
+ EC_WORD_HEHE,
+ EC_WORD_HAH,
+ EC_WORD_YUP,
+ EC_WORD_HAHAHA,
+ EC_WORD_AIYEEH,
+ EC_WORD_HIYAH,
+ EC_WORD_FUFUFU,
+ EC_WORD_LOL,
+ EC_WORD_SNORT,
+ EC_WORD_HUMPH,
+ EC_WORD_HEHEHE,
+ EC_WORD_HEH,
+ EC_WORD_HOHOHO,
+ EC_WORD_UH_HUH,
+ EC_WORD_OH_DEAR,
+ EC_WORD_ARRGH,
+ EC_WORD_MUFUFU,
+ EC_WORD_MMM,
+ EC_WORD_OH_KAY,
+ EC_WORD_OKAY,
+ EC_WORD_LALALA,
+ EC_WORD_YAY,
+ EC_WORD_AWW,
+ EC_WORD_WOWEE,
+ EC_WORD_GWAH,
+ EC_WORD_WAHAHAHA
+};
+enum {
+ EC_WORD_LISTEN = EC_GROUP_SPEECH << 9,
+ EC_WORD_NOT_VERY,
+ EC_WORD_MEAN,
+ EC_WORD_LIE,
+ EC_WORD_LAY,
+ EC_WORD_RECOMMEND,
+ EC_WORD_NITWIT,
+ EC_WORD_QUITE,
+ EC_WORD_FROM,
+ EC_WORD_FEELING,
+ EC_WORD_BUT,
+ EC_WORD_HOWEVER,
+ EC_WORD_CASE,
+ EC_WORD_THE,
+ EC_WORD_MISS,
+ EC_WORD_HOW,
+ EC_WORD_HIT,
+ EC_WORD_ENOUGH,
+ EC_WORD_A_LOT,
+ EC_WORD_A_LITTLE,
+ EC_WORD_ABSOLUTELY,
+ EC_WORD_AND,
+ EC_WORD_ONLY,
+ EC_WORD_AROUND,
+ EC_WORD_PROBABLY,
+ EC_WORD_IF,
+ EC_WORD_VERY,
+ EC_WORD_A_TINY_BIT,
+ EC_WORD_WILD,
+ EC_WORD_THAT_S,
+ EC_WORD_JUST,
+ EC_WORD_EVEN_SO,
+ EC_WORD_MUST_BE,
+ EC_WORD_NATURALLY,
+ EC_WORD_FOR_NOW,
+ EC_WORD_UNDERSTOOD,
+ EC_WORD_JOKING,
+ EC_WORD_READY,
+ EC_WORD_SOMETHING,
+ EC_WORD_SOMEHOW,
+ EC_WORD_ALTHOUGH,
+ EC_WORD_ALSO,
+ EC_WORD_PERFECT,
+ EC_WORD_AS_MUCH_AS,
+ EC_WORD_REALLY,
+ EC_WORD_TRULY,
+ EC_WORD_SERIOUSLY,
+ EC_WORD_TOTALLY,
+ EC_WORD_UNTIL,
+ EC_WORD_AS_IF,
+ EC_WORD_MOOD,
+ EC_WORD_RATHER,
+ EC_WORD_AWFULLY,
+ EC_WORD_MODE,
+ EC_WORD_MORE,
+ EC_WORD_TOO_LATE,
+ EC_WORD_FINALLY,
+ EC_WORD_ANY,
+ EC_WORD_INSTEAD,
+ EC_WORD_FANTASTIC
+};
+enum {
+ EC_WORD_WILL = EC_GROUP_ENDINGS << 9,
+ EC_WORD_WILL_BE_HERE,
+ EC_WORD_OR,
+ EC_WORD_TIMES,
+ EC_WORD_WONDER,
+ EC_WORD_IS_IT_QUES,
+ EC_WORD_BE,
+ EC_WORD_GIMME,
+ EC_WORD_COULD,
+ EC_WORD_LIKELY_TO,
+ EC_WORD_WOULD,
+ EC_WORD_IS,
+ EC_WORD_ISN_T_IT_QUES,
+ EC_WORD_LET_S,
+ EC_WORD_OTHER,
+ EC_WORD_ARE,
+ EC_WORD_WAS,
+ EC_WORD_WERE,
+ EC_WORD_THOSE,
+ EC_WORD_ISN_T,
+ EC_WORD_WON_T,
+ EC_WORD_CAN_T,
+ EC_WORD_CAN,
+ EC_WORD_DON_T,
+ EC_WORD_DO,
+ EC_WORD_DOES,
+ EC_WORD_WHOM,
+ EC_WORD_WHICH,
+ EC_WORD_WASN_T,
+ EC_WORD_WEREN_T,
+ EC_WORD_HAVE,
+ EC_WORD_HAVEN_T,
+ EC_WORD_A,
+ EC_WORD_AN,
+ EC_WORD_NOT,
+ EC_WORD_THERE,
+ EC_WORD_OK_QUES,
+ EC_WORD_SO,
+ EC_WORD_MAYBE,
+ EC_WORD_ABOUT,
+ EC_WORD_OVER,
+ EC_WORD_IT,
+ EC_WORD_ALL,
+ EC_WORD_FOR,
+ EC_WORD_ON,
+ EC_WORD_OFF,
+ EC_WORD_AS,
+ EC_WORD_TO,
+ EC_WORD_WITH,
+ EC_WORD_BETTER,
+ EC_WORD_EVER,
+ EC_WORD_SINCE,
+ EC_WORD_OF,
+ EC_WORD_BELONGS_TO,
+ EC_WORD_AT,
+ EC_WORD_IN,
+ EC_WORD_OUT,
+ EC_WORD_TOO,
+ EC_WORD_LIKE,
+ EC_WORD_DID,
+ EC_WORD_DIDN_T,
+ EC_WORD_DOESN_T,
+ EC_WORD_WITHOUT,
+ EC_WORD_AFTER,
+ EC_WORD_BEFORE,
+ EC_WORD_WHILE,
+ EC_WORD_THAN,
+ EC_WORD_ONCE,
+ EC_WORD_ANYWHERE
+};
+enum {
+ EC_WORD_MEET = EC_GROUP_FEELINGS << 9,
+ EC_WORD_PLAY,
+ EC_WORD_HURRIED,
+ EC_WORD_GOES,
+ EC_WORD_GIDDY,
+ EC_WORD_HAPPY,
+ EC_WORD_HAPPINESS,
+ EC_WORD_EXCITE,
+ EC_WORD_IMPORTANT,
+ EC_WORD_FUNNY,
+ EC_WORD_GOT,
+ EC_WORD_GO_HOME,
+ EC_WORD_DISAPPOINTED,
+ EC_WORD_DISAPPOINTS,
+ EC_WORD_SAD,
+ EC_WORD_TRY,
+ EC_WORD_TRIES,
+ EC_WORD_HEARS,
+ EC_WORD_THINK,
+ EC_WORD_HEAR,
+ EC_WORD_WANTS,
+ EC_WORD_MISHEARD,
+ EC_WORD_DISLIKE,
+ EC_WORD_ANGRY,
+ EC_WORD_ANGER,
+ EC_WORD_SCARY,
+ EC_WORD_LONESOME,
+ EC_WORD_DISAPPOINT,
+ EC_WORD_JOY,
+ EC_WORD_GETS,
+ EC_WORD_NEVER,
+ EC_WORD_DARN,
+ EC_WORD_DOWNCAST,
+ EC_WORD_INCREDIBLE,
+ EC_WORD_LIKES,
+ EC_WORD_DISLIKES,
+ EC_WORD_BORING,
+ EC_WORD_CARE,
+ EC_WORD_CARES,
+ EC_WORD_ALL_RIGHT,
+ EC_WORD_ADORE,
+ EC_WORD_DISASTER,
+ EC_WORD_ENJOY,
+ EC_WORD_ENJOYS,
+ EC_WORD_EAT,
+ EC_WORD_LACKING,
+ EC_WORD_BAD,
+ EC_WORD_HARD,
+ EC_WORD_TERRIBLE,
+ EC_WORD_SHOULD,
+ EC_WORD_NICE,
+ EC_WORD_DRINK,
+ EC_WORD_SURPRISE,
+ EC_WORD_FEAR,
+ EC_WORD_WANT,
+ EC_WORD_WAIT,
+ EC_WORD_SATISFIED,
+ EC_WORD_SEE,
+ EC_WORD_RARE,
+ EC_WORD_NEGATIVE,
+ EC_WORD_DONE,
+ EC_WORD_DANGER,
+ EC_WORD_DEFEATED,
+ EC_WORD_BEAT,
+ EC_WORD_GREAT,
+ EC_WORD_ROMANTIC,
+ EC_WORD_QUESTION,
+ EC_WORD_UNDERSTAND,
+ EC_WORD_UNDERSTANDS
+};
+enum {
+ EC_WORD_HOT = EC_GROUP_CONDITIONS << 9,
+ EC_WORD_EXISTS,
+ EC_WORD_EXCESS,
+ EC_WORD_APPROVED,
+ EC_WORD_HAS,
+ EC_WORD_GOOD,
+ EC_WORD_LESS,
+ EC_WORD_MOMENTUM,
+ EC_WORD_GOING,
+ EC_WORD_WEIRD,
+ EC_WORD_BUSY,
+ EC_WORD_TOGETHER,
+ EC_WORD_FULL,
+ EC_WORD_ABSENT,
+ EC_WORD_BEING,
+ EC_WORD_NEED,
+ EC_WORD_TASTY,
+ EC_WORD_SKILLED,
+ EC_WORD_NOISY,
+ EC_WORD_BIG,
+ EC_WORD_LATE,
+ EC_WORD_CLOSE,
+ EC_WORD_DOCILE,
+ EC_WORD_AMUSING,
+ EC_WORD_ENTERTAINING,
+ EC_WORD_PERFECTION,
+ EC_WORD_PRETTY,
+ EC_WORD_HEALTHY,
+ EC_WORD_EXCELLENT,
+ EC_WORD_UPSIDE_DOWN,
+ EC_WORD_COLD,
+ EC_WORD_REFRESHING,
+ EC_WORD_UNAVOIDABLE,
+ EC_WORD_MUCH,
+ EC_WORD_OVERWHELMING,
+ EC_WORD_FABULOUS,
+ EC_WORD_ELSE,
+ EC_WORD_EXPENSIVE,
+ EC_WORD_CORRECT,
+ EC_WORD_IMPOSSIBLE,
+ EC_WORD_SMALL,
+ EC_WORD_DIFFERENT,
+ EC_WORD_TIRED,
+ EC_WORD_SKILL,
+ EC_WORD_TOP,
+ EC_WORD_NON_STOP,
+ EC_WORD_PREPOSTEROUS,
+ EC_WORD_NONE,
+ EC_WORD_NOTHING,
+ EC_WORD_NATURAL,
+ EC_WORD_BECOMES,
+ EC_WORD_LUKEWARM,
+ EC_WORD_FAST,
+ EC_WORD_LOW,
+ EC_WORD_AWFUL,
+ EC_WORD_ALONE,
+ EC_WORD_BORED,
+ EC_WORD_SECRET,
+ EC_WORD_MYSTERY,
+ EC_WORD_LACKS,
+ EC_WORD_BEST,
+ EC_WORD_LOUSY,
+ EC_WORD_MISTAKE,
+ EC_WORD_KIND,
+ EC_WORD_WELL,
+ EC_WORD_WEAKENED,
+ EC_WORD_SIMPLE,
+ EC_WORD_SEEMS,
+ EC_WORD_BADLY
+};
+enum {
+ EC_WORD_MEETS = EC_GROUP_ACTIONS << 9,
+ EC_WORD_CONCEDE,
+ EC_WORD_GIVE,
+ EC_WORD_GIVES,
+ EC_WORD_PLAYED,
+ EC_WORD_PLAYS,
+ EC_WORD_COLLECT,
+ EC_WORD_WALKING,
+ EC_WORD_WALKS,
+ EC_WORD_SAYS,
+ EC_WORD_WENT,
+ EC_WORD_SAID,
+ EC_WORD_WAKE_UP,
+ EC_WORD_WAKES_UP,
+ EC_WORD_ANGERS,
+ EC_WORD_TEACH,
+ EC_WORD_TEACHES,
+ EC_WORD_PLEASE,
+ EC_WORD_LEARN,
+ EC_WORD_CHANGE,
+ EC_WORD_STORY,
+ EC_WORD_TRUST,
+ EC_WORD_LAVISH,
+ EC_WORD_LISTENS,
+ EC_WORD_HEARING,
+ EC_WORD_TRAINS,
+ EC_WORD_CHOOSE,
+ EC_WORD_COME,
+ EC_WORD_CAME,
+ EC_WORD_SEARCH,
+ EC_WORD_MAKE,
+ EC_WORD_CAUSE,
+ EC_WORD_KNOW,
+ EC_WORD_KNOWS,
+ EC_WORD_REFUSE,
+ EC_WORD_STORES,
+ EC_WORD_BRAG,
+ EC_WORD_IGNORANT,
+ EC_WORD_THINKS,
+ EC_WORD_BELIEVE,
+ EC_WORD_SLIDE,
+ EC_WORD_EATS,
+ EC_WORD_USE,
+ EC_WORD_USES,
+ EC_WORD_USING,
+ EC_WORD_COULDN_T,
+ EC_WORD_CAPABLE,
+ EC_WORD_DISAPPEAR,
+ EC_WORD_APPEAR,
+ EC_WORD_THROW,
+ EC_WORD_WORRY,
+ EC_WORD_SLEPT,
+ EC_WORD_SLEEP,
+ EC_WORD_RELEASE,
+ EC_WORD_DRINKS,
+ EC_WORD_RUNS,
+ EC_WORD_RUN,
+ EC_WORD_WORKS,
+ EC_WORD_WORKING,
+ EC_WORD_TALKING,
+ EC_WORD_TALK,
+ EC_WORD_SINK,
+ EC_WORD_SMACK,
+ EC_WORD_PRETEND,
+ EC_WORD_PRAISE,
+ EC_WORD_OVERDO,
+ EC_WORD_SHOW,
+ EC_WORD_LOOKS,
+ EC_WORD_SEES,
+ EC_WORD_SEEK,
+ EC_WORD_OWN,
+ EC_WORD_TAKE,
+ EC_WORD_ALLOW,
+ EC_WORD_FORGET,
+ EC_WORD_FORGETS,
+ EC_WORD_APPEARS,
+ EC_WORD_FAINT,
+ EC_WORD_FAINTED
+};
+enum {
+ EC_WORD_CHORES = EC_GROUP_LIFESTYLE << 9,
+ EC_WORD_HOME,
+ EC_WORD_MONEY,
+ EC_WORD_ALLOWANCE,
+ EC_WORD_BATH,
+ EC_WORD_CONVERSATION,
+ EC_WORD_SCHOOL,
+ EC_WORD_COMMEMORATE,
+ EC_WORD_HABIT,
+ EC_WORD_GROUP,
+ EC_WORD_WORD,
+ EC_WORD_STORE,
+ EC_WORD_SERVICE,
+ EC_WORD_WORK,
+ EC_WORD_SYSTEM,
+ EC_WORD_TRAIN,
+ EC_WORD_CLASS,
+ EC_WORD_LESSONS,
+ EC_WORD_INFORMATION,
+ EC_WORD_LIVING,
+ EC_WORD_TEACHER,
+ EC_WORD_TOURNAMENT,
+ EC_WORD_LETTER,
+ EC_WORD_EVENT,
+ EC_WORD_DIGITAL,
+ EC_WORD_TEST,
+ EC_WORD_DEPT_STORE,
+ EC_WORD_TELEVISION,
+ EC_WORD_PHONE,
+ EC_WORD_ITEM,
+ EC_WORD_NAME,
+ EC_WORD_NEWS,
+ EC_WORD_POPULAR,
+ EC_WORD_PARTY,
+ EC_WORD_STUDY,
+ EC_WORD_MACHINE,
+ EC_WORD_MAIL,
+ EC_WORD_MESSAGE,
+ EC_WORD_PROMISE,
+ EC_WORD_DREAM,
+ EC_WORD_KINDERGARTEN,
+ EC_WORD_LIFE,
+ EC_WORD_RADIO,
+ EC_WORD_RENTAL,
+ EC_WORD_WORLD
+};
+enum {
+ EC_WORD_IDOL = EC_GROUP_HOBBIES << 9,
+ EC_WORD_ANIME,
+ EC_WORD_SONG,
+ EC_WORD_MOVIE,
+ EC_WORD_SWEETS,
+ EC_WORD_CHAT,
+ EC_WORD_CHILD_S_PLAY,
+ EC_WORD_TOYS,
+ EC_WORD_MUSIC,
+ EC_WORD_CARDS,
+ EC_WORD_SHOPPING,
+ EC_WORD_CAMERA,
+ EC_WORD_VIEWING,
+ EC_WORD_SPECTATOR,
+ EC_WORD_GOURMET,
+ EC_WORD_GAME,
+ EC_WORD_RPG,
+ EC_WORD_COLLECTION,
+ EC_WORD_COMPLETE,
+ EC_WORD_MAGAZINE,
+ EC_WORD_WALK,
+ EC_WORD_BIKE,
+ EC_WORD_HOBBY,
+ EC_WORD_SPORTS,
+ EC_WORD_SOFTWARE,
+ EC_WORD_SONGS,
+ EC_WORD_DIET,
+ EC_WORD_TREASURE,
+ EC_WORD_TRAVEL,
+ EC_WORD_DANCE,
+ EC_WORD_CHANNEL,
+ EC_WORD_MAKING,
+ EC_WORD_FISHING,
+ EC_WORD_DATE,
+ EC_WORD_DESIGN,
+ EC_WORD_LOCOMOTIVE,
+ EC_WORD_PLUSH_DOLL,
+ EC_WORD_PC,
+ EC_WORD_FLOWERS,
+ EC_WORD_HERO,
+ EC_WORD_NAP,
+ EC_WORD_HEROINE,
+ EC_WORD_FASHION,
+ EC_WORD_ADVENTURE,
+ EC_WORD_BOARD,
+ EC_WORD_BALL,
+ EC_WORD_BOOK,
+ EC_WORD_FESTIVAL,
+ EC_WORD_COMICS,
+ EC_WORD_HOLIDAY,
+ EC_WORD_PLANS,
+ EC_WORD_TRENDY,
+ EC_WORD_VACATION,
+ EC_WORD_LOOK
+};
+enum {
+ EC_WORD_FALL = EC_GROUP_TIME << 9,
+ EC_WORD_MORNING,
+ EC_WORD_TOMORROW,
+ EC_WORD_LAST,
+ EC_WORD_DAY,
+ EC_WORD_SOMETIME,
+ EC_WORD_ALWAYS,
+ EC_WORD_CURRENT,
+ EC_WORD_FOREVER,
+ EC_WORD_DAYS,
+ EC_WORD_END,
+ EC_WORD_TUESDAY,
+ EC_WORD_YESTERDAY,
+ EC_WORD_TODAY,
+ EC_WORD_FRIDAY,
+ EC_WORD_MONDAY,
+ EC_WORD_LATER,
+ EC_WORD_EARLIER,
+ EC_WORD_ANOTHER,
+ EC_WORD_TIME,
+ EC_WORD_FINISH,
+ EC_WORD_WEDNESDAY,
+ EC_WORD_SOON,
+ EC_WORD_START,
+ EC_WORD_MONTH,
+ EC_WORD_STOP,
+ EC_WORD_NOW,
+ EC_WORD_FINAL,
+ EC_WORD_NEXT,
+ EC_WORD_AGE,
+ EC_WORD_SATURDAY,
+ EC_WORD_SUMMER,
+ EC_WORD_SUNDAY,
+ EC_WORD_BEGINNING,
+ EC_WORD_SPRING,
+ EC_WORD_DAYTIME,
+ EC_WORD_WINTER,
+ EC_WORD_DAILY,
+ EC_WORD_OLDEN,
+ EC_WORD_ALMOST,
+ EC_WORD_NEARLY,
+ EC_WORD_THURSDAY,
+ EC_WORD_NIGHTTIME,
+ EC_WORD_NIGHT,
+ EC_WORD_WEEK
+};
+enum {
+ EC_WORD_HIGHS = EC_GROUP_MISC << 9,
+ EC_WORD_LOWS,
+ EC_WORD_UM,
+ EC_WORD_REAR,
+ EC_WORD_THINGS,
+ EC_WORD_THING,
+ EC_WORD_BELOW,
+ EC_WORD_ABOVE,
+ EC_WORD_BACK,
+ EC_WORD_HIGH,
+ EC_WORD_HERE,
+ EC_WORD_INSIDE,
+ EC_WORD_OUTSIDE,
+ EC_WORD_BESIDE,
+ EC_WORD_THIS_IS_IT_EXCL,
+ EC_WORD_THIS,
+ EC_WORD_EVERY,
+ EC_WORD_THESE,
+ EC_WORD_THESE_WERE,
+ EC_WORD_DOWN,
+ EC_WORD_THAT,
+ EC_WORD_THOSE_ARE,
+ EC_WORD_THOSE_WERE,
+ EC_WORD_THAT_S_IT_EXCL,
+ EC_WORD_AM,
+ EC_WORD_THAT_WAS,
+ EC_WORD_FRONT,
+ EC_WORD_UP,
+ EC_WORD_CHOICE,
+ EC_WORD_FAR,
+ EC_WORD_AWAY,
+ EC_WORD_NEAR,
+ EC_WORD_WHERE,
+ EC_WORD_WHEN,
+ EC_WORD_WHAT,
+ EC_WORD_DEEP,
+ EC_WORD_SHALLOW,
+ EC_WORD_WHY,
+ EC_WORD_CONFUSED,
+ EC_WORD_OPPOSITE,
+ EC_WORD_LEFT,
+ EC_WORD_RIGHT
+};
+enum {
+ EC_WORD_WANDERING = EC_GROUP_ADJECTIVES << 9,
+ EC_WORD_RICKETY,
+ EC_WORD_ROCK_SOLID,
+ EC_WORD_HUNGRY,
+ EC_WORD_TIGHT,
+ EC_WORD_TICKLISH,
+ EC_WORD_TWIRLING,
+ EC_WORD_SPIRALING,
+ EC_WORD_THIRSTY,
+ EC_WORD_LOLLING,
+ EC_WORD_SILKY,
+ EC_WORD_SADLY,
+ EC_WORD_HOPELESS,
+ EC_WORD_USELESS,
+ EC_WORD_DROOLING,
+ EC_WORD_EXCITING,
+ EC_WORD_THICK,
+ EC_WORD_SMOOTH,
+ EC_WORD_SLIMY,
+ EC_WORD_THIN,
+ EC_WORD_BREAK,
+ EC_WORD_VORACIOUS,
+ EC_WORD_SCATTER,
+ EC_WORD_AWESOME,
+ EC_WORD_WIMPY,
+ EC_WORD_WOBBLY,
+ EC_WORD_SHAKY,
+ EC_WORD_RIPPED,
+ EC_WORD_SHREDDED,
+ EC_WORD_INCREASING,
+ EC_WORD_YET,
+ EC_WORD_DESTROYED,
+ EC_WORD_FIERY,
+ EC_WORD_LOVEY_DOVEY,
+ EC_WORD_HAPPILY,
+ EC_WORD_ANTICIPATION
+};
+enum {
+ EC_WORD_APPEAL = EC_GROUP_EVENTS << 9,
+ EC_WORD_EVENTS,
+ EC_WORD_STAY_AT_HOME,
+ EC_WORD_BERRY,
+ EC_WORD_CONTEST,
+ EC_WORD_MC,
+ EC_WORD_JUDGE,
+ EC_WORD_SUPER,
+ EC_WORD_STAGE,
+ EC_WORD_HALL_OF_FAME,
+ EC_WORD_EVOLUTION,
+ EC_WORD_HYPER,
+ EC_WORD_BATTLE_TOWER,
+ EC_WORD_LEADERS,
+ EC_WORD_BATTLE_ROOM,
+ EC_WORD_HIDDEN,
+ EC_WORD_SECRET_BASE,
+ EC_WORD_BLEND,
+ EC_WORD_POKEBLOCK,
+ EC_WORD_MASTER,
+ EC_WORD_RANK,
+ EC_WORD_RIBBON
+};
+enum {
+ EC_WORD_KTHX_BYE = EC_GROUP_TRENDY_SAYING << 9,
+ EC_WORD_YES_SIR_EXCL,
+ EC_WORD_AVANT_GARDE,
+ EC_WORD_COUPLE,
+ EC_WORD_MUCH_OBLIGED,
+ EC_WORD_YEEHAW_EXCL,
+ EC_WORD_MEGA,
+ EC_WORD_1_HIT_KO_EXCL,
+ EC_WORD_DESTINY,
+ EC_WORD_CANCEL,
+ EC_WORD_NEW,
+ EC_WORD_FLATTEN,
+ EC_WORD_KIDDING,
+ EC_WORD_LOSER,
+ EC_WORD_LOSING,
+ EC_WORD_HAPPENING,
+ EC_WORD_HIP_AND,
+ EC_WORD_SHAKE,
+ EC_WORD_SHADY,
+ EC_WORD_UPBEAT,
+ EC_WORD_MODERN,
+ EC_WORD_SMELL_YA,
+ EC_WORD_BANG,
+ EC_WORD_KNOCKOUT,
+ EC_WORD_HASSLE,
+ EC_WORD_WINNER,
+ EC_WORD_FEVER,
+ EC_WORD_WANNABE,
+ EC_WORD_BABY,
+ EC_WORD_HEART,
+ EC_WORD_OLD,
+ EC_WORD_YOUNG,
+ EC_WORD_UGLY
+};
+
+#define EC_POKEMON(mon) ((EC_GROUP_POKEMON << 9) | SPECIES_##mon)
+#define EC_POKEMON2(mon) ((EC_GROUP_POKEMON_2 << 9) | SPECIES_##mon)
+#define EC_MOVE(move) ((EC_GROUP_MOVE_1 << 9) | MOVE_##move)
+#define EC_MOVE2(move) ((EC_GROUP_MOVE_2 << 9) | MOVE_##move)
+
+#define EC_GROUP(word) ((word) >> 9)
+#define EC_INDEX(word) ((word) & 0x1FF)
+
+extern u8 gUnknown_020388AC;
u16 sub_80EB72C(u16 group);
void sub_80EB6FC(u16 *, u16);
@@ -33,7 +1073,7 @@ void InitEasyChatPhrases(void);
u8 sub_80EAD7C(u8 group);
u16 sub_80EAE88(u8);
u8 sub_80EB37C(u16);
-u8* sub_80EB3FC(u8 *, u16);
+u8* EasyChat_GetWordText(u8 *, u16);
u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16, u16);
u16 sub_80EB784(u16 group);
u8 sub_80EB868(u8);
diff --git a/include/event_data.h b/include/event_data.h
index 98e4a6da3..ae048af4c 100644
--- a/include/event_data.h
+++ b/include/event_data.h
@@ -22,7 +22,7 @@ bool8 VarSet(u16 id, u16 value);
u8 VarGetFieldObjectGraphicsId(u8 id);
u8 *GetFlagPointer(u16 id);
u8 FlagSet(u16 id);
-u8 FlagReset(u16 id);
+u8 FlagClear(u16 id);
bool8 FlagGet(u16 id);
extern u16 gSpecialVar_0x8000;
diff --git a/include/evolution_graphics.h b/include/evolution_graphics.h
new file mode 100644
index 000000000..a960f637b
--- /dev/null
+++ b/include/evolution_graphics.h
@@ -0,0 +1,15 @@
+#ifndef GUARD_EVOLUTION_GRAPHICS_H
+#define GUARD_EVOLUTION_GRAPHICS_H
+
+void LoadEvoSparkleSpriteAndPal(void);
+
+u8 LaunchTask_PreEvoSparklesSet1(u16 arg0);
+u8 LaunchTask_PreEvoSparklesSet2(void);
+u8 LaunchTask_PostEvoSparklesSet1(void);
+u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species);
+u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species);
+u8 sub_8149E7C(u8 preEvoSpriteID, u8 postEvoSpriteID);
+
+#define EvoGraphicsTaskEvoStop data[8]
+
+#endif // GUARD_EVOLUTION_GRAPHICS_H
diff --git a/include/evolution_scene.h b/include/evolution_scene.h
new file mode 100644
index 000000000..48bd6ebe1
--- /dev/null
+++ b/include/evolution_scene.h
@@ -0,0 +1,10 @@
+#ifndef GUARD_EVOLUTION_SCENE_H
+#define GUARD_EVOLUTION_SCENE_H
+
+void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID);
+void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID);
+void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID);
+
+extern void (*gCB2_AfterEvolution)(void);
+
+#endif // GUARD_EVOLUTION_SCENE_H
diff --git a/include/field_camera.h b/include/field_camera.h
index 4ce207541..17126d190 100644
--- a/include/field_camera.h
+++ b/include/field_camera.h
@@ -11,7 +11,7 @@ struct CameraSomething
s32 unk14;
};
-extern struct Camera gUnknown_0202E844;
+extern struct Camera gCamera;
void move_tilemap_camera_to_upper_left_corner(void);
void sub_8057A58(void);
diff --git a/include/field_door.h b/include/field_door.h
index 1759e0dc1..31fdd154b 100644
--- a/include/field_door.h
+++ b/include/field_door.h
@@ -20,6 +20,6 @@ void FieldSetDoorClosed(u32, u32);
s8 FieldAnimateDoorClose(u32, u32);
s8 FieldAnimateDoorOpen(u32, u32);
bool8 FieldIsDoorAnimationRunning(void);
-u32 sub_8058790(u32 x, u32 y);
+u32 GetDoorSoundEffect(u32 x, u32 y);
#endif
diff --git a/include/field_effect.h b/include/field_effect.h
index bf80ca0dc..a509697e4 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -130,6 +130,8 @@ void PokeballGlowEffect_5(struct Sprite *);
void PokeballGlowEffect_6(struct Sprite *);
void PokeballGlowEffect_7(struct Sprite *);
+void sub_8086748(void);
+
bool8 sub_80867AC(struct Task *);
bool8 sub_8086854(struct Task *);
bool8 sub_8086870(struct Task *);
@@ -138,6 +140,8 @@ bool8 sub_808699C(struct Task *);
bool8 sub_80869B8(struct Task *);
bool8 sub_80869F8(struct Task *);
+void sub_8086A2C(u8, u8);
+
bool8 sub_8086AA0(struct Task *);
bool8 sub_8086AC0(struct Task *);
bool8 sub_8086B30(struct Task *);
@@ -163,6 +167,8 @@ bool8 sub_8087124(struct Task *);
bool8 dive_2_unknown(struct Task *);
bool8 dive_3_unknown(struct Task *);
+void sub_80871B8(u8);
+
bool8 sub_808722C(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_8087264(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_8087298(struct Task *, struct MapObject *, struct Sprite *);
@@ -175,6 +181,8 @@ bool8 sub_80874FC(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_8087548(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_808759C(struct Task *, struct MapObject *, struct Sprite *);
+void sub_8087654(u8);
+
bool8 sub_80876C8(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_80876F8(struct Task *, struct MapObject *, struct Sprite *);
bool8 sub_8087774(struct Task *, struct MapObject *, struct Sprite *);
@@ -236,7 +244,7 @@ void sub_808948C(struct Task *);
void sub_80894C4(struct Task *);
void fishE(struct Task *);
-u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer);
+u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer);
void LoadTrainerGfx_TrainerCard(u8 gender, u16 palOffset, u8 *dest);
u8 CreateBirchSprite(s16 x, s16 y, u8 subpriority);
u8 CreateMonSprite_PicBox(u16, s16, s16, u8);
@@ -245,6 +253,6 @@ void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8);
void sub_80878A8(void);
void sub_8087BA8(void);
-extern u32 gUnknown_0202FF84[8];
+extern u32 gFieldEffectArguments[8];
#endif // GUARD_FIELD_EFFECT_H
diff --git a/include/field_effect_helpers.h b/include/field_effect_helpers.h
index a1dd53a2b..7bba24fa6 100644
--- a/include/field_effect_helpers.h
+++ b/include/field_effect_helpers.h
@@ -1,6 +1,8 @@
#ifndef GUARD_FIELD_EFFECT_HELPERS_H
#define GUARD_FIELD_EFFECT_HELPERS_H
+extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
+
void sub_812869C(struct MapObject *);
bool8 sub_81286C4(struct MapObject *);
void oamc_shadow(struct Sprite *);
@@ -26,6 +28,9 @@ void sub_8126BC4(u8 unk_1B, u8 r6, s16 x, s16 y);
void sub_8127ED0(u8, u8);
void sub_8127F28(u8, u8, s16);
u8 sub_8128124(u8 id);
-void ash(s16, s16, u16, u8);
+void ash(s16, s16, u16, s16);
+void SetUpReflection(struct MapObject *mapObj, struct Sprite *sprite, u8 a);
+u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject);
+u8 sub_8126FF0(u8, u8, u8, s16, s16);
#endif // GUARD_FIELD_EFFECT_HELPERS_H
diff --git a/include/field_fadetransition.h b/include/field_fadetransition.h
index 764adfc9a..111dc92a6 100644
--- a/include/field_fadetransition.h
+++ b/include/field_fadetransition.h
@@ -16,7 +16,7 @@ void sub_8080B60(void);
void atk17_seteffectuser(void);
void sub_8080E28(void);
void sub_8080E44(void);
-int sub_8080E70(void);
+bool32 sub_8080E70(void);
void sub_8080E88(void);
void sub_8080E88();
void sp13E_warp_to_last_warp(void);
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index d2a1a9b1f..641a28ed3 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -3,6 +3,8 @@
#include "sprite.h"
+extern const u8 gUnknown_0830FD14[];
+
#define fieldmap_object_cb(setup, callback, table) \
static u8 callback(struct MapObject *, struct Sprite *);\
void setup(struct Sprite *sprite)\
@@ -54,17 +56,15 @@ u8 sub_805CCAC(s16 a0, s16 a1, s16 a2, s16 a3);
u8 sub_805CCE8(s16 a0, s16 a1, s16 a2, s16 a3);
u8 sub_805CD24(s16 a0, s16 a1, s16 a2, s16 a3);
-u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F3F0(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F438(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F4F0(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F5A8(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F660(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 cph_IM_DIFFERENT(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F760(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 oac_hopping(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
-u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8 (*const)(u8));
+u8 sub_805F3EC(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 sub_805F3F0(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 sub_805F438(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 sub_805F4F0(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 sub_805F5A8(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 sub_805F660(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 cph_IM_DIFFERENT(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 sub_805F760(struct MapObject *, struct Sprite *, u8, bool8(u8));
+u8 oac_hopping(struct MapObject *, struct Sprite *, u8, bool8(u8));
extern struct CameraSomething gUnknown_03004880;
extern u16 gUnknown_03004898;
@@ -318,7 +318,7 @@ u8 get_go_fast_image_anim_num(u8);
u8 get_go_faster_image_anim_num(u8);
u8 sub_805FD78(u8);
-int state_to_direction(u8, u8, u8);
+u32 state_to_direction(u8, u32, u32);
void sub_805AA98();
void sub_805AAB0(void);
@@ -379,14 +379,14 @@ u8 sub_805FDF8(u8);
u8 sub_805FE08(u8);
void npc_set_running_behaviour_etc(struct MapObject *, u8);
u8 npc_running_behaviour_by_direction(u8);
-u8 npc_block_way(struct MapObject *, s16, s16, u8);
+u8 npc_block_way(struct MapObject *, s16, s16, u32);
u8 sub_8060024(struct MapObject *, s16, s16, u8);
u8 sub_8060234(u8, u8, u8);
void sub_8060288(u8, u8, u8);
void sub_8060388(s16, s16, s16 *, s16 *);
void sub_80603CC(s16 x, s16 y, s16 *pInt, s16 *pInt1);
void GetFieldObjectMovingCameraOffset(s16 *, s16 *);
-void FieldObjectMoveDestCoords(struct MapObject *pObject, u8 unk_19, s16 *pInt, s16 *pInt1);
+void FieldObjectMoveDestCoords(struct MapObject *pObject, u32 unk_19, s16 *pInt, s16 *pInt1);
bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *);
bool8 FieldObjectIsSpecialAnimActive(struct MapObject *);
bool8 FieldObjectSetSpecialAnim(struct MapObject *, u8);
@@ -396,21 +396,23 @@ void FieldObjectClearAnim(struct MapObject *);
bool8 FieldObjectCheckIfSpecialAnimFinishedOrInactive(struct MapObject *);
u8 FieldObjectClearAnimIfSpecialAnimFinished(struct MapObject *);
u8 FieldObjectGetSpecialAnim(struct MapObject *);
-u8 GetFaceDirectionAnimId(u8);
-u8 GetSimpleGoAnimId(u8);
-u8 GetGoSpeed0AnimId(u8 a);
-u8 sub_8060744(u8 a);
-u8 d2s_08064034(u8 a);
-u8 sub_806079C(u8 a);
-u8 sub_80607F4(u8 a);
-u8 GetJumpLedgeAnimId(u8 a);
-u8 sub_806084C(u8);
-u8 sub_8060878(u8);
-u8 sub_80608D0(u8);
-u8 GetStepInPlaceDelay32AnimId(u8 a);
-u8 GetStepInPlaceDelay16AnimId(u8);
-u8 GetStepInPlaceDelay8AnimId(u8 a);
-u8 GetStepInPlaceDelay4AnimId(u8 a);
+u8 GetFaceDirectionAnimId(u32);
+u8 GetSimpleGoAnimId(u32);
+u8 GetGoSpeed0AnimId(u32);
+u8 sub_8060744(u32);
+u8 d2s_08064034(u32);
+u8 sub_806079C(u32);
+u8 sub_80607C8(u32);
+u8 sub_80607F4(u32);
+u8 GetJumpLedgeAnimId(u32);
+u8 sub_806084C(u32);
+u8 sub_8060878(u32);
+u8 sub_80608A4(u32);
+u8 sub_80608D0(u32);
+u8 GetStepInPlaceDelay32AnimId(u32);
+u8 GetStepInPlaceDelay16AnimId(u32);
+u8 GetStepInPlaceDelay8AnimId(u32);
+u8 GetStepInPlaceDelay4AnimId(u32);
u8 FieldObjectFaceOppositeDirection(struct MapObject *, u8);
u8 sub_80609D8(u8);
u8 sub_8060A04(u8);
@@ -427,5 +429,9 @@ void sub_80634D0(struct MapObject *, struct Sprite *);
u8 SpawnSpecialFieldObjectParametrized(u8, u8, u8, s16, s16, u8);
void CameraObjectSetFollowedObjectId(u8);
u8 sub_805ADDC(u8);
+void sub_8060320(u32, s16 *, s16 *, s16, s16);
+u8 obj_unfreeze(struct Sprite *, s16, s16, u8);
+u16 npc_paltag_by_palslot(u8);
+void sub_8060470(s16 *, s16 *, s16, s16);
#endif // GUARD_FIELD_MAP_OBJ_H
diff --git a/include/field_map_obj_helpers.h b/include/field_map_obj_helpers.h
index fd29a9a7f..f760bf153 100644
--- a/include/field_map_obj_helpers.h
+++ b/include/field_map_obj_helpers.h
@@ -18,4 +18,6 @@ void DoShadowFieldEffect(struct MapObject *mapObject);
u8 sub_8064704(struct Sprite *);
u8 sub_806478C(struct Sprite *);
void obj_anim_image_set_and_seek(struct Sprite *sprite, u8 a2, u8 a3);
+void DoRippleFieldEffect(struct MapObject *mapObj, struct Sprite *sprite);
+
#endif
diff --git a/include/field_poison.h b/include/field_poison.h
index 8e8e2746f..df0b31434 100644
--- a/include/field_poison.h
+++ b/include/field_poison.h
@@ -1,6 +1,6 @@
#ifndef GUARD_FIELD_POISON_H
#define GUARD_FIELD_POISON_H
-s32 overworld_poison(void);
+s32 DoPoisonFieldEffect(void);
#endif // GUARD_FIELD_POISON_H
diff --git a/include/field_special_scene.h b/include/field_special_scene.h
index ef3f07120..d674f09df 100644
--- a/include/field_special_scene.h
+++ b/include/field_special_scene.h
@@ -9,5 +9,6 @@ void Task_Truck3(u8 taskId);
void Task_HandleTruckSequence(u8 taskId);
void ExecuteTruckSequence(void);
void EndTruckSequence(u8);
+void sub_80C791C(void);
#endif // GUARD_FIELD_SPECIAL_SCENE_H
diff --git a/include/gba/m4a_internal.h b/include/gba/m4a_internal.h
index 572b77711..ff92fcc40 100644
--- a/include/gba/m4a_internal.h
+++ b/include/gba/m4a_internal.h
@@ -404,10 +404,6 @@ void SampleFreqSet(u32 freq);
void m4aSoundVSyncOn(void);
void m4aSoundVSyncOff(void);
-void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo);
-void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
-void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 pitch);
-void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan);
void ClearModM(struct MusicPlayerTrack *track);
void m4aMPlayModDepthSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 modDepth);
void m4aMPlayLFOSpeedSet(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u8 lfoSpeed);
diff --git a/include/gba/macro.h b/include/gba/macro.h
index 230fb4383..1e0254806 100644
--- a/include/gba/macro.h
+++ b/include/gba/macro.h
@@ -84,4 +84,38 @@
dmaRegs[5]; \
}
+#define DmaCopyLarge(dmaNum, src, dest, size, block, bit) \
+{ \
+ const void *_src = src; \
+ void *_dest = dest; \
+ u32 _size = size; \
+ while (1) \
+ { \
+ DmaCopy##bit(dmaNum, _src, _dest, (block)); \
+ _src += (block); \
+ _dest += (block); \
+ _size -= (block); \
+ if (_size <= (block)) \
+ { \
+ DmaCopy##bit(dmaNum, _src, _dest, _size); \
+ break; \
+ } \
+ } \
+}
+
+#define DmaCopyLarge16(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 16)
+
+#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32)
+
+#define DmaCopyDefvars(dmaNum, src, dest, size, bit) \
+{ \
+ const void *_src = src; \
+ void *_dest = dest; \
+ u32 _size = size; \
+ DmaCopy##bit(dmaNum, _src, _dest, _size); \
+}
+
+#define DmaCopy16Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 16)
+#define DmaCopy32Defvars(dmaNum, src, dest, size) DmaCopyDefvars(dmaNum, src, dest, size, 32)
+
#endif // GUARD_GBA_MACRO_H
diff --git a/include/gba/types.h b/include/gba/types.h
index 96e057ab7..480619d21 100644
--- a/include/gba/types.h
+++ b/include/gba/types.h
@@ -39,11 +39,11 @@ struct PlttData
struct OamData
{
/*0x00*/ u32 y:8;
- /*0x01*/ u32 affineMode:2;
- u32 objMode:2;
- u32 mosaic:1;
- u32 bpp:1;
- u32 shape:2;
+ /*0x01*/ u32 affineMode:2; // 0x1, 0x2 = 0x3
+ u32 objMode:2; // 0x4, 0x8 = 0xC
+ u32 mosaic:1; // 0x10
+ u32 bpp:1; // 0x20
+ u32 shape:2; // 0x40, 0x80
/*0x02*/ u32 x:9;
u32 matrixNum:5; // bits 3/4 are h-flip/v-flip if not in affine mode
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 4029132e8..5c93eb8ab 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -14,16 +14,16 @@ enum
// map types
enum
{
- MAP_TYPE_0,
- MAP_TYPE_TOWN,
- MAP_TYPE_CITY,
- MAP_TYPE_ROUTE,
- MAP_TYPE_UNDERGROUND,
- MAP_TYPE_UNDERWATER,
- MAP_TYPE_6,
- MAP_TYPE_7,
- MAP_TYPE_INDOOR,
- MAP_TYPE_SECRET_BASE
+ MAP_TYPE_0, // 0
+ MAP_TYPE_TOWN, // 1
+ MAP_TYPE_CITY, // 2
+ MAP_TYPE_ROUTE, // 3
+ MAP_TYPE_UNDERGROUND, // 4
+ MAP_TYPE_UNDERWATER, // 5
+ MAP_TYPE_6, // 6
+ MAP_TYPE_7, // 7
+ MAP_TYPE_INDOOR, // 8
+ MAP_TYPE_SECRET_BASE // 9
};
// map battle scenes
diff --git a/include/global.h b/include/global.h
index 73f73093d..f0eb7401f 100644
--- a/include/global.h
+++ b/include/global.h
@@ -37,6 +37,7 @@ fndec\
#define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0]))
+#define POKEMON_SLOTS_NUMBER 412
#define POKEMON_NAME_LENGTH 10
#define OT_NAME_LENGTH 7
@@ -447,43 +448,69 @@ struct MailStruct
/*0x20*/ u16 itemId;
};
-struct UnkMauvilleOldManStruct
+
+// Mauville Pokemon Center men
+
+struct MauvilleManCommon
{
- u8 unk_2D94;
- u8 unk_2D95;
- /*0x2D96*/ u16 mauvilleOldMan_ecArray[6];
- /*0x2DA2*/ u16 mauvilleOldMan_ecArray2[6];
- /*0x2DAE*/ u8 playerName[8];
- /*0x2DB6*/ u8 filler_2DB6[0x3];
- /*0x2DB9*/ u8 playerTrainerId[4];
- u8 unk_2DBD;
-}; /*size = 0x2C*/
+ u8 id;
+};
-struct UnkMauvilleOldManStruct2
+struct MauvilleManBard
{
- u8 filler0;
- u8 unk1;
- u8 unk2;
- u16 mauvilleOldMan_ecArray[10];
- u8 mauvilleOldMan_ecArray2[12];
- u8 fillerF[0x2];
+ /*0x00*/ u8 id;
+ /*0x02*/ u16 songLyrics[6];
+ /*0x0E*/ u16 temporaryLyrics[6];
+ /*0x1A*/ u8 playerName[8];
+ /*0x22*/ u8 filler_2DB6[0x3];
+ /*0x25*/ u8 playerTrainerId[4];
+ /*0x29*/ bool8 hasChangedSong;
}; /*size = 0x2C*/
-struct MauvilleOldManTrader
+struct MauvilleManHipster
{
- u8 unk0;
+ u8 id;
+ bool8 alreadySpoken;
+};
+
+struct MauvilleManTrader
+{
+ u8 id;
u8 unk1[4];
u8 unk5[4][11];
- u8 unk31;
+ bool8 alreadyTraded;
};
-typedef union OldMan
+struct MauvilleManStoryteller
{
- struct UnkMauvilleOldManStruct oldMan1;
- struct UnkMauvilleOldManStruct2 oldMan2;
- struct MauvilleOldManTrader trader;
- u8 filler[0x40];
-} OldMan;
+ u8 id;
+ bool8 alreadyRecorded;
+ u8 filler2[2];
+ u8 gameStatIDs[4];
+ u8 trainerNames[4][7];
+ u8 statValues[4][4];
+};
+
+struct MauvilleManGiddy
+{
+ /*0x00*/ u8 id;
+ /*0x01*/ u8 taleCounter;
+ /*0x02*/ u8 questionNum;
+ /*0x04*/ u16 randomWords[10];
+ /*0x18*/ u8 questionList[12];
+}; /*size = 0x2C*/
+
+
+union MauvilleMan
+{
+ struct MauvilleManCommon common;
+ struct MauvilleManBard bard;
+ struct MauvilleManHipster hipster;
+ struct MauvilleManTrader trader;
+ struct MauvilleManStoryteller storyteller;
+ struct MauvilleManGiddy giddy;
+ u8 filler[0x40]; // needed to pad out the struct
+};
struct Unk_SB_Access_Struct1
{
@@ -534,18 +561,34 @@ struct GabbyAndTyData
/*2b1b*/ u8 valB_5:3;
};
-struct RecordMixing_UnknownStructSub
+struct DayCareMail
{
- u32 unk0;
- u8 data[0x34];
- //u8 data[0x38];
+ /*0x00*/ struct MailStruct message;
+ /*0x24*/ u8 names[19];
};
-struct RecordMixing_UnknownStruct
+struct DayCareStepCountersEtc {
+ u32 steps[2];
+ u16 personalityLo;
+ u8 unk_11a;
+};
+
+struct RecordMixingDayCareMail
{
- struct RecordMixing_UnknownStructSub data[2];
+ struct DayCareMail mail[2];
u32 unk70;
- u16 unk74[0x2];
+ u16 unk74[2];
+};
+
+struct DayCareMisc
+{
+ struct DayCareMail mail[2];
+ struct DayCareStepCountersEtc countersEtc;
+};
+
+struct DayCareData {
+ struct BoxPokemon mons[2];
+ struct DayCareMisc misc;
};
struct LinkBattleRecord
@@ -557,18 +600,37 @@ struct LinkBattleRecord
u16 draws;
};
+struct RecordMixingGiftData
+{
+ u8 unk0;
+ u8 quantity;
+ u16 itemId;
+ u8 filler4[8];
+};
+
+struct RecordMixingGift
+{
+ int checksum;
+ struct RecordMixingGiftData data;
+};
+
+// there should be enough flags for all 412 slots
+// each slot takes up 8 flags
+// if the value is not divisible by 8, we need to account for the reminder as well
+#define DEX_FLAGS_NO ((POKEMON_SLOTS_NUMBER / 8) + ((POKEMON_SLOTS_NUMBER % 8) ? 1 : 0))
+
struct SaveBlock1 /* 0x02025734 */
{
/*0x00*/ struct Coords16 pos;
/*0x04*/ struct WarpData location;
/*0x0C*/ struct WarpData warp1;
/*0x14*/ struct WarpData warp2;
- /*0x1C*/ struct WarpData warp3;
+ /*0x1C*/ struct WarpData lastHealLocation;
/*0x24*/ struct WarpData warp4;
- /*0x2C*/ u16 battleMusic;
+ /*0x2C*/ u16 savedMusic;
/*0x2E*/ u8 weather;
/*0x2F*/ u8 filler_2F;
- /*0x30*/ u8 flashUsed;
+ /*0x30*/ u8 flashLevel; // flash level on current map, 0 being normal and 4 being the darkest
/*0x32*/ u16 mapDataId;
/*0x34*/ u16 mapView[0x100];
/*0x234*/ u8 playerPartyCount;
@@ -583,7 +645,7 @@ struct SaveBlock1 /* 0x02025734 */
/*0x640*/ struct ItemSlot bagPocket_TMHM[64];
/*0x740*/ struct ItemSlot bagPocket_Berries[46];
/*0x7F8*/ struct Pokeblock pokeblocks[40];
- /*0x938*/ u8 unk938[52]; // pokedex related
+ /*0x938*/ u8 dexSeen2[DEX_FLAGS_NO];
/*0x96C*/ u16 berryBlenderRecords[3];
/*0x972*/ u8 filler_972[0x6];
/*0x978*/ u16 trainerRematchStepCounter;
@@ -626,24 +688,20 @@ struct SaveBlock1 /* 0x02025734 */
/*0x2B4C*/ struct MailStruct mail[16];
/*0x2D8C*/ u8 unk2D8C[4];
/*0x2D90*/ u8 filler_2D90[0x4];
- /*0x2D94*/ OldMan oldMan;
+ /*0x2D94*/ union MauvilleMan mauvilleMan;
/*0x2DD4*/ struct EasyChatPair easyChatPairs[5]; //Dewford trend [0] and some other stuff
/*0x2DFC*/ u8 filler_2DFC[0x8];
/*0x2E04*/ SB_Struct sbStruct;
- /*0x2F9C*/ struct BoxPokemon daycareData[2];
- /*0x303C*/ struct RecordMixing_UnknownStruct filler_303C;
- /*0x30AC*/ u8 filler_30B4[0x2];
- /*0x30B6*/ u8 filler_30B6;
- /*0x30B7*/ u8 filler_30B7[1];
+ /*0x2F9C*/ struct DayCareData daycareData;
/*0x30B8*/ struct LinkBattleRecord linkBattleRecords[5];
/*0x3108*/ u8 filler_3108[8];
- /*0x3110*/ u8 giftRibbons[7];
- /*0x3117*/ u8 filler_311B[0x2D];
+ /*0x3110*/ u8 giftRibbons[11];
+ /*0x3117*/ u8 filler_311B[0x29];
/*0x3144*/ struct Roamer roamer;
/*0x3160*/ struct EnigmaBerry enigmaBerry;
/*0x3690*/ struct RamScript ramScript;
- /*0x3A7C*/ u8 filler_3A7C[0x10];
- /*0x3A8C*/ u8 unk3A8C[52]; //pokedex related
+ /*0x3A7C*/ struct RecordMixingGift recordMixingGift;
+ /*0x3A8C*/ u8 dexSeen3[DEX_FLAGS_NO];
};
extern struct SaveBlock1 gSaveBlock1;
@@ -665,8 +723,8 @@ struct Pokedex
/*0x04*/ u32 unownPersonality; // set when you first see Unown
/*0x08*/ u32 spindaPersonality; // set when you first see Spinda
/*0x0C*/ u32 unknown3;
- /*0x10*/ u8 owned[52];
- /*0x44*/ u8 seen[52];
+ /*0x10*/ u8 owned[DEX_FLAGS_NO];
+ /*0x44*/ u8 seen[DEX_FLAGS_NO];
};
struct SaveBlock2_Sub
@@ -674,7 +732,8 @@ struct SaveBlock2_Sub
/*0x0000, 0x00A8*/ u8 filler_000[0x3D8];
/*0x03D8, 0x0480*/ u16 var_480;
/*0x03DA, 0x0482*/ u16 var_482;
- /*0x03DC, 0x0484*/ u8 filler_3DC[0xD0];
+ /*0x03DC, 0x0484*/ u8 filler_3DC[0x14];
+ /*0x03F0, 0x0498*/ u8 ereaderTrainer[0xBC];
/*0x04AC, 0x0554*/ u8 var_4AC;
/*0x04AD, 0x0555*/ u8 var_4AD;
/*0x04AE, 0x0556*/ u8 var_4AE[2];
diff --git a/include/graphics.h b/include/graphics.h
index 5632cb831..f3a722b40 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -2564,4 +2564,13 @@ extern const u8 gUnknown_08E8CFC0[];
extern const u8 gUnknown_08E8D4C0[];
extern const u8 gUnknown_08E8D9C0[];
+extern const u8 gUnknown_08EA1DEC[];
+extern const u16 gUnknown_08EA0328[];
+extern const u16 gUnknown_08EA02C8[];
+extern const u16 gUnknown_08EA0348[];
+extern const u16 gUnknown_08EA15C8[];
+extern const u16 gTradeMonBoxTilemap[];
+extern const u8 gUnknown_08D00000[];
+extern const u16 gUnknown_08D00524[];
+extern const u8 gUnknown_08D004E0[];
#endif // GUARD_GRAPHICS_H
diff --git a/include/intro_credits_graphics.h b/include/intro_credits_graphics.h
index 5abb2381b..2718d2f9f 100644
--- a/include/intro_credits_graphics.h
+++ b/include/intro_credits_graphics.h
@@ -10,15 +10,16 @@ extern const struct SpritePalette gIntro2SpritePalettes[];
extern const struct CompressedSpriteSheet gUnknown_08416E24;
extern const struct CompressedSpriteSheet gUnknown_08416E34;
-void load_intro_part2_graphics(/*TODO: arg types*/);
-void sub_8148C78(/*TODO: arg types*/);
+void load_intro_part2_graphics(u8 a);
+void sub_8148C78(u8 a);
void sub_8148CB0(u8);
void sub_8148E90(u8);
-u8 sub_8148EC0(/*TODO: arg types*/);
-void sub_8149020(/*TODO: arg types*/);
-u8 intro_create_brendan_sprite(/*TODO: arg types*/);
-u8 intro_create_may_sprite(/*TODO: arg types*/);
-u8 intro_create_latios_sprite(/*TODO: arg types*/);
-u8 intro_create_latias_sprite(/*TODO: arg types*/);
+u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d);
+void sub_8148F3C(u8);
+void sub_8149020(u8);
+u8 intro_create_brendan_sprite(s16 a, s16 b);
+u8 intro_create_may_sprite(s16 a, s16 b);
+u8 intro_create_latios_sprite(s16 a, s16 b);
+u8 intro_create_latias_sprite(s16 a, s16 b);
#endif // GUARD_INTRO_CREDITS_GRAPHICS_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 6950ed0ff..29618f347 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -3,6 +3,17 @@
#include "string_util.h"
+struct PocketScrollState
+{
+ u8 cursorPos;
+ u8 scrollTop;
+ u8 numSlots;
+ u8 cursorMax;
+};
+
+extern struct PocketScrollState gBagPocketScrollStates[];
+extern struct ItemSlot *gCurrentBagPocketItemSlots;
+
void ResetBagScrollPositions(void);
void ClearBag(void);
void sub_80A3E0C(void);
diff --git a/include/item_use.h b/include/item_use.h
index 1558f7691..227c0c9ee 100644
--- a/include/item_use.h
+++ b/include/item_use.h
@@ -38,7 +38,7 @@ void sub_80C9FC0(u8);
void ItemUseOutOfBattle_Repel(u8);
void ItemUseOutOfBattle_BlackWhiteFlute(u8);
void task08_080A1C44(u8);
-u8 sub_80CA1C8(void);
+u8 CanUseEscapeRopeOnCurrMap(void);
void ItemUseOutOfBattle_EscapeRope(u8);
void ItemUseOutOfBattle_EvolutionStone(u8);
void ItemUseInBattle_PokeBall(u8);
@@ -49,5 +49,6 @@ void ItemUseInBattle_Escape(u8);
void ItemUseOutOfBattle_EnigmaBerry(u8);
void ItemUseInBattle_EnigmaBerry(u8);
void ItemUseOutOfBattle_CannotUse(u8);
+u8 CheckIfItemIsTMHMOrEvolutionStone(u16 itemId);
#endif // GUARD_ITEM_USE_H
diff --git a/include/m4a.h b/include/m4a.h
index b6c8f9072..7d016c98b 100644
--- a/include/m4a.h
+++ b/include/m4a.h
@@ -16,4 +16,9 @@ void m4aMPlayFadeOutTemporarily(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayFadeIn(struct MusicPlayerInfo *mplayInfo, u16 speed);
void m4aMPlayImmInit(struct MusicPlayerInfo *mplayInfo);
+void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo);
+void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 volume);
+void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch);
+void m4aMPlayPanpotControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s8 pan);
+
#endif //GUARD_M4A_H
diff --git a/include/mail_data.h b/include/mail_data.h
index df4b385a1..2659c0d37 100644
--- a/include/mail_data.h
+++ b/include/mail_data.h
@@ -11,6 +11,6 @@ u8 GiveMailToMon2(struct Pokemon *, struct MailStruct *);
void TakeMailFromMon(struct Pokemon *);
u8 TakeMailFromMon2(struct Pokemon *);
bool8 ItemIsMail(u16);
-bool8 ItemIsMail(u16);
+bool8 MonHasMail(struct Pokemon *);
#endif // GUARD_MAIL_DATA_H
diff --git a/include/map_obj_lock.h b/include/map_obj_lock.h
index f7352be22..9fb57743e 100644
--- a/include/map_obj_lock.h
+++ b/include/map_obj_lock.h
@@ -7,7 +7,7 @@ bool8 sub_8064CFC(void);
void ScriptFreezeMapObjects(void);
void sub_8064D38(u8 taskId);
bool8 sub_8064DB4(void);
-void sub_8064DD8(void);
+void LockSelectedMapObject(void);
void sub_8064E2C(void);
void unref_sub_8064E5C(void);
void sub_8064EAC(void);
diff --git a/include/mauville_man.h b/include/mauville_man.h
new file mode 100644
index 000000000..2b8f139f2
--- /dev/null
+++ b/include/mauville_man.h
@@ -0,0 +1,18 @@
+#ifndef GUARD_MAUVILLE_OLD_MAN_H
+#define GUARD_MAUVILLE_OLD_MAN_H
+
+// IDs
+enum
+{
+ MAUVILLE_MAN_BARD,
+ MAUVILLE_MAN_HIPSTER,
+ MAUVILLE_MAN_TRADER,
+ MAUVILLE_MAN_STORYTELLER,
+ MAUVILLE_MAN_GIDDY,
+};
+
+void SetupMauvilleOldMan(void);
+void sub_80F7F30(void);
+void sub_80F83D0(void);
+
+#endif // GUARD_MAUVILLE_OLD_MAN_H
diff --git a/include/mauville_old_man.h b/include/mauville_old_man.h
deleted file mode 100644
index 473fcf5c8..000000000
--- a/include/mauville_old_man.h
+++ /dev/null
@@ -1,11 +0,0 @@
-#ifndef GUARD_MAUVILLE_OLD_MAN_H
-#define GUARD_MAUVILLE_OLD_MAN_H
-
-void SetMauvilleOldMan(void);
-void sub_80F7DC0(void);
-void sub_80F7F30(void);
-void sub_80F7F80(u8);
-void sub_80F83D0(void);
-void sub_80F83F8(void);
-
-#endif // GUARD_MAUVILLE_OLD_MAN_H
diff --git a/include/menu.h b/include/menu.h
index e1bb4f1e4..3cf47b9b8 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -43,7 +43,7 @@ u16 unref_sub_8071F98(u8, u8);
void unref_sub_8071FBC(u16, u8, u8, u8, u8);
void MenuDisplayMessageBox(void);
void MenuPrintMessage(const u8 *, u8, u8);
-void sub_8072044(const u8 *);
+void MenuPrintMessageDefaultCoords(const u8 *);
void MenuSetText(const u8 *);
u8 MenuUpdateWindowText(void);
u8 unref_sub_8072098(void);
@@ -59,7 +59,7 @@ void sub_807274C(u8, u8, u8, u8, const struct MenuAction[], u8, u32);
s8 sub_80727CC(void);
u8 sub_807288C(u8);
void PrintMenuItems(u8, u8, u8, const struct MenuAction[]);
-void PrintMenuItemsReordered(u8, u8, u8, const struct MenuAction[], const u8*);
+void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order);
void InitYesNoMenu(u8, u8, u8);
void DisplayYesNoMenu(u8, u8, u32);
s8 ProcessMenuInputNoWrap_(void);
diff --git a/include/menu_cursor.h b/include/menu_cursor.h
index ca82ef244..6d31cc29f 100644
--- a/include/menu_cursor.h
+++ b/include/menu_cursor.h
@@ -21,4 +21,8 @@ void sub_814AD7C(u8 a1, u8 a2);
void sub_814ADC8(void);
void sub_814ADF4(u8 a1);
+#if GERMAN
+extern const u32 gUnknown_0842F798[2];
+#endif
+
#endif // GUARD_MENU_CURSOR_H
diff --git a/include/money.h b/include/money.h
index 49015ee19..5a0acd482 100644
--- a/include/money.h
+++ b/include/money.h
@@ -2,15 +2,15 @@
#define GUARD_MONEY_H
bool8 IsEnoughMoney(u32, u32);
-void sub_80B79B8(u32 *, u32);
-void sub_80B79E0(u32 *, u32);
-void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2);
-void sub_80B7A94(u32 arg0, u8 arg1, u8 x, u8 y);
+void AddMoney(u32 *, u32);
+void RemoveMoney(u32 *, u32);
+void GetMoneyAmountText(u8 *buffer, u32 arg1, u8 arg2);
+void PrintMoneyAmount(u32 arg0, u8 arg1, u8 x, u8 y);
void sub_80B7AEC(u32, u8 left, u8 top);
-void sub_80B7B34(void);
-void sub_80B7BEC(u32, u8, u8);
-void sub_80B7C14(u32, u8, u8);
-void RemoveMoneyLabelObject(u8, u8);
+void sub_80B7B34(u8, u8, int);
+void UpdateMoneyWindow(u32, u8, u8);
+void OpenMoneyWindow(u32, u8, u8);
+void CloseMoneyWindow(u8, u8);
bool8 sub_80B7CE8(void);
void sub_80B7D0C(void);
diff --git a/include/mystery_event_script.h b/include/mystery_event_script.h
index 766303588..ab23a8d00 100644
--- a/include/mystery_event_script.h
+++ b/include/mystery_event_script.h
@@ -1,8 +1,8 @@
#ifndef GUARD_MYSTERY_EVENT_SCRIPT_H
#define GUARD_MYSTERY_EVENT_SCRIPT_H
-u32 sub_812613C(u8 *);
-void sub_8126160(u32 val);
-u16 sub_8126338(void);
+u32 RunMysteryEventScript(u8 *);
+void SetMysteryEventScriptStatus(u32 val);
+u16 GetRecordMixingGift(void);
#endif // GUARD_MYSTERY_EVENT_SCRIPT_H
diff --git a/include/rom4.h b/include/overworld.h
index fabd25302..0954f1b63 100644
--- a/include/rom4.h
+++ b/include/overworld.h
@@ -22,42 +22,42 @@ struct UCoords32
u32 x, y;
};
-extern struct UCoords32 gUnknown_0821664C[];
+extern const struct UCoords32 gUnknown_0821664C[];
extern void (*gFieldCallback)(void);
// sub_8052F5C
-void flag_var_implications_of_teleport_(void);
-void new_game(void);
-void sub_8053014(void);
-void sub_8053050(void);
+void Overworld_ResetStateAfterFly(void);
+void Overworld_ResetStateAfterTeleport(void);
+void Overworld_ResetStateAfterDigEscRope(void);
+void Overworld_ResetStateAfterWhiteOut(void);
// sub_805308C
void ResetGameStats(void);
void IncrementGameStat(u8 index);
u32 GetGameStat(u8 index);
void SetGameStat(u8, u32);
-// sub_8053154
-// sub_8053198
-void update_saveblock1_field_object_coords(u8, s16, s16);
-void update_saveblock1_field_object_movement_behavior(u8, u8);
+// LoadMapObjTemplatesFromHeader
+// LoadSaveblockMapObjScripts
+void Overworld_SetMapObjTemplateCoords(u8, s16, s16);
+void Overworld_SetMapObjTemplateMovementType(u8, u8);
// mapdata_load_assets_to_gpu_and_full_redraw
// get_mapdata_header
-// warp_shift
-// warp_set
+// ApplyCurrentWarp
+// SetWarpData
// warp_data_is_not_neg_1
-struct MapHeader * const get_mapheader_by_bank_and_number(u16 mapGroup, u16 mapNum);
+struct MapHeader * const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum);
struct MapHeader * const warp1_get_mapheader(void);
// set_current_map_header_from_sav1_save_old_name
-// sub_805338C
+// LoadSaveblockMapHeader
// sub_80533CC
void warp_in(void);
-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);
void warp1_set_2(s8 mapGroup, s8 mapNum, s8 warpId);
void saved_warp2_set(int unused, s8 mapGroup, s8 mapNum, s8 warpId);
void saved_warp2_set_2(int unused, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void copy_saved_warp2_bank_and_enter_x_to_warp1(u8 unused);
void sub_8053538(u8);
-void sub_8053570(void);
-void sub_8053588(u8);
+void Overworld_SetWarpDestToLastHealLoc(void);
+void Overworld_SetHealLocationWarp(u8);
void sub_80535C4(s16 a1, s16 a2);
void sub_805363C(s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8 y);
void sub_8053678(void);
@@ -69,7 +69,7 @@ void sub_8053720(s16, s16);
// unref_sub_8053790
void sub_80537CC(u8);
void gpu_sync_bg_hide();
-// sub_8053818
+// GetMapConnection
// sub_8053850
bool8 sub_80538B0(u16 x, u16 y);
bool8 sub_80538D0(u16 x, u16 y);
@@ -81,37 +81,37 @@ void walkrun_find_lowest_active_bit_in_bitfield(void);
u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3);
u8 sub_8053B60(struct UnkPlayerStruct *playerStruct, u8, u16, u8);
u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void);
-bool32 IsBikingAllowedByMap(void);
-void sub_8053C98(void);
-void sub_8053CE4(s32 a1);
-u8 sav1_get_flash_used_on_map(void);
+bool32 Overworld_IsBikingAllowed(void);
+void SetDefaultFlashLevel(void);
+void Overworld_SetFlashLevel(s32 a1);
+u8 Overworld_GetFlashLevel(void);
void sub_8053D14(u16);
// sub_8053D30
// sub_8053D6C
-// sub_8053D9C
-// sav1_map_get_music
-// warp1_target_get_music
-// call_map_music_set_to_zero
-void sub_8053E90(void);
-void sav1_set_battle_music_maybe(u16);
-void sav1_reset_battle_music_maybe(void);
+// GetLocationMusic
+// GetCurrLocationDefaultMusic
+// GetWarpDestinationMusic
+// Overworld_ResetMapMusic
+void Overworld_PlaySpecialMapMusic(void);
+void Overworld_SetSavedMusic(u16);
+void Overworld_ClearSavedMusic(void);
void sub_8053F0C(void);
-void sub_8053F84(void);
-void sub_8053FB0(u16);
-// is_warp1_light_level_8_or_9
-// sub_8053FF8
+void Overworld_ChangeMusicToDefault(void);
+void Overworld_ChangeMusicTo(u16);
+// GetMapMusicFadeoutSpeed
+void sub_8053FF8(void);
bool8 sub_8054034(void);
-void sub_8054044(void);
-// sub_8054050
-void sub_80540D0(s16 *, u16 *);
-void sub_8054164(void);
-u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum);
-// get_map_light_level_from_warp
-u8 sav1_map_get_light_level(void);
-u8 get_map_light_from_warp0(void);
-bool8 is_light_level_1_2_3_5_or_6(u8 a1);
-bool8 is_light_level_1_2_3_or_6(u8 a1);
-u8 is_light_level_8_or_9(u8);
+void Overworld_FadeOutMapMusic(void);
+// PlayAmbientCry
+void UpdateAmbientCry(s16 *, u16 *);
+void ChooseAmbientCrySpecies(void);
+u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum);
+// GetMapTypeByWarpData
+u8 Overworld_GetMapTypeOfSaveblockLocation(void);
+u8 get_map_type_from_warp0(void);
+bool8 is_map_type_1_2_3_5_or_6(u8 a1);
+bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 a1);
+u8 Overworld_MapTypeIsIndoors(u8);
// unref_sub_8054260
u8 sav1_map_get_name();
// sav1_map_get_battletype
@@ -119,8 +119,8 @@ u8 sav1_map_get_name();
bool32 is_c1_link_related_active(void);
// c1_overworld_normal
// c1_overworld
-// c2_overworld_basic
-// sub_8054398
+// OverworldBasic
+void CB2_OverworldBasic(void);
void c2_overworld(void);
// set_callback1
// sub_80543DC
@@ -129,8 +129,8 @@ void CB2_NewGame(void);
void CB2_WhiteOut(void);
void CB2_LoadMap(void);
void CB2_LoadMap2(void);
-// sub_8054534
-// sub_8054588
+void sub_8054534(void);
+void sub_8054588(void);
void c2_80567AC(void);
void c2_exit_to_overworld_2_switch(void);
void c2_exit_to_overworld_2_local(void);
@@ -233,5 +233,6 @@ u8 npc_something3(u8, u8);
u8 LinkPlayerDetectCollision(u8, u8, s16, s16);
void CreateLinkPlayerSprite(u8);
void SpriteCB_LinkPlayer(struct Sprite *);
+void sub_805465C(void);
#endif // GUARD_ROM4_H
diff --git a/include/party_menu.h b/include/party_menu.h
index 9ce476869..e3f5c62f3 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -53,40 +53,58 @@ struct Struct201B000
u16 unk282;
};
+struct Unk2001000
+{
+ u8 unk0;
+ u8 unk1;
+ u8 unk2;
+ u8 unk3;
+ u8 unk4;
+ u8 unk5;
+ u8 unk6;
+ u8 unk7;
+ u8 unk8;
+ u8 unk9;
+ u8 unkA;
+ u8 unkB;
+ void* unkC;
+ u16 array[53561];
+};
+
extern u8 ewram[];
+#define ewram01000 (*(struct Unk2001000 *)(ewram + 0x01000))
#define ewram1B000 (*(struct Unk201B000 *)(ewram + 0x1B000))
#define ewram1B000_alt (*(struct Struct201B000 *)(ewram + 0x1B000))
#define EWRAM_1B000 ewram1B000_alt
void sub_806AEDC(void);
-void sub_806AF4C();
+void sub_806AF4C(u8 arg0, u8 arg1, void* arg2, u8 arg3);
void OpenPartyMenu(u8, u8);
void OpenPartyMenu();
-u8 sub_806B124(void);
+bool8 sub_806B124(void);
u8 IsLinkDoubleBattle(void);
u8 sub_806B58C(u8);
u8 sub_806B58C(u8);
void sub_806BC3C(u8, u8);
u8 sub_806BD58(u8, u8);
u8 sub_806BD58(u8, u8);
-u16 sub_806BD80(); // undefined args in battle_party_menu.c
+u16 sub_806BD80(u8);
void task_pc_turn_off();
-void sub_806BF74();
-void sub_806C994();
-u8 sub_806CA38(u8);
+void sub_806BF74(u8 arg0, u8 arg1);
+void sub_806C994(u8 arg0, u8 arg1);
+u8 sub_806CA38(u8 taskID);
void sub_806CB74(u8 taskId);
void sub_806CCE4(void);
void sub_806CD44(u8 taskId);
-void sub_806D538();
-void sub_806D538();
-void sub_806D538();
+void sub_806D538(u8 arg0, u8 arg1);
void sub_806D5A4(void);
void SetMonIconAnim();
void TryCreatePartyMenuMonIcon(u8, u8, struct Pokemon *);
void LoadHeldItemIconGraphics(void);
-void LoadHeldItemIconGraphics(void);
+void PartyMenuTryGiveMonHeldItem(u8 taskId, u16 newItem, TaskFunc c);
void CreateHeldItemIcons_806DC34(); // undefined args
void CreateHeldItemIcons_806DC34();
+void CreateHeldItemIcons(u8 *, u8 *, u8);
u8 GetMonIconSpriteId_maybe();
void SetHeldItemIconVisibility();
void TryPrintPartyMenuMonNickname();
@@ -151,5 +169,13 @@ void DoRareCandyItemEffect(u8, u16, TaskFunc);
void Task_RareCandy1(u8);
void Task_RareCandy2(u8);
void sub_8070848(u8 taskId);
+void sub_806CA60(u8 taskId);
+void sub_806CD5C(u8 taskId);
+void DoTakeMail(u8 taskId, TaskFunc func);
+void PartyMenuTryGiveMonHeldItem_806ECE8(u8 taskId, TaskFunc func);
+void PartyMenuTryGiveMonMail(u8 taskId, TaskFunc func);
+void sub_806D668(u8 partyID);
+void TaughtMove(u8 taskId);
+void StopTryingToTeachMove_806F588(u8 taskId);
#endif // GUARD_PARTY_MENU_H
diff --git a/include/pokeball.h b/include/pokeball.h
index 19f813415..0a709c869 100644
--- a/include/pokeball.h
+++ b/include/pokeball.h
@@ -7,5 +7,6 @@ void CreatePokeballSprite(u8 r0, u8 r1, u8 r2, u8 r3, u8 s1, u8 s2, u8 s3, u32 s
void sub_804777C(u8);
void sub_80478DC(u8);
void sub_804794C(u8);
+u8 sub_8047580(u8, u8, u8, u8, u8, u8, u8, u32);
#endif // GUARD_POKEBALL_H
diff --git a/include/pokeblock.h b/include/pokeblock.h
index f78ed40c3..6720653a0 100644
--- a/include/pokeblock.h
+++ b/include/pokeblock.h
@@ -1,7 +1,8 @@
#ifndef GUARD_POKEBLOCK_H
#define GUARD_POKEBLOCK_H
-enum {
+enum
+{
PBLOCK_CLR_BLACK,
PBLOCK_CLR_RED,
PBLOCK_CLR_BLUE,
@@ -10,15 +11,32 @@ enum {
PBLOCK_CLR_YELLOW
};
+enum
+{
+ PBLOCK_COLOR,
+ PBLOCK_SPICY,
+ PBLOCK_DRY,
+ PBLOCK_SWEET,
+ PBLOCK_BITTER,
+ PBLOCK_SOUR,
+ PBLOCK_FEEL,
+};
+
void sub_810B96C(void);
u8 sub_810BA50(s16, s16, u8);
u8 sub_810C9B0(struct Pokeblock *);
-s16 sub_810CA9C(const struct Pokeblock *, u8);
+s16 GetPokeblockData(const struct Pokeblock *, u8);
u8 sub_810C9E8(struct Pokeblock *);
void sub_810BA7C(u8);
void ClearPokeblocks(void);
-bool8 sub_810CA6C(u8);
-s16 sub_810CAE4(u8, const struct Pokeblock *);
+bool8 PokeblockClearIfExists(u8);
+s16 PokeblockGetGain(u8, const struct Pokeblock *);
u8 sub_810CB68(u8, u8*);
+void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest);
+void CB2_PreparePokeblockFeedScene(void);
+
+#include "main.h"
+
+void sub_8136130(struct Pokeblock *, MainCallback);
#endif // GUARD_POKEBLOCK_H
diff --git a/include/pokeblock_feed.h b/include/pokeblock_feed.h
deleted file mode 100644
index 65d0d1dc9..000000000
--- a/include/pokeblock_feed.h
+++ /dev/null
@@ -1,10 +0,0 @@
-//
-// Created by Scott Norton on 6/28/17.
-//
-
-#ifndef POKERUBY_POKEBLOCK_FEED_H
-#define POKERUBY_POKEBLOCK_FEED_H
-
-void sub_8147ADC(void);
-
-#endif //POKERUBY_POKEBLOCK_FEED_H
diff --git a/include/pokedex.h b/include/pokedex.h
index 1bc63a4ff..c47494e1f 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -9,7 +9,17 @@ void CB2_InitPokedex(void);
u8 sub_809070C(u16 dexNum, u32 b, u32 c);
const u8 *GetPokemonCategory(u16);
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
-s8 GetNationalPokedexFlag(u16, u8);
+
+enum
+{
+ FLAG_GET_SEEN,
+ FLAG_GET_CAUGHT,
+ FLAG_SET_SEEN,
+ FLAG_SET_CAUGHT
+};
+
+s8 GetSetPokedexFlag(u16, u8);
+
u16 GetNationalPokedexCount(u8);
u16 GetHoennPokedexCount(u8);
bool8 sub_8090FC0(void);
diff --git a/include/pokemon.h b/include/pokemon.h
index c69fb87e0..76728a5ee 100644
--- a/include/pokemon.h
+++ b/include/pokemon.h
@@ -93,6 +93,8 @@
#define MON_DATA_SPATK2 87
#define MON_DATA_SPDEF2 88
+#define MAX_LEVEL 100
+
#define MON_MALE 0x00
#define MON_FEMALE 0xFE
#define MON_GENDERLESS 0xFF
@@ -349,6 +351,18 @@ struct BattlePokemon
/*0x54*/ u32 otId;
};
+enum
+{
+ STAT_STAGE_HP, // 0
+ STAT_STAGE_ATK, // 1
+ STAT_STAGE_DEF, // 2
+ STAT_STAGE_SPEED, // 3
+ STAT_STAGE_SPATK, // 4
+ STAT_STAGE_SPDEF, // 5
+ STAT_STAGE_ACC, // 6
+ STAT_STAGE_EVASION, // 7
+};
+
struct BaseStats
{
/*0x00*/ u8 baseHP;
@@ -379,7 +393,7 @@ struct BaseStats
/*0x17*/ u8 ability2;
/*0x18*/ u8 safariZoneFleeRate;
/*0x19*/ u8 bodyColor:7;
- u8 unk19_7:1;
+ u8 noFlip:1;
};
struct BattleMove
@@ -392,9 +406,16 @@ struct BattleMove
u8 secondaryEffectChance;
u8 target;
u8 priority;
- u32 flags;
+ u8 flags;
+ u8 pad[3];
};
+#define FLAG_MAKES_CONTACT 0x1
+#define FLAG_PROTECT_AFFECTED 0x2
+#define FLAG_MAGICCOAT_AFFECTED 0x4
+#define FLAG_SNATCH_AFFECTED 0x8
+#define FLAG_KINGSROCK_AFFECTED 0x20
+
struct PokemonStorage
{
/*0x00*/ u8 currentBox;
@@ -464,7 +485,9 @@ struct EvolutionData
struct Evolution evolutions[5];
};
+extern u8 gPlayerPartyCount;
extern struct Pokemon gPlayerParty[PARTY_SIZE];
+extern u8 gEnemyPartyCount;
extern struct Pokemon gEnemyParty[PARTY_SIZE];
extern const u8 *const gItemEffectTable[];
extern const struct BaseStats gBaseStats[];
@@ -489,7 +512,7 @@ void sub_803ADE8(struct Pokemon *mon, struct UnknownPokemonStruct *src);
void sub_803AF78(struct Pokemon *mon, struct UnknownPokemonStruct *dest);
u16 CalculateBoxMonChecksum(struct BoxPokemon *boxMon);
void CalculateMonStats(struct Pokemon *mon);
-void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest);
+void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest);
u8 GetLevelFromMonExp(struct Pokemon *mon);
u8 GetLevelFromBoxMonExp(struct BoxPokemon *boxMon);
u16 GiveMoveToMon(struct Pokemon *mon, u16 move);
@@ -499,7 +522,7 @@ void SetMonMoveSlot(struct Pokemon *mon, u16 move, u8 slot);
void SetBattleMonMoveSlot(struct BattlePokemon *mon, u16 move, u8 slot);
void GiveMonInitialMoveset(struct Pokemon *mon);
void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon);
-u16 sub_803B7C8(struct Pokemon *mon, u8 a2);
+u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 a2);
void DeleteFirstMoveAndGiveMoveToMon(struct Pokemon *mon, u16 move);
void DeleteFirstMoveAndGiveMoveToBoxMon(struct BoxPokemon *boxMon, u16 move);
@@ -555,6 +578,7 @@ u16 NationalPokedexNumToSpecies(u16 nationalNum);
u16 NationalToHoennOrder(u16);
u16 SpeciesToNationalPokedexNum(u16);
u16 HoennToNationalOrder(u16);
+u16 SpeciesToCryId(u16 species);
void DrawSpindaSpots(u16, u32, u8 *, u8);
u8 sub_803FBBC(void);
u8 sub_803FC58(u16);
@@ -562,13 +586,14 @@ void AdjustFriendship(struct Pokemon *, u8);
u8 CheckPartyHasHadPokerus(struct Pokemon *, u8);
void UpdatePartyPokerusTime(u16);
u32 CanMonLearnTMHM(struct Pokemon *, u8);
+u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves);
u8 sub_8040574(struct Pokemon *party);
void ClearBattleMonForms(void);
void sub_80408BC();
void current_map_music_set__default_for_battle(u16);
-const u8 *pokemon_get_pal(struct Pokemon *mon);
-const u8 *species_and_otid_get_pal(u16, u32, u32);
-const struct CompressedSpritePalette *sub_80409C8(u16, u32, u32);
+const u8 *GetMonSpritePal(struct Pokemon *mon);
+const u8 *GetMonSpritePalFromOtIdPersonality(u16, u32, u32);
+const struct CompressedSpritePalette *GetMonSpritePalStructFromOtIdPersonality(u16, u32, u32);
bool8 IsOtherTrainer(u32, u8 *);
void sub_8040B8C(void);
void SetWildMonHeldItem(void);
@@ -576,5 +601,10 @@ u8 *sub_8040D08();
bool32 sub_8040D3C(u16 species, u8 *name, u8 language);
s8 sub_8040A54(struct Pokemon *, u8);
u16 GetMonEVCount(struct Pokemon *);
+u16 GetEvolutionTargetSpecies(struct Pokemon *, u8, u16);
+const struct CompressedSpritePalette *GetMonSpritePalStruct(struct Pokemon *);
+bool8 IsPokeSpriteNotFlipped(u16);
+u8 GetLevelUpMovesBySpecies(u16, u16 *);
+u8 TryIncrementMonLevel(struct Pokemon *);
#endif // GUARD_POKEMON_H
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 98f984564..2fbf9f700 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -1,7 +1,7 @@
#ifndef GUARD_POKEMON_ICON_H
#define GUARD_POKEMON_ICON_H
-u8 CreateMonIcon();
+u8 CreateMonIcon(u16, void (*callback)(struct Sprite *), s16, s16, bool8, u32);
u8 sub_809D3A4(u16 arg0, void (*)(struct Sprite *), int, u8 arg3, u32 arg4);
u16 GetUnownLetterByPersonality(u32);
u16 sub_809D4A8(u16);
@@ -10,5 +10,7 @@ void sub_809D51C(void);
void sub_809D580(u16);
void sub_809D608(u16);
void UpdateMonIconFrame(struct Sprite *sprite);
+void sub_809D824(struct Sprite *, u8);
+void sub_809D62C(struct Sprite *);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_menu.h b/include/pokemon_menu.h
index fc43a44c6..06f905577 100644
--- a/include/pokemon_menu.h
+++ b/include/pokemon_menu.h
@@ -1,15 +1,47 @@
#ifndef GUARD_POKEMON_MENU_H
#define GUARD_POKEMON_MENU_H
+#define POKEMENU_FIRST_FIELD_MOVE_ID 10
+
+enum
+{
+ POKEMENU_SUMMARY, // 0
+ POKEMENU_SWITCH, // 1
+ POKEMENU_ITEM, // 2
+ POKEMENU_CANCEL, // 3
+ POKEMENU_GIVE_ITEM, // 4
+ POKEMENU_TAKE_ITEM, // 5
+ POKEMENU_TAKE_MAIL, // 6
+ POKEMENU_MAIL, // 7
+ POKEMENU_READ_MAIL, // 8
+ POKEMENU_CANCEL_SUBMENU, // 9
+ POKEMENU_CUT, // 10
+ POKEMENU_FLASH, // 11
+ POKEMENU_ROCK_SMASH, // 12
+ POKEMENU_STRENGTH, // 13
+ POKEMENU_SURF, // 14
+ POKEMENU_FLY, // 15
+ POKEMENU_DIVE, // 16
+ POKEMENU_WATERFALL, // 17
+ POKEMENU_TELEPORT, // 18
+ POKEMENU_DIG, // 19
+ POKEMENU_SECRET_POWER, // 20
+ POKEMENU_MILK_DRINK, // 21
+ POKEMENU_SOFT_BOILED, // 22
+ POKEMENU_SWEET_SCENT, // 23
+};
+
+extern u8 gLastFieldPokeMenuOpened;
+extern void (*gUnknown_03005CE4)(void);
+
+void sub_808B5B4(u32 taskID);
void sub_8089A70(void);
-void sub_808A004();
-void sub_808AB90(void);
-void sub_808AB90(void); // unknown args
-void sub_808AB90(void);
+void sub_808A004(u8 taskID);
+void FieldCallback_Teleport(void);
void sub_808AD58(void);
void sub_808B020(void);
-void sub_808B0C0(u8);
+void sub_808B0C0(u8 taskID);
void sub_808B508(u8);
-void sub_808B564();
+void sub_808B564(void);
#endif // GUARD_POKEMON_MENU_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index bd4e7915b..9fe3436ef 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -2,5 +2,7 @@
#define GUARD_POKEMON_STORAGE_SYSTEM_H
void ResetPokemonStorageSystem(void);
+void BoxMonRestorePP(struct BoxPokemon *);
+void party_compaction(void);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/include/rom3.h b/include/rom3.h
index a45ec7dc4..81bb56df1 100644
--- a/include/rom3.h
+++ b/include/rom3.h
@@ -1,6 +1,8 @@
#ifndef GUARD_ROM3_H
#define GUARD_ROM3_H
+struct DisableStruct;
+
void sub_800B858(void);
void setup_poochyena_battle();
void sub_800B950(void);
@@ -8,58 +10,58 @@ void sub_800B9A8(void);
void sub_800BA78(void);
void sub_800BD54(void);
void sub_800BF28(void);
-void dp01_prepare_buffer_wireless_probably(u8 a, u16, u8 *c);
+void PrepareBufferDataTransferLink(u8 a, u16, u8 *c);
void sub_800C1A8(u8);
void sub_800C35C(void);
void sub_800C47C(u8);
void EmitGetAttributes(u8 a, u8 b, u8 c);
-void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c);
-void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e);
-void dp01_build_cmdbuf_x04_4_4_4(u8 a);
-void sub_800C704(u8, u8, u8);
-void dp01_build_cmdbuf_x06_a(u8 a, u8 b);
-void dp01_build_cmdbuf_x07_7_7_7(u8 a);
-void dp01_build_cmdbuf_x08_8_8_8(u8 a);
-void dp01_build_cmdbuf_x09_9_9_9(u8 a);
-void EmitFaintAnimation(u8 a);
-void dp01_build_cmdbuf_x0B_B_B_B(u8 a);
-void dp01_build_cmdbuf_x0C_C_C_C(u8 a);
-void dp01_build_cmdbuf_x0D_a(u8 a, u8 b);
-void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g);
+void Emitcmd1(u8 a, u8 b, u8 c);
+void EmitLoadPokeSprite(u8 a);
+void EmitSendOutPoke(u8, u8, u8);
+void EmitReturnPokeToBall(u8 a, u8 b);
+void EmitTrainerThrow(u8 a);
+void EmitTrainerSlide(u8 a);
+void EmitTrainerSlideBack(u8 a);
+void Emitcmd10(u8 a);
+void Emitcmd11(u8 a);
+void Emitcmd12(u8 a);
+void EmitBallThrow(u8 a, u8 b);
+void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g);
void EmitPrintString(u8 a, u16 b);
-void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c);
-void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d);
-void sub_800CBE0(u8 a, u8 *b);
-void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e);
-void dp01_build_cmdbuf_x17_17_17_17(u8 a);
-void EmitHealthBarUpdate(u8 a, s16 b);
-void EmitExpBarUpdate(u8 a, u8 b, s16 c);
+void EmitPrintStringPlayerOnly(u8 a, u16 stringID);
+void Emitcmd18(u8 a, u8 b, u16 c);
+void Emitcmd20(u8 a, u8 b, u8 c, u8 *d);
+void EmitOpenBag(u8 a, u8 *b);
+void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e);
+void Emitcmd23(u8 a);
+void EmitHealthBarUpdate(u8 a, u16 b);
+void EmitExpBarUpdate(u8 a, u8 b, u16 c);
void EmitStatusIconUpdate(u8 a, u32 b, u32 c);
void EmitStatusAnimation(u8 a, u8 b, u32 c);
void EmitStatusXor(u8 a, u8 b);
-void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8, u16, u8 *);
-void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c);
-void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c);
-void dp01_build_cmdbuf_x23_aa_0(u8 a, u16 b);
-void dp01_build_cmdbuf_x24_aa_0(u8 a, u16 b);
-void dp01_build_cmdbuf_x25_25_25_25(u8 a);
-void dp01_build_cmdbuf_x26_a(u8 a, u8 b);
-void dp01_build_cmdbuf_x27_27_27_27(u8 a);
-void dp01_build_cmdbuf_x28_28_28_28(u8 a);
+void Emitcmd29(u8, u16, u8 *);
+void Emitcmd33(u8 a, u8 b, u16 c);
+void Emitcmd34(u8 a, u8 b, u8 *c);
+void Emitcmd35(u8 a, u16 b);
+void Emitcmd36(u8 a, u16 b);
+void Emitcmd37(u8 a);
+void Emitcmd38(u8 a, u8 b);
+void Emitcmd39(u8 a);
+void Emitcmd40(u8 a);
void EmitHitAnimation(u8 a);
-void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a);
+void Emitcmd42(u8 a);
void EmitEffectivenessSound(u8 a, u16 b);
-void sub_800D074(u8 a, u16 b);
+void Emitcmd44(u8 a, u16 b);
void EmitFaintingCry(u8 a);
-void EmitBattleIntroSlide(u8 a, u8 b);
-void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a);
-void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c);
-void dp01_build_cmdbuf_x31_31_31_31(u8 a);
-void dp01_build_cmdbuf_x32_32_32_32(u8 a);
+void EmitIntroSlide(u8 a, u8 b);
+void EmitTrainerBallThrow(u8 a);
+void Emitcmd48(u8 a, u8 *b, u8 c);
+void Emitcmd49(u8 a);
+void Emitcmd50(u8 a);
void EmitSpriteInvisibility(u8 a, u8 b);
void EmitBattleAnimation(u8 a, u8 b, u16 c);
void EmitLinkStandbyMsg(u8 a, u8 b);
void EmitResetActionMoveSelection(u8 a, u8 b);
-void dp01_build_cmdbuf_x37_a(u8 a, u8 b);
+void Emitcmd55(u8 a, u8 b);
#endif // GUARD_ROM3_H
diff --git a/include/rom_8077ABC.h b/include/rom_8077ABC.h
index 11e94e1f5..94e535df5 100644
--- a/include/rom_8077ABC.h
+++ b/include/rom_8077ABC.h
@@ -4,10 +4,18 @@
#include "sprite.h"
#include "task.h"
+enum
+{
+ ANIM_BANK_ATK,
+ ANIM_BANK_DEF,
+ ANIM_BANK_ATK_PARTNER,
+ ANIM_BANK_DEF_PARTNER
+};
+
u8 sub_8077ABC(u8, u8);
u8 sub_8077E44(u8 slot, u16 species, u8 a3);
-u8 obj_id_for_side_relative_to_move(u8 side);
-void oamt_set_x3A_32(struct Sprite *sprite, void(*callback)(struct Sprite *));
+u8 GetAnimBankSpriteId(u8 side);
+void StoreSpriteCallbackInData6(struct Sprite *sprite, void(*callback)(struct Sprite *));
void sub_8078314(struct Sprite *sprite);
void sub_8078364(struct Sprite *sprite);
void sub_8078458(struct Sprite *sprite);
@@ -22,8 +30,8 @@ u8 GetBankIdentity(u8 slot);
u8 GetBankByPlayerAI(u8);
u8 GetBankByPlayerAI(u8);
u8 GetBankByPlayerAI(u8 state);
-u8 sub_8078874(u8);
-bool8 sub_8078874(u8);
+u8 AnimBankSpriteExists(u8);
+bool8 AnimBankSpriteExists(u8);
bool8 IsDoubleBattle();
u8 IsDoubleBattle(void);
bool8 IsDoubleBattle(void);
@@ -55,5 +63,6 @@ void sub_807A784(u8 taskId);
void sub_807A850(struct Task *task, u8 taskId);
void sub_807A8D4(struct Sprite *sprite);
void sub_807A960(struct Sprite *sprite);
+void sub_8078A34(struct Sprite *sprite);
#endif // GUARD_ROM_8077ABC_H
diff --git a/include/script.h b/include/script.h
index b3d888edf..5a899cf4a 100644
--- a/include/script.h
+++ b/include/script.h
@@ -11,7 +11,7 @@ struct ScriptContext
u8 stackDepth;
u8 mode;
u8 comparisonResult;
- u8 (*nativePtr)(void);
+ bool8 (*nativePtr)(void);
const u8 *scriptPtr;
const u8 *stack[20];
ScrCmdFunc *cmdTable;
@@ -23,9 +23,9 @@ struct ScriptContext
void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTableEnd);
u8 SetupBytecodeScript(struct ScriptContext *ctx, const u8 *ptr);
-void SetupNativeScript(struct ScriptContext *ctx, void *ptr);
+void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void));
void StopScript(struct ScriptContext *ctx);
-u8 RunScript(struct ScriptContext *ctx);
+u8 RunScriptCommand(struct ScriptContext *ctx);
u8 ScriptPush(struct ScriptContext *ctx, const u8 *ptr);
const u8 *ScriptPop(struct ScriptContext *ctx);
void ScriptJump(struct ScriptContext *ctx, u8 *ptr);
@@ -42,16 +42,12 @@ void ScriptContext1_SetupScript(const u8 *ptr);
void ScriptContext1_Stop(void);
void EnableBothScriptContexts(void);
void ScriptContext2_RunNewScript(const u8 *ptr);
-u8 *mapheader_get_tagged_pointer(u8 tag);
-void mapheader_run_script_by_tag(u8 tag);
-u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag);
void mapheader_run_script_with_tag_x1(void);
void mapheader_run_script_with_tag_x3(void);
void mapheader_run_script_with_tag_x5(void);
void mapheader_run_script_with_tag_x6(void);
bool8 mapheader_run_first_tag2_script_list_match(void);
void mapheader_run_first_tag4_script_list_match(void);
-u32 CalculateRamScriptChecksum(void);
void ClearRamScript(void);
bool8 InitRamScript(u8 *script, u16 scriptSize, u8 mapGroup, u8 mapNum, u8 objectId);
u8 *GetRamScript(u8 objectId, u8 *script);
diff --git a/include/script_menu.h b/include/script_menu.h
index cc5c442ec..dca8c26a7 100644
--- a/include/script_menu.h
+++ b/include/script_menu.h
@@ -1,33 +1,19 @@
#ifndef GUARD_SCRIPTMENU_H
#define GUARD_SCRIPTMENU_H
-struct MultichoiceListStruct
-{
- struct MenuAction *list;
- u8 count;
-};
+struct MenuAction;
extern const u8 *const gUnknown_083CE048[];
-bool8 sub_80B5054(u8 left, u8 top, u8 var3, u8 var4);
-bool8 sub_80B50B0(u8 left, u8 top, u8 var3, u8 var4, u8 var5);
-u16 GetStringWidthInTilesForScriptMenu(const u8 *str);
-void DrawMultichoiceMenu(u8, u8, u8, struct MenuAction *list, u8, u8);
-void sub_80B5230(u8, u8, u8, u8, u8, u8);
-void sub_80B52B4(u8);
+bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 var3, u8 var4);
+bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 var5);
bool8 Multichoice(u8 var1, u8 var2, u8 var3, u8 var4);
-void sub_80B53B4(u8, u8, u8, struct MenuAction *list, u8);
-bool8 yes_no_box(u8 var1, u8 var2);
-bool8 IsScriptActive(void); // unused
-void task_yes_no_maybe(u8);
-bool8 sub_80B5578(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount);
-void sub_80B5684(u8);
-bool8 TryCreatePCMenu(void);
-void CreatePCMenu(void);
-void sub_80B5838(void);
-void task_picbox(u8 taskId);
-bool8 sub_80B58C4(u16 var1, u8 var2, u8 var3);
-void *picbox_close(void);
-bool8 sub_80B59AC(void);
+bool8 ScriptMenu_YesNo(u8 var1, u8 var2);
+bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount);
+bool8 ScrSpecial_CreatePCMenu(void);
+void ScriptMenu_CreatePCMenu(void);
+void ScriptMenu_DisplayPCStartupPrompt(void);
+bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3);
+bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void);
#endif
diff --git a/include/script_movement.h b/include/script_movement.h
index e3cdc25b3..dc6d7e51b 100644
--- a/include/script_movement.h
+++ b/include/script_movement.h
@@ -1,8 +1,8 @@
#ifndef GUARD_SCRIPT_MOVEMENT_H
#define GUARD_SCRIPT_MOVEMENT_H
-bool8 exec_movement(u8, u8, u8, u8 *);
-bool8 sub_80A212C(u8, u8, u8);
+bool8 ScriptMovement_StartObjectMovementScript(u8, u8, u8, u8 *);
+bool8 ScriptMovement_IsObjectMovementFinished(u8, u8, u8);
void sub_80A2178(void);
#endif // GUARD_SCRIPT_MOVEMENT_H
diff --git a/include/script_pokemon_80C4.h b/include/script_pokemon_80C4.h
index 629980a2d..fab07994e 100644
--- a/include/script_pokemon_80C4.h
+++ b/include/script_pokemon_80C4.h
@@ -8,10 +8,10 @@ void ReducePlayerPartyToThree(void);
u8 sub_80C4D50(void);
void ShowContestWinner(void);
-void HealPlayerParty();
+void ScrSpecial_HealPlayerParty();
u8 ScriptGiveMon(u16, u8, u16, u32, u32, u8);
u8 ScriptGiveEgg(u16);
-void ScriptWildBattle(u16, u8, u16);
+void CreateScriptedWildMon(u16, u8, u16);
void ScriptSetMonMoveSlot(u8, u16, u8);
#endif
diff --git a/include/shop.h b/include/shop.h
index cca6091c9..b785ca764 100644
--- a/include/shop.h
+++ b/include/shop.h
@@ -1,6 +1,34 @@
#ifndef GUARD_SHOP_H
#define GUARD_SHOP_H
+enum
+{
+ MART_TYPE_0, // normal mart
+ MART_TYPE_1,
+ MART_TYPE_2,
+};
+
+// shop view window NPC info enum
+enum
+{
+ MAP_OBJ_ID,
+ X_COORD,
+ Y_COORD,
+ ANIM_NUM
+};
+
+struct MartInfo
+{
+ /* 0x0 */ void (* callback) (void);
+ /* 0x4 */ u16 *itemList;
+ /* 0x8 */ u8 itemCount; // how many unique items are there for sale?
+ /* 0x9 */ u8 cursor; // this shows the on-screen true index of the cursor and not the current item selected.
+ /* 0xA */ u8 numChoices; // how many options does the mart have? can be either 2 or 1 (BUY/SELL vs BUY)
+ /* 0xB */ u8 choicesAbove; // when your cursor is far down, there are choices that have scrolled up past the top. this is the count of that.
+ /* 0xC */ u8 martType; // 0-2. 0 is normal mart while 1-2 seem to be decor shops or non-stackable purchases in general.
+ /* 0xD */ u8 curItemCount; // if you are selling an item, this is the count of the current item stack you have.
+};
+
void sub_80B2E38(u8);
void HandleShopMenuQuit(u8);
void sub_80B2FA0(u8);
@@ -11,8 +39,10 @@ void BuyMenuDrawMapGraphics(void);
void sub_80B3764(int, int);
void sub_80B37EC(void);
void sub_80B40E8(u8);
-void CreatePokemartMenu(void *);
-void CreateDecorationShop1Menu(void *);
-void CreateDecorationShop2Menu(void *);
+void CreatePokemartMenu(u16 *);
+void CreateDecorationShop1Menu(u16 *);
+void CreateDecorationShop2Menu(u16 *);
+void sub_80B356C(void);
+void sub_80B368C(void);
#endif // GUARD_SHOP_H
diff --git a/include/songs.h b/include/songs.h
index 8cf7ee5e9..afd26d683 100644
--- a/include/songs.h
+++ b/include/songs.h
@@ -36,29 +36,29 @@ enum
/*0x1E*/ SE_N,
/*0x1F*/ SE_SEIKAI,
/*0x20*/ SE_HAZURE,
- SE_EXP,
- SE_JITE_PYOKO,
- SE_MU_PACHI,
- SE_TK_KASYA,
- SE_FU_ZAKU,
- SE_FU_ZAKU2,
- SE_FU_ZUZUZU,
- SE_RU_GASHIN,
- SE_RU_GASYAN,
- SE_RU_BARI,
- SE_RU_HYUU,
- SE_KI_GASYAN,
- SE_TK_WARPIN,
- SE_TK_WARPOUT,
- SE_TU_SAA,
- SE_HI_TURUN,
- SE_TRACK_MOVE,
- SE_TRACK_STOP,
- SE_TRACK_HAIK,
- SE_TRACK_DOOR,
- SE_MOTER,
- SE_CARD,
- SE_SAVE,
+ /*0x21*/ SE_EXP,
+ /*0x22*/ SE_JITE_PYOKO,
+ /*0x23*/ SE_MU_PACHI,
+ /*0x24*/ SE_TK_KASYA,
+ /*0x25*/ SE_FU_ZAKU,
+ /*0x26*/ SE_FU_ZAKU2,
+ /*0x27*/ SE_FU_ZUZUZU,
+ /*0x28*/ SE_RU_GASHIN,
+ /*0x29*/ SE_RU_GASYAN,
+ /*0x2A*/ SE_RU_BARI,
+ /*0x2B*/ SE_RU_HYUU,
+ /*0x2C*/ SE_KI_GASYAN,
+ /*0x2D*/ SE_TK_WARPIN,
+ /*0x2E*/ SE_TK_WARPOUT,
+ /*0x2F*/ SE_TU_SAA,
+ /*0x30*/ SE_HI_TURUN,
+ /*0x31*/ SE_TRACK_MOVE,
+ /*0x32*/ SE_TRACK_STOP,
+ /*0x33*/ SE_TRACK_HAIK,
+ /*0x34*/ SE_TRACK_DOOR,
+ /*0x35*/ SE_MOTER,
+ /*0x36*/ SE_CARD,
+ /*0x37*/ SE_SAVE,
/*0x38*/ SE_KON,
/*0x39*/ SE_KON2,
/*0x3A*/ SE_KON3,
@@ -105,9 +105,9 @@ enum
SE_C_PASI,
SE_C_SYU,
SE_C_PIKON,
- SE_REAPOKE,
- SE_OP_BASYU,
- SE_BT_START,
+ /*0x66*/ SE_REAPOKE,
+ /*0x67*/ SE_OP_BASYU,
+ /*0x68*/ SE_BT_START,
SE_DENDOU,
SE_JIHANKI,
SE_TAMA,
@@ -131,20 +131,20 @@ enum
/*0x7D*/ SE_W145B,
/*0x7E*/ SE_W145C,
/*0x7F*/ SE_W240,
- SE_W015,
- SE_W081,
- SE_W081B,
- SE_W088,
- SE_W016,
- SE_W016B,
- SE_W003,
- SE_W104,
- SE_W013,
- SE_W196,
- SE_W086,
- SE_W004,
- SE_W025,
- SE_W025B,
+ /*0x80*/ SE_W015,
+ /*0x81*/ SE_W081,
+ /*0x82*/ SE_W081B,
+ /*0x83*/ SE_W088,
+ /*0x84*/ SE_W016,
+ /*0x85*/ SE_W016B,
+ /*0x86*/ SE_W003,
+ /*0x87*/ SE_W104,
+ /*0x88*/ SE_W013,
+ /*0x89*/ SE_W196,
+ /*0x8A*/ SE_W086,
+ /*0x8B*/ SE_W004,
+ /*0x8C*/ SE_W025,
+ /*0x8D*/ SE_W025B,
SE_W152,
SE_W026,
SE_W172,
@@ -185,29 +185,29 @@ enum
SE_W071B,
SE_W071,
SE_W103,
- SE_W062,
- SE_W062B,
- SE_W048,
- SE_W187,
- SE_W118,
- SE_W155,
- SE_W122,
- SE_W060,
- SE_W185,
- SE_W014,
- SE_W043,
- SE_W207,
- SE_W207B,
- SE_W215,
- SE_W109,
- SE_W173,
- SE_W280,
- SE_W202,
- SE_W060B,
- SE_W076,
- SE_W080,
- SE_W100,
- SE_W107,
+ /*0xB6*/ SE_W062,
+ /*0xB7*/ SE_W062B,
+ /*0xB8*/ SE_W048,
+ /*0xB9*/ SE_W187,
+ /*0xBA*/ SE_W118,
+ /*0xBB*/ SE_W155,
+ /*0xBC*/ SE_W122,
+ /*0xBD*/ SE_W060,
+ /*0xBE*/ SE_W185,
+ /*0xBF*/ SE_W014,
+ /*0xC0*/ SE_W043,
+ /*0xC1*/ SE_W207,
+ /*0xC2*/ SE_W207B,
+ /*0xC3*/ SE_W215,
+ /*0xC4*/ SE_W109,
+ /*0xC5*/ SE_W173,
+ /*0xC6*/ SE_W280,
+ /*0xC7*/ SE_W202,
+ /*0xC8*/ SE_W060B,
+ /*0xC9*/ SE_W076,
+ /*0xCA*/ SE_W080,
+ /*0xCB*/ SE_W100,
+ /*0xCC*/ SE_W107,
SE_W166,
SE_W129,
SE_W115,
@@ -274,38 +274,38 @@ enum
/*0x171*/ BGM_ME_BACHI,
/*0x172*/ BGM_FANFA4,
/*0x173*/ BGM_FANFA5,
- BGM_ME_WAZA,
- BGM_BIJYUTU,
- BGM_DOORO_X4,
- BGM_FUNE_KAN,
- BGM_ME_SHINKA,
- BGM_SHINKA,
- BGM_ME_WASURE,
- BGM_SYOUJOEYE,
- BGM_BOYEYE,
- BGM_DAN02,
- BGM_MACHI_S3,
- BGM_ODAMAKI,
- BGM_B_TOWER,
- BGM_SWIMEYE,
- BGM_DAN03,
- BGM_ME_KINOMI,
- BGM_ME_TAMA,
- BGM_ME_B_BIG,
- BGM_ME_B_SMALL,
- BGM_ME_ZANNEN,
- BGM_BD_TIME,
- BGM_TEST1,
- BGM_TEST2,
- BGM_TEST3,
- BGM_TEST4,
- BGM_TEST,
- BGM_GOMACHI0,
- BGM_GOTOWN,
- BGM_POKECEN,
- BGM_NEXTROAD,
- BGM_GRANROAD,
- BGM_CYCLING,
+ /*0x174*/ BGM_ME_WAZA,
+ /*0x175*/ BGM_BIJYUTU,
+ /*0x176*/ BGM_DOORO_X4,
+ /*0x177*/ BGM_FUNE_KAN,
+ /*0x178*/ BGM_ME_SHINKA,
+ /*0x179*/ BGM_SHINKA,
+ /*0x17A*/ BGM_ME_WASURE,
+ /*0x17B*/ BGM_SYOUJOEYE,
+ /*0x17C*/ BGM_BOYEYE,
+ /*0x17D*/ BGM_DAN02,
+ /*0x17E*/ BGM_MACHI_S3,
+ /*0x17F*/ BGM_ODAMAKI,
+ /*0x180*/ BGM_B_TOWER,
+ /*0x181*/ BGM_SWIMEYE,
+ /*0x182*/ BGM_DAN03,
+ /*0x183*/ BGM_ME_KINOMI,
+ /*0x184*/ BGM_ME_TAMA,
+ /*0x185*/ BGM_ME_B_BIG,
+ /*0x186*/ BGM_ME_B_SMALL,
+ /*0x187*/ BGM_ME_ZANNEN,
+ /*0x188*/ BGM_BD_TIME,
+ /*0x189*/ BGM_TEST1,
+ /*0x18A*/ BGM_TEST2,
+ /*0x18B*/ BGM_TEST3,
+ /*0x18C*/ BGM_TEST4,
+ /*0x18D*/ BGM_TEST,
+ /*0x18E*/ BGM_GOMACHI0,
+ /*0x18F*/ BGM_GOTOWN,
+ /*0x190*/ BGM_POKECEN,
+ /*0x191*/ BGM_NEXTROAD,
+ /*0x192*/ BGM_GRANROAD,
+ /*0x193*/ BGM_CYCLING,
BGM_FRIENDLY,
BGM_MISHIRO,
BGM_TOZAN,
diff --git a/include/species.h b/include/species.h
index e33481afd..9ab0565cb 100644
--- a/include/species.h
+++ b/include/species.h
@@ -1,7 +1,8 @@
#ifndef GUARD_SPECIES_H
#define GUARD_SPECIES_H
-enum {
+enum
+{
SPECIES_NONE, // 0x000
SPECIES_BULBASAUR, // 0x001
SPECIES_IVYSAUR, // 0x002
diff --git a/include/sprite.h b/include/sprite.h
index 733231eb5..0d84c8127 100644
--- a/include/sprite.h
+++ b/include/sprite.h
@@ -204,14 +204,14 @@ struct Sprite
/*0x3A*/ s16 data6;
/*0x3C*/ s16 data7;
- /*0x3E*/ u16 inUse:1;
- u16 coordOffsetEnabled:1;
- u16 invisible:1;
- u16 flags_3:1;
- u16 flags_4:1;
- u16 flags_5:1;
- u16 flags_6:1;
- u16 flags_7:1;
+ /*0x3E*/ u16 inUse:1; //1
+ u16 coordOffsetEnabled:1; //2
+ u16 invisible:1; //4
+ u16 flags_3:1; //8
+ u16 flags_4:1; //0x10
+ u16 flags_5:1; //0x20
+ u16 flags_6:1; //0x40
+ u16 flags_7:1; //0x80
/*0x3F*/ u16 hFlip:1;
u16 vFlip:1;
u16 animBeginning:1;
@@ -299,4 +299,6 @@ u8 SpriteTileAllocBitmapOp(u16 bit, u8 op);
extern const union AffineAnimCmd *const gDummySpriteAffineAnimTable[];
+extern const struct SpriteTemplate gDummySpriteTemplate;
+
#endif // GUARD_SPRITE_H
diff --git a/include/start_menu.h b/include/start_menu.h
index 5169b3bf0..d3f77dc99 100644
--- a/include/start_menu.h
+++ b/include/start_menu.h
@@ -5,7 +5,7 @@
void CreateStartMenuTask(void (*func)(u8));
void sub_80712B4(u8 taskId);
void sub_8071310(void);
-void InitSaveDialog(void);
+void ScrSpecial_DoSaveDialog(void);
void sub_8071B28(void);
#endif // GUARD_STARTER_CHOOSE_H
diff --git a/include/strings2.h b/include/strings2.h
index 600bb2d31..8052c6c4a 100644
--- a/include/strings2.h
+++ b/include/strings2.h
@@ -319,4 +319,8 @@ extern const u8 gOtherText_OK[];
// wallclock
extern const u8 gOtherText_CorrectTimePrompt[];
+#if GERMAN
+extern const u8 deuOtherText_ForgotAndLearned[];
+#endif
+
#endif // GUARD_STRINGS2_H
diff --git a/include/text.h b/include/text.h
index 99987d2c3..ebc4ebe7e 100644
--- a/include/text.h
+++ b/include/text.h
@@ -2,6 +2,7 @@
#define GUARD_TEXT_H
#define CHAR_SPACE 0x00
+#define CHAR_SONG_WORD_SEPARATOR 0x37 // separates words in the bard song. Not sure if it's used for anything else
#define CHAR_0 0xA1
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
@@ -97,35 +98,35 @@ struct WindowConfig
struct Window
{
- u8 textMode;
- u8 fontNum;
- u8 language;
- u8 foregroundColor;
- u8 backgroundColor;
- u8 shadowColor;
- u8 paletteNum;
- u8 tilemapLeft;
- u8 tilemapTop;
- u8 width;
- u8 height;
- u8 win_field_B;
- u8 win_field_C;
- u8 delayCounter;
- u8 spacing;
- u8 win_field_F;
- u8 cursorX;
- u8 cursorY;
- u8 left;
- u16 top;
- u16 state;
- u16 downArrowCounter;
- u16 tileDataStartOffset;
- u16 tileDataOffset;
- u16 textIndex;
- const u8 *text;
- u8 *tileData;
- u16 *tilemap;
- struct WindowConfig *config;
+ /*0x00*/ u8 textMode;
+ /*0x01*/ u8 fontNum;
+ /*0x02*/ u8 language;
+ /*0x03*/ u8 foregroundColor;
+ /*0x04*/ u8 backgroundColor;
+ /*0x05*/ u8 shadowColor;
+ /*0x06*/ u8 paletteNum;
+ /*0x07*/ u8 tilemapLeft;
+ /*0x08*/ u8 tilemapTop;
+ /*0x09*/ u8 width;
+ /*0x0A*/ u8 height;
+ /*0x0B*/ u8 win_field_B;
+ /*0x0C*/ u8 win_field_C;
+ /*0x0D*/ u8 delayCounter;
+ /*0x0E*/ u8 spacing;
+ /*0x0F*/ u8 win_field_F;
+ /*0x10*/ u8 cursorX;
+ /*0x11*/ u8 cursorY;
+ /*0x12*/ u8 left;
+ /*0x14*/ u16 top; // padded to 0x14
+ /*0x16*/ u16 state;
+ /*0x18*/ u16 downArrowCounter;
+ /*0x1A*/ u16 tileDataStartOffset;
+ /*0x1C*/ u16 tileDataOffset;
+ /*0x1E*/ u16 textIndex;
+ /*0x20*/ const u8 *text;
+ /*0x24*/ u8 *tileData;
+ /*0x28*/ u16 *tilemap;
+ /*0x2C*/ const struct WindowConfig *config;
};
extern vu16 *const gBGControlRegs[];
@@ -202,6 +203,7 @@ extern u8 gStringVar1[];
extern u8 gStringVar2[];
extern u8 gStringVar3[];
extern u8 gStringVar4[];
+extern u8 gTileBuffer[];
void LoadFontDefaultPalette(const struct WindowConfig *winConfig);
void SetUpWindowConfig(const struct WindowConfig *winConfig);
@@ -244,8 +246,8 @@ u8 sub_8004D38(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 l
u8 sub_8004DB0(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top, u16 a6);
u8 sub_8004E24(struct Window *win);
void sub_8004E28(struct Window *win, u8 *foreground, u8 *background, u8 *shadow);
-void sub_8004E3C(struct WindowConfig *winConfig, u8 *tileData, const u8 *text);
-u8 GetStringWidthGivenWindowConfig(struct WindowConfig *winConfig, const u8 *s);
+void sub_8004E3C(const struct WindowConfig *winConfig, u8 *tileData, const u8 *text);
+u8 GetStringWidthGivenWindowConfig(const struct WindowConfig *winConfig, const u8 *s);
void ConvertInternationalString(u8 *s, u8 language);
void StripExtCtrlCodes(u8 *str);
s32 StringCompareWithoutExtCtrlCodes(const u8 *str1, const u8 *str2);
diff --git a/include/trade.h b/include/trade.h
new file mode 100644
index 000000000..1dd4b53bd
--- /dev/null
+++ b/include/trade.h
@@ -0,0 +1,64 @@
+
+#ifndef GUARD_TRADE_H
+#define GUARD_TRADE_H
+
+struct TradeEwramSubstruct2 {
+ /*0x0000*/ u8 filler_0000;
+ /*0x0004*/ struct Window window;
+ /*0x0034*/ u8 textWindowBaseTileNum;
+ /*0x0038*/ struct Pokemon pokemon;
+ /*0x009c*/ u8 unk_009c;
+ /*0x009d*/ u8 unk_009d;
+ /*0x009e*/ u16 linkData[10];
+ /*0x00b2*/ u8 unk_00b2;
+ /*0x00b3*/ u8 unk_00b3;
+ /*0x00b4*/ u16 unk_00b4;
+ /*0x00b6*/ u16 unk_00b6;
+ // Sprite indices
+ /*0x00b8*/ u8 pokePicSpriteIdxs[2];
+ /*0x00ba*/ u8 unk_00ba;
+ /*0x00bb*/ u8 unk_00bb;
+ /*0x00bc*/ u8 unk_00bc;
+ /*0x00bd*/ u8 unk_00bd;
+ // Timer
+ /*0x00c0*/ u32 unk_00c0;
+ // Scene index
+ /*0x00c4*/ u16 unk_00c4;
+ /*0x00c6*/ u8 filler_00c6[0x3c];
+ /*0x0102*/ u8 unk_0102;
+ /*0x0103*/ u8 unk_0103;
+ /*0x0104*/ u16 unk_0104;
+ /*0x0106*/ u16 unk_0106;
+ /*0x0108*/ u16 unk_0108;
+ /*0x010a*/ u16 unk_010a;
+ /*0x010c*/ u16 unk_010c;
+ /*0x010e*/ s16 unk_010e;
+ /*0x0110*/ s16 bg1vofs;
+ /*0x0112*/ s16 bg1hofs;
+ /*0x0114*/ s16 bg2vofs;
+ /*0x0116*/ s16 bg2hofs;
+ /*0x0118*/ u16 unk_0118;
+ /*0x011a*/ u16 unk_011a;
+ /*0x011c*/ u16 unk_011c;
+ /*0x011e*/ u8 isLinkTrade;
+ /*0x0120*/ u16 tradeSpecies[2];
+ /*0x0124*/ u16 unk_0124;
+};
+
+extern struct TradeEwramSubstruct2 *gUnknown_03004828;
+extern const u16 gUnknown_0820C9F8[][16];
+extern const u32 gUnknown_0820CA98[];
+extern const u16 gUnknown_0820F798[];
+
+void sub_8047CD8(void);
+u16 sub_804DB2C(void);
+void sub_804DB68(void);
+void sub_804E174(void);
+const u8 gOtherText_MaleSymbol3[2];
+const u8 gOtherText_FemaleSymbol3[2];
+const u8 gOtherText_GenderlessSymbol[2];
+
+void sub_804E22C(void);
+u16 sub_804D89C(void);
+
+#endif //POKERUBY_TRADE_H
diff --git a/include/trader.h b/include/trader.h
index 24a9f2a07..832a04b65 100644
--- a/include/trader.h
+++ b/include/trader.h
@@ -1,6 +1,7 @@
#ifndef GUARD_TRADER_H
#define GUARD_TRADER_H
-void sub_81099CC(void);
+void TraderSetup(void);
+void sub_8109A20(void);
#endif // GUARD_TRADER_H
diff --git a/include/trainer_see.h b/include/trainer_see.h
index b80a41641..de96dcd3a 100644
--- a/include/trainer_see.h
+++ b/include/trainer_see.h
@@ -7,29 +7,13 @@
bool8 CheckTrainers(void);
bool8 CheckTrainer(u8);
u8 TrainerCanApproachPlayer(struct MapObject *);
-bool8 IsTrainerInRangeSouth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y);
-bool8 IsTrainerInRangeNorth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y);
-bool8 IsTrainerInRangeWest(struct MapObject *trainerObj, s16 vision, s16 x, s16 y);
-bool8 IsTrainerInRangeEast(struct MapObject *trainerObj, s16 vision, s16 x, s16 y);
+
bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *, u8, u8);
void sub_80842C8(struct MapObject *, u8);
void sub_80842FC(void (*func)(u8));
void RunTrainerSeeFuncList(u8);
-u8 sub_8084394(void);
-s8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-s8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
-void sub_80846E4(u8 taskId);
void sub_8084794(struct MapObject *var);
-void sub_80847C8(void);
+void ScrSpecial_EndTrainerApproach(void);
void sub_80847D8(u8);
void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3);
void objc_exclamation_mark_probably(struct Sprite *sprite);
diff --git a/include/unknown_task.h b/include/unknown_task.h
index dc07767d6..d7ac63931 100644
--- a/include/unknown_task.h
+++ b/include/unknown_task.h
@@ -1,14 +1,24 @@
#ifndef GUARD_UNKNOWN_TASK_H
#define GUARD_UNKNOWN_TASK_H
+struct UnknownTaskStruct
+{
+ volatile void *dest;
+ u32 control;
+ u8 unk8;
+ u8 unk9;
+};
+
void remove_some_task(void);
void remove_some_task(void);
void dp12_8087EA4(void);
void dp12_8087EA4(void);
-void sub_80895F8(u32 i, u32 i1, u32 i2);
-void sub_80895F8();
+//void sub_80895F8(u32 i, u32 i1, u32 i2);
+//void sub_80895F8();
+void sub_80895F8(struct UnknownTaskStruct unk);
void sub_8089668(void);
void sub_8089668();
-void sub_8089944(int i, int i1, int i2, int i3, int i4, int i5, int i6);
+//void sub_8089944(int i, int i1, int i2, int i3, int i4, int i5, int i6);
+u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7);
#endif // GUARD_UNKNOWN_TASK_H
diff --git a/include/use_pokeblock.h b/include/use_pokeblock.h
deleted file mode 100644
index f34857cf1..000000000
--- a/include/use_pokeblock.h
+++ /dev/null
@@ -1,10 +0,0 @@
-//
-// Created by Scott Norton on 5/31/17.
-//
-
-#ifndef POKERUBY_USE_POKEBLOCK_H
-#define POKERUBY_USE_POKEBLOCK_H
-
-void sub_8136130(struct Pokeblock *, MainCallback);
-
-#endif //POKERUBY_USE_POKEBLOCK_H
diff --git a/include/util.h b/include/util.h
index 1851c2e82..87fa4aecc 100644
--- a/include/util.h
+++ b/include/util.h
@@ -9,5 +9,7 @@ extern const u32 gBitTable[];
u8 CreateInvisibleSpriteWithCallback(void (*)(struct Sprite *));
void StoreWordInTwoHalfwords(u16 *, u32);
void LoadWordFromTwoHalfwords(u16 *, u32 *);
+u16 CalcCRC16(u8 *data, int length);
+void DoBgAffineSet(struct BgAffineDstData *dest, u32 texX, u32 texY, s16 scrX, s16 scrY, s16 sx, s16 sy, u16 alpha);
#endif // GUARD_UTIL_H
diff --git a/include/vars.h b/include/vars.h
index efbb462a4..179fd6f93 100644
--- a/include/vars.h
+++ b/include/vars.h
@@ -45,6 +45,7 @@
#define VAR_0x4095 0x4095
#define VAR_0x4097 0x4097
#define VAR_0x409a 0x409a
+#define VAR_WEATHER_INSTITUTE_CLEARED 0x040B3
#define VAR_PORTHOLE 0x40B4
#define VAR_0x40BC 0x40BC
diff --git a/include/wild_encounter.h b/include/wild_encounter.h
index a4485b08d..d4b343126 100644
--- a/include/wild_encounter.h
+++ b/include/wild_encounter.h
@@ -28,12 +28,12 @@ extern struct WildPokemonHeader gWildMonHeaders[];
void DisableWildEncounters(bool8 disabled);
bool8 StandardWildEncounter(u16 a, u16 b);
-void RockSmashWildEncounter(void);
+void ScrSpecial_RockSmashWildEncounter(void);
bool8 SweetScentWildEncounter(void);
-bool8 GetFishingWildMonListHeader(void);
+bool8 DoesCurrentMapHaveFishingMons(void);
void FishingWildEncounter(u8 rod);
u16 GetLocalWildMon(bool8 *isWaterMon);
-u16 GetMirageIslandMon(void);
+u16 GetLocalWaterMon(void);
bool8 UpdateRepelCounter(void);
#endif // GUARD_WILD_ENCOUNTER_H
diff --git a/ld_script.txt b/ld_script.txt
index 3e12b279d..5e38556fe 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -25,7 +25,7 @@ SECTIONS {
<BSS>
/* .bss.code starts at 0x3000F60 */
- src/m4a_2.o(.bss.code);
+ src/libs/m4a_2.o(.bss.code);
/* COMMON starts at 0x3001760 */
<COMMON>
@@ -39,241 +39,225 @@ SECTIONS {
ALIGN(4)
{
asm/crt0.o(.text);
- src/main.o(.text);
- src/sprite.o(.text);
- src/text.o(.text);
- src/string_util.o(.text);
- src/link.o(.text);
- src/rtc.o(.text);
- src/main_menu.o(.text);
+ src/engine/main.o(.text);
+ src/engine/sprite.o(.text);
+ src/engine/text.o(.text);
+ src/engine/string_util.o(.text);
+ src/engine/link.o(.text);
+ src/engine/rtc.o(.text);
+ src/engine/main_menu.o(.text);
src/rom3.o(.text);
- src/decompress.o(.text);
+ src/engine/decompress.o(.text);
asm/battle_1.o(.text);
src/rom_800D42C.o(.text);
asm/battle_1.o(.text_800DC24);
- src/battle_2.o(.text);
+ src/battle/battle_2.o(.text);
asm/battle_2.o(.text);
- asm/battle_3.o(.text);
- asm/battle_4.o(.text);
- asm/battle_5.o(.text);
- src/battle_6.o(.text);
- src/battle_7.o(.text);
- src/battle_8.o(.text);
+ src/battle/battle_3.o(.text);
+ src/battle/battle_4.o(.text);
+ src/battle/battle_controller_player.o(.text);
+ src/battle/battle_7.o(.text);
+ src/battle/battle_controller_opponent.o(.text);
asm/battle_9.o(.text);
- src/battle_10.o(.text);
- src/pokemon_1.o(.text);
- src/calculate_base_damage.o(.text);
- src/pokemon_2.o(.text);
+ src/battle/battle_controller_linkopponent.o(.text);
+ src/pokemon/pokemon_1.o(.text);
+ src/battle/calculate_base_damage.o(.text);
+ src/pokemon/pokemon_2.o(.text);
asm/pokemon_item_effect.o(.text);
- src/pokemon_3.o(.text);
+ src/pokemon/pokemon_3.o(.text);
src/de_rom_8040FE0.o(.text);
- src/trig.o(.text);
- src/rng.o(.text);
- src/util.o(.text);
- src/blend_palette.o(.text);
- src/daycare.o(.text);
- asm/daycare.o(.text);
- src/egg_hatch.o(.text);
- asm/egg_hatch.o(.text);
- src/battle_interface.o(.text);
- src/smokescreen.o(.text);
- src/pokeball.o(.text);
- src/load_save.o(.text);
- asm/trade.o(.text);
- src/trade.o(.text);
- asm/trade.o(.text.sub_804A9F4);
- src/trade.o(.text.sub_804DAD4);
- asm/trade.o(.text.sub_804DB2C);
- asm/berry_blender.o(.text);
- src/play_time.o(.text);
- src/new_game.o(.text);
- src/rom4.o(.text);
- src/fieldmap.o(.text);
- src/metatile_behavior.o(.text);
- src/field_camera.o(.text);
- src/field_door.o(.text);
- src/field_player_avatar.o(.text);
- src/field_map_obj.o(.text);
- asm/field_map_obj.o(.text);
- src/field_map_obj.o(.text_fmocb2_c);
- src/field_ground_effect.o(.text);
- asm/field_ground_effect.o(.text);
- src/field_map_obj_helpers.o(.text);
- src/field_message_box.o(.text);
- src/map_obj_lock.o(.text);
- src/text_window.o(.text);
- src/script.o(.text);
- src/scrcmd.o(.text);
- src/field_control_avatar.o(.text);
- src/event_data.o(.text);
- src/coord_event_weather.o(.text);
- src/field_tasks.o(.text);
- src/clock.o(.text);
- src/reset_rtc_screen.o(.text);
+ src/engine/trig.o(.text);
+ src/engine/rng.o(.text);
+ src/engine/util.o(.text);
+ src/engine/blend_palette.o(.text);
+ src/field/daycare.o(.text);
+ src/scene/egg_hatch.o(.text);
+ src/battle/battle_interface.o(.text);
+ src/battle/smokescreen.o(.text);
+ src/battle/pokeball.o(.text);
+ src/engine/load_save.o(.text);
+ src/engine/trade.o(.text);
+ src/scene/berry_blender.o(.text);
+ src/engine/play_time.o(.text);
+ src/scene/new_game.o(.text);
+ src/field/overworld.o(.text);
+ src/field/fieldmap.o(.text);
+ src/field/metatile_behavior.o(.text);
+ src/field/field_camera.o(.text);
+ src/field/field_door.o(.text);
+ src/field/field_player_avatar.o(.text);
+ src/field/field_map_obj.o(.text);
+ src/field/field_ground_effect.o(.text);
+ src/field/field_map_obj_helpers.o(.text);
+ src/field/field_message_box.o(.text);
+ src/field/map_obj_lock.o(.text);
+ src/engine/text_window.o(.text);
+ src/engine/script.o(.text);
+ src/field/scrcmd.o(.text);
+ src/field/field_control_avatar.o(.text);
+ src/field/event_data.o(.text);
+ src/field/coord_event_weather.o(.text);
+ src/field/field_tasks.o(.text);
+ src/engine/clock.o(.text);
+ src/engine/reset_rtc_screen.o(.text);
asm/party_menu.o(.text);
- src/party_menu.o(.text);
+ src/field/party_menu.o(.text);
asm/party_menu.o(.text_8070968);
- src/start_menu.o(.text);
- src/menu.o(.text);
- src/tileset_anim.o(.text);
- src/palette.o(.text);
- src/sound.o(.text);
- src/battle_anim.o(.text);
+ src/field/start_menu.o(.text);
+ src/engine/menu.o(.text);
+ src/engine/tileset_anim.o(.text);
+ src/engine/palette.o(.text);
+ src/engine/sound.o(.text);
+ src/battle/battle_anim.o(.text);
src/rom_8077ABC.o(.text);
- src/task.o(.text);
- asm/reshow_battle_screen.o(.text);
- asm/battle_anim_807B69C.o(.text);
- src/title_screen.o(.text);
- src/field_weather.o(.text);
+ src/engine/task.o(.text);
+ src/battle/reshow_battle_screen.o(.text);
+ src/battle/battle_anim_807B69C.o(.text);
+ src/scene/title_screen.o(.text);
+ src/field/field_weather.o(.text);
asm/field_weather.o(.text);
- src/field_fadetransition.o(.text);
- asm/field_fadetransition.o(.text);
- src/field_screen_effect.o(.text);
- src/battle_setup.o(.text);
- asm/cable_club.o(.text);
- src/cable_club.o(.text);
- asm/cable_club.o(.text_80830E4);
- src/mori_debug_menu.o(.text);
- src/trainer_see.o(.text);
- src/wild_encounter.o(.text);
- src/field_effect.o(.text);
+ src/field/field_fadetransition.o(.text);
+ src/field/field_screen_effect.o(.text);
+ src/battle/battle_setup.o(.text);
+ src/engine/cable_club.o(.text);
+ src/debug/mori_debug_menu.o(.text);
+ src/field/trainer_see.o(.text);
+ src/field/wild_encounter.o(.text);
+ src/field/field_effect.o(.text);
src/unknown_task.o(.text);
- asm/pokemon_menu.o(.text);
- src/option_menu.o(.text);
- src/pokedex.o(.text);
- src/trainer_card.o(.text);
- src/save_menu_util.o(.text);
- src/battle_party_menu.o(.text);
+ src/pokemon/pokemon_menu.o(.text);
+ src/engine/option_menu.o(.text);
+ src/pokemon/pokedex.o(.text);
+ src/engine/trainer_card.o(.text);
+ src/engine/save_menu_util.o(.text);
+ src/battle/battle_party_menu.o(.text);
asm/pokemon_storage_system.o(.text);
- src/pokemon_storage_system.o(.text);
+ src/pokemon/pokemon_storage_system.o(.text);
asm/pokemon_storage_system.o(.text_8098A38);
- src/pokemon_icon.o(.text);
+ src/pokemon/pokemon_icon.o(.text);
asm/pokemon_summary_screen.o(.text);
- src/pokemon_summary_screen.o(.text);
+ src/pokemon/pokemon_summary_screen.o(.text);
asm/pokemon_summary_screen.o(.text_80A0958);
- src/script_movement.o(.text);
- src/fldeff_cut.o(.text);
- src/mail_data.o(.text);
- src/map_name_popup.o(.text);
- src/item_menu.o(.text);
- src/battle_anim_80A7E7C.o(.text);
- src/item.o(.text);
- src/matsuda_debug_menu.o(.text);
+ src/field/script_movement.o(.text);
+ src/field/fldeff_cut.o(.text);
+ src/pokemon/mail_data.o(.text);
+ src/field/map_name_popup.o(.text);
+ src/field/item_menu.o(.text);
+ src/battle/battle_anim_80A7E7C.o(.text);
+ src/field/item.o(.text);
+ src/debug/matsuda_debug_menu.o(.text);
asm/contest.o(.text);
- src/shop.o(.text);
- asm/shop.o(.text);
- src/berry.o(.text);
- src/script_menu.o(.text);
- src/naming_screen.o(.text);
- src/money.o(.text);
+ src/field/shop.o(.text);
+ src/field/berry.o(.text);
+ src/field/script_menu.o(.text);
+ src/engine/naming_screen.o(.text);
+ src/field/money.o(.text);
asm/contest_effect.o(.text);
- src/record_mixing.o(.text);
- src/sound_check_menu.o(.text);
- src/secret_base.o(.text);
+ src/engine/record_mixing.o(.text);
+ src/debug/sound_check_menu.o(.text);
+ src/field/secret_base.o(.text);
asm/secret_base.o(.text_80BC1D0);
- src/tv.o(.text);
+ src/field/tv.o(.text);
asm/contest_link_80C2020.o(.text);
src/script_pokemon_util_80C4BF0.o(.text);
- src/field_poison.o(.text);
- src/pokemon_size_record.o(.text);
+ src/field/field_poison.o(.text);
+ src/pokemon/pokemon_size_record.o(.text);
asm/fldeff_80C5CD4.o(.text);
- src/field_special_scene.o(.text);
- src/rotating_gate.o(.text);
- src/safari_zone.o(.text);
+ src/field/field_special_scene.o(.text);
+ src/field/rotating_gate.o(.text);
+ src/field/safari_zone.o(.text);
asm/contest_link_80C857C.o(.text);
- src/contest_link_80C857C.o(.text);
- src/item_use.o(.text);
+ src/battle/contest_link_80C857C.o(.text);
+ src/field/item_use.o(.text);
asm/battle_anim_80CA710.o(.text);
- src/bike.o(.text);
+ src/field/bike.o(.text);
asm/easy_chat.o(.text);
- src/easy_chat.o(.text);
+ src/field/easy_chat.o(.text);
asm/pokenav.o(.text);
- src/pokenav.o(.text);
+ src/field/pokenav.o(.text);
asm/pokenav.o(.text_80F708C);
- src/mon_markings.o(.text);
- src/mauville_old_man.o(.text);
- asm/mauville_old_man.o(.text);
- src/mail.o(.text);
- src/menu_helpers.o(.text);
+ src/pokemon/mon_markings.o(.text);
+ src/field/mauville_man.o(.text);
+ src/pokemon/mail.o(.text);
+ src/field/menu_helpers.o(.text);
src/script_pokemon_util_80F99CC.o(.text);
- src/dewford_trend.o(.text);
- src/heal_location.o(.text);
- src/region_map.o(.text);
+ src/field/dewford_trend.o(.text);
+ src/field/heal_location.o(.text);
+ src/field/region_map.o(.text);
+ src/scene/cute_sketch.o(.text);
asm/cute_sketch.o(.text);
- src/decoration.o(.text);
+ src/field/decoration.o(.text);
asm/slot_machine.o(.text);
- src/slot_machine.o(.text);
+ src/field/slot_machine.o(.text);
asm/slot_machine.o(.text_8104D30)
- src/slot_machine.o(.text_b);
- src/contest_painting.o(.text);
- src/battle_ai.o(.text);
- src/trader.o(.text);
- src/starter_choose.o(.text);
- src/wallclock.o(.text);
+ src/field/slot_machine.o(.text_b);
+ src/scene/contest_painting.o(.text);
+ src/battle/battle_ai.o(.text);
+ src/field/trader.o(.text);
+ src/field/starter_choose.o(.text);
+ src/field/wallclock.o(.text);
src/rom6.o(.text);
- src/pokeblock.o(.text);
- src/fldeff_flash.o(.text);
- src/post_battle_event_funcs.o(.text);
- src/time_events.o(.text);
- src/birch_pc.o(.text);
- src/hof_pc.o(.text);
- src/field_specials.o(.text);
- src/battle_records.o(.text);
+ src/field/pokeblock.o(.text);
+ src/field/fldeff_flash.o(.text);
+ src/battle/post_battle_event_funcs.o(.text);
+ src/engine/time_events.o(.text);
+ src/field/birch_pc.o(.text);
+ src/field/hof_pc.o(.text);
+ src/field/field_specials.o(.text);
+ src/battle/battle_records.o(.text);
asm/pokedex_area_screen.o(.text);
- asm/evolution_scene.o(.text);
+ src/scene/evolution_scene.o(.text);
asm/roulette.o(.text);
asm/pokedex_cry_screen.o(.text);
- src/pokedex_cry_screen.o(.text);
+ src/pokemon/pokedex_cry_screen.o(.text);
asm/pokedex_cry_screen.o(.text_811A4F8);
- src/coins.o(.text);
- src/landmark.o(.text);
- src/fldeff_strength.o(.text);
- asm/battle_transition.o(.text);
- src/battle_811DA74.o(.text);
- asm/battle_message.o(.text);
- src/choose_party.o(.text);
+ src/field/coins.o(.text);
+ src/field/landmark.o(.text);
+ src/field/fldeff_strength.o(.text);
+ src/battle/battle_transition.o(.text);
+ src/battle/battle_controller_linkpartner.o(.text);
+ src/battle/battle_message.o(.text);
+ src/field/choose_party.o(.text);
asm/cable_car.o(.text);
asm/roulette_util.o(.text);
asm/cable_car_util.o(.text);
src/unused_8124F94.o(.text);
- src/save.o(.text);
- src/mystery_event_script.o(.text);
- asm/mystery_event_script.o(.text);
- asm/field_effect_helpers.o(.text);
+ src/engine/save.o(.text);
+ src/engine/mystery_event_script.o(.text);
+ src/field/field_effect_helpers.o(.text);
asm/contest_ai.o(.text);
asm/battle_anim_81258BC.o(.text);
- src/battle_anim_81258BC.o(.text);
- asm/battle_anim_81258BC.o(.text_812BBFC);
- src/fldeff_sweetscent.o(.text);
+ src/battle/battle_controller_safari.o(.text);
+ src/field/fldeff_sweetscent.o(.text);
asm/battle_anim_812C144.o(.text);
- asm/learn_move.o(.text);
- src/fldeff_softboiled.o(.text);
- src/decoration_inventory.o(.text);
- src/roamer.o(.text);
+ src/pokemon/learn_move.o(.text);
+ src/field/fldeff_softboiled.o(.text);
+ src/field/decoration_inventory.o(.text);
+ src/field/roamer.o(.text);
asm/battle_tower.o(.text);
- src/use_pokeblock.o(.text);
- src/battle_anim_8137220.o(.text);
- src/player_pc.o(.text);
- src/intro.o(.text);
- src/field_region_map.o(.text);
+ src/field/use_pokeblock.o(.text);
+ src/battle/battle_controller_wally.o(.text);
+ src/field/player_pc.o(.text);
+ src/scene/intro.o(.text);
+ src/field/field_region_map.o(.text);
asm/battle_anim_813F0F4.o(.text);
- asm/hall_of_fame.o(.text);
- src/credits.o(.text);
- src/lottery_corner.o(.text);
- src/diploma.o(.text);
- src/berry_tag_screen.o(.text);
- src/mystery_event_menu.o(.text);
- src/save_failed_screen.o(.text);
- src/braille_puzzles.o(.text);
- asm/pokeblock_feed.o(.text);
- src/clear_save_data_menu.o(.text);
- asm/intro_credits_graphics.o(.text);
- asm/evolution_graphics.o(.text);
- src/bard_music.o(.text);
- src/fldeff_teleport.o(.text);
- src/unknown_debug_menu.o(.text);
- src/name_string_util.o(.text);
- src/menu_cursor.o(.text);
+ src/scene/hall_of_fame.o(.text);
+ src/scene/credits.o(.text);
+ src/field/lottery_corner.o(.text);
+ src/field/diploma.o(.text);
+ src/field/berry_tag_screen.o(.text);
+ src/engine/mystery_event_menu.o(.text);
+ src/engine/save_failed_screen.o(.text);
+ src/field/braille_puzzles.o(.text);
+ src/pokemon/pokeblock_feed.o(.text);
+ src/engine/clear_save_data_menu.o(.text);
+ src/scene/intro_credits_graphics.o(.text);
+ src/scene/evolution_graphics.o(.text);
+ src/field/bard_music.o(.text);
+ src/field/fldeff_teleport.o(.text);
+ src/debug/unknown_debug_menu.o(.text);
+ src/engine/name_string_util.o(.text);
+ src/engine/menu_cursor.o(.text);
} =0
script_data :
@@ -287,7 +271,7 @@ SECTIONS {
data/battle_scripts_2.o(script_data);
data/battle_ai_scripts.o(script_data);
data/contest_ai_scripts.o(script_data);
- data/script_funcs.o(script_data);
+ data/mystery_event_script_cmd_table.o(script_data);
} =0
lib_text :
@@ -295,13 +279,13 @@ SECTIONS {
{
asm/libgcnmultiboot.o(.text);
asm/m4a_1.o(.text);
- src/m4a_2.o(.text);
+ src/libs/m4a_2.o(.text);
asm/m4a_3.o(.text);
- src/m4a_4.o(.text);
- src/agb_flash.o(.text);
- src/agb_flash_1m.o(.text);
- src/agb_flash_mx.o(.text);
- src/siirtc.o(.text);
+ src/libs/m4a_4.o(.text);
+ src/libs/agb_flash.o(.text);
+ src/libs/agb_flash_1m.o(.text);
+ src/libs/agb_flash_mx.o(.text);
+ src/libs/siirtc.o(.text);
asm/libagbsyscall.o(.text);
tools/agbcc/lib/libgcc.a:_call_via_rX.o(.text);
tools/agbcc/lib/libgcc.a:_divsi3.o(.text);
@@ -317,168 +301,175 @@ SECTIONS {
tools/agbcc/lib/libgcc.a:fp-bit.o(.text);
tools/agbcc/lib/libgcc.a:_lshrdi3.o(.text);
tools/agbcc/lib/libgcc.a:_negdi2.o(.text);
- src/libc.o(.text);
+ src/libs/libc.o(.text);
} =0
.rodata :
ALIGN(4)
{
- src/main.o(.rodata);
- src/sprite.o(.rodata);
+ src/engine/main.o(.rodata);
+ src/engine/sprite.o(.rodata);
. += 0x8; /* Why the gap? */
- src/text.o(.rodata);
- src/string_util.o(.rodata);
- src/link.o(.rodata);
- src/rtc.o(.rodata);
+ src/engine/text.o(.rodata);
+ src/engine/string_util.o(.rodata);
+ src/engine/link.o(.rodata);
+ src/engine/rtc.o(.rodata);
data/main_menu.o(.rodata);
- data/data2.o(.rodata);
- src/pokemon_data.o(.rodata);
+ data/data2a.o(.rodata);
+ src/battle/battle_4.o(.rodata);
+ src/battle/battle_controller_player.o(.rodata);
+ data/data2b.o(.rodata);
+ src/battle/battle_controller_opponent.o(.rodata);
+ src/battle/battle_controller_linkopponent.o(.rodata);
+ data/battle_moves.o(.rodata);
+ src/battle/battle_3.o(.rodata);
+ src/pokemon/pokemon_data.o(.rodata);
. = ALIGN(4);
- src/trig.o(.rodata);
- src/util.o(.rodata);
- data/daycare.o(.rodata);
- data/egg_hatch.o(.rodata);
+ src/engine/trig.o(.rodata);
+ src/engine/util.o(.rodata);
+ src/field/daycare.o(.rodata);
+ src/scene/egg_hatch.o(.rodata);
data/battle_interface.o(.rodata);
- src/pokeball.o(.rodata);
- data/trade.o(.rodata);
- data/berry_blender.o(.rodata);
- src/new_game.o(.rodata);
- data/rom4.o(.rodata);
+ src/battle/pokeball.o(.rodata);
+ src/engine/trade.o(.rodata);
+ src/scene/berry_blender.o(.rodata);
+ src/scene/new_game.o(.rodata);
+ src/field/overworld.o(.rodata);
data/tilesets.o(.rodata);
data/maps.o(.rodata);
- src/fieldmap.o(.rodata);
- src/metatile_behavior.o(.rodata);
+ src/field/fieldmap.o(.rodata);
+ src/field/metatile_behavior.o(.rodata);
data/field_door.o(.rodata);
- src/field_player_avatar.o(.rodata);
- src/field_map_obj.o(.rodata);
- src/field_ground_effect.o(.rodata);
- data/field_ground_effect.o(.rodata);
+ src/field/field_player_avatar.o(.rodata);
+ src/field/field_map_obj.o(.rodata);
+ src/field/field_ground_effect.o(.rodata);
data/field_map_obj_helpers.o(.rodata);
data/text_window.o(.rodata);
- src/script.o(.rodata);
- src/scrcmd.o(.rodata);
- src/coord_event_weather.o(.rodata);
- src/field_tasks.o(.rodata);
+ src/engine/script.o(.rodata);
+ src/field/scrcmd.o(.rodata);
+ src/field/coord_event_weather.o(.rodata);
+ src/field/field_tasks.o(.rodata);
data/reset_rtc_screen.o(.rodata);
data/party_menu.o(.rodata);
- src/start_menu.o(.rodata);
- src/menu.o(.rodata);
+ src/field/start_menu.o(.rodata);
+ src/engine/menu.o(.rodata);
data/tileset_anim.o(.rodata);
- src/palette.o(.rodata);
- src/sound.o(.rodata);
+ src/engine/palette.o(.rodata);
+ src/engine/sound.o(.rodata);
data/battle_anim.o(.rodata);
- src/battle_anim.o(.rodata);
+ src/battle/battle_anim.o(.rodata);
src/rom_8077ABC.o(.rodata);
data/map_events.o(.rodata);
data/data_8393054.o(.rodata);
- src/task.o(.rodata);
- data/battle_anim_807B69C.o(.rodata);
- src/title_screen.o(.rodata);
+ src/engine/task.o(.rodata);
+ src/battle/battle_anim_807B69C.o(.rodata);
+ src/scene/title_screen.o(.rodata);
data/field_weather.o(.rodata);
- src/field_screen_effect.o(.rodata);
- src/battle_setup.o(.rodata);
+ src/field/field_screen_effect.o(.rodata);
+ src/battle/battle_setup.o(.rodata);
data/cable_club.o(.rodata);
data/mori_debug_menu.o(.rodata);
+ src/field/trainer_see.o(.rodata);
data/trainer_see.o(.rodata);
- src/wild_encounter.o(.rodata);
+ src/field/wild_encounter.o(.rodata);
data/wild_encounter.o(.rodata);
- src/field_effect.o(.rodata);
- data/pokemon_menu.o(.rodata);
- src/option_menu.o(.rodata);
- src/pokedex.o(.rodata);
- src/trainer_card.o(.rodata);
- src/battle_party_menu.o(.rodata);
+ src/field/field_effect.o(.rodata);
+ src/pokemon/pokemon_menu.o(.rodata);
+ src/engine/option_menu.o(.rodata);
+ src/pokemon/pokedex.o(.rodata);
+ src/engine/trainer_card.o(.rodata);
+ src/battle/battle_party_menu.o(.rodata);
data/pokemon_storage_system.o(.rodata);
- src/pokemon_icon.o(.rodata);
+ src/pokemon/pokemon_icon.o(.rodata);
data/pokemon_summary_screen.o(.rodata);
data/fldeff_cut.o(.rodata);
- src/item_menu.o(.rodata);
+ src/field/item_menu.o(.rodata);
data/battle_anim_80A7E7C.o(.rodata);
- src/item.o(.rodata);
+ src/field/item.o(.rodata);
data/matsuda_debug_menu.o(.rodata);
data/contest.o(.rodata);
- data/shop.o(.rodata);
- src/berry.o(.rodata);
- src/script_menu.o(.rodata);
- src/naming_screen.o(.rodata);
+ src/field/shop.o(.rodata);
+ src/field/berry.o(.rodata);
+ src/field/script_menu.o(.rodata);
+ src/engine/naming_screen.o(.rodata);
data/naming_screen.o(.rodata);
data/money.o(.rodata);
data/contest_effect.o(.rodata);
- src/record_mixing.o(.data);
- src/record_mixing.o(.rodata);
- src/sound_check_menu.o(.rodata);
+ src/engine/record_mixing.o(.data);
+ src/engine/record_mixing.o(.rodata);
+ src/debug/sound_check_menu.o(.rodata);
data/secret_base.o(.rodata);
data/tv.o(.rodata);
data/contest_link_80C2020.o(.rodata);
- src/pokemon_size_record.o(.rodata);
+ src/pokemon/pokemon_size_record.o(.rodata);
data/fldeff_80C5CD4.o(.rodata);
- src/field_special_scene.o(.rodata);
+ src/field/field_special_scene.o(.rodata);
data/field_special_scene.o(.rodata);
- src/rotating_gate.o(.rodata);
- src/item_use.o(.rodata);
+ src/field/rotating_gate.o(.rodata);
+ src/field/item_use.o(.rodata);
data/battle_anim_80CA710.o(.rodata);
- src/bike.o(.rodata);
+ src/field/bike.o(.rodata);
data/easy_chat.o(.rodata);
data/pokenav.o(.rodata);
data/mon_markings.o(.rodata);
- data/mauville_old_man.o(.rodata);
+ src/field/mauville_man.o(.rodata);
data/mail.o(.rodata);
- src/menu_helpers.o(.rodata);
- src/heal_location.o(.rodata);
- src/region_map.o(.rodata);
+ src/field/menu_helpers.o(.rodata);
+ src/field/heal_location.o(.rodata);
+ src/field/region_map.o(.rodata);
data/cute_sketch.o(.rodata);
- src/decoration.o(.rodata);
+ src/field/decoration.o(.rodata);
data/slot_machine.o(.rodata);
- src/contest_painting.o(.rodata);
- src/battle_ai.o(.rodata);
- src/trader.o(.rodata);
- src/starter_choose.o(.rodata);
- src/wallclock.o(.rodata);
- src/pokeblock.o(.rodata);
+ src/scene/contest_painting.o(.rodata);
+ src/battle/battle_ai.o(.rodata);
+ src/field/trader.o(.rodata);
+ src/field/starter_choose.o(.rodata);
+ src/field/wallclock.o(.rodata);
+ src/field/pokeblock.o(.rodata);
data/fldeff_flash.o(.rodata);
- src/time_events.o(.rodata);
- src/field_specials.o(.rodata);
+ src/engine/time_events.o(.rodata);
+ src/field/field_specials.o(.rodata);
data/pokedex_area_screen.o(.rodata);
- data/evolution_scene.o(.rodata);
+ src/scene/evolution_scene.o(.rodata);
data/roulette.o(.rodata);
data/pokedex_cry_screen.o(.rodata);
data/landmark.o(.rodata);
- data/battle_transition.o(.rodata);
- data/battle_811DA74.o(.rodata);
+ src/battle/battle_transition.o(.rodata);
+ src/battle/battle_controller_linkpartner.o(.rodata);
data/battle_message.o(.rodata);
- src/choose_party.o(.rodata);
+ src/field/choose_party.o(.rodata);
data/cable_car.o(.rodata);
- src/save.o(.rodata);
- data/field_effect_helpers.o(.rodata);
+ src/engine/save.o(.rodata);
+ src/field/field_effect_helpers.o(.rodata);
data/contest_ai.o(.rodata);
- data/battle_anim_81258BC.o(.rodata);
+ src/battle/battle_controller_safari.o(.rodata);
data/battle_anim_812C144.o(.rodata);
- data/learn_move.o(.rodata);
- src/decoration_inventory.o(.rodata);
- src/roamer.o(.rodata);
+ src/pokemon/learn_move.o(.rodata);
+ src/field/decoration_inventory.o(.rodata);
+ src/field/roamer.o(.rodata);
data/battle_tower.o(.rodata);
- src/use_pokeblock.o(.rodata);
- data/battle_anim_8137220.o(.rodata);
- src/player_pc.o(.rodata);
- src/intro.o(.rodata);
+ src/field/use_pokeblock.o(.rodata);
+ src/battle/battle_controller_wally.o(.rodata);
+ src/field/player_pc.o(.rodata);
+ src/scene/intro.o(.rodata);
data/battle_anim_813F0F4.o(.rodata);
- data/hall_of_fame.o(.rodata);
- src/credits.o(.rodata);
+ src/scene/hall_of_fame.o(.rodata);
+ src/scene/credits.o(.rodata);
data/credits.o(.rodata);
- src/lottery_corner.o(.rodata);
- src/diploma.o(.rodata);
+ src/field/lottery_corner.o(.rodata);
+ src/field/diploma.o(.rodata);
src/strings.o(.rodata);
- src/berry_tag_screen.o(.rodata);
- src/save_failed_screen.o(.rodata);
- data/pokeblock_feed.o(.rodata);
+ src/field/berry_tag_screen.o(.rodata);
+ src/engine/save_failed_screen.o(.rodata);
+ src/pokemon/pokeblock_feed.o(.rodata);
data/intro_credits_graphics.o(.rodata);
- data/evolution_graphics.o(.rodata);
+ src/scene/evolution_graphics.o(.rodata);
data/bard_music.o(.rodata);
data/unknown_debug_menu.o(.rodata);
data/strings2.o(.rodata);
data/menu_cursor.o(.rodata);
data/mystery_event_msg.o(.rodata);
- src/m4a_tables.o(.rodata);
+ src/libs/m4a_tables.o(.rodata);
data/sound_data.o(.rodata);
} =0
@@ -907,11 +898,11 @@ SECTIONS {
lib_rodata :
ALIGN(4)
{
- src/agb_flash.o(.rodata);
- src/agb_flash_1m.o(.rodata);
- src/agb_flash_mx.o(.rodata);
- src/agb_flash_le.o(.rodata);
- src/siirtc.o(.rodata);
+ src/libs/agb_flash.o(.rodata);
+ src/libs/agb_flash_1m.o(.rodata);
+ src/libs/agb_flash_mx.o(.rodata);
+ src/libs/agb_flash_le.o(.rodata);
+ src/libs/siirtc.o(.rodata);
tools/agbcc/lib/libgcc.a:_udivdi3.o(.rodata);
} =0
diff --git a/shared_syms.txt b/shared_syms.txt
index 884f0e89d..571e0633e 100644
--- a/shared_syms.txt
+++ b/shared_syms.txt
@@ -3,6 +3,8 @@ ewram = 0x2000000;
unk_2004000 = 0x2004000;
+gUnk_2009000 = 0x2009000;
+
unk_2007800 = 0x2007800;
unk_2007900 = 0x2007900;
diff --git a/src/bard_music.c b/src/bard_music.c
deleted file mode 100644
index a31568475..000000000
--- a/src/bard_music.c
+++ /dev/null
@@ -1,97 +0,0 @@
-#include "global.h"
-#include "easy_chat.h"
-
-struct BardSound
-{
- u8 pad_00[48];
-};
-
-struct UnkBard
-{
- /*0x00*/ u8 var00;
- /*0x01*/ s8 var01;
- /*0x02*/ u16 var02;
- /*0x04*/ u16 var04;
- /*0x06*/ u16 var06;
-};
-
-struct UnkBard3
-{
- /*0x00*/ u16 var00;
- /*0x02*/ u16 var02;
- /*0x04*/ s16 var04;
- /*0x06*/ u16 var06;
-};
-
-struct UnkBard2
-{
- /*0x00*/ u8 var00;
- /*0x01*/ u8 var01;
- /*0x02*/ u8 var02;
- /*0x03*/ u8 var03;
- /*0x04*/ u16 var04;
- u8 pad06[4];
- /*0x0A*/ u16 var0A;
- u8 pad0C[12];
- /*0x18*/ struct UnkBard3 var18[6];
-};
-
-extern struct BardSound *gBardMusicTable[];
-extern s16 *gUnknown_08417068[];
-extern u32 gUnknown_084170F4[];
-
-static s16 sub_814A2B8(u32 arg0, u32 arg1)
-{
- return gUnknown_08417068[arg0][arg1];
-}
-
-#if ENGLISH
-struct BardSound *sub_814A2D0(u16 arg0, u16 arg1)
-{
- struct BardSound *sounds = gBardMusicTable[arg0];
-
- return &sounds[arg1];
-}
-#elif GERMAN
-struct BardSound *sub_814A2D0(u16 arg0, u16 arg1)
-{
- u32 index;
- struct BardSound *sounds;
-
- sounds = gBardMusicTable[arg0];
- index = de_sub_80EB748(arg0, arg1);
-
- return &sounds[index];
-}
-#endif
-
-s32 sub_814A2EC(struct UnkBard2 *dest, struct UnkBard *src, u16 arg2)
-{
- s32 i;
- s32 j;
- s32 thirty;
-
- for (i = 0; i < 6; i++)
- {
- dest->var18[i].var00 = src[i].var00;
- if (src[i].var00 != 0xFF)
- {
- s32 r1 = src[i].var01 +gUnknown_084170F4[src[i].var00];
-
- dest->var18[i].var02 = r1;
- dest->var18[i].var06 = src[i].var04;
- dest->var04 += r1;
- }
- }
-
- for (j = 0, thirty = 30; j < i; j++)
- dest->var18[j].var04 = sub_814A2B8(thirty + arg2, j);
-
- dest->var00++;
- dest->var01 = 0;
- dest->var02 = 0;
- dest->var03 = 0;
- dest->var0A = 0;
-
- //warning: no return statement in function returning non-void
-}
diff --git a/src/battle_2.c b/src/battle/battle_2.c
index d08f2b8df..770aa1209 100644
--- a/src/battle_2.c
+++ b/src/battle/battle_2.c
@@ -181,7 +181,7 @@ extern u8 gHealthboxIDs[];
extern struct UnknownStruct6 gUnknown_03004DE0;
//extern u16 gUnknown_03004DE0[][0xA0]; // possibly?
extern u16 gBattleTypeFlags;
-extern s8 gBattleTerrain; // I'm not sure if this is supposed to be s8 or u8. Regardless, it must have the same type as the return value of GetBattleTerrain.
+extern s8 gBattleTerrain; // I'm not sure if this is supposed to be s8 or u8. Regardless, it must have the same type as the return value of BattleSetup_GetTerrain.
extern u8 gReservedSpritePaletteCount;
extern u16 gTrainerBattleOpponent;
extern struct BattleEnigmaBerry gEnigmaBerries[];
@@ -239,7 +239,8 @@ void InitBattle(void)
gUnknown_03004DE0.unk0[i] = 0xFF10;
gUnknown_03004DE0.unk780[i] = 0xFF10;
}
- sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8);
+ //sub_80895F8(gUnknown_081F9674.unk0, gUnknown_081F9674.unk4, gUnknown_081F9674.unk8);
+ sub_80895F8(gUnknown_081F9674);
SetUpWindowConfig(&gWindowConfig_81E6C58);
ResetPaletteFade();
gUnknown_030042A4 = 0;
@@ -250,7 +251,7 @@ void InitBattle(void)
gUnknown_03004280 = 0;
gUnknown_030041B0 = 0;
gUnknown_030041B8 = 0;
- gBattleTerrain = GetBattleTerrain();
+ gBattleTerrain = BattleSetup_GetTerrain();
InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
InitWindowFromConfig(&gUnknown_030041D0, &gWindowConfig_81E71D0);
InitWindowFromConfig(&gUnknown_03004250, &gWindowConfig_81E71EC);
@@ -1347,8 +1348,8 @@ void sub_8010384(struct Sprite *sprite)
u16 species;
u8 yOffset;
- if (ewram17800[r6].unk2 != 0)
- species = ewram17800[r6].unk2;
+ if (ewram17800[r6].transformedSpecies != 0)
+ species = ewram17800[r6].transformedSpecies;
else
species = sprite->data2;
@@ -1584,7 +1585,7 @@ void sub_8010874(void)
for (j = 0; j < (u32)0x1C; j++)
r4[j] = 0;
- gDisableStructs[i].IsFirstTurn = 2;
+ gDisableStructs[i].isFirstTurn= 2;
gUnknown_02024C70[i] = 0;
gLastUsedMove[i] = 0;
gMoveHitWith[i] = 0;
@@ -1655,25 +1656,25 @@ void sub_8010874(void)
ewram16113 = 0;
for (i = 0; i < 11; i++)
gBattleResults.unk36[i] = 0;
- gBattleResults.BattleTurnCounter = 0;
- gBattleResults.PlayerFaintCounter = 0;
- gBattleResults.OpponentFaintCounter = 0;
+ gBattleResults.battleTurnCounter = 0;
+ gBattleResults.playerFaintCounter = 0;
+ gBattleResults.opponentFaintCounter = 0;
gBattleResults.unk2 = 0;
gBattleResults.unk3 = 0;
gBattleResults.unk4 = 0;
gBattleResults.unk5_0 = 0;
gBattleResults.unk5_1 = 0;
- gBattleResults.LastOpponentSpecies = 0;
- gBattleResults.LastUsedMove = 0;
- gBattleResults.OpponentMove = 0;
- gBattleResults.Poke1Species = 0;
- gBattleResults.OpponentSpecies = 0;
- gBattleResults.CaughtPoke = 0;
+ gBattleResults.lastOpponentSpecies = 0;
+ gBattleResults.lastUsedMove = 0;
+ gBattleResults.opponentMove = 0;
+ gBattleResults.poke1Species = 0;
+ gBattleResults.opponentSpecies = 0;
+ gBattleResults.caughtPoke = 0;
for (i = 0; i < 10; i++)
{
- gBattleResults.PokeString1[i] = 0;
- gBattleResults.PokeString2[i] = 0;
- gBattleResults.CaughtNick[i] = 0;
+ gBattleResults.pokeString1[i] = 0;
+ gBattleResults.pokeString2[i] = 0;
+ gBattleResults.caughtNick[i] = 0;
}
}
@@ -1692,25 +1693,25 @@ void SwitchInClearStructs(void)
{
struct UnknownStruct12 *sp20 = &gUnknown_02024AD0[i];
- if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].BankPreventingEscape == gActiveBank)
+ if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].bankPreventingEscape == gActiveBank)
sp20->unk0 &= ~0x04000000;
- if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].BankWithSureHit == gActiveBank)
+ if ((gStatuses3[i] & STATUS3_ALWAYS_HITS) && gDisableStructs[i].bankWithSureHit == gActiveBank)
{
gStatuses3[i] &= ~STATUS3_ALWAYS_HITS;
- gDisableStructs[i].BankWithSureHit = 0;
+ gDisableStructs[i].bankWithSureHit = 0;
}
}
}
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
{
gBattleMons[gActiveBank].status2 &= (STATUS2_CONFUSION | STATUS2_FOCUS_ENERGY | STATUS2_SUBSTITUTE | STATUS2_ESCAPE_PREVENTION | STATUS2_CURSED);
- gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_RECEIVER | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT);
+ gStatuses3[gActiveBank] &= (STATUS3_LEECHSEED_BANK | STATUS3_LEECHSEED | STATUS3_ALWAYS_HITS | STATUS3_PERISH_SONG | STATUS3_ROOTED | STATUS3_MUDSPORT | STATUS3_WATERSPORT);
for (i = 0; i < gNoOfAllBanks; i++)
{
if (GetBankSide(gActiveBank) != GetBankSide(i)
&& (gStatuses3[i] & STATUS3_ALWAYS_HITS) != 0
- && (gDisableStructs[i].BankWithSureHit == gActiveBank))
+ && (gDisableStructs[i].bankWithSureHit == gActiveBank))
{
gStatuses3[i] &= ~STATUS3_ALWAYS_HITS;
gStatuses3[i] |= 0x10;
@@ -1740,13 +1741,13 @@ void SwitchInClearStructs(void)
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
{
- gDisableStructs[gActiveBank].SubstituteHP = sp0.SubstituteHP;
- gDisableStructs[gActiveBank].BankWithSureHit = sp0.BankWithSureHit;
- gDisableStructs[gActiveBank].unkF_0 = sp0.unkF_0;
- gDisableStructs[gActiveBank].unkF_4 = sp0.unkF_4;
+ gDisableStructs[gActiveBank].substituteHP = sp0.substituteHP;
+ gDisableStructs[gActiveBank].bankWithSureHit = sp0.bankWithSureHit;
+ gDisableStructs[gActiveBank].perishSong1 = sp0.perishSong1;
+ gDisableStructs[gActiveBank].perishSong2 = sp0.perishSong2;
}
- gDisableStructs[gActiveBank].IsFirstTurn = 2;
+ gDisableStructs[gActiveBank].isFirstTurn= 2;
gLastUsedMove[gActiveBank] = 0;
gMoveHitWith[gActiveBank] = 0;
gUnknown_02024C44[gActiveBank] = 0;
@@ -1781,7 +1782,7 @@ void UndoEffectsAfterFainting(void)
gStatuses3[gActiveBank] = 0;
for (i = 0; i < gNoOfAllBanks; i++)
{
- if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].BankPreventingEscape == gActiveBank)
+ if ((gBattleMons[i].status2 & STATUS2_ESCAPE_PREVENTION) && gDisableStructs[i].bankPreventingEscape == gActiveBank)
gBattleMons[i].status2 &= ~STATUS2_ESCAPE_PREVENTION;
if (gBattleMons[i].status2 & (gBitTable[gActiveBank] << 16))
gBattleMons[i].status2 &= ~(gBitTable[gActiveBank] << 16);
@@ -1794,27 +1795,27 @@ void UndoEffectsAfterFainting(void)
ptr = (u8 *)&gDisableStructs[gActiveBank];
for (i = 0; i < (u32)0x1C; i++)
ptr[i] = 0;
- gProtectStructs[gActiveBank].Protected = 0;
- gProtectStructs[gActiveBank].Endured = 0;
- gProtectStructs[gActiveBank].OnlyStruggle = 0;
- gProtectStructs[gActiveBank].HelpingHand = 0;
- gProtectStructs[gActiveBank].BounceMove = 0;
- gProtectStructs[gActiveBank].StealMove = 0;
- gProtectStructs[gActiveBank].Flag0Unknown = 0;
- gProtectStructs[gActiveBank].PrlzImmobility = 0;
- gProtectStructs[gActiveBank].ConfusionSelfDmg = 0;
- gProtectStructs[gActiveBank].NotEffective = 0;
- gProtectStructs[gActiveBank].ChargingTurn = 0;
- gProtectStructs[gActiveBank].FleeFlag = 0;
- gProtectStructs[gActiveBank].UsedImprisionedMove = 0;
- gProtectStructs[gActiveBank].LoveImmobility = 0;
- gProtectStructs[gActiveBank].UsedDisabledMove = 0;
- gProtectStructs[gActiveBank].UsedTauntedMove = 0;
- gProtectStructs[gActiveBank].Flag2Unknown = 0;
- gProtectStructs[gActiveBank].FlinchImmobility = 0;
- gProtectStructs[gActiveBank].NotFirstStrike = 0;
-
- gDisableStructs[gActiveBank].IsFirstTurn = 2;
+ gProtectStructs[gActiveBank].protected = 0;
+ gProtectStructs[gActiveBank].endured = 0;
+ gProtectStructs[gActiveBank].onlyStruggle = 0;
+ gProtectStructs[gActiveBank].helpingHand = 0;
+ gProtectStructs[gActiveBank].bounceMove = 0;
+ gProtectStructs[gActiveBank].stealMove = 0;
+ gProtectStructs[gActiveBank].flag0Unknown = 0;
+ gProtectStructs[gActiveBank].prlzImmobility = 0;
+ gProtectStructs[gActiveBank].confusionSelfDmg = 0;
+ gProtectStructs[gActiveBank].notEffective = 0;
+ gProtectStructs[gActiveBank].chargingTurn = 0;
+ gProtectStructs[gActiveBank].fleeFlag = 0;
+ gProtectStructs[gActiveBank].usedImprisionedMove = 0;
+ gProtectStructs[gActiveBank].loveImmobility = 0;
+ gProtectStructs[gActiveBank].usedDisabledMove = 0;
+ gProtectStructs[gActiveBank].usedTauntedMove = 0;
+ gProtectStructs[gActiveBank].flag2Unknown = 0;
+ gProtectStructs[gActiveBank].flinchImmobility = 0;
+ gProtectStructs[gActiveBank].notFirstStrike = 0;
+
+ gDisableStructs[gActiveBank].isFirstTurn= 2;
gLastUsedMove[gActiveBank] = 0;
gMoveHitWith[gActiveBank] = 0;
gUnknown_02024C44[gActiveBank] = 0;
@@ -1866,7 +1867,7 @@ static void BattlePrepIntroSlide(void)
if (gBattleExecBuffer == 0)
{
gActiveBank = GetBankByPlayerAI(0);
- EmitBattleIntroSlide(0, gBattleTerrain);
+ EmitIntroSlide(0, gBattleTerrain);
MarkBufferBankForExecution(gActiveBank);
gBattleMainFunc = sub_8011384;
gBattleCommunication[0] = 0;
@@ -1910,7 +1911,7 @@ void sub_8011384(void)
if (GetBankIdentity(gActiveBank) == 0)
{
- dp01_build_cmdbuf_x07_7_7_7(0);
+ EmitTrainerThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
@@ -1918,20 +1919,20 @@ void sub_8011384(void)
{
if (GetBankIdentity(gActiveBank) == 1)
{
- dp01_build_cmdbuf_x07_7_7_7(0);
+ EmitTrainerThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
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);
- dp01_build_cmdbuf_x04_4_4_4(0);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2);
+ EmitLoadPokeSprite(0);
MarkBufferBankForExecution(gActiveBank);
}
}
@@ -1941,7 +1942,7 @@ void sub_8011384(void)
if (GetBankIdentity(gActiveBank) == 2
|| GetBankIdentity(gActiveBank) == 3)
{
- dp01_build_cmdbuf_x07_7_7_7(0);
+ EmitTrainerThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
}
@@ -1979,7 +1980,7 @@ void bc_801333C(void)
}
}
gActiveBank = GetBankByPlayerAI(1);
- dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80);
+ Emitcmd48(0, (u8 *)sp0, 0x80);
MarkBufferBankForExecution(gActiveBank);
for (i = 0; i < 6; i++)
@@ -1997,7 +1998,7 @@ void bc_801333C(void)
}
}
gActiveBank = GetBankByPlayerAI(0);
- dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80);
+ Emitcmd48(0, (u8 *)sp0, 0x80);
MarkBufferBankForExecution(gActiveBank);
gBattleMainFunc = bc_battle_begin_message;
@@ -2063,13 +2064,13 @@ void sub_8011834(void)
{
if (GetBankIdentity(gActiveBank) == 1)
{
- dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ EmitTrainerBallThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
if ((gBattleTypeFlags & BATTLE_TYPE_MULTI)
&& GetBankIdentity(gActiveBank) == 3)
{
- dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ EmitTrainerBallThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
}
@@ -2085,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;
}
@@ -2115,13 +2116,13 @@ void sub_80119B4(void)
{
if (GetBankIdentity(gActiveBank) == 0)
{
- dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ EmitTrainerBallThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
if ((gBattleTypeFlags & BATTLE_TYPE_MULTI)
&& GetBankIdentity(gActiveBank) == 2)
{
- dp01_build_cmdbuf_x2F_2F_2F_2F(0);
+ EmitTrainerBallThrow(0);
MarkBufferBankForExecution(gActiveBank);
}
}
@@ -2140,7 +2141,7 @@ void unref_sub_8011A68(void)
{
if (GetBankSide(gActiveBank) == 0)
{
- sub_800C704(0, gBattlePartyID[gActiveBank], 0);
+ EmitSendOutPoke(0, gBattlePartyID[gActiveBank], 0);
MarkBufferBankForExecution(gActiveBank);
}
}
@@ -2167,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);
}
}
@@ -2191,7 +2192,7 @@ void BattleBeginFirstTurn(void)
return;
while (ewram160F9 < gNoOfAllBanks)
{
- if (sub_801A02C(0, gTurnOrder[ewram160F9], 0) != 0)
+ if (ItemBattleEffects(0, gTurnOrder[ewram160F9], 0) != 0)
r9++;
ewram160F9++;
if (r9 != 0)
@@ -2286,8 +2287,8 @@ void BattleTurnPassed(void)
gBattleMainFunc = sub_80138F0;
return;
}
- if (gBattleResults.BattleTurnCounter < 0xFF)
- gBattleResults.BattleTurnCounter++;
+ if (gBattleResults.battleTurnCounter < 0xFF)
+ gBattleResults.battleTurnCounter++;
for (i = 0; i < gNoOfAllBanks; i++)
{
gActionForBanks[i] = 0xFF;
@@ -2429,7 +2430,7 @@ void sub_8012324(void)
}
else
{
- dp01_build_cmdbuf_x12_a_bb(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8));
+ Emitcmd18(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8));
MarkBufferBankForExecution(gActiveBank);
gBattleCommunication[gActiveBank]++;
}
diff --git a/src/battle/battle_3.c b/src/battle/battle_3.c
new file mode 100644
index 000000000..b59757f00
--- /dev/null
+++ b/src/battle/battle_3.c
@@ -0,0 +1,6595 @@
+#include "global.h"
+#include "abilities.h"
+#include "battle.h"
+#include "moves.h"
+#include "item.h"
+#include "items.h"
+#include "hold_effects.h"
+#include "species.h"
+#include "pokemon.h"
+#include "data2.h"
+#include "rng.h"
+#include "text.h"
+#include "battle_move_effects.h"
+#include "string_util.h"
+#include "flags.h"
+
+extern u8* gBattlescriptCurrInstr;
+extern u8 gActiveBank;
+extern u8 gBattleBufferB[4][0x200];
+extern u8* gUnknown_02024C1C[4]; //battlescript location when you try to choose a move you're not allowed to
+extern u16 gLastUsedMove[4];
+extern struct BattlePokemon gBattleMons[4];
+extern struct BattleEnigmaBerry gEnigmaBerries[4];
+extern u8 gStringBank;
+extern u16 gLastUsedItem;
+extern u16 gCurrentMove;
+extern const u32 gBitTable[];
+extern u16 gBattleTypeFlags;
+extern u8 gNoOfAllBanks;
+extern u32 gStatuses3[4];
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u8 gTurnOrder[4];
+extern u16 gSideAffecting[2];
+extern u16 gBattleWeather;
+extern void (*gBattleMainFunc)(void);
+extern u8 gAbsentBankFlags;
+extern u8 gBattleCommunication[];
+extern u32 gHitMarker;
+extern u8 gEffectBank;
+extern u8 gBank1;
+extern s32 gBattleMoveDamage;
+extern u16 gBattlePartyID[4];
+extern u16 gChosenMovesByBanks[4];
+extern s32 gTakenDmg[4];
+extern u8 gTakenDmgBanks[4];
+extern u8 gBattleMoveFlags;
+extern u8 gLastUsedAbility;
+extern u8 gBattleTextBuff2[];
+extern u8 gFightStateTracker;
+extern struct BattleEnigmaBerry gEnigmaBerries[4];
+extern u8 gUnknown_02024BE5;
+extern u8 gCurrMovePos;
+extern u16 gRandomMove;
+extern s32 gBattleMoveDamage;
+extern u16 gDynamicBasePower;
+extern u32 gBattleExecBuffer;
+extern const u16 gSoundMovesTable[];
+extern const u8 gStatusConditionString_PoisonJpn[];
+extern const u8 gStatusConditionString_SleepJpn[];
+extern const u8 gStatusConditionString_ParalysisJpn[];
+extern const u8 gStatusConditionString_BurnJpn[];
+extern const u8 gStatusConditionString_IceJpn[];
+extern const u8 gStatusConditionString_ConfusionJpn[];
+extern const u8 gStatusConditionString_LoveJpn[];
+extern const BattleCmdFunc gBattleScriptingCommandsTable[];
+
+u8 IsImprisoned(u8 bank, u16 move);
+u8 GetBankByPlayerAI(u8 ID);
+u8 GetBankIdentity(u8 bank);
+u8 GetBankSide(u8 bank);
+void b_call_bc_move_exec(u8* BS_ptr);
+bool8 sub_8015660(u8 bank); //check if a move failed
+void SetMoveEffect(bool8 primary, u8 certainArg);
+bool8 UproarWakeUpCheck(u8 bank);
+bool8 sub_8018018(u8 bank, u8, u8);
+void sub_8015740(u8 bank);
+s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def);
+u8 CountTrailingZeroBits(u32 a);
+u8 GetMoveTarget(u16 move, u8 useMoveTarget);
+u8 sub_803FC34(u8 bank);
+u16 sub_803FBFC(u8 a);
+u8 weather_get_current(void);
+void b_push_move_exec(u8* BS_ptr);
+void RecordAbilityBattle(u8 bank, u8 ability);
+void RecordItemBattle(u8 bank, u8 holdEffect);
+void sub_8013F54(void);
+void sub_8013FBC(void);
+s8 GetPokeFlavourRelation(u32 pid, u8 flavor);
+
+extern u8 BattleScript_MoveSelectionDisabledMove[];
+extern u8 BattleScript_MoveSelectionTormented[];
+extern u8 BattleScript_MoveSelectionTaunted[];
+extern u8 BattleScript_MoveSelectionImprisoned[];
+extern u8 BattleScript_MoveSelectionChoiceBanded[];
+extern u8 BattleScript_MoveSelectionNoPP[];
+extern u8 BattleScript_NoMovesLeft[];
+extern u8 BattleScript_WishComesTrue[];
+extern u8 BattleScript_IngrainTurnHeal[];
+extern u8 BattleScript_LeechSeedTurnDrain[];
+extern u8 BattleScript_PoisonTurnDmg[];
+extern u8 BattleScript_BurnTurnDmg[];
+extern u8 BattleScript_NightmareTurnDmg[];
+extern u8 BattleScript_CurseTurnDmg[];
+extern u8 BattleScript_WrapTurnDmg[];
+extern u8 BattleScript_WrapEnds[];
+extern u8 BattleScript_DisabledNoMore[];
+extern u8 BattleScript_EncoredNoMore[];
+
+extern u8 gUnknown_081D9030[];
+extern u8 gUnknown_081D8F62[];
+extern u8 gUnknown_081D8FFF[];
+extern u8 gUnknown_081D8F7D[];
+extern u8 gUnknown_081D9016[];
+extern u8 gUnknown_081D9008[];
+extern u8 gUnknown_081D9041[];
+extern u8 gUnknown_081D950F[]; //uproar wakeup BS
+extern u8 gUnknown_081D957E[]; //uproar BS
+extern u8 BattleScript_ThrashConfuses[];
+extern u8 BattleScript_YawnMakesAsleep[];
+extern u8 BattleScript_FutureSightHits[];
+extern u8 BattleScript_PerishSongHits[];
+extern u8 BattleScript_PerishSongTimerGoesDown[];
+extern u8 gUnknown_081D8C72[];
+extern u8 gUnknown_081D8C7B[];
+
+extern u8 BattleScript_MoveUsedIsAsleep[];
+extern u8 BattleScript_MoveUsedWokeUp[];
+extern u8 BattleScript_MoveUsedIsFrozen[];
+extern u8 BattleScript_MoveUsedUnfroze[];
+extern u8 BattleScript_MoveUsedLoafingAround[];
+extern u8 BattleScript_MoveUsedMustRecharge[];
+extern u8 BattleScript_MoveUsedFlinched[];
+extern u8 BattleScript_MoveUsedIsDisabled[];
+extern u8 BattleScript_MoveUsedIsTaunted[];
+extern u8 BattleScript_MoveUsedIsImprisoned[];
+extern u8 BattleScript_MoveUsedIsConfused[];
+extern u8 BattleScript_MoveUsedIsConfusedNoMore[];
+extern u8 BattleScript_MoveUsedIsParalyzed[];
+extern u8 BattleScript_MoveUsedIsParalyzedCantAttack[];
+extern u8 BattleScript_MoveUsedIsInLove[];
+extern u8 BattleScript_BideStoringEnergy[];
+extern u8 BattleScript_BideAttack[];
+extern u8 BattleScript_BideNoEnergyToAttack[];
+
+extern u8 gUnknown_081D901D[]; //load weather from overworld
+extern u8 BattleScript_DrizzleActivates[];
+extern u8 BattleScript_SandstreamActivates[];
+extern u8 BattleScript_DroughtActivates[];
+extern u8 BattleScript_CastformChange[];
+extern u8 BattleScript_RainDishActivates[];
+extern u8 BattleScript_ShedSkinActivates[];
+extern u8 BattleScript_SpeedBoostActivates[];
+extern u8 BattleScript_SoundproofProtected[];
+extern u8 BattleScript_MoveHPDrain[];
+extern u8 BattleScript_MoveHPDrain_PPLoss[];
+extern u8 BattleScript_FlashFireBoost[];
+extern u8 BattleScript_FlashFireBoost_PPLoss[];
+extern u8 BattleScript_MoveHPDrain_FullHP[];
+extern u8 BattleScript_MoveHPDrain_FullHP_PPLoss[];
+extern u8 BattleScript_ColorChangeActivates[];
+extern u8 BattleScript_RoughSkinActivates[];
+extern u8 BattleScript_ApplySecondaryEffect[];
+extern u8 BattleScript_CuteCharmActivates[];
+extern u8 gUnknown_081D9956[]; //ability status clear
+extern u8 BattleScript_SynchronizeActivates[];
+extern u8 gUnknown_081D978C[]; //intimidate1
+extern u8 gUnknown_081D9795[]; //intimidate2
+extern u8 BattleScript_TraceActivates[];
+
+extern u8 BattleScript_WhiteHerbEnd2[];
+extern u8 BattleScript_WhiteHerbRet[];
+extern u8 BattleScript_ItemHealHP_RemoveItem[];
+extern u8 BattleScript_BerryPPHealEnd2[];
+extern u8 BattleScript_ItemHealHP_End2[];
+extern u8 BattleScript_BerryConfuseHealEnd2[];
+extern u8 BattleScript_BerryStatRaiseEnd2[];
+extern u8 BattleScript_BerryFocusEnergyEnd2[];
+extern u8 BattleScript_BerryCurePrlzEnd2[];
+extern u8 BattleScript_BerryCurePsnEnd2[];
+extern u8 BattleScript_BerryCureBrnEnd2[];
+extern u8 BattleScript_BerryCureFrzEnd2[];
+extern u8 BattleScript_BerryCureSlpEnd2[];
+extern u8 BattleScript_BerryCureConfusionEnd2[];
+extern u8 gUnknown_081D9A44[]; //berry cure any status end2
+extern u8 BattleScript_BerryCureParRet[];
+extern u8 BattleScript_BerryCurePsnRet[];
+extern u8 BattleScript_BerryCureBrnRet[];
+extern u8 BattleScript_BerryCureFrzRet[];
+extern u8 BattleScript_BerryCureSlpRet[];
+extern u8 BattleScript_BerryCureConfusionRet[];
+extern u8 gUnknown_081D9A4A[]; //berry cure any status return
+
+extern u8 BattleScript_ItemHealHP_Ret[];
+
+extern u8 gUnknown_081D995F[]; //disobedient while asleep
+extern u8 gUnknown_081D996F[]; //disobedient, uses a random move
+extern u8 gUnknown_081D9989[]; //disobedient, went to sleep
+extern u8 gUnknown_081D99A0[]; //disobedient, hits itself
+
+#define CHOICED_MOVE(bank)(((u16*)(&ewram[bank * 2 + 0x160e8])))
+
+//array entries for battle communication
+#define MOVE_EFFECT_BYTE 0x3
+#define MULTISTRING_CHOOSER 0x5
+#define MSG_DISPLAY 0x7
+
+void b_movescr_stack_push(u8* BS_ptr)
+{
+ B_BATTLESCRIPTS_STACK->ptr[B_BATTLESCRIPTS_STACK->size++] = BS_ptr;
+}
+
+void b_movescr_stack_push_cursor(void)
+{
+ B_BATTLESCRIPTS_STACK->ptr[B_BATTLESCRIPTS_STACK->size++] = gBattlescriptCurrInstr;
+}
+
+void b_movescr_stack_pop_cursor(void)
+{
+ gBattlescriptCurrInstr = B_BATTLESCRIPTS_STACK->ptr[--B_BATTLESCRIPTS_STACK->size];
+}
+
+u8 sub_8015894(void) //msg can't select a move
+{
+ u8 limitations = 0;
+ u16 move = gBattleMons[gActiveBank].moves[gBattleBufferB[gActiveBank][2]];
+ u8 holdEffect;
+ u16* choicedMove = CHOICED_MOVE(gActiveBank);
+ if (gDisableStructs[gActiveBank].disabledMove == move && move)
+ {
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ gCurrentMove = move;
+ gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionDisabledMove;
+ limitations++;
+ }
+ if (move == gLastUsedMove[gActiveBank] && move != MOVE_STRUGGLE && gBattleMons[gActiveBank].status2 & STATUS2_TORMENT)
+ {
+ CancelMultiTurnMoves(gActiveBank);
+ gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionTormented;
+ limitations++;
+ }
+ if (gDisableStructs[gActiveBank].tauntTimer1 && gBattleMoves[move].power == 0)
+ {
+ gCurrentMove = move;
+ gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionTaunted;
+ limitations++;
+ }
+ if (IsImprisoned(gActiveBank, move))
+ {
+ gCurrentMove = move;
+ gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionImprisoned;
+ limitations++;
+ }
+ if (gBattleMons[gActiveBank].item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[gActiveBank].holdEffect;
+ else
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item);
+ gStringBank = gActiveBank;
+ if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != move)
+ {
+ gCurrentMove = *choicedMove;
+ gLastUsedItem = gBattleMons[gActiveBank].item;
+ gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionChoiceBanded;
+ limitations++;
+ }
+ if (gBattleMons[gActiveBank].pp[gBattleBufferB[gActiveBank][2]] == 0)
+ {
+ gUnknown_02024C1C[gActiveBank] = BattleScript_MoveSelectionNoPP;
+ limitations++;
+ }
+ return limitations;
+}
+
+#define MOVE_LIMITATION_ZEROMOVE (1 << 0)
+#define MOVE_LIMITATION_PP (1 << 1)
+#define MOVE_LIMITATION_DISABLED (1 << 2)
+#define MOVE_LIMITATION_TORMENTED (1 << 3)
+#define MOVE_LIMITATION_TAUNT (1 << 4)
+#define MOVE_LIMITATION_IMPRISION (1 << 5)
+
+u8 CheckMoveLimitations(u8 bank, u8 unusableMoves, u8 check)
+{
+ u8 holdEffect;
+ u16* choicedMove = CHOICED_MOVE(bank);
+ s32 i;
+ if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY)
+ holdEffect = gEnigmaBerries[bank].holdEffect;
+ else
+ holdEffect = ItemId_GetHoldEffect(gBattleMons[bank].item);
+ gStringBank = bank;
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[bank].moves[i] == 0 && check & MOVE_LIMITATION_ZEROMOVE)
+ unusableMoves |= gBitTable[i];
+ if (gBattleMons[bank].pp[i] == 0 && check & MOVE_LIMITATION_PP)
+ unusableMoves |= gBitTable[i];
+ if (gBattleMons[bank].moves[i] == gDisableStructs[bank].disabledMove && check & MOVE_LIMITATION_DISABLED)
+ unusableMoves |= gBitTable[i];
+ if (gBattleMons[bank].moves[i] == gLastUsedMove[bank] && check & MOVE_LIMITATION_TORMENTED && gBattleMons[bank].status2 & STATUS2_TORMENT)
+ unusableMoves |= gBitTable[i];
+ if (gDisableStructs[bank].tauntTimer1 && check & MOVE_LIMITATION_TAUNT && gBattleMoves[gBattleMons[bank].moves[i]].power == 0)
+ unusableMoves |= gBitTable[i];
+ if (IsImprisoned(bank, gBattleMons[bank].moves[i]) && check & MOVE_LIMITATION_IMPRISION)
+ unusableMoves |= gBitTable[i];
+ if (gDisableStructs[bank].encoreTimer1 && gDisableStructs[bank].encoredMove != gBattleMons[bank].moves[i])
+ unusableMoves |= gBitTable[i];
+ if (holdEffect == HOLD_EFFECT_CHOICE_BAND && *choicedMove != 0 && *choicedMove != 0xFFFF && *choicedMove != gBattleMons[bank].moves[i])
+ unusableMoves |= gBitTable[i];
+ }
+ return unusableMoves;
+}
+
+bool8 AreAllMovesUnusable(void)
+{
+ u8 unusable;
+ unusable = CheckMoveLimitations(gActiveBank, 0, 0xFF);
+ if (unusable == 0xF) //all moves are unusable
+ {
+ gProtectStructs[gActiveBank].onlyStruggle = 1;
+ gUnknown_02024C1C[gActiveBank] = BattleScript_NoMovesLeft;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ gBattleBufferB[gActiveBank][3] = GetBankByPlayerAI((GetBankIdentity(gActiveBank) ^ 1) | (Random() & 2));
+ else
+ gBattleBufferB[gActiveBank][3] = GetBankByPlayerAI(GetBankIdentity(gActiveBank) ^ 1);
+ }
+ else
+ gProtectStructs[gActiveBank].onlyStruggle = 0;
+ return (unusable == 0xF);
+}
+
+u8 IsImprisoned(u8 bank, u16 move)
+{
+ u8 imprisionedMoves = 0;
+ u8 bankSide = GetBankSide(bank);
+ s32 i;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (bankSide != GetBankSide(i) && gStatuses3[i] & STATUS3_IMPRISIONED)
+ {
+ s32 j;
+ for (j = 0; j < 4; j++)
+ {
+ if (move == gBattleMons[i].moves[j])
+ break;
+ }
+ if (j < 4)
+ imprisionedMoves++;
+ }
+ }
+ return imprisionedMoves;
+}
+
+u8 UpdateTurnCounters(void)
+{
+ u8 effect = 0;
+ s32 i;
+
+ for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankAttacker]; gBankAttacker++)
+ {
+ }
+ for (gBankTarget = 0; gBankTarget < gNoOfAllBanks && gAbsentBankFlags & gBitTable[gBankTarget]; gBankTarget++)
+ {
+ }
+
+ do
+ {
+ u8 sideBank;
+
+ switch (BATTLE_STRUCT->turncountersTracker)
+ {
+ case 0:
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ gTurnOrder[i] = i;
+ }
+ for (i = 0; i < gNoOfAllBanks - 1; i++)
+ {
+ s32 j;
+ for (j = i + 1; j < gNoOfAllBanks; j++)
+ {
+ if (GetWhoStrikesFirst(gTurnOrder[i], gTurnOrder[j], 0))
+ sub_8012FBC(i, j);
+ }
+ }
+ BATTLE_STRUCT->turncountersTracker++;
+ BATTLE_STRUCT->turnSideTracker = 0;
+ case 1:
+ while (BATTLE_STRUCT->turnSideTracker < 2)
+ {
+ gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker;
+
+ if (gSideAffecting[sideBank] & SIDE_STATUS_REFLECT)
+ {
+ if (--gSideTimer[sideBank].reflectTimer == 0)
+ {
+
+ gSideAffecting[sideBank] &= ~SIDE_STATUS_REFLECT;
+ b_call_bc_move_exec(gUnknown_081D9030);
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = MOVE_REFLECT;
+ gBattleTextBuff1[3] = MOVE_REFLECT >> 8;
+ gBattleTextBuff1[4] = EOS;
+ effect++;
+ }
+ }
+ BATTLE_STRUCT->turnSideTracker++;
+ if (effect)
+ break;
+ }
+ if (!effect)
+ {
+ BATTLE_STRUCT->turncountersTracker++;
+ BATTLE_STRUCT->turnSideTracker = 0;
+ }
+ break;
+ case 2:
+ while (BATTLE_STRUCT->turnSideTracker < 2)
+ {
+ gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker;
+ if (gSideAffecting[sideBank] & SIDE_STATUS_LIGHTSCREEN)
+ {
+ if (--gSideTimer[sideBank].lightscreenTimer == 0)
+ {
+ gSideAffecting[sideBank] &= ~SIDE_STATUS_LIGHTSCREEN;
+ b_call_bc_move_exec(gUnknown_081D9030);
+ gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = MOVE_LIGHT_SCREEN;
+ gBattleTextBuff1[3] = MOVE_LIGHT_SCREEN >> 8;
+ gBattleTextBuff1[4] = EOS;
+ effect++;
+ }
+ }
+ BATTLE_STRUCT->turnSideTracker++;
+ if (effect)
+ break;
+ }
+ if (!effect)
+ {
+ BATTLE_STRUCT->turncountersTracker++;
+ BATTLE_STRUCT->turnSideTracker = 0;
+ }
+ break;
+ case 3:
+ while (BATTLE_STRUCT->turnSideTracker < 2)
+ {
+ gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker;
+ if (gSideTimer[sideBank].mistTimer && --gSideTimer[sideBank].mistTimer == 0)
+ {
+ gSideAffecting[sideBank] &= ~SIDE_STATUS_MIST;
+ b_call_bc_move_exec(gUnknown_081D9030);
+ gBattleCommunication[MULTISTRING_CHOOSER] = sideBank;
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = MOVE_MIST;
+ gBattleTextBuff1[3] = MOVE_MIST >> 8;
+ gBattleTextBuff1[4] = EOS;
+ effect++;
+ }
+ BATTLE_STRUCT->turnSideTracker++;
+ if (effect)
+ break;
+ }
+ if (!effect)
+ {
+ BATTLE_STRUCT->turncountersTracker++;
+ BATTLE_STRUCT->turnSideTracker = 0;
+ }
+ break;
+ case 4:
+ while (BATTLE_STRUCT->turnSideTracker < 2)
+ {
+ gActiveBank = gBankAttacker = sideBank = BATTLE_STRUCT->turnSideTracker;
+ if (gSideAffecting[sideBank] & SIDE_STATUS_SAFEGUARD)
+ {
+ if (--gSideTimer[sideBank].safeguardTimer == 0)
+ {
+ gSideAffecting[sideBank] &= ~SIDE_STATUS_SAFEGUARD;
+ b_call_bc_move_exec(gUnknown_081D9041);
+ effect++;
+ }
+ }
+ BATTLE_STRUCT->turnSideTracker++;
+ if (effect)
+ break;
+ }
+ if (!effect)
+ {
+ BATTLE_STRUCT->turncountersTracker++;
+ BATTLE_STRUCT->turnSideTracker = 0;
+ }
+ break;
+ case 5:
+ while (BATTLE_STRUCT->turnSideTracker < gNoOfAllBanks)
+ {
+ gActiveBank = gTurnOrder[BATTLE_STRUCT->turnSideTracker];
+ if (gWishFutureKnock.wishCounter[gActiveBank] && --gWishFutureKnock.wishCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp)
+ {
+ gBankTarget = gActiveBank;
+ b_call_bc_move_exec(BattleScript_WishComesTrue);
+ effect++;
+ }
+ BATTLE_STRUCT->turnSideTracker++;
+ if (effect)
+ break;
+ }
+ if (!effect)
+ {
+ BATTLE_STRUCT->turncountersTracker++;
+ }
+ break;
+ case 6:
+ if (gBattleWeather & WEATHER_RAIN_ANY)
+ {
+ if (!(gBattleWeather & WEATHER_RAIN_PERMANENT))
+ {
+ if (--gWishFutureKnock.weatherDuration == 0)
+ {
+ gBattleWeather &= ~WEATHER_RAIN_TEMPORARY;
+ gBattleWeather &= ~WEATHER_RAIN_DOWNPOUR;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else if (gBattleWeather & WEATHER_RAIN_DOWNPOUR)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ b_call_bc_move_exec(gUnknown_081D8F62);
+ effect++;
+ }
+ BATTLE_STRUCT->turncountersTracker++;
+ break;
+ case 7:
+ if (gBattleWeather & WEATHER_SANDSTORM_ANY)
+ {
+ if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT) && --gWishFutureKnock.weatherDuration == 0)
+ {
+ gBattleWeather &= ~WEATHER_SANDSTORM_TEMPORARY;
+ gBattlescriptCurrInstr = gUnknown_081D8FFF;
+ }
+ else
+ gBattlescriptCurrInstr = gUnknown_081D8F7D;
+
+ BATTLE_STRUCT->animArg1 = 0xC;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ b_call_bc_move_exec(gBattlescriptCurrInstr);
+ effect++;
+ }
+ BATTLE_STRUCT->turncountersTracker++;
+ break;
+ case 8:
+ if (gBattleWeather & WEATHER_SUN_ANY)
+ {
+ if (!(gBattleWeather & WEATHER_SUN_PERMANENT) && --gWishFutureKnock.weatherDuration == 0)
+ {
+ gBattleWeather &= ~WEATHER_SUN_TEMPORARY;
+ gBattlescriptCurrInstr = gUnknown_081D9016;
+ }
+ else
+ gBattlescriptCurrInstr = gUnknown_081D9008;
+
+ b_call_bc_move_exec(gBattlescriptCurrInstr);
+ effect++;
+ }
+ BATTLE_STRUCT->turncountersTracker++;
+ break;
+ case 9:
+ if (gBattleWeather & WEATHER_HAIL)
+ {
+ if (--gWishFutureKnock.weatherDuration == 0)
+ {
+ gBattleWeather &= ~WEATHER_HAIL;
+ gBattlescriptCurrInstr = gUnknown_081D8FFF;
+ }
+ else
+ gBattlescriptCurrInstr = gUnknown_081D8F7D;
+
+ BATTLE_STRUCT->animArg1 = 0xD;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ b_call_bc_move_exec(gBattlescriptCurrInstr);
+ effect++;
+ }
+ BATTLE_STRUCT->turncountersTracker++;
+ break;
+ case 10:
+ effect++;
+ break;
+ }
+ } while (effect == 0);
+ return (gBattleMainFunc != BattleTurnPassed);
+}
+
+#define TURNBASED_MAX_CASE 19
+
+u8 TurnBasedEffects(void)
+{
+ u8 effect = 0;
+
+ gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20);
+ while (BATTLE_STRUCT->turnEffectsBank < gNoOfAllBanks && BATTLE_STRUCT->turnEffectsTracker <= TURNBASED_MAX_CASE)
+ {
+ gActiveBank = gBankAttacker = gTurnOrder[BATTLE_STRUCT->turnEffectsBank];
+ if (gAbsentBankFlags & gBitTable[gActiveBank])
+ {
+ BATTLE_STRUCT->turnEffectsBank++;
+ }
+ else
+ {
+ switch (BATTLE_STRUCT->turnEffectsTracker)
+ {
+ case 0: // ingrain
+ if ((gStatuses3[gActiveBank] & STATUS3_ROOTED)
+ && gBattleMons[gActiveBank].hp != gBattleMons[gActiveBank].maxHP
+ && gBattleMons[gActiveBank].hp != 0)
+ {
+ gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+ b_call_bc_move_exec(BattleScript_IngrainTurnHeal);
+ effect++;
+ }
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 1: // end turn abilities
+ if (AbilityBattleEffects(ABILITYEFFECT_ENDTURN, gActiveBank, 0, 0, 0))
+ effect++;
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 2: // item effects
+ if (ItemBattleEffects(1, gActiveBank, 0))
+ effect++;
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 18: // item effects again
+ if (ItemBattleEffects(1, gActiveBank, 1))
+ effect++;
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 3: // leech seed
+ if (gStatuses3[gActiveBank] & STATUS3_LEECHSEED && gBattleMons[gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK].hp != 0 && gBattleMons[gActiveBank].hp != 0)
+ {
+ gBankTarget = gStatuses3[gActiveBank] & STATUS3_LEECHSEED_BANK; //funny how the 'target' is actually the bank that receives HP
+ gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ BATTLE_STRUCT->animArg1 = gBankTarget;
+ BATTLE_STRUCT->animArg2 = gBankAttacker;
+ b_call_bc_move_exec(BattleScript_LeechSeedTurnDrain);
+ effect++;
+ }
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 4: // poison
+ if ((gBattleMons[gActiveBank].status1 & STATUS_POISON) && gBattleMons[gActiveBank].hp != 0)
+ {
+ gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ b_call_bc_move_exec(BattleScript_PoisonTurnDmg);
+ effect++;
+ }
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 5: // toxic poison
+ if ((gBattleMons[gActiveBank].status1 & STATUS_TOXIC_POISON) && gBattleMons[gActiveBank].hp != 0)
+ {
+ gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ if ((gBattleMons[gActiveBank].status1 & 0xF00) != 0xF00) //not 16 turns
+ gBattleMons[gActiveBank].status1 += 0x100;
+ gBattleMoveDamage *= (gBattleMons[gActiveBank].status1 & 0xF00) >> 8;
+ b_call_bc_move_exec(BattleScript_PoisonTurnDmg);
+ effect++;
+ }
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 6: // burn
+ if ((gBattleMons[gActiveBank].status1 & STATUS_BURN) && gBattleMons[gActiveBank].hp != 0)
+ {
+ gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 8;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ b_call_bc_move_exec(BattleScript_BurnTurnDmg);
+ effect++;
+ }
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 7: // spooky nightmares
+ if ((gBattleMons[gActiveBank].status2 & STATUS2_NIGHTMARE) && gBattleMons[gActiveBank].hp != 0)
+ {
+ // missing sleep check
+ gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ b_call_bc_move_exec(BattleScript_NightmareTurnDmg);
+ effect++;
+ }
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 8: // curse
+ if ((gBattleMons[gActiveBank].status2 & STATUS2_CURSED) && gBattleMons[gActiveBank].hp != 0)
+ {
+ gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ b_call_bc_move_exec(BattleScript_CurseTurnDmg);
+ effect++;
+ }
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 9: // wrap
+ if ((gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) && gBattleMons[gActiveBank].hp != 0)
+ {
+ gBattleMons[gActiveBank].status2 -= 0x2000;
+ if (gBattleMons[gActiveBank].status2 & STATUS2_WRAPPED) // damaged by wrap
+ {
+ BATTLE_STRUCT->animArg1 = ewram[gActiveBank * 2 + 0x16004];
+ BATTLE_STRUCT->animArg2 = ewram[gActiveBank * 2 + 0x16005];
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = ewram[gActiveBank * 2 + 0x16004];
+ gBattleTextBuff1[3] = ewram[gActiveBank * 2 + 0x16005];
+ gBattleTextBuff1[4] = EOS;
+ gBattlescriptCurrInstr = BattleScript_WrapTurnDmg;
+ gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / 16;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ }
+ else // broke free
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = ewram[gActiveBank * 2 + 0x16004];
+ gBattleTextBuff1[3] = ewram[gActiveBank * 2 + 0x16005];
+ gBattleTextBuff1[4] = EOS;
+ gBattlescriptCurrInstr = BattleScript_WrapEnds;
+ }
+ b_call_bc_move_exec(gBattlescriptCurrInstr);
+ effect++;
+ }
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 10: // uproar
+ if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR)
+ {
+ for (gBankAttacker = 0; gBankAttacker < gNoOfAllBanks; gBankAttacker++)
+ {
+ if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP)
+ && gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF)
+ {
+ gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP);
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ b_call_bc_move_exec(gUnknown_081D950F);
+ gActiveBank = gBankAttacker;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ }
+ }
+ if (gBankAttacker != gNoOfAllBanks)
+ {
+ effect = 2; // a pokemon was awaken
+ break;
+ }
+ else
+ {
+ gBankAttacker = gActiveBank;
+ gBattleMons[gActiveBank].status2 -= 0x10; // uproar timer goes down
+ if (sub_8015660(gActiveBank))
+ {
+ CancelMultiTurnMoves(gActiveBank);
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else if (gBattleMons[gActiveBank].status2 & STATUS2_UPROAR)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattleMons[gActiveBank].status2 |= STATUS2_MULTIPLETURNS;
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ CancelMultiTurnMoves(gActiveBank);
+ }
+ b_call_bc_move_exec(gUnknown_081D957E);
+ effect = 1;
+ }
+ }
+ if (effect != 2)
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 11: // thrash
+ if (gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE)
+ {
+ gBattleMons[gActiveBank].status2 -= 0x400;
+ if (sub_8015660(gActiveBank))
+ CancelMultiTurnMoves(gActiveBank);
+ else if (!(gBattleMons[gActiveBank].status2 & STATUS2_LOCK_CONFUSE)
+ && (gBattleMons[gActiveBank].status2 & STATUS2_MULTIPLETURNS))
+ {
+ gBattleMons[gActiveBank].status2 &= ~(STATUS2_MULTIPLETURNS);
+ if (!(gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x47;
+ SetMoveEffect(1, 0);
+ if (gBattleMons[gActiveBank].status2 & STATUS2_CONFUSION)
+ b_call_bc_move_exec(BattleScript_ThrashConfuses);
+ effect++;
+ }
+ }
+ }
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 12: // disable
+ if (gDisableStructs[gActiveBank].disableTimer1 != 0)
+ {
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gDisableStructs[gActiveBank].disabledMove == gBattleMons[gActiveBank].moves[i])
+ break;
+ }
+ if (i == 4) // pokemon does not have the disabled move anymore
+ {
+ gDisableStructs[gActiveBank].disabledMove = 0;
+ gDisableStructs[gActiveBank].disableTimer1 = 0;
+ }
+ else if (--gDisableStructs[gActiveBank].disableTimer1 == 0) // disable ends
+ {
+ gDisableStructs[gActiveBank].disabledMove = 0;
+ b_call_bc_move_exec(BattleScript_DisabledNoMore);
+ effect++;
+ }
+ }
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 13: // encore
+ if (gDisableStructs[gActiveBank].encoreTimer1 != 0)
+ {
+ if (gBattleMons[gActiveBank].moves[gDisableStructs[gActiveBank].encoredMovePos] != gDisableStructs[gActiveBank].encoredMove) // pokemon does not have the encored move anymore
+ {
+ gDisableStructs[gActiveBank].encoredMove = 0;
+ gDisableStructs[gActiveBank].encoreTimer1 = 0;
+ }
+ else if (--gDisableStructs[gActiveBank].encoreTimer1 == 0
+ || gBattleMons[gActiveBank].pp[gDisableStructs[gActiveBank].encoredMovePos] == 0)
+ {
+ gDisableStructs[gActiveBank].encoredMove = 0;
+ gDisableStructs[gActiveBank].encoreTimer1 = 0;
+ b_call_bc_move_exec(BattleScript_EncoredNoMore);
+ effect++;
+ }
+ }
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 14: // lock-on decrement
+ if (gStatuses3[gActiveBank] & STATUS3_ALWAYS_HITS)
+ gStatuses3[gActiveBank] -= 0x8;
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 15: // charge
+ if (gDisableStructs[gActiveBank].chargeTimer1 && --gDisableStructs[gActiveBank].chargeTimer1 == 0)
+ gStatuses3[gActiveBank] &= ~STATUS3_CHARGED_UP;
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 16: // taunt
+ if (gDisableStructs[gActiveBank].tauntTimer1)
+ gDisableStructs[gActiveBank].tauntTimer1--;
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 17: // yawn
+ if (gStatuses3[gActiveBank] & STATUS3_YAWN)
+ {
+ gStatuses3[gActiveBank] -= 0x800;
+ if (!(gStatuses3[gActiveBank] & STATUS3_YAWN) && !(gBattleMons[gActiveBank].status1 & STATUS_ANY)
+ && gBattleMons[gActiveBank].ability != ABILITY_VITAL_SPIRIT
+ && gBattleMons[gActiveBank].ability != ABILITY_INSOMNIA && !UproarWakeUpCheck(gActiveBank))
+ {
+ CancelMultiTurnMoves(gActiveBank);
+ gBattleMons[gActiveBank].status1 |= (Random() & 3) + 2;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ gEffectBank = gActiveBank;
+ b_call_bc_move_exec(BattleScript_YawnMakesAsleep);
+ effect++;
+ }
+ }
+ BATTLE_STRUCT->turnEffectsTracker++;
+ break;
+ case 19: // done
+ BATTLE_STRUCT->turnEffectsTracker = 0;
+ BATTLE_STRUCT->turnEffectsBank++;
+ break;
+ }
+ if (effect != 0)
+ return effect;
+ }
+ }
+ gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20);
+ return 0;
+}
+
+bool8 sub_80170DC(void) // handle future sight and perish song
+{
+ gHitMarker |= (HITMARKER_GRUDGE | HITMARKER_x20);
+ switch (BATTLE_STRUCT->sub80170DC_Tracker)
+ {
+ case 0: // future sight
+ while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks)
+ {
+ gActiveBank = BATTLE_STRUCT->sub80170DC_Bank;
+ if (gAbsentBankFlags & gBitTable[gActiveBank])
+ BATTLE_STRUCT->sub80170DC_Bank++;
+ else
+ {
+ BATTLE_STRUCT->sub80170DC_Bank++;
+ if (gWishFutureKnock.futureSightCounter[gActiveBank] && --gWishFutureKnock.futureSightCounter[gActiveBank] == 0 && gBattleMons[gActiveBank].hp)
+ {
+ if (gWishFutureKnock.futureSightMove[gActiveBank] == MOVE_FUTURE_SIGHT)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else //Doom Desire
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = gWishFutureKnock.futureSightMove[gActiveBank];
+ gBattleTextBuff1[3] = gWishFutureKnock.futureSightMove[gActiveBank] >> 8;
+ gBattleTextBuff1[4] = 0xFF;
+ gBankTarget = gActiveBank;
+ gBankAttacker = gWishFutureKnock.futureSightAttacker[gActiveBank];
+ gBattleMoveDamage = gWishFutureKnock.futureSightDmg[gActiveBank];
+ gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF;
+ b_call_bc_move_exec(BattleScript_FutureSightHits);
+ return 1;
+ }
+ }
+ }
+ BATTLE_STRUCT->sub80170DC_Tracker = 1;
+ BATTLE_STRUCT->sub80170DC_Bank = 0;
+ case 1: // perish song
+ while (BATTLE_STRUCT->sub80170DC_Bank < gNoOfAllBanks)
+ {
+ gActiveBank = gBankAttacker = gTurnOrder[BATTLE_STRUCT->sub80170DC_Bank];
+ if (gAbsentBankFlags & gBitTable[gActiveBank])
+ BATTLE_STRUCT->sub80170DC_Bank++;
+ else
+ {
+ BATTLE_STRUCT->sub80170DC_Bank++;
+ if (gStatuses3[gActiveBank] & STATUS3_PERISH_SONG)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 1;
+ gBattleTextBuff1[2] = 1;
+ gBattleTextBuff1[3] = 1;
+ gBattleTextBuff1[4] = gDisableStructs[gActiveBank].perishSong1;
+ gBattleTextBuff1[5] = 0xFF;
+ if (gDisableStructs[gActiveBank].perishSong1 == 0)
+ {
+ gStatuses3[gActiveBank] &= ~(STATUS3_PERISH_SONG);
+ gBattleMoveDamage = gBattleMons[gActiveBank].hp;
+ gBattlescriptCurrInstr = BattleScript_PerishSongHits;
+ }
+ else
+ {
+ gDisableStructs[gActiveBank].perishSong1--;
+ gBattlescriptCurrInstr = BattleScript_PerishSongTimerGoesDown;
+ }
+ b_call_bc_move_exec(gBattlescriptCurrInstr);
+ return 1;
+ }
+ }
+ }
+ break;
+ }
+ gHitMarker &= ~(HITMARKER_GRUDGE | HITMARKER_x20);
+ return 0;
+}
+
+#define sub_80173A4_MAX_CASE 7
+
+bool8 sub_80173A4(void)
+{
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ return 0;
+ do
+ {
+ int i;
+ switch (BATTLE_STRUCT->sub80173A4_Tracker)
+ {
+ case 0:
+ BATTLE_STRUCT->unk1605A = 0;
+ BATTLE_STRUCT->sub80173A4_Tracker++;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gAbsentBankFlags & gBitTable[i] && !sub_8018018(i, 6, 6))
+ gAbsentBankFlags &= ~(gBitTable[i]);
+ }
+ case 1:
+ do
+ {
+ gBank1 = gBankTarget = BATTLE_STRUCT->unk1605A;
+ if (gBattleMons[BATTLE_STRUCT->unk1605A].hp == 0 && !(BATTLE_STRUCT->unk16113 & gBitTable[gBattlePartyID[BATTLE_STRUCT->unk1605A]]) && !(gAbsentBankFlags & gBitTable[BATTLE_STRUCT->unk1605A]))
+ {
+ b_call_bc_move_exec(gUnknown_081D8C72);
+ BATTLE_STRUCT->sub80173A4_Tracker = 2;
+ return 1;
+ }
+ } while (++BATTLE_STRUCT->unk1605A != gNoOfAllBanks);
+ BATTLE_STRUCT->sub80173A4_Tracker = 3;
+ break;
+ case 2:
+ sub_8015740(gBank1);
+ if (++BATTLE_STRUCT->unk1605A == gNoOfAllBanks)
+ BATTLE_STRUCT->sub80173A4_Tracker = 3;
+ else
+ BATTLE_STRUCT->sub80173A4_Tracker = 1;
+ break;
+ case 3:
+ BATTLE_STRUCT->unk1605A = 0;
+ BATTLE_STRUCT->sub80173A4_Tracker++;
+ case 4:
+ do
+ {
+ gBank1 = gBankTarget = BATTLE_STRUCT->unk1605A; //or should banks be switched?
+ if (gBattleMons[BATTLE_STRUCT->unk1605A].hp == 0 && !(gAbsentBankFlags & gBitTable[BATTLE_STRUCT->unk1605A]))
+ {
+ b_call_bc_move_exec(gUnknown_081D8C7B);
+ BATTLE_STRUCT->sub80173A4_Tracker = 5;
+ return 1;
+ }
+ } while (++BATTLE_STRUCT->unk1605A != gNoOfAllBanks);
+ BATTLE_STRUCT->sub80173A4_Tracker = 6;
+ break;
+ case 5:
+ if (++BATTLE_STRUCT->unk1605A == gNoOfAllBanks)
+ BATTLE_STRUCT->sub80173A4_Tracker = 6;
+ else
+ BATTLE_STRUCT->sub80173A4_Tracker = 4;
+ break;
+ case 6:
+ if (AbilityBattleEffects(9, 0, 0, 0, 0) || AbilityBattleEffects(0xB, 0, 0, 0, 0) || ItemBattleEffects(1, 0, 1) || AbilityBattleEffects(6, 0, 0, 0, 0))
+ return 1;
+ BATTLE_STRUCT->sub80173A4_Tracker++;
+ break;
+ case 7:
+ break;
+ }
+ } while (BATTLE_STRUCT->sub80173A4_Tracker != sub_80173A4_MAX_CASE);
+ return 0;
+}
+
+void b_clear_atk_up_if_hit_flag_unless_enraged(void)
+{
+ int i;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleMons[i].status2 & STATUS2_RAGE && gChosenMovesByBanks[i] != MOVE_RAGE)
+ gBattleMons[i].status2 &= ~(STATUS2_RAGE);
+ }
+}
+
+#define ATKCANCELLER_MAX_CASE 14
+
+u8 AtkCanceller_UnableToUseMove(void)
+{
+ u8 effect = 0;
+ s32* bideDmg = &BATTLE_STRUCT->bideDmg;
+ do
+ {
+ switch (BATTLE_STRUCT->atkCancellerTracker)
+ {
+ case 0: // flags clear
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_DESTINY_BOND);
+ gStatuses3[gBankAttacker] &= ~(STATUS3_GRUDGE);
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 1: // check being asleep
+ if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP)
+ {
+ if (UproarWakeUpCheck(gBankAttacker))
+ {
+ gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP);
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+ b_movescr_stack_push_cursor();
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
+ effect = 2;
+ }
+ else
+ {
+ u8 toSub;
+ if (gBattleMons[gBankAttacker].ability == ABILITY_EARLY_BIRD)
+ toSub = 2;
+ else
+ toSub = 1;
+ if ((gBattleMons[gBankAttacker].status1 & STATUS_SLEEP) < toSub)
+ gBattleMons[gBankAttacker].status1 &= ~(STATUS_SLEEP);
+ else
+ gBattleMons[gBankAttacker].status1 -= toSub;
+ if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP)
+ {
+ if (gCurrentMove != MOVE_SNORE && gCurrentMove != MOVE_SLEEP_TALK)
+ {
+ gBattlescriptCurrInstr = BattleScript_MoveUsedIsAsleep;
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ effect = 2;
+ }
+ }
+ else
+ {
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_NIGHTMARE);
+ b_movescr_stack_push_cursor();
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattlescriptCurrInstr = BattleScript_MoveUsedWokeUp;
+ effect = 2;
+ }
+ }
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 2: // check being frozen
+ if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE)
+ {
+ if (Random() % 5)
+ {
+ if (gBattleMoves[gCurrentMove].effect != EFFECT_THAW_HIT) // unfreezing via a move effect happens in case 13
+ {
+ gBattlescriptCurrInstr = BattleScript_MoveUsedIsFrozen;
+ gHitMarker |= HITMARKER_NO_ATTACKSTRING;
+ }
+ else
+ {
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ }
+ }
+ else // unfreeze
+ {
+ gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ effect = 2;
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 3: // truant
+ if (gBattleMons[gBankAttacker].ability == ABILITY_TRUANT && gDisableStructs[gBankAttacker].truantCounter)
+ {
+ CancelMultiTurnMoves(gBankAttacker);
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ effect = 1;
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 4: // recharge
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_RECHARGE)
+ {
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RECHARGE);
+ gDisableStructs[gBankAttacker].rechargeCounter = 0;
+ CancelMultiTurnMoves(gBankAttacker);
+ gBattlescriptCurrInstr = BattleScript_MoveUsedMustRecharge;
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ effect = 1;
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 5: // flinch
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_FLINCHED)
+ {
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_FLINCHED);
+ gProtectStructs[gBankAttacker].flinchImmobility = 1;
+ CancelMultiTurnMoves(gBankAttacker);
+ gBattlescriptCurrInstr = BattleScript_MoveUsedFlinched;
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ effect = 1;
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 6: // disabled move
+ if (gDisableStructs[gBankAttacker].disabledMove == gCurrentMove && gDisableStructs[gBankAttacker].disabledMove != 0)
+ {
+ gProtectStructs[gBankAttacker].usedDisabledMove = 1;
+ BATTLE_STRUCT->scriptingActive = gBankAttacker;
+ CancelMultiTurnMoves(gBankAttacker);
+ gBattlescriptCurrInstr = BattleScript_MoveUsedIsDisabled;
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ effect = 1;
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 7: // taunt
+ if (gDisableStructs[gBankAttacker].tauntTimer1 && gBattleMoves[gCurrentMove].power == 0)
+ {
+ gProtectStructs[gBankAttacker].usedTauntedMove = 1;
+ CancelMultiTurnMoves(gBankAttacker);
+ gBattlescriptCurrInstr = BattleScript_MoveUsedIsTaunted;
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ effect = 1;
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 8: // imprisoned
+ if (IsImprisoned(gBankAttacker, gCurrentMove))
+ {
+ gProtectStructs[gBankAttacker].usedImprisionedMove = 1;
+ CancelMultiTurnMoves(gBankAttacker);
+ gBattlescriptCurrInstr = BattleScript_MoveUsedIsImprisoned;
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ effect = 1;
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 9: // confusion
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION)
+ {
+ gBattleMons[gBankAttacker].status2--;
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_CONFUSION)
+ {
+ if (Random() & 1)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ b_movescr_stack_push_cursor();
+ }
+ else // confusion dmg
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBankTarget = gBankAttacker;
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker);
+ gProtectStructs[gBankAttacker].confusionSelfDmg = 1;
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ }
+ gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfused;
+ }
+ else // snapped out of confusion
+ {
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_MoveUsedIsConfusedNoMore;
+ }
+ effect = 1;
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 10: // paralysis
+ if (gBattleMons[gBankAttacker].status1 & STATUS_PARALYSIS && (Random() % 4) == 0)
+ {
+ gProtectStructs[gBankAttacker].prlzImmobility = 1;
+ CancelMultiTurnMoves(gBankAttacker);
+ gBattlescriptCurrInstr = BattleScript_MoveUsedIsParalyzed;
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ effect = 1;
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 11: // infatuation
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
+ {
+ BATTLE_STRUCT->scriptingActive = CountTrailingZeroBits((gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION) >> 0x10);
+ if (Random() & 1)
+ b_movescr_stack_push_cursor();
+ else
+ {
+ b_movescr_stack_push(BattleScript_MoveUsedIsParalyzedCantAttack);
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ gProtectStructs[gBankAttacker].loveImmobility = 1;
+ CancelMultiTurnMoves(gBankAttacker);
+ }
+ gBattlescriptCurrInstr = BattleScript_MoveUsedIsInLove;
+ effect = 1;
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 12: // bide
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE)
+ {
+ gBattleMons[gBankAttacker].status2 -= 0x100;
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_BIDE)
+ gBattlescriptCurrInstr = BattleScript_BideStoringEnergy;
+ else
+ {
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS);
+ if (gTakenDmg[gBankAttacker])
+ {
+ gCurrentMove = MOVE_BIDE;
+ *bideDmg = gTakenDmg[gBankAttacker] * 2;
+ gBankTarget = gTakenDmgBanks[gBankAttacker];
+ if (gAbsentBankFlags & gBitTable[gBankTarget])
+ gBankTarget = GetMoveTarget(MOVE_BIDE, 1);
+ gBattlescriptCurrInstr = BattleScript_BideAttack;
+ }
+ else
+ gBattlescriptCurrInstr = BattleScript_BideNoEnergyToAttack;
+ }
+ effect = 1;
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 13: // move thawing
+ if (gBattleMons[gBankAttacker].status1 & STATUS_FREEZE)
+ {
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_THAW_HIT)
+ {
+ gBattleMons[gBankAttacker].status1 &= ~(STATUS_FREEZE);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_MoveUsedUnfroze;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ effect = 2;
+ }
+ BATTLE_STRUCT->atkCancellerTracker++;
+ break;
+ case 14: // last case
+ break;
+ }
+
+ } while (BATTLE_STRUCT->atkCancellerTracker != ATKCANCELLER_MAX_CASE && effect == 0);
+
+ if (effect == 2)
+ {
+ gActiveBank = gBankAttacker;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ return effect;
+}
+
+bool8 sub_8018018(u8 bank, u8 r1, u8 r2)
+{
+ struct Pokemon* party;
+ u8 r7;
+ u8 r6;
+ s32 i;
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ return 0;
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ r7 = sub_803FC34(bank);
+ if (GetBankSide(bank) == 0)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+ r6 = sub_803FBFC(r7);
+ for (i = r6 * 3; i < r6 * 3 + 3; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG)
+ break;
+ }
+ return (i == r6 * 3 + 3);
+ }
+ else
+ {
+ if (GetBankSide(bank) == 1)
+ {
+ r7 = GetBankByPlayerAI(1);
+ r6 = GetBankByPlayerAI(3);
+ party = gEnemyParty;
+ }
+ else
+ {
+ r7 = GetBankByPlayerAI(0);
+ r6 = GetBankByPlayerAI(2);
+ party = gPlayerParty;
+ }
+ if (r1 == 6)
+ r1 = gBattlePartyID[r7];
+ if (r2 == 6)
+ r2 = gBattlePartyID[r6];
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_HP) && GetMonData(&party[i], MON_DATA_SPECIES2) && GetMonData(&party[i], MON_DATA_SPECIES2) != SPECIES_EGG && i != r1 && i != r2 && i != ewram[r7 + 0x16068] && i != ewram[r6 + 0x16068])
+ break;
+ }
+ return (i == 6);
+ }
+}
+
+enum
+{
+ CASTFORM_NO_CHANGE, //0
+ CASTFORM_TO_NORMAL, //1
+ CASTFORM_TO_FIRE, //2
+ CASTFORM_TO_WATER, //3
+ CASTFORM_TO_ICE, //4
+};
+
+u8 CastformDataTypeChange(u8 bank)
+{
+ u8 formChange = 0;
+ if (gBattleMons[bank].species != SPECIES_CASTFORM || gBattleMons[bank].ability != ABILITY_FORECAST || gBattleMons[bank].hp == 0)
+ return CASTFORM_NO_CHANGE;
+ if (!WEATHER_HAS_EFFECT && gBattleMons[bank].type1 != TYPE_NORMAL && gBattleMons[bank].type2 != TYPE_NORMAL)
+ {
+ gBattleMons[bank].type1 = TYPE_NORMAL;
+ gBattleMons[bank].type2 = TYPE_NORMAL;
+ return CASTFORM_TO_NORMAL;
+ }
+ if (!WEATHER_HAS_EFFECT)
+ return CASTFORM_NO_CHANGE;
+ if (!(gBattleWeather & (WEATHER_RAIN_ANY | WEATHER_SUN_ANY | WEATHER_HAIL)) && gBattleMons[bank].type1 != TYPE_NORMAL && gBattleMons[bank].type2 != TYPE_NORMAL)
+ {
+ gBattleMons[bank].type1 = TYPE_NORMAL;
+ gBattleMons[bank].type2 = TYPE_NORMAL;
+ formChange = CASTFORM_TO_NORMAL;
+ }
+ if (gBattleWeather & WEATHER_SUN_ANY && gBattleMons[bank].type1 != TYPE_FIRE && gBattleMons[bank].type2 != TYPE_FIRE)
+ {
+ gBattleMons[bank].type1 = TYPE_FIRE;
+ gBattleMons[bank].type2 = TYPE_FIRE;
+ formChange = CASTFORM_TO_FIRE;
+ }
+ if (gBattleWeather & WEATHER_RAIN_ANY && gBattleMons[bank].type1 != TYPE_WATER && gBattleMons[bank].type2 != TYPE_WATER)
+ {
+ gBattleMons[bank].type1 = TYPE_WATER;
+ gBattleMons[bank].type2 = TYPE_WATER;
+ formChange = CASTFORM_TO_WATER;
+ }
+ if (gBattleWeather & WEATHER_HAIL && gBattleMons[bank].type1 != TYPE_ICE && gBattleMons[bank].type2 != TYPE_ICE)
+ {
+ gBattleMons[bank].type1 = TYPE_ICE;
+ gBattleMons[bank].type2 = TYPE_ICE;
+ formChange = CASTFORM_TO_ICE;
+ }
+ return formChange;
+}
+
+#ifdef NONMATCHING
+
+struct Struct2017100
+{
+ u32 arr[4];
+};
+
+#define ewram17100 (*(struct Struct2017100 *)(ewram + 0x17100))
+
+u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
+{
+ u8 effect = 0;
+ struct Pokemon* pokeAtk;
+ struct Pokemon* pokeDef;
+ u16 speciesAtk;
+ u16 speciesDef;
+ u32 pidAtk;
+ u32 pidDef;
+
+ if (gBankAttacker >= gNoOfAllBanks)
+ gBankAttacker = bank;
+ if (GetBankSide(gBankAttacker) == 0)
+ pokeAtk = &gPlayerParty[gBattlePartyID[gBankAttacker]];
+ else
+ pokeAtk = &gEnemyParty[gBattlePartyID[gBankAttacker]];
+
+ if (gBankTarget >= gNoOfAllBanks)
+ gBankTarget = bank;
+ if (GetBankSide(gBankTarget) == 0)
+ pokeDef = &gPlayerParty[gBattlePartyID[gBankTarget]];
+ else
+ pokeDef = &gEnemyParty[gBattlePartyID[gBankTarget]];
+
+ speciesAtk = GetMonData(pokeAtk, MON_DATA_SPECIES);
+ pidAtk = GetMonData(pokeAtk, MON_DATA_PERSONALITY);
+
+ speciesDef = GetMonData(pokeDef, MON_DATA_SPECIES);
+ pidDef = GetMonData(pokeDef, MON_DATA_PERSONALITY);
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) // why isn't that check done at the beginning?
+ {
+ //_08018436
+ int i; // r4
+ u16 move;
+ // Hmm...
+ #define moveType moveArg
+ //u16 moveType;
+ u8 side;
+
+ if (special)
+ gLastUsedAbility = special;
+ else
+ gLastUsedAbility = gBattleMons[bank].ability;
+
+ if (moveArg)
+ move = moveArg;
+ else
+ move = gCurrentMove;
+
+ if (BATTLE_STRUCT->dynamicMoveType)
+ moveType = BATTLE_STRUCT->dynamicMoveType & 0x3F;
+ else
+ moveType = gBattleMoves[move].type;
+
+ //_080184AC
+ switch (caseID)
+ {
+ case ABILITYEFFECT_ON_SWITCHIN: // 0
+ //_08018518
+ if (gBankAttacker >= gNoOfAllBanks)
+ gBankAttacker = bank;
+ switch (gLastUsedAbility)
+ {
+ case 0xFF: //weather from overworld
+ //_08018586
+ switch (weather_get_current())
+ {
+ case 3:
+ case 5:
+ case 13:
+ if (!(gBattleWeather & WEATHER_RAIN_ANY))
+ {
+ gBattleWeather = (WEATHER_RAIN_TEMPORARY | WEATHER_RAIN_PERMANENT);
+ BATTLE_STRUCT->animArg1 = 0xA;
+ BATTLE_STRUCT->scriptingActive = bank;
+ effect++;
+ }
+ break;
+ case 8:
+ if (!(gBattleWeather & WEATHER_SANDSTORM_ANY))
+ {
+ gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
+ BATTLE_STRUCT->animArg1 = 0xC;
+ BATTLE_STRUCT->scriptingActive = bank;
+ effect++;
+ }
+ break;
+ case 12:
+ if (!(gBattleWeather & WEATHER_SUN_ANY))
+ {
+ gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
+ BATTLE_STRUCT->animArg1 = 0xB;
+ BATTLE_STRUCT->scriptingActive = bank;
+ effect++;
+ }
+ break;
+ }
+ if (effect)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = weather_get_current();
+ b_push_move_exec(gUnknown_081D901D);
+ }
+ break;
+ case ABILITY_DRIZZLE:
+ //_08018680
+ if (!(gBattleWeather & WEATHER_RAIN_PERMANENT))
+ {
+ gBattleWeather = (WEATHER_RAIN_PERMANENT | WEATHER_RAIN_TEMPORARY);
+ b_push_move_exec(BattleScript_DrizzleActivates);
+ BATTLE_STRUCT->scriptingActive = bank;
+ effect++;
+ }
+ break;
+ case ABILITY_SAND_STREAM:
+ //_080186B8
+ if (!(gBattleWeather & WEATHER_SANDSTORM_PERMANENT))
+ {
+ gBattleWeather = (WEATHER_SANDSTORM_PERMANENT | WEATHER_SANDSTORM_TEMPORARY);
+ b_push_move_exec(BattleScript_SandstreamActivates);
+ BATTLE_STRUCT->scriptingActive = bank;
+ effect++;
+ }
+ break;
+ case ABILITY_DROUGHT:
+ //_080186F0
+ if (!(gBattleWeather & WEATHER_SUN_PERMANENT))
+ {
+ gBattleWeather = (WEATHER_SUN_PERMANENT | WEATHER_SUN_TEMPORARY);
+ b_push_move_exec(BattleScript_DroughtActivates);
+ BATTLE_STRUCT->scriptingActive = bank;
+ effect++;
+ }
+ break;
+ case ABILITY_INTIMIDATE:
+ //_08018728
+ if (!(gSpecialStatuses[bank].intimidatedPoke))
+ {
+ gStatuses3[bank] |= STATUS3_INTIMIDATE_POKES;
+ gSpecialStatuses[bank].intimidatedPoke = 1;
+ }
+ break;
+ case ABILITY_FORECAST:
+ //_0801875C
+ effect = CastformDataTypeChange(bank);
+ if (effect != 0)
+ {
+ b_push_move_exec(BattleScript_CastformChange);
+ BATTLE_STRUCT->scriptingActive = bank;
+ BATTLE_STRUCT->castformToChangeInto = effect - 1;
+ }
+ break;
+ case ABILITY_TRACE:
+ //_080187A0
+ if (!(gSpecialStatuses[bank].traced))
+ {
+ gStatuses3[bank] |= STATUS3_TRACE;
+ gSpecialStatuses[bank].traced = 1;
+ }
+ break;
+ case ABILITY_CLOUD_NINE:
+ case ABILITY_AIR_LOCK:
+ //_080187DC
+ {
+ u8 i;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ // TODO: i should be in r6 here
+ //asm("":::"r4","r5");
+ effect = CastformDataTypeChange(i);
+ if (effect != 0)
+ {
+ b_push_move_exec(BattleScript_CastformChange);
+ BATTLE_STRUCT->scriptingActive = i;
+ BATTLE_STRUCT->castformToChangeInto = effect - 1;
+ break;
+ }
+ }
+ }
+ break;
+ }
+ break;
+ case ABILITYEFFECT_ENDTURN: // 1
+ //_08018814
+ if (gBattleMons[bank].hp != 0)
+ {
+ gBankAttacker = bank;
+ switch (gLastUsedAbility)
+ {
+ case ABILITY_RAIN_DISH:
+ if (WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY)
+ && gBattleMons[bank].maxHP > gBattleMons[bank].hp)
+ {
+ gLastUsedAbility = ABILITY_RAIN_DISH; //why
+ b_push_move_exec(BattleScript_RainDishActivates);
+ gBattleMoveDamage = gBattleMons[bank].maxHP / 16;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+ effect++;
+ }
+ break;
+ case ABILITY_SHED_SKIN:
+ if ((gBattleMons[bank].status1 & STATUS_ANY) && (Random() % 3) == 0)
+ {
+ if (gBattleMons[bank].status1 & (STATUS_POISON | STATUS_TOXIC_POISON))
+ StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
+ if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
+ if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
+ StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
+ if (gBattleMons[bank].status1 & STATUS_BURN)
+ StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
+ if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
+ gBattleMons[bank].status1 = 0;
+ //gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE); fixed in Emerald
+ BATTLE_STRUCT->scriptingActive = gActiveBank = bank;
+ b_push_move_exec(BattleScript_ShedSkinActivates);
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ effect++;
+ }
+ break;
+ case ABILITY_SPEED_BOOST:
+ if (gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC && gDisableStructs[bank].isFirstTurn != 2)
+ {
+ gBattleMons[bank].statStages[STAT_STAGE_SPEED]++;
+ BATTLE_STRUCT->animArg1 = 0x11;
+ BATTLE_STRUCT->animArg2 = 0;
+ b_push_move_exec(BattleScript_SpeedBoostActivates);
+ BATTLE_STRUCT->scriptingActive = bank;
+ effect++;
+ }
+ break;
+ case ABILITY_TRUANT:
+ gDisableStructs[gBankAttacker].truantCounter ^= 1;
+ break;
+ }
+ }
+ break;
+ case ABILITYEFFECT_MOVES_BLOCK: // 2
+ //_08018A40
+ if (gLastUsedAbility == ABILITY_SOUNDPROOF)
+ {
+ for (i = 0; gSoundMovesTable[i] != 0xFFFF; i++)
+ {
+ if (gSoundMovesTable[i] == move)
+ break;
+ }
+ if (gSoundMovesTable[i] != 0xFFFF)
+ {
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)
+ gHitMarker |= HITMARKER_NO_PPDEDUCT;
+ gBattlescriptCurrInstr = BattleScript_SoundproofProtected;
+ effect = 1;
+ }
+ }
+ break;
+ case ABILITYEFFECT_ABSORBING: // 3
+ //_08018AD8
+ if (move)
+ {
+ switch (gLastUsedAbility)
+ {
+ case ABILITY_VOLT_ABSORB:
+ if (moveType == TYPE_ELECTRIC && gBattleMoves[move].power != 0)
+ {
+ if (gProtectStructs[gBankAttacker].notFirstStrike)
+ gBattlescriptCurrInstr = BattleScript_MoveHPDrain;
+ else
+ gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss;
+ effect = 1;
+ }
+ break;
+ case ABILITY_WATER_ABSORB:
+ if (moveType == TYPE_WATER && gBattleMoves[move].power != 0)
+ {
+ if (gProtectStructs[gBankAttacker].notFirstStrike)
+ gBattlescriptCurrInstr = BattleScript_MoveHPDrain;
+ else
+ gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss;
+ effect = 1;
+ }
+ break;
+ case ABILITY_FLASH_FIRE:
+ if (moveType == TYPE_FIRE && !(gBattleMons[bank].status1 & STATUS_FREEZE))
+ {
+ if (!(ewram17100.arr[bank] & 1))
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ if (gProtectStructs[gBankAttacker].notFirstStrike)
+ gBattlescriptCurrInstr = BattleScript_FlashFireBoost;
+ else
+ gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss;
+ ewram17100.arr[bank] |= 1;
+ effect = 2;
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ if (gProtectStructs[gBankAttacker].notFirstStrike)
+ gBattlescriptCurrInstr = BattleScript_FlashFireBoost;
+ else
+ gBattlescriptCurrInstr = BattleScript_FlashFireBoost_PPLoss;
+ effect = 2;
+ }
+ }
+ break;
+ }
+ if (effect == 1)
+ {
+ if (gBattleMons[bank].maxHP == gBattleMons[bank].hp)
+ {
+ if ((gProtectStructs[gBankAttacker].notFirstStrike))
+ gBattlescriptCurrInstr = BattleScript_MoveHPDrain;
+ else
+ gBattlescriptCurrInstr = BattleScript_MoveHPDrain_PPLoss;
+ }
+ else
+ {
+ gBattleMoveDamage = gBattleMons[bank].maxHP / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+ }
+ }
+ }
+ break;
+ case ABILITYEFFECT_CONTACT: // 4
+ //_08018CF0
+ switch (gLastUsedAbility)
+ {
+ case ABILITY_COLOR_CHANGE:
+ //_08018DCC
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && move != MOVE_STRUGGLE
+ && gBattleMoves[move].power != 0
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && gBattleMons[bank].type1 != moveType
+ && gBattleMons[bank].type2 != moveType
+ && gBattleMons[bank].hp != 0)
+ {
+ gBattleMons[bank].type1 = moveType;
+ gBattleMons[bank].type2 = moveType;
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 3;
+ gBattleTextBuff1[2] = moveType;
+ gBattleTextBuff1[3] = 0xFF;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_ColorChangeActivates;
+ effect++;
+ }
+ break;
+ case ABILITY_ROUGH_SKIN:
+ //_08018E94
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT))
+ {
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_RoughSkinActivates;
+ effect++;
+ }
+ break;
+ case ABILITY_EFFECT_SPORE:
+ //_08018F54
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (Random() % 10) == 0)
+ {
+ do
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = Random() & 3;
+ } while (gBattleCommunication[MOVE_EFFECT_BYTE] == 0);
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] == 3)
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 2;
+ gBattleCommunication[MOVE_EFFECT_BYTE] += 0x40;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ break;
+ case ABILITY_POISON_POINT:
+ //_0801904C
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (Random() % 3) == 0)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x42;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ break;
+ case ABILITY_STATIC:
+ //_08019128
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (Random() % 3) == 0)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x45;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ break;
+ case ABILITY_FLAME_BODY:
+ //_08019204
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (Random() % 3) == 0)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x43;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_ApplySecondaryEffect;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ break;
+ case ABILITY_CUTE_CHARM:
+ //_080192E0
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gBattleMons[gBankAttacker].hp != 0
+ && !gProtectStructs[gBankAttacker].confusionSelfDmg
+ && (gBattleMoves[move].flags & FLAG_MAKES_CONTACT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && gBattleMons[gBankTarget].hp != 0
+ && (Random() % 3) == 0
+ && gBattleMons[gBankAttacker].ability != ABILITY_OBLIVIOUS
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != GetGenderFromSpeciesAndPersonality(speciesDef, pidDef)
+ && !(gBattleMons[gBankAttacker].status2 & STATUS2_INFATUATION)
+ && GetGenderFromSpeciesAndPersonality(speciesAtk, pidAtk) != 0xFF
+ && GetGenderFromSpeciesAndPersonality(speciesDef, pidDef) != 0xFF)
+ {
+ gBattleMons[gBankAttacker].status2 |= (gBitTable[gBankTarget] << 0x10);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_CuteCharmActivates;
+ effect++;
+ }
+ break;
+ }
+ break;
+ case ABILITYEFFECT_IMMUNITY: // 5
+ //_08019448
+ {
+ #define i bank
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ switch (gBattleMons[i].ability)
+ {
+ case ABILITY_IMMUNITY:
+ if (gBattleMons[i].status1 & (STATUS_POISON | STATUS_TOXIC_POISON | 0xF00)) // TODO: what is 0xF00?
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
+ effect = 1;
+ }
+ break;
+ case ABILITY_OWN_TEMPO:
+ if (gBattleMons[i].status2 & STATUS2_CONFUSION)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
+ effect = 2;
+ }
+ break;
+ case ABILITY_LIMBER:
+ if (gBattleMons[i].status1 & STATUS_PARALYSIS)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
+ effect = 1;
+ }
+ break;
+ case ABILITY_INSOMNIA:
+ case ABILITY_VITAL_SPIRIT:
+ if (gBattleMons[i].status1 & STATUS_SLEEP)
+ {
+ gBattleMons[i].status2 &= ~(STATUS2_NIGHTMARE);
+ StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
+ effect = 1;
+ }
+ break;
+ case ABILITY_WATER_VEIL:
+ if (gBattleMons[i].status1 & STATUS_BURN)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
+ effect = 1;
+ }
+ break;
+ case ABILITY_MAGMA_ARMOR:
+ if (gBattleMons[i].status1 & STATUS_FREEZE)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
+ effect = 1;
+ }
+ break;
+ case ABILITY_OBLIVIOUS:
+ if (gBattleMons[i].status2 & STATUS2_INFATUATION)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
+ effect = 3;
+ }
+ break;
+ }
+ if (effect)
+ {
+ switch (effect)
+ {
+ case 1: // status cleared
+ gBattleMons[i].status1 = 0;
+ break;
+ case 2: // get rid of confusion
+ gBattleMons[i].status2 &= ~(STATUS2_CONFUSION);
+ break;
+ case 3: // get rid of infatuation
+ gBattleMons[i].status2 &= ~(STATUS2_INFATUATION);
+ break;
+ }
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = gUnknown_081D9956;
+ BATTLE_STRUCT->scriptingActive = i;
+ gActiveBank = i;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ return effect;
+ }
+ }
+ #undef i
+ }
+ break;
+ case ABILITYEFFECT_FORECAST: // 6
+ //_080197B4
+ {
+ #define i bank
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleMons[i].ability == ABILITY_FORECAST)
+ {
+ effect = CastformDataTypeChange(i);
+ if (effect)
+ {
+ b_push_move_exec(BattleScript_CastformChange);
+ BATTLE_STRUCT->scriptingActive = i;
+ BATTLE_STRUCT->castformToChangeInto = effect - 1;
+ return effect;
+ }
+ }
+ }
+ #undef i
+ }
+ break;
+ case ABILITYEFFECT_SYNCHRONIZE: // 7
+ //_08019804
+ if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
+ {
+ gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
+ BATTLE_STRUCT->synchroniseEffect &= 0x3F;
+ if (BATTLE_STRUCT->synchroniseEffect == 6)
+ BATTLE_STRUCT->synchroniseEffect = 2;
+ gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect + 0x40;
+ BATTLE_STRUCT->scriptingActive = gBankTarget;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_SynchronizeActivates;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ break;
+ case ABILITYEFFECT_ATK_SYNCHRONIZE: // 8
+ //_08019880
+ if (gLastUsedAbility == ABILITY_SYNCHRONIZE && (gHitMarker & HITMARKER_SYNCHRONISE_EFFECT))
+ {
+ gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
+ BATTLE_STRUCT->synchroniseEffect &= 0x3F;
+ if (BATTLE_STRUCT->synchroniseEffect == 6)
+ BATTLE_STRUCT->synchroniseEffect = 2;
+ gBattleCommunication[MOVE_EFFECT_BYTE] = BATTLE_STRUCT->synchroniseEffect;
+ BATTLE_STRUCT->scriptingActive = gBankAttacker;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_SynchronizeActivates;
+ gHitMarker |= HITMARKER_IGNORE_SAFEGUARD;
+ effect++;
+ }
+ break;
+ case ABILITYEFFECT_INTIMIDATE1: // 9
+ //_080198FC
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleMons[i].ability == ABILITY_INTIMIDATE && gStatuses3[i] & STATUS3_INTIMIDATE_POKES)
+ {
+ gLastUsedAbility = ABILITY_INTIMIDATE;
+ gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES);
+ b_push_move_exec(gUnknown_081D978C);
+ BATTLE_STRUCT->intimidateBank = i;
+ effect++;
+ break;
+ }
+ }
+ break;
+ case ABILITYEFFECT_TRACE: // 11
+ //_08019940
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleMons[i].ability == ABILITY_TRACE && (gStatuses3[i] & STATUS3_TRACE))
+ {
+ u8 opposite = (GetBankIdentity(i) ^ 1) & 1;
+ u8 target1 = GetBankByPlayerAI(opposite);
+ u8 target2 = GetBankByPlayerAI(opposite + 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0
+ && gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
+ {
+ //_080199AE
+ gActiveBank = GetBankByPlayerAI(((Random() & 1) * 2) | opposite);
+ gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
+ gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ effect++;
+ }
+ else if (gBattleMons[target1].ability != 0 && gBattleMons[target1].hp != 0)
+ {
+ //_08019A34
+ gActiveBank = target1;
+ gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
+ gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ effect++;
+ }
+ else if (gBattleMons[target2].ability != 0 && gBattleMons[target2].hp != 0)
+ {
+ //_08019A78
+ gActiveBank = target2;
+ gBattleMons[i].ability = gBattleMons[gActiveBank].ability;
+ gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ effect++;
+ }
+ }
+ else
+ //_08019ABC
+ {
+ gActiveBank = target1;
+ if (gBattleMons[target1].ability && gBattleMons[target1].hp)
+ {
+ gBattleMons[i].ability = gBattleMons[target1].ability;
+ gLastUsedAbility = gBattleMons[target1].ability;
+ effect++;
+ }
+ }
+ if (effect)
+ {
+ b_push_move_exec(BattleScript_TraceActivates);
+ gStatuses3[i] &= ~(STATUS3_TRACE);
+ BATTLE_STRUCT->scriptingActive = i;
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 4;
+ gBattleTextBuff1[2] = gActiveBank;
+ gBattleTextBuff1[3] = gBattlePartyID[gActiveBank];
+ gBattleTextBuff1[4] = EOS;
+
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 9;
+ gBattleTextBuff2[2] = gLastUsedAbility;
+ gBattleTextBuff2[3] = EOS;
+ break;
+ }
+ }
+ }
+ break;
+ case ABILITYEFFECT_INTIMIDATE2: // 10
+ //_08019B1C
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleMons[i].ability == ABILITY_INTIMIDATE && (gStatuses3[i] & STATUS3_INTIMIDATE_POKES))
+ {
+ gLastUsedAbility = ABILITY_INTIMIDATE;
+ gStatuses3[i] &= ~(STATUS3_INTIMIDATE_POKES);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = gUnknown_081D9795;
+ BATTLE_STRUCT->intimidateBank = i;
+ effect++;
+ break;
+ }
+ }
+ break;
+ case ABILITYEFFECT_CHECK_OTHER_SIDE: // 12
+ //_08019B60
+ side = GetBankSide(bank);
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (GetBankSide(i) != side && gBattleMons[i].ability == ability)
+ {
+ gLastUsedAbility = ability;
+ effect = i + 1;
+ }
+ }
+ break;
+ case ABILITYEFFECT_CHECK_BANK_SIDE: // 13
+ //_08019BBC
+ side = GetBankSide(bank);
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (GetBankSide(i) == side && gBattleMons[i].ability == ability)
+ {
+ gLastUsedAbility = ability;
+ effect = i + 1;
+ }
+ }
+ break;
+ case ABILITYEFFECT_FIELD_SPORT: // 14
+ //_08019C18
+ switch (gLastUsedAbility)
+ {
+ case 0xFD:
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gStatuses3[i] & STATUS3_MUDSPORT)
+ effect = i + 1;
+ }
+ break;
+ case 0xFE:
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gStatuses3[i] & STATUS3_WATERSPORT)
+ effect = i + 1;
+ }
+ break;
+ default:
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleMons[i].ability == ability)
+ {
+ gLastUsedAbility = ability;
+ effect = i + 1;
+ }
+ }
+ break;
+ }
+ break;
+ case ABILITYEFFECT_CHECK_ON_FIELD: // 19
+ //_08019CD4
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleMons[i].ability == ability && gBattleMons[i].hp != 0)
+ {
+ gLastUsedAbility = ability;
+ effect = i + 1;
+ }
+ }
+ break;
+ case ABILITYEFFECT_CHECK_FIELD_EXCEPT_BANK: // 15
+ //_08019D18
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleMons[i].ability == ability && i != bank)
+ {
+ gLastUsedAbility = ability;
+ effect = i + 1;
+ }
+ }
+ break;
+ case ABILITYEFFECT_COUNT_OTHER_SIZE: // 16
+ //_08019D5C
+ side = GetBankSide(bank);
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (GetBankSide(i) != side && gBattleMons[i].ability == ability)
+ {
+ gLastUsedAbility = ability;
+ effect++;
+ }
+ }
+ break;
+ case ABILITYEFFECT_COUNT_BANK_SIDE: // 17
+ //_08019DB8
+ side = GetBankSide(bank);
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (GetBankSide(i) == side && gBattleMons[i].ability == ability)
+ {
+ gLastUsedAbility = ability;
+ effect++;
+ }
+ }
+ break;
+ case ABILITYEFFECT_COUNT_ON_FIELD: // 18
+ //_08019F44
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleMons[i].ability == ability && i != bank)
+ {
+ gLastUsedAbility = ability;
+ effect++;
+ }
+ }
+ break;
+ }
+ //_08019F76
+ if (effect && caseID < 0xC && gLastUsedAbility != 0xFF)
+ RecordAbilityBattle(bank, gLastUsedAbility);
+ }
+
+ return effect;
+}
+
+#else
+__attribute__((naked))
+u8 AbilityBattleEffects(u8 caseID, u8 bank, u8 ability, u8 special, u16 moveArg)
+{
+ 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, 0x28\n\
+ ldr r4, [sp, 0x48]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x4]\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r10, r1\n\
+ lsls r2, 24\n\
+ lsrs r6, r2, 24\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ mov r8, r3\n\
+ lsls r4, 16\n\
+ lsrs r4, 16\n\
+ movs r0, 0\n\
+ mov r9, r0\n\
+ ldr r5, _08018380 @ =gBankAttacker\n\
+ ldr r1, _08018384 @ =gNoOfAllBanks\n\
+ ldrb r0, [r5]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _08018360\n\
+ mov r1, r10\n\
+ strb r1, [r5]\n\
+_08018360:\n\
+ ldrb r0, [r5]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08018390\n\
+ ldr r1, _08018388 @ =gBattlePartyID\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r1, r0\n\
+ ldr r0, _0801838C @ =gPlayerParty\n\
+ b _080183A0\n\
+ .align 2, 0\n\
+_08018380: .4byte gBankAttacker\n\
+_08018384: .4byte gNoOfAllBanks\n\
+_08018388: .4byte gBattlePartyID\n\
+_0801838C: .4byte gPlayerParty\n\
+_08018390:\n\
+ ldr r1, _080183D0 @ =gBattlePartyID\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r1, r0\n\
+ ldr r0, _080183D4 @ =gEnemyParty\n\
+_080183A0:\n\
+ adds r7, r1, r0\n\
+ ldr r5, _080183D8 @ =gBankTarget\n\
+ ldr r1, _080183DC @ =gNoOfAllBanks\n\
+ ldrb r0, [r5]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _080183B2\n\
+ mov r2, r10\n\
+ strb r2, [r5]\n\
+_080183B2:\n\
+ ldrb r0, [r5]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _080183E4\n\
+ ldr r1, _080183D0 @ =gBattlePartyID\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r1, r0\n\
+ ldr r0, _080183E0 @ =gPlayerParty\n\
+ b _080183F4\n\
+ .align 2, 0\n\
+_080183D0: .4byte gBattlePartyID\n\
+_080183D4: .4byte gEnemyParty\n\
+_080183D8: .4byte gBankTarget\n\
+_080183DC: .4byte gNoOfAllBanks\n\
+_080183E0: .4byte gPlayerParty\n\
+_080183E4:\n\
+ ldr r1, _08018444 @ =gBattlePartyID\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r1, r0\n\
+ ldr r0, _08018448 @ =gEnemyParty\n\
+_080183F4:\n\
+ adds r5, r1, r0\n\
+ adds r0, r7, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x8]\n\
+ adds r0, r7, 0\n\
+ movs r1, 0\n\
+ bl GetMonData\n\
+ str r0, [sp, 0x10]\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0xC]\n\
+ adds r0, r5, 0\n\
+ movs r1, 0\n\
+ bl GetMonData\n\
+ str r0, [sp, 0x14]\n\
+ ldr r0, _0801844C @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018436\n\
+ bl _08019F92\n\
+_08018436:\n\
+ mov r3, r8\n\
+ cmp r3, 0\n\
+ beq _08018454\n\
+ ldr r0, _08018450 @ =gLastUsedAbility\n\
+ strb r3, [r0]\n\
+ mov r8, r0\n\
+ b _0801846A\n\
+ .align 2, 0\n\
+_08018444: .4byte gBattlePartyID\n\
+_08018448: .4byte gEnemyParty\n\
+_0801844C: .4byte gBattleTypeFlags\n\
+_08018450: .4byte gLastUsedAbility\n\
+_08018454:\n\
+ ldr r2, _08018474 @ =gLastUsedAbility\n\
+ ldr r1, _08018478 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r5, r10\n\
+ muls r5, r0\n\
+ adds r0, r5, 0\n\
+ adds r0, r1\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2]\n\
+ mov r8, r2\n\
+_0801846A:\n\
+ cmp r4, 0\n\
+ beq _0801847C\n\
+ adds r3, r4, 0\n\
+ b _08018480\n\
+ .align 2, 0\n\
+_08018474: .4byte gLastUsedAbility\n\
+_08018478: .4byte gBattleMons\n\
+_0801847C:\n\
+ ldr r0, _08018494 @ =gCurrentMove\n\
+ ldrh r3, [r0]\n\
+_08018480:\n\
+ ldr r1, _08018498 @ =0x02000000\n\
+ ldr r2, _0801849C @ =0x0001601c\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ adds r7, r1, 0\n\
+ cmp r0, 0\n\
+ beq _080184A0\n\
+ movs r4, 0x3F\n\
+ ands r4, r0\n\
+ b _080184AC\n\
+ .align 2, 0\n\
+_08018494: .4byte gCurrentMove\n\
+_08018498: .4byte 0x02000000\n\
+_0801849C: .4byte 0x0001601c\n\
+_080184A0:\n\
+ ldr r1, _080184C0 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r4, [r0, 0x2]\n\
+_080184AC:\n\
+ ldr r5, [sp, 0x4]\n\
+ cmp r5, 0x13\n\
+ bls _080184B6\n\
+ bl _08019F76\n\
+_080184B6:\n\
+ lsls r0, r5, 2\n\
+ ldr r1, _080184C4 @ =_080184C8\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_080184C0: .4byte gBattleMoves\n\
+_080184C4: .4byte _080184C8\n\
+ .align 2, 0\n\
+_080184C8:\n\
+ .4byte _08018518\n\
+ .4byte _08018814\n\
+ .4byte _08018A40\n\
+ .4byte _08018AD8\n\
+ .4byte _08018CF0\n\
+ .4byte _08019448\n\
+ .4byte _080197B4\n\
+ .4byte _08019804\n\
+ .4byte _08019880\n\
+ .4byte _080198FC\n\
+ .4byte _08019B1C\n\
+ .4byte _08019940\n\
+ .4byte _08019B60\n\
+ .4byte _08019BBC\n\
+ .4byte _08019C18\n\
+ .4byte _08019D18\n\
+ .4byte _08019D5C\n\
+ .4byte _08019DB8\n\
+ .4byte _08019F44\n\
+ .4byte _08019CD4\n\
+_08018518:\n\
+ ldr r2, _0801854C @ =gBankAttacker\n\
+ ldr r0, _08018550 @ =gNoOfAllBanks\n\
+ ldrb r1, [r2]\n\
+ adds r5, r0, 0\n\
+ ldrb r0, [r5]\n\
+ cmp r1, r0\n\
+ bcc _0801852A\n\
+ mov r1, r10\n\
+ strb r1, [r2]\n\
+_0801852A:\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ cmp r0, 0x2D\n\
+ bne _08018534\n\
+ b _080186B8\n\
+_08018534:\n\
+ cmp r0, 0x2D\n\
+ bgt _08018564\n\
+ cmp r0, 0xD\n\
+ bne _0801853E\n\
+ b _080187DC\n\
+_0801853E:\n\
+ cmp r0, 0xD\n\
+ bgt _08018554\n\
+ cmp r0, 0x2\n\
+ bne _08018548\n\
+ b _08018680\n\
+_08018548:\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
+_0801854C: .4byte gBankAttacker\n\
+_08018550: .4byte gNoOfAllBanks\n\
+_08018554:\n\
+ cmp r0, 0x16\n\
+ bne _0801855A\n\
+ b _08018728\n\
+_0801855A:\n\
+ cmp r0, 0x24\n\
+ bne _08018560\n\
+ b _080187A0\n\
+_08018560:\n\
+ bl _08019F76\n\
+_08018564:\n\
+ cmp r0, 0x46\n\
+ bne _0801856A\n\
+ b _080186F0\n\
+_0801856A:\n\
+ cmp r0, 0x46\n\
+ bgt _08018578\n\
+ cmp r0, 0x3B\n\
+ bne _08018574\n\
+ b _0801875C\n\
+_08018574:\n\
+ bl _08019F76\n\
+_08018578:\n\
+ cmp r0, 0x4D\n\
+ bne _0801857E\n\
+ b _080187DC\n\
+_0801857E:\n\
+ cmp r0, 0xFF\n\
+ beq _08018586\n\
+ bl _08019F76\n\
+_08018586:\n\
+ bl weather_get_current\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ subs r0, 0x3\n\
+ cmp r0, 0xA\n\
+ bhi _0801864C\n\
+ lsls r0, 2\n\
+ ldr r1, _080185A0 @ =_080185A4\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_080185A0: .4byte _080185A4\n\
+ .align 2, 0\n\
+_080185A4:\n\
+ .4byte _080185D0\n\
+ .4byte _0801864C\n\
+ .4byte _080185D0\n\
+ .4byte _0801864C\n\
+ .4byte _0801864C\n\
+ .4byte _080185F8\n\
+ .4byte _0801864C\n\
+ .4byte _0801864C\n\
+ .4byte _0801864C\n\
+ .4byte _08018620\n\
+ .4byte _080185D0\n\
+_080185D0:\n\
+ ldr r2, _080185EC @ =gBattleWeather\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801864C\n\
+ movs r0, 0x5\n\
+ strh r0, [r2]\n\
+ ldr r0, _080185F0 @ =0x02000000\n\
+ ldr r3, _080185F4 @ =0x000160a4\n\
+ adds r2, r0, r3\n\
+ movs r1, 0xA\n\
+ b _08018638\n\
+ .align 2, 0\n\
+_080185EC: .4byte gBattleWeather\n\
+_080185F0: .4byte 0x02000000\n\
+_080185F4: .4byte 0x000160a4\n\
+_080185F8:\n\
+ ldr r3, _08018614 @ =gBattleWeather\n\
+ ldrh r1, [r3]\n\
+ movs r2, 0x18\n\
+ adds r0, r2, 0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801864C\n\
+ strh r2, [r3]\n\
+ ldr r0, _08018618 @ =0x02000000\n\
+ ldr r3, _0801861C @ =0x000160a4\n\
+ adds r2, r0, r3\n\
+ movs r1, 0xC\n\
+ b _08018638\n\
+ .align 2, 0\n\
+_08018614: .4byte gBattleWeather\n\
+_08018618: .4byte 0x02000000\n\
+_0801861C: .4byte 0x000160a4\n\
+_08018620:\n\
+ ldr r3, _08018668 @ =gBattleWeather\n\
+ ldrh r1, [r3]\n\
+ movs r2, 0x60\n\
+ adds r0, r2, 0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801864C\n\
+ strh r2, [r3]\n\
+ ldr r0, _0801866C @ =0x02000000\n\
+ ldr r3, _08018670 @ =0x000160a4\n\
+ adds r2, r0, r3\n\
+ movs r1, 0xB\n\
+_08018638:\n\
+ strb r1, [r2]\n\
+ ldr r5, _08018674 @ =0x00016003\n\
+ adds r0, r5\n\
+ mov r1, r10\n\
+ strb r1, [r0]\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_0801864C:\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ bne _08018656\n\
+ bl _08019F92\n\
+_08018656:\n\
+ bl weather_get_current\n\
+ ldr r1, _08018678 @ =gBattleCommunication\n\
+ strb r0, [r1, 0x5]\n\
+ ldr r0, _0801867C @ =gUnknown_081D901D\n\
+ bl b_push_move_exec\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
+_08018668: .4byte gBattleWeather\n\
+_0801866C: .4byte 0x02000000\n\
+_08018670: .4byte 0x000160a4\n\
+_08018674: .4byte 0x00016003\n\
+_08018678: .4byte gBattleCommunication\n\
+_0801867C: .4byte gUnknown_081D901D\n\
+_08018680:\n\
+ ldr r2, _080186A8 @ =gBattleWeather\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018690\n\
+ bl _08019F76\n\
+_08018690:\n\
+ movs r0, 0x5\n\
+ strh r0, [r2]\n\
+ ldr r0, _080186AC @ =BattleScript_DrizzleActivates\n\
+ bl b_push_move_exec\n\
+ ldr r0, _080186B0 @ =0x02000000\n\
+ ldr r3, _080186B4 @ =0x00016003\n\
+ adds r0, r3\n\
+ mov r5, r10\n\
+ strb r5, [r0]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_080186A8: .4byte gBattleWeather\n\
+_080186AC: .4byte BattleScript_DrizzleActivates\n\
+_080186B0: .4byte 0x02000000\n\
+_080186B4: .4byte 0x00016003\n\
+_080186B8:\n\
+ ldr r2, _080186E0 @ =gBattleWeather\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080186C8\n\
+ bl _08019F76\n\
+_080186C8:\n\
+ movs r0, 0x18\n\
+ strh r0, [r2]\n\
+ ldr r0, _080186E4 @ =BattleScript_SandstreamActivates\n\
+ bl b_push_move_exec\n\
+ ldr r0, _080186E8 @ =0x02000000\n\
+ ldr r1, _080186EC @ =0x00016003\n\
+ adds r0, r1\n\
+ mov r2, r10\n\
+ strb r2, [r0]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_080186E0: .4byte gBattleWeather\n\
+_080186E4: .4byte BattleScript_SandstreamActivates\n\
+_080186E8: .4byte 0x02000000\n\
+_080186EC: .4byte 0x00016003\n\
+_080186F0:\n\
+ ldr r2, _08018718 @ =gBattleWeather\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018700\n\
+ bl _08019F76\n\
+_08018700:\n\
+ movs r0, 0x60\n\
+ strh r0, [r2]\n\
+ ldr r0, _0801871C @ =BattleScript_DroughtActivates\n\
+ bl b_push_move_exec\n\
+ ldr r0, _08018720 @ =0x02000000\n\
+ ldr r3, _08018724 @ =0x00016003\n\
+ adds r0, r3\n\
+ mov r5, r10\n\
+ strb r5, [r0]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_08018718: .4byte gBattleWeather\n\
+_0801871C: .4byte BattleScript_DroughtActivates\n\
+_08018720: .4byte 0x02000000\n\
+_08018724: .4byte 0x00016003\n\
+_08018728:\n\
+ ldr r0, _08018754 @ =gSpecialStatuses\n\
+ mov r1, r10\n\
+ lsls r2, r1, 2\n\
+ adds r1, r2, r1\n\
+ lsls r1, 2\n\
+ adds r3, r1, r0\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08018740\n\
+ bl _08019F76\n\
+_08018740:\n\
+ ldr r1, _08018758 @ =gStatuses3\n\
+ adds r1, r2, r1\n\
+ ldr r0, [r1]\n\
+ movs r2, 0x80\n\
+ lsls r2, 12\n\
+ orrs r0, r2\n\
+ str r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x8\n\
+ b _080187CA\n\
+ .align 2, 0\n\
+_08018754: .4byte gSpecialStatuses\n\
+_08018758: .4byte gStatuses3\n\
+_0801875C:\n\
+ mov r0, r10\n\
+ bl CastformDataTypeChange\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ cmp r0, 0\n\
+ bne _08018770\n\
+ bl _08019F92\n\
+_08018770:\n\
+ ldr r0, _08018790 @ =BattleScript_CastformChange\n\
+ bl b_push_move_exec\n\
+ ldr r0, _08018794 @ =0x02000000\n\
+ ldr r2, _08018798 @ =0x00016003\n\
+ adds r1, r0, r2\n\
+ mov r3, r10\n\
+ strb r3, [r1]\n\
+ mov r1, r9\n\
+ subs r1, 0x1\n\
+ ldr r5, _0801879C @ =0x0001609b\n\
+ adds r0, r5\n\
+ strb r1, [r0]\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
+_08018790: .4byte BattleScript_CastformChange\n\
+_08018794: .4byte 0x02000000\n\
+_08018798: .4byte 0x00016003\n\
+_0801879C: .4byte 0x0001609b\n\
+_080187A0:\n\
+ ldr r0, _080187D4 @ =gSpecialStatuses\n\
+ mov r1, r10\n\
+ lsls r2, r1, 2\n\
+ adds r1, r2, r1\n\
+ lsls r1, 2\n\
+ adds r3, r1, r0\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 27\n\
+ cmp r0, 0\n\
+ bge _080187B8\n\
+ bl _08019F76\n\
+_080187B8:\n\
+ ldr r1, _080187D8 @ =gStatuses3\n\
+ adds r1, r2, r1\n\
+ ldr r0, [r1]\n\
+ movs r2, 0x80\n\
+ lsls r2, 13\n\
+ orrs r0, r2\n\
+ str r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x10\n\
+_080187CA:\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
+_080187D4: .4byte gSpecialStatuses\n\
+_080187D8: .4byte gStatuses3\n\
+_080187DC:\n\
+ movs r6, 0\n\
+ ldrb r5, [r5]\n\
+ cmp r6, r5\n\
+ bcc _080187E8\n\
+ bl _08019F76\n\
+_080187E8:\n\
+ adds r0, r6, 0\n\
+ bl CastformDataTypeChange\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ cmp r0, 0\n\
+ beq _080187FC\n\
+ bl _08019E14\n\
+_080187FC:\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ ldr r0, _08018810 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ bcc _080187E8\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
+_08018810: .4byte gNoOfAllBanks\n\
+_08018814:\n\
+ ldr r2, _08018844 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r1, r10\n\
+ muls r1, r0\n\
+ adds r4, r1, r2\n\
+ ldrh r0, [r4, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08018828\n\
+ bl _08019F76\n\
+_08018828:\n\
+ ldr r0, _08018848 @ =gBankAttacker\n\
+ mov r3, r10\n\
+ strb r3, [r0]\n\
+ mov r3, r8\n\
+ ldrb r5, [r3]\n\
+ cmp r5, 0x2C\n\
+ beq _0801885A\n\
+ cmp r5, 0x2C\n\
+ bgt _0801884C\n\
+ cmp r5, 0x3\n\
+ bne _08018840\n\
+ b _080189B8\n\
+_08018840:\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
+_08018844: .4byte gBattleMons\n\
+_08018848: .4byte gBankAttacker\n\
+_0801884C:\n\
+ cmp r5, 0x36\n\
+ bne _08018852\n\
+ b _08018A18\n\
+_08018852:\n\
+ cmp r5, 0x3D\n\
+ beq _080188DC\n\
+ bl _08019F76\n\
+_0801885A:\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x13\n\
+ movs r1, 0\n\
+ movs r2, 0xD\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0\n\
+ beq _08018876\n\
+ bl _08019F76\n\
+_08018876:\n\
+ str r0, [sp]\n\
+ movs r0, 0x13\n\
+ movs r1, 0\n\
+ movs r2, 0x4D\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _0801888E\n\
+ bl _08019F76\n\
+_0801888E:\n\
+ ldr r0, _080188D0 @ =gBattleWeather\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801889E\n\
+ bl _08019F76\n\
+_0801889E:\n\
+ ldrh r0, [r4, 0x2C]\n\
+ ldrh r1, [r4, 0x28]\n\
+ cmp r0, r1\n\
+ bhi _080188AA\n\
+ bl _08019F76\n\
+_080188AA:\n\
+ mov r2, r8\n\
+ strb r5, [r2]\n\
+ ldr r0, _080188D4 @ =BattleScript_RainDishActivates\n\
+ bl b_push_move_exec\n\
+ ldr r1, _080188D8 @ =gBattleMoveDamage\n\
+ ldrh r0, [r4, 0x2C]\n\
+ lsrs r0, 4\n\
+ str r0, [r1]\n\
+ cmp r0, 0\n\
+ bne _080188C4\n\
+ movs r0, 0x1\n\
+ str r0, [r1]\n\
+_080188C4:\n\
+ ldr r0, [r1]\n\
+ negs r0, r0\n\
+ str r0, [r1]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_080188D0: .4byte gBattleWeather\n\
+_080188D4: .4byte BattleScript_RainDishActivates\n\
+_080188D8: .4byte gBattleMoveDamage\n\
+_080188DC:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x4C\n\
+ adds r5, r1, r0\n\
+ ldrb r0, [r5]\n\
+ cmp r0, 0\n\
+ bne _080188EC\n\
+ bl _08019F76\n\
+_080188EC:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ cmp r4, 0\n\
+ beq _08018906\n\
+ bl _08019F76\n\
+_08018906:\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x88\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018918\n\
+ ldr r0, _08018990 @ =gBattleTextBuff1\n\
+ ldr r1, _08018994 @ =gStatusConditionString_PoisonJpn\n\
+ bl StringCopy\n\
+_08018918:\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801892A\n\
+ ldr r0, _08018990 @ =gBattleTextBuff1\n\
+ ldr r1, _08018998 @ =gStatusConditionString_SleepJpn\n\
+ bl StringCopy\n\
+_0801892A:\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801893C\n\
+ ldr r0, _08018990 @ =gBattleTextBuff1\n\
+ ldr r1, _0801899C @ =gStatusConditionString_ParalysisJpn\n\
+ bl StringCopy\n\
+_0801893C:\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801894E\n\
+ ldr r0, _08018990 @ =gBattleTextBuff1\n\
+ ldr r1, _080189A0 @ =gStatusConditionString_BurnJpn\n\
+ bl StringCopy\n\
+_0801894E:\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018960\n\
+ ldr r0, _08018990 @ =gBattleTextBuff1\n\
+ ldr r1, _080189A4 @ =gStatusConditionString_IceJpn\n\
+ bl StringCopy\n\
+_08018960:\n\
+ str r4, [r5]\n\
+ ldr r0, _080189A8 @ =0x02000000\n\
+ ldr r4, _080189AC @ =gActiveBank\n\
+ mov r3, r10\n\
+ strb r3, [r4]\n\
+ ldr r1, _080189B0 @ =0x00016003\n\
+ adds r0, r1\n\
+ strb r3, [r0]\n\
+ ldr r0, _080189B4 @ =BattleScript_ShedSkinActivates\n\
+ bl b_push_move_exec\n\
+ str r5, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x28\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_08018990: .4byte gBattleTextBuff1\n\
+_08018994: .4byte gStatusConditionString_PoisonJpn\n\
+_08018998: .4byte gStatusConditionString_SleepJpn\n\
+_0801899C: .4byte gStatusConditionString_ParalysisJpn\n\
+_080189A0: .4byte gStatusConditionString_BurnJpn\n\
+_080189A4: .4byte gStatusConditionString_IceJpn\n\
+_080189A8: .4byte 0x02000000\n\
+_080189AC: .4byte gActiveBank\n\
+_080189B0: .4byte 0x00016003\n\
+_080189B4: .4byte BattleScript_ShedSkinActivates\n\
+_080189B8:\n\
+ ldrb r2, [r4, 0x1B]\n\
+ movs r0, 0x1B\n\
+ ldrsb r0, [r4, r0]\n\
+ cmp r0, 0xB\n\
+ ble _080189C6\n\
+ bl _08019F76\n\
+_080189C6:\n\
+ ldr r0, _08018A04 @ =gDisableStructs\n\
+ mov r3, r10\n\
+ lsls r1, r3, 3\n\
+ subs r1, r3\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x16]\n\
+ cmp r0, 0x2\n\
+ bne _080189DC\n\
+ bl _08019F76\n\
+_080189DC:\n\
+ adds r0, r2, 0x1\n\
+ movs r2, 0\n\
+ strb r0, [r4, 0x1B]\n\
+ ldr r5, _08018A08 @ =0x000160a4\n\
+ adds r1, r7, r5\n\
+ movs r0, 0x11\n\
+ strb r0, [r1]\n\
+ ldr r1, _08018A0C @ =0x000160a5\n\
+ adds r0, r7, r1\n\
+ strb r2, [r0]\n\
+ ldr r0, _08018A10 @ =BattleScript_SpeedBoostActivates\n\
+ bl b_push_move_exec\n\
+ ldr r2, _08018A14 @ =0x00016003\n\
+ adds r0, r7, r2\n\
+ mov r3, r10\n\
+ strb r3, [r0]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_08018A04: .4byte gDisableStructs\n\
+_08018A08: .4byte 0x000160a4\n\
+_08018A0C: .4byte 0x000160a5\n\
+_08018A10: .4byte BattleScript_SpeedBoostActivates\n\
+_08018A14: .4byte 0x00016003\n\
+_08018A18:\n\
+ ldr r2, _08018A3C @ =gDisableStructs\n\
+ ldrb r0, [r0]\n\
+ lsls r1, r0, 3\n\
+ subs r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r2\n\
+ ldrb r3, [r1, 0x18]\n\
+ lsls r0, r3, 31\n\
+ lsrs r0, 31\n\
+ movs r2, 0x1\n\
+ eors r2, r0\n\
+ movs r0, 0x2\n\
+ negs r0, r0\n\
+ ands r0, r3\n\
+ orrs r0, r2\n\
+ strb r0, [r1, 0x18]\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
+_08018A3C: .4byte gDisableStructs\n\
+_08018A40:\n\
+ mov r5, r8\n\
+ ldrb r0, [r5]\n\
+ cmp r0, 0x2B\n\
+ beq _08018A4C\n\
+ bl _08019F76\n\
+_08018A4C:\n\
+ movs r4, 0\n\
+ ldr r0, _08018ABC @ =gSoundMovesTable\n\
+ ldrh r2, [r0]\n\
+ ldr r5, _08018AC0 @ =0x0000ffff\n\
+ adds r1, r0, 0\n\
+ cmp r2, r5\n\
+ bne _08018A5E\n\
+ bl _08019F76\n\
+_08018A5E:\n\
+ cmp r2, r3\n\
+ beq _08018A76\n\
+ adds r2, r1, 0\n\
+_08018A64:\n\
+ adds r2, 0x2\n\
+ adds r4, 0x1\n\
+ ldrh r0, [r2]\n\
+ cmp r0, r5\n\
+ bne _08018A72\n\
+ bl _08019F76\n\
+_08018A72:\n\
+ cmp r0, r3\n\
+ bne _08018A64\n\
+_08018A76:\n\
+ lsls r0, r4, 1\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _08018AC0 @ =0x0000ffff\n\
+ cmp r1, r0\n\
+ bne _08018A86\n\
+ bl _08019F76\n\
+_08018A86:\n\
+ ldr r1, _08018AC4 @ =gBattleMons\n\
+ ldr r0, _08018AC8 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r1, 0x50\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 5\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018AAC\n\
+ ldr r0, _08018ACC @ =gHitMarker\n\
+ ldr r1, [r0]\n\
+ movs r2, 0x80\n\
+ lsls r2, 4\n\
+ orrs r1, r2\n\
+ str r1, [r0]\n\
+_08018AAC:\n\
+ ldr r1, _08018AD0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018AD4 @ =BattleScript_SoundproofProtected\n\
+ str r0, [r1]\n\
+ movs r0, 0x1\n\
+ mov r9, r0\n\
+ bl _08019F7C\n\
+ .align 2, 0\n\
+_08018ABC: .4byte gSoundMovesTable\n\
+_08018AC0: .4byte 0x0000ffff\n\
+_08018AC4: .4byte gBattleMons\n\
+_08018AC8: .4byte gBankAttacker\n\
+_08018ACC: .4byte gHitMarker\n\
+_08018AD0: .4byte gBattlescriptCurrInstr\n\
+_08018AD4: .4byte BattleScript_SoundproofProtected\n\
+_08018AD8:\n\
+ cmp r3, 0\n\
+ bne _08018AE0\n\
+ bl _08019F76\n\
+_08018AE0:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0xB\n\
+ beq _08018B50\n\
+ cmp r0, 0xB\n\
+ bgt _08018AF2\n\
+ cmp r0, 0xA\n\
+ beq _08018AF8\n\
+ b _08018C6A\n\
+_08018AF2:\n\
+ cmp r0, 0x12\n\
+ beq _08018BA8\n\
+ b _08018C6A\n\
+_08018AF8:\n\
+ cmp r4, 0xD\n\
+ beq _08018AFE\n\
+ b _08018C6A\n\
+_08018AFE:\n\
+ ldr r0, _08018B28 @ =gBattleMoves\n\
+ lsls r1, r3, 1\n\
+ adds r1, r3\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0\n\
+ bne _08018B10\n\
+ b _08018C6A\n\
+_08018B10:\n\
+ ldr r1, _08018B2C @ =gProtectStructs\n\
+ ldr r0, _08018B30 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08018B3C\n\
+ ldr r1, _08018B34 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018B38 @ =BattleScript_MoveHPDrain\n\
+ b _08018B40\n\
+ .align 2, 0\n\
+_08018B28: .4byte gBattleMoves\n\
+_08018B2C: .4byte gProtectStructs\n\
+_08018B30: .4byte gBankAttacker\n\
+_08018B34: .4byte gBattlescriptCurrInstr\n\
+_08018B38: .4byte BattleScript_MoveHPDrain\n\
+_08018B3C:\n\
+ ldr r1, _08018B48 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018B4C @ =BattleScript_MoveHPDrain_PPLoss\n\
+_08018B40:\n\
+ str r0, [r1]\n\
+ movs r2, 0x1\n\
+ b _08018C68\n\
+ .align 2, 0\n\
+_08018B48: .4byte gBattlescriptCurrInstr\n\
+_08018B4C: .4byte BattleScript_MoveHPDrain_PPLoss\n\
+_08018B50:\n\
+ cmp r4, 0xB\n\
+ beq _08018B56\n\
+ b _08018C6A\n\
+_08018B56:\n\
+ ldr r0, _08018B80 @ =gBattleMoves\n\
+ lsls r1, r3, 1\n\
+ adds r1, r3\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0\n\
+ bne _08018B68\n\
+ b _08018C6A\n\
+_08018B68:\n\
+ ldr r1, _08018B84 @ =gProtectStructs\n\
+ ldr r0, _08018B88 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08018B94\n\
+ ldr r1, _08018B8C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018B90 @ =BattleScript_MoveHPDrain\n\
+ b _08018B98\n\
+ .align 2, 0\n\
+_08018B80: .4byte gBattleMoves\n\
+_08018B84: .4byte gProtectStructs\n\
+_08018B88: .4byte gBankAttacker\n\
+_08018B8C: .4byte gBattlescriptCurrInstr\n\
+_08018B90: .4byte BattleScript_MoveHPDrain\n\
+_08018B94:\n\
+ ldr r1, _08018BA0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018BA4 @ =BattleScript_MoveHPDrain_PPLoss\n\
+_08018B98:\n\
+ str r0, [r1]\n\
+ movs r3, 0x1\n\
+ mov r9, r3\n\
+ b _08018C6A\n\
+ .align 2, 0\n\
+_08018BA0: .4byte gBattlescriptCurrInstr\n\
+_08018BA4: .4byte BattleScript_MoveHPDrain_PPLoss\n\
+_08018BA8:\n\
+ cmp r4, 0xA\n\
+ bne _08018C6A\n\
+ ldr r1, _08018BF4 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r5, r10\n\
+ muls r5, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, 0x4C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08018C6A\n\
+ ldr r2, _08018BF8 @ =0x02017100\n\
+ mov r0, r10\n\
+ lsls r1, r0, 2\n\
+ adds r0, r1, r2\n\
+ ldr r3, [r0]\n\
+ movs r4, 0x1\n\
+ ands r3, r4\n\
+ adds r5, r1, 0\n\
+ cmp r3, 0\n\
+ bne _08018C30\n\
+ ldr r0, _08018BFC @ =gBattleCommunication\n\
+ strb r3, [r0, 0x5]\n\
+ ldr r1, _08018C00 @ =gProtectStructs\n\
+ ldr r0, _08018C04 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08018C10\n\
+ ldr r1, _08018C08 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018C0C @ =BattleScript_FlashFireBoost\n\
+ b _08018C14\n\
+ .align 2, 0\n\
+_08018BF4: .4byte gBattleMons\n\
+_08018BF8: .4byte 0x02017100\n\
+_08018BFC: .4byte gBattleCommunication\n\
+_08018C00: .4byte gProtectStructs\n\
+_08018C04: .4byte gBankAttacker\n\
+_08018C08: .4byte gBattlescriptCurrInstr\n\
+_08018C0C: .4byte BattleScript_FlashFireBoost\n\
+_08018C10:\n\
+ ldr r1, _08018C28 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018C2C @ =BattleScript_FlashFireBoost_PPLoss\n\
+_08018C14:\n\
+ str r0, [r1]\n\
+ adds r0, r5, r2\n\
+ ldr r1, [r0]\n\
+ movs r2, 0x1\n\
+ orrs r1, r2\n\
+ str r1, [r0]\n\
+ movs r1, 0x2\n\
+ mov r9, r1\n\
+ b _08018C6A\n\
+ .align 2, 0\n\
+_08018C28: .4byte gBattlescriptCurrInstr\n\
+_08018C2C: .4byte BattleScript_FlashFireBoost_PPLoss\n\
+_08018C30:\n\
+ ldr r0, _08018C4C @ =gBattleCommunication\n\
+ strb r4, [r0, 0x5]\n\
+ ldr r1, _08018C50 @ =gProtectStructs\n\
+ ldr r0, _08018C54 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08018C60\n\
+ ldr r1, _08018C58 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018C5C @ =BattleScript_FlashFireBoost\n\
+ b _08018C64\n\
+ .align 2, 0\n\
+_08018C4C: .4byte gBattleCommunication\n\
+_08018C50: .4byte gProtectStructs\n\
+_08018C54: .4byte gBankAttacker\n\
+_08018C58: .4byte gBattlescriptCurrInstr\n\
+_08018C5C: .4byte BattleScript_FlashFireBoost\n\
+_08018C60:\n\
+ ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018CA8 @ =BattleScript_FlashFireBoost_PPLoss\n\
+_08018C64:\n\
+ str r0, [r1]\n\
+ movs r2, 0x2\n\
+_08018C68:\n\
+ mov r9, r2\n\
+_08018C6A:\n\
+ mov r3, r9\n\
+ cmp r3, 0x1\n\
+ beq _08018C74\n\
+ bl _08019F76\n\
+_08018C74:\n\
+ ldr r1, _08018CAC @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r5, r10\n\
+ muls r5, r0\n\
+ adds r0, r5, 0\n\
+ adds r1, r0, r1\n\
+ ldrh r0, [r1, 0x2C]\n\
+ ldrh r2, [r1, 0x28]\n\
+ cmp r0, r2\n\
+ bne _08018CD0\n\
+ ldr r1, _08018CB0 @ =gProtectStructs\n\
+ ldr r0, _08018CB4 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08018CBC\n\
+ ldr r1, _08018CA4 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018CB8 @ =BattleScript_MoveHPDrain_FullHP\n\
+ str r0, [r1]\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
+_08018CA4: .4byte gBattlescriptCurrInstr\n\
+_08018CA8: .4byte BattleScript_FlashFireBoost_PPLoss\n\
+_08018CAC: .4byte gBattleMons\n\
+_08018CB0: .4byte gProtectStructs\n\
+_08018CB4: .4byte gBankAttacker\n\
+_08018CB8: .4byte BattleScript_MoveHPDrain_FullHP\n\
+_08018CBC:\n\
+ ldr r1, _08018CC8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018CCC @ =BattleScript_MoveHPDrain_FullHP_PPLoss\n\
+ str r0, [r1]\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
+_08018CC8: .4byte gBattlescriptCurrInstr\n\
+_08018CCC: .4byte BattleScript_MoveHPDrain_FullHP_PPLoss\n\
+_08018CD0:\n\
+ ldr r2, _08018CEC @ =gBattleMoveDamage\n\
+ ldrh r0, [r1, 0x2C]\n\
+ lsrs r0, 2\n\
+ str r0, [r2]\n\
+ cmp r0, 0\n\
+ bne _08018CE0\n\
+ mov r3, r9\n\
+ str r3, [r2]\n\
+_08018CE0:\n\
+ ldr r0, [r2]\n\
+ negs r0, r0\n\
+ str r0, [r2]\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
+_08018CEC: .4byte gBattleMoveDamage\n\
+_08018CF0:\n\
+ mov r5, r8\n\
+ ldrb r0, [r5]\n\
+ subs r0, 0x9\n\
+ cmp r0, 0x2F\n\
+ bls _08018CFE\n\
+ bl _08019F76\n\
+_08018CFE:\n\
+ lsls r0, 2\n\
+ ldr r1, _08018D08 @ =_08018D0C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_08018D08: .4byte _08018D0C\n\
+ .align 2, 0\n\
+_08018D0C:\n\
+ .4byte _08019128\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08018DCC\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08018E94\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08018F54\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _0801904C\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019204\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _08019F76\n\
+ .4byte _080192E0\n\
+_08018DCC:\n\
+ ldr r0, _08018E74 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018DDC\n\
+ bl _08019F76\n\
+_08018DDC:\n\
+ cmp r3, 0xA5\n\
+ bne _08018DE4\n\
+ bl _08019F76\n\
+_08018DE4:\n\
+ ldr r0, _08018E78 @ =gBattleMoves\n\
+ lsls r1, r3, 1\n\
+ adds r1, r3\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ cmp r0, 0\n\
+ bne _08018DF8\n\
+ bl _08019F76\n\
+_08018DF8:\n\
+ ldr r2, _08018E7C @ =gSpecialStatuses\n\
+ ldr r0, _08018E80 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r1, r0, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08018E20\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08018E20\n\
+ bl _08019F76\n\
+_08018E20:\n\
+ ldr r1, _08018E84 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r2, r10\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ adds r1, r0, r1\n\
+ adds r3, r1, 0\n\
+ adds r3, 0x21\n\
+ ldrb r0, [r3]\n\
+ cmp r0, r4\n\
+ bne _08018E3A\n\
+ bl _08019F76\n\
+_08018E3A:\n\
+ adds r2, r1, 0\n\
+ adds r2, 0x22\n\
+ ldrb r0, [r2]\n\
+ cmp r0, r4\n\
+ bne _08018E48\n\
+ bl _08019F76\n\
+_08018E48:\n\
+ ldrh r0, [r1, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08018E52\n\
+ bl _08019F76\n\
+_08018E52:\n\
+ strb r4, [r3]\n\
+ strb r4, [r2]\n\
+ ldr r1, _08018E88 @ =gBattleTextBuff1\n\
+ movs r0, 0xFD\n\
+ strb r0, [r1]\n\
+ movs r0, 0x3\n\
+ strb r0, [r1, 0x1]\n\
+ strb r4, [r1, 0x2]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x3]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08018E8C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018E90 @ =BattleScript_ColorChangeActivates\n\
+ str r0, [r1]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_08018E74: .4byte gBattleMoveFlags\n\
+_08018E78: .4byte gBattleMoves\n\
+_08018E7C: .4byte gSpecialStatuses\n\
+_08018E80: .4byte gBankTarget\n\
+_08018E84: .4byte gBattleMons\n\
+_08018E88: .4byte gBattleTextBuff1\n\
+_08018E8C: .4byte gBattlescriptCurrInstr\n\
+_08018E90: .4byte BattleScript_ColorChangeActivates\n\
+_08018E94:\n\
+ ldr r0, _08018F2C @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018EA4\n\
+ bl _08019F76\n\
+_08018EA4:\n\
+ ldr r1, _08018F30 @ =gBattleMons\n\
+ ldr r0, _08018F34 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r4, r0, r1\n\
+ ldrh r0, [r4, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08018EBA\n\
+ bl _08019F76\n\
+_08018EBA:\n\
+ ldr r0, _08018F38 @ =gProtectStructs\n\
+ lsls r1, r2, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _08018ECC\n\
+ bl _08019F76\n\
+_08018ECC:\n\
+ ldr r2, _08018F3C @ =gSpecialStatuses\n\
+ ldr r0, _08018F40 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r1, r0, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08018EF4\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08018EF4\n\
+ bl _08019F76\n\
+_08018EF4:\n\
+ ldr r1, _08018F44 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r2, 0x1\n\
+ adds r0, r2, 0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08018F0E\n\
+ bl _08019F76\n\
+_08018F0E:\n\
+ ldr r1, _08018F48 @ =gBattleMoveDamage\n\
+ ldrh r0, [r4, 0x2C]\n\
+ lsrs r0, 4\n\
+ str r0, [r1]\n\
+ cmp r0, 0\n\
+ bne _08018F1C\n\
+ str r2, [r1]\n\
+_08018F1C:\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08018F4C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08018F50 @ =BattleScript_RoughSkinActivates\n\
+ str r0, [r1]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_08018F2C: .4byte gBattleMoveFlags\n\
+_08018F30: .4byte gBattleMons\n\
+_08018F34: .4byte gBankAttacker\n\
+_08018F38: .4byte gProtectStructs\n\
+_08018F3C: .4byte gSpecialStatuses\n\
+_08018F40: .4byte gBankTarget\n\
+_08018F44: .4byte gBattleMoves\n\
+_08018F48: .4byte gBattleMoveDamage\n\
+_08018F4C: .4byte gBattlescriptCurrInstr\n\
+_08018F50: .4byte BattleScript_RoughSkinActivates\n\
+_08018F54:\n\
+ ldr r0, _08019020 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08018F64\n\
+ bl _08019F76\n\
+_08018F64:\n\
+ ldr r1, _08019024 @ =gBattleMons\n\
+ ldr r0, _08019028 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08018F7A\n\
+ bl _08019F76\n\
+_08018F7A:\n\
+ ldr r0, _0801902C @ =gProtectStructs\n\
+ lsls r1, r2, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _08018F8C\n\
+ bl _08019F76\n\
+_08018F8C:\n\
+ ldr r2, _08019030 @ =gSpecialStatuses\n\
+ ldr r0, _08019034 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r1, r0, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08018FB4\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08018FB4\n\
+ bl _08019F76\n\
+_08018FB4:\n\
+ ldr r1, _08019038 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08018FCC\n\
+ bl _08019F76\n\
+_08018FCC:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _08018FE4\n\
+ bl _08019F76\n\
+_08018FE4:\n\
+ ldr r5, _0801903C @ =gBattleCommunication\n\
+ movs r4, 0x3\n\
+_08018FE8:\n\
+ bl Random\n\
+ ands r0, r4\n\
+ strb r0, [r5, 0x3]\n\
+ cmp r0, 0\n\
+ beq _08018FE8\n\
+ ldr r1, _0801903C @ =gBattleCommunication\n\
+ ldrb r0, [r1, 0x3]\n\
+ cmp r0, 0x3\n\
+ bne _08019000\n\
+ adds r0, 0x2\n\
+ strb r0, [r1, 0x3]\n\
+_08019000:\n\
+ ldrb r0, [r1, 0x3]\n\
+ adds r0, 0x40\n\
+ strb r0, [r1, 0x3]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08019040 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08019044 @ =BattleScript_ApplySecondaryEffect\n\
+ str r0, [r1]\n\
+ ldr r2, _08019048 @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_08019020: .4byte gBattleMoveFlags\n\
+_08019024: .4byte gBattleMons\n\
+_08019028: .4byte gBankAttacker\n\
+_0801902C: .4byte gProtectStructs\n\
+_08019030: .4byte gSpecialStatuses\n\
+_08019034: .4byte gBankTarget\n\
+_08019038: .4byte gBattleMoves\n\
+_0801903C: .4byte gBattleCommunication\n\
+_08019040: .4byte gBattlescriptCurrInstr\n\
+_08019044: .4byte BattleScript_ApplySecondaryEffect\n\
+_08019048: .4byte gHitMarker\n\
+_0801904C:\n\
+ ldr r0, _080190FC @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801905C\n\
+ bl _08019F76\n\
+_0801905C:\n\
+ ldr r1, _08019100 @ =gBattleMons\n\
+ ldr r0, _08019104 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08019072\n\
+ bl _08019F76\n\
+_08019072:\n\
+ ldr r0, _08019108 @ =gProtectStructs\n\
+ lsls r1, r2, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _08019084\n\
+ bl _08019F76\n\
+_08019084:\n\
+ ldr r2, _0801910C @ =gSpecialStatuses\n\
+ ldr r0, _08019110 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r1, r0, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080190AC\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080190AC\n\
+ bl _08019F76\n\
+_080190AC:\n\
+ ldr r1, _08019114 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080190C4\n\
+ bl _08019F76\n\
+_080190C4:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _080190DC\n\
+ bl _08019F76\n\
+_080190DC:\n\
+ ldr r1, _08019118 @ =gBattleCommunication\n\
+ movs r0, 0x42\n\
+ strb r0, [r1, 0x3]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _0801911C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08019120 @ =BattleScript_ApplySecondaryEffect\n\
+ str r0, [r1]\n\
+ ldr r2, _08019124 @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_080190FC: .4byte gBattleMoveFlags\n\
+_08019100: .4byte gBattleMons\n\
+_08019104: .4byte gBankAttacker\n\
+_08019108: .4byte gProtectStructs\n\
+_0801910C: .4byte gSpecialStatuses\n\
+_08019110: .4byte gBankTarget\n\
+_08019114: .4byte gBattleMoves\n\
+_08019118: .4byte gBattleCommunication\n\
+_0801911C: .4byte gBattlescriptCurrInstr\n\
+_08019120: .4byte BattleScript_ApplySecondaryEffect\n\
+_08019124: .4byte gHitMarker\n\
+_08019128:\n\
+ ldr r0, _080191D8 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08019138\n\
+ bl _08019F76\n\
+_08019138:\n\
+ ldr r1, _080191DC @ =gBattleMons\n\
+ ldr r0, _080191E0 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _0801914E\n\
+ bl _08019F76\n\
+_0801914E:\n\
+ ldr r0, _080191E4 @ =gProtectStructs\n\
+ lsls r1, r2, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _08019160\n\
+ bl _08019F76\n\
+_08019160:\n\
+ ldr r2, _080191E8 @ =gSpecialStatuses\n\
+ ldr r0, _080191EC @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r1, r0, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08019188\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08019188\n\
+ bl _08019F76\n\
+_08019188:\n\
+ ldr r1, _080191F0 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080191A0\n\
+ bl _08019F76\n\
+_080191A0:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _080191B8\n\
+ bl _08019F76\n\
+_080191B8:\n\
+ ldr r1, _080191F4 @ =gBattleCommunication\n\
+ movs r0, 0x45\n\
+ strb r0, [r1, 0x3]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _080191F8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _080191FC @ =BattleScript_ApplySecondaryEffect\n\
+ str r0, [r1]\n\
+ ldr r2, _08019200 @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_080191D8: .4byte gBattleMoveFlags\n\
+_080191DC: .4byte gBattleMons\n\
+_080191E0: .4byte gBankAttacker\n\
+_080191E4: .4byte gProtectStructs\n\
+_080191E8: .4byte gSpecialStatuses\n\
+_080191EC: .4byte gBankTarget\n\
+_080191F0: .4byte gBattleMoves\n\
+_080191F4: .4byte gBattleCommunication\n\
+_080191F8: .4byte gBattlescriptCurrInstr\n\
+_080191FC: .4byte BattleScript_ApplySecondaryEffect\n\
+_08019200: .4byte gHitMarker\n\
+_08019204:\n\
+ ldr r0, _080192B4 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08019214\n\
+ bl _08019F76\n\
+_08019214:\n\
+ ldr r1, _080192B8 @ =gBattleMons\n\
+ ldr r0, _080192BC @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _0801922A\n\
+ bl _08019F76\n\
+_0801922A:\n\
+ ldr r0, _080192C0 @ =gProtectStructs\n\
+ lsls r1, r2, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _0801923C\n\
+ bl _08019F76\n\
+_0801923C:\n\
+ ldr r1, _080192C4 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08019254\n\
+ bl _08019F76\n\
+_08019254:\n\
+ ldr r2, _080192C8 @ =gSpecialStatuses\n\
+ ldr r0, _080192CC @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r1, r0, 2\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _0801927C\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _0801927C\n\
+ bl _08019F76\n\
+_0801927C:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _08019294\n\
+ bl _08019F76\n\
+_08019294:\n\
+ ldr r1, _080192D0 @ =gBattleCommunication\n\
+ movs r0, 0x43\n\
+ strb r0, [r1, 0x3]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _080192D4 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _080192D8 @ =BattleScript_ApplySecondaryEffect\n\
+ str r0, [r1]\n\
+ ldr r2, _080192DC @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_080192B4: .4byte gBattleMoveFlags\n\
+_080192B8: .4byte gBattleMons\n\
+_080192BC: .4byte gBankAttacker\n\
+_080192C0: .4byte gProtectStructs\n\
+_080192C4: .4byte gBattleMoves\n\
+_080192C8: .4byte gSpecialStatuses\n\
+_080192CC: .4byte gBankTarget\n\
+_080192D0: .4byte gBattleCommunication\n\
+_080192D4: .4byte gBattlescriptCurrInstr\n\
+_080192D8: .4byte BattleScript_ApplySecondaryEffect\n\
+_080192DC: .4byte gHitMarker\n\
+_080192E0:\n\
+ ldr r0, _08019420 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080192F0\n\
+ bl _08019F76\n\
+_080192F0:\n\
+ ldr r5, _08019424 @ =gBattleMons\n\
+ ldr r7, _08019428 @ =gBankAttacker\n\
+ ldrb r1, [r7]\n\
+ movs r6, 0x58\n\
+ adds r0, r1, 0\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08019308\n\
+ bl _08019F76\n\
+_08019308:\n\
+ ldr r0, _0801942C @ =gProtectStructs\n\
+ lsls r1, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _0801931A\n\
+ bl _08019F76\n\
+_0801931A:\n\
+ ldr r1, _08019430 @ =gBattleMoves\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08019332\n\
+ bl _08019F76\n\
+_08019332:\n\
+ ldr r3, _08019434 @ =gSpecialStatuses\n\
+ ldr r0, _08019438 @ =gBankTarget\n\
+ mov r8, r0\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r2, r0, 2\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r2, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _0801935C\n\
+ adds r0, r3, 0\n\
+ adds r0, 0xC\n\
+ adds r0, r2, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _0801935C\n\
+ bl _08019F76\n\
+_0801935C:\n\
+ adds r0, r1, 0\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _0801936C\n\
+ bl _08019F76\n\
+_0801936C:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ beq _08019384\n\
+ bl _08019F76\n\
+_08019384:\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xC\n\
+ bne _08019396\n\
+ bl _08019F76\n\
+_08019396:\n\
+ ldr r0, [sp, 0x8]\n\
+ ldr r1, [sp, 0x10]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ adds r4, r0, 0\n\
+ ldr r0, [sp, 0xC]\n\
+ ldr r1, [sp, 0x14]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ lsls r4, 24\n\
+ lsls r0, 24\n\
+ cmp r4, r0\n\
+ bne _080193B4\n\
+ bl _08019F76\n\
+_080193B4:\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r4, r5, 0\n\
+ adds r4, 0x50\n\
+ adds r0, r4\n\
+ ldr r0, [r0]\n\
+ movs r1, 0xF0\n\
+ lsls r1, 12\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080193CE\n\
+ bl _08019F76\n\
+_080193CE:\n\
+ ldr r0, [sp, 0x8]\n\
+ ldr r1, [sp, 0x10]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0xFF\n\
+ bne _080193E2\n\
+ bl _08019F76\n\
+_080193E2:\n\
+ ldr r0, [sp, 0xC]\n\
+ ldr r1, [sp, 0x14]\n\
+ bl GetGenderFromSpeciesAndPersonality\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0xFF\n\
+ bne _080193F6\n\
+ bl _08019F76\n\
+_080193F6:\n\
+ ldrb r0, [r7]\n\
+ adds r2, r0, 0\n\
+ muls r2, r6\n\
+ adds r2, r4\n\
+ ldr r1, _0801943C @ =gBitTable\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r1, [r0]\n\
+ lsls r1, 16\n\
+ ldr r0, [r2]\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08019440 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08019444 @ =BattleScript_CuteCharmActivates\n\
+ str r0, [r1]\n\
+ bl _08019F22\n\
+ .align 2, 0\n\
+_08019420: .4byte gBattleMoveFlags\n\
+_08019424: .4byte gBattleMons\n\
+_08019428: .4byte gBankAttacker\n\
+_0801942C: .4byte gProtectStructs\n\
+_08019430: .4byte gBattleMoves\n\
+_08019434: .4byte gSpecialStatuses\n\
+_08019438: .4byte gBankTarget\n\
+_0801943C: .4byte gBitTable\n\
+_08019440: .4byte gBattlescriptCurrInstr\n\
+_08019444: .4byte BattleScript_CuteCharmActivates\n\
+_08019448:\n\
+ movs r5, 0\n\
+ mov r10, r5\n\
+ ldr r0, _0801947C @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r10, r0\n\
+ bcc _08019458\n\
+ bl _08019F76\n\
+_08019458:\n\
+ ldr r1, _08019480 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r2, r10\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, r1\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ subs r0, 0x7\n\
+ adds r2, r1, 0\n\
+ cmp r0, 0x41\n\
+ bls _08019472\n\
+ b _080196D6\n\
+_08019472:\n\
+ lsls r0, 2\n\
+ ldr r1, _08019484 @ =_08019488\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0801947C: .4byte gNoOfAllBanks\n\
+_08019480: .4byte gBattleMons\n\
+_08019484: .4byte _08019488\n\
+ .align 2, 0\n\
+_08019488:\n\
+ .4byte _080195EC\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196B0\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _08019614\n\
+ .4byte _080196D6\n\
+ .4byte _08019590\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080195BC\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _08019680\n\
+ .4byte _08019650\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _080196D6\n\
+ .4byte _08019614\n\
+_08019590:\n\
+ movs r0, 0x58\n\
+ mov r3, r10\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x4C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ ldr r1, _080195B0 @ =0x00000f88\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080195AA\n\
+ b _080196D6\n\
+_080195AA:\n\
+ ldr r0, _080195B4 @ =gBattleTextBuff1\n\
+ ldr r1, _080195B8 @ =gStatusConditionString_PoisonJpn\n\
+ b _0801969C\n\
+ .align 2, 0\n\
+_080195B0: .4byte 0x00000f88\n\
+_080195B4: .4byte gBattleTextBuff1\n\
+_080195B8: .4byte gStatusConditionString_PoisonJpn\n\
+_080195BC:\n\
+ movs r0, 0x58\n\
+ mov r1, r10\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x50\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080195D6\n\
+ b _080196D6\n\
+_080195D6:\n\
+ ldr r0, _080195E4 @ =gBattleTextBuff1\n\
+ ldr r1, _080195E8 @ =gStatusConditionString_ConfusionJpn\n\
+ bl StringCopy\n\
+ movs r2, 0x2\n\
+ mov r9, r2\n\
+ b _080196DC\n\
+ .align 2, 0\n\
+_080195E4: .4byte gBattleTextBuff1\n\
+_080195E8: .4byte gStatusConditionString_ConfusionJpn\n\
+_080195EC:\n\
+ movs r0, 0x58\n\
+ mov r3, r10\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x4C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080196D6\n\
+ ldr r0, _0801960C @ =gBattleTextBuff1\n\
+ ldr r1, _08019610 @ =gStatusConditionString_ParalysisJpn\n\
+ b _0801969C\n\
+ .align 2, 0\n\
+_0801960C: .4byte gBattleTextBuff1\n\
+_08019610: .4byte gStatusConditionString_ParalysisJpn\n\
+_08019614:\n\
+ movs r0, 0x58\n\
+ mov r3, r10\n\
+ muls r3, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x4C\n\
+ adds r0, r3, r0\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080196D6\n\
+ adds r2, 0x50\n\
+ adds r2, r3, r2\n\
+ ldr r0, [r2]\n\
+ ldr r1, _08019644 @ =0xf7ffffff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r0, _08019648 @ =gBattleTextBuff1\n\
+ ldr r1, _0801964C @ =gStatusConditionString_SleepJpn\n\
+ bl StringCopy\n\
+ movs r0, 0x1\n\
+ mov r9, r0\n\
+ b _080196DC\n\
+ .align 2, 0\n\
+_08019644: .4byte 0xf7ffffff\n\
+_08019648: .4byte gBattleTextBuff1\n\
+_0801964C: .4byte gStatusConditionString_SleepJpn\n\
+_08019650:\n\
+ movs r0, 0x58\n\
+ mov r1, r10\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x4C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080196D6\n\
+ ldr r0, _08019678 @ =gBattleTextBuff1\n\
+ ldr r1, _0801967C @ =gStatusConditionString_BurnJpn\n\
+ bl StringCopy\n\
+ movs r2, 0x1\n\
+ mov r9, r2\n\
+ b _080196DC\n\
+ .align 2, 0\n\
+_08019678: .4byte gBattleTextBuff1\n\
+_0801967C: .4byte gStatusConditionString_BurnJpn\n\
+_08019680:\n\
+ movs r0, 0x58\n\
+ mov r3, r10\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x4C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080196D6\n\
+ ldr r0, _080196A8 @ =gBattleTextBuff1\n\
+ ldr r1, _080196AC @ =gStatusConditionString_IceJpn\n\
+_0801969C:\n\
+ bl StringCopy\n\
+ movs r5, 0x1\n\
+ mov r9, r5\n\
+ b _080196DC\n\
+ .align 2, 0\n\
+_080196A8: .4byte gBattleTextBuff1\n\
+_080196AC: .4byte gStatusConditionString_IceJpn\n\
+_080196B0:\n\
+ movs r0, 0x58\n\
+ mov r1, r10\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x50\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0xF0\n\
+ lsls r1, 12\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080196D6\n\
+ ldr r0, _080196EC @ =gBattleTextBuff1\n\
+ ldr r1, _080196F0 @ =gStatusConditionString_LoveJpn\n\
+ bl StringCopy\n\
+ movs r2, 0x3\n\
+ mov r9, r2\n\
+_080196D6:\n\
+ mov r3, r9\n\
+ cmp r3, 0\n\
+ beq _08019798\n\
+_080196DC:\n\
+ mov r5, r9\n\
+ cmp r5, 0x2\n\
+ beq _08019710\n\
+ cmp r5, 0x2\n\
+ bgt _080196F4\n\
+ cmp r5, 0x1\n\
+ beq _080196FC\n\
+ b _0801973C\n\
+ .align 2, 0\n\
+_080196EC: .4byte gBattleTextBuff1\n\
+_080196F0: .4byte gStatusConditionString_LoveJpn\n\
+_080196F4:\n\
+ mov r0, r9\n\
+ cmp r0, 0x3\n\
+ beq _08019728\n\
+ b _0801973C\n\
+_080196FC:\n\
+ ldr r1, _0801970C @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r2, r10\n\
+ muls r2, r0\n\
+ adds r1, 0x4C\n\
+ adds r2, r1\n\
+ movs r0, 0\n\
+ b _0801973A\n\
+ .align 2, 0\n\
+_0801970C: .4byte gBattleMons\n\
+_08019710:\n\
+ ldr r1, _08019724 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r2, r10\n\
+ muls r2, r0\n\
+ adds r1, 0x50\n\
+ adds r2, r1\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x8\n\
+ negs r1, r1\n\
+ b _08019738\n\
+ .align 2, 0\n\
+_08019724: .4byte gBattleMons\n\
+_08019728:\n\
+ ldr r1, _08019778 @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ mov r2, r10\n\
+ muls r2, r0\n\
+ adds r1, 0x50\n\
+ adds r2, r1\n\
+ ldr r0, [r2]\n\
+ ldr r1, _0801977C @ =0xfff0ffff\n\
+_08019738:\n\
+ ands r0, r1\n\
+_0801973A:\n\
+ str r0, [r2]\n\
+_0801973C:\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08019780 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08019784 @ =gUnknown_081D9956\n\
+ str r0, [r1]\n\
+ ldr r0, _08019788 @ =0x02000000\n\
+ ldr r1, _0801978C @ =0x00016003\n\
+ adds r0, r1\n\
+ mov r2, r10\n\
+ strb r2, [r0]\n\
+ ldr r4, _08019790 @ =gActiveBank\n\
+ strb r2, [r4]\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ ldr r1, _08019794 @ =gUnknown_02024ACC\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x28\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ bl _08019F92\n\
+ .align 2, 0\n\
+_08019778: .4byte gBattleMons\n\
+_0801977C: .4byte 0xfff0ffff\n\
+_08019780: .4byte gBattlescriptCurrInstr\n\
+_08019784: .4byte gUnknown_081D9956\n\
+_08019788: .4byte 0x02000000\n\
+_0801978C: .4byte 0x00016003\n\
+_08019790: .4byte gActiveBank\n\
+_08019794: .4byte gUnknown_02024ACC\n\
+_08019798:\n\
+ mov r0, r10\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ ldr r0, _080197B0 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r10, r0\n\
+ bcs _080197AC\n\
+ b _08019458\n\
+_080197AC:\n\
+ bl _08019F76\n\
+ .align 2, 0\n\
+_080197B0: .4byte gNoOfAllBanks\n\
+_080197B4:\n\
+ movs r3, 0\n\
+ mov r10, r3\n\
+ ldr r0, _080197FC @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r10, r0\n\
+ bcc _080197C2\n\
+ b _08019F76\n\
+_080197C2:\n\
+ ldr r4, _08019800 @ =gBattleMons\n\
+_080197C4:\n\
+ movs r0, 0x58\n\
+ mov r5, r10\n\
+ muls r5, r0\n\
+ adds r0, r5, 0\n\
+ adds r0, r4\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3B\n\
+ bne _080197E8\n\
+ mov r0, r10\n\
+ bl CastformDataTypeChange\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ cmp r0, 0\n\
+ beq _080197E8\n\
+ b _08019E40\n\
+_080197E8:\n\
+ mov r0, r10\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ ldr r0, _080197FC @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r10, r0\n\
+ bcc _080197C4\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_080197FC: .4byte gNoOfAllBanks\n\
+_08019800: .4byte gBattleMons\n\
+_08019804:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x1C\n\
+ beq _0801980E\n\
+ b _08019F76\n\
+_0801980E:\n\
+ ldr r4, _08019860 @ =gHitMarker\n\
+ ldr r1, [r4]\n\
+ movs r0, 0x80\n\
+ lsls r0, 7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801981E\n\
+ b _08019F76\n\
+_0801981E:\n\
+ ldr r0, _08019864 @ =0xffffbfff\n\
+ ands r1, r0\n\
+ str r1, [r4]\n\
+ ldr r3, _08019868 @ =0x000160ca\n\
+ adds r2, r7, r3\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ cmp r0, 0x6\n\
+ bne _08019838\n\
+ movs r0, 0x2\n\
+ strb r0, [r2]\n\
+_08019838:\n\
+ ldr r1, _0801986C @ =gBattleCommunication\n\
+ ldrb r0, [r2]\n\
+ adds r0, 0x40\n\
+ strb r0, [r1, 0x3]\n\
+ ldr r0, _08019870 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ ldr r5, _08019874 @ =0x00016003\n\
+ adds r0, r7, r5\n\
+ strb r1, [r0]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08019878 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _0801987C @ =BattleScript_SynchronizeActivates\n\
+ str r0, [r1]\n\
+ ldr r0, [r4]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ orrs r0, r1\n\
+ str r0, [r4]\n\
+ b _08019F22\n\
+ .align 2, 0\n\
+_08019860: .4byte gHitMarker\n\
+_08019864: .4byte 0xffffbfff\n\
+_08019868: .4byte 0x000160ca\n\
+_0801986C: .4byte gBattleCommunication\n\
+_08019870: .4byte gBankTarget\n\
+_08019874: .4byte 0x00016003\n\
+_08019878: .4byte gBattlescriptCurrInstr\n\
+_0801987C: .4byte BattleScript_SynchronizeActivates\n\
+_08019880:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x1C\n\
+ beq _0801988A\n\
+ b _08019F76\n\
+_0801988A:\n\
+ ldr r4, _080198DC @ =gHitMarker\n\
+ ldr r1, [r4]\n\
+ movs r0, 0x80\n\
+ lsls r0, 7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801989A\n\
+ b _08019F76\n\
+_0801989A:\n\
+ ldr r0, _080198E0 @ =0xffffbfff\n\
+ ands r1, r0\n\
+ str r1, [r4]\n\
+ ldr r3, _080198E4 @ =0x000160ca\n\
+ adds r2, r7, r3\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ strb r0, [r2]\n\
+ cmp r0, 0x6\n\
+ bne _080198B4\n\
+ movs r0, 0x2\n\
+ strb r0, [r2]\n\
+_080198B4:\n\
+ ldr r1, _080198E8 @ =gBattleCommunication\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r1, 0x3]\n\
+ ldr r0, _080198EC @ =gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ ldr r5, _080198F0 @ =0x00016003\n\
+ adds r0, r7, r5\n\
+ strb r1, [r0]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _080198F4 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _080198F8 @ =BattleScript_SynchronizeActivates\n\
+ str r0, [r1]\n\
+ ldr r0, [r4]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ orrs r0, r1\n\
+ str r0, [r4]\n\
+ b _08019F22\n\
+ .align 2, 0\n\
+_080198DC: .4byte gHitMarker\n\
+_080198E0: .4byte 0xffffbfff\n\
+_080198E4: .4byte 0x000160ca\n\
+_080198E8: .4byte gBattleCommunication\n\
+_080198EC: .4byte gBankAttacker\n\
+_080198F0: .4byte 0x00016003\n\
+_080198F4: .4byte gBattlescriptCurrInstr\n\
+_080198F8: .4byte BattleScript_SynchronizeActivates\n\
+_080198FC:\n\
+ movs r4, 0\n\
+ ldr r0, _08019934 @ =gNoOfAllBanks\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ blt _08019908\n\
+ b _08019F76\n\
+_08019908:\n\
+ ldr r0, _08019938 @ =gBattleMons\n\
+ adds r5, r1, 0\n\
+ ldr r2, _0801993C @ =gStatuses3\n\
+ adds r3, r0, 0\n\
+ adds r3, 0x20\n\
+ movs r6, 0x80\n\
+ lsls r6, 12\n\
+_08019916:\n\
+ ldrb r1, [r3]\n\
+ cmp r1, 0x16\n\
+ bne _08019926\n\
+ ldr r0, [r2]\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ beq _08019926\n\
+ b _08019E6C\n\
+_08019926:\n\
+ adds r2, 0x4\n\
+ adds r3, 0x58\n\
+ adds r4, 0x1\n\
+ cmp r4, r5\n\
+ blt _08019916\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019934: .4byte gNoOfAllBanks\n\
+_08019938: .4byte gBattleMons\n\
+_0801993C: .4byte gStatuses3\n\
+_08019940:\n\
+ movs r4, 0\n\
+ ldr r0, _08019A1C @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _0801994C\n\
+ b _08019F76\n\
+_0801994C:\n\
+ ldr r0, _08019A20 @ =gActiveBank\n\
+ mov r8, r0\n\
+ ldr r1, _08019A24 @ =gBattleMons\n\
+ adds r1, 0x20\n\
+ str r1, [sp, 0x1C]\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x20]\n\
+_0801995A:\n\
+ ldr r3, [sp, 0x1C]\n\
+ ldrb r0, [r3]\n\
+ cmp r0, 0x24\n\
+ beq _08019964\n\
+ b _08019AF6\n\
+_08019964:\n\
+ ldr r0, _08019A28 @ =gStatuses3\n\
+ ldr r5, [sp, 0x20]\n\
+ adds r0, r5, r0\n\
+ ldr r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 13\n\
+ ands r1, r0\n\
+ str r5, [sp, 0x18]\n\
+ cmp r1, 0\n\
+ bne _0801997A\n\
+ b _08019AF6\n\
+_0801997A:\n\
+ lsls r0, r4, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankIdentity\n\
+ movs r1, 0x1\n\
+ adds r5, r0, 0\n\
+ eors r5, r1\n\
+ ands r5, r1\n\
+ adds r0, r5, 0\n\
+ bl GetBankByPlayerAI\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ adds r0, r5, 0x2\n\
+ bl GetBankByPlayerAI\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ ldr r0, _08019A2C @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r2, 0x1\n\
+ adds r0, r2, 0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080199AE\n\
+ b _08019ABC\n\
+_080199AE:\n\
+ movs r1, 0x58\n\
+ adds r0, r6, 0\n\
+ muls r0, r1\n\
+ ldr r3, _08019A24 @ =gBattleMons\n\
+ adds r1, r0, r3\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08019A78\n\
+ ldrh r0, [r1, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08019A34\n\
+ movs r1, 0x58\n\
+ adds r0, r7, 0\n\
+ muls r0, r1\n\
+ adds r1, r0, r3\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08019A34\n\
+ ldrh r0, [r1, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08019A34\n\
+ str r2, [sp, 0x24]\n\
+ bl Random\n\
+ ldr r2, [sp, 0x24]\n\
+ adds r1, r2, 0\n\
+ ands r1, r0\n\
+ lsls r1, 1\n\
+ orrs r5, r1\n\
+ adds r0, r5, 0\n\
+ bl GetBankByPlayerAI\n\
+ mov r2, r8\n\
+ strb r0, [r2]\n\
+ ldrb r0, [r2]\n\
+ movs r3, 0x58\n\
+ muls r0, r3\n\
+ ldr r5, _08019A24 @ =gBattleMons\n\
+ adds r0, r5\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ ldr r1, [sp, 0x1C]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r2]\n\
+ muls r0, r3\n\
+ adds r0, r5\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ ldr r2, _08019A30 @ =gLastUsedAbility\n\
+ strb r0, [r2]\n\
+ b _08019AE4\n\
+ .align 2, 0\n\
+_08019A1C: .4byte gNoOfAllBanks\n\
+_08019A20: .4byte gActiveBank\n\
+_08019A24: .4byte gBattleMons\n\
+_08019A28: .4byte gStatuses3\n\
+_08019A2C: .4byte gBattleTypeFlags\n\
+_08019A30: .4byte gLastUsedAbility\n\
+_08019A34:\n\
+ ldr r3, _08019A74 @ =gBattleMons\n\
+ movs r2, 0x58\n\
+ adds r0, r6, 0\n\
+ muls r0, r2\n\
+ adds r1, r0, r3\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08019A78\n\
+ ldrh r0, [r1, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08019A78\n\
+ mov r5, r8\n\
+ strb r6, [r5]\n\
+ adds r1, r4, 0\n\
+ muls r1, r2\n\
+ adds r1, r3\n\
+ ldrb r0, [r5]\n\
+ muls r0, r2\n\
+ adds r0, r3\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ adds r1, 0x20\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r5]\n\
+ muls r0, r2\n\
+ adds r0, r3\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ b _08019AE0\n\
+ .align 2, 0\n\
+_08019A74: .4byte gBattleMons\n\
+_08019A78:\n\
+ ldr r3, _08019AB8 @ =gBattleMons\n\
+ movs r2, 0x58\n\
+ adds r0, r7, 0\n\
+ muls r0, r2\n\
+ adds r1, r0, r3\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08019AEE\n\
+ ldrh r0, [r1, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08019AEE\n\
+ mov r5, r8\n\
+ strb r7, [r5]\n\
+ adds r1, r4, 0\n\
+ muls r1, r2\n\
+ adds r1, r3\n\
+ ldrb r0, [r5]\n\
+ muls r0, r2\n\
+ adds r0, r3\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ adds r1, 0x20\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r5]\n\
+ muls r0, r2\n\
+ adds r0, r3\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ b _08019AE0\n\
+ .align 2, 0\n\
+_08019AB8: .4byte gBattleMons\n\
+_08019ABC:\n\
+ mov r2, r8\n\
+ strb r6, [r2]\n\
+ movs r3, 0x58\n\
+ adds r0, r6, 0\n\
+ muls r0, r3\n\
+ ldr r5, _08019B10 @ =gBattleMons\n\
+ adds r0, r5\n\
+ adds r2, r0, 0\n\
+ adds r2, 0x20\n\
+ ldrb r1, [r2]\n\
+ cmp r1, 0\n\
+ beq _08019AEE\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08019AEE\n\
+ ldr r0, [sp, 0x1C]\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r2]\n\
+_08019AE0:\n\
+ ldr r1, _08019B14 @ =gLastUsedAbility\n\
+ strb r0, [r1]\n\
+_08019AE4:\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08019AEE:\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ beq _08019AF6\n\
+ b _08019E88\n\
+_08019AF6:\n\
+ ldr r3, [sp, 0x1C]\n\
+ adds r3, 0x58\n\
+ str r3, [sp, 0x1C]\n\
+ ldr r5, [sp, 0x20]\n\
+ adds r5, 0x4\n\
+ str r5, [sp, 0x20]\n\
+ adds r4, 0x1\n\
+ ldr r0, _08019B18 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ bge _08019B0E\n\
+ b _0801995A\n\
+_08019B0E:\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019B10: .4byte gBattleMons\n\
+_08019B14: .4byte gLastUsedAbility\n\
+_08019B18: .4byte gNoOfAllBanks\n\
+_08019B1C:\n\
+ movs r4, 0\n\
+ ldr r0, _08019B54 @ =gNoOfAllBanks\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ blt _08019B28\n\
+ b _08019F76\n\
+_08019B28:\n\
+ ldr r0, _08019B58 @ =gBattleMons\n\
+ adds r5, r1, 0\n\
+ ldr r2, _08019B5C @ =gStatuses3\n\
+ adds r3, r0, 0\n\
+ adds r3, 0x20\n\
+ movs r6, 0x80\n\
+ lsls r6, 12\n\
+_08019B36:\n\
+ ldrb r1, [r3]\n\
+ cmp r1, 0x16\n\
+ bne _08019B46\n\
+ ldr r0, [r2]\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ beq _08019B46\n\
+ b _08019F04\n\
+_08019B46:\n\
+ adds r2, 0x4\n\
+ adds r3, 0x58\n\
+ adds r4, 0x1\n\
+ cmp r4, r5\n\
+ blt _08019B36\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019B54: .4byte gNoOfAllBanks\n\
+_08019B58: .4byte gBattleMons\n\
+_08019B5C: .4byte gStatuses3\n\
+_08019B60:\n\
+ mov r0, r10\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r4, 0\n\
+ ldr r0, _08019BB0 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019B76\n\
+ b _08019F76\n\
+_08019B76:\n\
+ ldr r7, _08019BB4 @ =gBattleMons\n\
+_08019B78:\n\
+ lsls r0, r4, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, r5\n\
+ beq _08019BA2\n\
+ movs r0, 0x58\n\
+ muls r0, r4\n\
+ adds r0, r7\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r6\n\
+ bne _08019BA2\n\
+ ldr r0, _08019BB8 @ =gLastUsedAbility\n\
+ strb r6, [r0]\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08019BA2:\n\
+ adds r4, r3, 0\n\
+ ldr r0, _08019BB0 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019B78\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019BB0: .4byte gNoOfAllBanks\n\
+_08019BB4: .4byte gBattleMons\n\
+_08019BB8: .4byte gLastUsedAbility\n\
+_08019BBC:\n\
+ mov r0, r10\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r4, 0\n\
+ ldr r0, _08019C0C @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019BD2\n\
+ b _08019F76\n\
+_08019BD2:\n\
+ ldr r7, _08019C10 @ =gBattleMons\n\
+_08019BD4:\n\
+ lsls r0, r4, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, r5\n\
+ bne _08019BFE\n\
+ movs r0, 0x58\n\
+ muls r0, r4\n\
+ adds r0, r7\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r6\n\
+ bne _08019BFE\n\
+ ldr r0, _08019C14 @ =gLastUsedAbility\n\
+ strb r6, [r0]\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08019BFE:\n\
+ adds r4, r3, 0\n\
+ ldr r0, _08019C0C @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019BD4\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019C0C: .4byte gNoOfAllBanks\n\
+_08019C10: .4byte gBattleMons\n\
+_08019C14: .4byte gLastUsedAbility\n\
+_08019C18:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0xFD\n\
+ beq _08019C40\n\
+ cmp r0, 0xFE\n\
+ beq _08019C78\n\
+ movs r4, 0\n\
+ ldr r0, _08019C38 @ =gNoOfAllBanks\n\
+ adds r5, r0, 0\n\
+ ldrb r2, [r5]\n\
+ cmp r4, r2\n\
+ blt _08019C32\n\
+ b _08019F76\n\
+_08019C32:\n\
+ ldr r2, _08019C3C @ =gBattleMons\n\
+ b _08019CB0\n\
+ .align 2, 0\n\
+_08019C38: .4byte gNoOfAllBanks\n\
+_08019C3C: .4byte gBattleMons\n\
+_08019C40:\n\
+ movs r4, 0\n\
+ ldr r0, _08019C70 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019C4C\n\
+ b _08019F76\n\
+_08019C4C:\n\
+ ldr r5, _08019C74 @ =gStatuses3\n\
+ movs r2, 0x80\n\
+ lsls r2, 9\n\
+ adds r1, r0, 0\n\
+_08019C54:\n\
+ lsls r0, r4, 2\n\
+ adds r0, r5\n\
+ ldr r0, [r0]\n\
+ ands r0, r2\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, 0\n\
+ beq _08019C68\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08019C68:\n\
+ adds r4, r3, 0\n\
+ cmp r4, r1\n\
+ blt _08019C54\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019C70: .4byte gNoOfAllBanks\n\
+_08019C74: .4byte gStatuses3\n\
+_08019C78:\n\
+ movs r4, 0\n\
+ ldr r0, _08019CA8 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019C84\n\
+ b _08019F76\n\
+_08019C84:\n\
+ ldr r5, _08019CAC @ =gStatuses3\n\
+ movs r2, 0x80\n\
+ lsls r2, 10\n\
+ adds r1, r0, 0\n\
+_08019C8C:\n\
+ lsls r0, r4, 2\n\
+ adds r0, r5\n\
+ ldr r0, [r0]\n\
+ ands r0, r2\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, 0\n\
+ beq _08019CA0\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08019CA0:\n\
+ adds r4, r3, 0\n\
+ cmp r4, r1\n\
+ blt _08019C8C\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019CA8: .4byte gNoOfAllBanks\n\
+_08019CAC: .4byte gStatuses3\n\
+_08019CB0:\n\
+ movs r0, 0x58\n\
+ muls r0, r4\n\
+ adds r0, r2\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, r6\n\
+ bne _08019CCA\n\
+ mov r0, r8\n\
+ strb r6, [r0]\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08019CCA:\n\
+ adds r4, r3, 0\n\
+ ldrb r1, [r5]\n\
+ cmp r4, r1\n\
+ blt _08019CB0\n\
+ b _08019F76\n\
+_08019CD4:\n\
+ movs r4, 0\n\
+ ldr r0, _08019D10 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019CE0\n\
+ b _08019F76\n\
+_08019CE0:\n\
+ ldr r7, _08019D14 @ =gBattleMons\n\
+ adds r2, r0, 0\n\
+ movs r5, 0x58\n\
+_08019CE6:\n\
+ adds r0, r4, 0\n\
+ muls r0, r5\n\
+ adds r1, r0, r7\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, r6\n\
+ bne _08019D08\n\
+ ldrh r0, [r1, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08019D08\n\
+ mov r0, r8\n\
+ strb r6, [r0]\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08019D08:\n\
+ adds r4, r3, 0\n\
+ cmp r4, r2\n\
+ blt _08019CE6\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019D10: .4byte gNoOfAllBanks\n\
+_08019D14: .4byte gBattleMons\n\
+_08019D18:\n\
+ movs r4, 0\n\
+ ldr r0, _08019D50 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019D24\n\
+ b _08019F76\n\
+_08019D24:\n\
+ ldr r7, _08019D54 @ =gBattleMons\n\
+ adds r1, r0, 0\n\
+ movs r5, 0x58\n\
+ ldr r2, _08019D58 @ =gLastUsedAbility\n\
+_08019D2C:\n\
+ adds r0, r4, 0\n\
+ muls r0, r5\n\
+ adds r0, r7\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ adds r3, r4, 0x1\n\
+ cmp r0, r6\n\
+ bne _08019D48\n\
+ cmp r4, r10\n\
+ beq _08019D48\n\
+ strb r6, [r2]\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08019D48:\n\
+ adds r4, r3, 0\n\
+ cmp r4, r1\n\
+ blt _08019D2C\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019D50: .4byte gNoOfAllBanks\n\
+_08019D54: .4byte gBattleMons\n\
+_08019D58: .4byte gLastUsedAbility\n\
+_08019D5C:\n\
+ mov r0, r10\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r4, 0\n\
+ ldr r0, _08019DAC @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019D72\n\
+ b _08019F76\n\
+_08019D72:\n\
+ ldr r7, _08019DB0 @ =gBattleMons\n\
+_08019D74:\n\
+ lsls r0, r4, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, r5\n\
+ beq _08019DA0\n\
+ movs r0, 0x58\n\
+ muls r0, r4\n\
+ adds r0, r7\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r6\n\
+ bne _08019DA0\n\
+ ldr r0, _08019DB4 @ =gLastUsedAbility\n\
+ strb r6, [r0]\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08019DA0:\n\
+ adds r4, 0x1\n\
+ ldr r0, _08019DAC @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019D74\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019DAC: .4byte gNoOfAllBanks\n\
+_08019DB0: .4byte gBattleMons\n\
+_08019DB4: .4byte gLastUsedAbility\n\
+_08019DB8:\n\
+ mov r0, r10\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ movs r4, 0\n\
+ ldr r0, _08019E08 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019DCE\n\
+ b _08019F76\n\
+_08019DCE:\n\
+ ldr r7, _08019E0C @ =gBattleMons\n\
+_08019DD0:\n\
+ lsls r0, r4, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, r5\n\
+ bne _08019DFC\n\
+ movs r0, 0x58\n\
+ muls r0, r4\n\
+ adds r0, r7\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r6\n\
+ bne _08019DFC\n\
+ ldr r0, _08019E10 @ =gLastUsedAbility\n\
+ strb r6, [r0]\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08019DFC:\n\
+ adds r4, 0x1\n\
+ ldr r0, _08019E08 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r4, r0\n\
+ blt _08019DD0\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019E08: .4byte gNoOfAllBanks\n\
+_08019E0C: .4byte gBattleMons\n\
+_08019E10: .4byte gLastUsedAbility\n\
+_08019E14:\n\
+ ldr r0, _08019E30 @ =BattleScript_CastformChange\n\
+ bl b_push_move_exec\n\
+ ldr r0, _08019E34 @ =0x02000000\n\
+ ldr r2, _08019E38 @ =0x00016003\n\
+ adds r1, r0, r2\n\
+ strb r6, [r1]\n\
+ mov r1, r9\n\
+ subs r1, 0x1\n\
+ ldr r3, _08019E3C @ =0x0001609b\n\
+ adds r0, r3\n\
+ strb r1, [r0]\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019E30: .4byte BattleScript_CastformChange\n\
+_08019E34: .4byte 0x02000000\n\
+_08019E38: .4byte 0x00016003\n\
+_08019E3C: .4byte 0x0001609b\n\
+_08019E40:\n\
+ ldr r0, _08019E5C @ =BattleScript_CastformChange\n\
+ bl b_push_move_exec\n\
+ ldr r0, _08019E60 @ =0x02000000\n\
+ ldr r5, _08019E64 @ =0x00016003\n\
+ adds r1, r0, r5\n\
+ mov r2, r10\n\
+ strb r2, [r1]\n\
+ mov r1, r9\n\
+ subs r1, 0x1\n\
+ ldr r3, _08019E68 @ =0x0001609b\n\
+ adds r0, r3\n\
+ strb r1, [r0]\n\
+ b _08019F92\n\
+ .align 2, 0\n\
+_08019E5C: .4byte BattleScript_CastformChange\n\
+_08019E60: .4byte 0x02000000\n\
+_08019E64: .4byte 0x00016003\n\
+_08019E68: .4byte 0x0001609b\n\
+_08019E6C:\n\
+ mov r5, r8\n\
+ strb r1, [r5]\n\
+ ldr r0, [r2]\n\
+ ldr r1, _08019E80 @ =0xfff7ffff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r0, _08019E84 @ =gUnknown_081D978C\n\
+ bl b_push_move_exec\n\
+ b _08019F1A\n\
+ .align 2, 0\n\
+_08019E80: .4byte 0xfff7ffff\n\
+_08019E84: .4byte gUnknown_081D978C\n\
+_08019E88:\n\
+ ldr r0, _08019EDC @ =BattleScript_TraceActivates\n\
+ bl b_push_move_exec\n\
+ ldr r1, _08019EE0 @ =gStatuses3\n\
+ ldr r2, [sp, 0x18]\n\
+ adds r1, r2, r1\n\
+ ldr r0, [r1]\n\
+ ldr r2, _08019EE4 @ =0xffefffff\n\
+ ands r0, r2\n\
+ str r0, [r1]\n\
+ ldr r0, _08019EE8 @ =0x02000000\n\
+ ldr r3, _08019EEC @ =0x00016003\n\
+ adds r0, r3\n\
+ strb r4, [r0]\n\
+ ldr r1, _08019EF0 @ =gBattleTextBuff1\n\
+ movs r4, 0xFD\n\
+ strb r4, [r1]\n\
+ movs r0, 0x4\n\
+ strb r0, [r1, 0x1]\n\
+ ldr r2, _08019EF4 @ =gActiveBank\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r1, 0x2]\n\
+ ldr r3, _08019EF8 @ =gBattlePartyID\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 1\n\
+ adds r0, r3\n\
+ ldrh r0, [r0]\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x4]\n\
+ ldr r1, _08019EFC @ =gBattleTextBuff2\n\
+ strb r4, [r1]\n\
+ movs r0, 0x9\n\
+ strb r0, [r1, 0x1]\n\
+ ldr r0, _08019F00 @ =gLastUsedAbility\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1, 0x2]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ strb r0, [r1, 0x3]\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019EDC: .4byte BattleScript_TraceActivates\n\
+_08019EE0: .4byte gStatuses3\n\
+_08019EE4: .4byte 0xffefffff\n\
+_08019EE8: .4byte 0x02000000\n\
+_08019EEC: .4byte 0x00016003\n\
+_08019EF0: .4byte gBattleTextBuff1\n\
+_08019EF4: .4byte gActiveBank\n\
+_08019EF8: .4byte gBattlePartyID\n\
+_08019EFC: .4byte gBattleTextBuff2\n\
+_08019F00: .4byte gLastUsedAbility\n\
+_08019F04:\n\
+ mov r5, r8\n\
+ strb r1, [r5]\n\
+ ldr r0, [r2]\n\
+ ldr r1, _08019F30 @ =0xfff7ffff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08019F34 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08019F38 @ =gUnknown_081D9795\n\
+ str r0, [r1]\n\
+_08019F1A:\n\
+ ldr r0, _08019F3C @ =0x02000000\n\
+ ldr r1, _08019F40 @ =0x000160dd\n\
+ adds r0, r1\n\
+ strb r4, [r0]\n\
+_08019F22:\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+ b _08019F76\n\
+ .align 2, 0\n\
+_08019F30: .4byte 0xfff7ffff\n\
+_08019F34: .4byte gBattlescriptCurrInstr\n\
+_08019F38: .4byte gUnknown_081D9795\n\
+_08019F3C: .4byte 0x02000000\n\
+_08019F40: .4byte 0x000160dd\n\
+_08019F44:\n\
+ movs r4, 0\n\
+ ldr r0, _08019FA4 @ =gNoOfAllBanks\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ bge _08019F76\n\
+ ldr r0, _08019FA8 @ =gBattleMons\n\
+ adds r2, r1, 0\n\
+ adds r1, r0, 0\n\
+ adds r1, 0x20\n\
+ ldr r3, _08019FAC @ =gLastUsedAbility\n\
+_08019F58:\n\
+ ldrb r0, [r1]\n\
+ cmp r0, r6\n\
+ bne _08019F6E\n\
+ cmp r4, r10\n\
+ beq _08019F6E\n\
+ strb r6, [r3]\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08019F6E:\n\
+ adds r1, 0x58\n\
+ adds r4, 0x1\n\
+ cmp r4, r2\n\
+ blt _08019F58\n\
+_08019F76:\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ beq _08019F92\n\
+_08019F7C:\n\
+ ldr r3, [sp, 0x4]\n\
+ cmp r3, 0xB\n\
+ bhi _08019F92\n\
+ ldr r1, _08019FAC @ =gLastUsedAbility\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0xFF\n\
+ beq _08019F92\n\
+ adds r1, r0, 0\n\
+ mov r0, r10\n\
+ bl RecordAbilityBattle\n\
+_08019F92:\n\
+ mov r0, r9\n\
+ add sp, 0x28\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\
+_08019FA4: .4byte gNoOfAllBanks\n\
+_08019FA8: .4byte gBattleMons\n\
+_08019FAC: .4byte gLastUsedAbility\n\
+ .syntax divided");
+}
+
+#endif // NONMATCHING
+
+void b_call_bc_move_exec(u8* BS_ptr)
+{
+ gBattlescriptCurrInstr = BS_ptr;
+ B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc;
+ gBattleMainFunc = sub_8013F54;
+ gFightStateTracker = 0;
+}
+
+void b_push_move_exec(u8* BS_ptr)
+{
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BS_ptr;
+ B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size++] = gBattleMainFunc;
+ gBattleMainFunc = sub_8013FBC;
+}
+
+enum
+{
+ ITEM_NO_EFFECT, // 0
+ ITEM_STATUS_CHANGE, // 1
+ ITEM_EFFECT_OTHER, // 2
+ ITEM_PP_CHANGE, // 3
+ ITEM_HP_CHANGE, // 4
+ ITEM_STATS_CHANGE, // 5
+};
+
+enum
+{
+ FLAVOR_SPICY, // 0
+ FLAVOR_DRY, // 1
+ FLAVOR_SWEET, // 2
+ FLAVOR_BITTER, // 3
+ FLAVOR_SOUR, // 4
+};
+
+u8 ItemBattleEffects(u8 caseID, u8 bank, bool8 moveTurn)
+{
+ int i = 0;
+ u8 effect = ITEM_NO_EFFECT;
+ u8 changedPP = 0;
+ u8 bankHoldEffect, atkHoldEffect, defHoldEffect;
+ u8 bankQuality, atkQuality, defQuality;
+ u16 atkItem, defItem;
+
+ gLastUsedItem = gBattleMons[bank].item;
+ if (gLastUsedItem == ITEM_ENIGMA_BERRY)
+ {
+ bankHoldEffect = gEnigmaBerries[bank].holdEffect;
+ bankQuality = gEnigmaBerries[bank].holdEffectParam;
+ }
+ else
+ {
+ bankHoldEffect = ItemId_GetHoldEffect(gLastUsedItem);
+ bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem);
+ }
+
+ atkItem = gBattleMons[gBankAttacker].item;
+ if (atkItem == ITEM_ENIGMA_BERRY)
+ {
+ atkHoldEffect = gEnigmaBerries[gBankAttacker].holdEffect;
+ atkQuality = gEnigmaBerries[gBankAttacker].holdEffectParam;
+ }
+ else
+ {
+ atkHoldEffect = ItemId_GetHoldEffect(atkItem);
+ atkQuality = ItemId_GetHoldEffectParam(atkItem);
+ }
+
+ // def variables are unused
+ defItem = gBattleMons[gBankTarget].item;
+ if (defItem == ITEM_ENIGMA_BERRY)
+ {
+ defHoldEffect = gEnigmaBerries[gBankTarget].holdEffect;
+ defQuality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ }
+ else
+ {
+ defHoldEffect = ItemId_GetHoldEffect(defItem);
+ defQuality = ItemId_GetHoldEffectParam(defItem);
+ }
+
+ switch (caseID)
+ {
+ case 0:
+ switch (bankHoldEffect)
+ {
+ case HOLD_EFFECT_DOUBLE_PRIZE:
+ BATTLE_STRUCT->moneyMultiplier = 2;
+ break;
+ case HOLD_EFFECT_RESTORE_STATS:
+ for (i = 0; i < 8; i++)
+ {
+ if (gBattleMons[bank].statStages[i] < 6)
+ {
+ gBattleMons[bank].statStages[i] = 6;
+ effect = ITEM_STATS_CHANGE;
+ }
+ }
+ if (effect)
+ {
+ BATTLE_STRUCT->scriptingActive = bank;
+ gStringBank = bank;
+ gActiveBank = gBankAttacker = bank;
+ b_call_bc_move_exec(BattleScript_WhiteHerbEnd2);
+ }
+ break;
+ }
+ break;
+ case 1:
+ if (gBattleMons[bank].hp)
+ {
+ switch (bankHoldEffect)
+ {
+ case HOLD_EFFECT_RESTORE_HP:
+ if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ {
+ gBattleMoveDamage = bankQuality;
+ if (gBattleMons[bank].hp + bankQuality > gBattleMons[bank].maxHP)
+ gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ gBattleMoveDamage *= -1;
+ b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem);
+ effect = 4;
+ }
+ break;
+ case HOLD_EFFECT_RESTORE_PP:
+ if (!moveTurn)
+ {
+ struct Pokemon* poke;
+ u8 ppBonuses;
+ u16 move;
+
+ if (GetBankSide(bank) == 0)
+ poke = &gPlayerParty[gBattlePartyID[bank]];
+ else
+ poke = &gEnemyParty[gBattlePartyID[bank]];
+ for (i = 0; i < 4; i++)
+ {
+ move = GetMonData(poke, MON_DATA_MOVE1 + i);
+ changedPP = GetMonData(poke, MON_DATA_PP1 + i);
+ ppBonuses = GetMonData(poke, MON_DATA_PP_BONUSES);
+ if (move && changedPP == 0)
+ break;
+ }
+ if (i != 4)
+ {
+ u8 maxPP = CalculatePPWithBonus(move, ppBonuses, i);
+ if (changedPP + bankQuality > maxPP)
+ changedPP = maxPP;
+ else
+ changedPP = changedPP + bankQuality;
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = move;
+ gBattleTextBuff1[3] = move >> 8;
+ gBattleTextBuff1[4] = 0xFF;
+ b_call_bc_move_exec(BattleScript_BerryPPHealEnd2);
+ EmitSetAttributes(0, i + REQUEST_PPMOVE1_BATTLE, 0, 1, &changedPP);
+ MarkBufferBankForExecution(gActiveBank);
+ effect = ITEM_PP_CHANGE;
+ }
+ }
+ break;
+ case HOLD_EFFECT_RESTORE_STATS:
+ for (i = 0; i < 8; i++)
+ {
+ if (gBattleMons[bank].statStages[i] < 6)
+ {
+ gBattleMons[bank].statStages[i] = 6;
+ effect = ITEM_STATS_CHANGE;
+ }
+ }
+ if (effect)
+ {
+ BATTLE_STRUCT->scriptingActive = bank;
+ gStringBank = bank;
+ gActiveBank = gBankAttacker = bank;
+ b_call_bc_move_exec(BattleScript_WhiteHerbEnd2);
+ }
+ break;
+ case HOLD_EFFECT_LEFTOVERS:
+ if (gBattleMons[bank].hp < gBattleMons[bank].maxHP && !moveTurn)
+ {
+ gBattleMoveDamage = gBattleMons[bank].maxHP / 16;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
+ gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ gBattleMoveDamage *= -1;
+ b_call_bc_move_exec(BattleScript_ItemHealHP_End2);
+ effect = ITEM_HP_CHANGE;
+ RecordItemBattle(bank, bankHoldEffect);
+ }
+ break;
+ // nice copy/paste there gamefreak, making a function for confuse berries was too much eh?
+ case HOLD_EFFECT_CONFUSE_SPICY:
+ if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 8;
+ gBattleTextBuff1[2] = FLAVOR_SPICY;
+ gBattleTextBuff1[3] = EOS;
+ gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
+ gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ gBattleMoveDamage *= -1;
+ if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SPICY) < 0)
+ b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2);
+ else
+ b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem);
+ effect = ITEM_HP_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CONFUSE_DRY:
+ if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 8;
+ gBattleTextBuff1[2] = FLAVOR_DRY;
+ gBattleTextBuff1[3] = EOS;
+ gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
+ gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ gBattleMoveDamage *= -1;
+ if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_DRY) < 0)
+ b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2);
+ else
+ b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem);
+ effect = ITEM_HP_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CONFUSE_SWEET:
+ if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 8;
+ gBattleTextBuff1[2] = FLAVOR_SWEET;
+ gBattleTextBuff1[3] = EOS;
+ gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
+ gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ gBattleMoveDamage *= -1;
+ if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SWEET) < 0)
+ b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2);
+ else
+ b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem);
+ effect = ITEM_HP_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CONFUSE_BITTER:
+ if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 8;
+ gBattleTextBuff1[2] = FLAVOR_BITTER;
+ gBattleTextBuff1[3] = EOS;
+ gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
+ gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ gBattleMoveDamage *= -1;
+ if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_BITTER) < 0)
+ b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2);
+ else
+ b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem);
+ effect = ITEM_HP_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CONFUSE_SOUR:
+ if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / 2 && !moveTurn)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 8;
+ gBattleTextBuff1[2] = FLAVOR_SOUR;
+ gBattleTextBuff1[3] = EOS;
+ gBattleMoveDamage = gBattleMons[bank].maxHP / bankQuality;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ if (gBattleMons[bank].hp + gBattleMoveDamage > gBattleMons[bank].maxHP)
+ gBattleMoveDamage = gBattleMons[bank].maxHP - gBattleMons[bank].hp;
+ gBattleMoveDamage *= -1;
+ if (GetPokeFlavourRelation(gBattleMons[bank].personality, FLAVOR_SOUR) < 0)
+ b_call_bc_move_exec(BattleScript_BerryConfuseHealEnd2);
+ else
+ b_call_bc_move_exec(BattleScript_ItemHealHP_RemoveItem);
+ effect = ITEM_HP_CHANGE;
+ }
+ break;
+ // copy/paste again, smh
+ case HOLD_EFFECT_ATTACK_UP:
+ if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_ATK] < 0xC)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 5;
+ gBattleTextBuff1[2] = STAT_STAGE_ATK;
+ gBattleTextBuff1[3] = EOS;
+
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 0;
+ gBattleTextBuff2[2] = 0xD2;
+ gBattleTextBuff2[3] = 0xD2 >> 8;
+ gBattleTextBuff2[4] = EOS;
+
+ gEffectBank = bank;
+ BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_ATK;
+ BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_ATK;
+ BATTLE_STRUCT->animArg2 = 0;
+ b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2);
+ effect = ITEM_STATS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_DEFENSE_UP:
+ if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_DEF] < 0xC)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 5;
+ gBattleTextBuff1[2] = STAT_STAGE_DEF;
+ gBattleTextBuff1[3] = EOS;
+
+ gEffectBank = bank;
+ BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_DEF;
+ BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_DEF;
+ BATTLE_STRUCT->animArg2 = 0;
+ b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2);
+ effect = ITEM_STATS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_SPEED_UP:
+ if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPEED] < 0xC)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 5;
+ gBattleTextBuff1[2] = STAT_STAGE_SPEED;
+ gBattleTextBuff1[3] = EOS;
+
+ gEffectBank = bank;
+ BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPEED;
+ BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPEED;
+ BATTLE_STRUCT->animArg2 = 0;
+ b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2);
+ effect = ITEM_STATS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_SP_ATTACK_UP:
+ if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPATK] < 0xC)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 5;
+ gBattleTextBuff1[2] = STAT_STAGE_SPATK;
+ gBattleTextBuff1[3] = EOS;
+
+ gEffectBank = bank;
+ BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPATK;
+ BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPATK;
+ BATTLE_STRUCT->animArg2 = 0;
+ b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2);
+ effect = ITEM_STATS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_SP_DEFENSE_UP:
+ if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && gBattleMons[bank].statStages[STAT_STAGE_SPDEF] < 0xC)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 5;
+ gBattleTextBuff1[2] = STAT_STAGE_SPDEF;
+ gBattleTextBuff1[3] = EOS;
+
+ gEffectBank = bank;
+ BATTLE_STRUCT->statChanger = 0x10 + STAT_STAGE_SPDEF;
+ BATTLE_STRUCT->animArg1 = 0xE + STAT_STAGE_SPDEF;
+ BATTLE_STRUCT->animArg2 = 0;
+ b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2);
+ effect = ITEM_STATS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CRITICAL_UP:
+ if (gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality && !moveTurn && !(gBattleMons[bank].status2 & STATUS2_FOCUS_ENERGY))
+ {
+ gBattleMons[bank].status2 |= STATUS2_FOCUS_ENERGY;
+ b_call_bc_move_exec(BattleScript_BerryFocusEnergyEnd2);
+ effect = ITEM_EFFECT_OTHER;
+ }
+ break;
+ case HOLD_EFFECT_RANDOM_STAT_UP:
+ if (!moveTurn && gBattleMons[bank].hp <= gBattleMons[bank].maxHP / bankQuality)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] < 0xC)
+ break;
+ }
+ if (i != 5)
+ {
+ do
+ {
+ i = Random() % 5;
+ } while (gBattleMons[bank].statStages[STAT_STAGE_ATK + i] == 0xC);
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 5;
+ gBattleTextBuff1[2] = i + 1;
+ gBattleTextBuff1[3] = EOS;
+
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 0;
+ gBattleTextBuff2[2] = 0xD1;
+ gBattleTextBuff2[3] = 0xD1 >> 8;
+ gBattleTextBuff2[4] = 0;
+ gBattleTextBuff2[5] = 0xD2;
+ gBattleTextBuff2[6] = 0xD2 >> 8;
+ gBattleTextBuff2[7] = EOS;
+
+ gEffectBank = bank;
+ BATTLE_STRUCT->statChanger = 0x21 + i;
+ BATTLE_STRUCT->animArg1 = 0x21 + i + 6;
+ BATTLE_STRUCT->animArg2 = 0;
+ b_call_bc_move_exec(BattleScript_BerryStatRaiseEnd2);
+ effect = ITEM_STATS_CHANGE;
+ }
+ }
+ break;
+ case HOLD_EFFECT_CURE_PAR:
+ if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
+ {
+ gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS);
+ b_call_bc_move_exec(BattleScript_BerryCurePrlzEnd2);
+ effect = ITEM_STATUS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CURE_PSN:
+ if (gBattleMons[bank].status1 & STATUS_PSN_ANY)
+ {
+ gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER);
+ b_call_bc_move_exec(BattleScript_BerryCurePsnEnd2);
+ effect = ITEM_STATUS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CURE_BRN:
+ if (gBattleMons[bank].status1 & STATUS_BURN)
+ {
+ gBattleMons[bank].status1 &= ~(STATUS_BURN);
+ b_call_bc_move_exec(BattleScript_BerryCureBrnEnd2);
+ effect = ITEM_STATUS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CURE_FRZ:
+ if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ {
+ gBattleMons[bank].status1 &= ~(STATUS_FREEZE);
+ b_call_bc_move_exec(BattleScript_BerryCureFrzEnd2);
+ effect = ITEM_STATUS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CURE_SLP:
+ if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ {
+ gBattleMons[bank].status1 &= ~(STATUS_SLEEP);
+ gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ b_call_bc_move_exec(BattleScript_BerryCureSlpEnd2);
+ effect = ITEM_STATUS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CURE_CONFUSION:
+ if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ {
+ gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ b_call_bc_move_exec(BattleScript_BerryCureConfusionEnd2);
+ effect = ITEM_EFFECT_OTHER;
+ }
+ break;
+ case HOLD_EFFECT_CURE_STATUS:
+ if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ {
+ i = 0;
+ if (gBattleMons[bank].status1 & STATUS_PSN_ANY)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
+ i++;
+ }
+ if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ {
+ gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
+ i++;
+ }
+ if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
+ i++;
+ }
+ if (gBattleMons[bank].status1 & STATUS_BURN)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
+ i++;
+ }
+ if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
+ i++;
+ }
+ if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
+ i++;
+ }
+ if (!(i > 1))
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gBattleMons[bank].status1 = 0;
+ gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ b_call_bc_move_exec(gUnknown_081D9A44);
+ effect = ITEM_STATUS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CURE_ATTRACT:
+ if (gBattleMons[bank].status2 & STATUS2_INFATUATION)
+ {
+ gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
+ StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
+ b_call_bc_move_exec(gUnknown_081D9A44);
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ effect = ITEM_EFFECT_OTHER;
+ }
+ break;
+ }
+ if (effect)
+ {
+ BATTLE_STRUCT->scriptingActive = bank;
+ gStringBank = bank;
+ gActiveBank = gBankAttacker = bank;
+ switch (effect)
+ {
+ case ITEM_STATUS_CHANGE:
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[bank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ case ITEM_PP_CHANGE:
+ if (!(gBattleMons[bank].status2 & STATUS2_TRANSFORMED) && !(gDisableStructs[bank].unk18_b & gBitTable[i]))
+ gBattleMons[bank].pp[i] = changedPP;
+ break;
+ }
+ }
+ }
+ break;
+ case 2:
+ break;
+ case 3:
+ for (bank = 0; bank < gNoOfAllBanks; bank++)
+ {
+ gLastUsedItem = gBattleMons[bank].item;
+ if (gBattleMons[bank].item == ITEM_ENIGMA_BERRY)
+ {
+ bankHoldEffect = gEnigmaBerries[bank].holdEffect;
+ bankQuality = gEnigmaBerries[bank].holdEffectParam;
+ }
+ else
+ {
+ bankHoldEffect = ItemId_GetHoldEffect(gLastUsedItem);
+ bankQuality = ItemId_GetHoldEffectParam(gLastUsedItem);
+ }
+ switch (bankHoldEffect)
+ {
+ case HOLD_EFFECT_CURE_PAR:
+ if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
+ {
+ gBattleMons[bank].status1 &= ~(STATUS_PARALYSIS);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_BerryCureParRet;
+ effect = ITEM_STATUS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CURE_PSN:
+ if (gBattleMons[bank].status1 & STATUS_PSN_ANY)
+ {
+ gBattleMons[bank].status1 &= ~(STATUS_PSN_ANY | STATUS_TOXIC_COUNTER);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_BerryCurePsnRet;
+ effect = ITEM_STATUS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CURE_BRN:
+ if (gBattleMons[bank].status1 & STATUS_BURN)
+ {
+ gBattleMons[bank].status1 &= ~(STATUS_BURN);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_BerryCureBrnRet;
+ effect = ITEM_STATUS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CURE_FRZ:
+ if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ {
+ gBattleMons[bank].status1 &= ~(STATUS_FREEZE);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_BerryCureFrzRet;
+ effect = ITEM_STATUS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CURE_SLP:
+ if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ {
+ gBattleMons[bank].status1 &= ~(STATUS_SLEEP);
+ gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_BerryCureSlpRet;
+ effect = ITEM_STATUS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_CURE_CONFUSION:
+ if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ {
+ gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_BerryCureConfusionRet;
+ effect = ITEM_EFFECT_OTHER;
+ }
+ break;
+ case HOLD_EFFECT_CURE_ATTRACT:
+ if (gBattleMons[bank].status2 & STATUS2_INFATUATION)
+ {
+ gBattleMons[bank].status2 &= ~(STATUS2_INFATUATION);
+ StringCopy(gBattleTextBuff1, gStatusConditionString_LoveJpn);
+ b_movescr_stack_push_cursor();
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattlescriptCurrInstr = gUnknown_081D9A4A;
+ effect = ITEM_EFFECT_OTHER;
+ }
+ break;
+ case HOLD_EFFECT_CURE_STATUS:
+ if (gBattleMons[bank].status1 & STATUS_ANY || gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ {
+ if (gBattleMons[bank].status1 & STATUS_PSN_ANY)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_PoisonJpn);
+ }
+ if (gBattleMons[bank].status1 & STATUS_SLEEP)
+ {
+ gBattleMons[bank].status2 &= ~(STATUS2_NIGHTMARE);
+ StringCopy(gBattleTextBuff1, gStatusConditionString_SleepJpn);
+ }
+ if (gBattleMons[bank].status1 & STATUS_PARALYSIS)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_ParalysisJpn);
+ }
+ if (gBattleMons[bank].status1 & STATUS_BURN)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_BurnJpn);
+ }
+ if (gBattleMons[bank].status1 & STATUS_FREEZE)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_IceJpn);
+ }
+ if (gBattleMons[bank].status2 & STATUS2_CONFUSION)
+ {
+ StringCopy(gBattleTextBuff1, gStatusConditionString_ConfusionJpn);
+ }
+ gBattleMons[bank].status1 = 0;
+ gBattleMons[bank].status2 &= ~(STATUS2_CONFUSION);
+ b_movescr_stack_push_cursor();
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattlescriptCurrInstr = gUnknown_081D9A4A;
+ effect = ITEM_STATUS_CHANGE;
+ }
+ break;
+ case HOLD_EFFECT_RESTORE_STATS:
+ for (i = 0; i < 8; i++)
+ {
+ if (gBattleMons[bank].statStages[i] < 6)
+ {
+ gBattleMons[bank].statStages[i] = 6;
+ effect = ITEM_STATS_CHANGE;
+ }
+ }
+ if (effect)
+ {
+ BATTLE_STRUCT->scriptingActive = bank;
+ gStringBank = bank;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_WhiteHerbRet;
+ return effect; // unnecessary return
+ }
+ break;
+ }
+ if (effect)
+ {
+ BATTLE_STRUCT->scriptingActive = bank;
+ gStringBank = bank;
+ gActiveBank = bank;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ }
+ }
+ break;
+ case 4:
+ if (gBattleMoveDamage)
+ {
+ switch (atkHoldEffect)
+ {
+ case HOLD_EFFECT_FLINCH:
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && (gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_special)
+ && (Random() % 100) < bankQuality
+ && gBattleMoves[gCurrentMove].flags & FLAG_KINGSROCK_AFFECTED
+ && gBattleMons[gBankTarget].hp)
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 8;
+ b_movescr_stack_push_cursor();
+ SetMoveEffect(0, 0);
+ b_movescr_stack_pop_cursor();
+ }
+ break;
+ case HOLD_EFFECT_SHELL_BELL:
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ && gSpecialStatuses[gBankTarget].moveturnLostHP != 0
+ && gSpecialStatuses[gBankTarget].moveturnLostHP != 0xFFFF
+ && gBankAttacker != gBankTarget
+ && gBattleMons[gBankAttacker].hp != gBattleMons[gBankAttacker].maxHP
+ && gBattleMons[gBankAttacker].hp != 0)
+ {
+ gLastUsedItem = atkItem;
+ gStringBank = gBankAttacker;
+ BATTLE_STRUCT->scriptingActive = gBankAttacker;
+ gBattleMoveDamage = (gSpecialStatuses[gBankTarget].moveturnLostHP / atkQuality) * -1;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = -1;
+ gSpecialStatuses[gBankTarget].moveturnLostHP = 0;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_ItemHealHP_Ret;
+ effect++;
+ }
+ break;
+ }
+ }
+ break;
+ }
+
+ return effect;
+}
+
+struct CombinedMove
+{
+ u16 move1;
+ u16 move2;
+ u16 newMove;
+};
+
+static const struct CombinedMove sCombinedMoves[2] =
+{
+ {MOVE_EMBER, MOVE_GUST, MOVE_HEAT_WAVE},
+ {0xFFFF, 0xFFFF, 0xFFFF}
+};
+
+void unref_sub_801B40C(void)
+{
+ int i = 0;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ do
+ {
+ u8 bank = 0;
+ do
+ {
+ u8 absent = gAbsentBankFlags;
+ if (gBitTable[bank] & absent || absent & gBitTable[bank + 2])
+ bank++;
+ else
+ {
+ if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank + 2])
+ {
+ gSideTimer[GetBankIdentity(bank) & 1].field3 = (bank) | ((bank + 2) << 4);
+ gSideTimer[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove;
+ gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4;
+ }
+ if (sCombinedMoves[i].move1 == gChosenMovesByBanks[bank + 2] && sCombinedMoves[i].move2 == gChosenMovesByBanks[bank])
+ {
+ gSideTimer[GetBankIdentity(bank) & 1].field3 = (bank + 2) | ((bank) << 4);
+ gSideTimer[GetBankIdentity(bank) & 1].field4 = sCombinedMoves[i].newMove;
+ gSideAffecting[GetBankIdentity(bank) & 1] |= SIDE_STATUS_X4;
+ }
+ bank++;
+ }
+ } while (bank < 2);
+ i++;
+ } while (sCombinedMoves[i].move1 != 0xFFFF);
+ }
+}
+
+void sub_801B594(void)
+{
+ if (gBattleExecBuffer == 0)
+ gBattleScriptingCommandsTable[*gBattlescriptCurrInstr]();
+}
+
+u8 GetMoveTarget(u16 move, u8 useMoveTarget) //get move target
+{
+ u8 targetBank = 0;
+ u8 moveTarget;
+ u8 side;
+
+ if (useMoveTarget)
+ moveTarget = useMoveTarget - 1;
+ else
+ moveTarget = gBattleMoves[move].target;
+
+ switch (moveTarget)
+ {
+ case 0:
+ side = GetBankSide(gBankAttacker) ^ 1;
+ if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp)
+ targetBank = gSideTimer[side].followmeTarget;
+ else
+ {
+ side = GetBankSide(gBankAttacker);
+ do
+ {
+ targetBank = Random() % gNoOfAllBanks;
+ } while (targetBank == gBankAttacker || side == GetBankSide(targetBank) || gAbsentBankFlags & gBitTable[targetBank]);
+ if (gBattleMoves[move].type == TYPE_ELECTRIC
+ && AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_LIGHTNING_ROD, 0, 0)
+ && gBattleMons[targetBank].ability != ABILITY_LIGHTNING_ROD)
+ {
+ targetBank ^= 2;
+ RecordAbilityBattle(targetBank, gBattleMons[targetBank].ability);
+ gSpecialStatuses[targetBank].lightningRodRedirected = 1;
+ }
+ }
+ break;
+ case 1:
+ case 8:
+ case 32:
+ case 64:
+ targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1);
+ if (gAbsentBankFlags & gBitTable[targetBank])
+ targetBank ^= 2;
+ break;
+ case 4:
+ side = GetBankSide(gBankAttacker) ^ 1;
+ if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp)
+ targetBank = gSideTimer[side].followmeTarget;
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && moveTarget & 4)
+ {
+ if (GetBankSide(gBankAttacker) == 0)
+ {
+ if (Random() & 1)
+ targetBank = GetBankByPlayerAI(1);
+ else
+ targetBank = GetBankByPlayerAI(3);
+ }
+ else
+ {
+ if (Random() & 1)
+ targetBank = GetBankByPlayerAI(0);
+ else
+ targetBank = GetBankByPlayerAI(2);
+ }
+ if (gAbsentBankFlags & gBitTable[targetBank])
+ targetBank ^= 2;
+ }
+ else
+ targetBank = GetBankByPlayerAI((GetBankIdentity(gBankAttacker) & 1) ^ 1);
+ break;
+ case 2:
+ case 16:
+ targetBank = gBankAttacker;
+ break;
+ }
+ ewram[gBankAttacker + 0x16010] = targetBank;
+ return targetBank;
+}
+
+u8 IsPokeDisobedient(void)
+{
+ u8 obedienceLevel;
+ s32 rnd;
+ s32 calc;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK
+ || GetBankSide(gBankAttacker) == 1
+ || !IsOtherTrainer(gBattleMons[gBankAttacker].otId, gBattleMons[gBankAttacker].otName)
+ || FlagGet(BADGE08_GET))
+ return 0;
+
+ obedienceLevel = 10;
+ if (FlagGet(BADGE02_GET))
+ obedienceLevel = 30;
+ if (FlagGet(BADGE04_GET))
+ obedienceLevel = 50;
+ if (FlagGet(BADGE06_GET))
+ obedienceLevel = 70;
+
+ if (gBattleMons[gBankAttacker].level <= obedienceLevel)
+ return 0;
+ rnd = (Random() & 255);
+ calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8;
+ if (calc < obedienceLevel)
+ return 0;
+
+ // is not obedient
+ if (gCurrentMove == MOVE_RAGE)
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_RAGE);
+ if (gBattleMons[gBankAttacker].status1 & STATUS_SLEEP && (gCurrentMove == MOVE_SNORE || gCurrentMove == MOVE_SLEEP_TALK))
+ {
+ gBattlescriptCurrInstr = gUnknown_081D995F;
+ return 1;
+ }
+
+ rnd = (Random() & 255);
+ calc = (gBattleMons[gBankAttacker].level + obedienceLevel) * rnd >> 8;
+ if (calc < obedienceLevel)
+ {
+ calc = CheckMoveLimitations(gBankAttacker, gBitTable[gCurrMovePos], 0xFF);
+ if (calc == 0xF) // all moves cannot be used
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3;
+ gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
+ return 1;
+ }
+ else // use a random move
+ {
+ do
+ {
+ gCurrMovePos = gUnknown_02024BE5 = Random() & 3;
+ } while (gBitTable[gCurrMovePos] & calc);
+ gRandomMove = gBattleMons[gBankAttacker].moves[gCurrMovePos];
+ gBattleCommunication[3] = 0;
+ gDynamicBasePower = 0;
+ BATTLE_STRUCT->dynamicMoveType = 0;
+ gBattlescriptCurrInstr = gUnknown_081D996F;
+ gBankTarget = GetMoveTarget(gRandomMove, 0);
+ gHitMarker |= HITMARKER_x200000;
+ return 2;
+ }
+ }
+ else
+ {
+ obedienceLevel = gBattleMons[gBankAttacker].level - obedienceLevel;
+
+ calc = (Random() & 255);
+ if (calc < obedienceLevel && !(gBattleMons[gBankAttacker].status1 & STATUS_ANY) && gBattleMons[gBankAttacker].ability != ABILITY_VITAL_SPIRIT && gBattleMons[gBankAttacker].ability != ABILITY_INSOMNIA)
+ {
+ // try putting asleep
+ int i;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleMons[i].status2 & STATUS2_UPROAR)
+ break;
+ }
+ if (i == gNoOfAllBanks)
+ {
+ gBattlescriptCurrInstr = gUnknown_081D9989;
+ return 1;
+ }
+ }
+ calc -= obedienceLevel;
+ if (calc < obedienceLevel)
+ {
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankAttacker], MOVE_POUND, 0, 40, 0, gBankAttacker, gBankAttacker);
+ gBankTarget = gBankAttacker;
+ gBattlescriptCurrInstr = gUnknown_081D99A0;
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ return 2;
+ }
+ else
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = Random() & 3;
+ gBattlescriptCurrInstr = BattleScript_MoveUsedLoafingAround;
+ return 1;
+ }
+ }
+}
diff --git a/src/battle/battle_4.c b/src/battle/battle_4.c
new file mode 100644
index 000000000..e4a4895b5
--- /dev/null
+++ b/src/battle/battle_4.c
@@ -0,0 +1,17641 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_move_effects.h"
+#include "moves.h"
+#include "abilities.h"
+#include "item.h"
+#include "items.h"
+#include "data2.h"
+#include "hold_effects.h"
+#include "rng.h"
+#include "rom3.h"
+#include "species.h"
+#include "pokemon.h"
+#include "text.h"
+#include "palette.h"
+#include "main.h"
+#include "songs.h"
+#include "sound.h"
+#include "task.h"
+#include "decompress.h"
+#include "naming_screen.h"
+
+//extern needed variables
+extern u8 gCritMultiplier;
+extern s32 gBattleMoveDamage;
+extern u32 gStatuses3[4];
+extern u16 gBattleTypeFlags;
+extern const u32 gBitTable[];
+extern const struct BaseStats gBaseStats[];
+extern struct BattleEnigmaBerry gEnigmaBerries[4];
+extern struct BattlePokemon gBattleMons[4];
+extern u8 gActiveBank;
+extern u32 gBattleExecBuffer;
+extern u8 gNoOfAllBanks;
+extern u16 gBattlePartyID[4];
+extern u8 gTurnOrder[4];
+extern u8 gUnknown_02024A76[4];
+extern u16 gCurrentMove;
+extern u8 gLastUsedAbility;
+extern u16 gBattleWeather;
+extern u8 gStringBank;
+extern u8 gEffectBank;
+extern u8 gAbsentBankFlags;
+extern u8 gMultiHitCounter;
+extern u16 gLastUsedMove[4];
+extern u16 gLockedMove[4];
+extern u16 gChosenMovesByBanks[4];
+extern u16 gSideAffecting[2];
+extern u16 gPauseCounterBattle;
+extern u16 gPaydayMoney;
+extern u16 gRandomTurnNumber;
+extern u8 gBattleOutcome;
+extern u8 gBattleTerrain;
+extern u16 gTrainerBattleOpponent;
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u8* gBattlescriptCurrInstr;
+extern u8 gCurrMovePos;
+extern u8 gFightStateTracker;
+extern u32 gHitMarker;
+extern u8 gBattleMoveFlags;
+extern u8 gBattleCommunication[];
+extern u16 gMoveHitWith[4];
+extern u16 gUnknown_02024C44[4];
+extern u8 gStringBank;
+extern u16 gDynamicBasePower;
+extern const u8 gTypeEffectiveness[];
+extern u16 gLastUsedItem;
+extern u16 gBattleMovePower;
+extern s32 gHP_dealt;
+extern s32 gTakenDmg[4];
+extern u8 gTakenDmgBanks[4];
+extern const u16 gMissStrings[];
+extern u8 gSentPokesToOpponent[2];
+extern u8 gBank1;
+extern u16 gExpShareExp;
+extern u8 gBattleTextBuff1[];
+extern u8 gBattleTextBuff2[];
+extern u8 gBattleTextBuff3[];
+extern u8 gLeveledUpInBattle;
+extern void (*gBattleMainFunc)(void);
+extern struct Window gUnknown_03004210;
+extern const u8 gUnknown_08400D7A[];
+extern u8 gPlayerPartyCount;
+extern u16 gMoveToLearn; //move to learn
+extern const u8 gTrainerMoney[];
+extern u16 gRandomMove;
+extern u8* gBattleScriptsEffectsTable[];
+extern u16 gUnknown_02024BE8; //last used move in battle
+extern u8 gBankInMenu;
+extern u8 gActionForBanks[4];
+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);
+void PressurePPLose(u8 bank_atk, u8 bank_def, u16 move);
+void CancelMultiTurnMoves(u8 bank);
+void b_movescr_stack_push(u8* BS_ptr);
+void b_movescr_stack_push_cursor(void);
+void RecordAbilityBattle(u8 bank, u8 ability);
+void RecordItemBattle(u8 bank, u8 holdEffect);
+int IsPokeDisobedient(void);
+static bool8 IsTwoTurnsMove(u16 move);
+static void DestinyBondFlagUpdate(void);
+static void b_wonderguard_and_levitate(void);
+u8 GetBankIdentity(u8 bank);
+u8 GetBankSide(u8 bank);
+u8 GetBattleBank(u8 bankValue);
+s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 bank_atk, u8 bank_def);
+static u8 AttacksThisTurn(u8 bank, u16 move); //Note: returns 1 if it's a charging turn, otherwise 2
+void UndoEffectsAfterFainting(void);
+void BattleMusicStop(void);
+void PlayBGM(u16 songID);
+void MonGainEVs(struct Pokemon*, u16 defeatedSpecies);
+extern u8 gBattleBufferB[4][0x200];
+void sub_80324F8(struct Pokemon*, u8 bank);
+void AdjustFriendship(struct Pokemon*, u8 value);
+bool8 IsTradedMon(struct Pokemon*);
+void b_movescr_stack_pop_cursor(void);
+void SwitchInClearStructs(void);
+u8* ConvertIntToDecimalStringN(u8*, s32, u8, u8);
+u8 GetSetPokedexFlag(u16 nationalNum, u8 caseID);
+u16 SpeciesToNationalPokedexNum(u16 species);
+u8 sub_803FC34(u8 bank);
+u16 sub_803FBFC(u8 a);
+u8 GetBankByPlayerAI(u8 ID);
+void sub_8012258(u8);
+void sub_80157C4(u8 bank); //update sent pokes in battle
+//MonTryLearningNewMove teach poke a move
+u16 GiveMoveToBattleMon(struct BattlePokemon *mon, u16 move);
+void IncrementGameStat(u8 index);
+u8 GetScaledHPFraction(s16 hp, s16 maxhp, u8 scale);
+u16 GetPokedexHeightWeight(u16 national_num, u8 heightweight);
+u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5);
+void DestroyMenuCursor(void);
+void sub_802BC6C(void);
+void sub_809D9F0(struct Pokemon *party, u8, u8, void *, u32);
+u8 sub_809FA30(void);
+bool32 IsHMMove2(u16 move);
+void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0);
+void nullsub_6(void);
+void ReshowBattleScreenAfterMenu(void);
+void sub_800F808(void);
+void AddMoney(u32* moneySaveblock, u32 to_give);
+void sub_80156DC(void); //set sentpokes value
+bool8 sub_8014AB8(u8 bank); //can run from battle
+u8 CountAliveMons(u8 caseID);
+void sub_803E1B0(struct Pokemon*, u16 item, u8 partyID, u8 r3, u8 sp);
+u8 CanRunFromBattle(void);
+u8 GetMoveTarget(u16 move, u8 targetbyte); //get target of move
+void sub_80153D0(u8 atk); //pressure perish song pp decrement
+u8 CastformDataTypeChange(u8 bank);
+void b_push_move_exec(u8* bs_ptr);
+u8 Overworld_GetMapTypeOfSaveblockLocation(void);
+u8 CalculatePlayerPartyCount(void);
+u16 Sqrt(u32 num);
+u8 sub_809070C(u16 nationalNum, u32 TiD, u32 PiD); //task prepare poke dex display
+void sub_814A880(u8 a1, u8 a2);
+u8 CheckMoveLimitations(u8 bank, u8 unusable_moves, u8 flags);
+void sub_801529C(u8 bank);
+bool8 IsLinkDoubleBattle(void);
+void sub_8094B6C(u8 bank, u8 partyID, u8 r2);
+
+//extern BattleScripts
+extern u8 BattleScript_EndTurn[];
+extern u8 BattleScript_NoPPForMove[];
+extern u8 BattleScript_MagicCoatBounce[];
+extern u8 BattleScript_TookAttack[];
+extern u8 BattleScript_SnatchedMove[];
+extern u8 BattleScript_Pausex20[];
+extern u8 BattleScript_SubstituteFade[];
+extern u8 BattleScript_HangedOnMsg[];
+extern u8 BattleScript_OneHitKOMsg[];
+extern u8 BattleScript_EnduredMsg[];
+extern u8 BattleScript_PSNPrevention[];
+extern u8 BattleScript_BRNPrevention[];
+extern u8 BattleScript_PRLZPrevention[];
+extern u8 BattleScript_FlinchPrevention[];
+extern u8 BattleScript_StatUp[];
+extern u8 BattleScript_StatDown[];
+extern u8 BattleScript_NoItemSteal[];
+extern u8 BattleScript_ItemSteal[];
+extern u8 BattleScript_RapidSpinAway[];
+extern u8 BattleScript_TargetPRLZHeal[];
+extern u8 BattleScript_KnockedOff[];
+extern u8 BattleScript_LevelUp[];
+extern u8 BattleScript_WrapFree[];
+extern u8 BattleScript_LeechSeedFree[];
+extern u8 BattleScript_SpikesFree[];
+extern u8 BattleScript_ButItFailed[];
+extern u8 BattleScript_ObliviousPreventsAttraction[];
+extern u8 BattleScript_MistProtected[];
+extern u8 BattleScript_AbilityNoStatLoss[];
+extern u8 BattleScript_AbilityNoSpecificStatLoss[];
+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
+extern u8 gUnknown_081D91CD[]; //spikes3
+extern u8 BattleScript_1D6F44[]; //present dmg
+extern u8 BattleScript_1D83B5[]; //present full hp
+extern u8 BattleScript_1D839B[]; //present hp heal
+extern u8 BattleScript_1D6F74[];
+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
+#define BSScriptRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
+#define BSScriptRead8(ptr) (((u8)((ptr)[0])))
+#define BSScriptReadPtr(ptr) ((void *)BSScriptRead32(ptr))
+
+//read via add
+#define BS2ScriptRead32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
+#define BS2ScriptRead16(ptr) ((ptr)[0] + ((ptr)[1] << 8))
+#define BS2ScriptReadPtr(ptr) ((void *)BS2ScriptRead32(ptr))
+
+#define TargetProtectAffected ((gProtectStructs[gBankTarget].protected && gBattleMoves[gCurrentMove].flags & FLAG_PROTECT_AFFECTED))
+
+//array entries for battle communication
+#define MOVE_EFFECT_BYTE 0x3
+#define MULTISTRING_CHOOSER 0x5
+#define MSG_DISPLAY 0x7
+
+#define TARGET_SELECTED 0x0
+#define TARGET_DEPENDS 0x1
+#define TARGET_BOTH 0x8
+#define TARGET_FOES_AND_ALLY 0x20
+#define TARGET_OPPONENTS_FIELD 0x40
+
+#define TYPE_FORESIGHT 0xFE
+#define TYPE_ENDTABLE 0xFF
+
+#define CMP_EQUAL 0x0
+#define CMP_NOT_EQUAL 0x1
+#define CMP_GREATER_THAN 0x2
+#define CMP_LESS_THAN 0x3
+#define CMP_COMMON_BITS 0x4
+#define CMP_NO_COMMON_BITS 0x5
+
+#define uBYTE0_16(value)(( (u8) (((u16)(value) & (0x000000FF)) >> 0x00)))
+#define uBYTE1_16(value)(( (u8) (((u16)(value) & (0x0000FF00)) >> 0x08)))
+
+#define uBYTE0_32(value)(( (u8) (((u32)(value) & (0x000000FF)) >> 0x00)))
+#define uBYTE1_32(value)(( (u8) (((u32)(value) & (0x0000FF00)) >> 0x08)))
+#define uBYTE2_32(value)(( (u8) (((u32)(value) & (0x00FF0000)) >> 0x10)))
+#define uBYTE3_32(value)(( (u8) (((u32)(value) & (0xFF000000)) >> 0x18)))
+
+#define sBYTE0_16(value)(( (u8) (((s16)(value) & (0x000000FF)) >> 0x00)))
+#define sBYTE1_16(value)(( (u8) (((s16)(value) & (0x0000FF00)) >> 0x08)))
+
+#define sBYTE0_32(value)(( (u8) (((s32)(value) & (0x000000FF)) >> 0x00)))
+#define sBYTE1_32(value)(( (u8) (((s32)(value) & (0x0000FF00)) >> 0x08)))
+#define sBYTE2_32(value)(( (u8) (((s32)(value) & (0x00FF0000)) >> 0x10)))
+#define sBYTE3_32(value)(( (u8) (((s32)(value) & (0xFF000000)) >> 0x18)))
+
+#define USED_HELD_ITEM(bank)((((u16*)(&unk_2000000[bank * 2 + 0x160cc]))))
+
+#define RecordAbilitySetField6(ability, fieldValue) \
+(gLastUsedAbility = ability, gBattleCommunication[6] = fieldValue, RecordAbilityBattle(gBankTarget, ability))
+
+#define TARGET_TURN_DAMAGED (((gSpecialStatuses[gBankTarget].moveturnLostHP_physical || gSpecialStatuses[gBankTarget].moveturnLostHP_physical.moveturnLostHP_special)))
+
+#define HP_ON_SWITCHOUT (((u16*)(0x020160bc)))
+
+static void atk00_attackcanceler(void);
+static void atk01_accuracycheck(void);
+static void atk02_attackstring(void);
+static void atk03_ppreduce(void);
+static void atk04_critcalc(void);
+static void atk05_damagecalc1(void);
+static void atk06_typecalc(void);
+static void atk07_dmg_adjustment(void);
+static void atk08_dmg_adjustment2(void);
+static void atk09_attackanimation(void);
+static void atk0A_waitanimation(void);
+static void atk0B_healthbarupdate(void);
+static void atk0C_datahpupdate(void);
+static void atk0D_critmessage(void);
+static void atk0E_effectiveness_sound(void);
+static void atk0F_resultmessage(void);
+static void atk10_printstring(void);
+static void atk11_printstring_playeronly(void);
+static void atk12_waitmessage(void);
+static void atk13_printfromtable(void);
+static void atk14_printfromtable_playeronly(void);
+static void atk15_seteffectwithchancetarget(void);
+static void atk16_seteffectprimary(void);
+static void atk17_seteffectsecondary(void);
+static void atk18_status_effect_clear(void);
+static void atk19_faint_pokemon(void);
+static void atk1A_faint_animation(void);
+static void atk1B_faint_effects_clear(void);
+static void atk1C_jumpifstatus(void);
+static void atk1D_jumpifstatus2(void);
+static void atk1E_jumpifability(void);
+static void atk1F_jumpifsideaffecting(void);
+static void atk20_jumpifstat(void);
+static void atk21_jumpifstatus3(void);
+static void atk22_jumpiftype(void);
+static void atk23_getexp(void);
+static void atk24(void);
+static void atk25_move_values_cleanup(void);
+static void atk26_set_multihit(void);
+static void atk27_decrement_multihit(void);
+static void atk28_goto(void);
+static void atk29_jumpifbyte(void);
+static void atk2A_jumpifhalfword(void);
+static void atk2B_jumpifword(void);
+static void atk2C_jumpifarrayequal(void);
+static void atk2D_jumpifarraynotequal(void);
+static void atk2E_setbyte(void);
+static void atk2F_addbyte(void);
+static void atk30_subbyte(void);
+static void atk31_copyarray(void);
+static void atk32_copyarray_withindex(void);
+static void atk33_orbyte(void);
+static void atk34_orhalfword(void);
+static void atk35_orword(void);
+static void atk36_bicbyte(void);
+static void atk37_bichalfword(void);
+static void atk38_bicword(void);
+static void atk39_pause(void);
+static void atk3A_waitstate(void);
+static void atk3B_healthbar_update(void);
+static void atk3C_return(void);
+static void atk3D_end(void);
+static void atk3E_end2(void);
+static void atk3F_end3(void);
+static void atk40_jump_if_move_affected_by_protect(void);
+static void atk41_call(void);
+static void atk42_jumpiftype2(void);
+static void atk43_jumpifabilitypresent(void);
+static void atk44(void);
+static void atk45_playanimation(void);
+static void atk46_playanimation2(void);
+static void atk47_setgraphicalstatchangevalues(void);
+static void atk48_playstatchangeanimation(void);
+static void atk49_moveendturn(void);
+static void atk4A_typecalc2(void);
+static void atk4B_return_atk_to_ball(void);
+static void atk4C_copy_poke_data(void);
+static void atk4D_switch_data_update(void);
+static void atk4E_switchin_anim(void);
+static void atk4F_jump_if_cannot_switch(void);
+static void atk50_openpartyscreen(void);
+static void atk51_switch_handle_order(void);
+static void atk52_switch_in_effects(void);
+static void atk53_trainer_slide(void);
+static void atk54_effectiveness_sound(void);
+static void atk55_play_sound(void);
+static void atk56_fainting_cry(void);
+static void atk57(void);
+static void atk58_return_to_ball(void);
+void atk59_learnmove_inbattle(void);
+static void atk5A(void);
+static void atk5B_80256E0(void);
+static void atk5C_hitanimation(void);
+static void atk5D_getmoneyreward(void);
+static void atk5E_8025A70(void);
+static void atk5F_8025B24(void);
+static void atk60_increment_gamestat(void);
+static void atk61_8025BA4(void);
+static void atk62_08025C6C(void);
+static void atk63_jumptorandomattack(void);
+static void atk64_statusanimation(void);
+static void atk65_status2animation(void);
+static void atk66_chosenstatusanimation(void);
+static void atk67_8025ECC(void);
+static void atk68_80246A0(void);
+static void atk69_dmg_adjustment2(void);
+void atk6A_removeitem(void);
+static void atk6B_atknameinbuff1(void);
+static void atk6C_lvlbox_display(void);
+static void atk6D_set_sentpokes_values(void);
+static void atk6E_set_atk_to_player0(void);
+static void atk6F_set_visible(void);
+static void atk70_record_ability(void);
+static void atk71_buffer_move_to_learn(void);
+static void atk72_jump_if_can_run_frombattle(void);
+static void atk73_hp_thresholds(void);
+static void atk74_hp_thresholds2(void);
+static void atk75_8026A58(void);
+static void atk76_various(void);
+static void atk77_setprotect(void);
+static void atk78_faintifabilitynotdamp(void);
+static void atk79_setatkhptozero(void);
+static void atk7A_jumpwhiletargetvalid(void);
+static void atk7B_healhalfHP_if_possible(void);
+static void atk7C_8025508(void);
+static void atk7D_set_rain(void);
+static void atk7E_setreflect(void);
+static void atk7F_setseeded(void);
+static void atk80_manipulatedamage(void);
+static void atk81_setrest(void);
+static void atk82_jumpifnotfirstturn(void);
+static void atk83_nop(void);
+static void atk84_jump_if_cant_sleep(void);
+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);
+static void atk8C_confuseifrepeatingattackends(void);
+static void atk8D_setmultihit_counter(void);
+static void atk8E_prepare_multihit(void);
+static void atk8F_forcerandomswitch(void);
+static void atk90_conversion_type_change(void);
+static void atk91_givepaydaymoney(void);
+static void atk92_setlightscreen(void);
+static void atk93_ko_move(void);
+static void atk94_gethalfcurrentenemyhp(void);
+static void atk95_setsandstorm(void);
+static void atk96_weatherdamage(void);
+static void atk97_try_infatuation(void);
+static void atk98_status_icon_update(void);
+static void atk99_setmist(void);
+static void atk9A_set_focusenergy(void);
+static void atk9B_transformdataexecution(void);
+static void atk9C_set_substitute(void);
+static void atk9D_copyattack(void);
+static void atk9E_metronome(void);
+static void atk9F_dmgtolevel(void);
+static void atkA0_psywavedamageeffect(void);
+static void atkA1_counterdamagecalculator(void);
+static void atkA2_mirrorcoatdamagecalculator(void);
+static void atkA3_disablelastusedattack(void);
+static void atkA4_setencore(void);
+static void atkA5_painsplitdmgcalc(void);
+static void atkA6_settypetorandomresistance(void);
+static void atkA7_setalwayshitflag(void);
+static void atkA8_copymovepermanently(void);
+static void atkA9_sleeptalk_choose_move(void);
+static void atkAA_set_destinybond(void);
+static void atkAB_DestinyBondFlagUpdate(void);
+static void atkAC_remaininghptopower(void);
+static void atkAD_spite_ppreduce(void);
+static void atkAE_heal_party_status(void);
+static void atkAF_cursetarget(void);
+static void atkB0_set_spikes(void);
+static void atkB1_set_foresight(void);
+static void atkB2_setperishsong(void);
+static void atkB3_rolloutdamagecalculation(void);
+static void atkB4_jumpifconfusedandstatmaxed(void);
+static void atkB5_furycuttercalc(void);
+static void atkB6_happinesstodamagecalculation(void);
+static void atkB7_presentdamagecalculation(void);
+static void atkB8_set_safeguard(void);
+static void atkB9_magnitudedamagecalculation(void);
+static void atkBA_jumpifnopursuitswitchdmg(void);
+static void atkBB_setsunny(void);
+static void atkBC_maxattackhalvehp(void);
+static void atkBD_copyfoestats(void);
+static void atkBE_breakfree(void);
+static void atkBF_set_defense_curl(void);
+static void atkC0_recoverbasedonsunlight(void);
+static void atkC1_hidden_power(void);
+static void atkC2_selectnexttarget(void);
+static void atkC3_setfutureattack(void);
+static void atkC4_beat_up(void);
+static void atkC5_hidepreattack(void);
+static void atkC6_unhidepostattack(void);
+static void atkC7_setminimize(void);
+static void atkC8_sethail(void);
+static void atkC9_jumpifattackandspecialattackcannotfall(void);
+static void atkCA_setforcedtarget(void);
+static void atkCB_setcharge(void);
+static void atkCC_callterrainattack(void);
+static void atkCD_cureifburnedparalysedorpoisoned(void);
+static void atkCE_settorment(void);
+static void atkCF_jumpifnodamage(void);
+static void atkD0_settaunt(void);
+static void atkD1_set_helpinghand(void);
+static void atkD2_swap_items(void);
+static void atkD3_copy_ability(void);
+static void atkD4_wish_effect(void);
+static void atkD5_setroots(void);
+static void atkD6_doubledamagedealtifdamaged(void);
+static void atkD7_setyawn(void);
+static void atkD8_setdamagetohealthdifference(void);
+static void atkD9_scaledamagebyhealthratio(void);
+static void atkDA_abilityswap(void);
+static void atkDB_imprisoneffect(void);
+static void atkDC_setgrudge(void);
+static void atkDD_weightdamagecalculation(void);
+static void atkDE_asistattackselect(void);
+static void atkDF_setmagiccoat(void);
+static void atkE0_setstealstatchange(void);
+static void atkE1_intimidate_string_loader(void);
+static void atkE2_switchout_abilities(void);
+static void atkE3_jumpiffainted(void);
+static void atkE4_getsecretpowereffect(void);
+static void atkE5_pickup(void);
+static void atkE6_castform_change_animation(void);
+static void atkE7_castform_data_change(void);
+static void atkE8_settypebasedhalvers(void);
+static void atkE9_setweatherballtype(void);
+static void atkEA_recycleitem(void);
+static void atkEB_settypetoterrain(void);
+static void atkEC_pursuit_sth(void);
+static void atkED_802B4B4(void);
+static void atkEE_removelightscreenreflect(void);
+void atkEF_pokeball_catch_calculation(void);
+static void atkF0_copy_caught_poke(void);
+static void atkF1_setpoke_as_caught(void);
+static void atkF2_display_dex_info(void);
+static void atkF3_nickname_caught_poke(void);
+static void atkF4_802BEF0(void);
+static void atkF5_removeattackerstatus1(void);
+static void atkF6_802BF48(void);
+static void atkF7_802BF54(void);
+
+const BattleCmdFunc gBattleScriptingCommandsTable[] =
+{
+ atk00_attackcanceler,
+ atk01_accuracycheck,
+ atk02_attackstring,
+ atk03_ppreduce,
+ atk04_critcalc,
+ atk05_damagecalc1,
+ atk06_typecalc,
+ atk07_dmg_adjustment,
+ atk08_dmg_adjustment2,
+ atk09_attackanimation,
+ atk0A_waitanimation,
+ atk0B_healthbarupdate,
+ atk0C_datahpupdate,
+ atk0D_critmessage,
+ atk0E_effectiveness_sound,
+ atk0F_resultmessage,
+ atk10_printstring,
+ atk11_printstring_playeronly,
+ atk12_waitmessage,
+ atk13_printfromtable,
+ atk14_printfromtable_playeronly,
+ atk15_seteffectwithchancetarget,
+ atk16_seteffectprimary,
+ atk17_seteffectsecondary,
+ atk18_status_effect_clear,
+ atk19_faint_pokemon,
+ atk1A_faint_animation,
+ atk1B_faint_effects_clear,
+ atk1C_jumpifstatus,
+ atk1D_jumpifstatus2,
+ atk1E_jumpifability,
+ atk1F_jumpifsideaffecting,
+ atk20_jumpifstat,
+ atk21_jumpifstatus3,
+ atk22_jumpiftype,
+ atk23_getexp,
+ atk24,
+ atk25_move_values_cleanup,
+ atk26_set_multihit,
+ atk27_decrement_multihit,
+ atk28_goto,
+ atk29_jumpifbyte,
+ atk2A_jumpifhalfword,
+ atk2B_jumpifword,
+ atk2C_jumpifarrayequal,
+ atk2D_jumpifarraynotequal,
+ atk2E_setbyte,
+ atk2F_addbyte,
+ atk30_subbyte,
+ atk31_copyarray,
+ atk32_copyarray_withindex,
+ atk33_orbyte,
+ atk34_orhalfword,
+ atk35_orword,
+ atk36_bicbyte,
+ atk37_bichalfword,
+ atk38_bicword,
+ atk39_pause,
+ atk3A_waitstate,
+ atk3B_healthbar_update,
+ atk3C_return,
+ atk3D_end,
+ atk3E_end2,
+ atk3F_end3,
+ atk40_jump_if_move_affected_by_protect,
+ atk41_call,
+ atk42_jumpiftype2,
+ atk43_jumpifabilitypresent,
+ atk44,
+ atk45_playanimation,
+ atk46_playanimation2,
+ atk47_setgraphicalstatchangevalues,
+ atk48_playstatchangeanimation,
+ atk49_moveendturn,
+ atk4A_typecalc2,
+ atk4B_return_atk_to_ball,
+ atk4C_copy_poke_data,
+ atk4D_switch_data_update,
+ atk4E_switchin_anim,
+ atk4F_jump_if_cannot_switch,
+ atk50_openpartyscreen,
+ atk51_switch_handle_order,
+ atk52_switch_in_effects,
+ atk53_trainer_slide,
+ atk54_effectiveness_sound,
+ atk55_play_sound,
+ atk56_fainting_cry,
+ atk57,
+ atk58_return_to_ball,
+ atk59_learnmove_inbattle,
+ atk5A,
+ atk5B_80256E0,
+ atk5C_hitanimation,
+ atk5D_getmoneyreward,
+ atk5E_8025A70,
+ atk5F_8025B24,
+ atk60_increment_gamestat,
+ atk61_8025BA4,
+ atk62_08025C6C,
+ atk63_jumptorandomattack,
+ atk64_statusanimation,
+ atk65_status2animation,
+ atk66_chosenstatusanimation,
+ atk67_8025ECC,
+ atk68_80246A0,
+ atk69_dmg_adjustment2,
+ atk6A_removeitem,
+ atk6B_atknameinbuff1,
+ atk6C_lvlbox_display,
+ atk6D_set_sentpokes_values,
+ atk6E_set_atk_to_player0,
+ atk6F_set_visible,
+ atk70_record_ability,
+ atk71_buffer_move_to_learn,
+ atk72_jump_if_can_run_frombattle,
+ atk73_hp_thresholds,
+ atk74_hp_thresholds2,
+ atk75_8026A58,
+ atk76_various,
+ atk77_setprotect,
+ atk78_faintifabilitynotdamp,
+ atk79_setatkhptozero,
+ atk7A_jumpwhiletargetvalid,
+ atk7B_healhalfHP_if_possible,
+ atk7C_8025508,
+ atk7D_set_rain,
+ atk7E_setreflect,
+ atk7F_setseeded,
+ atk80_manipulatedamage,
+ atk81_setrest,
+ atk82_jumpifnotfirstturn,
+ atk83_nop,
+ atk84_jump_if_cant_sleep,
+ atk85_stockpile,
+ atk86_stockpiletobasedamage,
+ atk87_stockpiletohpheal,
+ atk88_negativedamage,
+ atk89_statbuffchange,
+ atk8A_normalisebuffs,
+ atk8B_setbide,
+ atk8C_confuseifrepeatingattackends,
+ atk8D_setmultihit_counter,
+ atk8E_prepare_multihit,
+ atk8F_forcerandomswitch,
+ atk90_conversion_type_change,
+ atk91_givepaydaymoney,
+ atk92_setlightscreen,
+ atk93_ko_move,
+ atk94_gethalfcurrentenemyhp,
+ atk95_setsandstorm,
+ atk96_weatherdamage,
+ atk97_try_infatuation,
+ atk98_status_icon_update,
+ atk99_setmist,
+ atk9A_set_focusenergy,
+ atk9B_transformdataexecution,
+ atk9C_set_substitute,
+ atk9D_copyattack,
+ atk9E_metronome,
+ atk9F_dmgtolevel,
+ atkA0_psywavedamageeffect,
+ atkA1_counterdamagecalculator,
+ atkA2_mirrorcoatdamagecalculator,
+ atkA3_disablelastusedattack,
+ atkA4_setencore,
+ atkA5_painsplitdmgcalc,
+ atkA6_settypetorandomresistance,
+ atkA7_setalwayshitflag,
+ atkA8_copymovepermanently,
+ atkA9_sleeptalk_choose_move,
+ atkAA_set_destinybond,
+ atkAB_DestinyBondFlagUpdate,
+ atkAC_remaininghptopower,
+ atkAD_spite_ppreduce,
+ atkAE_heal_party_status,
+ atkAF_cursetarget,
+ atkB0_set_spikes,
+ atkB1_set_foresight,
+ atkB2_setperishsong,
+ atkB3_rolloutdamagecalculation,
+ atkB4_jumpifconfusedandstatmaxed,
+ atkB5_furycuttercalc,
+ atkB6_happinesstodamagecalculation,
+ atkB7_presentdamagecalculation,
+ atkB8_set_safeguard,
+ atkB9_magnitudedamagecalculation,
+ atkBA_jumpifnopursuitswitchdmg,
+ atkBB_setsunny,
+ atkBC_maxattackhalvehp,
+ atkBD_copyfoestats,
+ atkBE_breakfree,
+ atkBF_set_defense_curl,
+ atkC0_recoverbasedonsunlight,
+ atkC1_hidden_power,
+ atkC2_selectnexttarget,
+ atkC3_setfutureattack,
+ atkC4_beat_up,
+ atkC5_hidepreattack,
+ atkC6_unhidepostattack,
+ atkC7_setminimize,
+ atkC8_sethail,
+ atkC9_jumpifattackandspecialattackcannotfall,
+ atkCA_setforcedtarget,
+ atkCB_setcharge,
+ atkCC_callterrainattack,
+ atkCD_cureifburnedparalysedorpoisoned,
+ atkCE_settorment,
+ atkCF_jumpifnodamage,
+ atkD0_settaunt,
+ atkD1_set_helpinghand,
+ atkD2_swap_items,
+ atkD3_copy_ability,
+ atkD4_wish_effect,
+ atkD5_setroots,
+ atkD6_doubledamagedealtifdamaged,
+ atkD7_setyawn,
+ atkD8_setdamagetohealthdifference,
+ atkD9_scaledamagebyhealthratio,
+ atkDA_abilityswap,
+ atkDB_imprisoneffect,
+ atkDC_setgrudge,
+ atkDD_weightdamagecalculation,
+ atkDE_asistattackselect,
+ atkDF_setmagiccoat,
+ atkE0_setstealstatchange,
+ atkE1_intimidate_string_loader,
+ atkE2_switchout_abilities,
+ atkE3_jumpiffainted,
+ atkE4_getsecretpowereffect,
+ atkE5_pickup,
+ atkE6_castform_change_animation,
+ atkE7_castform_data_change,
+ atkE8_settypebasedhalvers,
+ atkE9_setweatherballtype,
+ atkEA_recycleitem,
+ atkEB_settypetoterrain,
+ atkEC_pursuit_sth,
+ atkED_802B4B4,
+ atkEE_removelightscreenreflect,
+ atkEF_pokeball_catch_calculation,
+ atkF0_copy_caught_poke,
+ atkF1_setpoke_as_caught,
+ atkF2_display_dex_info,
+ atkF3_nickname_caught_poke,
+ atkF4_802BEF0,
+ atkF5_removeattackerstatus1,
+ atkF6_802BF48,
+ atkF7_802BF54,
+};
+
+struct statFractions
+{
+ u8 dividend;
+ u8 divisor;
+};
+
+static const struct statFractions gAccuracyStageRatios[] =
+{
+ { 33, 100}, // -6
+ { 36, 100}, // -5
+ { 43, 100}, // -4
+ { 50, 100}, // -3
+ { 60, 100}, // -2
+ { 75, 100}, // -1
+ { 1, 1}, // 0
+ {133, 100}, // +1
+ {166, 100}, // +2
+ { 2, 1}, // +3
+ {233, 100}, // +4
+ {133, 50}, // +5
+ { 3, 1}, // +6
+};
+
+//The chance is 1/N for each stage.
+static const u16 gCriticalHitChance[] = {16, 8, 4, 3, 2};
+
+static const u32 gStatusFlagsForMoveEffects[] =
+{
+ 0x00000000,
+ 0x00000007,
+ 0x00000008,
+ 0x00000010,
+ 0x00000020,
+ 0x00000040,
+ 0x00000080,
+ 0x00000007,
+ 0x00000008,
+ 0x00000000,
+ 0x00000070,
+ 0x00000000,
+ 0x00001000,
+ 0x0000E000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00400000,
+ 0x00000000,
+ 0x00000000,
+ 0x04000000,
+ 0x08000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000C00,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000,
+ 0x00000000
+};
+
+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[];
+
+u8* const gMoveEffectBS_Ptrs[] =
+{
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D965A,
+ BattleScript_1D9669,
+ BattleScript_1D9678,
+ BattleScript_1D9687,
+ BattleScript_1D969D,
+ BattleScript_1D96BA,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D9696,
+ BattleScript_1D96AA,
+ BattleScript_1D963E,
+ BattleScript_1D96B1,
+ BattleScript_1D96C8,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D963E,
+ BattleScript_1D96C8
+};
+
+const u8 sUnreferencedBitMask1[] = {0, 1, 3, 7, 0xF, 0x1F, 0x3F};
+
+const u8 gLevelUpStatBoxStats[] = {MON_DATA_MAX_HP, MON_DATA_SPATK, MON_DATA_ATK, MON_DATA_SPDEF, MON_DATA_DEF, MON_DATA_SPD};
+
+static const u16 sProtectSuccessRates[] = {0xFFFF, 0x7FFF, 0x3FFF, 0x1FFF};
+
+static const u16 sUnknown_081FACFE[] = //banned moves to copy
+{
+ MOVE_METRONOME,
+ MOVE_STRUGGLE,
+ MOVE_SKETCH,
+ MOVE_MIMIC,
+ 0xFFFE,
+ MOVE_COUNTER,
+ MOVE_MIRROR_COAT,
+ MOVE_PROTECT,
+ MOVE_DETECT,
+ MOVE_ENDURE,
+ MOVE_DESTINY_BOND,
+ MOVE_SLEEP_TALK,
+ MOVE_THIEF,
+ MOVE_FOLLOW_ME,
+ MOVE_SNATCH,
+ MOVE_HELPING_HAND,
+ MOVE_COVET,
+ MOVE_TRICK,
+ MOVE_FOCUS_PUNCH,
+ 0xFFFF
+};
+
+static const u8 sUnknown_081FAD26[] = //reversal+flail HP thresholds to power
+{
+ 1, 200,
+ 4, 150,
+ 9, 100,
+ 16, 80,
+ 32, 40,
+ 48, 20
+};
+
+static const u16 sNaturePowerMoves[] =
+{
+ MOVE_STUN_SPORE,
+ MOVE_RAZOR_LEAF,
+ MOVE_EARTHQUAKE,
+ MOVE_HYDRO_PUMP,
+ MOVE_SURF,
+ MOVE_BUBBLE_BEAM,
+ MOVE_ROCK_SLIDE,
+ MOVE_SHADOW_BALL,
+ MOVE_SWIFT,
+ MOVE_SWIFT
+};
+
+//weight-based damage table for Low Kick
+//format: min. weight (hectograms), base power
+static const u16 sWeightDamage[] =
+{
+ 100, 20,
+ 250, 40,
+ 500, 60,
+ 1000, 80,
+ 2000, 100,
+ -1, -1
+};
+
+static const u16 sPickupItems[] =
+{
+ ITEM_SUPER_POTION, 30,
+ ITEM_FULL_HEAL, 40,
+ ITEM_ULTRA_BALL, 50,
+ ITEM_RARE_CANDY, 60,
+ ITEM_FULL_RESTORE, 70,
+ ITEM_REVIVE, 80,
+ ITEM_NUGGET, 90,
+ ITEM_PROTEIN, 95,
+ ITEM_PP_UP, 99,
+ ITEM_KINGS_ROCK, 1
+};
+
+static const u8 sTerrainToType[] =
+{
+ TYPE_GRASS, // tall grass
+ TYPE_GRASS, // long grass
+ TYPE_GROUND, // sand
+ TYPE_WATER, // underwater
+ TYPE_WATER, // water
+ TYPE_WATER, // pond water
+ TYPE_ROCK , // rock
+ TYPE_ROCK , // cave
+ TYPE_NORMAL, // building
+ TYPE_NORMAL, // plain
+};
+
+static const u8 sBallCatchBonuses[] =
+{
+ 20, 15, 10, 15 //Ultra, Great, Poke, Safari
+};
+
+static void atk00_attackcanceler(void)
+{
+ int i;
+ if (gBattleOutcome)
+ {
+ gFightStateTracker = 0xC;
+ return;
+ }
+ if (gBattleMons[gBankAttacker].hp == 0 && !(gHitMarker & HITMARKER_NO_ATTACKSTRING))
+ {
+ gHitMarker |= HITMARKER_UNABLE_TO_USE_MOVE;
+ gBattlescriptCurrInstr = BattleScript_EndTurn;
+ return;
+ }
+ if (AtkCanceller_UnableToUseMove())
+ return;
+ if (AbilityBattleEffects(2, gBankTarget, 0, 0, 0))
+ return;
+ if (!gBattleMons[gBankAttacker].pp[gCurrMovePos] && gCurrentMove != MOVE_STRUGGLE && !(gHitMarker & 0x800200)
+ && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))
+ {
+ gBattlescriptCurrInstr = BattleScript_NoPPForMove;
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ return;
+ }
+ gHitMarker &= ~(HITMARKER_x800000);
+ if (!(gHitMarker & HITMARKER_OBEYS) && !(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))
+ {
+ u8 disobedient = IsPokeDisobedient();
+ asm("":::"r0"); //It's impossible to match
+ asm("":::"r1");
+ if ((disobedient))
+ {
+ if (disobedient == 2)
+ gHitMarker |= HITMARKER_OBEYS;
+ else
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ return;
+ }
+ }
+ gHitMarker |= HITMARKER_OBEYS;
+ if (gProtectStructs[gBankTarget].bounceMove && gBattleMoves[gCurrentMove].flags & FLAG_MAGICCOAT_AFFECTED)
+ {
+ PressurePPLose(gBankAttacker, gBankTarget, MOVE_MAGIC_COAT);
+ gProtectStructs[gBankTarget].bounceMove = 0;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_MagicCoatBounce;
+ return;
+ }
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if ((gProtectStructs[gTurnOrder[i]].stealMove) && gBattleMoves[gCurrentMove].flags & FLAG_SNATCH_AFFECTED)
+ {
+ PressurePPLose(gBankAttacker, gTurnOrder[i], MOVE_SNATCH);
+ gProtectStructs[gTurnOrder[i]].stealMove = 0;
+ BATTLE_STRUCT->scriptingActive = gTurnOrder[i];
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_SnatchedMove;
+ return;
+ }
+ }
+ if (gSpecialStatuses[gBankTarget].lightningRodRedirected)
+ {
+ gSpecialStatuses[gBankTarget].lightningRodRedirected = 0;
+ gLastUsedAbility = ABILITY_LIGHTNING_ROD;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_TookAttack;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ else if (TargetProtectAffected
+ && (gCurrentMove != MOVE_CURSE || (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST))
+ && ((!IsTwoTurnsMove(gCurrentMove) || (gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS))))
+ {
+ CancelMultiTurnMoves(gBankAttacker);
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveHitWith[gBankTarget] = 0;
+ gUnknown_02024C44[gBankTarget] = 0;
+ gBattleCommunication[6] = 1;
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void JumpIfMoveFailed(u8 adder, u16 move)
+{
+ void* to_store = gBattlescriptCurrInstr + adder;
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ {
+ gMoveHitWith[gBankTarget] = 0;
+ gUnknown_02024C44[gBankTarget] = 0;
+ to_store = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ DestinyBondFlagUpdate();
+ if (AbilityBattleEffects(3, gBankTarget, 0, 0, move))
+ return;
+ }
+ gBattlescriptCurrInstr = to_store;
+}
+
+static void atk40_jump_if_move_affected_by_protect(void)
+{
+ if (TargetProtectAffected)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ JumpIfMoveFailed(5, 0);
+ gBattleCommunication[6] = 1;
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static bool8 JumpIfMoveAffectedByProtect(u16 move)
+{
+ bool8 affected = 0;
+ if (TargetProtectAffected)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ JumpIfMoveFailed(7, move);
+ gBattleCommunication[6] = 1;
+ affected = 1;
+ }
+ return affected;
+}
+
+static bool8 AccuracyCalcHelper(u16 move)
+{
+ if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker)
+ {
+ JumpIfMoveFailed(7, move);
+ return TRUE;
+ }
+
+ if (!(gHitMarker & HITMARKER_IGNORE_ON_AIR) && gStatuses3[gBankTarget] & STATUS3_ON_AIR)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ JumpIfMoveFailed(7, move);
+ return TRUE;
+ }
+ gHitMarker &= ~HITMARKER_IGNORE_ON_AIR;
+
+ if (!(gHitMarker & HITMARKER_IGNORE_UNDERGROUND) && gStatuses3[gBankTarget] & STATUS3_UNDERGROUND)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ JumpIfMoveFailed(7, move);
+ return TRUE;
+ }
+ gHitMarker &= ~HITMARKER_IGNORE_UNDERGROUND;
+
+ if (!(gHitMarker & HITMARKER_IGNORE_UNDERWATER) && gStatuses3[gBankTarget] & STATUS3_UNDERWATER)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ JumpIfMoveFailed(7, move);
+ return TRUE;
+ }
+ gHitMarker &= ~HITMARKER_IGNORE_UNDERWATER;
+
+ if ((WEATHER_HAS_EFFECT && (gBattleWeather & WEATHER_RAIN_ANY) && gBattleMoves[move].effect == EFFECT_THUNDER)
+ || (gBattleMoves[move].effect == EFFECT_ALWAYS_HIT || gBattleMoves[move].effect == EFFECT_VITAL_THROW))
+ {
+ JumpIfMoveFailed(7, move);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void atk01_accuracycheck(void)
+{
+ u16 move = BS2ScriptRead16(gBattlescriptCurrInstr + 5);
+ if (move == 0xFFFE || move == 0xFFFF)
+ {
+ if (gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS && move == 0xFFFF && gDisableStructs[gBankTarget].bankWithSureHit == gBankAttacker)
+ gBattlescriptCurrInstr += 7;
+ else if (gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else if (!JumpIfMoveAffectedByProtect(0))
+ gBattlescriptCurrInstr += 7;
+ }
+ else
+ {
+ u8 type; s8 buff; u8 MoveAcc; u16 calc; u8 hold_effect; u8 quality;
+ if (move == 0) {move = gCurrentMove;}
+
+ if (BATTLE_STRUCT->dynamicMoveType)
+ type = BATTLE_STRUCT->dynamicMoveType & 0x3F;
+ else
+ type = gBattleMoves[move].type;
+
+ if (JumpIfMoveAffectedByProtect(move))
+ return;
+ if (AccuracyCalcHelper(move))
+ return;
+
+ if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT)
+ {
+ u8 acc = gBattleMons[gBankAttacker].statStages[STAT_STAGE_ACC];
+ buff = acc;
+ }
+ else
+ {
+ u8 acc = gBattleMons[gBankAttacker].statStages[STAT_STAGE_ACC];
+ buff = acc + 6 - gBattleMons[gBankTarget].statStages[STAT_STAGE_EVASION];
+ }
+
+ if (buff < 0) {buff = 0;}
+ if (buff > 0xC) {buff = 0xC;}
+
+ MoveAcc = gBattleMoves[move].accuracy;
+ //check Thunder on sunny weather
+ if (WEATHER_HAS_EFFECT && gBattleWeather & WEATHER_SUN_ANY && gBattleMoves[move].effect == EFFECT_THUNDER)
+ MoveAcc = 50;
+
+ calc = gAccuracyStageRatios[buff].dividend * MoveAcc;
+ calc /= gAccuracyStageRatios[buff].divisor;
+
+ if (gBattleMons[gBankAttacker].ability == ABILITY_COMPOUND_EYES)
+ calc = (calc * 130) / 100; //1.3 compound eyes boost
+ if (WEATHER_HAS_EFFECT && gBattleMons[gBankTarget].ability == ABILITY_SAND_VEIL && gBattleWeather & WEATHER_SANDSTORM_ANY)
+ calc = (calc * 80) / 100; //1.2 sand veil loss;
+ if (gBattleMons[gBankAttacker].ability == ABILITY_HUSTLE && type < 9)
+ calc = (calc * 80) / 100; //1.2 hustle loss;
+
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ else
+ {
+ hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (hold_effect == HOLD_EFFECT_EVASION_UP)
+ calc = (calc * (100 - quality)) / 100;
+
+ //final calculation
+ if ((Random() % 100 + 1) > calc)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && (gBattleMoves[move].target == 0x8 || gBattleMoves[move].target == 0x20))
+ gBattleCommunication[6] = 2;
+ else
+ gBattleCommunication[6] = 0;
+ b_wonderguard_and_levitate();
+
+ }
+ JumpIfMoveFailed(7, move);
+ }
+}
+
+static void atk02_attackstring(void)
+{
+ if (gBattleExecBuffer)
+ return;
+ if (!(gHitMarker & (HITMARKER_NO_ATTACKSTRING | HITMARKER_ATTACKSTRING_PRINTED)))
+ {
+ PrepareStringBattle(4, gBankAttacker);
+ gHitMarker |= HITMARKER_ATTACKSTRING_PRINTED;
+ }
+ gBattlescriptCurrInstr++;
+ gBattleCommunication[MSG_DISPLAY] = 0;
+}
+
+static void atk03_ppreduce(void)
+{
+ int to_deduct = 1;
+ if (gBattleExecBuffer)
+ return;
+ if (!gSpecialStatuses[gBankAttacker].flag20)
+ {
+ switch (gBattleMoves[gCurrentMove].target)
+ {
+ case TARGET_FOES_AND_ALLY:
+ to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_ON_FIELD, gBankAttacker, ABILITY_PRESSURE, 0, 0);
+ break;
+ case TARGET_BOTH:
+ case TARGET_OPPONENTS_FIELD:
+ to_deduct += AbilityBattleEffects(ABILITYEFFECT_COUNT_OTHER_SIZE, gBankAttacker, ABILITY_PRESSURE, 0, 0);
+ break;
+ default:
+ if (gBankAttacker != gBankTarget && gBattleMons[gBankTarget].ability == ABILITY_PRESSURE)
+ to_deduct++;
+ break;
+ }
+ }
+ if (!(gHitMarker & (HITMARKER_NO_PPDEDUCT | HITMARKER_NO_ATTACKSTRING)) && gBattleMons[gBankAttacker].pp[gCurrMovePos])
+ {
+ gProtectStructs[gBankAttacker].notFirstStrike = 1;
+ if (gBattleMons[gBankAttacker].pp[gCurrMovePos] > to_deduct)
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] -= to_deduct;
+ else
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = 0;
+
+ if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED)
+ && !((gDisableStructs[gBankAttacker].unk18_b) & gBitTable[gCurrMovePos]))
+ {
+ gActiveBank = gBankAttacker;
+ EmitSetAttributes(0, REQUEST_PPMOVE1_BATTLE + gCurrMovePos, 0, 1, &gBattleMons[gBankAttacker].pp[gCurrMovePos]);
+ MarkBufferBankForExecution(gBankAttacker);
+ }
+ }
+ gHitMarker &= ~(HITMARKER_NO_PPDEDUCT);
+ gBattlescriptCurrInstr++;
+}
+
+static void atk04_critcalc(void)
+{
+ u8 hold_effect; u16 item; u16 crit_chance; int adderv3, adderv5, adderv6, adderv7, adderv8, adderv9, adderv10, adderv11; u16 adderv12;
+ item = gBattleMons[gBankAttacker].item;
+ if (item == ITEM_ENIGMA_BERRY)
+ hold_effect = gEnigmaBerries[gBankAttacker].holdEffect;
+ else
+ hold_effect = ItemId_GetHoldEffect(item);
+
+ gStringBank = gBankAttacker;
+
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY)
+ adderv3 = 2;
+ else
+ adderv3 = 0;
+
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_HIGH_CRITICAL) {adderv3++;}
+ adderv5 = adderv3;
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_SKY_ATTACK) {adderv5 = adderv3 + 1;}
+
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_BLAZE_KICK) {adderv5++;}
+ adderv6 = adderv5;
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_POISON_TAIL) {adderv6 = adderv5 + 1;}
+
+ adderv7 = 0;
+ if (hold_effect == HOLD_EFFECT_LUCKY_PUNCH && gBattleMons[gBankAttacker].species == SPECIES_CHANSEY) {adderv7 = 1;}
+ adderv8 = 2 * adderv7;
+ adderv9 = 0;
+ if (hold_effect == HOLD_EFFECT_STICK && gBattleMons[gBankAttacker].species == SPECIES_FARFETCHD) {adderv9 = 1;}
+ adderv11 = 2 * adderv9;
+ if (hold_effect == HOLD_EFFECT_SCOPE_LENS)
+ {adderv10 = 1 + adderv6 + adderv8; adderv12 = adderv10 + adderv11;}
+ else
+ {adderv10 = adderv6 + adderv8; adderv12 = adderv10 + adderv11;}
+
+ crit_chance = adderv12;
+
+ if (crit_chance > 4) {crit_chance = 4;}
+
+ if ((gBattleMons[gBankTarget].ability != ABILITY_BATTLE_ARMOR && gBattleMons[gBankTarget].ability != ABILITY_SHELL_ARMOR)
+ && !(gStatuses3[gBankAttacker] & STATUS3_CANT_SCORE_A_CRIT)
+ && !(gBattleTypeFlags & (BATTLE_TYPE_WALLY_TUTORIAL | BATTLE_TYPE_FIRST_BATTLE))
+ && !(Random() % gCriticalHitChance[crit_chance]))
+ gCritMultiplier = 2;
+ else
+ gCritMultiplier = 1;
+ gBattlescriptCurrInstr++;
+}
+
+static void atk05_damagecalc1(void)
+{
+ u16 side_hword = gSideAffecting[GetBankIdentity(gBankTarget) & 1];
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
+ side_hword, gDynamicBasePower,
+ BATTLE_STRUCT->dynamicMoveType, gBankAttacker, gBankTarget);
+ gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * BATTLE_STRUCT->dmgMultiplier;
+
+ if (gStatuses3[gBankAttacker] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
+ gBattleMoveDamage *= 2;
+ if (gProtectStructs[gBankAttacker].helpingHand)
+ gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
+
+ gBattlescriptCurrInstr++;
+}
+
+void AI_CalcDmg(u8 BankAtk, u8 BankDef)
+{
+ u16 side_hword = gSideAffecting[GetBankIdentity(BankDef) & 1];
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[BankAtk], &gBattleMons[BankDef], gCurrentMove,
+ side_hword, gDynamicBasePower,
+ BATTLE_STRUCT->dynamicMoveType, BankAtk, BankDef);
+ gDynamicBasePower = 0;
+ gBattleMoveDamage = gBattleMoveDamage * gCritMultiplier * BATTLE_STRUCT->dmgMultiplier;
+
+ if (gStatuses3[BankAtk] & STATUS3_CHARGED_UP && gBattleMoves[gCurrentMove].type == TYPE_ELECTRIC)
+ gBattleMoveDamage *= 2;
+ if (gProtectStructs[BankAtk].helpingHand)
+ gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
+}
+
+static void ModulateDmgByType(u8 multiplier)
+{
+ gBattleMoveDamage = gBattleMoveDamage * multiplier / 10;
+ if (gBattleMoveDamage == 0 && multiplier != 0)
+ gBattleMoveDamage = 1;
+
+ switch (multiplier)
+ {
+ case 0: //no effect
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ break;
+ case 5: //not very effecting
+ if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ gBattleMoveFlags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ else
+ gBattleMoveFlags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ }
+ break;
+ case 20: //super effective
+ if (gBattleMoves[gCurrentMove].power && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE)
+ gBattleMoveFlags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ else
+ gBattleMoveFlags |= MOVESTATUS_SUPEREFFECTIVE;
+ }
+ break;
+ }
+}
+
+static void atk06_typecalc(void)
+{
+ int i = 0;
+ u8 move_type;
+ if (gCurrentMove != MOVE_STRUGGLE)
+ {
+ 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)
+ {
+ gBattleMoveDamage = gBattleMoveDamage * 15;
+ gBattleMoveDamage = gBattleMoveDamage / 10;
+ }
+
+ 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)
+ {
+ 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;
+ }
+ }
+
+ 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;
+ }
+ gBattlescriptCurrInstr++;
+}
+static void b_wonderguard_and_levitate(void)
+{
+ u8 flags = 0;
+ int i = 0;
+ u8 move_type;
+
+ if (gCurrentMove == MOVE_STRUGGLE || !gBattleMoves[gCurrentMove].power)
+ return;
+
+ 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)
+ {
+ RecordAbilitySetField6(ABILITY_LEVITATE, move_type);
+ return;
+ }
+
+ while (gTypeEffectiveness[i]!= TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT)
+ break;
+ i += 3;
+ continue;
+ }
+
+ if (gTypeEffectiveness[i] == move_type)
+ {
+ //check no effect
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 0)
+ {
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gProtectStructs[gBankAttacker].notEffective = 1;
+ }
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 &&
+ gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 &&
+ gTypeEffectiveness[i + 2] == 0)
+ {
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ gProtectStructs[gBankAttacker].notEffective = 1;
+ }
+
+ //check super effective
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 20)
+ flags |= 1;
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2
+ && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2
+ && gTypeEffectiveness[i + 2] == 20)
+ flags |= 1;
+
+ //check not very effective
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1 && gTypeEffectiveness[i + 2] == 5)
+ flags |= 2;
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2
+ && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2
+ && gTypeEffectiveness[i + 2] == 5)
+ flags |= 2;
+ }
+ i += 3;
+ }
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2)
+ {
+ if (((flags & 2) || !(flags & 1)) && gBattleMoves[gCurrentMove].power)
+ {
+ RecordAbilitySetField6(ABILITY_WONDER_GUARD, 3);
+ }
+ }
+}
+
+static void ModulateDmgByType2(u8 multiplier, u16 move, u8* flags) //a literal copy of the ModulateDmgbyType1 with different args...
+{
+ gBattleMoveDamage = gBattleMoveDamage * multiplier / 10;
+ if (gBattleMoveDamage == 0 && multiplier != 0)
+ gBattleMoveDamage = 1;
+
+ switch (multiplier)
+ {
+ case 0: //no effect
+ *flags |= MOVESTATUS_NOTAFFECTED;
+ *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ *flags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ break;
+ case 5: //not very effecting
+ if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT))
+ {
+ if (*flags & MOVESTATUS_SUPEREFFECTIVE)
+ *flags &= ~MOVESTATUS_SUPEREFFECTIVE;
+ else
+ *flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ }
+ break;
+ case 20: //super effective
+ if (gBattleMoves[move].power && !(*flags & MOVESTATUS_NOEFFECT))
+ {
+ if (*flags & MOVESTATUS_NOTVERYEFFECTIVE)
+ *flags &= ~MOVESTATUS_NOTVERYEFFECTIVE;
+ else
+ *flags |= MOVESTATUS_SUPEREFFECTIVE;
+ }
+ break;
+ }
+}
+
+u8 TypeCalc(u16 move, u8 bank_atk, u8 bank_def)
+{
+ int i = 0;
+ u8 flags = 0;
+ u8 move_type;
+
+ if (move == MOVE_STRUGGLE)
+ return 0;
+
+ move_type = gBattleMoves[move].type;
+
+ //check stab
+ if (gBattleMons[bank_atk].type1 == move_type || gBattleMons[bank_atk].type2 == move_type)
+ {
+ gBattleMoveDamage = gBattleMoveDamage * 15;
+ gBattleMoveDamage = gBattleMoveDamage / 10;
+ }
+
+ if (gBattleMons[bank_def].ability == ABILITY_LEVITATE && move_type == TYPE_GROUND)
+ {
+ flags |= (MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED);
+ }
+ else
+ {
+ while (gTypeEffectiveness[i]!= TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ if (gBattleMons[bank_def].status2 & STATUS2_FORESIGHT)
+ break;
+ i += 3;
+ continue;
+ }
+
+ else if (gTypeEffectiveness[i] == move_type)
+ {
+ //check type1
+ if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type1)
+ ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags);
+ //check type2
+ if (gTypeEffectiveness[i + 1] == gBattleMons[bank_def].type2 &&
+ gBattleMons[gBankTarget /* what the christ */].type1 != gBattleMons[bank_def].type2)
+ ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags);
+ }
+ i += 3;
+ }
+ }
+
+ if (gBattleMons[bank_def].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_MISSED) &&
+ AttacksThisTurn(bank_atk, move) == 2 &&
+ (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) &&
+ gBattleMoves[move].power)
+ {
+ flags |= MOVESTATUS_MISSED;
+ }
+ return flags;
+}
+
+u8 AI_TypeCalc(u16 move, u16 species, u8 ability)
+{
+ int i = 0;
+ u8 flags = 0;
+ u8 type1 = gBaseStats[species].type1, type2 = gBaseStats[species].type2, move_type;
+
+ if (move == MOVE_STRUGGLE)
+ return 0;
+
+ move_type = gBattleMoves[move].type;
+
+ if (ability == ABILITY_LEVITATE && move_type == TYPE_GROUND)
+ flags = MOVESTATUS_MISSED | MOVESTATUS_NOTAFFECTED;
+ else
+ {
+ while (gTypeEffectiveness[i]!= TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ i += 3;
+ continue;
+ }
+ if (gTypeEffectiveness[i] == move_type)
+ {
+ //check type1
+ if (gTypeEffectiveness[i + 1] == type1)
+ ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags);
+ //check type2
+ if (gTypeEffectiveness[i + 1] == type2 && gBattleMons[gBankTarget].type1 != type2) //gf you morons, you should check if (type1 != type2)...
+ ModulateDmgByType2(gTypeEffectiveness[i + 2], move, &flags);
+ }
+ i += 3;
+ }
+ }
+ if (ability == ABILITY_WONDER_GUARD
+ && (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)))
+ && gBattleMoves[move].power)
+ flags |= MOVESTATUS_NOTAFFECTED;
+ return flags;
+}
+
+// Multiplies the damage by a random factor between 85% to 100% inclusive
+static inline void ApplyRandomDmgMultiplier(void)
+{
+ u16 rand = Random();
+ u16 randPercent = 100 - (rand % 16);
+
+ if (gBattleMoveDamage != 0)
+ {
+ gBattleMoveDamage *= randPercent;
+ gBattleMoveDamage /= 100;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ }
+}
+
+void Unused_ApplyRandomDmgMultiplier(void)
+{
+ ApplyRandomDmgMultiplier();
+}
+
+static void atk07_dmg_adjustment(void)
+{
+ u8 hold_effect, quality;
+ ApplyRandomDmgMultiplier();
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ {
+ hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ }
+ else
+ {
+ hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ {
+ RecordItemBattle(gBankTarget, hold_effect);
+ gSpecialStatuses[gBankTarget].focusBanded = 1;
+ }
+ if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)
+ goto END;
+ if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBankTarget].endured
+ && !gSpecialStatuses[gBankTarget].focusBanded)
+ goto END;
+
+ if (gBattleMons[gBankTarget].hp > gBattleMoveDamage)
+ goto END;
+
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
+
+ if (gProtectStructs[gBankTarget].endured)
+ {
+ gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ goto END;
+ }
+ if (gSpecialStatuses[gBankTarget].focusBanded)
+ {
+ gBattleMoveFlags |= MOVESTATUS_HUNGON;
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ }
+
+ END:
+ gBattlescriptCurrInstr++;
+}
+
+static void atk08_dmg_adjustment2(void) //literally the same as 0x7 except it doesn't check for false swipe move effect...
+{
+ u8 hold_effect, quality;
+ ApplyRandomDmgMultiplier();
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ {
+ hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ }
+ else
+ {
+ hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ {
+ RecordItemBattle(gBankTarget, hold_effect);
+ gSpecialStatuses[gBankTarget].focusBanded = 1;
+ }
+ if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)
+ goto END;
+ if (!gProtectStructs[gBankTarget].endured
+ && !gSpecialStatuses[gBankTarget].focusBanded)
+ goto END;
+
+ if (gBattleMons[gBankTarget].hp > gBattleMoveDamage)
+ goto END;
+
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
+
+ if (gProtectStructs[gBankTarget].endured)
+ {
+ gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ goto END;
+ }
+ if (gSpecialStatuses[gBankTarget].focusBanded)
+ {
+ gBattleMoveFlags |= MOVESTATUS_HUNGON;
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ }
+
+ END:
+ gBattlescriptCurrInstr++;
+}
+
+static void atk09_attackanimation(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ if ((gHitMarker & HITMARKER_NO_ANIMATIONS) && (gCurrentMove != MOVE_TRANSFORM && gCurrentMove != MOVE_SUBSTITUTE))
+ {
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_Pausex20;
+ BATTLE_STRUCT->animTurn += 1;
+ BATTLE_STRUCT->animTargetsHit += 1;
+ }
+ else
+ {
+ if ((gBattleMoves[gCurrentMove].target & TARGET_BOTH || gBattleMoves[gCurrentMove].target & TARGET_FOES_AND_ALLY || gBattleMoves[gCurrentMove].target & TARGET_DEPENDS) && BATTLE_STRUCT->animTargetsHit)
+ {
+ gBattlescriptCurrInstr++;
+ return;
+ }
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ gActiveBank = gBankAttacker;
+
+ EmitMoveAnimation(0, gCurrentMove, BATTLE_STRUCT->animTurn, gBattleMovePower, gBattleMoveDamage, gBattleMons[gBankAttacker].friendship, &gDisableStructs[gBankAttacker]);
+ BATTLE_STRUCT->animTurn += 1;
+ BATTLE_STRUCT->animTargetsHit += 1;
+ MarkBufferBankForExecution(gBankAttacker);
+ gBattlescriptCurrInstr++;
+ }
+ else
+ {
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_Pausex20;
+ }
+ }
+}
+
+static void atk0A_waitanimation(void)
+{
+ if (gBattleExecBuffer == 0)
+ gBattlescriptCurrInstr++;
+}
+
+static void atk0B_healthbarupdate(void)
+{
+ if (gBattleExecBuffer)
+ return;
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ goto END;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+
+ if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
+ {
+ PrepareStringBattle(0x80, gActiveBank);
+ goto END;
+ }
+
+ EmitHealthBarUpdate(0, gBattleMoveDamage);
+ MarkBufferBankForExecution(gActiveBank);
+
+ if (!GetBankSide(gActiveBank) && gBattleMoveDamage > 0)
+ gBattleResults.unk5_0 = 1;
+
+ END:
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk0C_datahpupdate(void)
+{
+ register u32 move_type asm("r6"); //no idea how to match it otherwise
+ u8 dynamic_move_type;
+
+ if (gBattleExecBuffer)
+ return;
+
+ dynamic_move_type = BATTLE_STRUCT->dynamicMoveType;
+ if (dynamic_move_type && !(dynamic_move_type & 0x40))
+ {
+ move_type = 0x3F;
+ move_type &= dynamic_move_type;
+ }
+ else
+ {
+ move_type = gBattleMoves[gCurrentMove].type;
+ }
+
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE && gDisableStructs[gActiveBank].substituteHP && !(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE))
+ {
+ if (gDisableStructs[gActiveBank].substituteHP >= gBattleMoveDamage)
+ {
+ if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
+ gSpecialStatuses[gActiveBank].moveturnLostHP = gBattleMoveDamage;
+ gDisableStructs[gActiveBank].substituteHP -= gBattleMoveDamage;
+ gHP_dealt = gBattleMoveDamage;
+ }
+ else
+ {
+ if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
+ gSpecialStatuses[gActiveBank].moveturnLostHP = gDisableStructs[gActiveBank].substituteHP;
+ gHP_dealt = gDisableStructs[gActiveBank].substituteHP;
+ gDisableStructs[gActiveBank].substituteHP = 0;
+ }
+ //check substitute fading
+ if (gDisableStructs[gActiveBank].substituteHP == 0)
+ {
+ gBattlescriptCurrInstr += 2;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_SubstituteFade;
+ return;
+ }
+ }
+ else
+ {
+ gHitMarker &= ~(HITMARKER_IGNORE_SUBSTITUTE);
+ if (gBattleMoveDamage < 0) //hp goes up
+ {
+ gBattleMons[gActiveBank].hp -= gBattleMoveDamage;
+ if (gBattleMons[gActiveBank].hp > gBattleMons[gActiveBank].maxHP)
+ gBattleMons[gActiveBank].hp = gBattleMons[gActiveBank].maxHP;
+
+ }
+ else //hp goes down
+ {
+ if (gHitMarker & HITMARKER_x20)
+ {
+ gHitMarker &= ~(HITMARKER_x20);
+ }
+ else
+ {
+ gTakenDmg[gActiveBank] += gBattleMoveDamage;
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0)
+ gTakenDmgBanks[gActiveBank] = gBankAttacker;
+ else
+ gTakenDmgBanks[gActiveBank] = gBankTarget;
+ }
+
+ if (gBattleMons[gActiveBank].hp > gBattleMoveDamage)
+ {
+ gBattleMons[gActiveBank].hp -= gBattleMoveDamage;
+ gHP_dealt = gBattleMoveDamage;
+ }
+ else
+ {
+ gHP_dealt = gBattleMons[gActiveBank].hp;
+ gBattleMons[gActiveBank].hp = 0;
+ }
+
+ if (!gSpecialStatuses[gActiveBank].moveturnLostHP && !(gHitMarker & HITMARKER_x100000))
+ gSpecialStatuses[gActiveBank].moveturnLostHP = gHP_dealt;
+
+ if (move_type <= 8 && !(gHitMarker & HITMARKER_x100000) && gCurrentMove != MOVE_PAIN_SPLIT)
+ {
+ gProtectStructs[gActiveBank].physicalDmg = gHP_dealt;
+ gSpecialStatuses[gActiveBank].moveturnLostHP_physical = gHP_dealt;
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0)
+ {
+ gProtectStructs[gActiveBank].physicalBank = gBankAttacker;
+ gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankAttacker;
+ }
+ else
+ {
+ gProtectStructs[gActiveBank].physicalBank = gBankTarget;
+ gSpecialStatuses[gActiveBank].moveturnPhysicalBank = gBankTarget;
+ }
+ }
+ else if (move_type > 8 && !(gHitMarker & HITMARKER_x100000))
+ {
+ gProtectStructs[gActiveBank].specialDmg = gHP_dealt;
+ gSpecialStatuses[gActiveBank].moveturnLostHP_special = gHP_dealt;
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0)
+ {
+ gProtectStructs[gActiveBank].specialBank = gBankAttacker;
+ gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankAttacker;
+ }
+ else
+ {
+ gProtectStructs[gActiveBank].specialBank = gBankTarget;
+ gSpecialStatuses[gActiveBank].moveturnSpecialBank = gBankTarget;
+ }
+ }
+ }
+ gHitMarker &= ~(HITMARKER_x100000);
+ EmitSetAttributes(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ else
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (gSpecialStatuses[gActiveBank].moveturnLostHP == 0)
+ gSpecialStatuses[gActiveBank].moveturnLostHP = 0xFFFF;
+ }
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk0D_critmessage(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ if (gCritMultiplier == 2 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ PrepareStringBattle(0xD9, gBankAttacker);
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void atk0E_effectiveness_sound(void)
+{
+ if (gBattleExecBuffer)
+ return;
+ gActiveBank = gBankTarget;
+ if (!(gBattleMoveFlags & MOVESTATUS_MISSED))
+ {
+ u8 flag = ~MOVESTATUS_MISSED;
+ switch (gBattleMoveFlags & flag)
+ {
+ case MOVESTATUS_SUPEREFFECTIVE:
+ EmitEffectivenessSound(0, 14);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ case MOVESTATUS_NOTVERYEFFECTIVE:
+ EmitEffectivenessSound(0, 12);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ case MOVESTATUS_NOTAFFECTED:
+ case MOVESTATUS_FAILED:
+ break;
+ case MOVESTATUS_ENDURED:
+ case MOVESTATUS_ONEHITKO:
+ case MOVESTATUS_HUNGON:
+ default:
+ if (gBattleMoveFlags & MOVESTATUS_SUPEREFFECTIVE)
+ {
+ EmitEffectivenessSound(0, 14);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_NOTVERYEFFECTIVE)
+ {
+ EmitEffectivenessSound(0, 12);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (!(gBattleMoveFlags & (MOVESTATUS_NOTAFFECTED | MOVESTATUS_FAILED)))
+ {
+ EmitEffectivenessSound(0, 13);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ break;
+ }
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk0F_resultmessage(void)
+{
+ u16 stringID = 0;
+
+ if (gBattleExecBuffer)
+ return;
+
+ if (gBattleMoveFlags & MOVESTATUS_MISSED && (!(gBattleMoveFlags & MOVESTATUS_NOTAFFECTED) || gBattleCommunication[6] > 2))
+ {
+ stringID = gMissStrings[gBattleCommunication[6]];
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+ else
+ {
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ switch (gBattleMoveFlags & 0xFE)
+ {
+ case MOVESTATUS_SUPEREFFECTIVE:
+ stringID = 0xDE;
+ break;
+ case MOVESTATUS_NOTVERYEFFECTIVE:
+ stringID = 0xDD;
+ break;
+ case MOVESTATUS_ONEHITKO:
+ stringID = 0xDA;
+ break;
+ case MOVESTATUS_ENDURED:
+ stringID = 0x99;
+ break;
+ case MOVESTATUS_FAILED:
+ goto FAILED;
+ case MOVESTATUS_NOTAFFECTED:
+ goto NOTAFFECTED;
+ case MOVESTATUS_HUNGON:
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ gStringBank = gBankTarget;
+ gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_HangedOnMsg;
+ return;
+ default:
+ if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ NOTAFFECTED:
+ stringID = 0x1B;
+ else if (gBattleMoveFlags & MOVESTATUS_ONEHITKO)
+ {
+ gBattleMoveFlags &= ~(MOVESTATUS_ONEHITKO);
+ gBattleMoveFlags &= ~(MOVESTATUS_SUPEREFFECTIVE);
+ gBattleMoveFlags &= ~(MOVESTATUS_NOTVERYEFFECTIVE);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_OneHitKOMsg;
+ return;
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_ENDURED)
+ {
+ gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_EnduredMsg;
+ return;
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_HUNGON)
+ {
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ gStringBank = gBankTarget;
+ gBattleMoveFlags &= ~(MOVESTATUS_ENDURED | MOVESTATUS_HUNGON);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_HangedOnMsg;
+ return;
+ }
+ else if (gBattleMoveFlags & MOVESTATUS_FAILED)
+ FAILED:
+ stringID = 0xE5;
+ else
+ gBattleCommunication[MSG_DISPLAY] = 0;
+ }
+ }
+
+ if (stringID)
+ {
+ register u16 dummy asm("r0") = stringID; //Can't match it otherwise
+ PrepareStringBattle(dummy, gBankAttacker);
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk10_printstring(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u16 var = BS2ScriptRead16(gBattlescriptCurrInstr + 1);
+ PrepareStringBattle(var, gBankAttacker);
+ gBattlescriptCurrInstr += 3;
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+}
+
+static void atk11_printstring_playeronly(void)
+{
+ gActiveBank = gBankAttacker;
+ EmitPrintStringPlayerOnly(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 3;
+ gBattleCommunication[MSG_DISPLAY] = 1;
+}
+
+static void atk12_waitmessage(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ if (!gBattleCommunication[MSG_DISPLAY])
+ {
+ gBattlescriptCurrInstr += 3;
+ }
+ else
+ {
+ u16 to_wait = BS2ScriptRead16(gBattlescriptCurrInstr + 1);
+ if (++gPauseCounterBattle >= to_wait)
+ {
+ gPauseCounterBattle = 0;
+ gBattlescriptCurrInstr += 3;
+ gBattleCommunication[MSG_DISPLAY] = 0;
+ }
+ }
+ }
+}
+
+static void atk13_printfromtable(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ ptr += gBattleCommunication[MULTISTRING_CHOOSER];
+ PrepareStringBattle(*(u16*)ptr, gBankAttacker);
+ gBattlescriptCurrInstr += 5;
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+}
+
+static void atk14_printfromtable_playeronly(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u16 *ptr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ ptr += gBattleCommunication[MULTISTRING_CHOOSER];
+ gActiveBank = gBankAttacker;
+ EmitPrintStringPlayerOnly(0, *(u16*)ptr);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 5;
+ gBattleCommunication[MSG_DISPLAY] = 1;
+ }
+}
+
+u8 BankGetTurnOrder(u8 bank)
+{
+ int i;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gTurnOrder[i] == bank)
+ break;
+ }
+ return i;
+}
+
+//Someone please decompile this monstrosity below...
+#ifdef NONMATCHING
+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
+ bool32 NoSunCanFreeze = 1;
+
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] & EffectAffectsUser)
+ {
+ gEffectBank = gBankAttacker; //bank that effects get applied on
+ gBattleCommunication[MOVE_EFFECT_BYTE] &= ~(EffectAffectsUser);
+ AffectsUser = EffectAffectsUser;
+ BATTLE_STRUCT->scriptingActive = gBankTarget; //theoretically the attacker
+ }
+ else
+ {
+ gEffectBank = gBankTarget;
+ BATTLE_STRUCT->scriptingActive = gBankAttacker;
+ }
+
+ if (gBattleMons[gEffectBank].ability == ABILITY_SHIELD_DUST && !(gHitMarker & HITMARKER_IGNORE_SAFEGUARD) &&
+ !primary && gBattleCommunication[MOVE_EFFECT_BYTE] <= 9)
+ {gBattlescriptCurrInstr++; return;}
+
+ 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].hp == 0 && gBattleCommunication[MOVE_EFFECT_BYTE] != 0xB && gBattleCommunication[MOVE_EFFECT_BYTE] != 0x1F)
+ {gBattlescriptCurrInstr++; return;}
+
+ if (gBattleMons[gEffectBank].status2 & STATUS2_SUBSTITUTE && AffectsUser != EffectAffectsUser)
+ {gBattlescriptCurrInstr++; return;}
+
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6) //status change
+ {
+ switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
+ {
+ case STATUS_SLEEP:
+ //check active uproar
+ if (gBattleMons[gEffectBank].ability != ABILITY_SOUNDPROOF)
+ {
+ for (gActiveBank = 0; gActiveBank < gNoOfAllBanks && !(gBattleMons[gActiveBank].status2 & STATUS2_UPROAR); gActiveBank++) {}
+ }
+ else
+ gActiveBank = gNoOfAllBanks;
+ if (gBattleMons[gEffectBank].status1) {break;}
+ if (gActiveBank != gNoOfAllBanks) {break;} //nice way of checking uproar...
+ if (gBattleMons[gEffectBank].ability == ABILITY_VITAL_SPIRIT) {break;}
+ if (gBattleMons[gEffectBank].ability == ABILITY_INSOMNIA) {break;}
+
+ CancelMultiTurnMoves(gEffectBank);
+ StatusChanged = 1;
+ break;
+ case STATUS_POISON:
+ if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80))
+ {
+ gLastUsedAbility = ABILITY_IMMUNITY;
+ RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY);
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ //_0801E664:
+ gBattlescriptCurrInstr = BattleScript_PSNPrevention;
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ return;
+ }
+ else
+ {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 = 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].status1) {break;}
+ if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY) {break;}
+
+ StatusChanged = 1;
+ break;
+ case STATUS_BURN:
+ if (gBattleMons[gEffectBank].ability == ABILITY_WATER_VEIL && (primary == 1 || certain == 0x80))
+ {
+ gLastUsedAbility = ABILITY_WATER_VEIL;
+ RecordAbilityBattle(gEffectBank, ABILITY_WATER_VEIL);
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ //_0801E664:
+ gBattlescriptCurrInstr = BattleScript_BRNPrevention;
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ return;
+ }
+ else
+ {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 = 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 == ABILITY_WATER_VEIL) {break;}
+ if (gBattleMons[gEffectBank].status1 == 0) {break;}
+ StatusChanged = 1;
+ break;
+ case STATUS_FREEZE:
+ 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].status1) {break;}
+ if (NoSunCanFreeze == 0) {break;}
+ if (gBattleMons[gEffectBank].ability == ABILITY_MAGMA_ARMOR) {break;}
+
+ CancelMultiTurnMoves(gEffectBank);
+ StatusChanged = 1;
+ break;
+ case STATUS_PARALYSIS:
+ if (gBattleMons[gEffectBank].ability == ABILITY_LIMBER)
+ {
+ if ((primary == 1 || certain == 0x80))
+ {
+ gLastUsedAbility = ABILITY_LIMBER;
+ RecordAbilityBattle(gEffectBank, ABILITY_LIMBER);
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ //_0801E664:
+ gBattlescriptCurrInstr = BattleScript_PRLZPrevention;
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ return;
+ }
+ else
+ {gBattleCommunication[MULTISTRING_CHOOSER] = 0; return;}
+ }
+ else {break;}
+ }
+ if (gBattleMons[gEffectBank].status1) {break;}
+ StatusChanged = 1;
+ break;
+ case STATUS_TOXIC_POISON:
+ if (gBattleMons[gEffectBank].ability == ABILITY_IMMUNITY && (primary == 1 || certain == 0x80))
+ {
+ gLastUsedAbility = ABILITY_IMMUNITY;
+ RecordAbilityBattle(gEffectBank, ABILITY_IMMUNITY);
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ //_0801E664:
+ gBattlescriptCurrInstr = BattleScript_PSNPrevention;
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ return;
+ }
+ else
+ {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 = BattleScript_PSNPrevention;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ return;
+ }
+ 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 == ABILITY_IMMUNITY) {break;}
+ gBattleMons[gEffectBank].status1 &= ~(0x9); //This gets (correctly) optimized out...
+ StatusChanged = 1;
+ break;
+ }
+ else
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ break;
+ }
+ if (StatusChanged == 1)
+ {
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ if (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]] == STATUS_SLEEP)
+ gBattleMons[gEffectBank].status1 |= ((Random() & 3) + 2);
+ else
+ gBattleMons[gEffectBank].status1 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ gActiveBank = gEffectBank;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gEffectBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ if (gHitMarker & HITMARKER_IGNORE_SAFEGUARD)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ gHitMarker &= ~(HITMARKER_IGNORE_SAFEGUARD);
+ }
+ else
+ 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];
+ gHitMarker |= HITMARKER_SYNCHRONISE_EFFECT;
+ }
+ return;
+ }
+ else if (StatusChanged == 0)
+ {gBattlescriptCurrInstr++; return;}
+ }
+ else
+ {
+ if (gBattleMons[gEffectBank].status2 & gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
+ {
+ gBattlescriptCurrInstr++;
+ return;
+ }
+ switch (gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]])
+ {
+ case 7: //confusion
+ 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 = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case 8: //flinch
+ if (gBattleMons[gEffectBank].ability == ABILITY_INNER_FOCUS)
+ {
+ if (primary == 1 || certain == 0x80)
+ {
+ gLastUsedAbility = ABILITY_INNER_FOCUS;
+ RecordAbilityBattle(gEffectBank, ABILITY_INNER_FOCUS);
+ gBattlescriptCurrInstr = BattleScript_FlinchPrevention;
+ return;
+ }
+ else
+ {gBattlescriptCurrInstr++; return;}
+ }
+ else
+ {
+ if (BankGetTurnOrder(gEffectBank) > gCurrentMoveTurn)
+ gBattleMons[gEffectBank].status2 |= gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ gBattlescriptCurrInstr++; return;
+ }
+ break;
+ case 10: //uproar
+ if (gBattleMons[gEffectBank].status2 & STATUS2_UPROAR)
+ {gBattlescriptCurrInstr++; return;}
+ gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMove[gEffectBank] = gCurrentMove;
+ gBattleMons[gEffectBank].status2 |= ((Random() & 3) + 2) << 4;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case 11: //pay day
+ if (!(GetBankIdentity(gBankAttacker) & 1))
+ {
+ u16 PayDay = gPaydayMoney;
+ gPaydayMoney += (gBattleMons[gBankAttacker].level * 5);
+ if (PayDay > gPaydayMoney)
+ gPaydayMoney = 0xFFFF;
+ }
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case 9: //tri attack
+ if (gBattleMons[gEffectBank].status1)
+ {gBattlescriptCurrInstr++; return;}
+ gBattleCommunication[MOVE_EFFECT_BYTE] = Random() % 3 + 3;
+ SetMoveEffect(0, 0);
+ break;
+ case 12: //charging move
+ gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMove[gEffectBank] = gCurrentMove;
+ 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->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 = 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: //25% recoil
+ gBattleMoveDamage = (gHP_dealt) / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case 15 ... 21: //stat + 1
+ 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 = BattleScript_StatUp;
+ }
+ break;
+ case 22 ... 28: //stat - 1
+ 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 = BattleScript_StatDown;
+ }
+ break;
+ case 39 ... 45: //stat + 2
+ 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 = BattleScript_StatUp;
+ }
+ break;
+ case 46 ... 52: //stat - 2
+ 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 = BattleScript_StatDown;
+ }
+ break;
+ case 29: //recharge
+ gBattleMons[gEffectBank].status2 |= STATUS2_RECHARGE;
+ gDisableStructs[gEffectBank].rechargeCounter = 2;
+ gLockedMove[gEffectBank] = gCurrentMove;
+ gBattlescriptCurrInstr++;
+ break;
+ case 30: //rage
+ gBattleMons[gBankAttacker].status2 |= STATUS2_RAGE;
+ gBattlescriptCurrInstr++;
+ break;
+ case 31: //item steal
+ {
+ 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.knockedOffPokes[side] & gBitTable[gBattlePartyID[gBankAttacker]]))
+ {gBattlescriptCurrInstr++; return;}
+ if (gBattleMons[gBankTarget].item && gBattleMons[gBankTarget].ability == ABILITY_STICKY_HOLD)
+ {
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_NoItemSteal;
+ gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ return;
+ }
+ if (gBattleMons[gBankAttacker].item)
+ {gBattlescriptCurrInstr++; return;}
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ {gBattlescriptCurrInstr++; return;}
+ if (gBattleMons[gBankTarget].item == 0)
+ {gBattlescriptCurrInstr++; return;}
+
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ unk_2000000[gBankAttacker * 2 + 0x160cc] = gLastUsedItem;
+ gBattleMons[gBankTarget].item = 0;
+
+ gActiveBank = gBankAttacker;
+ EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gLastUsedItem);
+ MarkBufferBankForExecution(gBankAttacker);
+
+ gActiveBank = gBankTarget;
+ EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gBankTarget].item);
+ MarkBufferBankForExecution(gBankTarget);
+
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_ItemSteal;
+
+ ewram[gBankTarget * 2 + 0x160e8] = 0;
+ //STORE_CHOICEMOVE(gBankTarget, 0);
+ }
+ break;
+ case 32: //escape prevention
+ gBattleMons[gBankTarget].status2 |= STATUS2_RECHARGE;
+ gDisableStructs[gBankTarget].bankPreventingEscape = gBankAttacker;
+ gBattlescriptCurrInstr++;
+ break;
+ case 33: //nightmare
+ gBattleMons[gBankTarget].status2 |= STATUS2_NIGHTMARE;
+ gBattlescriptCurrInstr++;
+ break;
+ case 34: //ancientpower
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_AllStatsUp;
+ return;
+ case 35: //break free rapidspin
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_RapidSpinAway;
+ return;
+ case 36: //paralysis removal
+ if (gBattleMons[gBankTarget].status1 & STATUS_PARALYSIS)
+ {
+ gBattleMons[gBankTarget].status1 &= ~(STATUS_PARALYSIS);
+ gActiveBank = gBankTarget;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_TargetPRLZHeal;
+ }
+ else
+ {gBattlescriptCurrInstr++; return;}
+ break;
+ case 37: //superpower
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_AtkDefDown;
+ return;
+ case 38: //33% recoil
+ gBattleMoveDamage = gHP_dealt / 3;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gMoveEffectBS_Ptrs[gBattleCommunication[MOVE_EFFECT_BYTE]];
+ break;
+ case 53: //thrash
+ if (!(gBattleMons[gEffectBank].status2 & STATUS2_LOCK_CONFUSE))
+ {
+ gBattleMons[gEffectBank].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMove[gEffectBank] = gCurrentMove;
+ gBattleMons[gEffectBank].status2 |= (((Random() & 1) + 2) << 0xA);
+ }
+ else
+ {gBattlescriptCurrInstr++; return;}
+ break;
+ case 54: //knock off
+ if (gBattleMons[gEffectBank].ability == ABILITY_STICKY_HOLD)
+ {
+ if (gBattleMons[gEffectBank].item == 0)
+ {gBattlescriptCurrInstr++; return;}
+ gLastUsedAbility = ABILITY_STICKY_HOLD;
+ gBattlescriptCurrInstr = BattleScript_NoItemSteal;
+ RecordAbilityBattle(gEffectBank, ABILITY_STICKY_HOLD);
+ return;
+ }
+ if (gBattleMons[gEffectBank].item == 0)
+ {gBattlescriptCurrInstr++; return;}
+ else
+ {
+ 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 = BattleScript_KnockedOff;
+
+ ewram[gEffectBank * 2 + 0x160e8] = 0;
+ //STORE_CHOICEMOVE(gEffectBank, 0);
+ }
+ break;
+ case 59: //overheat
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = BattleScript_SAtkDown2;
+ return;
+ }
+ }
+}
+#else
+__attribute__((naked))
+void SetMoveEffect(bool8 primary, u8 certainArg)
+{
+ 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, 0x8\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r5, r1, 24\n\
+ movs r0, 0\n\
+ mov r10, r0\n\
+ movs r6, 0\n\
+ movs r1, 0x1\n\
+ str r1, [sp, 0x4]\n\
+ ldr r1, _0801E430 @ =gBattleCommunication\n\
+ ldrb r3, [r1, 0x3]\n\
+ movs r0, 0x40\n\
+ ands r0, r3\n\
+ adds r7, r1, 0\n\
+ cmp r0, 0\n\
+ beq _0801E444\n\
+ ldr r2, _0801E434 @ =gEffectBank\n\
+ ldr r0, _0801E438 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2]\n\
+ movs r0, 0xBF\n\
+ ands r0, r3\n\
+ strb r0, [r7, 0x3]\n\
+ movs r6, 0x40\n\
+ ldr r0, _0801E43C @ =0x02000000\n\
+ ldr r1, _0801E440 @ =gBankTarget\n\
+ b _0801E450\n\
+ .align 2, 0\n\
+_0801E430: .4byte gBattleCommunication\n\
+_0801E434: .4byte gEffectBank\n\
+_0801E438: .4byte gBankAttacker\n\
+_0801E43C: .4byte 0x02000000\n\
+_0801E440: .4byte gBankTarget\n\
+_0801E444:\n\
+ ldr r2, _0801E538 @ =gEffectBank\n\
+ ldr r0, _0801E53C @ =gBankTarget\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r2]\n\
+ ldr r0, _0801E540 @ =0x02000000\n\
+ ldr r1, _0801E544 @ =gBankAttacker\n\
+_0801E450:\n\
+ ldrb r1, [r1]\n\
+ ldr r3, _0801E548 @ =0x00016003\n\
+ adds r0, r3\n\
+ strb r1, [r0]\n\
+ mov r8, r2\n\
+ ldr r2, _0801E54C @ =gBattleMons\n\
+ mov r0, r8\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r2\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x13\n\
+ bne _0801E48A\n\
+ ldr r0, _0801E550 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801E48A\n\
+ cmp r4, 0\n\
+ bne _0801E48A\n\
+ ldrb r0, [r7, 0x3]\n\
+ cmp r0, 0x9\n\
+ bhi _0801E48A\n\
+ bl _0801F5DC\n\
+_0801E48A:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ bl GetBankIdentity\n\
+ ldr r2, _0801E554 @ =gSideAffecting\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ lsls r1, 1\n\
+ adds r1, r2\n\
+ ldrh r1, [r1]\n\
+ movs r0, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E4C4\n\
+ ldr r0, _0801E550 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801E4C4\n\
+ cmp r4, 0\n\
+ bne _0801E4C4\n\
+ ldr r0, _0801E558 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ cmp r0, 0x7\n\
+ bhi _0801E4C4\n\
+ bl _0801F5DC\n\
+_0801E4C4:\n\
+ ldr r3, _0801E54C @ =gBattleMons\n\
+ ldr r2, _0801E538 @ =gEffectBank\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r3\n\
+ ldrh r0, [r0, 0x28]\n\
+ mov r8, r2\n\
+ mov r9, r3\n\
+ cmp r0, 0\n\
+ bne _0801E4EA\n\
+ ldr r0, _0801E558 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ cmp r0, 0xB\n\
+ beq _0801E4EA\n\
+ cmp r0, 0x1F\n\
+ beq _0801E4EA\n\
+ bl _0801F5DC\n\
+_0801E4EA:\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ mov r1, r9\n\
+ adds r1, 0x50\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 17\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E50C\n\
+ cmp r6, 0x40\n\
+ beq _0801E50C\n\
+ bl _0801F5DC\n\
+_0801E50C:\n\
+ ldr r0, _0801E558 @ =gBattleCommunication\n\
+ ldrb r1, [r0, 0x3]\n\
+ adds r7, r0, 0\n\
+ cmp r1, 0x6\n\
+ bls _0801E518\n\
+ b _0801EB4A\n\
+_0801E518:\n\
+ ldr r1, _0801E55C @ =gStatusFlagsForMoveEffects\n\
+ ldrb r0, [r7, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0x10\n\
+ bne _0801E528\n\
+ b _0801E714\n\
+_0801E528:\n\
+ cmp r0, 0x10\n\
+ bhi _0801E560\n\
+ cmp r0, 0x7\n\
+ beq _0801E57A\n\
+ cmp r0, 0x8\n\
+ bne _0801E536\n\
+ b _0801E630\n\
+_0801E536:\n\
+ b _0801EA14\n\
+ .align 2, 0\n\
+_0801E538: .4byte gEffectBank\n\
+_0801E53C: .4byte gBankTarget\n\
+_0801E540: .4byte 0x02000000\n\
+_0801E544: .4byte gBankAttacker\n\
+_0801E548: .4byte 0x00016003\n\
+_0801E54C: .4byte gBattleMons\n\
+_0801E550: .4byte gHitMarker\n\
+_0801E554: .4byte gSideAffecting\n\
+_0801E558: .4byte gBattleCommunication\n\
+_0801E55C: .4byte gStatusFlagsForMoveEffects\n\
+_0801E560:\n\
+ cmp r0, 0x40\n\
+ bne _0801E566\n\
+ b _0801E888\n\
+_0801E566:\n\
+ cmp r0, 0x40\n\
+ bhi _0801E572\n\
+ cmp r0, 0x20\n\
+ bne _0801E570\n\
+ b _0801E7EA\n\
+_0801E570:\n\
+ b _0801EA14\n\
+_0801E572:\n\
+ cmp r0, 0x80\n\
+ bne _0801E578\n\
+ b _0801E8E4\n\
+_0801E578:\n\
+ b _0801EA14\n\
+_0801E57A:\n\
+ mov r3, r8\n\
+ ldrb r1, [r3]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x2B\n\
+ beq _0801E5DC\n\
+ ldr r0, _0801E5D4 @ =gActiveBank\n\
+ movs r1, 0\n\
+ strb r1, [r0]\n\
+ ldr r1, _0801E5D8 @ =gNoOfAllBanks\n\
+ ldrb r3, [r1]\n\
+ adds r7, r0, 0\n\
+ mov r12, r1\n\
+ cmp r3, 0\n\
+ beq _0801E5E8\n\
+ mov r4, r9\n\
+ ldr r0, [r4, 0x50]\n\
+ movs r1, 0x70\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801E5E8\n\
+ adds r1, r7, 0\n\
+ mov r6, r9\n\
+ adds r6, 0x50\n\
+ movs r5, 0x58\n\
+ movs r4, 0x70\n\
+_0801E5B4:\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, r3\n\
+ bcs _0801E5E8\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ ands r0, r4\n\
+ cmp r0, 0\n\
+ beq _0801E5B4\n\
+ b _0801E5E8\n\
+ .align 2, 0\n\
+_0801E5D4: .4byte gActiveBank\n\
+_0801E5D8: .4byte gNoOfAllBanks\n\
+_0801E5DC:\n\
+ ldr r0, _0801E628 @ =gActiveBank\n\
+ ldr r2, _0801E62C @ =gNoOfAllBanks\n\
+ ldrb r1, [r2]\n\
+ strb r1, [r0]\n\
+ adds r7, r0, 0\n\
+ mov r12, r2\n\
+_0801E5E8:\n\
+ mov r0, r8\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ adds r1, r2, 0\n\
+ muls r1, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x4C\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0801E600\n\
+ b _0801EA14\n\
+_0801E600:\n\
+ ldrb r0, [r7]\n\
+ mov r3, r12\n\
+ ldrb r3, [r3]\n\
+ cmp r0, r3\n\
+ beq _0801E60C\n\
+ b _0801EA14\n\
+_0801E60C:\n\
+ mov r4, r9\n\
+ adds r0, r1, r4\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x48\n\
+ bne _0801E61A\n\
+ b _0801EA14\n\
+_0801E61A:\n\
+ cmp r0, 0xF\n\
+ bne _0801E620\n\
+ b _0801EA14\n\
+_0801E620:\n\
+ adds r0, r2, 0\n\
+ bl CancelMultiTurnMoves\n\
+ b _0801EA04\n\
+ .align 2, 0\n\
+_0801E628: .4byte gActiveBank\n\
+_0801E62C: .4byte gNoOfAllBanks\n\
+_0801E630:\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r1, [r0]\n\
+ cmp r1, 0x11\n\
+ bne _0801E688\n\
+ cmp r4, 0x1\n\
+ beq _0801E64A\n\
+ cmp r5, 0x80\n\
+ bne _0801E688\n\
+_0801E64A:\n\
+ ldr r0, _0801E678 @ =gLastUsedAbility\n\
+ strb r1, [r0]\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x11\n\
+ bl RecordAbilityBattle\n\
+ ldr r4, _0801E67C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801E680 @ =BattleScript_PSNPrevention\n\
+_0801E664:\n\
+ str r0, [r4]\n\
+ ldr r2, _0801E684 @ =gHitMarker\n\
+ ldr r1, [r2]\n\
+ movs r0, 0x80\n\
+ lsls r0, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E676\n\
+ b _0801E928\n\
+_0801E676:\n\
+ b _0801E94C\n\
+ .align 2, 0\n\
+_0801E678: .4byte gLastUsedAbility\n\
+_0801E67C: .4byte gBattlescriptCurrInstr\n\
+_0801E680: .4byte BattleScript_PSNPrevention\n\
+_0801E684: .4byte gHitMarker\n\
+_0801E688:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ movs r1, 0x58\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ adds r1, r0, 0\n\
+ adds r1, 0x21\n\
+ ldrb r1, [r1]\n\
+ cmp r1, 0x3\n\
+ beq _0801E6AC\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3\n\
+ beq _0801E6AC\n\
+ cmp r1, 0x8\n\
+ beq _0801E6AC\n\
+ cmp r0, 0x8\n\
+ bne _0801E6C6\n\
+_0801E6AC:\n\
+ ldr r0, _0801E710 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E6C6\n\
+ cmp r4, 0x1\n\
+ bne _0801E6C0\n\
+ b _0801E98C\n\
+_0801E6C0:\n\
+ cmp r5, 0x80\n\
+ bne _0801E6C6\n\
+ b _0801E98C\n\
+_0801E6C6:\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x58\n\
+ muls r1, r0\n\
+ mov r4, r9\n\
+ adds r3, r1, r4\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x21\n\
+ ldrb r4, [r0]\n\
+ cmp r4, 0x3\n\
+ bne _0801E6DE\n\
+ b _0801EA14\n\
+_0801E6DE:\n\
+ adds r0, 0x1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3\n\
+ bne _0801E6E8\n\
+ b _0801EA14\n\
+_0801E6E8:\n\
+ cmp r4, 0x8\n\
+ bne _0801E6EE\n\
+ b _0801EA14\n\
+_0801E6EE:\n\
+ cmp r0, 0x8\n\
+ bne _0801E6F4\n\
+ b _0801EA14\n\
+_0801E6F4:\n\
+ mov r0, r9\n\
+ adds r0, 0x4C\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0801E702\n\
+ b _0801EA14\n\
+_0801E702:\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x11\n\
+ bne _0801E70E\n\
+ b _0801EA14\n\
+_0801E70E:\n\
+ b _0801EA04\n\
+ .align 2, 0\n\
+_0801E710: .4byte gHitMarker\n\
+_0801E714:\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r1, [r0]\n\
+ cmp r1, 0x29\n\
+ bne _0801E758\n\
+ cmp r4, 0x1\n\
+ beq _0801E72E\n\
+ cmp r5, 0x80\n\
+ bne _0801E758\n\
+_0801E72E:\n\
+ ldr r0, _0801E74C @ =gLastUsedAbility\n\
+ strb r1, [r0]\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x29\n\
+ bl RecordAbilityBattle\n\
+ ldr r4, _0801E750 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801E754 @ =BattleScript_BRNPrevention\n\
+ b _0801E664\n\
+ .align 2, 0\n\
+_0801E74C: .4byte gLastUsedAbility\n\
+_0801E750: .4byte gBattlescriptCurrInstr\n\
+_0801E754: .4byte BattleScript_BRNPrevention\n\
+_0801E758:\n\
+ mov r0, r8\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ mov r2, r9\n\
+ adds r1, r0, r2\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x21\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xA\n\
+ beq _0801E778\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xA\n\
+ bne _0801E7A8\n\
+_0801E778:\n\
+ ldr r0, _0801E79C @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E7A8\n\
+ cmp r4, 0x1\n\
+ beq _0801E78E\n\
+ cmp r5, 0x80\n\
+ bne _0801E7A8\n\
+_0801E78E:\n\
+ ldr r4, _0801E7A0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801E7A4 @ =BattleScript_BRNPrevention\n\
+ b _0801E998\n\
+ .align 2, 0\n\
+_0801E79C: .4byte gHitMarker\n\
+_0801E7A0: .4byte gBattlescriptCurrInstr\n\
+_0801E7A4: .4byte BattleScript_BRNPrevention\n\
+_0801E7A8:\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x58\n\
+ adds r2, r0, 0\n\
+ muls r2, r1\n\
+ mov r4, r9\n\
+ adds r1, r2, r4\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x21\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xA\n\
+ bne _0801E7C2\n\
+ b _0801EA14\n\
+_0801E7C2:\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xA\n\
+ bne _0801E7CE\n\
+ b _0801EA14\n\
+_0801E7CE:\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x29\n\
+ bne _0801E7DA\n\
+ b _0801EA14\n\
+_0801E7DA:\n\
+ mov r0, r9\n\
+ adds r0, 0x4C\n\
+ adds r0, r2, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0801E7E8\n\
+ b _0801EA14\n\
+_0801E7E8:\n\
+ b _0801EA04\n\
+_0801E7EA:\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x13\n\
+ movs r1, 0\n\
+ movs r2, 0xD\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0\n\
+ bne _0801E826\n\
+ str r0, [sp]\n\
+ movs r0, 0x13\n\
+ movs r1, 0\n\
+ movs r2, 0x4D\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0801E826\n\
+ ldr r0, _0801E87C @ =gBattleWeather\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x60\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E826\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x4]\n\
+_0801E826:\n\
+ ldr r4, _0801E880 @ =gBattleMons\n\
+ ldr r0, _0801E884 @ =gEffectBank\n\
+ ldrb r3, [r0]\n\
+ movs r0, 0x58\n\
+ adds r2, r3, 0\n\
+ muls r2, r0\n\
+ adds r1, r2, r4\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x21\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xF\n\
+ bne _0801E840\n\
+ b _0801EA14\n\
+_0801E840:\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xF\n\
+ bne _0801E84C\n\
+ b _0801EA14\n\
+_0801E84C:\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x4C\n\
+ adds r0, r2, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0801E85A\n\
+ b _0801EA14\n\
+_0801E85A:\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r2, 0\n\
+ bne _0801E862\n\
+ b _0801EA14\n\
+_0801E862:\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x28\n\
+ bne _0801E86E\n\
+ b _0801EA14\n\
+_0801E86E:\n\
+ adds r0, r3, 0\n\
+ bl CancelMultiTurnMoves\n\
+ movs r3, 0x1\n\
+ mov r10, r3\n\
+ b _0801EA14\n\
+ .align 2, 0\n\
+_0801E87C: .4byte gBattleWeather\n\
+_0801E880: .4byte gBattleMons\n\
+_0801E884: .4byte gEffectBank\n\
+_0801E888:\n\
+ mov r0, r8\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r1, r0\n\
+ mov r2, r9\n\
+ adds r0, r1, r2\n\
+ adds r0, 0x20\n\
+ ldrb r2, [r0]\n\
+ cmp r2, 0x7\n\
+ bne _0801E8D0\n\
+ cmp r4, 0x1\n\
+ beq _0801E8A6\n\
+ cmp r5, 0x80\n\
+ beq _0801E8A6\n\
+ b _0801EA14\n\
+_0801E8A6:\n\
+ ldr r0, _0801E8C4 @ =gLastUsedAbility\n\
+ strb r2, [r0]\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r1, 0x7\n\
+ bl RecordAbilityBattle\n\
+ ldr r4, _0801E8C8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801E8CC @ =BattleScript_PRLZPrevention\n\
+ b _0801E664\n\
+ .align 2, 0\n\
+_0801E8C4: .4byte gLastUsedAbility\n\
+_0801E8C8: .4byte gBattlescriptCurrInstr\n\
+_0801E8CC: .4byte BattleScript_PRLZPrevention\n\
+_0801E8D0:\n\
+ mov r0, r9\n\
+ adds r0, 0x4C\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0801E8DE\n\
+ b _0801EA14\n\
+_0801E8DE:\n\
+ movs r4, 0x1\n\
+ mov r10, r4\n\
+ b _0801EA14\n\
+_0801E8E4:\n\
+ mov r0, r8\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r1, [r0]\n\
+ cmp r1, 0x11\n\
+ bne _0801E952\n\
+ cmp r4, 0x1\n\
+ beq _0801E8FE\n\
+ cmp r5, 0x80\n\
+ bne _0801E952\n\
+_0801E8FE:\n\
+ ldr r0, _0801E938 @ =gLastUsedAbility\n\
+ strb r1, [r0]\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ movs r1, 0x11\n\
+ bl RecordAbilityBattle\n\
+ ldr r4, _0801E93C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801E940 @ =BattleScript_PSNPrevention\n\
+ str r0, [r4]\n\
+ ldr r2, _0801E944 @ =gHitMarker\n\
+ ldr r1, [r2]\n\
+ movs r0, 0x80\n\
+ lsls r0, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E94C\n\
+_0801E928:\n\
+ movs r0, 0x1\n\
+ strb r0, [r7, 0x5]\n\
+ ldr r0, _0801E948 @ =0xffffdfff\n\
+ ands r1, r0\n\
+ str r1, [r2]\n\
+ bl _0801F5FA\n\
+ .align 2, 0\n\
+_0801E938: .4byte gLastUsedAbility\n\
+_0801E93C: .4byte gBattlescriptCurrInstr\n\
+_0801E940: .4byte BattleScript_PSNPrevention\n\
+_0801E944: .4byte gHitMarker\n\
+_0801E948: .4byte 0xffffdfff\n\
+_0801E94C:\n\
+ strb r0, [r7, 0x5]\n\
+ bl _0801F5FA\n\
+_0801E952:\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x58\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ adds r1, r0, 0\n\
+ adds r1, 0x21\n\
+ ldrb r1, [r1]\n\
+ cmp r1, 0x3\n\
+ beq _0801E976\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3\n\
+ beq _0801E976\n\
+ cmp r1, 0x8\n\
+ beq _0801E976\n\
+ cmp r0, 0x8\n\
+ bne _0801E9B4\n\
+_0801E976:\n\
+ ldr r0, _0801E9A4 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801E9B4\n\
+ cmp r4, 0x1\n\
+ beq _0801E98C\n\
+ cmp r5, 0x80\n\
+ bne _0801E9B4\n\
+_0801E98C:\n\
+ ldr r4, _0801E9A8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801E9AC @ =BattleScript_PSNPrevention\n\
+_0801E998:\n\
+ str r0, [r4]\n\
+ ldr r1, _0801E9B0 @ =gBattleCommunication\n\
+ movs r0, 0x2\n\
+ strb r0, [r1, 0x5]\n\
+ bl _0801F5FA\n\
+ .align 2, 0\n\
+_0801E9A4: .4byte gHitMarker\n\
+_0801E9A8: .4byte gBattlescriptCurrInstr\n\
+_0801E9AC: .4byte BattleScript_PSNPrevention\n\
+_0801E9B0: .4byte gBattleCommunication\n\
+_0801E9B4:\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r6, 0x58\n\
+ muls r0, r6\n\
+ mov r2, r9\n\
+ adds r2, 0x4C\n\
+ adds r5, r0, r2\n\
+ ldr r4, [r5]\n\
+ cmp r4, 0\n\
+ bne _0801EA14\n\
+ mov r3, r9\n\
+ adds r1, r0, r3\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x21\n\
+ ldrb r3, [r0]\n\
+ cmp r3, 0x3\n\
+ beq _0801EA0A\n\
+ adds r0, 0x1\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3\n\
+ beq _0801EA0A\n\
+ cmp r3, 0x8\n\
+ beq _0801EA0A\n\
+ cmp r0, 0x8\n\
+ beq _0801EA0A\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x11\n\
+ beq _0801EA14\n\
+ mov r4, r8\n\
+ ldrb r0, [r4]\n\
+ adds r1, r0, 0\n\
+ muls r1, r6\n\
+ adds r1, r2\n\
+ ldr r0, [r1]\n\
+ movs r2, 0x9\n\
+ negs r2, r2\n\
+ ands r0, r2\n\
+ str r0, [r1]\n\
+_0801EA04:\n\
+ movs r0, 0x1\n\
+ mov r10, r0\n\
+ b _0801EA14\n\
+_0801EA0A:\n\
+ ldr r0, _0801EA58 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x8\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_0801EA14:\n\
+ mov r1, r10\n\
+ cmp r1, 0x1\n\
+ beq _0801EA1C\n\
+ b _0801EB3C\n\
+_0801EA1C:\n\
+ ldr r0, _0801EA5C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r0]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801EA60 @ =gStatusFlagsForMoveEffects\n\
+ ldr r0, _0801EA64 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r3, [r0]\n\
+ cmp r3, 0x7\n\
+ bne _0801EA70\n\
+ bl Random\n\
+ ldr r2, _0801EA68 @ =gBattleMons\n\
+ ldr r1, _0801EA6C @ =gEffectBank\n\
+ ldrb r3, [r1]\n\
+ movs r1, 0x58\n\
+ muls r3, r1\n\
+ adds r2, 0x4C\n\
+ adds r3, r2\n\
+ movs r1, 0x3\n\
+ ands r1, r0\n\
+ adds r1, 0x2\n\
+ ldr r0, [r3]\n\
+ orrs r0, r1\n\
+ str r0, [r3]\n\
+ b _0801EA84\n\
+ .align 2, 0\n\
+_0801EA58: .4byte gBattleMoveFlags\n\
+_0801EA5C: .4byte gBattlescriptCurrInstr\n\
+_0801EA60: .4byte gStatusFlagsForMoveEffects\n\
+_0801EA64: .4byte gBattleCommunication\n\
+_0801EA68: .4byte gBattleMons\n\
+_0801EA6C: .4byte gEffectBank\n\
+_0801EA70:\n\
+ ldr r2, _0801EAD4 @ =gBattleMons\n\
+ ldr r0, _0801EAD8 @ =gEffectBank\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r1, r0\n\
+ adds r2, 0x4C\n\
+ adds r1, r2\n\
+ ldr r0, [r1]\n\
+ orrs r0, r3\n\
+ str r0, [r1]\n\
+_0801EA84:\n\
+ ldr r2, _0801EADC @ =gBattlescriptCurrInstr\n\
+ ldr r1, _0801EAE0 @ =gMoveEffectBS_Ptrs\n\
+ ldr r5, _0801EAE4 @ =gBattleCommunication\n\
+ ldrb r0, [r5, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ str r0, [r2]\n\
+ ldr r4, _0801EAE8 @ =gActiveBank\n\
+ ldr r1, _0801EAD8 @ =gEffectBank\n\
+ ldrb r0, [r1]\n\
+ strb r0, [r4]\n\
+ ldrb r1, [r1]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ ldr r1, _0801EAEC @ =gUnknown_02024ACC\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x28\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r2, _0801EAF0 @ =gHitMarker\n\
+ ldr r1, [r2]\n\
+ movs r0, 0x80\n\
+ lsls r0, 6\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801EAF8\n\
+ movs r0, 0x1\n\
+ strb r0, [r5, 0x5]\n\
+ ldr r0, _0801EAF4 @ =0xffffdfff\n\
+ ands r1, r0\n\
+ str r1, [r2]\n\
+ b _0801EAFA\n\
+ .align 2, 0\n\
+_0801EAD4: .4byte gBattleMons\n\
+_0801EAD8: .4byte gEffectBank\n\
+_0801EADC: .4byte gBattlescriptCurrInstr\n\
+_0801EAE0: .4byte gMoveEffectBS_Ptrs\n\
+_0801EAE4: .4byte gBattleCommunication\n\
+_0801EAE8: .4byte gActiveBank\n\
+_0801EAEC: .4byte gUnknown_02024ACC\n\
+_0801EAF0: .4byte gHitMarker\n\
+_0801EAF4: .4byte 0xffffdfff\n\
+_0801EAF8:\n\
+ strb r0, [r5, 0x5]\n\
+_0801EAFA:\n\
+ ldr r0, _0801EB2C @ =gBattleCommunication\n\
+ ldrb r2, [r0, 0x3]\n\
+ adds r7, r0, 0\n\
+ cmp r2, 0x2\n\
+ beq _0801EB14\n\
+ cmp r2, 0x6\n\
+ beq _0801EB14\n\
+ cmp r2, 0x5\n\
+ beq _0801EB14\n\
+ cmp r2, 0x3\n\
+ beq _0801EB14\n\
+ bl _0801F5FA\n\
+_0801EB14:\n\
+ ldr r0, _0801EB30 @ =0x02000000\n\
+ ldrb r1, [r7, 0x3]\n\
+ ldr r2, _0801EB34 @ =0x000160ca\n\
+ adds r0, r2\n\
+ strb r1, [r0]\n\
+ ldr r2, _0801EB38 @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 7\n\
+ bl _0801F4F2\n\
+ .align 2, 0\n\
+_0801EB2C: .4byte gBattleCommunication\n\
+_0801EB30: .4byte 0x02000000\n\
+_0801EB34: .4byte 0x000160ca\n\
+_0801EB38: .4byte gHitMarker\n\
+_0801EB3C:\n\
+ mov r3, r10\n\
+ cmp r3, 0\n\
+ beq _0801EB46\n\
+ bl _0801F5FA\n\
+_0801EB46:\n\
+ bl _0801F5DC\n\
+_0801EB4A:\n\
+ mov r0, r8\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r1, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r1, r0\n\
+ ldr r2, _0801EB84 @ =gStatusFlagsForMoveEffects\n\
+ ldrb r3, [r7, 0x3]\n\
+ lsls r0, r3, 2\n\
+ adds r0, r2\n\
+ ldr r1, [r1]\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _0801EB6E\n\
+ bl _0801F5DC\n\
+_0801EB6E:\n\
+ subs r0, r3, 0x7\n\
+ cmp r0, 0x34\n\
+ bls _0801EB78\n\
+ bl _0801F5FA\n\
+_0801EB78:\n\
+ lsls r0, 2\n\
+ ldr r1, _0801EB88 @ =_0801EB8C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0801EB84: .4byte gStatusFlagsForMoveEffects\n\
+_0801EB88: .4byte _0801EB8C\n\
+ .align 2, 0\n\
+_0801EB8C:\n\
+ .4byte _0801EC60\n\
+ .4byte _0801ECD4\n\
+ .4byte _0801EE4C\n\
+ .4byte _0801ED60\n\
+ .4byte _0801EDDC\n\
+ .4byte _0801EE84\n\
+ .4byte _0801EECC\n\
+ .4byte _0801EFA8\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801EFEC\n\
+ .4byte _0801F040\n\
+ .4byte _0801F040\n\
+ .4byte _0801F040\n\
+ .4byte _0801F040\n\
+ .4byte _0801F040\n\
+ .4byte _0801F040\n\
+ .4byte _0801F040\n\
+ .4byte _0801F13C\n\
+ .4byte _0801F184\n\
+ .4byte _0801F1A4\n\
+ .4byte _0801F364\n\
+ .4byte _0801F3A0\n\
+ .4byte _0801F3BC\n\
+ .4byte _0801F3D4\n\
+ .4byte _0801F3EC\n\
+ .4byte _0801F44C\n\
+ .4byte _0801F464\n\
+ .4byte _0801F094\n\
+ .4byte _0801F094\n\
+ .4byte _0801F094\n\
+ .4byte _0801F094\n\
+ .4byte _0801F094\n\
+ .4byte _0801F094\n\
+ .4byte _0801F094\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F0E8\n\
+ .4byte _0801F4A8\n\
+ .4byte _0801F500\n\
+ .4byte _0801F5FA\n\
+ .4byte _0801F5FA\n\
+ .4byte _0801F5FA\n\
+ .4byte _0801F5FA\n\
+ .4byte _0801F5EC\n\
+_0801EC60:\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ movs r5, 0x58\n\
+ adds r1, r0, 0\n\
+ muls r1, r5\n\
+ mov r2, r9\n\
+ adds r0, r1, r2\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x14\n\
+ bne _0801EC7A\n\
+ bl _0801F5DC\n\
+_0801EC7A:\n\
+ mov r4, r9\n\
+ adds r4, 0x50\n\
+ adds r0, r1, r4\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801EC8E\n\
+ bl _0801F5DC\n\
+_0801EC8E:\n\
+ bl Random\n\
+ mov r3, r8\n\
+ ldrb r1, [r3]\n\
+ adds r2, r1, 0\n\
+ muls r2, r5\n\
+ adds r2, r4\n\
+ lsls r0, 16\n\
+ movs r1, 0xC0\n\
+ lsls r1, 10\n\
+ ands r1, r0\n\
+ lsrs r1, 16\n\
+ adds r1, 0x2\n\
+ ldr r0, [r2]\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ ldr r4, _0801ECC8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801ECCC @ =gMoveEffectBS_Ptrs\n\
+ ldr r0, _0801ECD0 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ bl _0801F5F8\n\
+ .align 2, 0\n\
+_0801ECC8: .4byte gBattlescriptCurrInstr\n\
+_0801ECCC: .4byte gMoveEffectBS_Ptrs\n\
+_0801ECD0: .4byte gBattleCommunication\n\
+_0801ECD4:\n\
+ mov r0, r8\n\
+ ldrb r2, [r0]\n\
+ movs r6, 0x58\n\
+ adds r0, r2, 0\n\
+ muls r0, r6\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r1, [r0]\n\
+ cmp r1, 0x27\n\
+ bne _0801ED18\n\
+ cmp r4, 0x1\n\
+ beq _0801ECF4\n\
+ cmp r5, 0x80\n\
+ beq _0801ECF4\n\
+ bl _0801F5DC\n\
+_0801ECF4:\n\
+ ldr r0, _0801ED0C @ =gLastUsedAbility\n\
+ strb r1, [r0]\n\
+ mov r1, r8\n\
+ ldrb r0, [r1]\n\
+ movs r1, 0x27\n\
+ bl RecordAbilityBattle\n\
+ ldr r1, _0801ED10 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _0801ED14 @ =BattleScript_FlinchPrevention\n\
+ str r0, [r1]\n\
+ bl _0801F5FA\n\
+ .align 2, 0\n\
+_0801ED0C: .4byte gLastUsedAbility\n\
+_0801ED10: .4byte gBattlescriptCurrInstr\n\
+_0801ED14: .4byte BattleScript_FlinchPrevention\n\
+_0801ED18:\n\
+ adds r0, r2, 0\n\
+ bl BankGetTurnOrder\n\
+ ldr r1, _0801ED54 @ =gCurrentMoveTurn\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bhi _0801ED2E\n\
+ bl _0801F5DC\n\
+_0801ED2E:\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ adds r2, r0, 0\n\
+ muls r2, r6\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r2, r0\n\
+ ldr r1, _0801ED58 @ =gStatusFlagsForMoveEffects\n\
+ ldr r0, _0801ED5C @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r1, [r2]\n\
+ ldr r0, [r0]\n\
+ orrs r1, r0\n\
+ str r1, [r2]\n\
+ bl _0801F5DC\n\
+ .align 2, 0\n\
+_0801ED54: .4byte gCurrentMoveTurn\n\
+_0801ED58: .4byte gStatusFlagsForMoveEffects\n\
+_0801ED5C: .4byte gBattleCommunication\n\
+_0801ED60:\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r5, 0x58\n\
+ muls r0, r5\n\
+ mov r4, r9\n\
+ adds r4, 0x50\n\
+ adds r2, r0, r4\n\
+ ldr r1, [r2]\n\
+ movs r0, 0x70\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801ED7C\n\
+ bl _0801F5DC\n\
+_0801ED7C:\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ orrs r1, r0\n\
+ str r1, [r2]\n\
+ ldr r1, _0801EDC8 @ =gLockedMove\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldr r1, _0801EDCC @ =gCurrentMove\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0]\n\
+ bl Random\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ adds r2, r1, 0\n\
+ muls r2, r5\n\
+ adds r2, r4\n\
+ movs r1, 0x3\n\
+ ands r1, r0\n\
+ adds r1, 0x2\n\
+ lsls r1, 4\n\
+ ldr r0, [r2]\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ ldr r4, _0801EDD0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801EDD4 @ =gMoveEffectBS_Ptrs\n\
+ ldr r0, _0801EDD8 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ bl _0801F5F8\n\
+ .align 2, 0\n\
+_0801EDC8: .4byte gLockedMove\n\
+_0801EDCC: .4byte gCurrentMove\n\
+_0801EDD0: .4byte gBattlescriptCurrInstr\n\
+_0801EDD4: .4byte gMoveEffectBS_Ptrs\n\
+_0801EDD8: .4byte gBattleCommunication\n\
+_0801EDDC:\n\
+ ldr r5, _0801EE30 @ =gBankAttacker\n\
+ ldrb r0, [r5]\n\
+ bl GetBankIdentity\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0801EE14\n\
+ ldr r4, _0801EE34 @ =gPaydayMoney\n\
+ ldrh r3, [r4]\n\
+ ldr r2, _0801EE38 @ =gBattleMons\n\
+ ldrb r1, [r5]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r2\n\
+ adds r0, 0x2A\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ adds r0, r3, r0\n\
+ strh r0, [r4]\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r3, r0\n\
+ bls _0801EE14\n\
+ ldr r3, _0801EE3C @ =0x0000ffff\n\
+ adds r0, r3, 0\n\
+ strh r0, [r4]\n\
+_0801EE14:\n\
+ ldr r4, _0801EE40 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801EE44 @ =gMoveEffectBS_Ptrs\n\
+ ldr r0, _0801EE48 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ bl _0801F5F8\n\
+ .align 2, 0\n\
+_0801EE30: .4byte gBankAttacker\n\
+_0801EE34: .4byte gPaydayMoney\n\
+_0801EE38: .4byte gBattleMons\n\
+_0801EE3C: .4byte 0x0000ffff\n\
+_0801EE40: .4byte gBattlescriptCurrInstr\n\
+_0801EE44: .4byte gMoveEffectBS_Ptrs\n\
+_0801EE48: .4byte gBattleCommunication\n\
+_0801EE4C:\n\
+ mov r4, r8\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ mov r1, r9\n\
+ adds r1, 0x4C\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _0801EE62\n\
+ b _0801F5DC\n\
+_0801EE62:\n\
+ bl Random\n\
+ ldr r4, _0801EE80 @ =gBattleCommunication\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x3\n\
+ bl __umodsi3\n\
+ adds r0, 0x3\n\
+ strb r0, [r4, 0x3]\n\
+ movs r0, 0\n\
+ movs r1, 0\n\
+ bl SetMoveEffect\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801EE80: .4byte gBattleCommunication\n\
+_0801EE84:\n\
+ mov r0, r8\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ adds r2, r1, 0\n\
+ muls r2, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r2, r0\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 5\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ ldr r1, _0801EEC0 @ =gLockedMove\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldr r1, _0801EEC4 @ =gCurrentMove\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0]\n\
+ ldr r0, _0801EEC8 @ =gProtectStructs\n\
+ ldrb r1, [r2]\n\
+ lsls r1, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x1]\n\
+ movs r2, 0x4\n\
+ orrs r0, r2\n\
+ strb r0, [r1, 0x1]\n\
+ b _0801F5DC\n\
+ .align 2, 0\n\
+_0801EEC0: .4byte gLockedMove\n\
+_0801EEC4: .4byte gCurrentMove\n\
+_0801EEC8: .4byte gProtectStructs\n\
+_0801EECC:\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r6, 0x58\n\
+ muls r0, r6\n\
+ mov r4, r9\n\
+ adds r4, 0x50\n\
+ adds r0, r4\n\
+ ldr r5, [r0]\n\
+ movs r0, 0xE0\n\
+ lsls r0, 8\n\
+ ands r5, r0\n\
+ cmp r5, 0\n\
+ beq _0801EEE8\n\
+ b _0801F5DC\n\
+_0801EEE8:\n\
+ bl Random\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ adds r2, r1, 0\n\
+ muls r2, r6\n\
+ adds r2, r4\n\
+ movs r1, 0x3\n\
+ ands r1, r0\n\
+ adds r1, 0x3\n\
+ lsls r1, 13\n\
+ ldr r0, [r2]\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ ldr r2, _0801EF80 @ =0x02000000\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ ldr r4, _0801EF84 @ =0x00016004\n\
+ adds r0, r4\n\
+ adds r0, r2\n\
+ ldr r6, _0801EF88 @ =gCurrentMove\n\
+ ldrh r1, [r6]\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ ldr r1, _0801EF8C @ =0x00016005\n\
+ adds r0, r1\n\
+ adds r0, r2\n\
+ ldrh r1, [r6]\n\
+ lsrs r1, 8\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r3]\n\
+ ldr r3, _0801EF90 @ =0x00016020\n\
+ adds r0, r3\n\
+ adds r0, r2\n\
+ ldr r1, _0801EF94 @ =gBankAttacker\n\
+ ldrb r1, [r1]\n\
+ strb r1, [r0]\n\
+ ldr r4, _0801EF98 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801EF9C @ =gMoveEffectBS_Ptrs\n\
+ ldr r2, _0801EFA0 @ =gBattleCommunication\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ str r0, [r4]\n\
+ strb r5, [r2, 0x5]\n\
+ ldr r1, _0801EFA4 @ =gTrappingMoves\n\
+ ldrh r0, [r1]\n\
+ ldrh r4, [r6]\n\
+ cmp r0, r4\n\
+ bne _0801EF5C\n\
+ b _0801F5FA\n\
+_0801EF5C:\n\
+ adds r3, r1, 0\n\
+ adds r1, r6, 0\n\
+_0801EF60:\n\
+ ldrb r0, [r2, 0x5]\n\
+ adds r0, 0x1\n\
+ strb r0, [r2, 0x5]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x4\n\
+ bls _0801EF70\n\
+ b _0801F5FA\n\
+_0801EF70:\n\
+ ldrb r0, [r2, 0x5]\n\
+ lsls r0, 1\n\
+ adds r0, r3\n\
+ ldrh r0, [r0]\n\
+ ldrh r4, [r1]\n\
+ cmp r0, r4\n\
+ bne _0801EF60\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801EF80: .4byte 0x02000000\n\
+_0801EF84: .4byte 0x00016004\n\
+_0801EF88: .4byte gCurrentMove\n\
+_0801EF8C: .4byte 0x00016005\n\
+_0801EF90: .4byte 0x00016020\n\
+_0801EF94: .4byte gBankAttacker\n\
+_0801EF98: .4byte gBattlescriptCurrInstr\n\
+_0801EF9C: .4byte gMoveEffectBS_Ptrs\n\
+_0801EFA0: .4byte gBattleCommunication\n\
+_0801EFA4: .4byte gTrappingMoves\n\
+_0801EFA8:\n\
+ ldr r1, _0801EFD8 @ =gBattleMoveDamage\n\
+ ldr r0, _0801EFDC @ =gHP_dealt\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bge _0801EFB4\n\
+ adds r0, 0x3\n\
+_0801EFB4:\n\
+ asrs r0, 2\n\
+ str r0, [r1]\n\
+ cmp r0, 0\n\
+ bne _0801EFC0\n\
+ movs r0, 0x1\n\
+ str r0, [r1]\n\
+_0801EFC0:\n\
+ ldr r4, _0801EFE0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801EFE4 @ =gMoveEffectBS_Ptrs\n\
+ ldr r0, _0801EFE8 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801EFD8: .4byte gBattleMoveDamage\n\
+_0801EFDC: .4byte gHP_dealt\n\
+_0801EFE0: .4byte gBattlescriptCurrInstr\n\
+_0801EFE4: .4byte gMoveEffectBS_Ptrs\n\
+_0801EFE8: .4byte gBattleCommunication\n\
+_0801EFEC:\n\
+ ldrb r1, [r7, 0x3]\n\
+ adds r1, 0xF2\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ movs r0, 0x10\n\
+ adds r2, r6, 0\n\
+ movs r3, 0\n\
+ bl ChangeStatBuffs\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0\n\
+ beq _0801F008\n\
+ b _0801F5DC\n\
+_0801F008:\n\
+ ldr r2, _0801F02C @ =0x02000000\n\
+ ldrb r1, [r7, 0x3]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ ldr r4, _0801F030 @ =0x000160a4\n\
+ adds r1, r2, r4\n\
+ strb r0, [r1]\n\
+ ldr r0, _0801F034 @ =0x000160a5\n\
+ adds r2, r0\n\
+ strb r3, [r2]\n\
+ ldr r4, _0801F038 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F03C @ =BattleScript_StatUp\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F02C: .4byte 0x02000000\n\
+_0801F030: .4byte 0x000160a4\n\
+_0801F034: .4byte 0x000160a5\n\
+_0801F038: .4byte gBattlescriptCurrInstr\n\
+_0801F03C: .4byte BattleScript_StatUp\n\
+_0801F040:\n\
+ movs r0, 0x70\n\
+ negs r0, r0\n\
+ ldrb r1, [r7, 0x3]\n\
+ adds r1, 0xEB\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r2, r6, 0\n\
+ movs r3, 0\n\
+ bl ChangeStatBuffs\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0\n\
+ beq _0801F05E\n\
+ b _0801F5DC\n\
+_0801F05E:\n\
+ ldr r2, _0801F080 @ =0x02000000\n\
+ ldrb r1, [r7, 0x3]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ ldr r4, _0801F084 @ =0x000160a4\n\
+ adds r1, r2, r4\n\
+ strb r0, [r1]\n\
+ ldr r0, _0801F088 @ =0x000160a5\n\
+ adds r2, r0\n\
+ strb r3, [r2]\n\
+ ldr r4, _0801F08C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F090 @ =BattleScript_StatDown\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F080: .4byte 0x02000000\n\
+_0801F084: .4byte 0x000160a4\n\
+_0801F088: .4byte 0x000160a5\n\
+_0801F08C: .4byte gBattlescriptCurrInstr\n\
+_0801F090: .4byte BattleScript_StatDown\n\
+_0801F094:\n\
+ ldrb r1, [r7, 0x3]\n\
+ adds r1, 0xDA\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ movs r0, 0x20\n\
+ adds r2, r6, 0\n\
+ movs r3, 0\n\
+ bl ChangeStatBuffs\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0\n\
+ beq _0801F0B0\n\
+ b _0801F5DC\n\
+_0801F0B0:\n\
+ ldr r2, _0801F0D4 @ =0x02000000\n\
+ ldrb r1, [r7, 0x3]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ ldr r4, _0801F0D8 @ =0x000160a4\n\
+ adds r1, r2, r4\n\
+ strb r0, [r1]\n\
+ ldr r0, _0801F0DC @ =0x000160a5\n\
+ adds r2, r0\n\
+ strb r3, [r2]\n\
+ ldr r4, _0801F0E0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F0E4 @ =BattleScript_StatUp\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F0D4: .4byte 0x02000000\n\
+_0801F0D8: .4byte 0x000160a4\n\
+_0801F0DC: .4byte 0x000160a5\n\
+_0801F0E0: .4byte gBattlescriptCurrInstr\n\
+_0801F0E4: .4byte BattleScript_StatUp\n\
+_0801F0E8:\n\
+ movs r0, 0x60\n\
+ negs r0, r0\n\
+ ldrb r1, [r7, 0x3]\n\
+ adds r1, 0xD3\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r2, r6, 0\n\
+ movs r3, 0\n\
+ bl ChangeStatBuffs\n\
+ lsls r0, 24\n\
+ lsrs r3, r0, 24\n\
+ cmp r3, 0\n\
+ beq _0801F106\n\
+ b _0801F5DC\n\
+_0801F106:\n\
+ ldr r2, _0801F128 @ =0x02000000\n\
+ ldrb r1, [r7, 0x3]\n\
+ movs r0, 0x3F\n\
+ ands r0, r1\n\
+ ldr r4, _0801F12C @ =0x000160a4\n\
+ adds r1, r2, r4\n\
+ strb r0, [r1]\n\
+ ldr r0, _0801F130 @ =0x000160a5\n\
+ adds r2, r0\n\
+ strb r3, [r2]\n\
+ ldr r4, _0801F134 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F138 @ =BattleScript_StatDown\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F128: .4byte 0x02000000\n\
+_0801F12C: .4byte 0x000160a4\n\
+_0801F130: .4byte 0x000160a5\n\
+_0801F134: .4byte gBattlescriptCurrInstr\n\
+_0801F138: .4byte BattleScript_StatDown\n\
+_0801F13C:\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0x58\n\
+ adds r2, r1, 0\n\
+ muls r2, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r2, r0\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 15\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ ldr r2, _0801F178 @ =gDisableStructs\n\
+ mov r3, r8\n\
+ ldrb r1, [r3]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ movs r1, 0x2\n\
+ strb r1, [r0, 0x19]\n\
+ ldr r1, _0801F17C @ =gLockedMove\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldr r1, _0801F180 @ =gCurrentMove\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0]\n\
+ b _0801F5DC\n\
+ .align 2, 0\n\
+_0801F178: .4byte gDisableStructs\n\
+_0801F17C: .4byte gLockedMove\n\
+_0801F180: .4byte gCurrentMove\n\
+_0801F184:\n\
+ ldr r0, _0801F1A0 @ =gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ adds r2, r1, 0\n\
+ muls r2, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r2, r0\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 16\n\
+_0801F19A:\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ b _0801F5DC\n\
+ .align 2, 0\n\
+_0801F1A0: .4byte gBankAttacker\n\
+_0801F1A4:\n\
+ ldr r4, _0801F254 @ =gBankAttacker\n\
+ ldrb r0, [r4]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ ldrb r0, [r4]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0801F1D8\n\
+ ldr r0, _0801F258 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0801F25C @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801F214\n\
+ ldr r0, _0801F260 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0801F1D8\n\
+ b _0801F5DC\n\
+_0801F1D8:\n\
+ ldr r0, _0801F258 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0801F25C @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0801F214\n\
+ ldr r0, _0801F260 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0801F214\n\
+ ldr r0, _0801F264 @ =gWishFutureKnock\n\
+ adds r0, 0x29\n\
+ adds r0, r6, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r3, _0801F268 @ =gBitTable\n\
+ ldr r2, _0801F26C @ =gBattlePartyID\n\
+ ldr r0, _0801F254 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _0801F214\n\
+ b _0801F5DC\n\
+_0801F214:\n\
+ ldr r2, _0801F270 @ =gBattleMons\n\
+ ldr r1, _0801F274 @ =gBankTarget\n\
+ ldrb r0, [r1]\n\
+ movs r3, 0x58\n\
+ muls r0, r3\n\
+ adds r4, r0, r2\n\
+ ldrh r0, [r4, 0x2E]\n\
+ adds r7, r1, 0\n\
+ mov r9, r2\n\
+ cmp r0, 0\n\
+ beq _0801F284\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3C\n\
+ bne _0801F284\n\
+ ldr r1, _0801F278 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _0801F27C @ =BattleScript_NoItemSteal\n\
+ str r0, [r1]\n\
+ ldr r1, _0801F280 @ =gLastUsedAbility\n\
+ ldrb r0, [r7]\n\
+ muls r0, r3\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ ldrb r1, [r1]\n\
+ bl RecordAbilityBattle\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801F254: .4byte gBankAttacker\n\
+_0801F258: .4byte gBattleTypeFlags\n\
+_0801F25C: .4byte 0x00000902\n\
+_0801F260: .4byte gTrainerBattleOpponent\n\
+_0801F264: .4byte gWishFutureKnock\n\
+_0801F268: .4byte gBitTable\n\
+_0801F26C: .4byte gBattlePartyID\n\
+_0801F270: .4byte gBattleMons\n\
+_0801F274: .4byte gBankTarget\n\
+_0801F278: .4byte gBattlescriptCurrInstr\n\
+_0801F27C: .4byte BattleScript_NoItemSteal\n\
+_0801F280: .4byte gLastUsedAbility\n\
+_0801F284:\n\
+ ldr r4, _0801F340 @ =gBankAttacker\n\
+ mov r10, r4\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x58\n\
+ mov r8, r0\n\
+ mov r0, r8\n\
+ muls r0, r1\n\
+ add r0, r9\n\
+ ldrh r3, [r0, 0x2E]\n\
+ cmp r3, 0\n\
+ beq _0801F29C\n\
+ b _0801F5DC\n\
+_0801F29C:\n\
+ ldrb r0, [r7]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ add r0, r9\n\
+ ldrh r2, [r0, 0x2E]\n\
+ adds r0, r2, 0\n\
+ cmp r0, 0xAF\n\
+ bne _0801F2B0\n\
+ b _0801F5DC\n\
+_0801F2B0:\n\
+ cmp r0, 0\n\
+ bne _0801F2B6\n\
+ b _0801F5DC\n\
+_0801F2B6:\n\
+ lsls r0, r1, 1\n\
+ ldr r5, _0801F344 @ =0x020160f0\n\
+ adds r0, r5\n\
+ ldr r1, _0801F348 @ =gLastUsedItem\n\
+ strh r2, [r0]\n\
+ strh r2, [r1]\n\
+ ldrb r0, [r7]\n\
+ mov r4, r8\n\
+ muls r4, r0\n\
+ adds r0, r4, 0\n\
+ add r0, r9\n\
+ movs r6, 0\n\
+ strh r3, [r0, 0x2E]\n\
+ ldr r4, _0801F34C @ =gActiveBank\n\
+ mov r2, r10\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r4]\n\
+ str r1, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ movs r2, 0\n\
+ movs r3, 0x2\n\
+ bl EmitSetAttributes\n\
+ mov r3, r10\n\
+ ldrb r0, [r3]\n\
+ bl MarkBufferBankForExecution\n\
+ ldrb r0, [r7]\n\
+ strb r0, [r4]\n\
+ ldrb r0, [r7]\n\
+ mov r4, r8\n\
+ muls r4, r0\n\
+ adds r0, r4, 0\n\
+ mov r1, r9\n\
+ adds r1, 0x2E\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ movs r2, 0\n\
+ movs r3, 0x2\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r7]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r4, _0801F350 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F354 @ =BattleScript_ItemSteal\n\
+ str r0, [r4]\n\
+ ldr r0, _0801F358 @ =0xfffe9f10\n\
+ adds r5, r0\n\
+ ldrb r0, [r7]\n\
+ lsls r0, 1\n\
+ ldr r1, _0801F35C @ =0x000160e8\n\
+ adds r0, r1\n\
+ adds r0, r5\n\
+ strb r6, [r0]\n\
+ ldrb r0, [r7]\n\
+ lsls r0, 1\n\
+ ldr r2, _0801F360 @ =0x000160e9\n\
+ adds r0, r2\n\
+ adds r0, r5\n\
+ strb r6, [r0]\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801F340: .4byte gBankAttacker\n\
+_0801F344: .4byte 0x020160f0\n\
+_0801F348: .4byte gLastUsedItem\n\
+_0801F34C: .4byte gActiveBank\n\
+_0801F350: .4byte gBattlescriptCurrInstr\n\
+_0801F354: .4byte BattleScript_ItemSteal\n\
+_0801F358: .4byte 0xfffe9f10\n\
+_0801F35C: .4byte 0x000160e8\n\
+_0801F360: .4byte 0x000160e9\n\
+_0801F364:\n\
+ ldr r3, _0801F394 @ =gBankTarget\n\
+ ldrb r1, [r3]\n\
+ movs r0, 0x58\n\
+ adds r2, r1, 0\n\
+ muls r2, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r2, r0\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 19\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ ldr r2, _0801F398 @ =gDisableStructs\n\
+ ldrb r1, [r3]\n\
+ lsls r0, r1, 3\n\
+ subs r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldr r1, _0801F39C @ =gBankAttacker\n\
+ ldrb r1, [r1]\n\
+ strb r1, [r0, 0x14]\n\
+ b _0801F5DC\n\
+ .align 2, 0\n\
+_0801F394: .4byte gBankTarget\n\
+_0801F398: .4byte gDisableStructs\n\
+_0801F39C: .4byte gBankAttacker\n\
+_0801F3A0:\n\
+ ldr r0, _0801F3B8 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ adds r2, r1, 0\n\
+ muls r2, r0\n\
+ mov r0, r9\n\
+ adds r0, 0x50\n\
+ adds r2, r0\n\
+ ldr r0, [r2]\n\
+ movs r1, 0x80\n\
+ lsls r1, 20\n\
+ b _0801F19A\n\
+ .align 2, 0\n\
+_0801F3B8: .4byte gBankTarget\n\
+_0801F3BC:\n\
+ ldr r4, _0801F3CC @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F3D0 @ =BattleScript_AllStatsUp\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F3CC: .4byte gBattlescriptCurrInstr\n\
+_0801F3D0: .4byte BattleScript_AllStatsUp\n\
+_0801F3D4:\n\
+ ldr r4, _0801F3E4 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F3E8 @ =BattleScript_RapidSpinAway\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F3E4: .4byte gBattlescriptCurrInstr\n\
+_0801F3E8: .4byte BattleScript_RapidSpinAway\n\
+_0801F3EC:\n\
+ ldr r6, _0801F43C @ =gBankTarget\n\
+ ldrb r0, [r6]\n\
+ movs r2, 0x58\n\
+ muls r0, r2\n\
+ mov r1, r9\n\
+ adds r1, 0x4C\n\
+ adds r5, r0, r1\n\
+ ldr r4, [r5]\n\
+ movs r0, 0x40\n\
+ ands r0, r4\n\
+ cmp r0, 0\n\
+ bne _0801F406\n\
+ b _0801F5DC\n\
+_0801F406:\n\
+ movs r0, 0x41\n\
+ negs r0, r0\n\
+ ands r4, r0\n\
+ str r4, [r5]\n\
+ ldr r4, _0801F440 @ =gActiveBank\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r4]\n\
+ ldrb r0, [r4]\n\
+ muls r0, r2\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x28\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r4, _0801F444 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F448 @ =BattleScript_TargetPRLZHeal\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F43C: .4byte gBankTarget\n\
+_0801F440: .4byte gActiveBank\n\
+_0801F444: .4byte gBattlescriptCurrInstr\n\
+_0801F448: .4byte BattleScript_TargetPRLZHeal\n\
+_0801F44C:\n\
+ ldr r4, _0801F45C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F460 @ =BattleScript_AtkDefDown\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F45C: .4byte gBattlescriptCurrInstr\n\
+_0801F460: .4byte BattleScript_AtkDefDown\n\
+_0801F464:\n\
+ ldr r4, _0801F494 @ =gBattleMoveDamage\n\
+ ldr r0, _0801F498 @ =gHP_dealt\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x3\n\
+ bl __divsi3\n\
+ str r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _0801F47A\n\
+ movs r0, 0x1\n\
+ str r0, [r4]\n\
+_0801F47A:\n\
+ ldr r4, _0801F49C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _0801F4A0 @ =gMoveEffectBS_Ptrs\n\
+ ldr r0, _0801F4A4 @ =gBattleCommunication\n\
+ ldrb r0, [r0, 0x3]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ b _0801F5F8\n\
+ .align 2, 0\n\
+_0801F494: .4byte gBattleMoveDamage\n\
+_0801F498: .4byte gHP_dealt\n\
+_0801F49C: .4byte gBattlescriptCurrInstr\n\
+_0801F4A0: .4byte gMoveEffectBS_Ptrs\n\
+_0801F4A4: .4byte gBattleCommunication\n\
+_0801F4A8:\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ movs r5, 0x58\n\
+ muls r0, r5\n\
+ mov r4, r9\n\
+ adds r4, 0x50\n\
+ adds r2, r0, r4\n\
+ ldr r1, [r2]\n\
+ movs r0, 0xC0\n\
+ lsls r0, 4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0801F4C4\n\
+ b _0801F5DC\n\
+_0801F4C4:\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ orrs r1, r0\n\
+ str r1, [r2]\n\
+ ldr r1, _0801F4F8 @ =gLockedMove\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldr r1, _0801F4FC @ =gCurrentMove\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0]\n\
+ bl Random\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ adds r2, r1, 0\n\
+ muls r2, r5\n\
+ adds r2, r4\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ adds r1, 0x2\n\
+ lsls r1, 10\n\
+ ldr r0, [r2]\n\
+_0801F4F2:\n\
+ orrs r0, r1\n\
+ str r0, [r2]\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801F4F8: .4byte gLockedMove\n\
+_0801F4FC: .4byte gCurrentMove\n\
+_0801F500:\n\
+ mov r5, r8\n\
+ ldrb r3, [r5]\n\
+ movs r4, 0x58\n\
+ adds r0, r3, 0\n\
+ muls r0, r4\n\
+ mov r2, r9\n\
+ adds r1, r0, r2\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x20\n\
+ ldrb r2, [r0]\n\
+ cmp r2, 0x3C\n\
+ bne _0801F540\n\
+ ldrh r0, [r1, 0x2E]\n\
+ cmp r0, 0\n\
+ beq _0801F5DC\n\
+ ldr r0, _0801F534 @ =gLastUsedAbility\n\
+ strb r2, [r0]\n\
+ ldr r1, _0801F538 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _0801F53C @ =BattleScript_NoItemSteal\n\
+ str r0, [r1]\n\
+ ldrb r0, [r5]\n\
+ movs r1, 0x3C\n\
+ bl RecordAbilityBattle\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801F534: .4byte gLastUsedAbility\n\
+_0801F538: .4byte gBattlescriptCurrInstr\n\
+_0801F53C: .4byte BattleScript_NoItemSteal\n\
+_0801F540:\n\
+ ldrh r0, [r1, 0x2E]\n\
+ cmp r0, 0\n\
+ beq _0801F5DC\n\
+ adds r0, r3, 0\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ ldr r1, _0801F5B8 @ =gLastUsedItem\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ muls r0, r4\n\
+ add r0, r9\n\
+ ldrh r0, [r0, 0x2E]\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ muls r0, r4\n\
+ add r0, r9\n\
+ movs r5, 0\n\
+ movs r1, 0\n\
+ strh r1, [r0, 0x2E]\n\
+ ldr r2, _0801F5BC @ =gWishFutureKnock\n\
+ adds r2, 0x29\n\
+ adds r2, r6, r2\n\
+ ldr r3, _0801F5C0 @ =gBitTable\n\
+ ldr r1, _0801F5C4 @ =gBattlePartyID\n\
+ mov r4, r8\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r4, _0801F5C8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F5CC @ =BattleScript_KnockedOff\n\
+ str r0, [r4]\n\
+ ldr r1, _0801F5D0 @ =0x02000000\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 1\n\
+ ldr r3, _0801F5D4 @ =0x000160e8\n\
+ adds r0, r3\n\
+ adds r0, r1\n\
+ strb r5, [r0]\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 1\n\
+ ldr r4, _0801F5D8 @ =0x000160e9\n\
+ adds r0, r4\n\
+ adds r0, r1\n\
+ strb r5, [r0]\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801F5B8: .4byte gLastUsedItem\n\
+_0801F5BC: .4byte gWishFutureKnock\n\
+_0801F5C0: .4byte gBitTable\n\
+_0801F5C4: .4byte gBattlePartyID\n\
+_0801F5C8: .4byte gBattlescriptCurrInstr\n\
+_0801F5CC: .4byte BattleScript_KnockedOff\n\
+_0801F5D0: .4byte 0x02000000\n\
+_0801F5D4: .4byte 0x000160e8\n\
+_0801F5D8: .4byte 0x000160e9\n\
+_0801F5DC:\n\
+ ldr r1, _0801F5E8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x1\n\
+ str r0, [r1]\n\
+ b _0801F5FA\n\
+ .align 2, 0\n\
+_0801F5E8: .4byte gBattlescriptCurrInstr\n\
+_0801F5EC:\n\
+ ldr r4, _0801F60C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x1\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _0801F610 @ =BattleScript_SAtkDown2\n\
+_0801F5F8:\n\
+ str r0, [r4]\n\
+_0801F5FA:\n\
+ add sp, 0x8\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\
+_0801F60C: .4byte gBattlescriptCurrInstr\n\
+_0801F610: .4byte BattleScript_SAtkDown2\n\
+ .syntax divided\n");
+}
+#endif // NONMATCHING
+
+
+static void atk15_seteffectwithchancetarget(void)
+{
+ u32 PercentChance;
+ if (gBattleMons[gBankAttacker].ability == ABILITY_SERENE_GRACE)
+ PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance * 2;
+ else
+ PercentChance = gBattleMoves[gCurrentMove].secondaryEffectChance;
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] & 0x80 && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ gBattleCommunication[MOVE_EFFECT_BYTE] &= 0x7F;
+ SetMoveEffect(0, 0x80);
+ }
+ else if (Random() % 100 <= PercentChance && gBattleCommunication[MOVE_EFFECT_BYTE] && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ if (PercentChance >= 100)
+ SetMoveEffect(0, 0x80);
+ else
+ SetMoveEffect(0, 0);
+ }
+ else
+ gBattlescriptCurrInstr++;
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
+ BATTLE_STRUCT->unk16112 = 0;
+}
+
+static void atk16_seteffectprimary(void)
+{
+ SetMoveEffect(1, 0);
+}
+
+static void atk17_seteffectsecondary(void)
+{
+ SetMoveEffect(0, 0);
+}
+
+static void atk18_status_effect_clear(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (gBattleCommunication[MOVE_EFFECT_BYTE] <= 6)
+ gBattleMons[gActiveBank].status1 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
+ else
+ gBattleMons[gActiveBank].status2 &= (~gStatusFlagsForMoveEffects[gBattleCommunication[MOVE_EFFECT_BYTE]]);
+
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
+ gBattlescriptCurrInstr += 2;
+ BATTLE_STRUCT->unk16112 = 0;
+}
+
+static void atk19_faint_pokemon(void)
+{
+ 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)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ Emitcmd10(0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+static void atk1B_faint_effects_clear(void)
+{
+ //Clears things like attraction or trapping to other banks
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ gBattleMons[gActiveBank].status1 = 0;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 0x4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ UndoEffectsAfterFainting();
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+static void atk1C_jumpifstatus(void)
+{
+ u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
+ void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
+ if (gBattleMons[bank].status1 & flags && gBattleMons[bank].hp)
+ gBattlescriptCurrInstr = jump_loc;
+ else
+ gBattlescriptCurrInstr += 10;
+}
+
+static void atk1D_jumpifstatus2(void)
+{
+ u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ u32 flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
+ void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 6);
+ if (gBattleMons[bank].status2 & flags && gBattleMons[bank].hp)
+ gBattlescriptCurrInstr = jump_loc;
+ else
+ gBattlescriptCurrInstr += 10;
+}
+
+static void atk1E_jumpifability(void)
+{
+ u8 bank;
+ u8 ability = BSScriptRead8(gBattlescriptCurrInstr + 2);
+ void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 8)
+ {
+ bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_BANK_SIDE, gBankAttacker, ability, 0, 0);
+ if (bank)
+ {
+ gLastUsedAbility = ability;
+ gBattlescriptCurrInstr = jump_loc;
+ RecordAbilityBattle(bank -1, gLastUsedAbility);
+ unk_2000000[0x160f8] = bank - 1;
+ }
+ else
+ gBattlescriptCurrInstr += 7;
+ }
+ else if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 9)
+ {
+ bank = AbilityBattleEffects(ABILITYEFFECT_CHECK_OTHER_SIDE, gBankAttacker, ability, 0, 0);
+ if (bank)
+ {
+ gLastUsedAbility = ability;
+ gBattlescriptCurrInstr = jump_loc;
+ RecordAbilityBattle(bank - 1, gLastUsedAbility);
+ unk_2000000[0x160f8] = bank - 1;
+ }
+ else
+ gBattlescriptCurrInstr += 7;
+ }
+ else
+ {
+ bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (gBattleMons[bank].ability == ability)
+ {
+ gLastUsedAbility = ability;
+ gBattlescriptCurrInstr = jump_loc;
+ RecordAbilityBattle(bank, gLastUsedAbility);
+ unk_2000000[0x160f8] = bank;
+ }
+ else
+ gBattlescriptCurrInstr += 7;
+ }
+}
+
+static void atk1F_jumpifsideaffecting(void)
+{
+ u8 side;
+ u16 flags;
+ void* jump_loc;
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 1)
+ side = GetBankIdentity(gBankAttacker) & 1;
+ else
+ side = GetBankIdentity(gBankTarget) & 1;
+
+ flags = BS2ScriptRead16(gBattlescriptCurrInstr + 2);
+ jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 4);
+
+ if (gSideAffecting[side] & flags)
+ gBattlescriptCurrInstr = jump_loc;
+ else
+ gBattlescriptCurrInstr += 8;
+}
+
+static void atk20_jumpifstat(void)
+{
+ u8 ret = 0;
+ u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ u8 value = gBattleMons[bank].statStages[BSScriptRead8(gBattlescriptCurrInstr + 3)];
+ switch (BSScriptRead8(gBattlescriptCurrInstr + 2))
+ {
+ case CMP_EQUAL:
+ if (value == BSScriptRead8(gBattlescriptCurrInstr + 4))
+ ret++;
+ break;
+ case CMP_NOT_EQUAL:
+ if (value != BSScriptRead8(gBattlescriptCurrInstr + 4))
+ ret++;
+ break;
+ case CMP_GREATER_THAN:
+ if (value > BSScriptRead8(gBattlescriptCurrInstr + 4))
+ ret++;
+ break;
+ case CMP_LESS_THAN:
+ if (value < BSScriptRead8(gBattlescriptCurrInstr + 4))
+ ret++;
+ break;
+ case CMP_COMMON_BITS:
+ if (value & BSScriptRead8(gBattlescriptCurrInstr + 4))
+ ret++;
+ break;
+ case CMP_NO_COMMON_BITS:
+ if (!(value & BSScriptRead8(gBattlescriptCurrInstr + 4)))
+ ret++;
+ break;
+ }
+ if (ret)
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ else
+ gBattlescriptCurrInstr += 9;
+}
+
+static void atk21_jumpifstatus3(void)
+{
+ u32 flags;
+ void* jump_loc;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ flags = BS2ScriptRead32(gBattlescriptCurrInstr + 2);
+ jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7);
+ if (BSScriptRead8(gBattlescriptCurrInstr + 6))
+ {
+ if ((gStatuses3[gActiveBank] & flags) != 0)
+ gBattlescriptCurrInstr += 11;
+ else
+ gBattlescriptCurrInstr = jump_loc;
+ }
+ else
+ {
+ if ((gStatuses3[gActiveBank] & flags) != 0)
+ gBattlescriptCurrInstr = jump_loc;
+ else
+ gBattlescriptCurrInstr += 11;
+ }
+}
+
+static void atk22_jumpiftype(void) //u8 bank, u8 type, *ptr
+{
+ u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ u8 type = BSScriptRead8(gBattlescriptCurrInstr + 2);
+ void* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 3);
+
+ if (gBattleMons[bank].type1 == type || gBattleMons[bank].type2 == type)
+ gBattlescriptCurrInstr = jump_loc;
+ else
+ gBattlescriptCurrInstr += 7;
+}
+
+//here we go again...
+#ifdef NONMATCHING
+static void atk23_getexp(void)
+{
+ u8 hold_effect;
+ int via_expshare = 0, sent_in;
+ u16* exp = &BATTLE_STRUCT->exp;
+ gBank1 = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ sent_in = gSentPokesToOpponent[(gBank1 & 2) >> 1];
+ switch (BATTLE_STRUCT->atk23StateTracker)
+ {
+ case 0: //check if should receive exp at all
+ if (GetBankSide(gBank1) != 1 || (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_SAFARI | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
+ BATTLE_STRUCT->atk23StateTracker = 6; //goto last case
+ else
+ {
+ BATTLE_STRUCT->atk23StateTracker++;
+ ((u8*)ewram)[0x16113] |= gBitTable[gBattlePartyID[gBank1]];
+ }
+ break;
+ case 1: //calculate experience points to redistribute
+ {
+ int via_sent_in = 0;
+ u16 calculatedExp;
+ int i;
+ for (i = 0; i < 6; i++)
+ {
+ u16 item;
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) == 0 || GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
+ continue;
+ if (gBitTable[i] & sent_in)
+ via_sent_in++;
+
+ item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ if (item == ITEM_ENIGMA_BERRY)
+ hold_effect = gSaveBlock1.enigmaBerry.holdEffect;
+ else
+ hold_effect = ItemId_GetHoldEffect(item);
+
+ if (hold_effect == HOLD_EFFECT_EXP_SHARE)
+ via_expshare++;
+ }
+ calculatedExp = gBaseStats[gBattleMons[gBank1].species].expYield * gBattleMons[gBank1].level / 7;
+ if (via_expshare) //at least one poke is getting exp via exp share
+ {
+ calculatedExp /= 2;
+ *exp = calculatedExp / via_sent_in;
+ if (*exp == 0)
+ *exp = 1;
+
+ gExpShareExp = calculatedExp / via_expshare;
+ if (gExpShareExp == 0)
+ gExpShareExp = 1;
+ }
+ else
+ {
+ *exp = calculatedExp / via_sent_in;
+ if (*exp == 0)
+ *exp = 1;
+ gExpShareExp = 0;
+ }
+ BATTLE_STRUCT->atk23StateTracker++;
+ BATTLE_STRUCT->expGetterID = 0;
+ BATTLE_STRUCT->sentInPokes = sent_in;
+ } //no break statement
+ case 2: //loop; set exp value to the poke in expgetter_id and print message
+ if (gBattleExecBuffer == 0)
+ {
+ u16 item = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HELD_ITEM);
+ u8* tracker; u32 zero;
+ if (item == ITEM_ENIGMA_BERRY)
+ hold_effect = gSaveBlock1.enigmaBerry.holdEffect;
+ else
+ hold_effect = ItemId_GetHoldEffect(item);
+
+ if ((hold_effect != HOLD_EFFECT_EXP_SHARE && !(BATTLE_STRUCT->sentInPokes & 1)))
+ {
+ BATTLE_STRUCT->sentInPokes >>= 1;
+ tracker = &BATTLE_STRUCT->atk23StateTracker;
+ zero = 0;
+ *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;
+ *tracker = 5; //increment looper
+ gBattleMoveDamage = zero; //used for exp
+ }
+ else
+ {
+ //music change in wild battle after fainting a poke
+ if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !BATTLE_STRUCT->wildVictorySong)
+ {
+ BattleMusicStop();
+ PlayBGM(0x161);
+ BATTLE_STRUCT->wildVictorySong++;
+ }
+
+ if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP))
+ {
+ s16 stringID;
+ if (BATTLE_STRUCT->sentInPokes & 1)
+ gBattleMoveDamage = *exp;
+ else
+ gBattleMoveDamage = 0;
+
+ if (hold_effect == HOLD_EFFECT_EXP_SHARE)
+ gBattleMoveDamage += gExpShareExp;
+ if (hold_effect == HOLD_EFFECT_LUCKY_EGG)
+ gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
+
+ if (IsTradedMon(&gPlayerParty[BATTLE_STRUCT->expGetterID]))
+ {
+ gBattleMoveDamage = (gBattleMoveDamage * 150) / 100;
+ stringID = 0x14A;
+ }
+ else
+ {
+ stringID = 0x149;
+ }
+
+ //get exp getter bank
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (!(gBattlePartyID[2] != BATTLE_STRUCT->expGetterID) && !(gAbsentBankFlags & gBitTable[2]))
+ BATTLE_STRUCT->expGetterBank = 2;
+ else
+ {
+ if (!(gAbsentBankFlags & gBitTable[0]))
+ BATTLE_STRUCT->expGetterBank = 0;
+ else
+ BATTLE_STRUCT->expGetterBank = 2;
+ }
+ }
+ else
+ BATTLE_STRUCT->expGetterBank = 0;
+
+ //buffer poke name
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 4;
+ gBattleTextBuff1[2] = BATTLE_STRUCT->expGetterBank;
+ gBattleTextBuff1[3] = BATTLE_STRUCT->expGetterID;
+ gBattleTextBuff1[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;
+ gBattleTextBuff3[1] = 1;
+ gBattleTextBuff3[2] = 4; //word
+ gBattleTextBuff3[3] = 5; //max digits
+ gBattleTextBuff3[4] = gBattleMoveDamage;
+ gBattleTextBuff3[5] = sBYTE1_32(gBattleMoveDamage);
+ gBattleTextBuff3[6] = sBYTE2_32(gBattleMoveDamage);
+ gBattleTextBuff3[7] = sBYTE3_32(gBattleMoveDamage);
+ gBattleTextBuff3[8] = 0xFF;
+
+ PrepareStringBattle(0xD, BATTLE_STRUCT->expGetterBank);
+ MonGainEVs(&gPlayerParty[BATTLE_STRUCT->expGetterID], gBattleMons[gBank1].species);
+ }
+ BATTLE_STRUCT->sentInPokes >>= 1;
+ BATTLE_STRUCT->atk23StateTracker++;
+ }
+ }
+ break;
+ case 3: //Set Stats and give exp
+ if (gBattleExecBuffer == 0)
+ {
+ gBattleBufferB[BATTLE_STRUCT->expGetterBank][0] = 0;
+ if (GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP) && GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL) != 100)
+ {
+ // 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);
+ BATTLE_STRUCT->beforeLvlUp[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK);
+ BATTLE_STRUCT->beforeLvlUp[5] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF);
+
+ gActiveBank = BATTLE_STRUCT->expGetterBank;
+ EmitExpBarUpdate(0, BATTLE_STRUCT->expGetterID, gBattleMoveDamage);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ BATTLE_STRUCT->atk23StateTracker++;
+ }
+ break;
+ case 4: //lvl up if necessary
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = BATTLE_STRUCT->expGetterBank;
+ if (gBattleBufferB[gActiveBank][0] == 0x21 && gBattleBufferB[gActiveBank][1] == 0xB)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID)
+ sub_80324F8(&gPlayerParty[gActiveBank], gActiveBank);
+
+ //buff poke name
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 4;
+ gBattleTextBuff1[2] = gActiveBank;
+ gBattleTextBuff1[3] = BATTLE_STRUCT->expGetterID;
+ gBattleTextBuff1[4] = 0xFF;
+
+ //buff level
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 1;
+ gBattleTextBuff2[2] = 1;
+ gBattleTextBuff2[3] = 3;
+ gBattleTextBuff2[4] = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL);
+ gBattleTextBuff2[5] = 0xFF;
+
+ b_movescr_stack_push_cursor();
+ gLeveledUpInBattle |= gBitTable[BATTLE_STRUCT->expGetterID];
+ gBattlescriptCurrInstr = BattleScript_LevelUp;
+ gBattleMoveDamage = (gBattleBufferB[gActiveBank][2] | (gBattleBufferB[gActiveBank][3] << 8));
+ AdjustFriendship(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0);
+
+ //update battle mon structure after level up
+ if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID && gBattleMons[0].hp)
+ {
+ gBattleMons[0].level = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL);
+ gBattleMons[0].hp = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP);
+ gBattleMons[0].maxHP = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP);
+ gBattleMons[0].attack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK);
+ gBattleMons[0].defense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF);
+ gBattleMons[0].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD);
+ gBattleMons[0].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK);
+ gBattleMons[0].spDefense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPDEF);
+ }
+ //What is else if? Guess it's too advanced for GameFreak
+ if (gBattlePartyID[2] == BATTLE_STRUCT->expGetterID && gBattleMons[2].hp && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gBattleMons[2].level = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_LEVEL);
+ gBattleMons[2].hp = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_HP);
+ gBattleMons[2].maxHP = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MAX_HP);
+ gBattleMons[2].attack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_ATK);
+ gBattleMons[2].defense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_DEF);
+ //There are no words...GF can't even copy&paste code properly
+ gBattleMons[2].speed = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD);
+ gBattleMons[2].spAttack = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPD /*RIP*/);
+ gBattleMons[2].spDefense = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_SPATK);
+ }
+ BATTLE_STRUCT->atk23StateTracker = 5;
+ }
+ else
+ {
+ gBattleMoveDamage = 0;
+ BATTLE_STRUCT->atk23StateTracker = 5;
+ }
+ }
+ break;
+ case 5: //looper increment
+ if (gBattleMoveDamage) //there is exp to give, goto case 3 that gives exp
+ BATTLE_STRUCT->atk23StateTracker = 3;
+ else
+ {
+ if (++BATTLE_STRUCT->expGetterID <= 5)
+ BATTLE_STRUCT->atk23StateTracker = 2; //loop again
+ else
+ BATTLE_STRUCT->atk23StateTracker = 6; //we're done
+ }
+ break;
+ case 6: //increment instruction
+ if (gBattleExecBuffer == 0)
+ {
+ //not even sure why gamefreak clears that data in this place
+ gBattleMons[gBank1].item = 0;
+ gBattleMons[gBank1].ability = 0;
+ gBattlescriptCurrInstr += 2;
+ }
+ break;
+ }
+}
+#else
+__attribute__((naked))
+static void atk23_getexp(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\
+ movs r6, 0\n\
+ ldr r0, _0802004C @ =0x0201605c\n\
+ mov r10, r0\n\
+ ldr r0, _08020050 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x1]\n\
+ bl GetBattleBank\n\
+ ldr r1, _08020054 @ =gBank1\n\
+ strb r0, [r1]\n\
+ ldr r2, _08020058 @ =gSentPokesToOpponent\n\
+ movs r1, 0x2\n\
+ ands r1, r0\n\
+ lsls r1, 24\n\
+ lsrs r1, 25\n\
+ adds r1, r2\n\
+ ldrb r1, [r1]\n\
+ mov r8, r1\n\
+ mov r0, r10\n\
+ subs r0, 0x4D\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x6\n\
+ bls _08020040\n\
+ bl _08020996\n\
+_08020040:\n\
+ lsls r0, 2\n\
+ ldr r1, _0802005C @ =_08020060\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0802004C: .4byte 0x0201605c\n\
+_08020050: .4byte gBattlescriptCurrInstr\n\
+_08020054: .4byte gBank1\n\
+_08020058: .4byte gSentPokesToOpponent\n\
+_0802005C: .4byte _08020060\n\
+ .align 2, 0\n\
+_08020060:\n\
+ .4byte _0802007C\n\
+ .4byte _080200FC\n\
+ .4byte _08020216\n\
+ .4byte _0802055C\n\
+ .4byte _08020648\n\
+ .4byte _08020910\n\
+ .4byte _0802096C\n\
+_0802007C:\n\
+ ldr r4, _080200A8 @ =gBank1\n\
+ ldrb r0, [r4]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _08020098\n\
+ ldr r0, _080200AC @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _080200B0 @ =0x00000982\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080200BC\n\
+_08020098:\n\
+ ldr r0, _080200B4 @ =0x02000000\n\
+ ldr r1, _080200B8 @ =0x0001600f\n\
+ adds r0, r1\n\
+ movs r1, 0x6\n\
+ strb r1, [r0]\n\
+ bl _08020996\n\
+ .align 2, 0\n\
+_080200A8: .4byte gBank1\n\
+_080200AC: .4byte gBattleTypeFlags\n\
+_080200B0: .4byte 0x00000982\n\
+_080200B4: .4byte 0x02000000\n\
+_080200B8: .4byte 0x0001600f\n\
+_080200BC:\n\
+ ldr r2, _080200E8 @ =0x02000000\n\
+ ldr r3, _080200EC @ =0x0001600f\n\
+ adds r1, r2, r3\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ ldr r0, _080200F0 @ =0x00016113\n\
+ adds r2, r0\n\
+ ldr r3, _080200F4 @ =gBitTable\n\
+ ldr r1, _080200F8 @ =gBattlePartyID\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ ldrh r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ bl _08020996\n\
+ .align 2, 0\n\
+_080200E8: .4byte 0x02000000\n\
+_080200EC: .4byte 0x0001600f\n\
+_080200F0: .4byte 0x00016113\n\
+_080200F4: .4byte gBitTable\n\
+_080200F8: .4byte gBattlePartyID\n\
+_080200FC:\n\
+ movs r5, 0\n\
+ movs r7, 0\n\
+ ldr r1, _08020150 @ =gSaveBlock1 + 0x3688\n\
+ mov r9, r1\n\
+_08020104:\n\
+ movs r0, 0x64\n\
+ adds r1, r7, 0\n\
+ muls r1, r0\n\
+ ldr r0, _08020154 @ =gPlayerParty\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0802016A\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0802016A\n\
+ ldr r0, _08020158 @ =gBitTable\n\
+ lsls r1, r7, 2\n\
+ adds r1, r0\n\
+ ldr r0, [r1]\n\
+ mov r2, r8\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _08020138\n\
+ adds r5, 0x1\n\
+_08020138:\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xC\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0xAF\n\
+ bne _0802015C\n\
+ mov r3, r9\n\
+ ldrb r4, [r3]\n\
+ b _08020164\n\
+ .align 2, 0\n\
+_08020150: .4byte gSaveBlock1 + 0x3688\n\
+_08020154: .4byte gPlayerParty\n\
+_08020158: .4byte gBitTable\n\
+_0802015C:\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+_08020164:\n\
+ cmp r4, 0x19\n\
+ bne _0802016A\n\
+ adds r6, 0x1\n\
+_0802016A:\n\
+ adds r7, 0x1\n\
+ cmp r7, 0x5\n\
+ ble _08020104\n\
+ ldr r3, _080201D0 @ =gBaseStats\n\
+ ldr r2, _080201D4 @ =gBattleMons\n\
+ ldr r0, _080201D8 @ =gBank1\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r1, r0\n\
+ adds r1, r2\n\
+ ldrh r2, [r1]\n\
+ lsls r0, r2, 3\n\
+ subs r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldrb r2, [r0, 0x9]\n\
+ adds r1, 0x2A\n\
+ ldrb r0, [r1]\n\
+ muls r0, r2\n\
+ movs r1, 0x7\n\
+ bl __divsi3\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r6, 0\n\
+ beq _080201E0\n\
+ lsrs r4, r0, 17\n\
+ adds r0, r4, 0\n\
+ adds r1, r5, 0\n\
+ bl __divsi3\n\
+ mov r1, r10\n\
+ strh r0, [r1]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bne _080201B6\n\
+ movs r0, 0x1\n\
+ strh r0, [r1]\n\
+_080201B6:\n\
+ ldr r5, _080201DC @ =gExpShareExp\n\
+ adds r0, r4, 0\n\
+ adds r1, r6, 0\n\
+ bl __divsi3\n\
+ strh r0, [r5]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bne _080201FA\n\
+ movs r0, 0x1\n\
+ strh r0, [r5]\n\
+ b _080201FA\n\
+ .align 2, 0\n\
+_080201D0: .4byte gBaseStats\n\
+_080201D4: .4byte gBattleMons\n\
+_080201D8: .4byte gBank1\n\
+_080201DC: .4byte gExpShareExp\n\
+_080201E0:\n\
+ adds r0, r1, 0\n\
+ adds r1, r5, 0\n\
+ bl __divsi3\n\
+ mov r2, r10\n\
+ strh r0, [r2]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bne _080201F6\n\
+ movs r0, 0x1\n\
+ strh r0, [r2]\n\
+_080201F6:\n\
+ ldr r0, _08020248 @ =gExpShareExp\n\
+ strh r6, [r0]\n\
+_080201FA:\n\
+ ldr r1, _0802024C @ =0x02000000\n\
+ ldr r3, _08020250 @ =0x0001600f\n\
+ adds r2, r1, r3\n\
+ ldrb r0, [r2]\n\
+ adds r0, 0x1\n\
+ movs r3, 0\n\
+ strb r0, [r2]\n\
+ ldr r2, _08020254 @ =0x00016018\n\
+ adds r0, r1, r2\n\
+ strb r3, [r0]\n\
+ ldr r3, _08020258 @ =0x0001605f\n\
+ adds r1, r3\n\
+ mov r0, r8\n\
+ strb r0, [r1]\n\
+_08020216:\n\
+ ldr r0, _0802025C @ =gBattleExecBuffer\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08020220\n\
+ b _08020996\n\
+_08020220:\n\
+ ldr r0, _0802024C @ =0x02000000\n\
+ ldr r1, _08020254 @ =0x00016018\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _08020260 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0xC\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0xAF\n\
+ bne _0802026C\n\
+ ldr r0, _08020264 @ =gSaveBlock1\n\
+ ldr r2, _08020268 @ =0x00003688\n\
+ adds r0, r2\n\
+ ldrb r4, [r0]\n\
+ b _08020274\n\
+ .align 2, 0\n\
+_08020248: .4byte gExpShareExp\n\
+_0802024C: .4byte 0x02000000\n\
+_08020250: .4byte 0x0001600f\n\
+_08020254: .4byte 0x00016018\n\
+_08020258: .4byte 0x0001605f\n\
+_0802025C: .4byte gBattleExecBuffer\n\
+_08020260: .4byte gPlayerParty\n\
+_08020264: .4byte gSaveBlock1\n\
+_08020268: .4byte 0x00003688\n\
+_0802026C:\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+_08020274:\n\
+ ldr r5, _08020294 @ =0x02000000\n\
+ cmp r4, 0x19\n\
+ beq _080202A0\n\
+ ldr r3, _08020298 @ =0x0001605f\n\
+ adds r1, r5, r3\n\
+ ldrb r0, [r1]\n\
+ movs r2, 0x1\n\
+ ands r2, r0\n\
+ cmp r2, 0\n\
+ bne _080202A0\n\
+ lsrs r0, 1\n\
+ strb r0, [r1]\n\
+ ldr r0, _0802029C @ =0x0001600f\n\
+ adds r1, r5, r0\n\
+ b _080202C8\n\
+ .align 2, 0\n\
+_08020294: .4byte 0x02000000\n\
+_08020298: .4byte 0x0001605f\n\
+_0802029C: .4byte 0x0001600f\n\
+_080202A0:\n\
+ ldr r1, _080202D4 @ =0x00016018\n\
+ adds r0, r5, r1\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _080202D8 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ cmp r0, 0x64\n\
+ bne _080202E8\n\
+ ldr r2, _080202DC @ =0x0001605f\n\
+ adds r1, r5, r2\n\
+ ldrb r0, [r1]\n\
+ lsrs r0, 1\n\
+ movs r2, 0\n\
+ strb r0, [r1]\n\
+ ldr r3, _080202E0 @ =0x0001600f\n\
+ adds r1, r5, r3\n\
+_080202C8:\n\
+ movs r0, 0x5\n\
+ strb r0, [r1]\n\
+ ldr r0, _080202E4 @ =gBattleMoveDamage\n\
+ str r2, [r0]\n\
+ b _08020996\n\
+ .align 2, 0\n\
+_080202D4: .4byte 0x00016018\n\
+_080202D8: .4byte gPlayerParty\n\
+_080202DC: .4byte 0x0001605f\n\
+_080202E0: .4byte 0x0001600f\n\
+_080202E4: .4byte gBattleMoveDamage\n\
+_080202E8:\n\
+ ldr r0, _0802034C @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08020316\n\
+ ldr r0, _08020350 @ =gBattleMons\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ beq _08020316\n\
+ ldr r0, _08020354 @ =0x0001601b\n\
+ adds r5, r0\n\
+ ldrb r0, [r5]\n\
+ cmp r0, 0\n\
+ bne _08020316\n\
+ bl BattleMusicStop\n\
+ ldr r0, _08020358 @ =0x00000161\n\
+ bl PlayBGM\n\
+ ldrb r0, [r5]\n\
+ adds r0, 0x1\n\
+ strb r0, [r5]\n\
+_08020316:\n\
+ ldr r5, _0802035C @ =0x02000000\n\
+ ldr r1, _08020360 @ =0x00016018\n\
+ adds r0, r5, r1\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _08020364 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _08020332\n\
+ b _0802051E\n\
+_08020332:\n\
+ ldr r2, _08020368 @ =0x0001605f\n\
+ adds r0, r5, r2\n\
+ ldrb r0, [r0]\n\
+ movs r3, 0x1\n\
+ ands r3, r0\n\
+ cmp r3, 0\n\
+ beq _08020370\n\
+ ldr r1, _0802036C @ =gBattleMoveDamage\n\
+ mov r3, r10\n\
+ ldrh r0, [r3]\n\
+ str r0, [r1]\n\
+ mov r8, r1\n\
+ b _08020376\n\
+ .align 2, 0\n\
+_0802034C: .4byte gBattleTypeFlags\n\
+_08020350: .4byte gBattleMons\n\
+_08020354: .4byte 0x0001601b\n\
+_08020358: .4byte 0x00000161\n\
+_0802035C: .4byte 0x02000000\n\
+_08020360: .4byte 0x00016018\n\
+_08020364: .4byte gPlayerParty\n\
+_08020368: .4byte 0x0001605f\n\
+_0802036C: .4byte gBattleMoveDamage\n\
+_08020370:\n\
+ ldr r0, _080203EC @ =gBattleMoveDamage\n\
+ str r3, [r0]\n\
+ mov r8, r0\n\
+_08020376:\n\
+ cmp r4, 0x19\n\
+ bne _08020386\n\
+ ldr r0, _080203F0 @ =gExpShareExp\n\
+ ldrh r1, [r0]\n\
+ mov r2, r8\n\
+ ldr r0, [r2]\n\
+ adds r0, r1\n\
+ str r0, [r2]\n\
+_08020386:\n\
+ cmp r4, 0x28\n\
+ bne _0802039C\n\
+ mov r3, r8\n\
+ ldr r1, [r3]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+_0802039C:\n\
+ ldr r0, _080203F4 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080203B8\n\
+ ldr r4, _080203EC @ =gBattleMoveDamage\n\
+ ldr r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ str r0, [r4]\n\
+_080203B8:\n\
+ ldr r0, _080203F8 @ =0x02000000\n\
+ ldr r2, _080203FC @ =0x00016018\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _08020400 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ bl IsTradedMon\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08020404\n\
+ ldr r4, _080203EC @ =gBattleMoveDamage\n\
+ ldr r1, [r4]\n\
+ movs r0, 0x96\n\
+ muls r0, r1\n\
+ movs r1, 0x64\n\
+ bl __divsi3\n\
+ str r0, [r4]\n\
+ movs r7, 0xA5\n\
+ lsls r7, 1\n\
+ mov r8, r4\n\
+ b _0802040A\n\
+ .align 2, 0\n\
+_080203EC: .4byte gBattleMoveDamage\n\
+_080203F0: .4byte gExpShareExp\n\
+_080203F4: .4byte gBattleTypeFlags\n\
+_080203F8: .4byte 0x02000000\n\
+_080203FC: .4byte 0x00016018\n\
+_08020400: .4byte gPlayerParty\n\
+_08020404:\n\
+ ldr r7, _0802043C @ =0x00000149\n\
+ ldr r3, _08020440 @ =gBattleMoveDamage\n\
+ mov r8, r3\n\
+_0802040A:\n\
+ ldr r0, _08020444 @ =gBattleTypeFlags\n\
+ ldrh r0, [r0]\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _08020488\n\
+ ldr r1, _08020448 @ =gBattlePartyID\n\
+ ldr r0, _0802044C @ =0x02000000\n\
+ ldr r3, _08020450 @ =0x00016018\n\
+ adds r2, r0, r3\n\
+ ldrh r1, [r1, 0x4]\n\
+ adds r5, r0, 0\n\
+ ldr r4, _08020454 @ =gBitTable\n\
+ ldr r3, _08020458 @ =gAbsentBankFlags\n\
+ ldrb r2, [r2]\n\
+ cmp r1, r2\n\
+ bne _08020460\n\
+ ldrb r1, [r3]\n\
+ ldr r0, [r4, 0x8]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _08020460\n\
+ ldr r0, _0802045C @ =0x000160a2\n\
+ adds r1, r5, r0\n\
+ b _0802047C\n\
+ .align 2, 0\n\
+_0802043C: .4byte 0x00000149\n\
+_08020440: .4byte gBattleMoveDamage\n\
+_08020444: .4byte gBattleTypeFlags\n\
+_08020448: .4byte gBattlePartyID\n\
+_0802044C: .4byte 0x02000000\n\
+_08020450: .4byte 0x00016018\n\
+_08020454: .4byte gBitTable\n\
+_08020458: .4byte gAbsentBankFlags\n\
+_0802045C: .4byte 0x000160a2\n\
+_08020460:\n\
+ ldrb r2, [r3]\n\
+ ldr r0, [r4]\n\
+ ands r2, r0\n\
+ cmp r2, 0\n\
+ bne _08020478\n\
+ ldr r1, _08020474 @ =0x000160a2\n\
+ adds r0, r5, r1\n\
+ strb r2, [r0]\n\
+ b _08020490\n\
+ .align 2, 0\n\
+_08020474: .4byte 0x000160a2\n\
+_08020478:\n\
+ ldr r2, _08020484 @ =0x000160a2\n\
+ adds r1, r5, r2\n\
+_0802047C:\n\
+ movs r0, 0x2\n\
+ strb r0, [r1]\n\
+ b _08020490\n\
+ .align 2, 0\n\
+_08020484: .4byte 0x000160a2\n\
+_08020488:\n\
+ ldr r0, _08020530 @ =0x02000000\n\
+ ldr r3, _08020534 @ =0x000160a2\n\
+ adds r0, r3\n\
+ strb r1, [r0]\n\
+_08020490:\n\
+ ldr r1, _08020538 @ =gBattleTextBuff1\n\
+ movs r3, 0\n\
+ movs r2, 0xFD\n\
+ strb r2, [r1]\n\
+ movs r5, 0x4\n\
+ strb r5, [r1, 0x1]\n\
+ ldr r4, _08020530 @ =0x02000000\n\
+ ldr r0, _08020534 @ =0x000160a2\n\
+ adds r6, r4, r0\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r1, 0x2]\n\
+ ldr r0, _0802053C @ =0x00016018\n\
+ adds r4, r0\n\
+ ldrb r0, [r4]\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x4]\n\
+ ldr r1, _08020540 @ =gBattleTextBuff2\n\
+ strb r2, [r1]\n\
+ strb r3, [r1, 0x1]\n\
+ strb r7, [r1, 0x2]\n\
+ movs r3, 0xFF\n\
+ lsls r3, 8\n\
+ ands r7, r3\n\
+ asrs r0, r7, 8\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ strb r0, [r1, 0x4]\n\
+ ldr r1, _08020544 @ =gBattleTextBuff3\n\
+ strb r2, [r1]\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x1]\n\
+ strb r5, [r1, 0x2]\n\
+ movs r0, 0x5\n\
+ strb r0, [r1, 0x3]\n\
+ mov r0, r8\n\
+ ldr r2, [r0]\n\
+ strb r2, [r1, 0x4]\n\
+ adds r0, r2, 0\n\
+ ands r0, r3\n\
+ asrs r0, 8\n\
+ strb r0, [r1, 0x5]\n\
+ movs r0, 0xFF\n\
+ lsls r0, 16\n\
+ ands r0, r2\n\
+ asrs r0, 16\n\
+ strb r0, [r1, 0x6]\n\
+ lsrs r2, 24\n\
+ strb r2, [r1, 0x7]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ strb r0, [r1, 0x8]\n\
+ ldrb r1, [r6]\n\
+ movs r0, 0xD\n\
+ bl PrepareStringBattle\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _08020548 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ ldr r3, _0802054C @ =gBattleMons\n\
+ ldr r1, _08020550 @ =gBank1\n\
+ ldrb r2, [r1]\n\
+ movs r1, 0x58\n\
+ muls r1, r2\n\
+ adds r1, r3\n\
+ ldrh r1, [r1]\n\
+ bl MonGainEVs\n\
+_0802051E:\n\
+ ldr r1, _08020530 @ =0x02000000\n\
+ ldr r3, _08020554 @ =0x0001605f\n\
+ adds r2, r1, r3\n\
+ ldrb r0, [r2]\n\
+ lsrs r0, 1\n\
+ strb r0, [r2]\n\
+ ldr r0, _08020558 @ =0x0001600f\n\
+ adds r1, r0\n\
+ b _08020618\n\
+ .align 2, 0\n\
+_08020530: .4byte 0x02000000\n\
+_08020534: .4byte 0x000160a2\n\
+_08020538: .4byte gBattleTextBuff1\n\
+_0802053C: .4byte 0x00016018\n\
+_08020540: .4byte gBattleTextBuff2\n\
+_08020544: .4byte gBattleTextBuff3\n\
+_08020548: .4byte gPlayerParty\n\
+_0802054C: .4byte gBattleMons\n\
+_08020550: .4byte gBank1\n\
+_08020554: .4byte 0x0001605f\n\
+_08020558: .4byte 0x0001600f\n\
+_0802055C:\n\
+ ldr r0, _08020620 @ =gBattleExecBuffer\n\
+ ldr r2, [r0]\n\
+ cmp r2, 0\n\
+ beq _08020566\n\
+ b _08020996\n\
+_08020566:\n\
+ ldr r1, _08020624 @ =gBattleBufferB\n\
+ ldr r4, _08020628 @ =0x02000000\n\
+ ldr r3, _0802062C @ =0x000160a2\n\
+ adds r3, r4\n\
+ mov r8, r3\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 9\n\
+ adds r0, r1\n\
+ strb r2, [r0]\n\
+ ldr r0, _08020630 @ =0x00016018\n\
+ adds r7, r4, r0\n\
+ ldrb r0, [r7]\n\
+ movs r6, 0x64\n\
+ muls r0, r6\n\
+ ldr r5, _08020634 @ =gPlayerParty\n\
+ adds r0, r5\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08020612\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ cmp r0, 0x64\n\
+ beq _08020612\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x3A\n\
+ bl GetMonData\n\
+ ldr r1, _08020638 @ =0x00017180\n\
+ adds r4, r1\n\
+ strh r0, [r4]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x3B\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x2]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x3C\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x4]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x3D\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x6]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x3E\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x8]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ adds r0, r5\n\
+ movs r1, 0x3F\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0xA]\n\
+ ldr r4, _0802063C @ =gActiveBank\n\
+ mov r2, r8\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r4]\n\
+ ldrb r1, [r7]\n\
+ ldr r0, _08020640 @ =gBattleMoveDamage\n\
+ ldrh r2, [r0]\n\
+ movs r0, 0\n\
+ bl EmitExpBarUpdate\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+_08020612:\n\
+ ldr r1, _08020628 @ =0x02000000\n\
+ ldr r3, _08020644 @ =0x0001600f\n\
+ adds r1, r3\n\
+_08020618:\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ b _08020996\n\
+ .align 2, 0\n\
+_08020620: .4byte gBattleExecBuffer\n\
+_08020624: .4byte gBattleBufferB\n\
+_08020628: .4byte 0x02000000\n\
+_0802062C: .4byte 0x000160a2\n\
+_08020630: .4byte 0x00016018\n\
+_08020634: .4byte gPlayerParty\n\
+_08020638: .4byte 0x00017180\n\
+_0802063C: .4byte gActiveBank\n\
+_08020640: .4byte gBattleMoveDamage\n\
+_08020644: .4byte 0x0001600f\n\
+_08020648:\n\
+ ldr r0, _080208AC @ =gBattleExecBuffer\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08020652\n\
+ b _08020996\n\
+_08020652:\n\
+ ldr r1, _080208B0 @ =gActiveBank\n\
+ ldr r4, _080208B4 @ =0x02000000\n\
+ ldr r2, _080208B8 @ =0x000160a2\n\
+ adds r0, r4, r2\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldr r2, _080208BC @ =gBattleBufferB\n\
+ ldrb r3, [r1]\n\
+ lsls r1, r3, 9\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x21\n\
+ beq _0802066E\n\
+ b _080208F0\n\
+_0802066E:\n\
+ adds r0, r2, 0x1\n\
+ adds r0, r1, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0xB\n\
+ beq _0802067A\n\
+ b _080208F0\n\
+_0802067A:\n\
+ ldr r0, _080208C0 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080206A8\n\
+ ldr r1, _080208C4 @ =gBattlePartyID\n\
+ lsls r0, r3, 1\n\
+ adds r2, r0, r1\n\
+ ldr r0, _080208C8 @ =0x00016018\n\
+ adds r1, r4, r0\n\
+ ldrh r0, [r2]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bne _080206A8\n\
+ adds r1, r0, 0\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _080208CC @ =gPlayerParty\n\
+ adds r0, r1\n\
+ adds r1, r3, 0\n\
+ bl sub_80324F8\n\
+_080206A8:\n\
+ ldr r1, _080208D0 @ =gBattleTextBuff1\n\
+ movs r2, 0xFD\n\
+ strb r2, [r1]\n\
+ movs r0, 0x4\n\
+ strb r0, [r1, 0x1]\n\
+ ldr r5, _080208B0 @ =gActiveBank\n\
+ ldrb r0, [r5]\n\
+ strb r0, [r1, 0x2]\n\
+ ldr r0, _080208B4 @ =0x02000000\n\
+ ldr r3, _080208C8 @ =0x00016018\n\
+ adds r6, r0, r3\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x4]\n\
+ ldr r4, _080208D4 @ =gBattleTextBuff2\n\
+ strb r2, [r4]\n\
+ movs r0, 0x1\n\
+ strb r0, [r4, 0x1]\n\
+ strb r0, [r4, 0x2]\n\
+ movs r0, 0x3\n\
+ strb r0, [r4, 0x3]\n\
+ ldrb r0, [r6]\n\
+ movs r1, 0x64\n\
+ mov r8, r1\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ ldr r7, _080208CC @ =gPlayerParty\n\
+ adds r0, r7\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ strb r0, [r4, 0x4]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ strb r0, [r4, 0x5]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r2, _080208D8 @ =gLeveledUpInBattle\n\
+ ldr r1, _080208DC @ =gBitTable\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r1, _080208E0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _080208E4 @ =BattleScript_LevelUp\n\
+ str r0, [r1]\n\
+ ldr r4, _080208E8 @ =gBattleMoveDamage\n\
+ ldr r2, _080208BC @ =gBattleBufferB\n\
+ ldrb r1, [r5]\n\
+ lsls r1, 9\n\
+ adds r0, r2, 0x2\n\
+ adds r0, r1, r0\n\
+ ldrb r3, [r0]\n\
+ adds r2, 0x3\n\
+ adds r1, r2\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 8\n\
+ orrs r3, r0\n\
+ str r3, [r4]\n\
+ ldrb r0, [r6]\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ adds r0, r7\n\
+ movs r1, 0\n\
+ bl AdjustFriendship\n\
+ ldr r0, _080208C4 @ =gBattlePartyID\n\
+ ldrb r1, [r6]\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r1\n\
+ bne _080207EC\n\
+ ldr r4, _080208EC @ =gBattleMons\n\
+ ldrh r0, [r4, 0x28]\n\
+ cmp r0, 0\n\
+ beq _080207EC\n\
+ mov r0, r8\n\
+ muls r0, r1\n\
+ adds r0, r7\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ adds r1, r4, 0\n\
+ adds r1, 0x2A\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r6]\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x28]\n\
+ ldrb r0, [r6]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3A\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x2C]\n\
+ ldrb r0, [r6]\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3B\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x2]\n\
+ ldrb r0, [r6]\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3C\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x4]\n\
+ ldrb r0, [r6]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3D\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x6]\n\
+ ldrb r0, [r6]\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3D\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x6]\n\
+ ldrb r0, [r6]\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3E\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0x8]\n\
+ ldrb r0, [r6]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, r7\n\
+ movs r1, 0x3F\n\
+ bl GetMonData\n\
+ strh r0, [r4, 0xA]\n\
+_080207EC:\n\
+ ldr r0, _080208C4 @ =gBattlePartyID\n\
+ ldr r1, _080208B4 @ =0x02000000\n\
+ ldr r3, _080208C8 @ =0x00016018\n\
+ adds r7, r1, r3\n\
+ ldrb r2, [r7]\n\
+ ldrh r0, [r0, 0x4]\n\
+ cmp r0, r2\n\
+ bne _080208F6\n\
+ ldr r6, _080208EC @ =gBattleMons\n\
+ movs r0, 0xD8\n\
+ adds r0, r6\n\
+ mov r8, r0\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080208F6\n\
+ ldr r0, _080208C0 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080208F6\n\
+ movs r5, 0x64\n\
+ adds r0, r2, 0\n\
+ muls r0, r5\n\
+ ldr r4, _080208CC @ =gPlayerParty\n\
+ adds r0, r4\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xDA\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ mov r1, r8\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x3A\n\
+ bl GetMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xDC\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x3B\n\
+ bl GetMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xB2\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x3C\n\
+ bl GetMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xB4\n\
+ strh r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x3D\n\
+ bl GetMonData\n\
+ movs r2, 0xB6\n\
+ adds r2, r6\n\
+ mov r8, r2\n\
+ strh r0, [r2]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x3D\n\
+ bl GetMonData\n\
+ mov r3, r8\n\
+ strh r0, [r3]\n\
+ ldrb r0, [r7]\n\
+ muls r0, r5\n\
+ adds r0, r4\n\
+ movs r1, 0x3E\n\
+ bl GetMonData\n\
+ adds r1, r6, 0\n\
+ adds r1, 0xB8\n\
+ strh r0, [r1]\n\
+ b _080208F6\n\
+ .align 2, 0\n\
+_080208AC: .4byte gBattleExecBuffer\n\
+_080208B0: .4byte gActiveBank\n\
+_080208B4: .4byte 0x02000000\n\
+_080208B8: .4byte 0x000160a2\n\
+_080208BC: .4byte gBattleBufferB\n\
+_080208C0: .4byte gBattleTypeFlags\n\
+_080208C4: .4byte gBattlePartyID\n\
+_080208C8: .4byte 0x00016018\n\
+_080208CC: .4byte gPlayerParty\n\
+_080208D0: .4byte gBattleTextBuff1\n\
+_080208D4: .4byte gBattleTextBuff2\n\
+_080208D8: .4byte gLeveledUpInBattle\n\
+_080208DC: .4byte gBitTable\n\
+_080208E0: .4byte gBattlescriptCurrInstr\n\
+_080208E4: .4byte BattleScript_LevelUp\n\
+_080208E8: .4byte gBattleMoveDamage\n\
+_080208EC: .4byte gBattleMons\n\
+_080208F0:\n\
+ ldr r1, _08020904 @ =gBattleMoveDamage\n\
+ movs r0, 0\n\
+ str r0, [r1]\n\
+_080208F6:\n\
+ ldr r0, _08020908 @ =0x02000000\n\
+ ldr r1, _0802090C @ =0x0001600f\n\
+ adds r0, r1\n\
+ movs r1, 0x5\n\
+ strb r1, [r0]\n\
+ b _08020996\n\
+ .align 2, 0\n\
+_08020904: .4byte gBattleMoveDamage\n\
+_08020908: .4byte 0x02000000\n\
+_0802090C: .4byte 0x0001600f\n\
+_08020910:\n\
+ ldr r0, _08020924 @ =gBattleMoveDamage\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08020930\n\
+ ldr r0, _08020928 @ =0x02000000\n\
+ ldr r2, _0802092C @ =0x0001600f\n\
+ adds r0, r2\n\
+ movs r1, 0x3\n\
+ strb r1, [r0]\n\
+ b _08020996\n\
+ .align 2, 0\n\
+_08020924: .4byte gBattleMoveDamage\n\
+_08020928: .4byte 0x02000000\n\
+_0802092C: .4byte 0x0001600f\n\
+_08020930:\n\
+ ldr r2, _08020950 @ =0x02000000\n\
+ ldr r3, _08020954 @ =0x00016018\n\
+ adds r1, r2, r3\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x5\n\
+ bhi _0802095C\n\
+ ldr r0, _08020958 @ =0x0001600f\n\
+ adds r1, r2, r0\n\
+ movs r0, 0x2\n\
+ strb r0, [r1]\n\
+ b _08020996\n\
+ .align 2, 0\n\
+_08020950: .4byte 0x02000000\n\
+_08020954: .4byte 0x00016018\n\
+_08020958: .4byte 0x0001600f\n\
+_0802095C:\n\
+ ldr r3, _08020968 @ =0x0001600f\n\
+ adds r1, r2, r3\n\
+ movs r0, 0x6\n\
+ strb r0, [r1]\n\
+ b _08020996\n\
+ .align 2, 0\n\
+_08020968: .4byte 0x0001600f\n\
+_0802096C:\n\
+ ldr r0, _080209A4 @ =gBattleExecBuffer\n\
+ ldr r5, [r0]\n\
+ cmp r5, 0\n\
+ bne _08020996\n\
+ ldr r4, _080209A8 @ =gBattleMons\n\
+ ldr r2, _080209AC @ =gBank1\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r4\n\
+ movs r3, 0\n\
+ strh r5, [r0, 0x2E]\n\
+ ldrb r0, [r2]\n\
+ muls r0, r1\n\
+ adds r0, r4\n\
+ adds r0, 0x20\n\
+ strb r3, [r0]\n\
+ ldr r1, _080209B0 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x2\n\
+ str r0, [r1]\n\
+_08020996:\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\
+_080209A4: .4byte gBattleExecBuffer\n\
+_080209A8: .4byte gBattleMons\n\
+_080209AC: .4byte gBank1\n\
+_080209B0: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided\n");
+}
+
+#endif // NONMATCHING
+
+#ifdef NONMATCHING
+static void atk24(void)
+{
+ u16 HP_count = 0;
+ int i;
+ if (gBattleExecBuffer) {return;}
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ HP_count += GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ }
+
+ if (HP_count == 0)
+ gBattleOutcome |= BATTLE_LOST;
+
+ for (HP_count = 0, i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gEnemyParty[i], MON_DATA_SPECIES) && !GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG))
+ HP_count += GetMonData(&gEnemyParty[i], MON_DATA_HP);
+ }
+
+ if (!HP_count)
+ gBattleOutcome |= BATTLE_WON;
+
+ if (!gBattleOutcome && (gBattleTypeFlags & BATTLE_TYPE_LINK))
+ {
+ register int found1 asm("r2");
+ register int found2 asm("r4");
+
+ //I can't for the love of god decompile that part
+
+ for (found1 = 0, i = 0; i < gNoOfAllBanks; i += 2)
+ {
+ if ((gHitMarker & HITMARKER_UNK(i)) && !gSpecialStatuses[i].flag40)
+ found1++;
+ }
+
+ for (found2 = 0, i = 1; i < gNoOfAllBanks; i += 2)
+ {
+ if ((gHitMarker & HITMARKER_UNK(i)) && !gSpecialStatuses[i].flag40)
+ found2++;
+ }
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (found2 + found1 > 1)
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ if (found2 != 0 && found1 != 0)
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+ }
+ }
+ else
+ gBattlescriptCurrInstr += 5;
+
+}
+#else
+__attribute__((naked))
+static void atk24(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ movs r6, 0\n\
+ ldr r0, _08020AF0 @ =gBattleExecBuffer\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080209C6\n\
+ b _08020B46\n\
+_080209C6:\n\
+ movs r5, 0\n\
+_080209C8:\n\
+ movs r0, 0x64\n\
+ adds r1, r5, 0\n\
+ muls r1, r0\n\
+ ldr r0, _08020AF4 @ =gPlayerParty\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _080209F8\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2D\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _080209F8\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ adds r0, r6, r0\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+_080209F8:\n\
+ adds r5, 0x1\n\
+ cmp r5, 0x5\n\
+ ble _080209C8\n\
+ cmp r6, 0\n\
+ bne _08020A0C\n\
+ ldr r0, _08020AF8 @ =gBattleOutcome\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x2\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_08020A0C:\n\
+ movs r6, 0\n\
+ movs r5, 0\n\
+_08020A10:\n\
+ movs r0, 0x64\n\
+ adds r1, r5, 0\n\
+ muls r1, r0\n\
+ ldr r0, _08020AFC @ =gEnemyParty\n\
+ adds r4, r1, r0\n\
+ adds r0, r4, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08020A40\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x2D\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ bne _08020A40\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ adds r0, r6, r0\n\
+ lsls r0, 16\n\
+ lsrs r6, r0, 16\n\
+_08020A40:\n\
+ adds r5, 0x1\n\
+ cmp r5, 0x5\n\
+ ble _08020A10\n\
+ ldr r2, _08020AF8 @ =gBattleOutcome\n\
+ cmp r6, 0\n\
+ bne _08020A54\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+_08020A54:\n\
+ ldrb r0, [r2]\n\
+ cmp r0, 0\n\
+ bne _08020B3E\n\
+ ldr r2, _08020B00 @ =gBattleTypeFlags\n\
+ ldrh r1, [r2]\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ mov r8, r2\n\
+ cmp r0, 0\n\
+ beq _08020B3E\n\
+ movs r2, 0\n\
+ movs r5, 0\n\
+ ldr r0, _08020B04 @ =gNoOfAllBanks\n\
+ ldrb r3, [r0]\n\
+ mov r12, r0\n\
+ ldr r7, _08020B08 @ =gBattlescriptCurrInstr\n\
+ cmp r2, r3\n\
+ bge _08020AA0\n\
+ ldr r0, _08020B0C @ =gHitMarker\n\
+ movs r1, 0x80\n\
+ lsls r1, 21\n\
+ ldr r6, [r0]\n\
+ adds r4, r3, 0\n\
+ ldr r3, _08020B10 @ =gSpecialStatuses\n\
+_08020A84:\n\
+ adds r0, r1, 0\n\
+ lsls r0, r5\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ beq _08020A98\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08020A98\n\
+ adds r2, 0x1\n\
+_08020A98:\n\
+ adds r3, 0x28\n\
+ adds r5, 0x2\n\
+ cmp r5, r4\n\
+ blt _08020A84\n\
+_08020AA0:\n\
+ movs r4, 0\n\
+ movs r5, 0x1\n\
+ mov r0, r12\n\
+ ldrb r3, [r0]\n\
+ cmp r5, r3\n\
+ bge _08020ADA\n\
+ ldr r0, _08020B0C @ =gHitMarker\n\
+ movs r1, 0x80\n\
+ lsls r1, 21\n\
+ mov r12, r1\n\
+ ldr r1, [r0]\n\
+ ldr r0, _08020B10 @ =gSpecialStatuses\n\
+ adds r6, r3, 0\n\
+ adds r3, r0, 0\n\
+ adds r3, 0x14\n\
+_08020ABE:\n\
+ mov r0, r12\n\
+ lsls r0, r5\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08020AD2\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08020AD2\n\
+ adds r4, 0x1\n\
+_08020AD2:\n\
+ adds r3, 0x28\n\
+ adds r5, 0x2\n\
+ cmp r5, r6\n\
+ blt _08020ABE\n\
+_08020ADA:\n\
+ mov r0, r8\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08020B14\n\
+ adds r0, r4, r2\n\
+ cmp r0, 0x1\n\
+ bgt _08020B1C\n\
+ b _08020B36\n\
+ .align 2, 0\n\
+_08020AF0: .4byte gBattleExecBuffer\n\
+_08020AF4: .4byte gPlayerParty\n\
+_08020AF8: .4byte gBattleOutcome\n\
+_08020AFC: .4byte gEnemyParty\n\
+_08020B00: .4byte gBattleTypeFlags\n\
+_08020B04: .4byte gNoOfAllBanks\n\
+_08020B08: .4byte gBattlescriptCurrInstr\n\
+_08020B0C: .4byte gHitMarker\n\
+_08020B10: .4byte gSpecialStatuses\n\
+_08020B14:\n\
+ cmp r4, 0\n\
+ beq _08020B36\n\
+ cmp r2, 0\n\
+ beq _08020B36\n\
+_08020B1C:\n\
+ ldr r2, [r7]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ adds r1, r0\n\
+ str r1, [r7]\n\
+ b _08020B46\n\
+_08020B36:\n\
+ ldr r0, [r7]\n\
+ adds r0, 0x5\n\
+ str r0, [r7]\n\
+ b _08020B46\n\
+_08020B3E:\n\
+ ldr r1, _08020B50 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+_08020B46:\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08020B50: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided\n");
+}
+#endif
+
+static void MoveValuesCleanUp(void)
+{
+ gBattleMoveFlags = 0;
+ BATTLE_STRUCT->dmgMultiplier = 1;
+ gCritMultiplier = 1;
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0;
+ gBattleCommunication[6] = 0;
+ gHitMarker &= ~(HITMARKER_DESTINYBOND);
+ gHitMarker &= ~(HITMARKER_SYNCHRONISE_EFFECT);
+}
+
+static void atk25_move_values_cleanup(void)
+{
+ MoveValuesCleanUp();
+ gBattlescriptCurrInstr += 1;
+}
+
+static void atk26_set_multihit(void)
+{
+ gMultiHitCounter = BSScriptRead8(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk27_decrement_multihit(void)
+{
+ if (--gMultiHitCounter == 0)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atk28_goto(void)
+{
+ gBattlescriptCurrInstr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atk29_jumpifbyte(void)
+{
+ u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1);
+ u8* ptr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
+ u8 value = BSScriptRead8(gBattlescriptCurrInstr + 6);
+ u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 7);
+ gBattlescriptCurrInstr += 11;
+ switch (caseID)
+ {
+ case CMP_EQUAL:
+ if (*ptr == value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_NOT_EQUAL:
+ if (*ptr != value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_GREATER_THAN:
+ if (*ptr > value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_LESS_THAN:
+ if (*ptr < value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_COMMON_BITS:
+ if (*ptr & value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_NO_COMMON_BITS:
+ if (!(*ptr & value))
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ }
+}
+
+static void atk2A_jumpifhalfword(void)
+{
+ u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1);
+ u16* ptr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
+ u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 6);
+ u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 8);
+ gBattlescriptCurrInstr += 12;
+ switch (caseID)
+ {
+ case CMP_EQUAL:
+ if (*ptr == value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_NOT_EQUAL:
+ if (*ptr != value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_GREATER_THAN:
+ if (*ptr > value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_LESS_THAN:
+ if (*ptr < value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_COMMON_BITS:
+ if (*ptr & value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_NO_COMMON_BITS:
+ if (!(*ptr & value))
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ }
+}
+
+static void atk2B_jumpifword(void)
+{
+ u8 caseID = BSScriptRead8(gBattlescriptCurrInstr + 1);
+ u32* ptr = BS2ScriptReadPtr(gBattlescriptCurrInstr + 2);
+ u32 value = BSScriptRead32(gBattlescriptCurrInstr + 6);
+ u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10);
+ gBattlescriptCurrInstr += 14;
+ switch (caseID)
+ {
+ case CMP_EQUAL:
+ if (*ptr == value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_NOT_EQUAL:
+ if (*ptr != value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_GREATER_THAN:
+ if (*ptr > value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_LESS_THAN:
+ if (*ptr < value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_COMMON_BITS:
+ if (*ptr & value)
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ case CMP_NO_COMMON_BITS:
+ if (!(*ptr & value))
+ gBattlescriptCurrInstr = jump_loc;
+ break;
+ }
+}
+
+static void atk2C_jumpifarrayequal(void)
+{
+ //Mem1, Mem2, Size, Jump Loc
+ u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ u32 size = BSScriptRead8(gBattlescriptCurrInstr + 9);
+ u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10);
+
+ u8 i;
+ for (i = 0; i < size; i++)
+ {
+ if (*mem1 != *mem2)
+ {
+ gBattlescriptCurrInstr += 14;
+ break;
+ }
+ mem1++, mem2++;
+ }
+
+ if (i == size)
+ gBattlescriptCurrInstr = jump_loc;
+}
+
+static void atk2D_jumpifarraynotequal(void)
+{
+ //Mem1, Mem2, Size, Jump Loc
+ u8 equal_bytes = 0;
+ u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ u32 size = BSScriptRead8(gBattlescriptCurrInstr + 9);
+ u8* jump_loc = BS2ScriptReadPtr(gBattlescriptCurrInstr + 10);
+
+ u8 i;
+ for (i = 0; i < size; i++)
+ {
+ if (*mem1 == *mem2)
+ {
+ equal_bytes++;
+ }
+ mem1++, mem2++;
+ }
+
+ if (equal_bytes != size)
+ gBattlescriptCurrInstr = jump_loc;
+ else
+ gBattlescriptCurrInstr += 14;
+}
+
+static void atk2E_setbyte(void)
+{
+ u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *mem = BSScriptRead8(gBattlescriptCurrInstr + 5);
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk2F_addbyte(void)
+{
+ u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *mem += BSScriptRead8(gBattlescriptCurrInstr + 5);
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk30_subbyte(void)
+{
+ u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *mem -= BSScriptRead8(gBattlescriptCurrInstr + 5);
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk31_copyarray(void)
+{
+ u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ s32 size = BSScriptRead8(gBattlescriptCurrInstr + 9);
+
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ mem1[i] = mem2[i];
+ }
+
+ gBattlescriptCurrInstr += 10;
+}
+
+static void atk32_copyarray_withindex(void)
+{
+ u8* mem1 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u8* mem2 = BS2ScriptReadPtr(gBattlescriptCurrInstr + 5);
+ u8* index = BS2ScriptReadPtr(gBattlescriptCurrInstr + 9);
+ s32 size = BSScriptRead8(gBattlescriptCurrInstr + 13);
+
+ s32 i;
+ for (i = 0; i < size; i++)
+ {
+ mem1[i] = mem2[i + *index];
+ }
+
+ gBattlescriptCurrInstr += 14;
+}
+
+static void atk33_orbyte(void)
+{
+ u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *mem |= BSScriptRead8(gBattlescriptCurrInstr + 5);
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk34_orhalfword(void)
+{
+ u16* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5);
+
+ *mem |= val;
+ gBattlescriptCurrInstr += 7;
+}
+
+static void atk35_orword(void)
+{
+ u32* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5);
+
+ *mem |= val;
+ gBattlescriptCurrInstr += 9;
+}
+
+static void atk36_bicbyte(void)
+{
+ u8* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ *mem &= ~(BSScriptRead8(gBattlescriptCurrInstr + 5));
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk37_bichalfword(void)
+{
+ u16* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u16 val = BS2ScriptRead16(gBattlescriptCurrInstr + 5);
+
+ *mem &= ~val;
+ gBattlescriptCurrInstr += 7;
+}
+
+static void atk38_bicword(void)
+{
+ u32* mem = BS2ScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u32 val = BS2ScriptRead32(gBattlescriptCurrInstr + 5);
+
+ *mem &= ~val;
+ gBattlescriptCurrInstr += 9;
+}
+
+static void atk39_pause(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u16 value = BS2ScriptRead16(gBattlescriptCurrInstr + 1);
+ if (++gPauseCounterBattle >= value)
+ {
+ gPauseCounterBattle = 0;
+ gBattlescriptCurrInstr += 3;
+ }
+ }
+}
+
+static void atk3A_waitstate(void)
+{
+ if (gBattleExecBuffer == 0)
+ gBattlescriptCurrInstr++;
+}
+
+static void atk3B_healthbar_update(void)
+{
+ if (!BSScriptRead8(gBattlescriptCurrInstr + 1))
+ gActiveBank = gBankTarget;
+ else
+ gActiveBank = gBankAttacker;
+
+ EmitHealthBarUpdate(0, gBattleMoveDamage);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk3C_return(void)
+{
+ b_movescr_stack_pop_cursor();
+}
+
+static void atk3D_end(void)
+{
+ gBattleMoveFlags = 0;
+ gActiveBank = 0;
+ gFightStateTracker = 0xB;
+}
+
+static void atk3E_end2(void)
+{
+ //not much difference between this and 3D. It's more apparent in Emerald
+ gActiveBank = 0;
+ gFightStateTracker = 0xB;
+}
+
+static void atk3F_end3(void) //pops the main function stack
+{
+ b_movescr_stack_pop_cursor();
+ if (B_FUNCTION_STACK->size)
+ B_FUNCTION_STACK->size--;
+ gBattleMainFunc = B_FUNCTION_STACK->ptr[B_FUNCTION_STACK->size];
+}
+
+static void atk41_call(void)
+{
+ b_movescr_stack_push(gBattlescriptCurrInstr + 5);
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atk42_jumpiftype2(void) //u8 bank, u8 type, *ptr
+{
+ u8 bank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+
+ if (BSScriptRead8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type1 || BSScriptRead8(gBattlescriptCurrInstr + 2) == gBattleMons[bank].type2)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 3);
+ else
+ gBattlescriptCurrInstr += 7;
+}
+
+static void atk43_jumpifabilitypresent(void)
+{
+ if (AbilityBattleEffects(ABILITYEFFECT_CHECK_ON_FIELD, 0, BSScriptRead8(gBattlescriptCurrInstr + 1), 0, 0))
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk44(void)
+{
+ unk_2000000[gBankAttacker + 0x16060] = 1;
+}
+
+#ifdef NONMATCHING
+
+static void atk45_playanimation(void)
+{
+ #define ANIMATION_ID BSScriptRead8(gBattlescriptCurrInstr + 2)
+ #define ARGUMENT (u16*) BS2ScriptReadPtr(gBattlescriptCurrInstr + 3)
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+
+ if ( ANIMATION_ID == 1 || ANIMATION_ID == 0x11 || ANIMATION_ID == 2) {
+ EmitBattleAnimation(0, ANIMATION_ID, *argument);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 7;
+ } else if (gHitMarker & HITMARKER_NO_ANIMATIONS) {
+ b_movescr_stack_push(gBattlescriptCurrInstr + 7);
+ gBattlescriptCurrInstr = BattleScript_Pausex20;
+ } else {
+ if (((ANIMATION_ID - 10) > 3 && gStatuses3[gActiveBank] & (STATUS3_SEMI_INVULNERABLE))) {
+ gBattlescriptCurrInstr += 7;
+ } else {
+ EmitBattleAnimation(0, ANIMATION_ID, *argument);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 7;
+ }
+ }
+}
+
+#else
+__attribute__((naked))
+static void atk45_playanimation(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ ldr r5, _08021444 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r5]\n\
+ ldrb r0, [r0, 0x1]\n\
+ bl GetBattleBank\n\
+ ldr r6, _08021448 @ =gActiveBank\n\
+ strb r0, [r6]\n\
+ ldr r2, [r5]\n\
+ ldrb r1, [r2, 0x3]\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 8\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x5]\n\
+ lsls r0, 16\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x6]\n\
+ lsls r0, 24\n\
+ adds r3, r1, r0\n\
+ ldrb r4, [r2, 0x2]\n\
+ adds r0, r4, 0\n\
+ cmp r0, 0x1\n\
+ beq _08021426\n\
+ cmp r0, 0x11\n\
+ beq _08021426\n\
+ cmp r0, 0x2\n\
+ bne _0802144C\n\
+_08021426:\n\
+ ldr r4, _08021444 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r4]\n\
+ ldrb r1, [r0, 0x2]\n\
+ ldrh r2, [r3]\n\
+ movs r0, 0\n\
+ bl EmitBattleAnimation\n\
+ ldr r0, _08021448 @ =gActiveBank\n\
+ ldrb r0, [r0]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, [r4]\n\
+ adds r0, 0x7\n\
+ str r0, [r4]\n\
+ b _080214AE\n\
+ .align 2, 0\n\
+_08021444: .4byte gBattlescriptCurrInstr\n\
+_08021448: .4byte gActiveBank\n\
+_0802144C:\n\
+ ldr r0, _08021464 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0802146C\n\
+ adds r0, r2, 0x7\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _08021468 @ =BattleScript_Pausex20\n\
+ b _080214AC\n\
+ .align 2, 0\n\
+_08021464: .4byte gHitMarker\n\
+_08021468: .4byte BattleScript_Pausex20\n\
+_0802146C:\n\
+ adds r0, r4, 0\n\
+ subs r0, 0xA\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x3\n\
+ bls _08021498\n\
+ ldr r1, _08021490 @ =gStatuses3\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08021494 @ =0x000400c0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021498\n\
+ adds r0, r2, 0x7\n\
+ b _080214AC\n\
+ .align 2, 0\n\
+_08021490: .4byte gStatuses3\n\
+_08021494: .4byte 0x000400c0\n\
+_08021498:\n\
+ ldrb r1, [r2, 0x2]\n\
+ ldrh r2, [r3]\n\
+ movs r0, 0\n\
+ bl EmitBattleAnimation\n\
+ ldrb r0, [r6]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, [r5]\n\
+ adds r0, 0x7\n\
+_080214AC:\n\
+ str r0, [r5]\n\
+_080214AE:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+#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)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ ldr r6, _0802151C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r6]\n\
+ ldrb r0, [r0, 0x1]\n\
+ bl GetBattleBank\n\
+ ldr r7, _08021520 @ =gActiveBank\n\
+ strb r0, [r7]\n\
+ ldr r2, [r6]\n\
+ ldrb r1, [r2, 0x2]\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 8\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 16\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x5]\n\
+ lsls r0, 24\n\
+ adds r3, r1, r0\n\
+ ldrb r1, [r2, 0x6]\n\
+ ldrb r0, [r2, 0x7]\n\
+ lsls r0, 8\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x8]\n\
+ lsls r0, 16\n\
+ adds r1, r0\n\
+ ldrb r0, [r2, 0x9]\n\
+ lsls r0, 24\n\
+ adds r4, r1, r0\n\
+ ldrb r5, [r3]\n\
+ adds r0, r5, 0\n\
+ cmp r0, 0x1\n\
+ beq _080214FE\n\
+ cmp r0, 0x11\n\
+ beq _080214FE\n\
+ cmp r0, 0x2\n\
+ bne _08021524\n\
+_080214FE:\n\
+ ldrb r1, [r3]\n\
+ ldrh r2, [r4]\n\
+ movs r0, 0\n\
+ bl EmitBattleAnimation\n\
+ ldr r0, _08021520 @ =gActiveBank\n\
+ ldrb r0, [r0]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r1, _0802151C @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0xA\n\
+ str r0, [r1]\n\
+ b _0802157A\n\
+ .align 2, 0\n\
+_0802151C: .4byte gBattlescriptCurrInstr\n\
+_08021520: .4byte gActiveBank\n\
+_08021524:\n\
+ ldr r0, _08021534 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021538\n\
+ adds r0, r2, 0\n\
+ b _08021576\n\
+ .align 2, 0\n\
+_08021534: .4byte gHitMarker\n\
+_08021538:\n\
+ adds r0, r5, 0\n\
+ subs r0, 0xA\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x3\n\
+ bls _08021564\n\
+ ldr r1, _0802155C @ =gStatuses3\n\
+ ldrb r0, [r7]\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08021560 @ =0x000400c0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021564\n\
+ adds r0, r2, 0\n\
+ b _08021576\n\
+ .align 2, 0\n\
+_0802155C: .4byte gStatuses3\n\
+_08021560: .4byte 0x000400c0\n\
+_08021564:\n\
+ ldrb r1, [r3]\n\
+ ldrh r2, [r4]\n\
+ movs r0, 0\n\
+ bl EmitBattleAnimation\n\
+ ldrb r0, [r7]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, [r6]\n\
+_08021576:\n\
+ adds r0, 0xA\n\
+ str r0, [r6]\n\
+_0802157A:\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .syntax divided ");
+}
+#endif // NONMATCHING
+
+static void atk47_setgraphicalstatchangevalues(void)
+{
+ u8 to_add = 0;
+ switch (BATTLE_STRUCT->statChanger & 0xF0)
+ {
+ case 0x10: //+1
+ to_add = 0xF;
+ break;
+ case 0x20: //+2
+ to_add = 0x27;
+ break;
+ case 0x90: //-1
+ to_add = 0x16;
+ break;
+ case 0xA0: //-2
+ to_add = 0x2E;
+ break;
+ }
+ BATTLE_STRUCT->animArg1 = (BATTLE_STRUCT->statChanger & 0xF) + to_add - 1;
+ BATTLE_STRUCT->animArg2 = 0;
+ gBattlescriptCurrInstr++;
+}
+
+#ifdef NONMATCHING
+static void atk48_playstatchangeanimation(void)
+{
+ int curr_stat = 0;
+ u16 stat_animID = 0;
+ int changeable_stats = 0;
+ u32 stats_to_check;
+ u8 arg3;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ stats_to_check = BSScriptRead8(gBattlescriptCurrInstr + 2);
+ arg3 = BSScriptRead8(gBattlescriptCurrInstr + 3);
+ if (arg3 & 1)
+ {
+ u16 r1 = 0x15;
+ if (arg3 & 0x2)
+ r1 = 0x2D;
+ while (stats_to_check != 0)
+ {
+ if (!(stats_to_check & 1))
+ continue;
+ if (!(BSScriptRead8(gBattlescriptCurrInstr + 3)))
+ {
+ u8 ability;
+ if (gSideTimer[GetBankIdentity(gActiveBank) & 1].mistTimer)
+ continue;
+ ability = gBattleMons[gActiveBank].ability;
+ if (ability == ABILITY_CLEAR_BODY || ability == ABILITY_WHITE_SMOKE || (ability == ABILITY_KEEN_EYE && curr_stat == 6) || (ability == ABILITY_HYPER_CUTTER && curr_stat == 1))
+ continue;
+ }
+ if (gBattleMons[gActiveBank].statStages[curr_stat] > 0)
+ {
+ stat_animID = r1;
+ changeable_stats++;
+ }
+
+ stats_to_check >>= 1;
+ r1 += 1;
+ curr_stat++;
+ }
+ if (changeable_stats > 1 && BSScriptRead8(gBattlescriptCurrInstr + 3) & 2)
+ stat_animID = 0x39;
+ else
+ stat_animID = 0x3A;
+ }
+ else
+ {
+ u16 r1 = 0x15;
+ if (arg3 & 0x2)
+ r1 = 0x2D;
+ while (stats_to_check != 0)
+ {
+ if (!(stats_to_check & 1))
+ continue;
+ if (gBattleMons[gActiveBank].statStages[curr_stat] < 0xB)
+ {
+ stat_animID = r1;
+ changeable_stats++;
+ }
+
+ stats_to_check >>= 1;
+ r1 += 1;
+ curr_stat++;
+ }
+ if (changeable_stats > 1 && BSScriptRead8(gBattlescriptCurrInstr + 3) & 2)
+ stat_animID = 0x37;
+ else
+ stat_animID = 0x38;
+ }
+ if ((BSScriptRead8(gBattlescriptCurrInstr + 3) & 2 && changeable_stats <= 1)
+ || changeable_stats == 0 || BATTLE_STRUCT->filler2[0] != 0)
+ gBattlescriptCurrInstr += 4;
+ else
+ {
+ EmitBattleAnimation(0, 1, stat_animID);
+ MarkBufferBankForExecution(gActiveBank);
+ if ((BSScriptRead8(gBattlescriptCurrInstr + 3) & 4) && changeable_stats > 1)
+ BATTLE_STRUCT->filler2[0] = 1;
+ gBattlescriptCurrInstr += 4;
+ }
+}
+
+#else
+__attribute__((naked))
+static void atk48_playstatchangeanimation(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\
+ movs r7, 0\n\
+ movs r0, 0\n\
+ mov r8, r0\n\
+ movs r3, 0\n\
+ ldr r5, _08021670 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r5]\n\
+ ldrb r0, [r0, 0x1]\n\
+ str r3, [sp]\n\
+ bl GetBattleBank\n\
+ ldr r2, _08021674 @ =gActiveBank\n\
+ strb r0, [r2]\n\
+ ldr r0, [r5]\n\
+ ldrb r4, [r0, 0x2]\n\
+ ldrb r1, [r0, 0x3]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ ldr r3, [sp]\n\
+ cmp r0, 0\n\
+ beq _08021710\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ movs r1, 0x15\n\
+ cmp r0, 0\n\
+ beq _0802163C\n\
+ movs r1, 0x2D\n\
+_0802163C:\n\
+ cmp r4, 0\n\
+ beq _080216E4\n\
+ movs r0, 0x1\n\
+ mov r10, r0\n\
+ ldr r0, _08021678 @ =gUnknown_02024A98\n\
+ mov r9, r0\n\
+ lsls r5, r1, 16\n\
+_0802164A:\n\
+ adds r0, r4, 0\n\
+ mov r1, r10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080216D6\n\
+ ldr r0, _08021670 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r0, 0x3]\n\
+ movs r0, 0x8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0802167C\n\
+ ldr r0, _08021674 @ =gActiveBank\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r7, r0\n\
+ b _080216C4\n\
+ .align 2, 0\n\
+_08021670: .4byte gBattlescriptCurrInstr\n\
+_08021674: .4byte gActiveBank\n\
+_08021678: .4byte gUnknown_02024A98\n\
+_0802167C:\n\
+ ldr r6, _08021700 @ =gActiveBank\n\
+ ldrb r0, [r6]\n\
+ str r3, [sp]\n\
+ bl GetBankIdentity\n\
+ mov r1, r10\n\
+ ands r1, r0\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ ldr r1, _08021704 @ =gSideTimer\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x2]\n\
+ ldr r3, [sp]\n\
+ cmp r0, 0\n\
+ bne _080216D6\n\
+ ldr r0, _08021708 @ =gBattleMons\n\
+ ldrb r2, [r6]\n\
+ movs r1, 0x58\n\
+ muls r2, r1\n\
+ adds r0, r2, r0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x1D\n\
+ beq _080216D6\n\
+ cmp r0, 0x49\n\
+ beq _080216D6\n\
+ cmp r0, 0x33\n\
+ bne _080216BA\n\
+ cmp r7, 0x6\n\
+ beq _080216D6\n\
+_080216BA:\n\
+ cmp r0, 0x34\n\
+ bne _080216C2\n\
+ cmp r7, 0x1\n\
+ beq _080216D6\n\
+_080216C2:\n\
+ adds r0, r7, r2\n\
+_080216C4:\n\
+ add r0, r9\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0\n\
+ ble _080216D6\n\
+ lsrs r0, r5, 16\n\
+ mov r8, r0\n\
+ adds r3, 0x1\n\
+_080216D6:\n\
+ lsrs r4, 1\n\
+ movs r1, 0x80\n\
+ lsls r1, 9\n\
+ adds r5, r1\n\
+ adds r7, 0x1\n\
+ cmp r4, 0\n\
+ bne _0802164A\n\
+_080216E4:\n\
+ ldr r0, _0802170C @ =gBattlescriptCurrInstr\n\
+ mov r9, r0\n\
+ cmp r3, 0x1\n\
+ ble _08021772\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r0, 0x3]\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ movs r1, 0x39\n\
+ mov r8, r1\n\
+ cmp r0, 0\n\
+ beq _08021772\n\
+ movs r0, 0x3A\n\
+ b _08021770\n\
+ .align 2, 0\n\
+_08021700: .4byte gActiveBank\n\
+_08021704: .4byte gSideTimer\n\
+_08021708: .4byte gBattleMons\n\
+_0802170C: .4byte gBattlescriptCurrInstr\n\
+_08021710:\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ movs r1, 0xE\n\
+ cmp r0, 0\n\
+ beq _0802171C\n\
+ movs r1, 0x26\n\
+_0802171C:\n\
+ mov r9, r5\n\
+ cmp r4, 0\n\
+ beq _08021758\n\
+ ldr r6, _0802178C @ =gUnknown_02024A98\n\
+ adds r5, r2, 0\n\
+ lsls r2, r1, 16\n\
+_08021728:\n\
+ movs r0, 0x1\n\
+ ands r0, r4\n\
+ cmp r0, 0\n\
+ beq _0802174A\n\
+ ldrb r1, [r5]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r7, r0\n\
+ adds r0, r6\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0xB\n\
+ bgt _0802174A\n\
+ lsrs r1, r2, 16\n\
+ mov r8, r1\n\
+ adds r3, 0x1\n\
+_0802174A:\n\
+ lsrs r4, 1\n\
+ movs r0, 0x80\n\
+ lsls r0, 9\n\
+ adds r2, r0\n\
+ adds r7, 0x1\n\
+ cmp r4, 0\n\
+ bne _08021728\n\
+_08021758:\n\
+ cmp r3, 0x1\n\
+ ble _08021772\n\
+ mov r1, r9\n\
+ ldr r0, [r1]\n\
+ ldrb r1, [r0, 0x3]\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ movs r1, 0x37\n\
+ mov r8, r1\n\
+ cmp r0, 0\n\
+ beq _08021772\n\
+ movs r0, 0x38\n\
+_08021770:\n\
+ mov r8, r0\n\
+_08021772:\n\
+ mov r1, r9\n\
+ ldr r2, [r1]\n\
+ ldrb r1, [r2, 0x3]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021790\n\
+ cmp r3, 0x1\n\
+ bgt _08021790\n\
+ adds r0, r2, 0x4\n\
+ mov r1, r9\n\
+ b _080217E6\n\
+ .align 2, 0\n\
+_0802178C: .4byte gUnknown_02024A98\n\
+_08021790:\n\
+ cmp r3, 0\n\
+ beq _080217E0\n\
+ ldr r0, _080217D0 @ =0x02000000\n\
+ ldr r1, _080217D4 @ =0x000160dc\n\
+ adds r4, r0, r1\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _080217E0\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ mov r2, r8\n\
+ str r3, [sp]\n\
+ bl EmitBattleAnimation\n\
+ ldr r0, _080217D8 @ =gActiveBank\n\
+ ldrb r0, [r0]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, _080217DC @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r0, 0x3]\n\
+ movs r0, 0x4\n\
+ ands r0, r1\n\
+ ldr r3, [sp]\n\
+ cmp r0, 0\n\
+ beq _080217CC\n\
+ cmp r3, 0x1\n\
+ ble _080217CC\n\
+ movs r0, 0x1\n\
+ strb r0, [r4]\n\
+_080217CC:\n\
+ ldr r1, _080217DC @ =gBattlescriptCurrInstr\n\
+ b _080217E2\n\
+ .align 2, 0\n\
+_080217D0: .4byte 0x02000000\n\
+_080217D4: .4byte 0x000160dc\n\
+_080217D8: .4byte gActiveBank\n\
+_080217DC: .4byte gBattlescriptCurrInstr\n\
+_080217E0:\n\
+ mov r1, r9\n\
+_080217E2:\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x4\n\
+_080217E6:\n\
+ str r0, [r1]\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");
+}
+
+#endif // NONMATCHING
+
+#ifdef NONMATCHING
+static void atk49_moveendturn(void)
+{
+ int i;
+ int effect = 0;
+ u16 last_move = 0, *choiced_move_atk;
+ int arg1, arg2, hold_effect_atk, move_type;
+ if (gLastUsedMove != 0xFFFF)
+ last_move = gLastUsedMove;
+
+ arg1 = BSScriptRead8(gBattlescriptCurrInstr + 1);
+ arg2 = BSScriptRead8(gBattlescriptCurrInstr + 2);
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ hold_effect_atk = gEnigmaBerries[gBankAttacker].holdEffect;
+ else
+ hold_effect_atk = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+
+ choiced_move_atk = (u16*)(gBankAttacker * 0x020160e8);
+ if (BATTLE_STRUCT->dynamicMoveType)
+ move_type = BATTLE_STRUCT->dynamicMoveType & 0x3F;
+ else
+ move_type = gBattleMoves[gCurrentMove].type;
+
+ do
+ {
+ switch (BATTLE_STRUCT->cmd49StateTracker)
+ {
+ case 0: //rage check
+ if (gBattleMons[gBankTarget].status2 & STATUS2_RAGE
+ && gBattleMons[gBankTarget].hp && gBankAttacker != gBankTarget
+ && GetBankSide(gBankAttacker) != GetBankSide(gBankTarget)
+ && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && TARGET_TURN_DAMAGED
+ && gBattleMoves[gCurrentMove].power && gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] <= 0xB)
+ {
+ gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK]++;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = gUnknown_081D9132;
+ effect = 1;
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 1: //defrosting check
+ if (gBattleMons[gBankTarget].status1 & STATUS_FREEZE
+ && gBattleMons[gBankTarget].hp && gBankAttacker != gBankTarget
+ && gSpecialStatuses[gBankTarget].moveturnLostHP
+ && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT) && move_type == TYPE_FIRE)
+ {
+ gBattleMons[gBankTarget].status1 &= ~(STATUS_FREEZE);
+ gActiveBank = gBankTarget;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gBankTarget].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = gUnknown_081D955D;
+ effect = 1;
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 2: //target synchronize
+ if (AbilityBattleEffects(ABILITYEFFECT_SYNCHRONIZE, gBankTarget, 0, 0, 0))
+ effect = 1;
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 3: //contact abilities
+ if (AbilityBattleEffects(ABILITYEFFECT_CONTACT, gBankTarget, 0, 0, 0))
+ effect = 1;
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 4: //status immunities
+ if (AbilityBattleEffects(ABILITYEFFECT_IMMUNITY, 0, 0, 0, 0))
+ effect = 1; //it loops through 4 banks, so we increment after its done with all banks
+ else
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 5: //attacker synchronize
+ if (AbilityBattleEffects(ABILITYEFFECT_ATK_SYNCHRONIZE, gBankAttacker, 0, 0, 0))
+ effect = 1;
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 6: //update choice band move
+ if (gHitMarker & HITMARKER_OBEYS && hold_effect_atk == HOLD_EFFECT_CHOICE_BAND
+ && gLastUsedMove != MOVE_STRUGGLE && (*choiced_move_atk == 0 || *choiced_move_atk == 0xFFF)
+ && gLastUsedMove != MOVE_BATON_PASS && !(gBattleMoveFlags & MOVESTATUS_NOEFFECT))
+ {
+ *choiced_move_atk = gLastUsedMove;
+ for (i = 0; i < 4 && gBattleMons[gBankAttacker].moves[i] != *choiced_move_atk; i++){}
+ if (i == 4)
+ *choiced_move_atk = 0;
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 7: //changed held items
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ #define CHANGED_ITEM (((*u16)(0x020160f0)))
+ if (CHANGED_ITEM(i))
+ gBattleMons[i].item = CHANGED_ITEM(i);
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 8: //make sprite invisible
+ if (gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER)
+ && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ gActiveBank = gBankAttacker;
+ EmitSpriteInvisibility(0, 1);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ //sub_8015660 CheckIfMoveFailed
+ case 9: //semi-invlurneable attacker make visible
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankAttacker] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
+ || sub_8015660(gBankAttacker))
+ {
+ gActiveBank = gBankAttacker;
+ EmitSpriteInvisibility(0, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER);
+ gSpecialStatuses[gBankAttacker].restored_bank_sprite = 1;
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 10: //semi-invlurneable target make visible
+ if (!(gBattleMoveFlags & MOVESTATUS_NOEFFECT) || !(gStatuses3[gBankTarget] & (STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER))
+ || sub_8015660(gBankTarget))
+ {
+ gActiveBank = gBankTarget;
+ EmitSpriteInvisibility(0, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ gStatuses3 &= ~(STATUS3_ON_AIR | STATUS3_UNDERGROUND | STATUS3_UNDERWATER);
+ gSpecialStatuses[gBankTarget].restored_bank_sprite = 1;
+ }
+ BATTLE_STRUCT->cmd49StateTracker++;
+ break;
+ case 11: //
+ }
+
+ } while (effect == 0)
+}
+#else
+__attribute__((naked))
+static void atk49_moveendturn(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, 0x18\n\
+ movs r0, 0\n\
+ mov r10, r0\n\
+ ldr r0, _08021834 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r0, 0x1]\n\
+ str r1, [sp, 0x10]\n\
+ ldrb r0, [r0, 0x2]\n\
+ str r0, [sp, 0x14]\n\
+ ldr r1, _08021838 @ =gBattleMons\n\
+ ldr r0, _0802183C @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r1, r0, r1\n\
+ ldrh r0, [r1, 0x2E]\n\
+ cmp r0, 0xAF\n\
+ bne _08021844\n\
+ ldr r1, _08021840 @ =gEnigmaBerries\n\
+ lsls r0, r2, 3\n\
+ subs r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x7]\n\
+ b _0802184E\n\
+ .align 2, 0\n\
+_08021834: .4byte gBattlescriptCurrInstr\n\
+_08021838: .4byte gBattleMons\n\
+_0802183C: .4byte gBankAttacker\n\
+_08021840: .4byte gEnigmaBerries\n\
+_08021844:\n\
+ ldrh r0, [r1, 0x2E]\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+_0802184E:\n\
+ str r0, [sp, 0x8]\n\
+ ldr r0, _0802186C @ =gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ lsls r1, 1\n\
+ ldr r0, _08021870 @ =0x020160e8\n\
+ adds r1, r0\n\
+ str r1, [sp, 0xC]\n\
+ subs r0, 0xCC\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080218C0\n\
+ movs r2, 0x3F\n\
+ ands r2, r0\n\
+ str r2, [sp, 0x4]\n\
+ b _080218D2\n\
+ .align 2, 0\n\
+_0802186C: .4byte gBankAttacker\n\
+_08021870: .4byte 0x020160e8\n\
+_08021874:\n\
+ strb r2, [r7]\n\
+ ldr r0, [r5]\n\
+ orrs r0, r6\n\
+ str r0, [r5]\n\
+ ldr r0, _080218AC @ =0x02000000\n\
+ ldr r3, _080218B0 @ =0x0001600c\n\
+ adds r0, r3\n\
+ strb r4, [r0]\n\
+ bl MoveValuesCleanUp\n\
+ ldr r2, _080218B4 @ =gBattleScriptsEffectsTable\n\
+ mov r4, r8\n\
+ ldrh r1, [r4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ add r0, r9\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldr r0, [r0]\n\
+ bl b_movescr_stack_push\n\
+ ldr r1, _080218B8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _080218BC @ =gUnknown_081D9B2D\n\
+ bl _0802229C\n\
+ .align 2, 0\n\
+_080218AC: .4byte 0x02000000\n\
+_080218B0: .4byte 0x0001600c\n\
+_080218B4: .4byte gBattleScriptsEffectsTable\n\
+_080218B8: .4byte gBattlescriptCurrInstr\n\
+_080218BC: .4byte gUnknown_081D9B2D\n\
+_080218C0:\n\
+ ldr r2, _080218D8 @ =gBattleMoves\n\
+ ldr r0, _080218DC @ =gCurrentMove\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0, 0x2]\n\
+ str r0, [sp, 0x4]\n\
+_080218D2:\n\
+ ldr r5, _080218E0 @ =0x02000000\n\
+ mov r12, r5\n\
+ b _080218EE\n\
+ .align 2, 0\n\
+_080218D8: .4byte gBattleMoves\n\
+_080218DC: .4byte gCurrentMove\n\
+_080218E0: .4byte 0x02000000\n\
+_080218E4:\n\
+ mov r0, r10\n\
+ cmp r0, 0\n\
+ beq _080218EE\n\
+ bl _08022286\n\
+_080218EE:\n\
+ ldr r0, _08021908 @ =0x0001600c\n\
+ add r0, r12\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x11\n\
+ bls _080218FC\n\
+ bl _0802224E\n\
+_080218FC:\n\
+ lsls r0, 2\n\
+ ldr r1, _0802190C @ =_08021910\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_08021908: .4byte 0x0001600c\n\
+_0802190C: .4byte _08021910\n\
+ .align 2, 0\n\
+_08021910:\n\
+ .4byte _08021958\n\
+ .4byte _08021A34\n\
+ .4byte _08021AF0\n\
+ .4byte _08021B20\n\
+ .4byte _08021B44\n\
+ .4byte _08021B78\n\
+ .4byte _08021B9C\n\
+ .4byte _08021C40\n\
+ .4byte _08021C78\n\
+ .4byte _08021CA8\n\
+ .4byte _08021CCC\n\
+ .4byte _08021D18\n\
+ .4byte _08021DAC\n\
+ .4byte _08021E30\n\
+ .4byte _08021E70\n\
+ .4byte _08022068\n\
+ .4byte _080221C0\n\
+ .4byte _0802224E\n\
+_08021958:\n\
+ ldr r5, _08021A08 @ =gBattleMons\n\
+ ldr r2, _08021A0C @ =gBankTarget\n\
+ ldrb r4, [r2]\n\
+ movs r6, 0x58\n\
+ adds r3, r4, 0\n\
+ muls r3, r6\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x50\n\
+ adds r0, r3, r0\n\
+ ldr r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 16\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _080219FE\n\
+ adds r0, r3, r5\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ beq _080219FE\n\
+ ldr r0, _08021A10 @ =gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ cmp r1, r4\n\
+ beq _080219FE\n\
+ adds r0, r1, 0\n\
+ bl GetBankSide\n\
+ adds r4, r0, 0\n\
+ ldr r1, _08021A0C @ =gBankTarget\n\
+ ldrb r0, [r1]\n\
+ bl GetBankSide\n\
+ lsls r4, 24\n\
+ lsls r0, 24\n\
+ cmp r4, r0\n\
+ beq _080219FE\n\
+ ldr r0, _08021A14 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080219FE\n\
+ ldr r2, _08021A18 @ =gProtectStructs\n\
+ ldr r4, _08021A0C @ =gBankTarget\n\
+ ldrb r3, [r4]\n\
+ lsls r1, r3, 4\n\
+ adds r0, r2, 0x4\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080219C8\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _080219FE\n\
+_080219C8:\n\
+ ldr r2, _08021A1C @ =gBattleMoves\n\
+ ldr r0, _08021A20 @ =gCurrentMove\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0, 0x1]\n\
+ cmp r0, 0\n\
+ beq _080219FE\n\
+ adds r0, r3, 0\n\
+ muls r0, r6\n\
+ adds r1, r0, r5\n\
+ ldrb r2, [r1, 0x19]\n\
+ movs r0, 0x19\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0xB\n\
+ bgt _080219FE\n\
+ adds r0, r2, 0x1\n\
+ strb r0, [r1, 0x19]\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08021A24 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08021A28 @ =gUnknown_081D9132\n\
+ str r0, [r1]\n\
+ movs r5, 0x1\n\
+ mov r10, r5\n\
+_080219FE:\n\
+ ldr r2, _08021A2C @ =0x02000000\n\
+ ldr r0, _08021A30 @ =0x0001600c\n\
+ adds r1, r2, r0\n\
+ b _08021E00\n\
+ .align 2, 0\n\
+_08021A08: .4byte gBattleMons\n\
+_08021A0C: .4byte gBankTarget\n\
+_08021A10: .4byte gBankAttacker\n\
+_08021A14: .4byte gBattleMoveFlags\n\
+_08021A18: .4byte gProtectStructs\n\
+_08021A1C: .4byte gBattleMoves\n\
+_08021A20: .4byte gCurrentMove\n\
+_08021A24: .4byte gBattlescriptCurrInstr\n\
+_08021A28: .4byte gUnknown_081D9132\n\
+_08021A2C: .4byte 0x02000000\n\
+_08021A30: .4byte 0x0001600c\n\
+_08021A34:\n\
+ ldr r2, _08021AD0 @ =gBattleMons\n\
+ ldr r1, _08021AD4 @ =gBankTarget\n\
+ ldrb r4, [r1]\n\
+ movs r3, 0x58\n\
+ mov r12, r3\n\
+ mov r3, r12\n\
+ muls r3, r4\n\
+ adds r7, r2, 0\n\
+ adds r7, 0x4C\n\
+ adds r6, r3, r7\n\
+ ldr r5, [r6]\n\
+ movs r0, 0x20\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ bne _08021A54\n\
+ b _08021DFA\n\
+_08021A54:\n\
+ adds r0, r3, r2\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08021A5E\n\
+ b _08021DFA\n\
+_08021A5E:\n\
+ ldr r0, _08021AD8 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r4\n\
+ bne _08021A68\n\
+ b _08021DFA\n\
+_08021A68:\n\
+ ldr r0, _08021ADC @ =gSpecialStatuses\n\
+ lsls r1, r4, 2\n\
+ adds r1, r4\n\
+ lsls r1, 2\n\
+ adds r0, 0xC\n\
+ adds r1, r0\n\
+ ldr r0, [r1]\n\
+ cmp r0, 0\n\
+ bne _08021A7C\n\
+ b _08021DFA\n\
+_08021A7C:\n\
+ ldr r0, _08021AE0 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021A8A\n\
+ b _08021DFA\n\
+_08021A8A:\n\
+ ldr r4, [sp, 0x4]\n\
+ cmp r4, 0xA\n\
+ beq _08021A92\n\
+ b _08021DFA\n\
+_08021A92:\n\
+ movs r0, 0x21\n\
+ negs r0, r0\n\
+ ands r5, r0\n\
+ str r5, [r6]\n\
+ ldr r4, _08021AE4 @ =gActiveBank\n\
+ ldr r5, _08021AD4 @ =gBankTarget\n\
+ ldrb r0, [r5]\n\
+ strb r0, [r4]\n\
+ ldrb r0, [r5]\n\
+ mov r1, r12\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ adds r0, r7\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x28\n\
+ movs r2, 0\n\
+ movs r3, 0x4\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ bl b_movescr_stack_push_cursor\n\
+ ldr r1, _08021AE8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08021AEC @ =gUnknown_081D955D\n\
+ str r0, [r1]\n\
+ movs r2, 0x1\n\
+ mov r10, r2\n\
+ b _08021DFA\n\
+ .align 2, 0\n\
+_08021AD0: .4byte gBattleMons\n\
+_08021AD4: .4byte gBankTarget\n\
+_08021AD8: .4byte gBankAttacker\n\
+_08021ADC: .4byte gSpecialStatuses\n\
+_08021AE0: .4byte gBattleMoveFlags\n\
+_08021AE4: .4byte gActiveBank\n\
+_08021AE8: .4byte gBattlescriptCurrInstr\n\
+_08021AEC: .4byte gUnknown_081D955D\n\
+_08021AF0:\n\
+ ldr r0, _08021B14 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x7\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08021B0C\n\
+ movs r4, 0x1\n\
+ mov r10, r4\n\
+_08021B0C:\n\
+ ldr r2, _08021B18 @ =0x02000000\n\
+ ldr r5, _08021B1C @ =0x0001600c\n\
+ adds r1, r2, r5\n\
+ b _08021E00\n\
+ .align 2, 0\n\
+_08021B14: .4byte gBankTarget\n\
+_08021B18: .4byte 0x02000000\n\
+_08021B1C: .4byte 0x0001600c\n\
+_08021B20:\n\
+ ldr r0, _08021B40 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x4\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08021B3A\n\
+ b _08021DFA\n\
+_08021B3A:\n\
+ movs r0, 0x1\n\
+ mov r10, r0\n\
+ b _08021DFA\n\
+ .align 2, 0\n\
+_08021B40: .4byte gBankTarget\n\
+_08021B44:\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x5\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08021B68\n\
+ movs r4, 0x1\n\
+ mov r10, r4\n\
+ ldr r5, _08021B64 @ =0x02000000\n\
+ mov r12, r5\n\
+ b _0802224E\n\
+ .align 2, 0\n\
+_08021B64: .4byte 0x02000000\n\
+_08021B68:\n\
+ ldr r2, _08021B70 @ =0x02000000\n\
+ ldr r0, _08021B74 @ =0x0001600c\n\
+ adds r1, r2, r0\n\
+ b _08021E00\n\
+ .align 2, 0\n\
+_08021B70: .4byte 0x02000000\n\
+_08021B74: .4byte 0x0001600c\n\
+_08021B78:\n\
+ ldr r0, _08021B98 @ =gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0\n\
+ str r0, [sp]\n\
+ movs r0, 0x8\n\
+ movs r2, 0\n\
+ movs r3, 0\n\
+ bl AbilityBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08021B92\n\
+ b _08021DFA\n\
+_08021B92:\n\
+ movs r1, 0x1\n\
+ mov r10, r1\n\
+ b _08021DFA\n\
+ .align 2, 0\n\
+_08021B98: .4byte gBankAttacker\n\
+_08021B9C:\n\
+ ldr r0, _08021C28 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 18\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021BE0\n\
+ ldr r4, [sp, 0x8]\n\
+ cmp r4, 0x1D\n\
+ bne _08021BE0\n\
+ ldr r0, _08021C2C @ =gUnknown_02024BE8\n\
+ ldrh r2, [r0]\n\
+ adds r7, r0, 0\n\
+ cmp r2, 0xA5\n\
+ beq _08021BE0\n\
+ ldr r5, [sp, 0xC]\n\
+ ldrh r1, [r5]\n\
+ cmp r1, 0\n\
+ beq _08021BC8\n\
+ ldr r0, _08021C30 @ =0x0000ffff\n\
+ cmp r1, r0\n\
+ bne _08021BE0\n\
+_08021BC8:\n\
+ cmp r2, 0xE2\n\
+ bne _08021BDA\n\
+ ldr r0, _08021C34 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x20\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08021BDA\n\
+ b _08022244\n\
+_08021BDA:\n\
+ ldrh r0, [r7]\n\
+ ldr r1, [sp, 0xC]\n\
+ strh r0, [r1]\n\
+_08021BE0:\n\
+ movs r4, 0\n\
+ ldr r2, _08021C38 @ =gBattleMons\n\
+ ldr r3, _08021C3C @ =gBankAttacker\n\
+ ldrb r1, [r3]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r2, 0xC\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ ldr r5, [sp, 0xC]\n\
+ ldrh r1, [r5]\n\
+ mov r9, r3\n\
+ cmp r0, r1\n\
+ beq _08021C18\n\
+ mov r6, r9\n\
+ movs r3, 0x58\n\
+ adds r5, r1, 0\n\
+_08021C02:\n\
+ adds r4, 0x1\n\
+ cmp r4, 0x3\n\
+ bgt _08021C18\n\
+ lsls r0, r4, 1\n\
+ ldrb r1, [r6]\n\
+ muls r1, r3\n\
+ adds r0, r1\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r5\n\
+ bne _08021C02\n\
+_08021C18:\n\
+ cmp r4, 0x4\n\
+ beq _08021C1E\n\
+ b _08022244\n\
+_08021C1E:\n\
+ movs r0, 0\n\
+ ldr r1, [sp, 0xC]\n\
+_08021C22:\n\
+ strh r0, [r1]\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_08021C28: .4byte gHitMarker\n\
+_08021C2C: .4byte gUnknown_02024BE8\n\
+_08021C30: .4byte 0x0000ffff\n\
+_08021C34: .4byte gBattleMoveFlags\n\
+_08021C38: .4byte gBattleMons\n\
+_08021C3C: .4byte gBankAttacker\n\
+_08021C40:\n\
+ movs r4, 0\n\
+ ldr r0, _08021C6C @ =gNoOfAllBanks\n\
+ ldrb r2, [r0]\n\
+ cmp r4, r2\n\
+ blt _08021C4C\n\
+ b _08022244\n\
+_08021C4C:\n\
+ movs r5, 0\n\
+ ldr r2, _08021C70 @ =0x020160f0\n\
+ ldr r3, _08021C74 @ =gBattleMons\n\
+_08021C52:\n\
+ ldrh r1, [r2]\n\
+ cmp r1, 0\n\
+ beq _08021C5C\n\
+ strh r1, [r3, 0x2E]\n\
+ strh r5, [r2]\n\
+_08021C5C:\n\
+ adds r2, 0x2\n\
+ adds r3, 0x58\n\
+ adds r4, 0x1\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ blt _08021C52\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_08021C6C: .4byte gNoOfAllBanks\n\
+_08021C70: .4byte 0x020160f0\n\
+_08021C74: .4byte gBattleMons\n\
+_08021C78:\n\
+ movs r0, 0x3\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ bl ItemBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08021C98\n\
+ movs r2, 0x1\n\
+ mov r10, r2\n\
+ ldr r3, _08021C94 @ =0x02000000\n\
+ mov r12, r3\n\
+ b _0802224E\n\
+ .align 2, 0\n\
+_08021C94: .4byte 0x02000000\n\
+_08021C98:\n\
+ ldr r2, _08021CA0 @ =0x02000000\n\
+ ldr r4, _08021CA4 @ =0x0001600c\n\
+ adds r1, r2, r4\n\
+ b _08021E00\n\
+ .align 2, 0\n\
+_08021CA0: .4byte 0x02000000\n\
+_08021CA4: .4byte 0x0001600c\n\
+_08021CA8:\n\
+ movs r0, 0x4\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ bl ItemBattleEffects\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08021CBC\n\
+ movs r5, 0x1\n\
+ mov r10, r5\n\
+_08021CBC:\n\
+ ldr r2, _08021CC4 @ =0x02000000\n\
+ ldr r0, _08021CC8 @ =0x0001600c\n\
+ adds r1, r2, r0\n\
+ b _08021E00\n\
+ .align 2, 0\n\
+_08021CC4: .4byte 0x02000000\n\
+_08021CC8: .4byte 0x0001600c\n\
+_08021CCC:\n\
+ ldr r1, _08021D04 @ =gStatuses3\n\
+ ldr r0, _08021D08 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ lsls r0, r2, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08021D0C @ =0x000400c0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08021CE2\n\
+ b _08021DFA\n\
+_08021CE2:\n\
+ ldr r0, _08021D10 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x80\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08021CF0\n\
+ b _08021DFA\n\
+_08021CF0:\n\
+ ldr r4, _08021D14 @ =gActiveBank\n\
+ strb r2, [r4]\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ bl EmitSpriteInvisibility\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ b _08021DFA\n\
+ .align 2, 0\n\
+_08021D04: .4byte gStatuses3\n\
+_08021D08: .4byte gBankAttacker\n\
+_08021D0C: .4byte 0x000400c0\n\
+_08021D10: .4byte gHitMarker\n\
+_08021D14: .4byte gActiveBank\n\
+_08021D18:\n\
+ ldr r0, _08021D88 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08021D44\n\
+ ldr r1, _08021D8C @ =gStatuses3\n\
+ ldr r0, _08021D90 @ =gBankAttacker\n\
+ ldrb r2, [r0]\n\
+ lsls r0, r2, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08021D94 @ =0x000400c0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021D44\n\
+ adds r0, r2, 0\n\
+ bl sub_8015660\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08021D7E\n\
+_08021D44:\n\
+ ldr r4, _08021D98 @ =gActiveBank\n\
+ ldr r5, _08021D90 @ =gBankAttacker\n\
+ ldrb r0, [r5]\n\
+ strb r0, [r4]\n\
+ movs r0, 0\n\
+ movs r1, 0\n\
+ bl EmitSpriteInvisibility\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, _08021D8C @ =gStatuses3\n\
+ ldrb r2, [r5]\n\
+ lsls r2, 2\n\
+ adds r2, r0\n\
+ ldr r0, [r2]\n\
+ ldr r1, _08021D9C @ =0xfffbff3f\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r2, _08021DA0 @ =gSpecialStatuses\n\
+ ldrb r1, [r5]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x4\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_08021D7E:\n\
+ ldr r2, _08021DA4 @ =0x02000000\n\
+ ldr r4, _08021DA8 @ =0x0001600c\n\
+ adds r1, r2, r4\n\
+ b _08021E00\n\
+ .align 2, 0\n\
+_08021D88: .4byte gBattleMoveFlags\n\
+_08021D8C: .4byte gStatuses3\n\
+_08021D90: .4byte gBankAttacker\n\
+_08021D94: .4byte 0x000400c0\n\
+_08021D98: .4byte gActiveBank\n\
+_08021D9C: .4byte 0xfffbff3f\n\
+_08021DA0: .4byte gSpecialStatuses\n\
+_08021DA4: .4byte 0x02000000\n\
+_08021DA8: .4byte 0x0001600c\n\
+_08021DAC:\n\
+ ldr r2, _08021E0C @ =gSpecialStatuses\n\
+ ldr r1, _08021E10 @ =gBankTarget\n\
+ ldrb r3, [r1]\n\
+ lsls r4, r3, 2\n\
+ adds r0, r4, r3\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 29\n\
+ cmp r0, 0\n\
+ blt _08021DFA\n\
+ ldr r0, _08021E14 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r3, r0\n\
+ bcs _08021DFA\n\
+ ldr r5, _08021E18 @ =gStatuses3\n\
+ adds r0, r4, r5\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08021E1C @ =0x000400c0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08021DFA\n\
+ ldr r4, _08021E20 @ =gActiveBank\n\
+ strb r3, [r4]\n\
+ movs r0, 0\n\
+ movs r1, 0\n\
+ bl EmitSpriteInvisibility\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, _08021E10 @ =gBankTarget\n\
+ ldrb r2, [r0]\n\
+ lsls r2, 2\n\
+ adds r2, r5\n\
+ ldr r0, [r2]\n\
+ ldr r1, _08021E24 @ =0xfffbff3f\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+_08021DFA:\n\
+ ldr r2, _08021E28 @ =0x02000000\n\
+ ldr r3, _08021E2C @ =0x0001600c\n\
+ adds r1, r2, r3\n\
+_08021E00:\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ mov r12, r2\n\
+ b _0802224E\n\
+ .align 2, 0\n\
+_08021E0C: .4byte gSpecialStatuses\n\
+_08021E10: .4byte gBankTarget\n\
+_08021E14: .4byte gNoOfAllBanks\n\
+_08021E18: .4byte gStatuses3\n\
+_08021E1C: .4byte 0x000400c0\n\
+_08021E20: .4byte gActiveBank\n\
+_08021E24: .4byte 0xfffbff3f\n\
+_08021E28: .4byte 0x02000000\n\
+_08021E2C: .4byte 0x0001600c\n\
+_08021E30:\n\
+ movs r4, 0\n\
+ ldr r0, _08021E60 @ =gNoOfAllBanks\n\
+ ldrb r5, [r0]\n\
+ cmp r4, r5\n\
+ blt _08021E3C\n\
+ b _08022244\n\
+_08021E3C:\n\
+ ldr r2, _08021E64 @ =gDisableStructs\n\
+ ldr r5, _08021E68 @ =0xfeffffff\n\
+ adds r3, r0, 0\n\
+ ldr r1, _08021E6C @ =gUnknown_02024AD0\n\
+_08021E44:\n\
+ ldrb r0, [r2, 0xA]\n\
+ cmp r0, 0\n\
+ bne _08021E50\n\
+ ldr r0, [r1]\n\
+ ands r0, r5\n\
+ str r0, [r1]\n\
+_08021E50:\n\
+ adds r2, 0x1C\n\
+ adds r1, 0x58\n\
+ adds r4, 0x1\n\
+ ldrb r0, [r3]\n\
+ cmp r4, r0\n\
+ blt _08021E44\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_08021E60: .4byte gNoOfAllBanks\n\
+_08021E64: .4byte gDisableStructs\n\
+_08021E68: .4byte 0xfeffffff\n\
+_08021E6C: .4byte gUnknown_02024AD0\n\
+_08021E70:\n\
+ ldr r1, _08021F2C @ =gHitMarker\n\
+ ldr r3, [r1]\n\
+ movs r0, 0x80\n\
+ lsls r0, 5\n\
+ ands r0, r3\n\
+ ldr r2, _08021F30 @ =gBankAttacker\n\
+ mov r9, r2\n\
+ adds r5, r1, 0\n\
+ cmp r0, 0\n\
+ beq _08021E9A\n\
+ ldr r0, _08021F34 @ =gActiveBank\n\
+ ldrb r2, [r2]\n\
+ strb r2, [r0]\n\
+ ldr r1, _08021F38 @ =gBankTarget\n\
+ ldrb r0, [r1]\n\
+ mov r4, r9\n\
+ strb r0, [r4]\n\
+ strb r2, [r1]\n\
+ ldr r0, _08021F3C @ =0xffffefff\n\
+ ands r3, r0\n\
+ str r3, [r5]\n\
+_08021E9A:\n\
+ ldr r1, _08021F40 @ =gBattleMoves\n\
+ ldr r2, _08021F44 @ =gUnknown_02024BE8\n\
+ ldrh r3, [r2]\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ mov r8, r1\n\
+ adds r7, r2, 0\n\
+ cmp r0, 0x7F\n\
+ bne _08021EBE\n\
+ ldr r0, _08021F48 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021ECA\n\
+_08021EBE:\n\
+ ldr r1, _08021F4C @ =gUnknown_02024C2C\n\
+ mov r2, r9\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ strh r3, [r0]\n\
+_08021ECA:\n\
+ ldr r0, _08021F50 @ =gAbsentBankFlags\n\
+ ldrb r1, [r0]\n\
+ ldr r2, _08021F54 @ =gBitTable\n\
+ mov r3, r9\n\
+ ldrb r4, [r3]\n\
+ lsls r0, r4, 2\n\
+ adds r0, r2\n\
+ ldr r3, [r0]\n\
+ ands r1, r3\n\
+ adds r6, r2, 0\n\
+ cmp r1, 0\n\
+ beq _08021EE4\n\
+ b _08022244\n\
+_08021EE4:\n\
+ ldr r0, _08021F58 @ =0x000160a6\n\
+ add r0, r12\n\
+ ldrb r0, [r0]\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08021EF2\n\
+ b _08022244\n\
+_08021EF2:\n\
+ ldrh r2, [r7]\n\
+ lsls r0, r2, 1\n\
+ adds r0, r2\n\
+ lsls r0, 2\n\
+ add r0, r8\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x7F\n\
+ bne _08021F04\n\
+ b _08022244\n\
+_08021F04:\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x80\n\
+ lsls r1, 18\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08021F68\n\
+ ldr r1, _08021F5C @ =gLastUsedMove\n\
+ lsls r0, r4, 1\n\
+ adds r0, r1\n\
+ strh r2, [r0]\n\
+ ldr r0, _08021F60 @ =gUnknown_02024C4C\n\
+ mov r4, r9\n\
+ ldrb r1, [r4]\n\
+ lsls r1, 1\n\
+ adds r1, r0\n\
+ ldr r0, _08021F64 @ =gCurrentMove\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1]\n\
+ b _08021F82\n\
+ .align 2, 0\n\
+_08021F2C: .4byte gHitMarker\n\
+_08021F30: .4byte gBankAttacker\n\
+_08021F34: .4byte gActiveBank\n\
+_08021F38: .4byte gBankTarget\n\
+_08021F3C: .4byte 0xffffefff\n\
+_08021F40: .4byte gBattleMoves\n\
+_08021F44: .4byte gUnknown_02024BE8\n\
+_08021F48: .4byte gBattleMoveFlags\n\
+_08021F4C: .4byte gUnknown_02024C2C\n\
+_08021F50: .4byte gAbsentBankFlags\n\
+_08021F54: .4byte gBitTable\n\
+_08021F58: .4byte 0x000160a6\n\
+_08021F5C: .4byte gLastUsedMove\n\
+_08021F60: .4byte gUnknown_02024C4C\n\
+_08021F64: .4byte gCurrentMove\n\
+_08021F68:\n\
+ ldr r1, _08021FD0 @ =gLastUsedMove\n\
+ lsls r0, r4, 1\n\
+ adds r0, r1\n\
+ ldr r1, _08021FD4 @ =0x0000ffff\n\
+ strh r1, [r0]\n\
+ ldr r1, _08021FD8 @ =gUnknown_02024C4C\n\
+ mov r2, r9\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ movs r1, 0x1\n\
+ negs r1, r1\n\
+ strh r1, [r0]\n\
+_08021F82:\n\
+ ldr r2, _08021FDC @ =gBankTarget\n\
+ ldrb r3, [r2]\n\
+ lsls r0, r3, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ lsls r0, 28\n\
+ ldr r1, [r5]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _08021FA0\n\
+ ldr r0, _08021FE0 @ =gUnknown_02024C5C\n\
+ adds r0, r3, r0\n\
+ mov r3, r9\n\
+ ldrb r1, [r3]\n\
+ strb r1, [r0]\n\
+_08021FA0:\n\
+ ldr r0, [r5]\n\
+ movs r1, 0x80\n\
+ lsls r1, 18\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0802204C\n\
+ ldr r0, _08021FE4 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0802204C\n\
+ ldrh r2, [r7]\n\
+ ldr r0, _08021FD4 @ =0x0000ffff\n\
+ cmp r2, r0\n\
+ bne _08021FEC\n\
+ ldr r1, _08021FE8 @ =gMoveHitWith\n\
+ ldr r4, _08021FDC @ =gBankTarget\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ strh r2, [r0]\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_08021FD0: .4byte gLastUsedMove\n\
+_08021FD4: .4byte 0x0000ffff\n\
+_08021FD8: .4byte gUnknown_02024C4C\n\
+_08021FDC: .4byte gBankTarget\n\
+_08021FE0: .4byte gUnknown_02024C5C\n\
+_08021FE4: .4byte gBattleMoveFlags\n\
+_08021FE8: .4byte gMoveHitWith\n\
+_08021FEC:\n\
+ ldr r0, _08022014 @ =gMoveHitWith\n\
+ ldr r5, _08022018 @ =gBankTarget\n\
+ ldrb r1, [r5]\n\
+ lsls r1, 1\n\
+ adds r1, r0\n\
+ ldr r4, _0802201C @ =gCurrentMove\n\
+ ldrh r0, [r4]\n\
+ strh r0, [r1]\n\
+ ldr r0, _08022020 @ =0x0001601c\n\
+ add r0, r12\n\
+ ldrb r3, [r0]\n\
+ cmp r3, 0\n\
+ beq _08022028\n\
+ ldr r0, _08022024 @ =gUnknown_02024C44\n\
+ ldrb r1, [r5]\n\
+ lsls r1, 1\n\
+ adds r1, r0\n\
+ movs r0, 0x3F\n\
+ ands r0, r3\n\
+ b _08021C22\n\
+ .align 2, 0\n\
+_08022014: .4byte gMoveHitWith\n\
+_08022018: .4byte gBankTarget\n\
+_0802201C: .4byte gCurrentMove\n\
+_08022020: .4byte 0x0001601c\n\
+_08022024: .4byte gUnknown_02024C44\n\
+_08022028:\n\
+ ldr r0, _08022044 @ =gUnknown_02024C44\n\
+ ldr r1, _08022048 @ =gBankTarget\n\
+ ldrb r2, [r1]\n\
+ lsls r2, 1\n\
+ adds r2, r0\n\
+ ldrh r1, [r4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ add r0, r8\n\
+ ldrb r0, [r0, 0x2]\n\
+ strh r0, [r2]\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_08022044: .4byte gUnknown_02024C44\n\
+_08022048: .4byte gBankTarget\n\
+_0802204C:\n\
+ ldr r0, _0802205C @ =gMoveHitWith\n\
+ ldr r2, _08022060 @ =gBankTarget\n\
+ ldrb r1, [r2]\n\
+ lsls r1, 1\n\
+ adds r1, r0\n\
+ ldr r0, _08022064 @ =0x0000ffff\n\
+ b _08021C22\n\
+ .align 2, 0\n\
+_0802205C: .4byte gMoveHitWith\n\
+_08022060: .4byte gBankTarget\n\
+_08022064: .4byte 0x0000ffff\n\
+_08022068:\n\
+ ldr r0, _0802212C @ =gAbsentBankFlags\n\
+ ldrb r1, [r0]\n\
+ ldr r6, _08022130 @ =gBitTable\n\
+ ldr r2, _08022134 @ =gBankAttacker\n\
+ ldrb r5, [r2]\n\
+ lsls r0, r5, 2\n\
+ adds r0, r6\n\
+ ldr r4, [r0]\n\
+ ands r1, r4\n\
+ mov r9, r2\n\
+ cmp r1, 0\n\
+ beq _08022082\n\
+ b _08022244\n\
+_08022082:\n\
+ ldr r0, _08022138 @ =0x000160a6\n\
+ add r0, r12\n\
+ ldrb r0, [r0]\n\
+ ands r0, r4\n\
+ cmp r0, 0\n\
+ beq _08022090\n\
+ b _08022244\n\
+_08022090:\n\
+ ldr r1, _0802213C @ =gBattleMoves\n\
+ ldr r4, _08022140 @ =gUnknown_02024BE8\n\
+ ldrh r3, [r4]\n\
+ lsls r0, r3, 1\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r1, [r0, 0x8]\n\
+ movs r0, 0x10\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0802215C\n\
+ ldr r0, _08022144 @ =gHitMarker\n\
+ ldr r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 18\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0802215C\n\
+ ldr r2, _08022148 @ =gBankTarget\n\
+ ldrb r0, [r2]\n\
+ cmp r5, r0\n\
+ bne _080220C0\n\
+ b _08022244\n\
+_080220C0:\n\
+ adds r2, r0, 0\n\
+ lsls r0, r2, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ lsls r0, 28\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0802215C\n\
+ ldr r0, _0802214C @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x29\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0802215C\n\
+ lsls r0, r2, 1\n\
+ ldr r5, _08022150 @ =0x000160ac\n\
+ adds r0, r5\n\
+ add r0, r12\n\
+ strb r3, [r0]\n\
+ ldr r0, _08022148 @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ lsls r1, 1\n\
+ ldr r2, _08022154 @ =0x000160ad\n\
+ adds r1, r2\n\
+ add r1, r12\n\
+ ldrh r0, [r4]\n\
+ lsrs r0, 8\n\
+ strb r0, [r1]\n\
+ ldr r3, _08022148 @ =gBankTarget\n\
+ ldrb r2, [r3]\n\
+ lsls r2, 2\n\
+ mov r5, r9\n\
+ ldrb r0, [r5]\n\
+ lsrs r0, 1\n\
+ lsls r0, 1\n\
+ ldr r1, _08022158 @ =0x00016100\n\
+ adds r0, r1\n\
+ adds r2, r0\n\
+ add r2, r12\n\
+ ldrh r0, [r4]\n\
+ strb r0, [r2]\n\
+ ldrb r2, [r3]\n\
+ lsls r2, 2\n\
+ ldrb r0, [r5]\n\
+ lsrs r0, 1\n\
+ lsls r0, 1\n\
+ adds r1, 0x1\n\
+ adds r0, r1\n\
+ adds r2, r0\n\
+ add r2, r12\n\
+ ldrh r0, [r4]\n\
+ lsrs r0, 8\n\
+ strb r0, [r2]\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_0802212C: .4byte gAbsentBankFlags\n\
+_08022130: .4byte gBitTable\n\
+_08022134: .4byte gBankAttacker\n\
+_08022138: .4byte 0x000160a6\n\
+_0802213C: .4byte gBattleMoves\n\
+_08022140: .4byte gUnknown_02024BE8\n\
+_08022144: .4byte gHitMarker\n\
+_08022148: .4byte gBankTarget\n\
+_0802214C: .4byte gBattleMoveFlags\n\
+_08022150: .4byte 0x000160ac\n\
+_08022154: .4byte 0x000160ad\n\
+_08022158: .4byte 0x00016100\n\
+_0802215C:\n\
+ mov r1, r9\n\
+ ldrb r0, [r1]\n\
+ ldr r2, _080221B4 @ =gBankTarget\n\
+ ldrb r2, [r2]\n\
+ cmp r0, r2\n\
+ beq _08022244\n\
+ ldr r3, _080221B4 @ =gBankTarget\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ ldr r4, _080221B8 @ =0x000160ac\n\
+ adds r0, r4\n\
+ add r0, r12\n\
+ movs r3, 0\n\
+ strb r3, [r0]\n\
+ ldr r5, _080221B4 @ =gBankTarget\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 1\n\
+ ldr r1, _080221BC @ =0x000160ad\n\
+ adds r0, r1\n\
+ add r0, r12\n\
+ strb r3, [r0]\n\
+ ldrb r2, [r5]\n\
+ lsls r2, 2\n\
+ mov r4, r9\n\
+ ldrb r0, [r4]\n\
+ lsrs r0, 1\n\
+ lsls r0, 1\n\
+ adds r1, 0x53\n\
+ adds r0, r1\n\
+ adds r2, r0\n\
+ add r2, r12\n\
+ strb r3, [r2]\n\
+ ldrb r2, [r5]\n\
+ lsls r2, 2\n\
+ ldrb r0, [r4]\n\
+ lsrs r0, 1\n\
+ lsls r0, 1\n\
+ adds r1, 0x1\n\
+ adds r0, r1\n\
+ adds r2, r0\n\
+ add r2, r12\n\
+ strb r3, [r2]\n\
+ b _08022244\n\
+ .align 2, 0\n\
+_080221B4: .4byte gBankTarget\n\
+_080221B8: .4byte 0x000160ac\n\
+_080221BC: .4byte 0x000160ad\n\
+_080221C0:\n\
+ ldr r5, _080222B0 @ =gHitMarker\n\
+ ldr r2, [r5]\n\
+ movs r0, 0x80\n\
+ lsls r0, 12\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ bne _08022244\n\
+ ldr r0, _080222B4 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08022244\n\
+ ldr r1, _080222B8 @ =gProtectStructs\n\
+ ldr r0, _080222BC @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0, 0x1]\n\
+ lsls r0, 29\n\
+ cmp r0, 0\n\
+ blt _08022244\n\
+ ldr r0, _080222C0 @ =gBattleMoves\n\
+ mov r9, r0\n\
+ ldr r1, _080222C4 @ =gCurrentMove\n\
+ mov r8, r1\n\
+ ldrh r0, [r1]\n\
+ lsls r1, r0, 1\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ add r1, r9\n\
+ ldrb r0, [r1, 0x6]\n\
+ cmp r0, 0x8\n\
+ bne _08022244\n\
+ movs r6, 0x80\n\
+ lsls r6, 2\n\
+ adds r4, r6, 0\n\
+ ands r4, r2\n\
+ cmp r4, 0\n\
+ bne _08022244\n\
+ ldr r7, _080222C8 @ =gBankTarget\n\
+ ldrb r0, [r7]\n\
+ bl GetBankIdentity\n\
+ movs r1, 0x2\n\
+ eors r0, r1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankByPlayerAI\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ ldr r1, _080222CC @ =gBattleMons\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r0, r1\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ beq _0802223A\n\
+ bl _08021874\n\
+_0802223A:\n\
+ ldr r0, [r5]\n\
+ orrs r0, r6\n\
+ str r0, [r5]\n\
+ ldr r2, _080222D0 @ =0x02000000\n\
+ mov r12, r2\n\
+_08022244:\n\
+ ldr r1, _080222D4 @ =0x0001600c\n\
+ add r1, r12\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+_0802224E:\n\
+ ldr r3, [sp, 0x10]\n\
+ cmp r3, 0x1\n\
+ bne _08022262\n\
+ mov r4, r10\n\
+ cmp r4, 0\n\
+ bne _08022262\n\
+ ldr r1, _080222D4 @ =0x0001600c\n\
+ add r1, r12\n\
+ movs r0, 0x11\n\
+ strb r0, [r1]\n\
+_08022262:\n\
+ ldr r5, [sp, 0x10]\n\
+ cmp r5, 0x2\n\
+ bne _08022278\n\
+ ldr r1, _080222D4 @ =0x0001600c\n\
+ add r1, r12\n\
+ ldr r0, [sp, 0x14]\n\
+ ldrb r2, [r1]\n\
+ cmp r0, r2\n\
+ bne _08022278\n\
+ movs r0, 0x11\n\
+ strb r0, [r1]\n\
+_08022278:\n\
+ ldr r0, _080222D4 @ =0x0001600c\n\
+ add r0, r12\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x11\n\
+ beq _08022286\n\
+ bl _080218E4\n\
+_08022286:\n\
+ ldr r0, _080222D4 @ =0x0001600c\n\
+ add r0, r12\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x11\n\
+ bne _0802229E\n\
+ mov r3, r10\n\
+ cmp r3, 0\n\
+ bne _0802229E\n\
+ ldr r1, _080222D8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x3\n\
+_0802229C:\n\
+ str r0, [r1]\n\
+_0802229E:\n\
+ add sp, 0x18\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\
+_080222B0: .4byte gHitMarker\n\
+_080222B4: .4byte gBattleTypeFlags\n\
+_080222B8: .4byte gProtectStructs\n\
+_080222BC: .4byte gBankAttacker\n\
+_080222C0: .4byte gBattleMoves\n\
+_080222C4: .4byte gCurrentMove\n\
+_080222C8: .4byte gBankTarget\n\
+_080222CC: .4byte gBattleMons\n\
+_080222D0: .4byte 0x02000000\n\
+_080222D4: .4byte 0x0001600c\n\
+_080222D8: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided"
+ );
+}
+#endif // NONMATCHING
+
+static void atk4A_typecalc2(void)
+{
+ u8 flags = 0;
+ int i = 0;
+ u8 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;
+ gBattleCommunication[6] = move_type;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ else
+ {
+ while (gTypeEffectiveness[i]!= TYPE_ENDTABLE)
+ {
+ if (gTypeEffectiveness[i] == TYPE_FORESIGHT)
+ {
+ if (gBattleMons[gBankTarget].status2 & STATUS2_FORESIGHT) {break;}
+ else {i += 3; continue;}
+ }
+
+ if (gTypeEffectiveness[i] == move_type)
+ {
+ //check type1
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type1)
+ {
+ if (gTypeEffectiveness[i + 2] == 0)
+ {
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ break;
+ }
+ if (gTypeEffectiveness[i + 2] == 5)
+ flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ if (gTypeEffectiveness[i + 2] == 20)
+ flags |= MOVESTATUS_SUPEREFFECTIVE;
+ }
+ //check type2
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2)
+ {
+ if (gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2
+ && gTypeEffectiveness[i + 2] == 0)
+ {
+ gBattleMoveFlags |= MOVESTATUS_NOTAFFECTED;
+ break;
+ }
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2 && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && gTypeEffectiveness[i + 2] == 5)
+ flags |= MOVESTATUS_NOTVERYEFFECTIVE;
+ if (gTypeEffectiveness[i + 1] == gBattleMons[gBankTarget].type2
+ && gBattleMons[gBankTarget].type1 != gBattleMons[gBankTarget].type2 && gTypeEffectiveness[i + 2] == 20)
+ flags |= MOVESTATUS_SUPEREFFECTIVE;
+ }
+ }
+ i += 3;
+ }
+ }
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD && !(flags & MOVESTATUS_NOEFFECT) && AttacksThisTurn(gBankAttacker, gCurrentMove) == 2 &&
+ (!(flags & MOVESTATUS_SUPEREFFECTIVE) || ((flags & (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE)) == (MOVESTATUS_SUPEREFFECTIVE | MOVESTATUS_NOTVERYEFFECTIVE))) &&
+ gBattleMoves[gCurrentMove].power)
+ {
+ gLastUsedAbility = ABILITY_WONDER_GUARD;
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gMoveHitWith[gBankTarget] = 0;
+ gBattleCommunication[6] = 3;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ if (gBattleMoveFlags & MOVESTATUS_NOTAFFECTED)
+ gProtectStructs[gBankAttacker].notEffective = 1;
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk4B_return_atk_to_ball(void)
+{
+ gActiveBank = gBankAttacker;
+ if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank)))
+ {
+ EmitReturnPokeToBall(0, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk4C_copy_poke_data(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+
+ gBattlePartyID[gActiveBank] = unk_2000000[0x16068 + gActiveBank];
+
+ EmitGetAttributes(0, 0, gBitTable[gBattlePartyID[gActiveBank]]);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static inline u8 get_knocked_off_byte(u8 bank)
+{
+ register u32 side asm("r2") = GetBankSide(bank);
+ register struct WishFutureKnock* dummy = &gWishFutureKnock;
+ register u8* aa = ((u8*)((u8*)(dummy)));
+ register u8* bb = aa + 0x29;
+ register u8* cc asm("r0") = side + bb;
+ return *cc;
+}
+
+static void atk4D_switch_data_update(void)
+{
+ struct BattlePokemon OldData;
+ int i;
+ u8 *monData;
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ OldData = gBattleMons[gActiveBank];
+ monData = (u8*)(&gBattleMons[gActiveBank]);
+ for (i = 0; i < sizeof(struct BattlePokemon); i++)
+ {
+ monData[i] = gBattleBufferB[gActiveBank][4 + i];
+ }
+
+ gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1;
+ gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2;
+ gBattleMons[gActiveBank].ability = GetAbilityBySpecies(gBattleMons[gActiveBank].species, gBattleMons[gActiveBank].altAbility);
+ //check knocked off item
+ if (get_knocked_off_byte(gActiveBank) & gBitTable[gBattlePartyID[gActiveBank]])
+ {
+ gBattleMons[gActiveBank].item = 0;
+ }
+
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
+ {
+ for (i = 0; i < 8; i++)
+ {
+ gBattleMons[gActiveBank].statStages[i] = OldData.statStages[i];
+ }
+ gBattleMons[gActiveBank].status2 = OldData.status2;
+ }
+ SwitchInClearStructs();
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 7;
+ gBattleTextBuff1[2] = gActiveBank;
+ gBattleTextBuff1[3] = gBattlePartyID[gActiveBank];
+ gBattleTextBuff1[4] = EOS;
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk4E_switchin_anim(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER)))
+ {
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2);
+ }
+ gAbsentBankFlags &= ~(gBitTable[gActiveBank]);
+ EmitSendOutPoke(0, gBattlePartyID[gActiveBank], BSScriptRead8(gBattlescriptCurrInstr + 2));
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk4F_jump_if_cannot_switch(void)
+{
+ int val, to_cmp;
+ register struct Pokemon *party;
+ u8 r7;
+ //0x80 byte is used as a way of telling the function whether to not check status2/status3
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1) & 0x7F);
+ if (!(BSScriptRead8(gBattlescriptCurrInstr + 1) & 0x80)
+ && ((gBattleMons[gActiveBank].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION))
+ || (gStatuses3[gActiveBank] & STATUS3_ROOTED)))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ return;
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (GetBankSide(gActiveBank) == 1)
+ party = gEnemyParty;
+ else
+ party = gPlayerParty;
+ val = 0;
+ if (sub_803FBFC(sub_803FC34(gActiveBank)) == 1)
+ val = 3;
+ for (to_cmp = val + 3; val < to_cmp; val++)
+ {
+ if (GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&party[val], MON_DATA_IS_EGG)
+ && GetMonData(&party[val], MON_DATA_HP) != 0
+ && gBattlePartyID[gActiveBank] != val)
+ break;
+ }
+ if (val == to_cmp)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+ }
+ else
+ {
+ if (GetBankSide(gActiveBank) == 1)
+ {
+ r7 = GetBankByPlayerAI(1);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ to_cmp = GetBankByPlayerAI(3);
+ else
+ to_cmp = r7;
+ party = gEnemyParty;
+ }
+ else
+ {
+ r7 = GetBankByPlayerAI(0);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ to_cmp = GetBankByPlayerAI(2);
+ else
+ to_cmp = r7;
+ party = gPlayerParty;
+ }
+ for (val = 0; val < 6; val++)
+ {
+ if (GetMonData(&party[val], MON_DATA_HP) != 0
+ && GetMonData(&party[val], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&party[val], MON_DATA_IS_EGG)
+ && val != gBattlePartyID[r7] && val != gBattlePartyID[to_cmp])
+ break;
+ }
+ if (val == 6)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+ }
+}
+
+void sub_8022A3C(u8 unkown)
+{
+ //BATTLE_STRUCT->unk16064[gActiveBank] = gBattlePartyID[gActiveBank];
+ ewram[gActiveBank + 0x16064] = gBattlePartyID[gActiveBank];
+ EmitChoosePokemon(0, 1, unkown, 0, BATTLE_STRUCT->unk1606C[gActiveBank]);
+ MarkBufferBankForExecution(gActiveBank);
+}
+
+/*
+static void atk50_openpartyscreen(void)
+{
+ int i = 0;
+ int r9 = 0;
+ u8* fail_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 5)
+ {
+ if ((gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE)
+ {
+ for (gActiveBank = i; gActiveBank < gNoOfAllBanks; gActiveBank++)
+ {
+ if (!(gHitMarker & HITMARKER_FAINTED(gActiveBank)))
+ {
+ EmitLinkStandbyMsg(0, 2);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else if (sub_8018018(gActiveBank, 6, 6) == 0
+ && !gSpecialStatuses[gActiveBank].flag40)
+ {
+ sub_8022A3C(6);
+ gSpecialStatuses[gActiveBank].flag40 = 1;
+ }
+ else
+ {
+ gAbsentBankFlags |= gBitTable[gActiveBank];
+ gHitMarker &= (~HITMARKER_FAINTED(gActiveBank));
+ EmitLinkStandbyMsg(0, 2);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (!(gHitMarker >> 0x1C & gBitTable[0]))
+ {
+
+ }
+ else if (sub_8018018(gActiveBank, 6, 6) == 0
+ && !gSpecialStatuses[gActiveBank].flag40)
+ {
+
+ }
+ else
+ {
+
+ }
+ }
+ }
+}
+*/
+
+__attribute__((naked))
+static void atk50_openpartyscreen(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ sub sp, 0x4\n\
+ movs r7, 0\n\
+ movs r0, 0\n\
+ mov r9, r0\n\
+ ldr r6, _08022B44 @ =gBattlescriptCurrInstr\n\
+ ldr r1, [r6]\n\
+ ldrb r2, [r1, 0x2]\n\
+ ldrb r0, [r1, 0x3]\n\
+ lsls r0, 8\n\
+ orrs r2, r0\n\
+ ldrb r0, [r1, 0x4]\n\
+ lsls r0, 16\n\
+ orrs r2, r0\n\
+ ldrb r0, [r1, 0x5]\n\
+ lsls r0, 24\n\
+ orrs r2, r0\n\
+ mov r8, r2\n\
+ ldrb r2, [r1, 0x1]\n\
+ adds r0, r2, 0\n\
+ mov r12, r6\n\
+ cmp r0, 0x5\n\
+ beq _08022ACE\n\
+ b _08022F74\n\
+_08022ACE:\n\
+ ldr r0, _08022B48 @ =gBattleTypeFlags\n\
+ ldrh r0, [r0]\n\
+ movs r1, 0x41\n\
+ ands r1, r0\n\
+ cmp r1, 0x1\n\
+ beq _08022BBC\n\
+ ldr r1, _08022B4C @ =gActiveBank\n\
+ strb r7, [r1]\n\
+ ldr r0, _08022B50 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r7, r0\n\
+ bcc _08022AE8\n\
+ b _08022F62\n\
+_08022AE8:\n\
+ ldr r7, _08022B54 @ =gHitMarker\n\
+ ldr r6, _08022B58 @ =gBitTable\n\
+ adds r4, r1, 0\n\
+ ldr r0, _08022B5C @ =gAbsentBankFlags\n\
+ mov r8, r0\n\
+_08022AF2:\n\
+ ldrb r2, [r4]\n\
+ lsls r0, r2, 2\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r7]\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08022B94\n\
+ adds r0, r2, 0\n\
+ movs r1, 0x6\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08022B60\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r7]\n\
+ bics r0, r1\n\
+ str r0, [r7]\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ b _08022BA2\n\
+ .align 2, 0\n\
+_08022B44: .4byte gBattlescriptCurrInstr\n\
+_08022B48: .4byte gBattleTypeFlags\n\
+_08022B4C: .4byte gActiveBank\n\
+_08022B50: .4byte gNoOfAllBanks\n\
+_08022B54: .4byte gHitMarker\n\
+_08022B58: .4byte gBitTable\n\
+_08022B5C: .4byte gAbsentBankFlags\n\
+_08022B60:\n\
+ ldr r5, _08022B90 @ =gSpecialStatuses\n\
+ ldrb r0, [r4]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r5\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022BA2\n\
+ movs r0, 0x6\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08022BA2\n\
+ .align 2, 0\n\
+_08022B90: .4byte gSpecialStatuses\n\
+_08022B94:\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+_08022BA2:\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ ldr r1, _08022BB8 @ =gNoOfAllBanks\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _08022AF2\n\
+ b _08022F62\n\
+ .align 2, 0\n\
+_08022BB8: .4byte gNoOfAllBanks\n\
+_08022BBC:\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _08022BC4\n\
+ b _08022F62\n\
+_08022BC4:\n\
+ ldr r0, _08022C1C @ =gHitMarker\n\
+ mov r8, r0\n\
+ ldr r0, [r0]\n\
+ lsrs r5, r0, 28\n\
+ ldr r6, _08022C20 @ =gBitTable\n\
+ ldr r0, [r6]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08022C7E\n\
+ ldr r4, _08022C24 @ =gActiveBank\n\
+ strb r7, [r4]\n\
+ movs r0, 0\n\
+ movs r1, 0x6\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08022C2C\n\
+ ldr r2, _08022C28 @ =gAbsentBankFlags\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ mov r2, r8\n\
+ ldr r0, [r2]\n\
+ bics r0, r1\n\
+ str r0, [r2]\n\
+ movs r0, 0\n\
+ bl Emitcmd42\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ b _08022C7E\n\
+ .align 2, 0\n\
+_08022C1C: .4byte gHitMarker\n\
+_08022C20: .4byte gBitTable\n\
+_08022C24: .4byte gActiveBank\n\
+_08022C28: .4byte gAbsentBankFlags\n\
+_08022C2C:\n\
+ ldr r6, _08022C60 @ =gSpecialStatuses\n\
+ ldrb r0, [r4]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r6\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022C6C\n\
+ ldr r0, _08022C64 @ =0x02000000\n\
+ ldr r1, _08022C68 @ =0x0001606a\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08022C7E\n\
+ .align 2, 0\n\
+_08022C60: .4byte gSpecialStatuses\n\
+_08022C64: .4byte 0x02000000\n\
+_08022C68: .4byte 0x0001606a\n\
+_08022C6C:\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ movs r2, 0x1\n\
+ mov r9, r2\n\
+_08022C7E:\n\
+ ldr r6, _08022CD8 @ =gBitTable\n\
+ ldr r0, [r6, 0x8]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08022D40\n\
+ ldr r0, [r6]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ bne _08022D40\n\
+ ldr r4, _08022CDC @ =gActiveBank\n\
+ movs r0, 0x2\n\
+ strb r0, [r4]\n\
+ movs r0, 0x2\n\
+ movs r1, 0x6\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08022CE8\n\
+ ldr r2, _08022CE0 @ =gAbsentBankFlags\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r2, _08022CE4 @ =gHitMarker\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r2]\n\
+ bics r0, r1\n\
+ str r0, [r2]\n\
+ movs r0, 0\n\
+ bl Emitcmd42\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ b _08022D40\n\
+ .align 2, 0\n\
+_08022CD8: .4byte gBitTable\n\
+_08022CDC: .4byte gActiveBank\n\
+_08022CE0: .4byte gAbsentBankFlags\n\
+_08022CE4: .4byte gHitMarker\n\
+_08022CE8:\n\
+ ldr r6, _08022D1C @ =gSpecialStatuses\n\
+ ldrb r0, [r4]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r6\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022D28\n\
+ ldr r0, _08022D20 @ =0x02000000\n\
+ ldr r1, _08022D24 @ =0x00016068\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08022D40\n\
+ .align 2, 0\n\
+_08022D1C: .4byte gSpecialStatuses\n\
+_08022D20: .4byte 0x02000000\n\
+_08022D24: .4byte 0x00016068\n\
+_08022D28:\n\
+ movs r0, 0x1\n\
+ mov r2, r9\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ bne _08022D40\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+_08022D40:\n\
+ ldr r6, _08022D90 @ =gBitTable\n\
+ ldr r0, [r6, 0x4]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08022DF6\n\
+ ldr r4, _08022D94 @ =gActiveBank\n\
+ movs r0, 0x1\n\
+ strb r0, [r4]\n\
+ movs r0, 0x1\n\
+ movs r1, 0x6\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08022DA0\n\
+ ldr r2, _08022D98 @ =gAbsentBankFlags\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r2, _08022D9C @ =gHitMarker\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r2]\n\
+ bics r0, r1\n\
+ str r0, [r2]\n\
+ movs r0, 0\n\
+ bl Emitcmd42\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ b _08022DF6\n\
+ .align 2, 0\n\
+_08022D90: .4byte gBitTable\n\
+_08022D94: .4byte gActiveBank\n\
+_08022D98: .4byte gAbsentBankFlags\n\
+_08022D9C: .4byte gHitMarker\n\
+_08022DA0:\n\
+ ldr r6, _08022DD4 @ =gSpecialStatuses\n\
+ ldrb r0, [r4]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r6\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022DE0\n\
+ ldr r0, _08022DD8 @ =0x02000000\n\
+ ldr r1, _08022DDC @ =0x0001606b\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08022DF6\n\
+ .align 2, 0\n\
+_08022DD4: .4byte gSpecialStatuses\n\
+_08022DD8: .4byte 0x02000000\n\
+_08022DDC: .4byte 0x0001606b\n\
+_08022DE0:\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ movs r0, 0x2\n\
+ mov r2, r9\n\
+ orrs r2, r0\n\
+ mov r9, r2\n\
+_08022DF6:\n\
+ ldr r6, _08022E50 @ =gBitTable\n\
+ ldr r0, [r6, 0xC]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08022EB8\n\
+ ldr r0, [r6, 0x4]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ bne _08022EB8\n\
+ ldr r4, _08022E54 @ =gActiveBank\n\
+ movs r0, 0x3\n\
+ strb r0, [r4]\n\
+ movs r0, 0x3\n\
+ movs r1, 0x6\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08022E60\n\
+ ldr r2, _08022E58 @ =gAbsentBankFlags\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r2, _08022E5C @ =gHitMarker\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r2]\n\
+ bics r0, r1\n\
+ str r0, [r2]\n\
+ movs r0, 0\n\
+ bl Emitcmd42\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ b _08022EB8\n\
+ .align 2, 0\n\
+_08022E50: .4byte gBitTable\n\
+_08022E54: .4byte gActiveBank\n\
+_08022E58: .4byte gAbsentBankFlags\n\
+_08022E5C: .4byte gHitMarker\n\
+_08022E60:\n\
+ ldr r6, _08022E94 @ =gSpecialStatuses\n\
+ ldrb r0, [r4]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r6\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022EA0\n\
+ ldr r0, _08022E98 @ =0x02000000\n\
+ ldr r1, _08022E9C @ =0x00016069\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r6\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08022EB8\n\
+ .align 2, 0\n\
+_08022E94: .4byte gSpecialStatuses\n\
+_08022E98: .4byte 0x02000000\n\
+_08022E9C: .4byte 0x00016069\n\
+_08022EA0:\n\
+ movs r0, 0x2\n\
+ mov r2, r9\n\
+ ands r2, r0\n\
+ cmp r2, 0\n\
+ bne _08022EB8\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+_08022EB8:\n\
+ ldr r1, _08022EE8 @ =gSpecialStatuses\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022F0C\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x28\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022F0C\n\
+ cmp r5, 0\n\
+ beq _08022F0C\n\
+ ldr r0, _08022EEC @ =gAbsentBankFlags\n\
+ ldrb r1, [r0]\n\
+ ldr r0, _08022EF0 @ =gBitTable\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _08022EF8\n\
+ ldr r1, _08022EF4 @ =gActiveBank\n\
+ movs r0, 0x2\n\
+ strb r0, [r1]\n\
+ b _08022EFC\n\
+ .align 2, 0\n\
+_08022EE8: .4byte gSpecialStatuses\n\
+_08022EEC: .4byte gAbsentBankFlags\n\
+_08022EF0: .4byte gBitTable\n\
+_08022EF4: .4byte gActiveBank\n\
+_08022EF8:\n\
+ ldr r0, _08022F3C @ =gActiveBank\n\
+ strb r1, [r0]\n\
+_08022EFC:\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldr r0, _08022F3C @ =gActiveBank\n\
+ ldrb r0, [r0]\n\
+ bl MarkBufferBankForExecution\n\
+_08022F0C:\n\
+ ldr r1, _08022F40 @ =gSpecialStatuses\n\
+ ldrb r0, [r1, 0x14]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022F62\n\
+ adds r0, r1, 0\n\
+ adds r0, 0x3C\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _08022F62\n\
+ cmp r5, 0\n\
+ beq _08022F62\n\
+ ldr r0, _08022F44 @ =gAbsentBankFlags\n\
+ ldrb r0, [r0]\n\
+ ldr r1, _08022F48 @ =gBitTable\n\
+ ldr r1, [r1, 0x4]\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08022F4C\n\
+ ldr r1, _08022F3C @ =gActiveBank\n\
+ movs r0, 0x3\n\
+ b _08022F50\n\
+ .align 2, 0\n\
+_08022F3C: .4byte gActiveBank\n\
+_08022F40: .4byte gSpecialStatuses\n\
+_08022F44: .4byte gAbsentBankFlags\n\
+_08022F48: .4byte gBitTable\n\
+_08022F4C:\n\
+ ldr r1, _08022F6C @ =gActiveBank\n\
+ movs r0, 0x1\n\
+_08022F50:\n\
+ strb r0, [r1]\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldr r0, _08022F6C @ =gActiveBank\n\
+ ldrb r0, [r0]\n\
+ bl MarkBufferBankForExecution\n\
+_08022F62:\n\
+ ldr r1, _08022F70 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x6\n\
+ str r0, [r1]\n\
+ b _08023302\n\
+ .align 2, 0\n\
+_08022F6C: .4byte gActiveBank\n\
+_08022F70: .4byte gBattlescriptCurrInstr\n\
+_08022F74:\n\
+ cmp r0, 0x6\n\
+ beq _08022F7A\n\
+ b _08023170\n\
+_08022F7A:\n\
+ ldr r0, _08022FF0 @ =gBattleTypeFlags\n\
+ ldrh r2, [r0]\n\
+ movs r0, 0x40\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ beq _08022F88\n\
+ b _0802310C\n\
+_08022F88:\n\
+ movs r0, 0x1\n\
+ ands r0, r2\n\
+ cmp r0, 0\n\
+ bne _08022F92\n\
+ b _0802310C\n\
+_08022F92:\n\
+ ldr r7, _08022FF4 @ =gHitMarker\n\
+ ldr r0, [r7]\n\
+ lsrs r5, r0, 28\n\
+ ldr r4, _08022FF8 @ =gBitTable\n\
+ ldr r0, [r4, 0x8]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _0802303A\n\
+ ldr r0, [r4]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _0802303A\n\
+ ldr r6, _08022FFC @ =gActiveBank\n\
+ movs r0, 0x2\n\
+ strb r0, [r6]\n\
+ ldr r0, _08023000 @ =gBattleBufferB\n\
+ ldrb r1, [r0, 0x1]\n\
+ movs r0, 0x2\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08023008\n\
+ ldr r2, _08023004 @ =gAbsentBankFlags\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r7]\n\
+ bics r0, r1\n\
+ str r0, [r7]\n\
+ movs r0, 0\n\
+ bl Emitcmd42\n\
+ ldrb r0, [r6]\n\
+ bl MarkBufferBankForExecution\n\
+ b _0802303A\n\
+ .align 2, 0\n\
+_08022FF0: .4byte gBattleTypeFlags\n\
+_08022FF4: .4byte gHitMarker\n\
+_08022FF8: .4byte gBitTable\n\
+_08022FFC: .4byte gActiveBank\n\
+_08023000: .4byte gBattleBufferB\n\
+_08023004: .4byte gAbsentBankFlags\n\
+_08023008:\n\
+ ldr r4, _08023098 @ =gSpecialStatuses\n\
+ ldrb r0, [r6]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r4\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _0802303A\n\
+ ldr r0, _0802309C @ =0x02000000\n\
+ ldr r1, _080230A0 @ =0x00016068\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r6]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_0802303A:\n\
+ ldr r4, _080230A4 @ =gBitTable\n\
+ ldr r0, [r4, 0xC]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _080230EE\n\
+ ldr r0, [r4, 0x4]\n\
+ ands r5, r0\n\
+ cmp r5, 0\n\
+ beq _080230EE\n\
+ ldr r5, _080230A8 @ =gActiveBank\n\
+ movs r0, 0x3\n\
+ strb r0, [r5]\n\
+ ldr r0, _080230AC @ =gBattleBufferB\n\
+ ldr r2, _080230B0 @ =0x00000201\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x3\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080230BC\n\
+ ldr r2, _080230B4 @ =gAbsentBankFlags\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r2]\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r2, _080230B8 @ =gHitMarker\n\
+ ldrb r0, [r5]\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r2]\n\
+ bics r0, r1\n\
+ str r0, [r2]\n\
+ movs r0, 0\n\
+ bl Emitcmd42\n\
+ ldrb r0, [r5]\n\
+ bl MarkBufferBankForExecution\n\
+ b _080230EE\n\
+ .align 2, 0\n\
+_08023098: .4byte gSpecialStatuses\n\
+_0802309C: .4byte 0x02000000\n\
+_080230A0: .4byte 0x00016068\n\
+_080230A4: .4byte gBitTable\n\
+_080230A8: .4byte gActiveBank\n\
+_080230AC: .4byte gBattleBufferB\n\
+_080230B0: .4byte 0x00000201\n\
+_080230B4: .4byte gAbsentBankFlags\n\
+_080230B8: .4byte gHitMarker\n\
+_080230BC:\n\
+ ldr r4, _080230FC @ =gSpecialStatuses\n\
+ ldrb r0, [r5]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r4\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ blt _080230EE\n\
+ ldr r0, _08023100 @ =0x02000000\n\
+ ldr r1, _08023104 @ =0x00016069\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ bl sub_8022A3C\n\
+ ldrb r1, [r5]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x40\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_080230EE:\n\
+ ldr r1, _08023108 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x6\n\
+ str r0, [r1]\n\
+ mov r12, r1\n\
+ b _08023110\n\
+ .align 2, 0\n\
+_080230FC: .4byte gSpecialStatuses\n\
+_08023100: .4byte 0x02000000\n\
+_08023104: .4byte 0x00016069\n\
+_08023108: .4byte gBattlescriptCurrInstr\n\
+_0802310C:\n\
+ adds r0, r1, 0x6\n\
+ str r0, [r6]\n\
+_08023110:\n\
+ ldr r0, _08023160 @ =gHitMarker\n\
+ ldr r0, [r0]\n\
+ lsrs r5, r0, 28\n\
+ ldr r1, _08023164 @ =gBank1\n\
+ movs r0, 0\n\
+ strb r0, [r1]\n\
+ ldr r4, _08023168 @ =gBitTable\n\
+ ldr r2, [r4]\n\
+ ands r2, r5\n\
+ ldr r6, _0802316C @ =gNoOfAllBanks\n\
+ cmp r2, 0\n\
+ bne _0802314C\n\
+ adds r7, r6, 0\n\
+ ldrb r0, [r6]\n\
+ cmp r2, r0\n\
+ bcs _0802314C\n\
+ adds r3, r1, 0\n\
+_08023132:\n\
+ ldrb r0, [r3]\n\
+ adds r0, 0x1\n\
+ strb r0, [r3]\n\
+ ldrb r2, [r3]\n\
+ lsls r0, r2, 2\n\
+ adds r0, r4\n\
+ ldr r0, [r0]\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ bne _0802314C\n\
+ ldrb r0, [r7]\n\
+ cmp r2, r0\n\
+ bcc _08023132\n\
+_0802314C:\n\
+ ldrb r0, [r1]\n\
+ ldrb r6, [r6]\n\
+ cmp r0, r6\n\
+ beq _08023156\n\
+ b _08023302\n\
+_08023156:\n\
+ mov r1, r8\n\
+ mov r2, r12\n\
+ str r1, [r2]\n\
+ b _08023302\n\
+ .align 2, 0\n\
+_08023160: .4byte gHitMarker\n\
+_08023164: .4byte gBank1\n\
+_08023168: .4byte gBitTable\n\
+_0802316C: .4byte gNoOfAllBanks\n\
+_08023170:\n\
+ movs r0, 0x80\n\
+ ands r0, r2\n\
+ movs r5, 0x1\n\
+ cmp r0, 0\n\
+ beq _0802317C\n\
+ movs r5, 0\n\
+_0802317C:\n\
+ movs r0, 0x7F\n\
+ ands r0, r2\n\
+ bl GetBattleBank\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ ldr r1, _080231A4 @ =gSpecialStatuses\n\
+ lsls r0, r7, 2\n\
+ adds r0, r7\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 25\n\
+ cmp r0, 0\n\
+ bge _080231A8\n\
+ ldr r0, [r6]\n\
+ adds r0, 0x6\n\
+ str r0, [r6]\n\
+ b _08023302\n\
+ .align 2, 0\n\
+_080231A4: .4byte gSpecialStatuses\n\
+_080231A8:\n\
+ adds r0, r7, 0\n\
+ movs r1, 0x6\n\
+ movs r2, 0x6\n\
+ bl sub_8018018\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080231F8\n\
+ ldr r2, _080231E8 @ =gActiveBank\n\
+ strb r7, [r2]\n\
+ ldr r3, _080231EC @ =gAbsentBankFlags\n\
+ ldr r4, _080231F0 @ =gBitTable\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldr r0, [r0]\n\
+ ldrb r1, [r3]\n\
+ orrs r0, r1\n\
+ strb r0, [r3]\n\
+ ldr r3, _080231F4 @ =gHitMarker\n\
+ ldrb r0, [r2]\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldr r1, [r0]\n\
+ lsls r1, 28\n\
+ ldr r0, [r3]\n\
+ bics r0, r1\n\
+ str r0, [r3]\n\
+ mov r0, r8\n\
+ str r0, [r6]\n\
+ b _08023302\n\
+ .align 2, 0\n\
+_080231E8: .4byte gActiveBank\n\
+_080231EC: .4byte gAbsentBankFlags\n\
+_080231F0: .4byte gBitTable\n\
+_080231F4: .4byte gHitMarker\n\
+_080231F8:\n\
+ ldr r4, _080232A0 @ =gActiveBank\n\
+ strb r7, [r4]\n\
+ ldr r3, _080232A4 @ =0x02000000\n\
+ ldrb r0, [r4]\n\
+ ldr r2, _080232A8 @ =0x00016064\n\
+ adds r1, r0, r2\n\
+ adds r1, r3\n\
+ ldr r2, _080232AC @ =gBattlePartyID\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldrb r1, [r4]\n\
+ movs r0, 0x2\n\
+ eors r0, r1\n\
+ ldr r1, _080232B0 @ =0x00016068\n\
+ adds r0, r1\n\
+ adds r0, r3\n\
+ ldrb r2, [r0]\n\
+ ldrb r1, [r4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ ldr r1, _080232B4 @ =0x0001606c\n\
+ adds r3, r1\n\
+ adds r0, r3\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ adds r1, r5, 0\n\
+ movs r3, 0\n\
+ bl EmitChoosePokemon\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, [r6]\n\
+ adds r0, 0x6\n\
+ str r0, [r6]\n\
+ ldrb r0, [r4]\n\
+ bl GetBankIdentity\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _0802325A\n\
+ ldr r1, _080232B8 @ =gBattleResults\n\
+ ldrb r0, [r1, 0x2]\n\
+ cmp r0, 0xFE\n\
+ bhi _0802325A\n\
+ adds r0, 0x1\n\
+ strb r0, [r1, 0x2]\n\
+_0802325A:\n\
+ ldr r0, _080232BC @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x40\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080232C4\n\
+ ldr r1, _080232A0 @ =gActiveBank\n\
+ movs r0, 0\n\
+ strb r0, [r1]\n\
+ ldr r0, _080232C0 @ =gNoOfAllBanks\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08023302\n\
+ adds r4, r1, 0\n\
+_08023276:\n\
+ ldrb r0, [r4]\n\
+ cmp r0, r7\n\
+ beq _0802328A\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+_0802328A:\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ ldr r1, _080232C0 @ =gNoOfAllBanks\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _08023276\n\
+ b _08023302\n\
+ .align 2, 0\n\
+_080232A0: .4byte gActiveBank\n\
+_080232A4: .4byte 0x02000000\n\
+_080232A8: .4byte 0x00016064\n\
+_080232AC: .4byte gBattlePartyID\n\
+_080232B0: .4byte 0x00016068\n\
+_080232B4: .4byte 0x0001606c\n\
+_080232B8: .4byte gBattleResults\n\
+_080232BC: .4byte gBattleTypeFlags\n\
+_080232C0: .4byte gNoOfAllBanks\n\
+_080232C4:\n\
+ adds r0, r7, 0\n\
+ bl GetBankIdentity\n\
+ movs r1, 0x1\n\
+ eors r0, r1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ bl GetBankByPlayerAI\n\
+ ldr r4, _08023310 @ =gActiveBank\n\
+ strb r0, [r4]\n\
+ ldr r0, _08023314 @ =gAbsentBankFlags\n\
+ ldrb r1, [r0]\n\
+ ldr r2, _08023318 @ =gBitTable\n\
+ ldrb r3, [r4]\n\
+ lsls r0, r3, 2\n\
+ adds r0, r2\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ beq _080232F4\n\
+ movs r0, 0x2\n\
+ eors r3, r0\n\
+ strb r3, [r4]\n\
+_080232F4:\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ bl EmitLinkStandbyMsg\n\
+ ldrb r0, [r4]\n\
+ bl MarkBufferBankForExecution\n\
+_08023302:\n\
+ add sp, 0x4\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08023310: .4byte gActiveBank\n\
+_08023314: .4byte gAbsentBankFlags\n\
+_08023318: .4byte gBitTable\n\
+ .syntax divided");
+}
+
+static void atk51_switch_handle_order(void)
+{
+ int i;
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ switch (BSScriptRead8(gBattlescriptCurrInstr + 2))
+ {
+ case 0:
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gBattleBufferB[i][0] == 0x22)
+ ewram[i + 0x16068] = gBattleBufferB[i][1];
+ }
+ break;
+ case 1:
+ if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ sub_8012258(gActiveBank);
+ break;
+ case 2:
+ gBattleCommunication[0] = gBattleBufferB[gActiveBank][1];
+ ewram[gActiveBank + 0x16068] = gBattleBufferB[gActiveBank][1];
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+
+ ewram[(gActiveBank) * 3 + (0x1606C + 0)] &= 0xF;
+ ewram[(gActiveBank) * 3 + (0x1606C + 0)] |= (gBattleBufferB[gActiveBank][2] & 0xF0);
+ ewram[(gActiveBank) * 3 + (0x1606C + 1)] = gBattleBufferB[gActiveBank][3];
+
+ ewram[(gActiveBank ^ 2) * 3 + (0x1606C + 0)] &= (0xF0);
+ ewram[(gActiveBank ^ 2) * 3 + (0x1606C + 0)] |= (gBattleBufferB[gActiveBank][2] & 0xF0) >> 4;
+ ewram[(gActiveBank ^ 2) * 3 + (0x1606C + 2)] = gBattleBufferB[gActiveBank][3];
+ }
+ else
+ sub_8012258(gActiveBank);
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 6;
+ gBattleTextBuff1[2] = gBattleMons[gBankAttacker].species;
+ gBattleTextBuff1[3] = gBattleMons[gBankAttacker].species >> 8;
+ gBattleTextBuff1[4] = 0xFF;
+
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 7;
+ gBattleTextBuff2[2] = gActiveBank;
+ gBattleTextBuff2[3] = gBattleBufferB[gActiveBank][1];
+ gBattleTextBuff2[4] = 0xFF;
+ break;
+ }
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk52_switch_in_effects(void)
+{
+ int i;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ sub_80157C4(gActiveBank);
+ gHitMarker &= ~(HITMARKER_FAINTED(gActiveBank));
+ gSpecialStatuses[gActiveBank].flag40 = 0;
+
+ if (!(gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES_DAMAGED) && (gSideAffecting[GetBankSide(gActiveBank)] & SIDE_STATUS_SPIKES)
+ && gBattleMons[gActiveBank].type1 != TYPE_FLYING && gBattleMons[gActiveBank].type2 != TYPE_FLYING && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE)
+ {
+ u8 spikesDmg;
+
+ gSideAffecting[GetBankSide(gActiveBank)] |= SIDE_STATUS_SPIKES_DAMAGED;
+
+ spikesDmg = (5 - gSideTimer[GetBankSide(gActiveBank)].spikesAmount) * 2;
+ gBattleMoveDamage = gBattleMons[gActiveBank].maxHP / (spikesDmg);
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ b_movescr_stack_push_cursor();
+
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 0)
+ gBattlescriptCurrInstr = gUnknown_081D919F;
+ else if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 1)
+ gBattlescriptCurrInstr = gUnknown_081D9171;
+ else
+ gBattlescriptCurrInstr = gUnknown_081D91CD;
+ }
+ else
+ {
+ if (gBattleMons[gActiveBank].ability == ABILITY_TRUANT)
+ {
+ gDisableStructs[gActiveBank].truantCounter = 1;
+ }
+
+ if (AbilityBattleEffects(0, gActiveBank, 0, 0, 0) == 0 && ItemBattleEffects(0, gActiveBank, 0) == 0)
+ {
+ gSideAffecting[GetBankSide(gActiveBank)] &= ~(SIDE_STATUS_SPIKES_DAMAGED);
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gTurnOrder[i] == gActiveBank)
+ gUnknown_02024A76[i] = 0xC;
+ }
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ *(HP_ON_SWITCHOUT + GetBankSide(i)) = gBattleMons[i].hp;
+ }
+
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) == 5)
+ {
+ u32 hitmark = gHitMarker >> 0x1C;
+ gBank1++;
+ while (1)
+ {
+ if (hitmark & gBitTable[gBank1] && !(gAbsentBankFlags & gBitTable[gBank1]))
+ break;
+ if (gBank1 >= gNoOfAllBanks)
+ break;
+ gBank1++;
+ }
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+ }
+}
+
+static void atk53_trainer_slide(void)
+{
+ if (!BSScriptRead8(gBattlescriptCurrInstr + 1))
+ gActiveBank = GetBankByPlayerAI(0);
+ else
+ gActiveBank = GetBankByPlayerAI(1);
+
+ EmitTrainerSlide(0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk54_effectiveness_sound(void)
+{
+ gActiveBank = gBankAttacker;
+ EmitEffectivenessSound(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk55_play_sound(void)
+{
+ gActiveBank = gBankAttacker;
+ Emitcmd44(0, BS2ScriptRead16(gBattlescriptCurrInstr + 1));
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk56_fainting_cry(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ EmitFaintingCry(0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk57(void)
+{
+ gActiveBank = GetBankByPlayerAI(0);
+ Emitcmd55(0, gBattleOutcome);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 1;
+}
+
+static void atk58_return_to_ball(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ EmitReturnPokeToBall(0, 1);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+void atk59_learnmove_inbattle(void)
+{
+ u8* loc1 = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ u8* loc2 = BSScriptReadPtr(gBattlescriptCurrInstr + 5);
+
+ u16 ret = MonTryLearningNewMove(&gPlayerParty[BATTLE_STRUCT->expGetterID], BSScriptRead8(gBattlescriptCurrInstr + 9));
+ while (ret == 0xFFFE)
+ ret = MonTryLearningNewMove(&gPlayerParty[BATTLE_STRUCT->expGetterID], 0);
+
+ if (ret == 0)
+ {
+ gBattlescriptCurrInstr = loc2;
+ }
+ else if (ret == 0xFFFF)
+ {
+ gBattlescriptCurrInstr += 10;
+ }
+ else
+ {
+ gActiveBank = GetBankByPlayerAI(0);
+ if (gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) //what is else if
+ {
+ gActiveBank = GetBankByPlayerAI(2);
+ if (gBattlePartyID[gActiveBank] == BATTLE_STRUCT->expGetterID && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ GiveMoveToBattleMon(&gBattleMons[gActiveBank], ret);
+ }
+ gBattlescriptCurrInstr = loc1;
+ }
+}
+
+void sub_8023A80(void)
+{
+ sub_802BBD4(0x18, 8, 0x1D, 0xD, 0);
+ InitWindow(&gUnknown_03004210, gUnknown_08400D7A, 0x100, 0x19, 0x9);
+ sub_8002F44(&gUnknown_03004210);
+ sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20);
+}
+
+void sub_8023AD8(void)
+{
+ sub_802BBD4(0x18, 8, 0x1D, 0xD, 1);
+ DestroyMenuCursor();
+}
+
+static void atk5A(void)
+{
+ gActiveBank = 0;
+ switch (BATTLE_STRUCT->atk5A_StateTracker)
+ {
+ case 0:
+ sub_8023A80();
+ BATTLE_STRUCT->atk5A_StateTracker++;
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 1;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gBattleCommunication[1] == 0)
+ {
+ sub_8023AD8();
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ BATTLE_STRUCT->atk5A_StateTracker++;
+ return;
+ }
+ goto state_tracker_4;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ state_tracker_4:
+ BATTLE_STRUCT->atk5A_StateTracker = 4;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ {
+ sub_809D9F0(gPlayerParty, BATTLE_STRUCT->expGetterID, gPlayerPartyCount - 1, ReshowBattleScreenAfterMenu, gMoveToLearn);
+ BATTLE_STRUCT->atk5A_StateTracker++;
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active && gMain.callback2 == sub_800F808)
+ {
+ u8 move_pos = sub_809FA30();
+ if (move_pos == 4)
+ {
+ BATTLE_STRUCT->atk5A_StateTracker = 4;
+ }
+ else
+ {
+ u16 move = GetMonData(&gPlayerParty[BATTLE_STRUCT->expGetterID], MON_DATA_MOVE1 + move_pos);
+ if (IsHMMove2(move))
+ {
+ PrepareStringBattle(0x13F, gActiveBank);
+ BATTLE_STRUCT->atk5A_StateTracker = 5;
+ }
+ else
+ {
+ u8 *ptr;
+
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ ptr = gBattleTextBuff2;
+ {
+ ptr[0] = 0xFD;
+ ptr[1] = 2;
+ ptr[2] = move;
+ ptr[3] = ((move & 0xFF00) >> 8);
+ ptr += 4;
+ }
+ ptr[0] = 0xFF;
+ RemoveMonPPBonus(&gPlayerParty[BATTLE_STRUCT->expGetterID], move_pos);
+ SetMonMoveSlot(&gPlayerParty[BATTLE_STRUCT->expGetterID], gMoveToLearn, move_pos);
+ if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID && !(gBattleMons[0].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[0].unk18_b & gBitTable[move_pos]))
+ {
+ RemoveBattleMonPPBonus(&gBattleMons[0], move_pos);
+ SetBattleMonMoveSlot(&gBattleMons[0], gMoveToLearn, move_pos);
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[2] == BATTLE_STRUCT->expGetterID && !(gBattleMons[2].status2 & STATUS2_TRANSFORMED)
+ && !(gDisableStructs[2].unk18_b & gBitTable[move_pos]))
+ {
+ RemoveBattleMonPPBonus(&gBattleMons[2], move_pos);
+ SetBattleMonMoveSlot(&gBattleMons[2], gMoveToLearn, move_pos);
+ }
+ }
+ }
+ }
+ break;
+ case 4:
+ sub_8023AD8();
+ gBattlescriptCurrInstr += 5;
+ break;
+ case 5:
+ if (gBattleExecBuffer == 0)
+ {
+ BATTLE_STRUCT->atk5A_StateTracker = 2;
+ }
+ break;
+ }
+}
+
+static void atk5B_80256E0(void)
+{
+ switch (BATTLE_STRUCT->atk5A_StateTracker)
+ {
+ case 0:
+ sub_8023A80();
+ BATTLE_STRUCT->atk5A_StateTracker++;
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 1;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gBattleCommunication[1] != 0)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+ sub_8023AD8();
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ sub_8023AD8();
+ }
+ }
+}
+
+static void atk5C_hitanimation(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ gBattlescriptCurrInstr += 2;
+ else if (!(gHitMarker & HITMARKER_IGNORE_SUBSTITUTE) || !(gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE) || gDisableStructs[gActiveBank].substituteHP == 0)
+ {
+ EmitHitAnimation(0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+ }
+ else
+ gBattlescriptCurrInstr += 2;
+}
+
+#define MONEY_UNKNOWN ((*(u8*)(0x02017000 + 0x94)))
+
+#ifdef NONMATCHING
+static void atk5D_getmoneyreward(void)
+{
+ int i = 0;
+ u8 r5 = 0;
+ u32 money_to_give;
+ if (gTrainerBattleOpponent == 0x400)
+ {
+ money_to_give = 2 * BATTLE_STRUCT->moneyMultiplier * MONEY_UNKNOWN;
+ }
+ else
+ {
+ switch(gTrainers[gTrainerBattleOpponent].partyFlags)
+ {
+ case 0:
+ {
+ const struct PokeTrainerData1 *data = &gTrainers[gTrainerBattleOpponent].party->noItemNoMoves;
+ r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].lvl;
+ }
+ break;
+ case 2:
+ {
+ const struct PokeTrainerData2 *data = &gTrainers[gTrainerBattleOpponent].party->itemNoMoves;
+ r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].lvl;
+ }
+ break;
+ case 1:
+ case 3:
+ {
+ const struct PokeTrainerData3 *data = &gTrainers[gTrainerBattleOpponent].party->itemMoves;
+ r5 = data[gTrainers[gTrainerBattleOpponent].partySize - 1].lvl;
+ }
+ break;
+ }
+ for (; gTrainerMoney[i * 4] != 0xFF && gTrainerMoney[i * 4 + 1] != gTrainers[gTrainerBattleOpponent].trainerClass ; i++) {}
+
+ money_to_give = (r5 << 2) * BATTLE_STRUCT->moneyMultiplier;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ money_to_give = 2 * gTrainerMoney[i * 4 + 1] * money_to_give;
+ else
+ money_to_give = 1 * gTrainerMoney[i * 4 + 1] * money_to_give;
+ }
+
+ AddMoney(&gSaveBlock1.money, money_to_give);
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 1;
+ gBattleTextBuff1[2] = 4;
+ gBattleTextBuff1[3] = 5;
+ gBattleTextBuff1[4] = BYTE0(money_to_give);
+ gBattleTextBuff1[5] = BYTE1(money_to_give);
+ gBattleTextBuff1[6] = BYTE2(money_to_give);
+ gBattleTextBuff1[7] = BYTE3(money_to_give);
+ gBattleTextBuff1[8] = 0xFF;
+
+ gBattlescriptCurrInstr += 1;
+}
+#else
+__attribute__((naked))
+static void atk5D_getmoneyreward(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ movs r6, 0\n\
+ movs r5, 0\n\
+ ldr r0, _08024048 @ =gTrainerBattleOpponent\n\
+ ldrh r2, [r0]\n\
+ movs r1, 0x80\n\
+ lsls r1, 3\n\
+ cmp r2, r1\n\
+ bne _08024058\n\
+ ldr r0, _0802404C @ =0x02017000\n\
+ adds r1, r0, 0\n\
+ adds r1, 0x94\n\
+ ldrb r2, [r1]\n\
+ ldr r1, _08024050 @ =0xfffff056\n\
+ adds r0, r1\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r4, r2, 0\n\
+ muls r4, r0\n\
+ ldr r0, _08024054 @ =gSaveBlock1 + 0x490\n\
+ mov r8, r0\n\
+ b _08024140\n\
+ .align 2, 0\n\
+_08024048: .4byte gTrainerBattleOpponent\n\
+_0802404C: .4byte 0x02017000\n\
+_08024050: .4byte 0xfffff056\n\
+_08024054: .4byte gSaveBlock1 + 0x490\n\
+_08024058:\n\
+ ldr r2, _08024074 @ =gTrainers\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r3, r0, 3\n\
+ adds r4, r3, r2\n\
+ ldrb r1, [r4]\n\
+ cmp r1, 0x1\n\
+ beq _080240AE\n\
+ cmp r1, 0x1\n\
+ bgt _08024078\n\
+ cmp r1, 0\n\
+ beq _08024082\n\
+ b _080240C4\n\
+ .align 2, 0\n\
+_08024074: .4byte gTrainers\n\
+_08024078:\n\
+ cmp r1, 0x2\n\
+ beq _08024098\n\
+ cmp r1, 0x3\n\
+ beq _080240AE\n\
+ b _080240C4\n\
+_08024082:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x24\n\
+ adds r0, r3, r0\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ subs r0, 0x8\n\
+ b _080240C2\n\
+_08024098:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x24\n\
+ adds r0, r3, r0\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ subs r0, 0x8\n\
+ b _080240C2\n\
+_080240AE:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x24\n\
+ adds r0, r3, r0\n\
+ ldr r1, [r0]\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ subs r0, 0x10\n\
+_080240C2:\n\
+ ldrb r5, [r0, 0x2]\n\
+_080240C4:\n\
+ ldr r0, _08024120 @ =gTrainerMoney\n\
+ lsls r1, r6, 2\n\
+ adds r3, r1, r0\n\
+ ldrb r1, [r3]\n\
+ mov r12, r0\n\
+ lsls r4, r5, 2\n\
+ ldr r5, _08024124 @ =0x02000000\n\
+ ldr r7, _08024128 @ =gBattleTypeFlags\n\
+ ldr r0, _0802412C @ =gSaveBlock1 + 0x490\n\
+ mov r8, r0\n\
+ cmp r1, 0xFF\n\
+ beq _080240FE\n\
+ ldr r2, _08024130 @ =gTrainers\n\
+ ldr r0, _08024134 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 3\n\
+ adds r0, r2\n\
+ ldrb r2, [r0, 0x1]\n\
+ adds r1, r3, 0\n\
+_080240EE:\n\
+ ldrb r0, [r1]\n\
+ cmp r0, r2\n\
+ beq _080240FE\n\
+ adds r1, 0x4\n\
+ adds r6, 0x1\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0xFF\n\
+ bne _080240EE\n\
+_080240FE:\n\
+ ldr r1, _08024138 @ =0x00016056\n\
+ adds r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ adds r3, r4, 0\n\
+ muls r3, r0\n\
+ lsls r0, r6, 2\n\
+ add r0, r12\n\
+ ldrb r2, [r0, 0x1]\n\
+ ldrh r1, [r7]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _0802413C\n\
+ lsls r0, r2, 1\n\
+ adds r4, r3, 0\n\
+ muls r4, r0\n\
+ b _08024140\n\
+ .align 2, 0\n\
+_08024120: .4byte gTrainerMoney\n\
+_08024124: .4byte 0x02000000\n\
+_08024128: .4byte gBattleTypeFlags\n\
+_0802412C: .4byte gSaveBlock1 + 0x490\n\
+_08024130: .4byte gTrainers\n\
+_08024134: .4byte gTrainerBattleOpponent\n\
+_08024138: .4byte 0x00016056\n\
+_0802413C:\n\
+ adds r4, r3, 0\n\
+ muls r4, r2\n\
+_08024140:\n\
+ mov r0, r8\n\
+ adds r1, r4, 0\n\
+ bl AddMoney\n\
+ ldr r1, _0802418C @ =gBattleTextBuff1\n\
+ movs r0, 0xFD\n\
+ strb r0, [r1]\n\
+ movs r0, 0x1\n\
+ strb r0, [r1, 0x1]\n\
+ movs r0, 0x4\n\
+ strb r0, [r1, 0x2]\n\
+ movs r0, 0x5\n\
+ strb r0, [r1, 0x3]\n\
+ strb r4, [r1, 0x4]\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r4\n\
+ lsrs r0, 8\n\
+ strb r0, [r1, 0x5]\n\
+ movs r0, 0xFF\n\
+ lsls r0, 16\n\
+ ands r0, r4\n\
+ lsrs r0, 16\n\
+ strb r0, [r1, 0x6]\n\
+ lsrs r0, r4, 24\n\
+ strb r0, [r1, 0x7]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x8]\n\
+ ldr r1, _08024190 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x1\n\
+ str r0, [r1]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_0802418C: .4byte gBattleTextBuff1\n\
+_08024190: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided");
+}
+#endif //NONMATCHING
+
+static void atk5E_8025A70(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ EmitGetAttributes(0, REQUEST_ALL_BATTLE, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleCommunication[0]++;
+ break;
+ case 1:
+ if (gBattleExecBuffer == 0)
+ {
+ int i;
+ struct BattlePokemon* bufferPoke = (struct BattlePokemon*) &gBattleBufferB[gActiveBank][4];
+ for (i = 0; i < 4; i++)
+ {
+ gBattleMons[gActiveBank].moves[i] = bufferPoke->moves[i];
+ gBattleMons[gActiveBank].pp[i] = bufferPoke->pp[i];
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+ break;
+ }
+}
+
+static void atk5F_8025B24(void)
+{
+ gActiveBank = gBankAttacker;
+ gBankAttacker = gBankTarget;
+ gBankTarget = gActiveBank;
+ //what is xor...
+ if (gHitMarker & HITMARKER_PURSUIT_TRAP)
+ gHitMarker &= ~(HITMARKER_PURSUIT_TRAP);
+ else
+ gHitMarker |= HITMARKER_PURSUIT_TRAP;
+ gBattlescriptCurrInstr++;
+}
+
+static void atk60_increment_gamestat(void)
+{
+ if (GetBankSide(gBankAttacker) == 0)
+ {
+ IncrementGameStat(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ }
+ gBattlescriptCurrInstr += 2;
+}
+
+struct hp_status
+{
+ u16 hp;
+ u32 status;
+};
+
+static void atk61_8025BA4(void)
+{
+ int i;
+ struct Pokemon* party;
+ struct hp_status hpStatus[6];
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (GetBankSide(gActiveBank) == 0)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_SPECIES2) == 0 || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ {
+ hpStatus[i].hp = 0xFFFF;
+ hpStatus[i].status = 0;
+ }
+ else
+ {
+ hpStatus[i].hp = GetMonData(&party[i], MON_DATA_HP);
+ hpStatus[i].status = GetMonData(&party[i], MON_DATA_STATUS);
+ }
+ }
+ Emitcmd48(0, (u8*)(hpStatus), 1);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk62_08025C6C(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ Emitcmd49(0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk63_jumptorandomattack(void)
+{
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1))
+ gCurrentMove = gRandomMove;
+ else
+ gUnknown_02024BE8 = gCurrentMove = gRandomMove;
+ gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect];
+}
+
+static void atk64_statusanimation(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ EmitStatusAnimation(0, 0, gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+static void atk65_status2animation(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u32 possible_to_anim;
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ possible_to_anim = BSScriptRead32(gBattlescriptCurrInstr + 2);
+ if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ EmitStatusAnimation(0, 1, gBattleMons[gActiveBank].status2 & possible_to_anim);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr += 6;
+ }
+}
+
+static void atk66_chosenstatusanimation(void)
+{
+ if (gBattleExecBuffer == 0)
+ {
+ u32 status;
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ status = BSScriptRead32(gBattlescriptCurrInstr + 3);
+ if (!(gStatuses3[gActiveBank] & STATUS3_SEMI_INVULNERABLE) && gDisableStructs[gActiveBank].substituteHP == 0 && !(gHitMarker & HITMARKER_NO_ANIMATIONS))
+ {
+ EmitStatusAnimation(0, BSScriptRead8(gBattlescriptCurrInstr + 2), status);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr += 7;
+ }
+}
+
+static void atk67_8025ECC(void)
+{
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ sub_8023A80();
+ gBattleCommunication[0]++;
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 1;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gBattleCommunication[1] = 1;
+ PlaySE(SE_SELECT);
+ sub_8023AD8();
+ gBattlescriptCurrInstr++;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8023AD8();
+ gBattlescriptCurrInstr++;
+ }
+ break;
+ }
+}
+
+static void atk68_80246A0(void)
+{
+ int i;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ gUnknown_02024A76[i] = 0xC;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk69_dmg_adjustment2(void) //literally a copy of atk07 except theres no rand dmg modifier...
+{
+ u8 hold_effect, quality;
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ else
+ {
+ hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ {
+ RecordItemBattle(gBankTarget, hold_effect);
+ gSpecialStatuses[gBankTarget].focusBanded = 1;
+ }
+ if (gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE)
+ goto END;
+ if (gBattleMoves[gCurrentMove].effect != EFFECT_FALSE_SWIPE && !gProtectStructs[gBankTarget].endured
+ && !gSpecialStatuses[gBankTarget].focusBanded)
+ goto END;
+ if (gBattleMons[gBankTarget].hp > gBattleMoveDamage)
+ goto END;
+
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp - 1;
+
+ if (gProtectStructs[gBankTarget].endured)
+ {
+ gBattleMoveFlags |= MOVESTATUS_ENDURED;
+ goto END;
+ }
+ if (gSpecialStatuses[gBankTarget].focusBanded)
+ {
+ gBattleMoveFlags |= MOVESTATUS_HUNGON;
+ gLastUsedItem = gBattleMons[gBankTarget].item;
+ }
+
+ END:
+ gBattlescriptCurrInstr++;
+}
+
+void atk6A_removeitem(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ #define USED_HELD_ITEMS(bank) (*(u16 *)&ewram[0x160CC + 2 * (bank)])
+ USED_HELD_ITEMS(gActiveBank) = gBattleMons[gActiveBank].item;
+
+ gBattleMons[gActiveBank].item = 0;
+ EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk6B_atknameinbuff1(void)
+{
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 7;
+ gBattleTextBuff1[2] = gBankAttacker;
+ gBattleTextBuff1[3] = gBattlePartyID[gBankAttacker];
+ gBattleTextBuff1[4] = 0xFF;
+ gBattlescriptCurrInstr++;
+}
+
+#ifdef NONMATCHING
+static void atk6C_lvlbox_display(void)
+{
+ u8 r1 = 0;
+ u8 r7 = 0;
+ switch (BATTLE_STRUCT->atk6C_statetracker)
+ {
+ case 0:
+ sub_802BBD4(0xB, 0, 0x1D, 0x7, r1);
+ StringCopy(gStringVar4, gUnknown_08400D9F);
+
+ }
+}
+
+#else
+__attribute__((naked))
+static void atk6C_lvlbox_display(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\
+ movs r1, 0\n\
+ movs r7, 0\n\
+ ldr r0, _08024928 @ =0x02000000\n\
+ mov r10, r0\n\
+ ldr r4, _0802492C @ =0x0001609c\n\
+ add r4, r10\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0x1\n\
+ bne _0802491C\n\
+ b _08024AF4\n\
+_0802491C:\n\
+ cmp r0, 0x1\n\
+ bgt _08024930\n\
+ cmp r0, 0\n\
+ beq _0802493E\n\
+ b _08024C38\n\
+ .align 2, 0\n\
+_08024928: .4byte 0x02000000\n\
+_0802492C: .4byte 0x0001609c\n\
+_08024930:\n\
+ cmp r0, 0x2\n\
+ bne _08024936\n\
+ b _08024C04\n\
+_08024936:\n\
+ cmp r0, 0x3\n\
+ bne _0802493C\n\
+ b _08024C30\n\
+_0802493C:\n\
+ b _08024C38\n\
+_0802493E:\n\
+ str r1, [sp]\n\
+ movs r0, 0xB\n\
+ movs r1, 0\n\
+ movs r2, 0x1D\n\
+ movs r3, 0x7\n\
+ bl sub_802BBD4\n\
+ ldr r0, _0802499C @ =gStringVar4\n\
+ ldr r1, _080249A0 @ =gUnknown_08400D9F\n\
+ bl StringCopy\n\
+ adds r5, r0, 0\n\
+ movs r1, 0\n\
+ mov r8, r1\n\
+_0802495A:\n\
+ movs r2, 0\n\
+ mov r9, r2\n\
+ ldr r0, _080249A4 @ =gUnknown_0840165C\n\
+ mov r1, r8\n\
+ lsls r4, r1, 2\n\
+ adds r0, r4, r0\n\
+ ldr r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl StringAppend\n\
+ adds r5, r0, 0\n\
+ ldr r0, _080249A8 @ =0x02000000\n\
+ ldr r2, _080249AC @ =0x00016018\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _080249B0 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ ldr r1, _080249B4 @ =gLevelUpStatBoxStats\n\
+ add r1, r8\n\
+ ldrb r1, [r1]\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ mov r0, r8\n\
+ cmp r0, 0x5\n\
+ bhi _08024A1A\n\
+ ldr r0, _080249B8 @ =_080249BC\n\
+ adds r0, r4, r0\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_0802499C: .4byte gStringVar4\n\
+_080249A0: .4byte gUnknown_08400D9F\n\
+_080249A4: .4byte gUnknown_0840165C\n\
+_080249A8: .4byte 0x02000000\n\
+_080249AC: .4byte 0x00016018\n\
+_080249B0: .4byte gPlayerParty\n\
+_080249B4: .4byte gLevelUpStatBoxStats\n\
+_080249B8: .4byte _080249BC\n\
+ .align 2, 0\n\
+_080249BC:\n\
+ .4byte _080249D4\n\
+ .4byte _080249E0\n\
+ .4byte _080249EC\n\
+ .4byte _080249F8\n\
+ .4byte _08024A04\n\
+ .4byte _08024A10\n\
+_080249D4:\n\
+ ldr r0, _080249DC @ =0x02017180\n\
+ ldrh r0, [r0]\n\
+ b _08024A14\n\
+ .align 2, 0\n\
+_080249DC: .4byte 0x02017180\n\
+_080249E0:\n\
+ ldr r0, _080249E8 @ =0x02017180\n\
+ ldrh r0, [r0, 0x8]\n\
+ b _08024A14\n\
+ .align 2, 0\n\
+_080249E8: .4byte 0x02017180\n\
+_080249EC:\n\
+ ldr r0, _080249F4 @ =0x02017180\n\
+ ldrh r0, [r0, 0x2]\n\
+ b _08024A14\n\
+ .align 2, 0\n\
+_080249F4: .4byte 0x02017180\n\
+_080249F8:\n\
+ ldr r0, _08024A00 @ =0x02017180\n\
+ ldrh r0, [r0, 0xA]\n\
+ b _08024A14\n\
+ .align 2, 0\n\
+_08024A00: .4byte 0x02017180\n\
+_08024A04:\n\
+ ldr r0, _08024A0C @ =0x02017180\n\
+ ldrh r0, [r0, 0x4]\n\
+ b _08024A14\n\
+ .align 2, 0\n\
+_08024A0C: .4byte 0x02017180\n\
+_08024A10:\n\
+ ldr r0, _08024A54 @ =0x02017180\n\
+ ldrh r0, [r0, 0x6]\n\
+_08024A14:\n\
+ subs r0, r1, r0\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+_08024A1A:\n\
+ lsls r0, r7, 16\n\
+ asrs r0, 16\n\
+ cmp r0, 0\n\
+ bge _08024A2C\n\
+ negs r0, r0\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ movs r1, 0x1\n\
+ add r9, r1\n\
+_08024A2C:\n\
+ movs r0, 0xFC\n\
+ strb r0, [r5]\n\
+ movs r0, 0x13\n\
+ strb r0, [r5, 0x1]\n\
+ movs r1, 0x1\n\
+ mov r2, r8\n\
+ ands r1, r2\n\
+ lsls r0, r1, 3\n\
+ adds r0, r1\n\
+ adds r0, 0x5\n\
+ lsls r0, 3\n\
+ adds r0, 0x6\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ mov r0, r9\n\
+ cmp r0, 0\n\
+ beq _08024A5C\n\
+ ldr r1, _08024A58 @ =gUnknown_08400DAC\n\
+ b _08024A5E\n\
+ .align 2, 0\n\
+_08024A54: .4byte 0x02017180\n\
+_08024A58: .4byte gUnknown_08400DAC\n\
+_08024A5C:\n\
+ ldr r1, _08024AA4 @ =gUnknown_08400DAA\n\
+_08024A5E:\n\
+ adds r0, r5, 0\n\
+ bl StringCopy\n\
+ adds r5, r0, 0\n\
+ movs r6, 0xFC\n\
+ strb r6, [r5]\n\
+ movs r4, 0x14\n\
+ strb r4, [r5, 0x1]\n\
+ movs r0, 0x6\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ lsls r1, r7, 16\n\
+ asrs r1, 16\n\
+ adds r0, r5, 0\n\
+ movs r2, 0x1\n\
+ movs r3, 0x2\n\
+ bl ConvertIntToDecimalStringN\n\
+ adds r5, r0, 0\n\
+ strb r6, [r5]\n\
+ strb r4, [r5, 0x1]\n\
+ movs r0, 0\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ movs r0, 0x1\n\
+ mov r1, r8\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08024AA8\n\
+ movs r0, 0xFE\n\
+ strb r0, [r5]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r5, 0x1]\n\
+ adds r5, 0x1\n\
+ b _08024AB8\n\
+ .align 2, 0\n\
+_08024AA4: .4byte gUnknown_08400DAA\n\
+_08024AA8:\n\
+ strb r6, [r5]\n\
+ movs r0, 0x11\n\
+ strb r0, [r5, 0x1]\n\
+ movs r0, 0x8\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ movs r0, 0xFF\n\
+ strb r0, [r5]\n\
+_08024AB8:\n\
+ movs r2, 0x1\n\
+ add r8, r2\n\
+ mov r0, r8\n\
+ cmp r0, 0x5\n\
+ bgt _08024AC4\n\
+ b _0802495A\n\
+_08024AC4:\n\
+ ldr r4, _08024AE4 @ =gUnknown_03004210\n\
+ ldr r1, _08024AE8 @ =gStringVar4\n\
+ adds r2, 0xFF\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r3, 0xC\n\
+ bl InitWindow\n\
+ adds r0, r4, 0\n\
+ bl sub_8002F44\n\
+ ldr r1, _08024AEC @ =0x02000000\n\
+ ldr r2, _08024AF0 @ =0x0001609c\n\
+ adds r1, r2\n\
+ b _08024BEA\n\
+ .align 2, 0\n\
+_08024AE4: .4byte gUnknown_03004210\n\
+_08024AE8: .4byte gStringVar4\n\
+_08024AEC: .4byte 0x02000000\n\
+_08024AF0: .4byte 0x0001609c\n\
+_08024AF4:\n\
+ ldr r0, _08024B94 @ =gMain\n\
+ ldrh r0, [r0, 0x2E]\n\
+ cmp r0, 0\n\
+ bne _08024AFE\n\
+ b _08024C38\n\
+_08024AFE:\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ ldr r0, _08024B98 @ =gStringVar4\n\
+ ldr r1, _08024B9C @ =gUnknown_08400D9F\n\
+ bl StringCopy\n\
+ adds r5, r0, 0\n\
+ movs r0, 0\n\
+ mov r8, r0\n\
+ mov r9, r0\n\
+ movs r6, 0xFC\n\
+ movs r7, 0x14\n\
+ ldr r1, _08024BA0 @ =0x00016018\n\
+ add r10, r1\n\
+_08024B1C:\n\
+ ldr r1, _08024BA4 @ =gUnknown_0840165C\n\
+ mov r2, r8\n\
+ lsls r0, r2, 2\n\
+ adds r0, r1\n\
+ ldr r1, [r0]\n\
+ adds r0, r5, 0\n\
+ bl StringAppend\n\
+ adds r5, r0, 0\n\
+ mov r0, r10\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x64\n\
+ muls r0, r1\n\
+ ldr r1, _08024BA8 @ =gPlayerParty\n\
+ adds r0, r1\n\
+ ldr r1, _08024BAC @ =gLevelUpStatBoxStats\n\
+ add r1, r8\n\
+ ldrb r1, [r1]\n\
+ bl GetMonData\n\
+ adds r1, r0, 0\n\
+ strb r6, [r5]\n\
+ movs r0, 0x13\n\
+ strb r0, [r5, 0x1]\n\
+ movs r4, 0x1\n\
+ mov r2, r8\n\
+ ands r4, r2\n\
+ lsls r0, r4, 3\n\
+ adds r0, r4\n\
+ adds r0, 0x5\n\
+ lsls r0, 3\n\
+ adds r0, 0x6\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ strb r6, [r5]\n\
+ strb r7, [r5, 0x1]\n\
+ movs r0, 0x6\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ lsls r1, 16\n\
+ asrs r1, 16\n\
+ adds r0, r5, 0\n\
+ movs r2, 0x1\n\
+ movs r3, 0x3\n\
+ bl ConvertIntToDecimalStringN\n\
+ adds r5, r0, 0\n\
+ strb r6, [r5]\n\
+ strb r7, [r5, 0x1]\n\
+ mov r0, r9\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ cmp r4, 0\n\
+ beq _08024BB0\n\
+ movs r0, 0xFE\n\
+ strb r0, [r5]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r5, 0x1]\n\
+ adds r5, 0x1\n\
+ b _08024BC0\n\
+ .align 2, 0\n\
+_08024B94: .4byte gMain\n\
+_08024B98: .4byte gStringVar4\n\
+_08024B9C: .4byte gUnknown_08400D9F\n\
+_08024BA0: .4byte 0x00016018\n\
+_08024BA4: .4byte gUnknown_0840165C\n\
+_08024BA8: .4byte gPlayerParty\n\
+_08024BAC: .4byte gLevelUpStatBoxStats\n\
+_08024BB0:\n\
+ strb r6, [r5]\n\
+ movs r0, 0x11\n\
+ strb r0, [r5, 0x1]\n\
+ movs r0, 0x8\n\
+ strb r0, [r5, 0x2]\n\
+ adds r5, 0x3\n\
+ movs r0, 0xFF\n\
+ strb r0, [r5]\n\
+_08024BC0:\n\
+ movs r1, 0x1\n\
+ add r8, r1\n\
+ mov r2, r8\n\
+ cmp r2, 0x5\n\
+ ble _08024B1C\n\
+ ldr r4, _08024BF4 @ =gUnknown_03004210\n\
+ ldr r1, _08024BF8 @ =gStringVar4\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ adds r0, r4, 0\n\
+ movs r3, 0xC\n\
+ bl InitWindow\n\
+ adds r0, r4, 0\n\
+ bl sub_8002F44\n\
+ ldr r1, _08024BFC @ =0x02000000\n\
+ ldr r0, _08024C00 @ =0x0001609c\n\
+ adds r1, r0\n\
+_08024BEA:\n\
+ ldrb r0, [r1]\n\
+ adds r0, 0x1\n\
+ strb r0, [r1]\n\
+ b _08024C38\n\
+ .align 2, 0\n\
+_08024BF4: .4byte gUnknown_03004210\n\
+_08024BF8: .4byte gStringVar4\n\
+_08024BFC: .4byte 0x02000000\n\
+_08024C00: .4byte 0x0001609c\n\
+_08024C04:\n\
+ ldr r0, _08024C2C @ =gMain\n\
+ ldrh r0, [r0, 0x2E]\n\
+ cmp r0, 0\n\
+ beq _08024C38\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x1\n\
+ str r0, [sp]\n\
+ movs r0, 0xB\n\
+ movs r1, 0\n\
+ movs r2, 0x1D\n\
+ movs r3, 0x7\n\
+ bl sub_802BBD4\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ b _08024C38\n\
+ .align 2, 0\n\
+_08024C2C: .4byte gMain\n\
+_08024C30:\n\
+ ldr r1, _08024C48 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x1\n\
+ str r0, [r1]\n\
+_08024C38:\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\
+ .align 2, 0\n\
+_08024C48: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided");
+}
+
+#endif
+
+static void atk6D_set_sentpokes_values(void)
+{
+ sub_80156DC();
+ gBattlescriptCurrInstr++;
+}
+
+static void atk6E_set_atk_to_player0(void)
+{
+ gBankAttacker = GetBankByPlayerAI(0);
+ gBattlescriptCurrInstr++;
+}
+
+static void atk6F_set_visible(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ EmitSpriteInvisibility(0, 0);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk70_record_ability(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ gBattlescriptCurrInstr += 1; //buggy, should be += 2, one byte for command, one byte for argument...
+}
+
+void sub_8024CEC(void)
+{
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 2;
+ gBattleTextBuff2[2] = (gMoveToLearn);
+ gBattleTextBuff2[3] = uBYTE1_16(gMoveToLearn);
+ gBattleTextBuff2[4] = 0xFF;
+}
+
+static void atk71_buffer_move_to_learn(void)
+{
+ sub_8024CEC();
+ gBattlescriptCurrInstr++;
+}
+
+static void atk72_jump_if_can_run_frombattle(void)
+{
+ if (sub_8014AB8(gBank1))
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+}
+
+static void atk73_hp_thresholds(void)
+{
+ u8 opposing_bank;
+ s32 result;
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ opposing_bank = gActiveBank ^ 1;
+
+ result = gBattleMons[opposing_bank].hp * 100 / gBattleMons[opposing_bank].maxHP;
+ if (result == 0)
+ result = 1;
+
+ if (result > 69 || !gBattleMons[opposing_bank].hp)
+ BATTLE_STRUCT->hpScale = 0;
+ else if (result > 39)
+ BATTLE_STRUCT->hpScale = 1;
+ else if (result > 9)
+ BATTLE_STRUCT->hpScale = 2;
+ else
+ BATTLE_STRUCT->hpScale = 3;
+ }
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk74_hp_thresholds2(void)
+{
+ u8 opposing_bank;
+ u8 hp_switchout;
+ s32 result;
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ opposing_bank = gActiveBank ^ 1;
+ hp_switchout = ewram[2 * GetBankSide(opposing_bank) + 0x160bc]; //BATTLE_STRUCT->HP_OnSwitchout[GetBankSide(opposing_bank)];
+ result = (hp_switchout - gBattleMons[opposing_bank].hp) * 100 / hp_switchout;
+
+ if (gBattleMons[opposing_bank].hp >= hp_switchout)
+ BATTLE_STRUCT->hpScale = 0;
+ else if (result <= 29)
+ BATTLE_STRUCT->hpScale = 1;
+ else if (result <= 69)
+ BATTLE_STRUCT->hpScale = 2;
+ else
+ BATTLE_STRUCT->hpScale = 3;
+ }
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk75_8026A58(void)
+{
+ gBankInMenu = gBankAttacker;
+ sub_803E1B0(&gEnemyParty[gBattlePartyID[gBankAttacker]], gLastUsedItem, gBattlePartyID[gBankAttacker], 0, 1);
+ gBattlescriptCurrInstr += 1;
+}
+
+static void atk76_various(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ switch (BSScriptRead8(gBattlescriptCurrInstr + 2))
+ {
+ case 0:
+ CancelMultiTurnMoves(gActiveBank);
+ break;
+ case 1:
+ {
+ u8 side;
+ gBankAttacker = gBankTarget;
+ side = GetBankSide(gBankAttacker) ^ 1;
+ if (gSideTimer[side].followmeTimer && gBattleMons[gSideTimer[side].followmeTarget].hp)
+ gBankTarget = gSideTimer[side].followmeTarget;
+ else
+ gBankTarget = gActiveBank;
+ }
+ break;
+ case 2:
+ gBattleCommunication[0] = CanRunFromBattle();
+ break;
+ case 3:
+ gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ break;
+ case 4:
+ if (gHitMarker & HITMARKER_FAINTED(gActiveBank))
+ gBattleCommunication[0] = 1;
+ else
+ gBattleCommunication[0] = 0;
+ break;
+ case 5:
+ gSpecialStatuses[gActiveBank].intimidatedPoke = 0;
+ gSpecialStatuses[gActiveBank].traced = 0;
+ break;
+ case 6:
+ {
+ int i;
+ u16* choiced_move;
+ if (gBattlePartyID[0] == BATTLE_STRUCT->expGetterID)
+ goto ACTIVE_0;
+ if (gBattlePartyID[2] != BATTLE_STRUCT->expGetterID)
+ break;
+ if (gBattlePartyID[0] == gBattlePartyID[2])
+ {
+ ACTIVE_0:
+ gActiveBank = 0;
+ }
+ else
+ gActiveBank = 2;
+
+ choiced_move = (u16*)(&ewram[gActiveBank * 2 + 0x160e8]);
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gActiveBank].moves[i] == *choiced_move)
+ break;
+ }
+ if (i == 4)
+ *choiced_move = 0;
+ }
+ break;
+ }
+
+ gBattlescriptCurrInstr += 3;
+}
+
+static void atk77_setprotect(void) //protect and endure
+{
+ bool8 not_last_turn = 1;
+ u16 last_move = gUnknown_02024C4C[gBankAttacker];
+
+ if (last_move != MOVE_PROTECT && last_move != MOVE_DETECT && last_move != MOVE_ENDURE)
+ gDisableStructs[gBankAttacker].protectUses = 0;
+ if (gCurrentMoveTurn == (gNoOfAllBanks - 1))
+ not_last_turn = 0;
+
+ if (sProtectSuccessRates[gDisableStructs[gBankAttacker].protectUses] > Random() && not_last_turn)
+ {
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_PROTECT)
+ {
+ gProtectStructs[gBankAttacker].protected = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_ENDURE) //what is else if
+ {
+ gProtectStructs[gBankAttacker].endured = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ gDisableStructs[gBankAttacker].protectUses++;
+ }
+ else
+ {
+ gDisableStructs[gBankAttacker].protectUses = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ }
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk78_faintifabilitynotdamp(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ {
+ if (gBattleMons[gBankTarget].ability == ABILITY_DAMP)
+ break;
+ }
+
+ if (gBankTarget == gNoOfAllBanks)
+ {
+ gActiveBank = gBankAttacker;
+ gBattleMoveDamage = gBattleMons[gActiveBank].hp;
+ EmitHealthBarUpdate(0, 0x7FFF);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr++;
+
+ for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ {
+ if (gBankTarget == gBankAttacker)
+ continue;
+ if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ break;
+ }
+ }
+ else
+ {
+ gLastUsedAbility = ABILITY_DAMP;
+ RecordAbilityBattle(gBankTarget, gBattleMons[gBankTarget].ability);
+ gBattlescriptCurrInstr = gUnknown_081D9834;
+ }
+}
+
+static void atk79_setatkhptozero(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = gBankAttacker;
+ gBattleMons[gActiveBank].hp = 0;
+ EmitSetAttributes(0, REQUEST_HP_BATTLE, 0, 2, &gBattleMons[gActiveBank].hp);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk7A_jumpwhiletargetvalid(void) //used by intimidate to loop through all targets
+{
+ u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ for (gBankTarget++; ; gBankTarget++)
+ {
+ if (gBankTarget == gBankAttacker)
+ continue;
+ if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ break;
+ }
+
+ if (gBankTarget >= gNoOfAllBanks)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = jump_loc;
+ }
+ else
+ gBattlescriptCurrInstr += 5;
+}
+
+static void atk7B_healhalfHP_if_possible(void)
+{
+ u8* fail_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+
+ if (BSScriptRead8(gBattlescriptCurrInstr + 5) == 1)
+ gBankTarget = gBankAttacker;
+
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+
+ if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP)
+ gBattlescriptCurrInstr = fail_loc;
+ else
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk7C_8025508(void)
+{
+ u16 r7 = ewram[gBankAttacker * 2 + 0x160ac] | (ewram[gBankAttacker * 2 + 0x160ad] << 8);
+ u16 r6 = ewram[gBankAttacker * 4 + 0x16100] | (ewram[gBankAttacker * 4 + 0x16101] << 8);
+ u16 r5 = ewram[gBankAttacker * 4 + 0x16102] | (ewram[gBankAttacker * 4 + 0x16103] << 8);
+
+ if (r7 !=0 && r7 != 0xFFFF)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gCurrentMove = r7;
+ gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect];
+ }
+ else if (r6 != 0 && r5 != 0 && r6 != 0xFFFF && r5 != 0xFFFF)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ if (Random() & 1)
+ gCurrentMove = r6;
+ else
+ gCurrentMove = r5;
+ gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect];
+ }
+ else if (r6 != 0 && r6 != 0xFFFF)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gCurrentMove = r6;
+ gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect];
+ }
+ else if (r5 != 0 && r5 != 0xFFFF)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gCurrentMove = r5;
+ gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect];
+ }
+ else
+ {
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void atk7D_set_rain(void)
+{
+ if (gBattleWeather & WEATHER_RAIN_ANY)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ gBattleWeather = WEATHER_RAIN_TEMPORARY;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gWishFutureKnock.weatherDuration = 5;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk7E_setreflect(void)
+{
+ if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_REFLECT)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else
+ {
+ gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_REFLECT;
+ gSideTimer[GetBankIdentity(gBankAttacker) & 1].reflectTimer = 5;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk7F_setseeded(void)
+{
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT || gStatuses3[gBankTarget] & STATUS3_LEECHSEED)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else if (gBattleMons[gBankTarget].type1 == TYPE_GRASS || gBattleMons[gBankTarget].type2 == TYPE_GRASS)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ gStatuses3[gBankTarget] |= gBankAttacker;
+ gStatuses3[gBankTarget] |= STATUS3_LEECHSEED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk80_manipulatedamage(void)
+{
+ switch (BSScriptRead8(gBattlescriptCurrInstr + 1))
+ {
+ case 0:
+ gBattleMoveDamage *= -1;
+ break;
+ case 1:
+ gBattleMoveDamage /= 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ if ((gBattleMons[gBankTarget].maxHP / 2) < gBattleMoveDamage)
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2;
+ break;
+ case 2:
+ gBattleMoveDamage *= 2;
+ break;
+ }
+
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk81_setrest(void)
+{
+ u8* fail_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ gActiveBank = gBankTarget = gBankAttacker;
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP * (-1);
+ if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP)
+ gBattlescriptCurrInstr = fail_loc;
+ else
+ {
+ if (gBattleMons[gBankTarget].status1 & ((u8)(~STATUS_SLEEP)))
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+
+ gBattleMons[gBankTarget].status1 = 3;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atk82_jumpifnotfirstturn(void)
+{
+ u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+
+ if (gDisableStructs[gBankAttacker].isFirstTurn)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = jump_loc;
+}
+
+static void atk83_nop(void)
+{
+ gBattlescriptCurrInstr++;
+}
+
+bool8 UproarWakeUpCheck(u8 bank)
+{
+ int i;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (!(gBattleMons[i].status2 & STATUS2_UPROAR) || gBattleMons[bank].ability == ABILITY_SOUNDPROOF) //wtf gamefreak, you should check this only once, not every time in a loop...
+ continue;
+ BATTLE_STRUCT->scriptingActive = i;
+ if (gBankTarget == 0xFF)
+ gBankTarget = i;
+ else if (gBankTarget == i)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ break;
+ }
+ if (i == gNoOfAllBanks)
+ return 0;
+ else
+ return 1;
+}
+
+static void atk84_jump_if_cant_sleep(void)
+{
+ u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ if (UproarWakeUpCheck(gBankTarget))
+ gBattlescriptCurrInstr = jump_loc;
+ else if (gBattleMons[gBankTarget].ability == ABILITY_INSOMNIA || gBattleMons[gBankTarget].ability == ABILITY_VITAL_SPIRIT)
+ {
+ gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ gBattlescriptCurrInstr = jump_loc;
+ RecordAbilityBattle(gBankTarget, gLastUsedAbility);
+ }
+ else
+ {
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atk85_stockpile(void)
+{
+ if (gDisableStructs[gBankAttacker].stockpileCounter == 3)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ gDisableStructs[gBankAttacker].stockpileCounter++;
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 1;
+ gBattleTextBuff1[2] = 1;
+ gBattleTextBuff1[3] = 1;
+ gBattleTextBuff1[4] = gDisableStructs[gBankAttacker].stockpileCounter;
+ gBattleTextBuff1[5] = 0xFF;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk86_stockpiletobasedamage(void)
+{
+ u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ if (gDisableStructs[gBankAttacker].stockpileCounter == 0)
+ {
+ gBattlescriptCurrInstr = jump_loc;
+ }
+ else
+ {
+ if (gBattleCommunication[6] != 1)
+ {
+ gBattleMoveDamage = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
+ gSideAffecting[GetBankIdentity(gBankTarget) & 1], 0,
+ 0, gBankAttacker, gBankTarget)
+ * gDisableStructs[gBankAttacker].stockpileCounter;
+ BATTLE_STRUCT->animTurn = gDisableStructs[gBankAttacker].stockpileCounter;
+
+ if (gProtectStructs[gBankAttacker].helpingHand)
+ gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
+ }
+ gDisableStructs[gBankAttacker].stockpileCounter = 0;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atk87_stockpiletohpheal(void)
+{
+ u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ if (gDisableStructs[gBankAttacker].stockpileCounter == 0)
+ {
+ gBattlescriptCurrInstr = jump_loc;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else if (gBattleMons[gBankAttacker].maxHP == gBattleMons[gBankAttacker].hp)
+ {
+ gDisableStructs[gBankAttacker].stockpileCounter = 0;
+ gBattlescriptCurrInstr = jump_loc;
+ gBankTarget = gBankAttacker;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / (1 << (3 - gDisableStructs[gBankAttacker].stockpileCounter));
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+ BATTLE_STRUCT->animTurn = gDisableStructs[gBankAttacker].stockpileCounter;
+ gDisableStructs[gBankAttacker].stockpileCounter = 0;
+ gBattlescriptCurrInstr += 5;
+ gBankTarget = gBankAttacker;
+ }
+}
+
+static void atk88_negativedamage(void)
+{
+ gBattleMoveDamage = -(gHP_dealt / 2);
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = -1;
+ gBattlescriptCurrInstr++;
+}
+
+#ifdef NONMATCHING
+u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr)
+{
+ u8 r9 = 0;
+ u8 r10 = 0;
+ u8 index;
+ if (flags & 0x40)
+ gActiveBank = gBankAttacker;
+ else
+ gActiveBank = gBankTarget;
+ flags &= ~(0x40);
+ if (flags & 0x80)
+ r9++;
+ flags &= ~(0x80);
+ if (flags & 0x20)
+ r10++;
+ flags &= ~(0x20);
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 5;
+ gBattleTextBuff1[2] = stat;
+ gBattleTextBuff1[3] = 0xFF;
+
+ if ((statchanger << 0x18) < 0) //stat decrease
+ {
+ if (gSideTimer[GetBankIdentity(gActiveBank) & 1].mistTimer && !r9 && gCurrentMove != MOVE_CURSE)
+ {
+ if (flags == 1)
+ {
+ if (gSpecialStatuses[gActiveBank].statloweringflag)
+ gBattlescriptCurrInstr = bs_ptr;
+ else
+ {
+ b_movescr_stack_push(bs_ptr);
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ gBattlescriptCurrInstr = BattleScript_MistProtected;
+ gSpecialStatuses[gActiveBank].statloweringflag = 1;
+ }
+ }
+ return 1;
+ }
+ else if (gCurrentMove != MOVE_CURSE && r10 != 1 && JumpIfMoveAffectedByProtect(0))
+ {
+ gBattlescriptCurrInstr = BattleScript_ButItFailed;
+ return 1;
+ }
+ else if ((gBattleMons[gActiveBank].ability == ABILITY_CLEAR_BODY || gBattleMons[gActiveBank].ability == ABILITY_WHITE_SMOKE) && !r9 && gCurrentMove != MOVE_CURSE)
+ {
+ if (flags == 1)
+ {
+ if (gSpecialStatuses[gActiveBank].statloweringflag)
+ gBattlescriptCurrInstr = bs_ptr;
+ else
+ {
+ b_movescr_stack_push(bs_ptr);
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ gBattlescriptCurrInstr = BattleScript_AbilityNoStatLoss;
+ gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ gSpecialStatuses[gActiveBank].statloweringflag = 1;
+ }
+ }
+ return 1;
+ }
+ else if (gBattleMons[gActiveBank].ability == ABILITY_KEEN_EYE && !r9 && stat == STAT_STAGE_ACC)
+ {
+ if (flags == 1)
+ {
+ b_movescr_stack_push(bs_ptr);
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss;
+ gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ }
+ return 1;
+ }
+ else if (gBattleMons[gActiveBank].ability == ABILITY_HYPER_CUTTER && !r9 && stat == STAT_STAGE_ATK)
+ {
+ if (flags == 1)
+ {
+ b_movescr_stack_push(bs_ptr);
+ BATTLE_STRUCT->scriptingActive = gActiveBank;
+ gBattlescriptCurrInstr = BattleScript_AbilityNoSpecificStatLoss;
+ gLastUsedAbility = gBattleMons[gActiveBank].ability;
+ RecordAbilityBattle(gActiveBank, gLastUsedAbility);
+ }
+ return 1;
+ }
+ else if (gBattleMons[gActiveBank].ability == ABILITY_SHIELD_DUST && flags == 0)
+ return 1;
+ else //decrease
+ {
+ statchanger = -((statchanger >> 4) & (7));
+ gBattleTextBuff2[0] = 0xFD;
+ index = 1;
+ if (statchanger == -2)
+ {
+ gBattleTextBuff2[1] = 0;
+ gBattleTextBuff2[2] = 0xD3; //harshly
+ gBattleTextBuff2[3] = 0x0;
+ index = 4;
+ }
+ gBattleTextBuff2[index] = 0;
+ index++;
+ gBattleTextBuff2[index] = 0xD4; //fell
+ index++;
+ gBattleTextBuff2[index] = 0;
+ index++;
+ gBattleTextBuff2[index] = 0xFF;
+
+ if (gBattleMons[gActiveBank].statStages[stat] == 0)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ u8 stringID = 0;
+ if (gBankTarget == gActiveBank)
+ stringID = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = stringID;
+ }
+ }
+ }
+ else //stat increase
+ {
+ statchanger = (statchanger >> 4) & (7);
+ gBattleTextBuff2[0] = 0xFD;
+ index = 1;
+ if (statchanger == 2)
+ {
+ gBattleTextBuff2[1] = 0;
+ gBattleTextBuff2[2] = 0xD1; //sharply
+ gBattleTextBuff2[3] = 0x0;
+ index = 4;
+ }
+ gBattleTextBuff2[index] = 0;
+ index++;
+ gBattleTextBuff2[index] = 0xD2; //rose
+ index++;
+ gBattleTextBuff2[index] = 0;
+ index++;
+ gBattleTextBuff2[index] = 0xFF;
+
+ if (gBattleMons[gActiveBank].statStages[stat] == 0xC)
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ u8 stringID = 0;
+ if (gBankTarget == gActiveBank)
+ stringID = 1;
+ gBattleCommunication[MULTISTRING_CHOOSER] = stringID;
+ }
+ }
+
+ gBattleMons[gActiveBank].statStages[stat] += statchanger;
+ if (gBattleMons[gActiveBank].statStages[stat] < 0)
+ gBattleMons[gActiveBank].statStages[stat] = 0;
+ if (gBattleMons[gActiveBank].statStages[stat] > 0xC)
+ gBattleMons[gActiveBank].statStages[stat] = 0xC;
+
+ if (gBattleCommunication[MULTISTRING_CHOOSER] == 2)
+ {
+ if (flags & 1)
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ if (gBattleCommunication[MULTISTRING_CHOOSER] == 2 && !(flags & 1)) //what the actual fuck gamefreak...
+ return 1;
+ }
+ return 0;
+}
+
+#else
+__attribute__((naked))
+u8 ChangeStatBuffs(s8 statchanger, u8 stat, u8 flags, u8* bs_ptr)
+{
+ 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\
+ mov r8, r3\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r7, r1, 24\n\
+ lsls r2, 24\n\
+ lsrs r5, r2, 24\n\
+ movs r0, 0\n\
+ mov r9, r0\n\
+ mov r10, r0\n\
+ movs r0, 0x40\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08025E54\n\
+ ldr r0, _08025E4C @ =gActiveBank\n\
+ ldr r1, _08025E50 @ =gBankAttacker\n\
+ b _08025E58\n\
+ .align 2, 0\n\
+_08025E4C: .4byte gActiveBank\n\
+_08025E50: .4byte gBankAttacker\n\
+_08025E54:\n\
+ ldr r0, _08025EF8 @ =gActiveBank\n\
+ ldr r1, _08025EFC @ =gBankTarget\n\
+_08025E58:\n\
+ ldrb r1, [r1]\n\
+ strb r1, [r0]\n\
+ movs r0, 0xBF\n\
+ ands r5, r0\n\
+ movs r0, 0x80\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08025E72\n\
+ mov r0, r9\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r9, r0\n\
+_08025E72:\n\
+ movs r0, 0x7F\n\
+ ands r5, r0\n\
+ movs r0, 0x20\n\
+ ands r0, r5\n\
+ cmp r0, 0\n\
+ beq _08025E88\n\
+ mov r0, r10\n\
+ adds r0, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+_08025E88:\n\
+ movs r0, 0xDF\n\
+ ands r5, r0\n\
+ ldr r1, _08025F00 @ =gBattleTextBuff1\n\
+ movs r4, 0\n\
+ movs r2, 0xFD\n\
+ strb r2, [r1]\n\
+ movs r0, 0x5\n\
+ strb r0, [r1, 0x1]\n\
+ strb r7, [r1, 0x2]\n\
+ movs r3, 0x1\n\
+ negs r3, r3\n\
+ mov r12, r3\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x3]\n\
+ lsls r0, r6, 24\n\
+ cmp r0, 0\n\
+ blt _08025EAC\n\
+ b _080261B0\n\
+_08025EAC:\n\
+ ldr r4, _08025F04 @ =gSideTimer\n\
+ ldr r1, _08025EF8 @ =gActiveBank\n\
+ ldrb r0, [r1]\n\
+ bl GetBankIdentity\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrb r0, [r0, 0x2]\n\
+ cmp r0, 0\n\
+ beq _08025F54\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ bne _08025F54\n\
+ ldr r0, _08025F08 @ =gCurrentMove\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0xAE\n\
+ beq _08025F84\n\
+ cmp r5, 0x1\n\
+ bne _08025F74\n\
+ ldr r4, _08025F0C @ =gSpecialStatuses\n\
+ ldr r3, _08025EF8 @ =gActiveBank\n\
+ ldrb r0, [r3]\n\
+ lsls r1, r0, 2\n\
+ adds r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r4\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _08025F14\n\
+ ldr r0, _08025F10 @ =gBattlescriptCurrInstr\n\
+ mov r4, r8\n\
+ str r4, [r0]\n\
+ b _08025F74\n\
+ .align 2, 0\n\
+_08025EF8: .4byte gActiveBank\n\
+_08025EFC: .4byte gBankTarget\n\
+_08025F00: .4byte gBattleTextBuff1\n\
+_08025F04: .4byte gSideTimer\n\
+_08025F08: .4byte gCurrentMove\n\
+_08025F0C: .4byte gSpecialStatuses\n\
+_08025F10: .4byte gBattlescriptCurrInstr\n\
+_08025F14:\n\
+ mov r0, r8\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _08025F40 @ =0x02000000\n\
+ ldr r6, _08025F44 @ =gActiveBank\n\
+ ldrb r1, [r6]\n\
+ ldr r2, _08025F48 @ =0x00016003\n\
+ adds r0, r2\n\
+ strb r1, [r0]\n\
+ ldr r1, _08025F4C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08025F50 @ =BattleScript_MistProtected\n\
+ str r0, [r1]\n\
+ ldrb r1, [r6]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x1\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08025F74\n\
+ .align 2, 0\n\
+_08025F40: .4byte 0x02000000\n\
+_08025F44: .4byte gActiveBank\n\
+_08025F48: .4byte 0x00016003\n\
+_08025F4C: .4byte gBattlescriptCurrInstr\n\
+_08025F50: .4byte BattleScript_MistProtected\n\
+_08025F54:\n\
+ ldr r0, _08025F78 @ =gCurrentMove\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0xAE\n\
+ beq _08025F84\n\
+ mov r3, r10\n\
+ cmp r3, 0x1\n\
+ beq _08025F84\n\
+ movs r0, 0\n\
+ bl JumpIfMoveAffectedByProtect\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08025F84\n\
+ ldr r1, _08025F7C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08025F80 @ =BattleScript_ButItFailed\n\
+ str r0, [r1]\n\
+_08025F74:\n\
+ movs r0, 0x1\n\
+ b _080262A4\n\
+ .align 2, 0\n\
+_08025F78: .4byte gCurrentMove\n\
+_08025F7C: .4byte gBattlescriptCurrInstr\n\
+_08025F80: .4byte BattleScript_ButItFailed\n\
+_08025F84:\n\
+ ldr r2, _08025FCC @ =gBattleMons\n\
+ ldr r1, _08025FD0 @ =gActiveBank\n\
+ ldrb r3, [r1]\n\
+ movs r4, 0x58\n\
+ adds r0, r3, 0\n\
+ muls r0, r4\n\
+ adds r0, r2\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ mov r10, r2\n\
+ cmp r0, 0x1D\n\
+ beq _08025FA0\n\
+ cmp r0, 0x49\n\
+ bne _08026040\n\
+_08025FA0:\n\
+ mov r0, r9\n\
+ cmp r0, 0\n\
+ bne _08026040\n\
+ ldr r0, _08025FD4 @ =gCurrentMove\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0xAE\n\
+ beq _08026040\n\
+ cmp r5, 0x1\n\
+ bne _08025F74\n\
+ ldr r4, _08025FD8 @ =gSpecialStatuses\n\
+ lsls r0, r3, 2\n\
+ adds r0, r3\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 31\n\
+ cmp r0, 0\n\
+ beq _08025FE0\n\
+ ldr r0, _08025FDC @ =gBattlescriptCurrInstr\n\
+ mov r1, r8\n\
+ str r1, [r0]\n\
+ b _08025F74\n\
+ .align 2, 0\n\
+_08025FCC: .4byte gBattleMons\n\
+_08025FD0: .4byte gActiveBank\n\
+_08025FD4: .4byte gCurrentMove\n\
+_08025FD8: .4byte gSpecialStatuses\n\
+_08025FDC: .4byte gBattlescriptCurrInstr\n\
+_08025FE0:\n\
+ mov r0, r8\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _08026028 @ =0x02000000\n\
+ ldr r2, _0802602C @ =gActiveBank\n\
+ ldrb r1, [r2]\n\
+ ldr r3, _08026030 @ =0x00016003\n\
+ adds r0, r3\n\
+ strb r1, [r0]\n\
+ ldr r1, _08026034 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08026038 @ =BattleScript_AbilityNoStatLoss\n\
+ str r0, [r1]\n\
+ ldr r1, _0802603C @ =gLastUsedAbility\n\
+ ldrb r0, [r2]\n\
+ movs r6, 0x58\n\
+ muls r0, r6\n\
+ add r0, r10\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r2]\n\
+ ldrb r1, [r1]\n\
+ bl RecordAbilityBattle\n\
+ ldr r0, _0802602C @ =gActiveBank\n\
+ ldrb r1, [r0]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r4\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x1\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+ b _08025F74\n\
+ .align 2, 0\n\
+_08026028: .4byte 0x02000000\n\
+_0802602C: .4byte gActiveBank\n\
+_08026030: .4byte 0x00016003\n\
+_08026034: .4byte gBattlescriptCurrInstr\n\
+_08026038: .4byte BattleScript_AbilityNoStatLoss\n\
+_0802603C: .4byte gLastUsedAbility\n\
+_08026040:\n\
+ ldr r1, _08026090 @ =gActiveBank\n\
+ ldrb r0, [r1]\n\
+ movs r4, 0x58\n\
+ muls r0, r4\n\
+ add r0, r10\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x33\n\
+ bne _080260A8\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ bne _080260A8\n\
+ cmp r7, 0x6\n\
+ bne _080260A8\n\
+ cmp r5, 0x1\n\
+ bne _08025F74\n\
+ mov r0, r8\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _08026094 @ =0x02000000\n\
+ ldr r3, _08026090 @ =gActiveBank\n\
+ ldrb r1, [r3]\n\
+ ldr r6, _08026098 @ =0x00016003\n\
+ adds r0, r6\n\
+ strb r1, [r0]\n\
+ ldr r1, _0802609C @ =gBattlescriptCurrInstr\n\
+ ldr r0, _080260A0 @ =BattleScript_AbilityNoSpecificStatLoss\n\
+ str r0, [r1]\n\
+ ldr r1, _080260A4 @ =gLastUsedAbility\n\
+ ldrb r0, [r3]\n\
+ muls r0, r4\n\
+ add r0, r10\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ ldrb r1, [r1]\n\
+ bl RecordAbilityBattle\n\
+ b _08025F74\n\
+ .align 2, 0\n\
+_08026090: .4byte gActiveBank\n\
+_08026094: .4byte 0x02000000\n\
+_08026098: .4byte 0x00016003\n\
+_0802609C: .4byte gBattlescriptCurrInstr\n\
+_080260A0: .4byte BattleScript_AbilityNoSpecificStatLoss\n\
+_080260A4: .4byte gLastUsedAbility\n\
+_080260A8:\n\
+ ldr r1, _080260FC @ =gActiveBank\n\
+ ldrb r0, [r1]\n\
+ movs r4, 0x58\n\
+ muls r0, r4\n\
+ add r0, r10\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x34\n\
+ bne _08026114\n\
+ mov r2, r9\n\
+ cmp r2, 0\n\
+ bne _08026114\n\
+ cmp r7, 0x1\n\
+ bne _08026114\n\
+ cmp r5, 0x1\n\
+ beq _080260CA\n\
+ b _08025F74\n\
+_080260CA:\n\
+ mov r0, r8\n\
+ bl b_movescr_stack_push\n\
+ ldr r0, _08026100 @ =0x02000000\n\
+ ldr r3, _080260FC @ =gActiveBank\n\
+ ldrb r1, [r3]\n\
+ ldr r6, _08026104 @ =0x00016003\n\
+ adds r0, r6\n\
+ strb r1, [r0]\n\
+ ldr r1, _08026108 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _0802610C @ =BattleScript_AbilityNoSpecificStatLoss\n\
+ str r0, [r1]\n\
+ ldr r1, _08026110 @ =gLastUsedAbility\n\
+ ldrb r0, [r3]\n\
+ muls r0, r4\n\
+ add r0, r10\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r3]\n\
+ ldrb r1, [r1]\n\
+ bl RecordAbilityBattle\n\
+ b _08025F74\n\
+ .align 2, 0\n\
+_080260FC: .4byte gActiveBank\n\
+_08026100: .4byte 0x02000000\n\
+_08026104: .4byte 0x00016003\n\
+_08026108: .4byte gBattlescriptCurrInstr\n\
+_0802610C: .4byte BattleScript_AbilityNoSpecificStatLoss\n\
+_08026110: .4byte gLastUsedAbility\n\
+_08026114:\n\
+ ldr r0, _080261A0 @ =gActiveBank\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ add r0, r10\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x13\n\
+ bne _0802612C\n\
+ cmp r5, 0\n\
+ bne _0802612C\n\
+ b _08025F74\n\
+_0802612C:\n\
+ lsls r0, r6, 24\n\
+ asrs r0, 28\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ negs r0, r0\n\
+ lsls r0, 24\n\
+ ldr r3, _080261A4 @ =gBattleTextBuff2\n\
+ movs r4, 0\n\
+ movs r1, 0xFD\n\
+ strb r1, [r3]\n\
+ movs r2, 0x1\n\
+ lsrs r6, r0, 24\n\
+ asrs r0, 24\n\
+ subs r1, 0xFF\n\
+ cmp r0, r1\n\
+ bne _08026156\n\
+ strb r4, [r3, 0x1]\n\
+ movs r0, 0xD3\n\
+ strb r0, [r3, 0x2]\n\
+ strb r4, [r3, 0x3]\n\
+ movs r2, 0x4\n\
+_08026156:\n\
+ adds r0, r2, r3\n\
+ strb r4, [r0]\n\
+ adds r2, 0x1\n\
+ adds r1, r2, r3\n\
+ movs r0, 0xD4\n\
+ strb r0, [r1]\n\
+ adds r2, 0x1\n\
+ adds r0, r2, r3\n\
+ strb r4, [r0]\n\
+ adds r2, 0x1\n\
+ adds r1, r2, r3\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1]\n\
+ ldr r1, _080261A0 @ =gActiveBank\n\
+ ldrb r2, [r1]\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ adds r0, r7, r0\n\
+ mov r1, r10\n\
+ adds r1, 0x18\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0\n\
+ beq _08026206\n\
+ movs r1, 0\n\
+ ldr r0, _080261A8 @ =gBankTarget\n\
+ ldrb r0, [r0]\n\
+ ldr r3, _080261AC @ =gBattleCommunication\n\
+ mov r8, r3\n\
+ cmp r0, r2\n\
+ bne _0802619A\n\
+ movs r1, 0x1\n\
+_0802619A:\n\
+ mov r4, r8\n\
+ strb r1, [r4, 0x5]\n\
+ b _08026234\n\
+ .align 2, 0\n\
+_080261A0: .4byte gActiveBank\n\
+_080261A4: .4byte gBattleTextBuff2\n\
+_080261A8: .4byte gBankTarget\n\
+_080261AC: .4byte gBattleCommunication\n\
+_080261B0:\n\
+ asrs r6, r0, 28\n\
+ movs r0, 0x7\n\
+ ands r6, r0\n\
+ ldr r3, _08026210 @ =gBattleTextBuff2\n\
+ strb r2, [r3]\n\
+ movs r2, 0x1\n\
+ cmp r6, 0x2\n\
+ bne _080261CA\n\
+ strb r4, [r3, 0x1]\n\
+ movs r0, 0xD1\n\
+ strb r0, [r3, 0x2]\n\
+ strb r4, [r3, 0x3]\n\
+ movs r2, 0x4\n\
+_080261CA:\n\
+ adds r0, r2, r3\n\
+ strb r4, [r0]\n\
+ adds r2, 0x1\n\
+ adds r1, r2, r3\n\
+ movs r0, 0xD2\n\
+ strb r0, [r1]\n\
+ adds r2, 0x1\n\
+ adds r0, r2, r3\n\
+ strb r4, [r0]\n\
+ adds r2, 0x1\n\
+ adds r1, r2, r3\n\
+ ldrb r0, [r1]\n\
+ mov r2, r12\n\
+ orrs r0, r2\n\
+ strb r0, [r1]\n\
+ ldr r2, _08026214 @ =gBattleMons\n\
+ ldr r4, _08026218 @ =gActiveBank\n\
+ ldrb r3, [r4]\n\
+ movs r0, 0x58\n\
+ muls r0, r3\n\
+ adds r0, r7, r0\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x18\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ mov r10, r2\n\
+ cmp r0, 0xC\n\
+ bne _08026220\n\
+_08026206:\n\
+ ldr r1, _0802621C @ =gBattleCommunication\n\
+ movs r0, 0x2\n\
+ strb r0, [r1, 0x5]\n\
+ mov r8, r1\n\
+ b _08026234\n\
+ .align 2, 0\n\
+_08026210: .4byte gBattleTextBuff2\n\
+_08026214: .4byte gBattleMons\n\
+_08026218: .4byte gActiveBank\n\
+_0802621C: .4byte gBattleCommunication\n\
+_08026220:\n\
+ movs r1, 0\n\
+ ldr r0, _080262B4 @ =gBankTarget\n\
+ ldrb r0, [r0]\n\
+ ldr r2, _080262B8 @ =gBattleCommunication\n\
+ mov r8, r2\n\
+ cmp r0, r3\n\
+ bne _08026230\n\
+ movs r1, 0x1\n\
+_08026230:\n\
+ mov r3, r8\n\
+ strb r1, [r3, 0x5]\n\
+_08026234:\n\
+ ldr r2, _080262BC @ =gActiveBank\n\
+ ldrb r0, [r2]\n\
+ movs r4, 0x58\n\
+ adds r1, r0, 0\n\
+ muls r1, r4\n\
+ adds r1, r7, r1\n\
+ mov r3, r10\n\
+ adds r3, 0x18\n\
+ adds r1, r3\n\
+ lsls r0, r6, 24\n\
+ asrs r0, 24\n\
+ ldrb r6, [r1]\n\
+ adds r0, r6\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r2]\n\
+ muls r0, r4\n\
+ adds r0, r7, r0\n\
+ adds r1, r0, r3\n\
+ movs r0, 0\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0\n\
+ bge _08026264\n\
+ movs r0, 0\n\
+ strb r0, [r1]\n\
+_08026264:\n\
+ ldr r1, _080262BC @ =gActiveBank\n\
+ ldrb r0, [r1]\n\
+ muls r0, r4\n\
+ adds r0, r7, r0\n\
+ adds r1, r0, r3\n\
+ movs r0, 0\n\
+ ldrsb r0, [r1, r0]\n\
+ cmp r0, 0xC\n\
+ ble _0802627A\n\
+ movs r0, 0xC\n\
+ strb r0, [r1]\n\
+_0802627A:\n\
+ mov r2, r8\n\
+ ldrb r0, [r2, 0x5]\n\
+ cmp r0, 0x2\n\
+ bne _080262A2\n\
+ movs r3, 0x1\n\
+ ands r3, r5\n\
+ cmp r3, 0\n\
+ beq _08026294\n\
+ ldr r0, _080262C0 @ =gBattleMoveFlags\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x1\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_08026294:\n\
+ mov r4, r8\n\
+ ldrb r0, [r4, 0x5]\n\
+ cmp r0, 0x2\n\
+ bne _080262A2\n\
+ cmp r3, 0\n\
+ bne _080262A2\n\
+ b _08025F74\n\
+_080262A2:\n\
+ movs r0, 0\n\
+_080262A4:\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\
+_080262B4: .4byte gBankTarget\n\
+_080262B8: .4byte gBattleCommunication\n\
+_080262BC: .4byte gActiveBank\n\
+_080262C0: .4byte gBattleMoveFlags\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+static void atk89_statbuffchange(void)
+{
+ u8* jump_loc = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ if (ChangeStatBuffs(BATTLE_STRUCT->statChanger & 0xF0, BATTLE_STRUCT->statChanger & 0xF, BSScriptRead8(gBattlescriptCurrInstr + 1), jump_loc) == 0)
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atk8A_normalisebuffs(void) //haze
+{
+ int i, j;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ for (j = 0; j < 8; j++)
+ {
+ gBattleMons[i].statStages[j] = 6;
+ }
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk8B_setbide(void)
+{
+ gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMove[gBankAttacker] = gCurrentMove;
+ gTakenDmg[gBankAttacker] = 0;
+ gBattleMons[gBankAttacker].status2 |= (STATUS2_BIDE - 0x100); //2 turns
+ gBattlescriptCurrInstr++;
+}
+
+static void atk8C_confuseifrepeatingattackends(void)
+{
+ if (!(gBattleMons[gBankAttacker].status2 & STATUS2_LOCK_CONFUSE))
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 0x75;
+ gBattlescriptCurrInstr++;
+}
+
+static void atk8D_setmultihit_counter(void)
+{
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1))
+ gMultiHitCounter = BSScriptRead8(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gMultiHitCounter = Random() & 3;
+ if (gMultiHitCounter > 1)
+ gMultiHitCounter = (Random() & 3) + 2;
+ else
+ gMultiHitCounter += 2;
+ }
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atk8E_prepare_multihit(void)
+{
+ ewram[0x160e0] = 0xFD;
+ ewram[0x160e1] = 1;
+ ewram[0x160e2] = 1;
+ ewram[0x160e3] = 1;
+ ewram[0x160e4] = 0;
+ ewram[0x160e5] = 0xFF;
+ gBattlescriptCurrInstr++;
+}
+
+static bool8 sub_80264C0(void)
+{
+ if (gBattleMons[gBankAttacker].level >= gBattleMons[gBankTarget].level)
+ {
+ ewram[gBankTarget + 0x16064] = gBattlePartyID[gBankTarget];
+ }
+ else
+ {
+ u16 random = Random() & 0xFF;
+ if ((u32)((random * (gBattleMons[gBankAttacker].level + gBattleMons[gBankTarget].level) >> 8) + 1) <= (gBattleMons[gBankTarget].level / 4))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ return 0;
+ }
+ ewram[gBankTarget + 0x16064] = gBattlePartyID[gBankTarget];
+ }
+ gBattlescriptCurrInstr = gUnknown_081D90FC;
+ return 1;
+}
+
+static void atk8F_forcerandomswitch(void)
+{
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER))
+ {
+ u8 i;
+ struct Pokemon* party;
+ u8 valid;
+ u8 val;
+ if (!GetBankSide(gBankTarget))
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ valid = 0;
+ val = 0;
+ if (sub_803FBFC(sub_803FC34(gBankTarget)) == 1)
+ val = 3;
+ for (i = val; i < val + 3; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&party[i], MON_DATA_IS_EGG)
+ && GetMonData(&party[i], MON_DATA_HP) != 0)
+ valid++;
+ }
+ }
+ else
+ {
+ valid = 0;
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&party[i], MON_DATA_SPECIES) != SPECIES_NONE
+ && !GetMonData(&party[i], MON_DATA_IS_EGG)
+ && GetMonData(&party[i], MON_DATA_HP) != 0)
+ valid++;
+ }
+ }
+
+ if ((valid < 2 && (gBattleTypeFlags & (BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI)) != BATTLE_TYPE_DOUBLE)
+ || (valid < 3 && (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI)))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else if (sub_80264C0())
+ {
+#define MON_CAN_BATTLE(mon) (((GetMonData(mon, MON_DATA_SPECIES) && GetMonData(mon, MON_DATA_IS_EGG) != 1 && GetMonData(mon, MON_DATA_HP))))
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ do
+ {
+ val = Random() % 3;
+ if (sub_803FBFC(sub_803FC34(gBankTarget)) == 1)
+ i = val + 3;
+ else
+ i = val;
+ } while (i == gBattlePartyID[gBankTarget] || i == gBattlePartyID[gBankTarget ^ 2] || !MON_CAN_BATTLE(&party[i]));
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ do
+ {
+ i = Random() % 6;
+ } while (i == gBattlePartyID[gBankTarget] || i == gBattlePartyID[gBankTarget ^ 2] || !MON_CAN_BATTLE(&party[i]));
+ }
+ else
+ {
+ do
+ {
+ i = Random() % 6;
+ } while (i == gBattlePartyID[gBankTarget] || !MON_CAN_BATTLE(&party[i]));
+ }
+ }
+ ewram[gBankTarget + 0x16068] = i;
+ if (!IsLinkDoubleBattle())
+ sub_8012258(gBankTarget);
+ sub_8094B6C(gBankTarget, i, 0);
+ sub_8094B6C(gBankTarget ^ 2, i, 1);
+#undef MON_CAN_BATTLE
+ }
+ }
+ else
+ {
+ sub_80264C0();
+ }
+}
+
+static void atk90_conversion_type_change(void)
+{
+ //randomly changes user's type to one of its moves' type
+ u8 valid_moves = 0;
+ u8 checked_move;
+ u8 move_type;
+ while (valid_moves < 4)
+ {
+ if (gBattleMons[gBankAttacker].moves[valid_moves] == 0)
+ break;
+ valid_moves++;
+ }
+
+ for (checked_move = 0; checked_move < valid_moves; checked_move++)
+ {
+ move_type = gBattleMoves[gBattleMons[gBankAttacker].moves[checked_move]].type;
+ if (move_type == TYPE_MYSTERY)
+ {
+ if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)
+ move_type = TYPE_GHOST;
+ else
+ move_type = TYPE_NORMAL;
+ }
+ if (move_type != gBattleMons[gBankAttacker].type1 && move_type != gBattleMons[gBankAttacker].type2)
+ break;
+ }
+
+ if (checked_move == valid_moves)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ do
+ {
+
+ while ((checked_move = Random() & 3) >= valid_moves);
+
+ move_type = gBattleMoves[gBattleMons[gBankAttacker].moves[checked_move]].type;
+ if (move_type == TYPE_MYSTERY)
+ {
+ if (gBattleMons[gBankAttacker].type1 == TYPE_GHOST || gBattleMons[gBankAttacker].type2 == TYPE_GHOST)
+ move_type = TYPE_GHOST;
+ else
+ move_type = TYPE_NORMAL;
+ }
+ } while (move_type == gBattleMons[gBankAttacker].type1 || move_type == gBattleMons[gBankAttacker].type2);
+
+ gBattleMons[gBankAttacker].type1 = move_type;
+ gBattleMons[gBankAttacker].type2 = move_type;
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 3;
+ gBattleTextBuff1[2] = move_type;
+ gBattleTextBuff1[3] = 0xFF;
+
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atk91_givepaydaymoney(void)
+{
+ if (!(gBattleTypeFlags & BATTLE_TYPE_LINK) && gPaydayMoney)
+ {
+ AddMoney(&gSaveBlock1.money, gPaydayMoney * BATTLE_STRUCT->moneyMultiplier);
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 1;
+ gBattleTextBuff1[2] = 2;
+ gBattleTextBuff1[3] = 5;
+ gBattleTextBuff1[4] = gPaydayMoney;
+ gBattleTextBuff1[5] = uBYTE1_16(gPaydayMoney);
+ gBattleTextBuff1[6] = 0xFF;
+ b_movescr_stack_push(gBattlescriptCurrInstr + 1);
+ gBattlescriptCurrInstr = gUnknown_081D95DB;
+ }
+ else
+ gBattlescriptCurrInstr++;
+}
+
+static void atk92_setlightscreen(void)
+{
+ if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_LIGHTSCREEN)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else
+ {
+ gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_LIGHTSCREEN;
+ gSideTimer[GetBankIdentity(gBankAttacker) & 1].lightscreenTimer = 5;
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && CountAliveMons(1) == 2)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 3;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+#ifdef NOTMATCHING
+static void atk93_ko_move(void)
+{
+ if (gBattleMons[gBankTarget].item == ITEM_ENIGMA_BERRY)
+ hold_effect = gEnigmaBerries[gBankTarget].holdEffect, quality = gEnigmaBerries[gBankTarget].holdEffectParam;
+ else
+ {
+ hold_effect = ItemId_GetHoldEffect(gBattleMons[gBankTarget].item);
+ quality = ItemId_GetHoldEffectParam(gBattleMons[gBankTarget].item);
+ }
+
+ gStringBank = gBankTarget;
+
+ if (hold_effect == HOLD_EFFECT_FOCUS_BAND && (Random() % 100) < quality)
+ {
+ RecordItemBattle(gBankTarget, hold_effect);
+ gSpecialStatuses[gBankTarget].focusBanded = 1;
+ }
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_STURDY)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gLastUsedAbility = ABILITY_STURDY;
+ gBattlescriptCurrInstr = x;
+ RecordAbilityBattle(gBankTarget, ABILITY_STURDY);
+ return;
+ }
+
+ if (!(gStatuses3[gBankTarget] & STATUS3_ALWAYS_HITS))
+ {
+ u16 to_cmp = gBattleMons[gBankAttacker].level - gBattleMons[gBankTarget].level + gBattleMoves[gCurrentMove].accuracy;
+ if (Random() % 0x64 + 1 < to_cmp || gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level)
+ {
+ goto MOVESTATUS_MISSED_LABEL;
+ }
+ }
+ else
+ {
+ if (gDisableStructs[gBankTarget].bankWithSureHit != gBankAttacker || gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level)
+ {
+
+ }
+ }
+
+MOVESTATUS_MISSED_LABEL:
+ gBattleTypeFlags |= MOVESTATUS_MISSED;
+ if (gBattleMons[gBankAttacker].level < gBattleMons[gBankTarget].level)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+#else
+__attribute((naked))
+static void atk93_ko_move(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\
+ ldr r7, _08026BA8 @ =gBattleMons\n\
+ ldr r6, _08026BAC @ =gBankTarget\n\
+ ldrb r2, [r6]\n\
+ movs r5, 0x58\n\
+ adds r0, r2, 0\n\
+ muls r0, r5\n\
+ adds r1, r0, r7\n\
+ ldrh r0, [r1, 0x2E]\n\
+ cmp r0, 0xAF\n\
+ bne _08026BB4\n\
+ ldr r1, _08026BB0 @ =gEnigmaBerries\n\
+ lsls r0, r2, 3\n\
+ subs r0, r2\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r4, [r0, 0x7]\n\
+ ldrb r6, [r0, 0x1A]\n\
+ b _08026BCE\n\
+ .align 2, 0\n\
+_08026BA8: .4byte gBattleMons\n\
+_08026BAC: .4byte gBankTarget\n\
+_08026BB0: .4byte gEnigmaBerries\n\
+_08026BB4:\n\
+ ldrh r0, [r1, 0x2E]\n\
+ bl ItemId_GetHoldEffect\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ ldrb r0, [r6]\n\
+ muls r0, r5\n\
+ adds r0, r7\n\
+ ldrh r0, [r0, 0x2E]\n\
+ bl ItemId_GetHoldEffectParam\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+_08026BCE:\n\
+ ldr r1, _08026C4C @ =gStringBank\n\
+ ldr r5, _08026C50 @ =gBankTarget\n\
+ ldrb r0, [r5]\n\
+ strb r0, [r1]\n\
+ cmp r4, 0x27\n\
+ bne _08026C0C\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x64\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, r6\n\
+ bcs _08026C0C\n\
+ ldrb r0, [r5]\n\
+ movs r1, 0x27\n\
+ bl RecordItemBattle\n\
+ ldr r2, _08026C54 @ =gSpecialStatuses\n\
+ ldrb r1, [r5]\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r1, [r0]\n\
+ movs r2, 0x80\n\
+ orrs r1, r2\n\
+ strb r1, [r0]\n\
+_08026C0C:\n\
+ ldr r0, _08026C58 @ =gBattleMons\n\
+ mov r8, r0\n\
+ ldr r1, _08026C50 @ =gBankTarget\n\
+ ldrb r2, [r1]\n\
+ movs r6, 0x58\n\
+ adds r0, r2, 0\n\
+ muls r0, r6\n\
+ mov r3, r8\n\
+ adds r5, r0, r3\n\
+ adds r0, r5, 0\n\
+ adds r0, 0x20\n\
+ ldrb r3, [r0]\n\
+ mov r10, r8\n\
+ cmp r3, 0x5\n\
+ bne _08026C6C\n\
+ ldr r2, _08026C5C @ =gBattleMoveFlags\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r0, _08026C60 @ =gLastUsedAbility\n\
+ strb r3, [r0]\n\
+ ldr r1, _08026C64 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _08026C68 @ =gUnknown_081D9826\n\
+ str r0, [r1]\n\
+ ldr r1, _08026C50 @ =gBankTarget\n\
+ ldrb r0, [r1]\n\
+ movs r1, 0x5\n\
+ bl RecordAbilityBattle\n\
+ b _08026E40\n\
+ .align 2, 0\n\
+_08026C4C: .4byte gStringBank\n\
+_08026C50: .4byte gBankTarget\n\
+_08026C54: .4byte gSpecialStatuses\n\
+_08026C58: .4byte gBattleMons\n\
+_08026C5C: .4byte gBattleMoveFlags\n\
+_08026C60: .4byte gLastUsedAbility\n\
+_08026C64: .4byte gBattlescriptCurrInstr\n\
+_08026C68: .4byte gUnknown_081D9826\n\
+_08026C6C:\n\
+ ldr r1, _08026CE0 @ =gStatuses3\n\
+ lsls r0, r2, 2\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ movs r1, 0x18\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08026CF4\n\
+ ldr r1, _08026CE4 @ =gBattleMoves\n\
+ ldr r0, _08026CE8 @ =gCurrentMove\n\
+ ldrh r0, [r0]\n\
+ lsls r2, r0, 1\n\
+ adds r2, r0\n\
+ lsls r2, 2\n\
+ adds r2, r1\n\
+ ldr r7, _08026CEC @ =gBankAttacker\n\
+ ldrb r0, [r7]\n\
+ muls r0, r6\n\
+ add r0, r10\n\
+ adds r0, 0x2A\n\
+ ldrb r0, [r0]\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x2A\n\
+ ldrb r1, [r1]\n\
+ subs r0, r1\n\
+ ldrb r2, [r2, 0x3]\n\
+ adds r0, r2\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0x64\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ adds r0, 0x1\n\
+ cmp r0, r4\n\
+ bge _08026CDC\n\
+ ldrb r0, [r7]\n\
+ adds r1, r0, 0\n\
+ muls r1, r6\n\
+ add r1, r10\n\
+ adds r1, 0x2A\n\
+ ldr r2, _08026CF0 @ =gBankTarget\n\
+ ldrb r0, [r2]\n\
+ muls r0, r6\n\
+ add r0, r10\n\
+ adds r0, 0x2A\n\
+ ldrb r1, [r1]\n\
+ movs r4, 0x1\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ bcs _08026D20\n\
+_08026CDC:\n\
+ mov r10, r8\n\
+ b _08026DE0\n\
+ .align 2, 0\n\
+_08026CE0: .4byte gStatuses3\n\
+_08026CE4: .4byte gBattleMoves\n\
+_08026CE8: .4byte gCurrentMove\n\
+_08026CEC: .4byte gBankAttacker\n\
+_08026CF0: .4byte gBankTarget\n\
+_08026CF4:\n\
+ ldr r0, _08026D4C @ =gDisableStructs\n\
+ lsls r1, r2, 3\n\
+ subs r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldr r2, _08026D50 @ =gBankAttacker\n\
+ ldrb r0, [r1, 0x15]\n\
+ movs r4, 0\n\
+ ldrb r3, [r2]\n\
+ cmp r0, r3\n\
+ bne _08026D20\n\
+ ldrb r0, [r2]\n\
+ muls r0, r6\n\
+ add r0, r10\n\
+ adds r0, 0x2A\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x2A\n\
+ ldrb r0, [r0]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _08026D20\n\
+ movs r4, 0x1\n\
+_08026D20:\n\
+ cmp r4, 0\n\
+ beq _08026DE0\n\
+ ldr r0, _08026D54 @ =gProtectStructs\n\
+ ldr r1, _08026D58 @ =gBankTarget\n\
+ ldrb r2, [r1]\n\
+ lsls r1, r2, 4\n\
+ adds r1, r0\n\
+ ldrb r0, [r1]\n\
+ lsls r0, 30\n\
+ cmp r0, 0\n\
+ bge _08026D64\n\
+ ldr r1, _08026D5C @ =gBattleMoveDamage\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ add r0, r10\n\
+ ldrh r0, [r0, 0x28]\n\
+ subs r0, 0x1\n\
+ str r0, [r1]\n\
+ ldr r2, _08026D60 @ =gBattleMoveFlags\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x40\n\
+ b _08026DC6\n\
+ .align 2, 0\n\
+_08026D4C: .4byte gDisableStructs\n\
+_08026D50: .4byte gBankAttacker\n\
+_08026D54: .4byte gProtectStructs\n\
+_08026D58: .4byte gBankTarget\n\
+_08026D5C: .4byte gBattleMoveDamage\n\
+_08026D60: .4byte gBattleMoveFlags\n\
+_08026D64:\n\
+ ldr r0, _08026DA0 @ =gSpecialStatuses\n\
+ lsls r1, r2, 2\n\
+ adds r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r0\n\
+ ldrb r0, [r1]\n\
+ lsrs r0, 7\n\
+ cmp r0, 0\n\
+ beq _08026DB4\n\
+ ldr r1, _08026DA4 @ =gBattleMoveDamage\n\
+ movs r3, 0x58\n\
+ adds r0, r2, 0\n\
+ muls r0, r3\n\
+ add r0, r10\n\
+ ldrh r0, [r0, 0x28]\n\
+ subs r0, 0x1\n\
+ str r0, [r1]\n\
+ ldr r2, _08026DA8 @ =gBattleMoveFlags\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x80\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r1, _08026DAC @ =gLastUsedItem\n\
+ ldr r2, _08026DB0 @ =gBankTarget\n\
+ ldrb r0, [r2]\n\
+ muls r0, r3\n\
+ add r0, r10\n\
+ ldrh r0, [r0, 0x2E]\n\
+ strh r0, [r1]\n\
+ b _08026DCA\n\
+ .align 2, 0\n\
+_08026DA0: .4byte gSpecialStatuses\n\
+_08026DA4: .4byte gBattleMoveDamage\n\
+_08026DA8: .4byte gBattleMoveFlags\n\
+_08026DAC: .4byte gLastUsedItem\n\
+_08026DB0: .4byte gBankTarget\n\
+_08026DB4:\n\
+ ldr r1, _08026DD4 @ =gBattleMoveDamage\n\
+ movs r0, 0x58\n\
+ muls r0, r2\n\
+ add r0, r10\n\
+ ldrh r0, [r0, 0x28]\n\
+ str r0, [r1]\n\
+ ldr r2, _08026DD8 @ =gBattleMoveFlags\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x10\n\
+_08026DC6:\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+_08026DCA:\n\
+ ldr r1, _08026DDC @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+ b _08026E40\n\
+ .align 2, 0\n\
+_08026DD4: .4byte gBattleMoveDamage\n\
+_08026DD8: .4byte gBattleMoveFlags\n\
+_08026DDC: .4byte gBattlescriptCurrInstr\n\
+_08026DE0:\n\
+ ldr r2, _08026E10 @ =gBattleMoveFlags\n\
+ ldrb r0, [r2]\n\
+ movs r1, 0x1\n\
+ orrs r0, r1\n\
+ strb r0, [r2]\n\
+ ldr r0, _08026E14 @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ movs r2, 0x58\n\
+ adds r1, r0, 0\n\
+ muls r1, r2\n\
+ add r1, r10\n\
+ adds r1, 0x2A\n\
+ ldr r3, _08026E18 @ =gBankTarget\n\
+ ldrb r0, [r3]\n\
+ muls r0, r2\n\
+ add r0, r10\n\
+ adds r0, 0x2A\n\
+ ldrb r1, [r1]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ bcc _08026E20\n\
+ ldr r1, _08026E1C @ =gBattleCommunication\n\
+ movs r0, 0\n\
+ b _08026E24\n\
+ .align 2, 0\n\
+_08026E10: .4byte gBattleMoveFlags\n\
+_08026E14: .4byte gBankAttacker\n\
+_08026E18: .4byte gBankTarget\n\
+_08026E1C: .4byte gBattleCommunication\n\
+_08026E20:\n\
+ ldr r1, _08026E50 @ =gBattleCommunication\n\
+ movs r0, 0x1\n\
+_08026E24:\n\
+ strb r0, [r1, 0x5]\n\
+ ldr r3, _08026E54 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ str r1, [r3]\n\
+_08026E40:\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\
+_08026E50: .4byte gBattleCommunication\n\
+_08026E54: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided");
+}
+#endif // NOTMATCHING
+
+static void atk94_gethalfcurrentenemyhp(void) //super fang
+{
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp / 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattlescriptCurrInstr++;
+}
+
+static void atk95_setsandstorm(void)
+{
+ if (gBattleWeather & WEATHER_SANDSTORM_ANY)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ gBattleWeather = WEATHER_SANDSTORM_TEMPORARY;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 3;
+ gWishFutureKnock.weatherDuration = 5;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk96_weatherdamage(void)
+{
+ if (WEATHER_HAS_EFFECT)
+ {
+ if (gBattleWeather & WEATHER_SANDSTORM_ANY)
+ {
+ if (gBattleMons[gBankAttacker].type1 != TYPE_ROCK && gBattleMons[gBankAttacker].type1 != TYPE_STEEL && gBattleMons[gBankAttacker].type1 != TYPE_GROUND
+ && gBattleMons[gBankAttacker].type2 != TYPE_ROCK && gBattleMons[gBankAttacker].type2 != TYPE_STEEL && gBattleMons[gBankAttacker].type2 != TYPE_GROUND
+ && gBattleMons[gBankAttacker].ability != ABILITY_SAND_VEIL && !(gStatuses3[gBankAttacker] & STATUS3_UNDERGROUND) && !(gStatuses3[gBankAttacker] & STATUS3_UNDERWATER))
+ {
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ }
+ else
+ {
+ gBattleMoveDamage = 0;
+ }
+ }
+ if (gBattleWeather & WEATHER_HAIL)
+ {
+ if (gBattleMons[gBankAttacker].type1 != TYPE_ICE && gBattleMons[gBankAttacker].type2 != TYPE_ICE && !(gStatuses3[gBankAttacker] & STATUS3_UNDERGROUND) && !(gStatuses3[gBankAttacker] & STATUS3_UNDERWATER))
+ {
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 16;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ }
+ else
+ {
+ gBattleMoveDamage = 0;
+ }
+ }
+ }
+ else
+ gBattleMoveDamage = 0;
+
+ if (gAbsentBankFlags & gBitTable[gBankAttacker])
+ gBattleMoveDamage = 0;
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atk97_try_infatuation(void)
+{
+ struct Pokemon *attacker, *target;
+ u16 atk_species, def_species;
+ u32 atk_pid, def_pid;
+ if (!GetBankSide(gBankAttacker))
+ attacker = &gPlayerParty[gBattlePartyID[gBankAttacker]];
+ else
+ attacker = &gEnemyParty[gBattlePartyID[gBankAttacker]];
+
+ if (!GetBankSide(gBankTarget))
+ target = &gPlayerParty[gBattlePartyID[gBankTarget]];
+ else
+ target = &gEnemyParty[gBattlePartyID[gBankTarget]];
+
+ atk_species = GetMonData(attacker, MON_DATA_SPECIES);
+ atk_pid = GetMonData(attacker, MON_DATA_PERSONALITY);
+
+ def_species = GetMonData(target, MON_DATA_SPECIES);
+ def_pid = GetMonData(target, MON_DATA_PERSONALITY);
+
+ if (gBattleMons[gBankTarget].ability == ABILITY_OBLIVIOUS)
+ {
+ gBattlescriptCurrInstr = BattleScript_ObliviousPreventsAttraction;
+ gLastUsedAbility = ABILITY_OBLIVIOUS;
+ RecordAbilityBattle(gBankTarget, ABILITY_OBLIVIOUS);
+ }
+ else
+ {
+ if (GetGenderFromSpeciesAndPersonality(atk_species, atk_pid) == GetGenderFromSpeciesAndPersonality(def_species, def_pid)
+ || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE || gBattleMons[gBankTarget].status2 & STATUS2_INFATUATION || GetGenderFromSpeciesAndPersonality(atk_species, atk_pid) == 0xFF
+ || GetGenderFromSpeciesAndPersonality(def_species, def_pid) == 0xFF)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gBattleMons[gBankTarget].status2 |= (gBitTable[gBankAttacker] << 16);
+ gBattlescriptCurrInstr += 5;
+ }
+ }
+}
+
+static void atk98_status_icon_update(void)
+{
+ if (gBattleExecBuffer)
+ return;
+
+ if (BSScriptRead8(gBattlescriptCurrInstr + 1) != 4)
+ {
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 2;
+ }
+ else
+ {
+ gActiveBank = gBankAttacker;
+ if (!(gAbsentBankFlags & gBitTable[gActiveBank]))
+ {
+ EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2);
+ if (!(gAbsentBankFlags & gBitTable[gActiveBank]))
+ {
+ EmitStatusIconUpdate(0, gBattleMons[gActiveBank].status1, gBattleMons[gActiveBank].status2);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ }
+ gBattlescriptCurrInstr += 2;
+ }
+}
+
+static void atk99_setmist(void)
+{
+ if (gSideTimer[GetBankIdentity(gBankAttacker) & 1].mistTimer)
+ {
+ gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ gSideTimer[GetBankIdentity(gBankAttacker) & 1].mistTimer = 5;
+ gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_MIST;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk9A_set_focusenergy(void)
+{
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_FOCUS_ENERGY)
+ {
+ gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ gBattleMons[gBankAttacker].status2 |= STATUS2_FOCUS_ENERGY;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atk9B_transformdataexecution(void)
+{
+ gUnknown_02024BE8 = 0xFFFF;
+ gBattlescriptCurrInstr++;
+ if (gBattleMons[gBankTarget].status2 & STATUS2_TRANSFORMED || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)
+ {
+ gBattleMoveFlags |= MOVESTATUS_FAILED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ u32 i; s32 j;
+ u8 *atk_data, *def_data;
+ gBattleMons[gBankAttacker].status2 |= STATUS2_TRANSFORMED;
+ gDisableStructs[gBankAttacker].disabledMove = 0;
+ gDisableStructs[gBankAttacker].disableTimer1 = 0;
+ gDisableStructs[gBankAttacker].unk0 = gBattleMons[gBankTarget].personality;
+ gDisableStructs[gBankAttacker].unk18_b = 0;
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 6;
+ gBattleTextBuff1[2] = (gBattleMons[gBankTarget].species);
+ gBattleTextBuff1[3] = uBYTE1_16(gBattleMons[gBankTarget].species);
+ gBattleTextBuff1[4] = 0xFF;
+
+ atk_data = (u8*)(&gBattleMons[gBankAttacker]);
+ def_data = (u8*)(&gBattleMons[gBankTarget]);
+
+ for (i = 0; i < 0x24; i++)
+ atk_data[i] = def_data[i];
+
+ for (j = 0; j < 4; j++)
+ {
+ if (gBattleMoves[gBattleMons[gBankAttacker].moves[j]].pp < 5)
+ gBattleMons[gBankAttacker].pp[j] = gBattleMoves[gBattleMons[gBankAttacker].moves[j]].pp;
+ else
+ gBattleMons[gBankAttacker].pp[j] = 5;
+ }
+
+ gActiveBank = gBankAttacker;
+ EmitResetActionMoveSelection(0, 2);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+}
+
+static void atk9C_set_substitute(void)
+{
+ u32 hp = gBattleMons[gBankAttacker].maxHP / 4;
+ if (gBattleMons[gBankAttacker].maxHP / 4 == 0)
+ hp = 1;
+ if (gBattleMons[gBankAttacker].hp <= hp)
+ {
+ gBattleMoveDamage = 0;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else
+ {
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMons[gBankAttacker].status2 |= STATUS2_SUBSTITUTE;
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED);
+ gDisableStructs[gBankAttacker].substituteHP = gBattleMoveDamage;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ gHitMarker |= HITMARKER_IGNORE_SUBSTITUTE;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static bool8 IsMoveUncopyable(u16 move)
+{
+ int i;
+ for (i = 0; sUnknown_081FACFE[i] != 0xFFFE && sUnknown_081FACFE[i] != move; i++) {}
+ return (sUnknown_081FACFE[i] != 0xFFFE);
+}
+
+static void atk9D_copyattack(void)
+{
+ gUnknown_02024BE8 = 0xFFFF;
+ if (IsMoveUncopyable(gLastUsedMove[gBankTarget]) || gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED
+ || gLastUsedMove[gBankTarget] == 0 || gLastUsedMove[gBankTarget] == 0xFFFF)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankAttacker].moves[i] == gLastUsedMove[gBankTarget])
+ break;
+ }
+ if (i == 4)
+ {
+ gBattleMons[gBankAttacker].moves[gCurrMovePos] = gLastUsedMove[gBankTarget];
+ if (gBattleMoves[gLastUsedMove[gBankTarget]].pp < 5)
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gLastUsedMove[gBankTarget]].pp;
+ else
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = 5;
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = gLastUsedMove[gBankTarget];
+ gBattleTextBuff1[3] = uBYTE1_16(gLastUsedMove[gBankTarget]);
+ gBattleTextBuff1[4] = 0xFF;
+
+ gDisableStructs[gBankAttacker].unk18_b |= gBitTable[gCurrMovePos];
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+#ifdef NONMATCHING
+static void atk9E_metronome(void)
+{
+ // sUnknown_081FACFE
+ int i;
+ do
+ {
+ while ((gCurrentMove = (Random() & 0x1FF) + 1) > 0x162);
+ for (i = 0; sUnknown_081FACFE[i] != gCurrentMove && sUnknown_081FACFE[i] != 0xFFFF; i++);
+ } while (sUnknown_081FACFE[i] != 0xFFFF);
+
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gBattlescriptCurrInstr = gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect];
+ gBankTarget = GetMoveTarget(gCurrentMove, 0);
+}
+
+#else
+__attribute__((naked))
+static void atk9E_metronome(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ ldr r7, _08027938 @ =gCurrentMove\n\
+ movs r6, 0xB1\n\
+ lsls r6, 1\n\
+ ldr r5, _0802793C @ =sUnknown_081FACFE\n\
+ ldr r0, _08027940 @ =gBattlescriptCurrInstr\n\
+ mov r8, r0\n\
+_080278CA:\n\
+ bl Random\n\
+ ldr r2, _08027944 @ =0x000001ff\n\
+ adds r1, r2, 0\n\
+ ands r0, r1\n\
+ adds r0, 0x1\n\
+ strh r0, [r7]\n\
+ cmp r0, r6\n\
+ bhi _080278CA\n\
+ movs r0, 0x3\n\
+_080278DE:\n\
+ subs r0, 0x1\n\
+ cmp r0, 0\n\
+ bge _080278DE\n\
+ ldr r4, _08027938 @ =gCurrentMove\n\
+ ldrh r2, [r4]\n\
+ ldr r3, _08027948 @ =0x0000ffff\n\
+ subs r0, r5, 0x2\n\
+_080278EC:\n\
+ adds r0, 0x2\n\
+ ldrh r1, [r0]\n\
+ cmp r1, r2\n\
+ beq _080278F8\n\
+ cmp r1, r3\n\
+ bne _080278EC\n\
+_080278F8:\n\
+ ldr r0, _08027948 @ =0x0000ffff\n\
+ cmp r1, r0\n\
+ bne _080278CA\n\
+ ldr r2, _0802794C @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ ldr r1, _08027950 @ =0xfffffbff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r3, _08027954 @ =gBattleScriptsEffectsTable\n\
+ ldr r2, _08027958 @ =gBattleMoves\n\
+ ldrh r1, [r4]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldr r0, [r0]\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ ldrh r0, [r4]\n\
+ movs r1, 0\n\
+ bl GetMoveTarget\n\
+ ldr r1, _0802795C @ =gBankTarget\n\
+ strb r0, [r1]\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08027938: .4byte gCurrentMove\n\
+_0802793C: .4byte sUnknown_081FACFE\n\
+_08027940: .4byte gBattlescriptCurrInstr\n\
+_08027944: .4byte 0x000001ff\n\
+_08027948: .4byte 0x0000ffff\n\
+_0802794C: .4byte gHitMarker\n\
+_08027950: .4byte 0xfffffbff\n\
+_08027954: .4byte gBattleScriptsEffectsTable\n\
+_08027958: .4byte gBattleMoves\n\
+_0802795C: .4byte gBankTarget\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+static void atk9F_dmgtolevel(void)
+{
+ gBattleMoveDamage = gBattleMons[gBankAttacker].level;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkA0_psywavedamageeffect(void)
+{
+ s32 rand_dmg;
+ while ((rand_dmg = (Random() & 0xF)) > 0xA);
+ rand_dmg *= 10;
+ gBattleMoveDamage = gBattleMons[gBankAttacker].level * (rand_dmg + 50) / 100;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkA1_counterdamagecalculator(void)
+{
+ u8 atk_side = GetBankSide(gBankAttacker);
+ u8 def_side = GetBankSide(gProtectStructs[gBankAttacker].physicalBank);
+ if (gProtectStructs[gBankAttacker].physicalDmg && atk_side != def_side && gBattleMons[gProtectStructs[gBankAttacker].physicalBank].hp)
+ {
+ gBattleMoveDamage = gProtectStructs[gBankAttacker].physicalDmg * 2;
+ if (gSideTimer[def_side].followmeTimer && gBattleMons[gSideTimer[def_side].followmeTarget].hp)
+ gBankTarget = gSideTimer[def_side].followmeTarget;
+ else
+ gBankTarget = gProtectStructs[gBankAttacker].physicalBank;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkA2_mirrorcoatdamagecalculator(void) //a copy of atkA1 with the physical -> special field changes
+{
+ u8 atk_side = GetBankSide(gBankAttacker);
+ u8 def_side = GetBankSide(gProtectStructs[gBankAttacker].specialBank);
+ if (gProtectStructs[gBankAttacker].specialDmg && atk_side != def_side && gBattleMons[gProtectStructs[gBankAttacker].specialBank].hp)
+ {
+ gBattleMoveDamage = gProtectStructs[gBankAttacker].specialDmg * 2;
+ if (gSideTimer[def_side].followmeTimer && gBattleMons[gSideTimer[def_side].followmeTarget].hp)
+ gBankTarget = gSideTimer[def_side].followmeTarget;
+ else
+ gBankTarget = gProtectStructs[gBankAttacker].specialBank;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkA3_disablelastusedattack(void)
+{
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankTarget].moves[i] == gLastUsedMove[gBankTarget])
+ break;
+ }
+ if (gDisableStructs[gBankTarget].disabledMove == 0 && i != 4 && gBattleMons[gBankTarget].pp[i] != 0)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = gBattleMons[gBankTarget].moves[i];
+ gBattleTextBuff1[3] = uBYTE1_16(gBattleMons[gBankTarget].moves[i]);
+ gBattleTextBuff1[4] = 0xFF;
+
+ gDisableStructs[gBankTarget].disabledMove = gBattleMons[gBankTarget].moves[i];
+ gDisableStructs[gBankTarget].disableTimer1 = (Random() & 3) + 2;
+ gDisableStructs[gBankTarget].disableTimer2 = gDisableStructs[gBankTarget].disableTimer1; //that's interesting
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkA4_setencore(void)
+{
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankTarget].moves[i] == gLastUsedMove[gBankTarget])
+ break;
+ }
+ if (gLastUsedMove[gBankTarget] == MOVE_STRUGGLE || gLastUsedMove[gBankTarget] == MOVE_ENCORE || gLastUsedMove[gBankTarget] == MOVE_MIRROR_MOVE)
+ i = 4;
+ if (gDisableStructs[gBankTarget].encoredMove == 0 && i != 4 && gBattleMons[gBankTarget].pp[i] != 0)
+ {
+ gDisableStructs[gBankTarget].encoredMove = gBattleMons[gBankTarget].moves[i];
+ gDisableStructs[gBankTarget].encoredMovePos = i;
+ gDisableStructs[gBankTarget].encoreTimer1 = (Random() & 3) + 3;
+ gDisableStructs[gBankTarget].encoreTimer2 = gDisableStructs[gBankTarget].encoreTimer1;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkA5_painsplitdmgcalc(void)
+{
+ if (!(gBattleMons[gBankTarget].status2 & STATUS2_SUBSTITUTE))
+ {
+ s32 hp_diff = (gBattleMons[gBankAttacker].hp + gBattleMons[gBankTarget].hp) / 2;
+ s32 to_store = gBattleMoveDamage = gBattleMons[gBankTarget].hp - hp_diff;
+ BATTLE_STRUCT->unk16014 = sBYTE0_32(to_store);
+ BATTLE_STRUCT->unk16015 = sBYTE1_32(to_store);
+ BATTLE_STRUCT->unk16016 = sBYTE2_32(to_store);
+ BATTLE_STRUCT->unk16017 = sBYTE3_32(to_store);
+
+ gBattleMoveDamage = gBattleMons[gBankAttacker].hp - hp_diff;
+ gSpecialStatuses[gBankTarget].moveturnLostHP = 0xFFFF;
+
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+#ifdef NONMATCHING
+static void atkA6_settypetorandomresistance(void)
+{
+ if (gMoveHitWith[gBankAttacker] == 0 || gMoveHitWith[gBankAttacker] == 0xFFFF || (IsTwoTurnsMove(gMoveHitWith[gBankAttacker]) && !gProtectStructs[gBankAttacker].physicalDmg && !gProtectStructs[gBankAttacker].specialDmg))
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ int type = 0, rands = 0;
+ do
+ {
+ while (((type = (Random() & 0x7F)) > 0x70));
+ type *= 3;
+ if (gTypeEffectiveness[type] == gUnknown_02024C44[gBankAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1])
+ {
+ gBattleMons[gBankAttacker].type1 = type;
+ gBattleMons[gBankAttacker].type2 = type;
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 3;
+ gBattleTextBuff1[2] = type;
+ gBattleTextBuff1[3] = 0xFF;
+ gBattlescriptCurrInstr += 5;
+ return;
+ }
+ rands++;
+ } while (rands <= 999);
+
+ type = 0, rands = 0;
+ do
+ {
+ if (gTypeEffectiveness[type] == 0xFE || gTypeEffectiveness[type] != 0xFF)
+ {
+ if (gTypeEffectiveness[type] == gUnknown_02024C44[gBankAttacker] && gTypeEffectiveness[type + 2] <= 5 && gBattleMons[gBankAttacker].type1 != gTypeEffectiveness[type + 1] && gBattleMons[gBankAttacker].type2 != gTypeEffectiveness[type + 1])
+ {
+ gBattleMons[gBankAttacker].type1 = gTypeEffectiveness[rands + 1];
+ gBattleMons[gBankAttacker].type2 = gTypeEffectiveness[rands + 1];
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 3;
+ gBattleTextBuff1[2] = gTypeEffectiveness[rands + 1];
+ gBattleTextBuff1[3] = 0xFF;
+ gBattlescriptCurrInstr += 5;
+ return;
+ }
+ }
+ type += 3, rands += 3;
+ } while (rands < 336);
+
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+#else
+__attribute__((naked))
+static void atkA6_settypetorandomresistance(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\
+ ldr r1, _08027FA8 @ =gMoveHitWith\n\
+ ldr r4, _08027FAC @ =gBankAttacker\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r2, r0, r1\n\
+ ldrh r1, [r2]\n\
+ cmp r1, 0\n\
+ beq _08027F8C\n\
+ ldr r0, _08027FB0 @ =0x0000ffff\n\
+ cmp r1, r0\n\
+ beq _08027F8C\n\
+ ldrh r0, [r2]\n\
+ bl IsTwoTurnsMove\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08028024\n\
+ ldr r2, _08027FB4 @ =gProtectStructs\n\
+ ldrb r0, [r4]\n\
+ lsls r1, r0, 4\n\
+ adds r0, r2, 0x4\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08028024\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x8\n\
+ adds r0, r1, r0\n\
+ ldr r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08028024\n\
+_08027F8C:\n\
+ ldr r3, _08027FB8 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ str r1, [r3]\n\
+ b _08028110\n\
+ .align 2, 0\n\
+_08027FA8: .4byte gMoveHitWith\n\
+_08027FAC: .4byte gBankAttacker\n\
+_08027FB0: .4byte 0x0000ffff\n\
+_08027FB4: .4byte gProtectStructs\n\
+_08027FB8: .4byte gBattlescriptCurrInstr\n\
+_08027FBC:\n\
+ mov r0, r12\n\
+ strb r5, [r0]\n\
+ mov r1, r10\n\
+ ldrb r0, [r1]\n\
+ muls r0, r2\n\
+ adds r0, r7\n\
+ adds r0, 0x22\n\
+ strb r5, [r0]\n\
+ ldr r1, _08027FE0 @ =gBattleTextBuff1\n\
+ movs r0, 0xFD\n\
+ strb r0, [r1]\n\
+ movs r0, 0x3\n\
+ strb r0, [r1, 0x1]\n\
+ strb r5, [r1, 0x2]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x3]\n\
+ ldr r1, _08027FE4 @ =gBattlescriptCurrInstr\n\
+ b _08028012\n\
+ .align 2, 0\n\
+_08027FE0: .4byte gBattleTextBuff1\n\
+_08027FE4: .4byte gBattlescriptCurrInstr\n\
+_08027FE8:\n\
+ mov r0, r8\n\
+ adds r0, 0x1\n\
+ adds r0, r3\n\
+ ldrb r2, [r0]\n\
+ strb r2, [r4]\n\
+ mov r4, r10\n\
+ ldrb r0, [r4]\n\
+ muls r0, r6\n\
+ ldr r7, _0802801C @ =gBattleMons\n\
+ adds r0, r7\n\
+ adds r0, 0x22\n\
+ strb r2, [r0]\n\
+ ldr r1, _08028020 @ =gBattleTextBuff1\n\
+ movs r0, 0xFD\n\
+ strb r0, [r1]\n\
+ movs r0, 0x3\n\
+ strb r0, [r1, 0x1]\n\
+ strb r2, [r1, 0x2]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x3]\n\
+ mov r1, r12\n\
+_08028012:\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+ b _08028110\n\
+ .align 2, 0\n\
+_0802801C: .4byte gBattleMons\n\
+_08028020: .4byte gBattleTextBuff1\n\
+_08028024:\n\
+ movs r4, 0\n\
+ mov r8, r4\n\
+ movs r7, 0x7F\n\
+ mov r9, r7\n\
+_0802802C:\n\
+ bl Random\n\
+ mov r4, r9\n\
+ ands r4, r0\n\
+ cmp r4, 0x70\n\
+ bhi _0802802C\n\
+ lsls r0, r4, 1\n\
+ adds r4, r0, r4\n\
+ ldr r6, _08028120 @ =gTypeEffectiveness\n\
+ adds r3, r4, r6\n\
+ ldr r1, _08028124 @ =gUnknown_02024C44\n\
+ ldr r2, _08028128 @ =gBankAttacker\n\
+ ldrb r5, [r2]\n\
+ lsls r0, r5, 1\n\
+ adds r0, r1\n\
+ ldrb r1, [r3]\n\
+ mov r10, r2\n\
+ ldrh r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _08028088\n\
+ adds r0, r4, 0x2\n\
+ adds r0, r6\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x5\n\
+ bhi _08028088\n\
+ ldr r7, _0802812C @ =gBattleMons\n\
+ movs r2, 0x58\n\
+ adds r0, r5, 0\n\
+ muls r0, r2\n\
+ adds r3, r0, r7\n\
+ movs r0, 0x21\n\
+ adds r0, r3\n\
+ mov r12, r0\n\
+ adds r0, r4, 0x1\n\
+ adds r0, r6\n\
+ ldrb r5, [r0]\n\
+ mov r1, r12\n\
+ ldrb r0, [r1]\n\
+ adds r1, r5, 0\n\
+ cmp r0, r1\n\
+ beq _08028088\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r1\n\
+ bne _08027FBC\n\
+_08028088:\n\
+ movs r7, 0x1\n\
+ add r8, r7\n\
+ ldr r0, _08028130 @ =0x000003e7\n\
+ cmp r8, r0\n\
+ ble _0802802C\n\
+ movs r0, 0\n\
+ mov r8, r0\n\
+ ldr r1, _08028134 @ =gBattlescriptCurrInstr\n\
+ mov r12, r1\n\
+ ldr r3, _08028120 @ =gTypeEffectiveness\n\
+ adds r0, r4, 0x1\n\
+ adds r0, r3\n\
+ mov r9, r0\n\
+ adds r5, r3, 0\n\
+_080280A4:\n\
+ ldrb r1, [r5]\n\
+ cmp r1, 0xFF\n\
+ bgt _080280AE\n\
+ cmp r1, 0xFE\n\
+ bge _080280E8\n\
+_080280AE:\n\
+ mov r4, r10\n\
+ ldrb r2, [r4]\n\
+ lsls r0, r2, 1\n\
+ ldr r7, _08028124 @ =gUnknown_02024C44\n\
+ adds r0, r7\n\
+ ldrh r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _080280E8\n\
+ ldrb r0, [r5, 0x2]\n\
+ cmp r0, 0x5\n\
+ bhi _080280E8\n\
+ movs r6, 0x58\n\
+ adds r0, r2, 0\n\
+ muls r0, r6\n\
+ ldr r1, _0802812C @ =gBattleMons\n\
+ adds r2, r0, r1\n\
+ adds r4, r2, 0\n\
+ adds r4, 0x21\n\
+ ldrb r0, [r4]\n\
+ mov r7, r9\n\
+ ldrb r1, [r7]\n\
+ cmp r0, r1\n\
+ beq _080280E8\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x22\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r1\n\
+ beq _080280E8\n\
+ b _08027FE8\n\
+_080280E8:\n\
+ adds r5, 0x3\n\
+ movs r0, 0x3\n\
+ add r8, r0\n\
+ ldr r0, _08028138 @ =0x0000014f\n\
+ cmp r8, r0\n\
+ bls _080280A4\n\
+ mov r1, r12\n\
+ ldr r2, [r1]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ mov r4, r12\n\
+ str r1, [r4]\n\
+_08028110:\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\
+_08028120: .4byte gTypeEffectiveness\n\
+_08028124: .4byte gUnknown_02024C44\n\
+_08028128: .4byte gBankAttacker\n\
+_0802812C: .4byte gBattleMons\n\
+_08028130: .4byte 0x000003e7\n\
+_08028134: .4byte gBattlescriptCurrInstr\n\
+_08028138: .4byte 0x0000014f\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+static void atkA7_setalwayshitflag(void)
+{
+ gStatuses3[gBankTarget] &= ~(STATUS3_ALWAYS_HITS);
+ gStatuses3[gBankTarget] |= 0x10;
+ gDisableStructs[gBankTarget].bankWithSureHit = gBankAttacker;
+ gBattlescriptCurrInstr++;
+}
+
+struct move_pp
+{
+ u16 move[4];
+ u8 pp[4];
+ u8 ppBonuses;
+};
+
+static void atkA8_copymovepermanently(void)
+{
+ gUnknown_02024BE8 = 0xFFFF;
+ if (!(gBattleMons[gBankAttacker].status2 & STATUS2_TRANSFORMED) && gUnknown_02024C2C[gBankTarget] != MOVE_STRUGGLE && gUnknown_02024C2C[gBankTarget] != 0 && gUnknown_02024C2C[gBankTarget] != 0xFFFF && gUnknown_02024C2C[gBankTarget] != MOVE_SKETCH)
+ {
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gBattleMons[gBankAttacker].moves[i] == MOVE_SKETCH)
+ continue;
+ if (gBattleMons[gBankAttacker].moves[i] == gUnknown_02024C2C[gBankTarget])
+ break;
+ }
+ if (i != 4) //sketch fail
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else //sketch worked
+ {
+ struct move_pp moves_data;
+ gBattleMons[gBankAttacker].moves[gCurrMovePos] = gUnknown_02024C2C[gBankTarget];
+ gBattleMons[gBankAttacker].pp[gCurrMovePos] = gBattleMoves[gUnknown_02024C2C[gBankTarget]].pp;
+ gActiveBank = gBankAttacker;
+ for (i = 0; i < 4; i++)
+ {
+ moves_data.move[i] = gBattleMons[gBankAttacker].moves[i];
+ moves_data.pp[i] = gBattleMons[gBankAttacker].pp[i];
+ }
+ moves_data.ppBonuses = gBattleMons[gBankAttacker].ppBonuses;
+ EmitSetAttributes(0, REQUEST_MOVES_PP_BATTLE, 0, sizeof(struct move_pp), &moves_data);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = gUnknown_02024C2C[gBankTarget];
+ gBattleTextBuff1[3] = gUnknown_02024C2C[gBankTarget] >> 8;
+ gBattleTextBuff1[4] = 0xFF;
+ gBattlescriptCurrInstr += 5;
+ }
+ }
+ else //sketch fail
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static bool8 IsTwoTurnsMove(u16 move)
+{
+ u8 effect = gBattleMoves[move].effect;
+ if (effect == EFFECT_SKULL_BASH || effect == EFFECT_RAZOR_WIND || effect == EFFECT_SKY_ATTACK || effect == EFFECT_SOLARBEAM || effect == EFFECT_FLY || effect == EFFECT_BIDE)
+ return 1;
+ else
+ return 0;
+}
+
+static bool8 IsMoveUnchoosable(u16 move)
+{
+ if (move == 0 || move == MOVE_SLEEP_TALK || move == MOVE_ASSIST || move == MOVE_MIRROR_MOVE || move == MOVE_METRONOME)
+ return 1;
+ else
+ return 0;
+}
+
+static u8 AttacksThisTurn(u8 bank, u16 move) //Note: returns 1 if it's a charging turn, otherwise 2
+{
+ //first argument is unused
+ u8 effect;
+ if (gBattleMoves[move].effect == EFFECT_SOLARBEAM && (gBattleWeather & WEATHER_SUN_ANY))
+ return 2;
+ effect = gBattleMoves[move].effect;
+ if (effect == EFFECT_SKULL_BASH || effect == EFFECT_RAZOR_WIND || effect == EFFECT_SKY_ATTACK || effect == EFFECT_SOLARBEAM || effect == EFFECT_FLY || effect == EFFECT_BIDE)
+ {
+ if ((gHitMarker & HITMARKER_x8000000))
+ return 1;
+ }
+ return 2;
+}
+
+static void atkA9_sleeptalk_choose_move(void)
+{
+ u8 unusable_moves = 0;
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (IsMoveUnchoosable(gBattleMons[gBankAttacker].moves[i]) || gBattleMons[gBankAttacker].moves[i] == MOVE_FOCUS_PUNCH
+ || gBattleMons[gBankAttacker].moves[i] == MOVE_UPROAR || IsTwoTurnsMove(gBattleMons[gBankAttacker].moves[i]))
+ unusable_moves |= gBitTable[i];
+ }
+ unusable_moves = CheckMoveLimitations(gBankAttacker, unusable_moves, 0xFD);
+ if (unusable_moves == 0xF) //all 4 moves cannot be chosen
+ gBattlescriptCurrInstr += 5;
+ else //at least one move can be chosen
+ {
+ u32 random_pos;
+ do
+ {
+ random_pos = Random() & 3;
+ } while ((gBitTable[random_pos] & unusable_moves));
+
+ gRandomMove = gBattleMons[gBankAttacker].moves[random_pos];
+ gCurrMovePos = random_pos;
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gBankTarget = GetMoveTarget(gRandomMove, 0);
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkAA_set_destinybond(void)
+{
+ gBattleMons[gBankAttacker].status2 |= STATUS2_DESTINY_BOND;
+ gBattlescriptCurrInstr++;
+}
+
+static void DestinyBondFlagUpdate(void)
+{
+ u8 atk_side = GetBankSide(gBankAttacker);
+ u8 def_side = GetBankSide(gBankTarget);
+ if (gBattleMons[gBankTarget].status2 & STATUS2_DESTINY_BOND && atk_side != def_side && !(gHitMarker & HITMARKER_GRUDGE))
+ gHitMarker |= HITMARKER_DESTINYBOND;
+}
+
+static void atkAB_DestinyBondFlagUpdate(void)
+{
+ DestinyBondFlagUpdate();
+ gBattlescriptCurrInstr++;
+}
+
+static void atkAC_remaininghptopower(void)
+{
+ s32 hp_fraction = GetScaledHPFraction(gBattleMons[gBankAttacker].hp, gBattleMons[gBankAttacker].maxHP, 48);
+ int i;
+ for (i = 0; i < 12; i += 2)
+ {
+ if (hp_fraction <= sUnknown_081FAD26[i])
+ break;
+ }
+ gDynamicBasePower = sUnknown_081FAD26[i + 1];
+ gBattlescriptCurrInstr++;
+}
+
+static void atkAD_spite_ppreduce(void)
+{
+ if (gLastUsedMove[gBankTarget] != 0 && gLastUsedMove[gBankTarget] != 0xFFFF && !(gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE))
+ {
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (gLastUsedMove[gBankTarget] == gBattleMons[gBankTarget].moves[i])
+ break;
+ }
+ if (i != 4 && gBattleMons[gBankTarget].pp[i] > 1)
+ {
+ s32 lost_pp = (Random() & 3) + 2;
+ if (gBattleMons[gBankTarget].pp[i] < lost_pp)
+ lost_pp = gBattleMons[gBankTarget].pp[i];
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = gLastUsedMove[gBankTarget];
+ gBattleTextBuff1[3] = gLastUsedMove[gBankTarget] >> 8;
+ gBattleTextBuff1[4] = 0xFF;
+ ConvertIntToDecimalStringN(gBattleTextBuff2, lost_pp, 0, 1);
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 1;
+ gBattleTextBuff2[2] = 1;
+ gBattleTextBuff2[3] = 1;
+ gBattleTextBuff2[4] = lost_pp;
+ gBattleTextBuff2[5] = 0xFF;
+
+ gBattleMons[gBankTarget].pp[i] -= lost_pp;
+ gActiveBank = gBankTarget;
+ if (!(gDisableStructs[gActiveBank].unk18_b & gBitTable[i])
+ && !(gBattleMons[gActiveBank].status2 & STATUS2_TRANSFORMED))
+ {
+ EmitSetAttributes(0, REQUEST_PPMOVE1_BATTLE + i, 0, 1, &gBattleMons[gActiveBank].pp[i]);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ gBattlescriptCurrInstr += 5;
+ if (gBattleMons[gBankTarget].pp[i] == 0)
+ CancelMultiTurnMoves(gBankTarget);
+ return;
+ }
+ }
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkAE_heal_party_status(void)
+{
+ register u32 zero2 asm("r4") = 0;
+ u32 zero = zero2;
+ u8 to_heal = 0;
+ if (gCurrentMove == MOVE_HEAL_BELL)
+ {
+ struct Pokemon* party;
+ int i;
+
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ if (GetBankSide(gBankAttacker) == 0)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ if (gBattleMons[gBankAttacker].ability != ABILITY_SOUNDPROOF)
+ {
+ gBattleMons[gBankAttacker].status1 = 0;
+ }
+ else
+ {
+ RecordAbilityBattle(gBankAttacker, gBattleMons[gBankAttacker].ability);
+ gBattleCommunication[MULTISTRING_CHOOSER] |= 1;
+ }
+
+ gActiveBank = BATTLE_STRUCT->scriptingActive = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]))
+ {
+ if (gBattleMons[gActiveBank].ability != ABILITY_SOUNDPROOF)
+ {
+ gBattleMons[gActiveBank].status1 = 0;
+ }
+ else
+ {
+ RecordAbilityBattle(gActiveBank, gBattleMons[gActiveBank].ability);
+ gBattleCommunication[MULTISTRING_CHOOSER] |= 2;
+ }
+ }
+
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&party[i], MON_DATA_SPECIES2);
+ u8 abilityBit = GetMonData(&party[i], MON_DATA_ALT_ABILITY);
+ if (species != 0 && species != SPECIES_EGG)
+ {
+ u8 ability;
+ if (gBattlePartyID[gBankAttacker] == i)
+ ability = gBattleMons[gBankAttacker].ability;
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && gBattlePartyID[gActiveBank] == i && !(gAbsentBankFlags & gBitTable[gActiveBank]))
+ ability = gBattleMons[gActiveBank].ability;
+ else
+ ability = GetAbilityBySpecies(species, abilityBit);
+ if (ability != ABILITY_SOUNDPROOF)
+ to_heal |= (1 << i);
+ }
+ }
+ }
+ else //Aromatherapy
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ to_heal = 0x3F;
+ gBattleMons[gBankAttacker].status1 = zero2;
+
+ gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]))
+ gBattleMons[gActiveBank].status1 = 0;
+
+ }
+ //missing check?
+ gActiveBank = gBankAttacker;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, to_heal, 4, &zero);
+ MarkBufferBankForExecution(gActiveBank);
+
+ gBattlescriptCurrInstr++;
+}
+
+static void atkAF_cursetarget(void)
+{
+ if (gBattleMons[gBankTarget].status2 & STATUS2_CURSED || gStatuses3[gBankTarget] & STATUS3_SEMI_INVULNERABLE)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gBattleMons[gBankTarget].status2 |= STATUS2_CURSED;
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkB0_set_spikes(void)
+{
+ u8 side = GetBankSide(gBankAttacker) ^ 1;
+ if (gSideTimer[side].spikesAmount == 3)
+ {
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gSideAffecting[side] |= SIDE_STATUS_SPIKES;
+ gSideTimer[side].spikesAmount++;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkB1_set_foresight(void)
+{
+ gBattleMons[gBankTarget].status2 |= STATUS2_FORESIGHT;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkB2_setperishsong(void)
+{
+ int not_affected_pokes = 0, i;
+
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gStatuses3[i] & STATUS3_PERISH_SONG || gBattleMons[i].ability == ABILITY_SOUNDPROOF)
+ not_affected_pokes++;
+ else
+ {
+ gStatuses3[i] |= STATUS3_PERISH_SONG;
+ gDisableStructs[i].perishSong1 = 3;
+ gDisableStructs[i].perishSong2 = 3;
+ }
+ }
+
+ sub_80153D0(gBankAttacker);
+ if (not_affected_pokes == gNoOfAllBanks)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+}
+
+static void atkB3_rolloutdamagecalculation(void)
+{
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ {
+ CancelMultiTurnMoves(gBankAttacker);
+ gBattlescriptCurrInstr = BattleScript_1D6F74;
+ }
+ else
+ {
+ int i;
+ if (!(gBattleMons[gBankAttacker].status2 & STATUS2_MULTIPLETURNS)) //first hit
+ {
+ gDisableStructs[gBankAttacker].rolloutTimer1 = 5;
+ gDisableStructs[gBankAttacker].rolloutTimer2 = 5;
+ gBattleMons[gBankAttacker].status2 |= STATUS2_MULTIPLETURNS;
+ gLockedMove[gBankAttacker] = gCurrentMove;
+ }
+ if (--gDisableStructs[gBankAttacker].rolloutTimer1 == 0)
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_MULTIPLETURNS);
+
+ gDynamicBasePower = gBattleMoves[gCurrentMove].power;
+ for (i = 1; i < (5 - gDisableStructs[gBankAttacker].rolloutTimer1); i++)
+ gDynamicBasePower *= 2;
+
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_DEFENSE_CURL)
+ gDynamicBasePower *= 2;
+
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void atkB4_jumpifconfusedandstatmaxed(void)
+{
+ if (gBattleMons[gBankTarget].status2 & STATUS2_CONFUSION && gBattleMons[gBankTarget].statStages[BSScriptRead8(gBattlescriptCurrInstr + 1)] == 0xC)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atkB5_furycuttercalc(void)
+{
+ if (gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ {
+ gDisableStructs[gBankAttacker].furyCutterCounter = 0;
+ gBattlescriptCurrInstr = BattleScript_1D6F74;
+ }
+ else
+ {
+ int i;
+
+ if (gDisableStructs[gBankAttacker].furyCutterCounter != 5)
+ gDisableStructs[gBankAttacker].furyCutterCounter++;
+
+ gDynamicBasePower = gBattleMoves[gCurrentMove].power;
+ for (i = 1; i < gDisableStructs[gBankAttacker].furyCutterCounter; i++)
+ gDynamicBasePower *= 2;
+
+ gBattlescriptCurrInstr++;
+ }
+}
+
+static void atkB6_happinesstodamagecalculation(void)
+{
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_RETURN)
+ gDynamicBasePower = 10 * (gBattleMons[gBankAttacker].friendship) / 25;
+ else //EFFECT_FRUSTRATION
+ gDynamicBasePower = 10 * (255 - gBattleMons[gBankAttacker].friendship) / 25;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkB7_presentdamagecalculation(void)
+{
+ s32 rand = Random() & 0xFF;
+ if (rand < 102)
+ gDynamicBasePower = 40;
+ else if (rand < 178)
+ gDynamicBasePower = 80;
+ else if (rand < 204)
+ gDynamicBasePower = 120;
+ else
+ {
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+ }
+ if (rand < 204)
+ gBattlescriptCurrInstr = BattleScript_1D6F44;
+ else if (gBattleMons[gBankTarget].maxHP == gBattleMons[gBankTarget].hp)
+ gBattlescriptCurrInstr = BattleScript_1D83B5;
+ else
+ {
+ //gBattleMoveFlags &= ~(MOVESTATUS_NOTAFFECTED); only in Emerald
+ gBattlescriptCurrInstr = BattleScript_1D839B;
+ }
+}
+
+static void atkB8_set_safeguard(void)
+{
+ if (gSideAffecting[GetBankIdentity(gBankAttacker) & 1] & SIDE_STATUS_SAFEGUARD)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ }
+ else
+ {
+ gSideAffecting[GetBankIdentity(gBankAttacker) & 1] |= SIDE_STATUS_SAFEGUARD;
+ gSideTimer[GetBankIdentity(gBankAttacker) & 1].safeguardTimer = 5;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkB9_magnitudedamagecalculation(void)
+{
+ s32 magnitude = Random() % 100;
+ if (magnitude < 5)
+ {
+ gDynamicBasePower = 10;
+ magnitude = 4;
+ }
+ else if (magnitude < 15)
+ {
+ gDynamicBasePower = 30;
+ magnitude = 5;
+ }
+ else if (magnitude < 35)
+ {
+ gDynamicBasePower = 50;
+ magnitude = 6;
+ }
+ else if (magnitude < 65)
+ {
+ gDynamicBasePower = 70;
+ magnitude = 7;
+ }
+ else if (magnitude < 85)
+ {
+ gDynamicBasePower = 90;
+ magnitude = 8;
+ }
+ else if (magnitude < 95)
+ {
+ gDynamicBasePower = 110;
+ magnitude = 9;
+ }
+ else
+ {
+ gDynamicBasePower = 150;
+ magnitude = 10;
+ }
+
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 1;
+ gBattleTextBuff1[2] = 1;
+ gBattleTextBuff1[3] = 2;
+ gBattleTextBuff1[4] = magnitude;
+ gBattleTextBuff1[5] = 0xFF;
+
+ for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ {
+ if (gBankTarget == gBankAttacker)
+ continue;
+ if (!(gAbsentBankFlags & gBitTable[gBankTarget])) //a valid target was found
+ break;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkBA_jumpifnopursuitswitchdmg(void)
+{
+ if (gMultiHitCounter == 1)
+ {
+ if (GetBankSide(gBankAttacker) == 0)
+ gBankTarget = GetBankByPlayerAI(1);
+ else
+ gBankTarget = GetBankByPlayerAI(0);
+ }
+ else
+ {
+ if (GetBankSide(gBankAttacker) == 0)
+ gBankTarget = GetBankByPlayerAI(3);
+ else
+ gBankTarget = GetBankByPlayerAI(2);
+ }
+
+ if (gActionForBanks[gBankTarget] == 0 && gBankAttacker == ewram[gBankTarget + 0x16010] && !(gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE))
+ && gBattleMons[gBankAttacker].hp && !gDisableStructs[gBankTarget].truantCounter && gChosenMovesByBanks[gBankTarget] == MOVE_PURSUIT)
+ {
+ int i;
+ for (i = 0; i < gNoOfAllBanks; i++)
+ {
+ if (gTurnOrder[i] == gBankTarget)
+ gUnknown_02024A76[i] = 11;
+ }
+ gCurrentMove = MOVE_PURSUIT;
+ gBattlescriptCurrInstr += 5;
+ BATTLE_STRUCT->animTurn = 1;
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkBB_setsunny(void)
+{
+ if (gBattleWeather & WEATHER_SUN_ANY)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ gBattleWeather = WEATHER_SUN_TEMPORARY;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 4;
+ gWishFutureKnock.weatherDuration = 5;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkBC_maxattackhalvehp(void) //belly drum
+{
+ u32 half_hp = gBattleMons[gBankAttacker].maxHP / 2;
+ if (!(gBattleMons[gBankAttacker].maxHP / 2))
+ half_hp = 1;
+
+ if (gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] < 12 && gBattleMons[gBankAttacker].hp > half_hp)
+ {
+ gBattleMons[gBankAttacker].statStages[STAT_STAGE_ATK] = 12;
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkBD_copyfoestats(void) //psych up
+{
+ int i;
+ for (i = 0; i < 8; i++)
+ {
+ gBattleMons[gBankAttacker].statStages[i] = gBattleMons[gBankTarget].statStages[i];
+ }
+ gBattlescriptCurrInstr += 5; //why not 1? possible unused fail possibility?
+}
+
+static void atkBE_breakfree(void) //rapid spin
+{
+ if (gBattleMons[gBankAttacker].status2 & STATUS2_WRAPPED)
+ {
+ gBattleMons[gBankAttacker].status2 &= ~(STATUS2_WRAPPED);
+ gBankTarget = ewram[gBankAttacker + 0x16020];
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 2;
+ gBattleTextBuff1[2] = ewram[gBankAttacker * 2 + 0x16004];
+ gBattleTextBuff1[3] = ewram[gBankAttacker * 2 + 0x16005];
+ gBattleTextBuff1[4] = 0xFF;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_WrapFree;
+ }
+ else if (gStatuses3[gBankAttacker] & STATUS3_LEECHSEED)
+ {
+ gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED);
+ gStatuses3[gBankAttacker] &= ~(STATUS3_LEECHSEED_BANK);
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_LeechSeedFree;
+ }
+ else if (gSideAffecting[GetBankSide(gBankAttacker)] & SIDE_STATUS_SPIKES)
+ {
+ gSideAffecting[GetBankSide(gBankAttacker)] &= ~(SIDE_STATUS_SPIKES);
+ gSideTimer[GetBankSide(gBankAttacker)].spikesAmount = 0;
+ b_movescr_stack_push_cursor();
+ gBattlescriptCurrInstr = BattleScript_SpikesFree;
+ }
+ else
+ gBattlescriptCurrInstr++;
+}
+
+static void atkBF_set_defense_curl(void)
+{
+ gBattleMons[gBankAttacker].status2 |= STATUS2_DEFENSE_CURL;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkC0_recoverbasedonsunlight(void)
+{
+ gBankTarget = gBankAttacker;
+ if (gBattleMons[gBankAttacker].hp != gBattleMons[gBankAttacker].maxHP)
+ {
+ if (!gBattleWeather || !WEATHER_HAS_EFFECT)
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 2;
+ else if (gBattleWeather & WEATHER_SUN_ANY)
+ gBattleMoveDamage = 20 * gBattleMons[gBankAttacker].maxHP / 30;
+ else //not sunny weather
+ gBattleMoveDamage = gBattleMons[gBankAttacker].maxHP / 4;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+__attribute__((naked))
+static void atkC1_hidden_power(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\
+ ldr r2, _08029894 @ =gBattleMons\n\
+ ldr r0, _08029898 @ =gBankAttacker\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ adds r4, r1, 0\n\
+ muls r4, r0\n\
+ adds r4, r2\n\
+ ldrb r0, [r4, 0x14]\n\
+ mov r10, r0\n\
+ mov r7, r10\n\
+ lsls r7, 27\n\
+ adds r0, r7, 0\n\
+ lsrs r0, 27\n\
+ mov r10, r0\n\
+ movs r1, 0x2\n\
+ mov r2, r10\n\
+ ands r2, r1\n\
+ asrs r2, 1\n\
+ ldrh r7, [r4, 0x14]\n\
+ mov r9, r7\n\
+ mov r0, r9\n\
+ lsls r0, 22\n\
+ mov r9, r0\n\
+ lsrs r3, r0, 27\n\
+ adds r0, r1, 0\n\
+ ands r0, r3\n\
+ orrs r2, r0\n\
+ ldrb r7, [r4, 0x15]\n\
+ mov r8, r7\n\
+ mov r0, r8\n\
+ lsls r0, 25\n\
+ mov r8, r0\n\
+ lsrs r3, r0, 27\n\
+ adds r0, r1, 0\n\
+ ands r0, r3\n\
+ lsls r0, 1\n\
+ orrs r2, r0\n\
+ ldr r6, [r4, 0x14]\n\
+ lsls r6, 12\n\
+ lsrs r3, r6, 27\n\
+ adds r0, r1, 0\n\
+ ands r0, r3\n\
+ lsls r0, 2\n\
+ orrs r2, r0\n\
+ ldrh r5, [r4, 0x16]\n\
+ lsls r5, 23\n\
+ lsrs r3, r5, 27\n\
+ adds r0, r1, 0\n\
+ ands r0, r3\n\
+ lsls r0, 3\n\
+ orrs r2, r0\n\
+ ldrb r3, [r4, 0x17]\n\
+ lsls r3, 26\n\
+ lsrs r0, r3, 27\n\
+ ands r1, r0\n\
+ lsls r1, 4\n\
+ orrs r2, r1\n\
+ movs r1, 0x1\n\
+ adds r4, r1, 0\n\
+ mov r7, r10\n\
+ ands r4, r7\n\
+ mov r0, r9\n\
+ lsrs r0, 27\n\
+ mov r9, r0\n\
+ adds r0, r1, 0\n\
+ mov r7, r9\n\
+ ands r0, r7\n\
+ lsls r0, 1\n\
+ orrs r4, r0\n\
+ mov r0, r8\n\
+ lsrs r0, 27\n\
+ mov r8, r0\n\
+ adds r0, r1, 0\n\
+ mov r7, r8\n\
+ ands r0, r7\n\
+ lsls r0, 2\n\
+ orrs r4, r0\n\
+ lsrs r6, 27\n\
+ adds r0, r1, 0\n\
+ ands r0, r6\n\
+ lsls r0, 3\n\
+ orrs r4, r0\n\
+ lsrs r5, 27\n\
+ adds r0, r1, 0\n\
+ ands r0, r5\n\
+ lsls r0, 4\n\
+ orrs r4, r0\n\
+ lsrs r3, 27\n\
+ ands r1, r3\n\
+ lsls r1, 5\n\
+ orrs r4, r1\n\
+ ldr r5, _0802989C @ =gDynamicBasePower\n\
+ lsls r0, r2, 2\n\
+ adds r0, r2\n\
+ lsls r0, 3\n\
+ movs r1, 0x3F\n\
+ bl __divsi3\n\
+ adds r0, 0x1E\n\
+ strh r0, [r5]\n\
+ ldr r5, _080298A0 @ =0x02000000\n\
+ lsls r0, r4, 4\n\
+ subs r0, r4\n\
+ movs r1, 0x3F\n\
+ bl __divsi3\n\
+ adds r1, r0, 0x1\n\
+ ldr r0, _080298A4 @ =0x0001601c\n\
+ adds r5, r0\n\
+ strb r1, [r5]\n\
+ lsls r0, r1, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x8\n\
+ bls _08029876\n\
+ adds r0, r1, 0x1\n\
+ strb r0, [r5]\n\
+_08029876:\n\
+ ldrb r0, [r5]\n\
+ movs r1, 0xC0\n\
+ orrs r0, r1\n\
+ strb r0, [r5]\n\
+ ldr r1, _080298A8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x1\n\
+ str r0, [r1]\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\
+_08029894: .4byte gBattleMons\n\
+_08029898: .4byte gBankAttacker\n\
+_0802989C: .4byte gDynamicBasePower\n\
+_080298A0: .4byte 0x02000000\n\
+_080298A4: .4byte 0x0001601c\n\
+_080298A8: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided");
+}
+
+static void atkC2_selectnexttarget(void)
+{
+ for (gBankTarget = 0; gBankTarget < gNoOfAllBanks; gBankTarget++)
+ {
+ if (gBankTarget == gBankAttacker)
+ continue;
+ if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ break;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkC3_setfutureattack(void)
+{
+ if (gWishFutureKnock.futureSightCounter[gBankTarget] != 0)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gWishFutureKnock.futureSightMove[gBankTarget] = gCurrentMove;
+ gWishFutureKnock.futureSightAttacker[gBankTarget] = gBankAttacker;
+ gWishFutureKnock.futureSightCounter[gBankTarget] = 3;
+ gWishFutureKnock.futureSightDmg[gBankTarget] = CalculateBaseDamage(&gBattleMons[gBankAttacker], &gBattleMons[gBankTarget], gCurrentMove,
+ gSideAffecting[GetBankIdentity(gBankTarget) & 1], 0,
+ 0, gBankAttacker, gBankTarget);
+
+ if (gProtectStructs[gBankAttacker].helpingHand)
+ gWishFutureKnock.futureSightDmg[gBankTarget] = gWishFutureKnock.futureSightDmg[gBankTarget] * 15 / 10;
+
+ if (gCurrentMove == MOVE_DOOM_DESIRE)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+#ifdef NONMATCHING
+static void atkC4_beat_up(void)
+{
+ register struct Pokemon* party asm("r7");
+ if (GetBankSide(gBankAttacker) == 0)
+ party = gPlayerParty;
+ else
+ party = gEnemyParty;
+
+ if (gBattleMons[gBankTarget].hp == 0)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ while (gBattleCommunication[0] < 6)
+ {
+ if (GetMonData(&party[gBattleCommunication[0]], MON_DATA_HP) && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2)
+ && GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES2) != SPECIES_EGG && !GetMonData(&party[gBattleCommunication[0]], MON_DATA_STATUS))
+ break;
+ gBattleCommunication[0]++;
+ }
+ if (gBattleCommunication[0] < 6)
+ {
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 4;
+ gBattleTextBuff1[2] = gBankAttacker;
+ gBattleTextBuff1[3] = gBattleCommunication[0];
+ gBattleTextBuff1[4] = 0xFF;
+ gBattlescriptCurrInstr += 9;
+
+ gBattleMoveDamage = gBaseStats[GetMonData(&party[gBattleCommunication[0]], MON_DATA_SPECIES)].baseAttack;
+ gBattleMoveDamage *= gBattleMoves[gCurrentMove].power;
+ gBattleMoveDamage *= (GetMonData(&party[gBattleCommunication[0]], MON_DATA_LEVEL) * 2 / 5 + 2);
+ gBattleMoveDamage /= gBaseStats[gBattleMons[gBankTarget].species].baseDefense;
+ gBattleMoveDamage = (gBattleMoveDamage / 50) + 2;
+ if (gProtectStructs[gBankAttacker].helpingHand)
+ gBattleMoveDamage = gBattleMoveDamage * 15 / 10;
+
+ gBattleCommunication[0]++;
+ }
+ else if (gBattleCommunication[0] != 0)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 5);
+ }
+}
+#else
+__attribute__((naked))
+static void atkC4_beat_up(void)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r9\n\
+ mov r6, r8\n\
+ push {r6,r7}\n\
+ ldr r0, _08029A8C @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ ldr r7, _08029A90 @ =gEnemyParty\n\
+ cmp r0, 0\n\
+ bne _08029A62\n\
+ ldr r7, _08029A94 @ =gPlayerParty\n\
+_08029A62:\n\
+ ldr r2, _08029A98 @ =gBattleMons\n\
+ ldr r0, _08029A9C @ =gBankTarget\n\
+ ldrb r1, [r0]\n\
+ movs r0, 0x58\n\
+ muls r0, r1\n\
+ adds r0, r2\n\
+ ldrh r0, [r0, 0x28]\n\
+ cmp r0, 0\n\
+ bne _08029AA4\n\
+ ldr r3, _08029AA0 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ b _08029C40\n\
+ .align 2, 0\n\
+_08029A8C: .4byte gBankAttacker\n\
+_08029A90: .4byte gEnemyParty\n\
+_08029A94: .4byte gPlayerParty\n\
+_08029A98: .4byte gBattleMons\n\
+_08029A9C: .4byte gBankTarget\n\
+_08029AA0: .4byte gBattlescriptCurrInstr\n\
+_08029AA4:\n\
+ ldr r6, _08029BE0 @ =gBattleCommunication\n\
+ ldrb r0, [r6]\n\
+ mov r8, r0\n\
+ cmp r0, 0x5\n\
+ bls _08029AB0\n\
+ b _08029C0C\n\
+_08029AB0:\n\
+ adds r4, r6, 0\n\
+ movs r5, 0x64\n\
+_08029AB4:\n\
+ ldrb r0, [r4]\n\
+ muls r0, r5\n\
+ adds r0, r7, r0\n\
+ movs r1, 0x39\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08029AF8\n\
+ ldrb r0, [r6]\n\
+ muls r0, r5\n\
+ adds r0, r7, r0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08029AF8\n\
+ ldrb r0, [r4]\n\
+ muls r0, r5\n\
+ adds r0, r7, r0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ movs r1, 0xCE\n\
+ lsls r1, 1\n\
+ cmp r0, r1\n\
+ beq _08029AF8\n\
+ ldrb r0, [r4]\n\
+ muls r0, r5\n\
+ adds r0, r7, r0\n\
+ movs r1, 0x37\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _08029B08\n\
+_08029AF8:\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ adds r6, r4, 0\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x5\n\
+ bls _08029AB4\n\
+_08029B08:\n\
+ ldr r1, _08029BE0 @ =gBattleCommunication\n\
+ mov r9, r1\n\
+ ldrb r2, [r1]\n\
+ cmp r2, 0x5\n\
+ bhi _08029C0C\n\
+ ldr r1, _08029BE4 @ =gBattleTextBuff1\n\
+ movs r0, 0xFD\n\
+ strb r0, [r1]\n\
+ movs r0, 0x4\n\
+ strb r0, [r1, 0x1]\n\
+ ldr r6, _08029BE8 @ =gBankAttacker\n\
+ ldrb r0, [r6]\n\
+ strb r0, [r1, 0x2]\n\
+ strb r2, [r1, 0x3]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x4]\n\
+ ldr r1, _08029BEC @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x9\n\
+ str r0, [r1]\n\
+ ldr r2, _08029BF0 @ =gBattleMoveDamage\n\
+ mov r8, r2\n\
+ ldr r5, _08029BF4 @ =gBaseStats\n\
+ mov r1, r9\n\
+ ldrb r0, [r1]\n\
+ movs r4, 0x64\n\
+ muls r0, r4\n\
+ adds r0, r7, r0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ lsls r1, r0, 3\n\
+ subs r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r5\n\
+ ldrb r3, [r1, 0x1]\n\
+ mov r2, r8\n\
+ str r3, [r2]\n\
+ ldr r2, _08029BF8 @ =gBattleMoves\n\
+ ldr r0, _08029BFC @ =gCurrentMove\n\
+ ldrh r1, [r0]\n\
+ lsls r0, r1, 1\n\
+ adds r0, r1\n\
+ lsls r0, 2\n\
+ adds r0, r2\n\
+ ldrb r0, [r0, 0x1]\n\
+ muls r0, r3\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ mov r2, r9\n\
+ ldrb r0, [r2]\n\
+ muls r0, r4\n\
+ adds r0, r7, r0\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ lsls r0, 1\n\
+ movs r1, 0x5\n\
+ bl __udivsi3\n\
+ adds r0, 0x2\n\
+ mov r2, r8\n\
+ ldr r1, [r2]\n\
+ muls r0, r1\n\
+ str r0, [r2]\n\
+ ldr r3, _08029C00 @ =gBattleMons\n\
+ ldr r1, _08029C04 @ =gBankTarget\n\
+ ldrb r2, [r1]\n\
+ movs r1, 0x58\n\
+ muls r1, r2\n\
+ adds r1, r3\n\
+ ldrh r2, [r1]\n\
+ lsls r1, r2, 3\n\
+ subs r1, r2\n\
+ lsls r1, 2\n\
+ adds r1, r5\n\
+ ldrb r1, [r1, 0x2]\n\
+ bl __divsi3\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+ movs r1, 0x32\n\
+ bl __divsi3\n\
+ adds r2, r0, 0x2\n\
+ mov r0, r8\n\
+ str r2, [r0]\n\
+ ldr r1, _08029C08 @ =gProtectStructs\n\
+ ldrb r0, [r6]\n\
+ lsls r0, 4\n\
+ adds r0, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 28\n\
+ cmp r0, 0\n\
+ bge _08029BD4\n\
+ lsls r0, r2, 4\n\
+ subs r0, r2\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ mov r1, r8\n\
+ str r0, [r1]\n\
+_08029BD4:\n\
+ mov r2, r9\n\
+ ldrb r0, [r2]\n\
+ adds r0, 0x1\n\
+ strb r0, [r2]\n\
+ b _08029C46\n\
+ .align 2, 0\n\
+_08029BE0: .4byte gBattleCommunication\n\
+_08029BE4: .4byte gBattleTextBuff1\n\
+_08029BE8: .4byte gBankAttacker\n\
+_08029BEC: .4byte gBattlescriptCurrInstr\n\
+_08029BF0: .4byte gBattleMoveDamage\n\
+_08029BF4: .4byte gBaseStats\n\
+_08029BF8: .4byte gBattleMoves\n\
+_08029BFC: .4byte gCurrentMove\n\
+_08029C00: .4byte gBattleMons\n\
+_08029C04: .4byte gBankTarget\n\
+_08029C08: .4byte gProtectStructs\n\
+_08029C0C:\n\
+ mov r0, r8\n\
+ cmp r0, 0\n\
+ beq _08029C2C\n\
+ ldr r3, _08029C28 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ b _08029C40\n\
+ .align 2, 0\n\
+_08029C28: .4byte gBattlescriptCurrInstr\n\
+_08029C2C:\n\
+ ldr r3, _08029C54 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x5]\n\
+ ldrb r0, [r2, 0x6]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x7]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x8]\n\
+_08029C40:\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ str r1, [r3]\n\
+_08029C46:\n\
+ pop {r3,r4}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08029C54: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+static void atkC5_hidepreattack(void)
+{
+ switch (gCurrentMove)
+ {
+ case MOVE_FLY:
+ case MOVE_BOUNCE:
+ gStatuses3[gBankAttacker] |= STATUS3_ON_AIR;
+ break;
+ case MOVE_DIG:
+ gStatuses3[gBankAttacker] |= STATUS3_UNDERGROUND;
+ break;
+ case MOVE_DIVE:
+ gStatuses3[gBankAttacker] |= STATUS3_UNDERWATER;
+ break;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkC6_unhidepostattack(void)
+{
+ switch (gCurrentMove)
+ {
+ case MOVE_FLY:
+ case MOVE_BOUNCE:
+ gStatuses3[gBankAttacker] &= ~STATUS3_ON_AIR;
+ break;
+ case MOVE_DIG:
+ gStatuses3[gBankAttacker] &= ~STATUS3_UNDERGROUND;
+ break;
+ case MOVE_DIVE:
+ gStatuses3[gBankAttacker] &= ~STATUS3_UNDERWATER;
+ break;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkC7_setminimize(void)
+{
+ if (gHitMarker & HITMARKER_OBEYS)
+ gStatuses3[gBankAttacker] |= STATUS3_MINIMIZED;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkC8_sethail(void)
+{
+ if (gBattleWeather & WEATHER_HAIL)
+ {
+ gBattleMoveFlags |= MOVESTATUS_MISSED;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 2;
+ }
+ else
+ {
+ gBattleWeather = WEATHER_HAIL;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 5;
+ gWishFutureKnock.weatherDuration = 5;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkC9_jumpifattackandspecialattackcannotfall(void) //memento
+{
+ if (gBattleMons[gBankTarget].statStages[STAT_STAGE_ATK] == 0
+ && gBattleMons[gBankTarget].statStages[STAT_STAGE_SPATK] == 0
+ && gBattleCommunication[6] != 1)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gActiveBank = gBankAttacker;
+ gBattleMoveDamage = gBattleMons[gActiveBank].hp;
+ EmitHealthBarUpdate(0, 0x7FFF);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkCA_setforcedtarget(void) //follow me
+{
+ gSideTimer[GetBankSide(gBankAttacker)].followmeTimer = 1;
+ gSideTimer[GetBankSide(gBankAttacker)].followmeTarget = gBankAttacker;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkCB_setcharge(void)
+{
+ gStatuses3[gBankAttacker] |= STATUS3_CHARGED_UP;
+ gDisableStructs[gBankAttacker].chargeTimer1 = 2;
+ gDisableStructs[gBankAttacker].chargeTimer2 = 2;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkCC_callterrainattack(void) //nature power
+{
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gCurrentMove = sNaturePowerMoves[gBattleTerrain];
+ gBankTarget = GetMoveTarget(gCurrentMove, 0);
+ b_movescr_stack_push(gBattleScriptsEffectsTable[gBattleMoves[gCurrentMove].effect]);
+ gBattlescriptCurrInstr++;
+}
+
+static void atkCD_cureifburnedparalysedorpoisoned(void) //refresh
+{
+ if (gBattleMons[gBankAttacker].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS | STATUS_TOXIC_POISON))
+ {
+ gBattleMons[gBankAttacker].status1 = 0;
+ gBattlescriptCurrInstr += 5;
+ gActiveBank = gBankAttacker;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, 0, 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkCE_settorment(void)
+{
+ if (gBattleMons[gBankTarget].status2 & STATUS2_TORMENT)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gBattleMons[gBankTarget].status2 |= STATUS2_TORMENT;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkCF_jumpifnodamage(void)
+{
+ if (gProtectStructs[gBankAttacker].physicalDmg || gProtectStructs[gBankAttacker].specialDmg)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkD0_settaunt(void)
+{
+ if (gDisableStructs[gBankTarget].tauntTimer1 == 0)
+ {
+ gDisableStructs[gBankTarget].tauntTimer1 = 2;
+ gDisableStructs[gBankTarget].tauntTimer2 = 2;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkD1_set_helpinghand(void)
+{
+ gBankTarget = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gBankTarget])
+ && !gProtectStructs[gBankAttacker].helpingHand && !gProtectStructs[gBankTarget].helpingHand)
+ {
+ gProtectStructs[gBankTarget].helpingHand = 1;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+#ifdef NONMATCHING
+static void atkD2_swap_items(void)
+{
+ if ((GetBankSide(gBankAttacker) != 1 || gBattleTypeFlags & (BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK | BATTLE_TYPE_EREADER_TRAINER) || gTrainerBattleOpponent == 0x400))
+ {
+ u8 side = GetBankSide(gBankAttacker);
+ if (gBattleTypeFlags)
+ }
+
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+#else
+__attribute__((naked))
+static void atkD2_swap_items(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, _0802A30C @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x1\n\
+ bne _0802A24C\n\
+ ldr r0, _0802A310 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0802A314 @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0802A24C\n\
+ ldr r0, _0802A318 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ bne _0802A2EE\n\
+_0802A24C:\n\
+ ldr r4, _0802A30C @ =gBankAttacker\n\
+ ldrb r0, [r4]\n\
+ bl GetBankSide\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ ldr r0, _0802A310 @ =gBattleTypeFlags\n\
+ ldrh r1, [r0]\n\
+ ldr r0, _0802A314 @ =0x00000902\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _0802A290\n\
+ ldr r0, _0802A318 @ =gTrainerBattleOpponent\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r1, r0\n\
+ beq _0802A290\n\
+ ldr r0, _0802A31C @ =gWishFutureKnock\n\
+ adds r0, 0x29\n\
+ adds r0, r2, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r3, _0802A320 @ =gBitTable\n\
+ ldr r2, _0802A324 @ =gBattlePartyID\n\
+ ldrb r0, [r4]\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ ldrh r0, [r0]\n\
+ lsls r0, 2\n\
+ adds r0, r3\n\
+ ldr r0, [r0]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _0802A2EE\n\
+_0802A290:\n\
+ ldr r0, _0802A328 @ =gBattleMons\n\
+ mov r9, r0\n\
+ ldr r1, _0802A30C @ =gBankAttacker\n\
+ ldrb r4, [r1]\n\
+ movs r2, 0x58\n\
+ mov r8, r2\n\
+ mov r0, r8\n\
+ muls r0, r4\n\
+ mov r3, r9\n\
+ adds r5, r0, r3\n\
+ ldrh r3, [r5, 0x2E]\n\
+ adds r1, r3, 0\n\
+ cmp r1, 0\n\
+ bne _0802A2BE\n\
+ ldr r0, _0802A32C @ =gBankTarget\n\
+ ldrb r0, [r0]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ add r0, r9\n\
+ ldrh r0, [r0, 0x2E]\n\
+ cmp r0, 0\n\
+ beq _0802A2EE\n\
+_0802A2BE:\n\
+ cmp r1, 0xAF\n\
+ beq _0802A2EE\n\
+ ldr r7, _0802A32C @ =gBankTarget\n\
+ ldrb r0, [r7]\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ mov r1, r9\n\
+ adds r2, r0, r1\n\
+ ldrh r1, [r2, 0x2E]\n\
+ cmp r1, 0xAF\n\
+ beq _0802A2EE\n\
+ adds r0, r3, 0\n\
+ subs r0, 0x79\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0xB\n\
+ bls _0802A2EE\n\
+ adds r0, r1, 0\n\
+ subs r0, 0x79\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ cmp r0, 0xB\n\
+ bhi _0802A334\n\
+_0802A2EE:\n\
+ ldr r3, _0802A330 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ str r1, [r3]\n\
+ b _0802A49A\n\
+ .align 2, 0\n\
+_0802A30C: .4byte gBankAttacker\n\
+_0802A310: .4byte gBattleTypeFlags\n\
+_0802A314: .4byte 0x00000902\n\
+_0802A318: .4byte gTrainerBattleOpponent\n\
+_0802A31C: .4byte gWishFutureKnock\n\
+_0802A320: .4byte gBitTable\n\
+_0802A324: .4byte gBattlePartyID\n\
+_0802A328: .4byte gBattleMons\n\
+_0802A32C: .4byte gBankTarget\n\
+_0802A330: .4byte gBattlescriptCurrInstr\n\
+_0802A334:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0x3C\n\
+ bne _0802A36C\n\
+ ldr r1, _0802A360 @ =gBattlescriptCurrInstr\n\
+ ldr r0, _0802A364 @ =BattleScript_NoItemSteal\n\
+ str r0, [r1]\n\
+ ldr r1, _0802A368 @ =gLastUsedAbility\n\
+ ldrb r0, [r7]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ add r0, r9\n\
+ adds r0, 0x20\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldrb r0, [r7]\n\
+ ldrb r1, [r1]\n\
+ bl RecordAbilityBattle\n\
+ b _0802A49A\n\
+ .align 2, 0\n\
+_0802A360: .4byte gBattlescriptCurrInstr\n\
+_0802A364: .4byte BattleScript_NoItemSteal\n\
+_0802A368: .4byte gLastUsedAbility\n\
+_0802A36C:\n\
+ lsls r0, r4, 1\n\
+ ldr r4, _0802A458 @ =0x020160f0\n\
+ adds r6, r0, r4\n\
+ ldrh r5, [r5, 0x2E]\n\
+ mov r10, r5\n\
+ strh r1, [r6]\n\
+ ldr r3, _0802A45C @ =gBankAttacker\n\
+ ldrb r0, [r3]\n\
+ mov r1, r8\n\
+ muls r1, r0\n\
+ adds r0, r1, 0\n\
+ add r0, r9\n\
+ movs r1, 0\n\
+ strh r1, [r0, 0x2E]\n\
+ ldrb r0, [r7]\n\
+ mov r2, r8\n\
+ muls r2, r0\n\
+ adds r0, r2, 0\n\
+ add r0, r9\n\
+ mov r3, r10\n\
+ strh r3, [r0, 0x2E]\n\
+ ldr r5, _0802A460 @ =gActiveBank\n\
+ ldr r1, _0802A45C @ =gBankAttacker\n\
+ ldrb r0, [r1]\n\
+ strb r0, [r5]\n\
+ str r6, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ movs r2, 0\n\
+ movs r3, 0x2\n\
+ bl EmitSetAttributes\n\
+ ldr r2, _0802A45C @ =gBankAttacker\n\
+ ldrb r0, [r2]\n\
+ bl MarkBufferBankForExecution\n\
+ ldrb r0, [r7]\n\
+ strb r0, [r5]\n\
+ ldrb r0, [r7]\n\
+ mov r3, r8\n\
+ muls r3, r0\n\
+ adds r0, r3, 0\n\
+ mov r1, r9\n\
+ adds r1, 0x2E\n\
+ adds r0, r1\n\
+ str r0, [sp]\n\
+ movs r0, 0\n\
+ movs r1, 0x2\n\
+ movs r2, 0\n\
+ movs r3, 0x2\n\
+ bl EmitSetAttributes\n\
+ ldrb r0, [r7]\n\
+ bl MarkBufferBankForExecution\n\
+ ldr r0, _0802A464 @ =0xfffe9f10\n\
+ adds r4, r0\n\
+ ldrb r0, [r7]\n\
+ lsls r0, 1\n\
+ ldr r2, _0802A468 @ =0x000160e8\n\
+ adds r0, r2\n\
+ adds r0, r4\n\
+ movs r1, 0\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r7]\n\
+ lsls r0, 1\n\
+ ldr r1, _0802A46C @ =0x000160e9\n\
+ adds r0, r1\n\
+ adds r0, r4\n\
+ movs r3, 0\n\
+ strb r3, [r0]\n\
+ ldr r3, _0802A45C @ =gBankAttacker\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ adds r0, r2\n\
+ adds r0, r4\n\
+ movs r2, 0\n\
+ strb r2, [r0]\n\
+ ldrb r0, [r3]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ adds r0, r4\n\
+ strb r2, [r0]\n\
+ ldr r1, _0802A470 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+ ldr r1, _0802A474 @ =gBattleTextBuff1\n\
+ movs r3, 0xFD\n\
+ strb r3, [r1]\n\
+ movs r2, 0xA\n\
+ strb r2, [r1, 0x1]\n\
+ ldrh r0, [r6]\n\
+ strb r0, [r1, 0x2]\n\
+ ldrh r0, [r6]\n\
+ lsrs r0, 8\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0xFF\n\
+ strb r0, [r1, 0x4]\n\
+ ldr r1, _0802A478 @ =gBattleTextBuff2\n\
+ strb r3, [r1]\n\
+ strb r2, [r1, 0x1]\n\
+ mov r3, r10\n\
+ strb r3, [r1, 0x2]\n\
+ mov r2, r10\n\
+ lsrs r0, r2, 8\n\
+ strb r0, [r1, 0x3]\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ strb r0, [r1, 0x4]\n\
+ cmp r2, 0\n\
+ beq _0802A480\n\
+ ldrh r0, [r6]\n\
+ cmp r0, 0\n\
+ beq _0802A494\n\
+ ldr r1, _0802A47C @ =gBattleCommunication\n\
+ movs r0, 0x2\n\
+ b _0802A498\n\
+ .align 2, 0\n\
+_0802A458: .4byte 0x020160f0\n\
+_0802A45C: .4byte gBankAttacker\n\
+_0802A460: .4byte gActiveBank\n\
+_0802A464: .4byte 0xfffe9f10\n\
+_0802A468: .4byte 0x000160e8\n\
+_0802A46C: .4byte 0x000160e9\n\
+_0802A470: .4byte gBattlescriptCurrInstr\n\
+_0802A474: .4byte gBattleTextBuff1\n\
+_0802A478: .4byte gBattleTextBuff2\n\
+_0802A47C: .4byte gBattleCommunication\n\
+_0802A480:\n\
+ ldrh r0, [r6]\n\
+ cmp r0, 0\n\
+ beq _0802A494\n\
+ ldr r0, _0802A490 @ =gBattleCommunication\n\
+ movs r3, 0\n\
+ strb r3, [r0, 0x5]\n\
+ b _0802A49A\n\
+ .align 2, 0\n\
+_0802A490: .4byte gBattleCommunication\n\
+_0802A494:\n\
+ ldr r1, _0802A4AC @ =gBattleCommunication\n\
+ movs r0, 0x1\n\
+_0802A498:\n\
+ strb r0, [r1, 0x5]\n\
+_0802A49A:\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\
+ .align 2, 0\n\
+_0802A4AC: .4byte gBattleCommunication\n\
+ .syntax divided");
+}
+#endif // NONMATCHING
+
+static void atkD3_copy_ability(void) //role play
+{
+ if (gBattleMons[gBankTarget].ability != 0 && gBattleMons[gBankTarget].ability != ABILITY_WONDER_GUARD)
+ {
+ gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability;
+ gLastUsedAbility = gBattleMons[gBankTarget].ability;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkD4_wish_effect(void)
+{
+ switch (BSScriptRead8(gBattlescriptCurrInstr + 1))
+ {
+ case 0: //use wish
+ if (gWishFutureKnock.wishCounter[gBankAttacker] == 0)
+ {
+ gWishFutureKnock.wishCounter[gBankAttacker] = 2;
+ gWishFutureKnock.wishUserID[gBankAttacker] = gBattlePartyID[gBankAttacker];
+ gBattlescriptCurrInstr += 6;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ break;
+ case 1: //heal effect
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 4;
+ gBattleTextBuff1[2] = gBankTarget;
+ gBattleTextBuff1[3] = gWishFutureKnock.wishUserID[gBankTarget];
+ gBattleTextBuff1[4] = 0xFF;
+ gBattleMoveDamage = gBattleMons[gBankTarget].maxHP / 2;
+ if (gBattleMoveDamage == 0)
+ gBattleMoveDamage = 1;
+ gBattleMoveDamage *= -1;
+ if (gBattleMons[gBankTarget].hp == gBattleMons[gBankTarget].maxHP)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+ break;
+ }
+}
+
+static void atkD5_setroots(void) //ingrain
+{
+ if (gStatuses3[gBankAttacker] & STATUS3_ROOTED)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gStatuses3[gBankAttacker] |= STATUS3_ROOTED;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkD6_doubledamagedealtifdamaged(void)
+{
+ if ((gProtectStructs[gBankAttacker].physicalDmg && gProtectStructs[gBankAttacker].physicalBank == gBankTarget)
+ || (gProtectStructs[gBankAttacker].specialDmg && gProtectStructs[gBankAttacker].specialBank == gBankTarget))
+ BATTLE_STRUCT->dmgMultiplier = 2;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkD7_setyawn(void)
+{
+ if (gStatuses3[gBankTarget] & STATUS3_YAWN || (u8) gBattleMons[gBankTarget].status1)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gStatuses3[gBankTarget] |= 0x1000;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkD8_setdamagetohealthdifference(void)
+{
+ if (gBattleMons[gBankTarget].hp <= gBattleMons[gBankAttacker].hp)
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ gBattleMoveDamage = gBattleMons[gBankTarget].hp - gBattleMons[gBankAttacker].hp;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkD9_scaledamagebyhealthratio(void)
+{
+ if (gDynamicBasePower == 0)
+ {
+ u8 power = gBattleMoves[gCurrentMove].power;
+ gDynamicBasePower = gBattleMons[gBankAttacker].hp * power / gBattleMons[gBankAttacker].maxHP;
+ if (gDynamicBasePower == 0)
+ gDynamicBasePower = 1;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkDA_abilityswap(void)
+{
+ if ((gBattleMons[gBankAttacker].ability == 0 && gBattleMons[gBankTarget].ability == 0)
+ || gBattleMons[gBankAttacker].ability == ABILITY_WONDER_GUARD || gBattleMons[gBankTarget].ability == ABILITY_WONDER_GUARD
+ || gBattleMoveFlags & MOVESTATUS_NOEFFECT)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ u8 atk_ability = gBattleMons[gBankAttacker].ability;
+ gBattleMons[gBankAttacker].ability = gBattleMons[gBankTarget].ability;
+ gBattleMons[gBankTarget].ability = atk_ability;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkDB_imprisoneffect(void)
+{
+ u8 r8 = 0;
+ if ((gStatuses3[gBankAttacker] & STATUS3_IMPRISIONED))
+ {
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ else
+ {
+ u8 bank;
+ sub_801529C(gBankAttacker);
+ for (bank = 0; bank < gNoOfAllBanks; bank++)
+ {
+ if (r8 != GetBankSide(bank))
+ {
+ int j;
+ for (j = 0; j < 4; j++)
+ {
+ int k;
+ for (k = 0; k < 4; k++)
+ {
+ if (gBattleMons[gBankAttacker].moves[j] == gBattleMons[bank].moves[k] && gBattleMons[gBankAttacker].moves[j])
+ break;
+ }
+ if (k != 4)
+ break;
+ }
+ if (j != 4)
+ {
+ gStatuses3[gBankAttacker] |= STATUS3_IMPRISIONED;
+ gBattlescriptCurrInstr += 5;
+ break;
+ }
+ }
+ }
+ if (bank == gNoOfAllBanks)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+}
+
+static void atkDC_setgrudge(void)
+{
+ if (gStatuses3[gBankAttacker] & STATUS3_GRUDGE)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gStatuses3[gBankAttacker] |= STATUS3_GRUDGE;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkDD_weightdamagecalculation(void)
+{
+ int i;
+ for (i = 0; sWeightDamage[i] != 0xFFFF; i += 2)
+ {
+ if (sWeightDamage[i] > GetPokedexHeightWeight(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1))
+ break;
+ }
+ if (sWeightDamage[i] != 0xFFFF)
+ gDynamicBasePower = sWeightDamage[i + 1];
+ else
+ gDynamicBasePower = 120;
+ gBattlescriptCurrInstr++;
+}
+
+#ifdef NONMATCHING
+static void atkDE_asistattackselect(void)
+{
+ u32 chooseable_moves_no = 0;
+ struct Pokemon* party;
+ int i, j;
+ u16* chooseable_moves;
+ if (GetBankIdentity(gBankAttacker) & 1)
+ party = gEnemyParty;
+ else
+ party = gPlayerParty;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (i == gBattlePartyID[gBankAttacker])
+ break;
+ if (!GetMonData(&party[i], MON_DATA_SPECIES2) || GetMonData(&party[i], MON_DATA_SPECIES2) == SPECIES_EGG)
+ break;
+ chooseable_moves = &BATTLE_STRUCT->assistMove[chooseable_moves_no];
+ for (j = 0; j < 4; j++)
+ {
+ int k;
+ u16 move = GetMonData(&party[i], MON_DATA_MOVE1 + i);
+ if (IsMoveUnchoosable(move))
+ break;
+ //sUnknown_081FACFE[k]
+ for (k = 0; ;k++)
+ {
+ if (sUnknown_081FACFE[k] == 0xFFFF)
+ {
+ if (move)
+ {
+ *chooseable_moves = move;
+ chooseable_moves++;
+ chooseable_moves_no++;
+ }
+ break;
+ }
+ if (sUnknown_081FACFE[k] == move)
+ break;
+ }
+ }
+ }
+ if (chooseable_moves_no)
+ {
+ gHitMarker &= ~(HITMARKER_ATTACKSTRING_PRINTED);
+ gRandomMove = BATTLE_STRUCT->assistMove[Random() % chooseable_moves_no];
+ gBankTarget = GetMoveTarget(gRandomMove, 0);
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+#else
+__attribute__((naked))
+static void atkDE_asistattackselect(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, 0x8\n\
+ movs r0, 0\n\
+ mov r10, r0\n\
+ ldr r0, _0802AB9C @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ bl GetBankIdentity\n\
+ movs r1, 0x1\n\
+ ands r1, r0\n\
+ ldr r0, _0802ABA0 @ =gPlayerParty\n\
+ str r0, [sp]\n\
+ cmp r1, 0\n\
+ beq _0802AAAC\n\
+ ldr r1, _0802ABA4 @ =gEnemyParty\n\
+ str r1, [sp]\n\
+_0802AAAC:\n\
+ movs r2, 0\n\
+_0802AAAE:\n\
+ ldr r1, _0802ABA8 @ =gBattlePartyID\n\
+ ldr r0, _0802AB9C @ =gBankAttacker\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 1\n\
+ adds r0, r1\n\
+ adds r1, r2, 0x1\n\
+ str r1, [sp, 0x4]\n\
+ ldrh r0, [r0]\n\
+ cmp r2, r0\n\
+ beq _0802AB54\n\
+ movs r0, 0x64\n\
+ adds r6, r2, 0\n\
+ muls r6, r0\n\
+ ldr r0, [sp]\n\
+ adds r4, r0, r6\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ cmp r0, 0\n\
+ beq _0802AB54\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x41\n\
+ bl GetMonData\n\
+ movs r1, 0xCE\n\
+ lsls r1, 1\n\
+ cmp r0, r1\n\
+ beq _0802AB54\n\
+ movs r5, 0\n\
+ ldr r1, _0802ABAC @ =0x0000ffff\n\
+ mov r8, r1\n\
+ mov r9, r6\n\
+ mov r1, r10\n\
+ lsls r0, r1, 1\n\
+ ldr r1, _0802ABB0 @ =0x02016024\n\
+ adds r6, r0, r1\n\
+_0802AAF8:\n\
+ movs r7, 0\n\
+ adds r1, r5, 0\n\
+ adds r1, 0xD\n\
+ ldr r0, [sp]\n\
+ add r0, r9\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r4, r0, 16\n\
+ adds r0, r4, 0\n\
+ bl IsMoveUnchoosable\n\
+ lsls r0, 24\n\
+ adds r1, r5, 0x1\n\
+ cmp r0, 0\n\
+ bne _0802AB4E\n\
+ ldr r0, _0802ABB4 @ =sUnknown_081FACFE\n\
+ ldrh r2, [r0]\n\
+ adds r3, r0, 0\n\
+ cmp r2, r8\n\
+ beq _0802AB42\n\
+ cmp r4, r2\n\
+ beq _0802AB38\n\
+ ldr r5, _0802ABAC @ =0x0000ffff\n\
+ adds r2, r3, 0\n\
+_0802AB2A:\n\
+ adds r2, 0x2\n\
+ adds r7, 0x1\n\
+ ldrh r0, [r2]\n\
+ cmp r0, r5\n\
+ beq _0802AB42\n\
+ cmp r4, r0\n\
+ bne _0802AB2A\n\
+_0802AB38:\n\
+ lsls r0, r7, 1\n\
+ adds r0, r3\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r8\n\
+ bne _0802AB4E\n\
+_0802AB42:\n\
+ cmp r4, 0\n\
+ beq _0802AB4E\n\
+ strh r4, [r6]\n\
+ adds r6, 0x2\n\
+ movs r0, 0x1\n\
+ add r10, r0\n\
+_0802AB4E:\n\
+ adds r5, r1, 0\n\
+ cmp r5, 0x3\n\
+ ble _0802AAF8\n\
+_0802AB54:\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r2, 0x5\n\
+ ble _0802AAAE\n\
+ mov r1, r10\n\
+ cmp r1, 0\n\
+ beq _0802ABCC\n\
+ ldr r2, _0802ABB8 @ =gHitMarker\n\
+ ldr r0, [r2]\n\
+ ldr r1, _0802ABBC @ =0xfffffbff\n\
+ ands r0, r1\n\
+ str r0, [r2]\n\
+ ldr r4, _0802ABC0 @ =gRandomMove\n\
+ bl Random\n\
+ movs r1, 0xFF\n\
+ ands r1, r0\n\
+ mov r0, r10\n\
+ muls r0, r1\n\
+ asrs r0, 8\n\
+ lsls r0, 1\n\
+ ldr r1, _0802ABB0 @ =0x02016024\n\
+ adds r0, r1\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r4]\n\
+ ldrh r0, [r4]\n\
+ movs r1, 0\n\
+ bl GetMoveTarget\n\
+ ldr r1, _0802ABC4 @ =gBankTarget\n\
+ strb r0, [r1]\n\
+ ldr r1, _0802ABC8 @ =gBattlescriptCurrInstr\n\
+ ldr r0, [r1]\n\
+ adds r0, 0x5\n\
+ str r0, [r1]\n\
+ b _0802ABE6\n\
+ .align 2, 0\n\
+_0802AB9C: .4byte gBankAttacker\n\
+_0802ABA0: .4byte gPlayerParty\n\
+_0802ABA4: .4byte gEnemyParty\n\
+_0802ABA8: .4byte gBattlePartyID\n\
+_0802ABAC: .4byte 0x0000ffff\n\
+_0802ABB0: .4byte 0x02016024\n\
+_0802ABB4: .4byte sUnknown_081FACFE\n\
+_0802ABB8: .4byte gHitMarker\n\
+_0802ABBC: .4byte 0xfffffbff\n\
+_0802ABC0: .4byte gRandomMove\n\
+_0802ABC4: .4byte gBankTarget\n\
+_0802ABC8: .4byte gBattlescriptCurrInstr\n\
+_0802ABCC:\n\
+ ldr r3, _0802ABF8 @ =gBattlescriptCurrInstr\n\
+ ldr r2, [r3]\n\
+ ldrb r1, [r2, 0x1]\n\
+ ldrb r0, [r2, 0x2]\n\
+ lsls r0, 8\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x3]\n\
+ lsls r0, 16\n\
+ orrs r1, r0\n\
+ ldrb r0, [r2, 0x4]\n\
+ lsls r0, 24\n\
+ orrs r1, r0\n\
+ str r1, [r3]\n\
+_0802ABE6:\n\
+ add sp, 0x8\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\
+_0802ABF8: .4byte gBattlescriptCurrInstr\n\
+ .syntax divided");
+}
+
+#endif // NONMATCHING
+
+static void atkDF_setmagiccoat(void)
+{
+ gBankTarget = gBankAttacker;
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ if (gCurrentMoveTurn == gNoOfAllBanks - 1) //last turn
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gProtectStructs[gBankAttacker].bounceMove = 1;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkE0_setstealstatchange(void)
+{
+ gSpecialStatuses[gBankAttacker].flag20 = 1;
+ if (gCurrentMoveTurn == gNoOfAllBanks - 1) //last turn
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ gProtectStructs[gBankAttacker].stealMove = 1;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+static void atkE1_intimidate_string_loader(void)
+{
+ u8 side;
+
+ BATTLE_STRUCT->scriptingActive = ewram[0x160dd];
+ side = GetBankSide(BATTLE_STRUCT->scriptingActive);
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 9;
+ gBattleTextBuff1[2] = gBattleMons[BATTLE_STRUCT->scriptingActive].ability;
+ gBattleTextBuff1[3] = 0xFF;
+
+ for (;gBankTarget < gNoOfAllBanks; gBankTarget++)
+ {
+ if (GetBankSide(gBankTarget) == side)
+ continue;
+ if (!(gAbsentBankFlags & gBitTable[gBankTarget]))
+ break;
+ }
+
+ if (gBankTarget >= gNoOfAllBanks)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ gBattlescriptCurrInstr += 5;
+}
+
+static void atkE2_switchout_abilities(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ switch (gBattleMons[gActiveBank].ability)
+ {
+ case ABILITY_NATURAL_CURE:
+ gBattleMons[gActiveBank].status1 = 0;
+ EmitSetAttributes(0, REQUEST_STATUS_BATTLE, gBitTable[ewram[gActiveBank + 0x16064]], 4, &gBattleMons[gActiveBank].status1);
+ MarkBufferBankForExecution(gActiveBank);
+ break;
+ }
+ gBattlescriptCurrInstr += 2;
+}
+
+static void atkE3_jumpiffainted(void)
+{
+ gActiveBank = GetBattleBank(BSScriptRead8(gBattlescriptCurrInstr + 1));
+ if (gBattleMons[gActiveBank].hp == 0)
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 2);
+ else
+ gBattlescriptCurrInstr += 6;
+}
+
+static void atkE4_getsecretpowereffect(void)
+{
+ switch (gBattleTerrain)
+ {
+ case BATTLE_TERRAIN_GRASS:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 2;
+ break;
+ case BATTLE_TERRAIN_LONG_GRASS:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 1;
+ break;
+ case BATTLE_TERRAIN_SAND:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 27;
+ break;
+ case BATTLE_TERRAIN_UNDERWATER:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 23;
+ break;
+ case BATTLE_TERRAIN_WATER:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 22;
+ break;
+ case BATTLE_TERRAIN_POND:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 24;
+ break;
+ case BATTLE_TERRAIN_MOUNTAIN:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 7;
+ break;
+ case BATTLE_TERRAIN_CAVE:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 8;
+ break;
+ default:
+ gBattleCommunication[MOVE_EFFECT_BYTE] = 5;
+ break;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkE5_pickup(void)
+{
+ int i;
+ for (i = 0; i < 6; i++)
+ {
+ u16 species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ u16 held_item = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
+ u8 ability;
+ if (GetMonData(&gPlayerParty[i], MON_DATA_ALT_ABILITY))
+ ability = gBaseStats[species].ability2;
+ else
+ ability = gBaseStats[species].ability1;
+
+ if (ability == ABILITY_PICKUP && species != 0 && species != SPECIES_EGG && held_item == 0 && (Random() % 10) == 0)
+ {
+ s32 chance = Random() % 100;
+ s32 j;
+ for (j = 0; j < 18; j += 2)
+ {
+ if (sPickupItems[j + 1] > chance)
+ break;
+ }
+ SetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM, (const void*) &sPickupItems[j]);
+ }
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkE6_castform_change_animation(void)
+{
+ gActiveBank = BATTLE_STRUCT->scriptingActive;
+ if (gBattleMons[gActiveBank].status2 & STATUS2_SUBSTITUTE)
+ BATTLE_STRUCT->castformToChangeInto |= 0x80;
+ EmitBattleAnimation(0, 0, BATTLE_STRUCT->castformToChangeInto);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr++;
+}
+
+static void atkE7_castform_data_change(void)
+{
+ u8 form;
+ gBattlescriptCurrInstr++;
+ form = CastformDataTypeChange(BATTLE_STRUCT->scriptingActive);
+ if (form)
+ {
+ b_push_move_exec(BattleScript_CastformChange);
+ BATTLE_STRUCT->castformToChangeInto = form - 1;
+ }
+}
+
+static void atkE8_settypebasedhalvers(void) //water/mud sport
+{
+ bool8 worked = FALSE;
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_MUD_SPORT)
+ {
+ if (!(gStatuses3[gBankAttacker] & STATUS3_MUDSPORT))
+ {
+ gStatuses3[gBankAttacker] |= STATUS3_MUDSPORT;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ worked = TRUE;
+ }
+ }
+ else //water sport
+ {
+ if (!(gStatuses3[gBankAttacker] & STATUS3_WATERSPORT))
+ {
+ gStatuses3[gBankAttacker] |= STATUS3_WATERSPORT;
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ worked = TRUE;
+ }
+ }
+ if (worked)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkE9_setweatherballtype(void)
+{
+ if (WEATHER_HAS_EFFECT)
+ {
+ if ((u8)(gBattleWeather))
+ BATTLE_STRUCT->dmgMultiplier = 2;
+ if (gBattleWeather & WEATHER_RAIN_ANY)
+ BATTLE_STRUCT->dynamicMoveType = TYPE_WATER | 0x80;
+ else if (gBattleWeather & WEATHER_SANDSTORM_ANY)
+ BATTLE_STRUCT->dynamicMoveType = TYPE_ROCK | 0x80;
+ else if (gBattleWeather & WEATHER_SUN_ANY)
+ BATTLE_STRUCT->dynamicMoveType = TYPE_FIRE | 0x80;
+ else if (gBattleWeather & WEATHER_HAIL)
+ BATTLE_STRUCT->dynamicMoveType = TYPE_ICE | 0x80;
+ else
+ BATTLE_STRUCT->dynamicMoveType = TYPE_NORMAL | 0x80;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+static void atkEA_recycleitem(void)
+{
+ u16* used_item;
+ gActiveBank = gBankAttacker;
+ used_item = USED_HELD_ITEM(gActiveBank);
+ if (*used_item && gBattleMons[gActiveBank].item == 0)
+ {
+ gLastUsedItem = *used_item;
+ *used_item = 0;
+ gBattleMons[gActiveBank].item = gLastUsedItem;
+ EmitSetAttributes(0, REQUEST_HELDITEM_BATTLE, 0, 2, &gBattleMons[gActiveBank].item);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkEB_settypetoterrain(void)
+{
+ if (gBattleMons[gBankAttacker].type1 != sTerrainToType[gBattleTerrain] && gBattleMons[gBankAttacker].type2 != sTerrainToType[gBattleTerrain])
+ {
+ gBattleMons[gBankAttacker].type1 = sTerrainToType[gBattleTerrain];
+ gBattleMons[gBankAttacker].type2 = sTerrainToType[gBattleTerrain];
+ gBattleTextBuff1[0] = 0xFD;
+ gBattleTextBuff1[1] = 3;
+ gBattleTextBuff1[2] = sTerrainToType[gBattleTerrain];
+ gBattleTextBuff1[3] = 0xFF;
+ gBattlescriptCurrInstr += 5;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkEC_pursuit_sth(void)
+{
+ gActiveBank = GetBankByPlayerAI(GetBankIdentity(gBankAttacker) ^ 2);
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE && !(gAbsentBankFlags & gBitTable[gActiveBank]) && gActionForBanks[gActiveBank] == 0 && gChosenMovesByBanks[gActiveBank] == MOVE_PURSUIT)
+ {
+ gUnknown_02024A76[gActiveBank] = 11;
+ gCurrentMove = MOVE_PURSUIT;
+ gBattlescriptCurrInstr += 5;
+ BATTLE_STRUCT->animTurn = 1;
+ BATTLE_STRUCT->unk160A7 = gBankAttacker;
+ gBankAttacker = gActiveBank;
+ }
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+}
+
+static void atkED_802B4B4(void)
+{
+ gEffectBank = gBankAttacker;
+ if (gBankAttacker == gBankTarget)
+ gBankAttacker = gBankTarget = BATTLE_STRUCT->scriptingActive;
+ else
+ gBankTarget = BATTLE_STRUCT->scriptingActive;
+ BATTLE_STRUCT->scriptingActive = gEffectBank;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkEE_removelightscreenreflect(void) //brick break
+{
+ u8 side = GetBankSide(gBankAttacker) ^ 1;
+ if (gSideTimer[side].reflectTimer || gSideTimer[side].lightscreenTimer)
+ {
+ gSideAffecting[side] &= ~(SIDE_STATUS_REFLECT);
+ gSideAffecting[side] &= ~(SIDE_STATUS_LIGHTSCREEN);
+ gSideTimer[side].reflectTimer = 0;
+ gSideTimer[side].lightscreenTimer = 0;
+ BATTLE_STRUCT->animTurn = 1;
+ BATTLE_STRUCT->animTargetsHit = 1;
+ }
+ else
+ {
+ BATTLE_STRUCT->animTurn = 0;
+ BATTLE_STRUCT->animTargetsHit = 0;
+ }
+ gBattlescriptCurrInstr++;
+}
+
+void atkEF_pokeball_catch_calculation(void)
+{
+ u8 ball_multiplier = 0;
+ if (gBattleExecBuffer)
+ return;
+
+ gActiveBank = gBankAttacker;
+ gBankTarget = gBankAttacker ^ 1;
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ EmitBallThrow(0, 5);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr = BattleScript_TrainerBallBlock;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ {
+ EmitBallThrow(0, 4);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr = BattleScript_WallyBallThrow;
+ }
+ else
+ {
+ u32 odds;
+ u8 catch_rate;
+ if (gLastUsedItem == ITEM_SAFARI_BALL)
+ catch_rate = BATTLE_STRUCT->unk16089 * 1275 / 100; //correct the name to safariFleeRate
+ else
+ catch_rate = gBaseStats[gBattleMons[gBankTarget].species].catchRate;
+ if (gLastUsedItem > 5)
+ {
+ switch (gLastUsedItem)
+ {
+ case ITEM_NET_BALL:
+ if (gBattleMons[gBankTarget].type1 == TYPE_WATER || gBattleMons[gBankTarget].type2 == TYPE_WATER || gBattleMons[gBankTarget].type1 == TYPE_BUG || gBattleMons[gBankTarget].type2 == TYPE_BUG)
+ ball_multiplier = 30;
+ else
+ ball_multiplier = 10;
+ break;
+ case ITEM_DIVE_BALL:
+ if (Overworld_GetMapTypeOfSaveblockLocation() == 5)
+ ball_multiplier = 35;
+ else
+ ball_multiplier = 10;
+ break;
+ case ITEM_NEST_BALL:
+ if (gBattleMons[gBankTarget].level <= 39)
+ {
+ ball_multiplier = 40 - gBattleMons[gBankTarget].level;
+ if (ball_multiplier <= 9)
+ ball_multiplier = 10;
+ }
+ else
+ ball_multiplier = 10;
+ break;
+ case ITEM_REPEAT_BALL:
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1))
+ ball_multiplier = 30;
+ else
+ ball_multiplier = 10;
+ break;
+ case ITEM_TIMER_BALL:
+ ball_multiplier = gBattleResults.battleTurnCounter + 10;
+ if (ball_multiplier > 40)
+ ball_multiplier = 40;
+ break;
+ case ITEM_LUXURY_BALL:
+ case ITEM_PREMIER_BALL:
+ ball_multiplier = 10;
+ break;
+ }
+ }
+ else
+ ball_multiplier = sBallCatchBonuses[gLastUsedItem - 2];
+
+ odds = (catch_rate * ball_multiplier / 10) * (gBattleMons[gBankTarget].maxHP * 3 - gBattleMons[gBankTarget].hp * 2) / (3 * gBattleMons[gBankTarget].maxHP);
+ if (gBattleMons[gBankTarget].status1 & (STATUS_SLEEP | STATUS_FREEZE))
+ odds *= 2;
+ if (gBattleMons[gBankTarget].status1 & (STATUS_POISON | STATUS_BURN | STATUS_PARALYSIS /*| STATUS_TOXIC_POISON */)) //nice one gf
+ odds = (odds * 15) / 10;
+
+ if (gLastUsedItem != ITEM_SAFARI_BALL)
+ {
+ if (gLastUsedItem == ITEM_MASTER_BALL)
+ {
+ gBattleResults.unk5_1 = 1;
+ }
+ else
+ {
+ if (gBattleResults.unk36[gLastUsedItem - ITEM_ULTRA_BALL] < 0xFF)
+ gBattleResults.unk36[gLastUsedItem - ITEM_ULTRA_BALL]++;
+ }
+ }
+ if (odds > 254) //poke caught
+ {
+ EmitBallThrow(0, 4);
+ MarkBufferBankForExecution(gActiveBank);
+ gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
+ SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem);
+ if (CalculatePlayerPartyCount() == 6)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else //poke may be caught, calculate shakes
+ {
+ u8 shakes;
+ odds = Sqrt(Sqrt(16711680 / odds));
+ odds = 1048560 / odds;
+ for (shakes = 0; shakes < 4 && Random() < odds; shakes++) {}
+ if (gLastUsedItem == ITEM_MASTER_BALL)
+ shakes = 4; //why calculate the shakes before that check?
+ EmitBallThrow(0, shakes);
+ MarkBufferBankForExecution(gActiveBank);
+ if (shakes == 4) //poke caught, copy of the code above
+ {
+ gBattlescriptCurrInstr = BattleScript_SuccessBallThrow;
+ SetMonData(&gEnemyParty[gBattlePartyID[gBankTarget]], MON_DATA_POKEBALL, (const void*) &gLastUsedItem);
+ if (CalculatePlayerPartyCount() == 6)
+ gBattleCommunication[MULTISTRING_CHOOSER] = 0;
+ else
+ gBattleCommunication[MULTISTRING_CHOOSER] = 1;
+ }
+ else //rip
+ {
+ gBattleCommunication[MULTISTRING_CHOOSER] = shakes;
+ gBattlescriptCurrInstr = BattleScript_ShakeBallThrow;
+ }
+ }
+ }
+}
+
+static void atkF0_copy_caught_poke(void)
+{
+ GiveMonToPlayer(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]);
+ gBattleResults.caughtPoke = gBattleMons[gBankAttacker ^ 1].species;
+ GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, gBattleResults.caughtNick);
+ gBattlescriptCurrInstr++;
+}
+
+static void atkF1_setpoke_as_caught(void)
+{
+ if (GetSetPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), 1))
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ else
+ {
+ 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
+ gSaveBlock2.pokedex.spindaPersonality = gBattleMons[gBankTarget].personality;
+ gBattlescriptCurrInstr += 5;
+ }
+}
+
+extern const u32 gBattleTerrainTiles_Building[];
+extern const u32 gBattleTerrainTilemap_Building[];
+extern const u32 gBattleTerrainPalette_BattleTower[];
+
+static void atkF2_display_dex_info(void)
+{
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gBattleCommunication[0]++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ gBattleCommunication[1] = sub_809070C(SpeciesToNationalPokedexNum(gBattleMons[gBankTarget].species), gBattleMons[gBankTarget].otId, gBattleMons[gBankTarget].personality);
+ gBattleCommunication[0]++;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active && gMain.callback2 == sub_800F808 && !gTasks[gBattleCommunication[1]].isActive)
+ {
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(0x06008000));
+ LZDecompressVram(gBattleTerrainTilemap_Building, (void*)(0x0600d000));
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ REG_BG3CNT = 0x5a0b;
+ gUnknown_030041B0 = 0x100;
+ BeginNormalPaletteFade(0xfffc, 0, 0x10, 0, 0);
+ gBattleCommunication[0]++;
+ }
+ break;
+ case 3:
+ if (!gPaletteFade.active)
+ gBattlescriptCurrInstr++;
+ break;
+ }
+}
+
+__attribute__((naked))
+void sub_802BBD4(u8 r0, u8 r1, u8 r2, u8 r3, u8 sp0)
+{
+ 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\
+ ldr r4, [sp, 0x20]\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ mov r12, r1\n\
+ lsls r2, 24\n\
+ lsrs r5, r2, 24\n\
+ lsls r3, 24\n\
+ lsrs r7, r3, 24\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ mov r8, r4\n\
+ mov r2, r12\n\
+ cmp r2, r7\n\
+ bgt _0802BC5A\n\
+ lsls r1, r6, 1\n\
+ ldr r0, _0802BC20 @ =0x0600c000\n\
+ adds r1, r0\n\
+ mov r9, r1\n\
+_0802BC06:\n\
+ adds r1, r6, 0\n\
+ adds r0, r2, 0x1\n\
+ mov r10, r0\n\
+ cmp r1, r5\n\
+ bgt _0802BC54\n\
+ lsls r0, r2, 6\n\
+ mov r4, r9\n\
+ adds r3, r4, r0\n\
+_0802BC16:\n\
+ cmp r2, r12\n\
+ bne _0802BC28\n\
+ ldr r0, _0802BC24 @ =0x00001022\n\
+ b _0802BC36\n\
+ .align 2, 0\n\
+_0802BC20: .4byte 0x0600c000\n\
+_0802BC24: .4byte 0x00001022\n\
+_0802BC28:\n\
+ cmp r2, r7\n\
+ bne _0802BC34\n\
+ ldr r0, _0802BC30 @ =0x00001028\n\
+ b _0802BC36\n\
+ .align 2, 0\n\
+_0802BC30: .4byte 0x00001028\n\
+_0802BC34:\n\
+ ldr r0, _0802BC68 @ =0x00001025\n\
+_0802BC36:\n\
+ cmp r1, r6\n\
+ beq _0802BC42\n\
+ adds r0, 0x1\n\
+ cmp r1, r5\n\
+ bne _0802BC42\n\
+ adds r0, 0x1\n\
+_0802BC42:\n\
+ mov r4, r8\n\
+ cmp r4, 0\n\
+ beq _0802BC4A\n\
+ movs r0, 0\n\
+_0802BC4A:\n\
+ strh r0, [r3]\n\
+ adds r3, 0x2\n\
+ adds r1, 0x1\n\
+ cmp r1, r5\n\
+ ble _0802BC16\n\
+_0802BC54:\n\
+ mov r2, r10\n\
+ cmp r2, r7\n\
+ ble _0802BC06\n\
+_0802BC5A:\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\
+_0802BC68: .4byte 0x00001025\n\
+ .syntax divided");
+}
+
+void sub_802BC6C(void)
+{
+ sub_814A880(0xC8, ((gBattleCommunication[1] << 28) + 1207959552) >> 24); //what could that be?
+}
+
+void nullsub_6(void)
+{
+ return;
+}
+
+static void atkF3_nickname_caught_poke(void)
+{
+ switch (gBattleCommunication[0])
+ {
+ case 0:
+ sub_8023A80();
+ gBattleCommunication[0]++;
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ break;
+ case 1:
+ if (gMain.newKeys & DPAD_UP && gBattleCommunication[1] != 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 0;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & DPAD_DOWN && gBattleCommunication[1] == 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ gBattleCommunication[1] = 1;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gBattleCommunication[1] == 0)
+ {
+ gBattleCommunication[0]++;
+ BeginFastPaletteFade(3);
+ }
+ else
+ gBattleCommunication[0] = 4;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBattleCommunication[0] = 4;
+ }
+ break;
+ case 2:
+ if (!gPaletteFade.active)
+ {
+ GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick);
+ DoNamingScreen(2, BATTLE_STRUCT->caughtNick, GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_SPECIES), GetMonGender(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]]), GetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_PERSONALITY, 0), sub_800F808);
+ gBattleCommunication[0]++;
+ }
+ break;
+ case 3:
+ if (gMain.callback2 == sub_800F808 && !gPaletteFade.active )
+ {
+ SetMonData(&gEnemyParty[gBattlePartyID[gBankAttacker ^ 1]], MON_DATA_NICKNAME, BATTLE_STRUCT->caughtNick);
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ }
+ break;
+ case 4:
+ if (CalculatePlayerPartyCount() == 6)
+ gBattlescriptCurrInstr += 5;
+ else
+ gBattlescriptCurrInstr = BSScriptReadPtr(gBattlescriptCurrInstr + 1);
+ break;
+ }
+}
+
+static void atkF4_802BEF0(void)
+{
+ gBattleMons[gBankAttacker].hp -= gBattleMoveDamage;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkF5_removeattackerstatus1(void)
+{
+ gBattleMons[gBankAttacker].status1 = 0;
+ gBattlescriptCurrInstr++;
+}
+
+static void atkF6_802BF48(void)
+{
+ gFightStateTracker = 0xC;
+}
+
+static void atkF7_802BF54(void)
+{
+ gFightStateTracker = 0xC;
+ gCurrentMoveTurn = gNoOfAllBanks;
+}
diff --git a/src/battle_7.c b/src/battle/battle_7.c
index a93237608..ad96510cf 100644
--- a/src/battle_7.c
+++ b/src/battle/battle_7.c
@@ -31,7 +31,6 @@ struct Struct2019348
extern u8 gBattleBufferA[][0x200];
extern u8 gActiveBank;
-extern u32 gBattleExecBuffer;
extern u8 gNoOfAllBanks;
extern u16 gBattlePartyID[];
extern u8 gBanksBySide[];
@@ -49,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[];
@@ -63,7 +62,6 @@ extern const u8 gSubstituteDollGfx[];
extern const u8 gSubstituteDollPal[];
extern const struct CompressedSpriteSheet gUnknown_081FAF24;
extern const struct SpriteTemplate gSpriteTemplate_81FAF34;
-extern void (*const gOpponentBufferCommands[])(void);
extern const struct CompressedSpriteSheet gUnknown_0820A47C;
extern const struct CompressedSpriteSheet gUnknown_0820A484;
extern const struct CompressedSpriteSheet gUnknown_0820A48C[];
@@ -80,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);
@@ -96,9 +94,6 @@ void sub_80324E0(u8 a);
void sub_80327CC(void);
void sub_8032978(struct Sprite *);
void sub_80328A4(struct Sprite *);
-void OpponentBufferRunCommand(void);
-void sub_80332D0(void);
-void OpponentBufferExecCompleted(void);
void sub_80312F0(struct Sprite *sprite)
{
@@ -182,16 +177,16 @@ bool8 move_anim_start_t3(u8 a, u8 b, u8 c, u8 d, u16 e)
gBattleMonForms[a] = e & 0x7F;
return TRUE;
}
- if (ewram17800[a].unk0_2 && sub_803163C(d) == 0)
+ if (ewram17800[a].substituteSprite && sub_803163C(d) == 0)
return TRUE;
- if (ewram17800[a].unk0_2 && d == 2 && gSprites[gObjectBankIDs[a]].invisible)
+ if (ewram17800[a].substituteSprite && d == 2 && gSprites[gObjectBankIDs[a]].invisible)
{
refresh_graphics_maybe(a, 1, gObjectBankIDs[a]);
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);
@@ -230,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;
@@ -273,7 +268,7 @@ bool8 mplay_80342A4(u8 a)
return TRUE;
}
-void sub_8031794(struct Pokemon *pkmn, u8 b)
+void BattleLoadOpponentMonSprite(struct Pokemon *pkmn, u8 b)
{
u32 personalityValue;
u16 species;
@@ -284,14 +279,14 @@ void sub_8031794(struct Pokemon *pkmn, u8 b)
const u8 *lzPaletteData;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
- if (ewram17800[b].unk2 == 0)
+ if (ewram17800[b].transformedSpecies == 0)
{
species = GetMonData(pkmn, MON_DATA_SPECIES);
r7 = personalityValue;
}
else
{
- species = ewram17800[b].unk2;
+ species = ewram17800[b].transformedSpecies;
r7 = gPID_perBank[b];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
@@ -305,27 +300,27 @@ void sub_8031794(struct Pokemon *pkmn, u8 b)
species,
r7);
paletteOffset = 0x100 + b * 16;
- if (ewram17800[b].unk2 == 0)
- lzPaletteData = pokemon_get_pal(pkmn);
+ if (ewram17800[b].transformedSpecies == 0)
+ 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].unk2 != 0)
+ if (ewram17800[b].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
}
}
-void sub_80318FC(struct Pokemon *pkmn, u8 b)
+void BattleLoadPlayerMonSprite(struct Pokemon *pkmn, u8 b)
{
u32 personalityValue;
u16 species;
@@ -336,14 +331,14 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b)
const u8 *lzPaletteData;
personalityValue = GetMonData(pkmn, MON_DATA_PERSONALITY);
- if (ewram17800[b].unk2 == 0)
+ if (ewram17800[b].transformedSpecies == 0)
{
species = GetMonData(pkmn, MON_DATA_SPECIES);
r7 = personalityValue;
}
else
{
- species = ewram17800[b].unk2;
+ species = ewram17800[b].transformedSpecies;
r7 = gPID_perBank[b];
}
otId = GetMonData(pkmn, MON_DATA_OT_ID);
@@ -357,20 +352,20 @@ void sub_80318FC(struct Pokemon *pkmn, u8 b)
species,
r7);
paletteOffset = 0x100 + b * 16;
- if (ewram17800[b].unk2 == 0)
- lzPaletteData = pokemon_get_pal(pkmn);
+ if (ewram17800[b].transformedSpecies == 0)
+ 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].unk2 != 0)
+ if (ewram17800[b].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
@@ -405,7 +400,7 @@ void sub_8031A6C(u16 a, u8 b)
LoadCompressedObjectPalette(&gTrainerFrontPicPaletteTable[a]);
}
-void sub_8031AF4(u16 a, u8 b)
+void LoadPlayerTrainerBankSprite(u16 a, u8 b)
{
u8 status;
@@ -511,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)
@@ -607,12 +602,12 @@ void sub_8031F24(void)
s32 i;
for (i = 0; i < gNoOfAllBanks; i++)
- ewram17800[i].unk0_0 = gSprites[gObjectBankIDs[i]].invisible;
+ ewram17800[i].invisible = gSprites[gObjectBankIDs[i]].invisible;
}
void sub_8031F88(u8 a)
{
- ewram17800[a].unk0_0 = gSprites[gObjectBankIDs[a]].invisible;
+ ewram17800[a].invisible = gSprites[gObjectBankIDs[a]].invisible;
}
void sub_8031FC4(u8 a, u8 b, bool8 c)
@@ -630,7 +625,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
paletteOffset = 0x100 + a * 16;
LoadPalette(ewram + 0x16400 + ewram17840.unk0 * 32, paletteOffset, 32);
gBattleMonForms[a] = ewram17840.unk0;
- if (ewram17800[a].unk2 != 0)
+ if (ewram17800[a].transformedSpecies != 0)
{
BlendPalette(paletteOffset, 16, 6, 0x7FFF);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
@@ -695,21 +690,21 @@ 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);
CpuCopy32(gPlttBufferFaded + paletteOffset, gPlttBufferUnfaded + paletteOffset, 32);
if (!IsContest())
{
- ewram17800[a].unk2 = species;
+ ewram17800[a].transformedSpecies = species;
gBattleMonForms[a] = gBattleMonForms[b];
}
gSprites[gObjectBankIDs[a]].pos1.y = sub_8077F68(a);
@@ -717,7 +712,7 @@ void sub_8031FC4(u8 a, u8 b, bool8 c)
}
}
-void sub_8032350(u8 a, u8 b)
+void BattleLoadSubstituteSprite(u8 a, u8 b)
{
u8 r4;
u16 foo;
@@ -750,16 +745,16 @@ void sub_8032350(u8 a, u8 b)
if (!IsContest())
{
if (GetBankSide(a) != 0)
- sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
else
- sub_80318FC(&gPlayerParty[gBattlePartyID[a]], a);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[a]], a);
}
}
}
void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId)
{
- sub_8032350(a, b);
+ BattleLoadSubstituteSprite(a, b);
StartSpriteAnim(&gSprites[spriteId], gBattleMonForms[a]);
if (b == 0)
gSprites[spriteId].pos1.y = sub_8077F7C(a);
@@ -770,12 +765,12 @@ void refresh_graphics_maybe(u8 a, u8 b, u8 spriteId)
void sub_80324BC(u8 a, u16 b)
{
if (b == 0xA4)
- ewram17800[a].unk0_2 = 1;
+ ewram17800[a].substituteSprite = 1;
}
void sub_80324E0(u8 a)
{
- ewram17800[a].unk0_2 = 0;
+ ewram17800[a].substituteSprite = 0;
}
void sub_80324F8(struct Pokemon *pkmn, u8 b)
@@ -808,7 +803,7 @@ void sub_80324F8(struct Pokemon *pkmn, u8 b)
}
}
-void sub_80325B8(void)
+void BattleMusicStop(void)
{
u8 r4 = GetBankByPlayerAI(0);
@@ -851,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)
@@ -889,16 +884,16 @@ 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;
}
if (gAnimScriptActive || r7->invisible)
invisible = TRUE;
- else if (ewram17800[r4].unk2 != 0 && gEnemyMonElevation[ewram17800[r4].unk2] == 0)
+ else if (ewram17800[r4].transformedSpecies != 0 && gEnemyMonElevation[ewram17800[r4].transformedSpecies] == 0)
invisible = TRUE;
- if (ewram17800[r4].unk0_2)
+ if (ewram17800[r4].substituteSprite)
invisible = TRUE;
sprite->pos1.x = r7->pos1.x;
sprite->pos2.x = r7->pos2.x;
@@ -914,8 +909,8 @@ void sub_8032984(u8 a, u16 b)
{
if (GetBankSide(a) != 0)
{
- if (ewram17800[a].unk2 != 0)
- b = ewram17800[a].unk2;
+ if (ewram17800[a].transformedSpecies != 0)
+ b = ewram17800[a].transformedSpecies;
if (gEnemyMonElevation[b] != 0)
gSprites[ewram17810[a].unk7].callback = sub_80328A4;
else
@@ -953,283 +948,8 @@ void sub_8032A38(void)
void sub_8032AA8(u8 a, u8 b)
{
- ewram17800[a].unk2 = 0;
+ ewram17800[a].transformedSpecies = 0;
gBattleMonForms[a] = 0;
if (b == 0)
sub_80324E0(a);
}
-
-void nullsub_45(void)
-{
-}
-
-void SetBankFuncToOpponentBufferRunCommand(void)
-{
- gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand;
-}
-
-void OpponentBufferRunCommand(void)
-{
- if (gBattleExecBuffer & gBitTable[gActiveBank])
- {
- if (gBattleBufferA[gActiveBank][0] <= 0x38)
- gOpponentBufferCommands[gBattleBufferA[gActiveBank][0]]();
- else
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_8032B4C(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
- OpponentBufferExecCompleted();
-}
-
-// Duplicate of sub_8032B4C
-void sub_8032B84(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
- OpponentBufferExecCompleted();
-}
-
-void sub_8032BBC(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
- {
- sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam);
- gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data5;
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_8032C4C(void)
-{
- if ((--ewram17810[gActiveBank].unk9) == 0xFF)
- {
- ewram17810[gActiveBank].unk9 = 0;
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_8032C88(void)
-{
- bool8 r6 = FALSE;
-
- if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
- {
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
- r6 = TRUE;
- }
- else
- {
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
- && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
- r6 = TRUE;
- }
- if (IsCryPlayingOrClearCrySongs())
- r6 = FALSE;
-
- if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0)
- {
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
- ewram17810[gActiveBank ^ 2].unk0_7 = 0;
- ewram17810[gActiveBank ^ 2].unk1_0 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
- if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- m4aMPlayContinue(&gMPlay_BGM);
- else
- m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
- ewram17810[gActiveBank].unk9 = 3;
- gBattleBankFunc[gActiveBank] = sub_8032C4C;
- }
-}
-
-void sub_8032E2C(void)
-{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7)
- sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]);
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3)
- {
- if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
- {
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
- sub_8045A5C(
- gHealthboxIDs[gActiveBank ^ 2],
- &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]],
- 0);
- sub_804777C(gActiveBank ^ 2);
- sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
- sub_8032984(
- gActiveBank ^ 2,
- GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES));
- }
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
- sub_8045A5C(
- gHealthboxIDs[gActiveBank],
- &gEnemyParty[gBattlePartyID[gActiveBank]],
- 0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- sub_8032984(
- gActiveBank,
- GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
-
- ewram17840.unk9_0 = 0;
- gBattleBankFunc[gActiveBank] = sub_8032C88;
- }
-}
-
-void sub_8033018(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE
- && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
- {
- if (!ewram17810[gActiveBank].unk0_7)
- {
- sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- return;
- }
- if (ewram17810[gActiveBank].unk1_0)
- {
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
- OpponentBufferExecCompleted();
- return;
- }
- }
-}
-
-void sub_80330C8(void)
-{
- s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
-
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- if (r4 != -1)
- sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
- else
- OpponentBufferExecCompleted();
-}
-
-void sub_803311C(void)
-{
- if (!gSprites[gObjectBankIDs[gActiveBank]].inUse)
- {
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_8033160(void)
-{
- if (!ewram17810[gActiveBank].unk0_6)
- {
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
- sub_8032A08(gActiveBank);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_80331D0(void)
-{
- if (gUnknown_03004210.state == 0)
- OpponentBufferExecCompleted();
-}
-
-void bx_blink_t7(void)
-{
- u8 spriteId = gObjectBankIDs[gActiveBank];
-
- if (gSprites[spriteId].data1 == 32)
- {
- gSprites[spriteId].data1 = 0;
- gSprites[spriteId].invisible = FALSE;
- gDoingBattleAnim = 0;
- OpponentBufferExecCompleted();
- }
- else
- {
- if (((u16)gSprites[spriteId].data1 % 4) == 0)
- gSprites[spriteId].invisible ^= 1;
- gSprites[spriteId].data1++;
- }
-}
-
-void sub_8033264(void)
-{
- if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
- {
- if (ewram17800[gActiveBank].unk0_2)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- gBattleBankFunc[gActiveBank] = sub_80332D0;
- }
-}
-
-void sub_80332D0(void)
-{
- if (!ewram17810[gActiveBank].unk0_6)
- {
- CreateTask(c3_0802FDF4, 10);
- OpponentBufferExecCompleted();
- }
-}
-
-void sub_8033308(void)
-{
- if (ewram17810[gActiveBank].unk1_0)
- {
- ewram17810[gActiveBank].unk0_7 = 0;
- ewram17810[gActiveBank].unk1_0 = 0;
- FreeSpriteTilesByTag(0x27F9);
- FreeSpritePaletteByTag(0x27F9);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
- sub_8045A5C(
- gHealthboxIDs[gActiveBank],
- &gEnemyParty[gBattlePartyID[gActiveBank]],
- 0);
- sub_804777C(gActiveBank);
- sub_8043DFC(gHealthboxIDs[gActiveBank]);
- sub_8031F88(gActiveBank);
- gBattleBankFunc[gActiveBank] = sub_8033264;
- }
-}
-
-void sub_80333D4(void)
-{
- if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
- sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
- if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
- && !ewram17810[gActiveBank].unk0_3)
- {
- DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
- sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
- gBattleBankFunc[gActiveBank] = sub_8033308;
- }
-}
-
-void sub_8033494(void)
-{
- if (!ewram17810[gActiveBank].unk0_4)
- OpponentBufferExecCompleted();
-}
-
-void sub_80334C0(void)
-{
- if (!ewram17810[gActiveBank].unk0_5)
- OpponentBufferExecCompleted();
-}
-
-void OpponentBufferExecCompleted(void)
-{
- gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand;
- gBattleExecBuffer &= ~gBitTable[gActiveBank];
-}
diff --git a/src/battle_ai.c b/src/battle/battle_ai.c
index 6f91a104d..1869bbe36 100644
--- a/src/battle_ai.c
+++ b/src/battle/battle_ai.c
@@ -31,6 +31,14 @@ extern u8 gCritMultiplier;
extern u16 gTrainerBattleOpponent;
extern u8 *BattleAIs[];
+enum
+{
+ WEATHER_TYPE_SUN,
+ WEATHER_TYPE_RAIN,
+ WEATHER_TYPE_SANDSTORM,
+ WEATHER_TYPE_HAIL,
+};
+
/*
gAIScriptPtr is a pointer to the next battle AI cmd command to read.
when a command finishes processing, gAIScriptPtr is incremented by
@@ -293,7 +301,7 @@ void BattleAI_SetupAIData(void)
for (i = 0; i < MAX_MON_MOVES; i++)
AI_THINKING_STRUCT->score[i] = 100;
- r7 = sub_8015A98(gActiveBank, 0, 0xFF);
+ r7 = CheckMoveLimitations(gActiveBank, 0, 0xFF);
// probably sets up the moves to consider and ignores non-valid moves such as NO_MOVE or glitch moves.
for (i = 0; i < MAX_MON_MOVES; i++)
@@ -896,7 +904,7 @@ static void BattleAICmd_if_user_cant_damage(void)
static void BattleAICmd_get_turn_count(void)
{
- AI_THINKING_STRUCT->funcResult = gBattleResults.BattleTurnCounter;
+ AI_THINKING_STRUCT->funcResult = gBattleResults.battleTurnCounter;
gAIScriptPtr += 1;
}
@@ -1265,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;
@@ -1273,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;
@@ -1412,8 +1420,8 @@ static void BattleAICmd_get_highest_possible_damage(void)
s32 i;
gDynamicBasePower = 0;
- BATTLE_STRUCT->DynamicMoveType = 0;
- BATTLE_STRUCT->DmgMultiplier = 1;
+ BATTLE_STRUCT->dynamicMoveType = 0;
+ BATTLE_STRUCT->dmgMultiplier = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
AI_THINKING_STRUCT->funcResult = 0;
@@ -1452,8 +1460,8 @@ static void BattleAICmd_if_damage_bonus(void)
u8 damageVar;
gDynamicBasePower = 0;
- BATTLE_STRUCT->DynamicMoveType = 0;
- BATTLE_STRUCT->DmgMultiplier = 1;
+ BATTLE_STRUCT->dynamicMoveType = 0;
+ BATTLE_STRUCT->dmgMultiplier = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
@@ -1562,14 +1570,14 @@ static void BattleAICmd_if_status_not_in_party(void)
static void BattleAICmd_get_weather(void)
{
- if (gBattleWeather & WEATHER_RAINY)
- AI_THINKING_STRUCT->funcResult = WEATHER_RAIN;
- if (gBattleWeather & WEATHER_SANDSTORMY)
- AI_THINKING_STRUCT->funcResult = WEATHER_SANDSTORM;
- if (gBattleWeather & WEATHER_SUNNY)
- AI_THINKING_STRUCT->funcResult = WEATHER_SUN;
- if (gBattleWeather & weather_hail)
- AI_THINKING_STRUCT->funcResult = WEATHER_HAIL;
+ if (gBattleWeather & WEATHER_RAIN_ANY)
+ AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_RAIN;
+ if (gBattleWeather & WEATHER_SANDSTORM_ANY)
+ AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_SANDSTORM;
+ if (gBattleWeather & WEATHER_SUN_ANY)
+ AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_SUN;
+ if (gBattleWeather & WEATHER_HAIL)
+ AI_THINKING_STRUCT->funcResult = WEATHER_TYPE_HAIL;
gAIScriptPtr += 1;
}
@@ -1659,8 +1667,8 @@ static void BattleAICmd_if_can_faint(void)
}
gDynamicBasePower = 0;
- BATTLE_STRUCT->DynamicMoveType = 0;
- BATTLE_STRUCT->DmgMultiplier = 1;
+ BATTLE_STRUCT->dynamicMoveType = 0;
+ BATTLE_STRUCT->dmgMultiplier = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
@@ -1688,8 +1696,8 @@ static void BattleAICmd_if_cant_faint(void)
}
gDynamicBasePower = 0;
- BATTLE_STRUCT->DynamicMoveType = 0;
- BATTLE_STRUCT->DmgMultiplier = 1;
+ BATTLE_STRUCT->dynamicMoveType = 0;
+ BATTLE_STRUCT->dmgMultiplier = 1;
gBattleMoveFlags = 0;
gCritMultiplier = 1;
gCurrentMove = AI_THINKING_STRUCT->moveConsidered;
@@ -1843,7 +1851,7 @@ static void BattleAICmd_if_last_move_did_damage(void)
if (gAIScriptPtr[2] == 0)
{
- if (gDisableStructs[index].DisabledMove == 0)
+ if (gDisableStructs[index].disabledMove == 0)
{
gAIScriptPtr += 7;
return;
@@ -1856,7 +1864,7 @@ static void BattleAICmd_if_last_move_did_damage(void)
gAIScriptPtr += 7;
return;
}
- else if (gDisableStructs[index].EncoredMove != 0)
+ else if (gDisableStructs[index].encoredMove != 0)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 3);
return;
@@ -1869,7 +1877,7 @@ static void BattleAICmd_if_encored(void)
switch (gAIScriptPtr[1])
{
case 0: // _08109348
- if (gDisableStructs[gActiveBank].DisabledMove == AI_THINKING_STRUCT->moveConsidered)
+ if (gDisableStructs[gActiveBank].disabledMove == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -1877,7 +1885,7 @@ static void BattleAICmd_if_encored(void)
gAIScriptPtr += 6;
return;
case 1: // _08109370
- if (gDisableStructs[gActiveBank].EncoredMove == AI_THINKING_STRUCT->moveConsidered)
+ if (gDisableStructs[gActiveBank].encoredMove == AI_THINKING_STRUCT->moveConsidered)
{
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 2);
return;
@@ -1954,7 +1962,7 @@ static void BattleAICmd_is_first_turn(void)
else
index = gBankTarget;
- AI_THINKING_STRUCT->funcResult = gDisableStructs[index].IsFirstTurn;
+ AI_THINKING_STRUCT->funcResult = gDisableStructs[index].isFirstTurn;
gAIScriptPtr += 2;
}
@@ -1968,7 +1976,7 @@ static void BattleAICmd_get_stockpile_count(void)
else
index = gBankTarget;
- AI_THINKING_STRUCT->funcResult = gDisableStructs[index].StockpileCounter;
+ AI_THINKING_STRUCT->funcResult = gDisableStructs[index].stockpileCounter;
gAIScriptPtr += 2;
}
@@ -2025,7 +2033,7 @@ static void BattleAICmd_get_protect_count(void)
else
index = gBankTarget;
- AI_THINKING_STRUCT->funcResult = gDisableStructs[index].ProtectUses;
+ AI_THINKING_STRUCT->funcResult = gDisableStructs[index].protectUses;
gAIScriptPtr += 2;
}
@@ -2104,7 +2112,7 @@ static void BattleAICmd_if_level_compare(void)
static void BattleAICmd_if_taunted(void)
{
- if (gDisableStructs[gBankTarget].taunt != 0)
+ if (gDisableStructs[gBankTarget].tauntTimer1 != 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
@@ -2112,7 +2120,7 @@ static void BattleAICmd_if_taunted(void)
static void BattleAICmd_if_not_taunted(void)
{
- if (gDisableStructs[gBankTarget].taunt == 0)
+ if (gDisableStructs[gBankTarget].tauntTimer1 == 0)
gAIScriptPtr = AIScriptReadPtr(gAIScriptPtr + 1);
else
gAIScriptPtr += 5;
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/battle_anim_807B69C.c b/src/battle/battle_anim_807B69C.c
new file mode 100644
index 000000000..bf3eb7ef1
--- /dev/null
+++ b/src/battle/battle_anim_807B69C.c
@@ -0,0 +1,353 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "blend_palette.h"
+#include "decompress.h"
+#include "palette.h"
+#include "sprite.h"
+#include "task.h"
+#include "trig.h"
+
+extern u8 gBattleAnimBankAttacker;
+extern u8 gBattleAnimBankTarget;
+extern bool8 gAnimScriptActive;
+extern void (*gAnimScriptCallback)(void);
+extern s16 gBattleAnimArgs[];
+extern u8 gBattleAnimBankTarget;
+extern u8 gObjectBankIDs[];
+extern const struct CompressedSpriteSheet gBattleAnimPicTable[];
+extern const struct CompressedSpritePalette gBattleAnimPaletteTable[];
+extern const u8 *const gBattleAnims_StatusConditions[];
+extern const struct OamData gOamData_837E05C;
+extern const struct OamData gOamData_837DF24;
+
+extern u8 sub_8077ABC(u8, u8);
+extern void sub_80E32E0(u8);
+
+
+static const struct Subsprite gSubspriteTable_83931B8[] =
+{
+ {.x = -16, .y = -16, .shape = ST_OAM_SQUARE, .size = 3, .tileOffset = 0, .priority = 2},
+ {.x = -16, .y = 48, .shape = ST_OAM_H_RECTANGLE, .size = 3, .tileOffset = 64, .priority = 2},
+ {.x = 48, .y = -16, .shape = ST_OAM_V_RECTANGLE, .size = 3, .tileOffset = 96, .priority = 2},
+ {.x = 48, .y = 48, .shape = ST_OAM_SQUARE, .size = 2, .tileOffset = 128, .priority = 2},
+};
+
+static const struct SubspriteTable gSubspriteTables_83931D8[] =
+{
+ {ARRAY_COUNT(gSubspriteTable_83931B8), gSubspriteTable_83931B8},
+};
+
+static const struct SpriteTemplate gSpriteTemplate_83931E0 =
+{
+ .tileTag = 10010,
+ .paletteTag = 10010,
+ .oam = &gOamData_837E05C,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy,
+};
+
+static void sub_807B870(struct Sprite *);
+static const struct SpriteTemplate gSpriteTemplate_83931F8 =
+{
+ .tileTag = 10136,
+ .paletteTag = 10136,
+ .oam = &gOamData_837DF24,
+ .anims = gDummySpriteAnimTable,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_807B870,
+};
+
+static void sub_807B7E0(u8);
+static void sub_807B8A4(struct Sprite *);
+static void sub_807B9D8(u8);
+static void sub_807BA24(u8);
+static void sub_807BAD4(u8);
+static void sub_807BB24(u8);
+static void sub_807BDAC(u8);
+
+u8 unref_sub_807B69C(u8 a, u8 b)
+{
+ u8 spriteId1 = gObjectBankIDs[a];
+ u8 taskId = CreateTask(sub_807B7E0, 10);
+ u8 spriteId2;
+ u8 i;
+
+ LoadCompressedObjectPic(&gBattleAnimPicTable[136]);
+ LoadCompressedObjectPalette(&gBattleAnimPaletteTable[136]);
+ gTasks[taskId].data[0] = a;
+ if (b != 0)
+ {
+ gTasks[taskId].data[1] = 0x1F;
+ for (i = 0; i < 10; i++)
+ {
+ spriteId2 = CreateSprite(&gSpriteTemplate_83931F8, gSprites[spriteId1].pos1.x, gSprites[spriteId1].pos1.y + 32, 0);
+ gSprites[spriteId2].data0 = i * 51;
+ gSprites[spriteId2].data1 = -256;
+ gSprites[spriteId2].invisible = TRUE;
+ if (i > 4)
+ gSprites[spriteId2].data6 = 21;
+ }
+ }
+ else
+ {
+ gTasks[taskId].data[1] = 0x7C00;
+ for (i = 0; i < 10; i++)
+ {
+ spriteId2 = CreateSprite(&gSpriteTemplate_83931F8, gSprites[spriteId1].pos1.x, gSprites[spriteId1].pos1.y - 32, 0);
+ gSprites[spriteId2].data0 = i * 51;
+ gSprites[spriteId2].data1 = 256;
+ gSprites[spriteId2].invisible = TRUE;
+ if (i > 4)
+ gSprites[spriteId2].data6 = 21;
+ }
+ }
+ gSprites[spriteId2].data7 = 1;
+ return taskId;
+}
+
+static void sub_807B7E0(u8 taskId)
+{
+ if (gTasks[taskId].data[2] == 2)
+ {
+ gTasks[taskId].data[2] = 0;
+ BlendPalette(0x100 + gTasks[taskId].data[0] * 16, 16, gTasks[taskId].data[4], gTasks[taskId].data[1]);
+ if (gTasks[taskId].data[5] == 0)
+ {
+ gTasks[taskId].data[4]++;
+ if (gTasks[taskId].data[4] > 8)
+ gTasks[taskId].data[5] ^= 1;
+ }
+ else
+ {
+ u16 var = gTasks[taskId].data[4];
+
+ gTasks[taskId].data[4]--;
+ if (gTasks[taskId].data[4] < 0)
+ {
+ gTasks[taskId].data[4] = var;
+ gTasks[taskId].data[5] ^= 1;
+ gTasks[taskId].data[3]++;
+ if (gTasks[taskId].data[3] == 2)
+ DestroyTask(taskId);
+ }
+ }
+ }
+ else
+ {
+ gTasks[taskId].data[2]++;
+ }
+}
+
+static void sub_807B870(struct Sprite *sprite)
+{
+ if (sprite->data6 == 0)
+ {
+ sprite->invisible = FALSE;
+ sprite->callback = sub_807B8A4;
+ sub_807B8A4(sprite);
+ }
+ else
+ {
+ sprite->data6 --;
+ }
+}
+
+static void sub_807B8A4(struct Sprite *sprite)
+{
+ sprite->pos2.x = Cos(sprite->data0, 32);
+ sprite->pos2.y = Sin(sprite->data0, 8);
+ if (sprite->data0 < 128)
+ sprite->subpriority = 29;
+ else
+ sprite->subpriority = 31;
+ sprite->data0 = (sprite->data0 + 8) & 0xFF;
+ sprite->data5 += sprite->data1;
+ sprite->pos2.y += sprite->data5 >> 8;
+ sprite->data2++;
+ if (sprite->data2 == 52)
+ {
+ if (sprite->data7 != 0)
+ DestroySpriteAndFreeResources(sprite);
+ else
+ DestroySprite(sprite);
+ }
+}
+
+void sub_807B920(u8 taskId)
+{
+ s16 x = sub_8077ABC(gBattleAnimBankTarget, 2) - 32;
+ s16 y = sub_8077ABC(gBattleAnimBankTarget, 3) - 36;
+ u8 spriteId;
+
+ if (IsContest())
+ x -= 6;
+ REG_BLDCNT = 0x3F40;
+ REG_BLDALPHA = 0x1000;
+ spriteId = CreateSprite(&gSpriteTemplate_83931E0, x, y, 4);
+ SetSubspriteTables(&gSprites[spriteId], gSubspriteTables_83931D8);
+ gTasks[taskId].data[15] = spriteId;
+ gTasks[taskId].func = sub_807B9D8;
+}
+
+static void sub_807B9D8(u8 taskId)
+{
+ gTasks[taskId].data[1]++;
+ if (gTasks[taskId].data[1] == 10)
+ {
+ gTasks[taskId].func = sub_807BA24;
+ gTasks[taskId].data[1] = 0;
+ }
+ else
+ {
+ u8 var = gTasks[taskId].data[1];
+
+ REG_BLDALPHA = ((16 - var) << 8) | var;
+ }
+}
+
+static void sub_807BA24(u8 taskId)
+{
+ u8 r2 = IndexOfSpritePaletteTag(0x271A);
+
+ if (gTasks[taskId].data[1]++ > 13)
+ {
+ gTasks[taskId].data[2]++;
+ if (gTasks[taskId].data[2] == 3)
+ {
+ u16 temp;
+
+ temp = gPlttBufferFaded[0x100 + r2 * 16 + 13];
+ gPlttBufferFaded[0x100 + r2 * 16 + 13] = gPlttBufferFaded[0x100 + r2 * 16 + 14];
+ gPlttBufferFaded[0x100 + r2 * 16 + 14] = gPlttBufferFaded[0x100 + r2 * 16 + 15];
+ gPlttBufferFaded[0x100 + r2 * 16 + 15] = temp;
+
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3]++;
+ if (gTasks[taskId].data[3] == 3)
+ {
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[1] = 0;
+ gTasks[taskId].data[4]++;
+ if (gTasks[taskId].data[4] == 2)
+ {
+ gTasks[taskId].data[1] = 9;
+ gTasks[taskId].func = sub_807BAD4;
+ }
+ }
+ }
+ }
+}
+
+static void sub_807BAD4(u8 taskId)
+{
+ gTasks[taskId].data[1]--;
+ if (gTasks[taskId].data[1] == -1)
+ {
+ gTasks[taskId].func = sub_807BB24;
+ gTasks[taskId].data[1] = 0;
+ }
+ else
+ {
+ u8 var = gTasks[taskId].data[1];
+
+ REG_BLDALPHA = ((16 - var) << 8) | var;
+ }
+}
+
+static void sub_807BB24(u8 taskId)
+{
+ gTasks[taskId].data[1]++;
+ if (gTasks[taskId].data[1] == 37)
+ {
+ u8 spriteId = gTasks[taskId].data[15];
+
+ FreeSpriteOamMatrix(&gSprites[spriteId]);
+ DestroySprite(&gSprites[spriteId]);
+ }
+ else if (gTasks[taskId].data[1] == 39)
+ {
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ DestroyAnimVisualTask(taskId);
+ }
+}
+
+void sub_807BB88(u8 taskId)
+{
+ s16 r5;
+ s16 r2;
+ s16 r3 = 0;
+
+ switch (ewram17840.unk0)
+ {
+ case 15: r5 = 0; r2 = 0; break;
+ case 16: r5 = 0; r2 = 1; break;
+ case 17: r5 = 0; r2 = 3; break;
+ case 18: r5 = 0; r2 = 5; break;
+ case 19: r5 = 0; r2 = 6; break;
+ case 20: r5 = 0; r2 = 2; break;
+ case 21: r5 = 0; r2 = 4; break;
+ case 22: r5 = 1; r2 = 0; break;
+ case 23: r5 = 1; r2 = 1; break;
+ case 24: r5 = 1; r2 = 3; break;
+ case 25: r5 = 1; r2 = 5; break;
+ case 26: r5 = 1; r2 = 6; break;
+ case 27: r5 = 1; r2 = 2; break;
+ case 28: r5 = 1; r2 = 4; break;
+ case 39: r5 = 0; r2 = 0; r3 = 1; break;
+ case 40: r5 = 0; r2 = 1; r3 = 1; break;
+ case 41: r5 = 0; r2 = 3; r3 = 1; break;
+ case 42: r5 = 0; r2 = 5; r3 = 1; break;
+ case 43: r5 = 0; r2 = 6; r3 = 1; break;
+ case 44: r5 = 0; r2 = 2; r3 = 1; break;
+ case 45: r5 = 0; r2 = 4; r3 = 1; break;
+ case 46: r5 = 1; r2 = 0; r3 = 1; break;
+ case 47: r5 = 1; r2 = 1; r3 = 1; break;
+ case 48: r5 = 1; r2 = 3; r3 = 1; break;
+ case 49: r5 = 1; r2 = 5; r3 = 1; break;
+ case 50: r5 = 1; r2 = 6; r3 = 1; break;
+ case 51: r5 = 1; r2 = 2; r3 = 1; break;
+ case 52: r5 = 1; r2 = 4; r3 = 1; break;
+ case 55: r5 = 0; r2 = 0xFF; r3 = 0; break;
+ case 56: r5 = 0; r2 = 0xFF; r3 = 1; break;
+ case 57: r5 = 1; r2 = 0xFF; r3 = 0; break;
+ case 58: r5 = 1; r2 = 0xFF; r3 = 1; break;
+
+ default:
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+
+ gBattleAnimArgs[0] = r5;
+ gBattleAnimArgs[1] = r2;
+ gBattleAnimArgs[2] = 0;
+ gBattleAnimArgs[3] = 0;
+ gBattleAnimArgs[4] = r3;
+ gTasks[taskId].func = sub_80E32E0;
+ sub_80E32E0(taskId);
+}
+
+void move_anim_start_t2(u8 a, u8 b)
+{
+ u8 taskId;
+
+ gBattleAnimBankAttacker = a;
+ gBattleAnimBankTarget = a;
+ DoMoveAnim(gBattleAnims_StatusConditions, b, 0);
+ taskId = CreateTask(sub_807BDAC, 10);
+ gTasks[taskId].data[0] = a;
+}
+
+static void sub_807BDAC(u8 taskId)
+{
+ gAnimScriptCallback();
+ if (!gAnimScriptActive)
+ {
+ ewram17810[gTasks[taskId].data[0]].unk0_4 = 0;
+ DestroyTask(taskId);
+ }
+}
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/battle_anim_80CA710.c b/src/battle/battle_anim_80CA710.c
new file mode 100644
index 000000000..65ccd7c21
--- /dev/null
+++ b/src/battle/battle_anim_80CA710.c
@@ -0,0 +1,18 @@
+
+// Includes
+#include "global.h"
+
+// Static type declarations
+
+// Static RAM declarations
+
+IWRAM_DATA u32 filler_03000724;
+IWRAM_DATA u16 gUnknown_03000728[4];
+IWRAM_DATA u16 gUnknown_03000730[6];
+IWRAM_DATA u32 filler_0300073c;
+
+// Static ROM declarations
+
+// .rodata
+
+// .text
diff --git a/src/battle_10.c b/src/battle/battle_controller_linkopponent.c
index 0237bab4b..0b6c3b6a1 100644
--- a/src/battle_10.c
+++ b/src/battle/battle_controller_linkopponent.c
@@ -3,6 +3,8 @@
#include "battle_interface.h"
#include "data2.h"
#include "link.h"
+#include "m4a.h"
+#include "main.h"
#include "palette.h"
#include "rom_8077ABC.h"
#include "rom3.h"
@@ -48,11 +50,14 @@ extern struct Window gUnknown_03004210;
extern u16 gUnknown_030042A0;
extern u16 gUnknown_030042A4;
extern u8 gUnknown_0300434C[];
+extern u32 gBattleExecBuffer;
+extern MainCallback gPreBattleCallback1;
+extern struct MusicPlayerInfo gMPlay_BGM;
extern u8 sub_8077F68();
extern u8 sub_8079E90();
extern u8 GetBankIdentity(u8);
-extern void sub_8031794(struct Pokemon *, u8);
+extern void BattleLoadOpponentMonSprite(struct Pokemon *, u8);
extern void sub_8037A74(void);
extern void sub_8032984(u8, u16);
extern void sub_8037E30(void);
@@ -66,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 *);
@@ -94,13 +99,19 @@ 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);
-extern void dp01_tbl4_exec_completed(void);
+extern void LinkOpponentBufferExecCompleted(void);
+extern void sub_8141828();
+extern void sub_804777C();
+
+// this file's functions
u32 dp01_getattr_by_ch1_for_player_pokemon__(u8, u8 *);
+void sub_803752C(void);
+void sub_8037D2C(void);
void sub_8038900(u8);
void sub_8039430(u8, u8);
void sub_8039648(void);
@@ -108,6 +119,454 @@ void sub_8039B64(void);
void sub_803A2C4(u8);
void sub_803A4E0(void);
+void LinkOpponentHandleGetAttributes(void);
+void LinkOpponentHandlecmd1(void);
+void LinkOpponentHandleSetAttributes(void);
+void LinkOpponentHandlecmd3(void);
+void LinkOpponentHandleLoadPokeSprite(void);
+void LinkOpponentHandleSendOutPoke(void);
+void LinkOpponentHandleReturnPokeToBall(void);
+void LinkOpponentHandleTrainerThrow(void);
+void LinkOpponentHandleTrainerSlide(void);
+void LinkOpponentHandleTrainerSlideBack(void);
+void LinkOpponentHandlecmd10(void);
+void LinkOpponentHandlecmd11(void);
+void LinkOpponentHandlecmd12(void);
+void LinkOpponentHandleBallThrow(void);
+void LinkOpponentHandlePuase(void);
+void LinkOpponentHandleMoveAnimation(void);
+void LinkOpponentHandlePrintString(void);
+void LinkOpponentHandlePrintStringPlayerOnly(void);
+void LinkOpponentHandlecmd18(void);
+void LinkOpponentHandlecmd19(void);
+void LinkOpponentHandlecmd20(void);
+void LinkOpponentHandleOpenBag(void);
+void LinkOpponentHandlecmd22(void);
+void LinkOpponentHandlecmd23(void);
+void LinkOpponentHandleHealthBarUpdate(void);
+void LinkOpponentHandleExpBarUpdate(void);
+void LinkOpponentHandleStatusIconUpdate(void);
+void LinkOpponentHandleStatusAnimation(void);
+void LinkOpponentHandleStatusXor(void);
+void LinkOpponentHandlecmd29(void);
+void LinkOpponentHandleDMATransfer(void);
+void LinkOpponentHandlecmd31(void);
+void LinkOpponentHandlecmd32(void);
+void LinkOpponentHandlecmd33(void);
+void LinkOpponentHandlecmd34(void);
+void LinkOpponentHandlecmd35(void);
+void LinkOpponentHandlecmd36(void);
+void LinkOpponentHandlecmd37(void);
+void LinkOpponentHandlecmd38(void);
+void LinkOpponentHandlecmd39(void);
+void LinkOpponentHandlecmd40(void);
+void LinkOpponentHandleHitAnimation(void);
+void LinkOpponentHandlecmd42(void);
+void LinkOpponentHandleEffectivenessSound(void);
+void LinkOpponentHandlecmd44(void);
+void LinkOpponentHandleFaintingCry(void);
+void LinkOpponentHandleIntroSlide(void);
+void LinkOpponentHandleTrainerBallThrow(void);
+void LinkOpponentHandlecmd48(void);
+void LinkOpponentHandlecmd49(void);
+void LinkOpponentHandlecmd50(void);
+void LinkOpponentHandleSpriteInvisibility(void);
+void LinkOpponentHandleBattleAnimation(void);
+void LinkOpponentHandleLinkStandbyMsg(void);
+void LinkOpponentHandleResetActionMoveSelection(void);
+void LinkOpponentHandlecmd55(void);
+void LinkOpponentHandlecmd56(void);
+
+// const data
+
+typedef void (*BattleBufferCmd) (void);
+const BattleBufferCmd gLinkOpponentBufferCommands[] =
+{
+ LinkOpponentHandleGetAttributes,
+ LinkOpponentHandlecmd1,
+ LinkOpponentHandleSetAttributes,
+ LinkOpponentHandlecmd3,
+ LinkOpponentHandleLoadPokeSprite,
+ LinkOpponentHandleSendOutPoke,
+ LinkOpponentHandleReturnPokeToBall,
+ LinkOpponentHandleTrainerThrow,
+ LinkOpponentHandleTrainerSlide,
+ LinkOpponentHandleTrainerSlideBack,
+ LinkOpponentHandlecmd10,
+ LinkOpponentHandlecmd11,
+ LinkOpponentHandlecmd12,
+ LinkOpponentHandleBallThrow,
+ LinkOpponentHandlePuase,
+ LinkOpponentHandleMoveAnimation,
+ LinkOpponentHandlePrintString,
+ LinkOpponentHandlePrintStringPlayerOnly,
+ LinkOpponentHandlecmd18,
+ LinkOpponentHandlecmd19,
+ LinkOpponentHandlecmd20,
+ LinkOpponentHandleOpenBag,
+ LinkOpponentHandlecmd22,
+ LinkOpponentHandlecmd23,
+ LinkOpponentHandleHealthBarUpdate,
+ LinkOpponentHandleExpBarUpdate,
+ LinkOpponentHandleStatusIconUpdate,
+ LinkOpponentHandleStatusAnimation,
+ LinkOpponentHandleStatusXor,
+ LinkOpponentHandlecmd29,
+ LinkOpponentHandleDMATransfer,
+ LinkOpponentHandlecmd31,
+ LinkOpponentHandlecmd32,
+ LinkOpponentHandlecmd33,
+ LinkOpponentHandlecmd34,
+ LinkOpponentHandlecmd35,
+ LinkOpponentHandlecmd36,
+ LinkOpponentHandlecmd37,
+ LinkOpponentHandlecmd38,
+ LinkOpponentHandlecmd39,
+ LinkOpponentHandlecmd40,
+ LinkOpponentHandleHitAnimation,
+ LinkOpponentHandlecmd42,
+ LinkOpponentHandleEffectivenessSound,
+ LinkOpponentHandlecmd44,
+ LinkOpponentHandleFaintingCry,
+ LinkOpponentHandleIntroSlide,
+ LinkOpponentHandleTrainerBallThrow,
+ LinkOpponentHandlecmd48,
+ LinkOpponentHandlecmd49,
+ LinkOpponentHandlecmd50,
+ LinkOpponentHandleSpriteInvisibility,
+ LinkOpponentHandleBattleAnimation,
+ LinkOpponentHandleLinkStandbyMsg,
+ LinkOpponentHandleResetActionMoveSelection,
+ LinkOpponentHandlecmd55,
+ LinkOpponentHandlecmd56
+};
+
+// code
+
+void nullsub_47(void)
+{
+}
+
+void SetBankFuncToLinkOpponentBufferRunCommand(void)
+{
+ gBattleBankFunc[gActiveBank] = sub_803752C;
+}
+
+void sub_803752C(void)
+{
+ if (gBattleExecBuffer & gBitTable[gActiveBank])
+ {
+ if (gBattleBufferA[gActiveBank][0] <= 0x38)
+ gLinkOpponentBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ else
+ LinkOpponentBufferExecCompleted();
+ }
+}
+
+void sub_803757C(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ LinkOpponentBufferExecCompleted();
+}
+
+void sub_80375B4(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ {
+ sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data5;
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ LinkOpponentBufferExecCompleted();
+ }
+}
+
+void sub_8037644(void)
+{
+ if ((--ewram17810[gActiveBank].unk9) == 0xFF)
+ {
+ ewram17810[gActiveBank].unk9 = 0;
+ LinkOpponentBufferExecCompleted();
+ }
+}
+
+void sub_8037680(void)
+{
+ bool8 r6 = FALSE;
+
+ if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
+ {
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ else
+ {
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ if (IsCryPlayingOrClearCrySongs())
+ r6 = FALSE;
+
+ if (r6)
+ {
+ if (GetBankIdentity(gActiveBank) == 1)
+ {
+ if (!ewram17810[gActiveBank].unk1_0 || !ewram17810[gActiveBank ^ 2].unk1_0)
+ return;
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ ewram17810[gActiveBank ^ 2].unk0_7 = 0;
+ ewram17810[gActiveBank ^ 2].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ }
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (GetBankIdentity(gActiveBank) == 1)
+ m4aMPlayContinue(&gMPlay_BGM);
+ }
+ else
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
+ }
+ ewram17810[gActiveBank].unk9 = 3;
+ gBattleBankFunc[gActiveBank] = sub_8037644;
+ }
+}
+
+void sub_8037840(void)
+{
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
+ sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7)
+ sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]);
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3)
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) && GetBankIdentity(gActiveBank) == 3)
+ {
+ if (++ewram17810[gActiveBank].unk9 == 1)
+ return;
+ ewram17810[gActiveBank].unk9 = 0;
+ }
+ if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank ^ 2],
+ &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]],
+ 0);
+ sub_804777C(gActiveBank ^ 2);
+ sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
+ sub_8032984(
+ gActiveBank ^ 2,
+ GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES));
+ }
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank],
+ &gEnemyParty[gBattlePartyID[gActiveBank]],
+ 0);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8032984(
+ gActiveBank,
+ GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+
+ ewram17840.unk9_0 = 0;
+ gBattleBankFunc[gActiveBank] = sub_8037680;
+ }
+}
+
+void sub_8037A74(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE
+ && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ {
+ if (!ewram17810[gActiveBank].unk0_7)
+ {
+ sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ return;
+ }
+ if (ewram17810[gActiveBank].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ LinkOpponentBufferExecCompleted();
+ return;
+ }
+ }
+}
+
+void sub_8037B24(void)
+{
+ s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
+
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ if (r4 != -1)
+ sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
+ else
+ LinkOpponentBufferExecCompleted();
+}
+
+void sub_8037B78(void)
+{
+ if (!gSprites[gObjectBankIDs[gActiveBank]].inUse)
+ {
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ LinkOpponentBufferExecCompleted();
+ }
+}
+
+void sub_8037BBC(void)
+{
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8032A08(gActiveBank);
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ LinkOpponentBufferExecCompleted();
+ }
+}
+
+void sub_8037C2C(void)
+{
+ if (gUnknown_03004210.state == 0)
+ LinkOpponentBufferExecCompleted();
+}
+
+void dp01t_0F_4_move_anim(void)
+{
+ u8 spriteId = gObjectBankIDs[gActiveBank];
+
+ if (gSprites[spriteId].data1 == 32)
+ {
+ gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].invisible = FALSE;
+ gDoingBattleAnim = 0;
+ LinkOpponentBufferExecCompleted();
+ }
+ else
+ {
+ if (((u16)gSprites[spriteId].data1 % 4) == 0)
+ gSprites[spriteId].invisible ^= 1;
+ gSprites[spriteId].data1++;
+ }
+}
+
+void sub_8037CC0(void)
+{
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ {
+ if (ewram17800[gActiveBank].substituteSprite)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
+ gBattleBankFunc[gActiveBank] = sub_8037D2C;
+ }
+}
+
+void sub_8037D2C(void)
+{
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ CreateTask(c3_0802FDF4, 10);
+ LinkOpponentBufferExecCompleted();
+ }
+}
+
+void sub_8037D64(void)
+{
+ if (ewram17810[gActiveBank].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank],
+ &gEnemyParty[gBattlePartyID[gActiveBank]],
+ 0);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8031F88(gActiveBank);
+ gBattleBankFunc[gActiveBank] = sub_8037CC0;
+ }
+}
+
+void sub_8037E30(void)
+{
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
+ sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
+ && !ewram17810[gActiveBank].unk0_3)
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ gBattleBankFunc[gActiveBank] = sub_8037D64;
+ }
+}
+
+void sub_8037EF0(void)
+{
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ m4aSongNumStop(SE_HINSI);
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gPreBattleCallback1;
+ SetMainCallback2(c2_8011A1C);
+ }
+}
+
+void sub_8037F34(void)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ sub_800832C();
+ gBattleBankFunc[gActiveBank] = sub_8037EF0;
+ }
+ else
+ {
+ m4aSongNumStop(SE_HINSI);
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gPreBattleCallback1;
+ SetMainCallback2(gMain.savedCallback);
+ }
+ }
+}
+
+void sub_8037FAC(void)
+{
+ if (!ewram17810[gActiveBank].unk0_4)
+ LinkOpponentBufferExecCompleted();
+}
+
+void sub_8037FD8(void)
+{
+ if (!ewram17810[gActiveBank].unk0_5)
+ LinkOpponentBufferExecCompleted();
+}
+
+void LinkOpponentBufferExecCompleted(void)
+{
+ gBattleBankFunc[gActiveBank] = sub_803752C;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ u8 playerId = GetMultiplayerId();
+
+ PrepareBufferDataTransferLink(2, 4, &playerId);
+ gBattleBufferA[gActiveBank][0] = 0x38;
+ }
+ else
+ {
+ gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ }
+}
+
void LinkOpponentHandleGetAttributes(void)
{
u8 buffer[0x100];
@@ -129,8 +588,8 @@ void LinkOpponentHandleGetAttributes(void)
r4 >>= 1;
}
}
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, buffer);
- dp01_tbl4_exec_completed();
+ Emitcmd29(1, r6, buffer);
+ LinkOpponentBufferExecCompleted();
}
u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer)
@@ -438,12 +897,12 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer)
return size;
}
-void sub_803889C(void)
+void LinkOpponentHandlecmd1(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_80388A8(void)
+void LinkOpponentHandleSetAttributes(void)
{
u8 i;
u8 r4;
@@ -462,7 +921,7 @@ void sub_80388A8(void)
r4 >>= 1;
}
}
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
void sub_8038900(u8 a)
@@ -681,7 +1140,7 @@ void sub_8038900(u8 a)
}
}
-void sub_8039220(void)
+void LinkOpponentHandlecmd3(void)
{
u8 *dst;
u8 i;
@@ -689,14 +1148,14 @@ void sub_8039220(void)
dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
dst[i] = gBattleBufferA[gActiveBank][3 + i];
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039294(void)
+void LinkOpponentHandleLoadPokeSprite(void)
{
u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
- sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -711,7 +1170,7 @@ void sub_8039294(void)
gBattleBankFunc[gActiveBank] = sub_8037A74;
}
-void sub_80393E4(void)
+void LinkOpponentHandleSendOutPoke(void)
{
gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
sub_8039430(gActiveBank, gBattleBufferA[gActiveBank][2]);
@@ -726,7 +1185,7 @@ void sub_8039430(u8 a, u8 b)
gBattlePartyID[a] = gBattleBufferA[a][1];
species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
gObjectBankIDs[a] = CreateSprite(
&gUnknown_02024E8C,
@@ -743,7 +1202,7 @@ void sub_8039430(u8 a, u8 b)
gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFE);
}
-void sub_80395B4(void)
+void LinkOpponentHandleReturnPokeToBall(void)
{
if (gBattleBufferA[gActiveBank][1] == 0)
{
@@ -756,7 +1215,7 @@ void sub_80395B4(void)
DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
sub_8032A08(gActiveBank);
sub_8043DB0(gHealthboxIDs[gActiveBank]);
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
}
@@ -765,7 +1224,7 @@ void sub_8039648(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -780,7 +1239,7 @@ void sub_8039648(void)
}
}
-void sub_80396D0(void)
+void LinkOpponentHandleTrainerThrow(void)
{
s16 xOffset;
u32 gender;
@@ -814,27 +1273,27 @@ void sub_80396D0(void)
gBattleBankFunc[gActiveBank] = sub_803757C;
}
-void sub_80398A4(void)
+void LinkOpponentHandleTrainerSlide(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_80398B0(void)
+void LinkOpponentHandleTrainerSlideBack(void)
{
oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
gSprites[gObjectBankIDs[gActiveBank]].data0 = 35;
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;
}
-void sub_803995C(void)
+void LinkOpponentHandlecmd10(void)
{
if (ewram17810[gActiveBank].unk4 == 0)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4++;
}
@@ -847,27 +1306,27 @@ void sub_803995C(void)
}
}
-void sub_8039A00(void)
+void LinkOpponentHandlecmd11(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039A0C(void)
+void LinkOpponentHandlecmd12(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039A18(void)
+void LinkOpponentHandleBallThrow(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039A24(void)
+void LinkOpponentHandlePuase(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039A30(void)
+void LinkOpponentHandleMoveAnimation(void)
{
if (!mplay_80342A4(gActiveBank))
{
@@ -890,7 +1349,7 @@ void sub_8039A30(void)
// Dead code. sub_8031720 always returns 0.
if (sub_8031720(r0, gUnknown_0202F7C4) != 0)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
else
{
@@ -909,7 +1368,7 @@ void sub_8039B64(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3)
+ if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
{
ewram17800[gActiveBank].unk0_3 = 1;
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
@@ -929,7 +1388,7 @@ void sub_8039B64(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1)
+ if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
{
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17800[gActiveBank].unk0_3 = 0;
@@ -945,13 +1404,13 @@ void sub_8039B64(void)
gActiveBank,
gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
ewram17810[gActiveBank].unk4 = 0;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
break;
}
}
-void sub_8039CC8(void)
+void LinkOpponentHandlePrintString(void)
{
gUnknown_030042A4 = 0;
gUnknown_030042A0 = 0;
@@ -960,42 +1419,42 @@ void sub_8039CC8(void)
gBattleBankFunc[gActiveBank] = sub_8037C2C;
}
-void sub_8039D2C(void)
+void LinkOpponentHandlePrintStringPlayerOnly(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D38(void)
+void LinkOpponentHandlecmd18(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D44(void)
+void LinkOpponentHandlecmd19(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D50(void)
+void LinkOpponentHandlecmd20(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D5C(void)
+void LinkOpponentHandleOpenBag(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D68(void)
+void LinkOpponentHandlecmd22(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D74(void)
+void LinkOpponentHandlecmd23(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039D80(void)
+void LinkOpponentHandleHealthBarUpdate(void)
{
s16 r7;
@@ -1017,12 +1476,12 @@ void sub_8039D80(void)
gBattleBankFunc[gActiveBank] = sub_8037B24;
}
-void sub_8039E70(void)
+void LinkOpponentHandleExpBarUpdate(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039E7C(void)
+void LinkOpponentHandleStatusIconUpdate(void)
{
if (mplay_80342A4(gActiveBank) == 0)
{
@@ -1032,7 +1491,7 @@ void sub_8039E7C(void)
}
}
-void sub_8039EF0(void)
+void LinkOpponentHandleStatusAnimation(void)
{
if (mplay_80342A4(gActiveBank) == 0)
{
@@ -1046,80 +1505,80 @@ void sub_8039EF0(void)
}
}
-void sub_8039F58(void)
+void LinkOpponentHandleStatusXor(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039F64(void)
+void LinkOpponentHandlecmd29(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039F70(void)
+void LinkOpponentHandleDMATransfer(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039F7C(void)
+void LinkOpponentHandlecmd31(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039F88(void)
+void LinkOpponentHandlecmd32(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039F94(void)
+void LinkOpponentHandlecmd33(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039FA0(void)
+void LinkOpponentHandlecmd34(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039FAC(void)
+void LinkOpponentHandlecmd35(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039FB8(void)
+void LinkOpponentHandlecmd36(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039FC4(void)
+void LinkOpponentHandlecmd37(void)
{
gUnknown_020238C8.unk0_0 = 0;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_8039FE0(void)
+void LinkOpponentHandlecmd38(void)
{
gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A018(void)
+void LinkOpponentHandlecmd39(void)
{
gUnknown_020238C8.unk0_7 = 0;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A030(void)
+void LinkOpponentHandlecmd40(void)
{
gUnknown_020238C8.unk0_7 ^= 1;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void dp01t_29_4_blink(void)
+void LinkOpponentHandleHitAnimation(void)
{
if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
else
{
@@ -1130,12 +1589,12 @@ void dp01t_29_4_blink(void)
}
}
-void sub_803A0C8(void)
+void LinkOpponentHandlecmd42(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A0D4(void)
+void LinkOpponentHandleEffectivenessSound(void)
{
s8 pan;
@@ -1144,31 +1603,31 @@ void sub_803A0D4(void)
else
pan = 63;
PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A118(void)
+void LinkOpponentHandlecmd44(void)
{
PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A148(void)
+void LinkOpponentHandleFaintingCry(void)
{
PlayCry3(
GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
25, 5);
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void dp01t_2E_4_battle_intro(void)
+void LinkOpponentHandleIntroSlide(void)
{
sub_80E43C0(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A1B8(void)
+void LinkOpponentHandleTrainerBallThrow(void)
{
u8 taskId;
@@ -1177,7 +1636,7 @@ void sub_803A1B8(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)
@@ -1219,11 +1678,11 @@ void sub_803A3A8(struct Sprite *sprite)
DestroySprite(sprite);
}
-void sub_803A3DC(void)
+void LinkOpponentHandlecmd48(void)
{
if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
return;
}
@@ -1256,33 +1715,33 @@ void sub_803A4E0(void)
if (ewram17810[gActiveBank].unk5++ >= 93)
{
ewram17810[gActiveBank].unk5 = 0;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
}
-void sub_803A520(void)
+void LinkOpponentHandlecmd49(void)
{
if (ewram17810[gActiveBank].unk0_0)
gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A56C(void)
+void LinkOpponentHandlecmd50(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A578(void)
+void LinkOpponentHandleSpriteInvisibility(void)
{
- if (sub_8078874(gActiveBank) != 0)
+ if (AnimBankSpriteExists(gActiveBank) != 0)
{
gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
sub_8031F88(gActiveBank);
}
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void bx_exec_buffer_A_ch0_tbl4(void)
+void LinkOpponentHandleBattleAnimation(void)
{
if (mplay_80342A4(gActiveBank) == 0)
{
@@ -1290,23 +1749,23 @@ void bx_exec_buffer_A_ch0_tbl4(void)
u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0)
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
else
gBattleBankFunc[gActiveBank] = sub_8037FD8;
}
}
-void sub_803A640(void)
+void LinkOpponentHandleLinkStandbyMsg(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A64C(void)
+void LinkOpponentHandleResetActionMoveSelection(void)
{
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
}
-void sub_803A658(void)
+void LinkOpponentHandlecmd55(void)
{
if (gBattleBufferA[gActiveBank][1] == 3)
gBattleOutcome = gBattleBufferA[gActiveBank][1];
@@ -1314,10 +1773,10 @@ void sub_803A658(void)
gBattleOutcome = gBattleBufferA[gActiveBank][1] ^ 3;
FadeOutMapMusic(5);
BeginFastPaletteFade(3);
- dp01_tbl4_exec_completed();
+ LinkOpponentBufferExecCompleted();
gBattleBankFunc[gActiveBank] = sub_8037F34;
}
-void nullsub_48(void)
+void LinkOpponentHandlecmd56(void)
{
}
diff --git a/src/battle_811DA74.c b/src/battle/battle_controller_linkpartner.c
index 36a287efc..3e34b2e25 100644
--- a/src/battle_811DA74.c
+++ b/src/battle/battle_controller_linkpartner.c
@@ -64,10 +64,9 @@ extern u8 gUnknown_0300434C[];
extern u8 gBattleMonForms[];
extern u8 gAnimScriptActive;
extern void (*gAnimScriptCallback)(void);
-extern void (*const gLinkPartnerBufferCommands[])(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();
@@ -83,16 +82,16 @@ 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);
-extern void sub_8031AF4();
+extern void LoadPlayerTrainerBankSprite();
extern void sub_80313A0(struct Sprite *);
extern u8 sub_8046400();
extern void sub_80312F0(struct Sprite *);
extern u8 CreateInvisibleSpriteWithCallback();
-extern void sub_80318FC();
+extern void BattleLoadPlayerMonSprite();
extern u8 sub_8077ABC();
extern u8 sub_8077F68();
extern u8 sub_8079E90();
@@ -111,6 +110,8 @@ extern void sub_8031F88();
extern void sub_8141828();
extern void c2_8011A1C(void);
+// this file's functions
+
void LinkPartnerBufferRunCommand(void);
void sub_811E0A0(void);
void LinkPartnerBufferExecCompleted(void);
@@ -122,6 +123,127 @@ void sub_811FF30(void);
void sub_812071C(u8);
void sub_81208E0(void);
+void LinkPartnerHandleGetAttributes(void);
+void LinkPartnerHandlecmd1(void);
+void LinkPartnerHandleSetAttributes(void);
+void LinkPartnerHandlecmd3(void);
+void LinkPartnerHandleLoadPokeSprite(void);
+void LinkPartnerHandleSendOutPoke(void);
+void LinkPartnerHandleReturnPokeToBall(void);
+void LinkPartnerHandleTrainerThrow(void);
+void LinkPartnerHandleTrainerSlide(void);
+void LinkPartnerHandleTrainerSlideBack(void);
+void LinkPartnerHandlecmd10(void);
+void LinkPartnerHandlecmd11(void);
+void LinkPartnerHandlecmd12(void);
+void LinkPartnerHandleBallThrow(void);
+void LinkPartnerHandlePuase(void);
+void LinkPartnerHandleMoveAnimation(void);
+void LinkPartnerHandlePrintString(void);
+void LinkPartnerHandlePrintStringPlayerOnly(void);
+void LinkPartnerHandlecmd18(void);
+void LinkPartnerHandlecmd19(void);
+void LinkPartnerHandlecmd20(void);
+void LinkPartnerHandleOpenBag(void);
+void LinkPartnerHandlecmd22(void);
+void LinkPartnerHandlecmd23(void);
+void LinkPartnerHandleHealthBarUpdate(void);
+void LinkPartnerHandleExpBarUpdate(void);
+void LinkPartnerHandleStatusIconUpdate(void);
+void LinkPartnerHandleStatusAnimation(void);
+void LinkPartnerHandleStatusXor(void);
+void LinkPartnerHandlecmd29(void);
+void LinkPartnerHandleDMATransfer(void);
+void LinkPartnerHandlecmd31(void);
+void LinkPartnerHandlecmd32(void);
+void LinkPartnerHandlecmd33(void);
+void LinkPartnerHandlecmd34(void);
+void LinkPartnerHandlecmd35(void);
+void LinkPartnerHandlecmd36(void);
+void LinkPartnerHandlecmd37(void);
+void LinkPartnerHandlecmd38(void);
+void LinkPartnerHandlecmd39(void);
+void LinkPartnerHandlecmd40(void);
+void LinkPartnerHandleHitAnimation(void);
+void LinkPartnerHandlecmd42(void);
+void LinkPartnerHandleEffectivenessSound(void);
+void LinkPartnerHandlecmd44(void);
+void LinkPartnerHandleFaintingCry(void);
+void LinkPartnerHandleIntroSlide(void);
+void LinkPartnerHandleTrainerBallThrow(void);
+void LinkPartnerHandlecmd48(void);
+void LinkPartnerHandlecmd49(void);
+void LinkPartnerHandlecmd50(void);
+void LinkPartnerHandleSpriteInvisibility(void);
+void LinkPartnerHandleBattleAnimation(void);
+void LinkPartnerHandleLinkStandbyMsg(void);
+void LinkPartnerHandleResetActionMoveSelection(void);
+void LinkPartnerHandlecmd55(void);
+void LinkPartnerHandlecmd56(void);
+
+// const data
+typedef void (*BattleBufferCmd) (void);
+static const BattleBufferCmd gLinkPartnerBufferCommands[] =
+{
+ LinkPartnerHandleGetAttributes,
+ LinkPartnerHandlecmd1,
+ LinkPartnerHandleSetAttributes,
+ LinkPartnerHandlecmd3,
+ LinkPartnerHandleLoadPokeSprite,
+ LinkPartnerHandleSendOutPoke,
+ LinkPartnerHandleReturnPokeToBall,
+ LinkPartnerHandleTrainerThrow,
+ LinkPartnerHandleTrainerSlide,
+ LinkPartnerHandleTrainerSlideBack,
+ LinkPartnerHandlecmd10,
+ LinkPartnerHandlecmd11,
+ LinkPartnerHandlecmd12,
+ LinkPartnerHandleBallThrow,
+ LinkPartnerHandlePuase,
+ LinkPartnerHandleMoveAnimation,
+ LinkPartnerHandlePrintString,
+ LinkPartnerHandlePrintStringPlayerOnly,
+ LinkPartnerHandlecmd18,
+ LinkPartnerHandlecmd19,
+ LinkPartnerHandlecmd20,
+ LinkPartnerHandleOpenBag,
+ LinkPartnerHandlecmd22,
+ LinkPartnerHandlecmd23,
+ LinkPartnerHandleHealthBarUpdate,
+ LinkPartnerHandleExpBarUpdate,
+ LinkPartnerHandleStatusIconUpdate,
+ LinkPartnerHandleStatusAnimation,
+ LinkPartnerHandleStatusXor,
+ LinkPartnerHandlecmd29,
+ LinkPartnerHandleDMATransfer,
+ LinkPartnerHandlecmd31,
+ LinkPartnerHandlecmd32,
+ LinkPartnerHandlecmd33,
+ LinkPartnerHandlecmd34,
+ LinkPartnerHandlecmd35,
+ LinkPartnerHandlecmd36,
+ LinkPartnerHandlecmd37,
+ LinkPartnerHandlecmd38,
+ LinkPartnerHandlecmd39,
+ LinkPartnerHandlecmd40,
+ LinkPartnerHandleHitAnimation,
+ LinkPartnerHandlecmd42,
+ LinkPartnerHandleEffectivenessSound,
+ LinkPartnerHandlecmd44,
+ LinkPartnerHandleFaintingCry,
+ LinkPartnerHandleIntroSlide,
+ LinkPartnerHandleTrainerBallThrow,
+ LinkPartnerHandlecmd48,
+ LinkPartnerHandlecmd49,
+ LinkPartnerHandlecmd50,
+ LinkPartnerHandleSpriteInvisibility,
+ LinkPartnerHandleBattleAnimation,
+ LinkPartnerHandleLinkStandbyMsg,
+ LinkPartnerHandleResetActionMoveSelection,
+ LinkPartnerHandlecmd55,
+ LinkPartnerHandlecmd56,
+};
+// code starts here
void nullsub_74(void)
{
@@ -298,7 +420,7 @@ void sub_811E034(void)
{
if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
gBattleBankFunc[gActiveBank] = sub_811E0A0;
}
@@ -379,7 +501,7 @@ void LinkPartnerBufferExecCompleted(void)
if (gBattleTypeFlags & 2)
{
multiplayerId = GetMultiplayerId();
- dp01_prepare_buffer_wireless_probably(2, 4, &multiplayerId);
+ PrepareBufferDataTransferLink(2, 4, &multiplayerId);
gBattleBufferA[gActiveBank][0] = 0x38;
}
else
@@ -421,7 +543,7 @@ void LinkPartnerHandleGetAttributes(void)
r4 >>= 1;
}
}
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, unk);
+ Emitcmd29(1, r6, unk);
LinkPartnerBufferExecCompleted();
}
@@ -731,7 +853,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer)
return size;
}
-void sub_811EC04(void)
+void LinkPartnerHandlecmd1(void)
{
LinkPartnerBufferExecCompleted();
}
@@ -976,7 +1098,7 @@ void sub_811EC68(u8 a)
sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
}
-void sub_811F664(void)
+void LinkPartnerHandlecmd3(void)
{
u8 *dst;
u8 i;
@@ -987,9 +1109,9 @@ void sub_811F664(void)
LinkPartnerBufferExecCompleted();
}
-void sub_811F6D8(void)
+void LinkPartnerHandleLoadPokeSprite(void)
{
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(
GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES),
GetBankIdentity(gActiveBank));
@@ -1005,11 +1127,11 @@ void sub_811F6D8(void)
gBattleBankFunc[gActiveBank] = sub_811DDE8;
}
-void sub_811F7F4(void)
+void LinkPartnerHandleSendOutPoke(void)
{
sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
sub_811F864(gActiveBank, gBattleBufferA[gActiveBank][2]);
gBattleBankFunc[gActiveBank] = sub_811E1BC;
}
@@ -1038,7 +1160,7 @@ void sub_811F864(u8 a, u8 b)
gSprites[gUnknown_0300434C[a]].data0 = sub_8046400(0, 0xFF);
}
-void sub_811F9D0(void)
+void LinkPartnerHandleReturnPokeToBall(void)
{
if (gBattleBufferA[gActiveBank][1] == 0)
{
@@ -1059,7 +1181,7 @@ void sub_811FA5C(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -1074,7 +1196,7 @@ void sub_811FA5C(void)
}
}
-void sub_811FAE4(void)
+void LinkPartnerHandleTrainerThrow(void)
{
s16 xOffset;
u32 gender;
@@ -1092,7 +1214,7 @@ void sub_811FAE4(void)
xOffset = 0;
gender = gLinkPlayers[GetMultiplayerId() ^ 1].gender;
}
- sub_8031AF4(gender, gActiveBank);
+ LoadPlayerTrainerBankSprite(gender, gActiveBank);
GetMonSpriteTemplate_803C5A0(gender, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -1105,27 +1227,27 @@ void sub_811FAE4(void)
gBattleBankFunc[gActiveBank] = sub_811DAE4;
}
-void sub_811FC30(void)
+void LinkPartnerHandleTrainerSlide(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_811FC3C(void)
+void LinkPartnerHandleTrainerSlideBack(void)
{
oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
gSprites[gObjectBankIDs[gActiveBank]].data0 = 35;
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;
}
-void sub_811FCE8(void)
+void LinkPartnerHandlecmd10(void)
{
if (ewram17810[gActiveBank].unk4 == 0)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4++;
}
@@ -1141,27 +1263,27 @@ void sub_811FCE8(void)
}
}
-void sub_811FDCC(void)
+void LinkPartnerHandlecmd11(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_811FDD8(void)
+void LinkPartnerHandlecmd12(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_811FDE4(void)
+void LinkPartnerHandleBallThrow(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_811FDF0(void)
+void LinkPartnerHandlePuase(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_811FDFC(void)
+void LinkPartnerHandleMoveAnimation(void)
{
if (!mplay_80342A4(gActiveBank))
{
@@ -1200,7 +1322,7 @@ void sub_811FF30(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3)
+ if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
{
ewram17800[gActiveBank].unk0_3 = 1;
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
@@ -1220,7 +1342,7 @@ void sub_811FF30(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1)
+ if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
{
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17800[gActiveBank].unk0_3 = 0;
@@ -1242,7 +1364,7 @@ void sub_811FF30(void)
}
}
-void sub_8120094(void)
+void LinkPartnerHandlePrintString(void)
{
gUnknown_030042A4 = 0;
gUnknown_030042A0 = 0;
@@ -1251,37 +1373,37 @@ void sub_8120094(void)
gBattleBankFunc[gActiveBank] = sub_811DFA0;
}
-void sub_81200F8(void)
+void LinkPartnerHandlePrintStringPlayerOnly(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120104(void)
+void LinkPartnerHandlecmd18(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120110(void)
+void LinkPartnerHandlecmd19(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_812011C(void)
+void LinkPartnerHandlecmd20(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120128(void)
+void LinkPartnerHandleOpenBag(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120134(void)
+void LinkPartnerHandlecmd22(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120140(void)
+void LinkPartnerHandlecmd23(void)
{
LinkPartnerBufferExecCompleted();
}
@@ -1337,70 +1459,70 @@ void LinkPartnerHandleStatusAnimation(void)
}
}
-void sub_8120324(void)
+void LinkPartnerHandleStatusXor(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120330(void)
+void LinkPartnerHandlecmd29(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_812033C(void)
+void LinkPartnerHandleDMATransfer(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120348(void)
+void LinkPartnerHandlecmd31(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120354(void)
+void LinkPartnerHandlecmd32(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120360(void)
+void LinkPartnerHandlecmd33(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_812036C(void)
+void LinkPartnerHandlecmd34(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120378(void)
+void LinkPartnerHandlecmd35(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120384(void)
+void LinkPartnerHandlecmd36(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120390(void)
+void LinkPartnerHandlecmd37(void)
{
gUnknown_020238C8.unk0_0 = 0;
LinkPartnerBufferExecCompleted();
}
-void sub_81203AC(void)
+void LinkPartnerHandlecmd38(void)
{
gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
LinkPartnerBufferExecCompleted();
}
-void sub_81203E4(void)
+void LinkPartnerHandlecmd39(void)
{
gUnknown_020238C8.unk0_7 = 0;
LinkPartnerBufferExecCompleted();
}
-void sub_81203FC(void)
+void LinkPartnerHandlecmd40(void)
{
gUnknown_020238C8.unk0_7 ^= 1;
LinkPartnerBufferExecCompleted();
@@ -1421,7 +1543,7 @@ void LinkPartnerHandleHitAnimation(void)
}
}
-void sub_8120494(void)
+void LinkPartnerHandlecmd42(void)
{
LinkPartnerBufferExecCompleted();
}
@@ -1438,7 +1560,7 @@ void LinkPartnerHandleEffectivenessSound(void)
LinkPartnerBufferExecCompleted();
}
-void sub_81204E4(void)
+void LinkPartnerHandlecmd44(void)
{
PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
LinkPartnerBufferExecCompleted();
@@ -1452,14 +1574,14 @@ void LinkPartnerHandleFaintingCry(void)
LinkPartnerBufferExecCompleted();
}
-void dp01t_2E_3_battle_intro(void)
+void LinkPartnerHandleIntroSlide(void)
{
sub_80E43C0(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
LinkPartnerBufferExecCompleted();
}
-void sub_8120588(void)
+void LinkPartnerHandleTrainerBallThrow(void)
{
u8 r4;
u8 taskId;
@@ -1470,7 +1592,7 @@ void sub_8120588(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(
@@ -1508,7 +1630,7 @@ void sub_812071C(u8 taskId)
sub_811F864(gActiveBank, 0);
gActiveBank ^= 2;
gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
sub_811F864(gActiveBank, 0);
gActiveBank ^= 2;
}
@@ -1517,7 +1639,7 @@ void sub_812071C(u8 taskId)
DestroyTask(taskId);
}
-void dp01t_30_3_80EB11C(void)
+void LinkPartnerHandlecmd48(void)
{
if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
{
@@ -1546,21 +1668,21 @@ void sub_81208E0(void)
}
}
-void sub_8120920(void)
+void LinkPartnerHandlecmd49(void)
{
if (ewram17810[gActiveBank].unk0_0)
gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
LinkPartnerBufferExecCompleted();
}
-void sub_812096C(void)
+void LinkPartnerHandlecmd50(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120978(void)
+void LinkPartnerHandleSpriteInvisibility(void)
{
- if (sub_8078874(gActiveBank) != 0)
+ if (AnimBankSpriteExists(gActiveBank) != 0)
{
gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
sub_8031F88(gActiveBank);
@@ -1568,7 +1690,7 @@ void sub_8120978(void)
LinkPartnerBufferExecCompleted();
}
-void sub_81209D8(void)
+void LinkPartnerHandleBattleAnimation(void)
{
if (mplay_80342A4(gActiveBank) == 0)
{
@@ -1582,17 +1704,17 @@ void sub_81209D8(void)
}
}
-void sub_8120A40(void)
+void LinkPartnerHandleLinkStandbyMsg(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120A4C(void)
+void LinkPartnerHandleResetActionMoveSelection(void)
{
LinkPartnerBufferExecCompleted();
}
-void sub_8120A58(void)
+void LinkPartnerHandlecmd55(void)
{
gBattleOutcome = gBattleBufferA[gActiveBank][1];
FadeOutMapMusic(5);
@@ -1601,6 +1723,6 @@ void sub_8120A58(void)
gBattleBankFunc[gActiveBank] = sub_811E29C;
}
-void nullsub_75(void)
+void LinkPartnerHandlecmd56(void)
{
}
diff --git a/src/battle_8.c b/src/battle/battle_controller_opponent.c
index 75f10c4b1..72b56b962 100644
--- a/src/battle_8.c
+++ b/src/battle/battle_controller_opponent.c
@@ -1,15 +1,19 @@
#include "global.h"
#include "battle.h"
-#include "battle_ai.h"
#include "battle_interface.h"
#include "data2.h"
-#include "graphics.h"
+#include "battle_811DA74.h"
+#include "battle_anim_813F0F4.h"
+#include "link.h"
+#include "m4a.h"
#include "main.h"
+#include "palette.h"
+#include "pokeball.h"
#include "pokemon.h"
-#include "rng.h"
#include "rom3.h"
-#include "songs.h"
+#include "rom_8077ABC.h"
#include "sound.h"
+#include "songs.h"
#include "sprite.h"
#include "string_util.h"
#include "task.h"
@@ -53,12 +57,17 @@ extern bool8 gDoingBattleAnim;
extern u16 gUnknown_02024DE8;
extern u8 gUnknown_02024E68[];
extern MainCallback gPreBattleCallback1;
+extern void (*const gOpponentBufferCommands[])(void);
+extern struct MusicPlayerInfo gMPlay_SE1;
+extern struct MusicPlayerInfo gMPlay_SE2;
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern u32 gBattleExecBuffer;
extern u8 sub_8077ABC();
extern u8 sub_8077F68();
extern u8 sub_8079E90();
extern void sub_8033018(void);
-extern void sub_8031794();
+extern void BattleLoadOpponentMonSprite();
extern u8 GetBankIdentity(u8);
extern void sub_8032984(u8, u16);
extern void sub_80333D4(void);
@@ -76,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);
@@ -104,11 +113,14 @@ 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);
-extern void OpponentBufferExecCompleted(void);
+// this file's functions
+
+void OpponentBufferExecCompleted(void);
+void OpponentBufferRunCommand(void);
u32 sub_8033598(u8, u8 *);
void sub_8033E24(u8);
void sub_803495C(u8, u8);
@@ -117,6 +129,407 @@ void sub_8035238(void);
void sub_8035C10(struct Sprite *);
void sub_8035C44(u8);
void sub_8035E2C(void);
+void sub_80332D0(void);
+
+void OpponentHandleGetAttributes(void);
+void OpponentHandlecmd1(void);
+void OpponentHandleSetAttributes(void);
+void OpponentHandlecmd3(void);
+void OpponentHandleLoadPokeSprite(void);
+void OpponentHandleSendOutPoke(void);
+void OpponentHandleReturnPokeToBall(void);
+void OpponentHandleTrainerThrow(void);
+void OpponentHandleTrainerSlide(void);
+void OpponentHandleTrainerSlideBack(void);
+void OpponentHandlecmd10(void);
+void OpponentHandlecmd11(void);
+void OpponentHandlecmd12(void);
+void OpponentHandleBallThrow(void);
+void OpponentHandlePuase(void);
+void OpponentHandleMoveAnimation(void);
+void OpponentHandlePrintString(void);
+void OpponentHandlePrintStringPlayerOnly(void);
+void OpponentHandlecmd18(void);
+void OpponentHandlecmd19(void);
+void OpponentHandlecmd20(void);
+void OpponentHandleOpenBag(void);
+void OpponentHandlecmd22(void);
+void OpponentHandlecmd23(void);
+void OpponentHandleHealthBarUpdate(void);
+void OpponentHandleExpBarUpdate(void);
+void OpponentHandleStatusIconUpdate(void);
+void OpponentHandleStatusAnimation(void);
+void OpponentHandleStatusXor(void);
+void OpponentHandlecmd29(void);
+void OpponentHandleDMATransfer(void);
+void OpponentHandlecmd31(void);
+void OpponentHandlecmd32(void);
+void OpponentHandlecmd33(void);
+void OpponentHandlecmd34(void);
+void OpponentHandlecmd35(void);
+void OpponentHandlecmd36(void);
+void OpponentHandlecmd37(void);
+void OpponentHandlecmd38(void);
+void OpponentHandlecmd39(void);
+void OpponentHandlecmd40(void);
+void OpponentHandleHitAnimation(void);
+void OpponentHandlecmd42(void);
+void OpponentHandleEffectivenessSound(void);
+void OpponentHandlecmd44(void);
+void OpponentHandleFaintingCry(void);
+void OpponentHandleIntroSlide(void);
+void OpponentHandleTrainerBallThrow(void);
+void OpponentHandlecmd48(void);
+void OpponentHandlecmd49(void);
+void OpponentHandlecmd50(void);
+void OpponentHandleSpriteInvisibility(void);
+void OpponentHandleBattleAnimation(void);
+void OpponentHandleLinkStandbyMsg(void);
+void OpponentHandleResetActionMoveSelection(void);
+void OpponentHandlecmd55(void);
+void OpponentHandlecmd56(void);
+
+// const data
+typedef void (*BattleBufferCmd) (void);
+static const BattleBufferCmd gOpponentBufferCommands[] =
+{
+ OpponentHandleGetAttributes,
+ OpponentHandlecmd1,
+ OpponentHandleSetAttributes,
+ OpponentHandlecmd3,
+ OpponentHandleLoadPokeSprite,
+ OpponentHandleSendOutPoke,
+ OpponentHandleReturnPokeToBall,
+ OpponentHandleTrainerThrow,
+ OpponentHandleTrainerSlide,
+ OpponentHandleTrainerSlideBack,
+ OpponentHandlecmd10,
+ OpponentHandlecmd11,
+ OpponentHandlecmd12,
+ OpponentHandleBallThrow,
+ OpponentHandlePuase,
+ OpponentHandleMoveAnimation,
+ OpponentHandlePrintString,
+ OpponentHandlePrintStringPlayerOnly,
+ OpponentHandlecmd18,
+ OpponentHandlecmd19,
+ OpponentHandlecmd20,
+ OpponentHandleOpenBag,
+ OpponentHandlecmd22,
+ OpponentHandlecmd23,
+ OpponentHandleHealthBarUpdate,
+ OpponentHandleExpBarUpdate,
+ OpponentHandleStatusIconUpdate,
+ OpponentHandleStatusAnimation,
+ OpponentHandleStatusXor,
+ OpponentHandlecmd29,
+ OpponentHandleDMATransfer,
+ OpponentHandlecmd31,
+ OpponentHandlecmd32,
+ OpponentHandlecmd33,
+ OpponentHandlecmd34,
+ OpponentHandlecmd35,
+ OpponentHandlecmd36,
+ OpponentHandlecmd37,
+ OpponentHandlecmd38,
+ OpponentHandlecmd39,
+ OpponentHandlecmd40,
+ OpponentHandleHitAnimation,
+ OpponentHandlecmd42,
+ OpponentHandleEffectivenessSound,
+ OpponentHandlecmd44,
+ OpponentHandleFaintingCry,
+ OpponentHandleIntroSlide,
+ OpponentHandleTrainerBallThrow,
+ OpponentHandlecmd48,
+ OpponentHandlecmd49,
+ OpponentHandlecmd50,
+ OpponentHandleSpriteInvisibility,
+ OpponentHandleBattleAnimation,
+ OpponentHandleLinkStandbyMsg,
+ OpponentHandleResetActionMoveSelection,
+ OpponentHandlecmd55,
+ OpponentHandlecmd56,
+};
+
+static const u8 sUnknownBytes[] = {0xB0, 0xB0, 0xC8, 0x98, 0x28, 0x28, 0x28, 0x20};
+
+// code
+
+void nullsub_45(void)
+{
+}
+
+void SetBankFuncToOpponentBufferRunCommand(void)
+{
+ gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand;
+}
+
+void OpponentBufferRunCommand(void)
+{
+ if (gBattleExecBuffer & gBitTable[gActiveBank])
+ {
+ if (gBattleBufferA[gActiveBank][0] <= 0x38)
+ gOpponentBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ else
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_8032B4C(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ OpponentBufferExecCompleted();
+}
+
+// Duplicate of sub_8032B4C
+void sub_8032B84(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ OpponentBufferExecCompleted();
+}
+
+void sub_8032BBC(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ {
+ sub_8031B74(gSprites[gObjectBankIDs[gActiveBank]].oam.affineParam);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.tileNum = gSprites[gObjectBankIDs[gActiveBank]].data5;
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_8032C4C(void)
+{
+ if ((--ewram17810[gActiveBank].unk9) == 0xFF)
+ {
+ ewram17810[gActiveBank].unk9 = 0;
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_8032C88(void)
+{
+ bool8 r6 = FALSE;
+
+ if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
+ {
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ else
+ {
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ if (IsCryPlayingOrClearCrySongs())
+ r6 = FALSE;
+
+ if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ ewram17810[gActiveBank ^ 2].unk0_7 = 0;
+ ewram17810[gActiveBank ^ 2].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ m4aMPlayContinue(&gMPlay_BGM);
+ else
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
+ ewram17810[gActiveBank].unk9 = 3;
+ gBattleBankFunc[gActiveBank] = sub_8032C4C;
+ }
+}
+
+void sub_8032E2C(void)
+{
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
+ sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7)
+ sub_8141828(gActiveBank ^ 2, &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]]);
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3)
+ {
+ if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank ^ 2],
+ &gEnemyParty[gBattlePartyID[gActiveBank ^ 2]],
+ 0);
+ sub_804777C(gActiveBank ^ 2);
+ sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
+ sub_8032984(
+ gActiveBank ^ 2,
+ GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank ^ 2]], MON_DATA_SPECIES));
+ }
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank],
+ &gEnemyParty[gBattlePartyID[gActiveBank]],
+ 0);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8032984(
+ gActiveBank,
+ GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+
+ ewram17840.unk9_0 = 0;
+ gBattleBankFunc[gActiveBank] = sub_8032C88;
+ }
+}
+
+void sub_8033018(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].animEnded == TRUE
+ && gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ {
+ if (!ewram17810[gActiveBank].unk0_7)
+ {
+ sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ return;
+ }
+ if (ewram17810[gActiveBank].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ OpponentBufferExecCompleted();
+ return;
+ }
+ }
+}
+
+void sub_80330C8(void)
+{
+ s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
+
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ if (r4 != -1)
+ sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
+ else
+ OpponentBufferExecCompleted();
+}
+
+void sub_803311C(void)
+{
+ if (!gSprites[gObjectBankIDs[gActiveBank]].inUse)
+ {
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_8033160(void)
+{
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8032A08(gActiveBank);
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_80331D0(void)
+{
+ if (gUnknown_03004210.state == 0)
+ OpponentBufferExecCompleted();
+}
+
+void bx_blink_t7(void)
+{
+ u8 spriteId = gObjectBankIDs[gActiveBank];
+
+ if (gSprites[spriteId].data1 == 32)
+ {
+ gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].invisible = FALSE;
+ gDoingBattleAnim = 0;
+ OpponentBufferExecCompleted();
+ }
+ else
+ {
+ if (((u16)gSprites[spriteId].data1 % 4) == 0)
+ gSprites[spriteId].invisible ^= 1;
+ gSprites[spriteId].data1++;
+ }
+}
+
+void sub_8033264(void)
+{
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ {
+ if (ewram17800[gActiveBank].substituteSprite)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
+ gBattleBankFunc[gActiveBank] = sub_80332D0;
+ }
+}
+
+void sub_80332D0(void)
+{
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ CreateTask(c3_0802FDF4, 10);
+ OpponentBufferExecCompleted();
+ }
+}
+
+void sub_8033308(void)
+{
+ if (ewram17810[gActiveBank].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 0);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank],
+ &gEnemyParty[gBattlePartyID[gActiveBank]],
+ 0);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8031F88(gActiveBank);
+ gBattleBankFunc[gActiveBank] = sub_8033264;
+ }
+}
+
+void sub_80333D4(void)
+{
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
+ sub_8141828(gActiveBank, &gEnemyParty[gBattlePartyID[gActiveBank]]);
+ if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
+ && !ewram17810[gActiveBank].unk0_3)
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ sub_8032984(gActiveBank, GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES));
+ gBattleBankFunc[gActiveBank] = sub_8033308;
+ }
+}
+
+void sub_8033494(void)
+{
+ if (!ewram17810[gActiveBank].unk0_4)
+ OpponentBufferExecCompleted();
+}
+
+void sub_80334C0(void)
+{
+ if (!ewram17810[gActiveBank].unk0_5)
+ OpponentBufferExecCompleted();
+}
+
+void OpponentBufferExecCompleted(void)
+{
+ gBattleBankFunc[gActiveBank] = OpponentBufferRunCommand;
+ gBattleExecBuffer &= ~gBitTable[gActiveBank];
+}
void OpponentHandleGetAttributes(void)
{
@@ -139,7 +552,7 @@ void OpponentHandleGetAttributes(void)
r4 >>= 1;
}
}
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, buffer);
+ Emitcmd29(1, r6, buffer);
OpponentBufferExecCompleted();
}
@@ -448,7 +861,7 @@ u32 sub_8033598(u8 a, u8 *buffer)
return size;
}
-void dp01t_01_2_read_pokmon_data_slice(void)
+void OpponentHandlecmd1(void)
{
struct BattlePokemon buffer;
u8 *src = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
@@ -457,7 +870,7 @@ void dp01t_01_2_read_pokmon_data_slice(void)
for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
dst[i] = src[i];
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, gBattleBufferA[gActiveBank][2], dst);
+ Emitcmd29(1, gBattleBufferA[gActiveBank][2], dst);
OpponentBufferExecCompleted();
}
@@ -699,7 +1112,7 @@ void sub_8033E24(u8 a)
}
}
-void sub_8034744(void)
+void OpponentHandlecmd3(void)
{
u8 *dst;
u8 i;
@@ -714,7 +1127,7 @@ void OpponentHandleLoadPokeSprite(void)
{
u16 species = GetMonData(&gEnemyParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
- sub_8031794(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[gActiveBank]], gActiveBank);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -746,7 +1159,7 @@ void sub_803495C(u8 a, u8 b)
gBattlePartyID[a] = gBattleBufferA[a][1];
species = GetMonData(&gEnemyParty[gBattlePartyID[a]], MON_DATA_SPECIES);
gUnknown_0300434C[a] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- sub_8031794(&gEnemyParty[gBattlePartyID[a]], a);
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[a]], a);
GetMonSpriteTemplate_803C56C(species, GetBankIdentity(a));
gObjectBankIDs[a] = CreateSprite(
&gUnknown_02024E8C,
@@ -785,7 +1198,7 @@ void sub_8034B74(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -868,15 +1281,15 @@ 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;
}
-void sub_8035030(void)
+void OpponentHandlecmd10(void)
{
if (ewram17810[gActiveBank].unk4 == 0)
{
- if (ewram17800[gActiveBank].unk0_2)
+ if (ewram17800[gActiveBank].substituteSprite)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4++;
}
@@ -889,12 +1302,12 @@ void sub_8035030(void)
}
}
-void sub_80350D4(void)
+void OpponentHandlecmd11(void)
{
OpponentBufferExecCompleted();
}
-void sub_80350E0(void)
+void OpponentHandlecmd12(void)
{
OpponentBufferExecCompleted();
}
@@ -904,7 +1317,7 @@ void OpponentHandleBallThrow(void)
OpponentBufferExecCompleted();
}
-void OpponentHandlePause(void)
+void OpponentHandlePuase(void)
{
OpponentBufferExecCompleted();
}
@@ -951,7 +1364,7 @@ void sub_8035238(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 && !ewram17800[gActiveBank].unk0_3)
+ if (ewram17800[gActiveBank].substituteSprite && !ewram17800[gActiveBank].unk0_3)
{
ewram17800[gActiveBank].unk0_3 = 1;
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
@@ -971,7 +1384,7 @@ void sub_8035238(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if ((ewram17800[gActiveBank].unk0_2) && r7 <= 1)
+ if ((ewram17800[gActiveBank].substituteSprite) && r7 <= 1)
{
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17800[gActiveBank].unk0_3 = 0;
@@ -1007,19 +1420,19 @@ void OpponentHandlePrintStringPlayerOnly(void)
OpponentBufferExecCompleted();
}
-void sub_803540C(void)
+void OpponentHandlecmd18(void)
{
sub_8036B0C();
OpponentBufferExecCompleted();
}
-void sub_803541C(void)
+void OpponentHandlecmd19(void)
{
OpponentBufferExecCompleted();
}
#ifdef NONMATCHING
-void sub_8035428(void)
+void OpponentHandlecmd20(void)
{
u16 r4;
// Needed to match closer
@@ -1032,10 +1445,10 @@ void sub_8035428(void)
switch (r4)
{
case 5:
- dp01_build_cmdbuf_x21_a_bb(1, 4, 0);
+ Emitcmd33(1, 4, 0);
break;
case 4:
- dp01_build_cmdbuf_x21_a_bb(1, 3, 0);
+ Emitcmd33(1, 3, 0);
break;
default:
if (gBattleMoves[r5->moves[r4]].target & 0x12)
@@ -1047,7 +1460,7 @@ void sub_8035428(void)
gBankTarget = GetBankByPlayerAI(2);
}
r4 |= gBankTarget << 8;
- dp01_build_cmdbuf_x21_a_bb(1, 10, r4);
+ Emitcmd33(1, 10, r4);
break;
}
OpponentBufferExecCompleted();
@@ -1066,26 +1479,26 @@ void sub_8035428(void)
if (gBattleMoves[r2].target & 0x12)
{
r4 |= gActiveBank << 8;
- dp01_build_cmdbuf_x21_a_bb(1, 10, r4);
+ Emitcmd33(1, 10, r4);
}
else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
{
u16 r2 = GetBankByPlayerAI(Random() & 2) << 8;
- dp01_build_cmdbuf_x21_a_bb(1, 10, r4 | r2);
+ Emitcmd33(1, 10, r4 | r2);
}
else
{
u16 r2 = GetBankByPlayerAI(0) << 8;
- dp01_build_cmdbuf_x21_a_bb(1, 10, r4 | r2);
+ Emitcmd33(1, 10, r4 | r2);
}
OpponentBufferExecCompleted();
}
}
#else
__attribute__((naked))
-void sub_8035428(void)
+void OpponentHandlecmd20(void)
{
asm(".syntax unified\n\
push {r4-r6,lr}\n\
@@ -1121,7 +1534,7 @@ _08035468:\n\
movs r1, 0x3\n\
_0803546C:\n\
movs r2, 0\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
+ bl Emitcmd33\n\
b _080354E0\n\
_08035474:\n\
ldr r3, _080354E8 @ =gBattleMoves\n\
@@ -1176,7 +1589,7 @@ _080354CE:\n\
movs r0, 0x1\n\
movs r1, 0xA\n\
adds r2, r4, 0\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
+ bl Emitcmd33\n\
_080354E0:\n\
bl OpponentBufferExecCompleted\n\
b _0803558A\n\
@@ -1213,7 +1626,7 @@ _080354FA:\n\
movs r0, 0x1\n\
movs r1, 0xA\n\
adds r2, r4, 0\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
+ bl Emitcmd33\n\
b _08035586\n\
.align 2, 0\n\
_08035534: .4byte gBattleMoves\n\
@@ -1238,7 +1651,7 @@ _0803553C:\n\
orrs r2, r4\n\
movs r0, 0x1\n\
movs r1, 0xA\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
+ bl Emitcmd33\n\
b _08035586\n\
.align 2, 0\n\
_0803556C: .4byte gBattleTypeFlags\n\
@@ -1251,7 +1664,7 @@ _08035570:\n\
orrs r2, r4\n\
movs r0, 0x1\n\
movs r1, 0xA\n\
- bl dp01_build_cmdbuf_x21_a_bb\n\
+ bl Emitcmd33\n\
_08035586:\n\
bl OpponentBufferExecCompleted\n\
_0803558A:\n\
@@ -1262,14 +1675,14 @@ _0803558A:\n\
}
#endif
-void sub_8035590(void)
+void OpponentHandleOpenBag(void)
{
// What is this?
- dp01_build_cmdbuf_x23_aa_0(1, ewram[0x160D4 + gActiveBank / 2 * 2]);
+ Emitcmd35(1, ewram[0x160D4 + gActiveBank / 2 * 2]);
OpponentBufferExecCompleted();
}
-void sub_80355C0(void)
+void OpponentHandlecmd22(void)
{
s32 r4;
@@ -1306,11 +1719,11 @@ void sub_80355C0(void)
ewram[0x160C8 + GetBankIdentity(gActiveBank) / 2] = 6;
}
ewram[0x16068 + gActiveBank] = r4;
- dp01_build_cmdbuf_x22_a_three_bytes(1, r4, 0);
+ Emitcmd34(1, r4, 0);
OpponentBufferExecCompleted();
}
-void sub_80356C0(void)
+void OpponentHandlecmd23(void)
{
OpponentBufferExecCompleted();
}
@@ -1371,7 +1784,7 @@ void OpponentHandleStatusXor(void)
OpponentBufferExecCompleted();
}
-void sub_80358B0(void)
+void OpponentHandlecmd29(void)
{
OpponentBufferExecCompleted();
}
@@ -1381,55 +1794,55 @@ void OpponentHandleDMATransfer(void)
OpponentBufferExecCompleted();
}
-void sub_80358C8(void)
+void OpponentHandlecmd31(void)
{
OpponentBufferExecCompleted();
}
-void sub_80358D4(void)
+void OpponentHandlecmd32(void)
{
OpponentBufferExecCompleted();
}
-void sub_80358E0(void)
+void OpponentHandlecmd33(void)
{
OpponentBufferExecCompleted();
}
-void sub_80358EC(void)
+void OpponentHandlecmd34(void)
{
OpponentBufferExecCompleted();
}
-void sub_80358F8(void)
+void OpponentHandlecmd35(void)
{
OpponentBufferExecCompleted();
}
-void sub_8035904(void)
+void OpponentHandlecmd36(void)
{
OpponentBufferExecCompleted();
}
-void sub_8035910(void)
+void OpponentHandlecmd37(void)
{
gUnknown_020238C8.unk0_0 = 0;
OpponentBufferExecCompleted();
}
-void sub_803592C(void)
+void OpponentHandlecmd38(void)
{
gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
OpponentBufferExecCompleted();
}
-void sub_8035964(void)
+void OpponentHandlecmd39(void)
{
gUnknown_020238C8.unk0_7 = 0;
OpponentBufferExecCompleted();
}
-void sub_803597C(void)
+void OpponentHandlecmd40(void)
{
gUnknown_020238C8.unk0_7 ^= 1;
OpponentBufferExecCompleted();
@@ -1450,7 +1863,7 @@ void OpponentHandleHitAnimation(void)
}
}
-void sub_8035A14(void)
+void OpponentHandlecmd42(void)
{
OpponentBufferExecCompleted();
}
@@ -1467,7 +1880,7 @@ void OpponentHandleEffectivenessSound(void)
OpponentBufferExecCompleted();
}
-void sub_8035A64(void)
+void OpponentHandlecmd44(void)
{
PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
OpponentBufferExecCompleted();
@@ -1481,14 +1894,14 @@ void OpponentHandleFaintingCry(void)
OpponentBufferExecCompleted();
}
-void dp01t_2E_7_battle_intro(void)
+void OpponentHandleIntroSlide(void)
{
sub_80E43C0(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
OpponentBufferExecCompleted();
}
-void sub_8035B04(void)
+void OpponentHandleTrainerBallThrow(void)
{
u8 taskId;
@@ -1497,7 +1910,7 @@ void sub_8035B04(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)
@@ -1539,7 +1952,7 @@ void sub_8035C44(u8 taskId)
DestroyTask(taskId);
}
-void dp01t_30_7_0803D67C(void)
+void OpponentHandlecmd48(void)
{
if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
{
@@ -1580,21 +1993,21 @@ void sub_8035E2C(void)
}
}
-void sub_8035E6C(void)
+void OpponentHandlecmd49(void)
{
if (ewram17810[gActiveBank].unk0_0)
gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
OpponentBufferExecCompleted();
}
-void sub_8035EB8(void)
+void OpponentHandlecmd50(void)
{
OpponentBufferExecCompleted();
}
void OpponentHandleSpriteInvisibility(void)
{
- if (sub_8078874(gActiveBank) != 0)
+ if (AnimBankSpriteExists(gActiveBank) != 0)
{
gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
sub_8031F88(gActiveBank);
@@ -1626,7 +2039,7 @@ void OpponentHandleResetActionMoveSelection(void)
OpponentBufferExecCompleted();
}
-void sub_8035FA4(void)
+void OpponentHandlecmd55(void)
{
if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
{
@@ -1637,6 +2050,6 @@ void sub_8035FA4(void)
OpponentBufferExecCompleted();
}
-void nullsub_46(void)
+void OpponentHandlecmd56(void)
{
}
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
new file mode 100644
index 000000000..53b596c5e
--- /dev/null
+++ b/src/battle/battle_controller_player.c
@@ -0,0 +1,3066 @@
+#include "global.h"
+#include "data2.h"
+#include "battle.h"
+#include "battle_interface.h"
+#include "battle_message.h"
+#include "item.h"
+#include "items.h"
+#include "link.h"
+#include "m4a.h"
+#include "main.h"
+#include "menu_cursor.h"
+#include "moves.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "rom3.h"
+#include "songs.h"
+#include "sound.h"
+#include "string_util.h"
+#include "task.h"
+#include "text.h"
+#include "util.h"
+
+//Possibly PokemonSubstruct1
+struct UnknownStruct3
+{
+ u16 moves[4];
+ u8 pp[4];
+ u8 ppBonuses;
+};
+
+#if ENGLISH
+#define SUB_803037C_TILE_DATA_OFFSET 440
+#elif GERMAN
+#define SUB_803037C_TILE_DATA_OFFSET 444
+#endif
+
+extern u16 gUnknown_030042A4;
+extern u16 gUnknown_030042A0;
+
+extern struct Window gUnknown_03004210;
+
+extern void (*gBattleBankFunc[])(void);
+
+extern u8 gActiveBank;
+extern u8 gActionSelectionCursor[];
+extern u8 gDisplayedStringBattle[];
+extern u8 gMoveSelectionCursor[];
+extern u8 gBattleBufferA[][0x200];
+extern u8 gBankInMenu;
+extern u16 gBattlePartyID[];
+extern u8 gHealthboxIDs[];
+extern u8 gDoingBattleAnim;
+extern u8 gObjectBankIDs[];
+extern u16 gBattleTypeFlags;
+extern u8 gBattleOutcome;
+extern void (*gAnimScriptCallback)(void);
+extern bool8 gAnimScriptActive;
+extern u16 gMovePowerMoveAnim;
+extern u32 gMoveDmgMoveAnim;
+extern u8 gHappinessMoveAnim;
+extern u16 gWeatherMoveAnim;
+extern u32 *gDisableStructMoveAnim;
+extern u32 gPID_perBank[];
+extern u8 gBattleMonForms[];
+extern u16 gUnknown_02024DE8;
+extern u8 gUnknown_02024E68[];
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern u8 gUnknown_0202F7C4;
+extern u8 gUnknown_02038470[];
+extern u16 gUnknown_030041B0;
+extern u16 gUnknown_030041B4;
+extern u16 gUnknown_030041B8;
+extern u16 gUnknown_03004280;
+extern u16 gUnknown_03004288;
+extern u16 gUnknown_030042A4;
+extern u16 gUnknown_030042C0;
+extern u8 gUnknown_03004344;
+extern u8 gUnknown_0300434C[];
+
+extern const u8 gUnknown_08400CA8[];
+extern const u8 gUnknown_08400CF3[];
+extern const u8 gUnknown_08400D38[];
+
+extern void sub_802C68C(void);
+extern void sub_802E1B0(void);
+extern void sub_802E220();
+extern void sub_802E2D4();
+extern void sub_802E004(void);
+extern void sub_802DF30(void);
+extern void BattleMusicStop(void);
+extern void PlayerBufferExecCompleted(void);
+extern void bx_t1_healthbar_update(void);
+extern void nullsub_91(void);
+extern void sub_802D924(u8);
+extern void sub_802E434(void);
+extern bool8 mplay_80342A4(u8);
+extern void move_anim_start_t2_for_situation();
+extern void bx_blink_t1(void);
+extern void sub_8047858();
+extern u8 GetBankSide(u8);
+extern void sub_80E43C0();
+extern void oamt_add_pos2_onto_pos1();
+extern void sub_8078B34(struct Sprite *);
+extern void StoreSpriteCallbackInData6();
+extern void BattleLoadPlayerMonSprite();
+extern bool8 IsDoubleBattle(void);
+extern void sub_802D500(void);
+extern bool8 AnimBankSpriteExists(u8);
+extern bool8 move_anim_start_t3();
+extern void sub_802E460(void);
+extern void b_link_standby_message(void);
+extern void sub_802D18C(void);
+extern void sub_802DF18(void);
+extern void BufferStringBattle();
+extern void sub_80326EC();
+extern void ExecuteMoveAnim();
+extern void sub_8031F24(void);
+extern void sub_80324BC();
+extern u8 sub_8031720();
+extern void bx_wait_t1(void);
+extern u8 GetBankByPlayerAI(u8);
+extern void sub_802DE10(void);
+extern void sub_80105EC(struct Sprite *);
+extern void sub_802D274(void);
+extern void sub_802D23C(void);
+extern u8 GetBankIdentity(u8);
+extern void LoadPlayerTrainerBankSprite();
+extern void sub_80313A0(struct Sprite *);
+extern void sub_802D204(void);
+extern u8 sub_8079E90();
+extern void sub_802DEAC(void);
+extern void sub_80312F0(struct Sprite *);
+extern u8 sub_8077ABC();
+extern u8 sub_8077F68();
+extern u8 sub_8046400();
+extern void sub_802D798(void);
+extern void bx_0802E404(void);
+extern u8 gActiveBank;
+extern void (*gBattleBankFunc[])(void);
+extern bool8 gDoingBattleAnim;
+extern u16 gBattleTypeFlags;
+extern u32 gBattleExecBuffer;
+extern u8 gBattleBufferA[][0x200];
+extern u8 gObjectBankIDs[];
+extern u8 gActionSelectionCursor[];
+extern u8 gMoveSelectionCursor[];
+extern u8 gAbsentBankFlags;
+extern u8 gUnknown_03004344;
+extern u8 gNoOfAllBanks;
+extern u16 gBattlePartyID[];
+extern u16 gUnknown_030042A0;
+extern u16 gUnknown_030042A4;
+extern struct Window gUnknown_03004210;
+extern const u8 gUnknown_08400D89[];
+extern u8 gUnknown_03004348;
+extern struct BattlePokemon gBattleMons[];
+extern MainCallback gPreBattleCallback1;
+extern u8 gHealthboxIDs[];
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern u8 gUnknown_0300434C[];
+extern u8 gUnknown_0202E8F4;
+extern u8 gUnknown_0202E8F5;
+extern u8 gUnknown_02038470[];
+extern u16 gScriptItemId;
+extern u8 gDisplayedStringBattle[];
+extern const u8 gUnknown_08400CE0[];
+
+extern void dp11b_obj_instanciate(u8, u8, s8, s8);
+extern u8 GetBankIdentity(u8);
+extern u8 GetBankByPlayerAI(u8);
+extern void dp11b_obj_free(u8, u8);
+extern void sub_8010520(struct Sprite *);
+extern void sub_8010574(struct Sprite *);
+extern bool8 IsDoubleBattle();
+extern void sub_804777C();
+extern void sub_8141828();
+extern void sub_8094E20(u8);
+extern void nullsub_14(void);
+extern void sub_80A6DCC(void);
+extern void ReshowBattleScreenAfterMenu(void);
+
+void PlayerHandleGetAttributes(void);
+void PlayerHandlecmd1(void);
+void PlayerHandleSetAttributes(void);
+void PlayerHandlecmd3(void);
+void PlayerHandleLoadPokeSprite(void);
+void PlayerHandleSendOutPoke(void);
+void PlayerHandleReturnPokeToBall(void);
+void PlayerHandleTrainerThrow(void);
+void PlayerHandleTrainerSlide(void);
+void PlayerHandleTrainerSlideBack(void);
+void PlayerHandlecmd10(void);
+void PlayerHandlecmd11(void);
+void PlayerHandlecmd12(void);
+void PlayerHandleBallThrow(void);
+void PlayerHandlePuase(void);
+void PlayerHandleMoveAnimation(void);
+void PlayerHandlePrintString(void);
+void PlayerHandlePrintStringPlayerOnly(void);
+void PlayerHandlecmd18(void);
+void PlayerHandlecmd19(void);
+void PlayerHandlecmd20(void);
+void PlayerHandleOpenBag(void);
+void PlayerHandlecmd22(void);
+void PlayerHandlecmd23(void);
+void PlayerHandleHealthBarUpdate(void);
+void PlayerHandleExpBarUpdate(void);
+void PlayerHandleStatusIconUpdate(void);
+void PlayerHandleStatusAnimation(void);
+void PlayerHandleStatusXor(void);
+void PlayerHandlecmd29(void);
+void PlayerHandleDMATransfer(void);
+void PlayerHandlecmd31(void);
+void PlayerHandlecmd32(void);
+void PlayerHandlecmd33(void);
+void PlayerHandlecmd34(void);
+void PlayerHandlecmd35(void);
+void PlayerHandlecmd36(void);
+void PlayerHandlecmd37(void);
+void PlayerHandlecmd38(void);
+void PlayerHandlecmd39(void);
+void PlayerHandlecmd40(void);
+void PlayerHandleHitAnimation(void);
+void PlayerHandlecmd42(void);
+void PlayerHandleEffectivenessSound(void);
+void PlayerHandlecmd44(void);
+void PlayerHandleFaintingCry(void);
+void PlayerHandleIntroSlide(void);
+void PlayerHandleTrainerBallThrow(void);
+void PlayerHandlecmd48(void);
+void PlayerHandlecmd49(void);
+void PlayerHandlecmd50(void);
+void PlayerHandleSpriteInvisibility(void);
+void PlayerHandleBattleAnimation(void);
+void PlayerHandleLinkStandbyMsg(void);
+void PlayerHandleResetActionMoveSelection(void);
+void PlayerHandlecmd55(void);
+void PlayerHandlecmd56(void);
+
+const u8 gString_TurnJP[] = _("ターン");
+
+void (*const gPlayerBufferCommands[])(void) =
+{
+ PlayerHandleGetAttributes,
+ PlayerHandlecmd1,
+ PlayerHandleSetAttributes,
+ PlayerHandlecmd3,
+ PlayerHandleLoadPokeSprite,
+ PlayerHandleSendOutPoke,
+ PlayerHandleReturnPokeToBall,
+ PlayerHandleTrainerThrow,
+ PlayerHandleTrainerSlide,
+ PlayerHandleTrainerSlideBack,
+ PlayerHandlecmd10,
+ PlayerHandlecmd11,
+ PlayerHandlecmd12,
+ PlayerHandleBallThrow,
+ PlayerHandlePuase,
+ PlayerHandleMoveAnimation,
+ PlayerHandlePrintString,
+ PlayerHandlePrintStringPlayerOnly,
+ PlayerHandlecmd18,
+ PlayerHandlecmd19,
+ PlayerHandlecmd20,
+ PlayerHandleOpenBag,
+ PlayerHandlecmd22,
+ PlayerHandlecmd23,
+ PlayerHandleHealthBarUpdate,
+ PlayerHandleExpBarUpdate,
+ PlayerHandleStatusIconUpdate,
+ PlayerHandleStatusAnimation,
+ PlayerHandleStatusXor,
+ PlayerHandlecmd29,
+ PlayerHandleDMATransfer,
+ PlayerHandlecmd31,
+ PlayerHandlecmd32,
+ PlayerHandlecmd33,
+ PlayerHandlecmd34,
+ PlayerHandlecmd35,
+ PlayerHandlecmd36,
+ PlayerHandlecmd37,
+ PlayerHandlecmd38,
+ PlayerHandlecmd39,
+ PlayerHandlecmd40,
+ PlayerHandleHitAnimation,
+ PlayerHandlecmd42,
+ PlayerHandleEffectivenessSound,
+ PlayerHandlecmd44,
+ PlayerHandleFaintingCry,
+ PlayerHandleIntroSlide,
+ PlayerHandleTrainerBallThrow,
+ PlayerHandlecmd48,
+ PlayerHandlecmd49,
+ PlayerHandlecmd50,
+ PlayerHandleSpriteInvisibility,
+ PlayerHandleBattleAnimation,
+ PlayerHandleLinkStandbyMsg,
+ PlayerHandleResetActionMoveSelection,
+ PlayerHandlecmd55,
+ PlayerHandlecmd56,
+};
+
+void PlayerBufferRunCommand(void);
+void sub_802C2EC(void);
+void sub_802C68C(void);
+void sub_802CA60(void);
+void sub_802D730(void);
+void sub_802DA9C(u8);
+void sub_802DB6C(u8);
+void sub_802DCB0(u8);
+void sub_802DD10(u8);
+void sub_802DDC4(u8);
+void sub_802DF88(void);
+void sub_802E03C(void);
+void sub_802E12C(s32, const u8 *);
+void sub_802E1B0(void);
+void sub_802E220(void);
+void sub_802E2D4(void);
+void sub_802E3B4(u8, int);
+void nullsub_7(u8);
+void b_link_standby_message(void);
+u32 dp01_getattr_by_ch1_for_player_pokemon_(u8, u8 *);
+void dp01_setattr_by_ch1_for_player_pokemon(u8);
+void sub_802F934(u8, u8);
+void sub_802FB2C(void);
+void sub_8030190(void);
+void sub_80304A8(void);
+void sub_8030E38(struct Sprite *);
+void task05_08033660(u8);
+void sub_8031064(void);
+
+void nullsub_91(void)
+{
+}
+
+void SetBankFuncToPlayerBufferRunCommand(void)
+{
+ gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand;
+ gDoingBattleAnim = FALSE;
+}
+
+void PlayerBufferExecCompleted(void)
+{
+ gBattleBankFunc[gActiveBank] = PlayerBufferRunCommand;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ u8 playerId = GetMultiplayerId();
+
+ PrepareBufferDataTransferLink(2, 4, &playerId);
+ gBattleBufferA[gActiveBank][0] = 0x38;
+ }
+ else
+ {
+ gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ }
+}
+
+void PlayerBufferRunCommand(void)
+{
+ if (gBattleExecBuffer & gBitTable[gActiveBank])
+ {
+ if (gBattleBufferA[gActiveBank][0] < 0x39)
+ gPlayerBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ else
+ PlayerBufferExecCompleted();
+ }
+}
+
+void bx_0802E404(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].pos2.x == 0)
+ PlayerBufferExecCompleted();
+}
+
+void sub_802C098(void)
+{
+ u16 itemId = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+
+ dp11b_obj_instanciate(gActiveBank, 1, 7, 1);
+ dp11b_obj_instanciate(gActiveBank, 0, 7, 1);
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ DestroyMenuCursor();
+
+ // Useless switch statement.
+ switch (gActionSelectionCursor[gActiveBank])
+ {
+ case 0:
+ Emitcmd33(1, 0, 0);
+ break;
+ case 1:
+ Emitcmd33(1, 1, 0);
+ break;
+ case 2:
+ Emitcmd33(1, 2, 0);
+ break;
+ case 3:
+ Emitcmd33(1, 3, 0);
+ break;
+ }
+ PlayerBufferExecCompleted();
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (gActionSelectionCursor[gActiveBank] & 1)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 1;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (!(gActionSelectionCursor[gActiveBank] & 1))
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 1;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ if (gActionSelectionCursor[gActiveBank] & 2)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 2;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (!(gActionSelectionCursor[gActiveBank] & 2))
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 2;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ && GetBankIdentity(gActiveBank) == 2
+ && !(gAbsentBankFlags & gBitTable[GetBankByPlayerAI(0)])
+ && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ if (gBattleBufferA[gActiveBank][1] == 1)
+ {
+ // Add item to bag if it is a ball
+ if (itemId <= ITEM_PREMIER_BALL)
+ AddBagItem(itemId, 1);
+ else
+ return;
+ }
+ PlaySE(SE_SELECT);
+ Emitcmd33(1, 12, 0);
+ PlayerBufferExecCompleted();
+ DestroyMenuCursor();
+ }
+ }
+ else if (gMain.newKeys & START_BUTTON)
+ {
+ sub_804454C();
+ }
+}
+
+void unref_sub_802C2B8(void)
+{
+ dp11b_obj_free(gActiveBank, 1);
+ dp11b_obj_free(gActiveBank, 0);
+ gBattleBankFunc[gActiveBank] = sub_802C2EC;
+}
+
+// TODO: fix this function
+void sub_802C2EC(void)
+{
+ u8 arr[4] = {0, 2, 3, 1};
+ s32 i;
+
+ dp11b_obj_instanciate(gUnknown_03004344, 1, 15, 1);
+ i = 0;
+ if (gNoOfAllBanks != 0)
+ {
+ do
+ {
+ if (i != gUnknown_03004344)
+ dp11b_obj_free(i, 1);
+ i++;
+ } while (i < gNoOfAllBanks);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ DestroyMenuCursor();
+ PlaySE(SE_SELECT);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8));
+ dp11b_obj_free(gUnknown_03004344, 1);
+ PlayerBufferExecCompleted();
+ }
+ //_0802C3A8
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ gBattleBankFunc[gActiveBank] = sub_802C68C;
+ dp11b_obj_instanciate(gActiveBank, 1, 7, 1);
+ dp11b_obj_instanciate(gActiveBank, 0, 7, 1);
+ dp11b_obj_free(gUnknown_03004344, 1);
+ }
+ else if (gMain.newKeys & 0x60)
+ {
+ PlaySE(SE_SELECT);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ do
+ {
+ u8 var = GetBankIdentity(gUnknown_03004344);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (var == arr[i])
+ break;
+ }
+ do
+ {
+ i--;
+ if (i < 0)
+ i = 3;
+ gUnknown_03004344 = GetBankByPlayerAI(arr[i]);
+ } while(gUnknown_03004344 == gNoOfAllBanks);
+ i = 0;
+ switch (GetBankIdentity(gUnknown_03004344))
+ {
+ case 0:
+ case 2:
+ if (gActiveBank == gUnknown_03004344)
+ {
+ u32 moveId;
+
+ asm("":::"memory");
+ moveId = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank]);
+ if (!(gBattleMoves[moveId].target & 2))
+ break;
+ }
+ i++;
+ break;
+ case 1:
+ case 3:
+ i++;
+ }
+ //_0802C500
+ if (gAbsentBankFlags & gBitTable[gUnknown_03004344])
+ i = 0;
+ } while (i == 0);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520;
+ }
+ //_0802C540
+ else if (gMain.newKeys & 0x90)
+ {
+ PlaySE(SE_SELECT);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010574;
+ do
+ {
+ u8 var = GetBankIdentity(gUnknown_03004344);
+
+ for (i = 0; i < 4; i++)
+ {
+ if (var == arr[i])
+ break;
+ }
+ do
+ {
+ i++;
+ if (i > 3)
+ i = 0;
+ gUnknown_03004344 = GetBankByPlayerAI(arr[i]);
+ } while (gUnknown_03004344 == gNoOfAllBanks);
+ i = 0;
+ switch (GetBankIdentity(gUnknown_03004344))
+ {
+ case 0:
+ case 2:
+ if (gActiveBank == gUnknown_03004344)
+ {
+ u32 moveId;
+
+ asm("":::"memory");
+ moveId = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + gMoveSelectionCursor[gActiveBank]);
+ if (!(gBattleMoves[moveId].target & 2))
+ break;
+ }
+ i++;
+ break;
+ case 1:
+ case 3:
+ i++;
+ }
+ if (gAbsentBankFlags & gBitTable[gUnknown_03004344])
+ i = 0;
+ } while (i == 0);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520;
+ }
+}
+
+struct UnknownStruct1
+{
+ u16 moves[4];
+ u8 pp[4];
+ u8 unkC[0x12-0xC];
+ u8 unk12;
+ u8 unk13;
+ u8 filler14[0x20-0x14];
+};
+
+const u8 gUnknown_081FAE80[] = _("{PALETTE 5}{COLOR_HIGHLIGHT_SHADOW WHITE LIGHT_BLUE WHITE2}");
+
+void sub_802C68C(void)
+{
+ u32 r8 = 0;
+ struct UnknownStruct1 *r6 = (struct UnknownStruct1 *)(gBattleBufferA[gActiveBank] + 4);
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ u32 r4;
+
+ PlaySE(SE_SELECT);
+
+ if (r6->moves[gMoveSelectionCursor[gActiveBank]] == MOVE_CURSE)
+ r4 = (r6->unk12 != TYPE_GHOST && (r6->unk13 ^ 7)) ? 0x10 : 0;
+ else
+ r4 = gBattleMoves[r6->moves[gMoveSelectionCursor[gActiveBank]]].target;
+
+ if (r4 & 0x10)
+ gUnknown_03004344 = gActiveBank;
+ else
+ gUnknown_03004344 = GetBankByPlayerAI((GetBankIdentity(gActiveBank) & 1) ^ 1);
+
+ if (gBattleBufferA[gActiveBank][1] == 0)
+ {
+ if ((r4 & 2) && gBattleBufferA[gActiveBank][2] == 0)
+ r8++;
+ }
+ else
+ {
+ if (!(r4 & 0x7D))
+ r8++;
+ if (r6->pp[gMoveSelectionCursor[gActiveBank]] == 0)
+ {
+ r8 = 0;
+ }
+ else if (!(r4 & 0x12) && CountAliveMons(0) <= 1)
+ {
+ gUnknown_03004344 = sub_803C434(gActiveBank);
+ r8 = 0;
+ }
+ }
+ if (r8 == 0)
+ {
+ DestroyMenuCursor();
+ Emitcmd33(1, 10, gMoveSelectionCursor[gActiveBank] | (gUnknown_03004344 << 8));
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ gBattleBankFunc[gActiveBank] = sub_802C2EC;
+ if (r4 & 0x12)
+ gUnknown_03004344 = gActiveBank;
+ else if (gAbsentBankFlags & gBitTable[GetBankByPlayerAI(1)])
+ gUnknown_03004344 = GetBankByPlayerAI(3);
+ else
+ gUnknown_03004344 = GetBankByPlayerAI(1);
+ gSprites[gObjectBankIDs[gUnknown_03004344]].callback = sub_8010520;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ DestroyMenuCursor();
+ PlaySE(SE_SELECT);
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 320;
+ Emitcmd33(1, 10, 0xFFFF);
+ PlayerBufferExecCompleted();
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (gMoveSelectionCursor[gActiveBank] & 1)
+ {
+ nullsub_7(gMoveSelectionCursor[gActiveBank]);
+ gMoveSelectionCursor[gActiveBank] ^= 1;
+ PlaySE(SE_SELECT);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E220();
+ sub_802E2D4();
+ }
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (!(gMoveSelectionCursor[gActiveBank] & 1)
+ && (gMoveSelectionCursor[gActiveBank] ^ 1) < gUnknown_03004348)
+ {
+ nullsub_7(gMoveSelectionCursor[gActiveBank]);
+ gMoveSelectionCursor[gActiveBank] ^= 1;
+ PlaySE(SE_SELECT);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E220();
+ sub_802E2D4();
+ }
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ if (gMoveSelectionCursor[gActiveBank] & 2)
+ {
+ nullsub_7(gMoveSelectionCursor[gActiveBank]);
+ gMoveSelectionCursor[gActiveBank] ^= 2;
+ PlaySE(SE_SELECT);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E220();
+ sub_802E2D4();
+ }
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (!(gMoveSelectionCursor[gActiveBank] & 2)
+ && (gMoveSelectionCursor[gActiveBank] ^ 2) < gUnknown_03004348)
+ {
+ nullsub_7(gMoveSelectionCursor[gActiveBank]);
+ gMoveSelectionCursor[gActiveBank] ^= 2;
+ PlaySE(SE_SELECT);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E220();
+ sub_802E2D4();
+ }
+ }
+ else if (gMain.newKeys & SELECT_BUTTON)
+ {
+ if (gUnknown_03004348 > 1 && !(gBattleTypeFlags & BATTLE_TYPE_LINK))
+ {
+ sub_802E12C(gMoveSelectionCursor[gActiveBank], gUnknown_081FAE80);
+ if (gMoveSelectionCursor[gActiveBank] != 0)
+ gUnknown_03004344 = 0;
+ else
+ gUnknown_03004344 = gMoveSelectionCursor[gActiveBank] + 1;
+ sub_802E3B4(gUnknown_03004344, 27);
+ FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ InitWindow(&gUnknown_03004210, gUnknown_08400D89, 0x290, 0x17, 0x37);
+ sub_8002F44(&gUnknown_03004210);
+ gBattleBankFunc[gActiveBank] = sub_802CA60;
+ }
+ }
+}
+
+extern const u8 gUnknown_08400D49[];
+extern const u8 gUnknown_08400D38[];
+
+void sub_802CA60(void)
+{
+ u8 perMovePPBonuses[4];
+ struct
+ {
+ u16 moves[4];
+ u8 pp[4];
+ u8 filler18[8]; // what is this?
+ } sp0;
+ //struct UnknownStruct1 sp0;
+ u8 totalPPBonuses;
+
+ if (gMain.newKeys & (A_BUTTON | SELECT_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ if (gMoveSelectionCursor[gActiveBank] != gUnknown_03004344)
+ {
+ struct UnknownStruct1 *r9 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4];
+ s32 i;
+
+ i = r9->moves[gMoveSelectionCursor[gActiveBank]];
+ r9->moves[gMoveSelectionCursor[gActiveBank]] = r9->moves[gUnknown_03004344];
+ r9->moves[gUnknown_03004344] = i;
+
+ i = r9->pp[gMoveSelectionCursor[gActiveBank]];
+ r9->pp[gMoveSelectionCursor[gActiveBank]] = r9->pp[gUnknown_03004344];
+ r9->pp[gUnknown_03004344] = i;
+
+ i = r9->unkC[gMoveSelectionCursor[gActiveBank]];
+ r9->unkC[gMoveSelectionCursor[gActiveBank]] = r9->unkC[gUnknown_03004344];
+ r9->unkC[gUnknown_03004344] = i;
+
+ if (gDisableStructs[gActiveBank].unk18_b & gBitTable[gMoveSelectionCursor[gActiveBank]])
+ {
+ gDisableStructs[gActiveBank].unk18_b &= ~gBitTable[gMoveSelectionCursor[gActiveBank]];
+ gDisableStructs[gActiveBank].unk18_b |= gBitTable[gUnknown_03004344];
+ }
+
+ sub_802E1B0();
+
+ for (i = 0; i < 4; i++)
+ perMovePPBonuses[i] = (gBattleMons[gActiveBank].ppBonuses & (3 << (i * 2))) >> (i * 2);
+ totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]];
+ perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gUnknown_03004344];
+ perMovePPBonuses[gUnknown_03004344] = totalPPBonuses;
+
+ totalPPBonuses = 0;
+ for (i = 0; i < 4; i++)
+ totalPPBonuses |= perMovePPBonuses[i] << (i * 2);
+ gBattleMons[gActiveBank].ppBonuses = totalPPBonuses;
+
+ for (i = 0; i < 4; i++)
+ {
+ gBattleMons[gActiveBank].moves[i] = r9->moves[i];
+ gBattleMons[gActiveBank].pp[i] = r9->pp[i];
+ }
+ if (!(gBattleMons[gActiveBank].status2 & 0x200000))
+ {
+ for (i = 0; i < 4; i++)
+ {
+ sp0.moves[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i);
+ sp0.pp[i] = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i);
+ }
+
+ totalPPBonuses = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES);
+ for (i = 0; i < 4; i++)
+ perMovePPBonuses[i] = (totalPPBonuses & (3 << (i * 2))) >> (i * 2);
+
+ i = sp0.moves[gMoveSelectionCursor[gActiveBank]];
+ sp0.moves[gMoveSelectionCursor[gActiveBank]] = sp0.moves[gUnknown_03004344];
+ sp0.moves[gUnknown_03004344] = i;
+
+ i = sp0.pp[gMoveSelectionCursor[gActiveBank]];
+ sp0.pp[gMoveSelectionCursor[gActiveBank]] = sp0.pp[gUnknown_03004344];
+ sp0.pp[gUnknown_03004344] = i;
+
+ totalPPBonuses = perMovePPBonuses[gMoveSelectionCursor[gActiveBank]];
+ perMovePPBonuses[gMoveSelectionCursor[gActiveBank]] = perMovePPBonuses[gUnknown_03004344];
+ perMovePPBonuses[gUnknown_03004344] = totalPPBonuses;
+
+ totalPPBonuses = 0;
+ for (i = 0; i < 4; i++)
+ totalPPBonuses |= perMovePPBonuses[i] << (i * 2);
+
+ for (i = 0; i < 4; i++)
+ {
+ SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MOVE1 + i, (u8 *)&sp0.moves[i]);
+ SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP1 + i, &sp0.pp[i]);
+ }
+ SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_PP_BONUSES, &totalPPBonuses);
+ }
+ }
+ else
+ {
+ sub_802E12C(gUnknown_03004344, gUnknown_08400D49);
+ }
+ gBattleBankFunc[gActiveBank] = sub_802C68C;
+ gMoveSelectionCursor[gActiveBank] = gUnknown_03004344;
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ InitWindow(&gUnknown_03004210, gUnknown_08400D38, 0x290, 0x17, 0x37);
+ sub_8002F44(&gUnknown_03004210);
+ sub_802E220();
+ sub_802E2D4();
+ }
+ if (gMain.newKeys & (B_BUTTON | SELECT_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ nullsub_7(gUnknown_03004344);
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ sub_802E12C(gMoveSelectionCursor[gActiveBank], gUnknown_08400D49);
+ gBattleBankFunc[gActiveBank] = sub_802C68C;
+ FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ InitWindow(&gUnknown_03004210, gUnknown_08400D38, 0x290, 0x17, 0x37);
+ sub_8002F44(&gUnknown_03004210);
+ sub_802E220();
+ sub_802E2D4();
+ }
+ if ((gMain.newKeys & DPAD_LEFT) && (gUnknown_03004344 & 1))
+ {
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D);
+ else
+ nullsub_7(gUnknown_03004344);
+ gUnknown_03004344 ^= 1;
+ PlaySE(SE_SELECT);
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gUnknown_03004344, 0);
+ else
+ sub_802E3B4(gUnknown_03004344, 0x1B);
+ }
+ if ((gMain.newKeys & DPAD_RIGHT) && !(gUnknown_03004344 & 1) && (gUnknown_03004344 ^ 1) < gUnknown_03004348)
+ {
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D);
+ else
+ nullsub_7(gUnknown_03004344);
+ gUnknown_03004344 ^= 1;
+ PlaySE(SE_SELECT);
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gUnknown_03004344, 0);
+ else
+ sub_802E3B4(gUnknown_03004344, 0x1B);
+ }
+ if ((gMain.newKeys & DPAD_UP) && (gUnknown_03004344 & 2))
+ {
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D);
+ else
+ nullsub_7(gUnknown_03004344);
+ gUnknown_03004344 ^= 2;
+ PlaySE(SE_SELECT);
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gUnknown_03004344, 0);
+ else
+ sub_802E3B4(gUnknown_03004344, 0x1B);
+ }
+ if ((gMain.newKeys & DPAD_DOWN) && !(gUnknown_03004344 & 2) && (gUnknown_03004344 ^ 2) < gUnknown_03004348)
+ {
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0x1D);
+ else
+ nullsub_7(gUnknown_03004344);
+ gUnknown_03004344 ^= 2;
+ PlaySE(SE_SELECT);
+ if (gUnknown_03004344 == gMoveSelectionCursor[gActiveBank])
+ sub_802E3B4(gUnknown_03004344, 0);
+ else
+ sub_802E3B4(gUnknown_03004344, 0x1B);
+ }
+}
+
+void sub_802D148(void)
+{
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ m4aSongNumStop(SE_HINSI);
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gPreBattleCallback1;
+ SetMainCallback2(c2_8011A1C);
+ }
+}
+
+void sub_802D18C(void)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ sub_800832C();
+ gBattleBankFunc[gActiveBank] = sub_802D148;
+ }
+ else
+ {
+ m4aSongNumStop(SE_HINSI);
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gPreBattleCallback1;
+ SetMainCallback2(gMain.savedCallback);
+ }
+ }
+}
+
+void sub_802D204(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ PlayerBufferExecCompleted();
+}
+
+// duplicate of sub_802D204
+void sub_802D23C(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ PlayerBufferExecCompleted();
+}
+
+void sub_802D274(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ {
+ nullsub_10(gSaveBlock2.playerGender);
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802D2E0(void)
+{
+ if (--ewram17810[gActiveBank].unk9 == 0xFF)
+ {
+ ewram17810[gActiveBank].unk9 = 0;
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802D31C(void)
+{
+ bool8 r6 = FALSE;
+
+ if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
+ {
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ else
+ {
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
+ && gSprites[gHealthboxIDs[gActiveBank ^ 2]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ if (IsCryPlayingOrClearCrySongs())
+ r6 = FALSE;
+
+ if (r6 && ewram17810[gActiveBank].unk1_0 && ewram17810[gActiveBank ^ 2].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ ewram17810[gActiveBank ^ 2].unk0_7 = 0;
+ ewram17810[gActiveBank ^ 2].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ m4aMPlayContinue(&gMPlay_BGM);
+ else
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ if (IsDoubleBattle())
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank ^ 2]], gActiveBank ^ 2);
+ ewram17810[gActiveBank].unk9 = 3;
+ gBattleBankFunc[gActiveBank] = sub_802D2E0;
+ }
+}
+
+void sub_802D500(void)
+{
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
+ sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
+ if (!ewram17810[gActiveBank ^ 2].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_7)
+ sub_8141828(gActiveBank ^ 2, &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]]);
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank ^ 2].unk0_3)
+ {
+ if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank ^ 2]]);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank ^ 2],
+ &gPlayerParty[gBattlePartyID[gActiveBank ^ 2]],
+ 0);
+ sub_804777C(gActiveBank ^ 2);
+ sub_8043DFC(gHealthboxIDs[gActiveBank ^ 2]);
+ }
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ sub_8045A5C(
+ gHealthboxIDs[gActiveBank],
+ &gPlayerParty[gBattlePartyID[gActiveBank]],
+ 0);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ ewram17840.unk9_0 = 0;
+ gBattleBankFunc[gActiveBank] = sub_802D31C;
+ }
+}
+
+void sub_802D680(void)
+{
+ if (gSprites[gHealthboxIDs[gActiveBank]].callback == SpriteCallbackDummy
+ && ewram17810[gActiveBank].unk1_0)
+ {
+ ewram17810[gActiveBank].unk0_7 = 0;
+ ewram17810[gActiveBank].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ if (ewram17800[gActiveBank].substituteSprite)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
+ gBattleBankFunc[gActiveBank] = sub_802D730;
+ }
+}
+
+void sub_802D730(void)
+{
+ if (!ewram17810[gActiveBank].unk0_6 && !IsCryPlayingOrClearCrySongs())
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802D798(void)
+{
+ if (!ewram17810[gActiveBank].unk0_3 && !ewram17810[gActiveBank].unk0_7)
+ sub_8141828(gActiveBank, &gPlayerParty[gBattlePartyID[gActiveBank]]);
+ if (gSprites[gUnknown_0300434C[gActiveBank]].callback == SpriteCallbackDummy
+ && !ewram17810[gActiveBank].unk0_3)
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gActiveBank]]);
+ sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 0);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ sub_8031F88(gActiveBank);
+ gBattleBankFunc[gActiveBank] = sub_802D680;
+ }
+}
+
+void c3_0802FDF4(u8 taskId)
+{
+ if (!IsCryPlayingOrClearCrySongs())
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ DestroyTask(taskId);
+ }
+}
+
+void bx_t1_healthbar_update(void)
+{
+ s16 r4 = sub_8045C78(gActiveBank, gHealthboxIDs[gActiveBank], 0, 0);
+
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ if (r4 != -1)
+ {
+ sub_80440EC(gHealthboxIDs[gActiveBank], r4, 0);
+ }
+ else
+ {
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802D90C(void)
+{
+ if (gUnknown_03004210.state == 0)
+ PlayerBufferExecCompleted();
+}
+
+// Rare Candy usage, maybe?
+void sub_802D924(u8 taskId)
+{
+ u32 pkmnIndex = (u8)gTasks[taskId].data[0];
+ u8 bank = gTasks[taskId].data[2];
+ s16 gainedExp = gTasks[taskId].data[1];
+
+ if (IsDoubleBattle() == TRUE || pkmnIndex != gBattlePartyID[bank])
+ {
+ struct Pokemon *pkmn = &gPlayerParty[pkmnIndex];
+ u16 species = GetMonData(pkmn, MON_DATA_SPECIES);
+ u8 level = GetMonData(pkmn, MON_DATA_LEVEL);
+ u32 currExp = GetMonData(pkmn, MON_DATA_EXP);
+ u32 nextLvlExp = gExperienceTables[gBaseStats[species].growthRate][level + 1];
+
+ if (currExp + gainedExp >= nextLvlExp)
+ {
+ u8 savedActiveBank;
+
+ SetMonData(pkmn, MON_DATA_EXP, (u8 *)&nextLvlExp);
+ CalculateMonStats(pkmn);
+ gainedExp -= nextLvlExp - currExp;
+ savedActiveBank = gActiveBank;
+ gActiveBank = bank;
+ Emitcmd33(1, 11, gainedExp);
+ gActiveBank = savedActiveBank;
+
+ if (IsDoubleBattle() == TRUE
+ && ((u16)pkmnIndex == gBattlePartyID[bank] || (u16)pkmnIndex == gBattlePartyID[bank ^ 2]))
+ gTasks[taskId].func = sub_802DCB0;
+ else
+ gTasks[taskId].func = sub_802DDC4;
+ }
+ else
+ {
+ currExp += gainedExp;
+ SetMonData(pkmn, MON_DATA_EXP, (u8 *)&currExp);
+ gBattleBankFunc[bank] = sub_802D90C;
+ DestroyTask(taskId);
+ }
+ }
+ else
+ {
+ gTasks[taskId].func = sub_802DA9C;
+ }
+}
+
+void sub_802DA9C(u8 taskId)
+{
+ u8 pkmnIndex = gTasks[taskId].data[0];
+ s32 r9 = gTasks[taskId].data[1];
+ u8 bank = gTasks[taskId].data[2];
+ struct Pokemon *pkmn = &gPlayerParty[pkmnIndex];
+ u8 level = GetMonData(pkmn, MON_DATA_LEVEL);
+ u16 species = GetMonData(pkmn, MON_DATA_SPECIES);
+ u32 exp = GetMonData(pkmn, MON_DATA_EXP);
+ u32 currLvlExp = gExperienceTables[gBaseStats[species].growthRate][level];
+ u32 expToNextLvl;
+
+ exp -= currLvlExp;
+ expToNextLvl = gExperienceTables[gBaseStats[species].growthRate][level + 1] - currLvlExp;
+ sub_8043D84(bank, gHealthboxIDs[bank], expToNextLvl, exp, -r9);
+ PlaySE(SE_EXP);
+ gTasks[taskId].func = sub_802DB6C;
+}
+
+#ifdef NONMATCHING
+void sub_802DB6C(u8 taskId)
+{
+ if (gTasks[taskId].data[10] < 13)
+ {
+ gTasks[taskId].data[10]++;
+ }
+ else
+ {
+ u8 r9 = gTasks[taskId].data[0];
+ s32 r10 = gTasks[taskId].data[1]; //s16?
+ u8 r7 = gTasks[taskId].data[2];
+ s16 r4;
+
+ r4 = sub_8045C78(r7, gHealthboxIDs[r7], 1, 0);
+ sub_8043DFC(gHealthboxIDs[r7]);
+ if (r4 == -1)
+ {
+ struct Pokemon *pkmn;
+ u8 r4;
+ u32 sp4;
+ u16 r0;
+ u32 sp0;
+
+ m4aSongNumStop(SE_EXP);
+ pkmn = &gPlayerParty[r9];
+ r4 = GetMonData(pkmn, MON_DATA_LEVEL);
+ sp4 = GetMonData(pkmn, MON_DATA_EXP);
+ r0 = GetMonData(pkmn, MON_DATA_SPECIES);
+ sp0 = gExperienceTables[gBaseStats[r0].growthRate][r4 + 1];
+ if (sp4 + r10 >= sp0)
+ {
+ u8 r5;
+ u32 asdf;
+
+ SetMonData(pkmn, MON_DATA_EXP, (u8 *)&sp0);
+ CalculateMonStats(pkmn);
+ //r10 -= sp0 - sp4;
+ asdf = sp0 - sp4;
+ //asdf = r10 - (sp0 - sp4);
+ r10 -= asdf;
+ r5 = gActiveBank;
+ gActiveBank = r7;
+ Emitcmd33(1, 11, r10);
+ gActiveBank = r5;
+ gTasks[taskId].func = sub_802DCB0;
+ }
+ else
+ {
+ //u32 asdf = sp4 + r10;
+ sp4 += r10;
+ SetMonData(pkmn, MON_DATA_EXP, (u8 *)&sp4);
+ gBattleBankFunc[r7] = sub_802D90C;
+ DestroyTask(taskId);
+ }
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_802DB6C(u8 taskId)
+{
+ asm_unified("push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0x8\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ mov r8, r0\n\
+ ldr r1, _0802DB98 @ =gTasks\n\
+ lsls r0, 2\n\
+ add r0, r8\n\
+ lsls r0, 3\n\
+ adds r6, r0, r1\n\
+ ldrh r1, [r6, 0x1C]\n\
+ movs r2, 0x1C\n\
+ ldrsh r0, [r6, r2]\n\
+ cmp r0, 0xC\n\
+ bgt _0802DB9C\n\
+ adds r0, r1, 0x1\n\
+ strh r0, [r6, 0x1C]\n\
+ b _0802DC98\n\
+ .align 2, 0\n\
+_0802DB98: .4byte gTasks\n\
+_0802DB9C:\n\
+ ldrb r0, [r6, 0x8]\n\
+ mov r9, r0\n\
+ ldrh r2, [r6, 0xA]\n\
+ mov r10, r2\n\
+ ldrb r7, [r6, 0xC]\n\
+ ldr r5, _0802DC64 @ =gHealthboxIDs\n\
+ adds r5, r7, r5\n\
+ ldrb r1, [r5]\n\
+ adds r0, r7, 0\n\
+ movs r2, 0x1\n\
+ movs r3, 0\n\
+ bl sub_8045C78\n\
+ adds r4, r0, 0\n\
+ lsls r4, 16\n\
+ lsrs r4, 16\n\
+ ldrb r0, [r5]\n\
+ bl sub_8043DFC\n\
+ lsls r4, 16\n\
+ asrs r4, 16\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ cmp r4, r0\n\
+ bne _0802DC98\n\
+ movs r0, 0x21\n\
+ bl m4aSongNumStop\n\
+ movs r0, 0x64\n\
+ mov r1, r9\n\
+ muls r1, r0\n\
+ ldr r0, _0802DC68 @ =gPlayerParty\n\
+ adds r5, r1, r0\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x38\n\
+ bl GetMonData\n\
+ adds r4, r0, 0\n\
+ lsls r4, 24\n\
+ lsrs r4, 24\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x19\n\
+ bl GetMonData\n\
+ str r0, [sp, 0x4]\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xB\n\
+ bl GetMonData\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ ldr r3, _0802DC6C @ =gExperienceTables\n\
+ adds r4, 0x1\n\
+ lsls r4, 2\n\
+ ldr r2, _0802DC70 @ =gBaseStats\n\
+ lsls r1, r0, 3\n\
+ subs r1, r0\n\
+ lsls r1, 2\n\
+ adds r1, r2\n\
+ ldrb r1, [r1, 0x13]\n\
+ movs r0, 0xCA\n\
+ lsls r0, 1\n\
+ muls r0, r1\n\
+ adds r4, r0\n\
+ adds r4, r3\n\
+ ldr r1, [r4]\n\
+ str r1, [sp]\n\
+ mov r2, r10\n\
+ lsls r0, r2, 16\n\
+ asrs r4, r0, 16\n\
+ ldr r0, [sp, 0x4]\n\
+ adds r0, r4\n\
+ cmp r0, r1\n\
+ blt _0802DC7C\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x19\n\
+ mov r2, sp\n\
+ bl SetMonData\n\
+ adds r0, r5, 0\n\
+ bl CalculateMonStats\n\
+ ldr r2, [sp]\n\
+ add r0, sp, 0x4\n\
+ ldrh r0, [r0]\n\
+ subs r2, r0\n\
+ subs r2, r4, r2\n\
+ ldr r4, _0802DC74 @ =gActiveBank\n\
+ ldrb r5, [r4]\n\
+ strb r7, [r4]\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ movs r0, 0x1\n\
+ movs r1, 0xB\n\
+ bl Emitcmd33\n\
+ strb r5, [r4]\n\
+ ldr r0, _0802DC78 @ =sub_802DCB0\n\
+ str r0, [r6]\n\
+ b _0802DC98\n\
+ .align 2, 0\n\
+_0802DC64: .4byte gHealthboxIDs\n\
+_0802DC68: .4byte gPlayerParty\n\
+_0802DC6C: .4byte gExperienceTables\n\
+_0802DC70: .4byte gBaseStats\n\
+_0802DC74: .4byte gActiveBank\n\
+_0802DC78: .4byte sub_802DCB0\n\
+_0802DC7C:\n\
+ str r0, [sp, 0x4]\n\
+ add r2, sp, 0x4\n\
+ adds r0, r5, 0\n\
+ movs r1, 0x19\n\
+ bl SetMonData\n\
+ ldr r1, _0802DCA8 @ =gBattleBankFunc\n\
+ lsls r0, r7, 2\n\
+ adds r0, r1\n\
+ ldr r1, _0802DCAC @ =sub_802D90C\n\
+ str r1, [r0]\n\
+ mov r0, r8\n\
+ bl DestroyTask\n\
+_0802DC98:\n\
+ add sp, 0x8\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\
+_0802DCA8: .4byte gBattleBankFunc\n\
+_0802DCAC: .4byte sub_802D90C\n");
+}
+#endif
+
+void sub_802DCB0(u8 taskId)
+{
+ u8 bank = gTasks[taskId].data[2];
+ u8 pkmnIndex = gTasks[taskId].data[0];
+
+ if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlePartyID[bank ^ 2])
+ bank ^= 2;
+ move_anim_start_t4(bank, bank, bank, 0);
+ gTasks[taskId].func = sub_802DD10;
+}
+
+void sub_802DD10(u8 taskId)
+{
+ u8 bank = gTasks[taskId].data[2];
+
+ if (!ewram17810[bank].unk0_6)
+ {
+ u8 pkmnIndex = gTasks[taskId].data[0];
+
+ GetMonData(&gPlayerParty[pkmnIndex], MON_DATA_LEVEL); // Unused return value
+ if (IsDoubleBattle() == TRUE && pkmnIndex == gBattlePartyID[bank ^ 2])
+ sub_8045A5C(gHealthboxIDs[bank ^ 2], &gPlayerParty[pkmnIndex], 0);
+ else
+ sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[pkmnIndex], 0);
+ gTasks[taskId].func = sub_802DDC4;
+ }
+}
+
+void sub_802DDC4(u8 taskId)
+{
+ u8 pkmnIndex;
+ u8 bank;
+
+ pkmnIndex = gTasks[taskId].data[0];
+ GetMonData(&gPlayerParty[pkmnIndex], MON_DATA_LEVEL); // Unused return value
+ bank = gTasks[taskId].data[2];
+ gBattleBankFunc[bank] = sub_802D90C;
+ DestroyTask(taskId);
+}
+
+void sub_802DE10(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].pos1.y + gSprites[gObjectBankIDs[gActiveBank]].pos2.y > DISPLAY_HEIGHT)
+ {
+ u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+
+ nullsub_9(species);
+ FreeOamMatrix(gSprites[gObjectBankIDs[gActiveBank]].oam.matrixNum);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802DEAC(void)
+{
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ PlayerBufferExecCompleted();
+ }
+}
+
+// Duplicate of sub_802D90C
+void sub_802DF18(void)
+{
+ if (gUnknown_03004210.state == 0)
+ PlayerBufferExecCompleted();
+}
+
+void sub_802DF30(void)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 r4;
+
+ gBattleBankFunc[gActiveBank] = sub_802DF88;
+ r4 = gTasks[gUnknown_0300434C[gActiveBank]].data[0];
+ DestroyTask(gUnknown_0300434C[gActiveBank]);
+ sub_8094E20(r4);
+ }
+}
+
+void sub_802DF88(void)
+{
+ if (gMain.callback2 == sub_800F808 && !gPaletteFade.active)
+ {
+ if (gUnknown_0202E8F4 == 1)
+ Emitcmd34(1, gUnknown_0202E8F5, gUnknown_02038470);
+ else
+ Emitcmd34(1, 6, NULL);
+ if ((gBattleBufferA[gActiveBank][1] & 0xF) == 1)
+ b_link_standby_message();
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802E004(void)
+{
+ if (!gPaletteFade.active)
+ {
+ gBattleBankFunc[gActiveBank] = sub_802E03C;
+ nullsub_14();
+ sub_80A6DCC();
+ }
+}
+
+void sub_802E03C(void)
+{
+ if (gMain.callback2 == sub_800F808 && !gPaletteFade.active)
+ {
+ Emitcmd35(1, gScriptItemId);
+ PlayerBufferExecCompleted();
+ }
+}
+
+void bx_wait_t1(void)
+{
+ if (!gDoingBattleAnim || !ewram17810[gActiveBank].unk0_6)
+ PlayerBufferExecCompleted();
+}
+
+void bx_blink_t1(void)
+{
+ u8 spriteId = gObjectBankIDs[gActiveBank];
+
+ if (gSprites[spriteId].data1 == 32)
+ {
+ gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].invisible = FALSE;
+ gDoingBattleAnim = 0;
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ if (((u16)gSprites[spriteId].data1 % 4) == 0)
+ gSprites[spriteId].invisible ^= 1;
+ gSprites[spriteId].data1++;
+ }
+}
+
+void sub_802E12C(s32 a, const u8 *b)
+{
+ struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4];
+
+ StringCopy(gDisplayedStringBattle, b);
+ StringAppend(gDisplayedStringBattle, gMoveNames[r4->moves[a]]);
+ InitWindow(
+ &gUnknown_03004210,
+ gDisplayedStringBattle,
+ 0x300 + a * 20,
+ (a & 1) ? 11 : 1,
+ (a < 2) ? 0x37 : 0x39);
+ sub_8002F44(&gUnknown_03004210);
+}
+
+void sub_802E1B0(void)
+{
+ struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4];
+ s32 i;
+
+ gUnknown_03004348 = 0;
+ FillWindowRect(&gUnknown_03004210, 0x1016, 1, 0x37, 0x14, 0x3A);
+ for (i = 0; i < 4; i++)
+ {
+ nullsub_7(i);
+ sub_802E12C(i, gUnknown_08400D49);
+ if (r4->moves[i] != 0)
+ gUnknown_03004348++;
+ }
+}
+
+void sub_802E220(void)
+{
+ if (gBattleBufferA[gActiveBank][2] != 1)
+ {
+ struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4];
+ u8 *str = gDisplayedStringBattle;
+
+ str = StringCopy(str, gUnknown_08400D49);
+ str[0] = EXT_CTRL_CODE_BEGIN;
+ str[1] = 0x11;
+ str[2] = 2;
+ str += 3;
+ str[0] = EXT_CTRL_CODE_BEGIN;
+ str[1] = 0x14;
+ str[2] = 6;
+ str += 3;
+ str = ConvertIntToDecimalStringN(str, r4->pp[gMoveSelectionCursor[gActiveBank]], 1, 2);
+ *str++ = CHAR_SLASH;
+ ConvertIntToDecimalStringN(str, r4->unkC[gMoveSelectionCursor[gActiveBank]], 1, 2);
+ InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2A2, 0x19, 0x37);
+ sub_8002F44(&gUnknown_03004210);
+ }
+}
+
+extern const u8 gUnknown_08400D52[];
+extern const u8 gTypeNames[][7];
+
+void sub_802E2D4(void)
+{
+ if (gBattleBufferA[gActiveBank][2] == 1)
+ {
+ FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x37, 0x1C, 0x3A);
+ InitWindow(&gUnknown_03004210, gUnknown_08400D52, 0x290, 0x13, 0x37);
+ }
+ else
+ {
+ struct UnknownStruct1 *r4 = (struct UnknownStruct1 *)&gBattleBufferA[gActiveBank][4];
+ u8 *str = gDisplayedStringBattle;
+
+ str = StringCopy(str, gUnknown_08400D49);
+ StringCopy(str, gTypeNames[gBattleMoves[r4->moves[gMoveSelectionCursor[gActiveBank]]].type]);
+ FillWindowRect(&gUnknown_03004210, 0x1016, 0x17, 0x39, 0x1C, 0x3A);
+ InitWindow(&gUnknown_03004210, gDisplayedStringBattle, 0x2C0, 0x17, 0x39);
+ }
+ sub_8002F44(&gUnknown_03004210);
+}
+
+const u8 gUnknown_081FAE89[][2] =
+{
+ { 8, 120},
+ {88, 120},
+ { 8, 136},
+ {88, 136},
+};
+
+const u8 gUnknown_081FAE91[][2] =
+{
+ {144, 120},
+ {190, 120},
+ {144, 136},
+ {190, 136},
+ { 72, 72},
+ { 32, 90},
+ { 80, 80},
+ { 80, 88},
+};
+
+void sub_802E3B4(u8 a, int unused)
+{
+ sub_814A958(0x48);
+ sub_814A880(gUnknown_081FAE89[a][0], gUnknown_081FAE89[a][1]);
+}
+
+void nullsub_7(u8 a)
+{
+}
+
+void sub_802E3E4(u8 a, int unused)
+{
+ sub_814A958(0x2A);
+ sub_814A880(gUnknown_081FAE91[a][0], gUnknown_081FAE91[a][1]);
+}
+
+void nullsub_8(u8 a)
+{
+}
+
+void sub_802E414(void)
+{
+ SetMainCallback2(ReshowBattleScreenAfterMenu);
+}
+
+void sub_802E424(void)
+{
+ SetMainCallback2(ReshowBattleScreenAfterMenu);
+}
+
+void sub_802E434(void)
+{
+ if (!ewram17810[gActiveBank].unk0_4)
+ PlayerBufferExecCompleted();
+}
+
+void sub_802E460(void)
+{
+ if (!ewram17810[gActiveBank].unk0_5)
+ PlayerBufferExecCompleted();
+}
+
+void b_link_standby_message(void)
+{
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ sub_8002EB0(&gUnknown_03004210, gUnknown_08400CE0, 0x90, 2, 15);
+ }
+}
+
+void PlayerHandleGetAttributes(void)
+{
+ u8 unkData[0x100];
+ u32 offset = 0;
+ u8 r4;
+ s32 i;
+
+ if (gBattleBufferA[gActiveBank][2] == 0)
+ {
+ offset += dp01_getattr_by_ch1_for_player_pokemon_(gBattlePartyID[gActiveBank], unkData);
+ }
+ else
+ {
+ r4 = gBattleBufferA[gActiveBank][2];
+ for (i = 0; i < 6; i++)
+ {
+ if (r4 & 1)
+ offset += dp01_getattr_by_ch1_for_player_pokemon_(i, unkData + offset);
+ r4 >>= 1;
+ }
+ }
+ Emitcmd29(1, offset, unkData);
+ PlayerBufferExecCompleted();
+}
+
+// Duplicate of dp01_getattr_by_ch1_for_player_pokemon
+u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer)
+{
+ struct BattlePokemon battlePokemon;
+ struct UnknownStruct3 moveData;
+ u8 nickname[20];
+ u8 *src;
+ s16 data16;
+ u32 data32;
+ s32 size = 0;
+
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
+ battlePokemon.item = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
+ for (size = 0; size < 4; size++)
+ {
+ battlePokemon.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
+ battlePokemon.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
+ }
+ battlePokemon.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
+ battlePokemon.friendship = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
+ battlePokemon.experience = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
+ battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
+ battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
+ battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
+ battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
+ battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
+ battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
+ battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
+ battlePokemon.status1 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
+ battlePokemon.level = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
+ battlePokemon.hp = GetMonData(&gPlayerParty[a], MON_DATA_HP);
+ battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
+ battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
+ battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
+ battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD);
+ battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
+ battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
+ battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG);
+ battlePokemon.altAbility = GetMonData(&gPlayerParty[a], MON_DATA_ALT_ABILITY);
+ battlePokemon.otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
+ GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname);
+ StringCopy10(battlePokemon.nickname, nickname);
+ GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
+ src = (u8 *)&battlePokemon;
+ for (size = 0; size < sizeof(battlePokemon); size++)
+ buffer[size] = src[size];
+ break;
+ case 1:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 2:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 3:
+ for (size = 0; size < 4; size++)
+ {
+ moveData.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
+ moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
+ }
+ moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
+ src = (u8 *)&moveData;
+ for (size = 0; size < sizeof(moveData); size++)
+ buffer[size] = src[size];
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 8:
+ for (size = 0; size < 4; size++)
+ buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
+ buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
+ size++;
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9);
+ size = 1;
+ break;
+ case 17:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ size = 3;
+ break;
+ case 18:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ size = 3;
+ break;
+ case 19:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_EV);
+ size = 1;
+ break;
+ case 20:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_EV);
+ size = 1;
+ break;
+ case 21:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_EV);
+ size = 1;
+ break;
+ case 22:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_EV);
+ size = 1;
+ break;
+ case 23:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV);
+ size = 1;
+ break;
+ case 24:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV);
+ size = 1;
+ break;
+ case 25:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
+ size = 1;
+ break;
+ case 26:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKERUS);
+ size = 1;
+ break;
+ case 27:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION);
+ size = 1;
+ break;
+ case 28:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL);
+ size = 1;
+ break;
+ case 29:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_GAME);
+ size = 1;
+ break;
+ case 30:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKEBALL);
+ size = 1;
+ break;
+ case 31:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
+ buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
+ buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
+ buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
+ buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
+ buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
+ size = 6;
+ break;
+ case 32:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
+ size = 1;
+ break;
+ case 33:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
+ size = 1;
+ break;
+ case 34:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
+ size = 1;
+ break;
+ case 35:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
+ size = 1;
+ break;
+ case 36:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
+ size = 1;
+ break;
+ case 37:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
+ size = 1;
+ break;
+ case 38:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ buffer[3] = (data32 & 0xFF000000) >> 24;
+ size = 4;
+ break;
+ case 39:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 40:
+ data32 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
+ buffer[0] = (data32 & 0x000000FF);
+ buffer[1] = (data32 & 0x0000FF00) >> 8;
+ buffer[2] = (data32 & 0x00FF0000) >> 16;
+ buffer[3] = (data32 & 0xFF000000) >> 24;
+ size = 4;
+ break;
+ case 41:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
+ size = 1;
+ break;
+ case 42:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_HP);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 43:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 44:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 45:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 46:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 47:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 48:
+ data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
+ buffer[0] = data16;
+ buffer[1] = data16 >> 8;
+ size = 2;
+ break;
+ case 49:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL);
+ size = 1;
+ break;
+ case 50:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY);
+ size = 1;
+ break;
+ case 51:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE);
+ size = 1;
+ break;
+ case 52:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART);
+ size = 1;
+ break;
+ case 53:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH);
+ size = 1;
+ break;
+ case 54:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN);
+ size = 1;
+ break;
+ case 55:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON);
+ size = 1;
+ break;
+ case 56:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON);
+ size = 1;
+ break;
+ case 57:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON);
+ size = 1;
+ break;
+ case 58:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON);
+ size = 1;
+ break;
+ case 59:
+ buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON);
+ size = 1;
+ break;
+ }
+ return size;
+}
+
+void PlayerHandlecmd1(void)
+{
+ struct BattlePokemon battleMon; // I think this is a BattlePokemon
+ u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBank][1];
+ u8 i;
+
+ for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
+ dst[i] = src[i];
+ Emitcmd29(1, gBattleBufferA[gActiveBank][2], dst);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleSetAttributes(void)
+{
+ u8 r4;
+ u8 i;
+
+ if (gBattleBufferA[gActiveBank][2] == 0)
+ {
+ dp01_setattr_by_ch1_for_player_pokemon(gBattlePartyID[gActiveBank]);
+ }
+ else
+ {
+ r4 = gBattleBufferA[gActiveBank][2];
+ for (i = 0; i < 6; i++)
+ {
+ if (r4 & 1)
+ dp01_setattr_by_ch1_for_player_pokemon(i);
+ r4 >>= 1;
+ }
+ }
+ PlayerBufferExecCompleted();
+}
+
+// Duplicate of sub_811EC68
+void dp01_setattr_by_ch1_for_player_pokemon(u8 a)
+{
+ struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
+ struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3];
+ s32 i;
+
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ {
+ u8 iv;
+
+ SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species);
+ SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item);
+ for (i = 0; i < 4; i++)
+ {
+ SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]);
+ }
+ SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses);
+ SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship);
+ SetMonData(&gPlayerParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience);
+ iv = battlePokemon->hpIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, (u8 *)&iv);
+ iv = battlePokemon->attackIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, (u8 *)&iv);
+ iv = battlePokemon->defenseIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv);
+ iv = battlePokemon->speedIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv);
+ iv = battlePokemon->spAttackIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv);
+ iv = battlePokemon->spDefenseIV;
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv);
+ SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality);
+ SetMonData(&gPlayerParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1);
+ SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level);
+ SetMonData(&gPlayerParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp);
+ SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense);
+ }
+ break;
+ case 1:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 2:
+ SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 3:
+ for (i = 0; i < 4; i++)
+ {
+ SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]);
+ }
+ SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses);
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 8:
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
+ SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
+ break;
+ case 9:
+ case 10:
+ case 11:
+ case 12:
+ SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 17:
+ SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 18:
+ SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 19:
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 20:
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 21:
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 22:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 23:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 24:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 25:
+ SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 26:
+ SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 27:
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 28:
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 29:
+ SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 30:
+ SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 31:
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
+ break;
+ case 32:
+ SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 33:
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 34:
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 35:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 36:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 37:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 38:
+ SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 39:
+ SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 40:
+ SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 41:
+ SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 42:
+ SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 43:
+ SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 44:
+ SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 45:
+ SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 46:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 47:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 48:
+ SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 49:
+ SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 50:
+ SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 51:
+ SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 52:
+ SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 53:
+ SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 54:
+ SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 55:
+ SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 56:
+ SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 57:
+ SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 58:
+ SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ case 59:
+ SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
+ break;
+ }
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+}
+
+void PlayerHandlecmd3(void)
+{
+ u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 i;
+
+ for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
+ dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleLoadPokeSprite(void)
+{
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ gBattleBankFunc[gActiveBank] = bx_0802E404;
+}
+
+void PlayerHandleSendOutPoke(void)
+{
+ sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
+ gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ gActionSelectionCursor[gActiveBank] = 0;
+ gMoveSelectionCursor[gActiveBank] = 0;
+ sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]);
+ gBattleBankFunc[gActiveBank] = sub_802D798;
+}
+
+void sub_802F934(u8 bank, u8 b)
+{
+ u16 species;
+
+ sub_8032AA8(bank, b);
+ gBattlePartyID[bank] = gBattleBufferA[bank][1];
+ species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
+ GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank));
+ gObjectBankIDs[bank] = CreateSprite(
+ &gUnknown_02024E8C,
+ sub_8077ABC(bank, 2),
+ sub_8077F68(bank),
+ sub_8079E90(bank));
+ gSprites[gUnknown_0300434C[bank]].data1 = gObjectBankIDs[bank];
+ gSprites[gObjectBankIDs[bank]].data0 = bank;
+ gSprites[gObjectBankIDs[bank]].data2 = species;
+ gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
+ StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
+ gSprites[gObjectBankIDs[bank]].invisible = TRUE;
+ gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gUnknown_0300434C[bank]].data0 = sub_8046400(0, 0xFF);
+}
+
+void PlayerHandleReturnPokeToBall(void)
+{
+ if (gBattleBufferA[gActiveBank][1] == 0)
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ gBattleBankFunc[gActiveBank] = sub_802FB2C;
+ }
+ else
+ {
+ FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
+ DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
+ sub_8043DB0(gHealthboxIDs[gActiveBank]);
+ PlayerBufferExecCompleted();
+ }
+}
+
+void sub_802FB2C(void)
+{
+ switch (ewram17810[gActiveBank].unk4)
+ {
+ case 0:
+ if (ewram17800[gActiveBank].substituteSprite)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ ewram17810[gActiveBank].unk4 = 1;
+ break;
+ case 1:
+ if (!ewram17810[gActiveBank].unk0_6)
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1);
+ gBattleBankFunc[gActiveBank] = sub_802DEAC;
+ }
+ }
+}
+
+void PlayerHandleTrainerThrow(void)
+{
+ s16 r7;
+
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ if (GetBankIdentity(gActiveBank) & 2)
+ r7 = 16;
+ else
+ r7 = -16;
+ }
+ else
+ {
+ r7 = 0;
+ }
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
+ GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
+ gObjectBankIDs[gActiveBank] = CreateSprite(
+ &gUnknown_02024E8C,
+ r7 + 80,
+ (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
+ sub_8079E90(gActiveBank));
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = -2;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBank] = sub_802D204;
+}
+
+void PlayerHandleTrainerSlide(void)
+{
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
+ GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
+ gObjectBankIDs[gActiveBank] = CreateSprite(
+ &gUnknown_02024E8C,
+ 80,
+ (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
+ 30);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96;
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = 2;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBank] = sub_802D23C;
+}
+
+void PlayerHandleTrainerSlideBack(void)
+{
+ oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = 50;
+ gSprites[gObjectBankIDs[gActiveBank]].data2 = -40;
+ gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
+ StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], SpriteCallbackDummy);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ gBattleBankFunc[gActiveBank] = sub_802D274;
+}
+
+void PlayerHandlecmd10(void)
+{
+ if (ewram17810[gActiveBank].unk4 == 0)
+ {
+ if (ewram17800[gActiveBank].substituteSprite)
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ ewram17810[gActiveBank].unk4++;
+ }
+ else
+ {
+ if (ewram17810[gActiveBank].unk0_6 == 0)
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ PlaySE12WithPanning(SE_POKE_DEAD, -64);
+ gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
+ gSprites[gObjectBankIDs[gActiveBank]].data2 = 5;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC;
+ gBattleBankFunc[gActiveBank] = sub_802DE10;
+ }
+ }
+}
+
+void PlayerHandlecmd11(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd12(void)
+{
+ ewram17840.unk8 = 4;
+ gDoingBattleAnim = 1;
+ move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3);
+ gBattleBankFunc[gActiveBank] = bx_wait_t1;
+}
+
+void PlayerHandleBallThrow(void)
+{
+ u8 var = gBattleBufferA[gActiveBank][1];
+
+ ewram17840.unk8 = var;
+ gDoingBattleAnim = 1;
+ move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3);
+ gBattleBankFunc[gActiveBank] = bx_wait_t1;
+}
+
+void PlayerHandlePuase(void)
+{
+ u8 var = gBattleBufferA[gActiveBank][1];
+
+ // WTF is this??
+ while (var != 0)
+ var--;
+
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleMoveAnimation(void)
+{
+ if (!mplay_80342A4(gActiveBank))
+ {
+ u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+
+ gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3];
+ gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
+ gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
+ gHappinessMoveAnim = gBattleBufferA[gActiveBank][10];
+ gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
+ gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16];
+ gPID_perBank[gActiveBank] = *gDisableStructMoveAnim;
+ if (sub_8031720(r0, gUnknown_0202F7C4) != 0)
+ {
+ // Dead code. sub_8031720 always returns 0.
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ ewram17810[gActiveBank].unk4 = 0;
+ gBattleBankFunc[gActiveBank] = sub_8030190;
+ }
+ }
+}
+
+void sub_8030190(void)
+{
+ u16 r4 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
+ u8 r7 = gBattleBufferA[gActiveBank][11];
+
+ switch (ewram17810[gActiveBank].unk4)
+ {
+ case 0:
+ if (ewram17800[gActiveBank].substituteSprite == 1 && ewram17800[gActiveBank].unk0_3 == 0)
+ {
+ ewram17800[gActiveBank].unk0_3 = 1;
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
+ }
+ ewram17810[gActiveBank].unk4 = 1;
+ break;
+ case 1:
+ if (ewram17810[gActiveBank].unk0_6 == 0)
+ {
+ sub_80326EC(0);
+ ExecuteMoveAnim(r4);
+ ewram17810[gActiveBank].unk4 = 2;
+ }
+ break;
+ case 2:
+ gAnimScriptCallback();
+ if (!gAnimScriptActive)
+ {
+ sub_80326EC(1);
+ if (ewram17800[gActiveBank].substituteSprite == 1 && r7 < 2)
+ {
+ move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
+ ewram17800[gActiveBank].unk0_3 = 0;
+ }
+ ewram17810[gActiveBank].unk4 = 3;
+ }
+ break;
+ case 3:
+ if (ewram17810[gActiveBank].unk0_6 == 0)
+ {
+ sub_8031F24();
+ sub_80324BC(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ ewram17810[gActiveBank].unk4 = 0;
+ PlayerBufferExecCompleted();
+ }
+ break;
+ }
+}
+
+void PlayerHandlePrintString(void)
+{
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
+ gBattleBankFunc[gActiveBank] = sub_802DF18;
+}
+
+void PlayerHandlePrintStringPlayerOnly(void)
+{
+ if (GetBankSide(gActiveBank) == 0)
+ PlayerHandlePrintString();
+ else
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd18(void)
+{
+ int r4;
+
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 160;
+ FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18);
+ FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38);
+
+ gBattleBankFunc[gActiveBank] = sub_802C098;
+
+ InitWindow(&gUnknown_03004210, gUnknown_08400CF3, 400, 18, 35);
+ sub_8002F44(&gUnknown_03004210);
+ sub_814A5C0(0, 0xFFFF, 12, 11679, 0);
+
+ for (r4 = 0; r4 < 4; r4++)
+ nullsub_8(r4);
+
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+
+ StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CA8);
+ InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35);
+ sub_8002F44(&gUnknown_03004210);
+}
+
+void PlayerHandlecmd19()
+{
+}
+
+void PlayerHandlecmd20(void)
+{
+ sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
+ sub_80304A8();
+ gBattleBankFunc[gActiveBank] = sub_802C68C;
+}
+
+void sub_80304A8(void)
+{
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 320;
+ sub_802E1B0();
+ gUnknown_03004344 = 0xFF;
+ sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
+ if (gBattleBufferA[gActiveBank][2] != 1)
+ {
+ InitWindow(&gUnknown_03004210, gUnknown_08400D38, 656, 23, 55);
+ sub_8002F44(&gUnknown_03004210);
+ }
+ sub_802E220();
+ sub_802E2D4();
+}
+
+void PlayerHandleOpenBag(void)
+{
+ s32 i;
+
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gBattleBankFunc[gActiveBank] = sub_802E004;
+ gBankInMenu = gActiveBank;
+ for (i = 0; i < 3; i++)
+ gUnknown_02038470[i] = gBattleBufferA[gActiveBank][1 + i];
+}
+
+void PlayerHandlecmd22(void)
+{
+ s32 i;
+
+ gUnknown_0300434C[gActiveBank] = CreateTask(TaskDummy, 0xFF);
+ gTasks[gUnknown_0300434C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF;
+ ewram[0x16054] = gBattleBufferA[gActiveBank][1] >> 4;
+ ewram[0x1609D] = gBattleBufferA[gActiveBank][2];
+ ewram[0x160C0] = gBattleBufferA[gActiveBank][3];
+ for (i = 0; i < 3; i++)
+ gUnknown_02038470[i] = gBattleBufferA[gActiveBank][4 + i];
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gBattleBankFunc[gActiveBank] = sub_802DF30;
+ gBankInMenu = gActiveBank;
+}
+
+void PlayerHandlecmd23(void)
+{
+ BattleMusicStop();
+ BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleHealthBarUpdate(void)
+{
+ s16 r7;
+
+ load_gfxc_health_bar(0);
+ r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ if (r7 != 0x7FFF)
+ {
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+ u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
+
+ sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, curHP, r7);
+ }
+ else
+ {
+ u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
+
+ sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
+ sub_80440EC(gHealthboxIDs[gActiveBank], 0, 0);
+ }
+ gBattleBankFunc[gActiveBank] = bx_t1_healthbar_update;
+}
+
+void PlayerHandleExpBarUpdate(void)
+{
+ u8 r7 = gBattleBufferA[gActiveBank][1];
+
+ if (GetMonData(&gPlayerParty[r7], MON_DATA_LEVEL) >= 100)
+ {
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ u16 r4;
+ u8 taskId;
+
+ load_gfxc_health_bar(1);
+ GetMonData(&gPlayerParty[r7], MON_DATA_SPECIES); // unused return value
+ r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+ taskId = CreateTask(sub_802D924, 10);
+ gTasks[taskId].data[0] = r7;
+ gTasks[taskId].data[1] = r4;
+ gTasks[taskId].data[2] = gActiveBank;
+ gBattleBankFunc[gActiveBank] = nullsub_91;
+ }
+}
+
+void PlayerHandleStatusIconUpdate(void)
+{
+ if (!mplay_80342A4(gActiveBank))
+ {
+ sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9);
+ ewram17810[gActiveBank].unk0_4 = 0;
+ gBattleBankFunc[gActiveBank] = sub_802E434;
+ }
+}
+
+void PlayerHandleStatusAnimation(void)
+{
+ if (!mplay_80342A4(gActiveBank))
+ {
+ move_anim_start_t2_for_situation(
+ gBattleBufferA[gActiveBank][1],
+ gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
+ gBattleBankFunc[gActiveBank] = sub_802E434;
+ }
+}
+
+void PlayerHandleStatusXor(void)
+{
+ u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1];
+
+ SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd29(void)
+{
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleDMATransfer(void)
+{
+ u32 val1 = gBattleBufferA[gActiveBank][1]
+ | (gBattleBufferA[gActiveBank][2] << 8)
+ | (gBattleBufferA[gActiveBank][3] << 16)
+ | (gBattleBufferA[gActiveBank][4] << 24);
+ u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8);
+
+ const u8 *src = &gBattleBufferA[gActiveBank][7];
+ u8 *dst = (u8 *)val1;
+ u32 size = val2;
+
+ while (1)
+ {
+ if (size <= 0x1000)
+ {
+ DmaCopy16(3, src, dst, size);
+ break;
+ }
+ DmaCopy16(3, src, dst, 0x1000);
+ src += 0x1000;
+ dst += 0x1000;
+ size -= 0x1000;
+ }
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd31(void)
+{
+ PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd32(void)
+{
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd33(void)
+{
+ Emitcmd33(1, 0, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd34(void)
+{
+ Emitcmd34(1, 0, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd35(void)
+{
+ Emitcmd35(1, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd36(void)
+{
+ Emitcmd36(1, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd37(void)
+{
+ gUnknown_020238C8.unk0_0 = 0;
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd38(void)
+{
+ gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd39(void)
+{
+ gUnknown_020238C8.unk0_7 = 0;
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd40(void)
+{
+ gUnknown_020238C8.unk0_7 ^= 1;
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleHitAnimation(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
+ {
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ gDoingBattleAnim = 1;
+ gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
+ sub_8047858(gActiveBank);
+ gBattleBankFunc[gActiveBank] = bx_blink_t1;
+ }
+}
+
+void PlayerHandlecmd42(void)
+{
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleEffectivenessSound(void)
+{
+ s8 pan;
+
+ if (GetBankSide(gActiveBank) == 0)
+ pan = -64;
+ else
+ pan = 63;
+ PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd44(void)
+{
+ PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleFaintingCry(void)
+{
+ u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+
+ PlayCry3(species, -25, 5);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleIntroSlide(void)
+{
+ sub_80E43C0(gBattleBufferA[gActiveBank][1]);
+ gUnknown_02024DE8 |= 1;
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleTrainerBallThrow(void)
+{
+ u8 paletteNum;
+ u8 taskId;
+
+ oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = 50;
+ gSprites[gObjectBankIDs[gActiveBank]].data2 = -40;
+ gSprites[gObjectBankIDs[gActiveBank]].data4 = gSprites[gObjectBankIDs[gActiveBank]].pos1.y;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_8078B34;
+ gSprites[gObjectBankIDs[gActiveBank]].data5 = gActiveBank;
+ StoreSpriteCallbackInData6(&gSprites[gObjectBankIDs[gActiveBank]], sub_8030E38);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
+ paletteNum = AllocSpritePalette(0xD6F8);
+ LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum;
+ taskId = CreateTask(task05_08033660, 5);
+ gTasks[taskId].data[0] = gActiveBank;
+ if (ewram17810[gActiveBank].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ ewram17810[4].unk9 |= 1;
+ gBattleBankFunc[gActiveBank] = nullsub_91;
+}
+
+void sub_8030E38(struct Sprite *sprite)
+{
+ u8 r4 = sprite->data5;
+
+ FreeSpriteOamMatrix(sprite);
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
+ DestroySprite(sprite);
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[r4]], r4);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0);
+}
+
+void task05_08033660(u8 taskId)
+{
+ if (gTasks[taskId].data[1] < 31)
+ {
+ gTasks[taskId].data[1]++;
+ }
+ else
+ {
+ u8 savedActiveBank = gActiveBank;
+
+ gActiveBank = gTasks[taskId].data[0];
+ if (!IsDoubleBattle() || (gBattleTypeFlags & 0x40))
+ {
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ sub_802F934(gActiveBank, 0);
+ }
+ else
+ {
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ sub_802F934(gActiveBank, 0);
+ gActiveBank ^= 2;
+ gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
+ sub_802F934(gActiveBank, 0);
+ gActiveBank ^= 2;
+ }
+ gBattleBankFunc[gActiveBank] = sub_802D500;
+ gActiveBank = savedActiveBank;
+ DestroyTask(taskId);
+ }
+}
+
+void PlayerHandlecmd48(void)
+{
+ if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
+ {
+ PlayerBufferExecCompleted();
+ }
+ else
+ {
+ ewram17810[gActiveBank].unk0_0 = 1;
+ gUnknown_02024E68[gActiveBank] = sub_8044804(gActiveBank, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
+ ewram17810[gActiveBank].unk5 = 0;
+ if (gBattleBufferA[gActiveBank][2] != 0)
+ ewram17810[gActiveBank].unk5 = 0x5D;
+ gBattleBankFunc[gActiveBank] = sub_8031064;
+ }
+}
+
+void sub_8031064(void)
+{
+ if (ewram17810[gActiveBank].unk5++ > 0x5C)
+ {
+ ewram17810[gActiveBank].unk5 = 0;
+ PlayerBufferExecCompleted();
+ }
+}
+
+void PlayerHandlecmd49(void)
+{
+ if (ewram17810[gActiveBank].unk0_0)
+ gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd50(void)
+{
+ dp11b_obj_free(gActiveBank, 1);
+ dp11b_obj_free(gActiveBank, 0);
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleSpriteInvisibility(void)
+{
+ if (AnimBankSpriteExists(gActiveBank))
+ {
+ gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
+ sub_8031F88(gActiveBank);
+ }
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleBattleAnimation(void)
+{
+ if (!mplay_80342A4(gActiveBank))
+ {
+ u8 val2 = gBattleBufferA[gActiveBank][1];
+ u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+
+ if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, val2, val))
+ PlayerBufferExecCompleted();
+ else
+ gBattleBankFunc[gActiveBank] = sub_802E460;
+ }
+}
+
+void PlayerHandleLinkStandbyMsg(void)
+{
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ b_link_standby_message();
+ // fall through
+ case 1:
+ dp11b_obj_free(gActiveBank, 1);
+ dp11b_obj_free(gActiveBank, 0);
+ break;
+ case 2:
+ b_link_standby_message();
+ break;
+ }
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandleResetActionMoveSelection(void)
+{
+ switch (gBattleBufferA[gActiveBank][1])
+ {
+ case 0:
+ gActionSelectionCursor[gActiveBank] = 0;
+ gMoveSelectionCursor[gActiveBank] = 0;
+ break;
+ case 1:
+ gActionSelectionCursor[gActiveBank] = 0;
+ break;
+ case 2:
+ gMoveSelectionCursor[gActiveBank] = 0;
+ break;
+ }
+ PlayerBufferExecCompleted();
+}
+
+void PlayerHandlecmd55(void)
+{
+ gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ FadeOutMapMusic(5);
+ BeginFastPaletteFade(3);
+ PlayerBufferExecCompleted();
+ gBattleBankFunc[gActiveBank] = sub_802D18C;
+}
+
+void PlayerHandlecmd56(void)
+{
+}
diff --git a/src/battle/battle_controller_safari.c b/src/battle/battle_controller_safari.c
new file mode 100644
index 000000000..e05578c31
--- /dev/null
+++ b/src/battle/battle_controller_safari.c
@@ -0,0 +1,709 @@
+#include "global.h"
+#include "battle_anim_81258BC.h"
+#include "battle.h"
+#include "battle_message.h"
+#include "data2.h"
+#include "link.h"
+#include "main.h"
+#include "menu_cursor.h"
+#include "palette.h"
+#include "rom3.h"
+#include "songs.h"
+#include "sound.h"
+#include "text.h"
+#include "util.h"
+
+extern struct Window gUnknown_03004210;
+extern u8 gDisplayedStringBattle[];
+extern u8 gActionSelectionCursor[];
+
+extern const u8 gUnknown_08400CBB[];
+extern u8 gActiveBank;
+extern const u8 gUnknown_08400D15[];
+
+extern void *gBattleBankFunc[];
+extern u16 gUnknown_030042A0;
+extern u16 gUnknown_030042A4;
+extern u8 gBattleBufferA[][0x200];
+extern bool8 gDoingBattleAnim;
+extern u8 gObjectBankIDs[];
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern u16 gBattleTypeFlags;
+extern u32 gBattleExecBuffer;
+extern u16 gScriptItemId;
+extern MainCallback gPreBattleCallback1;
+extern u8 gBankInMenu;
+extern u8 gHealthboxIDs[];
+extern u16 gBattlePartyID[];
+extern u16 gUnknown_02024DE8;
+extern u8 gBattleOutcome;
+
+extern u8 GetBankSide(u8);
+extern u8 GetBankByPlayerAI(u8);
+extern u8 GetBankIdentity(u8);
+extern void LoadPlayerTrainerBankSprite();
+extern u8 sub_8079E90();
+extern void sub_80313A0(struct Sprite *);
+extern void sub_810BADC(void);
+extern void sub_8045A5C();
+extern void sub_80E43C0();
+extern void sub_804777C();
+extern void sub_8043DFC();
+extern bool8 move_anim_start_t3();
+
+#if ENGLISH
+#define SUB_812BB10_TILE_DATA_OFFSET 440
+#elif GERMAN
+#define SUB_812BB10_TILE_DATA_OFFSET 444
+#endif
+
+// this file's functions
+void SafariHandleGetAttributes(void);
+void SafariHandlecmd1(void);
+void SafariHandleSetAttributes(void);
+void SafariHandlecmd3(void);
+void SafariHandleLoadPokeSprite(void);
+void SafariHandleSendOutPoke(void);
+void SafariHandleReturnPokeToBall(void);
+void SafariHandleTrainerThrow(void);
+void SafariHandleTrainerSlide(void);
+void SafariHandleTrainerSlideBack(void);
+void SafariHandlecmd10(void);
+void SafariHandlecmd11(void);
+void SafariHandlecmd12(void);
+void SafariHandleBallThrow(void);
+void SafariHandlePuase(void);
+void SafariHandleMoveAnimation(void);
+void SafariHandlePrintString(void);
+void SafariHandlePrintStringPlayerOnly(void);
+void SafariHandlecmd18(void);
+void SafariHandlecmd19(void);
+void SafariHandlecmd20(void);
+void SafariHandleOpenBag(void);
+void SafariHandlecmd22(void);
+void SafariHandlecmd23(void);
+void SafariHandleHealthBarUpdate(void);
+void SafariHandleExpBarUpdate(void);
+void SafariHandleStatusIconUpdate(void);
+void SafariHandleStatusAnimation(void);
+void SafariHandleStatusXor(void);
+void SafariHandlecmd29(void);
+void SafariHandleDMATransfer(void);
+void SafariHandlecmd31(void);
+void SafariHandlecmd32(void);
+void SafariHandlecmd33(void);
+void SafariHandlecmd34(void);
+void SafariHandlecmd35(void);
+void SafariHandlecmd36(void);
+void SafariHandlecmd37(void);
+void SafariHandlecmd38(void);
+void SafariHandlecmd39(void);
+void SafariHandlecmd40(void);
+void SafariHandleHitAnimation(void);
+void SafariHandlecmd42(void);
+void SafariHandleEffectivenessSound(void);
+void SafariHandlecmd44(void);
+void SafariHandleFaintingCry(void);
+void SafariHandleIntroSlide(void);
+void SafariHandleTrainerBallThrow(void);
+void SafariHandlecmd48(void);
+void SafariHandlecmd49(void);
+void SafariHandlecmd50(void);
+void SafariHandleSpriteInvisibility(void);
+void SafariHandleBattleAnimation(void);
+void SafariHandleLinkStandbyMsg(void);
+void SafariHandleResetActionMoveSelection(void);
+void SafariHandlecmd55(void);
+void SafariHandlecmd56(void);
+
+// const data
+typedef void (*BattleBufferCmd) (void);
+const BattleBufferCmd gSafariBufferCommands[] =
+{
+ SafariHandleGetAttributes,
+ SafariHandlecmd1,
+ SafariHandleSetAttributes,
+ SafariHandlecmd3,
+ SafariHandleLoadPokeSprite,
+ SafariHandleSendOutPoke,
+ SafariHandleReturnPokeToBall,
+ SafariHandleTrainerThrow,
+ SafariHandleTrainerSlide,
+ SafariHandleTrainerSlideBack,
+ SafariHandlecmd10,
+ SafariHandlecmd11,
+ SafariHandlecmd12,
+ SafariHandleBallThrow,
+ SafariHandlePuase,
+ SafariHandleMoveAnimation,
+ SafariHandlePrintString,
+ SafariHandlePrintStringPlayerOnly,
+ SafariHandlecmd18,
+ SafariHandlecmd19,
+ SafariHandlecmd20,
+ SafariHandleOpenBag,
+ SafariHandlecmd22,
+ SafariHandlecmd23,
+ SafariHandleHealthBarUpdate,
+ SafariHandleExpBarUpdate,
+ SafariHandleStatusIconUpdate,
+ SafariHandleStatusAnimation,
+ SafariHandleStatusXor,
+ SafariHandlecmd29,
+ SafariHandleDMATransfer,
+ SafariHandlecmd31,
+ SafariHandlecmd32,
+ SafariHandlecmd33,
+ SafariHandlecmd34,
+ SafariHandlecmd35,
+ SafariHandlecmd36,
+ SafariHandlecmd37,
+ SafariHandlecmd38,
+ SafariHandlecmd39,
+ SafariHandlecmd40,
+ SafariHandleHitAnimation,
+ SafariHandlecmd42,
+ SafariHandleEffectivenessSound,
+ SafariHandlecmd44,
+ SafariHandleFaintingCry,
+ SafariHandleIntroSlide,
+ SafariHandleTrainerBallThrow,
+ SafariHandlecmd48,
+ SafariHandlecmd49,
+ SafariHandlecmd50,
+ SafariHandleSpriteInvisibility,
+ SafariHandleBattleAnimation,
+ SafariHandleLinkStandbyMsg,
+ SafariHandleResetActionMoveSelection,
+ SafariHandlecmd55,
+ SafariHandlecmd56,
+};
+// code
+
+void SafariBufferExecCompleted(void);
+void bx_wait_t6(void);
+void sub_812B65C(void);
+void SafariBufferRunCommand(void);
+void sub_812B758(void);
+
+void unref_sub_812B464(void)
+{
+}
+
+void SetBankFuncToSafariBufferRunCommand(void)
+{
+ gBattleBankFunc[gActiveBank] = SafariBufferRunCommand;
+}
+
+void SafariBufferRunCommand(void)
+{
+ if (gBattleExecBuffer & gBitTable[gActiveBank])
+ {
+ if (gBattleBufferA[gActiveBank][0] < 0x39)
+ gSafariBufferCommands[gBattleBufferA[gActiveBank][0]]();
+ else
+ SafariBufferExecCompleted();
+ }
+}
+
+void bx_battle_menu_t6_2(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ DestroyMenuCursor();
+
+ // Useless switch statement.
+ switch (gActionSelectionCursor[gActiveBank])
+ {
+ case 0:
+ Emitcmd33(1, 5, 0);
+ break;
+ case 1:
+ Emitcmd33(1, 6, 0);
+ break;
+ case 2:
+ Emitcmd33(1, 7, 0);
+ break;
+ case 3:
+ Emitcmd33(1, 8, 0);
+ break;
+ }
+ SafariBufferExecCompleted();
+ }
+ else if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (gActionSelectionCursor[gActiveBank] & 1)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 1;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (!(gActionSelectionCursor[gActiveBank] & 1))
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 1;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ if (gActionSelectionCursor[gActiveBank] & 2)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 2;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (!(gActionSelectionCursor[gActiveBank] & 2))
+ {
+ PlaySE(SE_SELECT);
+ nullsub_8(gActionSelectionCursor[gActiveBank]);
+ gActionSelectionCursor[gActiveBank] ^= 2;
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ }
+ }
+}
+
+void sub_812B65C(void)
+{
+ if (gSprites[gObjectBankIDs[gActiveBank]].callback == SpriteCallbackDummy)
+ SafariBufferExecCompleted();
+}
+
+void sub_812B694(void)
+{
+ if (gUnknown_03004210.state == 0)
+ SafariBufferExecCompleted();
+}
+
+void sub_812B6AC(void)
+{
+ if (!gPaletteFade.active)
+ {
+ gMain.inBattle = FALSE;
+ gMain.callback1 = gPreBattleCallback1;
+ SetMainCallback2(gMain.savedCallback);
+ }
+}
+
+void bx_wait_t6(void)
+{
+ if (!gDoingBattleAnim || !ewram17810[gActiveBank].unk0_6)
+ SafariBufferExecCompleted();
+}
+
+void sub_812B724(void)
+{
+ if (!gPaletteFade.active)
+ {
+ gBattleBankFunc[gActiveBank] = sub_812B758;
+ sub_810BADC();
+ }
+}
+
+void sub_812B758(void)
+{
+ if (gMain.callback2 == sub_800F808 && !gPaletteFade.active)
+ {
+ Emitcmd35(1, gScriptItemId);
+ SafariBufferExecCompleted();
+ }
+}
+
+void sub_812B794(void)
+{
+ if (!ewram17810[gActiveBank].unk0_5)
+ SafariBufferExecCompleted();
+}
+
+void SafariBufferExecCompleted(void)
+{
+ gBattleBankFunc[gActiveBank] = SafariBufferRunCommand;
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ u8 playerId = GetMultiplayerId();
+
+ PrepareBufferDataTransferLink(2, 4, &playerId);
+ gBattleBufferA[gActiveBank][0] = 0x38;
+ }
+ else
+ {
+ gBattleExecBuffer &= ~gBitTable[gActiveBank];
+ }
+}
+
+void unref_sub_812B838(void)
+{
+ if (!ewram17810[gActiveBank].unk0_4)
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleGetAttributes(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd1(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleSetAttributes(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd3(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleLoadPokeSprite(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleSendOutPoke(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleReturnPokeToBall(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleTrainerThrow(void)
+{
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, gActiveBank);
+ GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
+ gObjectBankIDs[gActiveBank] = CreateSprite(
+ &gUnknown_02024E8C,
+ 80,
+ (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
+ 30);
+ gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
+ gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
+ gSprites[gObjectBankIDs[gActiveBank]].data0 = -2;
+ gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
+ gBattleBankFunc[gActiveBank] = sub_812B65C;
+}
+
+void SafariHandleTrainerSlide(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleTrainerSlideBack(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd10(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd11(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd12(void)
+{
+ ewram17840.unk8 = 4;
+ gDoingBattleAnim = 1;
+ move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4);
+ gBattleBankFunc[gActiveBank] = bx_wait_t6;
+}
+
+void SafariHandleBallThrow(void)
+{
+ u8 var = gBattleBufferA[gActiveBank][1];
+
+ ewram17840.unk8 = var;
+ gDoingBattleAnim = 1;
+ move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 4);
+ gBattleBankFunc[gActiveBank] = bx_wait_t6;
+}
+
+// TODO: spell Pause correctly
+void SafariHandlePuase(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleMoveAnimation(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlePrintString(void)
+{
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gBattleBankFunc[gActiveBank] = sub_812B694;
+}
+
+void SafariHandlePrintStringPlayerOnly(void)
+{
+ if (GetBankSide(gActiveBank) == 0)
+ SafariHandlePrintString();
+ else
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd18(void)
+{
+ int i;
+
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 160;
+ gUnknown_03004210.paletteNum = 0;
+ FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
+ FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
+ gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2;
+
+ InitWindow(&gUnknown_03004210, gUnknown_08400D15, 400, 18, 35);
+ sub_8002F44(&gUnknown_03004210);
+ sub_814A5C0(0, 0xFFFF, 12, 11679, 0);
+
+ for (i = 0; i < 4; i++)
+ nullsub_8(i);
+
+ sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
+ StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CBB);
+
+ InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35);
+ sub_8002F44(&gUnknown_03004210);
+}
+
+void SafariHandlecmd19(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd20(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleOpenBag(void)
+{
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gBattleBankFunc[gActiveBank] = sub_812B724;
+ gBankInMenu = gActiveBank;
+}
+
+void SafariHandlecmd22(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd23(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleHealthBarUpdate(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleExpBarUpdate(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleStatusIconUpdate(void)
+{
+ sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 11);
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleStatusAnimation(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleStatusXor(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd29(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleDMATransfer(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd31(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd32(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd33(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd34(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd35(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd36(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd37(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd38(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd39(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd40(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleHitAnimation(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd42(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleEffectivenessSound(void)
+{
+ s8 pan;
+
+ if (GetBankSide(gActiveBank) == 0)
+ pan = -64;
+ else
+ pan = 63;
+ PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd44(void)
+{
+ PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleFaintingCry(void)
+{
+ u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
+
+ PlayCry1(species, 25);
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleIntroSlide(void)
+{
+ sub_80E43C0(gBattleBufferA[gActiveBank][1]);
+ gUnknown_02024DE8 |= 1;
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleTrainerBallThrow(void)
+{
+ sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 10);
+ sub_804777C(gActiveBank);
+ sub_8043DFC(gHealthboxIDs[gActiveBank]);
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd48(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd49(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd50(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleSpriteInvisibility(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleBattleAnimation(void)
+{
+ u8 r3 = gBattleBufferA[gActiveBank][1];
+ u16 r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
+
+ if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, r3, r4) != 0)
+ SafariBufferExecCompleted();
+ else
+ gBattleBankFunc[gActiveBank] = sub_812B794;
+}
+
+void SafariHandleLinkStandbyMsg(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandleResetActionMoveSelection(void)
+{
+ SafariBufferExecCompleted();
+}
+
+void SafariHandlecmd55(void)
+{
+ gBattleOutcome = gBattleBufferA[gActiveBank][1];
+ FadeOutMapMusic(5);
+ BeginFastPaletteFade(3);
+ SafariBufferExecCompleted();
+ if ((gBattleTypeFlags & BATTLE_TYPE_LINK) && !(gBattleTypeFlags & BATTLE_TYPE_WILD))
+ gBattleBankFunc[gActiveBank] = sub_812B6AC;
+}
+
+void SafariHandlecmd56(void)
+{
+}
diff --git a/src/battle_anim_8137220.c b/src/battle/battle_controller_wally.c
index bb181d5fb..bf6ef0892 100644
--- a/src/battle_anim_8137220.c
+++ b/src/battle/battle_controller_wally.c
@@ -29,7 +29,6 @@ struct UnknownStruct3
extern u8 gActiveBank;
extern void (*gBattleBankFunc[])(void);
extern u32 gBattleExecBuffer;
-extern void (*gWallyBufferCommands[])(void);
extern u8 gBattleBufferA[][0x200];
extern u8 gObjectBankIDs[];
extern MainCallback gPreBattleCallback1;
@@ -61,8 +60,8 @@ extern const u8 gUnknown_08400CCC[];
extern const u8 gUnknown_08400CF3[];
// TODO: include rom3.h when my other PR gets merged
-extern void dp01_build_cmdbuf_x21_a_bb(u8, u8, u16);
-extern void dp01_build_cmdbuf_x23_aa_0(u8, u16);
+extern void Emitcmd33(u8, u8, u16);
+extern void Emitcmd35(u8, u16);
extern void nullsub_14(void);
extern void PrepareBagForWallyTutorial(void);
@@ -72,8 +71,8 @@ extern void sub_804777C();
extern void sub_8043DFC();
extern bool8 IsDoubleBattle(void);
extern void c3_0802FDF4(u8);
-extern void sub_802ECF0(void);
-extern void sub_8031AF4();
+extern void PlayerHandlecmd1(void);
+extern void LoadPlayerTrainerBankSprite();
extern u8 GetBankIdentity(u8);
extern void sub_80313A0(struct Sprite *);
extern u8 GetBankByPlayerAI(u8);
@@ -90,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();
@@ -98,6 +97,8 @@ extern u8 sub_8079E90();
extern void sub_80312F0(struct Sprite *);
extern bool8 move_anim_start_t3();
+// this file's functions
+
void WallyBufferRunCommand(void);
void sub_81374FC(void);
void sub_81376B8(void);
@@ -107,6 +108,130 @@ void sub_8138294(u8);
void sub_81390D0(void);
void sub_8139A2C(u8);
+void WallyHandleGetAttributes(void);
+void WallyHandlecmd1(void);
+void WallyHandleSetAttributes(void);
+void WallyHandlecmd3(void);
+void WallyHandleLoadPokeSprite(void);
+void WallyHandleSendOutPoke(void);
+void WallyHandleReturnPokeToBall(void);
+void WallyHandleTrainerThrow(void);
+void WallyHandleTrainerSlide(void);
+void WallyHandleTrainerSlideBack(void);
+void WallyHandlecmd10(void);
+void WallyHandlecmd11(void);
+void WallyHandlecmd12(void);
+void WallyHandleBallThrow(void);
+void WallyHandlePuase(void);
+void WallyHandleMoveAnimation(void);
+void WallyHandlePrintString(void);
+void WallyHandlePrintStringPlayerOnly(void);
+void WallyHandlecmd18(void);
+void WallyHandlecmd19(void);
+void WallyHandlecmd20(void);
+void WallyHandleOpenBag(void);
+void WallyHandlecmd22(void);
+void WallyHandlecmd23(void);
+void WallyHandleHealthBarUpdate(void);
+void WallyHandleExpBarUpdate(void);
+void WallyHandleStatusIconUpdate(void);
+void WallyHandleStatusAnimation(void);
+void WallyHandleStatusXor(void);
+void WallyHandlecmd29(void);
+void WallyHandleDMATransfer(void);
+void WallyHandlecmd31(void);
+void WallyHandlecmd32(void);
+void WallyHandlecmd33(void);
+void WallyHandlecmd34(void);
+void WallyHandlecmd35(void);
+void WallyHandlecmd36(void);
+void WallyHandlecmd37(void);
+void WallyHandlecmd38(void);
+void WallyHandlecmd39(void);
+void WallyHandlecmd40(void);
+void WallyHandleHitAnimation(void);
+void WallyHandlecmd42(void);
+void WallyHandleEffectivenessSound(void);
+void WallyHandlecmd44(void);
+void WallyHandleFaintingCry(void);
+void WallyHandleIntroSlide(void);
+void WallyHandleTrainerBallThrow(void);
+void WallyHandlecmd48(void);
+void WallyHandlecmd49(void);
+void WallyHandlecmd50(void);
+void WallyHandleSpriteInvisibility(void);
+void WallyHandleBattleAnimation(void);
+void WallyHandleLinkStandbyMsg(void);
+void WallyHandleResetActionMoveSelection(void);
+void WallyHandlecmd55(void);
+void WallyHandlecmd56(void);
+
+// const data
+
+typedef void (*BattleBufferCmd) (void);
+static const BattleBufferCmd gWallyBufferCommands[] =
+{
+ WallyHandleGetAttributes,
+ WallyHandlecmd1,
+ WallyHandleSetAttributes,
+ WallyHandlecmd3,
+ WallyHandleLoadPokeSprite,
+ WallyHandleSendOutPoke,
+ WallyHandleReturnPokeToBall,
+ WallyHandleTrainerThrow,
+ WallyHandleTrainerSlide,
+ WallyHandleTrainerSlideBack,
+ WallyHandlecmd10,
+ WallyHandlecmd11,
+ WallyHandlecmd12,
+ WallyHandleBallThrow,
+ WallyHandlePuase,
+ WallyHandleMoveAnimation,
+ WallyHandlePrintString,
+ WallyHandlePrintStringPlayerOnly,
+ WallyHandlecmd18,
+ WallyHandlecmd19,
+ WallyHandlecmd20,
+ WallyHandleOpenBag,
+ WallyHandlecmd22,
+ WallyHandlecmd23,
+ WallyHandleHealthBarUpdate,
+ WallyHandleExpBarUpdate,
+ WallyHandleStatusIconUpdate,
+ WallyHandleStatusAnimation,
+ WallyHandleStatusXor,
+ WallyHandlecmd29,
+ WallyHandleDMATransfer,
+ WallyHandlecmd31,
+ WallyHandlecmd32,
+ WallyHandlecmd33,
+ WallyHandlecmd34,
+ WallyHandlecmd35,
+ WallyHandlecmd36,
+ WallyHandlecmd37,
+ WallyHandlecmd38,
+ WallyHandlecmd39,
+ WallyHandlecmd40,
+ WallyHandleHitAnimation,
+ WallyHandlecmd42,
+ WallyHandleEffectivenessSound,
+ WallyHandlecmd44,
+ WallyHandleFaintingCry,
+ WallyHandleIntroSlide,
+ WallyHandleTrainerBallThrow,
+ WallyHandlecmd48,
+ WallyHandlecmd49,
+ WallyHandlecmd50,
+ WallyHandleSpriteInvisibility,
+ WallyHandleBattleAnimation,
+ WallyHandleLinkStandbyMsg,
+ WallyHandleResetActionMoveSelection,
+ WallyHandlecmd55,
+ WallyHandlecmd56,
+};
+
+// code
+
void unref_sub_8137220(void)
{
}
@@ -146,7 +271,7 @@ void sub_81372BC(void)
if (r4 == 0)
{
PlaySE(SE_SELECT);
- dp01_build_cmdbuf_x21_a_bb(1, 0, 0);
+ Emitcmd33(1, 0, 0);
WallyBufferExecCompleted();
ewram[0x160A8]++;
ewram[0x160A9] = r4;
@@ -158,7 +283,7 @@ void sub_81372BC(void)
if (r4 == 0)
{
PlaySE(SE_SELECT);
- dp01_build_cmdbuf_x21_a_bb(1, 0, 0);
+ Emitcmd33(1, 0, 0);
WallyBufferExecCompleted();
ewram[0x160A8]++;
ewram[0x160A9] = r4;
@@ -169,7 +294,7 @@ void sub_81372BC(void)
r4 = --ewram[0x160AA];
if (r4 == 0)
{
- dp01_build_cmdbuf_x21_a_bb(1, 9, 0);
+ Emitcmd33(1, 9, 0);
WallyBufferExecCompleted();
ewram[0x160A8]++;
ewram[0x160A9] = r4;
@@ -191,7 +316,7 @@ void sub_81372BC(void)
{
PlaySE(SE_SELECT);
DestroyMenuCursor();
- dp01_build_cmdbuf_x21_a_bb(1, 1, 0);
+ Emitcmd33(1, 1, 0);
WallyBufferExecCompleted();
}
break;
@@ -241,7 +366,7 @@ void sub_81374FC(void)
if (gMain.callback2 == sub_800F808
&& !gPaletteFade.active)
{
- dp01_build_cmdbuf_x23_aa_0(1, gScriptItemId);
+ Emitcmd35(1, gScriptItemId);
WallyBufferExecCompleted();
}
}
@@ -359,7 +484,7 @@ void WallyBufferExecCompleted(void)
{
u8 multiplayerId = GetMultiplayerId();
- dp01_prepare_buffer_wireless_probably(2, 4, &multiplayerId);
+ PrepareBufferDataTransferLink(2, 4, &multiplayerId);
gBattleBufferA[gActiveBank][0] = 0x38;
}
else
@@ -374,7 +499,7 @@ void unref_sub_81379E4(void)
WallyBufferExecCompleted();
}
-void dp01t_00_5_getattr(void)
+void WallyHandleGetAttributes(void)
{
u8 arr[0x100];
u32 r6 = 0;
@@ -395,7 +520,7 @@ void dp01t_00_5_getattr(void)
r4 >>= 1;
}
}
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, r6, arr);
+ Emitcmd29(1, r6, arr);
WallyBufferExecCompleted();
}
@@ -704,12 +829,12 @@ u32 sub_8137A84(u8 a, u8 *buffer)
return size;
}
-void sub_8138230(void)
+void WallyHandlecmd1(void)
{
- sub_802ECF0();
+ PlayerHandlecmd1();
}
-void sub_813823C(void)
+void WallyHandleSetAttributes(void)
{
u8 r4;
u8 i;
@@ -948,22 +1073,22 @@ void sub_8138294(u8 a)
sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
}
-void sub_8138C90(void)
+void WallyHandlecmd3(void)
{
WallyBufferExecCompleted();
}
-void sub_8138C9C(void)
+void WallyHandleLoadPokeSprite(void)
{
WallyBufferExecCompleted();
}
-void sub_8138CA8(void)
+void WallyHandleSendOutPoke(void)
{
WallyBufferExecCompleted();
}
-void sub_8138CB4(void)
+void WallyHandleReturnPokeToBall(void)
{
if (gBattleBufferA[gActiveBank][1] == 0)
{
@@ -979,9 +1104,9 @@ void sub_8138CB4(void)
}
}
-void sub_8138D38(void)
+void WallyHandleTrainerThrow(void)
{
- sub_8031AF4(2, gActiveBank);
+ LoadPlayerTrainerBankSprite(2, gActiveBank);
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -994,9 +1119,9 @@ void sub_8138D38(void)
gBattleBankFunc[gActiveBank] = sub_813741C;
}
-void sub_8138E04(void)
+void WallyHandleTrainerSlide(void)
{
- sub_8031AF4(2, gActiveBank);
+ LoadPlayerTrainerBankSprite(2, gActiveBank);
GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(gActiveBank));
gObjectBankIDs[gActiveBank] = CreateSprite(
&gUnknown_02024E8C,
@@ -1009,22 +1134,22 @@ void sub_8138E04(void)
gBattleBankFunc[gActiveBank] = sub_8137908;
}
-void sub_8138ED0(void)
+void WallyHandleTrainerSlideBack(void)
{
WallyBufferExecCompleted();
}
-void sub_8138EDC(void)
+void WallyHandlecmd10(void)
{
WallyBufferExecCompleted();
}
-void sub_8138EE8(void)
+void WallyHandlecmd11(void)
{
WallyBufferExecCompleted();
}
-void sub_8138EF4(void)
+void WallyHandlecmd12(void)
{
ewram17840.unk8 = 4;
gDoingBattleAnim = TRUE;
@@ -1032,7 +1157,7 @@ void sub_8138EF4(void)
gBattleBankFunc[gActiveBank] = bx_wait_t5;
}
-void sub_8138F44(void)
+void WallyHandleBallThrow(void)
{
u8 val = gBattleBufferA[gActiveBank][1];
@@ -1042,12 +1167,12 @@ void sub_8138F44(void)
gBattleBankFunc[gActiveBank] = bx_wait_t5;
}
-void sub_8138FA0(void)
+void WallyHandlePuase(void)
{
WallyBufferExecCompleted();
}
-void sub_8138FAC(void)
+void WallyHandleMoveAnimation(void)
{
u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
@@ -1081,7 +1206,7 @@ void sub_81390D0(void)
switch (ewram17810[gActiveBank].unk4)
{
case 0:
- if (ewram17800[gActiveBank].unk0_2 == 1)
+ if (ewram17800[gActiveBank].substituteSprite == 1)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
ewram17810[gActiveBank].unk4 = 1;
break;
@@ -1098,7 +1223,7 @@ void sub_81390D0(void)
if (!gAnimScriptActive)
{
sub_80326EC(1);
- if (ewram17800[gActiveBank].unk0_2 == 1)
+ if (ewram17800[gActiveBank].substituteSprite == 1)
move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
ewram17810[gActiveBank].unk4 = 3;
}
@@ -1115,7 +1240,7 @@ void sub_81390D0(void)
}
}
-void sub_8139208(void)
+void WallyHandlePrintString(void)
{
u16 *ptr;
@@ -1129,15 +1254,15 @@ void sub_8139208(void)
gBattleBankFunc[gActiveBank] = sub_8137454;
}
-void dp01t_11_5_message_for_player_only(void)
+void WallyHandlePrintStringPlayerOnly(void)
{
if (GetBankSide(gActiveBank) == 0)
- sub_8139208();
+ WallyHandlePrintString();
else
WallyBufferExecCompleted();
}
-void sub_8139298(void)
+void WallyHandlecmd18(void)
{
s32 i;
@@ -1162,12 +1287,12 @@ void sub_8139298(void)
sub_8002F44(&gUnknown_03004210);
}
-void sub_8139378(void)
+void WallyHandlecmd19(void)
{
WallyBufferExecCompleted();
}
-void sub_8139384(void)
+void WallyHandlecmd20(void)
{
switch (ewram[0x160A9])
{
@@ -1182,31 +1307,31 @@ void sub_8139384(void)
{
DestroyMenuCursor();
PlaySE(SE_SELECT);
- dp01_build_cmdbuf_x21_a_bb(1, 10, 256);
+ Emitcmd33(1, 10, 256);
WallyBufferExecCompleted();
}
break;
}
}
-void sub_81393EC(void)
+void WallyHandleOpenBag(void)
{
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
gBattleBankFunc[gActiveBank] = sub_81374C4;
gBankInMenu = gActiveBank;
}
-void sub_813942C(void)
+void WallyHandlecmd22(void)
{
WallyBufferExecCompleted();
}
-void sub_8139438(void)
+void WallyHandlecmd23(void)
{
WallyBufferExecCompleted();
}
-void sub_8139444(void)
+void WallyHandleHealthBarUpdate(void)
{
s16 r7;
@@ -1229,87 +1354,87 @@ void sub_8139444(void)
gBattleBankFunc[gActiveBank] = sub_81377B0;
}
-void sub_8139544(void)
+void WallyHandleExpBarUpdate(void)
{
WallyBufferExecCompleted();
}
-void sub_8139550(void)
+void WallyHandleStatusIconUpdate(void)
{
WallyBufferExecCompleted();
}
-void sub_813955C(void)
+void WallyHandleStatusAnimation(void)
{
WallyBufferExecCompleted();
}
-void sub_8139568(void)
+void WallyHandleStatusXor(void)
{
WallyBufferExecCompleted();
}
-void sub_8139574(void)
+void WallyHandlecmd29(void)
{
WallyBufferExecCompleted();
}
-void sub_8139580(void)
+void WallyHandleDMATransfer(void)
{
WallyBufferExecCompleted();
}
-void sub_813958C(void)
+void WallyHandlecmd31(void)
{
WallyBufferExecCompleted();
}
-void sub_8139598(void)
+void WallyHandlecmd32(void)
{
WallyBufferExecCompleted();
}
-void sub_81395A4(void)
+void WallyHandlecmd33(void)
{
WallyBufferExecCompleted();
}
-void sub_81395B0(void)
+void WallyHandlecmd34(void)
{
WallyBufferExecCompleted();
}
-void sub_81395BC(void)
+void WallyHandlecmd35(void)
{
WallyBufferExecCompleted();
}
-void sub_81395C8(void)
+void WallyHandlecmd36(void)
{
WallyBufferExecCompleted();
}
-void sub_81395D4(void)
+void WallyHandlecmd37(void)
{
WallyBufferExecCompleted();
}
-void sub_81395E0(void)
+void WallyHandlecmd38(void)
{
WallyBufferExecCompleted();
}
-void sub_81395EC(void)
+void WallyHandlecmd39(void)
{
WallyBufferExecCompleted();
}
-void sub_81395F8(void)
+void WallyHandlecmd40(void)
{
WallyBufferExecCompleted();
}
-void sub_8139604(void)
+void WallyHandleHitAnimation(void)
{
if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
{
@@ -1324,37 +1449,37 @@ void sub_8139604(void)
}
}
-void sub_8139674(void)
+void WallyHandlecmd42(void)
{
WallyBufferExecCompleted();
}
-void sub_8139680(void)
+void WallyHandleEffectivenessSound(void)
{
PlaySE(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
WallyBufferExecCompleted();
}
-void sub_81396B0(void)
+void WallyHandlecmd44(void)
{
PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
WallyBufferExecCompleted();
}
-void sub_81396E0(void)
+void WallyHandleFaintingCry(void)
{
PlayCry1(GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES), 25);
WallyBufferExecCompleted();
}
-void dp01t_2E_5_battle_intro(void)
+void WallyHandleIntroSlide(void)
{
sub_80E43C0(gBattleBufferA[gActiveBank][1]);
gUnknown_02024DE8 |= 1;
WallyBufferExecCompleted();
}
-void sub_8139750(void)
+void WallyHandleTrainerBallThrow(void)
{
u8 paletteNum;
u8 taskId;
@@ -1365,7 +1490,7 @@ void sub_8139750(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);
@@ -1382,7 +1507,7 @@ void sub_81398BC(u8 bank)
{
u16 species;
- ewram17800[bank].unk2 = 0;
+ ewram17800[bank].transformedSpecies = 0;
gBattlePartyID[bank] = gBattleBufferA[bank][1];
species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
@@ -1421,7 +1546,7 @@ void sub_8139A2C(u8 taskId)
}
}
-void sub_8139AA0(void)
+void WallyHandlecmd48(void)
{
if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
{
@@ -1435,22 +1560,22 @@ void sub_8139AA0(void)
}
}
-void sub_8139B20(void)
+void WallyHandlecmd49(void)
{
WallyBufferExecCompleted();
}
-void sub_8139B2C(void)
+void WallyHandlecmd50(void)
{
WallyBufferExecCompleted();
}
-void sub_8139B38(void)
+void WallyHandleSpriteInvisibility(void)
{
WallyBufferExecCompleted();
}
-void sub_8139B44(void)
+void WallyHandleBattleAnimation(void)
{
u8 val2 = gBattleBufferA[gActiveBank][1];
u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
@@ -1461,17 +1586,17 @@ void sub_8139B44(void)
gBattleBankFunc[gActiveBank] = sub_8137940;
}
-void sub_8139BA0(void)
+void WallyHandleLinkStandbyMsg(void)
{
WallyBufferExecCompleted();
}
-void sub_8139BAC(void)
+void WallyHandleResetActionMoveSelection(void)
{
WallyBufferExecCompleted();
}
-void sub_8139BB8(void)
+void WallyHandlecmd55(void)
{
gBattleOutcome = gBattleBufferA[gActiveBank][1];
FadeOutMapMusic(5);
@@ -1481,6 +1606,6 @@ void sub_8139BB8(void)
gBattleBankFunc[gActiveBank] = sub_813746C;
}
-void nullsub_80(void)
+void WallyHandlecmd56(void)
{
}
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/battle_message.c b/src/battle/battle_message.c
new file mode 100644
index 000000000..a3cc320ad
--- /dev/null
+++ b/src/battle/battle_message.c
@@ -0,0 +1,959 @@
+#include "global.h"
+#include "battle_message.h"
+#include "battle.h"
+#include "item.h"
+#include "items.h"
+#include "pokemon.h"
+#include "data2.h"
+#include "text.h"
+#include "string_util.h"
+#include "link.h"
+#include "battle_setup.h"
+#include "battle_tower.h"
+#include "flags.h"
+
+#define BATTLESTRING_TO_SUB 12
+#define BATTLESTRINGS_NO 351
+#define BATTLESTRINGS_MAX BATTLESTRINGS_NO + BATTLESTRING_TO_SUB
+
+extern const u8* const gBattleStringsTable[BATTLESTRINGS_NO];
+
+extern u16 gLastUsedItem;
+extern u8 gLastUsedAbility;
+extern u8 gActiveBank;
+extern u8 gBankAttacker;
+extern u8 gBankTarget;
+extern u8 gStringBank;
+extern u8 gEffectBank;
+extern u8 gAbilitiesPerBank[4];
+extern u8 gBattleTextBuff1[];
+extern u8 gBattleTextBuff2[];
+extern u8 gBattleTextBuff3[];
+extern u8 gStringVar1[];
+extern u8 gStringVar2[];
+extern u8 gStringVar3[];
+extern u16 gBattleTypeFlags;
+extern u16 gTrainerBattleOpponent;
+extern u8 gDisplayedStringBattle[];
+extern u8 gStringVar1[];
+extern u8 gStringVar2[];
+extern u8 gStringVar3[];
+extern u16 gBattlePartyID[4];
+extern struct BattleEnigmaBerry gEnigmaBerries[4];
+extern u8 gBattleBufferA[4][0x200];
+
+extern const u8 gUnknown_084005DB[];
+extern const u8 gUnknown_084005C7[];
+extern const u8 gUnknown_084005AA[];
+extern const u8 gUnknown_08400568[];
+extern const u8 gUnknown_08400590[];
+extern const u8 gUnknown_0840057B[];
+extern const u8 gUnknown_08400555[];
+extern const u8 gUnknown_084006F1[];
+extern const u8 gUnknown_084006A4[];
+extern const u8 gUnknown_0840069C[];
+extern const u8 gUnknown_0840065C[];
+extern const u8 gUnknown_08400645[];
+extern const u8 gUnknown_08400608[];
+extern const u8 gUnknown_08400635[];
+extern const u8 gUnknown_084005F5[];
+extern const u8 gUnknown_08400709[];
+extern const u8 gUnknown_08400727[];
+extern const u8 gUnknown_08400736[];
+extern const u8 gUnknown_08400749[];
+extern const u8 gUnknown_08400781[];
+extern const u8 gUnknown_08400771[];
+extern const u8 gUnknown_0840075E[];
+extern const u8 gUnknown_084006B3[];
+extern const u8 gUnknown_084006BB[];
+extern const u8 gUnknown_084006C6[];
+extern const u8 gUnknown_084006D5[];
+extern const u8 gUnknown_0840068C[];
+extern const u8 gUnknown_0840067C[];
+extern const u8 gUnknown_08400622[];
+extern const u8 gUnknown_084007BD[];
+extern const u8 gUnknown_083FFEFC[];
+extern const u8 gUnknown_083FFFF7[];
+extern const u8 gUnknown_083FFFEA[];
+extern const u8 gUnknown_083FFF6A[];
+extern const u8 gUnknown_083FFF99[];
+extern const u8 gUnknown_083FFFCB[];
+extern const u8 gUnknown_083FFF56[];
+extern const u8 gUnknown_083FFF81[];
+extern const u8 gUnknown_083FFFB3[];
+extern const u8 gUnknown_08400A78[];
+extern const u8 gUnknown_08400A85[];
+extern const u8 gUnknown_08400797[];
+extern const u8 gUnknown_08400791[];
+extern const u8 gUnknown_084007B7[];
+extern const u8 gUnknown_084007B2[];
+extern const u8 gUnknown_0840079C[];
+extern const u8 gUnknown_084007A1[];
+extern const u8 gUnknown_084007A7[];
+extern const u8 gUnknown_084007AC[];
+extern const u8 gUnknown_084009ED[];
+extern const u8 gUnknown_084009F7[];
+extern const u8 gUnknown_084007C8[];
+extern const u8 gUnknown_084007CA[];
+extern const u8 gUnknown_084007CC[];
+extern const u8 gUnknown_084007CE[];
+extern const u8 gUnknown_084007D0[];
+extern const u8 gUnknown_08400E5E[];
+extern const u8 gUnknown_08400E62[];
+
+extern const u16 gUnknown_084016BC[]; // a table of moves
+
+extern const u8* const gUnknown_08401674[]; // table of pointers to 'a -TYPE' strings
+extern const u8* const gUnknown_08400F58[]; // table of pointers to stat strings
+extern const u8* const gUnknown_08400F78[]; // table of pointers to flavour strings
+
+struct StatusFlagString
+{
+ u8* flag;
+ u8* ptr;
+};
+
+extern const struct StatusFlagString gUnknown_081FA6D4[7]; // status flag/text
+extern const u8 gUnknown_084017A8[8]; // empty flags
+
+extern struct StringInfoBattle* gSelectedOrderFromParty;
+#define gStringInfo gSelectedOrderFromParty
+
+void sub_8121D1C(u8* textBuff);
+void sub_8121D74(u8* textBuff);
+void StrCpyDecodeBattleTextBuff(u8* src, u8* dst);
+
+u8 GetBankSide(u8 bank);
+s32 sub_803FC34(u16);
+void get_trainer_name(u8* dst);
+u8 get_trainer_class_name_index(void);
+u8 sub_8135FD8(void);
+u8 GetMultiplayerId(void);
+u8 GetBankByPlayerAI(u8 ID);
+u8 GetBankSide(u8 bank);
+u8 GetBankIdentity(u8 bank);
+#ifdef GERMAN
+extern u8 *de_sub_804110C();
+#endif
+
+void BufferStringBattle(u16 stringID)
+{
+ int i;
+ const u8* stringPtr = NULL;
+
+ gStringInfo = (struct StringInfoBattle*)(&gBattleBufferA[gActiveBank][4]);
+ gLastUsedItem = gStringInfo->lastItem;
+ gLastUsedAbility = gStringInfo->lastAbility;
+ BATTLE_STRUCT->scriptingActive = gStringInfo->scrActive;
+ BATTLE_STRUCT->unk1605E = gStringInfo->unk1605E;
+ BATTLE_STRUCT->hpScale = gStringInfo->hpScale;
+ gStringBank = gStringInfo->StringBank;
+ BATTLE_STRUCT->stringMoveType = gStringInfo->moveType;
+ for (i = 0; i < 4; i++)
+ {
+ gAbilitiesPerBank[i] = gStringInfo->abilities[i];
+ }
+ for (i = 0; i < 0x10; i++)
+ {
+ gBattleTextBuff1[i] = gStringInfo->textBuffs[0][i];
+ gBattleTextBuff2[i] = gStringInfo->textBuffs[1][i];
+ gBattleTextBuff3[i] = gStringInfo->textBuffs[2][i];
+ }
+ switch (stringID)
+ {
+ case 0: // first battle msg
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gUnknown_084005DB;
+ else
+ stringPtr = gUnknown_084005C7;
+ }
+ else
+ {
+ stringPtr = gUnknown_084005AA;
+#ifdef GERMAN
+ stringPtr = de_sub_804110C(0xFFFF, stringPtr);
+#endif
+ }
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LEGENDARY)
+ stringPtr = gUnknown_08400568;
+ else if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) // interesting, looks like they had something planned for wild double battles
+ stringPtr = gUnknown_08400590;
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL)
+ stringPtr = gUnknown_0840057B;
+ else
+ stringPtr = gUnknown_08400555;
+ }
+ break;
+ case 1: // poke first send-out
+ if (GetBankSide(gActiveBank) == 0)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gUnknown_084006F1;
+ else
+ stringPtr = gUnknown_084006A4;
+ }
+ else
+ stringPtr = gUnknown_0840069C;
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gUnknown_0840065C;
+ else if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ stringPtr = gUnknown_08400645;
+ else
+ {
+ stringPtr = gUnknown_08400608;
+#ifdef GERMAN
+ stringPtr = de_sub_804110C(0xFFFF, stringPtr);
+#endif
+ }
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ stringPtr = gUnknown_08400635;
+ else
+ {
+ stringPtr = gUnknown_084005F5;
+#ifdef GERMAN
+ stringPtr = de_sub_804110C(0xFFFF, stringPtr);
+#endif
+ }
+ }
+ break;
+ case 2: // sending poke to ball msg
+ if (GetBankSide(gActiveBank) == 0)
+ {
+ if (BATTLE_STRUCT->hpScale == 0)
+ stringPtr = gUnknown_08400709;
+ else if (BATTLE_STRUCT->hpScale == 1 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ stringPtr = gUnknown_08400727;
+ else if (BATTLE_STRUCT->hpScale == 2)
+ stringPtr = gUnknown_08400736;
+ else
+ stringPtr = gUnknown_08400749;
+ }
+ else
+ {
+ if (gTrainerBattleOpponent == 0x800)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gUnknown_08400781;
+ else
+ stringPtr = gUnknown_08400771;
+ }
+ else
+ {
+ stringPtr = gUnknown_0840075E;
+#ifdef GERMAN
+ stringPtr = de_sub_804110C(0xFFFF, stringPtr);
+#endif
+ }
+ }
+ break;
+ case 3: // switch-in msg
+ if (GetBankSide(BATTLE_STRUCT->scriptingActive) == 0)
+ {
+ if (BATTLE_STRUCT->hpScale == 0 || gBattleTypeFlags & BATTLE_TYPE_DOUBLE)
+ stringPtr = gUnknown_084006B3;
+ else if (BATTLE_STRUCT->hpScale == 1)
+ stringPtr = gUnknown_084006BB;
+ else if (BATTLE_STRUCT->hpScale == 2)
+ stringPtr = gUnknown_084006C6;
+ else
+ stringPtr = gUnknown_084006D5;
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gUnknown_0840068C;
+ else
+ stringPtr = gUnknown_0840067C;
+ }
+ else
+ {
+ stringPtr = gUnknown_08400622;
+#ifdef GERMAN
+ stringPtr = de_sub_804110C(0xFFFF, stringPtr);
+#endif
+ }
+ }
+ break;
+ case 4: // pokemon used a move msg
+ sub_8121D1C(gBattleTextBuff1);
+ if (gStringInfo->currentMove > 0x162)
+ StringCopy(gBattleTextBuff2, gUnknown_08401674[BATTLE_STRUCT->stringMoveType]);
+ else
+ StringCopy(gBattleTextBuff2, gMoveNames[gStringInfo->currentMove]);
+ sub_8121D74(gBattleTextBuff2);
+ stringPtr = gUnknown_084007BD;
+ break;
+ case 5: // battle end
+ if (gBattleTextBuff1[0] & 0x80)
+ {
+ gBattleTextBuff1[0] &= ~(0x80);
+ if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3)
+ gBattleTextBuff1[0] ^= 3;
+ if (gBattleTextBuff1[0] == BATTLE_LOST || gBattleTextBuff1[0] == BATTLE_DREW)
+ stringPtr = gUnknown_083FFEFC;
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ stringPtr = gUnknown_083FFFF7;
+ else
+ stringPtr = gUnknown_083FFFEA;
+ }
+ }
+ else
+ {
+ if (GetBankSide(gActiveBank) == 1 && gBattleTextBuff1[0] != 3)
+ gBattleTextBuff1[0] ^= 3;
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ {
+ switch (gBattleTextBuff1[0])
+ {
+ case BATTLE_WON:
+ stringPtr = gUnknown_083FFF6A;
+ break;
+ case BATTLE_LOST:
+ stringPtr = gUnknown_083FFF99;
+ break;
+ case BATTLE_DREW:
+ stringPtr = gUnknown_083FFFCB;
+ break;
+ }
+ }
+ else
+ {
+ switch (gBattleTextBuff1[0])
+ {
+ case BATTLE_WON:
+ stringPtr = gUnknown_083FFF56;
+ break;
+ case BATTLE_LOST:
+ stringPtr = gUnknown_083FFF81;
+ break;
+ case BATTLE_DREW:
+ stringPtr = gUnknown_083FFFB3;
+ break;
+ }
+ }
+ }
+ break;
+ default: // load a string from the table
+ if (stringID >= BATTLESTRINGS_MAX)
+ {
+ gDisplayedStringBattle[0] = EOS;
+ return;
+ }
+ else
+ {
+ stringPtr = gBattleStringsTable[stringID - BATTLESTRING_TO_SUB];
+#ifdef GERMAN
+ stringPtr = de_sub_804110C(stringID, stringPtr);
+#endif
+ }
+ break;
+ }
+ StrCpyDecodeToDisplayedStringBattle(stringPtr);
+}
+
+u32 StrCpyDecodeToDisplayedStringBattle(const u8* src)
+{
+ StrCpyDecodeBattle(src, gDisplayedStringBattle);
+}
+
+const u8* AppendStatusString(u8* src)
+{
+ u32 i;
+ u8 status[8];
+ u32 flag1, flag2;
+ u8* statusPtr;
+
+ memcpy(status, gUnknown_084017A8, 8);
+
+ statusPtr = status;
+ for (i = 0; i < sizeof(struct StatusFlagString); i++)
+ {
+ if (*src == EOS)
+ break;
+ *statusPtr = *src;
+ src++;
+ statusPtr++;
+ }
+ flag1 = *(u32*)(&status[0]);
+ flag2 = *(u32*)(&status[4]);
+ for (i = 0; i < 7; i++)
+ {
+ if (flag1 == *(u32*)(&gUnknown_081FA6D4[i].flag[0]) && flag2 == *(u32*)(&gUnknown_081FA6D4[i].flag[4]))
+ return gUnknown_081FA6D4[i].ptr;
+ }
+ return NULL;
+}
+
+#ifdef GERMAN
+extern u8 *de_sub_8073174(u8 *, const u8 *);
+extern u8 *de_sub_8041024(s32, u32);
+#endif
+
+#ifdef ENGLISH
+#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \
+ if (GetBankSide(bank) != 0) \
+ { \
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
+ toCpy = gUnknown_08400797; \
+ else \
+ toCpy = gUnknown_08400791; \
+ while (*toCpy != EOS) \
+ { \
+ dst[dstID] = *toCpy; \
+ dstID++; \
+ toCpy++; \
+ } \
+ GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \
+ } \
+ else \
+ { \
+ GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \
+ } \
+ StringGetEnd10(text); \
+ toCpy = text;
+#else
+#define HANDLE_NICKNAME_STRING_CASE(bank, monIndex) \
+ if (GetBankSide(bank) != 0) \
+ { \
+ GetMonData(&gEnemyParty[monIndex], MON_DATA_NICKNAME, text); \
+ StringGetEnd10(text); \
+ toCpy = text; \
+ while (*toCpy != EOS) \
+ { \
+ dst[dstID] = *toCpy; \
+ dstID++; \
+ toCpy++; \
+ } \
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) \
+ toCpy = gUnknown_08400797; \
+ else \
+ toCpy = gUnknown_08400791; \
+ } \
+ else \
+ { \
+ GetMonData(&gPlayerParty[monIndex], MON_DATA_NICKNAME, text); \
+ StringGetEnd10(text); \
+ toCpy = text; \
+ }
+#endif
+
+u32 StrCpyDecodeBattle(const u8* src, u8* dst)
+{
+ u32 dstID = 0; // if they used dstID, why not use srcID as well?
+ const u8* toCpy = NULL;
+ u8 text[12];
+ u8 multiplayerID = GetMultiplayerId();
+
+ while (*src != EOS)
+ {
+ if (*src == 0xFD)
+ {
+ src++;
+ switch (*src)
+ {
+ case 0:
+ if (gBattleTextBuff1[0] == 0xFD)
+ {
+ StrCpyDecodeBattleTextBuff(gBattleTextBuff1, gStringVar1);
+ toCpy = gStringVar1;
+ }
+ else
+ {
+ toCpy = AppendStatusString(gBattleTextBuff1);
+ if (toCpy == 0)
+ toCpy = gBattleTextBuff1;
+ }
+ break;
+ case 1:
+ if (gBattleTextBuff2[0] == 0xFD)
+ {
+ StrCpyDecodeBattleTextBuff(gBattleTextBuff2, gStringVar2);
+ toCpy = gStringVar2;
+ }
+ else
+ toCpy = gBattleTextBuff2;
+ break;
+ case 42:
+ if (gBattleTextBuff3[0] == 0xFD)
+ {
+ StrCpyDecodeBattleTextBuff(gBattleTextBuff3, gStringVar3);
+ toCpy = gStringVar3;
+ }
+ else
+ toCpy = gBattleTextBuff3;
+ break;
+ case 2: // first player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(0)]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 3: // first enemy poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(1)]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 4: // second player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(2)]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 5: // second enemy poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(3)]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 6: // link first player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 7: // link first opponent poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 1]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 8: // link second player poke name
+ GetMonData(&gPlayerParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 2]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 9: // link second opponent poke name
+ GetMonData(&gEnemyParty[gBattlePartyID[gLinkPlayers[multiplayerID].lp_field_18 ^ 3]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 10: // attacker name with prefix, only bank 0/1
+ HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1)])
+ break;
+ case 11: // attacker partner name, only bank 0/1
+ if (GetBankSide(gBankAttacker) == 0)
+ GetMonData(&gPlayerParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
+ else
+ GetMonData(&gEnemyParty[gBattlePartyID[GetBankByPlayerAI(GetBankIdentity(gBankAttacker) & 1) + 2]], MON_DATA_NICKNAME, text);
+
+ StringGetEnd10(text);
+ toCpy = text;
+ break;
+ case 12: // attacker name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gBankAttacker, gBattlePartyID[gBankAttacker])
+ break;
+ case 13: // target name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gBankTarget, gBattlePartyID[gBankTarget])
+ break;
+ case 14: // effect bank name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gEffectBank, gBattlePartyID[gEffectBank])
+ break;
+ case 15: // active bank name with prefix
+ HANDLE_NICKNAME_STRING_CASE(gActiveBank, gBattlePartyID[gActiveBank])
+ break;
+ case 16: // scripting active bank name with prefix
+ HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, gBattlePartyID[BATTLE_STRUCT->scriptingActive])
+ break;
+ case 17: // current move name
+ if (gStringInfo->currentMove > 0x162)
+ toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType];
+ else
+ toCpy = gMoveNames[gStringInfo->currentMove];
+ break;
+ case 18: // last used move name
+ if (gStringInfo->lastMove > 0x162)
+ toCpy = (void*) &gUnknown_08401674[BATTLE_STRUCT->stringMoveType];
+ else
+ toCpy = gMoveNames[gStringInfo->lastMove];
+ break;
+ case 19: // last used item
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (gLastUsedItem == ITEM_ENIGMA_BERRY)
+ {
+ if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank)
+ {
+ StringCopy(text, gEnigmaBerries[gStringBank].name);
+#ifdef ENGLISH
+ StringAppend(text, gUnknown_08400A85);
+#else
+ de_sub_8073174(text, gUnknown_08400A85);
+#endif
+ toCpy = text;
+ }
+ else
+ toCpy = gUnknown_08400A78;
+ }
+ else
+ {
+ CopyItemName(gLastUsedItem, text);
+ toCpy = text;
+ }
+ }
+ else
+ {
+ CopyItemName(gLastUsedItem, text);
+ toCpy = text;
+ }
+ break;
+ case 20: // last used ability
+ toCpy = gAbilityNames[gLastUsedAbility];
+ break;
+ case 21: // attacker ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gBankAttacker]];
+ break;
+ case 22: // target ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gBankTarget]];
+ break;
+ case 23: // scripting active ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[BATTLE_STRUCT->scriptingActive]];
+ break;
+ case 24: // effect bank ability
+ toCpy = gAbilityNames[gAbilitiesPerBank[gEffectBank]];
+ break;
+ case 25: // trainer class name
+#ifdef ENGLISH
+ if (gTrainerBattleOpponent == 0x400)
+ toCpy = gTrainerClassNames[GetSecretBaseTrainerNameIndex()];
+ else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ toCpy = gTrainerClassNames[get_trainer_class_name_index()];
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ toCpy = gTrainerClassNames[sub_8135FD8()];
+ else
+ toCpy = gTrainerClassNames[gTrainers[gTrainerBattleOpponent].trainerClass];
+ break;
+#else
+ if (gTrainerBattleOpponent == 0x400)
+ toCpy = de_sub_8041024(gTrainerBattleOpponent, 0);
+ else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ toCpy = de_sub_8041024(BATTLE_TYPE_BATTLE_TOWER, 0);
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ toCpy = de_sub_8041024(BATTLE_TYPE_EREADER_TRAINER, 0);
+ else
+ toCpy = de_sub_8041024(0, gTrainerBattleOpponent);
+ break;
+#endif
+ case 26: // trainer name
+ if (gTrainerBattleOpponent == 0x400)
+ {
+ memset(text, 0xFF, 8);
+ memcpy(text, &ewram[0x17002], 7);
+ toCpy = text;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER)
+ {
+ get_trainer_name(text);
+ toCpy = text;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_EREADER_TRAINER)
+ {
+ sub_8135FF4(text);
+ toCpy = text;
+ }
+ else
+ toCpy = gTrainers[gTrainerBattleOpponent].trainerName;
+ break;
+ case 27: // link player name?
+ toCpy = gLinkPlayers[multiplayerID].name;
+ break;
+ case 28: // link partner name?
+ toCpy = gLinkPlayers[sub_803FC34(2 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ break;
+ case 29: // link opponent 1 name?
+ toCpy = gLinkPlayers[sub_803FC34(1 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ break;
+ case 30: // link opponent 2 name?
+ toCpy = gLinkPlayers[sub_803FC34(3 ^ gLinkPlayers[multiplayerID].lp_field_18)].name;
+ break;
+ case 31: // link scripting active name
+ toCpy = gLinkPlayers[sub_803FC34(BATTLE_STRUCT->scriptingActive)].name;
+ break;
+ case 32: // player name
+ toCpy = gSaveBlock2.playerName;
+ break;
+ case 33: // ?
+ toCpy = sub_8082830();
+ break;
+ case 34: // ?
+ HANDLE_NICKNAME_STRING_CASE(BATTLE_STRUCT->scriptingActive, BATTLE_STRUCT->unk1605E)
+ break;
+ case 35: // lanette pc
+ if (FlagGet(SYS_PC_LANETTE))
+ toCpy = gUnknown_084009F7;
+ else
+ toCpy = gUnknown_084009ED;
+ break;
+ case 38:
+ if (GetBankSide(gBankAttacker) == 0)
+ toCpy = gUnknown_084007AC;
+ else
+ toCpy = gUnknown_084007A7;
+ break;
+ case 39:
+ if (GetBankSide(gBankTarget) == 0)
+ toCpy = gUnknown_084007AC;
+ else
+ toCpy = gUnknown_084007A7;
+ break;
+ case 36:
+ if (GetBankSide(gBankAttacker) == 0)
+ toCpy = gUnknown_084007A1;
+ else
+ toCpy = gUnknown_0840079C;
+ break;
+ case 37:
+ if (GetBankSide(gBankTarget) == 0)
+ toCpy = gUnknown_084007A1;
+ else
+ toCpy = gUnknown_0840079C;
+ break;
+ case 40:
+ if (GetBankSide(gBankAttacker) == 0)
+ toCpy = gUnknown_084007B7;
+ else
+ toCpy = gUnknown_084007B2;
+ break;
+ case 41:
+ if (GetBankSide(gBankTarget) == 0)
+ toCpy = gUnknown_084007B7;
+ else
+ toCpy = gUnknown_084007B2;
+ break;
+ }
+ //if (toCpy != NULL) really GF, why did you forget about this?
+ while (*toCpy != EOS)
+ {
+ dst[dstID] = *toCpy;
+ dstID++;
+ toCpy++;
+ }
+ if (*src == 33)
+ {
+ dst[dstID] = 0xFC;
+ dstID++;
+ dst[dstID] = 9;
+ dstID++;
+ }
+ }
+ else
+ {
+ dst[dstID] = *src;
+ dstID++;
+ }
+ src++;
+ }
+ dst[dstID] = *src;
+ dstID++;
+ return dstID;
+}
+
+#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+#define ByteRead32(ptr) ((ptr)[0] | (ptr)[1] << 8 | (ptr)[2] << 16 | (ptr)[3] << 24)
+
+void StrCpyDecodeBattleTextBuff(u8* src, u8* dst)
+{
+ u32 srcID = 1;
+ u32 value = 0;
+ u8 text[12];
+ u16 hword;
+
+ *dst = EOS;
+ while (src[srcID] != EOS)
+ {
+ switch (src[srcID])
+ {
+ case 0: // battle string
+ hword = ByteRead16(&src[srcID + 1]);
+#ifdef GERMAN
+ if (hword == 209 || hword == 211)
+ srcID += 3;
+#endif
+ StringAppend(dst, gBattleStringsTable[hword - BATTLESTRING_TO_SUB]);
+ srcID += 3;
+ break;
+ case 1: // int to string
+ switch (src[srcID + 1])
+ {
+ case 1:
+ value = src[srcID + 3];
+ break;
+ case 2:
+ value = ByteRead16(&src[srcID + 3]);
+ break;
+ case 4:
+ value = ByteRead32(&src[srcID + 3]);
+ break;
+ }
+ ConvertIntToDecimalStringN(dst, value, 0, src[srcID + 2]);
+ srcID += src[srcID + 1] + 3;
+ break;
+ case 2: // move name
+ StringAppend(dst, gMoveNames[ByteRead16(&src[srcID + 1])]);
+ srcID += 3;
+ break;
+ case 3: // type name
+ StringAppend(dst, gTypeNames[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case 4: // poke nick with prefix
+#ifdef ENGLISH
+ if (GetBankSide(src[srcID + 1]) == 0)
+ {
+ GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
+ }
+ else
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ StringAppend(dst, gUnknown_08400797);
+ else
+ StringAppend(dst, gUnknown_08400791);
+ GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
+ }
+ StringGetEnd10(text);
+ StringAppend(dst, text);
+#else
+ if (GetBankSide(src[srcID + 1]) == 0)
+ {
+ GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ StringAppend(dst, text);
+ }
+ else
+ {
+ GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, text);
+ StringGetEnd10(text);
+ StringAppend(dst, text);
+ if (gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ StringAppend(dst, gUnknown_08400797);
+ else
+ StringAppend(dst, gUnknown_08400791);
+ }
+#endif
+ srcID += 3;
+ break;
+ case 5: // stats
+ StringAppend(dst, gUnknown_08400F58[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case 6: // species name
+ GetSpeciesName(dst, ByteRead16(&src[srcID + 1]));
+ srcID += 3;
+ break;
+ case 7: // poke nick without prefix
+ if (GetBankSide(src[srcID + 1]) == 0)
+ GetMonData(&gPlayerParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
+ else
+ GetMonData(&gEnemyParty[src[srcID + 2]], MON_DATA_NICKNAME, dst);
+ StringGetEnd10(dst);
+ srcID += 3;
+ break;
+ case 8: // flavour table
+ StringAppend(dst, gUnknown_08400F78[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case 9: // ability names
+ StringAppend(dst, gAbilityNames[src[srcID + 1]]);
+ srcID += 2;
+ break;
+ case 10: // item name
+ {
+ hword = ByteRead16(&src[srcID + 1]);
+ if (gBattleTypeFlags & BATTLE_TYPE_LINK)
+ {
+ if (hword == ITEM_ENIGMA_BERRY)
+ {
+ if (gLinkPlayers[BATTLE_STRUCT->linkPlayerIndex].lp_field_18 == gStringBank)
+ {
+ StringCopy(dst, gEnigmaBerries[gStringBank].name);
+#ifdef ENGLISH
+ StringAppend(dst, gUnknown_08400A85);
+#else
+ de_sub_8073174(dst, gUnknown_08400A85);
+#endif
+ }
+ else
+ StringAppend(dst, gUnknown_08400A78);
+ }
+ else
+ CopyItemName(hword, dst);
+ }
+ else
+ CopyItemName(hword, dst);
+ srcID += 3;
+ }
+ break;
+ }
+ }
+}
+
+void sub_8121D1C(u8* textBuff)
+{
+ s32 counter = 0;
+ u32 i = 0;
+
+ while (counter != 4)
+ {
+ if (gUnknown_084016BC[i] == 0)
+ counter++;
+ if (gUnknown_084016BC[i++] == gStringInfo->currentMove)
+ break;
+ }
+
+ if (counter >= 0)
+ {
+ if (counter <= 2)
+ StringCopy(textBuff, gUnknown_08400E5E); // is
+ else if (counter <= 4)
+ StringCopy(textBuff, gUnknown_08400E62); // 's
+ }
+}
+
+void sub_8121D74(u8* dst)
+{
+ s32 counter = 0;
+ s32 i = 0;
+
+ while (*dst != EOS)
+ dst++;
+
+ while (counter != 4)
+ {
+ if (gUnknown_084016BC[i] == 0)
+ counter++;
+ if (gUnknown_084016BC[i++] == gStringInfo->currentMove)
+ break;
+ }
+
+ switch (counter)
+ {
+ case 0:
+ StringCopy(dst, gUnknown_084007C8);
+ break;
+ case 1:
+ StringCopy(dst, gUnknown_084007CA);
+ break;
+ case 2:
+ StringCopy(dst, gUnknown_084007CC);
+ break;
+ case 3:
+ StringCopy(dst, gUnknown_084007CE);
+ break;
+ case 4:
+ StringCopy(dst, gUnknown_084007D0);
+ break;
+ }
+}
diff --git a/src/battle_party_menu.c b/src/battle/battle_party_menu.c
index 73b847713..49e0b8432 100644
--- a/src/battle_party_menu.c
+++ b/src/battle/battle_party_menu.c
@@ -35,23 +35,16 @@ extern void PartyMenuDrawHPBars(void);
extern u8 sub_806B58C(u8);
extern u8 GetItemEffectType();
extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int);
-extern u16 sub_806BD80();
-extern u8 sub_806CA38();
extern void sub_806D5A4(void);
extern void sub_802E414(void);
extern void sub_80A6DCC(void);
extern void sub_806AF4C();
-extern u8 sub_80F9344(void);
-extern u8 sub_806B124(void);
-extern void sub_806C994();
-extern void sub_806BF74();
extern void sub_806AEDC(void);
extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8);
extern void sub_806E7D0(u8, const struct PartyPopupMenu *);
extern u8 *sub_8040D08();
extern void sub_8040B8C(void);
extern void sub_806E6F0();
-extern void sub_806D538();
extern void nullsub_14();
extern void OpenPartyMenu();
extern u8 sub_803FBBC(void);
@@ -586,7 +579,7 @@ static void Task_809538C(void)
{
do
{
- if (sub_806B124() == 1)
+ if (sub_806B124() == TRUE)
{
sub_806C994(EWRAM_1B000.unk260, gUnknown_020384F0);
sub_806BF74(EWRAM_1B000.unk260, 0);
diff --git a/src/battle_records.c b/src/battle/battle_records.c
index 61dc09792..d848a10b8 100644
--- a/src/battle_records.c
+++ b/src/battle/battle_records.c
@@ -3,7 +3,7 @@
#include "game_stat.h"
#include "link.h"
#include "menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "string_util.h"
#include "strings2.h"
#include "trainer_card.h"
diff --git a/src/battle_setup.c b/src/battle/battle_setup.c
index 04674e739..40949ed38 100644
--- a/src/battle_setup.c
+++ b/src/battle/battle_setup.c
@@ -18,7 +18,7 @@
#include "opponent_constants.h"
#include "palette.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "safari_zone.h"
#include "script.h"
#include "script_pokemon_80C4.h"
@@ -37,15 +37,15 @@ extern u16 gScriptResult;
extern void (*gFieldCallback)(void);
-EWRAM_DATA u16 gTrainerBattleMode = 0;
+EWRAM_DATA static u16 sTrainerBattleMode = 0;
EWRAM_DATA u16 gTrainerBattleOpponent = 0;
-EWRAM_DATA u16 gTrainerMapObjectLocalId = 0;
-EWRAM_DATA u8 *gTrainerIntroSpeech = NULL;
-EWRAM_DATA u8 *gTrainerDefeatSpeech = NULL;
-EWRAM_DATA u8 *gTrainerVictorySpeech = NULL;
-EWRAM_DATA u8 *gTrainerCannotBattleSpeech = NULL;
-EWRAM_DATA u8 *gTrainerBattleScriptReturnAddress = NULL;
-EWRAM_DATA u8 *gTrainerBattleEndScript = NULL;
+EWRAM_DATA static u16 sTrainerMapObjectLocalId = 0;
+EWRAM_DATA static u8 *sTrainerIntroSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerDefeatSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerVictorySpeech = NULL;
+EWRAM_DATA static u8 *sTrainerCannotBattleSpeech = NULL;
+EWRAM_DATA static u8 *sTrainerBattleScriptRetAddr = NULL;
+EWRAM_DATA static u8 *sTrainerBattleEndScript = NULL;
extern u16 gBattleTypeFlags;
extern u16 gScriptLastTalked;
@@ -62,80 +62,99 @@ extern u8 gUnknown_0819F8AE[];
extern u8 gUnknown_0819F80B[];
extern u8 gUnknown_081C6C02[];
-
+// The first transition is used if the enemy pokemon are lower level than our pokemon.
+// Otherwise, the second transition is used.
static const u8 gBattleTransitionTable_Wild[][2] =
{
- {8, 9},
- {5, 10},
- {0, 10},
- {7, 6},
+ {B_TRANSITION_SLICE, B_TRANSITION_WHITEFADE}, // Normal
+ {B_TRANSITION_CLOCKWISE_BLACKFADE, B_TRANSITION_GRID_SQUARES}, // Cave
+ {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES}, // Cave with flash used
+ {B_TRANSITION_WAVE, B_TRANSITION_RIPPLE}, // Water
};
static const u8 gBattleTransitionTable_Trainer[][2] =
{
- {4, 11},
- {2, 3},
- {0, 10},
- {1, 6},
+ {B_TRANSITION_POKEBALLS_TRAIL, B_TRANSITION_SHARDS}, // Normal
+ {B_TRANSITION_SHUFFLE, B_TRANSITION_BIG_POKEBALL}, // Cave
+ {B_TRANSITION_BLUR, B_TRANSITION_GRID_SQUARES}, // Cave with flash used
+ {B_TRANSITION_SWIRL, B_TRANSITION_RIPPLE}, // Water
+};
+
+enum
+{
+ TRAINER_PARAM_LOAD_VAL_8BIT,
+ TRAINER_PARAM_LOAD_VAL_16BIT,
+ TRAINER_PARAM_LOAD_VAL_32BIT,
+ TRAINER_PARAM_CLEAR_VAL_8BIT,
+ TRAINER_PARAM_CLEAR_VAL_16BIT,
+ TRAINER_PARAM_CLEAR_VAL_32BIT,
+ TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR,
+};
+
+struct TrainerBattleParameter
+{
+ void *varPtr;
+ u8 ptrType;
};
-static const struct TrainerBattleSpec gTrainerBattleSpecs_0[] =
-{
- {&gTrainerBattleMode, 0},
- {&gTrainerBattleOpponent, 1},
- {&gTrainerMapObjectLocalId, 1},
- {&gTrainerIntroSpeech, 2},
- {&gTrainerDefeatSpeech, 2},
- {&gTrainerVictorySpeech, 5},
- {&gTrainerCannotBattleSpeech, 5},
- {&gTrainerBattleEndScript, 5},
- {&gTrainerBattleScriptReturnAddress, 6},
+
+static const struct TrainerBattleParameter gTrainerBattleSpecs_0[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
-static const struct TrainerBattleSpec gTrainerBattleSpecs_1[] =
-{
- {&gTrainerBattleMode, 0},
- {&gTrainerBattleOpponent, 1},
- {&gTrainerMapObjectLocalId, 1},
- {&gTrainerIntroSpeech, 2},
- {&gTrainerDefeatSpeech, 2},
- {&gTrainerVictorySpeech, 5},
- {&gTrainerCannotBattleSpeech, 5},
- {&gTrainerBattleEndScript, 2},
- {&gTrainerBattleScriptReturnAddress, 6},
+static const struct TrainerBattleParameter gTrainerBattleSpecs_1[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
-static const struct TrainerBattleSpec gTrainerBattleSpecs_2[] =
-{
- {&gTrainerBattleMode, 0},
- {&gTrainerBattleOpponent, 1},
- {&gTrainerMapObjectLocalId, 1},
- {&gTrainerIntroSpeech, 2},
- {&gTrainerDefeatSpeech, 2},
- {&gTrainerVictorySpeech, 5},
- {&gTrainerCannotBattleSpeech, 2},
- {&gTrainerBattleEndScript, 5},
- {&gTrainerBattleScriptReturnAddress, 6},
+static const struct TrainerBattleParameter gTrainerBattleSpecs_2[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
-static const struct TrainerBattleSpec gTrainerBattleSpecs_3[] =
-{
- {&gTrainerBattleMode, 0},
- {&gTrainerBattleOpponent, 1},
- {&gTrainerMapObjectLocalId, 1},
- {&gTrainerIntroSpeech, 5},
- {&gTrainerDefeatSpeech, 2},
- {&gTrainerVictorySpeech, 5},
- {&gTrainerCannotBattleSpeech, 5},
- {&gTrainerBattleEndScript, 5},
- {&gTrainerBattleScriptReturnAddress, 6},
+static const struct TrainerBattleParameter gTrainerBattleSpecs_3[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerIntroSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
-static const struct TrainerBattleSpec gTrainerBattleSpecs_4[] =
-{
- {&gTrainerBattleMode, 0},
- {&gTrainerBattleOpponent, 1},
- {&gTrainerMapObjectLocalId, 1},
- {&gTrainerIntroSpeech, 2},
- {&gTrainerDefeatSpeech, 2},
- {&gTrainerVictorySpeech, 5},
- {&gTrainerCannotBattleSpeech, 2},
- {&gTrainerBattleEndScript, 2},
- {&gTrainerBattleScriptReturnAddress, 6},
+static const struct TrainerBattleParameter gTrainerBattleSpecs_4[] =
+{
+ {&sTrainerBattleMode, TRAINER_PARAM_LOAD_VAL_8BIT},
+ {&gTrainerBattleOpponent, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerMapObjectLocalId, TRAINER_PARAM_LOAD_VAL_16BIT},
+ {&sTrainerIntroSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerDefeatSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerVictorySpeech, TRAINER_PARAM_CLEAR_VAL_32BIT},
+ {&sTrainerCannotBattleSpeech, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleEndScript, TRAINER_PARAM_LOAD_VAL_32BIT},
+ {&sTrainerBattleScriptRetAddr, TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR},
};
const struct TrainerEyeTrainer gTrainerEyeTrainers[] =
@@ -424,21 +443,36 @@ const struct TrainerEyeTrainer gTrainerEyeTrainers[] =
static const u16 sBadgeFlags[] = {BADGE01_GET, BADGE02_GET, BADGE03_GET, BADGE04_GET, BADGE05_GET, BADGE06_GET, BADGE07_GET, BADGE08_GET};
-void task01_battle_start(u8 taskId)
+static void DoStandardWildBattle(void);
+static void DoSafariBattle(void);
+static void SetTrainerFlagsAfterTrainerEyeRematch(void);
+static void CB2_EndWildBattle(void);
+static void CB2_EndScriptedWildBattle(void);
+static u8 GetWildBattleTransition(void);
+static u8 GetTrainerBattleTransition(void);
+static void CB2_GiveStarter(void);
+static void CB2_StartFirstBattle(void);
+static void CB2_EndFirstBattle(void);
+static bool32 IsPlayerDefeated(u32 a1);
+
+#define tState data[0]
+#define tTransition data[1]
+
+static void Task_BattleStart(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- switch (data[0])
+ switch (tState)
{
case 0:
if (!FieldPoisonEffectIsRunning()) // is poison not active?
{
- sub_811AABC(data[1]);
- data[0]++; // go to case 1.
+ BattleTransition_StartOnField(tTransition);
+ tState++; // go to case 1.
}
break;
case 1:
- if (sub_811AAE8() == TRUE)
+ if (IsBattleTransitionDone() == TRUE)
{
SetMainCallback2(sub_800E7C4);
prev_quest_postbuffer_cursor_backup_reset();
@@ -449,132 +483,135 @@ void task01_battle_start(u8 taskId)
}
}
-void task_add_01_battle_start(u8 transition, u16 song)
+static void CreateBattleStartTask(u8 transition, u16 song)
{
- u8 taskId = CreateTask(task01_battle_start, 1);
+ u8 taskId = CreateTask(Task_BattleStart, 1);
- gTasks[taskId].data[1] = transition;
+ gTasks[taskId].tTransition = transition;
current_map_music_set__default_for_battle(song);
}
-void CheckForSafariZoneAndProceed(void)
+#undef tState
+#undef tTransition
+
+void BattleSetup_StartWildBattle(void)
{
if (GetSafariZoneFlag())
- StartBattle_Safari();
+ DoSafariBattle();
else
- StartBattle_StandardWild();
+ DoStandardWildBattle();
}
-void StartBattle_StandardWild(void)
+static void DoStandardWildBattle(void)
{
ScriptContext2_Enable();
FreezeMapObjects();
sub_80597F4();
- gMain.savedCallback = HandleWildBattleEnd;
+ gMain.savedCallback = CB2_EndWildBattle;
gBattleTypeFlags = 0;
- task_add_01_battle_start(GetWildBattleTransition(), 0);
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
IncrementGameStat(7);
IncrementGameStat(8);
}
-void StartBattle_Roamer(void)
+void BattleSetup_StartRoamerBattle(void)
{
ScriptContext2_Enable();
FreezeMapObjects();
sub_80597F4();
- gMain.savedCallback = HandleWildBattleEnd;
+ gMain.savedCallback = CB2_EndWildBattle;
gBattleTypeFlags = BATTLE_TYPE_ROAMER;
- task_add_01_battle_start(GetWildBattleTransition(), 0);
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
IncrementGameStat(7);
IncrementGameStat(8);
}
-void StartBattle_Safari(void)
+static void DoSafariBattle(void)
{
ScriptContext2_Enable();
FreezeMapObjects();
sub_80597F4();
gMain.savedCallback = sub_80C824C;
gBattleTypeFlags = BATTLE_TYPE_SAFARI;
- task_add_01_battle_start(GetWildBattleTransition(), 0);
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
}
-void task_add_01_battle_start_with_music_and_stats(void)
+static void StartTheBattle(void)
{
- task_add_01_battle_start(GetTrainerBattleTransition(), 0);
+ CreateBattleStartTask(GetTrainerBattleTransition(), 0);
IncrementGameStat(7);
IncrementGameStat(9);
}
//Initiates battle where Wally catches Ralts
-void StartBattle_WallyTutorial(void)
+void ScrSpecial_StartWallyTutorialBattle(void)
{
CreateMaleMon(&gEnemyParty[0], SPECIES_RALTS, 5);
ScriptContext2_Enable();
gMain.savedCallback = c2_exit_to_overworld_1_continue_scripts_restart_music;
gBattleTypeFlags = BATTLE_TYPE_WALLY_TUTORIAL;
- task_add_01_battle_start(8, 0);
+ CreateBattleStartTask(B_TRANSITION_SLICE, 0);
}
-void StartBattle_ScriptedWild(void)
+void BattleSetup_StartScriptedWildBattle(void)
{
ScriptContext2_Enable();
- gMain.savedCallback = HandleScriptedWildBattleEnd;
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = 0;
- task_add_01_battle_start(GetWildBattleTransition(), 0);
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
IncrementGameStat(7);
IncrementGameStat(8);
}
-void StartBattle_SouthernIsland(void)
+void ScrSpecial_StartSouthernIslandBattle(void)
{
ScriptContext2_Enable();
- gMain.savedCallback = HandleScriptedWildBattleEnd;
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
- task_add_01_battle_start(GetWildBattleTransition(), 0);
+ CreateBattleStartTask(GetWildBattleTransition(), 0);
IncrementGameStat(7);
IncrementGameStat(8);
}
-void StartBattle_Rayquaza(void)
+void ScrSpecial_StartRayquazaBattle(void)
{
ScriptContext2_Enable();
- gMain.savedCallback = HandleScriptedWildBattleEnd;
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY;
- task_add_01_battle_start(0, BGM_BATTLE34);
+ CreateBattleStartTask(B_TRANSITION_BLUR, BGM_BATTLE34);
IncrementGameStat(7);
IncrementGameStat(8);
}
-void StartBattle_GroudonKyogre(void)
+void ScrSpecial_StartGroudonKyogreBattle(void)
{
ScriptContext2_Enable();
- gMain.savedCallback = HandleScriptedWildBattleEnd;
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON;
- if (gGameVersion == 2)
- task_add_01_battle_start(0xB, BGM_BATTLE34); // KYOGRE
+ if (gGameVersion == VERSION_RUBY)
+ CreateBattleStartTask(B_TRANSITION_SHARDS, BGM_BATTLE34); // GROUDON
else
- task_add_01_battle_start(0x6, BGM_BATTLE34); // GROUDON
+ CreateBattleStartTask(B_TRANSITION_RIPPLE, BGM_BATTLE34); // KYOGRE
IncrementGameStat(7);
IncrementGameStat(8);
}
-void StartBattle_Regi(void)
+void ScrSpecial_StartRegiBattle(void)
{
ScriptContext2_Enable();
- gMain.savedCallback = HandleScriptedWildBattleEnd;
+ gMain.savedCallback = CB2_EndScriptedWildBattle;
gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_REGI;
- task_add_01_battle_start(0xA, BGM_BATTLE36);
+ CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, BGM_BATTLE36);
IncrementGameStat(7);
IncrementGameStat(8);
}
-void HandleWildBattleEnd(void)
+static void CB2_EndWildBattle(void)
{
CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE);
ResetOamRange(0, 128);
- if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE)
+ if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
SetMainCallback2(CB2_WhiteOut);
}
@@ -585,18 +622,18 @@ void HandleWildBattleEnd(void)
}
}
-void HandleScriptedWildBattleEnd(void)
+void CB2_EndScriptedWildBattle(void)
{
CpuFill16(0, (void *)BG_PLTT, BG_PLTT_SIZE);
ResetOamRange(0, 128);
- if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE)
+ if (IsPlayerDefeated(gBattleOutcome) == TRUE)
SetMainCallback2(CB2_WhiteOut);
else
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
}
-s8 GetBattleTerrain(void)
+s8 BattleSetup_GetTerrain(void)
{
u16 tileBehavior;
s16 x, y;
@@ -605,11 +642,11 @@ s8 GetBattleTerrain(void)
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
if (MetatileBehavior_IsTallGrass(tileBehavior))
- return 0;
+ return BATTLE_TERRAIN_GRASS;
if (MetatileBehavior_IsLongGrass(tileBehavior))
- return 1;
+ return BATTLE_TERRAIN_LONG_GRASS;
if (MetatileBehavior_IsSandOrDeepSand(tileBehavior))
- return 2;
+ return BATTLE_TERRAIN_SAND;
switch (gMapHeader.mapType)
{
case MAP_TYPE_TOWN:
@@ -618,54 +655,49 @@ s8 GetBattleTerrain(void)
break;
case MAP_TYPE_UNDERGROUND:
if (sub_80574C4(tileBehavior))
- return 8;
+ return BATTLE_TERRAIN_BUILDING;
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
- return 5;
- return 7;
+ return BATTLE_TERRAIN_POND;
+ return BATTLE_TERRAIN_CAVE;
case MAP_TYPE_INDOOR:
case MAP_TYPE_SECRET_BASE:
- return 8;
+ return BATTLE_TERRAIN_BUILDING;
case MAP_TYPE_UNDERWATER:
- return 3;
+ return BATTLE_TERRAIN_UNDERWATER;
case MAP_TYPE_6:
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
- return 4;
- return 9;
+ return BATTLE_TERRAIN_WATER;
+ return BATTLE_TERRAIN_PLAIN;
}
if (sub_8057568(tileBehavior))
- return 4;
+ return BATTLE_TERRAIN_WATER;
if (MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
- return 5;
+ return BATTLE_TERRAIN_POND;
if (sub_80574D8(tileBehavior))
- return 6;
+ return BATTLE_TERRAIN_MOUNTAIN;
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
{
if (sub_8057450(tileBehavior))
- return 5;
+ return BATTLE_TERRAIN_POND;
if (MetatileBehavior_IsBridge(tileBehavior) == TRUE)
- return 4;
+ return BATTLE_TERRAIN_WATER;
}
- if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 28)
- return 2;
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE113 && gSaveBlock1.location.mapNum == MAP_ID_ROUTE113)
+ return BATTLE_TERRAIN_SAND;
if (GetSav1Weather() == 8)
- return 2;
- return 9;
+ return BATTLE_TERRAIN_SAND;
+ return BATTLE_TERRAIN_PLAIN;
}
-s8 GetBattleTransitionTypeByMap(void)
+static s8 GetBattleTransitionTypeByMap(void)
{
- u8 flashUsed;
u16 tileBehavior;
s16 x, y;
PlayerGetDestCoords(&x, &y);
tileBehavior = MapGridGetMetatileBehaviorAt(x, y);
-
- flashUsed = sav1_get_flash_used_on_map();
-
- if (flashUsed)
+ if (Overworld_GetFlashLevel())
return 2;
-
if (!MetatileBehavior_IsSurfableWaterOrUnderwater(tileBehavior))
{
switch (gMapHeader.mapType)
@@ -681,7 +713,7 @@ s8 GetBattleTransitionTypeByMap(void)
return 3;
}
-u16 GetSumOfPartyMonLevel(u8 numMons)
+static u16 GetSumOfPlayerPartyLevel(u8 numMons)
{
u8 sum = 0;
int i;
@@ -701,37 +733,37 @@ u16 GetSumOfPartyMonLevel(u8 numMons)
return sum;
}
-u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons)
+static u8 GetSumOfEnemyPartyLevel(u16 opponentId, u8 numMons)
{
u8 i;
u8 sum;
u32 count = numMons;
void *party;
- if (gTrainers[trainerNum].partySize < count)
- count = gTrainers[trainerNum].partySize;
+ if (gTrainers[opponentId].partySize < count)
+ count = gTrainers[opponentId].partySize;
sum = 0;
- switch (gTrainers[trainerNum].partyFlags)
+ switch (gTrainers[opponentId].partyFlags)
{
case 0:
- party = gTrainers[trainerNum].party;
+ party = gTrainers[opponentId].party;
for (i = 0; i < count; i++)
sum += ((struct TrainerPartyMember0 *)party)[i].level;
break;
case 1:
- party = gTrainers[trainerNum].party;
+ party = gTrainers[opponentId].party;
for (i = 0; i < count; i++)
sum += ((struct TrainerPartyMember1 *)party)[i].level;
break;
case 2:
- party = gTrainers[trainerNum].party;
+ party = gTrainers[opponentId].party;
for (i = 0; i < count; i++)
sum += ((struct TrainerPartyMember2 *)party)[i].level;
break;
case 3:
- party = gTrainers[trainerNum].party;
+ party = gTrainers[opponentId].party;
for (i = 0; i < count; i++)
sum += ((struct TrainerPartyMember3 *)party)[i].level;
break;
@@ -740,76 +772,79 @@ u8 GetSumOfEnemyPartyLevel(u16 trainerNum, u8 numMons)
return sum;
}
-u8 GetWildBattleTransition(void)
+static u8 GetWildBattleTransition(void)
{
- u8 flashVar = GetBattleTransitionTypeByMap();
- u8 level = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 transitionType = GetBattleTransitionTypeByMap();
+ u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 playerLevel = GetSumOfPlayerPartyLevel(1);
- if (level < (u8)GetSumOfPartyMonLevel(1)) // is wild mon level than the player's mon level?
- return gBattleTransitionTable_Wild[flashVar][0];
+ if (enemyLevel < playerLevel)
+ return gBattleTransitionTable_Wild[transitionType][0];
else
- return gBattleTransitionTable_Wild[flashVar][1]; // use a white fade in instead of normal transition.
+ return gBattleTransitionTable_Wild[transitionType][1];
}
-u8 GetTrainerBattleTransition(void)
+static u8 GetTrainerBattleTransition(void)
{
const struct Trainer *trainer;
u8 minPartyCount;
- u8 flashVar;
- u8 level;
+ u8 transitionType;
+ u8 enemyLevel;
+ u8 playerLevel;
if (gTrainerBattleOpponent == 1024) // link battle?
- return 16;
+ return B_TRANSITION_STEVEN;
trainer = gTrainers;
if (trainer[gTrainerBattleOpponent].trainerClass == 24) // league?
{
if (gTrainerBattleOpponent == 261)
- return 12;
+ return B_TRANSITION_SYDNEY;
if (gTrainerBattleOpponent == 262)
- return 13;
+ return B_TRANSITION_PHOEBE;
if (gTrainerBattleOpponent == 263)
- return 14;
+ return B_TRANSITION_GLACIA;
if (gTrainerBattleOpponent == 264)
- return 15;
- return 16;
+ return B_TRANSITION_DRAKE;
+ return B_TRANSITION_STEVEN;
}
if (trainer[gTrainerBattleOpponent].trainerClass == 32) // team leader?
- return 16;
+ return B_TRANSITION_STEVEN;
if (trainer[gTrainerBattleOpponent].doubleBattle == TRUE)
minPartyCount = 2; // double battles always at least have 2 pokemon.
else
minPartyCount = 1;
- flashVar = GetBattleTransitionTypeByMap();
- level = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent, minPartyCount);
-
- if (level < (u8)GetSumOfPartyMonLevel(minPartyCount)) // is wild mon level than the player's mon level?
- return gBattleTransitionTable_Trainer[flashVar][0];
+ transitionType = GetBattleTransitionTypeByMap();
+ enemyLevel = GetSumOfEnemyPartyLevel(gTrainerBattleOpponent, minPartyCount);
+ playerLevel = GetSumOfPlayerPartyLevel(minPartyCount);
+ if (enemyLevel < playerLevel) // is wild mon level than the player's mon level?
+ return gBattleTransitionTable_Trainer[transitionType][0];
else
- return gBattleTransitionTable_Trainer[flashVar][1];
+ return gBattleTransitionTable_Trainer[transitionType][1];
}
-u8 GetBattleTowerBattleTransition(void)
+u8 BattleSetup_GetBattleTowerBattleTransition(void)
{
- u8 monData = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 enemyLevel = GetMonData(&gEnemyParty[0], MON_DATA_LEVEL);
+ u8 playerLevel = GetSumOfPlayerPartyLevel(1);
- if (monData < (u8)GetSumOfPartyMonLevel(1))
- return 4;
+ if (enemyLevel < playerLevel)
+ return B_TRANSITION_POKEBALLS_TRAIL;
else
- return 3;
+ return B_TRANSITION_BIG_POKEBALL;
}
-void ChooseStarter(void)
+void ScrSpecial_ChooseStarter(void)
{
SetMainCallback2(CB2_ChooseStarter);
gMain.savedCallback = CB2_GiveStarter;
}
-void CB2_GiveStarter(void)
+static void CB2_GiveStarter(void)
{
u16 starterPoke;
@@ -819,18 +854,18 @@ void CB2_GiveStarter(void)
ResetTasks();
sub_80408BC();
SetMainCallback2(CB2_StartFirstBattle);
- sub_811AAD8(0);
+ BattleTransition_Start(0);
}
-void CB2_StartFirstBattle(void)
+static void CB2_StartFirstBattle(void)
{
UpdatePaletteFade();
RunTasks();
- if (sub_811AAE8() == TRUE)
+ if (IsBattleTransitionDone() == TRUE)
{
gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE;
- gMain.savedCallback = HandleFirstBattleEnd;
+ gMain.savedCallback = CB2_EndFirstBattle;
SetMainCallback2(sub_800E7C4);
prev_quest_postbuffer_cursor_backup_reset();
overworld_poison_timer_set();
@@ -839,35 +874,35 @@ void CB2_StartFirstBattle(void)
}
}
-void HandleFirstBattleEnd(void)
+static void CB2_EndFirstBattle(void)
{
- sav1_reset_battle_music_maybe();
+ Overworld_ClearSavedMusic();
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
}
-u32 TrainerBattleLoadArg32(const u8 *ptr)
+static u32 TrainerBattleLoadArg32(const u8 *ptr)
{
return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24);
}
-u16 TrainerBattleLoadArg16(const u8 *ptr)
+static u16 TrainerBattleLoadArg16(const u8 *ptr)
{
return ptr[0] | (ptr[1] << 8);
}
-u8 TrainerBattleLoadArg8(const u8 *ptr)
+static u8 TrainerBattleLoadArg8(const u8 *ptr)
{
return ptr[0];
}
-u16 trainerflag_opponent(void)
+static u16 CurrentOpponentTrainerFlag(void)
{
return TRAINER_FLAG_START + gTrainerBattleOpponent;
}
-bool32 battle_exit_is_player_defeat(u32 a1)
+static bool32 IsPlayerDefeated(u32 battleOutcome)
{
- switch (a1)
+ switch (battleOutcome)
{
case 2:
case 3:
@@ -882,69 +917,69 @@ bool32 battle_exit_is_player_defeat(u32 a1)
return FALSE;
}
-void sub_80822BC(void)
+static void sub_80822BC(void)
{
- gTrainerBattleMode = 0;
+ sTrainerBattleMode = 0;
gTrainerBattleOpponent = 0;
- gTrainerMapObjectLocalId = 0;
- gTrainerIntroSpeech = 0;
- gTrainerDefeatSpeech = 0;
- gTrainerVictorySpeech = 0;
- gTrainerCannotBattleSpeech = 0;
- gTrainerBattleScriptReturnAddress = 0;
- gTrainerBattleEndScript = 0;
+ sTrainerMapObjectLocalId = 0;
+ sTrainerIntroSpeech = 0;
+ sTrainerDefeatSpeech = 0;
+ sTrainerVictorySpeech = 0;
+ sTrainerCannotBattleSpeech = 0;
+ sTrainerBattleScriptRetAddr = 0;
+ sTrainerBattleEndScript = 0;
}
-void TrainerBattleLoadArgs(const struct TrainerBattleSpec *specs, const u8 *data)
+static void TrainerBattleLoadArgs(const struct TrainerBattleParameter *specs, const u8 *data)
{
while (1)
{
switch (specs->ptrType)
{
- case 0:
- *(u8 *)specs->ptr = TrainerBattleLoadArg8(data);
- data++;
+ case TRAINER_PARAM_LOAD_VAL_8BIT:
+ *(u8 *)specs->varPtr = TrainerBattleLoadArg8(data);
+ data += 1;
break;
- case 1:
- *(u16 *)specs->ptr = TrainerBattleLoadArg16(data);
+ case TRAINER_PARAM_LOAD_VAL_16BIT:
+ *(u16 *)specs->varPtr = TrainerBattleLoadArg16(data);
data += 2;
break;
- case 2:
- *(u32 *)specs->ptr = TrainerBattleLoadArg32(data);
+ case TRAINER_PARAM_LOAD_VAL_32BIT:
+ *(u32 *)specs->varPtr = TrainerBattleLoadArg32(data);
data += 4;
break;
- case 3:
- *(u8 *)specs->ptr = 0;
+ case TRAINER_PARAM_CLEAR_VAL_8BIT:
+ *(u8 *)specs->varPtr = 0;
break;
- case 4:
- *(u16 *)specs->ptr = 0;
+ case TRAINER_PARAM_CLEAR_VAL_16BIT:
+ *(u16 *)specs->varPtr = 0;
break;
- case 5:
- *(u32 *)specs->ptr = 0;
+ case TRAINER_PARAM_CLEAR_VAL_32BIT:
+ *(u32 *)specs->varPtr = 0;
break;
- case 6:
- *(const u8 **)specs->ptr = data;
+ case TRAINER_PARAM_LOAD_SCRIPT_RET_ADDR:
+ *(const u8 **)specs->varPtr = data;
return;
}
specs++;
}
}
-void battle_80801F0(void)
+static void battle_80801F0(void)
{
- if (gTrainerMapObjectLocalId)
+ if (sTrainerMapObjectLocalId)
{
- gScriptLastTalked = gTrainerMapObjectLocalId;
- gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(gTrainerMapObjectLocalId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ gScriptLastTalked = sTrainerMapObjectLocalId;
+ gSelectedMapObject = GetFieldObjectIdByLocalIdAndMap(sTrainerMapObjectLocalId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
}
}
-u8 *TrainerBattleConfigure(const u8 *data)
+u8 *BattleSetup_ConfigureTrainerBattle(const u8 *data)
{
sub_80822BC();
- gTrainerBattleMode = TrainerBattleLoadArg8(data);
+ sTrainerBattleMode = TrainerBattleLoadArg8(data);
- switch (gTrainerBattleMode)
+ switch (sTrainerBattleMode)
{
case 3:
TrainerBattleLoadArgs(gTrainerBattleSpecs_3, data);
@@ -984,7 +1019,7 @@ void TrainerWantsBattle(u8 trainerMapObjId, u8 *trainerScript)
{
gSelectedMapObject = trainerMapObjId;
gScriptLastTalked = gMapObjects[trainerMapObjId].localId;
- TrainerBattleConfigure(trainerScript + 1);
+ BattleSetup_ConfigureTrainerBattle(trainerScript + 1);
ScriptContext1_SetupScript(gUnknown_0819F80B);
ScriptContext2_Enable();
}
@@ -1002,27 +1037,27 @@ void sub_8082524(void)
npc_set_running_behaviour_etc(mapObject, npc_running_behaviour_by_direction(mapObject->mapobj_unk_18));
}
-u8 sub_8082558(void)
+u8 ScrSpecial_GetTrainerBattleMode(void)
{
- return gTrainerBattleMode;
+ return sTrainerBattleMode;
}
-u8 sub_8082564(void)
+u8 ScrSpecial_HasTrainerBeenFought(void)
{
- return FlagGet(trainerflag_opponent());
+ return FlagGet(CurrentOpponentTrainerFlag());
}
-void sub_808257C(void)
+void SetCurrentTrainerBattledFlag(void)
{
- FlagSet(trainerflag_opponent());
+ FlagSet(CurrentOpponentTrainerFlag());
}
void unref_sub_8082590(void)
{
- FlagSet(trainerflag_opponent()); // duplicate function
+ FlagSet(CurrentOpponentTrainerFlag()); // duplicate function
}
-u8 trainer_flag_check(u16 flag)
+u8 HasTrainerAlreadyBeenFought(u16 flag)
{
return FlagGet(TRAINER_FLAG_START + flag);
}
@@ -1034,14 +1069,14 @@ void trainer_flag_set(u16 flag)
void trainer_flag_clear(u16 flag)
{
- FlagReset(TRAINER_FLAG_START + flag);
+ FlagClear(TRAINER_FLAG_START + flag);
}
-void sub_80825E4(void)
+void BattleSetup_StartTrainerBattle(void)
{
gBattleTypeFlags = BATTLE_TYPE_TRAINER;
gMain.savedCallback = sub_808260C;
- task_add_01_battle_start_with_music_and_stats();
+ StartTheBattle();
ScriptContext1_Stop();
}
@@ -1051,74 +1086,77 @@ void sub_808260C(void)
{
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); // link battle?
}
- else if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE)
+ else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
SetMainCallback2(CB2_WhiteOut);
}
else
{
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
- sub_808257C();
+ SetCurrentTrainerBattledFlag();
}
}
-void do_choose_name_or_words_screen(void)
+void CB2_EndTrainerEyeRematchBattle(void)
{
if (gTrainerBattleOpponent == 1024)
{
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music); // link battle?
}
- else if (battle_exit_is_player_defeat(gBattleOutcome) == TRUE)
+ else if (IsPlayerDefeated(gBattleOutcome) == TRUE)
{
SetMainCallback2(CB2_WhiteOut);
}
else
{
SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
- sub_808257C();
- sub_8082CB8();
+ SetCurrentTrainerBattledFlag();
+ SetTrainerFlagsAfterTrainerEyeRematch();
}
}
-void sub_80826B0(void)
+void ScrSpecial_StartTrainerEyeRematch(void)
{
gBattleTypeFlags = BATTLE_TYPE_TRAINER;
- gMain.savedCallback = do_choose_name_or_words_screen;
- task_add_01_battle_start_with_music_and_stats();
+ gMain.savedCallback = CB2_EndTrainerEyeRematchBattle;
+ StartTheBattle();
ScriptContext1_Stop();
}
-void sub_80826D8(void)
+static u8 *GetTrainerIntroSpeech(void);
+static u8 *GetTrainerNonBattlingSpeech(void);
+
+void ScrSpecial_ShowTrainerIntroSpeech(void)
{
- ShowFieldMessage(sub_808281C());
+ ShowFieldMessage(GetTrainerIntroSpeech());
}
-u8 *sub_80826E8(void)
+u8 *BattleSetup_GetScriptAddrAfterBattle(void)
{
- if (gTrainerBattleScriptReturnAddress)
- return gTrainerBattleScriptReturnAddress;
+ if (sTrainerBattleScriptRetAddr)
+ return sTrainerBattleScriptRetAddr;
else
return gUnknown_081C6C02;
}
-u8 *sub_8082700(void)
+u8 *BattleSetup_GetTrainerPostBattleScript(void)
{
- if (gTrainerBattleEndScript)
- return gTrainerBattleEndScript;
+ if (sTrainerBattleEndScript)
+ return sTrainerBattleEndScript;
else
return gUnknown_081C6C02;
}
-void sub_8082718(void)
+void ScrSpecial_ShowTrainerNonBattlingSpeech(void)
{
- ShowFieldMessage(sub_8082880());
+ ShowFieldMessage(GetTrainerNonBattlingSpeech());
}
void PlayTrainerEncounterMusic(void)
{
u16 music;
- if (gTrainerBattleMode != 1 && gTrainerBattleMode != 8)
+ if (sTrainerBattleMode != 1 && sTrainerBattleMode != 8)
{
switch (sub_803FC58(gTrainerBattleOpponent))
{
@@ -1169,7 +1207,7 @@ void PlayTrainerEncounterMusic(void)
}
//Returns an empty string if a null pointer was passed, otherwise returns str
-u8 *SanitizeString(const u8 *str)
+static u8 *SanitizeString(const u8 *str)
{
if (str)
return (u8 *) str;
@@ -1177,9 +1215,9 @@ u8 *SanitizeString(const u8 *str)
return (u8 *) gOtherText_CancelWithTerminator;
}
-u8 *sub_808281C(void)
+static u8 *GetTrainerIntroSpeech(void)
{
- return SanitizeString(gTrainerIntroSpeech);
+ return SanitizeString(sTrainerIntroSpeech);
}
u8 *sub_8082830(void)
@@ -1189,7 +1227,7 @@ u8 *sub_8082830(void)
if (gTrainerBattleOpponent == 1024)
str = sub_80BCCE8();
else
- str = gTrainerDefeatSpeech;
+ str = sTrainerDefeatSpeech;
StringExpandPlaceholders(gStringVar4, SanitizeString(str));
return gStringVar4;
@@ -1197,43 +1235,43 @@ u8 *sub_8082830(void)
u8 *unref_sub_808286C(void)
{
- return SanitizeString(gTrainerVictorySpeech);
+ return SanitizeString(sTrainerVictorySpeech);
}
-u8 *sub_8082880(void)
+static u8 *GetTrainerNonBattlingSpeech(void)
{
- return SanitizeString(gTrainerCannotBattleSpeech);
+ return SanitizeString(sTrainerCannotBattleSpeech);
}
-s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+s32 sub_8082894(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
s32 i;
for (i = 0; i < NUM_TRAINER_EYE_TRAINERS; i++)
{
- if (trainers[i].trainerNums[0] == trainerNum)
+ if (trainers[i].opponentIDs[0] == opponentId)
return i;
}
return -1;
}
-s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+s32 sub_80828B8(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
s32 i;
s32 j;
for (i = 0; i < NUM_TRAINER_EYE_TRAINERS; i++)
{
- for (j = 0; j < 5 && trainers[i].trainerNums[j] != 0; j++)
+ for (j = 0; j < 5 && trainers[i].opponentIDs[j] != 0; j++)
{
- if (trainers[i].trainerNums[j] == trainerNum)
+ if (trainers[i].opponentIDs[j] == opponentId)
return i;
}
}
return -1;
}
-bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
+bool32 UpdateRandomTrainerEyeRematches(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapNum)
{
int i;
bool32 ret = FALSE;
@@ -1243,14 +1281,19 @@ bool32 sub_80828FC(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 m
if (trainers[i].mapGroup == mapGroup && trainers[i].mapNum == mapNum)
{
if (gSaveBlock1.trainerRematches[i] != 0)
+ {
+ // Trainer already wants rematch. Don't bother updating it
ret = TRUE;
- else if (trainer_flag_check(trainers[i].trainerNums[0]) == TRUE && (Random() % 100) <= 30)
+ }
+ else if (HasTrainerAlreadyBeenFought(trainers[i].opponentIDs[0]) == TRUE
+ && (Random() % 100) <= 30) // 31% chance of getting a rematch
{
- int j = 1;
+ int rematches = 1;
- while (j < 5 && trainers[i].trainerNums[j] != 0 && trainer_flag_check(trainers[i].trainerNums[j]))
- j++;
- gSaveBlock1.trainerRematches[i] = j;
+ while (rematches < 5 && trainers[i].opponentIDs[rematches] != 0
+ && HasTrainerAlreadyBeenFought(trainers[i].opponentIDs[rematches]))
+ rematches++;
+ gSaveBlock1.trainerRematches[i] = rematches;
ret = TRUE;
}
}
@@ -1282,9 +1325,9 @@ s32 sub_80829E8(const struct TrainerEyeTrainer *trainers, u16 mapGroup, u16 mapN
return 0;
}
-bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
- s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
+ s32 trainerEyeIndex = sub_8082894(trainers, opponentId);
if (trainerEyeIndex != -1 && trainerEyeIndex < 100 && gSaveBlock1.trainerRematches[trainerEyeIndex])
return TRUE;
@@ -1292,9 +1335,9 @@ bool8 sub_8082A18(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
return FALSE;
}
-bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 GetTrainerEyeRematchFlag(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
- s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum);
+ s32 trainerEyeIndex = sub_80828B8(trainers, opponentId);
if (trainerEyeIndex != -1 && trainerEyeIndex < 100 && gSaveBlock1.trainerRematches[trainerEyeIndex])
return TRUE;
@@ -1302,38 +1345,38 @@ bool8 sub_8082A54(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
return FALSE;
}
-u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+u16 sub_8082A90(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
int i;
const struct TrainerEyeTrainer *trainer;
- s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
+ s32 trainerEyeIndex = sub_8082894(trainers, opponentId);
if (trainerEyeIndex == -1)
return 0;
trainer = &trainers[trainerEyeIndex];
for (i = 1; i < 5; i++)
{
- if (!trainer->trainerNums[i])
- return trainer->trainerNums[i - 1];
- if (!trainer_flag_check(trainer->trainerNums[i]))
- return trainer->trainerNums[i];
+ if (!trainer->opponentIDs[i])
+ return trainer->opponentIDs[i - 1];
+ if (!HasTrainerAlreadyBeenFought(trainer->opponentIDs[i]))
+ return trainer->opponentIDs[i];
}
- return trainer->trainerNums[4];
+ return trainer->opponentIDs[4];
}
-void sub_8082AE4(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+void ClearTrainerEyeRematchFlag(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
- s32 trainerEyeIndex = sub_80828B8(trainers, trainerNum);
+ s32 trainerEyeIndex = sub_80828B8(trainers, opponentId);
if (trainerEyeIndex != -1)
gSaveBlock1.trainerRematches[trainerEyeIndex] = 0;
}
-bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 trainerNum)
+bool8 sub_8082B10(const struct TrainerEyeTrainer *trainers, u16 opponentId)
{
- s32 trainerEyeIndex = sub_8082894(trainers, trainerNum);
+ s32 trainerEyeIndex = sub_8082894(trainers, opponentId);
- if (trainerEyeIndex != -1 && trainer_flag_check(trainers[trainerEyeIndex].trainerNums[1]))
+ if (trainerEyeIndex != -1 && HasTrainerAlreadyBeenFought(trainers[trainerEyeIndex].opponentIDs[1]))
return TRUE;
else
return FALSE;
@@ -1377,7 +1420,7 @@ bool32 sub_8082BA4(void)
void sub_8082BD0(u16 mapGroup, u16 mapNum)
{
- if (sub_8082BA4() && sub_80828FC(gTrainerEyeTrainers, mapGroup, mapNum) == TRUE)
+ if (sub_8082BA4() && UpdateRandomTrainerEyeRematches(gTrainerEyeTrainers, mapGroup, mapNum) == TRUE)
gSaveBlock1.trainerRematchStepCounter = 0;
}
@@ -1391,9 +1434,9 @@ s32 unref_sub_8082C2C(u16 mapGroup, u16 mapNum)
return sub_80829E8(gTrainerEyeTrainers, mapGroup, mapNum);
}
-u16 sub_8082C4C(u16 trainerNum)
+u16 sub_8082C4C(u16 opponentId)
{
- return sub_8082A90(gTrainerEyeTrainers, trainerNum);
+ return sub_8082A90(gTrainerEyeTrainers, opponentId);
}
s32 sub_8082C68(void)
@@ -1404,13 +1447,13 @@ s32 sub_8082C68(void)
return sub_8082B10(gTrainerEyeTrainers, gTrainerBattleOpponent);
}
-u8 sub_8082C9C(void)
+u8 ScrSpecial_GetTrainerEyeRematchFlag(void)
{
- return sub_8082A54(gTrainerEyeTrainers, gTrainerBattleOpponent);
+ return GetTrainerEyeRematchFlag(gTrainerEyeTrainers, gTrainerBattleOpponent);
}
-void sub_8082CB8(void)
+void SetTrainerFlagsAfterTrainerEyeRematch(void)
{
- sub_8082AE4(gTrainerEyeTrainers, gTrainerBattleOpponent);
- sub_808257C();
+ ClearTrainerEyeRematchFlag(gTrainerEyeTrainers, gTrainerBattleOpponent);
+ SetCurrentTrainerBattledFlag();
}
diff --git a/src/battle/battle_transition.c b/src/battle/battle_transition.c
new file mode 100644
index 000000000..53d32d03a
--- /dev/null
+++ b/src/battle/battle_transition.c
@@ -0,0 +1,2513 @@
+#include "global.h"
+#include "battle_transition.h"
+#include "main.h"
+#include "overworld.h"
+#include "task.h"
+#include "palette.h"
+#include "trig.h"
+#include "field_effect.h"
+#include "rng.h"
+#include "sprite.h"
+#include "sound.h"
+#include "songs.h"
+#include "trainer.h"
+#include "field_camera.h"
+
+void sub_807DE10(void);
+void dp12_8087EA4(void);
+
+extern u8 ewram[];
+extern u16 gUnknown_03005560[];
+extern u16 gUnknown_03004DE0[][0x3C0];
+
+extern const struct OamData gFieldOamData_32x32;
+
+struct TransitionData
+{
+ vs8 VBlank_DMA;
+ u16 WININ;
+ u16 WINOUT;
+ u16 field_6;
+ u16 WIN0V;
+ u16 field_A;
+ u16 field_C;
+ u16 BLDCNT;
+ u16 BLDALPHA;
+ u16 BLDY;
+ s16 field_14;
+ s16 field_16;
+ s16 field_18;
+ s16 field_1A;
+ s16 field_1C;
+ s16 field_1E; // unused
+ s16 field_20;
+ s16 field_22; // unused
+ s16 data[11];
+};
+
+#define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000))
+typedef bool8 (*TransitionState)(struct Task* task);
+typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite);
+
+// this file's functions
+static void LaunchBattleTransitionTask(u8 transitionID);
+static void Task_BattleTransitionMain(u8 taskID);
+static void Phase1Task_TransitionAll(u8 taskID);
+static void Phase2Task_Transition_Blur(u8 taskID);
+static void Phase2Task_Transition_Swirl(u8 taskID);
+static void Phase2Task_Transition_Shuffle(u8 taskID);
+static void Phase2Task_Transition_BigPokeball(u8 taskID);
+static void Phase2Task_Transition_PokeballsTrail(u8 taskID);
+static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID);
+static void Phase2Task_Transition_Ripple(u8 taskID);
+static void Phase2Task_Transition_Wave(u8 taskID);
+static void Phase2Task_Transition_Slice(u8 taskID);
+static void Phase2Task_Transition_WhiteFade(u8 taskID);
+static void Phase2Task_Transition_GridSquares(u8 taskID);
+static void Phase2Task_Transition_Shards(u8 taskID);
+static void Phase2Task_Transition_Sydney(u8 taskID);
+static void Phase2Task_Transition_Phoebe(u8 taskID);
+static void Phase2Task_Transition_Glacia(u8 taskID);
+static void Phase2Task_Transition_Drake(u8 taskID);
+static void Phase2Task_Transition_Steven(u8 taskID);
+static bool8 Transition_Phase1(struct Task* task);
+static bool8 Transition_WaitForPhase1(struct Task* task);
+static bool8 Transition_Phase2(struct Task* task);
+static bool8 Transition_WaitForPhase2(struct Task* task);
+static void VBlankCB_Phase2_Transition_Swirl(void);
+static void HBlankCB_Phase2_Transition_Swirl(void);
+static void VBlankCB_Phase2_Transition_Shuffle(void);
+static void HBlankCB_Phase2_Transition_Shuffle(void);
+static void VBlankCB0_Phase2_Transition_BigPokeball(void);
+static void VBlankCB1_Phase2_Transition_BigPokeball(void);
+static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void);
+static void VBlankCB_Phase2_Transition_Ripple(void);
+static void HBlankCB_Phase2_Transition_Ripple(void);
+static void VBlankCB_Phase2_Transition_Wave(void);
+static void VBlankCB_Phase2_Transition_Slice(void);
+static void HBlankCB_Phase2_Transition_Slice(void);
+static void VBlankCB0_Phase2_Transition_WhiteFade(void);
+static void VBlankCB1_Phase2_Transition_WhiteFade(void);
+static void HBlankCB_Phase2_Transition_WhiteFade(void);
+static void VBlankCB0_Phase2_Mugshots(void);
+static void VBlankCB1_Phase2_Mugshots(void);
+static void HBlankCB_Phase2_Mugshots(void);
+static void VBlankCB_Phase2_Transition_Shards(void);
+static bool8 Phase2_Transition_Blur_Func1(struct Task* task);
+static bool8 Phase2_Transition_Blur_Func2(struct Task* task);
+static bool8 Phase2_Transition_Blur_Func3(struct Task* task);
+static bool8 Phase2_Transition_Swirl_Func1(struct Task* task);
+static bool8 Phase2_Transition_Swirl_Func2(struct Task* task);
+static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task);
+static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task);
+static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task);
+static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task);
+static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task);
+static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task);
+static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task);
+static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task);
+static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task);
+static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task);
+static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task);
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task);
+static bool8 Phase2_Transition_Ripple_Func1(struct Task* task);
+static bool8 Phase2_Transition_Ripple_Func2(struct Task* task);
+static bool8 Phase2_Transition_Wave_Func1(struct Task* task);
+static bool8 Phase2_Transition_Wave_Func2(struct Task* task);
+static bool8 Phase2_Transition_Wave_Func3(struct Task* task);
+static bool8 Phase2_Transition_Slice_Func1(struct Task* task);
+static bool8 Phase2_Transition_Slice_Func2(struct Task* task);
+static bool8 Phase2_Transition_Slice_Func3(struct Task* task);
+static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task);
+static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task);
+static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task);
+static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task);
+static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task);
+static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task);
+static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task);
+static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task);
+static bool8 Phase2_Transition_Shards_Func1(struct Task* task);
+static bool8 Phase2_Transition_Shards_Func2(struct Task* task);
+static bool8 Phase2_Transition_Shards_Func3(struct Task* task);
+static bool8 Phase2_Transition_Shards_Func4(struct Task* task);
+static bool8 Phase2_Transition_Shards_Func5(struct Task* task);
+static bool8 Phase2_Mugshot_Func1(struct Task* task);
+static bool8 Phase2_Mugshot_Func2(struct Task* task);
+static bool8 Phase2_Mugshot_Func3(struct Task* task);
+static bool8 Phase2_Mugshot_Func4(struct Task* task);
+static bool8 Phase2_Mugshot_Func5(struct Task* task);
+static bool8 Phase2_Mugshot_Func6(struct Task* task);
+static bool8 Phase2_Mugshot_Func7(struct Task* task);
+static bool8 Phase2_Mugshot_Func8(struct Task* task);
+static bool8 Phase2_Mugshot_Func9(struct Task* task);
+static bool8 Phase2_Mugshot_Func10(struct Task* task);
+static void Phase2Task_MugShotTransition(u8 taskID);
+static void Mugshots_CreateOpponentPlayerSprites(struct Task* task);
+static void sub_811CA10(s16 spriteID, s16 value);
+static void sub_811CA28(s16 spriteID);
+static s16 sub_811CA44(s16 spriteID);
+static bool8 sub_811C934(struct Sprite* sprite);
+static bool8 sub_811C938(struct Sprite* sprite);
+static bool8 sub_811C984(struct Sprite* sprite);
+static bool8 sub_811C9B8(struct Sprite* sprite);
+static bool8 sub_811C9E4(struct Sprite* sprite);
+static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4);
+static bool8 sub_811D52C(void);
+static void Phase1_Task_RunFuncs(u8 taskID);
+static bool8 Phase1_TransitionAll_Func1(struct Task* task);
+static bool8 Phase1_TransitionAll_Func2(struct Task* task);
+static void sub_811D658(void);
+static void VBlankCB_BattleTransition(void);
+static void sub_811D6A8(u16** a0, u16** a1);
+static void sub_811D690(u16** a0);
+static void sub_811D6D4(void);
+static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize);
+static void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3);
+static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6);
+static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2);
+static void sub_811CFD0(struct Sprite* sprite);
+static void sub_811B720(struct Sprite* sprite);
+static void sub_811C90C(struct Sprite* sprite);
+
+// const data
+
+static const u32 sBigPokeball_Tileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp");
+static const u32 sPokeballTrail_Tileset[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp");
+static const u8 sSpriteImage_83FC148[] = INCBIN_U8("graphics/battle_transitions/pokeball.4bpp");
+static const u32 sUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp");
+static const u8 sSpriteImage_83FC528[] = INCBIN_U8("graphics/battle_transitions/unused_brendan.4bpp");
+static const u8 sSpriteImage_83FCD28[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp");
+static const u32 sShrinkingBoxTileset[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp");
+
+static struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT;
+
+static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] =
+{
+ [0 ... TRANSITIONS_NO - 1] = &Phase1Task_TransitionAll
+};
+
+static const TaskFunc sPhase2_Tasks[TRANSITIONS_NO] =
+{
+ Phase2Task_Transition_Blur, // 0
+ Phase2Task_Transition_Swirl, // 1
+ Phase2Task_Transition_Shuffle, // 2
+ Phase2Task_Transition_BigPokeball, // 3
+ Phase2Task_Transition_PokeballsTrail, // 4
+ Phase2Task_Transition_Clockwise_BlackFade, // 5
+ Phase2Task_Transition_Ripple, // 6
+ Phase2Task_Transition_Wave, // 7
+ Phase2Task_Transition_Slice, // 8
+ Phase2Task_Transition_WhiteFade, // 9
+ Phase2Task_Transition_GridSquares, // 10
+ Phase2Task_Transition_Shards, // 11
+ Phase2Task_Transition_Sydney, // 12
+ Phase2Task_Transition_Phoebe, // 13
+ Phase2Task_Transition_Glacia, // 14
+ Phase2Task_Transition_Drake, // 15
+ Phase2Task_Transition_Steven, // 16
+};
+
+static const TransitionState sMainTransitionPhases[] =
+{
+ &Transition_Phase1,
+ &Transition_WaitForPhase1,
+ &Transition_Phase2,
+ &Transition_WaitForPhase2
+};
+
+static const TransitionState sPhase2_Transition_Blur_Funcs[] =
+{
+ Phase2_Transition_Blur_Func1,
+ Phase2_Transition_Blur_Func2,
+ Phase2_Transition_Blur_Func3
+};
+
+static const TransitionState sPhase2_Transition_Swirl_Funcs[] =
+{
+ Phase2_Transition_Swirl_Func1,
+ Phase2_Transition_Swirl_Func2,
+};
+
+static const TransitionState sPhase2_Transition_Shuffle_Funcs[] =
+{
+ Phase2_Transition_Shuffle_Func1,
+ Phase2_Transition_Shuffle_Func2,
+};
+
+static const TransitionState sPhase2_Transition_BigPokeball_Funcs[] =
+{
+ Phase2_Transition_BigPokeball_Func1,
+ Phase2_Transition_BigPokeball_Func2,
+ Phase2_Transition_BigPokeball_Func3,
+ Phase2_Transition_BigPokeball_Func4,
+ Phase2_Transition_BigPokeball_Func5,
+ Phase2_Transition_BigPokeball_Func6
+};
+
+static const TransitionState sPhase2_Transition_PokeballsTrail_Funcs[] =
+{
+ Phase2_Transition_PokeballsTrail_Func1,
+ Phase2_Transition_PokeballsTrail_Func2,
+ Phase2_Transition_PokeballsTrail_Func3
+};
+
+static const s16 sUnknown_083FD7E4[2] = {-16, 256};
+static const s16 sUnknown_083FD7E8[5] = {0, 32, 64, 18, 48};
+static const s16 sUnknown_083FD7F2[2] = {8, -8};
+
+static const TransitionState sPhase2_Transition_Clockwise_BlackFade_Funcs[] =
+{
+ Phase2_Transition_Clockwise_BlackFade_Func1,
+ Phase2_Transition_Clockwise_BlackFade_Func2,
+ Phase2_Transition_Clockwise_BlackFade_Func3,
+ Phase2_Transition_Clockwise_BlackFade_Func4,
+ Phase2_Transition_Clockwise_BlackFade_Func5,
+ Phase2_Transition_Clockwise_BlackFade_Func6,
+ Phase2_Transition_Clockwise_BlackFade_Func7
+};
+
+static const TransitionState sPhase2_Transition_Ripple_Funcs[] =
+{
+ Phase2_Transition_Ripple_Func1,
+ Phase2_Transition_Ripple_Func2
+};
+
+static const TransitionState sPhase2_Transition_Wave_Funcs[] =
+{
+ Phase2_Transition_Wave_Func1,
+ Phase2_Transition_Wave_Func2,
+ Phase2_Transition_Wave_Func3
+};
+
+static const TransitionState sPhase2_Mugshot_Transition_Funcs[] =
+{
+ Phase2_Mugshot_Func1,
+ Phase2_Mugshot_Func2,
+ Phase2_Mugshot_Func3,
+ Phase2_Mugshot_Func4,
+ Phase2_Mugshot_Func5,
+ Phase2_Mugshot_Func6,
+ Phase2_Mugshot_Func7,
+ Phase2_Mugshot_Func8,
+ Phase2_Mugshot_Func9,
+ Phase2_Mugshot_Func10
+};
+
+static const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_NO] = {TRAINER_PIC_SIDNEY, TRAINER_PIC_PHOEBE, TRAINER_PIC_GLACIA, TRAINER_PIC_DRAKE, TRAINER_PIC_STEVEN};
+static const s16 sMugshotsOpponentRotationScales[MUGSHOTS_NO][2] =
+{
+ {0x200, 0x200},
+ {0x200, 0x200},
+ {0x1B0, 0x1B0},
+ {0x1A0, 0x1A0},
+ {0x188, 0x188},
+};
+static const s16 sMugshotsOpponentCoords[MUGSHOTS_NO][2] =
+{
+ {0, 0},
+ {0, 0},
+ {-4, 4},
+ {0, 5},
+ {0, 7},
+};
+
+static const TransitionSpriteCallback sUnknown_083FD880[] =
+{
+ sub_811C934,
+ sub_811C938,
+ sub_811C984,
+ sub_811C9B8,
+ sub_811C934,
+ sub_811C9E4,
+ sub_811C934
+};
+
+static const s16 sUnknown_083FD89C[2] = {12, -12};
+static const s16 sUnknown_083FD8A0[2] = {-1, 1};
+
+static const TransitionState sPhase2_Transition_Slice_Funcs[] =
+{
+ Phase2_Transition_Slice_Func1,
+ Phase2_Transition_Slice_Func2,
+ Phase2_Transition_Slice_Func3
+};
+
+static const TransitionState sPhase2_Transition_WhiteFade_Funcs[] =
+{
+ Phase2_Transition_WhiteFade_Func1,
+ Phase2_Transition_WhiteFade_Func2,
+ Phase2_Transition_WhiteFade_Func3,
+ Phase2_Transition_WhiteFade_Func4,
+ Phase2_Transition_WhiteFade_Func5
+};
+
+static const s16 sUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5};
+
+static const TransitionState sPhase2_Transition_GridSquares_Funcs[] =
+{
+ Phase2_Transition_GridSquares_Func1,
+ Phase2_Transition_GridSquares_Func2,
+ Phase2_Transition_GridSquares_Func3
+};
+
+static const TransitionState sPhase2_Transition_Shards_Funcs[] =
+{
+ Phase2_Transition_Shards_Func1,
+ Phase2_Transition_Shards_Func2,
+ Phase2_Transition_Shards_Func3,
+ Phase2_Transition_Shards_Func4,
+ Phase2_Transition_Shards_Func5
+};
+
+static const s16 sUnknown_083FD8F4[][5] =
+{
+ {56, 0, 0, 160, 0},
+ {104, 160, 240, 88, 1},
+ {240, 72, 56, 0, 1},
+ {0, 32, 144, 160, 0},
+ {144, 160, 184, 0, 1},
+ {56, 0, 168, 160, 0},
+ {168, 160, 48, 0, 1},
+};
+
+static const s16 sUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0};
+
+static const TransitionState sPhase1_TransitionAll_Funcs[] =
+{
+ Phase1_TransitionAll_Func1,
+ Phase1_TransitionAll_Func2
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_83FD950[] =
+{
+ sSpriteImage_83FC148, 0x200
+};
+
+static const union AnimCmd sSpriteAnim_83FD958[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_83FD960[] =
+{
+ sSpriteAnim_83FD958
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_83FD964[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, -4, 1),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_83FD974[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 4, 1),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_83FD984[] =
+{
+ sSpriteAffineAnim_83FD964,
+ sSpriteAffineAnim_83FD974
+};
+
+static const struct SpriteTemplate sSpriteTemplate_83FD98C =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 4105,
+ .oam = &gFieldOamData_32x32,
+ .anims = sSpriteAnimTable_83FD960,
+ .images = sSpriteImageTable_83FD950,
+ .affineAnims = sSpriteAffineAnimTable_83FD984,
+ .callback = sub_811B720
+};
+
+static const struct OamData gOamData_83FD9A4 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_83FD9AC[] =
+{
+ sSpriteImage_83FC528, 0x800
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_83FD9B4[] =
+{
+ sSpriteImage_83FCD28, 0x800
+};
+
+static const union AnimCmd sSpriteAnim_83FD9BC[] =
+{
+ ANIMCMD_FRAME(0, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_83FD9C4[] =
+{
+ sSpriteAnim_83FD9BC
+};
+
+static const struct SpriteTemplate sSpriteTemplate_83FD9C8 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 4106,
+ .oam = &gOamData_83FD9A4,
+ .anims = sSpriteAnimTable_83FD9C4,
+ .images = sSpriteImageTable_83FD9AC,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_811C90C
+};
+
+static const struct SpriteTemplate sSpriteTemplate_83FD9E0 =
+{
+ .tileTag = 0xFFFF,
+ .paletteTag = 4106,
+ .oam = &gOamData_83FD9A4,
+ .anims = sSpriteAnimTable_83FD9C4,
+ .images = sSpriteImageTable_83FD9B4,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_811C90C
+};
+
+static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/field_effect_objects/palettes/10.gbapal");
+
+const struct SpritePalette gFieldEffectObjectPaletteInfo10 =
+{
+ gFieldEffectObjectPalette10, 0x1009
+};
+
+static const u16 sMugshotPal_Sydney[] = INCBIN_U16("graphics/battle_transitions/sidney_bg.gbapal");
+static const u16 sMugshotPal_Phoebe[] = INCBIN_U16("graphics/battle_transitions/phoebe_bg.gbapal");
+static const u16 sMugshotPal_Glacia[] = INCBIN_U16("graphics/battle_transitions/glacia_bg.gbapal");
+static const u16 sMugshotPal_Drake[] = INCBIN_U16("graphics/battle_transitions/drake_bg.gbapal");
+static const u16 sMugshotPal_Steven[] = INCBIN_U16("graphics/battle_transitions/steven_bg.gbapal");
+static const u16 sMugshotPal_Brendan[] = INCBIN_U16("graphics/battle_transitions/brendan_bg.gbapal");
+static const u16 sMugshotPal_May[] = INCBIN_U16("graphics/battle_transitions/may_bg.gbapal");
+
+static const u16 * const sOpponentMugshotsPals[MUGSHOTS_NO] =
+{
+ sMugshotPal_Sydney,
+ sMugshotPal_Phoebe,
+ sMugshotPal_Glacia,
+ sMugshotPal_Drake,
+ sMugshotPal_Steven
+};
+
+static const u16 * const sPlayerMugshotsPals[2] =
+{
+ sMugshotPal_Brendan,
+ sMugshotPal_May
+};
+
+static const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal");
+static const struct SpritePalette sSpritePalette_UnusedTrainer =
+{
+ sUnusedTrainerPalette, 0x100A
+};
+
+static const u16 sBigPokeball_Tilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_map.bin");
+static const u16 sMugshotsTilemap[] = INCBIN_U16("graphics/battle_transitions/elite_four_bg_map.bin");
+
+// actual code starts here
+
+void BattleTransition_StartOnField(u8 transitionID)
+{
+ gMain.callback2 = CB2_OverworldBasic;
+ LaunchBattleTransitionTask(transitionID);
+}
+
+void BattleTransition_Start(u8 transitionID)
+{
+ LaunchBattleTransitionTask(transitionID);
+}
+
+#define tState data[0]
+#define tTransitionID data[1]
+#define tTransitionDone data[15]
+
+bool8 IsBattleTransitionDone(void)
+{
+ u8 taskID = FindTaskIdByFunc(Task_BattleTransitionMain);
+ if (gTasks[taskID].tTransitionDone)
+ {
+ DestroyTask(taskID);
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void LaunchBattleTransitionTask(u8 transitionID)
+{
+ u8 taskID = CreateTask(Task_BattleTransitionMain, 2);
+ gTasks[taskID].tTransitionID = transitionID;
+}
+
+static void Task_BattleTransitionMain(u8 taskID)
+{
+ while (sMainTransitionPhases[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Transition_Phase1(struct Task* task)
+{
+ sub_807DE10();
+ CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, 0x400);
+ if (sPhase1_Tasks[task->tTransitionID] != NULL)
+ {
+ CreateTask(sPhase1_Tasks[task->tTransitionID], 4);
+ task->tState++;
+ return FALSE;
+ }
+ else
+ {
+ task->tState = 2;
+ return TRUE;
+ }
+}
+
+static bool8 Transition_WaitForPhase1(struct Task* task)
+{
+ if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF)
+ {
+ task->tState++;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static bool8 Transition_Phase2(struct Task* task)
+{
+ CreateTask(sPhase2_Tasks[task->tTransitionID], 0);
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Transition_WaitForPhase2(struct Task* task)
+{
+ task->tTransitionDone = 0;
+ if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF)
+ task->tTransitionDone = 1;
+ return FALSE;
+}
+
+static void Phase1Task_TransitionAll(u8 taskID)
+{
+ if (gTasks[taskID].tState == 0)
+ {
+ gTasks[taskID].tState++;
+ CreatePhase1Task(0, 0, 3, 2, 2);
+ }
+ else if (sub_811D52C())
+ DestroyTask(taskID);
+}
+
+static void Phase2Task_Transition_Blur(u8 taskID)
+{
+ while (sPhase2_Transition_Blur_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Blur_Func1(struct Task* task)
+{
+ REG_MOSAIC = 0;
+ REG_BG1CNT |= BGCNT_MOSAIC;
+ REG_BG2CNT |= BGCNT_MOSAIC;
+ REG_BG3CNT |= BGCNT_MOSAIC;
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Blur_Func2(struct Task* task)
+{
+ if (task->data[1] != 0)
+ task->data[1]--;
+ else
+ {
+ task->data[1] = 4;
+ if (++task->data[2] == 10)
+ BeginNormalPaletteFade(-1, -1, 0, 0x10, 0);
+ REG_MOSAIC = (task->data[2] & 15) * 17;
+ if (task->data[2] > 14)
+ task->tState++;
+ }
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Blur_Func3(struct Task* task)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Blur);
+ DestroyTask(taskID);
+ }
+ return FALSE;
+}
+
+static void Phase2Task_Transition_Swirl(u8 taskID)
+{
+ while (sPhase2_Transition_Swirl_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Swirl_Func1(struct Task* task)
+{
+ u16 savedIME;
+
+ sub_811D658();
+ dp12_8087EA4();
+ BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
+ sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160);
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl);
+ SetHBlankCallback(HBlankCB_Phase2_Transition_Swirl);
+
+ savedIME = REG_IME;
+ REG_IME = 0;
+ REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK);
+ REG_IME = savedIME;
+ REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Swirl_Func2(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ task->data[1] += 4;
+ task->data[2] += 8;
+
+ sub_811D6E8(gUnknown_03004DE0[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160);
+
+ if (!gPaletteFade.active)
+ {
+ u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Swirl);
+ DestroyTask(taskID);
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Swirl(void)
+{
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+}
+
+static void HBlankCB_Phase2_Transition_Swirl(void)
+{
+ u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ REG_BG1HOFS = var;
+ REG_BG2HOFS = var;
+ REG_BG3HOFS = var;
+}
+
+static void Phase2Task_Transition_Shuffle(u8 taskID)
+{
+ while (sPhase2_Transition_Shuffle_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task)
+{
+ u16 savedIME;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ BeginNormalPaletteFade(-1, 4, 0, 0x10, 0);
+ memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140);
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle);
+ SetHBlankCallback(HBlankCB_Phase2_Transition_Shuffle);
+
+ savedIME = REG_IME;
+ REG_IME = 0;
+ REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK);
+ REG_IME = savedIME;
+ REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task)
+{
+ u8 i;
+ u16 r3, r4;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ r4 = task->data[1];
+ r3 = task->data[2] >> 8;
+ task->data[1] += 4224;
+ task->data[2] += 384;
+
+ for (i = 0; i < 160; i++, r4 += 4224)
+ {
+ u16 var = r4 / 256;
+ gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3);
+ }
+
+ if (!gPaletteFade.active)
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shuffle));
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Shuffle(void)
+{
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+}
+
+static void HBlankCB_Phase2_Transition_Shuffle(void)
+{
+ u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ REG_BG1VOFS = var;
+ REG_BG2VOFS = var;
+ REG_BG3VOFS = var;
+}
+
+static void Phase2Task_Transition_BigPokeball(u8 taskID)
+{
+ while (sPhase2_Transition_BigPokeball_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task)
+{
+ u16 i;
+ u16 *dst1, *dst2;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ task->data[1] = 16;
+ task->data[2] = 0;
+ task->data[4] = 0;
+ task->data[5] = 0x4000;
+ TRANSITION_STRUCT.WININ = 63;
+ TRANSITION_STRUCT.WINOUT = 0;
+ TRANSITION_STRUCT.field_6 = 240;
+ TRANSITION_STRUCT.WIN0V = 160;
+ TRANSITION_STRUCT.BLDCNT = 0x3F41;
+ TRANSITION_STRUCT.BLDALPHA = task->data[1] * 256; // 16 * 256 = 0x1000
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03005560[i] = 240;
+ }
+
+ SetVBlankCallback(VBlankCB0_Phase2_Transition_BigPokeball);
+
+ sub_811D6A8(&dst1, & dst2);
+ CpuFill16(0, dst1, 0x800);
+ CpuSet(sBigPokeball_Tileset, dst2, 0x2C0);
+ LoadPalette(gFieldEffectObjectPalette10, 240, 32);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task)
+{
+ s16 i, j;
+ u16 *dst1, *dst2;
+ const u16* BigPokeballMap;
+
+ BigPokeballMap = sBigPokeball_Tilemap;
+ sub_811D6A8(&dst1, &dst2);
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 30; j++, BigPokeballMap++)
+ {
+ dst1[i * 32 + j] = *BigPokeballMap | 0xF000;
+ }
+ }
+ sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160);
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ if (task->data[3] == 0 || --task->data[3] == 0)
+ {
+ task->data[2]++;
+ task->data[3] = 2;
+ }
+ TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2];
+ if (task->data[2] > 15)
+ task->tState++;
+ task->data[4] += 8;
+ task->data[5] -= 256;
+
+ sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ if (task->data[3] == 0 || --task->data[3] == 0)
+ {
+ task->data[1]--;
+ task->data[3] = 2;
+ }
+ TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2];
+ if (task->data[1] == 0)
+ task->tState++;
+ task->data[4] += 8;
+ task->data[5] -= 256;
+
+ sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ task->data[4] += 8;
+ task->data[5] -= 256;
+
+ sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160);
+
+ if (task->data[5] <= 0)
+ {
+ task->tState++;
+ task->data[1] = 160;
+ task->data[2] = 256;
+ task->data[3] = 0;
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ if (task->data[2] < 1024)
+ task->data[2] += 128;
+ if (task->data[1] != 0)
+ {
+ task->data[1] -= (task->data[2] >> 8);
+ if (task->data[1] < 0)
+ task->data[1] = 0;
+ }
+ sub_811D764(gUnknown_03004DE0[0], 120, 80, task->data[1]);
+ if (task->data[1] == 0)
+ {
+ DmaStop(0);
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_BigPokeball));
+ }
+ if (task->data[3] == 0)
+ {
+ task->data[3]++;
+ SetVBlankCallback(VBlankCB1_Phase2_Transition_BigPokeball);
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static void Transition_BigPokeball_Vblank(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+ REG_BLDCNT = TRANSITION_STRUCT.BLDCNT;
+ REG_BLDALPHA = TRANSITION_STRUCT.BLDALPHA;
+}
+
+static void VBlankCB0_Phase2_Transition_BigPokeball(void)
+{
+ Transition_BigPokeball_Vblank();
+ DmaSet(0, gUnknown_03005560, &REG_BG0HOFS, 0xA2400001);
+}
+
+static void VBlankCB1_Phase2_Transition_BigPokeball(void)
+{
+ Transition_BigPokeball_Vblank();
+ DmaSet(0, gUnknown_03005560, &REG_WIN0H, 0xA2400001);
+}
+
+static void Phase2Task_Transition_PokeballsTrail(u8 taskID)
+{
+ while (sPhase2_Transition_PokeballsTrail_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task)
+{
+ u16 *dst1, *dst2;
+
+ sub_811D6A8(&dst1, &dst2);
+ CpuSet(sPokeballTrail_Tileset, dst2, 0x20);
+ CpuFill32(0, dst1, 0x800);
+ LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task)
+{
+ s16 i;
+ s16 rand;
+ s16 arr0[2];
+ s16 arr1[5];
+
+ memcpy(arr0, sUnknown_083FD7E4, sizeof(sUnknown_083FD7E4));
+ memcpy(arr1, sUnknown_083FD7E8, sizeof(sUnknown_083FD7E8));
+ rand = Random() & 1;
+ for (i = 0; i <= 4; i++, rand ^= 1)
+ {
+ gFieldEffectArguments[0] = arr0[rand]; // x
+ gFieldEffectArguments[1] = (i * 32) + 16; // y
+ gFieldEffectArguments[2] = rand;
+ gFieldEffectArguments[3] = arr1[i];
+ FieldEffectStart(FLDEFF_POKEBALL);
+ }
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task)
+{
+ if (!FieldEffectActiveListContains(FLDEFF_POKEBALL))
+ {
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_PokeballsTrail));
+ }
+ return FALSE;
+}
+
+bool8 FldEff_Pokeball(void)
+{
+ u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ gSprites[spriteID].oam.priority = 0;
+ gSprites[spriteID].oam.affineMode = 1;
+ gSprites[spriteID].data0 = gFieldEffectArguments[2];
+ gSprites[spriteID].data1 = gFieldEffectArguments[3];
+ gSprites[spriteID].data2 = -1;
+ InitSpriteAffineAnim(&gSprites[spriteID]);
+ StartSpriteAffineAnim(&gSprites[spriteID], gFieldEffectArguments[2]);
+ return FALSE;
+}
+
+#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \
+{ \
+ u32 index = (posY) * 32 + posX; \
+ ptr[index] = toStore; \
+}
+
+static void sub_811B720(struct Sprite* sprite)
+{
+ s16 arr0[2];
+
+ memcpy(arr0, sUnknown_083FD7F2, sizeof(sUnknown_083FD7F2));
+ if (sprite->data1 != 0)
+ sprite->data1--;
+ else
+ {
+ if (sprite->pos1.x >= 0 && sprite->pos1.x <= 240)
+ {
+ s16 posX = sprite->pos1.x >> 3;
+ s16 posY = sprite->pos1.y >> 3;
+
+ if (posX != sprite->data2)
+ {
+ u32 var;
+ u16 *ptr;
+
+ sprite->data2 = posX;
+ var = (((REG_BG0CNT >> 8) & 0x1F) << 11); // r2
+ ptr = (u16 *)(VRAM + var);
+
+ SOME_VRAM_STORE(ptr, posY - 2, posX, 0xF001);
+ SOME_VRAM_STORE(ptr, posY - 1, posX, 0xF001);
+ SOME_VRAM_STORE(ptr, posY - 0, posX, 0xF001);
+ SOME_VRAM_STORE(ptr, posY + 1, posX, 0xF001);
+ }
+ }
+ sprite->pos1.x += arr0[sprite->data0];
+ if (sprite->pos1.x < -15 || sprite->pos1.x > 255)
+ FieldEffectStop(sprite, FLDEFF_POKEBALL);
+ }
+}
+
+static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID)
+{
+ while (sPhase2_Transition_Clockwise_BlackFade_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task)
+{
+ u16 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ TRANSITION_STRUCT.WININ = 0;
+ TRANSITION_STRUCT.WINOUT = 63;
+ TRANSITION_STRUCT.field_6 = -3855;
+ TRANSITION_STRUCT.WIN0V = 160;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03005560[i] = 0xF3F4;
+ }
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Clockwise_BlackFade);
+ TRANSITION_STRUCT.data[4] = 120;
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], -1, 1, 1);
+ do
+ {
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800;
+ } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
+
+ TRANSITION_STRUCT.data[4] += 16;
+ if (TRANSITION_STRUCT.data[4] >= 240)
+ {
+ TRANSITION_STRUCT.data[5] = 0;
+ task->tState++;
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task)
+{
+ s16 r1, r3;
+ vu8 var = 0;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 240, TRANSITION_STRUCT.data[5], 1, 1);
+
+ while (1)
+ {
+ r1 = 120, r3 = TRANSITION_STRUCT.data[2] + 1;
+ if (TRANSITION_STRUCT.data[5] >= 80)
+ r1 = TRANSITION_STRUCT.data[2], r3 = 240;
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
+ if (var != 0)
+ break;
+ var = sub_811D978(TRANSITION_STRUCT.data, 1, 1);
+ }
+
+ TRANSITION_STRUCT.data[5] += 8;
+ if (TRANSITION_STRUCT.data[5] >= 160)
+ {
+ TRANSITION_STRUCT.data[4] = 240;
+ task->tState++;
+ }
+ else
+ {
+ while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5])
+ {
+ gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8);
+ }
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 160, 1, 1);
+ do
+ {
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0;
+ } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
+
+ TRANSITION_STRUCT.data[4] -= 16;
+ if (TRANSITION_STRUCT.data[4] <= 0)
+ {
+ TRANSITION_STRUCT.data[5] = 160;
+ task->tState++;
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task)
+{
+ s16 r1, r2, r3;
+ vu8 var = 0;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 0, TRANSITION_STRUCT.data[5], 1, 1);
+
+ while (1)
+ {
+ r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2];
+ if (TRANSITION_STRUCT.data[5] <= 80)
+ r2 = 120, r1 = TRANSITION_STRUCT.data[2];
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
+ r3 = 0;
+ if (var != 0)
+ break;
+ var = sub_811D978(TRANSITION_STRUCT.data, 1, 1);
+ }
+
+ TRANSITION_STRUCT.data[5] -= 8;
+ if (TRANSITION_STRUCT.data[5] <= 0)
+ {
+ TRANSITION_STRUCT.data[4] = r3;
+ task->tState++;
+ }
+ else
+ {
+ while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5])
+ {
+ gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8);
+ }
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 0, 1, 1);
+ do
+ {
+ s16 r2, r3;
+
+ r2 = 120, r3 = TRANSITION_STRUCT.data[2];
+ if (TRANSITION_STRUCT.data[2] >= 120)
+ r2 = 0, r3 = 240;
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8);
+
+ } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1));
+
+ TRANSITION_STRUCT.data[4] += 16;
+ if (TRANSITION_STRUCT.data[2] > 120)
+ task->tState++;
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task)
+{
+ DmaStop(0);
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Clockwise_BlackFade));
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA != 0)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+ REG_WIN0H = gUnknown_03004DE0[1][0];
+ DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+}
+
+static void Phase2Task_Transition_Ripple(u8 taskID)
+{
+ while (sPhase2_Transition_Ripple_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Ripple_Func1(struct Task* task)
+{
+ u8 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03005560[i] = TRANSITION_STRUCT.field_16;
+ }
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple);
+ SetHBlankCallback(HBlankCB_Phase2_Transition_Ripple);
+
+ REG_IE |= INTR_FLAG_HBLANK;
+ REG_DISPSTAT |= DISPSTAT_HBLANK_INTR;
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Ripple_Func2(struct Task* task)
+{
+ u8 i;
+ s16 r3;
+ u16 r4, r8;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ r3 = task->data[2] >> 8;
+ r4 = task->data[1];
+ r8 = 384;
+ task->data[1] += 0x400;
+ if (task->data[2] <= 0x1FFF)
+ task->data[2] += 0x180;
+
+ for (i = 0; i < 160; i++, r4 += r8)
+ {
+ // todo: fix the asm
+ s16 var = r4 >> 8;
+ asm("");
+ gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3);
+ asm("");
+ }
+
+ if (++task->data[3] == 81)
+ {
+ task->data[4]++;
+ BeginNormalPaletteFade(-1, -2, 0, 0x10, 0);
+ }
+
+ if (task->data[4] != 0 && !gPaletteFade.active)
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Ripple));
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Ripple(void)
+{
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+}
+
+static void HBlankCB_Phase2_Transition_Ripple(void)
+{
+ u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ REG_BG1VOFS = var;
+ REG_BG2VOFS = var;
+ REG_BG3VOFS = var;
+}
+
+static void Phase2Task_Transition_Wave(u8 taskID)
+{
+ while (sPhase2_Transition_Wave_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Wave_Func1(struct Task* task)
+{
+ u8 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ TRANSITION_STRUCT.WININ = 63;
+ TRANSITION_STRUCT.WINOUT = 0;
+ TRANSITION_STRUCT.field_6 = 240;
+ TRANSITION_STRUCT.WIN0V = 160;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03004DE0[1][i] = 242;
+ }
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Wave);
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Wave_Func2(struct Task* task)
+{
+ u8 i, r5;
+ u16* toStore;
+ bool8 nextFunc;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ toStore = gUnknown_03004DE0[0];
+ r5 = task->data[2];
+ task->data[2] += 16;
+ task->data[1] += 8;
+
+ for (i = 0, nextFunc = TRUE; i < 160; i++, r5 += 4, toStore++)
+ {
+ s16 value = task->data[1] + Sin(r5, 40);
+ if (value < 0)
+ value = 0;
+ if (value > 240)
+ value = 240;
+ *toStore = (value << 8) | (0xF1);
+ if (value < 240)
+ nextFunc = FALSE;
+ }
+ if (nextFunc)
+ task->tState++;
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Wave_Func3(struct Task* task)
+{
+ DmaStop(0);
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Wave));
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Wave(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA != 0)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+ DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+}
+
+#define tMugshotOpponentID data[13]
+#define tMugshotPlayerID data[14]
+#define tMugshotID data[15]
+
+static void Phase2Task_Transition_Sydney(u8 taskID)
+{
+ gTasks[taskID].tMugshotID = MUGSHOT_SYDNEY;
+ Phase2Task_MugShotTransition(taskID);
+}
+
+static void Phase2Task_Transition_Phoebe(u8 taskID)
+{
+ gTasks[taskID].tMugshotID = MUGSHOT_PHOEBE;
+ Phase2Task_MugShotTransition(taskID);
+}
+
+static void Phase2Task_Transition_Glacia(u8 taskID)
+{
+ gTasks[taskID].tMugshotID = MUGSHOT_GLACIA;
+ Phase2Task_MugShotTransition(taskID);
+}
+
+static void Phase2Task_Transition_Drake(u8 taskID)
+{
+ gTasks[taskID].tMugshotID = MUGSHOT_DRAKE;
+ Phase2Task_MugShotTransition(taskID);
+}
+
+static void Phase2Task_Transition_Steven(u8 taskID)
+{
+ gTasks[taskID].tMugshotID = MUGSHOT_STEVEN;
+ Phase2Task_MugShotTransition(taskID);
+}
+
+static void Phase2Task_MugShotTransition(u8 taskID)
+{
+ while (sPhase2_Mugshot_Transition_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Mugshot_Func1(struct Task* task)
+{
+ u8 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+ Mugshots_CreateOpponentPlayerSprites(task);
+
+ task->data[1] = 0;
+ task->data[2] = 1;
+ task->data[3] = 239;
+ TRANSITION_STRUCT.WININ = 63;
+ TRANSITION_STRUCT.WINOUT = 62;
+ TRANSITION_STRUCT.WIN0V = 160;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03004DE0[1][i] = 0xF0F1;
+ }
+
+ SetVBlankCallback(VBlankCB0_Phase2_Mugshots);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func2(struct Task* task)
+{
+ s16 i, j;
+ u16 *dst1, *dst2;
+ const u16* MugshotsMap;
+
+ MugshotsMap = sMugshotsTilemap;
+ sub_811D6A8(&dst1, &dst2);
+ CpuSet(sUnknown_083FC348, dst2, 0xF0);
+ LoadPalette(sOpponentMugshotsPals[task->tMugshotID], 0xF0, 0x20);
+ LoadPalette(sPlayerMugshotsPals[gSaveBlock2.playerGender], 0xFA, 0xC);
+
+ for (i = 0; i < 20; i++)
+ {
+ for (j = 0; j < 32; j++, MugshotsMap++)
+ {
+ dst1[i * 32 + j] = *MugshotsMap | 0xF000;
+ }
+ }
+
+ REG_IE |= INTR_FLAG_HBLANK;
+ REG_DISPSTAT |= DISPSTAT_HBLANK_INTR;
+ SetHBlankCallback(HBlankCB_Phase2_Mugshots);
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func3(struct Task* task)
+{
+ u8 i, r5;
+ u16* toStore;
+ s16 value;
+ s32 mergedValue;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ toStore = gUnknown_03004DE0[0];
+ r5 = task->data[1];
+ task->data[1] += 0x10;
+
+ for (i = 0; i < 80; i++, toStore++, r5 += 0x10)
+ {
+ value = task->data[2] + Sin(r5, 0x10);
+ if (value < 0)
+ value = 1;
+ if (value > 0xF0)
+ value = 0xF0;
+ *toStore = value;
+ }
+ for (; i < 160; i++, toStore++, r5 += 0x10)
+ {
+ value = task->data[3] - Sin(r5, 0x10);
+ if (value < 0)
+ value = 0;
+ if (value > 0xEF)
+ value = 0xEF;
+ *toStore = (value << 8) | (0xF0);
+ }
+
+ task->data[2] += 8;
+ task->data[3] -= 8;
+ if (task->data[2] > 0xF0)
+ task->data[2] = 0xF0;
+ if (task->data[3] < 0)
+ task->data[3] = 0;
+ mergedValue = *(s32*)(&task->data[2]);
+ if (mergedValue == 0xF0)
+ task->tState++;
+
+ TRANSITION_STRUCT.field_18 -= 8;
+ TRANSITION_STRUCT.field_1A += 8;
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func4(struct Task* task)
+{
+ u8 i;
+ u16* toStore;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++)
+ {
+ *toStore = 0xF0;
+ }
+
+ task->tState++;
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->data[3] = 0;
+ TRANSITION_STRUCT.field_18 -= 8;
+ TRANSITION_STRUCT.field_1A += 8;
+
+ sub_811CA10(task->tMugshotOpponentID, 0);
+ sub_811CA10(task->tMugshotPlayerID, 1);
+ sub_811CA28(task->tMugshotOpponentID);
+
+ PlaySE(SE_BT_START);
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func5(struct Task* task)
+{
+ TRANSITION_STRUCT.field_18 -= 8;
+ TRANSITION_STRUCT.field_1A += 8;
+ if (sub_811CA44(task->tMugshotOpponentID))
+ {
+ task->tState++;
+ sub_811CA28(task->tMugshotPlayerID);
+ }
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func6(struct Task* task)
+{
+ TRANSITION_STRUCT.field_18 -= 8;
+ TRANSITION_STRUCT.field_1A += 8;
+ if (sub_811CA44(task->tMugshotPlayerID))
+ {
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ SetVBlankCallback(NULL);
+ DmaStop(0);
+ memset(gUnknown_03004DE0[0], 0, 0x140);
+ memset(gUnknown_03004DE0[1], 0, 0x140);
+ REG_WIN0H = 0xF0;
+ REG_BLDY = 0;
+ task->tState++;
+ task->data[3] = 0;
+ task->data[4] = 0;
+ TRANSITION_STRUCT.BLDCNT = 0xBF;
+ SetVBlankCallback(VBlankCB1_Phase2_Mugshots);
+ }
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func7(struct Task* task)
+{
+ bool32 r6;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ r6 = TRUE;
+ TRANSITION_STRUCT.field_18 -= 8;
+ TRANSITION_STRUCT.field_1A += 8;
+
+ if (task->data[4] < 0x50)
+ task->data[4] += 2;
+ if (task->data[4] > 0x50)
+ task->data[4] = 0x50;
+
+ if (++task->data[3] & 1)
+ {
+ s16 i;
+ for (i = 0, r6 = FALSE; i <= task->data[4]; i++)
+ {
+ s16 index1 = 0x50 - i;
+ s16 index2 = 0x50 + i;
+ if (gUnknown_03004DE0[0][index1] <= 15)
+ {
+ r6 = TRUE;
+ gUnknown_03004DE0[0][index1]++;
+ }
+ if (gUnknown_03004DE0[0][index2] <= 15)
+ {
+ r6 = TRUE;
+ gUnknown_03004DE0[0][index2]++;
+ }
+ }
+ }
+
+ if (task->data[4] == 0x50 && !r6)
+ task->tState++;
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func8(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ BlendPalettes(-1, 0x10, 0x7FFF);
+ TRANSITION_STRUCT.BLDCNT = 0xFF;
+ task->data[3] = 0;
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Mugshot_Func9(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ task->data[3]++;
+ memset(gUnknown_03004DE0[0], task->data[3], 0x140);
+ if (task->data[3] > 15)
+ task->tState++;
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Mugshot_Func10(struct Task* task)
+{
+ DmaStop(0);
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(task->func));
+ return FALSE;
+}
+
+static void VBlankCB0_Phase2_Mugshots(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA != 0)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ REG_BG0VOFS = TRANSITION_STRUCT.field_1C;
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+ DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+}
+
+static void VBlankCB1_Phase2_Mugshots(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA != 0)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ REG_BLDCNT = TRANSITION_STRUCT.BLDCNT;
+ DmaSet(0, gUnknown_03004DE0[1], &REG_BLDY, 0xA2400001);
+}
+
+static void HBlankCB_Phase2_Mugshots(void)
+{
+ if (REG_VCOUNT < 80)
+ REG_BG0HOFS = TRANSITION_STRUCT.field_18;
+ else
+ REG_BG0HOFS = TRANSITION_STRUCT.field_1A;
+}
+
+static void Mugshots_CreateOpponentPlayerSprites(struct Task* task)
+{
+ struct Sprite *opponentSprite, *playerSprite;
+
+ s16 mugshotID = task->tMugshotID;
+ task->tMugshotOpponentID = CreateTrainerSprite(sMugshotsTrainerPicIDsTable[mugshotID],
+ sMugshotsOpponentCoords[mugshotID][0] - 32,
+ sMugshotsOpponentCoords[mugshotID][1] + 42,
+ 0, &ewram[0xC03C]);
+ task->tMugshotPlayerID = CreateTrainerSprite(gSaveBlock2.playerGender, 272, 106, 0, &ewram[0xC03C]);
+
+ opponentSprite = &gSprites[task->tMugshotOpponentID];
+ playerSprite = &gSprites[task->tMugshotPlayerID];
+
+ opponentSprite->callback = sub_811C90C;
+ playerSprite->callback = sub_811C90C;
+
+ opponentSprite->oam.affineMode = 3;
+ playerSprite->oam.affineMode = 3;
+
+ opponentSprite->oam.matrixNum = AllocOamMatrix();
+ playerSprite->oam.matrixNum = AllocOamMatrix();
+
+ opponentSprite->oam.shape = 1;
+ playerSprite->oam.shape = 1;
+
+ opponentSprite->oam.size = 3;
+ playerSprite->oam.size = 3;
+
+ CalcCenterToCornerVec(opponentSprite, 1, 3, 3);
+ CalcCenterToCornerVec(playerSprite, 1, 3, 3);
+
+ SetOamMatrixRotationScaling(opponentSprite->oam.matrixNum, sMugshotsOpponentRotationScales[mugshotID][0], sMugshotsOpponentRotationScales[mugshotID][1], 0);
+ SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 0x200, 0);
+}
+
+static void sub_811C90C(struct Sprite* sprite)
+{
+ while (sUnknown_083FD880[sprite->data0](sprite));
+}
+
+static bool8 sub_811C934(struct Sprite* sprite)
+{
+ return FALSE;
+}
+
+static bool8 sub_811C938(struct Sprite* sprite)
+{
+ s16 arr0[2];
+ s16 arr1[2];
+
+ memcpy(arr0, sUnknown_083FD89C, sizeof(sUnknown_083FD89C));
+ memcpy(arr1, sUnknown_083FD8A0, sizeof(sUnknown_083FD8A0));
+
+ sprite->data0++;
+ sprite->data1 = arr0[sprite->data7];
+ sprite->data2 = arr1[sprite->data7];
+ return TRUE;
+}
+
+static bool8 sub_811C984(struct Sprite* sprite)
+{
+ sprite->pos1.x += sprite->data1;
+ if (sprite->data7 && sprite->pos1.x < 133)
+ sprite->data0++;
+ else if (!sprite->data7 && sprite->pos1.x > 103)
+ sprite->data0++;
+ return FALSE;
+}
+
+static bool8 sub_811C9B8(struct Sprite* sprite)
+{
+ sprite->data1 += sprite->data2;
+ sprite->pos1.x += sprite->data1;
+ if (sprite->data1 == 0)
+ {
+ sprite->data0++;
+ sprite->data2 = -sprite->data2;
+ sprite->data6 = 1;
+ }
+ return FALSE;
+}
+
+static bool8 sub_811C9E4(struct Sprite* sprite)
+{
+ sprite->data1 += sprite->data2;
+ sprite->pos1.x += sprite->data1;
+ if (sprite->pos1.x < -31 || sprite->pos1.x > 271)
+ sprite->data0++;
+ return FALSE;
+}
+
+static void sub_811CA10(s16 spriteID, s16 value)
+{
+ gSprites[spriteID].data7 = value;
+}
+
+static void sub_811CA28(s16 spriteID)
+{
+ gSprites[spriteID].data0++;
+}
+
+static s16 sub_811CA44(s16 spriteID)
+{
+ return gSprites[spriteID].data6;
+}
+
+#undef tMugshotOpponentID
+#undef tMugshotPlayerID
+#undef tMugshotID
+
+static void Phase2Task_Transition_Slice(u8 taskID)
+{
+ while (sPhase2_Transition_Slice_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Slice_Func1(struct Task* task)
+{
+ u16 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ task->data[2] = 256;
+ task->data[3] = 1;
+ TRANSITION_STRUCT.WININ = 63;
+ TRANSITION_STRUCT.WINOUT = 0;
+ TRANSITION_STRUCT.WIN0V = 160;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03004DE0[1][i] = TRANSITION_STRUCT.field_14;
+ gUnknown_03004DE0[1][160 + i] = 0xF0;
+ }
+
+ REG_IE |= INTR_FLAG_HBLANK;
+ REG_DISPSTAT |= DISPSTAT_HBLANK_INTR;
+
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Slice);
+ SetHBlankCallback(HBlankCB_Phase2_Transition_Slice);
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Slice_Func2(struct Task* task)
+{
+ u16 i;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ task->data[1] += (task->data[2] >> 8);
+ if (task->data[1] > 0xF0)
+ task->data[1] = 0xF0;
+ if (task->data[2] <= 0xFFF)
+ task->data[2] += task->data[3];
+ if (task->data[3] < 128)
+ task->data[3] <<= 1; // multiplying by two
+
+ for (i = 0; i < 160; i++)
+ {
+ u16* storeLoc1 = &gUnknown_03004DE0[0][i];
+ u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160];
+ if (1 & i)
+ {
+ *storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1];
+ *storeLoc2 = 0xF0 - task->data[1];
+ }
+ else
+ {
+ *storeLoc1 = TRANSITION_STRUCT.field_14 - task->data[1];
+ *storeLoc2 = (task->data[1] << 8) | (0xF1);
+ }
+ }
+
+ if (task->data[1] > 0xEF)
+ task->tState++;
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Slice_Func3(struct Task* task)
+{
+ DmaStop(0);
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Slice));
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Slice(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640);
+ DmaSet(0, &gUnknown_03004DE0[1][160], &REG_WIN0H, 0xA2400001);
+}
+
+static void HBlankCB_Phase2_Transition_Slice(void)
+{
+ u16 var = gUnknown_03004DE0[1][REG_VCOUNT];
+ REG_BG1HOFS = var;
+ REG_BG2HOFS = var;
+ REG_BG3HOFS = var;
+}
+
+static void Phase2Task_Transition_WhiteFade(u8 taskID)
+{
+ while (sPhase2_Transition_WhiteFade_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task)
+{
+ u16 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ TRANSITION_STRUCT.BLDCNT = 0xBF;
+ TRANSITION_STRUCT.BLDY = 0;
+ TRANSITION_STRUCT.WININ = 0x1E;
+ TRANSITION_STRUCT.WINOUT = 0x3F;
+ TRANSITION_STRUCT.WIN0V = 0xA0;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03004DE0[1][i] = 0;
+ gUnknown_03004DE0[1][i + 160] = 0xF0;
+ }
+
+ REG_IE |= INTR_FLAG_HBLANK;
+ REG_DISPSTAT |= DISPSTAT_HBLANK_INTR;
+
+ SetHBlankCallback(HBlankCB_Phase2_Transition_WhiteFade);
+ SetVBlankCallback(VBlankCB0_Phase2_Transition_WhiteFade);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task)
+{
+ s16 i, posY;
+ s16 arr1[8];
+ struct Sprite* sprite;
+
+ memcpy(arr1, sUnknown_083FD8C4, sizeof(sUnknown_083FD8C4));
+ for (i = 0, posY = 0; i < 8; i++, posY += 0x14)
+ {
+ sprite = &gSprites[CreateInvisibleSprite(sub_811CFD0)];
+ sprite->pos1.x = 0xF0;
+ sprite->pos1.y = posY;
+ sprite->data5 = arr1[i];
+ }
+ sprite->data6++;
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+ if (TRANSITION_STRUCT.field_20 > 7)
+ {
+ BlendPalettes(-1, 0x10, 0x7FFF);
+ task->tState++;
+ }
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task)
+{
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ DmaStop(0);
+ SetVBlankCallback(0);
+ SetHBlankCallback(0);
+
+ TRANSITION_STRUCT.field_6 = 0xF0;
+ TRANSITION_STRUCT.BLDY = 0;
+ TRANSITION_STRUCT.BLDCNT = 0xFF;
+ TRANSITION_STRUCT.WININ = 0x3F;
+
+ SetVBlankCallback(VBlankCB1_Phase2_Transition_WhiteFade);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task)
+{
+ if (++TRANSITION_STRUCT.BLDY > 16)
+ {
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_WhiteFade));
+ }
+ return FALSE;
+}
+
+static void VBlankCB0_Phase2_Transition_WhiteFade(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ REG_BLDCNT = TRANSITION_STRUCT.BLDCNT;
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.field_6;
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640);
+ DmaSet(0, &gUnknown_03004DE0[1][160], &REG_WIN0H, 0xA2400001);
+}
+
+static void VBlankCB1_Phase2_Transition_WhiteFade(void)
+{
+ VBlankCB_BattleTransition();
+ REG_BLDY = TRANSITION_STRUCT.BLDY;
+ REG_BLDCNT = TRANSITION_STRUCT.BLDCNT;
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0H = TRANSITION_STRUCT.field_6;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+}
+
+static void HBlankCB_Phase2_Transition_WhiteFade(void)
+{
+ REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT];
+}
+
+static void sub_811CFD0(struct Sprite* sprite)
+{
+ if (sprite->data5)
+ {
+ sprite->data5--;
+ if (sprite->data6)
+ TRANSITION_STRUCT.VBlank_DMA = 1;
+ }
+ else
+ {
+ u16 i;
+ u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y];
+ u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160];
+ for (i = 0; i < 20; i++)
+ {
+ ptr1[i] = sprite->data0 >> 8;
+ ptr2[i] = (u8)(sprite->pos1.x);
+ }
+ if (sprite->pos1.x == 0 && sprite->data0 == 0x1000)
+ sprite->data1 = 1;
+
+ sprite->pos1.x -= 16;
+ sprite->data0 += 0x80;
+
+ if (sprite->pos1.x < 0)
+ sprite->pos1.x = 0;
+ if (sprite->data0 > 0x1000)
+ sprite->data0 = 0x1000;
+
+ if (sprite->data6)
+ TRANSITION_STRUCT.VBlank_DMA = 1;
+
+ if (sprite->data1)
+ {
+ if (sprite->data6 == 0 || (TRANSITION_STRUCT.field_20 > 6 && sprite->data2++ > 7))
+ {
+ TRANSITION_STRUCT.field_20++;
+ DestroySprite(sprite);
+ }
+ }
+ }
+}
+
+static void Phase2Task_Transition_GridSquares(u8 taskID)
+{
+ while (sPhase2_Transition_GridSquares_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task)
+{
+ u16 *dst1, *dst2;
+
+ sub_811D6A8(&dst1, &dst2);
+ CpuSet(sShrinkingBoxTileset, dst2, 0x10);
+ CpuFill16(0xF000, dst1, 0x800);
+ LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20);
+
+ task->tState++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task)
+{
+ u16* dst1;
+
+ if (task->data[1] == 0)
+ {
+ sub_811D690(&dst1);
+ task->data[1] = 3;
+ task->data[2]++;
+ CpuSet(sShrinkingBoxTileset + (task->data[2] * 8), dst1, 0x10);
+ if (task->data[2] > 0xD)
+ {
+ task->tState++;
+ task->data[1] = 16;
+ }
+ }
+
+ task->data[1]--;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task)
+{
+ if (--task->data[1] == 0)
+ {
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_GridSquares));
+ }
+ return FALSE;
+}
+
+static void Phase2Task_Transition_Shards(u8 taskID)
+{
+ while (sPhase2_Transition_Shards_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase2_Transition_Shards_Func1(struct Task* task)
+{
+ u16 i;
+
+ sub_811D658();
+ dp12_8087EA4();
+
+ TRANSITION_STRUCT.WININ = 0x3F;
+ TRANSITION_STRUCT.WINOUT = 0;
+ TRANSITION_STRUCT.WIN0V = 0xA0;
+
+ for (i = 0; i < 160; i++)
+ {
+ gUnknown_03004DE0[0][i] = 0xF0;
+ }
+
+ CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0);
+ SetVBlankCallback(VBlankCB_Phase2_Transition_Shards);
+
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Shards_Func2(struct Task* task)
+{
+ sub_811D8FC(TRANSITION_STRUCT.data,
+ sUnknown_083FD8F4[task->data[1]][0],
+ sUnknown_083FD8F4[task->data[1]][1],
+ sUnknown_083FD8F4[task->data[1]][2],
+ sUnknown_083FD8F4[task->data[1]][3],
+ 1, 1);
+ task->data[2] = sUnknown_083FD8F4[task->data[1]][4];
+ task->tState++;
+ return TRUE;
+}
+
+static bool8 Phase2_Transition_Shards_Func3(struct Task* task)
+{
+ s16 i;
+ bool8 nextFunc;
+
+ TRANSITION_STRUCT.VBlank_DMA = 0;
+
+ for (i = 0, nextFunc = FALSE; i < 16; i++)
+ {
+ s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] >> 8;
+ s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF;
+ if (task->data[2] == 0)
+ {
+ if (r3 < TRANSITION_STRUCT.data[2])
+ r3 = TRANSITION_STRUCT.data[2];
+ if (r3 > r4)
+ r3 = r4;
+ }
+ else
+ {
+ if (r4 > TRANSITION_STRUCT.data[2])
+ r4 = TRANSITION_STRUCT.data[2];
+ if (r4 <= r3)
+ r4 = r3;
+ }
+ gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8);
+ if (nextFunc)
+ {
+ task->tState++;
+ break;
+ }
+ else
+ nextFunc = sub_811D978(TRANSITION_STRUCT.data, 1, 1);
+ }
+
+ TRANSITION_STRUCT.VBlank_DMA++;
+ return FALSE;
+}
+
+static bool8 Phase2_Transition_Shards_Func4(struct Task* task)
+{
+ if (++task->data[1] < 7)
+ {
+ task->tState++;
+ task->data[3] = sUnknown_083FD93A[task->data[1] - 1];
+ return TRUE;
+ }
+ else
+ {
+ DmaStop(0);
+ sub_811D6D4();
+ DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shards));
+ return FALSE;
+ }
+}
+
+static bool8 Phase2_Transition_Shards_Func5(struct Task* task)
+{
+ if (--task->data[3] == 0)
+ {
+ task->tState = 1;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void VBlankCB_Phase2_Transition_Shards(void)
+{
+ DmaStop(0);
+ VBlankCB_BattleTransition();
+ if (TRANSITION_STRUCT.VBlank_DMA)
+ DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320);
+ REG_WININ = TRANSITION_STRUCT.WININ;
+ REG_WINOUT = TRANSITION_STRUCT.WINOUT;
+ REG_WIN0V = TRANSITION_STRUCT.WIN0V;
+ REG_WIN0H = gUnknown_03004DE0[1][0];
+ DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
+}
+
+static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4)
+{
+ u8 taskID = CreateTask(Phase1_Task_RunFuncs, 3);
+ gTasks[taskID].data[1] = a0;
+ gTasks[taskID].data[2] = a1;
+ gTasks[taskID].data[3] = a2;
+ gTasks[taskID].data[4] = a3;
+ gTasks[taskID].data[5] = a4;
+ gTasks[taskID].data[6] = a0;
+}
+
+static bool8 sub_811D52C(void)
+{
+ if (FindTaskIdByFunc(Phase1_Task_RunFuncs) == 0xFF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void Phase1_Task_RunFuncs(u8 taskID)
+{
+ while (sPhase1_TransitionAll_Funcs[gTasks[taskID].tState](&gTasks[taskID]));
+}
+
+static bool8 Phase1_TransitionAll_Func1(struct Task* task)
+{
+ if (task->data[6] == 0 || --task->data[6] == 0)
+ {
+ task->data[6] = task->data[1];
+ task->data[7] += task->data[4];
+ if (task->data[7] > 16)
+ task->data[7] = 16;
+ BlendPalettes(-1, task->data[7], 0x2D6B);
+ }
+ if (task->data[7] > 15)
+ {
+ task->tState++;
+ task->data[6] = task->data[2];
+ }
+ return FALSE;
+}
+
+static bool8 Phase1_TransitionAll_Func2(struct Task* task)
+{
+ if (task->data[6] == 0 || --task->data[6] == 0)
+ {
+ task->data[6] = task->data[2];
+ task->data[7] -= task->data[5];
+ if (task->data[7] < 0)
+ task->data[7] = 0;
+ BlendPalettes(-1, task->data[7], 0x2D6B);
+ }
+ if (task->data[7] == 0)
+ {
+ if (--task->data[3] == 0)
+ DestroyTask(FindTaskIdByFunc(Phase1_Task_RunFuncs));
+ else
+ {
+ task->data[6] = task->data[1];
+ task->tState = 0;
+ }
+ }
+ return FALSE;
+}
+
+static void sub_811D658(void)
+{
+ struct TransitionData* const* dummy = &sTransitionStructPtr;
+ memset(*dummy, 0, sizeof(struct TransitionData));
+ sub_8057B14(&TRANSITION_STRUCT.field_14, &TRANSITION_STRUCT.field_16);
+}
+
+static void VBlankCB_BattleTransition(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void sub_811D690(u16** a0)
+{
+ u16 reg, *vram;
+
+ reg = REG_BG0CNT >> 2;
+ reg <<= 0xE;
+ vram = (u16*)(VRAM + reg);
+
+ *a0 = vram;
+}
+
+static void sub_811D6A8(u16** a0, u16** a1)
+{
+ u16 reg0, reg1, *vram0, *vram1;
+
+ reg0 = REG_BG0CNT >> 8;
+ reg1 = REG_BG0CNT >> 2;
+
+ reg0 <<= 0xB;
+ reg1 <<= 0xE;
+
+ vram0 = (u16*)(VRAM + reg0);
+ *a0 = vram0;
+
+ vram1 = (u16*)(VRAM + reg1);
+ *a1 = vram1;
+}
+
+static void sub_811D6D4(void)
+{
+ BlendPalettes(-1, 0x10, 0);
+}
+
+static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize)
+{
+ u8 i;
+ for (i = 0; arrSize > 0; arrSize--, i++, index += indexIncrementer)
+ {
+ array[i] = sinAdd + Sin(0xFF & index, amplitude);
+ }
+}
+
+static void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3)
+{
+ s16 i;
+
+ memset(array, 0xA, 160 * sizeof(s16));
+ for (i = 0; i < 64; i++)
+ {
+ s16 sinResult, cosResult;
+ s16 toStoreOrr, r2, r3, toStore, r7, r8;
+
+ sinResult = Sin(i, a3);
+ cosResult = Cos(i, a3);
+
+ toStoreOrr = a1 - sinResult;
+ toStore = a1 + sinResult;
+ r7 = a2 - cosResult;
+ r8 = a2 + cosResult;
+
+ if (toStoreOrr < 0)
+ toStoreOrr = 0;
+ if (toStore > 0xF0)
+ toStore = 0xF0;
+ if (r7 < 0)
+ r7 = 0;
+ if (r8 > 0x9F)
+ r8 = 0x9F;
+
+ toStore |= (toStoreOrr << 8);
+ array[r7] = toStore;
+ array[r8] = toStore;
+
+ cosResult = Cos(i + 1, a3);
+ r3 = a2 - cosResult;
+ r2 = a2 + cosResult;
+
+ if (r3 < 0)
+ r3 = 0;
+ if (r2 > 0x9F)
+ r2 = 0x9F;
+
+ while (r7 > r3)
+ array[--r7] = toStore;
+ while (r7 < r3)
+ array[++r7] = toStore;
+
+ while (r8 > r2)
+ array[--r8] = toStore;
+ while (r8 < r2)
+ array[++r8] = toStore;
+ }
+}
+
+static void sub_811D8FC(s16* data, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6)
+{
+ data[0] = a1;
+ data[1] = a2;
+ data[2] = a1;
+ data[3] = a2;
+ data[4] = a3;
+ data[5] = a4;
+ data[6] = a5;
+ data[7] = a6;
+ data[8] = a3 - a1;
+ if (data[8] < 0)
+ {
+ data[8] = -data[8];
+ data[6] = -a5;
+ }
+ data[9] = a4 - a2;
+ if (data[9] < 0)
+ {
+ data[9] = -data[9];
+ data[7] = -a6;
+ }
+ data[10] = 0;
+}
+
+static bool8 sub_811D978(s16* data, bool8 a1, bool8 a2)
+{
+ u8 var;
+ if (data[8] > data[9])
+ {
+ data[2] += data[6];
+ data[10] += data[9];
+ if (data[10] > data[8])
+ {
+ data[3] += data[7];
+ data[10] -= data[8];
+ }
+ }
+ else
+ {
+ data[3] += data[7];
+ data[10] += data[8];
+ if (data[10] > data[9])
+ {
+ data[2] += data[6];
+ data[10] -= data[9];
+ }
+ }
+ var = 0;
+ if ((data[6] > 0 && data[2] >= data[4]) || (data[6] < 0 && data[2] <= data[4]))
+ {
+ var++;
+ if (a1)
+ data[2] = data[4];
+ }
+ if ((data[7] > 0 && data[3] >= data[5]) || (data[7] < 0 && data[3] <= data[5]))
+ {
+ var++;
+ if (a2)
+ data[3] = data[5];
+ }
+ if (var == 2)
+ return TRUE;
+ else
+ return FALSE;
+}
diff --git a/src/battle/calculate_base_damage.c b/src/battle/calculate_base_damage.c
new file mode 100644
index 000000000..f5c679876
--- /dev/null
+++ b/src/battle/calculate_base_damage.c
@@ -0,0 +1,309 @@
+#include "global.h"
+#include "abilities.h"
+#include "battle.h"
+#include "berry.h"
+#include "data2.h"
+#include "event_data.h"
+#include "hold_effects.h"
+#include "item.h"
+#include "items.h"
+#include "pokemon.h"
+#include "species.h"
+#include "moves.h"
+#include "battle_move_effects.h"
+
+extern u32 dword_2017100[];
+extern u16 gBattleTypeFlags;
+extern struct BattlePokemon gBattleMons[4];
+extern u16 gCurrentMove;
+extern u8 gCritMultiplier;
+extern u16 gBattleWeather;
+extern struct BattleEnigmaBerry gEnigmaBerries[];
+extern u16 gBattleMovePower;
+extern u16 gTrainerBattleOpponent;
+
+extern const u8 gHoldEffectToType[][2];
+extern const u8 gStatStageRatios[][2];
+
+u8 GetBankSide(u8 bank);
+
+#define APPLY_STAT_MOD(var, mon, stat, statIndex) \
+{ \
+ (var) = (stat) * (gStatStageRatios)[(mon)->statStages[(statIndex)]][0]; \
+ (var) /= (gStatStageRatios)[(mon)->statStages[(statIndex)]][1]; \
+}
+
+s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 sideStatus, u16 powerOverride, u8 typeOverride, u8 bankAtk, u8 bankDef)
+{
+ u32 i;
+ s32 damage = 0;
+ s32 damageHelper;
+ u8 type;
+ u16 attack, defense;
+ u16 spAttack, spDefense;
+ u8 defenderHoldEffect;
+ u8 defenderHoldEffectParam;
+ u8 attackerHoldEffect;
+ u8 attackerHoldEffectParam;
+
+ if (!powerOverride)
+ gBattleMovePower = gBattleMoves[move].power;
+ else
+ gBattleMovePower = powerOverride;
+
+ if (!typeOverride)
+ type = gBattleMoves[move].type;
+ else
+ type = typeOverride & 0x3F;
+
+ attack = attacker->attack;
+ defense = defender->defense;
+ spAttack = attacker->spAttack;
+ spDefense = defender->spDefense;
+
+ if (attacker->item == ITEM_ENIGMA_BERRY)
+ {
+ attackerHoldEffect = gEnigmaBerries[bankAtk].holdEffect;
+ attackerHoldEffectParam = gEnigmaBerries[bankAtk].holdEffectParam;
+ }
+ else
+ {
+ attackerHoldEffect = ItemId_GetHoldEffect(attacker->item);
+ attackerHoldEffectParam = ItemId_GetHoldEffectParam(attacker->item);
+ }
+
+ if (defender->item == ITEM_ENIGMA_BERRY)
+ {
+ defenderHoldEffect = gEnigmaBerries[bankDef].holdEffect;
+ defenderHoldEffectParam = gEnigmaBerries[bankDef].holdEffectParam;
+ }
+ else
+ {
+ defenderHoldEffect = ItemId_GetHoldEffect(defender->item);
+ defenderHoldEffectParam = ItemId_GetHoldEffectParam(defender->item);
+ }
+
+ if (attacker->ability == ABILITY_HUGE_POWER || attacker->ability == ABILITY_PURE_POWER)
+ attack *= 2;
+
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ && gTrainerBattleOpponent != 1024
+ && FlagGet(BADGE01_GET)
+ && !GetBankSide(bankAtk))
+ attack = (110 * attack) / 100;
+ }
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ && gTrainerBattleOpponent != 1024
+ && FlagGet(BADGE05_GET)
+ && !GetBankSide(bankDef))
+ defense = (110 * defense) / 100;
+ }
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ && gTrainerBattleOpponent != 1024
+ && FlagGet(BADGE07_GET)
+ && !GetBankSide(bankAtk))
+ spAttack = (110 * spAttack) / 100;
+ }
+ if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
+ && gTrainerBattleOpponent != 1024
+ && FlagGet(BADGE07_GET)
+ && !GetBankSide(bankDef))
+ spDefense = (110 * spDefense) / 100;
+ }
+
+ for (i = 0; i < 17; i++)
+ {
+ if (attackerHoldEffect == gHoldEffectToType[i][0]
+ && type == gHoldEffectToType[i][1])
+ {
+ if (type <= 8)
+ attack = (attack * (attackerHoldEffectParam + 100)) / 100;
+ else
+ spAttack = (spAttack * (attackerHoldEffectParam + 100)) / 100;
+ break;
+ }
+ }
+
+ if (attackerHoldEffect == HOLD_EFFECT_CHOICE_BAND)
+ attack = (150 * attack) / 100;
+ if (attackerHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (attacker->species == SPECIES_LATIAS || attacker->species == SPECIES_LATIOS))
+ spAttack = (150 * spAttack) / 100;
+ if (defenderHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (defender->species == SPECIES_LATIAS || defender->species == SPECIES_LATIOS))
+ spDefense = (150 * spDefense) / 100;
+ if (attackerHoldEffect == HOLD_EFFECT_DEEP_SEA_TOOTH && attacker->species == SPECIES_CLAMPERL)
+ spAttack *= 2;
+ if (defenderHoldEffect == HOLD_EFFECT_DEEP_SEA_SCALE && defender->species == SPECIES_CLAMPERL)
+ spDefense *= 2;
+ if (attackerHoldEffect == HOLD_EFFECT_LIGHT_BALL && attacker->species == SPECIES_PIKACHU)
+ spAttack *= 2;
+ if (defenderHoldEffect == HOLD_EFFECT_METAL_POWDER && defender->species == SPECIES_DITTO)
+ defense *= 2;
+ if (attackerHoldEffect == HOLD_EFFECT_THICK_CLUB && (attacker->species == SPECIES_CUBONE || attacker->species == SPECIES_MAROWAK))
+ attack *= 2;
+ if (defender->ability == ABILITY_THICK_FAT && (type == TYPE_FIRE || type == TYPE_ICE))
+ spAttack /= 2;
+ if (attacker->ability == ABILITY_HUSTLE)
+ attack = (150 * attack) / 100;
+ if (attacker->ability == ABILITY_PLUS && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_MINUS, 0, 0))
+ spAttack = (150 * spAttack) / 100;
+ if (attacker->ability == ABILITY_MINUS && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_PLUS, 0, 0))
+ spAttack = (150 * spAttack) / 100;
+ if (attacker->ability == ABILITY_GUTS && attacker->status1)
+ attack = (150 * attack) / 100;
+ if (defender->ability == ABILITY_MARVEL_SCALE && defender->status1)
+ defense = (150 * defense) / 100;
+ if (type == TYPE_ELECTRIC && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, 0xFD, 0))
+ gBattleMovePower /= 2;
+ if (type == TYPE_FIRE && AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, 0, 0xFE, 0))
+ gBattleMovePower /= 2;
+ if (type == TYPE_GRASS && attacker->ability == ABILITY_OVERGROW && attacker->hp <= (attacker->maxHP / 3))
+ gBattleMovePower = (150 * gBattleMovePower) / 100;
+ if (type == TYPE_FIRE && attacker->ability == ABILITY_BLAZE && attacker->hp <= (attacker->maxHP / 3))
+ gBattleMovePower = (150 * gBattleMovePower) / 100;
+ if (type == TYPE_WATER && attacker->ability == ABILITY_TORRENT && attacker->hp <= (attacker->maxHP / 3))
+ gBattleMovePower = (150 * gBattleMovePower) / 100;
+ if (type == TYPE_BUG && attacker->ability == ABILITY_SWARM && attacker->hp <= (attacker->maxHP / 3))
+ gBattleMovePower = (150 * gBattleMovePower) / 100;
+ if (gBattleMoves[gCurrentMove].effect == EFFECT_EXPLOSION)
+ defense /= 2;
+
+ if (type < TYPE_MYSTERY) // is physical
+ {
+ if (gCritMultiplier == 2)
+ {
+ if (attacker->statStages[STAT_STAGE_ATK] > 6)
+ APPLY_STAT_MOD(damage, attacker, attack, STAT_STAGE_ATK)
+ else
+ damage = attack;
+ }
+ else
+ APPLY_STAT_MOD(damage, attacker, attack, STAT_STAGE_ATK)
+
+ damage = damage * gBattleMovePower;
+ damage *= (2 * attacker->level / 5 + 2);
+
+ if (gCritMultiplier == 2)
+ {
+ if (defender->statStages[STAT_STAGE_DEF] < 6)
+ APPLY_STAT_MOD(damageHelper, defender, defense, STAT_STAGE_DEF)
+ else
+ damageHelper = defense;
+ }
+ else
+ APPLY_STAT_MOD(damageHelper, defender, defense, STAT_STAGE_DEF)
+
+ damage = damage / damageHelper;
+ damage /= 50;
+
+ if ((attacker->status1 & STATUS_BURN) && attacker->ability != ABILITY_GUTS)
+ damage /= 2;
+
+ if ((sideStatus & SIDE_STATUS_REFLECT) && gCritMultiplier == 1)
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2)
+ damage = 2 * (damage / 3);
+ else
+ damage /= 2;
+ }
+
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2)
+ damage /= 2;
+
+ // moves always do at least 1 damage.
+ if (damage == 0)
+ damage = 1;
+ }
+
+ if (type == TYPE_MYSTERY)
+ damage = 0; // is ??? type. does 0 damage.
+
+ if (type > TYPE_MYSTERY) // is special?
+ {
+ if (gCritMultiplier == 2)
+ {
+ if (attacker->statStages[STAT_STAGE_SPATK] > 6)
+ APPLY_STAT_MOD(damage, attacker, spAttack, STAT_STAGE_SPATK)
+ else
+ damage = spAttack;
+ }
+ else
+ APPLY_STAT_MOD(damage, attacker, spAttack, STAT_STAGE_SPATK)
+
+ damage = damage * gBattleMovePower;
+ damage *= (2 * attacker->level / 5 + 2);
+
+ if (gCritMultiplier == 2)
+ {
+ if (defender->statStages[STAT_STAGE_SPDEF] < 6)
+ APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_STAGE_SPDEF)
+ else
+ damageHelper = spDefense;
+ }
+ else
+ APPLY_STAT_MOD(damageHelper, defender, spDefense, STAT_STAGE_SPDEF)
+
+ damage = (damage / damageHelper);
+ damage /= 50;
+
+ if ((sideStatus & SIDE_STATUS_LIGHTSCREEN) && gCritMultiplier == 1)
+ {
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2)
+ damage = 2 * (damage / 3);
+ else
+ damage /= 2;
+ }
+
+ if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2)
+ damage /= 2;
+
+ // are effects of weather negated with cloud nine or air lock
+ if (!AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_CLOUD_NINE, 0, 0)
+ && !AbilityBattleEffects(ABILITYEFFECT_FIELD_SPORT, 0, ABILITY_AIR_LOCK, 0, 0))
+ {
+ if (gBattleWeather & WEATHER_RAIN_TEMPORARY)
+ {
+ switch (type)
+ {
+ case TYPE_FIRE:
+ damage /= 2;
+ break;
+ case TYPE_WATER:
+ damage = (15 * damage) / 10;
+ break;
+ }
+ }
+
+ // any weather except sun weakens solar beam
+ if ((gBattleWeather & (WEATHER_RAIN_ANY | WEATHER_SANDSTORM_ANY | WEATHER_HAIL)) && gCurrentMove == MOVE_SOLAR_BEAM)
+ damage /= 2;
+
+ // sunny
+ if (gBattleWeather & WEATHER_SUN_ANY)
+ {
+ switch (type)
+ {
+ case TYPE_FIRE:
+ damage = (15 * damage) / 10;
+ break;
+ case TYPE_WATER:
+ damage /= 2;
+ break;
+ }
+ }
+ }
+
+ // flash fire triggered
+ if ((dword_2017100[bankAtk] & 1) && type == TYPE_FIRE)
+ damage = (15 * damage) / 10;
+ }
+
+ return damage + 2;
+}
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 8d85705c8..27d7022fe 100644
--- a/src/post_battle_event_funcs.c
+++ b/src/battle/post_battle_event_funcs.c
@@ -4,7 +4,7 @@
#include "load_save.h"
#include "main.h"
#include "pokemon.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script_pokemon_80C4.h"
extern u8 gUnknown_02039324;
@@ -14,7 +14,7 @@ int GameClear(void)
int i;
bool32 ribbonGet;
- HealPlayerParty();
+ ScrSpecial_HealPlayerParty();
if (FlagGet(SYS_GAME_CLEAR) == TRUE)
{
diff --git a/src/battle/reshow_battle_screen.c b/src/battle/reshow_battle_screen.c
new file mode 100644
index 000000000..343c8f183
--- /dev/null
+++ b/src/battle/reshow_battle_screen.c
@@ -0,0 +1,332 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_anim.h"
+#include "palette.h"
+#include "main.h"
+#include "unknown_task.h"
+#include "text.h"
+#include "rom_8077ABC.h"
+#include "data2.h"
+
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern struct Window gUnknown_03004210;
+extern u16 gUnknown_03004280;
+extern u16 gUnknown_03004288;
+extern u16 gUnknown_030042A4;
+extern u16 gUnknown_030042C0;
+extern u16 gUnknown_030041B0;
+extern u16 gUnknown_030041B4;
+extern u16 gUnknown_030041B8;
+extern u16 gUnknown_030042A0;
+extern u8 gReservedSpritePaletteCount;
+extern u8 gActionSelectionCursor[4];
+extern u8 gBankInMenu;
+extern u16 gBattlePartyID[4];
+extern u8 gNoOfAllBanks;
+extern u16 gBattleTypeFlags;
+extern u8 gObjectBankIDs[4];
+extern u8 gBattleMonForms[4];
+extern u8 gHealthboxIDs[4];
+
+bool8 sub_800E414(u8 a0);
+bool8 sub_8031C30(u8 a0);
+void sub_8031EE8(void);
+void sub_80327CC(void);
+void sub_8032984(u8 a, u16 b);
+void sub_800FCD4(void);
+void BattleLoadOpponentMonSprite(struct Pokemon *, u8 bank);
+void BattleLoadPlayerMonSprite(struct Pokemon *, u8 bank);
+void BattleLoadSubstituteSprite(u8 bank, u8 b);
+void LoadPlayerTrainerBankSprite(u16 a0, u8 bank);
+u8 sub_8077F7C(u8 bank);
+u8 sub_8077F68(u8 bank);
+void nullsub_11(u8 healthboxID, u8 a1);
+void sub_8043DB0(u8 bank);
+u8 battle_make_oam_normal_battle(u8 bank);
+u8 battle_make_oam_safari_battle(void);
+void sub_8045A5C(u8 healthboxID, struct Pokemon*, u8);
+void sub_8043F44(u8 bank);
+void sub_8043DFC(u8 healthboxID);
+
+// this file's functions
+static void CB2_ReshowBattleScreenAfterMenu(void);
+static bool8 LoadAppropiateBankSprite(u8 bank);
+static void sub_807B184(u8 bank);
+static void sub_807B508(u8 bank);
+static void sub_807B06C(void);
+
+#define gReshowState ewram[0x1FFFF]
+#define gHelperState ewram[0x1FFFE]
+
+void nullsub_14(void)
+{
+
+}
+
+void ReshowBattleScreenAfterMenu(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ SetHBlankCallback(0);
+ SetVBlankCallback(0);
+ REG_MOSAIC = 0;
+ gReshowState = 0;
+ gHelperState = 0;
+ SetMainCallback2(CB2_ReshowBattleScreenAfterMenu);
+}
+
+static void CB2_ReshowBattleScreenAfterMenu(void)
+{
+ switch (gReshowState)
+ {
+ case 0:
+ dp12_8087EA4();
+ SetUpWindowConfig(&gWindowConfig_81E6C58);
+ ResetPaletteFade();
+ InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ gUnknown_030041B0 = 0;
+ gUnknown_030041B8 = 0;
+ break;
+ case 1:
+ {
+ const u32 zero = 0;
+ CpuFastSet(&zero, (void*) VRAM, 0x1006000);
+ }
+ break;
+ case 2:
+ if (!sub_800E414(gHelperState))
+ {
+ gHelperState++;
+ gReshowState--;
+ }
+ else
+ gHelperState = 0;
+ break;
+ case 3:
+ ResetSpriteData();
+ break;
+ case 4:
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ break;
+ case 5:
+ sub_8031EE8();
+ break;
+ case 6:
+ if (sub_8031C30(gHelperState))
+ gHelperState = 0;
+ else
+ {
+ gHelperState++;
+ gReshowState--;
+ }
+ break;
+ case 7:
+ if (!LoadAppropiateBankSprite(0))
+ gReshowState--;
+ break;
+ case 8:
+ if (!LoadAppropiateBankSprite(1))
+ gReshowState--;
+ break;
+ case 9:
+ if (!LoadAppropiateBankSprite(2))
+ gReshowState--;
+ break;
+ case 10:
+ if (!LoadAppropiateBankSprite(3))
+ gReshowState--;
+ break;
+ case 11:
+ sub_807B184(0);
+ break;
+ case 12:
+ sub_807B184(1);
+ break;
+ case 13:
+ sub_807B184(2);
+ break;
+ case 14:
+ sub_807B184(3);
+ break;
+ case 15:
+ sub_807B508(0);
+ break;
+ case 16:
+ sub_807B508(1);
+ break;
+ case 17:
+ sub_807B508(2);
+ break;
+ case 18:
+ sub_807B508(3);
+ break;
+ case 19:
+ {
+ u8 opponentBank;
+ u16 species;
+
+ sub_80327CC();
+
+ opponentBank = GetBankByPlayerAI(1);
+ species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
+ sub_8032984(opponentBank, species);
+
+ if (IsDoubleBattle())
+ {
+ opponentBank = GetBankByPlayerAI(3);
+ species = GetMonData(&gEnemyParty[gBattlePartyID[opponentBank]], MON_DATA_SPECIES);
+ sub_8032984(opponentBank, species);
+ }
+ sub_802E3E4(gActionSelectionCursor[gBankInMenu], 0);
+ }
+ break;
+ default:
+ SetHBlankCallback(sub_800FCD4);
+ SetVBlankCallback(sub_800FCFC);
+ sub_807B06C();
+ BeginHardwarePaletteFade(0xFF, 0, 0x10, 0, 1);
+ gPaletteFade.bufferTransferDisabled = 0;
+ SetMainCallback2(sub_800F808);
+ break;
+ }
+ gReshowState++;
+}
+
+static void sub_807B06C(void)
+{
+ struct BGCntrlBitfield *regBgcnt1, *regBgcnt2;
+
+ sub_800D6D4();
+
+ regBgcnt1 = (void*)(&REG_BG1CNT);
+ regBgcnt1->charBaseBlock = 0;
+
+ regBgcnt2 = (void*)(&REG_BG2CNT);
+ regBgcnt2->charBaseBlock = 0;
+}
+
+static bool8 LoadAppropiateBankSprite(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ if (GetBankSide(bank))
+ {
+ if (!ewram17800[bank].substituteSprite)
+ BattleLoadOpponentMonSprite(&gEnemyParty[gBattlePartyID[bank]], bank);
+ else
+ BattleLoadSubstituteSprite(bank, 0);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ LoadPlayerTrainerBankSprite(gSaveBlock2.playerGender, 0);
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ LoadPlayerTrainerBankSprite(2, 0);
+ else if (!ewram17800[bank].substituteSprite)
+ BattleLoadPlayerMonSprite(&gPlayerParty[gBattlePartyID[bank]], bank);
+ else
+ BattleLoadSubstituteSprite(bank, 0);
+
+ gHelperState = 0;
+ }
+ return 1;
+}
+
+static void sub_807B184(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ u8 posY;
+
+ if (ewram17800[bank].substituteSprite)
+ posY = sub_8077F7C(bank);
+ else
+ posY = sub_8077F68(bank);
+ if (GetBankSide(bank))
+ {
+ if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ return;
+ GetMonSpriteTemplate_803C56C(GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
+ gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, sub_8077ABC(bank, 2), posY, sub_8079E90(bank));
+ gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
+ gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gObjectBankIDs[bank]].data0 = bank;
+ gSprites[gObjectBankIDs[bank]].data2 = GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ {
+ GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(0));
+ gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
+ (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
+ sub_8079E90(0));
+ gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
+ gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gObjectBankIDs[bank]].data0 = bank;
+ }
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ {
+ GetMonSpriteTemplate_803C5A0(2, GetBankIdentity(0));
+ gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, 0x50,
+ (8 - gTrainerBackPicCoords[2].coords) * 4 + 80,
+ sub_8079E90(0));
+ gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
+ gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gObjectBankIDs[bank]].data0 = bank;
+ }
+ else
+ {
+ if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ return;
+ GetMonSpriteTemplate_803C56C(GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES), GetBankIdentity(bank));
+ gObjectBankIDs[bank] = CreateSprite(&gUnknown_02024E8C, sub_8077ABC(bank, 2), posY, sub_8079E90(bank));
+ gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
+ gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
+ gSprites[gObjectBankIDs[bank]].data0 = bank;
+ gSprites[gObjectBankIDs[bank]].data2 = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
+ StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
+ }
+ gSprites[gObjectBankIDs[bank]].invisible = ewram17800[bank].invisible;
+ }
+}
+
+static void sub_807B508(u8 bank)
+{
+ if (bank < gNoOfAllBanks)
+ {
+ u8 healthboxID;
+ if (gBattleTypeFlags & BATTLE_TYPE_SAFARI && bank == 0)
+ healthboxID = battle_make_oam_safari_battle();
+ else if (gBattleTypeFlags & BATTLE_TYPE_WALLY_TUTORIAL && bank == 0)
+ return;
+ else
+ healthboxID = battle_make_oam_normal_battle(bank);
+ gHealthboxIDs[bank] = healthboxID;
+ sub_8043F44(bank);
+ sub_8043DFC(healthboxID);
+ if (GetBankSide(bank))
+ sub_8045A5C(gHealthboxIDs[bank], &gEnemyParty[gBattlePartyID[bank]], 0);
+ else if (gBattleTypeFlags & BATTLE_TYPE_SAFARI)
+ sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlePartyID[bank]], 10);
+ else
+ sub_8045A5C(gHealthboxIDs[bank], &gPlayerParty[gBattlePartyID[bank]], 0);
+ if (GetBankIdentity(bank) == 3 || GetBankIdentity(bank) == 2)
+ nullsub_11(gHealthboxIDs[bank], 1);
+ else
+ nullsub_11(gHealthboxIDs[bank], 0);
+ if (GetBankSide(bank))
+ {
+ if (GetMonData(&gEnemyParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ sub_8043DB0(healthboxID);
+ }
+ else if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI))
+ {
+ if (GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_HP) == 0)
+ sub_8043DB0(healthboxID);
+ }
+ }
+}
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/battle_6.c b/src/battle_6.c
deleted file mode 100644
index 9ea3f240a..000000000
--- a/src/battle_6.c
+++ /dev/null
@@ -1,1507 +0,0 @@
-#include "global.h"
-#include "battle.h"
-#include "battle_interface.h"
-#include "battle_message.h"
-#include "data2.h"
-#include "menu_cursor.h"
-#include "palette.h"
-#include "pokemon.h"
-#include "rom3.h"
-#include "songs.h"
-#include "sound.h"
-#include "sprite.h"
-#include "string_util.h"
-#include "task.h"
-#include "text.h"
-#include "util.h"
-
-//Possibly PokemonSubstruct1
-struct UnknownStruct3
-{
- u16 moves[4];
- u8 pp[4];
- u8 ppBonuses;
-};
-
-extern u16 gUnknown_030042A4;
-extern u16 gUnknown_030042A0;
-
-extern struct Window gUnknown_03004210;
-
-extern void (*gBattleBankFunc[])(void);
-
-extern u8 gActiveBank;
-extern u8 gActionSelectionCursor[];
-extern u8 gDisplayedStringBattle[];
-extern u8 gMoveSelectionCursor[];
-extern u8 gBattleBufferA[][0x200];
-extern u8 gBankInMenu;
-extern u16 gBattlePartyID[];
-extern u8 gHealthboxIDs[];
-extern u8 gDoingBattleAnim;
-extern u8 gObjectBankIDs[];
-extern u16 gBattleTypeFlags;
-extern u8 gBattleOutcome;
-extern void (*gAnimScriptCallback)(void);
-extern bool8 gAnimScriptActive;
-extern u16 gMovePowerMoveAnim;
-extern u32 gMoveDmgMoveAnim;
-extern u8 gHappinessMoveAnim;
-extern u16 gWeatherMoveAnim;
-extern u32 *gDisableStructMoveAnim;
-extern u32 gPID_perBank[];
-extern u8 gBattleMonForms[];
-extern u16 gUnknown_02024DE8;
-extern u8 gUnknown_02024E68[];
-extern struct SpriteTemplate gUnknown_02024E8C;
-extern u8 gUnknown_0202F7C4;
-extern u8 gUnknown_02038470[];
-extern u16 gUnknown_030041B0;
-extern u16 gUnknown_030041B4;
-extern u16 gUnknown_030041B8;
-extern u16 gUnknown_03004280;
-extern u16 gUnknown_03004288;
-extern u16 gUnknown_030042A4;
-extern u16 gUnknown_030042C0;
-extern u8 gUnknown_03004344;
-extern u8 gUnknown_0300434C[];
-
-extern const u8 gUnknown_08400CA8[];
-extern const u8 gUnknown_08400CF3[];
-extern const u8 gUnknown_08400D38[];
-
-#if ENGLISH
-#define SUB_803037C_TILE_DATA_OFFSET 440
-#elif GERMAN
-#define SUB_803037C_TILE_DATA_OFFSET 444
-#endif
-
-extern void sub_802C68C(void);
-extern void sub_802E1B0(void);
-extern void sub_802E3B4();
-extern void sub_802E220();
-extern void sub_802E2D4();
-extern void sub_802E004(void);
-extern void sub_802DF30(void);
-extern void sub_80325B8(void);
-extern void PlayerBufferExecCompleted(void);
-extern void bx_t1_healthbar_update(void);
-extern void nullsub_91(void);
-extern void sub_802D924(u8);
-extern void sub_802E434(void);
-extern bool8 mplay_80342A4(u8);
-extern void move_anim_start_t2_for_situation();
-extern void bx_blink_t1(void);
-extern void sub_8047858();
-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 sub_80318FC();
-extern bool8 IsDoubleBattle(void);
-extern void sub_802D500(void);
-extern void dp11b_obj_free();
-extern bool8 sub_8078874(u8);
-extern bool8 move_anim_start_t3();
-extern void sub_802E460(void);
-extern void b_link_standby_message(void);
-extern void sub_802D18C(void);
-extern void sub_802DF18(void);
-extern void BufferStringBattle();
-extern void sub_80326EC();
-extern void ExecuteMoveAnim();
-extern void sub_8031F24(void);
-extern void sub_80324BC();
-extern u8 sub_8031720();
-extern void bx_wait_t1(void);
-extern u8 GetBankByPlayerAI(u8);
-extern void sub_802DE10(void);
-extern void sub_80105EC(struct Sprite *);
-extern void sub_802D274(void);
-extern void sub_802D23C(void);
-extern u8 GetBankIdentity(u8);
-extern void sub_8031AF4();
-extern void sub_80313A0(struct Sprite *);
-extern void sub_802D204(void);
-extern u8 sub_8079E90();
-extern void sub_802DEAC(void);
-extern void sub_80312F0(struct Sprite *);
-extern u8 sub_8077ABC();
-extern u8 sub_8077F68();
-extern u8 sub_8046400();
-extern void sub_802D798(void);
-extern void bx_0802E404(void);
-
-u32 dp01_getattr_by_ch1_for_player_pokemon_(u8, u8 *);
-void dp01_setattr_by_ch1_for_player_pokemon(u8);
-void sub_802F934(u8, u8);
-void sub_802FB2C(void);
-void sub_8030190(void);
-void sub_80304A8(void);
-void sub_8030E38(struct Sprite *);
-void task05_08033660(u8);
-void sub_8031064(void);
-
-void PlayerHandleGetAttributes(void)
-{
- u8 unkData[0x100];
- u32 offset = 0;
- u8 r4;
- s32 i;
-
- if (gBattleBufferA[gActiveBank][2] == 0)
- {
- offset += dp01_getattr_by_ch1_for_player_pokemon_(gBattlePartyID[gActiveBank], unkData);
- }
- else
- {
- r4 = gBattleBufferA[gActiveBank][2];
- for (i = 0; i < 6; i++)
- {
- if (r4 & 1)
- offset += dp01_getattr_by_ch1_for_player_pokemon_(i, unkData + offset);
- r4 >>= 1;
- }
- }
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, offset, unkData);
- PlayerBufferExecCompleted();
-}
-
-// Duplicate of dp01_getattr_by_ch1_for_player_pokemon
-u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer)
-{
- struct BattlePokemon battlePokemon;
- struct UnknownStruct3 moveData;
- u8 nickname[20];
- u8 *src;
- s16 data16;
- u32 data32;
- s32 size = 0;
-
- switch (gBattleBufferA[gActiveBank][1])
- {
- case 0:
- battlePokemon.species = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
- battlePokemon.item = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
- for (size = 0; size < 4; size++)
- {
- battlePokemon.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
- battlePokemon.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
- }
- battlePokemon.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
- battlePokemon.friendship = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
- battlePokemon.experience = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
- battlePokemon.hpIV = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
- battlePokemon.attackIV = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
- battlePokemon.defenseIV = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
- battlePokemon.speedIV = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
- battlePokemon.spAttackIV = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
- battlePokemon.spDefenseIV = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
- battlePokemon.personality = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
- battlePokemon.status1 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
- battlePokemon.level = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
- battlePokemon.hp = GetMonData(&gPlayerParty[a], MON_DATA_HP);
- battlePokemon.maxHP = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
- battlePokemon.attack = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
- battlePokemon.defense = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
- battlePokemon.speed = GetMonData(&gPlayerParty[a], MON_DATA_SPD);
- battlePokemon.spAttack = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
- battlePokemon.spDefense = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
- battlePokemon.isEgg = GetMonData(&gPlayerParty[a], MON_DATA_IS_EGG);
- battlePokemon.altAbility = GetMonData(&gPlayerParty[a], MON_DATA_ALT_ABILITY);
- battlePokemon.otId = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
- GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname);
- StringCopy10(battlePokemon.nickname, nickname);
- GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
- src = (u8 *)&battlePokemon;
- for (size = 0; size < sizeof(battlePokemon); size++)
- buffer[size] = src[size];
- break;
- case 1:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 2:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 3:
- for (size = 0; size < 4; size++)
- {
- moveData.moves[size] = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + size);
- moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
- }
- moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
- src = (u8 *)&moveData;
- for (size = 0; size < sizeof(moveData); size++)
- buffer[size] = src[size];
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 8:
- for (size = 0; size < 4; size++)
- buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
- buffer[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
- size++;
- break;
- case 9:
- case 10:
- case 11:
- case 12:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9);
- size = 1;
- break;
- case 17:
- data32 = GetMonData(&gPlayerParty[a], MON_DATA_OT_ID);
- buffer[0] = (data32 & 0x000000FF);
- buffer[1] = (data32 & 0x0000FF00) >> 8;
- buffer[2] = (data32 & 0x00FF0000) >> 16;
- size = 3;
- break;
- case 18:
- data32 = GetMonData(&gPlayerParty[a], MON_DATA_EXP);
- buffer[0] = (data32 & 0x000000FF);
- buffer[1] = (data32 & 0x0000FF00) >> 8;
- buffer[2] = (data32 & 0x00FF0000) >> 16;
- size = 3;
- break;
- case 19:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_EV);
- size = 1;
- break;
- case 20:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_EV);
- size = 1;
- break;
- case 21:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_EV);
- size = 1;
- break;
- case 22:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_EV);
- size = 1;
- break;
- case 23:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV);
- size = 1;
- break;
- case 24:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV);
- size = 1;
- break;
- case 25:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP);
- size = 1;
- break;
- case 26:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKERUS);
- size = 1;
- break;
- case 27:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION);
- size = 1;
- break;
- case 28:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL);
- size = 1;
- break;
- case 29:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_MET_GAME);
- size = 1;
- break;
- case 30:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_POKEBALL);
- size = 1;
- break;
- case 31:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
- buffer[1] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
- buffer[2] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
- buffer[3] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
- buffer[4] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
- buffer[5] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
- size = 6;
- break;
- case 32:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_HP_IV);
- size = 1;
- break;
- case 33:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_ATK_IV);
- size = 1;
- break;
- case 34:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_DEF_IV);
- size = 1;
- break;
- case 35:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPD_IV);
- size = 1;
- break;
- case 36:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV);
- size = 1;
- break;
- case 37:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV);
- size = 1;
- break;
- case 38:
- data32 = GetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY);
- buffer[0] = (data32 & 0x000000FF);
- buffer[1] = (data32 & 0x0000FF00) >> 8;
- buffer[2] = (data32 & 0x00FF0000) >> 16;
- buffer[3] = (data32 & 0xFF000000) >> 24;
- size = 4;
- break;
- case 39:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 40:
- data32 = GetMonData(&gPlayerParty[a], MON_DATA_STATUS);
- buffer[0] = (data32 & 0x000000FF);
- buffer[1] = (data32 & 0x0000FF00) >> 8;
- buffer[2] = (data32 & 0x00FF0000) >> 16;
- buffer[3] = (data32 & 0xFF000000) >> 24;
- size = 4;
- break;
- case 41:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_LEVEL);
- size = 1;
- break;
- case 42:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_HP);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 43:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_MAX_HP);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 44:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_ATK);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 45:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_DEF);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 46:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPD);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 47:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPATK);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 48:
- data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPDEF);
- buffer[0] = data16;
- buffer[1] = data16 >> 8;
- size = 2;
- break;
- case 49:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL);
- size = 1;
- break;
- case 50:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY);
- size = 1;
- break;
- case 51:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE);
- size = 1;
- break;
- case 52:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART);
- size = 1;
- break;
- case 53:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH);
- size = 1;
- break;
- case 54:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SHEEN);
- size = 1;
- break;
- case 55:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON);
- size = 1;
- break;
- case 56:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON);
- size = 1;
- break;
- case 57:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON);
- size = 1;
- break;
- case 58:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON);
- size = 1;
- break;
- case 59:
- buffer[0] = GetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON);
- size = 1;
- break;
- }
- return size;
-}
-
-void sub_802ECF0(void)
-{
- struct BattlePokemon battleMon; // I think this is a BattlePokemon
- u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBank][1];
- u8 i;
-
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = src[i];
- dp01_build_cmdbuf_x1D_1D_numargs_varargs(1, gBattleBufferA[gActiveBank][2], dst);
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleSetAttributes(void)
-{
- u8 r4;
- u8 i;
-
- if (gBattleBufferA[gActiveBank][2] == 0)
- {
- dp01_setattr_by_ch1_for_player_pokemon(gBattlePartyID[gActiveBank]);
- }
- else
- {
- r4 = gBattleBufferA[gActiveBank][2];
- for (i = 0; i < 6; i++)
- {
- if (r4 & 1)
- dp01_setattr_by_ch1_for_player_pokemon(i);
- r4 >>= 1;
- }
- }
- PlayerBufferExecCompleted();
-}
-
-// Duplicate of sub_811EC68
-void dp01_setattr_by_ch1_for_player_pokemon(u8 a)
-{
- struct BattlePokemon *battlePokemon = (struct BattlePokemon *)&gBattleBufferA[gActiveBank][3];
- struct UnknownStruct3 *moveData = (struct UnknownStruct3 *)&gBattleBufferA[gActiveBank][3];
- s32 i;
-
- switch (gBattleBufferA[gActiveBank][1])
- {
- case 0:
- {
- u8 iv;
-
- SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, (u8 *)&battlePokemon->species);
- SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, (u8 *)&battlePokemon->item);
- for (i = 0; i < 4; i++)
- {
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&battlePokemon->moves[i]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&battlePokemon->pp[i]);
- }
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, (u8 *)&battlePokemon->ppBonuses);
- SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, (u8 *)&battlePokemon->friendship);
- SetMonData(&gPlayerParty[a], MON_DATA_EXP, (u8 *)&battlePokemon->experience);
- iv = battlePokemon->hpIV;
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, (u8 *)&iv);
- iv = battlePokemon->attackIV;
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, (u8 *)&iv);
- iv = battlePokemon->defenseIV;
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, (u8 *)&iv);
- iv = battlePokemon->speedIV;
- SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, (u8 *)&iv);
- iv = battlePokemon->spAttackIV;
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, (u8 *)&iv);
- iv = battlePokemon->spDefenseIV;
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, (u8 *)&iv);
- SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, (u8 *)&battlePokemon->personality);
- SetMonData(&gPlayerParty[a], MON_DATA_STATUS, (u8 *)&battlePokemon->status1);
- SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, (u8 *)&battlePokemon->level);
- SetMonData(&gPlayerParty[a], MON_DATA_HP, (u8 *)&battlePokemon->hp);
- SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, (u8 *)&battlePokemon->maxHP);
- SetMonData(&gPlayerParty[a], MON_DATA_ATK, (u8 *)&battlePokemon->attack);
- SetMonData(&gPlayerParty[a], MON_DATA_DEF, (u8 *)&battlePokemon->defense);
- SetMonData(&gPlayerParty[a], MON_DATA_SPD, (u8 *)&battlePokemon->speed);
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK, (u8 *)&battlePokemon->spAttack);
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, (u8 *)&battlePokemon->spDefense);
- }
- break;
- case 1:
- SetMonData(&gPlayerParty[a], MON_DATA_SPECIES, &gBattleBufferA[gActiveBank][3]);
- break;
- case 2:
- SetMonData(&gPlayerParty[a], MON_DATA_HELD_ITEM, &gBattleBufferA[gActiveBank][3]);
- break;
- case 3:
- for (i = 0; i < 4; i++)
- {
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + i, (u8 *)&moveData->moves[i]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + i, (u8 *)&moveData->pp[i]);
- }
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &moveData->ppBonuses);
- break;
- case 4:
- case 5:
- case 6:
- case 7:
- SetMonData(&gPlayerParty[a], MON_DATA_MOVE1 + gBattleBufferA[gActiveBank][1] - 4, &gBattleBufferA[gActiveBank][3]);
- break;
- case 8:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP2, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP3, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP4, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES, &gBattleBufferA[gActiveBank][7]);
- break;
- case 9:
- case 10:
- case 11:
- case 12:
- SetMonData(&gPlayerParty[a], MON_DATA_PP1 + gBattleBufferA[gActiveBank][1] - 9, &gBattleBufferA[gActiveBank][3]);
- break;
- case 17:
- SetMonData(&gPlayerParty[a], MON_DATA_OT_ID, &gBattleBufferA[gActiveBank][3]);
- break;
- case 18:
- SetMonData(&gPlayerParty[a], MON_DATA_EXP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 19:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 20:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 21:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 22:
- SetMonData(&gPlayerParty[a], MON_DATA_SPD_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 23:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 24:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_EV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 25:
- SetMonData(&gPlayerParty[a], MON_DATA_FRIENDSHIP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 26:
- SetMonData(&gPlayerParty[a], MON_DATA_POKERUS, &gBattleBufferA[gActiveBank][3]);
- break;
- case 27:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LOCATION, &gBattleBufferA[gActiveBank][3]);
- break;
- case 28:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_LEVEL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 29:
- SetMonData(&gPlayerParty[a], MON_DATA_MET_GAME, &gBattleBufferA[gActiveBank][3]);
- break;
- case 30:
- SetMonData(&gPlayerParty[a], MON_DATA_POKEBALL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 31:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][4]);
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][5]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][6]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][7]);
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][8]);
- break;
- case 32:
- SetMonData(&gPlayerParty[a], MON_DATA_HP_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 33:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 34:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 35:
- SetMonData(&gPlayerParty[a], MON_DATA_SPD_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 36:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 37:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF_IV, &gBattleBufferA[gActiveBank][3]);
- break;
- case 38:
- SetMonData(&gPlayerParty[a], MON_DATA_PERSONALITY, &gBattleBufferA[gActiveBank][3]);
- break;
- case 39:
- SetMonData(&gPlayerParty[a], MON_DATA_CHECKSUM, &gBattleBufferA[gActiveBank][3]);
- break;
- case 40:
- SetMonData(&gPlayerParty[a], MON_DATA_STATUS, &gBattleBufferA[gActiveBank][3]);
- break;
- case 41:
- SetMonData(&gPlayerParty[a], MON_DATA_LEVEL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 42:
- SetMonData(&gPlayerParty[a], MON_DATA_HP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 43:
- SetMonData(&gPlayerParty[a], MON_DATA_MAX_HP, &gBattleBufferA[gActiveBank][3]);
- break;
- case 44:
- SetMonData(&gPlayerParty[a], MON_DATA_ATK, &gBattleBufferA[gActiveBank][3]);
- break;
- case 45:
- SetMonData(&gPlayerParty[a], MON_DATA_DEF, &gBattleBufferA[gActiveBank][3]);
- break;
- case 46:
- SetMonData(&gPlayerParty[a], MON_DATA_SPD, &gBattleBufferA[gActiveBank][3]);
- break;
- case 47:
- SetMonData(&gPlayerParty[a], MON_DATA_SPATK, &gBattleBufferA[gActiveBank][3]);
- break;
- case 48:
- SetMonData(&gPlayerParty[a], MON_DATA_SPDEF, &gBattleBufferA[gActiveBank][3]);
- break;
- case 49:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL, &gBattleBufferA[gActiveBank][3]);
- break;
- case 50:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY, &gBattleBufferA[gActiveBank][3]);
- break;
- case 51:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE, &gBattleBufferA[gActiveBank][3]);
- break;
- case 52:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART, &gBattleBufferA[gActiveBank][3]);
- break;
- case 53:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH, &gBattleBufferA[gActiveBank][3]);
- break;
- case 54:
- SetMonData(&gPlayerParty[a], MON_DATA_SHEEN, &gBattleBufferA[gActiveBank][3]);
- break;
- case 55:
- SetMonData(&gPlayerParty[a], MON_DATA_COOL_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 56:
- SetMonData(&gPlayerParty[a], MON_DATA_BEAUTY_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 57:
- SetMonData(&gPlayerParty[a], MON_DATA_CUTE_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 58:
- SetMonData(&gPlayerParty[a], MON_DATA_SMART_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- case 59:
- SetMonData(&gPlayerParty[a], MON_DATA_TOUGH_RIBBON, &gBattleBufferA[gActiveBank][3]);
- break;
- }
- sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
-}
-
-void sub_802F7CC(void)
-{
- u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- u8 i;
-
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleLoadPokeSprite(void)
-{
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gBattleBankFunc[gActiveBank] = bx_0802E404;
-}
-
-void PlayerHandleSendOutPoke(void)
-{
- sub_8032AA8(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattlePartyID[gActiveBank] = gBattleBufferA[gActiveBank][1];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- gActionSelectionCursor[gActiveBank] = 0;
- gMoveSelectionCursor[gActiveBank] = 0;
- sub_802F934(gActiveBank, gBattleBufferA[gActiveBank][2]);
- gBattleBankFunc[gActiveBank] = sub_802D798;
-}
-
-void sub_802F934(u8 bank, u8 b)
-{
- u16 species;
-
- sub_8032AA8(bank, b);
- gBattlePartyID[bank] = gBattleBufferA[bank][1];
- species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], MON_DATA_SPECIES);
- gUnknown_0300434C[bank] = CreateInvisibleSpriteWithCallback(sub_80312F0);
- GetMonSpriteTemplate_803C56C(species, GetBankIdentity(bank));
- gObjectBankIDs[bank] = CreateSprite(
- &gUnknown_02024E8C,
- sub_8077ABC(bank, 2),
- sub_8077F68(bank),
- sub_8079E90(bank));
- gSprites[gUnknown_0300434C[bank]].data1 = gObjectBankIDs[bank];
- gSprites[gObjectBankIDs[bank]].data0 = bank;
- gSprites[gObjectBankIDs[bank]].data2 = species;
- gSprites[gObjectBankIDs[bank]].oam.paletteNum = bank;
- StartSpriteAnim(&gSprites[gObjectBankIDs[bank]], gBattleMonForms[bank]);
- gSprites[gObjectBankIDs[bank]].invisible = TRUE;
- gSprites[gObjectBankIDs[bank]].callback = SpriteCallbackDummy;
- gSprites[gUnknown_0300434C[bank]].data0 = sub_8046400(0, 0xFF);
-}
-
-void PlayerHandleReturnPokeToBall(void)
-{
- if (gBattleBufferA[gActiveBank][1] == 0)
- {
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_802FB2C;
- }
- else
- {
- FreeSpriteOamMatrix(&gSprites[gObjectBankIDs[gActiveBank]]);
- DestroySprite(&gSprites[gObjectBankIDs[gActiveBank]]);
- sub_8043DB0(gHealthboxIDs[gActiveBank]);
- PlayerBufferExecCompleted();
- }
-}
-
-void sub_802FB2C(void)
-{
- switch (ewram17810[gActiveBank].unk4)
- {
- case 0:
- if (ewram17800[gActiveBank].unk0_2)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4 = 1;
- break;
- case 1:
- if (!ewram17810[gActiveBank].unk0_6)
- {
- ewram17810[gActiveBank].unk4 = 0;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 1);
- gBattleBankFunc[gActiveBank] = sub_802DEAC;
- }
- }
-}
-
-void PlayerHandleTrainerThrow(void)
-{
- s16 r7;
-
- if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
- {
- if (GetBankIdentity(gActiveBank) & 2)
- r7 = 16;
- else
- r7 = -16;
- }
- else
- {
- r7 = 0;
- }
- sub_8031AF4(gSaveBlock2.playerGender, gActiveBank);
- GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
- &gUnknown_02024E8C,
- r7 + 80,
- (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
- sub_8079E90(gActiveBank));
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = 240;
- gSprites[gObjectBankIDs[gActiveBank]].data0 = -2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_802D204;
-}
-
-void PlayerHandleTrainerSlide(void)
-{
- sub_8031AF4(gSaveBlock2.playerGender, gActiveBank);
- GetMonSpriteTemplate_803C5A0(gSaveBlock2.playerGender, GetBankIdentity(gActiveBank));
- gObjectBankIDs[gActiveBank] = CreateSprite(
- &gUnknown_02024E8C,
- 80,
- (8 - gTrainerBackPicCoords[gSaveBlock2.playerGender].coords) * 4 + 80,
- 30);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = gActiveBank;
- gSprites[gObjectBankIDs[gActiveBank]].pos2.x = -96;
- gSprites[gObjectBankIDs[gActiveBank]].data0 = 2;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80313A0;
- gBattleBankFunc[gActiveBank] = sub_802D23C;
-}
-
-void PlayerHandleTrainerSlideBack(void)
-{
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data0 = 50;
- 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);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
- gBattleBankFunc[gActiveBank] = sub_802D274;
-}
-
-void sub_802FE7C(void)
-{
- if (ewram17810[gActiveBank].unk4 == 0)
- {
- if (ewram17800[gActiveBank].unk0_2)
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- ewram17810[gActiveBank].unk4++;
- }
- else
- {
- if (ewram17810[gActiveBank].unk0_6 == 0)
- {
- ewram17810[gActiveBank].unk4 = 0;
- sub_80324F8(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- PlaySE12WithPanning(SE_POKE_DEAD, -64);
- gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
- gSprites[gObjectBankIDs[gActiveBank]].data2 = 5;
- gSprites[gObjectBankIDs[gActiveBank]].callback = sub_80105EC;
- gBattleBankFunc[gActiveBank] = sub_802DE10;
- }
- }
-}
-
-void sub_802FF60(void)
-{
- BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
- PlayerBufferExecCompleted();
-}
-
-void sub_802FF80(void)
-{
- ewram17840.unk8 = 4;
- gDoingBattleAnim = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3);
- gBattleBankFunc[gActiveBank] = bx_wait_t1;
-}
-
-void PlayerHandleBallThrow(void)
-{
- u8 var = gBattleBufferA[gActiveBank][1];
-
- ewram17840.unk8 = var;
- gDoingBattleAnim = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, GetBankByPlayerAI(1), 3);
- gBattleBankFunc[gActiveBank] = bx_wait_t1;
-}
-
-void PlayerHandlePuase(void)
-{
- u8 var = gBattleBufferA[gActiveBank][1];
-
- // WTF is this??
- while (var != 0)
- var--;
-
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleMoveAnimation(void)
-{
- if (!mplay_80342A4(gActiveBank))
- {
- u16 r0 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
-
- gUnknown_0202F7C4 = gBattleBufferA[gActiveBank][3];
- gMovePowerMoveAnim = gBattleBufferA[gActiveBank][4] | (gBattleBufferA[gActiveBank][5] << 8);
- gMoveDmgMoveAnim = gBattleBufferA[gActiveBank][6] | (gBattleBufferA[gActiveBank][7] << 8) | (gBattleBufferA[gActiveBank][8] << 16) | (gBattleBufferA[gActiveBank][9] << 24);
- gHappinessMoveAnim = gBattleBufferA[gActiveBank][10];
- gWeatherMoveAnim = gBattleBufferA[gActiveBank][12] | (gBattleBufferA[gActiveBank][13] << 8);
- gDisableStructMoveAnim = (u32 *)&gBattleBufferA[gActiveBank][16];
- gPID_perBank[gActiveBank] = *gDisableStructMoveAnim;
- if (sub_8031720(r0, gUnknown_0202F7C4) != 0)
- {
- // Dead code. sub_8031720 always returns 0.
- PlayerBufferExecCompleted();
- }
- else
- {
- ewram17810[gActiveBank].unk4 = 0;
- gBattleBankFunc[gActiveBank] = sub_8030190;
- }
- }
-}
-
-void sub_8030190(void)
-{
- u16 r4 = gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8);
- u8 r7 = gBattleBufferA[gActiveBank][11];
-
- switch (ewram17810[gActiveBank].unk4)
- {
- case 0:
- if (ewram17800[gActiveBank].unk0_2 == 1 && ewram17800[gActiveBank].unk0_3 == 0)
- {
- ewram17800[gActiveBank].unk0_3 = 1;
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 5);
- }
- ewram17810[gActiveBank].unk4 = 1;
- break;
- case 1:
- if (ewram17810[gActiveBank].unk0_6 == 0)
- {
- sub_80326EC(0);
- ExecuteMoveAnim(r4);
- ewram17810[gActiveBank].unk4 = 2;
- }
- break;
- case 2:
- gAnimScriptCallback();
- if (!gAnimScriptActive)
- {
- sub_80326EC(1);
- if (ewram17800[gActiveBank].unk0_2 == 1 && r7 < 2)
- {
- move_anim_start_t4(gActiveBank, gActiveBank, gActiveBank, 6);
- ewram17800[gActiveBank].unk0_3 = 0;
- }
- ewram17810[gActiveBank].unk4 = 3;
- }
- break;
- case 3:
- if (ewram17810[gActiveBank].unk0_6 == 0)
- {
- sub_8031F24();
- sub_80324BC(gActiveBank, gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- ewram17810[gActiveBank].unk4 = 0;
- PlayerBufferExecCompleted();
- }
- break;
- }
-}
-
-void PlayerHandlePrintString(void)
-{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 0;
- BufferStringBattle(*(u16 *)&gBattleBufferA[gActiveBank][2]);
- sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 0x90, 2, 15);
- gBattleBankFunc[gActiveBank] = sub_802DF18;
-}
-
-void PlayerHandlePrintStringPlayerOnly(void)
-{
- if (GetBankSide(gActiveBank) == 0)
- PlayerHandlePrintString();
- else
- PlayerBufferExecCompleted();
-}
-
-void sub_803037C(void)
-{
- int r4;
-
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 160;
- FillWindowRect(&gUnknown_03004210, 10, 2, 15, 27, 18);
- FillWindowRect(&gUnknown_03004210, 10, 2, 35, 16, 38);
-
- gBattleBankFunc[gActiveBank] = sub_802C098;
-
- InitWindow(&gUnknown_03004210, gUnknown_08400CF3, 400, 18, 35);
- sub_8002F44(&gUnknown_03004210);
- sub_814A5C0(0, 0xFFFF, 12, 11679, 0);
-
- for (r4 = 0; r4 < 4; r4++)
- nullsub_8(r4);
-
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
-
- StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CA8);
- InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_803037C_TILE_DATA_OFFSET, 2, 35);
- sub_8002F44(&gUnknown_03004210);
-}
-
-void nullsub_42()
-{
-}
-
-void sub_8030468(void)
-{
- sub_814A5C0(0, 0xFFFF, 12, 0x2D9F, 0);
- sub_80304A8();
- gBattleBankFunc[gActiveBank] = sub_802C68C;
-}
-
-void sub_80304A8(void)
-{
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 320;
- sub_802E1B0();
- gUnknown_03004344 = 0xFF;
- sub_802E3B4(gMoveSelectionCursor[gActiveBank], 0);
- if (gBattleBufferA[gActiveBank][2] != 1)
- {
- InitWindow(&gUnknown_03004210, gUnknown_08400D38, 656, 23, 55);
- sub_8002F44(&gUnknown_03004210);
- }
- sub_802E220();
- sub_802E2D4();
-}
-
-void PlayerHandleOpenBag(void)
-{
- s32 i;
-
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gBattleBankFunc[gActiveBank] = sub_802E004;
- gBankInMenu = gActiveBank;
- for (i = 0; i < 3; i++)
- gUnknown_02038470[i] = gBattleBufferA[gActiveBank][1 + i];
-}
-
-void sub_8030594(void)
-{
- s32 i;
-
- gUnknown_0300434C[gActiveBank] = CreateTask(TaskDummy, 0xFF);
- gTasks[gUnknown_0300434C[gActiveBank]].data[0] = gBattleBufferA[gActiveBank][1] & 0xF;
- ewram[0x16054] = gBattleBufferA[gActiveBank][1] >> 4;
- ewram[0x1609D] = gBattleBufferA[gActiveBank][2];
- ewram[0x160C0] = gBattleBufferA[gActiveBank][3];
- for (i = 0; i < 3; i++)
- gUnknown_02038470[i] = gBattleBufferA[gActiveBank][4 + i];
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gBattleBankFunc[gActiveBank] = sub_802DF30;
- gBankInMenu = gActiveBank;
-}
-
-void sub_8030674(void)
-{
- sub_80325B8();
- BeginNormalPaletteFade(0xFFFFFFFF, 2, 0, 16, 0);
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleHealthBarUpdate(void)
-{
- s16 r7;
-
- load_gfxc_health_bar(0);
- r7 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
- if (r7 != 0x7FFF)
- {
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
- u32 curHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_HP);
-
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, curHP, r7);
- }
- else
- {
- u32 maxHP = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_MAX_HP);
-
- sub_8043D84(gActiveBank, gHealthboxIDs[gActiveBank], maxHP, 0, r7);
- sub_80440EC(gHealthboxIDs[gActiveBank], 0, 0);
- }
- gBattleBankFunc[gActiveBank] = bx_t1_healthbar_update;
-}
-
-void PlayerHandleExpBarUpdate(void)
-{
- u8 r7 = gBattleBufferA[gActiveBank][1];
-
- if (GetMonData(&gPlayerParty[r7], MON_DATA_LEVEL) >= 100)
- {
- PlayerBufferExecCompleted();
- }
- else
- {
- u16 r4;
- u8 taskId;
-
- load_gfxc_health_bar(1);
- GetMonData(&gPlayerParty[r7], MON_DATA_SPECIES); // unused return value
- r4 = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
- taskId = CreateTask(sub_802D924, 10);
- gTasks[taskId].data[0] = r7;
- gTasks[taskId].data[1] = r4;
- gTasks[taskId].data[2] = gActiveBank;
- gBattleBankFunc[gActiveBank] = nullsub_91;
- }
-}
-
-void PlayerHandleStatusIconUpdate(void)
-{
- if (!mplay_80342A4(gActiveBank))
- {
- sub_8045A5C(gHealthboxIDs[gActiveBank], &gPlayerParty[gBattlePartyID[gActiveBank]], 9);
- ewram17810[gActiveBank].unk0_4 = 0;
- gBattleBankFunc[gActiveBank] = sub_802E434;
- }
-}
-
-void PlayerHandleStatusAnimation(void)
-{
- if (!mplay_80342A4(gActiveBank))
- {
- move_anim_start_t2_for_situation(
- gBattleBufferA[gActiveBank][1],
- gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8) | (gBattleBufferA[gActiveBank][4] << 16) | (gBattleBufferA[gActiveBank][5] << 24));
- gBattleBankFunc[gActiveBank] = sub_802E434;
- }
-}
-
-void PlayerHandleStatusXor(void)
-{
- u8 val = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS) ^ gBattleBufferA[gActiveBank][1];
-
- SetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_STATUS, &val);
- PlayerBufferExecCompleted();
-}
-
-void sub_803097C(void)
-{
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleDMATransfer(void)
-{
- u32 val1 = gBattleBufferA[gActiveBank][1]
- | (gBattleBufferA[gActiveBank][2] << 8)
- | (gBattleBufferA[gActiveBank][3] << 16)
- | (gBattleBufferA[gActiveBank][4] << 24);
- u16 val2 = gBattleBufferA[gActiveBank][5] | (gBattleBufferA[gActiveBank][6] << 8);
-
- const u8 *src = &gBattleBufferA[gActiveBank][7];
- u8 *dst = (u8 *)val1;
- u32 size = val2;
-
- while (1)
- {
- if (size <= 0x1000)
- {
- DmaCopy16(3, src, dst, size);
- break;
- }
- DmaCopy16(3, src, dst, 0x1000);
- src += 0x1000;
- dst += 0x1000;
- size -= 0x1000;
- }
- PlayerBufferExecCompleted();
-}
-
-void sub_8030A3C(void)
-{
- PlayBGM(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- PlayerBufferExecCompleted();
-}
-
-void sub_8030A6C(void)
-{
- PlayerBufferExecCompleted();
-}
-
-void sub_8030A78(void)
-{
- dp01_build_cmdbuf_x21_a_bb(1, 0, 0);
- PlayerBufferExecCompleted();
-}
-
-void sub_8030A8C(void)
-{
- dp01_build_cmdbuf_x22_a_three_bytes(1, 0, 0);
- PlayerBufferExecCompleted();
-}
-
-void sub_8030AA0(void)
-{
- dp01_build_cmdbuf_x23_aa_0(1, 0);
- PlayerBufferExecCompleted();
-}
-
-void sub_8030AB4(void)
-{
- dp01_build_cmdbuf_x24_aa_0(1, 0);
- PlayerBufferExecCompleted();
-}
-
-void sub_8030AC8(void)
-{
- gUnknown_020238C8.unk0_0 = 0;
- PlayerBufferExecCompleted();
-}
-
-void sub_8030AE4(void)
-{
- gUnknown_020238C8.unk0_0 = gBattleBufferA[gActiveBank][1];
- PlayerBufferExecCompleted();
-}
-
-void sub_8030B1C(void)
-{
- gUnknown_020238C8.unk0_7 = 0;
- PlayerBufferExecCompleted();
-}
-
-void sub_8030B34(void)
-{
- gUnknown_020238C8.unk0_7 ^= 1;
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleHitAnimation(void)
-{
- if (gSprites[gObjectBankIDs[gActiveBank]].invisible == TRUE)
- {
- PlayerBufferExecCompleted();
- }
- else
- {
- gDoingBattleAnim = 1;
- gSprites[gObjectBankIDs[gActiveBank]].data1 = 0;
- sub_8047858(gActiveBank);
- gBattleBankFunc[gActiveBank] = bx_blink_t1;
- }
-}
-
-void sub_8030BCC(void)
-{
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleEffectivenessSound(void)
-{
- s8 pan;
-
- if (GetBankSide(gActiveBank) == 0)
- pan = -64;
- else
- pan = 63;
- PlaySE12WithPanning(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8), pan);
- PlayerBufferExecCompleted();
-}
-
-void sub_8030C1C(void)
-{
- PlayFanfare(gBattleBufferA[gActiveBank][1] | (gBattleBufferA[gActiveBank][2] << 8));
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleFaintingCry(void)
-{
- u16 species = GetMonData(&gPlayerParty[gBattlePartyID[gActiveBank]], MON_DATA_SPECIES);
-
- PlayCry3(species, -25, 5);
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleIntroSlide(void)
-{
- sub_80E43C0(gBattleBufferA[gActiveBank][1]);
- gUnknown_02024DE8 |= 1;
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleTrainerBallThrow(void)
-{
- u8 paletteNum;
- u8 taskId;
-
- oamt_add_pos2_onto_pos1(&gSprites[gObjectBankIDs[gActiveBank]]);
- gSprites[gObjectBankIDs[gActiveBank]].data0 = 50;
- gSprites[gObjectBankIDs[gActiveBank]].data2 = -40;
- 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);
- StartSpriteAnim(&gSprites[gObjectBankIDs[gActiveBank]], 1);
- paletteNum = AllocSpritePalette(0xD6F8);
- LoadCompressedPalette(gTrainerBackPicPaletteTable[gSaveBlock2.playerGender].data, 0x100 + paletteNum * 16, 32);
- gSprites[gObjectBankIDs[gActiveBank]].oam.paletteNum = paletteNum;
- taskId = CreateTask(task05_08033660, 5);
- gTasks[taskId].data[0] = gActiveBank;
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
- ewram17810[4].unk9 |= 1;
- gBattleBankFunc[gActiveBank] = nullsub_91;
-}
-
-void sub_8030E38(struct Sprite *sprite)
-{
- u8 r4 = sprite->data5;
-
- FreeSpriteOamMatrix(sprite);
- FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(sprite->oam.paletteNum));
- DestroySprite(sprite);
- sub_80318FC(&gPlayerParty[gBattlePartyID[r4]], r4);
- StartSpriteAnim(&gSprites[gObjectBankIDs[r4]], 0);
-}
-
-void task05_08033660(u8 taskId)
-{
- if (gTasks[taskId].data[1] < 31)
- {
- gTasks[taskId].data[1]++;
- }
- else
- {
- u8 savedActiveBank = gActiveBank;
-
- gActiveBank = gTasks[taskId].data[0];
- if (!IsDoubleBattle() || (gBattleTypeFlags & 0x40))
- {
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_802F934(gActiveBank, 0);
- }
- else
- {
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_802F934(gActiveBank, 0);
- gActiveBank ^= 2;
- gBattleBufferA[gActiveBank][1] = gBattlePartyID[gActiveBank];
- sub_80318FC(&gPlayerParty[gBattlePartyID[gActiveBank]], gActiveBank);
- sub_802F934(gActiveBank, 0);
- gActiveBank ^= 2;
- }
- gBattleBankFunc[gActiveBank] = sub_802D500;
- gActiveBank = savedActiveBank;
- DestroyTask(taskId);
- }
-}
-
-void sub_8030FAC(void)
-{
- if (gBattleBufferA[gActiveBank][1] != 0 && GetBankSide(gActiveBank) == 0)
- {
- PlayerBufferExecCompleted();
- }
- else
- {
- ewram17810[gActiveBank].unk0_0 = 1;
- gUnknown_02024E68[gActiveBank] = sub_8044804(gActiveBank, (struct BattleInterfaceStruct2 *)&gBattleBufferA[gActiveBank][4], gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][2]);
- ewram17810[gActiveBank].unk5 = 0;
- if (gBattleBufferA[gActiveBank][2] != 0)
- ewram17810[gActiveBank].unk5 = 0x5D;
- gBattleBankFunc[gActiveBank] = sub_8031064;
- }
-}
-
-void sub_8031064(void)
-{
- if (ewram17810[gActiveBank].unk5++ > 0x5C)
- {
- ewram17810[gActiveBank].unk5 = 0;
- PlayerBufferExecCompleted();
- }
-}
-
-void sub_80310A4(void)
-{
- if (ewram17810[gActiveBank].unk0_0)
- gTasks[gUnknown_02024E68[gActiveBank]].func = sub_8044CA0;
- PlayerBufferExecCompleted();
-}
-
-void sub_80310F0(void)
-{
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleSpriteInvisibility(void)
-{
- if (sub_8078874(gActiveBank))
- {
- gSprites[gObjectBankIDs[gActiveBank]].invisible = gBattleBufferA[gActiveBank][1];
- sub_8031F88(gActiveBank);
- }
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleBattleAnimation(void)
-{
- if (!mplay_80342A4(gActiveBank))
- {
- u8 val2 = gBattleBufferA[gActiveBank][1];
- u16 val = gBattleBufferA[gActiveBank][2] | (gBattleBufferA[gActiveBank][3] << 8);
-
- if (move_anim_start_t3(gActiveBank, gActiveBank, gActiveBank, val2, val))
- PlayerBufferExecCompleted();
- else
- gBattleBankFunc[gActiveBank] = sub_802E460;
- }
-}
-
-void PlayerHandleLinkStandbyMsg(void)
-{
- switch (gBattleBufferA[gActiveBank][1])
- {
- case 0:
- b_link_standby_message();
- // fall through
- case 1:
- dp11b_obj_free(gActiveBank, 1);
- dp11b_obj_free(gActiveBank, 0);
- break;
- case 2:
- b_link_standby_message();
- break;
- }
- PlayerBufferExecCompleted();
-}
-
-void PlayerHandleResetActionMoveSelection(void)
-{
- switch (gBattleBufferA[gActiveBank][1])
- {
- case 0:
- gActionSelectionCursor[gActiveBank] = 0;
- gMoveSelectionCursor[gActiveBank] = 0;
- break;
- case 1:
- gActionSelectionCursor[gActiveBank] = 0;
- break;
- case 2:
- gMoveSelectionCursor[gActiveBank] = 0;
- break;
- }
- PlayerBufferExecCompleted();
-}
-
-void sub_80312A0(void)
-{
- gBattleOutcome = gBattleBufferA[gActiveBank][1];
- FadeOutMapMusic(5);
- BeginFastPaletteFade(3);
- PlayerBufferExecCompleted();
- gBattleBankFunc[gActiveBank] = sub_802D18C;
-}
-
-void nullsub_43(void)
-{
-}
diff --git a/src/battle_anim_81258BC.c b/src/battle_anim_81258BC.c
deleted file mode 100644
index 5bdbb4946..000000000
--- a/src/battle_anim_81258BC.c
+++ /dev/null
@@ -1,50 +0,0 @@
-#include "global.h"
-#include "battle_anim_81258BC.h"
-#include "battle.h"
-#include "battle_message.h"
-#include "menu_cursor.h"
-#include "text.h"
-
-extern struct Window gUnknown_03004210;
-extern u8 gDisplayedStringBattle[];
-extern u8 gActionSelectionCursor[];
-
-extern const u8 gUnknown_08400CBB[];
-extern u8 gActiveBank;
-extern const u8 gUnknown_08400D15[];
-
-extern void *gBattleBankFunc[];
-extern u16 gUnknown_030042A0;
-extern u16 gUnknown_030042A4;
-
-#if ENGLISH
-#define SUB_812BB10_TILE_DATA_OFFSET 440
-#elif GERMAN
-#define SUB_812BB10_TILE_DATA_OFFSET 444
-#endif
-
-void sub_812BB10(void) {
- int i;
-
- gUnknown_030042A4 = 0;
- gUnknown_030042A0 = 160;
- gUnknown_03004210.paletteNum = 0;
- FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 15, 27, 18);
- FillWindowRect_DefaultPalette(&gUnknown_03004210, 10, 2, 35, 16, 36);
- gBattleBankFunc[gActiveBank] = bx_battle_menu_t6_2;
-
- InitWindow(&gUnknown_03004210, gUnknown_08400D15, 400, 18, 35);
- sub_8002F44(&gUnknown_03004210);
- sub_814A5C0(0, 0xFFFF, 12, 11679, 0);
-
- for (i = 0; i < 4; i++)
- {
- nullsub_8(i);
- }
-
- sub_802E3E4(gActionSelectionCursor[gActiveBank], 0);
- StrCpyDecodeToDisplayedStringBattle((u8 *) gUnknown_08400CBB);
-
- InitWindow(&gUnknown_03004210, gDisplayedStringBattle, SUB_812BB10_TILE_DATA_OFFSET, 2, 35);
- sub_8002F44(&gUnknown_03004210);
-} \ No newline at end of file
diff --git a/src/cable_club.c b/src/cable_club.c
deleted file mode 100644
index 20b087f4e..000000000
--- a/src/cable_club.c
+++ /dev/null
@@ -1,317 +0,0 @@
-#include "global.h"
-#include "cable_club.h"
-#include "field_message_box.h"
-#include "link.h"
-#include "main.h"
-#include "script.h"
-#include "songs.h"
-#include "sound.h"
-#include "string_util.h"
-#include "task.h"
-#include "text.h"
-#include "trainer_card.h"
-
-extern u16 gScriptResult;
-extern struct TrainerCard gTrainerCards[4];
-
-extern u8 gUnknown_03004860;
-extern u8 gFieldLinkPlayerCount;
-
-extern u8 gUnknown_081A4932[];
-extern const u8 gUnknown_081A4975[];
-
-static void sub_80830E4(u8 taskId);
-static void sub_8083288(u8 taskId);
-static void sub_8083314(u8 taskId);
-
-void sub_808303C(u8 taskId) {
- s32 linkPlayerCount;
- s16 *taskData;
-
- taskData = gTasks[taskId].data;
-
- linkPlayerCount = GetLinkPlayerCount_2();
-
- if (sub_8082E28(taskId) == 1 ||
- sub_8082EB8(taskId) == 1 ||
- sub_8082DF4(taskId) == 1)
- {
- return;
- }
-
- sub_8082D60(taskId, linkPlayerCount);
-
- if (!(gMain.newKeys & A_BUTTON))
- {
- return;
- }
-
-#if ENGLISH
- if (linkPlayerCount < taskData[1])
- {
- return;
- }
-
- sub_80081C8(linkPlayerCount);
- sub_8082D4C();
- ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); // r5
- ShowFieldAutoScrollMessage((u8 *) gUnknown_081A4975);
- gTasks[taskId].func = sub_80830E4;
-#elif GERMAN
- if ((gLinkType == 0x2255 && (u32) linkPlayerCount > 1) ||
- (gLinkType != 0x2255 && taskData[1] <= linkPlayerCount))
- {
- sub_80081C8(linkPlayerCount);
- sub_8082D4C();
- ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1); // r5
- ShowFieldAutoScrollMessage((u8 *) gUnknown_081A4975);
- gTasks[taskId].func = sub_80830E4;
- }
-#endif
-}
-
-#ifdef NONMATCHING
-static void sub_80830E4(u8 taskId) {
- if (sub_8082E28(taskId) == 1 ||
- sub_8082EB8(taskId) == 1 ||
- sub_8082DF4(taskId) == 1 ||
- GetFieldMessageBoxMode())
- {
- return;
- }
-
- if (sub_800820C() == GetLinkPlayerCount_2() &&
- !(gMain.heldKeys & B_BUTTON))
- {
- ShowFieldAutoScrollMessage(gUnknown_081A4932);
- gTasks[taskId].func = sub_8082FEC;
- return;
- }
-
- if (gMain.heldKeys & A_BUTTON)
- {
- PlaySE(SE_SELECT);
- sub_8007F4C();
- gTasks[(u32) taskId].func = sub_8083188;
- }
-}
-#else
-__attribute__((naked))
-static void sub_80830E4(u8 taskId) {
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- adds r6, r5, 0\n\
- adds r0, r5, 0\n\
- bl sub_8082E28\n\
- cmp r0, 0x1\n\
- beq _08083178\n\
- adds r0, r5, 0\n\
- bl sub_8082EB8\n\
- cmp r0, 0x1\n\
- beq _08083178\n\
- adds r0, r5, 0\n\
- bl sub_8082DF4\n\
- cmp r0, 0x1\n\
- beq _08083178\n\
- bl GetFieldMessageBoxMode\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _08083178\n\
- bl sub_800820C\n\
- adds r4, r0, 0\n\
- bl GetLinkPlayerCount_2\n\
- lsls r4, 24\n\
- lsls r0, 24\n\
- cmp r4, r0\n\
- bne _08083132\n\
- ldr r0, _08083148 @ =gMain\n\
- ldrh r1, [r0, 0x2C]\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08083158\n\
-_08083132:\n\
- ldr r0, _0808314C @ =gUnknown_081A4932\n\
- bl ShowFieldAutoScrollMessage\n\
- ldr r1, _08083150 @ =gTasks\n\
- lsls r0, r5, 2\n\
- adds r0, r5\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldr r1, _08083154 @ =sub_8082FEC\n\
- str r1, [r0]\n\
- b _08083178\n\
- .align 2, 0\n\
-_08083148: .4byte gMain\n\
-_0808314C: .4byte gUnknown_081A4932\n\
-_08083150: .4byte gTasks\n\
-_08083154: .4byte sub_8082FEC\n\
-_08083158:\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _08083178\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- bl sub_8007F4C\n\
- ldr r0, _08083180 @ =gTasks\n\
- lsls r1, r6, 2\n\
- adds r1, r6\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldr r0, _08083184 @ =sub_8083188\n\
- str r0, [r1]\n\
-_08083178:\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08083180: .4byte gTasks\n\
-_08083184: .4byte sub_8083188\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_8083188(u8 taskId) {
- u8 local1, local2;
- u16 *result;
-
- local1 = gTasks[taskId].data[1];
- local2 = gTasks[taskId].data[2];
-
-
- if (sub_8082DF4(taskId) == 1 ||
- sub_8083444(taskId) == 1)
- {
- return;
- }
-
- if (GetLinkPlayerCount_2() != sub_800820C())
- {
- gTasks[taskId].func = sub_8083418;
- return;
- }
-
- result = &gScriptResult;
- *result = sub_8082D9C(local1, local2);
- if (*result)
- {
- gTasks[taskId].func = sub_8083288;
- }
-}
-
-void sub_80831F8(u8 taskId) {
- u8 local1, local2;
- u16 *result;
-
- local1 = gTasks[taskId].data[1];
- local2 = gTasks[taskId].data[2];
-
- if (sub_8082E28(taskId) == 1 ||
- sub_8082DF4(taskId) == 1)
- {
- return;
- }
-
- result = &gScriptResult;
- *result = sub_8082D9C(local1, local2);
- if (*result == 0)
- {
- return;
- }
-
-
- if (*result == 3)
- {
- sub_800832C();
- HideFieldMessageBox();
- gTasks[taskId].func = sub_80833C4;
- }
- else
- {
- gFieldLinkPlayerCount = GetLinkPlayerCount_2();
- gUnknown_03004860 = GetMultiplayerId();
- sub_80081C8(gFieldLinkPlayerCount);
- sub_8093390((struct TrainerCard *) gBlockSendBuffer);
- gTasks[taskId].func = sub_8083314;
- }
-}
-
-static void sub_8083288(u8 taskId) {
- if (sub_8082DF4(taskId) == 1)
- {
- return;
- }
-
- if (gScriptResult == 3)
- {
- sub_800832C();
- HideFieldMessageBox();
- gTasks[taskId].func = sub_80833C4;
- }
- else
- {
- gFieldLinkPlayerCount = GetLinkPlayerCount_2();
- gUnknown_03004860 = GetMultiplayerId();
- sub_80081C8(gFieldLinkPlayerCount);
- sub_8093390((struct TrainerCard *) gBlockSendBuffer);
- gTasks[taskId].func = sub_8083314;
- sub_8007E9C(2);
- }
-}
-
-static void sub_8083314(u8 taskId) {
- u8 index;
-
- struct TrainerCard *trainerCards;
-
- if (sub_8082DF4(taskId) == 1)
- {
- return;
- }
-
- if (GetBlockReceivedStatus() != sub_8008198())
- {
- return;
- }
-
- index = 0;
- trainerCards = gTrainerCards;
- for (index = 0; index < GetLinkPlayerCount(); index++)
- {
- void *src;
- src = gBlockRecvBuffer[index];
- memcpy(&trainerCards[index], src, sizeof(struct TrainerCard));
- }
-
- SetSuppressLinkErrorMessage(FALSE);
- ResetBlockReceivedFlags();
- HideFieldMessageBox();
-
- if (gScriptResult == 1)
- {
-#if ENGLISH
- u16 linkType;
- linkType = gLinkType;
- // FIXME: sub_8082D4C doesn't take any arguments
- sub_8082D4C(0x00004411, linkType);
-#elif GERMAN
- if (gLinkType != 0x4411)
- {
- if (gLinkType == 0x6601)
- {
- deUnkValue2 = 1;
- }
- }
- sub_8082D4C();
-#endif
- EnableBothScriptContexts();
- DestroyTask(taskId);
- return;
- }
-
- sub_800832C();
- gTasks[taskId].func = sub_80833C4;
-}
diff --git a/src/calculate_base_damage.c b/src/calculate_base_damage.c
deleted file mode 100644
index 0f2605e5b..000000000
--- a/src/calculate_base_damage.c
+++ /dev/null
@@ -1,1474 +0,0 @@
-#include "global.h"
-#include "abilities.h"
-#include "battle.h"
-#include "berry.h"
-#include "data2.h"
-#include "event_data.h"
-#include "hold_effects.h"
-#include "item.h"
-#include "items.h"
-#include "main.h"
-#include "pokemon.h"
-#include "species.h"
-#include "sprite.h"
-#include "string_util.h"
-#include "strings2.h"
-#include "text.h"
-
-extern u8 gPlayerPartyCount;
-extern u8 gEnemyPartyCount;
-
-extern u16 unk_20160BC[];
-extern struct SecretBaseRecord gSecretBaseRecord;
-extern u32 dword_2017100[];
-extern u16 gBattleTypeFlags;
-extern struct BattlePokemon gBattleMons[4];
-extern u16 gCurrentMove;
-extern u8 gLastUsedAbility;
-extern u8 gCritMultiplier;
-extern u16 gBattleWeather;
-extern struct BattleEnigmaBerry gEnigmaBerries[];
-extern u16 gBattleMovePower;
-extern struct SpriteTemplate gUnknown_02024E8C;
-extern u16 gTrainerBattleOpponent;
-extern struct PokemonStorage gPokemonStorage;
-
-extern u8 gBadEggNickname[];
-extern struct SpriteTemplate gSpriteTemplate_8208288[];
-extern u8 gTrainerClassToPicIndex[];
-extern u8 gTrainerClassToNameIndex[];
-extern u8 gUnknown_08208238[];
-extern u8 gUnknown_0820823C[];
-extern u8 gStatStageRatios[];
-extern u8 gHoldEffectToType[][2];
-
-#define APPLY_STAT_MOD(var, mon, stat, statIndex) \
-{ \
- (var) = (stat) * (gStatStageRatios)[(mon)->statStages[(statIndex)] * 2]; \
- (var) /= (gStatStageRatios + 1)[(mon)->statStages[(statIndex)] * 2]; \
-}
-
-#ifdef NONMATCHING
-s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 a7, u8 a8)
-{
- s32 i;
- s32 damage = 0;
- u8 type;
- u16 attack, defense;
- u16 spAttack, spDefense;
- u8 defenderHoldEffect;
- u8 defenderHoldEffectParam;
- u8 attackerHoldEffect;
- u8 attackerHoldEffectParam;
- s32 a, b;
-
- if (!powerOverride)
- gBattleMovePower = gBattleMoves[move].power;
- else
- gBattleMovePower = powerOverride;
-
- if (!typeOverride)
- type = gBattleMoves[move].type;
- else
- type = typeOverride & 0x3F;
-
- attack = attacker->attack;
- defense = defender->defense;
- spAttack = attacker->spAttack;
- spDefense = defender->spDefense;
-
- if (attacker->item == ITEM_ENIGMA_BERRY)
- {
- attackerHoldEffect = gEnigmaBerries[a7].holdEffect;
- attackerHoldEffectParam = gEnigmaBerries[a7].holdEffectParam;
- }
- else
- {
- attackerHoldEffect = ItemId_GetHoldEffect(attacker->item);
- attackerHoldEffectParam = ItemId_GetHoldEffectParam(attacker->item);
- }
-
- if (defender->item == ITEM_ENIGMA_BERRY)
- {
- defenderHoldEffect = gEnigmaBerries[a8].holdEffect;
- defenderHoldEffectParam = gEnigmaBerries[a8].holdEffectParam;
- }
- else
- {
- defenderHoldEffect = ItemId_GetHoldEffect(defender->item);
- defenderHoldEffectParam = ItemId_GetHoldEffectParam(defender->item);
- }
-
- if (attacker->ability == ABILITY_HUGE_POWER || attacker->ability == ABILITY_PURE_POWER)
- attack *= 2;
-
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
- {
- if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- && gTrainerBattleOpponent != 1024
- && FlagGet(BADGE01_GET)
- && !GetBankSide(a7))
- attack = (110 * attack) / 100;
-
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
- {
- if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- && gTrainerBattleOpponent != 1024
- && FlagGet(BADGE05_GET)
- && !GetBankSide(a8))
- defense = (110 * defense) / 100;
-
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
- {
- if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- && gTrainerBattleOpponent != 1024
- && FlagGet(BADGE07_GET)
- && !GetBankSide(a7))
- spAttack = (110 * spAttack) / 100;
-
- if (!(gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_EREADER_TRAINER)))
- {
- if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
- && gTrainerBattleOpponent != 1024
- && FlagGet(BADGE07_GET)
- && !GetBankSide(a8))
- spDefense = (110 * spDefense) / 100;
- }
- }
- }
- }
-
- for (i = 0; i < 17; i++)
- {
- if (attackerHoldEffect == gHoldEffectToType[i][0]
- && type == gHoldEffectToType[i][1])
- {
- if (type <= 8)
- attack = (attack * (attackerHoldEffectParam + 100)) / 100;
- else
- spAttack = (spAttack * (attackerHoldEffectParam + 100)) / 100;
- break;
- }
- }
-
- if (attackerHoldEffect == HOLD_EFFECT_CHOICE_BAND)
- attack = (150 * attack) / 100;
- if (attackerHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (attacker->species == SPECIES_LATIAS || attacker->species == SPECIES_LATIOS))
- spAttack = (150 * spAttack) / 100;
- if (defenderHoldEffect == HOLD_EFFECT_SOUL_DEW && !(gBattleTypeFlags & BATTLE_TYPE_BATTLE_TOWER) && (defender->species == SPECIES_LATIAS || defender->species == SPECIES_LATIOS))
- spDefense = (150 * spDefense) / 100;
- if (attackerHoldEffect == HOLD_EFFECT_DEEP_SEA_TOOTH && attacker->species == SPECIES_CLAMPERL)
- spAttack *= 2;
- if (defenderHoldEffect == HOLD_EFFECT_DEEP_SEA_SCALE && defender->species == SPECIES_CLAMPERL)
- spDefense *= 2;
- if (attackerHoldEffect == HOLD_EFFECT_LIGHT_BALL && attacker->species == SPECIES_PIKACHU)
- spAttack *= 2;
- if (defenderHoldEffect == HOLD_EFFECT_METAL_POWDER && defender->species == SPECIES_DITTO)
- defense *= 2;
- if (attackerHoldEffect == HOLD_EFFECT_THICK_CLUB && (attacker->species == SPECIES_CUBONE || attacker->species == SPECIES_MAROWAK))
- attack *= 2;
- if (defender->ability == ABILITY_THICK_FAT && (type == TYPE_FIRE || type == TYPE_ICE))
- spAttack /= 2;
- if (attacker->ability == ABILITY_HUSTLE)
- attack = (150 * attack) / 100;
- if (attacker->ability == ABILITY_PLUS && AbilityBattleEffects(0xE, 0, ABILITY_MINUS, 0, 0))
- spAttack = (150 * spAttack) / 100;
- if (attacker->ability == ABILITY_MINUS && AbilityBattleEffects(0xE, 0, ABILITY_PLUS, 0, 0))
- spAttack = (150 * spAttack) / 100;
- if (attacker->ability == ABILITY_GUTS && attacker->status1)
- attack = (150 * attack) / 100;
- if (defender->ability == ABILITY_MARVEL_SCALE && defender->status1)
- defense = (150 * defense) / 100;
- if (type == TYPE_ELECTRIC && AbilityBattleEffects(0xE, 0, 0, 0xFD, 0))
- gBattleMovePower /= 2;
- if (type == TYPE_FIRE && AbilityBattleEffects(0xE, 0, 0, 0xFE, 0))
- gBattleMovePower /= 2;
- if (type == TYPE_GRASS && attacker->ability == ABILITY_OVERGROW && attacker->hp <= (attacker->maxHP / 3))
- gBattleMovePower = (150 * gBattleMovePower) / 100;
- if (type == TYPE_FIRE && attacker->ability == ABILITY_BLAZE && attacker->hp <= (attacker->maxHP / 3))
- gBattleMovePower = (150 * gBattleMovePower) / 100;
- if (type == TYPE_WATER && attacker->ability == ABILITY_TORRENT && attacker->hp <= (attacker->maxHP / 3))
- gBattleMovePower = (150 * gBattleMovePower) / 100;
- if (type == TYPE_BUG && attacker->ability == ABILITY_SWARM && attacker->hp <= (attacker->maxHP / 3))
- gBattleMovePower = (150 * gBattleMovePower) / 100;
- if (gBattleMoves[gCurrentMove].effect == 7)
- defense /= 2;
-
- if (type < TYPE_MYSTERY) // is physical?
- {
- if (gCritMultiplier == 2)
- {
- if (attacker->statStages[1] > 6)
- APPLY_STAT_MOD(a, attacker, attack, 1)
- else
- a = attack;
- }
- else
- APPLY_STAT_MOD(a, attacker, attack, 1)
-
- a = a * gBattleMovePower * (2 * attacker->level / 5 + 2);
-
- if (gCritMultiplier == 2)
- {
- if (defender->statStages[2] < 6)
- APPLY_STAT_MOD(b, defender, defense, 2)
- else
- b = defense;
- }
- else
- APPLY_STAT_MOD(b, defender, defense, 2)
-
- damage = (a / b) / 50;
-
- if ((attacker->status1 & 0x10) && attacker->ability != ABILITY_GUTS)
- damage /= 2;
-
- if ((a4 & 1) && gCritMultiplier == 1)
- {
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2)
- damage = 2 * (damage / 3);
- else
- damage /= 2;
- }
-
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2)
- damage /= 2;
-
- // moves always do at least 1 damage.
- if (damage == 0)
- damage = 1;
- }
-
- if (type == TYPE_MYSTERY)
- damage = 0; // is ??? type. does 0 damage.
-
- if (type > TYPE_MYSTERY) // is special?
- {
- if (gCritMultiplier == 2)
- {
- if (attacker->statStages[4] > 6)
- APPLY_STAT_MOD(a, attacker, spAttack, 4)
- else
- a = spAttack;
- }
- else
- APPLY_STAT_MOD(a, attacker, spAttack, 4)
-
- a = a * gBattleMovePower * (2 * attacker->level / 5 + 2);
-
- if (gCritMultiplier == 2)
- {
- if (defender->statStages[5] < 6)
- APPLY_STAT_MOD(b, defender, spDefense, 5)
- else
- b = spDefense;
- }
- else
- APPLY_STAT_MOD(b, defender, spDefense, 5)
-
- damage = (a / b) / 50;
-
- if ((a4 & 2) && gCritMultiplier == 1)
- {
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && CountAliveMons(2) == 2)
- damage = 2 * (damage / 3);
- else
- damage /= 2;
- }
-
- if ((gBattleTypeFlags & BATTLE_TYPE_DOUBLE) && gBattleMoves[move].target == 8 && CountAliveMons(2) == 2)
- damage /= 2;
-
- // are effects of weather negated with cloud nine or air lock?
- if (!AbilityBattleEffects(0xE, 0, ABILITY_CLOUD_NINE, 0, 0) && !AbilityBattleEffects(0xE, 0, ABILITY_AIR_LOCK, 0, 0))
- {
- // rain?
- if (gBattleWeather & 1)
- {
- if (type == TYPE_FIRE)
- damage /= 2;
- else if (type == TYPE_WATER)
- damage = (15 * damage) / 10;
- }
-
- // does lack of sun half solar beam damage?
- if ((gBattleWeather & 0x9F) && gCurrentMove == 76)
- damage /= 2;
-
- // sunny?
- if (gBattleWeather & 0x60)
- {
- if (type == TYPE_FIRE)
- damage = (15 * damage) / 10;
- else if (type == TYPE_WATER)
- damage /= 2;
- }
- }
-
- // flash fire triggered?
- if ((dword_2017100[a7] & 1) && type == TYPE_FIRE)
- damage = (15 * damage) / 10;
- }
-
- return damage + 2;
-}
-#else
-__attribute__((naked))
-s32 CalculateBaseDamage(struct BattlePokemon *attacker, struct BattlePokemon *defender, u32 move, u16 a4, u16 powerOverride, u8 typeOverride, u8 a7, u8 a8)
-{
- 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\
- adds r7, r0, 0\n\
- str r1, [sp, 0x4]\n\
- str r2, [sp, 0x8]\n\
- ldr r0, [sp, 0x4C]\n\
- ldr r1, [sp, 0x50]\n\
- ldr r2, [sp, 0x54]\n\
- ldr r4, [sp, 0x58]\n\
- lsls r3, 16\n\
- lsrs r3, 16\n\
- str r3, [sp, 0xC]\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- lsls r1, 24\n\
- lsrs r6, r1, 24\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- str r2, [sp, 0x10]\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- movs r5, 0\n\
- cmp r3, 0\n\
- bne _0803BA80\n\
- ldr r2, _0803BA78 @ =gBattleMovePower\n\
- ldr r1, _0803BA7C @ =gBattleMoves\n\
- ldr r3, [sp, 0x8]\n\
- lsls r0, r3, 1\n\
- adds r0, r3\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x1]\n\
- strh r0, [r2]\n\
- b _0803BA84\n\
- .align 2, 0\n\
-_0803BA78: .4byte gBattleMovePower\n\
-_0803BA7C: .4byte gBattleMoves\n\
-_0803BA80:\n\
- ldr r0, _0803BA9C @ =gBattleMovePower\n\
- strh r3, [r0]\n\
-_0803BA84:\n\
- cmp r6, 0\n\
- bne _0803BAA4\n\
- ldr r1, _0803BAA0 @ =gBattleMoves\n\
- ldr r6, [sp, 0x8]\n\
- lsls r0, r6, 1\n\
- adds r0, r6\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x2]\n\
- mov r9, r0\n\
- b _0803BAAE\n\
- .align 2, 0\n\
-_0803BA9C: .4byte gBattleMovePower\n\
-_0803BAA0: .4byte gBattleMoves\n\
-_0803BAA4:\n\
- movs r0, 0x3F\n\
- mov r9, r0\n\
- mov r1, r9\n\
- ands r1, r6\n\
- mov r9, r1\n\
-_0803BAAE:\n\
- ldrh r6, [r7, 0x2]\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r2, [r2, 0x4]\n\
- str r2, [sp, 0x14]\n\
- ldrh r3, [r7, 0x8]\n\
- mov r8, r3\n\
- ldr r0, [sp, 0x4]\n\
- ldrh r0, [r0, 0xA]\n\
- str r0, [sp, 0x18]\n\
- ldrh r0, [r7, 0x2E]\n\
- cmp r0, 0xAF\n\
- bne _0803BAE0\n\
- ldr r1, _0803BADC @ =gEnigmaBerries\n\
- ldr r2, [sp, 0x10]\n\
- lsls r0, r2, 3\n\
- subs r0, r2\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r3, [r0, 0x7]\n\
- mov r10, r3\n\
- ldrb r0, [r0, 0x1A]\n\
- b _0803BAF6\n\
- .align 2, 0\n\
-_0803BADC: .4byte gEnigmaBerries\n\
-_0803BAE0:\n\
- ldrh r0, [r7, 0x2E]\n\
- bl ItemId_GetHoldEffect\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- ldrh r0, [r7, 0x2E]\n\
- bl ItemId_GetHoldEffectParam\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
-_0803BAF6:\n\
- str r0, [sp, 0x20]\n\
- ldr r1, [sp, 0x4]\n\
- ldrh r0, [r1, 0x2E]\n\
- cmp r0, 0xAF\n\
- bne _0803BB26\n\
- ldr r1, _0803BB10 @ =gEnigmaBerries\n\
- lsls r0, r4, 3\n\
- subs r0, r4\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r0, [r0, 0x7]\n\
- str r0, [sp, 0x1C]\n\
- b _0803BB3C\n\
- .align 2, 0\n\
-_0803BB10: .4byte gEnigmaBerries\n\
-_0803BB14:\n\
- ldr r0, [sp, 0x20]\n\
- adds r0, 0x64\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
- b _0803BCDC\n\
-_0803BB26:\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r0, [r2, 0x2E]\n\
- bl ItemId_GetHoldEffect\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x1C]\n\
- ldr r3, [sp, 0x4]\n\
- ldrh r0, [r3, 0x2E]\n\
- bl ItemId_GetHoldEffectParam\n\
-_0803BB3C:\n\
- adds r0, r7, 0\n\
- adds r0, 0x20\n\
- ldrb r1, [r0]\n\
- str r0, [sp, 0x24]\n\
- cmp r1, 0x25\n\
- beq _0803BB4C\n\
- cmp r1, 0x4A\n\
- bne _0803BB50\n\
-_0803BB4C:\n\
- lsls r0, r6, 17\n\
- lsrs r6, r0, 16\n\
-_0803BB50:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BB5E\n\
- b _0803BC78\n\
-_0803BB5E:\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BB98\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BB98\n\
- ldr r0, _0803BCC4 @ =0x00000807\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BB98\n\
- ldr r0, [sp, 0x10]\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BB98\n\
- movs r0, 0x6E\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
-_0803BB98:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BBE2\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BBE2\n\
- ldr r0, _0803BCC8 @ =0x0000080b\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BBE2\n\
- adds r0, r4, 0\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BBE2\n\
- movs r0, 0x6E\n\
- ldr r1, [sp, 0x14]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
-_0803BBE2:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BC2E\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BC2E\n\
- ldr r0, _0803BCCC @ =0x0000080d\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BC2E\n\
- ldr r0, [sp, 0x10]\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BC2E\n\
- movs r0, 0x6E\n\
- mov r2, r8\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
-_0803BC2E:\n\
- ldr r0, _0803BCB8 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- ldr r0, _0803BCBC @ =0x00000902\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x8\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803BC78\n\
- ldr r0, _0803BCC0 @ =gTrainerBattleOpponent\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r1, r0\n\
- beq _0803BC78\n\
- ldr r0, _0803BCCC @ =0x0000080d\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BC78\n\
- adds r0, r4, 0\n\
- bl GetBankSide\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803BC78\n\
- movs r0, 0x6E\n\
- ldr r3, [sp, 0x18]\n\
- muls r0, r3\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
-_0803BC78:\n\
- movs r2, 0\n\
- ldr r4, _0803BCD0 @ =gHoldEffectToType\n\
- ldr r0, [sp, 0x4]\n\
- adds r0, 0x20\n\
- str r0, [sp, 0x28]\n\
- adds r3, r4, 0\n\
-_0803BC84:\n\
- lsls r1, r2, 1\n\
- ldrb r0, [r3]\n\
- cmp r10, r0\n\
- bne _0803BCD4\n\
- adds r0, r4, 0x1\n\
- adds r0, r1, r0\n\
- ldrb r0, [r0]\n\
- cmp r9, r0\n\
- bne _0803BCD4\n\
- mov r1, r9\n\
- cmp r1, 0x8\n\
- bhi _0803BC9E\n\
- b _0803BB14\n\
-_0803BC9E:\n\
- ldr r0, [sp, 0x20]\n\
- adds r0, 0x64\n\
- mov r2, r8\n\
- muls r2, r0\n\
- adds r0, r2, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
- b _0803BCDC\n\
- .align 2, 0\n\
-_0803BCB8: .4byte gBattleTypeFlags\n\
-_0803BCBC: .4byte 0x00000902\n\
-_0803BCC0: .4byte gTrainerBattleOpponent\n\
-_0803BCC4: .4byte 0x00000807\n\
-_0803BCC8: .4byte 0x0000080b\n\
-_0803BCCC: .4byte 0x0000080d\n\
-_0803BCD0: .4byte gHoldEffectToType\n\
-_0803BCD4:\n\
- adds r3, 0x2\n\
- adds r2, 0x1\n\
- cmp r2, 0x10\n\
- bls _0803BC84\n\
-_0803BCDC:\n\
- mov r3, r10\n\
- cmp r3, 0x1D\n\
- bne _0803BCF0\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
-_0803BCF0:\n\
- mov r0, r10\n\
- cmp r0, 0x22\n\
- bne _0803BD28\n\
- ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BD28\n\
- ldr r1, _0803BFE0 @ =0xfffffe69\n\
- adds r0, r1, 0\n\
- ldrh r2, [r7]\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BD28\n\
- movs r0, 0x96\n\
- mov r3, r8\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
-_0803BD28:\n\
- ldr r0, [sp, 0x1C]\n\
- cmp r0, 0x22\n\
- bne _0803BD60\n\
- ldr r0, _0803BFDC @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803BD60\n\
- ldr r1, _0803BFE0 @ =0xfffffe69\n\
- adds r0, r1, 0\n\
- ldr r2, [sp, 0x4]\n\
- ldrh r2, [r2]\n\
- adds r0, r2\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BD60\n\
- movs r0, 0x96\n\
- ldr r3, [sp, 0x18]\n\
- muls r0, r3\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
-_0803BD60:\n\
- mov r0, r10\n\
- cmp r0, 0x23\n\
- bne _0803BD76\n\
- ldrh r1, [r7]\n\
- ldr r0, _0803BFE4 @ =0x00000175\n\
- cmp r1, r0\n\
- bne _0803BD76\n\
- mov r1, r8\n\
- lsls r0, r1, 17\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
-_0803BD76:\n\
- ldr r2, [sp, 0x1C]\n\
- cmp r2, 0x24\n\
- bne _0803BD8E\n\
- ldr r3, [sp, 0x4]\n\
- ldrh r1, [r3]\n\
- ldr r0, _0803BFE4 @ =0x00000175\n\
- cmp r1, r0\n\
- bne _0803BD8E\n\
- ldr r1, [sp, 0x18]\n\
- lsls r0, r1, 17\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x18]\n\
-_0803BD8E:\n\
- mov r2, r10\n\
- cmp r2, 0x2D\n\
- bne _0803BDA2\n\
- ldrh r0, [r7]\n\
- cmp r0, 0x19\n\
- bne _0803BDA2\n\
- mov r3, r8\n\
- lsls r0, r3, 17\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
-_0803BDA2:\n\
- ldr r0, [sp, 0x1C]\n\
- cmp r0, 0x40\n\
- bne _0803BDB8\n\
- ldr r1, [sp, 0x4]\n\
- ldrh r0, [r1]\n\
- cmp r0, 0x84\n\
- bne _0803BDB8\n\
- ldr r2, [sp, 0x14]\n\
- lsls r0, r2, 17\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
-_0803BDB8:\n\
- mov r3, r10\n\
- cmp r3, 0x41\n\
- bne _0803BDCE\n\
- ldrh r0, [r7]\n\
- subs r0, 0x68\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r0, 0x1\n\
- bhi _0803BDCE\n\
- lsls r0, r6, 17\n\
- lsrs r6, r0, 16\n\
-_0803BDCE:\n\
- ldr r1, [sp, 0x28]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x2F\n\
- bne _0803BDE6\n\
- mov r2, r9\n\
- cmp r2, 0xA\n\
- beq _0803BDE0\n\
- cmp r2, 0xF\n\
- bne _0803BDE6\n\
-_0803BDE0:\n\
- mov r3, r8\n\
- lsrs r3, 1\n\
- mov r8, r3\n\
-_0803BDE6:\n\
- ldr r0, [sp, 0x24]\n\
- ldrb r4, [r0]\n\
- cmp r4, 0x37\n\
- bne _0803BDFC\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
-_0803BDFC:\n\
- cmp r4, 0x39\n\
- bne _0803BE2A\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x3A\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BE2A\n\
- movs r0, 0x96\n\
- mov r1, r8\n\
- muls r1, r0\n\
- adds r0, r1, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
-_0803BE2A:\n\
- ldr r2, [sp, 0x24]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x3A\n\
- bne _0803BE5C\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x39\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BE5C\n\
- movs r0, 0x96\n\
- mov r3, r8\n\
- muls r3, r0\n\
- adds r0, r3, 0\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r8, r0\n\
-_0803BE5C:\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x3E\n\
- bne _0803BE78\n\
- ldr r0, [r7, 0x4C]\n\
- cmp r0, 0\n\
- beq _0803BE78\n\
- movs r0, 0x96\n\
- muls r0, r6\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r6, r0, 16\n\
-_0803BE78:\n\
- ldr r2, [sp, 0x28]\n\
- ldrb r0, [r2]\n\
- cmp r0, 0x3F\n\
- bne _0803BE9A\n\
- ldr r3, [sp, 0x4]\n\
- ldr r0, [r3, 0x4C]\n\
- cmp r0, 0\n\
- beq _0803BE9A\n\
- movs r0, 0x96\n\
- ldr r1, [sp, 0x14]\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
-_0803BE9A:\n\
- mov r2, r9\n\
- cmp r2, 0xD\n\
- bne _0803BEBE\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0\n\
- movs r3, 0xFD\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BEBE\n\
- ldr r1, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r0, [r1]\n\
- lsrs r0, 1\n\
- strh r0, [r1]\n\
-_0803BEBE:\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- bne _0803BEE2\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0\n\
- movs r3, 0xFE\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0803BEE2\n\
- ldr r1, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r0, [r1]\n\
- lsrs r0, 1\n\
- strh r0, [r1]\n\
-_0803BEE2:\n\
- mov r0, r9\n\
- cmp r0, 0xC\n\
- bne _0803BF12\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x41\n\
- bne _0803BF12\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF12\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
-_0803BF12:\n\
- mov r2, r9\n\
- cmp r2, 0xA\n\
- bne _0803BF42\n\
- ldr r3, [sp, 0x24]\n\
- ldrb r0, [r3]\n\
- cmp r0, 0x42\n\
- bne _0803BF42\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF42\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
-_0803BF42:\n\
- mov r0, r9\n\
- cmp r0, 0xB\n\
- bne _0803BF72\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x43\n\
- bne _0803BF72\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BF72\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
-_0803BF72:\n\
- mov r2, r9\n\
- cmp r2, 0x6\n\
- bne _0803BFA2\n\
- ldr r3, [sp, 0x24]\n\
- ldrb r0, [r3]\n\
- cmp r0, 0x44\n\
- bne _0803BFA2\n\
- ldrh r0, [r7, 0x2C]\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- ldrh r1, [r7, 0x28]\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- cmp r1, r0\n\
- bhi _0803BFA2\n\
- ldr r4, _0803BFE8 @ =gBattleMovePower\n\
- ldrh r1, [r4]\n\
- movs r0, 0x96\n\
- muls r0, r1\n\
- movs r1, 0x64\n\
- bl __divsi3\n\
- strh r0, [r4]\n\
-_0803BFA2:\n\
- ldr r2, _0803BFEC @ =gBattleMoves\n\
- ldr r0, _0803BFF0 @ =gCurrentMove\n\
- ldrh r1, [r0]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- cmp r0, 0x7\n\
- bne _0803BFBC\n\
- ldr r0, [sp, 0x14]\n\
- lsrs r0, 1\n\
- str r0, [sp, 0x14]\n\
-_0803BFBC:\n\
- mov r1, r9\n\
- cmp r1, 0x8\n\
- bls _0803BFC4\n\
- b _0803C122\n\
-_0803BFC4:\n\
- ldr r0, _0803BFF4 @ =gCritMultiplier\n\
- ldrb r1, [r0]\n\
- adds r4, r0, 0\n\
- cmp r1, 0x2\n\
- bne _0803C000\n\
- movs r0, 0x19\n\
- ldrsb r0, [r7, r0]\n\
- cmp r0, 0x6\n\
- ble _0803BFFC\n\
- ldr r2, _0803BFF8 @ =gStatStageRatios\n\
- b _0803C006\n\
- .align 2, 0\n\
-_0803BFDC: .4byte gBattleTypeFlags\n\
-_0803BFE0: .4byte 0xfffffe69\n\
-_0803BFE4: .4byte 0x00000175\n\
-_0803BFE8: .4byte gBattleMovePower\n\
-_0803BFEC: .4byte gBattleMoves\n\
-_0803BFF0: .4byte gCurrentMove\n\
-_0803BFF4: .4byte gCritMultiplier\n\
-_0803BFF8: .4byte gStatStageRatios\n\
-_0803BFFC:\n\
- adds r5, r6, 0\n\
- b _0803C01E\n\
-_0803C000:\n\
- ldr r2, _0803C050 @ =gStatStageRatios\n\
- movs r0, 0x19\n\
- ldrsb r0, [r7, r0]\n\
-_0803C006:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- adds r5, r6, 0\n\
- muls r5, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r5, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
-_0803C01E:\n\
- ldr r0, _0803C054 @ =gBattleMovePower\n\
- ldrh r0, [r0]\n\
- muls r5, r0\n\
- adds r0, r7, 0\n\
- adds r0, 0x2A\n\
- ldrb r0, [r0]\n\
- lsls r0, 1\n\
- movs r1, 0x5\n\
- bl __divsi3\n\
- adds r0, 0x2\n\
- muls r5, r0\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bne _0803C05C\n\
- ldr r2, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r2, r0]\n\
- cmp r0, 0x5\n\
- bgt _0803C058\n\
- ldr r2, _0803C050 @ =gStatStageRatios\n\
- ldr r3, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r3, r0]\n\
- b _0803C064\n\
- .align 2, 0\n\
-_0803C050: .4byte gStatStageRatios\n\
-_0803C054: .4byte gBattleMovePower\n\
-_0803C058:\n\
- ldr r3, [sp, 0x14]\n\
- b _0803C07E\n\
-_0803C05C:\n\
- ldr r2, _0803C0DC @ =gStatStageRatios\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1A\n\
- ldrsb r0, [r1, r0]\n\
-_0803C064:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- ldr r6, [sp, 0x14]\n\
- adds r3, r6, 0\n\
- muls r3, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl __divsi3\n\
- adds r3, r0, 0\n\
-_0803C07E:\n\
- adds r0, r5, 0\n\
- adds r1, r3, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r1, 0x32\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- ldr r0, [r7, 0x4C]\n\
- movs r1, 0x10\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C0A8\n\
- ldr r1, [sp, 0x24]\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x3E\n\
- beq _0803C0A8\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C0A8:\n\
- movs r0, 0x1\n\
- ldr r2, [sp, 0xC]\n\
- ands r0, r2\n\
- cmp r0, 0\n\
- beq _0803C0EA\n\
- ldrb r1, [r4]\n\
- cmp r1, 0x1\n\
- bne _0803C0EA\n\
- ldr r0, _0803C0E0 @ =gBattleTypeFlags\n\
- ldrh r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _0803C0E4\n\
- movs r0, 0x2\n\
- bl CountAliveMons\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C0E4\n\
- adds r0, r5, 0\n\
- movs r1, 0x3\n\
- bl __divsi3\n\
- lsls r5, r0, 1\n\
- b _0803C0EA\n\
- .align 2, 0\n\
-_0803C0DC: .4byte gStatStageRatios\n\
-_0803C0E0: .4byte gBattleTypeFlags\n\
-_0803C0E4:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C0EA:\n\
- ldr r0, _0803C148 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C11C\n\
- ldr r0, _0803C14C @ =gBattleMoves\n\
- ldr r3, [sp, 0x8]\n\
- lsls r1, r3, 1\n\
- adds r1, r3\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x6]\n\
- cmp r0, 0x8\n\
- bne _0803C11C\n\
- movs r0, 0x2\n\
- bl CountAliveMons\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C11C\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C11C:\n\
- cmp r5, 0\n\
- bne _0803C122\n\
- movs r5, 0x1\n\
-_0803C122:\n\
- mov r6, r9\n\
- cmp r6, 0x9\n\
- bne _0803C12A\n\
- movs r5, 0\n\
-_0803C12A:\n\
- mov r0, r9\n\
- cmp r0, 0x9\n\
- bhi _0803C132\n\
- b _0803C330\n\
-_0803C132:\n\
- ldr r0, _0803C150 @ =gCritMultiplier\n\
- ldrb r1, [r0]\n\
- adds r4, r0, 0\n\
- cmp r1, 0x2\n\
- bne _0803C15C\n\
- movs r0, 0x1C\n\
- ldrsb r0, [r7, r0]\n\
- cmp r0, 0x6\n\
- ble _0803C158\n\
- ldr r2, _0803C154 @ =gStatStageRatios\n\
- b _0803C162\n\
- .align 2, 0\n\
-_0803C148: .4byte gBattleTypeFlags\n\
-_0803C14C: .4byte gBattleMoves\n\
-_0803C150: .4byte gCritMultiplier\n\
-_0803C154: .4byte gStatStageRatios\n\
-_0803C158:\n\
- mov r5, r8\n\
- b _0803C17A\n\
-_0803C15C:\n\
- ldr r2, _0803C1A8 @ =gStatStageRatios\n\
- movs r0, 0x1C\n\
- ldrsb r0, [r7, r0]\n\
-_0803C162:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- mov r5, r8\n\
- muls r5, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r5, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
-_0803C17A:\n\
- ldr r0, _0803C1AC @ =gBattleMovePower\n\
- ldrh r0, [r0]\n\
- muls r5, r0\n\
- adds r0, r7, 0\n\
- adds r0, 0x2A\n\
- ldrb r0, [r0]\n\
- lsls r0, 1\n\
- movs r1, 0x5\n\
- bl __divsi3\n\
- adds r0, 0x2\n\
- muls r5, r0\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bne _0803C1B4\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1D\n\
- ldrsb r0, [r1, r0]\n\
- cmp r0, 0x5\n\
- bgt _0803C1B0\n\
- ldr r2, _0803C1A8 @ =gStatStageRatios\n\
- b _0803C1BC\n\
- .align 2, 0\n\
-_0803C1A8: .4byte gStatStageRatios\n\
-_0803C1AC: .4byte gBattleMovePower\n\
-_0803C1B0:\n\
- ldr r3, [sp, 0x18]\n\
- b _0803C1D6\n\
-_0803C1B4:\n\
- ldr r2, _0803C21C @ =gStatStageRatios\n\
- ldr r1, [sp, 0x4]\n\
- movs r0, 0x1D\n\
- ldrsb r0, [r1, r0]\n\
-_0803C1BC:\n\
- lsls r0, 1\n\
- adds r1, r0, r2\n\
- ldrb r1, [r1]\n\
- ldr r6, [sp, 0x18]\n\
- adds r3, r6, 0\n\
- muls r3, r1\n\
- adds r2, 0x1\n\
- adds r0, r2\n\
- ldrb r1, [r0]\n\
- adds r0, r3, 0\n\
- bl __divsi3\n\
- adds r3, r0, 0\n\
-_0803C1D6:\n\
- adds r0, r5, 0\n\
- adds r1, r3, 0\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r1, 0x32\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- movs r0, 0x2\n\
- ldr r1, [sp, 0xC]\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C22A\n\
- ldrb r1, [r4]\n\
- cmp r1, 0x1\n\
- bne _0803C22A\n\
- ldr r0, _0803C220 @ =gBattleTypeFlags\n\
- ldrh r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- beq _0803C224\n\
- movs r0, 0x2\n\
- bl CountAliveMons\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C224\n\
- adds r0, r5, 0\n\
- movs r1, 0x3\n\
- bl __divsi3\n\
- lsls r5, r0, 1\n\
- b _0803C22A\n\
- .align 2, 0\n\
-_0803C21C: .4byte gStatStageRatios\n\
-_0803C220: .4byte gBattleTypeFlags\n\
-_0803C224:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C22A:\n\
- ldr r0, _0803C2A4 @ =gBattleTypeFlags\n\
- ldrh r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C25C\n\
- ldr r0, _0803C2A8 @ =gBattleMoves\n\
- ldr r2, [sp, 0x8]\n\
- lsls r1, r2, 1\n\
- adds r1, r2\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x6]\n\
- cmp r0, 0x8\n\
- bne _0803C25C\n\
- movs r0, 0x2\n\
- bl CountAliveMons\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bne _0803C25C\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C25C:\n\
- movs r0, 0\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0xD\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0\n\
- bne _0803C30C\n\
- str r0, [sp]\n\
- movs r0, 0xE\n\
- movs r1, 0\n\
- movs r2, 0x4D\n\
- movs r3, 0\n\
- bl AbilityBattleEffects\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- bne _0803C30C\n\
- ldr r2, _0803C2AC @ =gBattleWeather\n\
- ldrh r1, [r2]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- adds r4, r2, 0\n\
- cmp r0, 0\n\
- beq _0803C2C4\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- beq _0803C2B0\n\
- cmp r3, 0xB\n\
- beq _0803C2B8\n\
- b _0803C2C4\n\
- .align 2, 0\n\
-_0803C2A4: .4byte gBattleTypeFlags\n\
-_0803C2A8: .4byte gBattleMoves\n\
-_0803C2AC: .4byte gBattleWeather\n\
-_0803C2B0:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
- b _0803C2C4\n\
-_0803C2B8:\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
-_0803C2C4:\n\
- ldrh r1, [r4]\n\
- movs r0, 0x9F\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C2DC\n\
- ldr r0, _0803C2F4 @ =gCurrentMove\n\
- ldrh r0, [r0]\n\
- cmp r0, 0x4C\n\
- bne _0803C2DC\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C2DC:\n\
- ldrh r1, [r4]\n\
- movs r0, 0x60\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C30C\n\
- mov r6, r9\n\
- cmp r6, 0xA\n\
- beq _0803C2F8\n\
- cmp r6, 0xB\n\
- beq _0803C306\n\
- b _0803C30C\n\
- .align 2, 0\n\
-_0803C2F4: .4byte gCurrentMove\n\
-_0803C2F8:\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
- b _0803C30C\n\
-_0803C306:\n\
- lsrs r0, r5, 31\n\
- adds r0, r5, r0\n\
- asrs r5, r0, 1\n\
-_0803C30C:\n\
- ldr r1, _0803C344 @ =0x02017100\n\
- ldr r2, [sp, 0x10]\n\
- lsls r0, r2, 2\n\
- adds r0, r1\n\
- ldr r0, [r0]\n\
- movs r1, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _0803C330\n\
- mov r3, r9\n\
- cmp r3, 0xA\n\
- bne _0803C330\n\
- lsls r0, r5, 4\n\
- subs r0, r5\n\
- movs r1, 0xA\n\
- bl __divsi3\n\
- adds r5, r0, 0\n\
-_0803C330:\n\
- adds r0, r5, 0x2\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 {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_0803C344: .4byte 0x02017100\n\
- .syntax divided");
-}
-#endif
diff --git a/src/daycare.c b/src/daycare.c
deleted file mode 100644
index cded18207..000000000
--- a/src/daycare.c
+++ /dev/null
@@ -1,350 +0,0 @@
-#include "global.h"
-#include "daycare.h"
-#include "pokemon.h"
-#include "species.h"
-#include "items.h"
-#include "string_util.h"
-
-extern u8 gLastFieldPokeMenuOpened;
-
-u8 *GetMonNick(struct Pokemon *mon, u8 *dest)
-{
- s8 nickname[POKEMON_NAME_LENGTH * 2];
-
- GetMonData(mon, MON_DATA_NICKNAME, nickname);
- return StringCopy10(dest, nickname);
-}
-
-u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest)
-{
- s8 nickname[POKEMON_NAME_LENGTH * 2];
-
- GetBoxMonData(mon, MON_DATA_NICKNAME, nickname);
- return StringCopy10(dest, nickname);
-}
-
-u8 Daycare_CountPokemon(struct BoxPokemon *daycare_data)
-{
- u8 i, count;
- count = 0;
-
- for(i = 0;i <= 1;i++)
- if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) != 0)
- count++;
-
- return count;
-}
-
-void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixing_UnknownStruct * void_pointer)
-{
- u8 i;
- u8 specCount;
- specCount = 0;
- for (i=0; i<2; i++)
- {
- if (GetBoxMonData(&box_pokemon[i], MON_DATA_SPECIES) != SPECIES_NONE)
- {
- specCount ++;
- if (GetBoxMonData(&box_pokemon[i], MON_DATA_HELD_ITEM) == ITEM_NONE)
- {
- void_pointer->unk74[i] = 0;
- } else
- {
- void_pointer->unk74[i] = 1;
- }
- } else
- {
- void_pointer->unk74[i] = 1;
- }
- }
- void_pointer->unk70 = specCount;
-}
-
-s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data)
-{
- u8 i;
-
- for(i = 0;i <= 1;i++)
- if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0)
- return i;
-
- return -1;
-}
-
-/*void Daycare_SendPokemon(struct Pokemon * mon, struct BoxPokemon * daycare_data){ // unfinished
- s8 empty_slot;
-
- empty_slot = Daycare_FindEmptySpot(daycare_data);
- if(MonHasMail(mon) != 0){ // if the mon holds a mail?
- u8 empty_slot_times_56 = empty_slot * 56;
- u8 * something2 = ((u8 *) (daycare_data + 2)) + empty_slot_times_56 + 36;
- StringCopy(something2, gSaveBlock2.playerName);
- PadNameString(something2, 0xFC);
- something2 += 8;
- GetMonNick(mon, something2);
- u8 pokerus = GetMonData(mon, MON_DATA_64);
- something1 += (u8 * daycare_data)
-}*/
-
-__attribute__((naked))
-void Daycare_SendPokemon()
-{
- // strange stack usage - happens because THUMB ARM only allows R0-R7 to be pushed/popped:
- // all registers in reglist must be Lo registers, except that PUSH can include the LR, and POP can include the PC
- // the ldm/stm section probably copies some struct, but I'm not sure how the code would look
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- adds r7, r0, 0\n\
- mov r8, r1\n\
- mov r0, r8\n\
- bl Daycare_FindEmptySpot\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- mov r9, r4\n\
- adds r0, r7, 0\n\
- bl MonHasMail\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _0804144A\n\
- lsls r0, r4, 24\n\
- asrs r0, 24\n\
- lsls r4, r0, 3\n\
- subs r4, r0\n\
- lsls r4, 3\n\
- adds r5, r4, 0\n\
- adds r5, 0xA0\n\
- add r5, r8\n\
- adds r6, r5, 0\n\
- adds r6, 0x24\n\
- ldr r1, _08041490 @ =gSaveBlock2\n\
- adds r0, r6, 0\n\
- bl StringCopy\n\
- adds r0, r6, 0\n\
- movs r1, 0xFC\n\
- bl PadNameString\n\
- adds r6, 0x8\n\
- adds r0, r7, 0\n\
- adds r1, r6, 0\n\
- bl GetMonNick\n\
- adds r0, r7, 0\n\
- movs r1, 0x40\n\
- bl GetMonData\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- add r4, r8\n\
- ldr r2, _08041494 @ =gSaveBlock1\n\
- lsls r1, r0, 3\n\
- adds r1, r0\n\
- lsls r1, 2\n\
- adds r1, r2\n\
- adds r4, 0xA0\n\
- ldr r0, _08041498 @ =0x00002b4c\n\
- adds r1, r0\n\
- ldm r1!, {r0,r2,r3}\n\
- stm r4!, {r0,r2,r3}\n\
- ldm r1!, {r0,r2,r3}\n\
- stm r4!, {r0,r2,r3}\n\
- ldm r1!, {r0,r2,r3}\n\
- stm r4!, {r0,r2,r3}\n\
- adds r0, r7, 0\n\
- bl TakeMailFromMon\n\
-_0804144A:\n\
- mov r2, r9\n\
- lsls r4, r2, 24\n\
- asrs r4, 24\n\
- lsls r5, r4, 2\n\
- adds r4, r5, r4\n\
- lsls r4, 4\n\
- add r4, r8\n\
- adds r0, r4, 0\n\
- adds r1, r7, 0\n\
- movs r2, 0x50\n\
- bl memcpy\n\
- adds r0, r4, 0\n\
- bl BoxMonRestorePP\n\
- movs r0, 0x88\n\
- lsls r0, 1\n\
- add r0, r8\n\
- adds r0, r5\n\
- movs r1, 0\n\
- str r1, [r0]\n\
- adds r0, r7, 0\n\
- bl ZeroMonData\n\
- bl party_compaction\n\
- bl CalculatePlayerPartyCount\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_08041490: .4byte gSaveBlock2\n\
-_08041494: .4byte gSaveBlock1\n\
-_08041498: .4byte 0x00002b4c\n\
- .syntax divided\n");
-}
-
-void Daycare_SendPokemon_Special()
-{
- Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, gSaveBlock1.daycareData);
-}
-
-void sub_80417F4(u8 *);
-
-void sub_80414C0(struct BoxPokemon * daycare_data)
-{
- u32 second_species;
- if((GetBoxMonData(&daycare_data[1], MON_DATA_SPECIES) != 0) && ((second_species = GetBoxMonData(&daycare_data[0], MON_DATA_SPECIES)) == 0)){
- daycare_data[0] = daycare_data[1];
- ZeroBoxMonData(&daycare_data[1]);
- memcpy(daycare_data + 2, (u8 *) (daycare_data + 1) + 0x88, 0x38);
- *((u32 *)(daycare_data) + 68) = *((u32 *)(daycare_data) + 69);
- *((u32 *)(daycare_data) + 69) = second_species;
- sub_80417F4((u8 *) (daycare_data + 1) + 0x88);
- }
-}
-
-u8 TryIncrementMonLevel(struct Pokemon *);
-extern u16 word_2024E82;
-
-void sub_804151C(struct Pokemon * mon)
-{
- s32 i;
- u8 r6;
- u16 temp;
-
- for(i = 0; i < 100; i++){
- if(TryIncrementMonLevel(mon) == FALSE) goto end;
-
- r6 = 1;
- while((temp = sub_803B7C8(mon, r6)) != 0){
- r6 = 0;
- if(temp == 0xffff){
- DeleteFirstMoveAndGiveMoveToMon(mon, word_2024E82);
- }
- }
- }
-
- end:
-
- CalculateMonStats(mon);
-}
-
-__attribute__((naked))
-u16 sub_8041570(struct BoxPokemon * daycare_data, u8 a2){
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r9\n\
- mov r6, r8\n\
- push {r6,r7}\n\
- sub sp, 0x68\n\
- adds r5, r0, 0\n\
- lsls r1, 24\n\
- lsrs r4, r1, 24\n\
- lsls r7, r4, 2\n\
- adds r0, r7, r4\n\
- lsls r0, 4\n\
- adds r6, r5, r0\n\
- ldr r1, _08041640 @ =gStringVar1\n\
- adds r0, r6, 0\n\
- bl GetBoxMonNick\n\
- adds r0, r6, 0\n\
- movs r1, 0xB\n\
- bl GetBoxMonData\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- mov r9, r0\n\
- adds r0, r6, 0\n\
- mov r1, sp\n\
- bl sub_803B4B4\n\
- mov r0, sp\n\
- movs r1, 0x38\n\
- bl GetMonData\n\
- cmp r0, 0x64\n\
- beq _080415D8\n\
- mov r0, sp\n\
- movs r1, 0x19\n\
- bl GetMonData\n\
- movs r2, 0x88\n\
- lsls r2, 1\n\
- adds r1, r5, r2\n\
- adds r1, r7\n\
- ldr r1, [r1]\n\
- adds r0, r1\n\
- str r0, [sp, 0x64]\n\
- add r2, sp, 0x64\n\
- mov r0, sp\n\
- movs r1, 0x19\n\
- bl SetMonData\n\
- mov r0, sp\n\
- bl sub_804151C\n\
-_080415D8:\n\
- ldr r0, _08041644 @ =gPlayerParty\n\
- movs r1, 0xFA\n\
- lsls r1, 1\n\
- adds r1, r0\n\
- mov r8, r1\n\
- mov r0, r8\n\
- mov r1, sp\n\
- movs r2, 0x64\n\
- bl memcpy\n\
- lsls r0, r4, 3\n\
- subs r0, r4\n\
- lsls r1, r0, 3\n\
- adds r0, r5, r1\n\
- adds r0, 0xC0\n\
- ldrh r0, [r0]\n\
- cmp r0, 0\n\
- beq _08041610\n\
- adds r4, r1, 0\n\
- adds r4, 0xA0\n\
- adds r4, r5, r4\n\
- mov r0, r8\n\
- adds r1, r4, 0\n\
- bl GiveMailToMon2\n\
- adds r0, r4, 0\n\
- bl sub_80417F4\n\
-_08041610:\n\
- bl party_compaction\n\
- adds r0, r6, 0\n\
- bl ZeroBoxMonData\n\
- movs r2, 0x88\n\
- lsls r2, 1\n\
- adds r0, r5, r2\n\
- adds r0, r7\n\
- movs r1, 0\n\
- str r1, [r0]\n\
- adds r0, r5, 0\n\
- bl sub_80414C0\n\
- bl CalculatePlayerPartyCount\n\
- mov r0, r9\n\
- add sp, 0x68\n\
- pop {r3,r4}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_08041640: .4byte gStringVar1\n\
-_08041644: .4byte gPlayerParty\n\
- .syntax divided");
-}
-
-extern u8 gSpecialVar_0x8004;
-
-u16 sub_8041648()
-{
- return sub_8041570(gSaveBlock1.daycareData, gSpecialVar_0x8004);
-}
-
-u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){
- struct BoxPokemon temp = *mon;
- u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps;
- SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp);
- return GetLevelFromBoxMonExp(&temp);
-}
diff --git a/src/de_rom_8040FE0.c b/src/de_rom_8040FE0.c
index c618ebdb2..eebcc1437 100644
--- a/src/de_rom_8040FE0.c
+++ b/src/de_rom_8040FE0.c
@@ -142,124 +142,124 @@ u8 *de_sub_8041024(s32 arg0, u32 arg1) {
__attribute__((naked))
void de_sub_8041024(void) {
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- adds r2, r0, 0\n\
- adds r6, r1, 0\n\
- movs r0, 0x80\n\
- lsls r0, 3\n\
- cmp r2, r0\n\
- beq _0804104A\n\
- cmp r2, r0\n\
- bgt _08041040\n\
- movs r0, 0x80\n\
- lsls r0, 1\n\
- cmp r2, r0\n\
- beq _08041064\n\
- b _0804109C\n\
+ push {r4-r6,lr}\n\
+ adds r2, r0, 0\n\
+ adds r6, r1, 0\n\
+ movs r0, 0x80\n\
+ lsls r0, 3\n\
+ cmp r2, r0\n\
+ beq _0804104A\n\
+ cmp r2, r0\n\
+ bgt _08041040\n\
+ movs r0, 0x80\n\
+ lsls r0, 1\n\
+ cmp r2, r0\n\
+ beq _08041064\n\
+ b _0804109C\n\
_08041040:\n\
- movs r0, 0x80\n\
- lsls r0, 4\n\
- cmp r2, r0\n\
- beq _08041086\n\
- b _0804109C\n\
+ movs r0, 0x80\n\
+ lsls r0, 4\n\
+ cmp r2, r0\n\
+ beq _08041086\n\
+ b _0804109C\n\
_0804104A:\n\
- bl GetSecretBaseTrainerNameIndex\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- ldr r0, _08041060 @ =0x02017000\n\
- ldrb r0, [r0, 0x1]\n\
- lsls r0, 27\n\
- lsrs r2, r0, 31\n\
- cmp r5, 0x1A\n\
- beq _080410B8\n\
- b _080410F8\n\
- .align 2, 0\n\
+ bl GetSecretBaseTrainerNameIndex\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r0, _08041060 @ =0x02017000\n\
+ ldrb r0, [r0, 0x1]\n\
+ lsls r0, 27\n\
+ lsrs r2, r0, 31\n\
+ cmp r5, 0x1A\n\
+ beq _080410B8\n\
+ b _080410F8\n\
+ .align 2, 0\n\
_08041060: .4byte 0x02017000\n\
_08041064:\n\
- bl de_sub_81364AC\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- bl get_trainer_class_name_index\n\
+ bl de_sub_81364AC\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ bl get_trainer_class_name_index\n\
_08041070:\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
- cmp r4, 0x1E\n\
- beq _08041094\n\
- adds r0, r4, 0\n\
- subs r0, 0x3D\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x2\n\
- bls _080410CC\n\
- b _080410F8\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ cmp r4, 0x1E\n\
+ beq _08041094\n\
+ adds r0, r4, 0\n\
+ subs r0, 0x3D\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ cmp r0, 0x2\n\
+ bls _080410CC\n\
+ b _080410F8\n\
_08041086:\n\
- bl de_sub_81364F8\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- bl sub_8135FD8\n\
- b _08041070\n\
+ bl de_sub_81364F8\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ bl sub_8135FD8\n\
+ b _08041070\n\
_08041094:\n\
- movs r0, 0x1\n\
- bl de_sub_8040FE0\n\
- b _08041102\n\
+ movs r0, 0x1\n\
+ bl de_sub_8040FE0\n\
+ b _08041102\n\
_0804109C:\n\
- ldr r1, _080410C0 @ =gTrainers\n\
- lsls r4, r6, 2\n\
- adds r0, r4, r6\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- ldrb r5, [r0, 0x1]\n\
- lsls r0, r6, 16\n\
- lsrs r0, 16\n\
- bl sub_803FC58\n\
- lsls r0, 24\n\
- lsrs r2, r0, 24\n\
- cmp r5, 0x1A\n\
- bne _080410C4\n\
+ ldr r1, _080410C0 @ =gTrainers\n\
+ lsls r4, r6, 2\n\
+ adds r0, r4, r6\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ ldrb r5, [r0, 0x1]\n\
+ lsls r0, r6, 16\n\
+ lsrs r0, 16\n\
+ bl sub_803FC58\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ cmp r5, 0x1A\n\
+ bne _080410C4\n\
_080410B8:\n\
- adds r0, r2, 0\n\
- bl de_sub_8040FE0\n\
- b _08041102\n\
- .align 2, 0\n\
+ adds r0, r2, 0\n\
+ bl de_sub_8040FE0\n\
+ b _08041102\n\
+ .align 2, 0\n\
_080410C0: .4byte gTrainers\n\
_080410C4:\n\
- cmp r5, 0x2E\n\
- bne _080410D4\n\
- cmp r2, 0x1\n\
- bne _080410D4\n\
+ cmp r5, 0x2E\n\
+ bne _080410D4\n\
+ cmp r2, 0x1\n\
+ bne _080410D4\n\
_080410CC:\n\
- movs r0, 0x1\n\
- bl de_sub_8040FF4\n\
- b _08041102\n\
+ movs r0, 0x1\n\
+ bl de_sub_8040FF4\n\
+ b _08041102\n\
_080410D4:\n\
- cmp r5, 0x19\n\
- bne _080410F8\n\
- ldr r0, _080410F4 @ =gTrainers\n\
- adds r1, r4, r6\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x18]\n\
- movs r2, 0\n\
- cmp r0, 0x1\n\
- bne _080410EA\n\
- movs r2, 0x1\n\
+ cmp r5, 0x19\n\
+ bne _080410F8\n\
+ ldr r0, _080410F4 @ =gTrainers\n\
+ adds r1, r4, r6\n\
+ lsls r1, 3\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x18]\n\
+ movs r2, 0\n\
+ cmp r0, 0x1\n\
+ bne _080410EA\n\
+ movs r2, 0x1\n\
_080410EA:\n\
- adds r0, r2, 0\n\
- bl de_sub_804100C\n\
- b _08041102\n\
- .align 2, 0\n\
+ adds r0, r2, 0\n\
+ bl de_sub_804100C\n\
+ b _08041102\n\
+ .align 2, 0\n\
_080410F4: .4byte gTrainers\n\
_080410F8:\n\
- movs r0, 0xD\n\
- adds r1, r5, 0\n\
- muls r1, r0\n\
- ldr r0, _08041108 @ =gTrainerClassNames\n\
- adds r0, r1, r0\n\
+ movs r0, 0xD\n\
+ adds r1, r5, 0\n\
+ muls r1, r0\n\
+ ldr r0, _08041108 @ =gTrainerClassNames\n\
+ adds r0, r1, r0\n\
_08041102:\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
+ pop {r4-r6}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
_08041108: .4byte gTrainerClassNames\n\
.syntax divided\n");
}
diff --git a/src/matsuda_debug_menu.c b/src/debug/matsuda_debug_menu.c
index 3665cabd8..c7d81f502 100644
--- a/src/matsuda_debug_menu.c
+++ b/src/debug/matsuda_debug_menu.c
@@ -8,7 +8,7 @@
#include "main.h"
#include "menu.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "sprite.h"
#include "start_menu.h"
#include "string_util.h"
diff --git a/src/mori_debug_menu.c b/src/debug/mori_debug_menu.c
index 273191192..1595ecd2e 100644
--- a/src/mori_debug_menu.c
+++ b/src/debug/mori_debug_menu.c
@@ -52,7 +52,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr)
u16 monData;
u16 var;
- monData = GetMonData(gPlayerParty, 11, ptr);
+ monData = GetMonData(gPlayerParty, MON_DATA_SPECIES, ptr);
var = sub_8041870(monData);
StringCopy(localPtr, gSpeciesNames[monData]);
StringAppend(localPtr, gUnknown_0839B24D);
@@ -67,7 +67,7 @@ u8 MoriDebugMenu_SearchChild(u8 a1, u8 a2, u8 *ptr)
s8 MoriDebugMenu_Egg(void)
{
- if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() )
+ if ( Daycare_CountPokemon(&gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() )
sub_8041940();
CloseMenu();
@@ -76,7 +76,7 @@ s8 MoriDebugMenu_Egg(void)
s8 MoriDebugMenu_MaleEgg(void)
{
- if ( Daycare_CountPokemon(gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() )
+ if ( Daycare_CountPokemon(&gSaveBlock1.daycareData) == 2 && daycare_relationship_score_from_savegame() )
sub_8041950();
CloseMenu();
@@ -117,7 +117,7 @@ s8 MoriDebugMenu_BreedEgg(void)
SetMonData(&gPlayerParty[loopCounter], MON_DATA_FRIENDSHIP, &friendship);
}
}
- gSaveBlock1.filler_30B6 = -3;
+ gSaveBlock1.daycareData.misc.countersEtc.unk_11a = -3;
CloseMenu();
return 1;
}
@@ -134,7 +134,7 @@ s8 MoriDebugMenu_PokeblockCase(void)
s32 loopCounter;
for (loopCounter = 0; loopCounter <= 39; loopCounter++)
- sub_810CA6C(loopCounter);
+ PokeblockClearIfExists(loopCounter);
CloseMenu();
return 1;
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/egg_hatch.c b/src/egg_hatch.c
deleted file mode 100644
index 32fbe1547..000000000
--- a/src/egg_hatch.c
+++ /dev/null
@@ -1,52 +0,0 @@
-#include "global.h"
-#include "pokemon.h"
-
-void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp) {
- u16 species;
- u32 personality, pokerus;
- u8 i, friendship, language, gameMet, markings;
- u16 moves[4];
- u32 ivs[6];
-
-
- species = GetMonData(egg, MON_DATA_SPECIES);
-
- for (i = 0; i < 4; i++)
- {
- moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i);
- }
-
- personality = GetMonData(egg, MON_DATA_PERSONALITY);
-
- for (i = 0; i < 6; i++)
- {
- ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i);
- }
-
- gameMet = GetMonData(egg, MON_DATA_MET_GAME);
- markings = GetMonData(egg, MON_DATA_MARKINGS);
- pokerus = GetMonData(egg, MON_DATA_POKERUS);
-
- CreateMon(temp, species, 5, 32, TRUE, personality, 0, 0);
-
- for (i = 0; i < 4; i++)
- {
- SetMonData(temp, MON_DATA_MOVE1 + i, (const u8 *) &moves[i]);
- }
-
- for (i = 0; i < 6; i++)
- {
- SetMonData(temp, MON_DATA_HP_IV + i, (const u8 *) &ivs[i]);
- }
-
- language = GAME_LANGUAGE;
- SetMonData(temp, MON_DATA_LANGUAGE, &language);
- SetMonData(temp, MON_DATA_MET_GAME, &gameMet);
- SetMonData(temp, MON_DATA_MARKINGS, &markings);
-
- friendship = 120;
- SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship);
- SetMonData(temp, MON_DATA_POKERUS, (const u8 *) &pokerus);
-
- *egg = *temp;
-}
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/engine/cable_club.c b/src/engine/cable_club.c
new file mode 100644
index 000000000..c61a1d01c
--- /dev/null
+++ b/src/engine/cable_club.c
@@ -0,0 +1,905 @@
+#include "global.h"
+#include "battle.h"
+#include "battle_records.h"
+#include "cable_club.h"
+#include "field_message_box.h"
+#include "field_weather.h"
+#include "link.h"
+#include "load_save.h"
+#include "m4a.h"
+#include "main.h"
+#include "menu.h"
+#include "palette.h"
+#include "record_mixing.h"
+#include "overworld.h"
+#include "script.h"
+#include "script_pokemon_80C4.h"
+#include "songs.h"
+#include "sound.h"
+#include "start_menu.h"
+#include "string_util.h"
+#include "strings2.h"
+#include "task.h"
+#include "text.h"
+#include "trainer_card.h"
+
+extern u16 gScriptResult;
+extern struct TrainerCard gTrainerCards[4];
+extern u8 gUnknown_03004860;
+extern u8 gFieldLinkPlayerCount;
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u16 gSpecialVar_0x8006;
+extern u16 gBattleTypeFlags;
+extern const u8 gUnknown_081A4932[];
+extern const u8 gUnknown_081A4975[];
+extern const u8 gUnknown_081A49B6[];
+extern const u8 gUnknown_081A490C[];
+extern const u8* const gTrainerCardColorNames[];
+extern struct
+{
+ u8 field0;
+ u8 field1;
+} gUnknown_020297D8;
+
+static void sub_8082F20(u8 taskId);
+static void sub_8082F68(u8 taskId);
+static void sub_8082FEC(u8 taskId);
+static void sub_808303C(u8 taskId);
+static void sub_80830E4(u8 taskId);
+static void sub_8083188(u8 taskId);
+static void sub_8083288(u8 taskId);
+static void sub_8083314(u8 taskId);
+static void sub_80833C4(u8 taskId);
+static void sub_80833EC(u8 taskId);
+static void sub_8083418(u8 taskId);
+static bool8 sub_8083444(u8 taskId);
+static void sub_808353C(u8 taskId);
+static void sub_8083710(u8 taskId);
+static void sub_8083760(u8 taskId);
+static void sub_80837B4(u8 taskId);
+static void sub_80837EC(u8 taskId);
+static void sub_808382C(u8 taskId);
+static void sub_8083958(void);
+static void sub_80839DC(u8 taskId);
+static void sub_8083AAC(u8 taskId);
+static void sub_8083B44(u8 taskId);
+static void sub_8083B6C(void);
+static void sub_8083CA4(u8 taskId);
+
+extern void sub_80831F8(u8 taskId);
+extern void Overworld_ResetMapMusic(void);
+extern void sub_810FEFC(void);
+extern void sub_8047CD8(void);
+extern void sub_805559C(void);
+extern void sub_8055574(void);
+extern s32 sub_80554F8(void);
+extern void sub_805465C(void);
+
+static void sub_8082CD4(u8 arg0, u8 arg1)
+{
+ if (FindTaskIdByFunc(sub_8082F20) == 0xFF)
+ {
+ u8 taskId = CreateTask(sub_8082F20, 80);
+
+ gTasks[taskId].data[1] = arg0;
+ gTasks[taskId].data[2] = arg1;
+ }
+}
+
+static void sub_8082D18(u32 value)
+{
+ ConvertIntToDecimalStringN(gStringVar1, value, STR_CONV_MODE_LEFT_ALIGN, 1);
+ MenuDrawTextWindow(18, 10, 28, 13);
+ sub_8072BD8(gOtherText_PLink, 19, 11, 72);
+}
+
+static void sub_8082D4C()
+{
+ MenuZeroFillWindowRect(18, 10, 28, 13);
+}
+
+static void sub_8082D60(u8 taskId, u8 arg1)
+{
+ s16 *data = &gTasks[taskId].data[3];
+
+ if (arg1 != *data)
+ {
+ if (arg1 <= 1)
+ sub_8082D4C();
+ else
+ sub_8082D18(arg1);
+ *data = arg1;
+ }
+}
+
+static u32 sub_8082D9C(u8 minPlayers, u8 maxPlayers)
+{
+ int playerCount;
+
+ switch (GetLinkPlayerDataExchangeStatusTimed())
+ {
+ case EXCHANGE_COMPLETE:
+ playerCount = GetLinkPlayerCount_2();
+ if (minPlayers <= playerCount && playerCount <= maxPlayers)
+ return 1;
+ ConvertIntToDecimalStringN(gStringVar1, playerCount, STR_CONV_MODE_LEFT_ALIGN, 1);
+ return 4;
+ case EXCHANGE_TIMED_OUT:
+ return 0;
+ case EXCHANGE_IN_PROGRESS:
+ return 3;
+ default:
+ return 0;
+ }
+}
+
+static bool32 sub_8082DF4(u8 taskId)
+{
+ if (HasLinkErrorOccurred() == TRUE)
+ {
+ gTasks[taskId].func = sub_8083418;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool32 sub_8082E28(u8 taskId)
+{
+ if ((gMain.newKeys & B_BUTTON)
+ && IsLinkConnectionEstablished() == FALSE)
+ {
+ gTasks[taskId].func = sub_80833EC;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool32 sub_8082E6C(u8 taskId)
+{
+ if (IsLinkConnectionEstablished())
+ SetSuppressLinkErrorMessage(TRUE);
+
+ if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].func = sub_80833EC;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static bool32 sub_8082EB8(u8 taskId)
+{
+ if (GetSioMultiSI() == 1)
+ {
+ gTasks[taskId].func = sub_8083418;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void unref_sub_8082EEC(u8 taskId)
+{
+ gTasks[taskId].data[0]++;
+ if (gTasks[taskId].data[0] == 10)
+ {
+ sub_8007E9C(2);
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_8082F20(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (data[0] == 0)
+ {
+ OpenLinkTimed();
+ sub_80082EC();
+ ResetLinkPlayers();
+ }
+ else if (data[0] > 9)
+ {
+ gTasks[taskId].func = sub_8082F68;
+ }
+ data[0]++;
+}
+
+static void sub_8082F68(u8 taskId)
+{
+ u32 playerCount = GetLinkPlayerCount_2();
+
+ if (sub_8082E28(taskId) == TRUE
+ || sub_8082E6C(taskId) == TRUE
+ || playerCount < 2)
+ return;
+
+ SetSuppressLinkErrorMessage(TRUE);
+ gTasks[taskId].data[3] = 0;
+ if (IsLinkMaster() == TRUE)
+ {
+ PlaySE(SE_PIN);
+ ShowFieldAutoScrollMessage(gUnknown_081A4932);
+ gTasks[taskId].func = sub_8082FEC;
+ }
+ else
+ {
+ PlaySE(SE_BOO);
+ ShowFieldAutoScrollMessage(gUnknown_081A49B6);
+ gTasks[taskId].func = sub_80831F8;
+ }
+}
+
+static void sub_8082FEC(u8 taskId)
+{
+ if (sub_8082E28(taskId) == TRUE
+ || sub_8082EB8(taskId) == TRUE
+ || sub_8082DF4(taskId) == TRUE)
+ return;
+
+ if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN)
+ {
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].func = sub_808303C;
+ }
+}
+
+static void sub_808303C(u8 taskId)
+{
+ s16 *taskData = gTasks[taskId].data;
+ s32 linkPlayerCount = GetLinkPlayerCount_2();
+
+ if (sub_8082E28(taskId) == TRUE
+ || sub_8082EB8(taskId) == TRUE
+ || sub_8082DF4(taskId) == TRUE)
+ return;
+
+ sub_8082D60(taskId, linkPlayerCount);
+
+ if (!(gMain.newKeys & A_BUTTON))
+ return;
+
+#if ENGLISH
+ if (linkPlayerCount < taskData[1])
+ return;
+
+ sub_80081C8(linkPlayerCount);
+ sub_8082D4C();
+ ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1);
+ ShowFieldAutoScrollMessage((u8 *)gUnknown_081A4975);
+ gTasks[taskId].func = sub_80830E4;
+#elif GERMAN
+ if ((gLinkType == 0x2255 && (u32)linkPlayerCount > 1)
+ || (gLinkType != 0x2255 && taskData[1] <= linkPlayerCount))
+ {
+ sub_80081C8(linkPlayerCount);
+ sub_8082D4C();
+ ConvertIntToDecimalStringN(gStringVar1, linkPlayerCount, STR_CONV_MODE_LEFT_ALIGN, 1);
+ ShowFieldAutoScrollMessage((u8 *)gUnknown_081A4975);
+ gTasks[taskId].func = sub_80830E4;
+ }
+#endif
+}
+
+static void sub_80830E4(u8 taskId)
+{
+ if (sub_8082E28(taskId) == TRUE
+ || sub_8082EB8(taskId) == TRUE
+ || sub_8082DF4(taskId) == TRUE)
+ return;
+
+ if (GetFieldMessageBoxMode() == FIELD_MESSAGE_BOX_HIDDEN)
+ {
+ if (sub_800820C() != GetLinkPlayerCount_2())
+ {
+ ShowFieldAutoScrollMessage(gUnknown_081A4932);
+ gTasks[taskId].func = sub_8082FEC;
+ }
+ else if (gMain.heldKeys & B_BUTTON)
+ {
+ ShowFieldAutoScrollMessage(gUnknown_081A4932);
+ gTasks[taskId].func = sub_8082FEC;
+ }
+ else if (gMain.heldKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8007F4C();
+ gTasks[taskId].func = sub_8083188;
+ }
+ }
+}
+
+static void sub_8083188(u8 taskId)
+{
+ u8 local1 = gTasks[taskId].data[1];
+ u8 local2 = gTasks[taskId].data[2];
+
+ if (sub_8082DF4(taskId) == TRUE
+ || sub_8083444(taskId) == TRUE)
+ return;
+
+ if (GetLinkPlayerCount_2() != sub_800820C())
+ {
+ gTasks[taskId].func = sub_8083418;
+ }
+ else
+ {
+ gScriptResult = sub_8082D9C(local1, local2);
+ if (gScriptResult != 0)
+ gTasks[taskId].func = sub_8083288;
+ }
+}
+
+void sub_80831F8(u8 taskId)
+{
+ u8 local1, local2;
+
+ local1 = gTasks[taskId].data[1];
+ local2 = gTasks[taskId].data[2];
+
+ if (sub_8082E28(taskId) == TRUE
+ || sub_8082DF4(taskId) == TRUE)
+ return;
+
+ gScriptResult = sub_8082D9C(local1, local2);
+ if (gScriptResult == 0)
+ return;
+ if (gScriptResult == 3)
+ {
+ sub_800832C();
+ HideFieldMessageBox();
+ gTasks[taskId].func = sub_80833C4;
+ }
+ else
+ {
+ gFieldLinkPlayerCount = GetLinkPlayerCount_2();
+ gUnknown_03004860 = GetMultiplayerId();
+ sub_80081C8(gFieldLinkPlayerCount);
+ sub_8093390((struct TrainerCard *)gBlockSendBuffer);
+ gTasks[taskId].func = sub_8083314;
+ }
+}
+
+static void sub_8083288(u8 taskId)
+{
+ if (sub_8082DF4(taskId) == TRUE)
+ return;
+
+ if (gScriptResult == 3)
+ {
+ sub_800832C();
+ HideFieldMessageBox();
+ gTasks[taskId].func = sub_80833C4;
+ }
+ else
+ {
+ gFieldLinkPlayerCount = GetLinkPlayerCount_2();
+ gUnknown_03004860 = GetMultiplayerId();
+ sub_80081C8(gFieldLinkPlayerCount);
+ sub_8093390((struct TrainerCard *)gBlockSendBuffer);
+ gTasks[taskId].func = sub_8083314;
+ sub_8007E9C(2);
+ }
+}
+
+static void sub_8083314(u8 taskId)
+{
+ u8 index;
+ struct TrainerCard *trainerCards;
+
+ if (sub_8082DF4(taskId) == TRUE)
+ return;
+
+ if (GetBlockReceivedStatus() != sub_8008198())
+ return;
+
+ index = 0;
+ trainerCards = gTrainerCards;
+ for (index = 0; index < GetLinkPlayerCount(); index++)
+ {
+ void *src;
+ src = gBlockRecvBuffer[index];
+ memcpy(&trainerCards[index], src, sizeof(struct TrainerCard));
+ }
+
+ SetSuppressLinkErrorMessage(FALSE);
+ ResetBlockReceivedFlags();
+ HideFieldMessageBox();
+
+ if (gScriptResult == 1)
+ {
+#if ENGLISH
+ u16 linkType;
+ linkType = gLinkType;
+ // FIXME: sub_8082D4C doesn't take any arguments
+ sub_8082D4C(0x4411, linkType);
+#elif GERMAN
+ if (gLinkType != 0x4411)
+ {
+ if (gLinkType == 0x6601)
+ deUnkValue2 = 1;
+ }
+ sub_8082D4C();
+#endif
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ return;
+ }
+
+ sub_800832C();
+ gTasks[taskId].func = sub_80833C4;
+}
+
+static void sub_80833C4(u8 taskId)
+{
+ if (gReceivedRemoteLinkPlayers == FALSE)
+ {
+ sub_8082D4C();
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_80833EC(u8 taskId)
+{
+ gScriptResult = 5;
+ sub_8082D4C();
+ HideFieldMessageBox();
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+}
+
+static void sub_8083418(u8 taskId)
+{
+ gScriptResult = 6;
+ sub_8082D4C();
+ HideFieldMessageBox();
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+}
+
+static bool8 sub_8083444(u8 taskId)
+{
+ gTasks[taskId].data[4]++;
+ if (gTasks[taskId].data[4] > 600)
+ {
+ gTasks[taskId].func = sub_8083418;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+void sub_808347C(u8 arg0)
+{
+ u32 r3 = 2;
+ u32 r2 = 2;
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 1:
+ r3 = 2;
+ gLinkType = 0x2233;
+ break;
+ case 2:
+ r3 = 2;
+ gLinkType = 0x2244;
+ break;
+ case 5:
+ r3 = 4;
+ r2 = 4;
+ gLinkType = 0x2255;
+ break;
+ }
+
+ sub_8082CD4(r3, r2);
+}
+
+void sub_80834E4(void)
+{
+ gLinkType = 0x1133;
+ gBattleTypeFlags = 0;
+ sub_8082CD4(2, 2);
+}
+
+void sub_808350C(void)
+{
+ gScriptResult = 0;
+ gLinkType = 0x3311;
+ gBattleTypeFlags = 0;
+ sub_8082CD4(2, 4);
+}
+
+static void sub_808353C(u8 taskId)
+{
+ int playerCount;
+ int i;
+
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ if (gScriptResult == 1)
+ {
+ playerCount = GetLinkPlayerCount();
+ for (i = 0; i < playerCount; i++)
+ {
+ if (gLinkPlayers[i].language == LANGUAGE_JAPANESE)
+ {
+ gScriptResult = 7;
+ sub_8008480();
+ gTasks[taskId].data[0] = 1;
+ return;
+ }
+ }
+ }
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ break;
+ case 1:
+ if (gReceivedRemoteLinkPlayers == FALSE)
+ {
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_80835D8(void)
+{
+ int taskId = FindTaskIdByFunc(sub_808353C);
+
+ if (taskId == 0xFF)
+ {
+ taskId = CreateTask(sub_808353C, 80);
+ gTasks[taskId].data[0] = 0;
+ }
+}
+
+void sub_8083614(void)
+{
+ gLinkType = 0x4411;
+ gBattleTypeFlags = 0;
+ sub_8082CD4(2, 4);
+}
+
+void sub_808363C(void)
+{
+ gLinkType = 0x6601;
+ gBattleTypeFlags = 0;
+ sub_8082CD4(4, 4);
+}
+
+u8 sub_8083664(void)
+{
+ if (FuncIsActiveTask(sub_8083710) != FALSE)
+ return 0xFF;
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 1:
+ gLinkType = 0x2233;
+ break;
+ case 2:
+ gLinkType = 0x2244;
+ break;
+ case 5:
+ gLinkType = 0x2255;
+ break;
+ case 3:
+ gLinkType = 0x1111;
+ break;
+ case 4:
+ gLinkType = 0x3322;
+ break;
+ }
+
+ return CreateTask(sub_8083710, 80);
+}
+
+static void sub_8083710(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (data[0] == 0)
+ {
+ OpenLink();
+ ResetLinkPlayers();
+ CreateTask(sub_8083C50, 80);
+ }
+ else if (data[0] >= 10)
+ {
+ gTasks[taskId].func = sub_8083760;
+ }
+ data[0]++;
+}
+
+static void sub_8083760(u8 taskId)
+{
+ if (GetLinkPlayerCount_2() >= 2)
+ {
+ if (IsLinkMaster() == TRUE)
+ gTasks[taskId].func = sub_80837B4;
+ else
+ gTasks[taskId].func = sub_80837EC;
+ }
+}
+
+static void sub_80837B4(u8 taskId)
+{
+ if (sub_800820C() == GetLinkPlayerCount_2())
+ {
+ sub_8007F4C();
+ gTasks[taskId].func = sub_80837EC;
+ }
+}
+
+static void sub_80837EC(u8 taskId)
+{
+ if (gReceivedRemoteLinkPlayers == TRUE
+ && IsLinkPlayerDataExchangeComplete() == TRUE)
+ {
+ sub_800826C();
+ sub_8007B14();
+ DestroyTask(taskId);
+ }
+}
+
+void sub_8083820(void)
+{
+ ScrSpecial_DoSaveDialog();
+}
+
+static void sub_808382C(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ fade_screen(1, 0);
+ gLinkType = 0x2211;
+ ClearLinkCallback_2();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ task->data[0]++;
+ break;
+ case 2:
+ task->data[1]++;
+ if (task->data[1] > 20)
+ task->data[0]++;
+ break;
+ case 3:
+ sub_800832C();
+ task->data[0]++;
+ break;
+ case 4:
+ if (!gReceivedRemoteLinkPlayers)
+ task->data[0]++;
+ break;
+ case 5:
+ if (gLinkPlayers[0].trainerId & 1)
+ current_map_music_set__default_for_battle(BGM_BATTLE32);
+ else
+ current_map_music_set__default_for_battle(BGM_BATTLE20);
+
+ switch (gSpecialVar_0x8004)
+ {
+ case 1:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK;
+ break;
+ case 2:
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE;
+ break;
+ case 5:
+ ReducePlayerPartyToThree();
+ gBattleTypeFlags = BATTLE_TYPE_TRAINER | BATTLE_TYPE_LINK | BATTLE_TYPE_DOUBLE | BATTLE_TYPE_MULTI;
+ break;
+ }
+
+ SetMainCallback2(sub_800E7C4);
+ gMain.savedCallback = sub_8083958;
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+static void sub_8083958(void)
+{
+ Overworld_ResetMapMusic();
+ LoadPlayerParty();
+ SavePlayerBag();
+ sub_810FEFC();
+
+ if (gSpecialVar_0x8004 != 5)
+ UpdateLinkBattleRecords(gUnknown_03004860 ^ 1);
+
+ gMain.savedCallback = sub_805465C;
+ SetMainCallback2(sub_8071B28);
+}
+
+void sub_80839A4(void)
+{
+ if (gSpecialVar_0x8004 == 1 || gSpecialVar_0x8004 == 2 || gSpecialVar_0x8004 == 5)
+ {
+ LoadPlayerParty();
+ SavePlayerBag();
+ }
+ copy_saved_warp2_bank_and_enter_x_to_warp1(0x7F);
+}
+
+void sub_80839D0(void)
+{
+ sub_805559C();
+}
+
+static void sub_80839DC(u8 taskId)
+{
+ struct Task* task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ ShowFieldMessage(gUnknown_081A490C);
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (IsFieldMessageBoxHidden())
+ {
+ sub_8055574();
+ sub_8007270(gSpecialVar_0x8005);
+ task->data[0] = 2;
+ }
+ break;
+ case 2:
+ switch (sub_80554F8())
+ {
+ case 0:
+ break;
+ case 1:
+ HideFieldMessageBox();
+ task->data[0] = 0;
+ SwitchTaskToFollowupFunc(taskId);
+ break;
+ case 2:
+ task->data[0] = 3;
+ break;
+ }
+ break;
+ case 3:
+ sub_8055588();
+ HideFieldMessageBox();
+ MenuZeroFillScreen();
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ break;
+ }
+}
+
+void sub_8083A84(TaskFunc followupFunc)
+{
+ u8 taskId = CreateTask(sub_80839DC, 80);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80839DC, followupFunc);
+ ScriptContext1_Stop();
+}
+
+static void sub_8083AAC(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ ScriptContext2_Enable();
+ fade_screen(1, 0);
+ ClearLinkCallback_2();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ task->data[0]++;
+ break;
+ case 2:
+ gUnknown_020297D8.field0 = 0;
+ gUnknown_020297D8.field1 = 0;
+ m4aMPlayAllStop();
+ sub_800832C();
+ task->data[0]++;
+ break;
+ case 3:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ SetMainCallback2(sub_8047CD8);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void sub_8083B44(u8 taskId)
+{
+ sub_8083B6C();
+ DestroyTask(taskId);
+}
+
+void sub_8083B5C(void)
+{
+ sub_8083A84(sub_8083B44);
+}
+
+static void sub_8083B6C(void)
+{
+ CreateTask(sub_8083AAC, 80);
+}
+
+void sub_8083B80(void)
+{
+ sub_8083B6C();
+ ScriptContext1_Stop();
+}
+
+void sub_8083B90(void)
+{
+ gLinkType = 0x2211;
+ sub_8083A84(sub_808382C);
+}
+
+void unref_sub_8083BB0(void)
+{
+ u8 taskId = CreateTask(sub_80839DC, 80);
+ SetTaskFuncWithFollowupFunc(taskId, sub_80839DC, Task_RecordMixing_Main);
+ ScriptContext1_Stop();
+}
+
+void sub_8083BDC(void)
+{
+ sub_8093130(gSpecialVar_0x8006, c2_exit_to_overworld_1_continue_scripts_restart_music);
+}
+
+bool32 sub_8083BF4(u8 linkPlayerIndex)
+{
+ u32 trainerCardColorIndex;
+
+ gSpecialVar_0x8006 = linkPlayerIndex;
+ StringCopy(gStringVar1, gLinkPlayers[linkPlayerIndex].name);
+
+ trainerCardColorIndex = sub_80934C4(linkPlayerIndex);
+ if (trainerCardColorIndex == 0)
+ return FALSE;
+
+ StringCopy(gStringVar2, gTrainerCardColorNames[trainerCardColorIndex - 1]);
+ return TRUE;
+}
+
+void sub_8083C50(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ task->data[0]++;
+ if (task->data[0] > 300)
+ {
+ CloseLink();
+ SetMainCallback2(CB2_LinkError);
+ DestroyTask(taskId);
+ }
+
+ if (gReceivedRemoteLinkPlayers)
+ DestroyTask(taskId);
+}
+
+static void sub_8083CA4(u8 taskId)
+{
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+}
+
+void unref_sub_8083CC8(u8 taskId)
+{
+ sub_800832C();
+ gTasks[taskId].func = sub_8083CA4;
+} \ No newline at end of file
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 1f2aac9fd..9635514d2 100644
--- a/src/clock.c
+++ b/src/engine/clock.c
@@ -7,7 +7,7 @@
#include "field_weather.h"
#include "lottery_corner.h"
#include "main.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "time_events.h"
#include "tv.h"
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 5858ad8bf..850201ccb 100644
--- a/src/link.c
+++ b/src/engine/link.c
@@ -2,7 +2,6 @@
#include "link.h"
#include "battle.h"
#include "berry.h"
-#include "berry_blender.h"
#include "hall_of_fame.h"
#include "item_use.h"
#include "main.h"
@@ -42,6 +41,8 @@ extern u16 gBattleTypeFlags;
extern u16 word_3004858;
+extern void Blender_SetBankBerryData(u8 bank, u16 itemID);
+
static void InitLinkTestBG(u8, u8, u8, u8);
void InitLinkTestBG_Unused(u8, u8, u8, u8);
void LinkTestScreen();
@@ -556,7 +557,7 @@ static void ProcessRecvCmds(u8 unusedParam)
sub_8007E24();
break;
case 0xAAAB:
- sub_80516C4(i, gRecvCmds[1][i]);
+ Blender_SetBankBerryData(i, gRecvCmds[1][i]);
break;
case 0xCCCC:
#if defined(ENGLISH)
diff --git a/src/load_save.c b/src/engine/load_save.c
index 730aea2b8..8424b1121 100644
--- a/src/load_save.c
+++ b/src/engine/load_save.c
@@ -3,7 +3,7 @@
#include "load_save.h"
#include "main.h"
#include "pokemon.h"
-#include "rom4.h"
+#include "overworld.h"
extern u8 gPlayerPartyCount;
diff --git a/src/main.c b/src/engine/main.c
index afaa0e77a..d7c11b6c8 100644
--- a/src/main.c
+++ b/src/engine/main.c
@@ -9,7 +9,7 @@
#include "play_time.h"
#include "rng.h"
#include "rom3.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "siirtc.h"
#include "sound.h"
diff --git a/src/main_menu.c b/src/engine/main_menu.c
index 09fd06d9e..e0af86f3d 100644
--- a/src/main_menu.c
+++ b/src/engine/main_menu.c
@@ -10,7 +10,7 @@
#include "option_menu.h"
#include "palette.h"
#include "pokeball.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "save_menu_util.h"
#include "songs.h"
@@ -56,32 +56,14 @@ extern const union AffineAnimCmd *const gSpriteAffineAnimTable_81E79AC[];
extern u8 unk_2000000[];
-//Task data
-enum {
- TD_MENULAYOUT,
- TD_SELECTEDMENUITEM,
-};
-
//Menu layouts
-enum {
+enum
+{
HAS_NO_SAVED_GAME, //NEW GAME, OPTION
HAS_SAVED_GAME, //CONTINUE, NEW GAME, OPTION
HAS_MYSTERY_GIFT, //CONTINUE, NEW GAME, MYSTERY EVENTS, OPTION
};
-//Task data
-enum {
- TD_TRAINER_SPRITE_ID = 2, //Trainer sprite being displayed during gender menu
- TD_BGHOFS = 4, //Used to set REG_BG1HOFS and slide the platform around
- TD_SUBTASK_DONE, //Set to true if the spawned task has finished
- TD_GENDER_SELECTION,
- TD_COUNTER,
- TD_BIRCH_SPRITE_ID,
- TD_AZURILL_SPRITE_ID,
- TD_BRENDAN_SPRITE_ID,
- TD_MAY_SPRITE_ID
-};
-
static void CB2_MainMenu(void);
static void VBlankCB_MainMenu(void);
static void CB2_InitMainMenuFromOptions(void);
@@ -180,6 +162,9 @@ static void CB2_InitMainMenuFromOptions(void)
InitMainMenu(TRUE);
}
+#define tMenuLayout data[0]
+#define tMenuSelection data[1]
+
u32 InitMainMenu(u8 a1)
{
u16 savedIme;
@@ -239,7 +224,7 @@ u32 InitMainMenu(u8 a1)
| DISPCNT_WIN0_ON;
taskId = CreateTask(Task_MainMenuCheckSave, 0);
- gTasks[taskId].data[TD_SELECTEDMENUITEM] = 0;
+ gTasks[taskId].tMenuSelection = 0;
return 0;
}
@@ -261,9 +246,9 @@ void Task_MainMenuCheckSave(u8 taskId)
{
case 1:
if (IsMysteryGiftEnabled() == TRUE)
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_MYSTERY_GIFT;
+ gTasks[taskId].tMenuLayout = HAS_MYSTERY_GIFT;
else
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_SAVED_GAME;
+ gTasks[taskId].tMenuLayout = HAS_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuCheckRtc;
break;
@@ -272,7 +257,7 @@ void Task_MainMenuCheckSave(u8 taskId)
MenuPrintMessage(gSaveFileDeletedMessage, 3, 15);
REG_WIN0H = WIN_RANGE(17, 223);
REG_WIN0V = WIN_RANGE(113, 159);
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_NO_SAVED_GAME;
+ gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck;
break;
case 255:
@@ -280,17 +265,17 @@ void Task_MainMenuCheckSave(u8 taskId)
MenuPrintMessage(gSaveFileCorruptMessage, 3, 15);
REG_WIN0H = WIN_RANGE(17, 223);
REG_WIN0V = WIN_RANGE(113, 159);
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_SAVED_GAME;
+ gTasks[taskId].tMenuLayout = HAS_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck;
if (IsMysteryGiftEnabled() == TRUE)
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_MYSTERY_GIFT;
+ gTasks[taskId].tMenuLayout = HAS_MYSTERY_GIFT;
else
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_SAVED_GAME;
+ gTasks[taskId].tMenuLayout = HAS_SAVED_GAME;
break;
case 0:
default:
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_NO_SAVED_GAME;
+ gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuCheckRtc;
break;
case 4:
@@ -298,7 +283,7 @@ void Task_MainMenuCheckSave(u8 taskId)
MenuPrintMessage(gBoardNotInstalledMessage, 3, 15);
REG_WIN0H = WIN_RANGE(17, 223);
REG_WIN0V = WIN_RANGE(113, 159);
- gTasks[taskId].data[TD_MENULAYOUT] = HAS_NO_SAVED_GAME;
+ gTasks[taskId].tMenuLayout = HAS_NO_SAVED_GAME;
gTasks[taskId].func = Task_MainMenuWaitForSaveErrorAck;
return;
}
@@ -383,7 +368,7 @@ void Task_MainMenuDraw(u8 taskId)
LoadPalette(&palette, 241, 2);
}
- switch (gTasks[taskId].data[TD_MENULAYOUT])
+ switch (gTasks[taskId].tMenuLayout)
{
case HAS_NO_SAVED_GAME:
default:
@@ -420,7 +405,7 @@ void Task_MainMenuDraw(u8 taskId)
void Task_MainMenuHighlight(u8 taskId)
{
- HighlightCurrentMenuItem(gTasks[taskId].data[TD_MENULAYOUT], gTasks[taskId].data[TD_SELECTEDMENUITEM]);
+ HighlightCurrentMenuItem(gTasks[taskId].tMenuLayout, gTasks[taskId].tMenuSelection);
gTasks[taskId].func = Task_MainMenuProcessKeyInput;
}
@@ -444,7 +429,7 @@ bool8 MainMenuProcessKeyInput(u8 taskId)
{
s32 menuItemCount;
- switch (gTasks[taskId].data[TD_MENULAYOUT])
+ switch (gTasks[taskId].tMenuLayout)
{
case HAS_NO_SAVED_GAME:
default:
@@ -460,17 +445,17 @@ bool8 MainMenuProcessKeyInput(u8 taskId)
if (gMain.newKeys & DPAD_UP)
{
- if (gTasks[taskId].data[TD_SELECTEDMENUITEM] > 0)
+ if (gTasks[taskId].tMenuSelection > 0)
{
- gTasks[taskId].data[TD_SELECTEDMENUITEM]--;
+ gTasks[taskId].tMenuSelection--;
return TRUE;
}
}
if (gMain.newKeys & DPAD_DOWN)
{
- if (gTasks[taskId].data[TD_SELECTEDMENUITEM] < menuItemCount - 1)
+ if (gTasks[taskId].tMenuSelection < menuItemCount - 1)
{
- gTasks[taskId].data[TD_SELECTEDMENUITEM]++;
+ gTasks[taskId].tMenuSelection++;
return TRUE;
}
}
@@ -499,11 +484,11 @@ void Task_MainMenuPressedA(u8 taskId)
if (gPaletteFade.active)
return;
- switch (gTasks[taskId].data[TD_MENULAYOUT])
+ switch (gTasks[taskId].tMenuLayout)
{
case HAS_NO_SAVED_GAME:
default:
- switch (gTasks[taskId].data[TD_SELECTEDMENUITEM])
+ switch (gTasks[taskId].tMenuSelection)
{
case 0:
default:
@@ -515,7 +500,7 @@ void Task_MainMenuPressedA(u8 taskId)
}
break;
case HAS_SAVED_GAME:
- switch (gTasks[taskId].data[TD_SELECTEDMENUITEM])
+ switch (gTasks[taskId].tMenuSelection)
{
case 0:
default:
@@ -530,7 +515,7 @@ void Task_MainMenuPressedA(u8 taskId)
}
break;
case HAS_MYSTERY_GIFT:
- switch (gTasks[taskId].data[TD_SELECTEDMENUITEM])
+ switch (gTasks[taskId].tMenuSelection)
{
case 0:
default:
@@ -584,6 +569,9 @@ void Task_MainMenuPressedB(u8 taskId)
}
}
+#undef tMenuLayout
+#undef tMenuSelection
+
void HighlightCurrentMenuItem(u8 layout, u8 menuItem)
{
REG_WIN0H = WIN_RANGE(9, 231);
@@ -710,6 +698,16 @@ void PrintBadgeCount(void)
MenuPrint_PixelCoords(buffer, 205, 40, 1);
}
+#define tTrainerSpriteId data[2]
+#define tBGhofs data[4]
+#define tSubtaskIsDone data[5]
+#define tGenderSelection data[6]
+#define tFrameCounter data[7]
+#define tBirchSpriteId data[8]
+#define tAzurillSpriteId data[9]
+#define tBrendanSpriteId data[10]
+#define tMaySpriteId data[11]
+
static void Task_NewGameSpeech1(u8 taskId)
{
SetUpWindowConfig(&gWindowConfig_81E6C3C);
@@ -732,25 +730,25 @@ static void Task_NewGameSpeech1(u8 taskId)
BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
REG_BG1CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(7) | BGCNT_16COLOR | BGCNT_TXT256x256;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP;
- gTasks[taskId].data[TD_BGHOFS] = 0;
+ gTasks[taskId].tBGhofs = 0;
gTasks[taskId].func = Task_NewGameSpeech2;
- gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = 0xFF;
+ gTasks[taskId].tTrainerSpriteId = 0xFF;
gTasks[taskId].data[3] = 0xFF;
- gTasks[taskId].data[TD_COUNTER] = 216; //Wait 3.6 seconds (216 frames) before starting speech
+ gTasks[taskId].tFrameCounter = 216; //Wait 3.6 seconds (216 frames) before starting speech
PlayBGM(BGM_DOORO_X4);
}
static void Task_NewGameSpeech2(u8 taskId)
{
- if (gTasks[taskId].data[TD_COUNTER] != 0)
+ if (gTasks[taskId].tFrameCounter != 0)
{
- gTasks[taskId].data[TD_COUNTER]--;
+ gTasks[taskId].tFrameCounter--;
}
else
{
//Initialize Birch sprite
- u8 spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tBirchSpriteId;
gSprites[spriteId].pos1.x = 136;
gSprites[spriteId].pos1.y = 60;
@@ -758,19 +756,19 @@ static void Task_NewGameSpeech2(u8 taskId)
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeIn(taskId, 10);
StartBackgroundFadeIn(taskId, 20);
- gTasks[taskId].data[TD_COUNTER] = 80;
+ gTasks[taskId].tFrameCounter = 80;
gTasks[taskId].func = Task_NewGameSpeech3;
}
}
static void Task_NewGameSpeech3(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE] != FALSE)
+ if (gTasks[taskId].tSubtaskIsDone)
{
- gSprites[gTasks[taskId].data[TD_BIRCH_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_NORMAL;
- if (gTasks[taskId].data[TD_COUNTER])
+ gSprites[gTasks[taskId].tBirchSpriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
+ if (gTasks[taskId].tFrameCounter)
{
- gTasks[taskId].data[TD_COUNTER]--;
+ gTasks[taskId].tFrameCounter--;
}
else
{
@@ -801,7 +799,7 @@ static void Task_NewGameSpeech5(u8 taskId)
static void Task_NewGameSpeech6(u8 taskId)
{
- u8 spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tAzurillSpriteId;
gSprites[spriteId].pos1.x = 104;
gSprites[spriteId].pos1.y = 72;
@@ -809,7 +807,7 @@ static void Task_NewGameSpeech6(u8 taskId)
gSprites[spriteId].data0 = 0;
CreatePokeballSprite(spriteId, gSprites[spriteId].oam.paletteNum, 0x70, 0x3A, 0, 0, 0x20, 0x0000FFFF);
gTasks[taskId].func = Task_NewGameSpeech7;
- gTasks[taskId].data[TD_COUNTER] = 0;
+ gTasks[taskId].tFrameCounter = 0;
}
static void Task_NewGameSpeech7(u8 taskId)
@@ -817,18 +815,18 @@ static void Task_NewGameSpeech7(u8 taskId)
if (IsCryFinished())
{
//Go on to next sentence after frame 95
- if (gTasks[taskId].data[TD_COUNTER] > 95)
+ if (gTasks[taskId].tFrameCounter > 95)
{
MenuSetText(gSystemText_NewPara);
gTasks[taskId].func = Task_NewGameSpeech8;
}
}
- if (gTasks[taskId].data[TD_COUNTER] < 16384)
+ if (gTasks[taskId].tFrameCounter < 16384)
{
- gTasks[taskId].data[TD_COUNTER]++;
+ gTasks[taskId].tFrameCounter++;
//Play Azurill cry at frame 32
- if (gTasks[taskId].data[TD_COUNTER] == 32)
+ if (gTasks[taskId].tFrameCounter == 32)
PlayCry1(SPECIES_AZURILL, 0);
}
}
@@ -859,11 +857,11 @@ static void Task_NewGameSpeech10(u8 taskId)
{
if (BirchSpeechUpdateWindowText())
{
- gSprites[gTasks[taskId].data[TD_BIRCH_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND;
- gSprites[gTasks[taskId].data[TD_AZURILL_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[gTasks[taskId].tBirchSpriteId].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[gTasks[taskId].tAzurillSpriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeOut(taskId, 2);
StartBackgroundFadeOut(taskId, 1);
- gTasks[taskId].data[TD_COUNTER] = 64;
+ gTasks[taskId].tFrameCounter = 64;
gTasks[taskId].func = Task_NewGameSpeech11;
}
}
@@ -871,41 +869,41 @@ static void Task_NewGameSpeech10(u8 taskId)
//Slide platform away to the right
static void Task_NewGameSpeech11(u8 taskId)
{
- if (gTasks[taskId].data[TD_BGHOFS] != -60)
+ if (gTasks[taskId].tBGhofs != -60)
{
- gTasks[taskId].data[TD_BGHOFS] -= 2;
- REG_BG1HOFS = gTasks[taskId].data[TD_BGHOFS];
+ gTasks[taskId].tBGhofs -= 2;
+ REG_BG1HOFS = gTasks[taskId].tBGhofs;
}
else
{
- gTasks[taskId].data[TD_BGHOFS] = -60;
+ gTasks[taskId].tBGhofs = -60;
gTasks[taskId].func = Task_NewGameSpeech12;
}
}
static void Task_NewGameSpeech12(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
//Hide Birch and Azurill
- gSprites[gTasks[taskId].data[TD_BIRCH_SPRITE_ID]].invisible = TRUE;
- gSprites[gTasks[taskId].data[TD_AZURILL_SPRITE_ID]].invisible = TRUE;
+ gSprites[gTasks[taskId].tBirchSpriteId].invisible = TRUE;
+ gSprites[gTasks[taskId].tAzurillSpriteId].invisible = TRUE;
- if (gTasks[taskId].data[TD_COUNTER])
+ if (gTasks[taskId].tFrameCounter)
{
- gTasks[taskId].data[TD_COUNTER]--;
+ gTasks[taskId].tFrameCounter--;
}
else
{
//Initialize Brendan sprite
- u8 spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tBrendanSpriteId;
gSprites[spriteId].pos1.x = 180;
gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
- gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId;
- gTasks[taskId].data[TD_GENDER_SELECTION] = 0;
+ gTasks[taskId].tTrainerSpriteId = spriteId;
+ gTasks[taskId].tGenderSelection = 0;
StartSpriteFadeIn(taskId, 2);
StartBackgroundFadeIn(taskId, 1);
gTasks[taskId].func = Task_NewGameSpeech13;
@@ -915,9 +913,9 @@ static void Task_NewGameSpeech12(u8 taskId)
static void Task_NewGameSpeech13(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
- gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_NORMAL;
+ gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
gTasks[taskId].func = Task_NewGameSpeech14;
}
}
@@ -964,11 +962,11 @@ static void Task_NewGameSpeech16(u8 taskId)
cursorPos = GetMenuCursorPos();
- if (cursorPos != gTasks[taskId].data[TD_GENDER_SELECTION])
+ if (cursorPos != gTasks[taskId].tGenderSelection)
{
//Menu selection changed. Slide Brendan or May out and slide the other in
- gTasks[taskId].data[TD_GENDER_SELECTION] = cursorPos;
- gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND;
+ gTasks[taskId].tGenderSelection = cursorPos;
+ gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeOut(taskId, 0);
gTasks[taskId].func = Task_NewGameSpeech17;
}
@@ -977,9 +975,9 @@ static void Task_NewGameSpeech16(u8 taskId)
//Slide old trainer sprite off right of screen
static void Task_NewGameSpeech17(u8 taskId)
{
- u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tTrainerSpriteId;
- if (gTasks[taskId].data[TD_SUBTASK_DONE] == FALSE)
+ if (gTasks[taskId].tSubtaskIsDone == FALSE)
{
gSprites[spriteId].pos1.x += 4; //Move sprite right
}
@@ -988,14 +986,14 @@ static void Task_NewGameSpeech17(u8 taskId)
gSprites[spriteId].invisible = TRUE;
//Set up new trainer sprite
- if (gTasks[taskId].data[TD_GENDER_SELECTION])
- spriteId = gTasks[taskId].data[TD_MAY_SPRITE_ID];
+ if (gTasks[taskId].tGenderSelection)
+ spriteId = gTasks[taskId].tMaySpriteId;
else
- spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID];
+ spriteId = gTasks[taskId].tBrendanSpriteId;
gSprites[spriteId].pos1.x = 240;
gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
- gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId;
+ gTasks[taskId].tTrainerSpriteId = spriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeIn(taskId, 0);
gTasks[taskId].func = Task_NewGameSpeech18;
@@ -1005,7 +1003,7 @@ static void Task_NewGameSpeech17(u8 taskId)
//Slide new trainer sprite from right of screen
static void Task_NewGameSpeech18(u8 taskId)
{
- u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tTrainerSpriteId;
if (gSprites[spriteId].pos1.x > 180)
{
@@ -1014,7 +1012,7 @@ static void Task_NewGameSpeech18(u8 taskId)
else
{
gSprites[spriteId].pos1.x = 180;
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
gTasks[taskId].func = Task_NewGameSpeech16; //Go back to gender menu
@@ -1106,7 +1104,7 @@ static void Task_NewGameSpeech25(u8 taskId)
case 0: //YES
PlaySE(SE_SELECT);
MenuZeroFillWindowRect(2, 1, 8, 7);
- gSprites[gTasks[taskId].data[TD_TRAINER_SPRITE_ID]].oam.objMode = ST_OAM_OBJ_BLEND;
+ gSprites[gTasks[taskId].tTrainerSpriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeOut(taskId, 2);
StartBackgroundFadeOut(taskId, 1);
gTasks[taskId].func = Task_NewGameSpeech26; //Continue
@@ -1122,10 +1120,10 @@ static void Task_NewGameSpeech25(u8 taskId)
static void Task_NewGameSpeech26(u8 taskId)
{
- if (gTasks[taskId].data[TD_BGHOFS])
+ if (gTasks[taskId].tBGhofs)
{
- gTasks[taskId].data[TD_BGHOFS] += 2;
- REG_BG1HOFS = gTasks[taskId].data[TD_BGHOFS];
+ gTasks[taskId].tBGhofs += 2;
+ REG_BG1HOFS = gTasks[taskId].tBGhofs;
}
else
{
@@ -1135,23 +1133,23 @@ static void Task_NewGameSpeech26(u8 taskId)
static void Task_NewGameSpeech27(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
s16 spriteId;
//Hide Brendan and May sprites
- spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID];
+ spriteId = gTasks[taskId].tBrendanSpriteId;
gSprites[spriteId].invisible = TRUE;
- spriteId = gTasks[taskId].data[TD_MAY_SPRITE_ID];
+ spriteId = gTasks[taskId].tMaySpriteId;
gSprites[spriteId].invisible = TRUE;
//Fade in Birch and Azurill
- spriteId = (u8)gTasks[taskId].data[TD_BIRCH_SPRITE_ID];
+ spriteId = (u8)gTasks[taskId].tBirchSpriteId;
gSprites[spriteId].pos1.x = 136;
gSprites[spriteId].pos1.y = 64;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
- spriteId = (u8)gTasks[taskId].data[TD_AZURILL_SPRITE_ID];
+ spriteId = (u8)gTasks[taskId].tAzurillSpriteId;
gSprites[spriteId].pos1.x = 104;
gSprites[spriteId].pos1.y = 72;
gSprites[spriteId].invisible = FALSE;
@@ -1170,27 +1168,27 @@ static void Task_NewGameSpeech27(u8 taskId)
static void Task_NewGameSpeech28(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
s16 spriteId;
- spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID];
+ spriteId = gTasks[taskId].tBirchSpriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
- spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID];
+ spriteId = gTasks[taskId].tAzurillSpriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
if (BirchSpeechUpdateWindowText())
{
//Fade out Birch and Azurill
- spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID];
+ spriteId = gTasks[taskId].tBirchSpriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
- spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID];
+ spriteId = gTasks[taskId].tAzurillSpriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
StartSpriteFadeOut(taskId, 2);
StartBackgroundFadeOut(taskId, 1);
- gTasks[taskId].data[TD_COUNTER] = 64;
+ gTasks[taskId].tFrameCounter = 64;
gTasks[taskId].func = Task_NewGameSpeech29;
}
}
@@ -1198,19 +1196,19 @@ static void Task_NewGameSpeech28(u8 taskId)
static void Task_NewGameSpeech29(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
s16 spriteId;
//Hide Birch and Azurill
- spriteId = gTasks[taskId].data[TD_BIRCH_SPRITE_ID];
+ spriteId = gTasks[taskId].tBirchSpriteId;
gSprites[spriteId].invisible = TRUE;
- spriteId = gTasks[taskId].data[TD_AZURILL_SPRITE_ID];
+ spriteId = gTasks[taskId].tAzurillSpriteId;
gSprites[spriteId].invisible = TRUE;
- if (gTasks[taskId].data[TD_COUNTER])
+ if (gTasks[taskId].tFrameCounter)
{
- gTasks[taskId].data[TD_COUNTER]--;
+ gTasks[taskId].tFrameCounter--;
}
else
{
@@ -1218,14 +1216,14 @@ static void Task_NewGameSpeech29(u8 taskId)
//Fade in trainer and background
if (gSaveBlock2.playerGender)
- spriteId = (u8)gTasks[taskId].data[TD_MAY_SPRITE_ID];
+ spriteId = (u8)gTasks[taskId].tMaySpriteId;
else
- spriteId = (u8)gTasks[taskId].data[TD_BRENDAN_SPRITE_ID];
+ spriteId = (u8)gTasks[taskId].tBrendanSpriteId;
gSprites[spriteId].pos1.x = 120;
gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_BLEND;
- gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId;
+ gTasks[taskId].tTrainerSpriteId = spriteId;
StartSpriteFadeIn(taskId, 2);
StartBackgroundFadeIn(taskId, 1);
@@ -1238,18 +1236,18 @@ static void Task_NewGameSpeech29(u8 taskId)
static void Task_NewGameSpeech30(u8 taskId)
{
- if (gTasks[taskId].data[TD_SUBTASK_DONE])
+ if (gTasks[taskId].tSubtaskIsDone)
{
s16 spriteId;
- spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
+ spriteId = gTasks[taskId].tTrainerSpriteId;
gSprites[spriteId].oam.objMode = ST_OAM_OBJ_NORMAL;
if (BirchSpeechUpdateWindowText())
{
u8 spriteId;
- spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
+ spriteId = gTasks[taskId].tTrainerSpriteId;
gSprites[spriteId].oam.affineMode = 1;
gSprites[spriteId].affineAnims = gSpriteAffineAnimTable_81E79AC;
InitSpriteAffineAnim(&gSprites[spriteId]);
@@ -1264,7 +1262,7 @@ static void Task_NewGameSpeech30(u8 taskId)
static void Task_NewGameSpeech31(u8 taskId)
{
- u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tTrainerSpriteId;
if (gSprites[spriteId].affineAnimEnded)
gTasks[taskId].func = Task_NewGameSpeech32;
@@ -1274,7 +1272,7 @@ static void Task_NewGameSpeech32(u8 taskId)
{
if (!gPaletteFade.active)
{
- u8 spriteId = gTasks[taskId].data[TD_TRAINER_SPRITE_ID];
+ u8 spriteId = gTasks[taskId].tTrainerSpriteId;
gSprites[spriteId].callback = nullsub_34;
REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON;
BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0x10, 0xFFFF);
@@ -1328,7 +1326,7 @@ void CB_ContinueNewGameSpeechPart2()
taskId = CreateTask(Task_NewGameSpeech23, 0);
- gTasks[taskId].data[TD_BGHOFS] = -60;
+ gTasks[taskId].tBGhofs = -60;
remove_some_task();
ResetSpriteData();
@@ -1340,20 +1338,20 @@ void CB_ContinueNewGameSpeechPart2()
if (gSaveBlock2.playerGender != MALE)
{
- gTasks[taskId].data[TD_GENDER_SELECTION] = FEMALE;
- spriteId = gTasks[taskId].data[TD_MAY_SPRITE_ID];
+ gTasks[taskId].tGenderSelection = FEMALE;
+ spriteId = gTasks[taskId].tMaySpriteId;
}
else
{
- gTasks[taskId].data[TD_GENDER_SELECTION] = MALE;
- spriteId = gTasks[taskId].data[TD_BRENDAN_SPRITE_ID];
+ gTasks[taskId].tGenderSelection = MALE;
+ spriteId = gTasks[taskId].tBrendanSpriteId;
}
gSprites[spriteId].pos1.x = 180;
gSprites[spriteId].pos1.y = 60;
gSprites[spriteId].invisible = FALSE;
- gTasks[taskId].data[TD_TRAINER_SPRITE_ID] = spriteId;
+ gTasks[taskId].tTrainerSpriteId = spriteId;
REG_BG1HOFS = -60;
@@ -1412,56 +1410,67 @@ void AddBirchSpeechObjects(u8 taskId)
gSprites[spriteId].callback = nullsub_34;
gSprites[spriteId].oam.priority = 0;
gSprites[spriteId].invisible = 1;
- gTasks[taskId].data[TD_BIRCH_SPRITE_ID] = spriteId;
+ gTasks[taskId].tBirchSpriteId = spriteId;
spriteId = CreateAzurillSprite(0x68, 0x48);
gSprites[spriteId].callback = nullsub_34;
gSprites[spriteId].oam.priority = 0;
gSprites[spriteId].invisible = 1;
- gTasks[taskId].data[TD_AZURILL_SPRITE_ID] = spriteId;
+ gTasks[taskId].tAzurillSpriteId = spriteId;
//Create Brendan sprite
- spriteId = CreateTrainerSprite_BirchSpeech(0, 120, 60, 0, unk_2000000);
+ spriteId = CreateTrainerSprite(0, 120, 60, 0, unk_2000000);
gSprites[spriteId].callback = nullsub_34;
gSprites[spriteId].invisible = 1;
gSprites[spriteId].oam.priority = 0;
- gTasks[taskId].data[TD_BRENDAN_SPRITE_ID] = spriteId;
+ gTasks[taskId].tBrendanSpriteId = spriteId;
//Create May sprite
- spriteId = CreateTrainerSprite_BirchSpeech(1, 120, 60, 0, unk_2000000 + 0x800);
+ spriteId = CreateTrainerSprite(1, 120, 60, 0, unk_2000000 + 0x800);
gSprites[spriteId].callback = nullsub_34;
gSprites[spriteId].invisible = 1;
gSprites[spriteId].oam.priority = 0;
- gTasks[taskId].data[TD_MAY_SPRITE_ID] = spriteId;
+ gTasks[taskId].tMaySpriteId = spriteId;
}
-enum {
- TD_PARENT_TASK_ID,
- TD_EVA, //EVA coefficient of REG_BLDALPHA
- TD_EVB, //EVB coefficient of REG_BLDALPHA
- TD_INTERVAL,
- TD_FRAMECOUNTER
-};
+#undef tTrainerSpriteId
+#undef tBGhofs
+//#undef tSubtaskIsDone
+#undef tGenderSelection
+#undef tFrameCounter
+#undef tBirchSpriteId
+#undef tAzurillSpriteId
+#undef tBrendanSpriteId
+#undef tMaySpriteId
+
+
+// Sprite Fade task
+
+#define tMainTaskId data[0]
+#define tBlendEVA data[1]
+#define tBlendEVB data[2]
+#define tUpdateInterval data[3]
+#define tFrameCounter data[4]
static void Task_SpriteFadeOut(u8 taskId)
{
- if (gTasks[taskId].data[TD_EVA] == 0)
+ if (gTasks[taskId].tBlendEVA == 0)
{
- gTasks[gTasks[taskId].data[TD_PARENT_TASK_ID]].data[TD_SUBTASK_DONE] = TRUE;
+ gTasks[gTasks[taskId].tMainTaskId].tSubtaskIsDone = TRUE;
DestroyTask(taskId);
}
else
{
- if (gTasks[taskId].data[TD_FRAMECOUNTER])
+ if (gTasks[taskId].tFrameCounter)
{
- gTasks[taskId].data[TD_FRAMECOUNTER]--;
+ gTasks[taskId].tFrameCounter--;
}
else
{
- gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL];
- gTasks[taskId].data[TD_EVA]--;
- gTasks[taskId].data[TD_EVB]++;
- REG_BLDALPHA = gTasks[taskId].data[TD_EVA] + (gTasks[taskId].data[TD_EVB] * 256);
+ gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval;
+ gTasks[taskId].tBlendEVA--;
+ gTasks[taskId].tBlendEVB++;
+ REG_BLDALPHA = gTasks[taskId].tBlendEVA + (gTasks[taskId].tBlendEVB * 256);
}
}
}
@@ -1474,33 +1483,33 @@ static void StartSpriteFadeOut(u8 taskId, u8 interval)
REG_BLDCNT = 592;
REG_BLDALPHA = 16;
REG_BLDY = 0;
- gTasks[taskId].data[TD_SUBTASK_DONE] = FALSE;
+ gTasks[taskId].tSubtaskIsDone = FALSE;
newTaskId = CreateTask(Task_SpriteFadeOut, 0);
- gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId;
- gTasks[newTaskId].data[TD_EVA] = 16;
- gTasks[newTaskId].data[TD_EVB] = 0;
- gTasks[newTaskId].data[TD_INTERVAL] = interval;
- gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval;
+ gTasks[newTaskId].tMainTaskId = taskId;
+ gTasks[newTaskId].tBlendEVA = 16;
+ gTasks[newTaskId].tBlendEVB = 0;
+ gTasks[newTaskId].tUpdateInterval = interval;
+ gTasks[newTaskId].tFrameCounter = interval;
}
static void Task_SpriteFadeIn(u8 taskId)
{
- if (gTasks[taskId].data[TD_EVA] == 16)
+ if (gTasks[taskId].tBlendEVA == 16)
{
- gTasks[gTasks[taskId].data[TD_PARENT_TASK_ID]].data[TD_SUBTASK_DONE] = TRUE;
+ gTasks[gTasks[taskId].tMainTaskId].tSubtaskIsDone = TRUE;
DestroyTask(taskId);
}
- else if (gTasks[taskId].data[TD_FRAMECOUNTER])
+ else if (gTasks[taskId].tFrameCounter)
{
- gTasks[taskId].data[TD_FRAMECOUNTER]--;
+ gTasks[taskId].tFrameCounter--;
}
else
{
- gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL];
- gTasks[taskId].data[TD_EVA]++;
- gTasks[taskId].data[TD_EVB]--;
- REG_BLDALPHA = gTasks[taskId].data[TD_EVA] + (gTasks[taskId].data[TD_EVB] * 256);
+ gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval;
+ gTasks[taskId].tBlendEVA++;
+ gTasks[taskId].tBlendEVB--;
+ REG_BLDALPHA = gTasks[taskId].tBlendEVA + (gTasks[taskId].tBlendEVB * 256);
}
}
@@ -1512,36 +1521,49 @@ static void StartSpriteFadeIn(u8 taskId, u8 interval)
REG_BLDCNT = 592;
REG_BLDALPHA = 4096;
REG_BLDY = 0;
- gTasks[taskId].data[TD_SUBTASK_DONE] = FALSE;
+ gTasks[taskId].tSubtaskIsDone = FALSE;
newTaskId = CreateTask(Task_SpriteFadeIn, 0);
- gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId;
- gTasks[newTaskId].data[TD_EVA] = 0;
- gTasks[newTaskId].data[TD_EVB] = 16;
- gTasks[newTaskId].data[TD_INTERVAL] = interval;
- gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval;
+ gTasks[newTaskId].tMainTaskId = taskId;
+ gTasks[newTaskId].tBlendEVA = 0;
+ gTasks[newTaskId].tBlendEVB = 16;
+ gTasks[newTaskId].tUpdateInterval = interval;
+ gTasks[newTaskId].tFrameCounter = interval;
}
-enum {
- TD_FADELEVEL = 1,
- TD_DELAY,
-};
+#undef tMainTaskId
+#undef tBlendEVA
+#undef tBlendEVB
+#undef tUpdateInterval
+#undef tFrameCounter
+
+
+// Background fade task
+
+#define tMainTaskId data[0]
+#define tFadeLevel data[1]
+#define tDelay data[2]
+#define tUpdateInterval data[3]
+#define tFrameCounter data[4]
static void HandleFloorShadowFadeOut(u8 taskId)
{
- if (gTasks[taskId].data[TD_DELAY])
- gTasks[taskId].data[TD_DELAY]--;
+ if (gTasks[taskId].tDelay)
+ gTasks[taskId].tDelay--;
else
{
- if (gTasks[taskId].data[TD_FADELEVEL] == 8)
+ if (gTasks[taskId].tFadeLevel == 8)
DestroyTask(taskId);
- else if (gTasks[taskId].data[TD_FRAMECOUNTER])
- gTasks[taskId].data[TD_FRAMECOUNTER]--;
else
{
- gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL];
- gTasks[taskId].data[TD_FADELEVEL]++;
- LoadPalette(&gUnknown_081E795C[gTasks[taskId].data[TD_FADELEVEL]], 1, 0x10);
+ if (gTasks[taskId].tFrameCounter)
+ gTasks[taskId].tFrameCounter--;
+ else
+ {
+ gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval;
+ gTasks[taskId].tFadeLevel++;
+ LoadPalette(&gUnknown_081E795C[gTasks[taskId].tFadeLevel], 1, 0x10);
+ }
}
}
}
@@ -1550,30 +1572,30 @@ static void HandleFloorShadowFadeOut(u8 taskId)
static void StartBackgroundFadeOut(u8 taskId, u8 interval)
{
u8 newTaskId = CreateTask(HandleFloorShadowFadeOut, 0);
- gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId;
- gTasks[newTaskId].data[TD_FADELEVEL] = 0;
- gTasks[newTaskId].data[TD_DELAY] = 8;
- gTasks[newTaskId].data[TD_INTERVAL] = interval;
- gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval;
+ gTasks[newTaskId].tMainTaskId = taskId;
+ gTasks[newTaskId].tFadeLevel = 0;
+ gTasks[newTaskId].tDelay = 8;
+ gTasks[newTaskId].tUpdateInterval = interval;
+ gTasks[newTaskId].tFrameCounter = interval;
}
static void HandleFloorShadowFadeIn(u8 taskId)
{
- if (gTasks[taskId].data[TD_DELAY])
- gTasks[taskId].data[TD_DELAY]--;
+ if (gTasks[taskId].tDelay)
+ gTasks[taskId].tDelay--;
else
{
- if (gTasks[taskId].data[TD_FADELEVEL] == 0)
+ if (gTasks[taskId].tFadeLevel == 0)
DestroyTask(taskId);
else
{
- if (gTasks[taskId].data[TD_FRAMECOUNTER])
- gTasks[taskId].data[TD_FRAMECOUNTER]--;
+ if (gTasks[taskId].tFrameCounter)
+ gTasks[taskId].tFrameCounter--;
else
{
- gTasks[taskId].data[TD_FRAMECOUNTER] = gTasks[taskId].data[TD_INTERVAL];
- gTasks[taskId].data[TD_FADELEVEL]--;
- LoadPalette(&gUnknown_081E795C[gTasks[taskId].data[TD_FADELEVEL]], 1, 0x10);
+ gTasks[taskId].tFrameCounter = gTasks[taskId].tUpdateInterval;
+ gTasks[taskId].tFadeLevel--;
+ LoadPalette(&gUnknown_081E795C[gTasks[taskId].tFadeLevel], 1, 0x10);
}
}
}
@@ -1583,12 +1605,18 @@ static void HandleFloorShadowFadeIn(u8 taskId)
static void StartBackgroundFadeIn(u8 taskId, u8 interval)
{
u8 newTaskId = CreateTask(HandleFloorShadowFadeIn, 0);
- gTasks[newTaskId].data[TD_PARENT_TASK_ID] = taskId;
- gTasks[newTaskId].data[TD_FADELEVEL] = 8;
- gTasks[newTaskId].data[TD_DELAY] = 8;
- gTasks[newTaskId].data[TD_INTERVAL] = interval;
- gTasks[newTaskId].data[TD_FRAMECOUNTER] = interval;
-}
+ gTasks[newTaskId].tMainTaskId = taskId;
+ gTasks[newTaskId].tFadeLevel = 8;
+ gTasks[newTaskId].tDelay = 8;
+ gTasks[newTaskId].tUpdateInterval = interval;
+ gTasks[newTaskId].tFrameCounter = interval;
+}
+
+#undef tMainTaskId
+#undef tFadeLevel
+#undef tDelay
+#undef tUpdateInterval
+#undef tFrameCounter
static void CreateGenderMenu(u8 left, u8 top)
{
diff --git a/src/menu.c b/src/engine/menu.c
index ef458124b..a9c4aaa43 100644
--- a/src/menu.c
+++ b/src/engine/menu.c
@@ -154,9 +154,9 @@ void MenuPrint(const u8 *str, u8 left, u8 top)
sub_8003460(gMenuWindowPtr, str, gMenuTextTileOffset, left, top);
}
-void MenuZeroFillWindowRect(u8 a1, u8 a2, u8 a3, u8 a4)
+void MenuZeroFillWindowRect(u8 left, u8 top, u8 right, u8 bottom)
{
- ZeroFillWindowRect(gMenuWindowPtr, a1, a2, a3, a4);
+ ZeroFillWindowRect(gMenuWindowPtr, left, top, right, bottom);
}
void MenuFillWindowRectWithBlankTile(u8 left, u8 top, u8 right, u8 bottom)
@@ -205,7 +205,7 @@ void MenuPrintMessage(const u8 *str, u8 left, u8 top)
sub_8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, left, top);
}
-void sub_8072044(const u8 *str)
+void MenuPrintMessageDefaultCoords(const u8 *str)
{
sub_8002EB0(gMenuWindowPtr, str, gMenuTextTileOffset, 2, 15);
}
@@ -571,7 +571,7 @@ void PrintMenuItems(u8 left, u8 top, u8 menuItemCount, const struct MenuAction m
MenuPrint(menuItems[i].text, left, top + 2 * i);
}
-void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction menuItems[], const u8 *order)
+void PrintMenuItemsReordered(u8 left, u8 top, u8 menuItemCount, const struct MenuAction2 menuItems[], const u8 *order)
{
u8 i;
@@ -630,82 +630,82 @@ __attribute__((naked))
int sub_8072AB0(const u8 *str, u8 left, u16 top, u8 width, u8 height, u32 a6)
{
asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- sub sp, 0x10\n\
- mov r12, r0\n\
- ldr r0, [sp, 0x24]\n\
- ldr r4, [sp, 0x28]\n\
- str r4, [sp, 0xC]\n\
- lsls r1, 24\n\
- lsrs r5, r1, 24\n\
- lsls r2, 16\n\
- lsrs r4, r2, 16\n\
- lsls r3, 24\n\
- lsrs r6, r3, 24\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- ldr r0, _08072AF8 @ =gMenuWindowPtr\n\
- ldr r0, [r0]\n\
- ldr r1, _08072AFC @ =gMenuTextTileOffset\n\
- ldrh r3, [r1]\n\
- str r5, [sp]\n\
- str r4, [sp, 0x4]\n\
- str r6, [sp, 0x8]\n\
- movs r1, 0\n\
- mov r2, r12\n\
- bl sub_8004FD0\n\
- adds r1, r0, 0\n\
- lsls r1, 24\n\
- lsrs r2, r1, 24\n\
- movs r3, 0x7\n\
- ands r3, r5\n\
- cmp r3, 0\n\
- bne _08072B00\n\
- adds r1, r6, 0x7\n\
- asrs r1, 3\n\
- subs r1, 0x1\n\
- b _08072B0C\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x10\n\
+ mov r12, r0\n\
+ ldr r0, [sp, 0x24]\n\
+ ldr r4, [sp, 0x28]\n\
+ str r4, [sp, 0xC]\n\
+ lsls r1, 24\n\
+ lsrs r5, r1, 24\n\
+ lsls r2, 16\n\
+ lsrs r4, r2, 16\n\
+ lsls r3, 24\n\
+ lsrs r6, r3, 24\n\
+ lsls r0, 24\n\
+ lsrs r7, r0, 24\n\
+ ldr r0, _08072AF8 @ =gMenuWindowPtr\n\
+ ldr r0, [r0]\n\
+ ldr r1, _08072AFC @ =gMenuTextTileOffset\n\
+ ldrh r3, [r1]\n\
+ str r5, [sp]\n\
+ str r4, [sp, 0x4]\n\
+ str r6, [sp, 0x8]\n\
+ movs r1, 0\n\
+ mov r2, r12\n\
+ bl sub_8004FD0\n\
+ adds r1, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r2, r1, 24\n\
+ movs r3, 0x7\n\
+ ands r3, r5\n\
+ cmp r3, 0\n\
+ bne _08072B00\n\
+ adds r1, r6, 0x7\n\
+ asrs r1, 3\n\
+ subs r1, 0x1\n\
+ b _08072B0C\n\
+ .align 2, 0\n\
_08072AF8: .4byte gMenuWindowPtr\n\
_08072AFC: .4byte gMenuTextTileOffset\n\
_08072B00:\n\
- adds r3, r6, r3\n\
- subs r1, r3, 0x1\n\
- cmp r1, 0\n\
- bge _08072B0A\n\
- adds r1, r3, 0x6\n\
+ adds r3, r6, r3\n\
+ subs r1, r3, 0x1\n\
+ cmp r1, 0\n\
+ bge _08072B0A\n\
+ adds r1, r3, 0x6\n\
_08072B0A:\n\
- asrs r1, 3\n\
+ asrs r1, 3\n\
_08072B0C:\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r6, r1, 0\n\
- lsrs r5, 3\n\
- adds r1, r7, 0x7\n\
- asrs r1, 3\n\
- lsls r1, 24\n\
- lsrs r7, r1, 24\n\
- lsrs r4, 3\n\
- cmp r2, r7\n\
- bcs _08072B3E\n\
- lsls r1, r2, 1\n\
- adds r1, r4, r1\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r2, r5, r6\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- adds r3, r7, r4\n\
- subs r3, 0x1\n\
- lsls r3, 24\n\
- lsrs r3, 24\n\
- adds r0, r5, 0\n\
- bl MenuFillWindowRectWithBlankTile\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r6, r1, 0\n\
+ lsrs r5, 3\n\
+ adds r1, r7, 0x7\n\
+ asrs r1, 3\n\
+ lsls r1, 24\n\
+ lsrs r7, r1, 24\n\
+ lsrs r4, 3\n\
+ cmp r2, r7\n\
+ bcs _08072B3E\n\
+ lsls r1, r2, 1\n\
+ adds r1, r4, r1\n\
+ lsls r1, 24\n\
+ lsrs r1, 24\n\
+ adds r2, r5, r6\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ adds r3, r7, r4\n\
+ subs r3, 0x1\n\
+ lsls r3, 24\n\
+ lsrs r3, 24\n\
+ adds r0, r5, 0\n\
+ bl MenuFillWindowRectWithBlankTile\n\
_08072B3E:\n\
- add sp, 0x10\n\
- pop {r4-r7}\n\
- pop {r1}\n\
- bx r1\n\
+ add sp, 0x10\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
.syntax divided\n");
}
#endif
diff --git a/src/menu_cursor.c b/src/engine/menu_cursor.c
index 64ab36573..d43be2a2f 100644
--- a/src/menu_cursor.c
+++ b/src/engine/menu_cursor.c
@@ -186,73 +186,67 @@ void sub_814A904(void)
return;
}
+#if ENGLISH
#ifdef NONMATCHING
// Fix pls
-void sub_814A958(u8 a1)
+void sub_814A958(u8 a)
{
- struct Subsprite *cursub;
- u8 v2; // r7@1
- s16 v3; // r2@1
- s32 v5; // r0@1
- s32 v6; // r3@1
- s32 v7; // r5@3
- int v8; // r7@9
- s16 negone;
-
- cursub = &gMenuCursorSubsprites[0];
- negone = -1;
- cursub = (struct Subsprite){0,2};
- cursub->x = negone;
- cursub++;
-
- v2 = 1;
- v3 = 1;
- v5 = (a1 - 1) << 0x10;
- v6 = v5 >> 0x10;
- if ((v5 >> 0x10) > 7)
+ u8 r7;
+ struct Subsprite *r4 = &gMenuCursorSubsprites[0];
+ s16 r2 = -1;
+ s32 _a = a;
+ s16 r5;
+ s16 i;
+
+ *r4 = (struct Subsprite){.x = 0, .y = 0, .shape = 2, .size = 0, .tileOffset = 0, .priority = 0};
+ r4->x = r2;
+ r4++;
+ r7 = 1;
+ r2 = 1;
+ r5 = a;
+ i = r5;
+ while ((i -= r2) >= 8)
{
- do
+ if (i > 0x1F)
{
- if (v6 > 0x1F)
+ *r4 = gUnknown_0842F780;
+ r4->x = r2;
+ r2 += 32;
+ r5 = a;
+ }
+ //_0814A9D4
+ else
+ {
+ r5 = a;
+ if (_a > 0x27 && i > 8)
{
- *cursub = gUnknown_0842F780;
- cursub->x = v3;
- v3 = ((v3 << 16) + 0x200000) >> 16;
- v7 = a1 << 16;
+ *r4 = gUnknown_0842F780;
+ r4->x = (r2 - 32) + (i & ~7);
+ r2 += i & 0x18;
}
+ //_0814AA0A
else
{
- v7 = a1 << 16;
- if (a1 <= 0x27 || v6 <= 0x8)
- {
- *cursub = gUnknown_0842F788;
- cursub->x = v3;
- v3 = ((v3 << 16) + 0x80000) >> 16;
- }
- else
- {
- *cursub = gUnknown_0842F780;
- cursub->x = v3 - 0x20 + (v6 & 0xFFF8);
- v3 = (v3 + (v6 & 0x18)) & negone;
- }
+ *r4 = gUnknown_0842F788;
+ r4->x = r2;
+ r2 += 8;
}
-
- cursub++;
- v2 = v2 + 1;
- v6 = ((v7 >> 16) - v3) & 0xFFFF;
}
- while (v7 - v3 > 7);
+ //_0814AA20
+ r4++;
+ r7++;
+ i = r5;
}
- *cursub = gUnknown_0842F790;
- cursub->x = v6 + v3 - 7;
- v8 = v2 + 1;
- if (gUnknown_0203A3D0 != 0x40)
- SetSubspriteTables(&gSprites[gUnknown_0203A3D0], &gSubspriteTables_842F5C0[v8]);
- if (gUnknown_0203A3D1 != 0x40)
- SetSubspriteTables(&gSprites[gUnknown_0203A3D1], &gSubspriteTables_842F5C0[v8]);
- return;
+ //_0814AA3A
+ *r4 = gUnknown_0842F790;
+ r4->x = r2 - 7 + i;
+ r7++;
+ if (gUnknown_0203A3D0 != 64)
+ SetSubspriteTables(&gSprites[gUnknown_0203A3D0], gSubspriteTables_842F5C0 + r7);
+ if (gUnknown_0203A3D1 != 64)
+ SetSubspriteTables(&gSprites[gUnknown_0203A3D1], gSubspriteTables_842F5C0 + r7);
}
-#elif ENGLISH
+#else
__attribute__((naked))
void sub_814A958(u8 a1)
{
@@ -434,6 +428,7 @@ _0814AAB4: .4byte gSubspriteTables_842F5C0\n\
_0814AAB8: .4byte gUnknown_0203A3D1\n\
.syntax divided\n");
}
+#endif
#elif GERMAN
__attribute__((naked))
void sub_814A958(u8 a1)
diff --git a/src/mystery_event_menu.c b/src/engine/mystery_event_menu.c
index 89978f635..0e48dc177 100644
--- a/src/mystery_event_menu.c
+++ b/src/engine/mystery_event_menu.c
@@ -94,7 +94,7 @@ static void CB2_MysteryEventMenu(void)
case 1:
if (gPaletteFade.active)
break;
- sub_8072044(gSystemText_LinkStandby);
+ MenuPrintMessageDefaultCoords(gSystemText_LinkStandby);
gMain.state++;
break;
case 2:
@@ -109,7 +109,7 @@ static void CB2_MysteryEventMenu(void)
if ((gLinkStatus & 0x20) && (gLinkStatus & 0x1C) > 4)
{
PlaySE(SE_PIN);
- sub_8072044(gSystemText_LoadEventPressA);
+ MenuPrintMessageDefaultCoords(gSystemText_LoadEventPressA);
gMain.state++;
}
if (gMain.newKeys & B_BUTTON)
@@ -128,7 +128,7 @@ static void CB2_MysteryEventMenu(void)
if (GetLinkPlayerCount_2() != 2)
{
GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
gMain.state = 13;
break;
}
@@ -158,13 +158,13 @@ static void CB2_MysteryEventMenu(void)
sub_800832C();
MenuZeroFillWindowRect(6, 5, 23, 8);
GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
gMain.state = 13;
break;
}
else if (CheckLanguageMatch())
{
- sub_8072044(gSystemText_DontCutLink);
+ MenuPrintMessageDefaultCoords(gSystemText_DontCutLink);
gMain.state++;
break;
}
@@ -173,7 +173,7 @@ static void CB2_MysteryEventMenu(void)
CloseLink();
MenuZeroFillWindowRect(6, 5, 23, 8);
GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
gMain.state = 13;
break;
}
@@ -222,7 +222,7 @@ static void CB2_MysteryEventMenu(void)
sub_800832C();
MenuZeroFillWindowRect(6, 5, 23, 8);
GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
ptr = (u8 *)&gMain;
offset1 = offsetof(struct Main, state);
asm("" ::: "r1");
@@ -234,7 +234,7 @@ static void CB2_MysteryEventMenu(void)
register u8 *ptr2 asm("r1");
register int offset3 asm("r0");
register int dummy asm("r2");
- sub_8072044(gSystemText_DontCutLink);
+ MenuPrintMessageDefaultCoords(gSystemText_DontCutLink);
ptr2 = (u8 *)&gMain;
offset3 = offsetof(struct Main, state);
if (dummy)
@@ -249,7 +249,7 @@ static void CB2_MysteryEventMenu(void)
MenuZeroFillWindowRect(6, 5, 23, 8);
label:
GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
ptr = (u8 *)&gMain;
offset2 = offsetof(struct Main, state);
ptr += offset2;
@@ -287,14 +287,14 @@ static void CB2_MysteryEventMenu(void)
case 11:
if (gReceivedRemoteLinkPlayers)
break;
- unkVal = sub_812613C(unk_2000000);
+ unkVal = RunMysteryEventScript(unk_2000000);
CpuFill32(0, unk_2000000, 0x7D4);
if (!GetEventLoadMessage(gStringVar4, unkVal))
TrySavingData(NORMAL_SAVE);
gMain.state++;
break;
case 12:
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
gMain.state++;
break;
case 13:
@@ -329,7 +329,7 @@ static void CB2_MysteryEventMenu(void)
CloseLink();
MenuZeroFillWindowRect(6, 5, 23, 8);
GetEventLoadMessage(gStringVar4, 1);
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
gMain.state = 13;
}
}
diff --git a/src/engine/mystery_event_script.c b/src/engine/mystery_event_script.c
new file mode 100644
index 000000000..a6568f5de
--- /dev/null
+++ b/src/engine/mystery_event_script.c
@@ -0,0 +1,462 @@
+#include "global.h"
+#include "berry.h"
+#include "easy_chat.h"
+#include "event_data.h"
+#include "mail_data.h"
+#include "mystery_event_script.h"
+#include "pokedex.h"
+#include "pokemon.h"
+#include "pokemon_size_record.h"
+#include "script.h"
+#include "species.h"
+#include "strings.h"
+#include "string_util.h"
+#include "text.h"
+#include "util.h"
+
+#if ENGLISH
+#define LANGUAGE_MASK 0x2
+#elif GERMAN
+#define LANGUAGE_MASK 0x4
+#endif
+
+#ifdef SAPPHIRE
+#define VERSION_MASK 0x100
+#else
+#define VERSION_MASK 0x80
+#endif
+
+extern void party_compaction(void);
+extern void sub_813601C(void);
+
+extern ScrCmdFunc gMysteryEventScriptCmdTable[];
+extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[];
+
+extern const u8 gOtherText_BerryObtainedDadHasIt[];
+extern const u8 gOtherText_BerryTransformed[];
+extern const u8 gOtherText_BerryAlreadyObtained[];
+extern const u8 gOtherText_SpecialRibbonReceived[];
+extern const u8 gOtherText_DexUpgraded[];
+extern const u8 gOtherText_RareWordAdded[];
+extern const u8 gOtherText_PokeWasSentOver[];
+extern const u8 gOtherText_PartyIsFull[];
+extern const u8 gOtherText_NewTrainerInHoenn[];
+extern const u8 gOtherText_DataCannotUseVersion[];
+
+static EWRAM_DATA struct ScriptContext sMysteryEventScriptContext = {0};
+
+static bool32 CheckCompatibility(u16 a1, u32 a2, u16 a3, u32 a4)
+{
+ if (!(a1 & LANGUAGE_MASK))
+ return FALSE;
+
+ if (!(a2 & LANGUAGE_MASK))
+ return FALSE;
+
+ if (!(a3 & 0x4))
+ return FALSE;
+
+ if (!(a4 & VERSION_MASK))
+ return FALSE;
+
+ return TRUE;
+}
+
+static void SetIncompatible(void)
+{
+ StringExpandPlaceholders(gStringVar4, gOtherText_DataCannotUseVersion);
+ SetMysteryEventScriptStatus(3);
+}
+
+static void InitMysteryEventScript(struct ScriptContext *ctx, u8 *script)
+{
+ InitScriptContext(ctx, gMysteryEventScriptCmdTable, gMysteryEventScriptCmdTableEnd);
+ SetupBytecodeScript(ctx, script);
+ ctx->data[0] = (u32)script;
+ ctx->data[1] = 0;
+ ctx->data[2] = 0;
+ ctx->data[3] = 0;
+}
+
+static bool32 RunMysteryEventScriptCommand(struct ScriptContext *ctx)
+{
+ if (RunScriptCommand(ctx) && ctx->data[3])
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u32 RunMysteryEventScript(u8 *script)
+{
+ struct ScriptContext *ctx = &sMysteryEventScriptContext;
+ InitMysteryEventScript(ctx, script);
+ while (RunMysteryEventScriptCommand(ctx))
+ ;
+ return ctx->data[2];
+}
+
+void SetMysteryEventScriptStatus(u32 val)
+{
+ sMysteryEventScriptContext.data[2] = val;
+}
+
+static int CalcChecksum(u8 *data, int size)
+{
+ unsigned int i;
+ int sum = 0;
+
+ for (i = 0; i < size; i++)
+ sum += data[i];
+
+ return sum;
+}
+
+static u32 GetWord(u8 *ptr)
+{
+ return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24);
+}
+
+static void SetWord(u8 *ptr, u32 val)
+{
+ ptr[0] = val;
+ ptr[1] = val >> 8;
+ ptr[2] = val >> 16;
+ ptr[3] = val >> 24;
+}
+
+bool8 unref_sub_81261B4(u8 *a1, int a2)
+{
+ if (a1[0x0] == 1 && a1[0x11] == 15 && !GetWord(a1 + 0x12))
+ {
+ int v4 = GetWord(a1 + 0x16) - a2 + (int)a1;
+ int v5 = GetWord(a1 + 0x1A);
+ int v6 = CalcChecksum((u8*)v4, v5 - a2 + (int)a1 - v4);
+ SetWord(a1 + 0x12, v6);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+bool8 unref_sub_812620C(u8 *a1, int a2)
+{
+ if (a1[0x0] == 1 && a1[0x11] == 16 && !GetWord(a1 + 0x12))
+ {
+ int v4 = GetWord(a1 + 0x16) - a2 + (int)a1;
+ int v5 = GetWord(a1 + 0x1A);
+ int v6 = CalcCRC16((u8*)v4, v5 - a2 + (int)a1 - v4);
+ SetWord(a1 + 0x12, v6);
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static u32 CalcRecordMixingGiftChecksum(void)
+{
+ u32 sum = 0;
+ int i;
+ char *data = (char *)&gSaveBlock1.recordMixingGift.data;
+
+ for (i = 0; i < sizeof(gSaveBlock1.recordMixingGift.data); i++)
+ {
+ sum += data[i];
+ }
+
+ return sum;
+}
+
+static bool32 IsRecordMixingGiftValid(void)
+{
+ struct RecordMixingGiftData *data = &gSaveBlock1.recordMixingGift.data;
+
+ u32 checksum = CalcRecordMixingGiftChecksum();
+
+ if (!data->unk0)
+ return FALSE;
+
+ if (!data->quantity)
+ return FALSE;
+
+ if (!data->itemId)
+ return FALSE;
+
+ if (checksum == 0)
+ return FALSE;
+
+ if (checksum == gSaveBlock1.recordMixingGift.checksum)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void ClearRecordMixingGift(void)
+{
+ CpuFill16(0, &gSaveBlock1.recordMixingGift, sizeof(gSaveBlock1.recordMixingGift));
+}
+
+static void SetRecordMixingGift(u8 unk, u8 quantity, u16 itemId)
+{
+ if (!unk || !quantity || !itemId)
+ {
+ ClearRecordMixingGift();
+ }
+ else
+ {
+ gSaveBlock1.recordMixingGift.data.unk0 = unk;
+ gSaveBlock1.recordMixingGift.data.quantity = quantity;
+ gSaveBlock1.recordMixingGift.data.itemId = itemId;
+ gSaveBlock1.recordMixingGift.checksum = CalcRecordMixingGiftChecksum();
+ }
+}
+
+u16 GetRecordMixingGift(void)
+{
+ struct RecordMixingGiftData *data = &gSaveBlock1.recordMixingGift.data;
+
+ if (!IsRecordMixingGiftValid())
+ {
+ ClearRecordMixingGift();
+ return 0;
+ }
+ else
+ {
+ u16 itemId = data->itemId;
+ data->quantity--;
+ if (data->quantity == 0)
+ ClearRecordMixingGift();
+ else
+ gSaveBlock1.recordMixingGift.checksum = CalcRecordMixingGiftChecksum();
+ return itemId;
+ }
+}
+
+bool8 MEScrCmd_end(struct ScriptContext *ctx)
+{
+ StopScript(ctx);
+ return TRUE;
+}
+
+bool8 MEScrCmd_checkcompat(struct ScriptContext *ctx)
+{
+ u16 v1;
+ u32 v2;
+ u16 v3;
+ u32 v4;
+
+ ctx->data[1] = ScriptReadWord(ctx);
+ v1 = ScriptReadHalfword(ctx);
+ v2 = ScriptReadWord(ctx);
+ v3 = ScriptReadHalfword(ctx);
+ v4 = ScriptReadWord(ctx);
+
+ if (CheckCompatibility(v1, v2, v3, v4) == TRUE)
+ ctx->data[3] = 1;
+ else
+ SetIncompatible();
+
+ return TRUE;
+}
+
+bool8 MEScrCmd_nop(struct ScriptContext *ctx)
+{
+ return FALSE;
+}
+
+bool8 MEScrCmd_setstatus(struct ScriptContext *ctx)
+{
+ u8 value = ScriptReadByte(ctx);
+ ctx->data[2] = value;
+ return FALSE;
+}
+
+bool8 MEScrCmd_setmsg(struct ScriptContext *ctx)
+{
+ u8 value = ScriptReadByte(ctx);
+ u8 *str = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ if (value == 255 || value == ctx->data[2])
+ StringExpandPlaceholders(gStringVar4, str);
+ return FALSE;
+}
+
+bool8 MEScrCmd_runscript(struct ScriptContext *ctx)
+{
+ u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ ScriptContext2_RunNewScript(script);
+ return FALSE;
+}
+
+bool8 MEScrCmd_setenigmaberry(struct ScriptContext *ctx)
+{
+ u8 *str;
+ const u8 *message;
+ bool32 haveBerry = IsEnigmaBerryValid();
+ u8 *berry = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ StringCopyN(gStringVar1, gSaveBlock1.enigmaBerry.berry.name, 7);
+ SetEnigmaBerry(berry);
+ StringCopyN(gStringVar2, gSaveBlock1.enigmaBerry.berry.name, 7);
+
+ if (!haveBerry)
+ {
+ str = gStringVar4;
+ message = gOtherText_BerryObtainedDadHasIt;
+ }
+ else if (StringCompare(gStringVar1, gStringVar2))
+ {
+ str = gStringVar4;
+ message = gOtherText_BerryTransformed;
+ }
+ else
+ {
+ str = gStringVar4;
+ message = gOtherText_BerryAlreadyObtained;
+ }
+
+ StringExpandPlaceholders(str, message);
+
+ ctx->data[2] = 2;
+
+ if (IsEnigmaBerryValid() == TRUE)
+ VarSet(0x402D, 1);
+ else
+ ctx->data[2] = 1;
+
+ return FALSE;
+}
+
+bool8 MEScrCmd_giveribbon(struct ScriptContext *ctx)
+{
+ u8 index = ScriptReadByte(ctx);
+ u8 ribbonId = ScriptReadByte(ctx);
+ GiveGiftRibbonToParty(index, ribbonId);
+ StringExpandPlaceholders(gStringVar4, gOtherText_SpecialRibbonReceived);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_initramscript(struct ScriptContext *ctx)
+{
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+ u8 objectId = ScriptReadByte(ctx);
+ u8 *script = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ u8 *scriptEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ InitRamScript(script, scriptEnd - script, mapGroup, mapNum, objectId);
+ return FALSE;
+}
+
+bool8 MEScrCmd_givenationaldex(struct ScriptContext *ctx)
+{
+ EnableNationalPokedex();
+ StringExpandPlaceholders(gStringVar4, gOtherText_DexUpgraded);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_addrareword(struct ScriptContext *ctx)
+{
+ sub_80EB890(ScriptReadByte(ctx));
+ StringExpandPlaceholders(gStringVar4, gOtherText_RareWordAdded);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_setrecordmixinggift(struct ScriptContext *ctx)
+{
+ u8 unk = ScriptReadByte(ctx);
+ u8 quantity = ScriptReadByte(ctx);
+ u16 itemId = ScriptReadHalfword(ctx);
+ SetRecordMixingGift(unk, quantity, itemId);
+ return FALSE;
+}
+
+bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx)
+{
+ struct MailStruct mail;
+ struct Pokemon pokemon;
+ u16 species;
+ u16 heldItem;
+ u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0];
+ void *pokemonPtr = (void *)data;
+ void *mailPtr = (void *)(data + sizeof(struct Pokemon));
+
+ pokemon = *(struct Pokemon *)pokemonPtr;
+ species = GetMonData(&pokemon, MON_DATA_SPECIES2);
+
+ if (species == SPECIES_EGG)
+ StringCopyN(gStringVar1, gSystemText_Egg, 11);
+ else
+ StringCopyN(gStringVar1, gSystemText_Pokemon2, 11);
+
+ if (gPlayerPartyCount == 6)
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_PartyIsFull);
+ ctx->data[2] = 3;
+ }
+ else
+ {
+ memcpy(&gPlayerParty[5], pokemonPtr, sizeof(struct Pokemon));
+ memcpy(&mail, mailPtr, sizeof(struct MailStruct));
+
+ if (species != SPECIES_EGG)
+ {
+ u16 pokedexNum = SpeciesToNationalPokedexNum(species);
+ GetSetPokedexFlag(pokedexNum, 2);
+ GetSetPokedexFlag(pokedexNum, 3);
+ }
+
+ heldItem = GetMonData(&gPlayerParty[5], MON_DATA_HELD_ITEM);
+ if (ItemIsMail(heldItem))
+ GiveMailToMon2(&gPlayerParty[5], &mail);
+ party_compaction();
+ CalculatePlayerPartyCount();
+ StringExpandPlaceholders(gStringVar4, gOtherText_PokeWasSentOver);
+ ctx->data[2] = 2;
+ }
+
+ return FALSE;
+}
+
+bool8 MEScrCmd_addtrainer(struct ScriptContext *ctx)
+{
+ u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0];
+ memcpy(gSaveBlock2.filler_A8.ereaderTrainer, (void *)data, sizeof(gSaveBlock2.filler_A8.ereaderTrainer));
+ sub_813601C();
+ StringExpandPlaceholders(gStringVar4, gOtherText_NewTrainerInHoenn);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_enableresetrtc(struct ScriptContext *ctx)
+{
+ EnableResetRTC();
+ StringExpandPlaceholders(gStringVar4, gSystemText_ClockAdjustmentUsable);
+ ctx->data[2] = 2;
+ return FALSE;
+}
+
+bool8 MEScrCmd_checksum(struct ScriptContext *ctx)
+{
+ int checksum = ScriptReadWord(ctx);
+ u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ if (checksum != CalcChecksum(data, dataEnd - data))
+ {
+ ctx->data[3] = 0;
+ ctx->data[2] = 1;
+ }
+ return TRUE;
+}
+
+bool8 MEScrCmd_crc(struct ScriptContext *ctx)
+{
+ int crc = ScriptReadWord(ctx);
+ u8 *data = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ u8 *dataEnd = (u8 *)(ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0]);
+ if (crc != CalcCRC16(data, dataEnd - data))
+ {
+ ctx->data[3] = 0;
+ ctx->data[2] = 1;
+ }
+ return TRUE;
+}
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 6c107f022..3f8417e6d 100644
--- a/src/naming_screen.c
+++ b/src/engine/naming_screen.c
@@ -1618,7 +1618,7 @@ static void DisplaySentToPCMessage(void)
StringExpandPlaceholders(gStringVar4, gOtherText_SentToPC);
BasicInitMenuWindow(&gWindowConfig_81E6E88);
MenuDisplayMessageBox();
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
}
static void sub_80B753C(void)
diff --git a/src/option_menu.c b/src/engine/option_menu.c
index 7f8d76528..dfc49b035 100644
--- a/src/option_menu.c
+++ b/src/engine/option_menu.c
@@ -486,61 +486,61 @@ __attribute__((naked))
static void FrameType_DrawChoices(u8 selection)
{
asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- sub sp, 0x10\n\
- lsls r0, 24\n\
- movs r1, 0x80\n\
- lsls r1, 17\n\
- adds r0, r1\n\
- lsrs r5, r0, 24\n\
- ldr r1, _0808C368 @ =gSystemText_Type\n\
- mov r0, sp\n\
- bl StringCopy\n\
- ldr r1, _0808C36C @ =gSystemText_Terminator\n\
- mov r0, sp\n\
- bl StringAppend\n\
- adds r4, r0, 0\n\
- adds r0, r5, 0\n\
- movs r1, 0xA\n\
- bl __udivsi3\n\
- adds r1, r0, 0\n\
- lsls r0, r1, 24\n\
- lsrs r6, r0, 24\n\
- cmp r6, 0\n\
- beq _0808C370\n\
- adds r0, r1, 0\n\
- adds r0, 0xA1\n\
- strb r0, [r4]\n\
- adds r4, 0x1\n\
- adds r0, r5, 0\n\
- movs r1, 0xA\n\
- bl __umodsi3\n\
- adds r0, 0xA1\n\
- strb r0, [r4]\n\
- b _0808C380\n\
- .align 2, 0\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x10\n\
+ lsls r0, 24\n\
+ movs r1, 0x80\n\
+ lsls r1, 17\n\
+ adds r0, r1\n\
+ lsrs r5, r0, 24\n\
+ ldr r1, _0808C368 @ =gSystemText_Type\n\
+ mov r0, sp\n\
+ bl StringCopy\n\
+ ldr r1, _0808C36C @ =gSystemText_Terminator\n\
+ mov r0, sp\n\
+ bl StringAppend\n\
+ adds r4, r0, 0\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __udivsi3\n\
+ adds r1, r0, 0\n\
+ lsls r0, r1, 24\n\
+ lsrs r6, r0, 24\n\
+ cmp r6, 0\n\
+ beq _0808C370\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xA1\n\
+ strb r0, [r4]\n\
+ adds r4, 0x1\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ adds r0, 0xA1\n\
+ strb r0, [r4]\n\
+ b _0808C380\n\
+ .align 2, 0\n\
_0808C368: .4byte gSystemText_Type\n\
_0808C36C: .4byte gSystemText_Terminator\n\
_0808C370:\n\
- adds r0, r5, 0\n\
- movs r1, 0xA\n\
- bl __umodsi3\n\
- adds r0, 0xA1\n\
- strb r0, [r4]\n\
- adds r4, 0x1\n\
- strb r6, [r4]\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ adds r0, 0xA1\n\
+ strb r0, [r4]\n\
+ adds r4, 0x1\n\
+ strb r6, [r4]\n\
_0808C380:\n\
- adds r4, 0x1\n\
- movs r0, 0xFF\n\
- strb r0, [r4]\n\
- mov r0, sp\n\
- movs r1, 0xF\n\
- movs r2, 0xF\n\
- bl MenuPrint\n\
- add sp, 0x10\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
+ adds r4, 0x1\n\
+ movs r0, 0xFF\n\
+ strb r0, [r4]\n\
+ mov r0, sp\n\
+ movs r1, 0xF\n\
+ movs r2, 0xF\n\
+ bl MenuPrint\n\
+ add sp, 0x10\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
#endif
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 9cbcce49c..8dff432c1 100644
--- a/src/record_mixing.c
+++ b/src/engine/record_mixing.c
@@ -10,11 +10,11 @@
#include "items.h"
#include "load_save.h"
#include "link.h"
-#include "mauville_old_man.h"
+#include "mauville_man.h"
#include "menu.h"
#include "mystery_event_script.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "save.h"
#include "script.h"
#include "secret_base.h"
@@ -29,7 +29,7 @@ extern u8 ewram[];
#define unk_2018000 (*(struct PlayerRecords *)(ewram + 0x18000))
#define unk_2008000 (*(struct PlayerRecords *)(ewram + 0x08000))
-extern struct RecordMixing_UnknownStruct gUnknown_02038738;
+extern struct RecordMixingDayCareMail gUnknown_02038738;
extern u16 gSpecialVar_0x8005;
u32 gUnknown_03005D2C;
@@ -40,9 +40,9 @@ static u8 gUnknown_0300071C[4];
void *recordMixingSecretBases = &gSaveBlock1.secretBases;
void *recordMixingTvShows = &gSaveBlock1.tvShows;
void *gUnknown_083D0274 = &gSaveBlock1.unknown_2ABC;
-void *gUnknown_083D0278 = &gSaveBlock1.oldMan;
+void *gUnknown_083D0278 = &gSaveBlock1.mauvilleMan;
void *recordMixingEasyChatPairs = &gSaveBlock1.easyChatPairs;
-struct RecordMixing_UnknownStruct *gUnknown_083D0280 = &gUnknown_02038738;
+struct RecordMixingDayCareMail *gUnknown_083D0280 = &gUnknown_02038738;
void *gUnknown_083D0284 = &gSaveBlock2.filler_A8;
#define BUFFER_CHUNK_SIZE 200
@@ -59,7 +59,7 @@ struct PlayerRecords
u8 filler1004[0x40];
u8 filler1044[0x40];
struct EasyChatPair easyChatPairs[5];
- struct RecordMixing_UnknownStruct filler10AC;
+ struct RecordMixingDayCareMail filler10AC;
u8 filler1124[0xA4];
u16 filler11C8[0x34];
};
@@ -74,14 +74,14 @@ void RecordMixing_PrepareExchangePacket(void)
memcpy(unk_2018000.filler1004, gUnknown_083D0274, sizeof(unk_2008000.filler1004));
memcpy(unk_2018000.filler1044, gUnknown_083D0278, sizeof(unk_2008000.filler1044));
memcpy(unk_2018000.easyChatPairs, recordMixingEasyChatPairs, sizeof(unk_2018000.easyChatPairs));
- gUnknown_02038738.data[0] = gSaveBlock1.filler_303C.data[0];
- gUnknown_02038738.data[1] = gSaveBlock1.filler_303C.data[1];
- sub_8041324(gSaveBlock1.daycareData, &gUnknown_02038738);
- memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixing_UnknownStruct));
+ gUnknown_02038738.mail[0] = gSaveBlock1.daycareData.misc.mail[0];
+ gUnknown_02038738.mail[1] = gSaveBlock1.daycareData.misc.mail[1];
+ sub_8041324(gSaveBlock1.daycareData.mons, &gUnknown_02038738);
+ memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixingDayCareMail));
memcpy(unk_2018000.filler1124, gUnknown_083D0284, sizeof(unk_2018000.filler1124));
if (GetMultiplayerId() == 0)
- unk_2018000.filler11C8[0] = sub_8126338();
+ unk_2018000.filler11C8[0] = GetRecordMixingGift();
}
void RecordMixing_ReceiveExchangePacket(u32 a)
@@ -461,10 +461,10 @@ u8 sub_80B9BBC(u16 *a)
void sub_80B9BC4(u8 *a, size_t b, u8 c[][2], u8 d, u8 e)
{
- struct RecordMixing_UnknownStructSub *r6 = (struct RecordMixing_UnknownStructSub *)(a + b * c[d][0]);
- struct RecordMixing_UnknownStructSub *src = r6 + c[d][1];
- struct RecordMixing_UnknownStructSub sp0 = *src;
- struct RecordMixing_UnknownStructSub *r8 = (struct RecordMixing_UnknownStructSub *)(a + b * c[e][0]);
+ struct DayCareMail *r6 = (struct DayCareMail *)(a + b * c[d][0]);
+ struct DayCareMail *src = r6 + c[d][1];
+ struct DayCareMail sp0 = *src;
+ struct DayCareMail *r8 = (struct DayCareMail *)(a + b * c[e][0]);
r6 += c[d][1];
*r6 = *(r8 + c[e][1]);
@@ -511,7 +511,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
u16 i; // r3
u16 r7;
u8 r1;
- struct RecordMixing_UnknownStruct *r6;
+ struct DayCareMisc *r6;
//asm("":::"r8");
SeedRng(gLinkPlayers[0].trainerId);
@@ -526,7 +526,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
sp3C = 0;
for (i = 0; i < r8; i++)
{
- r6 = (struct RecordMixing_UnknownStruct *)(a + b * i);
+ r6 = (struct DayCareMisc *)(a + b * i);
if (r6->unk70 != 0)
{
for (r7 = 0; r7 < r6->unk70; r7++)
@@ -540,7 +540,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
//_080B9D46
for (r7 = 0, i = 0; i < r8; i++)
{
- r6 = (struct RecordMixing_UnknownStruct *)(a + b * i);
+ r6 = (struct DayCareMisc *)(a + b * i);
if (sp1C[i][0] == 1 || sp1C[i][1] == 1)
sp3C++;
if (sp1C[i][0] == 1 && sp1C[i][1] == 0)
@@ -596,7 +596,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
//_080B9E3E
for (i = 0; i < 4; i++)
{
- r6 = (struct RecordMixing_UnknownStruct *)a + b * c;
+ r6 = (struct DayCareMisc *)a + b * c;
spC[i] = r6;
}
r1 = sub_80B9C4C(d) % 3;
@@ -630,7 +630,7 @@ void sub_80B9C6C(u8 *a, u32 b, u8 c, void *d)
//_080B9EF0
//memcpy(&gSaveBlock1.filler_303C.data[0], a + b * c, 0x38);
//memcpy(&gSaveBlock1.filler_303C.data[1], a + b * c + 0x38, 0x38);
- r6 = (struct RecordMixing_UnknownStruct *)(a + b * c);
+ r6 = (struct DayCareMisc *)(a + b * c);
gSaveBlock1.filler_303C.data[0] = r6->data[0];
gSaveBlock1.filler_303C.data[1] = r6->data[1];
//memcpy(&gSaveBlock1.filler_303C.data[0], &r6->data[0], 0x38);
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 adf39268e..eae3f4470 100644
--- a/src/save.c
+++ b/src/engine/save.c
@@ -3,7 +3,7 @@
#include "gba/flash_internal.h"
#include "save.h"
#include "load_save.h"
-#include "rom4.h"
+#include "overworld.h"
#include "save_failed_screen.h"
#define GETVALIDSTATUSBITFIELD ((1 << ARRAY_COUNT(gSaveSectionLocations)) - 1)
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 e5be913c6..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, void *ptr)
+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 RunScript(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() == 1)
- ctx->mode = 1;
- return 1;
+ if (ctx->nativePtr() == TRUE)
+ 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 RunScript(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;
}
@@ -191,7 +199,7 @@ bool8 ScriptContext2_RunScript(void)
ScriptContext2_Enable();
- if (!RunScript(&sScriptContext1))
+ if (!RunScriptCommand(&sScriptContext1))
{
sScriptContext1Status = 2;
ScriptContext2_Disable();
@@ -224,20 +232,20 @@ void ScriptContext2_RunNewScript(const u8 *ptr)
{
InitScriptContext(&sScriptContext2, &gScriptCmdTable, &gScriptCmdTableEnd);
SetupBytecodeScript(&sScriptContext2, ptr);
- while (RunScript(&sScriptContext2) == 1)
+ while (RunScriptCommand(&sScriptContext2) == 1)
;
}
-u8 *mapheader_get_tagged_pointer(u8 tag)
+static u8 *mapheader_get_tagged_pointer(u8 tag)
{
u8 *mapScripts = gMapHeader.mapScripts;
- if (!mapScripts)
+ if (mapScripts == NULL)
return NULL;
while (1)
{
- if (!*mapScripts)
+ if (*mapScripts == 0)
return NULL;
if (*mapScripts == tag)
{
@@ -248,14 +256,14 @@ u8 *mapheader_get_tagged_pointer(u8 tag)
}
}
-void mapheader_run_script_by_tag(u8 tag)
+static void mapheader_run_script_by_tag(u8 tag)
{
u8 *ptr = mapheader_get_tagged_pointer(tag);
if (ptr)
ScriptContext2_RunNewScript(ptr);
}
-u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag)
+static u8 *mapheader_get_first_match_from_tagged_ptr_list(u8 tag)
{
u8 *ptr = mapheader_get_tagged_pointer(tag);
@@ -316,7 +324,7 @@ void mapheader_run_first_tag4_script_list_match(void)
ScriptContext2_RunNewScript(ptr);
}
-u32 CalculateRamScriptChecksum(void)
+static u32 CalculateRamScriptChecksum(void)
{
u32 i;
u32 sum = 0;
diff --git a/src/sound.c b/src/engine/sound.c
index 8d23b7d7a..a6a61c0b5 100644
--- a/src/sound.c
+++ b/src/engine/sound.c
@@ -4,6 +4,7 @@
#include "battle.h"
#include "m4a.h"
#include "main.h"
+#include "pokemon.h"
#include "songs.h"
#include "task.h"
@@ -13,9 +14,6 @@ struct Fanfare
u16 duration;
};
-// FIXME: different prototype than definition
-u32 SpeciesToCryId(u32);
-
extern u16 gBattleTypeFlags;
static EWRAM_DATA struct MusicPlayerInfo *gMPlay_PokemonCry = NULL;
@@ -83,8 +81,6 @@ void MapMusicMain(void)
PlayBGM(sCurrentMapMusic);
break;
case 2:
- case 3:
- case 4:
break;
case 5:
if (IsBGMStopped())
@@ -355,21 +351,9 @@ void PlayCry5(u16 species, u8 mode)
RestoreBGMVolumeAfterPokemonCry();
}
-#define GET_CRY_PTR(a, b)\
-{\
- struct ToneData *tone;\
- if (v0)\
- tone = &a[index];\
- else\
- tone = &b[index];\
- gMPlay_PokemonCry = SetPokemonCryTone(tone);\
- break;\
-}
-
static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode)
{
- u32 cryId;
- u32 v0;
+ bool32 v0;
u32 release;
u32 length;
u32 pitch;
@@ -378,10 +362,7 @@ static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode
u8 table;
species--;
-
- cryId = species;
-
- v0 = 0;
+ v0 = FALSE;
release = 0;
length = 140;
pitch = 15360;
@@ -427,26 +408,28 @@ static void PlayCryInternal(u16 species, s8 pan, s8 volume, u8 priority, u8 mode
SetPokemonCryChorus(chorus);
SetPokemonCryPriority(priority);
- asm("");
- asm("");
- asm("");
- asm("");
- asm("");
- asm("");
- asm("");
-
- cryId = SpeciesToCryId(cryId);
- index = 0x7F;
- asm("" ::: "r0");
- index &= cryId;
- table = cryId >> 7;
+ species = SpeciesToCryId(species);
+ index = species & 0x7F;
+ table = species >> 7;
switch (table)
{
- case 0: GET_CRY_PTR(voicegroup_84537C0, voicegroup_8452590);
- case 1: GET_CRY_PTR(voicegroup_8453DC0, voicegroup_8452B90);
- case 2: GET_CRY_PTR(voicegroup_84543C0, voicegroup_8453190);
- case 3: GET_CRY_PTR(voicegroup_84549C0, voicegroup_8453790);
+ case 0:
+ gMPlay_PokemonCry = SetPokemonCryTone(
+ v0 ? &voicegroup_84537C0[index] : &voicegroup_8452590[index]);
+ break;
+ case 1:
+ gMPlay_PokemonCry = SetPokemonCryTone(
+ v0 ? &voicegroup_8453DC0[index] : &voicegroup_8452B90[index]);
+ break;
+ case 2:
+ gMPlay_PokemonCry = SetPokemonCryTone(
+ v0 ? &voicegroup_84543C0[index] : &voicegroup_8453190[index]);
+ break;
+ case 3:
+ gMPlay_PokemonCry = SetPokemonCryTone(
+ v0 ? &voicegroup_84549C0[index] : &voicegroup_8453790[index]);
+ break;
}
}
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 b27084b86..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");
@@ -1943,7 +1943,7 @@ void InitWindowFromConfig(struct Window *win, const struct WindowConfig *winConf
void InitWindow(struct Window *win, const u8 *text, u16 tileDataStartOffset, u8 left, u8 top)
{
- struct WindowConfig *winConfig = win->config;
+ const struct WindowConfig *winConfig = win->config;
win->textMode = winConfig->textMode;
win->fontNum = winConfig->fontNum;
win->language = GAME_LANGUAGE;
@@ -2342,7 +2342,7 @@ u8 sub_8003490(struct Window *win, u8 c, u16 tileDataStartOffset, u8 left, u8 to
void sub_80034D4(u8 *tileData, const u8 *text)
{
- sub_8004E3C((struct WindowConfig *)&gWindowConfig_81E6C74, tileData, text);
+ sub_8004E3C(&gWindowConfig_81E6C74, tileData, text);
}
u8 sub_80034EC(u8 *str)
@@ -3645,7 +3645,7 @@ void sub_8004E28(struct Window *win, u8 *foreground, u8 *background, u8 *shadow)
*shadow = win->shadowColor;
}
-void sub_8004E3C(struct WindowConfig *winConfig, u8 *tileData, const u8 *text)
+void sub_8004E3C(const struct WindowConfig *winConfig, u8 *tileData, const u8 *text)
{
sTempWindow.config = winConfig;
InitWindow(&sTempWindow, text, 0, 0, 0);
@@ -3653,7 +3653,7 @@ void sub_8004E3C(struct WindowConfig *winConfig, u8 *tileData, const u8 *text)
sub_8002F44(&sTempWindow);
}
-u8 GetStringWidthGivenWindowConfig(struct WindowConfig *winConfig, const u8 *s)
+u8 GetStringWidthGivenWindowConfig(const struct WindowConfig *winConfig, const u8 *s)
{
sTempWindow.config = winConfig;
InitWindow(&sTempWindow, s, 0, 0, 0);
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 e1b9a2e9e..accb03db8 100644
--- a/src/time_events.c
+++ b/src/engine/time_events.c
@@ -4,7 +4,7 @@
#include "field_weather.h"
#include "pokemon.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "script.h"
#include "task.h"
@@ -81,13 +81,13 @@ void UpdateShoalTideFlag(void)
1,
};
- if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0()))
+ if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()))
{
RtcCalcLocalTime();
if (tide[gLocalTime.hours])
FlagSet(SYS_SHOAL_TIDE);
else
- FlagReset(SYS_SHOAL_TIDE);
+ FlagClear(SYS_SHOAL_TIDE);
}
}
diff --git a/src/engine/trade.c b/src/engine/trade.c
new file mode 100644
index 000000000..6e78ba3ce
--- /dev/null
+++ b/src/engine/trade.c
@@ -0,0 +1,5715 @@
+#include "global.h"
+#include "name_string_util.h"
+#include "string_util.h"
+#include "text.h"
+#include "main.h"
+#include "species.h"
+#include "items.h"
+#include "moves.h"
+#include "easy_chat.h"
+#include "link.h"
+#include "strings2.h"
+#include "graphics.h"
+#include "palette.h"
+#include "task.h"
+#include "menu.h"
+#include "text_window.h"
+#include "pokemon_icon.h"
+#include "cable_club.h"
+#include "party_menu.h"
+#include "songs.h"
+#include "sound.h"
+#include "data2.h"
+#include "pokemon_summary_screen.h"
+#include "overworld.h"
+#include "rom_8077ABC.h"
+#include "daycare.h"
+#include "event_data.h"
+#include "strings.h"
+#include "load_save.h"
+#include "save.h"
+#include "script.h"
+#include "field_fadetransition.h"
+#include "decompress.h"
+#include "mail_data.h"
+#include "evolution_scene.h"
+#include "pokeball.h"
+#include "pokedex.h"
+#include "field_effect.h"
+#include "util.h"
+#include "battle_interface.h"
+#include "trade.h"
+
+#ifdef ENGLISH
+#define sub_804A96C_alt sub_804A96C
+asm(".set sub_804A96C_alt, sub_804A96C");
+#endif
+
+#define Trade_SendData(ptr) (SendBlock(bitmask_all_link_players_but_self(), ptr->linkData, 20))
+
+struct InGameTrade {
+ /*0x00*/ u8 name[11];
+ /*0x0C*/ u16 species;
+ /*0x0E*/ u8 ivs[6];
+ /*0x14*/ bool8 secondAbility;
+ /*0x18*/ u32 otId;
+ /*0x1C*/ u8 stats[5];
+ /*0x24*/ u32 personality;
+ /*0x28*/ u16 heldItem;
+ /*0x2A*/ u8 mailNum;
+ /*0x2B*/ u8 otName[11];
+ /*0x36*/ u8 otGender;
+ /*0x37*/ u8 sheen;
+ /*0x38*/ u16 playerSpecies;
+};
+
+struct UnkStructC {
+ /*0x00*/ u16 words[9];
+ /*0x10*/ u8 string[8];
+ /*0x1A*/ u8 otId[4];
+ /*0x1E*/ u16 species;
+ /*0x20*/ u16 heldItem;
+};
+
+struct UnkStructD {
+ /*0x00*/ u8 filler_00[8];
+ /*0x08*/ void *vramAddr;
+ /*0x0c*/ u8 filler_0c[4];
+ /*0x10*/ u8 unk_10;
+ /*0x12*/ u16 unk_12[0x400];
+};
+
+struct UnkStructE {
+ /*0x00*/ u8 unk_00;
+ /*0x02*/ u16 unk_02;
+ /*0x04*/ u8 unk_04;
+};
+
+struct TradeEwramSubstruct {
+ /*0x0000*/ u8 unk_0000;
+ /*0x0001*/ u8 unk_0001;
+ /*0x0004*/ struct Window window;
+ /*0x0034*/ u8 partyIcons[2][6];
+ /*0x0040*/ u8 tradeMenuCursorSpriteIdx;
+ /*0x0041*/ u8 tradeMenuCursorPosition;
+ /*0x0042*/ u8 partyCounts[2];
+ /*0x0044*/ u8 tradeMenuOptionsActive[13];
+ /*0x0051*/ u8 unk_0051[2][6];
+ /*0x005d*/ u8 unk_005d[2][6];
+ /*0x005d*/ u8 unk_0069[2][6];
+ /*0x0075*/ u8 unk_0075;
+ /*0x0076*/ u8 filler_0076[4];
+ /*0x007a*/ u8 unk_007a;
+ /*0x007b*/ u8 unk_007b;
+ /*0x007c*/ u8 unk_007c;
+ /*0x007d*/ u8 unk_007d;
+ /*0x007e*/ u16 unk_007e;
+ /*0x0080*/ u8 unk_0080[2];
+ /*0x0082*/ u8 unk_0082[2];
+ /*0x0084*/ u8 unk_0084;
+ /*0x0085*/ u8 unk_0085;
+ /*0x0086*/ u8 unk_0086;
+ /*0x0087*/ u8 unk_0087;
+ /*0x0088*/ u8 filler_0088[2];
+ /*0x008a*/ u8 unk_008a;
+ /*0x008b*/ u8 unk_008b;
+ /*0x008c*/ u16 linkData[20];
+ /*0x00b4*/ u8 unk_00b4;
+ /*0x00b5*/ u8 unk_00b5[11];
+ /*0x00c0*/ u8 filler_00c0[8];
+ /*0x00c8*/ struct UnkStructD unk_00c8;
+ /*0x08dc*/ struct UnkStructE unk_08dc[4];
+ /*0x08fc*/ u8 filler_08fc[0x704];
+};
+
+IWRAM_DATA u8 gUnknown_03000508[8];
+
+struct UnkStructF {
+ u8 filler_0000[9];
+ u8 unk_0009;
+ u8 filler_000a[0xff6];
+};
+
+struct TradeEwramStruct {
+ /*0x00000*/ u8 filler_00000[0x7000];
+ /*0x07000*/ struct TradeEwramSubstruct unk_07000;
+ /*0x08000*/ struct UnkStructF unk_08000;
+ /*0x09000*/ u8 filler_09000[0x4000];
+ /*0x0d000*/ u8 tileBuffers[13][256];
+ /*0x0dd00*/ u8 filler_0dd00[0x1300];
+ /*0x0f000*/ struct TradeEwramSubstruct2 unk_0f000;
+};
+
+static void sub_8047EC0(void);
+static void sub_804AFB8(const struct WindowConfig *, u8 *, const u8 *, u8);
+static void sub_804ACD8(const u8 *, u8 *, u8);
+static void nullsub_5(u8, u8);
+static void sub_804AA88(void);
+static void sub_804A964(struct UnkStructD *, void *);
+static void sub_80489F4(void);
+static void sub_804AA0C(u8);
+static bool8 sub_8048D44(void);
+static void sub_804AF84(void);
+static bool8 sub_804ABF8(void);
+static void sub_804ACF4(u8);
+static void sub_804A41C(u8);
+static void sub_8048C70(void);
+static void sub_8048B0C(u8);
+static void sub_804AE3C(u8);
+static void sub_804AF10(void);
+static void sub_80494D8(void);
+static void sub_8048AB4(void);
+static void sub_804A940(struct UnkStructD *);
+static void sub_804B41C(void);
+static void sub_8049DE0(void);
+static void sub_804AB30(void);
+static void sub_8049ED4(u8);
+static void sub_804A6DC(u8);
+static void sub_804A938(struct UnkStructD *);
+static void sub_804A9F4(u8);
+static void sub_804AA00(u8);
+static void sub_8049E9C(u8);
+static void sub_804AADC(u16, u8);
+static void sub_804A80C(void);
+static u8 sub_80499F0(const u8 *, u8, u8);
+static void sub_804A840(u8);
+#ifdef NONMATCHING
+static
+#endif
+u8 sub_804A2B4(u8 *, u8, u8);
+static void sub_804A96C_alt(struct UnkStructD *, u8, u8, const u16 *, u8, u8, u16);
+static void sub_804A96C(struct UnkStructD *, u8, u8, const u16 *, u8, u8, u16);
+#ifdef NONMATCHING
+static
+#endif
+void sub_804A33C(u8 *, u8, u8);
+#ifdef NONMATCHING
+static
+#endif
+void sub_804A51C(u8, u8, u8, u8, u8, u8);
+static void sub_804D7AC(struct Sprite *);
+static bool8 sub_804C29C(void);
+static void sub_804DC18(void);
+static u8 sub_804B2B0(void);
+static void sub_804E144(void);
+static void sub_804E1A0(u8);
+static void sub_804DAD4(struct MailStruct *, const struct InGameTrade *);
+static void sub_804DC88(void);
+static void sub_804D6BC(struct Sprite *);
+static void sub_804D738(struct Sprite *);
+static void sub_804BBE8(u8);
+static void sub_804B058(struct Sprite *);
+static void sub_804B07C(struct Sprite *);
+static void sub_804B0BC(struct Sprite *);
+static void sub_804B104(struct Sprite *);
+static void sub_804D80C(struct Sprite *);
+static void sub_804E1DC(void);
+static void sub_804BBCC(void);
+static void sub_804D8E4(void);
+static void sub_804C164(void);
+static void sub_804C1A8(void);
+#ifdef NONMATCHING
+static
+#endif
+void sub_804DB84(void);
+
+extern u8 gUnknown_020297D8[2];
+extern u8 *gUnknown_020296CC[13];
+extern struct TradeEwramSubstruct *gUnknown_03004824;
+extern struct MailStruct gUnknown_02029700[16];
+
+#define ewram_2010000 (*(struct TradeEwramStruct *)(ewram + 0x10000))
+
+
+const u32 unref_data_820ABD4[] = {
+ 0x00000890,
+ 0x00003AC0,
+ 0x0000001C,
+ 0x00000530,
+ 0x00000024,
+ 0x00000064,
+ 0x000004D8
+};
+
+const u16 gTradeMovesBoxTilemap[] = INCBIN_U16("graphics/trade/moves_box_map.bin");
+const u16 gTradePartyBoxTilemap[] = INCBIN_U16("graphics/trade/party_box_map.bin");
+const u16 gTradeStripesBG2Tilemap[] = INCBIN_U16("graphics/trade/stripes_bg2_map.bin");
+const u16 gTradeStripesBG3Tilemap[] = INCBIN_U16("graphics/trade/stripes_bg3_map.bin");
+
+const struct OamData gOamData_820BFEC = {
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 2,
+ .priority = 1
+};
+
+const union AnimCmd gSpriteAnim_820BFF4[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_820BFFC[] = {
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_820C004[] = {
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_820C00C[] = {
+ ANIMCMD_FRAME(24, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_820C014[] = {
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_820C01C[] = {
+ ANIMCMD_FRAME(40, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_820C024[] = {
+ gSpriteAnim_820BFF4,
+ gSpriteAnim_820BFFC,
+ gSpriteAnim_820C004,
+ gSpriteAnim_820C00C,
+ gSpriteAnim_820C014,
+ gSpriteAnim_820C01C
+};
+
+const u16 TradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text1.gbapal");
+const u16 UnrefTradeScreenTextPalette[] = INCBIN_U16("graphics/trade/text2.gbapal");
+
+const struct SpriteSheet gUnknown_0820C07C[] = {
+ {ewram_2010000.tileBuffers[ 0], 256, 200},
+ {ewram_2010000.tileBuffers[ 1], 256, 201},
+ {ewram_2010000.tileBuffers[ 2], 256, 202},
+ {ewram_2010000.tileBuffers[ 3], 256, 203},
+ {ewram_2010000.tileBuffers[ 4], 256, 204},
+ {ewram_2010000.tileBuffers[ 5], 256, 205},
+ {ewram_2010000.tileBuffers[ 6], 256, 206},
+ {ewram_2010000.tileBuffers[ 7], 256, 207},
+ {ewram_2010000.tileBuffers[ 8], 256, 208},
+ {ewram_2010000.tileBuffers[ 9], 256, 209},
+ {ewram_2010000.tileBuffers[10], 256, 210},
+ {ewram_2010000.tileBuffers[11], 256, 211},
+ {ewram_2010000.tileBuffers[12], 256, 212},
+};
+
+const struct SpritePalette gSpritePalette_TradeScreenText = {
+ TradeScreenTextPalette, 4925
+};
+
+const struct SpriteTemplate gSpriteTemplate_820C0EC = {
+ 200,
+ 4925,
+ &gOamData_820BFEC,
+ gSpriteAnimTable_820C024,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+const struct OamData gOamData_820C104 = {
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 3,
+ .priority = 1
+};
+
+const union AnimCmd gSpriteAnim_820C10C[] = {
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_820C114[] = {
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_820C11C[] = {
+ gSpriteAnim_820C10C,
+ gSpriteAnim_820C114
+};
+
+const struct SpriteSheet gUnknown_0820C124 = {
+ gUnknown_08EA1DEC, 0x800, 300
+};
+
+const struct SpritePalette gUnknown_0820C12C = {
+ gUnknown_08EA0328, 2345
+};
+
+const struct SpriteTemplate gSpriteTemplate_820C134 = {
+ 300,
+ 2345,
+ &gOamData_820C104,
+ gSpriteAnimTable_820C11C,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ SpriteCallbackDummy
+};
+
+const u8 *const gUnknown_0820C14C[] = {
+ TradeText_Cancel,
+ TradeText_ChoosePoke,
+ TradeText_Summary1,
+ TradeText_Trade1,
+ TradeText_CancelTradePrompt,
+ TradeText_PressBToExit
+};
+
+// This is used to determine the next mon to select when the D-Pad is
+// pressed in a given direction.
+// Note that the mons are laid out like this.
+// 0-5 are the player's party and 6-11 are the trading partner's party.
+// 12 is the cancel button.
+// 0 1 6 7
+// 2 3 8 9
+// 4 5 10 11
+// 12
+
+const u8 gTradeNextSelectedMonTable[][4][6] = {
+ {
+ { 4, 2, 12, 12, 0, 0},
+ { 2, 4, 12, 12, 0, 0},
+ { 7, 6, 1, 0, 0, 0},
+ { 1, 6, 7, 0, 0, 0}
+ }, {
+ { 5, 3, 12, 12, 0, 0},
+ { 3, 5, 12, 12, 0, 0},
+ { 0, 7, 6, 1, 0, 0},
+ { 6, 7, 0, 1, 0, 0}
+ }, {
+ { 0, 0, 0, 0, 0, 0},
+ { 4, 0, 0, 0, 0, 0},
+ { 9, 8, 7, 6, 0, 0},
+ { 3, 1, 0, 0, 0, 0}
+ }, {
+ { 1, 1, 1, 1, 0, 0},
+ { 5, 1, 1, 1, 0, 0},
+ { 2, 9, 8, 7, 0, 0},
+ { 8, 9, 6, 6, 0, 0}
+ }, {
+ { 2, 2, 2, 2, 0, 0},
+ { 0, 0, 0, 0, 0, 0},
+ {11, 10, 9, 8, 7, 6},
+ { 5, 3, 1, 0, 0, 0}
+ }, {
+ { 3, 3, 3, 3, 0, 0},
+ { 1, 1, 1, 1, 0, 0},
+ { 4, 4, 4, 4, 0, 0},
+ {10, 8, 6, 0, 0, 0}
+ }, {
+ {10, 8, 12, 0, 0, 0},
+ { 8, 10, 12, 0, 0, 0},
+ { 1, 0, 0, 0, 0, 0},
+ { 7, 0, 1, 0, 0, 0}
+ }, {
+ {12, 0, 0, 0, 0, 0},
+ { 9, 12, 0, 0, 0, 0},
+ { 6, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 0, 0}
+ }, {
+ { 6, 0, 0, 0, 0, 0},
+ {10, 6, 0, 0, 0, 0},
+ { 3, 2, 1, 0, 0, 0},
+ { 9, 7, 0, 0, 0, 0}
+ }, {
+ { 7, 0, 0, 0, 0, 0},
+ {11, 12, 0, 0, 0, 0},
+ { 8, 0, 0, 0, 0, 0},
+ { 2, 1, 0, 0, 0, 0}
+ }, {
+ { 8, 0, 0, 0, 0, 0},
+ { 6, 0, 0, 0, 0, 0},
+ { 5, 4, 3, 2, 1, 0},
+ {11, 9, 7, 0, 0, 0}
+ }, {
+ { 9, 0, 0, 0, 0, 0},
+ {12, 0, 0, 0, 0, 0},
+ {10, 0, 0, 0, 0, 0},
+ { 4, 2, 0, 0, 0, 0}
+ }, {
+ {11, 9, 7, 6, 0, 0},
+ { 7, 6, 0, 0, 0, 0},
+ {12, 0, 0, 0, 0, 0},
+ {12, 0, 0, 0, 0, 0}
+ }
+};
+
+const u8 gTradeMonSpriteCoords[][2] = {
+ // Your party
+ {1, 5},
+ {8, 5},
+ {1, 10},
+ {8, 10},
+ {1, 15},
+ {8, 15},
+
+ // Friend's party
+ {16, 5},
+ {23, 5},
+ {16, 10},
+ {23, 10},
+ {16, 15},
+ {23, 15},
+
+ {23, 18} // CANCEL
+};
+
+const u8 gTradeLevelDisplayCoords[2][6][2] = {
+ {
+ // Your party
+ {5, 4},
+ {12, 4},
+ {5, 9},
+ {12, 9},
+ {5, 14},
+ {12, 14},
+ },
+ {
+ // Friend's party
+ {20, 4},
+ {27, 4},
+ {20, 9},
+ {27, 9},
+ {20, 14},
+ {27, 14}
+ }
+};
+
+const u8 gTradeMonBoxCoords[2][6][2] = {
+ {
+ // Your party
+ {1, 3},
+ {8, 3},
+ {1, 8},
+ {8, 8},
+ {1, 13},
+ {8, 13},
+ },
+ {
+ // Friend's party
+ {16, 3},
+ {23, 3},
+ {16, 8},
+ {23, 8},
+ {16, 13},
+ {23, 13}
+ }
+};
+
+const u8 gTradeUnknownSpriteCoords[][2][2] = {
+ {
+ { 59, 10},
+ {179, 10},
+ },
+ {
+ { 59, 10},
+ {179, 10}
+ }
+};
+
+const u8 *const gUnknown_0820C2F0[] = {
+ TradeText_LinkStandby,
+ TradeText_TradeCancelled,
+ TradeText_OnlyPoke,
+ TradeText_NonTradablePoke,
+ TradeText_WaitingForFriend,
+ TradeText_WantToTrade
+};
+
+const u8 gTradeMessageWindowRects[][4] = {
+ {8, 7, 22, 12},
+ {8, 7, 22, 12},
+ {6, 7, 24, 12},
+ {6, 7, 24, 12},
+ {8, 7, 22, 12},
+ {7, 7, 23, 12}
+};
+
+const struct MenuAction2 gUnknown_0820C320[] = {
+ {TradeText_Summary2, sub_804A9F4},
+ {TradeText_Trade2, sub_804AA00}
+};
+
+const u8 gUnknown_0820C330[][2] = {
+ { 0, 14},
+ {15, 29}
+};
+
+const u8 gUnknown_0820C334[][2] = {
+ { 3, 5},
+ { 3, 7},
+ {18, 5},
+ {18, 7}
+};
+
+const u8 gOtherText_Terminator[] = _("");
+const u8 gOtherText_MaleSymbol3[] = _("♂");
+const u8 gOtherText_FemaleSymbol3[] = _("♀");
+const u8 gOtherText_GenderlessSymbol[] = _("$");
+
+u8 *const unref_data_820C344 = gTileBuffer;
+const u8 unref_strings_820C348[][13] = {
+ _("かいめの そうしん"),
+ _("かいめの じゅしん"),
+ _("ポケモンアイコンセット"),
+ _("OBJテキストセット"),
+ _("セルセット"),
+ _("OBJテキストADD"),
+ _("システムメッセージADD"),
+ _("はいけいセット"),
+};
+
+const u8 gUnknown_0820C3B0[] = _("ヌケニン");
+const u8 unref_string_0820C3B5[] = _("こうかんせいりつ ");
+const u8 unref_string_0820C3C3[] = _("だめだたらしいよ ");
+const u8 gUnknown_0820C3D1[][2] = {
+ { 4, 3},
+ {19, 3},
+ { 0, 0}
+};
+
+const u16 gTradeBallPalette[] = INCBIN_U16("graphics/trade/ball.gbapal");
+const u32 gTradeBallTiles[] = INCBIN_U32("graphics/trade/ball.4bpp");
+const u16 gUnknown_0820C9F8[][16] = {
+ INCBIN_U16("graphics/trade/unknown.gbapal"),
+ INCBIN_U16("graphics/trade/gba.gbapal"),
+ INCBIN_U16("graphics/trade/shadow.gbapal"),
+ {},
+ INCBIN_U16("graphics/trade/misc.gbapal")
+};
+
+const u32 gUnknown_0820CA98[] = INCBIN_U32("graphics/trade/gba.4bpp");
+const u32 gUnknown_0820CA98_2[] = INCBIN_U32("graphics/trade/shadow.4bpp");
+const u32 gUnknown_0820DD98[] = INCBIN_U32("graphics/trade/pokeball_symbol.8bpp");
+const u16 gUnknown_0820F798[] = INCBIN_U16("graphics/trade/shadow_map.bin");
+const u16 gUnknown_08210798[] = INCBIN_U16("graphics/trade/gba_map.bin");
+const u16 gUnknown_08211798[] = INCBIN_U16("graphics/trade/cable_closeup_map.bin");
+const u16 gUnknown_08211F98[] = INCBIN_U16("graphics/trade/pokeball_symbol_map.bin");
+const u16 unused_08212098[] = INCBIN_U16("graphics/unused/unknown/8212098.gbapal");
+const u16 gTradeCableEndPalette[] = INCBIN_U16("graphics/trade/cable_end.gbapal");
+const u16 unused_082120D8[] = INCBIN_U16("graphics/unused/unknown/82120D8.gbapal");
+const u16 nullpal_082120F8[16] = {};
+const u16 gTradeGlowPalette[] = INCBIN_U16("graphics/trade/glow.gbapal");
+const u32 gTradeGlow1Tiles[] = INCBIN_U32("graphics/trade/glow1.4bpp");
+const u32 gTradeGlow2Tiles[] = INCBIN_U32("graphics/trade/glow2.4bpp");
+const u32 gTradeCableEndTiles[] = INCBIN_U32("graphics/trade/cable_end.4bpp");
+const u32 gTradeGBAScreenTiles[] = INCBIN_U32("graphics/trade/gba_screen.4bpp");
+const u32 gUnknown_08213738[] = INCBIN_U32("graphics/trade/gba_affine.8bpp");
+const u16 gUnknown_08215778[] = INCBIN_U16("graphics/trade/gba_affine_map.bin");
+
+const struct OamData gOamData_8215878 = {
+ .affineMode = 1,
+ .size = 1
+};
+
+const union AnimCmd gSpriteAnim_8215880[] = {
+ ANIMCMD_FRAME( 0, 3),
+ ANIMCMD_FRAME( 4, 3),
+ ANIMCMD_FRAME( 8, 3),
+ ANIMCMD_FRAME(12, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(20, 3),
+ ANIMCMD_FRAME(24, 3),
+ ANIMCMD_FRAME(28, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(36, 3),
+ ANIMCMD_FRAME(40, 3),
+ ANIMCMD_FRAME(44, 3),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME( 0, 3),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_82158BC[] = {
+ ANIMCMD_FRAME( 0, 3),
+ ANIMCMD_FRAME( 4, 3),
+ ANIMCMD_FRAME( 8, 3),
+ ANIMCMD_FRAME(12, 3),
+ ANIMCMD_FRAME(16, 3),
+ ANIMCMD_FRAME(20, 3),
+ ANIMCMD_FRAME(24, 3),
+ ANIMCMD_FRAME(28, 3),
+ ANIMCMD_FRAME(32, 3),
+ ANIMCMD_FRAME(36, 3),
+ ANIMCMD_FRAME(40, 3),
+ ANIMCMD_FRAME(44, 3),
+ ANIMCMD_LOOP(2),
+ ANIMCMD_FRAME( 0, 3),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_82158F8[] = {
+ gSpriteAnim_8215880,
+ gSpriteAnim_82158BC
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_8215900[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_8215910[] = {
+ AFFINEANIMCMD_FRAME(-8, 0, 0, 20),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_8215920[] = {
+ AFFINEANIMCMD_FRAME(0x60, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME( 0, 0, 0, 5),
+ AFFINEANIMCMD_FRAME( 8, 0, 0, 20),
+ AFFINEANIMCMD_END
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_8215940[] = {
+ gSpriteAffineAnim_8215900,
+ gSpriteAffineAnim_8215910,
+ gSpriteAffineAnim_8215920
+};
+
+const struct SpriteSheet gUnknown_0821594C = {
+ (const u8 *)gTradeBallTiles, 0x600, 5557
+};
+
+const struct SpritePalette gUnknown_08215954 = {
+ gTradeBallPalette, 5558
+};
+
+const struct SpriteTemplate gSpriteTemplate_821595C = {
+ 5557,
+ 5558,
+ &gOamData_8215878,
+ gSpriteAnimTable_82158F8,
+ NULL,
+ gSpriteAffineAnimTable_8215940,
+ sub_804D6BC
+};
+
+const struct OamData gOamData_8215974 = {
+ .affineMode = 1,
+ .objMode = 1,
+ .size = 2,
+ .priority = 1
+};
+
+const union AnimCmd gSpriteAnim_821597C[] = {
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_8215984[] = {
+ gSpriteAnim_821597C
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_8215988[] = {
+ AFFINEANIMCMD_FRAME(-10, -10, 0, 5),
+ AFFINEANIMCMD_FRAME(10, 10, 0, 5),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_82159A0[] = {
+ gSpriteAffineAnim_8215988
+};
+
+const struct SpriteSheet gUnknown_082159A4 = {
+ (const u8 *)gTradeGlow1Tiles, 0x200, 5550
+};
+
+const struct SpritePalette gUnknown_082159AC = {
+ gTradeGlowPalette, 5551
+};
+
+const struct SpritePalette gUnknown_082159B4 = {
+ gTradeCableEndPalette, 5555
+};
+
+const struct SpriteTemplate gSpriteTemplate_82159BC = {
+ 5550,
+ 5551,
+ &gOamData_8215974,
+ gSpriteAnimTable_8215984,
+ NULL,
+ gSpriteAffineAnimTable_82159A0,
+ sub_804B058
+};
+
+const struct OamData gOamData_82159D4 = {
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 2,
+ .priority = 1
+};
+
+const union AnimCmd gSpriteAnim_82159DC[] = {
+ ANIMCMD_FRAME(0, 5, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+const union AnimCmd gSpriteAnim_82159E4[] = {
+ ANIMCMD_FRAME(8, 5, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_82159EC[] = {
+ gSpriteAnim_82159DC,
+ gSpriteAnim_82159E4
+};
+
+const struct SpriteSheet gUnknown_082159F4 = {
+ (const u8 *)gTradeGlow2Tiles, 0x300, 5552
+};
+
+const struct SpriteTemplate gSpriteTemplate_82159FC = {
+ 5552,
+ 5551,
+ &gOamData_82159D4,
+ gSpriteAnimTable_82159EC,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ sub_804B07C
+};
+
+const struct OamData gOamData_8215A14 = {
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 2,
+ .priority = 1
+};
+
+const union AnimCmd gSpriteAnim_8215A1C[] = {
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_8215A24[] = {
+ gSpriteAnim_8215A1C
+};
+
+const struct SpriteSheet gUnknown_08215A28 = {
+ (const u8 *)gTradeCableEndTiles, 0x100, 5554
+};
+
+const struct SpriteTemplate gSpriteTemplate_8215A30 = {
+ 5554,
+ 5555,
+ &gOamData_8215A14,
+ gSpriteAnimTable_8215A24,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ sub_804B0BC
+};
+
+const struct OamData gOamData_8215A48 = {
+ .shape = ST_OAM_H_RECTANGLE,
+ .size = 3,
+ .priority = 1
+};
+
+const union AnimCmd gSpriteAnim_8215A50[] = {
+ ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 2, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(96, 2, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(64, 2, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 2, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_FRAME( 0, 2, .vFlip = TRUE, .hFlip = TRUE),
+ ANIMCMD_LOOP(8),
+ ANIMCMD_END
+};
+
+const union AnimCmd *const gSpriteAnimTable_8215A74[] = {
+ gSpriteAnim_8215A50
+};
+
+const struct SpriteSheet gUnknown_08215A78 = {
+ (const u8 *)gTradeGBAScreenTiles, 0x1000, 5556
+};
+
+const struct SpriteTemplate gSpriteTemplate_8215A80 = {
+ 5556,
+ 5555,
+ &gOamData_8215A48,
+ gSpriteAnimTable_8215A74,
+ NULL,
+ gDummySpriteAffineAnimTable,
+ sub_804B104
+};
+
+const u16 gTradeGlow2PaletteAnimTable[] = {
+ RGB(18, 24, 31),
+ RGB(18, 24, 31),
+ RGB(18, 24, 31),
+ RGB(31, 31, 31),
+ RGB(31, 31, 31),
+ RGB(31, 31, 31),
+ RGB(18, 24, 31),
+ RGB(18, 24, 31),
+ RGB(18, 24, 31),
+ RGB(31, 31, 31),
+ RGB(31, 31, 31),
+ RGB(31, 31, 31),
+};
+
+const union AffineAnimCmd gSpriteAffineAnim_8215AB0[] = {
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+const union AffineAnimCmd *const gSpriteAffineAnimTable_8215AC0[] = {
+ gSpriteAffineAnim_8215AB0
+};
+
+const struct InGameTrade gIngameTrades[] = {
+#if ENGLISH
+ {
+ _("MAKIT"), SPECIES_MAKUHITA,
+ 5, 5, 4, 4, 4, 4,
+ TRUE, 49562,
+ 5, 5, 5, 5, 30,
+ 0x9C40,
+ ITEM_X_ATTACK, -1,
+ _("ELYSSA"), MALE, 10,
+ SPECIES_SLAKOTH
+ }, {
+ _("SKITIT"), SPECIES_SKITTY,
+ 5, 4, 4, 5, 4, 4,
+ FALSE, 2259,
+ 5, 5, 30, 5, 5,
+ 0x498A2E17,
+ ITEM_GLITTER_MAIL, 0,
+ _("DARRELL"), FEMALE, 10,
+ SPECIES_PIKACHU
+ }, {
+ _("COROSO"),
+ SPECIES_CORSOLA,
+ 4, 4, 5, 4, 4, 5,
+ TRUE, 50183,
+ 5, 30, 5, 5, 5,
+ 0x4C970B7F,
+ ITEM_TROPIC_MAIL, 1,
+ _("LANE"), FEMALE, 10,
+ SPECIES_BELLOSSOM
+ }
+#elif GERMAN
+ {
+ _("MAKIT"), SPECIES_MAKUHITA,
+ 5, 5, 4, 4, 4, 4,
+ TRUE, 49562,
+ 5, 5, 5, 5, 30,
+ 0x9C40,
+ ITEM_X_ATTACK, -1,
+ _("MAIK"), MALE, 10,
+ SPECIES_SLAKOTH
+ }, {
+ _("CONEC"), SPECIES_SKITTY,
+ 5, 4, 4, 5, 4, 4,
+ FALSE, 2259,
+ 5, 5, 30, 5, 5,
+ 0x498A2E17,
+ ITEM_GLITTER_MAIL, 0,
+ _("MADINA"), FEMALE, 10,
+ SPECIES_PIKACHU
+ }, {
+ _("CORASO"),
+ SPECIES_CORSOLA,
+ 4, 4, 5, 4, 4, 5,
+ TRUE, 50183,
+ 5, 30, 5, 5, 5,
+ 0x4C970B7F,
+ ITEM_TROPIC_MAIL, 1,
+ _("LIANA"), FEMALE, 10,
+ SPECIES_BELLOSSOM
+ }
+#endif
+};
+
+const u16 gIngameTradeMail[][10] = {
+#if ENGLISH
+ {
+ EC_POKEMON(PIKACHU),
+ EC_WORD_THANK_YOU,
+ EC_WORD_EXCL,
+ EC_WORD_MY,
+ EC_POKEMON(SKITTY),
+ EC_WORD_EATS,
+ EC_WORD_A_LOT,
+ EC_WORD_NOW,
+ EC_WORD_EXCL,
+ 0
+ }, {
+ EC_WORD_I,
+ EC_WORD_WANT,
+ EC_WORD_TO,
+ EC_WORD_SEE,
+ EC_WORD_A,
+ EC_MOVE2(PETAL_DANCE),
+ EC_WORD_IT_S,
+ EC_WORD_SO,
+ EC_WORD_PRETTY,
+ 0
+ }
+#elif GERMAN
+ {
+ EC_POKEMON(PIKACHU),
+ EC_WORD_THANK_YOU,
+ EC_WORD_EXCL,
+ EC_WORD_MY,
+ EC_POKEMON(SKITTY),
+ EC_WORD_EATS,
+ 0xFFFF,
+ EC_WORD_A_LOT,
+ EC_WORD_EXCL,
+ 0
+ }, {
+ EC_WORD_I,
+ EC_WORD_WANT,
+ EC_WORD_OF,
+ EC_MOVE2(PETAL_DANCE),
+ EC_WORD_WORKS,
+ EC_WORD_THE,
+ EC_WORD_IS,
+ EC_WORD_SO,
+ EC_WORD_PRETTY,
+ 0
+ }
+#endif
+};
+
+const s8 gTradeBallVerticalVelocityTable[] = {
+ 0, 0, 1, 0,
+ 1, 0, 1, 1,
+ 1, 1, 2, 2,
+ 2, 2, 3, 3,
+ 3, 3, 4, 4,
+ 4, 4, -4, -4,
+ -4, -3, -3, -3,
+ -3, -2, -2, -2,
+ -2, -1, -1, -1,
+ -1, 0, -1, 0,
+ -1, 0, 0, 0,
+ 0, 0, 1, 0,
+ 1, 0, 1, 1,
+ 1, 1, 2, 2,
+ 2, 2, 3, 3,
+ 3, 3, 4, 4,
+ 4, 4, -4, -3,
+ -3, -2, -2, -1,
+ -1, -1, 0, -1,
+ 0, 0, 0, 0,
+ 0, 0, 1, 0,
+ 1, 1, 1, 2,
+ 2, 3, 3, 4,
+ -4, -3, -2, -1,
+ -1, -1, 0, 0,
+ 0, 0, 1, 0,
+ 1, 1, 2, 3
+};
+
+// .text
+
+void sub_8047CD8(void)
+{
+ SetMainCallback2(sub_8047EC0);
+}
+
+static void sub_8047CE8(void)
+{
+ u8 mpId;
+ sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[0], gSaveBlock2.playerName, 0xC);
+ mpId = GetMultiplayerId();
+ sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[3], gLinkPlayers[mpId ^ 1].name, 0xC);
+ sub_804AFB8(&gWindowConfig_81E725C, gUnknown_020296CC[6], gUnknown_0820C14C[0], 0x8);
+ sub_804ACD8(gUnknown_0820C14C[1], gUnknown_020296CC[8], 0x14);
+ nullsub_5(3, 0);
+}
+
+static void sub_8047D58(void)
+{
+ struct SpriteTemplate spriteTemplate;
+ int i;
+ u8 mpId;
+ u16 slen;
+ int language;
+
+ slen = StringLength(gSaveBlock2.playerName);
+ language = slen <= 5 ? 0 : 1;
+ for (i = 0; i < 3; i ++)
+ {
+ spriteTemplate = gSpriteTemplate_820C0EC;
+ spriteTemplate.tileTag += i;
+ CreateSprite(&spriteTemplate, gTradeUnknownSpriteCoords[language][0][0] + 32 * i, gTradeUnknownSpriteCoords[language][0][1], 1);
+ }
+
+ mpId = GetMultiplayerId();
+ slen = StringLength(gLinkPlayers[mpId ^ 1].name);
+ language = slen <= 5 ? 0 : 1;
+ for (i = 0; i < 3; i ++)
+ {
+ spriteTemplate = gSpriteTemplate_820C0EC;
+ spriteTemplate.tileTag += i + 3;
+ CreateSprite(&spriteTemplate, gTradeUnknownSpriteCoords[language][1][0] + 32 * i, gTradeUnknownSpriteCoords[language][1][1], 1);
+ }
+ nullsub_5(5, 0);
+}
+
+static void sub_8047E44(void)
+{
+ struct SpriteTemplate spriteTemplate;
+ int i;
+
+ for (i = 0; i < 2; i ++)
+ {
+ spriteTemplate = gSpriteTemplate_820C0EC;
+ spriteTemplate.tileTag += i + 6;
+ CreateSprite(&spriteTemplate, 0xd6 + 32 * i, 0x98, 1);
+ }
+
+ for (i = 0; i < 5; i ++)
+ {
+ spriteTemplate = gSpriteTemplate_820C0EC;
+ spriteTemplate.tileTag += i + 8;
+ CreateSprite(&spriteTemplate, 0x18 + 32 * i, 0x96, 1);
+ }
+}
+
+static void sub_8047EC0(void)
+{
+ int i;
+
+ switch (gMain.state)
+ {
+ case 0:
+ gUnknown_03004824 = &ewram_2010000.unk_07000;
+ sub_804AA88();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ sub_804A964(&gUnknown_03004824->unk_00c8, (void *)BG_SCREEN_ADDR(5));
+ SetVBlankCallback(sub_80489F4);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ SetUpWindowConfig(&gWindowConfig_81E6F84);
+ InitWindowFromConfig(&gUnknown_03004824->window, &gWindowConfig_81E6F84);
+ gUnknown_03004824->unk_007a = SetTextWindowBaseTileNum(20);
+ LoadTextWindowGraphics(&gUnknown_03004824->window);
+ MenuZeroFillScreen();
+ sub_809D51C();
+ gUnknown_03004824->unk_0075 = 0;
+ gUnknown_03004824->unk_007b = 0;
+ gUnknown_03004824->unk_007c = 0;
+ gUnknown_03004824->unk_0080[0] = 0;
+ gUnknown_03004824->unk_0080[1] = 0;
+ gUnknown_03004824->unk_0086 = 0;
+ gUnknown_03004824->unk_0087 = 0;
+ gUnknown_03004824->unk_00b4 = 0;
+ gUnknown_03000508[0] = 0;
+ gMain.state ++;
+ sub_804AA0C(0);
+ CpuFill16(0, ewram_2010000.tileBuffers, sizeof(ewram_2010000.tileBuffers));
+ for (i = 0; i < 13; i ++)
+ gUnknown_020296CC[i] = ewram_2010000.tileBuffers[i];
+ break;
+ case 1:
+ gLinkType = 0x1122;
+ OpenLink();
+ for (i = 0; i < PARTY_SIZE; i ++)
+ CreateMon(&gEnemyParty[i], 0, 0, 0x20, FALSE, 0, FALSE, 0);
+ gMain.state ++;
+ gUnknown_03004824->unk_00b4 = 0;
+ CreateTask(sub_8083C50, 1);
+ break;
+ case 2:
+ gUnknown_03004824->unk_00b4 ++;
+ if (gUnknown_03004824->unk_00b4 > 11)
+ {
+ gUnknown_03004824->unk_00b4 = 0;
+ gMain.state ++;
+ }
+ break;
+ case 3:
+ if (GetLinkPlayerCount_2() >= sub_800820C())
+ {
+ if (IsLinkMaster())
+ {
+ if (++gUnknown_03004824->unk_00b4 > 30)
+ {
+ sub_8007F4C();
+ gMain.state ++;
+ }
+ }
+ else
+ gMain.state ++;
+ }
+ break;
+ case 4:
+ if (gReceivedRemoteLinkPlayers == 1 && IsLinkPlayerDataExchangeComplete() == TRUE)
+ {
+ CalculatePlayerPartyCount();
+ gMain.state ++;
+ }
+ break;
+ case 5:
+ if (sub_8048D44())
+ {
+ sub_804AF84();
+ gMain.state ++;
+ }
+ break;
+ case 6:
+ CalculateEnemyPartyCount();
+ FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, 0, 0, 29, 19);
+ REG_DISPCNT = 0;
+ gUnknown_03004824->partyCounts[0] = gPlayerPartyCount;
+ gUnknown_03004824->partyCounts[1] = gEnemyPartyCount;
+ for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++)
+ gUnknown_03004824->partyIcons[0][i] = CreateMonIcon(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2), sub_809D62C, gTradeMonSpriteCoords[i][0] * 8 + 14, gTradeMonSpriteCoords[i][1] * 8 - 12, TRUE, GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY));
+ for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++)
+ gUnknown_03004824->partyIcons[1][i] = CreateMonIcon(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL), sub_809D62C, gTradeMonSpriteCoords[6 + i][0] * 8 + 14, gTradeMonSpriteCoords[6 + i][1] * 8 - 12, TRUE, GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY));
+ nullsub_5(2, 0);
+ gMain.state ++;
+ break;
+ case 7:
+ LoadHeldItemIconGraphics();
+ CreateHeldItemIcons(&gUnknown_03004824->partyCounts[0], gUnknown_03004824->partyIcons[0], 0);
+ gMain.state ++;
+ break;
+ case 8:
+ CreateHeldItemIcons(&gUnknown_03004824->partyCounts[0], gUnknown_03004824->partyIcons[0], 1);
+ gMain.state ++;
+ break;
+ case 9:
+ sub_8047CE8();
+ gMain.state ++;
+ gUnknown_03004824->unk_00b4 = 0;
+ break;
+ case 10:
+ nullsub_5(4, 0);
+ if (sub_804ABF8())
+ gMain.state ++;
+ break;
+ case 11:
+ sub_8047D58();
+ gMain.state ++;
+ break;
+ case 12:
+ sub_8047E44();
+ gUnknown_03004824->tradeMenuCursorSpriteIdx = CreateSprite(&gSpriteTemplate_820C134, gTradeMonSpriteCoords[0][0] * 8 + 32, gTradeMonSpriteCoords[0][1] * 8, 2);
+ gUnknown_03004824->tradeMenuCursorPosition = 0;
+ gMain.state ++;
+ nullsub_5(6, 0);
+ break;
+ case 13:
+ sub_804ACF4(0);
+ sub_804A41C(0);
+ gUnknown_03004824->unk_0000 = 0;
+ gUnknown_03004824->unk_0001 = 0;
+ sub_8048C70();
+ gMain.state ++;
+ nullsub_5(7, 0);
+ PlayBGM(BGM_P_SCHOOL);
+ break;
+ case 14:
+ sub_804ACF4(1);
+ sub_804A41C(1);
+ gMain.state ++;
+ // fallthrough
+ case 15:
+ sub_8048B0C(0);
+ gMain.state ++;
+ break;
+ case 16:
+ sub_8048B0C(1);
+ gMain.state ++;
+ break;
+ case 17:
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ gMain.state ++;
+ break;
+ case 18:
+ REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON;
+ gMain.state ++;
+ break;
+ case 19:
+ sub_804AE3C(0);
+ gMain.state ++;
+ break;
+ case 20:
+ sub_804AE3C(1);
+ sub_804AF10();
+ gMain.state ++;
+ break;
+ case 21:
+ if (!gPaletteFade.active)
+ {
+ gMain.callback1 = sub_80494D8;
+ SetMainCallback2(sub_8048AB4);
+ gUnknown_03000508[0] = 0;
+ }
+ break;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_80484F4(void)
+{
+ int i;
+ struct UnkStructF *unkStructF;
+
+ switch (gMain.state)
+ {
+ case 0:
+ gUnknown_03004824 = &ewram_2010000.unk_07000;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ sub_804A964(&gUnknown_03004824->unk_00c8, (void *)BG_SCREEN_ADDR(5));
+ SetVBlankCallback(sub_80489F4);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ SetUpWindowConfig(&gWindowConfig_81E6F84);
+ InitWindowFromConfig(&gUnknown_03004824->window, &gWindowConfig_81E6F84);
+ gUnknown_03004824->unk_007a = SetTextWindowBaseTileNum(20);
+ LoadTextWindowGraphics(&gUnknown_03004824->window);
+ MenuZeroFillScreen();
+ sub_809D51C();
+ gUnknown_03004824->unk_0075 = 0;
+ gUnknown_03004824->unk_007b = 0;
+ gUnknown_03004824->unk_007c = 0;
+ gUnknown_03004824->unk_0080[0] = 0;
+ gUnknown_03004824->unk_0080[1] = 0;
+ gUnknown_03004824->unk_0086 = 0;
+ gUnknown_03004824->unk_0087 = 0;
+ gUnknown_03004824->unk_00b4 = 0;
+ gUnknown_03000508[0] = 0;
+ gMain.state ++;
+ for (i = 0; i < 13; i ++)
+ gUnknown_020296CC[i] = ewram_2010000.tileBuffers[i];
+ break;
+ case 1:
+ gMain.state ++;
+ gUnknown_03004824->unk_00b4 = 0;
+ break;
+ case 2:
+ gMain.state ++;
+ break;
+ case 3:
+ gMain.state ++;
+ break;
+ case 4:
+ CalculatePlayerPartyCount();
+ gMain.state ++;
+ break;
+ case 5:
+ gMain.state ++;
+ break;
+ case 6:
+ CalculateEnemyPartyCount();
+ REG_DISPCNT = 0;
+ gUnknown_03004824->partyCounts[0] = gPlayerPartyCount;
+ gUnknown_03004824->partyCounts[1] = gEnemyPartyCount;
+ sub_804A41C(0);
+ sub_804A41C(1);
+ for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++)
+ gUnknown_03004824->partyIcons[0][i] = CreateMonIcon(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL), sub_809D62C, gTradeMonSpriteCoords[i][0] * 8 + 14, gTradeMonSpriteCoords[i][1] * 8 - 12, TRUE, GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY));
+ for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++)
+ gUnknown_03004824->partyIcons[1][i] = CreateMonIcon(GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL), sub_809D62C, gTradeMonSpriteCoords[6 + i][0] * 8 + 14, gTradeMonSpriteCoords[6 + i][1] * 8 - 12, TRUE, GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY));
+ nullsub_5(2, 0);
+ gMain.state ++;
+ break;
+ case 7:
+ LoadHeldItemIconGraphics();
+ CreateHeldItemIcons(&gUnknown_03004824->partyCounts[0], gUnknown_03004824->partyIcons[0], 0);
+ gMain.state ++;
+ break;
+ case 8:
+ CreateHeldItemIcons(&gUnknown_03004824->partyCounts[0], gUnknown_03004824->partyIcons[0], 1);
+ gMain.state ++;
+ break;
+ case 9:
+ sub_8047CE8();
+ gMain.state ++;
+ gUnknown_03004824->unk_00b4 = 0;
+ break;
+ case 10:
+ nullsub_5(4, 0);
+ if (sub_804ABF8())
+ {
+ gMain.state ++;
+ }
+ break;
+ case 11:
+ sub_8047D58();
+ gMain.state ++;
+ break;
+ case 12:
+ sub_8047E44();
+ unkStructF = &ewram_2010000.unk_08000;
+ if (gUnknown_03004824->tradeMenuCursorPosition < 6)
+ gUnknown_03004824->tradeMenuCursorPosition = unkStructF->unk_0009;
+ else
+ gUnknown_03004824->tradeMenuCursorPosition = unkStructF->unk_0009 + 6;
+ gUnknown_03004824->tradeMenuCursorSpriteIdx = CreateSprite(&gSpriteTemplate_820C134, gTradeMonSpriteCoords[gUnknown_03004824->tradeMenuCursorPosition][0] * 8 + 32, gTradeMonSpriteCoords[gUnknown_03004824->tradeMenuCursorPosition][1] * 8, 2);
+ gMain.state = 15;
+ nullsub_5(6, 0);
+ break;
+ case 15:
+ sub_8048B0C(0);
+ gMain.state ++;
+ break;
+ case 16:
+ sub_8048B0C(1);
+ gUnknown_03004824->unk_0000 = 0;
+ gUnknown_03004824->unk_0001 = 0;
+ sub_8048C70();
+ nullsub_5(7, 0);
+ gMain.state ++;
+ break;
+ case 17:
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ gMain.state ++;
+ break;
+ case 18:
+ REG_DISPCNT = DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON;
+ gMain.state ++;
+ break;
+ case 19:
+ gMain.state ++;
+ break;
+ case 20:
+ sub_804AF10();
+ gMain.state ++;
+ break;
+ case 21:
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sub_8048AB4);
+ gUnknown_03000508[0] = 0;
+ }
+ break;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_80489F4(void)
+{
+ sub_804A940(&gUnknown_03004824->unk_00c8);
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+/*static*/ void sub_8048A14(void)
+{
+ if (++gUnknown_03004824->unk_00b4 >= 16)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gUnknown_03004824->unk_007b = 10;
+ }
+}
+
+/*static*/ void sub_8048A50(void)
+{
+ if (!gPaletteFade.active)
+ {
+ gUnknown_020297D8[0] = gUnknown_03004824->tradeMenuCursorPosition;
+ gUnknown_020297D8[1] = gUnknown_03004824->unk_008a;
+ sub_800832C();
+ gUnknown_03004824->unk_007b = 13;
+ }
+}
+
+/*static*/ void sub_8048A90(void)
+{
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ gMain.callback1 = NULL;
+ SetMainCallback2(sub_804B41C);
+ }
+}
+
+static void sub_8048AB4(void)
+{
+ sub_8049DE0();
+ sub_804AB30();
+ sub_8049ED4(0);
+ sub_8049ED4(1);
+ REG_BG2HOFS = gUnknown_03004824->unk_0000++;
+ REG_BG3HOFS = gUnknown_03004824->unk_0001--;
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+#ifdef NONMATCHING
+// Only minor register permutations
+#pragma push_macro("BLOCKSIZE")
+#define BLOCKSIZE 0x800
+static void sub_8048B0C(u8 a0)
+{
+ int i;
+ u16 *dest;
+ const u16 *src;
+ u32 size;
+ switch (a0)
+ {
+ case 0:
+ for (i = 0; i < 48; i ++)
+ {
+ gPlttBufferUnfaded[i] = *(gUnknown_08EA02C8 + i);
+ gPlttBufferFaded[i] = *(gUnknown_08EA02C8 + i);
+ }
+ src = gUnknown_08EA0348;
+ dest = (u16 *)BG_VRAM;
+ size = 0x1280;
+ while (1)
+ {
+ DmaCopy16(3, src, dest, BLOCKSIZE * sizeof(u16));
+ src += BLOCKSIZE;
+ dest += BLOCKSIZE;
+ size -= BLOCKSIZE * sizeof(u16);
+ if (size <= BLOCKSIZE * sizeof(u16))
+ {
+ DmaCopy16(3, src, dest, size);
+ break;
+ }
+ }
+ for (i = 0; i < 0x400; i ++)
+ gUnknown_03004824->unk_00c8.unk_12[i] = gUnknown_08EA15C8[i];
+ dest = (u16 *)BG_SCREEN_ADDR(6);
+ DmaCopy16(3, gTradeStripesBG2Tilemap, dest, 0x800);
+ break;
+ case 1:
+ src = gTradeStripesBG3Tilemap;
+ dest = (u16 *)BG_SCREEN_ADDR(7);
+ DmaCopy16(3, src, dest, 0x800);
+ sub_804A6DC(0);
+ sub_804A6DC(1);
+ sub_804A938(&gUnknown_03004824->unk_00c8);
+ REG_BG0CNT &= ~0x03; // BGCNT_PRIORITY(0)
+ REG_BG1CNT = BGCNT_PRIORITY(1) | BGCNT_SCREENBASE(5);
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(6);
+ REG_BG3CNT = BGCNT_PRIORITY(3) | BGCNT_SCREENBASE(7);
+ REG_BG0HOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG2HOFS = 0;
+ REG_BG3HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1VOFS = 0;
+ REG_BG2VOFS = 0;
+ REG_BG3VOFS = 0;
+ break;
+ }
+}
+#pragma pop_macro("BLOCKSIZE")
+#else
+asm(".include \"constants/gba_constants.inc\"");
+__attribute__((naked))
+static void sub_8048B0C(u8 a0)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08048B1C\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _08048BD0\n"
+ "\tb _08048C3A\n"
+ "_08048B1C:\n"
+ "\tldr r5, _08048BA0 @ =gUnknown_08EA0348\n"
+ "\tldr r0, _08048BA4 @ =gTradeStripesBG2Tilemap\n"
+ "\tmov r12, r0\n"
+ "\tldr r1, _08048BA8 @ =gUnknown_08EA02C8\n"
+ "\tldr r4, _08048BAC @ =gPlttBufferFaded\n"
+ "\tldr r3, _08048BB0 @ =gPlttBufferUnfaded\n"
+ "\tmovs r2, 0x2F\n"
+ "_08048B2A:\n"
+ "\tldrh r0, [r1]\n"
+ "\tstrh r0, [r3]\n"
+ "\tldrh r0, [r1]\n"
+ "\tstrh r0, [r4]\n"
+ "\tadds r1, 0x2\n"
+ "\tadds r4, 0x2\n"
+ "\tadds r3, 0x2\n"
+ "\tsubs r2, 0x1\n"
+ "\tcmp r2, 0\n"
+ "\tbge _08048B2A\n"
+ "\tadds r3, r5, 0\n"
+ "\tmovs r4, 0xC0\n"
+ "\tlsls r4, 19\n"
+ "\tmovs r5, 0x94\n"
+ "\tlsls r5, 5\n"
+ "\tldr r1, _08048BB4 @ =0x040000d4\n"
+ "\tldr r6, _08048BB8 @ =0x80000800\n"
+ "\tmovs r2, 0x80\n"
+ "\tlsls r2, 5\n"
+ "\tmovs r7, 0x80\n"
+ "\tlsls r7, 24\n"
+ "_08048B54:\n"
+ "\tstr r3, [r1]\n"
+ "\tstr r4, [r1, 0x4]\n"
+ "\tstr r6, [r1, 0x8]\n"
+ "\tldr r0, [r1, 0x8]\n"
+ "\tadds r3, r2\n"
+ "\tadds r4, r2\n"
+ "\tsubs r5, r2\n"
+ "\tcmp r5, r2\n"
+ "\tbhi _08048B54\n"
+ "\tstr r3, [r1]\n"
+ "\tstr r4, [r1, 0x4]\n"
+ "\tlsrs r0, r5, 1\n"
+ "\torrs r0, r7\n"
+ "\tstr r0, [r1, 0x8]\n"
+ "\tldr r0, [r1, 0x8]\n"
+ "\tmovs r2, 0\n"
+ "\tldr r5, _08048BBC @ =0x000003ff\n"
+ "\tldr r4, _08048BC0 @ =gUnknown_03004824\n"
+ "\tldr r3, _08048BC4 @ =gUnknown_08EA15C8\n"
+ "_08048B7A:\n"
+ "\tldr r0, [r4]\n"
+ "\tlsls r1, r2, 1\n"
+ "\tadds r0, 0xDA\n"
+ "\tadds r0, r1\n"
+ "\tldrh r1, [r3]\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r3, 0x2\n"
+ "\tadds r2, 0x1\n"
+ "\tcmp r2, r5\n"
+ "\tble _08048B7A\n"
+ "\tldr r1, _08048BC8 @ =0x06003000\n"
+ "\tldr r0, _08048BB4 @ =0x040000d4\n"
+ "\tmov r2, r12\n"
+ "\tstr r2, [r0]\n"
+ "\tstr r1, [r0, 0x4]\n"
+ "\tldr r1, _08048BCC @ =0x80000400\n"
+ "\tstr r1, [r0, 0x8]\n"
+ "\tldr r0, [r0, 0x8]\n"
+ "\tb _08048C3A\n"
+ "\t.align 2, 0\n"
+ "_08048BA0: .4byte gUnknown_08EA0348\n"
+ "_08048BA4: .4byte gTradeStripesBG2Tilemap\n"
+ "_08048BA8: .4byte gUnknown_08EA02C8\n"
+ "_08048BAC: .4byte gPlttBufferFaded\n"
+ "_08048BB0: .4byte gPlttBufferUnfaded\n"
+ "_08048BB4: .4byte 0x040000d4\n"
+ "_08048BB8: .4byte 0x80000800\n"
+ "_08048BBC: .4byte 0x000003ff\n"
+ "_08048BC0: .4byte gUnknown_03004824\n"
+ "_08048BC4: .4byte gUnknown_08EA15C8\n"
+ "_08048BC8: .4byte 0x06003000\n"
+ "_08048BCC: .4byte 0x80000400\n"
+ "_08048BD0:\n"
+ "\tldr r1, _08048C40 @ =gTradeStripesBG3Tilemap\n"
+ "\tldr r2, _08048C44 @ =0x06003800\n"
+ "\tldr r0, _08048C48 @ =0x040000d4\n"
+ "\tstr r1, [r0]\n"
+ "\tstr r2, [r0, 0x4]\n"
+ "\tldr r1, _08048C4C @ =0x80000400\n"
+ "\tstr r1, [r0, 0x8]\n"
+ "\tldr r0, [r0, 0x8]\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804A6DC\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_804A6DC\n"
+ "\tldr r0, _08048C50 @ =gUnknown_03004824\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0xC8\n"
+ "\tbl sub_804A938\n"
+ "\tldr r2, _08048C54 @ =REG_BG0CNT\n"
+ "\tldrh r1, [r2]\n"
+ "\tldr r0, _08048C58 @ =0x0000fffc\n"
+ "\tands r0, r1\n"
+ "\tstrh r0, [r2]\n"
+ "\tldr r1, _08048C5C @ =REG_BG1CNT\n"
+ "\tldr r2, _08048C60 @ =0x00000501\n"
+ "\tadds r0, r2, 0\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r1, 0x2\n"
+ "\tldr r2, _08048C64 @ =0x00000602\n"
+ "\tadds r0, r2, 0\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r1, 0x2\n"
+ "\tldr r2, _08048C68 @ =0x00000703\n"
+ "\tadds r0, r2, 0\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r0, _08048C6C @ =REG_BG0HOFS\n"
+ "\tmovs r1, 0\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r0, 0x4\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r0, 0x4\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r0, 0x4\n"
+ "\tstrh r1, [r0]\n"
+ "\tsubs r0, 0xA\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r0, 0x4\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r0, 0x4\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r0, 0x4\n"
+ "\tstrh r1, [r0]\n"
+ "_08048C3A:\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_08048C40: .4byte gTradeStripesBG3Tilemap\n"
+ "_08048C44: .4byte 0x06003800\n"
+ "_08048C48: .4byte 0x040000d4\n"
+ "_08048C4C: .4byte 0x80000400\n"
+ "_08048C50: .4byte gUnknown_03004824\n"
+ "_08048C54: .4byte REG_BG0CNT\n"
+ "_08048C58: .4byte 0x0000fffc\n"
+ "_08048C5C: .4byte REG_BG1CNT\n"
+ "_08048C60: .4byte 0x00000501\n"
+ "_08048C64: .4byte 0x00000602\n"
+ "_08048C68: .4byte 0x00000703\n"
+ "_08048C6C: .4byte REG_BG0HOFS");
+}
+#endif
+
+static void sub_8048C70(void)
+{
+ int i;
+ for (i = 0; i < PARTY_SIZE; i ++)
+ {
+ if (i < gUnknown_03004824->partyCounts[0])
+ {
+ gSprites[gUnknown_03004824->partyIcons[0][i]].invisible = FALSE;
+ gUnknown_03004824->tradeMenuOptionsActive[i] = TRUE;
+ }
+ else
+ {
+ gUnknown_03004824->tradeMenuOptionsActive[i] = FALSE;
+ }
+ if (i < gUnknown_03004824->partyCounts[1])
+ {
+ gSprites[gUnknown_03004824->partyIcons[1][i]].invisible = FALSE;
+ gUnknown_03004824->tradeMenuOptionsActive[i + 6] = TRUE;
+ }
+ else
+ {
+ gUnknown_03004824->tradeMenuOptionsActive[i + 6] = FALSE;
+ }
+ }
+ gUnknown_03004824->tradeMenuOptionsActive[12] = TRUE;
+}
+
+static void nullsub_5(u8 a0, u8 a1) {}
+
+static void sub_8048D24(u8 *dest, const u8 *src, u32 size)
+{
+ int i;
+ for (i = 0; i < size; i ++) dest[i] = src[i];
+}
+
+static bool8 sub_8048D44(void)
+{
+ u8 mpId = GetMultiplayerId();
+ int i;
+ u16 species;
+ u8 nickname[11];
+ struct Pokemon *pokemon;
+
+ SetLinkDebugValues(gUnknown_03004824->unk_0075 / 100, gUnknown_03004824->unk_0075 % 100);
+ switch (gUnknown_03004824->unk_0075)
+ {
+ case 0:
+ sub_8048D24(gBlockSendBuffer, (const u8 *)&gPlayerParty[0], 2 * sizeof(struct Pokemon));
+ gUnknown_03004824->unk_0075 ++;
+ break;
+ case 1:
+ if (sub_8007ECC())
+ {
+ if (GetBlockReceivedStatus() == 0)
+ {
+ gUnknown_03004824->unk_0075 ++;
+ }
+ else
+ {
+ ResetBlockReceivedFlags();
+ gUnknown_03004824->unk_0075 ++;
+ }
+ }
+ break;
+ case 2:
+ if (mpId == 0)
+ {
+ sub_8007E9C(1);
+ }
+ gUnknown_03004824->unk_0075 ++;
+ break;
+ case 3:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ sub_8048D24((u8 *)&gEnemyParty[0], (const u8 *)gBlockRecvBuffer[mpId ^ 1], 2 * sizeof(struct Pokemon));
+ ResetBlockReceivedFlags();
+ gUnknown_03004824->unk_0075 ++;
+ }
+ break;
+ case 4:
+ sub_8048D24(gBlockSendBuffer, (const u8 *)&gPlayerParty[2], 2 * sizeof(struct Pokemon));
+ gUnknown_03004824->unk_0075 ++;
+ break;
+ case 5:
+ if (mpId == 0)
+ {
+ sub_8007E9C(1);
+ }
+ gUnknown_03004824->unk_0075 ++;
+ break;
+ case 6:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ sub_8048D24((u8 *)&gEnemyParty[2], (const u8 *)gBlockRecvBuffer[mpId ^ 1], 2 * sizeof(struct Pokemon));
+ ResetBlockReceivedFlags();
+ gUnknown_03004824->unk_0075 ++;
+ }
+ break;
+ case 7:
+ sub_8048D24(gBlockSendBuffer, (const u8 *)&gPlayerParty[4], 2 * sizeof(struct Pokemon));
+ gUnknown_03004824->unk_0075 ++;
+ break;
+ case 8:
+ if (mpId == 0)
+ {
+ sub_8007E9C(1);
+ }
+ gUnknown_03004824->unk_0075 ++;
+ break;
+ case 9:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ sub_8048D24((u8 *)&gEnemyParty[4], (const u8 *)gBlockRecvBuffer[mpId ^ 1], 2 * sizeof(struct Pokemon));
+ ResetBlockReceivedFlags();
+ gUnknown_03004824->unk_0075 ++;
+ }
+ break;
+ case 10:
+ sub_8048D24(gBlockSendBuffer, (const u8 *)&gSaveBlock1.mail[0], 6 * sizeof(struct MailStruct) + 4);
+ gUnknown_03004824->unk_0075 ++;
+ break;
+ case 11:
+ if (mpId == 0)
+ {
+ sub_8007E9C(3);
+ }
+ gUnknown_03004824->unk_0075 ++;
+ break;
+ case 12:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ sub_8048D24((u8 *)&gUnknown_02029700[0], (const u8 *)gBlockRecvBuffer[mpId ^ 1], 6 * sizeof(struct MailStruct));
+ ResetBlockReceivedFlags();
+ gUnknown_03004824->unk_0075 ++;
+ }
+ break;
+ case 13:
+ sub_8048D24(gBlockSendBuffer, (const u8 *)gSaveBlock1.giftRibbons, 11);
+ gUnknown_03004824->unk_0075 ++;
+ break;
+ case 14:
+ if (mpId == 0)
+ {
+ sub_8007E9C(4);
+ }
+ gUnknown_03004824->unk_0075 ++;
+ break;
+ case 15:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ sub_8048D24((u8 *)gUnknown_03004824->unk_00b5, (const u8 *)gBlockRecvBuffer[mpId ^ 1], 11);
+ ResetBlockReceivedFlags();
+ gUnknown_03004824->unk_0075 ++;
+ }
+ break;
+ case 16:
+ pokemon = gEnemyParty;
+ for (i = 0; i < PARTY_SIZE; i ++)
+ {
+ if ((species = GetMonData(pokemon, MON_DATA_SPECIES)) != SPECIES_NONE && species == SPECIES_SHEDINJA && GetMonData(pokemon, MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE)
+ {
+ GetMonData(pokemon, MON_DATA_NICKNAME, nickname);
+ if (!StringCompareWithoutExtCtrlCodes(nickname, gUnknown_0820C3B0))
+ SetMonData(pokemon, MON_DATA_NICKNAME, gSpeciesNames[SPECIES_SHEDINJA]);
+ }
+ pokemon ++;
+ }
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_8049088(void)
+{
+ u8 string[28];
+ StringCopy(string, gTradeText_TradeOkayPrompt);
+ sub_804ACD8(string, (u8 *)BG_CHAR_ADDR(4) + gUnknown_03004824->unk_007e * 32, 20);
+}
+
+static void sub_80490BC(u8 mpId, u8 a1)
+{
+ if (a1 & 1)
+ {
+ switch (gBlockRecvBuffer[mpId][0])
+ {
+ case 0xeeaa:
+ gUnknown_03004824->unk_0084 = 2;
+ break;
+ case 0xaabb:
+ gUnknown_03004824->unk_0084 = 1;
+ break;
+ case 0xbbbb:
+ gUnknown_03004824->unk_0086 = 1;
+ break;
+ case 0xbbcc:
+ gUnknown_03004824->unk_0086 = 2;
+ break;
+ }
+ ResetBlockReceivedFlag(0);
+ }
+ if (a1 & 2)
+ {
+ switch (gBlockRecvBuffer[1][0])
+ {
+ case 0xeeaa:
+ gUnknown_03004824->unk_0085 = 2;
+ break;
+ case 0xaabb:
+ gUnknown_03004824->unk_008a = gBlockRecvBuffer[1][1] + 6;
+ gUnknown_03004824->unk_0085 = 1;
+ break;
+ case 0xbbbb:
+ gUnknown_03004824->unk_0087 = 1;
+ break;
+ case 0xbbcc:
+ gUnknown_03004824->unk_0087 = 2;
+ break;
+ }
+ ResetBlockReceivedFlag(1);
+ }
+}
+
+static void sub_80491E4(u8 mpId, u8 status)
+{
+ if (status & 1)
+ {
+ switch (gBlockRecvBuffer[0][0])
+ {
+ case 0xeebb:
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ sub_804AA0C(4);
+ gUnknown_03004824->unk_007b = 11;
+ break;
+ case 0xeecc:
+ sub_804AA0C(5);
+ gUnknown_03004824->unk_007b = 8;
+ break;
+ case 0xdddd:
+ gUnknown_03004824->unk_008a = ((u8 *)gBlockRecvBuffer[0])[1 * sizeof(u16)] + 6;
+ sub_8049E9C(gUnknown_03004824->tradeMenuCursorPosition);
+ sub_8049E9C(gUnknown_03004824->unk_008a);
+ gUnknown_03004824->unk_007b = 7;
+ break;
+ case 0xccdd:
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gUnknown_03004824->unk_007b = 10;
+ break;
+ case 0xddee:
+ sub_804AA0C(1);
+ gUnknown_03004824->unk_007b = 8;
+ break;
+ }
+ ResetBlockReceivedFlag(0);
+ }
+ if (status & 2)
+ {
+ ResetBlockReceivedFlag(1);
+ }
+}
+
+static void sub_80492D8(void)
+{
+ if (gUnknown_03004824->unk_0084 && gUnknown_03004824->unk_0085)
+ {
+ if (gUnknown_03004824->unk_0084 == 1 && gUnknown_03004824->unk_0085 == 1)
+ {
+ gUnknown_03004824->unk_007b = 6;
+ gUnknown_03004824->linkData[0] = 0xdddd;
+ gUnknown_03004824->linkData[1] = gUnknown_03004824->tradeMenuCursorPosition;
+ sub_804AADC(5, 0);
+ gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0;
+ }
+ else if (gUnknown_03004824->unk_0084 == 1 && gUnknown_03004824->unk_0085 == 2)
+ {
+ sub_804AA0C(1);
+ gUnknown_03004824->linkData[0] = 0xeecc;
+ gUnknown_03004824->linkData[1] = 0;
+ sub_804AADC(5, 0);
+ gUnknown_03004824->unk_0086 = gUnknown_03004824->unk_0087 = 0;
+ gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0;
+ gUnknown_03004824->unk_007b = 8;
+ }
+ else if (gUnknown_03004824->unk_0084 == 2 && gUnknown_03004824->unk_0085 == 1)
+ {
+ sub_804AA0C(5);
+ gUnknown_03004824->linkData[0] = 0xddee;
+ gUnknown_03004824->linkData[1] = 0;
+ sub_804AADC(5, 0);
+ gUnknown_03004824->unk_0086 = gUnknown_03004824->unk_0087 = 0;
+ gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0;
+ gUnknown_03004824->unk_007b = 8;
+ }
+ else if (gUnknown_03004824->unk_0084 == 2 && gUnknown_03004824->unk_0085 == 2)
+ {
+ gUnknown_03004824->linkData[0] = 0xeebb;
+ gUnknown_03004824->linkData[1] = 0;
+ sub_804AADC(5, 0);
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gUnknown_03004824->unk_0084 = gUnknown_03004824->unk_0085 = 0;
+ gUnknown_03004824->unk_007b = 11;
+ }
+ }
+ if (gUnknown_03004824->unk_0086 && gUnknown_03004824->unk_0087)
+ {
+ if (gUnknown_03004824->unk_0086 == 1 && gUnknown_03004824->unk_0087 == 1)
+ {
+ gUnknown_03004824->linkData[0] = 0xccdd;
+ gUnknown_03004824->linkData[1] = 0;
+ sub_804AADC(5, 0);
+ gUnknown_03004824->unk_0086 = 0;
+ gUnknown_03004824->unk_0087 = 0;
+ gUnknown_03004824->unk_007b = 9;
+ }
+ if (gUnknown_03004824->unk_0086 == 2 || gUnknown_03004824->unk_0087 == 2)
+ {
+ sub_804AA0C(1);
+ gUnknown_03004824->linkData[0] = 0xddee;
+ gUnknown_03004824->linkData[1] = 0;
+ sub_804AADC(5, 0);
+ gUnknown_03004824->unk_0086 = 0;
+ gUnknown_03004824->unk_0087 = 0;
+ gUnknown_03004824->unk_007b = 8;
+ }
+ }
+}
+
+static void sub_80494D8(void)
+{
+ u8 mpId = GetMultiplayerId();
+ u8 status;
+ if ((status = GetBlockReceivedStatus()))
+ {
+ if (mpId == 0)
+ sub_80490BC(mpId, status);
+ else
+ sub_80491E4(mpId, status);
+ ResetBlockReceivedFlags();
+ }
+ if (mpId == 0)
+ sub_80492D8();
+}
+
+static u8 sub_8049514(u8 oldPosition, u8 direction)
+{
+ int i;
+ u8 newPosition = 0;
+ for (i = 0; i < PARTY_SIZE; i ++)
+ {
+ if (gUnknown_03004824->tradeMenuOptionsActive[gTradeNextSelectedMonTable[oldPosition][direction][i]] == TRUE)
+ {
+ newPosition = gTradeNextSelectedMonTable[oldPosition][direction][i];
+ break;
+ }
+ }
+ return newPosition;
+}
+
+static void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction)
+{
+ u8 newPosition = sub_8049514(*tradeMenuCursorPosition, direction);
+ if (newPosition == 12) // CANCEL
+ {
+ StartSpriteAnim(&gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx], 1);
+ gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.x = 0xe0;
+ gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.y = 0xa0;
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx], 0);
+ gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.x = gTradeMonSpriteCoords[newPosition][0] * 8 + 32;
+ gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].pos1.y = gTradeMonSpriteCoords[newPosition][1] * 8;
+ }
+ if (*tradeMenuCursorPosition != newPosition)
+ {
+ PlaySE(SE_SELECT);
+ }
+ *tradeMenuCursorPosition = newPosition;
+}
+
+static void sub_8049620(void)
+{
+ sub_804AA0C(0);
+ gUnknown_03004824->unk_007b = 5;
+ if (GetMultiplayerId() == 1)
+ {
+ gUnknown_03004824->linkData[0] = 0xaabb;
+ gUnknown_03004824->linkData[1] = gUnknown_03004824->tradeMenuCursorPosition;
+ Trade_SendData(gUnknown_03004824);
+ }
+ else
+ {
+ gUnknown_03004824->unk_0084 = 1;
+ }
+}
+
+static void sub_8049680(void)
+{
+ int i;
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 0);
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 1);
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_LEFT)
+ {
+ TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 2);
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_RIGHT)
+ {
+ TradeMenuMoveCursor(&gUnknown_03004824->tradeMenuCursorPosition, 3);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE)
+ {
+ DrawTextWindow(&gUnknown_03004824->window, 18, 14, 28, 19);
+ PrintMenuItems(19, 15, 2, (const struct MenuAction *)gUnknown_0820C320);
+ InitMenu(0, 19, 15, 2, 0, 9);
+ gUnknown_03004824->unk_007b = 1;
+ }
+ else if (gUnknown_03004824->tradeMenuCursorPosition < 2 * PARTY_SIZE)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gUnknown_03004824->unk_007b = 2;
+ }
+ else if (gUnknown_03004824->tradeMenuCursorPosition == 2 * PARTY_SIZE)
+ {
+ DrawTextWindow(&gUnknown_03004824->window, 24, 14, 29, 19);
+ InitYesNoMenu(24, 14, 4);
+ gUnknown_03004824->unk_007b = 4;
+ sub_804ACD8(gUnknown_0820C14C[4], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20);
+ }
+ }
+ if (gMain.newKeys & R_BUTTON)
+ {
+ for (i = 0; i < 10; i ++)
+ {
+ gUnknown_03004824->linkData[i] = i;
+ }
+ Trade_SendData(gUnknown_03004824);
+ }
+}
+
+static void sub_8049804(void)
+{
+ HandleDestroyMenuCursors();
+ sub_804A80C();
+ gUnknown_03004824->unk_007b = 0;
+ gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = FALSE;
+ sub_804ACD8(gUnknown_0820C14C[1], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20);
+}
+
+static void sub_8049860(void)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_03004824->unk_007c = MoveMenuCursor(-1);
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_03004824->unk_007c = MoveMenuCursor(+1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (GetMenuCursorPos() == 0)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gUnknown_03004824->unk_007b = 2;
+ }
+ else if (sub_80499F0(gUnknown_03004824->unk_0051[0], gUnknown_03004824->partyCounts[0], gUnknown_03004824->tradeMenuCursorPosition) == 0)
+ {
+ sub_804AADC(3, 2);
+ gUnknown_03004824->unk_007b = 8;
+ }
+ else
+ {
+ sub_8049620();
+ gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = TRUE;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8049804();
+ }
+}
+
+static void sub_8049954(void)
+{
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8049804();
+ }
+}
+
+static void sub_804997C(void)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gUnknown_03004824->tradeMenuCursorPosition < PARTY_SIZE)
+ {
+ ShowPokemonSummaryScreen(gPlayerParty, gUnknown_03004824->tradeMenuCursorPosition, gUnknown_03004824->partyCounts[0] - 1, sub_80484F4, 4);
+ }
+ else
+ {
+ ShowPokemonSummaryScreen(gEnemyParty, gUnknown_03004824->tradeMenuCursorPosition - 6, gUnknown_03004824->partyCounts[1] - 1, sub_80484F4, 4);
+ }
+ }
+}
+
+static u8 sub_80499F0(const u8 *src, u8 partyCount, u8 tradeMenuCursorPosition)
+{
+ u8 retval = 0;
+ int i;
+ for (i = 0; i < partyCount; i ++)
+ {
+ if (tradeMenuCursorPosition != i)
+ {
+ retval += src[i];
+ }
+ }
+ return retval;
+}
+
+static void sub_8049A20(void)
+{
+ u8 unk_0051[12];
+ int i;
+ for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++)
+ {
+ unk_0051[i] = gUnknown_03004824->unk_0051[0][i];
+ }
+ if (sub_80499F0(unk_0051, gUnknown_03004824->partyCounts[0], gUnknown_03004824->tradeMenuCursorPosition) == 0)
+ {
+ sub_804AADC(3, 2);
+ gUnknown_03004824->linkData[0] = 0xbbcc;
+ sub_804AADC(0xb4, 0);
+ }
+ else
+ {
+ sub_804AADC(3, 1);
+ gUnknown_03004824->linkData[0] = 0xbbbb;
+ if (sub_8007ECC())
+ {
+ Trade_SendData(gUnknown_03004824);
+ }
+ }
+}
+
+static void sub_8049AC0(void)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_03004824->unk_007c = MoveMenuCursor(-1);
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_03004824->unk_007c = MoveMenuCursor(+1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (GetMenuCursorPos() == 0)
+ {
+ sub_8049A20();
+ }
+ else
+ {
+ sub_804AADC(3, 1);
+ if (sub_8007ECC())
+ {
+ gUnknown_03004824->linkData[0] = 0xbbcc;
+ Trade_SendData(gUnknown_03004824);
+ }
+ }
+ gUnknown_03004824->unk_007b = 100;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ sub_804AADC(3, 1);
+ if (GetMenuCursorPos() == 0)
+ {
+ gUnknown_03004824->unk_007c = MoveMenuCursor(+1);
+ }
+ gUnknown_03004824->linkData[0] = 0xbbcc;
+ Trade_SendData(gUnknown_03004824);
+ gUnknown_03004824->unk_007b = 100;
+ }
+}
+
+static void sub_8049BC0(void)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_03004824->unk_007c = MoveMenuCursor(-1);
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ gUnknown_03004824->unk_007c = MoveMenuCursor(+1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (GetMenuCursorPos() == 0)
+ {
+ sub_804AA0C(4);
+ gUnknown_03004824->linkData[0] = 0xeeaa;
+ gUnknown_03004824->linkData[1] = 0;
+ sub_804AADC(5, 0);
+ gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = TRUE;
+ gUnknown_03004824->unk_007b = 100;
+ }
+ else
+ {
+ sub_8049804();
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_8049804();
+ }
+}
+
+static void sub_8049C8C(void)
+{
+ if (GetMultiplayerId() == 0)
+ {
+ sub_8049E9C(gUnknown_03004824->tradeMenuCursorPosition);
+ sub_8049E9C(gUnknown_03004824->unk_008a);
+ }
+ gUnknown_03004824->unk_007b = 7;
+}
+
+static void sub_8049CC4(void)
+{
+ if (gUnknown_03004824->unk_0080[0] == 5 && gUnknown_03004824->unk_0080[1] == 5)
+ {
+ sub_8049088();
+ gUnknown_03004824->unk_007b = 14;
+ }
+}
+
+static void DisplayMessageAndContinueTask(void)
+{
+ gUnknown_03004824->unk_00b4++;
+ if (gUnknown_03004824->unk_00b4 > 120)
+ {
+ DrawTextWindow(&gUnknown_03004824->window, 24, 14, 29, 19);
+ InitYesNoMenu(24, 14, 4);
+ gUnknown_03004824->unk_00b4 = 0;
+ gUnknown_03004824->unk_007b = 3;
+ }
+}
+
+static void sub_8049D44(void)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sub_804A840(0);
+ sub_804A840(1);
+ gUnknown_03004824->unk_007b = 0;
+ gSprites[gUnknown_03004824->tradeMenuCursorSpriteIdx].invisible = FALSE;
+ }
+}
+
+static void sub_8049D9C(void)
+{
+ if (!gPaletteFade.active)
+ {
+ sub_800832C();
+ gUnknown_03004824->unk_007b = 12;
+ }
+}
+
+static void sub_8049DC4(void)
+{
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ SetMainCallback2(sub_805465C);
+ }
+}
+
+static void sub_8049DE0(void)
+{
+ switch (gUnknown_03004824->unk_007b)
+ {
+ case 0:
+ sub_8049680();
+ break;
+ case 1:
+ sub_8049860();
+ break;
+ case 2:
+ sub_804997C();
+ break;
+ case 3:
+ sub_8049AC0();
+ break;
+ case 4:
+ sub_8049BC0();
+ break;
+ case 6:
+ sub_8049C8C();
+ break;
+ case 7:
+ sub_8049CC4();
+ break;
+ case 8:
+ sub_8049D44();
+ break;
+ case 9:
+ sub_8048A14();
+ break;
+ case 10:
+ sub_8048A50();
+ break;
+ case 11:
+ sub_8049D9C();
+ break;
+ case 12:
+ sub_8049DC4();
+ break;
+ case 13:
+ sub_8048A90();
+ break;
+ case 14:
+ DisplayMessageAndContinueTask();
+ break;
+ case 15:
+ sub_8049954();
+ break;
+ }
+}
+
+static void sub_8049E9C(u8 a0)
+{
+ u8 v0 = a0 / 6;
+ if (gUnknown_03004824->unk_0080[v0] == 0)
+ {
+ gUnknown_03004824->unk_0080[v0] = 1;
+ gUnknown_03004824->unk_0082[v0] = a0;
+ }
+}
+
+// TODO: Figure out what the f**k is going on here
+#ifdef NONMATCHING
+static void sub_8049ED4(u8 a0)
+{
+ u8 i;
+ s8 stringLength;
+ u8 whichParty = 1;
+ u8 whichPokemon;
+ u8 string1[40];
+ u8 string2[56];
+ u8 temp0 = gUnknown_03004824->unk_0082[a0];
+ if (temp0 < PARTY_SIZE)
+ whichParty = 0;
+ whichPokemon = temp0 % PARTY_SIZE;
+
+ switch (gUnknown_03004824->unk_0080[a0])
+ {
+ case 1:
+ for (i = 0; i < gUnknown_03004824->partyCounts[a0]; i ++)
+ {
+ gSprites[gUnknown_03004824->partyIcons[whichParty][i]].invisible = TRUE;
+ }
+ gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].invisible = FALSE;
+ 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;
+ StoreSpriteCallbackInData6(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]], sub_809D62C);
+ gUnknown_03004824->unk_0080[a0] ++;
+ sub_8078A34(&gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]]);
+ HandleDestroyMenuCursors();
+ FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[whichParty][0], 0, gUnknown_0820C330[whichParty][1], 19);
+ sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15 * a0, 0, gTradePartyBoxTilemap, 15, 17, 0);
+ if (whichParty == 0)
+ {
+ sub_804A80C();
+ }
+ break;
+ case 2:
+ if (gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].callback == sub_809D62C)
+ {
+ gUnknown_03004824->unk_0080[a0] = 3;
+ }
+ break;
+ case 3:
+ sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15 * whichParty, 0, gTradePartyBoxTilemap, 15, 17, 0);
+ gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos1.x = (gTradeMonSpriteCoords[6 * whichParty + whichPokemon ][0] + gTradeMonSpriteCoords[6 * whichParty + whichPokemon + 1][0]) / 2 * 8 + 14;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos1.y = gTradeMonSpriteCoords[6 * whichParty + whichPokemon ][1] * 8 - 12;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos2.x = 0;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][whichPokemon]].pos2.y = 0;
+ stringLength = sub_804A2B4(string1 + 6, whichParty, whichPokemon);
+ string1[0] = 0xFC;
+ string1[1] = 0x06;
+ string1[2] = 0x04;
+ string1[3] = 0xFC;
+ string1[4] = 0x11;
+ string1[5] = (64 - stringLength) / 2;
+ sub_8003460(&gUnknown_03004824->window, string1, gUnknown_03004824->unk_007a + whichParty * 6 * 32, gUnknown_0820C334[whichParty][0], gUnknown_0820C334[whichParty][1]);
+ sub_804A33C(string2, whichParty, whichPokemon);
+ sub_8003460(&gUnknown_03004824->window, gOtherText_Terminator2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 32, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1);
+ sub_8003460(&gUnknown_03004824->window, string2, gUnknown_03004824->unk_007a + whichParty * 6 * 32 + 38, gUnknown_0820C334[whichParty + 1][0], gUnknown_0820C334[whichParty + 1][1] + 1);
+ gUnknown_03004824->unk_0080[a0] ++;
+ break;
+ case 4:
+ sub_804ACD8(gUnknown_0820C14C[5], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20);
+ sub_804A51C(a0, whichPokemon, gUnknown_0820C3D1[a0][0] + 4, gUnknown_0820C3D1[a0][1] + 1, gUnknown_0820C3D1[a0][0], gUnknown_0820C3D1[a0][1]);
+ gUnknown_03004824->unk_0080[a0] ++;
+ break;
+ }
+}
+#else
+__attribute__((naked))
+static void sub_8049ED4(u8 a0)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0x74\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tmov r10, r0\n"
+ "\tldr r0, _08049F24 @ =gUnknown_03004824\n"
+ "\tldr r5, [r0]\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r0, 0x82\n"
+ "\tadd r0, r10\n"
+ "\tldrb r0, [r0]\n"
+ "\tmovs r1, 0x1\n"
+ "\tstr r1, [sp, 0x6C]\n"
+ "\tcmp r0, 0x5\n"
+ "\tbhi _08049EFE\n"
+ "\tmovs r2, 0\n"
+ "\tstr r2, [sp, 0x6C]\n"
+ "_08049EFE:\n"
+ "\tmovs r1, 0x6\n"
+ "\tbl __umodsi3\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tmov r8, r0\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r0, 0x80\n"
+ "\tmov r1, r10\n"
+ "\tadds r3, r0, r1\n"
+ "\tldrb r0, [r3]\n"
+ "\tcmp r0, 0x2\n"
+ "\tbne _08049F1A\n"
+ "\tb _0804A0AC\n"
+ "_08049F1A:\n"
+ "\tcmp r0, 0x2\n"
+ "\tbgt _08049F28\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _08049F36\n"
+ "\tb _0804A294\n"
+ "\t.align 2, 0\n"
+ "_08049F24: .4byte gUnknown_03004824\n"
+ "_08049F28:\n"
+ "\tcmp r0, 0x3\n"
+ "\tbne _08049F2E\n"
+ "\tb _0804A0E4\n"
+ "_08049F2E:\n"
+ "\tcmp r0, 0x4\n"
+ "\tbne _08049F34\n"
+ "\tb _0804A244\n"
+ "_08049F34:\n"
+ "\tb _0804A294\n"
+ "_08049F36:\n"
+ "\tmovs r4, 0\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r0, 0x42\n"
+ "\tadd r0, r10\n"
+ "\tldr r7, _0804A094 @ =gSprites\n"
+ "\tldr r2, [sp, 0x6C]\n"
+ "\tlsls r2, 1\n"
+ "\tmov r9, r2\n"
+ "\tldr r3, _0804A098 @ =gTradeMonSpriteCoords\n"
+ "\tmov r12, r3\n"
+ "\tmov r5, r10\n"
+ "\tlsls r5, 4\n"
+ "\tstr r5, [sp, 0x70]\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r4, r0\n"
+ "\tbcs _08049F8E\n"
+ "\tadds r6, r7, 0\n"
+ "\tldr r2, _0804A09C @ =gUnknown_03004824\n"
+ "\tldr r0, [sp, 0x6C]\n"
+ "\tadd r0, r9\n"
+ "\tlsls r3, r0, 1\n"
+ "\tmovs r5, 0x4\n"
+ "_08049F62:\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r1, r4, r3\n"
+ "\tadds r0, 0x34\n"
+ "\tadds r0, r1\n"
+ "\tldrb r1, [r0]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r6\n"
+ "\tadds r0, 0x3E\n"
+ "\tldrb r1, [r0]\n"
+ "\torrs r1, r5\n"
+ "\tstrb r1, [r0]\n"
+ "\tadds r0, r4, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r4, r0, 24\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x42\n"
+ "\tadd r0, r10\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r4, r0\n"
+ "\tbcc _08049F62\n"
+ "_08049F8E:\n"
+ "\tldr r1, _0804A09C @ =gUnknown_03004824\n"
+ "\tldr r0, [r1]\n"
+ "\tldr r5, [sp, 0x6C]\n"
+ "\tadd r5, r9\n"
+ "\tlsls r3, r5, 1\n"
+ "\tmov r2, r8\n"
+ "\tadds r6, r2, r3\n"
+ "\tadds r0, 0x34\n"
+ "\tadds r0, r6\n"
+ "\tldrb r1, [r0]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r7\n"
+ "\tadds r0, 0x3E\n"
+ "\tldrb r2, [r0]\n"
+ "\tmovs r1, 0x5\n"
+ "\tnegs r1, r1\n"
+ "\tands r1, r2\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, _0804A09C @ =gUnknown_03004824\n"
+ "\tldr r4, [r0]\n"
+ "\tadds r4, 0x34\n"
+ "\tadds r4, r6\n"
+ "\tldrb r1, [r4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r7\n"
+ "\tmovs r1, 0x14\n"
+ "\tstrh r1, [r0, 0x2E]\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r2, r0, 4\n"
+ "\tadds r2, r0\n"
+ "\tlsls r2, 2\n"
+ "\tadds r2, r7\n"
+ "\tlsls r5, 2\n"
+ "\tmov r1, r12\n"
+ "\tadds r0, r5, r1\n"
+ "\tldrb r0, [r0]\n"
+ "\tadds r3, 0x1\n"
+ "\tlsls r3, 1\n"
+ "\tadd r3, r12\n"
+ "\tldrb r1, [r3]\n"
+ "\tadds r0, r1\n"
+ "\tasrs r0, 1\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, 0xE\n"
+ "\tstrh r0, [r2, 0x32]\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r1, r0, 4\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 2\n"
+ "\tadds r1, r7\n"
+ "\tmov r0, r12\n"
+ "\tadds r0, 0x1\n"
+ "\tadds r5, r0\n"
+ "\tldrb r0, [r5]\n"
+ "\tlsls r0, 3\n"
+ "\tsubs r0, 0xC\n"
+ "\tstrh r0, [r1, 0x36]\n"
+ "\tldrb r1, [r4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r7\n"
+ "\tldr r1, _0804A0A0 @ =sub_809D62C\n"
+ "\tbl StoreSpriteCallbackInData6\n"
+ "\tldr r2, _0804A09C @ =gUnknown_03004824\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, 0x80\n"
+ "\tadd r1, r10\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x34\n"
+ "\tadds r0, r6\n"
+ "\tldrb r1, [r0]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r7\n"
+ "\tbl sub_8078A34\n"
+ "\tbl HandleDestroyMenuCursors\n"
+ "\tldr r3, _0804A09C @ =gUnknown_03004824\n"
+ "\tldr r0, [r3]\n"
+ "\tadds r0, 0x4\n"
+ "\tldr r1, _0804A0A4 @ =gUnknown_0820C330\n"
+ "\tmov r5, r9\n"
+ "\tadds r2, r5, r1\n"
+ "\tldrb r2, [r2]\n"
+ "\tadds r1, 0x1\n"
+ "\tadd r1, r9\n"
+ "\tldrb r1, [r1]\n"
+ "\tstr r1, [sp]\n"
+ "\tmovs r1, 0x13\n"
+ "\tstr r1, [sp, 0x4]\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl FillWindowRect_DefaultPalette\n"
+ "\tldr r1, _0804A09C @ =gUnknown_03004824\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0xC8\n"
+ "\tldr r2, [sp, 0x70]\n"
+ "\tmov r3, r10\n"
+ "\tsubs r1, r2, r3\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tldr r3, _0804A0A8 @ =gTradePartyBoxTilemap\n"
+ "\tmovs r2, 0xF\n"
+ "\tstr r2, [sp]\n"
+ "\tmovs r2, 0x11\n"
+ "\tstr r2, [sp, 0x4]\n"
+ "\tmovs r5, 0\n"
+ "\tstr r5, [sp, 0x8]\n"
+ "\tmovs r2, 0\n"
+ "\tbl sub_804A96C_alt\n"
+ "\tldr r0, [sp, 0x6C]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804A08C\n"
+ "\tb _0804A294\n"
+ "_0804A08C:\n"
+ "\tbl sub_804A80C\n"
+ "\tb _0804A294\n"
+ "\t.align 2, 0\n"
+ "_0804A094: .4byte gSprites\n"
+ "_0804A098: .4byte gTradeMonSpriteCoords\n"
+ "_0804A09C: .4byte gUnknown_03004824\n"
+ "_0804A0A0: .4byte sub_809D62C\n"
+ "_0804A0A4: .4byte gUnknown_0820C330\n"
+ "_0804A0A8: .4byte gTradePartyBoxTilemap\n"
+ "_0804A0AC:\n"
+ "\tldr r2, _0804A0DC @ =gSprites\n"
+ "\tldr r1, [sp, 0x6C]\n"
+ "\tlsls r0, r1, 1\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 1\n"
+ "\tadd r0, r8\n"
+ "\tadds r1, r5, 0\n"
+ "\tadds r1, 0x34\n"
+ "\tadds r1, r0\n"
+ "\tldrb r1, [r1]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r2, 0x1C\n"
+ "\tadds r0, r2\n"
+ "\tldr r1, [r0]\n"
+ "\tldr r0, _0804A0E0 @ =sub_809D62C\n"
+ "\tcmp r1, r0\n"
+ "\tbeq _0804A0D4\n"
+ "\tb _0804A294\n"
+ "_0804A0D4:\n"
+ "\tmovs r0, 0x3\n"
+ "\tstrb r0, [r3]\n"
+ "\tb _0804A294\n"
+ "\t.align 2, 0\n"
+ "_0804A0DC: .4byte gSprites\n"
+ "_0804A0E0: .4byte sub_809D62C\n"
+ "_0804A0E4:\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r0, 0xC8\n"
+ "\tldr r2, [sp, 0x6C]\n"
+ "\tlsls r1, r2, 4\n"
+ "\tsubs r1, r2\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tldr r3, _0804A228 @ =gTradeMovesBoxTilemap\n"
+ "\tmovs r2, 0xF\n"
+ "\tstr r2, [sp]\n"
+ "\tmovs r7, 0x11\n"
+ "\tstr r7, [sp, 0x4]\n"
+ "\tmovs r5, 0\n"
+ "\tstr r5, [sp, 0x8]\n"
+ "\tmovs r2, 0\n"
+ "\tbl sub_804A96C_alt\n"
+ "\tldr r0, _0804A22C @ =gUnknown_03004824\n"
+ "\tldr r3, [r0]\n"
+ "\tldr r1, [sp, 0x6C]\n"
+ "\tlsls r6, r1, 1\n"
+ "\tadds r1, r6\n"
+ "\tmov r9, r1\n"
+ "\tlsls r1, 1\n"
+ "\tmov r2, r8\n"
+ "\tadds r0, r2, r1\n"
+ "\tadds r3, 0x34\n"
+ "\tadds r3, r0\n"
+ "\tldrb r0, [r3]\n"
+ "\tlsls r2, r0, 4\n"
+ "\tadds r2, r0\n"
+ "\tlsls r2, 2\n"
+ "\tldr r5, _0804A230 @ =gSprites\n"
+ "\tadds r2, r5\n"
+ "\tldr r4, _0804A234 @ =gTradeMonSpriteCoords\n"
+ "\tmov r0, r9\n"
+ "\tlsls r5, r0, 2\n"
+ "\tadds r0, r5, r4\n"
+ "\tldrb r0, [r0]\n"
+ "\tadds r1, 0x1\n"
+ "\tlsls r1, 1\n"
+ "\tadds r1, r4\n"
+ "\tldrb r1, [r1]\n"
+ "\tadds r0, r1\n"
+ "\tasrs r0, 1\n"
+ "\tlsls r0, 3\n"
+ "\tadds r0, 0xE\n"
+ "\tstrh r0, [r2, 0x20]\n"
+ "\tldrb r0, [r3]\n"
+ "\tlsls r1, r0, 4\n"
+ "\tadds r1, r0\n"
+ "\tlsls r1, 2\n"
+ "\tldr r2, _0804A230 @ =gSprites\n"
+ "\tadds r1, r2\n"
+ "\tadds r4, 0x1\n"
+ "\tadds r5, r4\n"
+ "\tldrb r0, [r5]\n"
+ "\tlsls r0, 3\n"
+ "\tsubs r0, 0xC\n"
+ "\tstrh r0, [r1, 0x22]\n"
+ "\tldrb r1, [r3]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r2\n"
+ "\tmovs r5, 0\n"
+ "\tstrh r5, [r0, 0x24]\n"
+ "\tldrb r1, [r3]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadds r0, r2\n"
+ "\tstrh r5, [r0, 0x26]\n"
+ "\tmov r0, sp\n"
+ "\tadds r0, 0x12\n"
+ "\tldr r1, [sp, 0x6C]\n"
+ "\tmov r2, r8\n"
+ "\tbl sub_804A2B4\n"
+ "\tadd r1, sp, 0xC\n"
+ "\tmovs r3, 0xFC\n"
+ "\tstrb r3, [r1]\n"
+ "\tadds r2, r1, 0\n"
+ "\tmovs r1, 0x6\n"
+ "\tstrb r1, [r2, 0x1]\n"
+ "\tmovs r1, 0x4\n"
+ "\tstrb r1, [r2, 0x2]\n"
+ "\tadds r1, r2, 0\n"
+ "\tstrb r3, [r1, 0x3]\n"
+ "\tstrb r7, [r1, 0x4]\n"
+ "\tlsls r0, 24\n"
+ "\tasrs r0, 24\n"
+ "\tmovs r1, 0x40\n"
+ "\tsubs r1, r0\n"
+ "\tlsrs r0, r1, 31\n"
+ "\tadds r1, r0\n"
+ "\tasrs r1, 1\n"
+ "\tstrb r1, [r2, 0x5]\n"
+ "\tldr r0, _0804A22C @ =gUnknown_03004824\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r0, r1, 0x4\n"
+ "\tadds r1, 0x7A\n"
+ "\tldrb r2, [r1]\n"
+ "\tmov r1, r9\n"
+ "\tlsls r1, 6\n"
+ "\tmov r9, r1\n"
+ "\tadd r2, r9\n"
+ "\tldr r4, _0804A238 @ =gUnknown_0820C334\n"
+ "\tldr r3, [sp, 0x6C]\n"
+ "\tlsls r1, r3, 2\n"
+ "\tadds r3, r1, r4\n"
+ "\tldrb r3, [r3]\n"
+ "\tldr r5, _0804A23C @ =gUnknown_0820C334 + 0x1\n"
+ "\tadds r1, r5\n"
+ "\tldrb r1, [r1]\n"
+ "\tstr r1, [sp]\n"
+ "\tadd r1, sp, 0xC\n"
+ "\tbl sub_8003460\n"
+ "\tadd r7, sp, 0x34\n"
+ "\tadds r0, r7, 0\n"
+ "\tldr r1, [sp, 0x6C]\n"
+ "\tmov r2, r8\n"
+ "\tbl sub_804A33C\n"
+ "\tldr r0, _0804A22C @ =gUnknown_03004824\n"
+ "\tldr r2, [r0]\n"
+ "\tadds r0, r2, 0x4\n"
+ "\tldr r1, _0804A240 @ =gOtherText_Terminator2\n"
+ "\tadds r2, 0x7A\n"
+ "\tldrb r2, [r2]\n"
+ "\tadd r2, r9\n"
+ "\tadds r2, 0x20\n"
+ "\tadds r6, 0x1\n"
+ "\tlsls r6, 1\n"
+ "\tadds r4, r6, r4\n"
+ "\tldrb r5, [r4]\n"
+ "\tldr r3, _0804A23C @ =gUnknown_0820C334 + 0x1\n"
+ "\tadds r6, r3\n"
+ "\tldrb r4, [r6]\n"
+ "\tadds r4, 0x1\n"
+ "\tlsls r4, 24\n"
+ "\tlsrs r4, 24\n"
+ "\tstr r4, [sp]\n"
+ "\tadds r3, r5, 0\n"
+ "\tbl sub_8003460\n"
+ "\tldr r0, _0804A22C @ =gUnknown_03004824\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r0, r1, 0x4\n"
+ "\tadds r1, 0x7A\n"
+ "\tldrb r2, [r1]\n"
+ "\tadd r2, r9\n"
+ "\tadds r2, 0x26\n"
+ "\tstr r4, [sp]\n"
+ "\tadds r1, r7, 0\n"
+ "\tadds r3, r5, 0\n"
+ "\tbl sub_8003460\n"
+ "\tldr r2, _0804A22C @ =gUnknown_03004824\n"
+ "\tldr r1, [r2]\n"
+ "\tb _0804A28A\n"
+ "\t.align 2, 0\n"
+ "_0804A228: .4byte gTradeMovesBoxTilemap\n"
+ "_0804A22C: .4byte gUnknown_03004824\n"
+ "_0804A230: .4byte gSprites\n"
+ "_0804A234: .4byte gTradeMonSpriteCoords\n"
+ "_0804A238: .4byte gUnknown_0820C334\n"
+ "_0804A23C: .4byte gUnknown_0820C334 + 0x1\n"
+ "_0804A240: .4byte gOtherText_Terminator2\n"
+ "_0804A244:\n"
+ "\tldr r0, _0804A2A4 @ =gUnknown_0820C14C\n"
+ "\tldr r0, [r0, 0x14]\n"
+ "\tadds r1, r5, 0\n"
+ "\tadds r1, 0x7E\n"
+ "\tldrh r1, [r1]\n"
+ "\tlsls r1, 5\n"
+ "\tldr r3, _0804A2A8 @ =0x06010000\n"
+ "\tadds r1, r3\n"
+ "\tmovs r2, 0x14\n"
+ "\tbl sub_804ACD8\n"
+ "\tldr r0, _0804A2AC @ =gUnknown_0820C3D1\n"
+ "\tmov r5, r10\n"
+ "\tlsls r1, r5, 1\n"
+ "\tadds r4, r1, r0\n"
+ "\tldrb r2, [r4]\n"
+ "\tadds r2, 0x4\n"
+ "\tlsls r2, 24\n"
+ "\tlsrs r2, 24\n"
+ "\tadds r0, 0x1\n"
+ "\tadds r1, r0\n"
+ "\tldrb r3, [r1]\n"
+ "\tadds r3, 0x1\n"
+ "\tlsls r3, 24\n"
+ "\tlsrs r3, 24\n"
+ "\tldrb r0, [r4]\n"
+ "\tstr r0, [sp]\n"
+ "\tldrb r0, [r1]\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tmov r0, r10\n"
+ "\tmov r1, r8\n"
+ "\tbl sub_804A51C\n"
+ "\tldr r0, _0804A2B0 @ =gUnknown_03004824\n"
+ "\tldr r1, [r0]\n"
+ "_0804A28A:\n"
+ "\tadds r1, 0x80\n"
+ "\tadd r1, r10\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "_0804A294:\n"
+ "\tadd sp, 0x74\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0804A2A4: .4byte gUnknown_0820C14C\n"
+ "_0804A2A8: .4byte 0x06010000\n"
+ "_0804A2AC: .4byte gUnknown_0820C3D1\n"
+ "_0804A2B0: .4byte gUnknown_03004824");
+}
+#endif
+
+#ifdef NONMATCHING
+static
+#endif
+u8 sub_804A2B4(u8 *a0, u8 whichParty, u8 whichPokemon)
+{
+ u8 string[11];
+ if (whichParty == 0)
+ {
+ GetMonData(&gPlayerParty[whichPokemon], MON_DATA_NICKNAME, string);
+ StringCopy10(a0, string);
+ GetMonGender(&gPlayerParty[whichPokemon]);
+ GetMonData(&gPlayerParty[whichPokemon], MON_DATA_LEVEL);
+ }
+ else
+ {
+ GetMonData(&gEnemyParty[whichPokemon], MON_DATA_NICKNAME, string);
+ StringCopy10(a0, string);
+ GetMonGender(&gEnemyParty[whichPokemon]);
+ GetMonData(&gEnemyParty[whichPokemon], MON_DATA_LEVEL);
+ }
+ return GetStringWidthGivenWindowConfig(&gWindowConfig_81E7294, a0);
+}
+
+#ifdef NONMATCHING
+static
+#endif
+void sub_804A33C(u8 *a0, u8 whichParty, u8 whichPokemon)
+{
+ u16 i;
+ u16 moves[4];
+ if (gUnknown_03004824->unk_005d[whichParty][whichPokemon] == 0)
+ {
+ for (i = 0; i < 4; i ++)
+ {
+ if (whichParty == 0)
+ moves[i] = GetMonData(&gPlayerParty[whichPokemon], MON_DATA_MOVE1 + i, NULL);
+ else
+ moves[i] = GetMonData(&gEnemyParty[whichPokemon], MON_DATA_MOVE1 + i, NULL);
+ }
+ StringCopy(a0, gOtherText_Terminator);
+ for (i = 0; i < 4; i ++)
+ {
+ if (moves[i] != 0)
+ {
+ StringAppend(a0, gMoveNames[moves[i]]);
+ }
+ StringAppend(a0, gOtherText_ControlAndMiscText);
+ }
+ }
+ else
+ {
+ StringCopy(a0, gOtherText_Terminator);
+ StringAppend(a0, gOtherText_FourQuestions);
+ }
+}
+
+#ifdef NONMATCHING
+static void sub_804A41C(u8 whichParty)
+{
+ u8 i;
+ u8 nickname[22];
+ u8 string[40];
+ struct Pokemon *pokemon;
+
+ string[0] = 0xFC;
+ string[1] = 0x06;
+ string[2] = 0x04;
+ string[3] = 0xFC;
+ string[4] = 0x11;
+ string[5] = 0x00;
+
+ for (i = 0; i < gUnknown_03004824->partyCounts[whichParty]; i ++)
+ {
+ pokemon = whichParty == 0 ? &gPlayerParty[i] : &gEnemyParty[i];
+ GetMonData(pokemon, MON_DATA_NICKNAME, nickname);
+ StringCopy10(string + 6, nickname);
+ GetMonGender(pokemon);
+ string[5] = (50 - GetStringWidthGivenWindowConfig(&gWindowConfig_81E7294, string + 6)) / 2;
+ sub_8003460(&gUnknown_03004824->window, string, gUnknown_03004824->unk_007a + 22 * 6 * whichParty + 22 * i, gTradeMonSpriteCoords[i + 6 * whichParty][0], gTradeMonSpriteCoords[i + 6 * whichParty][1]);
+ }
+}
+#else
+__attribute__((naked))
+static void sub_804A41C(u8 whichParty)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0x44\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tadd r3, sp, 0x1C\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r1, 0xFC\n"
+ "\tstrb r1, [r3]\n"
+ "\tmovs r0, 0x6\n"
+ "\tstrb r0, [r3, 0x1]\n"
+ "\tmovs r0, 0x4\n"
+ "\tstrb r0, [r3, 0x2]\n"
+ "\tstrb r1, [r3, 0x3]\n"
+ "\tmovs r0, 0x11\n"
+ "\tstrb r0, [r3, 0x4]\n"
+ "\tstrb r2, [r3, 0x5]\n"
+ "\tmovs r6, 0\n"
+ "\tldr r1, _0804A470 @ =gUnknown_03004824\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0x42\n"
+ "\tadds r0, r5\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tbcs _0804A504\n"
+ "\tmov r8, r3\n"
+ "\tadds r7, r1, 0\n"
+ "\tldr r0, _0804A474 @ =gTradeMonSpriteCoords\n"
+ "\tmov r9, r0\n"
+ "\tmovs r4, 0x1\n"
+ "\tadd r4, r9\n"
+ "\tmov r10, r4\n"
+ "_0804A462:\n"
+ "\tcmp r5, 0\n"
+ "\tbne _0804A47C\n"
+ "\tmovs r0, 0x64\n"
+ "\tadds r4, r6, 0\n"
+ "\tmuls r4, r0\n"
+ "\tldr r0, _0804A478 @ =gPlayerParty\n"
+ "\tb _0804A484\n"
+ "\t.align 2, 0\n"
+ "_0804A470: .4byte gUnknown_03004824\n"
+ "_0804A474: .4byte gTradeMonSpriteCoords\n"
+ "_0804A478: .4byte gPlayerParty\n"
+ "_0804A47C:\n"
+ "\tmovs r0, 0x64\n"
+ "\tadds r4, r6, 0\n"
+ "\tmuls r4, r0\n"
+ "\tldr r0, _0804A514 @ =gEnemyParty\n"
+ "_0804A484:\n"
+ "\tadds r4, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x2\n"
+ "\tadd r2, sp, 0x4\n"
+ "\tbl GetMonData\n"
+ "\tmov r0, sp\n"
+ "\tadds r0, 0x22\n"
+ "\tadd r1, sp, 0x4\n"
+ "\tbl StringCopy10\n"
+ "\tadds r0, r4, 0\n"
+ "\tbl GetMonGender\n"
+ "\tmov r1, sp\n"
+ "\tadds r1, 0x22\n"
+ "\tldr r0, _0804A518 @ =gWindowConfig_81E7294\n"
+ "\tbl GetStringWidthGivenWindowConfig\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tmovs r1, 0x32\n"
+ "\tsubs r1, r0\n"
+ "\tlsrs r0, r1, 31\n"
+ "\tadds r1, r0\n"
+ "\tasrs r1, 1\n"
+ "\tmov r0, r8\n"
+ "\tstrb r1, [r0, 0x5]\n"
+ "\tldr r1, [r7]\n"
+ "\tadds r0, r1, 0x4\n"
+ "\tadds r1, 0x7A\n"
+ "\tlsls r2, r5, 5\n"
+ "\tadds r2, r5\n"
+ "\tlsls r2, 2\n"
+ "\tldrb r1, [r1]\n"
+ "\tadds r2, r1\n"
+ "\tmovs r1, 0x16\n"
+ "\tmuls r1, r6\n"
+ "\tadds r2, r1\n"
+ "\tlsls r2, 16\n"
+ "\tlsrs r2, 16\n"
+ "\tlsls r1, r5, 1\n"
+ "\tadds r1, r5\n"
+ "\tlsls r1, 1\n"
+ "\tadds r1, r6, r1\n"
+ "\tlsls r1, 1\n"
+ "\tmov r4, r9\n"
+ "\tadds r3, r1, r4\n"
+ "\tldrb r3, [r3]\n"
+ "\tadd r1, r10\n"
+ "\tldrb r1, [r1]\n"
+ "\tstr r1, [sp]\n"
+ "\tmov r1, r8\n"
+ "\tbl sub_8003460\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "\tldr r0, [r7]\n"
+ "\tadds r0, 0x42\n"
+ "\tadds r0, r5\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tbcc _0804A462\n"
+ "_0804A504:\n"
+ "\tadd sp, 0x44\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0804A514: .4byte gEnemyParty\n"
+ "_0804A518: .4byte gWindowConfig_81E7294");
+}
+#endif
+
+#ifdef NONMATCHING
+static
+#endif
+void sub_804A51C(u8 a0, u8 a1, u8 a2, u8 a3, u8 a4, u8 a5)
+{
+ u8 nickname[24];
+ u8 level;
+ u8 gender;
+ u8 lv_div_10;
+ sub_804A96C(&gUnknown_03004824->unk_00c8, a4, a5, gTradeMonBoxTilemap, 6, 3, 0);
+ if (a0 == 0)
+ {
+ level = GetMonData(&gPlayerParty[a1], MON_DATA_LEVEL, NULL);
+ gender = GetMonGender(&gPlayerParty[a1]);
+ GetMonData(&gPlayerParty[a1], MON_DATA_NICKNAME, nickname);
+ }
+ else
+ {
+ level = GetMonData(&gEnemyParty[a1], MON_DATA_LEVEL, NULL);
+ gender = GetMonGender(&gEnemyParty[a1]);
+ GetMonData(&gEnemyParty[a1], MON_DATA_NICKNAME, nickname);
+ }
+ if (gUnknown_03004824->unk_005d[a0][a1] == 0)
+ {
+ lv_div_10 = level / 10;
+ if (lv_div_10 != 0)
+ {
+ gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3] = lv_div_10 + 0x60;
+ }
+ gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 + 1] = (u8)(level % 10) + 0x70;
+ if (gender == MON_MALE)
+ {
+ if (!NameHasGenderSymbol(nickname, MON_MALE))
+ {
+ gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 31] += 1;
+ }
+ }
+ else if (gender == MON_FEMALE)
+ {
+ if (!NameHasGenderSymbol(nickname, MON_FEMALE))
+ {
+ gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 31] += 2;
+ }
+ }
+ }
+ else
+ {
+ gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 32] = gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 33];
+ gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 31] = gUnknown_03004824->unk_00c8.unk_12[a2 + 32 * a3 - 36] | 0x400;
+ }
+#ifdef GERMAN
+ gUnknown_03004824->unk_00c8.unk_10 = 1;
+#endif
+}
+
+#ifdef NONMATCHING
+static void sub_804A6DC(u8 whichParty)
+{
+ int i;
+ for (i = 0; i < gUnknown_03004824->partyCounts[whichParty]; i ++)
+ {
+ sub_804A51C(whichParty, i, gTradeLevelDisplayCoords[whichParty][i][0], gTradeLevelDisplayCoords[whichParty][i][1], gTradeMonBoxCoords[whichParty][i][0], gTradeMonBoxCoords[whichParty][i][1]);
+ }
+}
+#else
+__attribute__((naked))
+static void sub_804A6DC(u8 whichParty)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tsub sp, 0x8\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "\tmovs r7, 0\n"
+ "\tldr r0, _0804A734 @ =gUnknown_03004824\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0x42\n"
+ "\tadds r0, r6\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r7, r0\n"
+ "\tbge _0804A72C\n"
+ "\tlsls r0, r6, 1\n"
+ "\tadds r0, r6\n"
+ "\tldr r1, _0804A738 @ =gTradeLevelDisplayCoords\n"
+ "\tlsls r0, 2\n"
+ "\tadds r5, r0, r1\n"
+ "\tldr r1, _0804A73C @ =gTradeMonBoxCoords\n"
+ "\tadds r4, r0, r1\n"
+ "_0804A702:\n"
+ "\tlsls r1, r7, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tldrb r2, [r5]\n"
+ "\tldrb r3, [r5, 0x1]\n"
+ "\tldrb r0, [r4]\n"
+ "\tstr r0, [sp]\n"
+ "\tldrb r0, [r4, 0x1]\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tadds r0, r6, 0\n"
+ "\tbl sub_804A51C\n"
+ "\tadds r5, 0x2\n"
+ "\tadds r4, 0x2\n"
+ "\tadds r7, 0x1\n"
+ "\tldr r0, _0804A734 @ =gUnknown_03004824\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0x42\n"
+ "\tadds r0, r6\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r7, r0\n"
+ "\tblt _0804A702\n"
+ "_0804A72C:\n"
+ "\tadd sp, 0x8\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0804A734: .4byte gUnknown_03004824\n"
+ "_0804A738: .4byte gTradeLevelDisplayCoords\n"
+ "_0804A73C: .4byte gTradeMonBoxCoords");
+}
+#endif
+
+static void sub_804A740(u8 whichParty)
+{
+ int i;
+ for (i = 0; i < gUnknown_03004824->partyCounts[whichParty]; i ++)
+ {
+ gSprites[gUnknown_03004824->partyIcons[whichParty][i]].invisible = FALSE;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos1.x = gTradeMonSpriteCoords[6 * whichParty + i][0] * 8 + 14;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos1.y = gTradeMonSpriteCoords[6 * whichParty + i][1] * 8 - 12;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos2.x = 0;
+ gSprites[gUnknown_03004824->partyIcons[whichParty][i]].pos2.y = 0;
+ }
+}
+
+static void sub_804A80C(void)
+{
+ FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19);
+ sub_804A41C(1);
+}
+
+static void sub_804A840(u8 whichParty)
+{
+ if (whichParty == 0)
+ {
+ FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[0][0], 0, gUnknown_0820C330[0][1], 19);
+ sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 0, 0, gTradePartyBoxTilemap, 15, 17, 0);
+ sub_804A6DC(0);
+ sub_804A41C(0);
+ sub_804A740(0);
+ sub_804A938(&gUnknown_03004824->unk_00c8);
+ }
+ else
+ {
+ HandleDestroyMenuCursors();
+ FillWindowRect_DefaultPalette(&gUnknown_03004824->window, 0, gUnknown_0820C330[1][0], 0, gUnknown_0820C330[1][1], 19);
+ sub_804A96C_alt(&gUnknown_03004824->unk_00c8, 15, 0, gTradePartyBoxTilemap, 15, 17, 0);
+ sub_804A6DC(1);
+ sub_804A41C(1);
+ sub_804A740(1);
+ sub_804A938(&gUnknown_03004824->unk_00c8);
+ }
+ sub_804ACD8(gUnknown_0820C14C[1], (u8 *)(BG_CHAR_ADDR(4) + 32 * gUnknown_03004824->unk_007e), 20);
+ gUnknown_03004824->unk_0080[whichParty] = 0;
+}
+
+static void sub_804A938(struct UnkStructD *unkStructD)
+{
+ unkStructD->unk_10 = 1;
+}
+
+static void sub_804A940(struct UnkStructD *unkStructD)
+{
+ if (unkStructD->unk_10)
+ {
+ CpuCopy16(unkStructD->unk_12, unkStructD->vramAddr, sizeof(unkStructD->unk_12));
+ unkStructD->unk_10 = 0;
+ }
+}
+
+static void sub_804A964(struct UnkStructD *unkStructD, void *dest)
+{
+ unkStructD->unk_10 = 0;
+ unkStructD->vramAddr = dest;
+}
+
+static void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, const u16 *tilemap, u8 width, u8 height, u16 sp8) {
+ int y, x;
+
+ for (y = 0; y < height; y++)
+ {
+
+ for (x = 0; x < width; x++)
+ {
+ arg0->unk_12[(top * 32 + left) + y * 32 + x] = tilemap[width * y + x] | sp8;
+ }
+ }
+
+#if ENGLISH
+ arg0->unk_10 = 1;
+#endif
+}
+
+#if GERMAN
+static void sub_804A96C_alt(struct UnkStructD *arg0, u8 left, u8 top, const u16 *tilemap, u8 width, u8 height, u16 sp8) {
+ sub_804A96C(arg0, left, top, tilemap, width, height, sp8);
+
+ arg0->unk_10 = 1;
+}
+#endif
+
+static void sub_804A9F4(u8 unused)
+{
+ MenuZeroFillScreen();
+}
+
+static void sub_804AA00(u8 unused)
+{
+ MenuZeroFillScreen();
+}
+
+static void sub_804AA0C(u8 a0)
+{
+ DrawTextWindow(&gUnknown_03004824->window, gTradeMessageWindowRects[a0][0], gTradeMessageWindowRects[a0][1], gTradeMessageWindowRects[a0][2], gTradeMessageWindowRects[a0][3]);
+ sub_8003460(&gUnknown_03004824->window, gUnknown_0820C2F0[a0], 0x180 + gUnknown_03004824->unk_007a, gTradeMessageWindowRects[a0][0] + 1, gTradeMessageWindowRects[a0][1] + 1);
+}
+
+static void sub_804AA88(void)
+{
+ int i;
+ for (i = 0; i < 4; i ++)
+ {
+ gUnknown_03004824->unk_08dc[i].unk_00 = 0;
+ gUnknown_03004824->unk_08dc[i].unk_02 = 0;
+ gUnknown_03004824->unk_08dc[i].unk_04 |= 0xff;
+ }
+}
+
+static void sub_804AADC(u16 a0, u8 a1)
+{
+ int i;
+ for (i = 0; i < 4; i ++)
+ {
+ if (gUnknown_03004824->unk_08dc[i].unk_00 == 0)
+ {
+ gUnknown_03004824->unk_08dc[i].unk_02 = a0;
+ gUnknown_03004824->unk_08dc[i].unk_04 = a1;
+ gUnknown_03004824->unk_08dc[i].unk_00 = 1;
+ break;
+ }
+ }
+}
+
+static void sub_804AB30(void)
+{
+ int i;
+ for (i = 0; i < 4; i ++)
+ {
+ if (gUnknown_03004824->unk_08dc[i].unk_00)
+ {
+ if (gUnknown_03004824->unk_08dc[i].unk_02 != 0)
+ {
+ gUnknown_03004824->unk_08dc[i].unk_02 --;
+ continue;
+ }
+ switch (gUnknown_03004824->unk_08dc[i].unk_04)
+ {
+ case 0:
+ Trade_SendData(gUnknown_03004824);
+ break;
+ case 1:
+ sub_804AA0C(0);
+ break;
+ case 2:
+ sub_804AA0C(2);
+ break;
+ case 3:
+ sub_804AA0C(3);
+ break;
+ case 4:
+ sub_804AA0C(3);
+ break;
+ case 5:
+ sub_804AA0C(3);
+ break;
+ }
+ gUnknown_03004824->unk_08dc[i].unk_00 = 0;
+ }
+ }
+}
+
+static bool8 sub_804ABF8(void)
+{
+ switch (gUnknown_03004824->unk_00b4)
+ {
+ case 8:
+ gUnknown_03004824->unk_007e = LoadSpriteSheet(&gUnknown_0820C07C[gUnknown_03004824->unk_00b4]);
+ gUnknown_03004824->unk_00b4 ++;
+ return FALSE;
+ case 13:
+ LoadSpritePalette(&gSpritePalette_TradeScreenText);
+ gUnknown_03004824->unk_00b4 ++;
+ return FALSE;
+ case 14:
+ LoadSpritePalette(&gUnknown_0820C12C);
+ gUnknown_03004824->unk_00b4 ++;
+ return FALSE;
+ case 15:
+ LoadSpriteSheet(&gUnknown_0820C124);
+ gUnknown_03004824->unk_00b4 ++;
+ // fallthrough
+ case 16:
+ gUnknown_03004824->unk_00b4 = 0;
+ return TRUE;
+ default:
+ LoadSpriteSheet(&gUnknown_0820C07C[gUnknown_03004824->unk_00b4]);
+ gUnknown_03004824->unk_00b4 ++;
+ return FALSE;
+ }
+}
+
+static void sub_804ACD8(const u8 *src, u8 *dest, u8 a2)
+{
+ sub_804AFB8(&gWindowConfig_81E725C, dest, src, a2);
+}
+
+#ifdef NONMATCHING
+static void sub_804ACF4(u8 who)
+{
+ struct Pokemon *pokemon;
+ int i;
+ switch (who)
+ {
+ case 0:
+ for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++)
+ {
+ pokemon = &gPlayerParty[i];
+ if (GetMonData(pokemon, MON_DATA_IS_EGG) == TRUE)
+ {
+ gUnknown_03004824->unk_0051[0][i] = 0;
+ gUnknown_03004824->unk_005d[0][i] = 1;
+ }
+ else if (GetMonData(pokemon, MON_DATA_HP) == 0)
+ {
+ gUnknown_03004824->unk_0051[0][i] = 0;
+ gUnknown_03004824->unk_005d[0][i] = 0;
+ }
+ else
+ {
+ gUnknown_03004824->unk_0051[0][i] = 1;
+ gUnknown_03004824->unk_005d[0][i] = 0;
+ }
+ }
+ break;
+ case 1:
+ for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++)
+ {
+ pokemon = &gEnemyParty[i];
+ if (GetMonData(pokemon, MON_DATA_IS_EGG) == TRUE)
+ {
+ gUnknown_03004824->unk_0051[1][i] = 0;
+ gUnknown_03004824->unk_005d[1][i] = 1;
+ }
+ else if (GetMonData(pokemon, MON_DATA_HP) == 0)
+ {
+ gUnknown_03004824->unk_0051[1][i] = 0;
+ gUnknown_03004824->unk_005d[1][i] = 0;
+ }
+ else
+ {
+ gUnknown_03004824->unk_0051[1][i] = 1;
+ gUnknown_03004824->unk_005d[1][i] = 0;
+ }
+ }
+ break;
+ }
+}
+#else
+static __attribute__((naked)) void sub_804ACF4(u8 who)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r9\n"
+ "\tmov r6, r8\n"
+ "\tpush {r6,r7}\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tmov r8, r0\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804AD0C\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _0804ADA0\n"
+ "\tb _0804AE2C\n"
+ "_0804AD0C:\n"
+ "\tmovs r7, 0\n"
+ "\tldr r1, _0804AD4C @ =gUnknown_03004824\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0x42\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r7, r0\n"
+ "\tblt _0804AD1C\n"
+ "\tb _0804AE2C\n"
+ "_0804AD1C:\n"
+ "\tadds r6, r1, 0\n"
+ "\tmovs r5, 0\n"
+ "\tmov r9, r5\n"
+ "_0804AD22:\n"
+ "\tmovs r0, 0x64\n"
+ "\tadds r1, r7, 0\n"
+ "\tmuls r1, r0\n"
+ "\tldr r0, _0804AD50 @ =gPlayerParty\n"
+ "\tadds r4, r1, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x2D\n"
+ "\tbl GetMonData\n"
+ "\tadds r1, r0, 0\n"
+ "\tcmp r1, 0x1\n"
+ "\tbne _0804AD54\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x51\n"
+ "\tadds r0, r5\n"
+ "\tmov r2, r9\n"
+ "\tstrb r2, [r0]\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x5D\n"
+ "\tadds r0, r5\n"
+ "\tb _0804AD84\n"
+ "\t.align 2, 0\n"
+ "_0804AD4C: .4byte gUnknown_03004824\n"
+ "_0804AD50: .4byte gPlayerParty\n"
+ "_0804AD54:\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x39\n"
+ "\tbl GetMonData\n"
+ "\tadds r1, r0, 0\n"
+ "\tcmp r1, 0\n"
+ "\tbne _0804AD72\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x51\n"
+ "\tadds r0, r5\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x5D\n"
+ "\tadds r0, r5\n"
+ "\tb _0804AD84\n"
+ "_0804AD72:\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x51\n"
+ "\tadds r0, r5\n"
+ "\tmovs r1, 0x1\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x5D\n"
+ "\tadds r0, r5\n"
+ "\tmov r1, r9\n"
+ "_0804AD84:\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, _0804AD9C @ =gUnknown_03004824\n"
+ "\tadds r5, 0x1\n"
+ "\tadds r7, 0x1\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0x42\n"
+ "\tadd r0, r8\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r7, r0\n"
+ "\tblt _0804AD22\n"
+ "\tb _0804AE2C\n"
+ "\t.align 2, 0\n"
+ "_0804AD9C: .4byte gUnknown_03004824\n"
+ "_0804ADA0:\n"
+ "\tmovs r7, 0\n"
+ "\tldr r1, _0804ADE0 @ =gUnknown_03004824\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0x43\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r7, r0\n"
+ "\tbge _0804AE2C\n"
+ "\tadds r6, r1, 0\n"
+ "\tmovs r5, 0x6\n"
+ "\tmovs r2, 0\n"
+ "\tmov r9, r2\n"
+ "_0804ADB6:\n"
+ "\tmovs r0, 0x64\n"
+ "\tadds r1, r7, 0\n"
+ "\tmuls r1, r0\n"
+ "\tldr r0, _0804ADE4 @ =gEnemyParty\n"
+ "\tadds r4, r1, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x2D\n"
+ "\tbl GetMonData\n"
+ "\tadds r1, r0, 0\n"
+ "\tcmp r1, 0x1\n"
+ "\tbne _0804ADE8\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x51\n"
+ "\tadds r0, r5\n"
+ "\tmov r2, r9\n"
+ "\tstrb r2, [r0]\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x5D\n"
+ "\tadds r0, r5\n"
+ "\tb _0804AE18\n"
+ "\t.align 2, 0\n"
+ "_0804ADE0: .4byte gUnknown_03004824\n"
+ "_0804ADE4: .4byte gEnemyParty\n"
+ "_0804ADE8:\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x39\n"
+ "\tbl GetMonData\n"
+ "\tadds r1, r0, 0\n"
+ "\tcmp r1, 0\n"
+ "\tbne _0804AE06\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x51\n"
+ "\tadds r0, r5\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x5D\n"
+ "\tadds r0, r5\n"
+ "\tb _0804AE18\n"
+ "_0804AE06:\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x51\n"
+ "\tadds r0, r5\n"
+ "\tmovs r1, 0x1\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x5D\n"
+ "\tadds r0, r5\n"
+ "\tmov r1, r9\n"
+ "_0804AE18:\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, _0804AE38 @ =gUnknown_03004824\n"
+ "\tadds r5, 0x1\n"
+ "\tadds r7, 0x1\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0x42\n"
+ "\tadd r0, r8\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r7, r0\n"
+ "\tblt _0804ADB6\n"
+ "_0804AE2C:\n"
+ "\tpop {r3,r4}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0804AE38: .4byte gUnknown_03004824");
+}
+#endif
+
+static void sub_804AE3C(u8 who)
+{
+ u16 i;
+ u16 curHp;
+ u16 maxHp;
+ switch (who)
+ {
+ case 0:
+ for (i = 0; i < gUnknown_03004824->partyCounts[0]; i ++)
+ {
+ curHp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ maxHp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP);
+ gUnknown_03004824->unk_0069[0][i] = GetHPBarLevel(curHp, maxHp);
+ }
+ break;
+ case 1:
+ for (i = 0; i < gUnknown_03004824->partyCounts[1]; i ++)
+ {
+ curHp = GetMonData(&gEnemyParty[i], MON_DATA_HP);
+ maxHp = GetMonData(&gEnemyParty[i], MON_DATA_MAX_HP);
+ gUnknown_03004824->unk_0069[1][i] = GetHPBarLevel(curHp, maxHp);
+ }
+ break;
+ }
+}
+
+static void sub_804AF10(void)
+{
+ int i, j;
+ for (i = 0; i < 2; i ++)
+ {
+ for (j = 0; j < gUnknown_03004824->partyCounts[i]; j ++)
+ {
+ sub_809D824(&gSprites[gUnknown_03004824->partyIcons[i][j]], 4 - gUnknown_03004824->unk_0069[i][j]);
+ }
+ }
+}
+
+static void sub_804AF84(void)
+{
+ int i;
+ for (i = 0; i < 11; i ++)
+ if (gSaveBlock1.giftRibbons[i] == 0 && gUnknown_03004824->unk_00b5[i] != 0)
+ gSaveBlock1.giftRibbons[i] = gUnknown_03004824->unk_00b5[i];
+}
+
+static void sub_804AFB8(const struct WindowConfig *windowConfig, u8 *dest, const u8 *src, u8 size)
+{
+ u8 i;
+ u8 *tileBuffer;
+ size = (size + 3) / 4;
+ tileBuffer = gTileBuffer;
+ CpuFill16(0, tileBuffer, size * 0x80);
+ CpuFill16(0, tileBuffer + windowConfig->width * 0x20, size * 0x80);
+ sub_8004E3C(windowConfig, tileBuffer, src);
+ for (i = 0; i < size; i ++)
+ {
+ CpuCopy16(&tileBuffer[32 * (i * 4)], &dest[32 * (i * 8)], 0x80);
+ CpuCopy16(&tileBuffer[32 * (i * 4 + windowConfig->width)], &dest[32 * (i * 8 + 4)], 0x80);
+ }
+}
+
+static void sub_804B058(struct Sprite *sprite)
+{
+ if (++ sprite->data0 == 10)
+ {
+ PlaySE(SE_BOWA);
+ sprite->data0 = 0;
+ }
+}
+
+static void sub_804B07C(struct Sprite *sprite)
+{
+ if (sprite->data1 == 0)
+ {
+ if (++ sprite->data0 == 12)
+ sprite->data0 = 0;
+ LoadPalette(&gTradeGlow2PaletteAnimTable[sprite->data0], 16 * (sprite->oam.paletteNum + 16) + 4, 2);
+ }
+}
+
+static void sub_804B0BC(struct Sprite *sprite)
+{
+ sprite->data0 ++;
+ sprite->pos2.y ++;
+ if (sprite->data0 == 10)
+ DestroySprite(sprite);
+}
+
+static void sub_804B0E0(struct Sprite *sprite)
+{
+ sprite->data0 ++;
+ sprite->pos2.y --;
+ if (sprite->data0 == 10)
+ DestroySprite(sprite);
+}
+
+static void sub_804B104(struct Sprite *sprite)
+{
+ if (++ sprite->data0 == 15)
+ {
+ PlaySE(SE_W107);
+ sprite->data0 = 0;
+ }
+}
+
+static void sub_804B128(void)
+{
+ struct BgAffineDstData dest;
+ DoBgAffineSet(&dest, gUnknown_03004828->unk_0104 << 8, gUnknown_03004828->unk_0106 << 8, gUnknown_03004828->unk_010c, gUnknown_03004828->unk_010e, gUnknown_03004828->unk_0118, gUnknown_03004828->unk_0118, gUnknown_03004828->unk_011c);
+ REG_BG2PA = dest.pa;
+ REG_BG2PB = dest.pb;
+ REG_BG2PC = dest.pc;
+ REG_BG2PD = dest.pd;
+ REG_BG2X = dest.dx;
+ REG_BG2Y = dest.dy;
+}
+
+#ifdef NONMATCHING
+static void sub_804B1BC(void)
+{
+ REG_BG1VOFS = gUnknown_03004828->bg1vofs;
+ REG_BG1HOFS = gUnknown_03004828->bg1hofs;
+ if ((REG_DISPCNT & 7) == DISPCNT_MODE_0)
+ {
+ REG_BG2VOFS = gUnknown_03004828->bg2vofs;
+ REG_BG2HOFS = gUnknown_03004828->bg2hofs;
+ }
+ else
+ {
+ sub_804B128();
+ }
+}
+#else
+__attribute__((naked)) static void sub_804B1BC(void)
+{
+ asm_unified("\tpush {lr}\n"
+ "\tldr r1, _0804B1FC @ =REG_BG1VOFS\n"
+ "\tldr r0, _0804B200 @ =gUnknown_03004828\n"
+ "\tldr r2, [r0]\n"
+ "\tmovs r3, 0x88\n"
+ "\tlsls r3, 1\n"
+ "\tadds r0, r2, r3\n"
+ "\tldrh r0, [r0]\n"
+ "\tstrh r0, [r1]\n"
+ "\tsubs r1, 0x2\n"
+ "\tadds r3, 0x2\n"
+ "\tadds r0, r2, r3\n"
+ "\tldrh r0, [r0]\n"
+ "\tstrh r0, [r1]\n"
+ "\tmovs r0, 0x80\n"
+ "\tlsls r0, 19\n"
+ "\tldrh r0, [r0]\n"
+ "\tmovs r1, 0x7\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804B208\n"
+ "\tldr r1, _0804B204 @ =REG_BG2VOFS\n"
+ "\tadds r3, 0x2\n"
+ "\tadds r0, r2, r3\n"
+ "\tldrh r0, [r0]\n"
+ "\tstrh r0, [r1]\n"
+ "\tsubs r1, 0x2\n"
+ "\tadds r3, 0x2\n"
+ "\tadds r0, r2, r3\n"
+ "\tldrh r0, [r0]\n"
+ "\tstrh r0, [r1]\n"
+ "\tb _0804B20C\n"
+ "\t.align 2, 0\n"
+ "_0804B1FC: .4byte REG_BG1VOFS\n"
+ "_0804B200: .4byte gUnknown_03004828\n"
+ "_0804B204: .4byte REG_BG2VOFS\n"
+ "_0804B208:\n"
+ "\tbl sub_804B128\n"
+ "_0804B20C:\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+#endif
+
+static void sub_804B210(void)
+{
+ sub_804B1BC();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void sub_804B228(void)
+{
+ gUnknown_03004828->unk_00b4 = 0;
+ gUnknown_03004828->unk_00b2 = 0;
+ gUnknown_03004828->unk_00b3 = 0;
+}
+
+#ifdef NONMATCHING
+static
+#endif
+void sub_804B24C(void)
+{
+ if (gUnknown_03004828->unk_00b2 == gUnknown_03004828->unk_00b3)
+ {
+ gUnknown_03004828->unk_00b4 ++;
+ }
+ else
+ {
+ gUnknown_03004828->unk_00b4 = 0;
+ }
+ if (gUnknown_03004828->unk_00b4 > 0xb4)
+ {
+ gUnknown_03004828->unk_00b4 = 0;
+ gUnknown_03004828->unk_00b3 = 0;
+ gUnknown_03004828->unk_00b2 = 0;
+ }
+ gUnknown_03004828->unk_00b3 = gUnknown_03004828->unk_00b2;
+}
+
+static u8 sub_804B2B0(void)
+{
+ if (gReceivedRemoteLinkPlayers)
+ return GetMultiplayerId();
+ return 0;
+}
+
+static void sub_804B2D0(u8 whichParty, u8 a1)
+{
+ u8 v0;
+ struct Pokemon *pokemon;
+ u16 species;
+ u32 personality;
+
+ v0 = 0;
+ pokemon = NULL;
+ if (whichParty == 0)
+ {
+ pokemon = &gPlayerParty[gUnknown_020297D8[0]];
+ v0 = 1;
+ }
+ if (whichParty == 1)
+ {
+ pokemon = &gEnemyParty[gUnknown_020297D8[1] % 6];
+ v0 = 3;
+ }
+ switch (a1)
+ {
+ case 0:
+ 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(GetMonSpritePalStruct(pokemon));
+ gUnknown_03004828->tradeSpecies[whichParty] = species;
+ break;
+ case 1:
+ 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;
+ break;
+ }
+}
+
+#ifdef NONMATCHING
+static void sub_804B41C(void)
+// Link trade init
+{
+ switch (gMain.state)
+ {
+ case 0:
+ REG_DISPCNT = 0;
+ ResetTasks();
+ CloseLink();
+ gUnknown_03004828 = &ewram_2010000.unk_0f000;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetVBlankCallback(sub_804B210);
+ sub_804B228();
+ SetUpWindowConfig(&gWindowConfig_81E6F84);
+ InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E6F84);
+ gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2);
+ LoadTextWindowGraphics(&gUnknown_03004828->window);
+ MenuZeroFillScreen();
+ gLinkType = 0x1144;
+ gMain.state ++;
+ LZDecompressVram(gUnknown_08D00000, (void *)VRAM);
+ CpuCopy16(gUnknown_08D00524, ewram, 0x1000);
+ DmaCopy16Defvars(3, ewram, (void *)BG_SCREEN_ADDR(5), 0x500);
+ LoadCompressedPalette(gUnknown_08D004E0, 0, 32);
+ gUnknown_03004828->unk_00b6 = 0;
+ gUnknown_03004828->unk_00c4 = 0;
+ gUnknown_03004828->isLinkTrade = TRUE;
+ gUnknown_03004828->unk_0104 = 0x40;
+ gUnknown_03004828->unk_0106 = 0x40;
+ gUnknown_03004828->unk_0108 = 0;
+ gUnknown_03004828->unk_010a = 0;
+ gUnknown_03004828->unk_010c = 0x78;
+ gUnknown_03004828->unk_010e = 0x50;
+ gUnknown_03004828->unk_0118 = 0x100;
+ gUnknown_03004828->unk_011c = 0;
+ break;
+ case 1:
+ OpenLink();
+ gMain.state ++;
+ gUnknown_03004828->unk_00c0 = 0;
+ break;
+ case 2:
+ if (++ gUnknown_03004828->unk_00c0 > 60)
+ {
+ gUnknown_03004828->unk_00c0 = 0;
+ gMain.state ++;
+ }
+ break;
+ case 3:
+ if (IsLinkMaster())
+ {
+ if (GetLinkPlayerCount_2() >= sub_800820C() && ++ gUnknown_03004828->unk_00c0 > 30)
+ {
+ sub_8007F4C();
+ gMain.state ++;
+ }
+ }
+ else
+ {
+ gMain.state ++;
+ }
+ break;
+ case 4:
+ sub_804B24C();
+ if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE) gMain.state ++;
+ break;
+ case 5:
+ gUnknown_03004828->unk_009c = 0;
+ gUnknown_03004828->unk_009d = 0;
+ gUnknown_03004828->unk_00bd = 0;
+ sub_804B2D0(0, 0);
+ gMain.state ++;
+ break;
+ case 6:
+ sub_804B2D0(0, 1);
+ gMain.state ++;
+ break;
+ case 7:
+ sub_804B2D0(1, 0);
+ gMain.state ++;
+ break;
+ case 8:
+ sub_804B2D0(1, 1);
+ gMain.state ++;
+ break;
+ case 9:
+ sub_804C164();
+ LoadSpriteSheet(&gUnknown_0821594C);
+ LoadSpritePalette(&gUnknown_08215954);
+ REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(5);
+ gMain.state ++;
+ break;
+ case 10:
+ gMain.state ++;
+ // fallthrough
+ case 11:
+ sub_804BBE8(5);
+ sub_804BBE8(0);
+ sub_804C1A8();
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ gMain.state ++;
+ break;
+ case 12:
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sub_804DB84);
+ }
+ break;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+#else
+static __attribute__((naked)) void sub_804B41C(void)
+{
+ asm_unified("\tpush {r4-r6,lr}\n"
+ "\tsub sp, 0x4\n"
+ "\tldr r1, _0804B43C @ =gMain\n"
+ "\tldr r2, _0804B440 @ =0x0000043c\n"
+ "\tadds r0, r1, r2\n"
+ "\tldrb r0, [r0]\n"
+ "\tadds r2, r1, 0\n"
+ "\tcmp r0, 0xC\n"
+ "\tbls _0804B430\n"
+ "\tb _0804B76E_break\n"
+ "_0804B430:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0804B444 @ =_0804B448\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_0804B43C: .4byte gMain\n"
+ "_0804B440: .4byte 0x0000043c\n"
+ "_0804B444: .4byte _0804B448\n"
+ "\t.align 2, 0\n"
+ "_0804B448:\n"
+ "\t.4byte _0804B47C_case00\n"
+ "\t.4byte _0804B5AC_case01\n"
+ "\t.4byte _0804B5D4_case02\n"
+ "\t.4byte _0804B5FC_case03\n"
+ "\t.4byte _0804B648_case04\n"
+ "\t.4byte _0804B678_case05\n"
+ "\t.4byte _0804B6A8_case06\n"
+ "\t.4byte _0804B6B2_case07\n"
+ "\t.4byte _0804B6CC_case08\n"
+ "\t.4byte _0804B6E4_case09\n"
+ "\t.4byte _0804B71C_case10\n"
+ "\t.4byte _0804B726_case11\n"
+ "\t.4byte _0804B75C_case12\n"
+ "_0804B47C_case00:\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 19\n"
+ "\tmovs r0, 0\n"
+ "\tstrh r0, [r1]\n"
+ "\tbl ResetTasks\n"
+ "\tbl CloseLink\n"
+ "\tldr r6, _0804B570 @ =gUnknown_03004828\n"
+ "\tldr r5, _0804B574 @ =0x0201f000\n"
+ "\tstr r5, [r6]\n"
+ "\tbl ResetSpriteData\n"
+ "\tbl FreeAllSpritePalettes\n"
+ "\tldr r0, _0804B578 @ =sub_804B210\n"
+ "\tbl SetVBlankCallback\n"
+ "\tbl sub_804B228\n"
+ "\tldr r4, _0804B57C @ =gWindowConfig_81E6F84\n"
+ "\tadds r0, r4, 0\n"
+ "\tbl SetUpWindowConfig\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x4\n"
+ "\tadds r1, r4, 0\n"
+ "\tbl InitWindowFromConfig\n"
+ "\tmovs r0, 0x2\n"
+ "\tbl SetTextWindowBaseTileNum\n"
+ "\tldr r1, [r6]\n"
+ "\tadds r1, 0x34\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, [r6]\n"
+ "\tadds r0, 0x4\n"
+ "\tbl LoadTextWindowGraphics\n"
+ "\tbl MenuZeroFillScreen\n"
+ "\tldr r1, _0804B580 @ =gLinkType\n"
+ "\tldr r4, _0804B584 @ =0x00001144\n"
+ "\tadds r0, r4, 0\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r1, _0804B588 @ =gMain\n"
+ "\tldr r0, _0804B58C @ =0x0000043c\n"
+ "\tadds r1, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, _0804B590 @ =gUnknown_08D00000\n"
+ "\tmovs r1, 0xC0\n"
+ "\tlsls r1, 19\n"
+ "\tbl LZDecompressVram\n"
+ "\tldr r0, _0804B594 @ =gUnknown_08D00524\n"
+ "\tldr r1, _0804B598 @ =0xfffe1000\n"
+ "\tadds r5, r1\n"
+ "\tmovs r2, 0x80\n"
+ "\tlsls r2, 4\n"
+ "\tadds r1, r5, 0\n"
+ "\tbl CpuSet\n"
+ "\tldr r1, _0804B59C @ =0x06002800\n"
+ "\tldr r0, _0804B5A0 @ =0x040000d4\n"
+ "\tstr r5, [r0]\n"
+ "\tstr r1, [r0, 0x4]\n"
+ "\tldr r1, _0804B5A4 @ =0x80000280\n"
+ "\tstr r1, [r0, 0x8]\n"
+ "\tldr r0, [r0, 0x8]\n"
+ "\tldr r0, _0804B5A8 @ =gUnknown_08D004E0\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0x20\n"
+ "\tbl LoadCompressedPalette\n"
+ "\tldr r1, [r6]\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0xB6\n"
+ "\tmovs r2, 0\n"
+ "\tstrh r2, [r0]\n"
+ "\tadds r0, 0xE\n"
+ "\tstrh r2, [r0]\n"
+ "\tmovs r4, 0x8F\n"
+ "\tlsls r4, 1\n"
+ "\tadds r1, r4\n"
+ "\tmovs r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r3, [r6]\n"
+ "\tmovs r1, 0x82\n"
+ "\tlsls r1, 1\n"
+ "\tadds r0, r3, r1\n"
+ "\tmovs r1, 0x40\n"
+ "\tstrh r1, [r0]\n"
+ "\tsubs r4, 0x18\n"
+ "\tadds r0, r3, r4\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r1, 0xC8\n"
+ "\tadds r0, r3, r1\n"
+ "\tstrh r2, [r0]\n"
+ "\tadds r4, 0x4\n"
+ "\tadds r0, r3, r4\n"
+ "\tstrh r2, [r0]\n"
+ "\tmovs r0, 0x86\n"
+ "\tlsls r0, 1\n"
+ "\tadds r1, r3, r0\n"
+ "\tmovs r0, 0x78\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r4, 0x4\n"
+ "\tadds r1, r3, r4\n"
+ "\tmovs r0, 0x50\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r0, 0xC8\n"
+ "\tadds r1, r3, r0\n"
+ "\tsubs r0, 0x18\n"
+ "\tstrh r0, [r1]\n"
+ "\tmovs r1, 0x8E\n"
+ "\tlsls r1, 1\n"
+ "\tadds r0, r3, r1\n"
+ "\tstrh r2, [r0]\n"
+ "\tb _0804B76E_break\n"
+ "\t.align 2, 0\n"
+ "_0804B570: .4byte gUnknown_03004828\n"
+ "_0804B574: .4byte 0x0201f000\n"
+ "_0804B578: .4byte sub_804B210\n"
+ "_0804B57C: .4byte gWindowConfig_81E6F84\n"
+ "_0804B580: .4byte gLinkType\n"
+ "_0804B584: .4byte 0x00001144\n"
+ "_0804B588: .4byte gMain\n"
+ "_0804B58C: .4byte 0x0000043c\n"
+ "_0804B590: .4byte gUnknown_08D00000\n"
+ "_0804B594: .4byte gUnknown_08D00524\n"
+ "_0804B598: .4byte 0xfffe1000\n"
+ "_0804B59C: .4byte 0x06002800\n"
+ "_0804B5A0: .4byte 0x040000d4\n"
+ "_0804B5A4: .4byte 0x80000280\n"
+ "_0804B5A8: .4byte gUnknown_08D004E0\n"
+ "_0804B5AC_case01:\n"
+ "\tbl OpenLink\n"
+ "\tldr r1, _0804B5C8 @ =gMain\n"
+ "\tldr r2, _0804B5CC @ =0x0000043c\n"
+ "\tadds r1, r2\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, _0804B5D0 @ =gUnknown_03004828\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0xC0\n"
+ "\tstr r2, [r0]\n"
+ "\tb _0804B76E_break\n"
+ "\t.align 2, 0\n"
+ "_0804B5C8: .4byte gMain\n"
+ "_0804B5CC: .4byte 0x0000043c\n"
+ "_0804B5D0: .4byte gUnknown_03004828\n"
+ "_0804B5D4_case02:\n"
+ "\tldr r0, _0804B5F4 @ =gUnknown_03004828\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r1, r0, 0\n"
+ "\tadds r1, 0xC0\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstr r0, [r1]\n"
+ "\tcmp r0, 0x3C\n"
+ "\tbhi _0804B5E8\n"
+ "\tb _0804B76E_break\n"
+ "_0804B5E8:\n"
+ "\tmovs r0, 0\n"
+ "\tstr r0, [r1]\n"
+ "\tldr r4, _0804B5F8 @ =0x0000043c\n"
+ "\tadds r1, r2, r4\n"
+ "\tb _0804B74C\n"
+ "\t.align 2, 0\n"
+ "_0804B5F4: .4byte gUnknown_03004828\n"
+ "_0804B5F8: .4byte 0x0000043c\n"
+ "_0804B5FC_case03:\n"
+ "\tbl IsLinkMaster\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804B608\n"
+ "\tb _0804B746\n"
+ "_0804B608:\n"
+ "\tbl GetLinkPlayerCount_2\n"
+ "\tadds r4, r0, 0\n"
+ "\tbl sub_800820C\n"
+ "\tlsls r4, 24\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r4, r0\n"
+ "\tbcs _0804B61C\n"
+ "\tb _0804B76E_break\n"
+ "_0804B61C:\n"
+ "\tldr r0, _0804B63C @ =gUnknown_03004828\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r1, 0xC0\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstr r0, [r1]\n"
+ "\tcmp r0, 0x1E\n"
+ "\tbhi _0804B62E\n"
+ "\tb _0804B76E_break\n"
+ "_0804B62E:\n"
+ "\tbl sub_8007F4C\n"
+ "\tldr r1, _0804B640 @ =gMain\n"
+ "\tldr r0, _0804B644 @ =0x0000043c\n"
+ "\tadds r1, r0\n"
+ "\tb _0804B74C\n"
+ "\t.align 2, 0\n"
+ "_0804B63C: .4byte gUnknown_03004828\n"
+ "_0804B640: .4byte gMain\n"
+ "_0804B644: .4byte 0x0000043c\n"
+ "_0804B648_case04:\n"
+ "\tbl sub_804B24C\n"
+ "\tldr r0, _0804B66C @ =gReceivedRemoteLinkPlayers\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _0804B656\n"
+ "\tb _0804B76E_break\n"
+ "_0804B656:\n"
+ "\tbl IsLinkPlayerDataExchangeComplete\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _0804B664\n"
+ "\tb _0804B76E_break\n"
+ "_0804B664:\n"
+ "\tldr r1, _0804B670 @ =gMain\n"
+ "\tldr r4, _0804B674 @ =0x0000043c\n"
+ "\tadds r1, r4\n"
+ "\tb _0804B74C\n"
+ "\t.align 2, 0\n"
+ "_0804B66C: .4byte gReceivedRemoteLinkPlayers\n"
+ "_0804B670: .4byte gMain\n"
+ "_0804B674: .4byte 0x0000043c\n"
+ "_0804B678_case05:\n"
+ "\tldr r2, _0804B69C @ =gUnknown_03004828\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x9C\n"
+ "\tmovs r1, 0\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x9D\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0xBD\n"
+ "\tstrb r1, [r0]\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804B2D0\n"
+ "\tldr r1, _0804B6A0 @ =gMain\n"
+ "\tldr r0, _0804B6A4 @ =0x0000043c\n"
+ "\tadds r1, r0\n"
+ "\tb _0804B74C\n"
+ "\t.align 2, 0\n"
+ "_0804B69C: .4byte gUnknown_03004828\n"
+ "_0804B6A0: .4byte gMain\n"
+ "_0804B6A4: .4byte 0x0000043c\n"
+ "_0804B6A8_case06:\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl sub_804B2D0\n"
+ "\tb _0804B746\n"
+ "_0804B6B2_case07:\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r1, 0\n"
+ "\tbl sub_804B2D0\n"
+ "\tldr r1, _0804B6C4 @ =gMain\n"
+ "\tldr r4, _0804B6C8 @ =0x0000043c\n"
+ "\tadds r1, r4\n"
+ "\tb _0804B74C\n"
+ "\t.align 2, 0\n"
+ "_0804B6C4: .4byte gMain\n"
+ "_0804B6C8: .4byte 0x0000043c\n"
+ "_0804B6CC_case08:\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl sub_804B2D0\n"
+ "\tldr r1, _0804B6DC @ =gMain\n"
+ "\tldr r0, _0804B6E0 @ =0x0000043c\n"
+ "\tadds r1, r0\n"
+ "\tb _0804B74C\n"
+ "\t.align 2, 0\n"
+ "_0804B6DC: .4byte gMain\n"
+ "_0804B6E0: .4byte 0x0000043c\n"
+ "_0804B6E4_case09:\n"
+ "\tbl sub_804C164\n"
+ "\tldr r0, _0804B704 @ =gUnknown_0821594C\n"
+ "\tbl LoadSpriteSheet\n"
+ "\tldr r0, _0804B708 @ =gUnknown_08215954\n"
+ "\tbl LoadSpritePalette\n"
+ "\tldr r1, _0804B70C @ =REG_BG1CNT\n"
+ "\tldr r2, _0804B710 @ =0x00000502\n"
+ "\tadds r0, r2, 0\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r1, _0804B714 @ =gMain\n"
+ "\tldr r4, _0804B718 @ =0x0000043c\n"
+ "\tadds r1, r4\n"
+ "\tb _0804B74C\n"
+ "\t.align 2, 0\n"
+ "_0804B704: .4byte gUnknown_0821594C\n"
+ "_0804B708: .4byte gUnknown_08215954\n"
+ "_0804B70C: .4byte REG_BG1CNT\n"
+ "_0804B710: .4byte 0x00000502\n"
+ "_0804B714: .4byte gMain\n"
+ "_0804B718: .4byte 0x0000043c\n"
+ "_0804B71C_case10:\n"
+ "\tldr r0, _0804B754 @ =0x0000043c\n"
+ "\tadds r1, r2, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "_0804B726_case11:\n"
+ "\tmovs r0, 0x5\n"
+ "\tbl sub_804BBE8\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804BBE8\n"
+ "\tbl sub_804C1A8\n"
+ "\tmovs r0, 0x1\n"
+ "\tnegs r0, r0\n"
+ "\tmovs r1, 0\n"
+ "\tstr r1, [sp]\n"
+ "\tmovs r2, 0x10\n"
+ "\tmovs r3, 0\n"
+ "\tbl BeginNormalPaletteFade\n"
+ "_0804B746:\n"
+ "\tldr r1, _0804B758 @ =gMain\n"
+ "\tldr r2, _0804B754 @ =0x0000043c\n"
+ "\tadds r1, r2\n"
+ "_0804B74C:\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tb _0804B76E_break\n"
+ "\t.align 2, 0\n"
+ "_0804B754: .4byte 0x0000043c\n"
+ "_0804B758: .4byte gMain\n"
+ "_0804B75C_case12:\n"
+ "\tldr r0, _0804B788 @ =gPaletteFade\n"
+ "\tldrb r1, [r0, 0x7]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804B76E_break\n"
+ "\tldr r0, _0804B78C @ =sub_804DB84\n"
+ "\tbl SetMainCallback2\n"
+ "_0804B76E_break:\n"
+ "\tbl RunTasks\n"
+ "\tbl AnimateSprites\n"
+ "\tbl BuildOamBuffer\n"
+ "\tbl UpdatePaletteFade\n"
+ "\tadd sp, 0x4\n"
+ "\tpop {r4-r6}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0804B788: .4byte gPaletteFade\n"
+ "_0804B78C: .4byte sub_804DB84");
+}
+#endif
+
+static void sub_804B790(void)
+// In-game trade init
+{
+ u8 otName[11];
+ switch (gMain.state)
+ {
+ case 0:
+ gUnknown_020297D8[0] = gSpecialVar_0x8005;
+ gUnknown_020297D8[1] = 6;
+ StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName);
+ GetMonData(&gEnemyParty[0], MON_DATA_OT_NAME, otName);
+ StringCopy(gLinkPlayers[1].name, otName);
+ REG_DISPCNT = 0;
+ ResetTasks();
+ gUnknown_03004828 = &ewram_2010000.unk_0f000;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetVBlankCallback(sub_804B210);
+ sub_804B228();
+ SetUpWindowConfig(&gWindowConfig_81E717C);
+ InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E717C);
+ gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2);
+ LoadTextWindowGraphics(&gUnknown_03004828->window);
+ MenuZeroFillScreen();
+ gLinkType = 0x1144;
+ gUnknown_03004828->isLinkTrade = FALSE;
+ gUnknown_03004828->unk_00b6 = 0;
+ gUnknown_03004828->unk_00c4 = 0;
+ gUnknown_03004828->unk_0104 = 0x40;
+ gUnknown_03004828->unk_0106 = 0x40;
+ gUnknown_03004828->unk_0108 = 0;
+ gUnknown_03004828->unk_010a = 0;
+ gUnknown_03004828->unk_010c = 0x78;
+ gUnknown_03004828->unk_010e = 0x50;
+ gUnknown_03004828->unk_0118 = 0x100;
+ gUnknown_03004828->unk_011c = 0;
+ gUnknown_03004828->unk_00c0 = 0;
+ gMain.state = 5;
+ break;
+ case 5:
+ sub_804B2D0(0, 0);
+ gMain.state ++;
+ break;
+ case 6:
+ sub_804B2D0(0, 1);
+ gMain.state ++;
+ break;
+ case 7:
+ sub_804B2D0(1, 0);
+ gMain.state ++;
+ break;
+ case 8:
+ sub_804B2D0(1, 1);
+ gMain.state ++;
+ break;
+ case 9:
+ sub_804C164();
+ LoadSpriteSheet(&gUnknown_0821594C);
+ LoadSpritePalette(&gUnknown_08215954);
+ REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(5);
+ gMain.state ++;
+ break;
+ case 10:
+ gMain.state ++;
+ // fallthrough
+ case 11:
+ sub_804BBE8(5);
+ sub_804BBE8(0);
+ sub_804C1A8();
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ gMain.state ++;
+ break;
+ case 12:
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sub_804BBCC);
+ }
+ break;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_804BA18(u8 partyIdx)
+{
+ struct Pokemon *pokemon = &gPlayerParty[partyIdx];
+ if (!GetMonData(pokemon, MON_DATA_IS_EGG))
+ {
+ u16 species = SpeciesToNationalPokedexNum(GetMonData(pokemon, MON_DATA_SPECIES, NULL));
+ GetSetPokedexFlag(species, 2);
+ GetSetPokedexFlag(species, 3);
+ }
+}
+
+static void sub_804BA64(void)
+{
+ u8 mpId = GetMultiplayerId();
+ if (gLinkPlayers[mpId ^ 1].lp_field_2 == 0x8000)
+ EnableNationalPokedex();
+}
+
+static void sub_804BA94(u8 a0, u8 a1)
+{
+ u8 friendship;
+ struct Pokemon *playerPokemon = &gPlayerParty[a0];
+ u16 playerMail = GetMonData(playerPokemon, MON_DATA_MAIL);
+
+ struct Pokemon *friendPokemon = &gEnemyParty[a1];
+ u16 friendMail = GetMonData(friendPokemon, MON_DATA_MAIL);
+
+ if (playerMail != 0xff)
+ ClearMailStruct(&gSaveBlock1.mail[playerMail]);
+
+ // This is where the actual trade happens!!
+ gUnknown_03004828->pokemon = *playerPokemon;
+ *playerPokemon = *friendPokemon;
+ *friendPokemon = gUnknown_03004828->pokemon;
+
+ friendship = 70;
+ if (!GetMonData(playerPokemon, MON_DATA_IS_EGG))
+ SetMonData(playerPokemon, MON_DATA_FRIENDSHIP, &friendship);
+
+ if (friendMail != 0xff)
+ GiveMailToMon2(playerPokemon, &gUnknown_02029700[friendMail]);
+
+ sub_804BA18(a0);
+ if (gReceivedRemoteLinkPlayers)
+ sub_804BA64();
+}
+
+static void sub_804BB78(void)
+{
+ switch (gUnknown_03004828->unk_00bd)
+ {
+ case 1:
+ if (sub_8007ECC())
+ {
+ Trade_SendData(gUnknown_03004828);
+ gUnknown_03004828->unk_00bd ++;
+ }
+ // fallthrough
+ case 2:
+ gUnknown_03004828->unk_00bd = 0;
+ break;
+ }
+}
+
+static void sub_804BBCC(void)
+{
+ sub_804C29C();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_804BBE8(u8 a0)
+{
+ int i;
+ u16 *buffer;
+ switch (a0)
+ {
+ case 0:
+ LoadPalette(gUnknown_0820C9F8, 0x10, 0xa0);
+ DmaCopyLarge16(3, gUnknown_0820CA98, (void *)BG_CHAR_ADDR(1), 0x1300, 0x1000);
+ DmaCopy16Defvars(3, gUnknown_0820F798, (void *)BG_SCREEN_ADDR(18), 0x1000);
+ gUnknown_03004828->bg2vofs = 0;
+ gUnknown_03004828->bg2hofs = 0xb4;
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_TXT512x256;
+ break;
+ case 1:
+ gUnknown_03004828->bg1hofs = 0;
+ gUnknown_03004828->bg1vofs = 0x15c;
+ REG_BG1VOFS = 0x15c;
+ REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5) | BGCNT_TXT256x512;
+
+ DmaCopy16Defvars(3, gUnknown_08210798, (void *)BG_SCREEN_ADDR(5), 0x1000);
+ DmaCopyLarge16(3, gUnknown_0820CA98, (void *)BG_CHAR_ADDR(0), 0x1300, 0x1000);
+ REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON;
+ break;
+ case 2:
+ gUnknown_03004828->bg1vofs = 0;
+ gUnknown_03004828->bg1hofs = 0;
+ REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON;
+ DmaCopy16Defvars(3, gUnknown_08211798, (void *)BG_SCREEN_ADDR(5), 0x800);
+ break;
+ case 3:
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON;
+ gUnknown_03004828->unk_0104 = 0x40;
+ gUnknown_03004828->unk_0106 = 0x40;
+ gUnknown_03004828->unk_010c = 0x78;
+ gUnknown_03004828->unk_010e = -0x46;
+ gUnknown_03004828->unk_011c = 0;
+ DmaCopyLarge16(3, gUnknown_0820DD98, (void *)BG_CHAR_ADDR(1), 0x1a00, 0x1000);
+ DmaCopy16Defvars(3, gUnknown_08211F98, (void *)BG_SCREEN_ADDR(18), 0x100);
+ break;
+ case 4:
+ REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
+ REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_256COLOR | BGCNT_SCREENBASE(18);
+ gUnknown_03004828->unk_0104 = 0x40;
+ gUnknown_03004828->unk_0106 = 0x5c;
+ gUnknown_03004828->unk_0118 = 0x20;
+ gUnknown_03004828->unk_011a = 0x400;
+ gUnknown_03004828->unk_011c = 0;
+ DmaCopyLarge16(3, gUnknown_08213738, (void *)BG_CHAR_ADDR(1), 0x2040, 0x1000);
+ DmaCopy16Defvars(3, gUnknown_08215778, (void *)BG_SCREEN_ADDR(18), 0x100);
+ break;
+ case 5:
+ gUnknown_03004828->bg1vofs = 0;
+ gUnknown_03004828->bg1hofs = 0;
+ REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5);
+ LZDecompressVram(gUnknown_08D00000, (void *)BG_CHAR_ADDR(0));
+ CpuCopy16(gUnknown_08D00524, buffer = (u16 *)ewram, 0x1000);
+ LoadCompressedPalette(gUnknown_08D004E0, 0x70, 0x20);
+ FillPalette(0, 0, 2);
+ for (i = 0; i < 0x280; i ++)
+ buffer[i] |= 0x7000;
+ DmaCopy16Defvars(3, ewram, (void *)BG_SCREEN_ADDR(5), 0x500);
+ MenuZeroFillWindowRect(2, 15, 27, 18);
+ break;
+ case 6:
+ REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
+ REG_BG2CNT = BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_256COLOR | BGCNT_SCREENBASE(18);
+ gUnknown_03004828->unk_0104 = 0x40;
+ gUnknown_03004828->unk_0106 = 0x5c;
+ gUnknown_03004828->unk_0118 = 0x100;
+ gUnknown_03004828->unk_011a = 0x80;
+ gUnknown_03004828->unk_010c = 0x78;
+ gUnknown_03004828->unk_010e = 0x50;
+ gUnknown_03004828->unk_011c = 0;
+ DmaCopyLarge16(3, gUnknown_08213738, (void *)BG_CHAR_ADDR(1), 0x2040, 0x1000);
+ DmaCopy16Defvars(3, gUnknown_08215778, (void *)BG_SCREEN_ADDR(18), 0x100);
+ break;
+ case 7:
+ gUnknown_03004828->bg2vofs = 0;
+ gUnknown_03004828->bg2hofs = 0;
+ REG_BG2CNT = BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_TXT512x256;
+ LoadPalette(gUnknown_0820C9F8, 0x10, 0xa0);
+ DmaCopyLarge16(3, gUnknown_0820CA98, (void *)BG_CHAR_ADDR(1), 0x1300, 0x1000);
+ DmaCopy16Defvars(3, gUnknown_0820F798, (void *)BG_SCREEN_ADDR(18), 0x1000);
+ break;
+ }
+}
+
+static void sub_804C0F8(u8 a0)
+{
+ if (a0 == 0)
+ {
+ if (gUnknown_03004828->bg1vofs < 0x10a)
+ {
+ gUnknown_03004828->unk_010e ++;
+ gUnknown_03004828->unk_011c += 64;
+ }
+ }
+ else
+ {
+ if (gUnknown_03004828->unk_010e > -0x40)
+ {
+ gUnknown_03004828->unk_010e --;
+ gUnknown_03004828->unk_011c += 64;
+ }
+ }
+}
+
+static void sub_804C164(void)
+{
+ LoadSpriteSheet(&gUnknown_082159A4);
+ LoadSpriteSheet(&gUnknown_082159F4);
+ LoadSpriteSheet(&gUnknown_08215A28);
+ LoadSpriteSheet(&gUnknown_08215A78);
+ LoadSpritePalette(&gUnknown_082159AC);
+ LoadSpritePalette(&gUnknown_082159B4);
+}
+
+static void sub_804C1A8(void)
+{
+ u8 mpId;
+ u8 string[20];
+ const struct InGameTrade *ingameTrade;
+ if (gUnknown_03004828->isLinkTrade)
+ {
+ mpId = GetMultiplayerId();
+ StringCopy(gStringVar1, gLinkPlayers[mpId ^ 1].name);
+ GetMonData(&gEnemyParty[gUnknown_020297D8[1] % 6], MON_DATA_NICKNAME, string);
+ StringCopy10(gStringVar3, string);
+ GetMonData(&gPlayerParty[gUnknown_020297D8[0]], MON_DATA_NICKNAME, string);
+ StringCopy10(gStringVar2, string);
+ }
+ else
+ {
+ ingameTrade = &gIngameTrades[gSpecialVar_0x8004];
+ StringCopy(gStringVar1, ingameTrade->otName);
+ StringCopy10(gStringVar3, ingameTrade->name);
+ GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_NICKNAME, string);
+ StringCopy10(gStringVar2, string);
+ }
+}
+
+static bool8 sub_804C29C(void)
+{
+ u16 evoTarget;
+
+ switch (gUnknown_03004828->unk_00c4)
+ {
+ case 0:
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].invisible = FALSE;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.x = -0xb4;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y = gMonFrontPicCoords[gUnknown_03004828->tradeSpecies[0]].y_offset;
+ gUnknown_03004828->unk_00c4 ++;
+ gUnknown_03004828->unk_0124 = GetCurrentMapMusic();
+ PlayBGM(BGM_SHINKA);
+ break;
+ case 1:
+ if (gUnknown_03004828->bg2hofs > 0)
+ {
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.x += 3;
+ gUnknown_03004828->bg2hofs -= 3;
+ }
+ else
+ {
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.x = 0;
+ gUnknown_03004828->bg2hofs = 0;
+ gUnknown_03004828->unk_00c4 = 10;
+ }
+ break;
+
+ case 10:
+ StringExpandPlaceholders(gStringVar4, gTradeText_WillBeSent);
+ sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gUnknown_03004828->unk_00c4 = 11;
+ gUnknown_03004828->unk_00c0 = 0;
+ break;
+ case 11:
+ if (++gUnknown_03004828->unk_00c0 == 80)
+ {
+ gUnknown_03004828->unk_0102 = sub_8047580(gUnknown_03004828->pokePicSpriteIdxs[0], gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].oam.paletteNum, 0x78, 0x20, 0x2, 0x1, 0x14, 0xfffff);
+ gUnknown_03004828->unk_00c4 ++;
+ ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19);
+ StringExpandPlaceholders(gStringVar4, gTradeText_ByeBye);
+ sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ }
+ break;
+ case 12:
+ if (gSprites[gUnknown_03004828->unk_0102].callback == SpriteCallbackDummy && sub_80035AC(&gUnknown_03004828->window) == TRUE)
+ {
+ gUnknown_03004828->unk_0103 = CreateSprite(&gSpriteTemplate_821595C, 0x78, 0x20, 0);
+ gSprites[gUnknown_03004828->unk_0103].callback = sub_804D738;
+ DestroySprite(&gSprites[gUnknown_03004828->unk_0102]);
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 13:
+ // The game waits here for the sprite to finish its animation sequence.
+ break;
+ case 14:
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gUnknown_03004828->unk_00c4 = 20;
+ break;
+
+ case 20:
+ if (!gPaletteFade.active)
+ {
+ sub_804BBE8(4);
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 21:
+ BeginNormalPaletteFade(-1, -1, 16, 0, 0);
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 22:
+ if (!gPaletteFade.active)
+ {
+ gUnknown_03004828->unk_00c4 = 23;
+ }
+ break;
+ case 23:
+ if (gUnknown_03004828->unk_011a > 0x100)
+ {
+ gUnknown_03004828->unk_011a -= 0x34;
+ }
+ else
+ {
+ sub_804BBE8(1);
+ gUnknown_03004828->unk_011a = 0x80;
+ gUnknown_03004828->unk_00c4 ++;
+ gUnknown_03004828->unk_00c0 = 0;
+ }
+ gUnknown_03004828->unk_0118 = 0x8000 / gUnknown_03004828->unk_011a;
+ break;
+ case 24:
+ if (++ gUnknown_03004828->unk_00c0 > 20)
+ {
+ sub_804BBE8(3);
+ sub_804B128();
+ gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_8215A80, 0x78, 0x50, 0);
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 25:
+ if (gSprites[gUnknown_03004828->unk_00bb].animEnded)
+ {
+ DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]);
+ REG_BLDCNT = 0x640;
+ REG_BLDALPHA = 0x40C;
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 26:
+ if (-- gUnknown_03004828->bg1vofs == 0x13C)
+ {
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ if (gUnknown_03004828->bg1vofs == 0x148)
+ {
+ gUnknown_03004828->unk_00bc = CreateSprite(&gSpriteTemplate_8215A30, 0x80, 0x41, 0);
+ }
+ break;
+ case 27:
+ gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159BC, 0x80, 0x50, 3);
+ gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x80, 0x50, 0);
+ StartSpriteAnim(&gSprites[gUnknown_03004828->unk_00bb], 1);
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 28:
+ if ((gUnknown_03004828->bg1vofs -= 2) == 0xA6)
+ {
+ gUnknown_03004828->unk_00c4 = 200;
+ }
+ sub_804C0F8(0);
+ REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
+ break;
+ case 200:
+ gSprites[gUnknown_03004828->unk_00ba].pos1.y -= 2;
+ gSprites[gUnknown_03004828->unk_00bb].pos1.y -= 2;
+ sub_804C0F8(0);
+ if (gSprites[gUnknown_03004828->unk_00ba].pos1.y < -8)
+ {
+ gUnknown_03004828->unk_00c4 = 29;
+ }
+ break;
+ case 29:
+ BeginNormalPaletteFade(-1, -1, 0, 16, 0);
+ gUnknown_03004828->unk_00c4 = 30;
+ break;
+ case 30:
+ if (!gPaletteFade.active)
+ {
+ DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]);
+ DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]);
+ sub_804BBE8(2);
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 31:
+ BeginNormalPaletteFade(-1, -1, 16, 0, 0);
+ gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159FC, 0x6f, 0xaa, 0);
+ gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x81, -0xa, 0);
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 32:
+ if (!gPaletteFade.active)
+ {
+ PlaySE(SE_TK_WARPOUT);
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3;
+ gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3;
+ break;
+ case 33:
+ gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3;
+ gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3;
+ if (gSprites[gUnknown_03004828->unk_00ba].pos2.y <= -0x5a)
+ {
+ gSprites[gUnknown_03004828->unk_00ba].data1 = 1;
+ gSprites[gUnknown_03004828->unk_00bb].data1 = 1;
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 34:
+ BlendPalettes(1, 16, 0xffff);
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 35:
+ BlendPalettes(1, 0, 0xffff);
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 36:
+ BlendPalettes(1, 16, 0xffff);
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 37:
+ if (!IsPokeSpriteNotFlipped(gUnknown_03004828->tradeSpecies[0]))
+ {
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].affineAnims = gSpriteAffineAnimTable_8215AC0;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].oam.affineMode = 3;
+ CalcCenterToCornerVec(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]], 0, 3, 3);
+ StartSpriteAffineAnim(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]], 0);
+ }
+ else
+ {
+ StartSpriteAffineAnim(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]], 0);
+ }
+ StartSpriteAffineAnim(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]], 0);
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos1.x = 0x3c;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.x = 0xb4;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos1.y = 0xc0;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.y = -0x20;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].invisible = FALSE;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].invisible = FALSE;
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 38:
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y -= 3;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos2.y += 3;
+ if (-0xa0 > gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y && gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y >= -0xa3)
+ {
+ PlaySE(SE_TK_WARPIN);
+ }
+ if (gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].pos2.y < -0xde)
+ {
+ gSprites[gUnknown_03004828->unk_00ba].data1 = 0;
+ gSprites[gUnknown_03004828->unk_00bb].data1 = 0;
+ gUnknown_03004828->unk_00c4 ++;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]].invisible = TRUE;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].invisible = TRUE;
+ BlendPalettes(1, 0, 0xffff);
+ }
+ break;
+ case 39:
+ gSprites[gUnknown_03004828->unk_00ba].pos2.y -= 3;
+ gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3;
+ if (gSprites[gUnknown_03004828->unk_00ba].pos2.y <= -0xde)
+ {
+ BeginNormalPaletteFade(-1, -1, 0, 16, 0);
+ gUnknown_03004828->unk_00c4 ++;
+ DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]);
+ DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]);
+ }
+ break;
+ case 40:
+ if (!gPaletteFade.active)
+ {
+ gUnknown_03004828->unk_00c4 ++;
+ sub_804BBE8(1);
+ gUnknown_03004828->bg1vofs = 0xa6;
+ gUnknown_03004828->unk_00ba = CreateSprite(&gSpriteTemplate_82159BC, 0x80, -0x14, 3);
+ gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_82159FC, 0x80, -0x14, 0);
+ StartSpriteAnim(&gSprites[gUnknown_03004828->unk_00bb], 1);
+ }
+ break;
+ case 41:
+ BeginNormalPaletteFade(-1, -1, 16, 0, 0);
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 42:
+ REG_DISPCNT = DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
+ sub_804C0F8(1);
+ if (!gPaletteFade.active)
+ {
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 43:
+ sub_804C0F8(1);
+ gSprites[gUnknown_03004828->unk_00ba].pos2.y += 3;
+ gSprites[gUnknown_03004828->unk_00bb].pos2.y += 3;
+ if (gSprites[gUnknown_03004828->unk_00ba].pos2.y + gSprites[gUnknown_03004828->unk_00ba].pos1.y == 64)
+ {
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 44:
+ sub_804C0F8(1);
+ if ((gUnknown_03004828->bg1vofs += 2) > 0x13c)
+ {
+ gUnknown_03004828->bg1vofs = 0x13c;
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 45:
+ DestroySprite(&gSprites[gUnknown_03004828->unk_00ba]);
+ DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]);
+ gUnknown_03004828->unk_00c4 ++;
+ gUnknown_03004828->unk_00c0 = 0;
+ break;
+ case 46:
+ if (++ gUnknown_03004828->unk_00c0 == 10)
+ {
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 47:
+ if (++ gUnknown_03004828->bg1vofs > 0x15c)
+ {
+ gUnknown_03004828->bg1vofs = 0x15c;
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ if (gUnknown_03004828->bg1vofs == 0x148)
+ gUnknown_03004828->unk_00bc = CreateSprite(&gSpriteTemplate_8215A30, 0x80, 0x41, 0);
+ gSprites[gUnknown_03004828->unk_00bc].callback = sub_804B0E0;
+ break;
+ case 48:
+ gUnknown_03004828->unk_00bb = CreateSprite(&gSpriteTemplate_8215A80, 0x78, 0x50, 0);
+ gUnknown_03004828->unk_00c4 = 50;
+ break;
+
+ case 50:
+ if (gSprites[gUnknown_03004828->unk_00bb].animEnded)
+ {
+ DestroySprite(&gSprites[gUnknown_03004828->unk_00bb]);
+ sub_804BBE8(6);
+ gUnknown_03004828->unk_00c4 ++;
+ PlaySE(SE_W028);
+ }
+ break;
+ case 51:
+ if (gUnknown_03004828->unk_011a < 0x400)
+ {
+ gUnknown_03004828->unk_011a += 0x34;
+ }
+ else
+ {
+ gUnknown_03004828->unk_011a = 0x400;
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ gUnknown_03004828->unk_0118 = 0x8000 / gUnknown_03004828->unk_011a;
+ break;
+ case 52:
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gUnknown_03004828->unk_00c4 = 60;
+ break;
+
+ case 60:
+ if (!gPaletteFade.active)
+ {
+ sub_804BBE8(5);
+ sub_804BBE8(7);
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 61:
+ BeginNormalPaletteFade(-1, 0, 16, 0, 0);
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 62:
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
+ if (!gPaletteFade.active)
+ {
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 63:
+ gUnknown_03004828->unk_0103 = CreateSprite(&gSpriteTemplate_821595C, 0x78, -0x8, 0);
+ gSprites[gUnknown_03004828->unk_0103].data3 = 0x4a;
+ gSprites[gUnknown_03004828->unk_0103].callback = sub_804D80C;
+ StartSpriteAnim(&gSprites[gUnknown_03004828->unk_0103], 1);
+ StartSpriteAffineAnim(&gSprites[gUnknown_03004828->unk_0103], 2);
+ BlendPalettes(1 << (16 + gSprites[gUnknown_03004828->unk_0103].oam.paletteNum), 16, 0xffff);
+ gUnknown_03004828->unk_00c4 ++;
+ gUnknown_03004828->unk_00c0 = 0;
+ break;
+ case 64:
+ BeginNormalPaletteFade(1 << (16 + gSprites[gUnknown_03004828->unk_0103].oam.paletteNum), 1, 16, 0, 0xffff);
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 65:
+ if (gSprites[gUnknown_03004828->unk_0103].callback == SpriteCallbackDummy)
+ {
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 66:
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.x = 0x78;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos1.y = gMonFrontPicCoords[gUnknown_03004828->tradeSpecies[1]].y_offset + 60;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos2.x = 0;
+ gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].pos2.y = 0;
+ CreatePokeballSprite(gUnknown_03004828->pokePicSpriteIdxs[1], gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]].oam.paletteNum, 0x78, 0x54, 2, 1, 0x14, 0xfffff);
+ FreeSpriteOamMatrix(&gSprites[gUnknown_03004828->unk_0103]);
+ DestroySprite(&gSprites[gUnknown_03004828->unk_0103]);
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 67:
+ REG_DISPCNT = DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON;
+ ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19);
+ StringExpandPlaceholders(gStringVar4, gTradeText_SentOverPoke);
+ sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gUnknown_03004828->unk_00c4 ++;
+ gUnknown_03004828->unk_00c0 = 0;
+ break;
+ case 68:
+ if (++ gUnknown_03004828->unk_00c0 == 4)
+ {
+ PlayFanfare(BGM_FANFA5);
+ }
+ if (gUnknown_03004828->unk_00c0 == 0xf0)
+ {
+ gUnknown_03004828->unk_00c4 ++;
+ ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19);
+ StringExpandPlaceholders(gStringVar4, gTradeText_TakeGoodCare);
+ sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gUnknown_03004828->unk_00c0 = 0;
+ }
+ break;
+ case 69: // OneHand
+ if (++ gUnknown_03004828->unk_00c0 == 60)
+ {
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 70:
+ sub_804E1DC();
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 71:
+ if (gUnknown_03004828->isLinkTrade)
+ {
+ return TRUE;
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ gUnknown_03004828->unk_00c4 ++;
+ }
+ break;
+ case 72: // Only if in-game trade
+ sub_804BA94(gSpecialVar_0x8005, 0);
+ gCB2_AfterEvolution = sub_804BBCC;
+ evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gUnknown_020297D8[0]], TRUE, ITEM_NONE);
+ if (evoTarget != SPECIES_NONE)
+ TradeEvolutionScene(&gPlayerParty[gUnknown_020297D8[0]], evoTarget, gUnknown_03004828->pokePicSpriteIdxs[1], gUnknown_020297D8[0]);
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 73:
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gUnknown_03004828->unk_00c4 ++;
+ break;
+ case 74:
+ if (!gPaletteFade.active)
+ {
+ PlayBGM(gUnknown_03004828->unk_0124);
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ sub_804D8E4();
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static void sub_804D588(void)
+{
+ u16 evoTarget;
+ switch (gMain.state)
+ {
+ case 0:
+ gMain.state = 4;
+ gSoftResetDisabled = TRUE;
+ break;
+ case 4:
+ gCB2_AfterEvolution = sub_804DC88;
+ evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gUnknown_020297D8[0]], TRUE, ITEM_NONE);
+ if (evoTarget != SPECIES_NONE)
+ TradeEvolutionScene(&gPlayerParty[gUnknown_020297D8[0]], evoTarget, gUnknown_03004828->pokePicSpriteIdxs[1], gUnknown_020297D8[0]);
+ else
+ SetMainCallback2(sub_804DC88);
+ gUnknown_020297D8[0] = 255;
+ break;
+ }
+ if (!HasLinkErrorOccurred())
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_804D63C(void)
+{
+ u8 blockReceivedStatus;
+ sub_804B2B0();
+ blockReceivedStatus = GetBlockReceivedStatus();
+ if (blockReceivedStatus & 0x01)
+ {
+ if (gBlockRecvBuffer[0][0] == 0xdcba)
+ {
+ SetMainCallback2(sub_804D588);
+ }
+ if (gBlockRecvBuffer[0][0] == 0xabcd)
+ {
+ gUnknown_03004828->unk_009c = 1;
+ }
+ ResetBlockReceivedFlag(0);
+ }
+ if (blockReceivedStatus & 0x02)
+ {
+ if (gBlockRecvBuffer[1][0] == 0xabcd)
+ {
+ gUnknown_03004828->unk_009d = 1;
+ }
+ ResetBlockReceivedFlag(1);
+ }
+}
+
+static void sub_804D6BC(struct Sprite *sprite)
+{
+ sprite->pos1.y += sprite->data0 / 10;
+ sprite->data5 += sprite->data1;
+ sprite->pos1.x = sprite->data5 / 10;
+ if (sprite->pos1.y > 0x4c)
+ {
+ sprite->pos1.y = 0x4c;
+ sprite->data0 = -(sprite->data0 * sprite->data2) / 100;
+ sprite->data3 ++;
+ }
+ if (sprite->pos1.x == 0x78)
+ sprite->data1 = 0;
+ sprite->data0 += sprite->data4;
+ if (sprite->data3 == 4)
+ {
+ sprite->data7 = 1;
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void sub_804D738(struct Sprite *sprite)
+{
+ sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data0];
+ if (sprite->data0 == 22)
+ PlaySE(SE_KON);
+ if (++ sprite->data0 == 44)
+ {
+ PlaySE(SE_W025);
+ sprite->callback = sub_804D7AC;
+ sprite->data0 = 0;
+ BeginNormalPaletteFade(1 << (16 + sprite->oam.paletteNum), -1, 0, 16, -1);
+ }
+}
+
+static void sub_804D7AC(struct Sprite *sprite)
+{
+ if (sprite->data1 == 20)
+ StartSpriteAffineAnim(sprite, 1);
+ if (++ sprite->data1 > 20)
+ {
+ sprite->pos2.y -= gTradeBallVerticalVelocityTable[sprite->data0];
+ if (++ sprite->data0 == 23)
+ {
+ DestroySprite(sprite);
+ gUnknown_03004828->unk_00c4 = 14; // Resume the master trade animation
+ }
+ }
+}
+
+static void sub_804D80C(struct Sprite *sprite)
+{
+ if (sprite->data2 == 0)
+ {
+ if ((sprite->pos1.y += 4) > sprite->data3)
+ {
+ sprite->data2 ++;
+ sprite->data0 = 0x16;
+ PlaySE(SE_KON);
+ }
+ }
+ else
+ {
+ if (sprite->data0 == 0x42)
+ PlaySE(SE_KON2);
+ if (sprite->data0 == 0x5c)
+ PlaySE(SE_KON3);
+ if (sprite->data0 == 0x6b)
+ PlaySE(SE_KON4);
+ sprite->pos2.y += gTradeBallVerticalVelocityTable[sprite->data0];
+ if (++sprite->data0 == 0x6c)
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+u16 sub_804D89C(void)
+{
+ const struct InGameTrade *inGameTrade = &gIngameTrades[gSpecialVar_0x8004];
+ StringCopy(gStringVar1, gSpeciesNames[inGameTrade->playerSpecies]);
+ StringCopy(gStringVar2, gSpeciesNames[inGameTrade->species]);
+ return inGameTrade->playerSpecies;
+}
+
+static void sub_804D8E4(void)
+{
+ u8 nickname[32];
+ const struct InGameTrade *inGameTrade = &gIngameTrades[gSpecialVar_0x8004];
+ GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_NICKNAME, nickname);
+ StringCopy10(gStringVar1, nickname);
+ StringCopy(gStringVar2, gSpeciesNames[inGameTrade->species]);
+}
+
+static void sub_804D948(u8 whichPlayerMon, u8 whichInGameTrade)
+{
+ const struct InGameTrade *inGameTrade = &gIngameTrades[whichInGameTrade];
+ u8 level = GetMonData(&gPlayerParty[whichPlayerMon], MON_DATA_LEVEL);
+
+ struct MailStruct mail;
+ u8 metLocation = 0xFE;
+ u8 isMail;
+ u8 *item;
+ struct Pokemon *pokemon = &gEnemyParty[0];
+
+ CreateMon(pokemon, inGameTrade->species, level, 32, TRUE, inGameTrade->personality, TRUE, inGameTrade->otId);
+
+ SetMonData(pokemon, MON_DATA_HP_IV, &inGameTrade->ivs[0]);
+ SetMonData(pokemon, MON_DATA_ATK_IV, &inGameTrade->ivs[1]);
+ SetMonData(pokemon, MON_DATA_DEF_IV, &inGameTrade->ivs[2]);
+ SetMonData(pokemon, MON_DATA_SPD_IV, &inGameTrade->ivs[3]);
+ SetMonData(pokemon, MON_DATA_SPATK_IV, &inGameTrade->ivs[4]);
+ SetMonData(pokemon, MON_DATA_SPDEF_IV, &inGameTrade->ivs[5]);
+ SetMonData(pokemon, MON_DATA_NICKNAME, inGameTrade->name);
+ SetMonData(pokemon, MON_DATA_OT_NAME, inGameTrade->otName);
+ SetMonData(pokemon, MON_DATA_OT_GENDER, &inGameTrade->otGender);
+ SetMonData(pokemon, MON_DATA_ALT_ABILITY, &inGameTrade->secondAbility);
+ SetMonData(pokemon, MON_DATA_BEAUTY, &inGameTrade->stats[1]);
+ SetMonData(pokemon, MON_DATA_CUTE, &inGameTrade->stats[2]);
+ SetMonData(pokemon, MON_DATA_COOL, &inGameTrade->stats[0]);
+ SetMonData(pokemon, MON_DATA_SMART, &inGameTrade->stats[3]);
+ SetMonData(pokemon, MON_DATA_TOUGH, &inGameTrade->stats[4]);
+ SetMonData(pokemon, MON_DATA_SHEEN, &inGameTrade->sheen);
+ SetMonData(pokemon, MON_DATA_MET_LOCATION, &metLocation);
+
+ isMail = FALSE;
+ if (inGameTrade->heldItem != ITEM_NONE)
+ {
+ if (ItemIsMail(inGameTrade->heldItem))
+ {
+ sub_804DAD4(&mail, inGameTrade);
+ gUnknown_02029700[0] = mail;
+ SetMonData(pokemon, MON_DATA_MAIL, &isMail);
+ SetMonData(pokemon, MON_DATA_HELD_ITEM, (u8 *)&inGameTrade->heldItem);
+ }
+ else
+ {
+ item = (u8 *)&inGameTrade->heldItem;
+ SetMonData(pokemon, MON_DATA_HELD_ITEM, item);
+ }
+ }
+ CalculateMonStats(&gEnemyParty[0]);
+}
+
+static void sub_804DAD4(struct MailStruct *mail, const struct InGameTrade *trade) {
+ s32 i;
+
+ for (i = 0; i < 9; i++)
+ {
+ mail->words[i] = gIngameTradeMail[trade->mailNum][i];
+ }
+
+ StringCopy(mail->playerName, trade->otName);
+
+#if GERMAN
+ PadNameString(mail->playerName, CHAR_SPACE);
+#endif
+
+ mail->trainerId[0] = trade->otId >> 24;
+ mail->trainerId[1] = trade->otId >> 16;
+ mail->trainerId[2] = trade->otId >> 8;
+ mail->trainerId[3] = trade->otId;
+ mail->species = trade->species;
+ mail->itemId = trade->heldItem;
+}
+
+u16 sub_804DB2C(void)
+{
+ if (GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_IS_EGG))
+ return SPECIES_NONE;
+ return GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_SPECIES);
+}
+
+void sub_804DB68(void)
+{
+ sub_804D948(gSpecialVar_0x8005, gSpecialVar_0x8004);
+}
+
+#ifdef NONMATCHING
+static
+#endif
+void sub_804DB84(void)
+{
+ if (sub_804C29C() == TRUE)
+ {
+ DestroySprite(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[0]]);
+ FreeSpriteOamMatrix(&gSprites[gUnknown_03004828->pokePicSpriteIdxs[1]]);
+ sub_804BA94(gUnknown_020297D8[0], gUnknown_020297D8[1] % 6);
+ gUnknown_03004828->linkData[0] = 0xabcd;
+ gUnknown_03004828->unk_00bd = 1;
+ SetMainCallback2(sub_804DC18);
+ }
+ sub_804BB78();
+ sub_804D63C();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_804DC18(void)
+{
+ u8 mpId = sub_804B2B0();
+ sub_804D63C();
+ if (mpId == 0 && gUnknown_03004828->unk_009c == 1 && gUnknown_03004828->unk_009d == 1)
+ {
+ gUnknown_03004828->linkData[0] = 0xdcba;
+ Trade_SendData(gUnknown_03004828);
+ gUnknown_03004828->unk_009c = 2;
+ gUnknown_03004828->unk_009d = 2;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_804DC88(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ gUnknown_03004828 = &ewram_2010000.unk_0f000;
+ gMain.state ++;
+ ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19);
+ StringExpandPlaceholders(gStringVar4, gOtherText_LinkStandby2);
+ sub_8003460(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ break;
+ case 1:
+ sub_80084A4();
+ gMain.state = 100;
+ gUnknown_03004828->unk_00c0 = 0;
+ break;
+ case 100:
+ if (++ gUnknown_03004828->unk_00c0 > 180)
+ {
+ gMain.state = 101;
+ gUnknown_03004828->unk_00c0 = 0;
+ }
+ if (sub_8007ECC())
+ {
+ gMain.state = 2;
+ }
+ break;
+ case 101:
+ if (sub_8007ECC())
+ {
+ gMain.state = 2;
+ }
+ break;
+ case 2:
+ gMain.state = 50;
+ ZeroFillWindowRect(&gUnknown_03004828->window, 0, 0, 29, 19);
+ sub_8003460(&gUnknown_03004828->window, gSystemText_Saving, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ break;
+ case 50:
+ SetSecretBase2Field_9_AndHideBG();
+ IncrementGameStat(GAME_STAT_POKEMON_TRADES);
+ sub_8125D80();
+ gMain.state ++;
+ gUnknown_03004828->unk_00c0 = 0;
+ break;
+ case 51:
+ if (++ gUnknown_03004828->unk_00c0 == 5)
+ {
+ gMain.state ++;
+ }
+ break;
+ case 52:
+ if (sub_8125DA8())
+ {
+ ClearSecretBase2Field_9_2();
+ gMain.state = 4;
+ }
+ else
+ {
+ gUnknown_03004828->unk_00c0 = 0;
+ gMain.state = 51;
+ }
+ break;
+ case 4:
+ sub_8125DDC();
+ gMain.state = 40;
+ gUnknown_03004828->unk_00c0 = 0;
+ break;
+ case 40:
+ if (++ gUnknown_03004828->unk_00c0 > 50)
+ {
+ gUnknown_03004828->unk_00c0 = 0;
+ gMain.state = 41;
+ }
+ break;
+ case 41:
+ sub_80084A4();
+ gMain.state = 42;
+ break;
+ case 42:
+ if (sub_8007ECC())
+ {
+ sub_8125E04();
+ gSoftResetDisabled = FALSE;
+ gMain.state = 5;
+ }
+ break;
+ case 5:
+ if (++ gUnknown_03004828->unk_00c0 > 60)
+ {
+ gMain.state ++;
+ sub_80084A4();
+ }
+ break;
+ case 6:
+ if (sub_8007ECC())
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+ gMain.state ++;
+ }
+ break;
+ case 7:
+ if (!gPaletteFade.active)
+ {
+ FadeOutBGM(3);
+ gMain.state ++;
+ }
+ break;
+ case 8:
+ if (IsBGMStopped() == TRUE)
+ {
+ sub_800832C();
+ gMain.state ++;
+ }
+ break;
+ case 9:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ SetMainCallback2(sub_804E144);
+ }
+ break;
+ }
+ if (!HasLinkErrorOccurred())
+ {
+ RunTasks();
+ }
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_804E144(void)
+{
+ if (!gPaletteFade.active)
+ SetMainCallback2((sub_8047CD8));
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_804E174(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(sub_804E1A0, 10);
+ BeginNormalPaletteFade(-1, 0, 0, 16, 0);
+}
+
+static void sub_804E1A0(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sub_804B790);
+ gFieldCallback = sub_8080990;
+ DestroyTask(taskId);
+ }
+}
+
+static void sub_804E1DC(void)
+{
+ u8 i;
+ u8 numRibbons = 0;
+ for (i = 0; i < 12; i ++)
+ {
+ numRibbons += GetMonData(&gEnemyParty[gUnknown_020297D8[1] % 6], MON_DATA_CHAMPION_RIBBON + i);
+ }
+ if (numRibbons != 0)
+ FlagSet(SYS_RIBBON_GET);
+}
+
+void sub_804E22C(void)
+{
+ const u16 *src;
+ u16 *dest;
+ LZDecompressVram(gUnknown_08D00000, (u8 *)VRAM);
+ CpuCopy16(gUnknown_08D00524, ewram, 0x1000);
+ src = (const u16 *)ewram;
+ dest = (u16 *)(BG_SCREEN_ADDR(5));
+ DmaCopy16(3, src, dest, 0x500)
+ LoadCompressedPalette(gUnknown_08D004E0, 0, 32);
+ REG_BG1CNT = BGCNT_PRIORITY(2) | BGCNT_SCREENBASE(5);
+}
diff --git a/src/trainer_card.c b/src/engine/trainer_card.c
index 626c5a7bf..bcb62ede6 100644
--- a/src/trainer_card.c
+++ b/src/engine/trainer_card.c
@@ -10,7 +10,7 @@
#include "money.h"
#include "palette.h"
#include "pokedex.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script_pokemon_80C4.h"
#include "songs.h"
#include "sound.h"
@@ -509,7 +509,7 @@ static void sub_8093688(void)
ewram0.var_5 = 0;
ewram0.var_6 = 0;
for (i = 0; i < 4; i++)
- sub_80EB3FC(ewram0.var_20[i], ewram0.var_64.var_28[i]);
+ EasyChat_GetWordText(ewram0.var_20[i], ewram0.var_64.var_28[i]);
sub_80936D4();
}
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/field/bard_music.c b/src/field/bard_music.c
new file mode 100644
index 000000000..daf003233
--- /dev/null
+++ b/src/field/bard_music.c
@@ -0,0 +1,69 @@
+#include "global.h"
+#include "bard_music.h"
+#include "easy_chat.h"
+
+struct BardSound
+{
+ /*0x00*/ u8 var00;
+ /*0x01*/ s8 var01;
+ /*0x02*/ u16 var02;
+ /*0x04*/ u16 volume;
+ /*0x06*/ u16 var06;
+};
+
+extern const struct BardSound (*const gBardMusicTable[])[][6];
+extern s16 *gUnknown_08417068[];
+extern u32 gUnknown_084170F4[];
+
+static s16 CalcWordPitch(u32 arg0, u32 songPos)
+{
+ return gUnknown_08417068[arg0][songPos];
+}
+
+#if ENGLISH
+const struct BardSound *GetWordSounds(u16 group, u16 word)
+{
+ const struct BardSound (*sounds)[][6] = gBardMusicTable[group];
+
+ return (*sounds)[word];
+}
+#elif GERMAN
+const struct BardSound *GetWordSounds(u16 group, u16 word)
+{
+ const struct BardSound (*sounds)[][6] = gBardMusicTable[group];
+ u32 index = de_sub_80EB748(group, word);
+
+ return (*sounds)[index];
+}
+#endif
+
+s32 GetWordPhonemes(struct BardSong *song, const struct BardSound *src, u16 arg2)
+{
+ s32 i;
+ s32 j;
+ s32 thirty;
+
+ for (i = 0; i < 6; i++)
+ {
+ song->phonemes[i].sound = src[i].var00;
+ if (src[i].var00 != 0xFF)
+ {
+ s32 length = src[i].var01 + gUnknown_084170F4[src[i].var00];
+
+ song->phonemes[i].length = length;
+ song->phonemes[i].volume = src[i].volume;
+ song->var04 += length;
+ }
+ }
+
+ for (j = 0, thirty = 30; j < i; j++)
+ song->phonemes[j].pitch = CalcWordPitch(thirty + arg2, j);
+
+ song->currWord++;
+ song->currPhoneme = 0;
+ song->phonemeTimer = 0;
+ song->state = 0;
+ song->voiceInflection = 0;
+
+ //warning: no return statement in function returning non-void
+}
diff --git a/src/berry.c b/src/field/berry.c
index fa15672e7..d82eab2a6 100644
--- a/src/berry.c
+++ b/src/field/berry.c
@@ -974,7 +974,7 @@ const struct Berry gBerries[] =
const struct BerryTree gBlankBerryTree = {0};
-extern u8 BerryTreeScript;
+extern u8 S_BerryTree[];
extern u16 gScriptLastTalked;
extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
@@ -1078,7 +1078,7 @@ bool32 FieldObjectInteractionWaterBerryTree(void)
bool8 IsPlayerFacingPlantedBerryTree(void)
{
- if (GetFieldObjectScriptPointerForComparison() == &BerryTreeScript
+ if (GetFieldObjectScriptPointerForComparison() == S_BerryTree
&& GetStageByBerryTreeId(FieldObjectGetBerryTreeId(gSelectedMapObject)) == 0)
return TRUE;
else
@@ -1087,7 +1087,7 @@ bool8 IsPlayerFacingPlantedBerryTree(void)
bool8 TryToWaterBerryTree(void)
{
- if (GetFieldObjectScriptPointerForComparison() != &BerryTreeScript)
+ if (GetFieldObjectScriptPointerForComparison() != S_BerryTree)
return FALSE;
else
return FieldObjectInteractionWaterBerryTree();
diff --git a/src/berry_tag_screen.c b/src/field/berry_tag_screen.c
index ff430e7b2..1413a02ca 100644
--- a/src/berry_tag_screen.c
+++ b/src/field/berry_tag_screen.c
@@ -10,7 +10,7 @@
#include "menu.h"
#include "menu_helpers.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "songs.h"
#include "sound.h"
#include "sprite.h"
@@ -61,9 +61,9 @@ static void sub_8146440(u8 taskId);
static void sub_8146480(u8 taskid);
static void sub_81464E4(void);
static void sub_8146600(u8 berry);
-// static void sub_81466A0(void);
+static void sub_81466A0(void);
static void sub_81466E8(u8 taskId, s8 direction);
-// static void sub_8146798(u8 berry);
+static void sub_8146798(u8 berry);
static void sub_8146810(s8 berry);
static void sub_81468BC(void);
@@ -347,7 +347,7 @@ static void sub_8146600(u8 berry)
gUnknown_0203932E[4] = sub_80A7E5C(208);
}
-void sub_81466A0(void)
+static void sub_81466A0(void)
{
u16 i;
@@ -361,105 +361,36 @@ void sub_81466A0(void)
}
}
-__attribute__((naked))
static void sub_81466E8(u8 taskId, s8 direction)
{
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- lsls r1, 24\n\
- lsrs r2, r1, 24\n\
- lsls r0, r7, 2\n\
- adds r0, r7\n\
- lsls r0, 3\n\
- ldr r1, _08146748 @ =gTasks + 0x8\n\
- adds r6, r0, r1\n\
- ldr r4, _0814674C @ =gBagPocketScrollStates\n\
- movs r0, 0xC\n\
- adds r0, r4\n\
- mov r8, r0\n\
- ldrb r1, [r0, 0x1]\n\
- ldrb r0, [r4, 0xC]\n\
- adds r1, r0\n\
- cmp r1, 0\n\
- bne _08146718\n\
- lsls r0, r2, 24\n\
- cmp r0, 0\n\
- blt _0814678C\n\
-_08146718:\n\
- adds r0, r1, 0x1\n\
- lsls r5, r2, 24\n\
- mov r1, r8\n\
- ldrb r1, [r1, 0x2]\n\
- cmp r0, r1\n\
- bne _08146728\n\
- cmp r5, 0\n\
- bgt _0814678C\n\
-_08146728:\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- mov r2, r8\n\
- ldrb r3, [r2, 0x1]\n\
- ldrb r4, [r4, 0xC]\n\
- mov r12, r4\n\
- adds r0, r3, r4\n\
- asrs r2, r5, 24\n\
- adds r1, r0, r2\n\
- cmp r1, 0\n\
- bge _08146750\n\
- negs r0, r0\n\
- strh r0, [r6, 0x2]\n\
- b _08146766\n\
- .align 2, 0\n\
-_08146748: .4byte gTasks + 0x8\n\
-_0814674C: .4byte gBagPocketScrollStates\n\
-_08146750:\n\
- mov r4, r8\n\
- ldrb r0, [r4, 0x2]\n\
- cmp r1, r0\n\
- blt _08146764\n\
- subs r0, r3\n\
- mov r1, r12\n\
- subs r0, r1\n\
- subs r0, 0x1\n\
- strh r0, [r6, 0x2]\n\
- b _08146766\n\
-_08146764:\n\
- strh r2, [r6, 0x2]\n\
-_08146766:\n\
- ldr r0, _08146780 @ =gTasks\n\
- lsls r1, r7, 2\n\
- adds r1, r7\n\
- lsls r1, 3\n\
- adds r1, r0\n\
- ldr r0, _08146784 @ =sub_8146798\n\
- str r0, [r1]\n\
- cmp r5, 0\n\
- bge _08146788\n\
- movs r2, 0x10\n\
- negs r2, r2\n\
- adds r0, r2, 0\n\
- b _0814678A\n\
- .align 2, 0\n\
-_08146780: .4byte gTasks\n\
-_08146784: .4byte sub_8146798\n\
-_08146788:\n\
- movs r0, 0x10\n\
-_0814678A:\n\
- strh r0, [r6]\n\
-_0814678C:\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .syntax divided\n");
+ u8 berryPocket = 3;
+ s16 *data = gTasks[taskId].data;
+
+ if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos == 0
+ && direction < 0)
+ return;
+ if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + 1 == gBagPocketScrollStates[berryPocket].numSlots
+ && direction > 0)
+ return;
+
+ PlaySE(SE_SELECT);
+ if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + direction < 0)
+ data[1] = -(gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos);
+ else if (gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos + direction >= gBagPocketScrollStates[berryPocket].numSlots)
+ data[1] = gBagPocketScrollStates[berryPocket].numSlots - gBagPocketScrollStates[berryPocket].scrollTop - gBagPocketScrollStates[berryPocket].cursorPos - 1;
+ else
+ data[1] = direction;
+
+ gTasks[taskId].func = sub_8146798;
+
+ if (direction < 0)
+ data[0] = -16;
+ else
+ data[0] = 16;
+
}
-void sub_8146798(u8 taskId)
+static void sub_8146798(u8 taskId)
{
s16 *taskData = gTasks[taskId].data;
@@ -478,94 +409,38 @@ void sub_8146798(u8 taskId)
}
}
-__attribute__((naked))
static void sub_8146810(s8 berry)
{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r3, r0, 24\n\
- adds r4, r3, 0\n\
- lsls r0, r3, 24\n\
- asrs r1, r0, 24\n\
- cmp r1, 0\n\
- ble _08146848\n\
- ldr r0, _08146840 @ =gBagPocketScrollStates\n\
- adds r4, r0, 0\n\
- adds r4, 0xC\n\
- ldrb r2, [r0, 0xC]\n\
- adds r1, r2, r1\n\
- adds r6, r0, 0\n\
- cmp r1, 0x7\n\
- ble _08146844\n\
- adds r0, r3, 0\n\
- adds r0, 0xF9\n\
- adds r0, r2, r0\n\
- ldrb r1, [r4, 0x1]\n\
- adds r0, r1\n\
- strb r0, [r4, 0x1]\n\
- movs r0, 0x7\n\
- b _0814686E\n\
- .align 2, 0\n\
-_08146840: .4byte gBagPocketScrollStates\n\
-_08146844:\n\
- adds r0, r2, r3\n\
- b _0814686E\n\
-_08146848:\n\
- ldr r0, _08146868 @ =gBagPocketScrollStates\n\
- adds r5, r0, 0\n\
- adds r5, 0xC\n\
- ldrb r2, [r0, 0xC]\n\
- adds r1, r2, r1\n\
- adds r6, r0, 0\n\
- cmp r1, 0\n\
- bge _0814686C\n\
- adds r0, r2, r3\n\
- ldrb r1, [r5, 0x1]\n\
- adds r0, r1\n\
- movs r1, 0\n\
- strb r0, [r5, 0x1]\n\
- strb r1, [r6, 0xC]\n\
- b _08146870\n\
- .align 2, 0\n\
-_08146868: .4byte gBagPocketScrollStates\n\
-_0814686C:\n\
- adds r0, r2, r4\n\
-_0814686E:\n\
- strb r0, [r6, 0xC]\n\
-_08146870:\n\
- ldr r2, _081468AC @ =gScriptItemId\n\
- movs r0, 0x3\n\
- lsls r0, 2\n\
- adds r0, r6\n\
- ldrb r1, [r0, 0x1]\n\
- ldrb r0, [r0]\n\
- adds r1, r0\n\
- ldr r0, _081468B0 @ =gCurrentBagPocketItemSlots\n\
- ldr r0, [r0]\n\
- lsls r1, 2\n\
- adds r1, r0\n\
- ldrh r0, [r1]\n\
- strh r0, [r2]\n\
- ldr r0, _081468B4 @ =gUnknown_0203932C\n\
- ldrb r1, [r0]\n\
- lsls r0, r1, 4\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- ldr r1, _081468B8 @ =gSprites\n\
- adds r0, r1\n\
- bl DestroySprite\n\
- bl sub_81466A0\n\
- bl sub_80A7DD4\n\
- pop {r4-r6}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_081468AC: .4byte gScriptItemId\n\
-_081468B0: .4byte gCurrentBagPocketItemSlots\n\
-_081468B4: .4byte gUnknown_0203932C\n\
-_081468B8: .4byte gSprites\n\
- .syntax divided\n");
+ u8 berryPocket = 3;
+
+ if (berry > 0)
+ {
+ if (gBagPocketScrollStates[berryPocket].cursorPos + berry > 7)
+ {
+ gBagPocketScrollStates[berryPocket].scrollTop += gBagPocketScrollStates[berryPocket].cursorPos - 7 + berry;
+ gBagPocketScrollStates[berryPocket].cursorPos = 7;
+ }
+ else
+ {
+ gBagPocketScrollStates[berryPocket].cursorPos += berry;
+ }
+ }
+ else
+ {
+ if (gBagPocketScrollStates[berryPocket].cursorPos + berry < 0)
+ {
+ gBagPocketScrollStates[berryPocket].scrollTop += gBagPocketScrollStates[berryPocket].cursorPos + berry;
+ gBagPocketScrollStates[berryPocket].cursorPos = 0;
+ }
+ else
+ {
+ gBagPocketScrollStates[berryPocket].cursorPos += berry;
+ }
+ }
+ gScriptItemId = gCurrentBagPocketItemSlots[gBagPocketScrollStates[berryPocket].scrollTop + gBagPocketScrollStates[berryPocket].cursorPos].itemId;
+ DestroySprite(&gSprites[gUnknown_0203932C]);
+ sub_81466A0();
+ sub_80A7DD4();
}
static void sub_81468BC(void)
diff --git a/src/bike.c b/src/field/bike.c
index 58a4f38f4..8df901b40 100644
--- a/src/bike.c
+++ b/src/field/bike.c
@@ -6,12 +6,10 @@
#include "flags.h"
#include "global.fieldmap.h"
#include "metatile_behavior.h"
-#include "rom4.h"
+#include "overworld.h"
#include "songs.h"
#include "sound.h"
-extern u8 sub_80608A4(u8);
-
extern u8 gUnknown_02039250;
extern u8 gUnknown_02039251;
extern u8 gUnknown_0202E854;
@@ -937,14 +935,14 @@ 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);
- sub_8053FB0(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 b8d7cd386..b11b1ff3a 100644
--- a/src/braille_puzzles.c
+++ b/src/field/braille_puzzles.c
@@ -6,6 +6,7 @@
#include "fieldmap.h"
#include "flags.h"
#include "main.h"
+#include "map_constants.h"
#include "map_obj_lock.h"
#include "menu.h"
#include "rom6.h"
@@ -19,11 +20,13 @@
extern u8 gPlayerPartyCount;
extern u8 gLastFieldPokeMenuOpened;
-extern u8 gIslandCave_EventScript_OpenRegiiceChamber[]; // regiice event script
+extern u8 S_OpenRegiceChamber[]; // regiice event script
bool8 ShouldDoBrailleDigEffect(void)
{
- if (!FlagGet(SYS_BRAILLE_DIG) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x47))
+ if (!FlagGet(SYS_BRAILLE_DIG)
+ && (gSaveBlock1.location.mapGroup == MAP_GROUP_SEALED_CHAMBER_OUTER_ROOM
+ && gSaveBlock1.location.mapNum == MAP_ID_SEALED_CHAMBER_OUTER_ROOM))
{
if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 3)
return TRUE;
@@ -52,10 +55,11 @@ void DoBrailleDigEffect(void)
bool8 CheckRelicanthWailord(void)
{
+ // First comes Relicanth.
if (GetMonData(&gPlayerParty, MON_DATA_SPECIES2, 0) == SPECIES_RELICANTH)
{
CalculatePlayerPartyCount();
-
+ // Last comes Wailord
if (GetMonData(&gPlayerParty[gPlayerPartyCount - 1], MON_DATA_SPECIES2, 0) == SPECIES_WAILORD)
return TRUE;
}
@@ -64,7 +68,7 @@ bool8 CheckRelicanthWailord(void)
bool8 ShouldDoBrailleStrengthEffect(void)
{
- if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x6))
+ if (!FlagGet(SYS_BRAILLE_STRENGTH) && (gSaveBlock1.location.mapGroup == MAP_GROUP_DESERT_RUINS && gSaveBlock1.location.mapNum == MAP_ID_DESERT_RUINS))
{
if (gSaveBlock1.pos.x == 10 && gSaveBlock1.pos.y == 23)
return TRUE;
@@ -94,7 +98,7 @@ void DoBrailleStrengthEffect(void)
bool8 ShouldDoBrailleFlyEffect(void)
{
- if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == 0x18 && gSaveBlock1.location.mapNum == 0x44))
+ if (!FlagGet(SYS_BRAILLE_FLY) && (gSaveBlock1.location.mapGroup == MAP_GROUP_ANCIENT_TOMB && gSaveBlock1.location.mapNum == MAP_ID_ANCIENT_TOMB))
{
if (gSaveBlock1.pos.x == 8 && gSaveBlock1.pos.y == 25)
return TRUE;
@@ -105,8 +109,8 @@ bool8 ShouldDoBrailleFlyEffect(void)
void DoBrailleFlyEffect(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- FieldEffectStart(0x3C);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_FLY_ANCIENT_TOMB);
}
bool8 FldEff_UseFlyAncientTomb(void)
@@ -120,7 +124,7 @@ bool8 FldEff_UseFlyAncientTomb(void)
void UseFlyAncientTomb_Callback(void)
{
- FieldEffectActiveListRemove(0x3C);
+ FieldEffectActiveListRemove(FLDEFF_USE_FLY_ANCIENT_TOMB);
UseFlyAncientTomb_Finish();
}
@@ -158,7 +162,7 @@ void Task_BrailleWait(u8 taskId)
if (BrailleWait_CheckButtonPress() != FALSE)
{
MenuZeroFillScreen();
- PlaySE(5);
+ PlaySE(SE_SELECT);
data[0] = 2;
}
else
@@ -191,7 +195,7 @@ void Task_BrailleWait(u8 taskId)
break;
case 4:
sub_8064E2C();
- ScriptContext1_SetupScript(gIslandCave_EventScript_OpenRegiiceChamber);
+ ScriptContext1_SetupScript(S_OpenRegiceChamber);
DestroyTask(taskId);
break;
}
@@ -199,14 +203,14 @@ void Task_BrailleWait(u8 taskId)
bool32 BrailleWait_CheckButtonPress(void)
{
- u16 var = 0xFF;
+ u16 keyMask = A_BUTTON | B_BUTTON | START_BUTTON | SELECT_BUTTON | DPAD_ANY;
- if (gSaveBlock2.optionsButtonMode == 1)
- var |= 0x300;
- if (gSaveBlock2.optionsButtonMode == 2)
- var |= 0x200;
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR)
+ keyMask |= L_BUTTON | R_BUTTON;
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A)
+ keyMask |= L_BUTTON;
- if ((var & gMain.newKeys) != FALSE)
+ if (gMain.newKeys & keyMask)
return TRUE;
else
return FALSE;
diff --git a/src/choose_party.c b/src/field/choose_party.c
index d8df44028..9cdf63fc8 100644
--- a/src/choose_party.c
+++ b/src/field/choose_party.c
@@ -6,9 +6,10 @@
#include "name_string_util.h"
#include "palette.h"
#include "party_menu.h"
+#include "pokemon_menu.h"
#include "pokemon.h"
#include "pokemon_summary_screen.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
@@ -50,10 +51,8 @@ extern void PartyMenuPrintMonsLevelOrStatus(void);
extern void PrintPartyMenuMonNicknames(void);
extern void sub_806BC3C(u8, u8);
extern u8 sub_806B58C(u8);
-extern void sub_806D538();
extern u16 sub_806BE38();
extern u8 sub_806CA38();
-extern void sub_808B5B4();
extern TaskFunc PartyMenuGetPopupMenuFunc(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, u8);
extern u8 sub_806B124();
extern void sub_806C994();
@@ -84,8 +83,6 @@ extern void PartyMenuDoPutNicknameTilemap(u16, u8, u8, u8, const u8 *);
extern void box_print(u8, int, const u8 *);
extern void sub_806BCE8(void);
extern void sub_806E750(u8, const struct PartyPopupMenu *, const struct PartyMenuItem *, int);
-extern u16 sub_806BD80();
-extern void sub_806BF74();
static void ClearPartySelection(void);
static bool8 IsMonAllowedInBattleTower(struct Pokemon *);
@@ -211,11 +208,10 @@ bool8 sub_8121E78(void)
return FALSE;
}
-#ifdef NONMATCHING
static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn)
{
- u16 r3;
- s32 i;
+ u16 species;
+ s32 i = 0;
if (GetMonData(pkmn, MON_DATA_IS_EGG))
return FALSE;
@@ -232,97 +228,16 @@ static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn)
&& GetMonData(pkmn, MON_DATA_LEVEL) > 50)
return FALSE;
- r3 = GetMonData(pkmn, MON_DATA_SPECIES);
- // Can't stop the compiler from optimizing out the first index
- for (i = 0; gBattleTowerBanlist[i] != 0xFFFF; i++)
+ // Check if the pkmn is in the ban list
+ species = GetMonData(pkmn, MON_DATA_SPECIES);
+ while (gBattleTowerBanlist[i] != 0xFFFF)
{
- if (gBattleTowerBanlist[i] == r3)
+ if (gBattleTowerBanlist[i] == species)
return FALSE;
+ i++;
}
return TRUE;
}
-#else
-__attribute__((naked))
-static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn)
-{
- asm_unified(
- "push {r4,lr}\n\
- adds r4, r0, 0\n\
- movs r1, 0x2D\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- bne _0812207C\n\
- ldr r0, _08122058 @ =0x0201b000\n\
- ldr r1, _0812205C @ =0x00000263\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- bne _08122060\n\
- adds r0, r4, 0\n\
- movs r1, 0x39\n\
- bl GetMonData\n\
- cmp r0, 0\n\
- beq _0812207C\n\
- b _081220B6\n\
- .align 2, 0\n\
-_08122058: .4byte 0x0201b000\n\
-_0812205C: .4byte 0x00000263\n\
-_08122060:\n\
- ldr r0, _08122080 @ =gSaveBlock2\n\
- ldr r1, _08122084 @ =0x00000554\n\
- adds r0, r1\n\
- ldrb r1, [r0]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _08122088\n\
- adds r0, r4, 0\n\
- movs r1, 0x38\n\
- bl GetMonData\n\
- cmp r0, 0x32\n\
- bls _08122088\n\
-_0812207C:\n\
- movs r0, 0\n\
- b _081220B8\n\
- .align 2, 0\n\
-_08122080: .4byte gSaveBlock2\n\
-_08122084: .4byte 0x00000554\n\
-_08122088:\n\
- adds r0, r4, 0\n\
- movs r1, 0xB\n\
- bl GetMonData\n\
- lsls r0, 16\n\
- lsrs r3, r0, 16\n\
- ldr r1, _081220C0 @ =gBattleTowerBanlist\n\
- movs r0, 0\n\
- lsls r0, 1\n\
- adds r2, r0, r1\n\
- ldrh r0, [r2]\n\
- ldr r1, _081220C4 @ =0x0000ffff\n\
- cmp r0, r1\n\
- beq _081220B6\n\
- adds r4, r1, 0\n\
- adds r1, r2, 0\n\
-_081220A8:\n\
- ldrh r0, [r1]\n\
- cmp r0, r3\n\
- beq _0812207C\n\
- adds r1, 0x2\n\
- ldrh r0, [r1]\n\
- cmp r0, r4\n\
- bne _081220A8\n\
-_081220B6:\n\
- movs r0, 0x1\n\
-_081220B8:\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_081220C0: .4byte gBattleTowerBanlist\n\
-_081220C4: .4byte 0x0000ffff\n"
- );
-}
-#endif
static u8 sub_81220C8(void)
{
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/field/daycare.c b/src/field/daycare.c
new file mode 100644
index 000000000..591b5b188
--- /dev/null
+++ b/src/field/daycare.c
@@ -0,0 +1,1690 @@
+#include "global.h"
+#include "daycare.h"
+#include "pokemon.h"
+#include "event_data.h"
+#include "species.h"
+#include "items.h"
+#include "text.h"
+#include "string_util.h"
+#include "mail_data.h"
+#include "name_string_util.h"
+#include "pokemon_storage_system.h"
+#include "rng.h"
+#include "moves.h"
+#include "trade.h"
+#include "strings2.h"
+#include "data/pokemon/egg_moves.h"
+#include "party_menu.h"
+#include "field_effect.h"
+#include "main.h"
+#include "menu.h"
+#include "sound.h"
+#include "songs.h"
+#include "script.h"
+#include "overworld.h"
+
+IWRAM_DATA u16 gUnknown_03000470[52];
+IWRAM_DATA u16 gUnknown_030004D8[4];
+IWRAM_DATA u16 gUnknown_030004E0[4];
+IWRAM_DATA u16 gUnknown_030004E8[12];
+IWRAM_DATA u16 gUnknown_03000500[4];
+
+static void sub_80417F4(struct DayCareMail *);
+static void sub_80420FC(struct Pokemon *, u16, struct DayCareData *);
+static u8 daycare_relationship_score(struct DayCareData *);
+
+const u8 *const gUnknown_08209AC4[] = {
+ DaycareText_GetAlongVeryWell,
+ DaycareText_GetAlong,
+ DaycareText_DontLikeOther,
+ DaycareText_PlayOther
+};
+
+const u8 gUnknown_08209AD4[] = _("タマゴ");
+
+u8 *GetMonNick(struct Pokemon *mon, u8 *dest)
+{
+ s8 nickname[POKEMON_NAME_LENGTH * 2];
+
+ GetMonData(mon, MON_DATA_NICKNAME, nickname);
+ return StringCopy10(dest, nickname);
+}
+
+u8 *GetBoxMonNick(struct BoxPokemon *mon, u8 *dest)
+{
+ s8 nickname[POKEMON_NAME_LENGTH * 2];
+
+ GetBoxMonData(mon, MON_DATA_NICKNAME, nickname);
+ return StringCopy10(dest, nickname);
+}
+
+u8 Daycare_CountPokemon(struct DayCareData *daycare_data)
+{
+ u8 i, count;
+ count = 0;
+
+ for(i = 0;i <= 1;i++)
+ if(GetBoxMonData(&daycare_data->mons[i], MON_DATA_SPECIES) != 0)
+ count++;
+
+ return count;
+}
+
+void sub_8041324(struct BoxPokemon * box_pokemon, struct RecordMixingDayCareMail * daycareMailEtc)
+{
+ u8 i;
+ u8 specCount;
+ specCount = 0;
+ for (i=0; i<2; i++)
+ {
+ if (GetBoxMonData(&box_pokemon[i], MON_DATA_SPECIES) != SPECIES_NONE)
+ {
+ specCount ++;
+ if (GetBoxMonData(&box_pokemon[i], MON_DATA_HELD_ITEM) == ITEM_NONE)
+ {
+ daycareMailEtc->unk74[i] = 0;
+ } else
+ {
+ daycareMailEtc->unk74[i] = 1;
+ }
+ } else
+ {
+ daycareMailEtc->unk74[i] = 1;
+ }
+ }
+ daycareMailEtc->unk70 = specCount;
+}
+
+static s8 Daycare_FindEmptySpot(struct BoxPokemon * daycare_data)
+{
+ u8 i;
+
+ for(i = 0;i <= 1;i++)
+ if(GetBoxMonData(daycare_data + i, MON_DATA_SPECIES) == 0)
+ return i;
+
+ return -1;
+}
+
+static void Daycare_SendPokemon(struct Pokemon * mon, struct DayCareData * daycare_data)
+{
+ s8 empty_slot;
+ u8 mail;
+ u8 *names;
+
+ empty_slot = Daycare_FindEmptySpot(daycare_data->mons);
+ if(MonHasMail(mon)) {
+ StringCopy((names = daycare_data->misc.mail[empty_slot].names), gSaveBlock2.playerName);
+ PadNameString(names, 0xFC);
+ names += 8;
+ GetMonNick(mon, names);
+ mail = GetMonData(mon, MON_DATA_MAIL);
+ daycare_data->misc.mail[empty_slot].message = gSaveBlock1.mail[mail];
+ TakeMailFromMon(mon);
+ }
+ daycare_data->mons[empty_slot] = mon->box;
+ BoxMonRestorePP(&daycare_data->mons[empty_slot]);
+ daycare_data->misc.countersEtc.steps[empty_slot] = 0;
+ ZeroMonData(mon);
+ party_compaction();
+ CalculatePlayerPartyCount();
+}
+
+void Daycare_SendPokemon_Special()
+{
+ Daycare_SendPokemon(gPlayerParty + gLastFieldPokeMenuOpened, &gSaveBlock1.daycareData);
+}
+
+static void sub_80414C0(struct DayCareData * daycare_data)
+{
+ if((GetBoxMonData(&daycare_data->mons[1], MON_DATA_SPECIES) != 0) && GetBoxMonData(&daycare_data->mons[0], MON_DATA_SPECIES) == 0)
+ {
+ daycare_data->mons[0] = daycare_data->mons[1];
+ ZeroBoxMonData(&daycare_data->mons[1]);
+ daycare_data->misc.mail[0] = daycare_data->misc.mail[1];
+ daycare_data->misc.countersEtc.steps[0] = daycare_data->misc.countersEtc.steps[1];
+ daycare_data->misc.countersEtc.steps[1] = 0;
+ sub_80417F4(&daycare_data->misc.mail[1]);
+ }
+}
+
+u8 TryIncrementMonLevel(struct Pokemon *);
+extern u16 gMoveToLearn;
+
+static void DayCare_LevelUpMoves(struct Pokemon * mon)
+{
+ s32 i;
+ u8 r6;
+ u16 temp;
+
+ for (i = 0; i < MAX_LEVEL; i++)
+ {
+ if (TryIncrementMonLevel(mon))
+ {
+ r6 = 1;
+ while ((temp = MonTryLearningNewMove(mon, r6)) != 0)
+ {
+ r6 = 0;
+ if (temp == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(mon, gMoveToLearn);
+ }
+ }
+ else
+ break;
+ }
+
+ CalculateMonStats(mon);
+}
+
+static u16 sub_8041570(struct DayCareData * daycare_data, u8 slot)
+{
+ u16 species;
+ u32 experience;
+ struct Pokemon pokemon;
+
+ GetBoxMonNick(&daycare_data->mons[slot], gStringVar1);
+ species = GetBoxMonData(&daycare_data->mons[slot], MON_DATA_SPECIES);
+ sub_803B4B4(&daycare_data->mons[slot], &pokemon);
+ if (GetMonData(&pokemon, MON_DATA_LEVEL) != MAX_LEVEL)
+ {
+ experience = GetMonData(&pokemon, MON_DATA_EXP) + daycare_data->misc.countersEtc.steps[slot];
+ SetMonData(&pokemon, MON_DATA_EXP, (u8 *)&experience);
+ DayCare_LevelUpMoves(&pokemon);
+ }
+ gPlayerParty[PARTY_SIZE - 1] = pokemon;
+ if (daycare_data->misc.mail[slot].message.itemId)
+ {
+ GiveMailToMon2(&gPlayerParty[PARTY_SIZE - 1], &daycare_data->misc.mail[slot].message);
+ sub_80417F4(&daycare_data->misc.mail[slot]);
+ }
+ party_compaction();
+ ZeroBoxMonData(&daycare_data->mons[slot]);
+ daycare_data->misc.countersEtc.steps[slot] = 0;
+ sub_80414C0(daycare_data);
+ CalculatePlayerPartyCount();
+ return species;
+}
+
+u16 sub_8041648()
+{
+ return sub_8041570(&gSaveBlock1.daycareData, gSpecialVar_0x8004);
+}
+
+u8 Daycare_GetLevelAfterSteps(struct BoxPokemon * mon, u32 steps){
+ struct BoxPokemon temp = *mon;
+ u32 new_exp = GetBoxMonData(mon, MON_DATA_EXP) + steps;
+ SetBoxMonData(&temp, MON_DATA_EXP, (u8 *) &new_exp);
+ return GetLevelFromBoxMonExp(&temp);
+}
+
+static u8 sub_80416A0(struct DayCareData *daycareData, u8 slot)
+{
+ u8 levelBefore;
+ u8 levelAfter;
+
+ levelBefore = GetLevelFromBoxMonExp(&daycareData->mons[slot]);
+ levelAfter = Daycare_GetLevelAfterSteps(&daycareData->mons[slot], daycareData->misc.countersEtc.steps[slot]);
+ return levelAfter - levelBefore;
+}
+
+static u8 sub_80416E8(struct DayCareData *dayCareData, u8 slot)
+{
+ u8 levelDelta = sub_80416A0(dayCareData, slot);
+ GetBoxMonNick(&dayCareData->mons[slot], gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, levelDelta, STR_CONV_MODE_LEFT_ALIGN, 2);
+ return levelDelta;
+}
+
+static u16 sub_8041728(struct DayCareData *dayCareData, u8 slot)
+{
+ u16 cost;
+
+ u8 levelDelta = sub_80416A0(dayCareData, slot);
+ GetBoxMonNick(&dayCareData->mons[slot], gStringVar1);
+ cost = 100 + 100 * levelDelta;
+ ConvertIntToDecimalStringN(gStringVar2, cost, STR_CONV_MODE_LEFT_ALIGN, 5);
+ return cost;
+}
+
+void sub_8041770(void)
+{
+ gSpecialVar_0x8005 = sub_8041728(&gSaveBlock1.daycareData, gSpecialVar_0x8004);
+}
+
+void sub_8041790(u16 i)
+{
+ gSaveBlock1.daycareData.misc.countersEtc.steps[0] += i;
+ gSaveBlock1.daycareData.misc.countersEtc.steps[1] += i;
+}
+
+u8 sub_80417B8(void)
+{
+ if (GetBoxMonData(&gSaveBlock1.daycareData.mons[gSpecialVar_0x8004], MON_DATA_SPECIES) != 0)
+ return sub_80416E8(&gSaveBlock1.daycareData, gSpecialVar_0x8004);
+ return 0;
+}
+
+static void sub_80417F4(struct DayCareMail *mail)
+{
+ u8 zero;
+ u8 *names;
+ u8 *names2;
+ int i;
+ zero = 0;
+ for (i = 7, names = mail->names + 7; i >= 0; i --)
+ *names-- = zero;
+ names2 = mail->names + 8;
+ zero = 0;
+ names = mail->names + 18;
+ do *names-- = zero; while ((int)names >= (int)names2);
+ ClearMailStruct(&mail->message);
+}
+
+void unref_sub_8041824(struct DayCareData *dayCareData)
+{
+ u8 slot;
+ for (slot = 0; slot < ARRAY_COUNT(dayCareData->mons); slot ++)
+ {
+ ZeroBoxMonData(&dayCareData->mons[slot]);
+ dayCareData->misc.countersEtc.steps[slot] = 0;
+ sub_80417F4(&dayCareData->misc.mail[slot]);
+ }
+ dayCareData->misc.countersEtc.personalityLo = 0;
+ dayCareData->misc.countersEtc.unk_11a = 0;
+}
+
+u16 sub_8041870(u16 species)
+{
+ int i, j, k;
+ bool8 found;
+ for (i = 0; i < 5; i ++)
+ {
+ found = FALSE;
+ for (j = 1; j < NUM_SPECIES; j ++)
+ {
+ for (k = 0; k < 5; k ++)
+ {
+ if (gEvolutionTable[j].evolutions[k].targetSpecies == species)
+ {
+ species = j;
+ found = TRUE;
+ break;
+ }
+ }
+ if (found)
+ break;
+ }
+ if (j == 412)
+ break;
+ }
+ return species;
+}
+
+static void sub_80418F0(struct DayCareData *dayCareData)
+{
+ dayCareData->misc.countersEtc.personalityLo = (Random() % 0xfffe) + 1;
+ FlagSet(0x86);
+}
+
+static void sub_804191C(struct DayCareData *dayCareData)
+{
+ dayCareData->misc.countersEtc.personalityLo = Random() | 0x8000;
+ FlagSet(0x86);
+}
+
+void sub_8041940(void)
+{
+ sub_80418F0(&gSaveBlock1.daycareData);
+}
+
+void sub_8041950(void)
+{
+ sub_804191C(&gSaveBlock1.daycareData);
+}
+
+static void sub_8041960(u8 *data, u8 idx)
+{
+ int i, j;
+ u8 temp[6];
+ data[idx] = 0xff;
+ for (i = 0; i < 6; i ++)
+ temp[i] = data[i];
+ j = 0;
+ for (i = 0; i < 6; i ++)
+ if (temp[i] != 0xff)
+ data[j++] = temp[i];
+}
+
+static void InheritIVs(struct Pokemon *egg, struct DayCareData *dayCareData)
+{
+ u8 i;
+ u8 selectedIvs[3];
+ u8 allIvs[6];
+ u8 whichParent[3];
+ u8 iv;
+ for (i = 0; i < 6; i ++)
+ allIvs[i] = i;
+ for (i = 0; i < 3; i ++)
+ {
+ selectedIvs[i] = allIvs[Random() % (6 - i)];
+ sub_8041960(allIvs, selectedIvs[i]);
+ }
+ for (i = 0; i < 3; i ++)
+ whichParent[i] = Random() % 2;
+ for (i = 0; i < 3; i ++)
+ {
+ switch (selectedIvs[i])
+ {
+ case 0:
+ iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_HP_IV);
+ SetMonData(egg, MON_DATA_HP_IV, &iv);
+ break;
+ case 1:
+ iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_ATK_IV);
+ SetMonData(egg, MON_DATA_ATK_IV, &iv);
+ break;
+ case 2:
+ iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_DEF_IV);
+ SetMonData(egg, MON_DATA_DEF_IV, &iv);
+ break;
+ case 3:
+ iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPD_IV);
+ SetMonData(egg, MON_DATA_SPD_IV, &iv);
+ break;
+ case 4:
+ iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPATK_IV);
+ SetMonData(egg, MON_DATA_SPATK_IV, &iv);
+ break;
+ case 5:
+ iv = GetBoxMonData(&dayCareData->mons[whichParent[i]], MON_DATA_SPDEF_IV);
+ SetMonData(egg, MON_DATA_SPDEF_IV, &iv);
+ break;
+ }
+ }
+}
+
+#ifdef NONMATCHING
+static
+#endif
+u8 pokemon_get_eggmoves(struct Pokemon *pokemon, u16 *eggMoves)
+{
+ u16 eggMoveIdx;
+ u16 numMovesFound;
+ u16 species;
+ u16 i;
+
+ numMovesFound = 0;
+ eggMoveIdx = 0;
+ species = GetMonData(pokemon, MON_DATA_SPECIES);
+ for (i = 0; i < ARRAY_COUNT(gEggMoves) - 1; i ++)
+ {
+ if (gEggMoves[i] == species + EGG_MOVES_SPECIES_OFFSET)
+ {
+ eggMoveIdx = i + 1;
+ break;
+ }
+ }
+ for (i = 0; i < 10; i ++)
+ {
+ if (gEggMoves[eggMoveIdx + i] > EGG_MOVES_SPECIES_OFFSET)
+ {
+ break;
+ }
+ eggMoves[i] = gEggMoves[eggMoveIdx + i];
+ numMovesFound++;
+ }
+ return numMovesFound;
+}
+
+#ifdef NONMATCHING
+
+void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom)
+{
+ u16 numSharedParentMoves;
+ u8 numLevelUpMoves;
+ u8 numEggMoves;
+ u16 i, j;
+
+ numSharedParentMoves = 0;
+ for (i = 0; i < 4; i ++)
+ {
+ gUnknown_03000500[i] = 0;
+ gUnknown_030004D8[i] = 0;
+ gUnknown_030004E0[i] = 0;
+ }
+ for (i = 0; i < 10; i ++)
+ gUnknown_030004E8[i] = 0;
+ for (i = 0; i < 50; i ++)
+ gUnknown_03000470[i] = 0;
+
+ numLevelUpMoves = GetLevelUpMovesBySpecies(GetMonData(egg, MON_DATA_SPECIES), gUnknown_03000470);
+ for (i = 0; i < 4; i ++)
+ {
+ gUnknown_030004D8[i] = GetBoxMonData(dad, MON_DATA_MOVE1 + i);
+ gUnknown_03000500[i] = GetBoxMonData(mom, MON_DATA_MOVE1 + i);
+ }
+ numEggMoves = pokemon_get_eggmoves(egg, gUnknown_030004E8);
+
+ for (i = 0; i < 4; i ++)
+ {
+ if (gUnknown_030004D8[i] != MOVE_NONE)
+ {
+ for (j = 0; j < numEggMoves; j ++)
+ {
+ if (gUnknown_030004D8[i] == gUnknown_030004E8[j])
+ {
+ if (GiveMoveToMon(egg, gUnknown_030004D8[i]) == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004D8[i]);
+ break;
+ }
+ }
+ }
+ else
+ break;
+ }
+ for (i = 0; i < 4; i ++)
+ {
+ if (gUnknown_030004D8[i] != MOVE_NONE)
+ {
+ for (j = 0; j < 50 + 8; j ++)
+ {
+ if (gUnknown_030004D8[i] == ItemIdToBattleMoveId(ITEM_TM01 + j) && CanMonLearnTMHM(egg, j))
+ {
+ if (GiveMoveToMon(egg, gUnknown_030004D8[i]) == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004D8[i]);
+ }
+ }
+ }
+ }
+ for (i = 0; i < 4; i ++)
+ {
+ if (gUnknown_030004D8[i] == MOVE_NONE)
+ break;
+ for (j = 0; j < 4; j ++)
+ {
+ if (gUnknown_030004D8[i] == gUnknown_03000500[j] && gUnknown_030004D8[i] != MOVE_NONE)
+ gUnknown_030004E0[numSharedParentMoves++] = gUnknown_030004D8[i];
+ }
+ }
+ for (i = 0; i < 4; i ++)
+ {
+ if (gUnknown_030004E0[i] == MOVE_NONE)
+ break;
+ for (j = 0; j < numLevelUpMoves; j ++)
+ {
+ if (gUnknown_03000470[j] != MOVE_NONE && gUnknown_030004E0[i] == gUnknown_03000470[j])
+ {
+ if (GiveMoveToMon(egg, gUnknown_030004E0[i]) == 0xffff)
+ DeleteFirstMoveAndGiveMoveToMon(egg, gUnknown_030004E0[i]);
+ break;
+ }
+ }
+ }
+}
+#else
+__attribute__((naked))
+void daycare_build_child_moveset(struct Pokemon *egg, struct BoxPokemon *dad, struct BoxPokemon *mom)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0xC\n"
+ "\tadds r7, r0, 0\n"
+ "\tmov r10, r1\n"
+ "\tmov r9, r2\n"
+ "\tmovs r0, 0\n"
+ "\tstr r0, [sp]\n"
+ "\tmovs r6, 0\n"
+ "\tldr r5, _08041CC8 @ =gUnknown_03000500\n"
+ "\tmovs r2, 0\n"
+ "\tldr r4, _08041CCC @ =gUnknown_030004D8\n"
+ "\tldr r3, _08041CD0 @ =gUnknown_030004E0\n"
+ "_08041BE4:\n"
+ "\tlsls r1, r6, 1\n"
+ "\tadds r0, r1, r5\n"
+ "\tstrh r2, [r0]\n"
+ "\tadds r0, r1, r4\n"
+ "\tstrh r2, [r0]\n"
+ "\tadds r1, r3\n"
+ "\tstrh r2, [r1]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x3\n"
+ "\tbls _08041BE4\n"
+ "\tmovs r6, 0\n"
+ "\tldr r2, _08041CD4 @ =gUnknown_030004E8\n"
+ "\tmovs r1, 0\n"
+ "_08041C02:\n"
+ "\tlsls r0, r6, 1\n"
+ "\tadds r0, r2\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x9\n"
+ "\tbls _08041C02\n"
+ "\tmovs r6, 0\n"
+ "\tldr r2, _08041CD8 @ =gUnknown_03000470\n"
+ "\tmovs r1, 0\n"
+ "_08041C18:\n"
+ "\tlsls r0, r6, 1\n"
+ "\tadds r0, r2\n"
+ "\tstrh r1, [r0]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x31\n"
+ "\tbls _08041C18\n"
+ "\tadds r0, r7, 0\n"
+ "\tmovs r1, 0xB\n"
+ "\tbl GetMonData\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r1, _08041CD8 @ =gUnknown_03000470\n"
+ "\tbl GetLevelUpMovesBySpecies\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tmovs r6, 0\n"
+ "\tldr r1, _08041CCC @ =gUnknown_030004D8\n"
+ "\tmov r8, r1\n"
+ "_08041C46:\n"
+ "\tadds r5, r6, 0\n"
+ "\tadds r5, 0xD\n"
+ "\tmov r0, r10\n"
+ "\tadds r1, r5, 0\n"
+ "\tbl GetBoxMonData\n"
+ "\tlsls r4, r6, 1\n"
+ "\tmov r2, r8\n"
+ "\tadds r1, r4, r2\n"
+ "\tstrh r0, [r1]\n"
+ "\tmov r0, r9\n"
+ "\tadds r1, r5, 0\n"
+ "\tbl GetBoxMonData\n"
+ "\tldr r1, _08041CC8 @ =gUnknown_03000500\n"
+ "\tadds r4, r1\n"
+ "\tstrh r0, [r4]\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x3\n"
+ "\tbls _08041C46\n"
+ "\tldr r1, _08041CD4 @ =gUnknown_030004E8\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl pokemon_get_eggmoves\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tmov r8, r0\n"
+ "\tmovs r6, 0\n"
+ "_08041C82:\n"
+ "\tldr r0, _08041CCC @ =gUnknown_030004D8\n"
+ "\tlsls r1, r6, 1\n"
+ "\tadds r2, r1, r0\n"
+ "\tldrh r1, [r2]\n"
+ "\tmov r9, r0\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _08041CF8\n"
+ "\tmovs r5, 0\n"
+ "\tcmp r5, r8\n"
+ "\tbcs _08041CEA\n"
+ "\tadds r4, r2, 0\n"
+ "\tldr r2, _08041CDC @ =0x0000ffff\n"
+ "_08041C9A:\n"
+ "\tldr r0, _08041CD4 @ =gUnknown_030004E8\n"
+ "\tlsls r1, r5, 1\n"
+ "\tadds r1, r0\n"
+ "\tldrh r0, [r4]\n"
+ "\tldrh r1, [r1]\n"
+ "\tcmp r0, r1\n"
+ "\tbne _08041CE0\n"
+ "\tadds r1, r0, 0\n"
+ "\tadds r0, r7, 0\n"
+ "\tstr r2, [sp, 0x8]\n"
+ "\tbl GiveMoveToMon\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r2, [sp, 0x8]\n"
+ "\tcmp r0, r2\n"
+ "\tbne _08041CEA\n"
+ "\tldrh r1, [r4]\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl DeleteFirstMoveAndGiveMoveToMon\n"
+ "\tb _08041CEA\n"
+ "\t.align 2, 0\n"
+ "_08041CC8: .4byte gUnknown_03000500\n"
+ "_08041CCC: .4byte gUnknown_030004D8\n"
+ "_08041CD0: .4byte gUnknown_030004E0\n"
+ "_08041CD4: .4byte gUnknown_030004E8\n"
+ "_08041CD8: .4byte gUnknown_03000470\n"
+ "_08041CDC: .4byte 0x0000ffff\n"
+ "_08041CE0:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, r8\n"
+ "\tbcc _08041C9A\n"
+ "_08041CEA:\n"
+ "\tadds r0, r6, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tldr r3, _08041E14 @ =gUnknown_030004D8\n"
+ "\tmov r9, r3\n"
+ "\tcmp r6, 0x3\n"
+ "\tbls _08041C82\n"
+ "_08041CF8:\n"
+ "\tmovs r6, 0\n"
+ "_08041CFA:\n"
+ "\tlsls r0, r6, 1\n"
+ "\tmov r2, r9\n"
+ "\tadds r1, r0, r2\n"
+ "\tldrh r1, [r1]\n"
+ "\tadds r2, r0, 0\n"
+ "\tadds r6, 0x1\n"
+ "\tmov r8, r6\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _08041D5C\n"
+ "\tmovs r5, 0\n"
+ "\tldr r0, _08041E14 @ =gUnknown_030004D8\n"
+ "\tadds r4, r2, r0\n"
+ "\tldr r6, _08041E18 @ =0x0000ffff\n"
+ "\tmov r9, r0\n"
+ "_08041D16:\n"
+ "\tldr r3, _08041E1C @ =0x00000121\n"
+ "\tadds r0, r5, r3\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tbl ItemIdToBattleMoveId\n"
+ "\tldrh r1, [r4]\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r1, r0\n"
+ "\tbne _08041D52\n"
+ "\tlsls r1, r5, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl CanMonLearnTMHM\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08041D52\n"
+ "\tldrh r1, [r4]\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl GiveMoveToMon\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tcmp r0, r6\n"
+ "\tbne _08041D52\n"
+ "\tldrh r1, [r4]\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl DeleteFirstMoveAndGiveMoveToMon\n"
+ "_08041D52:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, 0x39\n"
+ "\tbls _08041D16\n"
+ "_08041D5C:\n"
+ "\tmov r1, r8\n"
+ "\tlsls r0, r1, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x3\n"
+ "\tbls _08041CFA\n"
+ "\tmovs r6, 0\n"
+ "\tmov r2, r9\n"
+ "\tldrh r0, [r2]\n"
+ "\tldr r3, _08041E20 @ =gUnknown_030004E0\n"
+ "\tmov r10, r3\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08041DC6\n"
+ "\tmov r4, r9\n"
+ "\tldr r0, _08041E24 @ =gUnknown_03000500\n"
+ "\tmov r9, r0\n"
+ "\tmov r12, r10\n"
+ "_08041D7C:\n"
+ "\tmovs r5, 0\n"
+ "\tlsls r2, r6, 1\n"
+ "\tadds r6, 0x1\n"
+ "\tmov r8, r6\n"
+ "\tadds r3, r2, r4\n"
+ "_08041D86:\n"
+ "\tlsls r0, r5, 1\n"
+ "\tadd r0, r9\n"
+ "\tldrh r2, [r3]\n"
+ "\tadds r1, r2, 0\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r1, r0\n"
+ "\tbne _08041DA8\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _08041DA8\n"
+ "\tldr r1, [sp]\n"
+ "\tadds r0, r1, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tstr r0, [sp]\n"
+ "\tlsls r1, 1\n"
+ "\tadd r1, r12\n"
+ "\tstrh r2, [r1]\n"
+ "_08041DA8:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tcmp r5, 0x3\n"
+ "\tbls _08041D86\n"
+ "\tmov r1, r8\n"
+ "\tlsls r0, r1, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x3\n"
+ "\tbhi _08041DC6\n"
+ "\tlsls r0, r6, 1\n"
+ "\tadds r0, r4\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08041D7C\n"
+ "_08041DC6:\n"
+ "\tmovs r6, 0\n"
+ "\tmov r2, r10\n"
+ "\tldrh r0, [r2]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08041E50\n"
+ "_08041DD0:\n"
+ "\tmovs r5, 0\n"
+ "\tadds r3, r6, 0x1\n"
+ "\tmov r8, r3\n"
+ "\tldr r0, [sp, 0x4]\n"
+ "\tcmp r5, r0\n"
+ "\tbcs _08041E38\n"
+ "\tldr r2, _08041E18 @ =0x0000ffff\n"
+ "_08041DDE:\n"
+ "\tldr r1, _08041E28 @ =gUnknown_03000470\n"
+ "\tlsls r0, r5, 1\n"
+ "\tadds r0, r1\n"
+ "\tldrh r1, [r0]\n"
+ "\tcmp r1, 0\n"
+ "\tbeq _08041E2C\n"
+ "\tlsls r0, r6, 1\n"
+ "\tmov r3, r10\n"
+ "\tadds r4, r0, r3\n"
+ "\tldrh r0, [r4]\n"
+ "\tcmp r0, r1\n"
+ "\tbne _08041E2C\n"
+ "\tadds r1, r0, 0\n"
+ "\tadds r0, r7, 0\n"
+ "\tstr r2, [sp, 0x8]\n"
+ "\tbl GiveMoveToMon\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tldr r2, [sp, 0x8]\n"
+ "\tcmp r0, r2\n"
+ "\tbne _08041E38\n"
+ "\tldrh r1, [r4]\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl DeleteFirstMoveAndGiveMoveToMon\n"
+ "\tb _08041E38\n"
+ "\t.align 2, 0\n"
+ "_08041E14: .4byte gUnknown_030004D8\n"
+ "_08041E18: .4byte 0x0000ffff\n"
+ "_08041E1C: .4byte 0x00000121\n"
+ "_08041E20: .4byte gUnknown_030004E0\n"
+ "_08041E24: .4byte gUnknown_03000500\n"
+ "_08041E28: .4byte gUnknown_03000470\n"
+ "_08041E2C:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r5, r0, 16\n"
+ "\tldr r0, [sp, 0x4]\n"
+ "\tcmp r5, r0\n"
+ "\tbcc _08041DDE\n"
+ "_08041E38:\n"
+ "\tmov r1, r8\n"
+ "\tlsls r0, r1, 16\n"
+ "\tlsrs r6, r0, 16\n"
+ "\tcmp r6, 0x3\n"
+ "\tbhi _08041E50\n"
+ "\tldr r0, _08041E60 @ =gUnknown_030004E0\n"
+ "\tlsls r1, r6, 1\n"
+ "\tadds r1, r0\n"
+ "\tldrh r1, [r1]\n"
+ "\tmov r10, r0\n"
+ "\tcmp r1, 0\n"
+ "\tbne _08041DD0\n"
+ "_08041E50:\n"
+ "\tadd sp, 0xC\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_08041E60: .4byte gUnknown_030004E0");
+}
+#endif
+
+static void RemoveEggFromDayCare(struct DayCareData *dayCareData)
+{
+ dayCareData->misc.countersEtc.personalityLo = 0;
+ dayCareData->misc.countersEtc.unk_11a = 0;
+}
+
+void sub_8041E7C(void)
+{
+ RemoveEggFromDayCare(&gSaveBlock1.daycareData);
+}
+
+static void incense_effects(u16 *species, struct DayCareData *dayCareData)
+{
+ u16 momItem, dadItem;
+ if (*species == SPECIES_WYNAUT || *species == SPECIES_AZURILL)
+ {
+ momItem = GetBoxMonData(&dayCareData->mons[0], MON_DATA_HELD_ITEM);
+ dadItem = GetBoxMonData(&dayCareData->mons[1], MON_DATA_HELD_ITEM);
+ if (*species == SPECIES_WYNAUT && momItem != ITEM_LAX_INCENSE && dadItem != ITEM_LAX_INCENSE)
+ {
+ *species = SPECIES_WOBBUFFET;
+ }
+ if (*species == SPECIES_AZURILL && momItem != ITEM_SEA_INCENSE && dadItem != ITEM_SEA_INCENSE)
+ {
+ *species = SPECIES_MARILL;
+ }
+ }
+}
+
+static u16 sub_8041EEC(struct DayCareData *dayCareData, u8 *a1) // inherit_species_from_mom
+{
+ u16 i;
+ u16 species[2];
+ u16 eggSpecies;
+ u8 buffer;
+ for (i=0; i<2; i++)
+ {
+ species[i] = GetBoxMonData(&dayCareData->mons[i], MON_DATA_SPECIES);
+ if (species[i] == SPECIES_DITTO)
+ {
+ a1[0] = i ^ 1;
+ a1[1] = i;
+ }
+ else if (GetBoxMonGender(&dayCareData->mons[i]) == MON_FEMALE)
+ {
+ a1[0] = i;
+ a1[1] = i ^ 1;
+ }
+ }
+ eggSpecies = sub_8041870(species[a1[0]]);
+ if (eggSpecies == SPECIES_NIDORAN_F && dayCareData->misc.countersEtc.personalityLo & 0x8000)
+ {
+ eggSpecies = SPECIES_NIDORAN_M;
+ }
+ if (eggSpecies == SPECIES_ILLUMISE && dayCareData->misc.countersEtc.personalityLo & 0x8000)
+ {
+ eggSpecies = SPECIES_VOLBEAT;
+ }
+ if (species[a1[1]] == SPECIES_DITTO && GetBoxMonGender(&dayCareData->mons[a1[0]]) != MON_FEMALE)
+ {
+ buffer = a1[1];
+ a1[1] = a1[0];
+ a1[0] = buffer;
+ }
+ return eggSpecies;
+}
+
+static void sub_8041FC4(struct DayCareData *dayCareData) // give_egg
+{
+ struct Pokemon egg;
+ u16 species;
+ u8 parents[2];
+ u8 isEgg;
+ species = sub_8041EEC(dayCareData, parents);
+ incense_effects(&species, dayCareData);
+ sub_80420FC(&egg, species, dayCareData);
+ InheritIVs(&egg, dayCareData);
+ daycare_build_child_moveset(&egg, &dayCareData->mons[parents[1]], &dayCareData->mons[parents[0]]);
+ isEgg = TRUE;
+ SetMonData(&egg, MON_DATA_IS_EGG, &isEgg);
+ gPlayerParty[5] = egg;
+ party_compaction();
+ CalculatePlayerPartyCount();
+ RemoveEggFromDayCare(dayCareData);
+}
+
+
+void sub_8042044(struct Pokemon *mon, u16 species, u8 overwriteMetLocation) // scr_create_egg
+{
+ u8 metLevel;
+ u16 ball;
+ u8 language;
+ u8 metLocation;
+ u8 isEgg;
+ CreateMon(mon, species, 5, 0x20, FALSE, 0, FALSE, 0);
+ metLevel = 0;
+ ball = ITEM_POKE_BALL;
+ language = LANGUAGE_JAPANESE;
+ SetMonData(mon, MON_DATA_POKEBALL, (u8 *)&ball);
+ SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4);
+ SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles);
+ SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel);
+ SetMonData(mon, MON_DATA_LANGUAGE, &language);
+ if (overwriteMetLocation)
+ {
+ metLocation = 0xfd;
+ SetMonData(mon, MON_DATA_MET_LOCATION, &metLocation);
+ }
+ isEgg = TRUE;
+ SetMonData(mon, MON_DATA_IS_EGG, &isEgg);
+}
+
+static void sub_80420FC(struct Pokemon *mon, u16 species, struct DayCareData *dayCareData)
+{
+ u32 personality;
+ u16 ball;
+ u8 metLevel;
+ u8 language;
+ personality = dayCareData->misc.countersEtc.personalityLo | (Random() << 16);
+ CreateMon(mon, species, 5, 0x20, TRUE, personality, FALSE, 0);
+ metLevel = 0;
+ ball = ITEM_POKE_BALL;
+ language = LANGUAGE_JAPANESE;
+ SetMonData(mon, MON_DATA_POKEBALL, (u8 *)&ball);
+ SetMonData(mon, MON_DATA_NICKNAME, gUnknown_08209AD4);
+ SetMonData(mon, MON_DATA_FRIENDSHIP, &gBaseStats[species].eggCycles);
+ SetMonData(mon, MON_DATA_MET_LEVEL, &metLevel);
+ SetMonData(mon, MON_DATA_LANGUAGE, &language);
+}
+
+void sp0B8_daycare(void)
+{
+ sub_8041FC4(&gSaveBlock1.daycareData);
+}
+
+#ifdef NONMATCHING
+static bool8 sub_80421B0(struct DayCareData *dayCareData)
+{
+ struct BoxPokemon *parent;
+ u32 i;
+ int v0;
+ int steps;
+ v0 = 0;
+ for (i=0, parent=&dayCareData->mons[0]; i<2; parent++, i++)
+ {
+ if (GetBoxMonData(parent, MON_DATA_SANITY_BIT2, v0))
+ {
+ dayCareData->misc.countersEtc.steps[i]++;
+ v0++;
+ }
+ }
+ if (dayCareData->misc.countersEtc.personalityLo == 0 && v0 == 2 && dayCareData->misc.extra.misc[4] == 0xff && daycare_relationship_score(dayCareData) > (u32)((u32)(Random() * 100) / 0xffff))
+ {
+ sub_8041940();
+ }
+ if ((++dayCareData->misc.countersEtc.unk_11a) == 0xff)
+ {
+ for (i=0; i<gPlayerPartyCount; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
+ {
+ steps = GetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP);
+ if (steps == 0)
+ {
+ gSpecialVar_0x8004 = i;
+ return TRUE;
+ }
+ steps--;
+ SetMonData(&gPlayerParty[i], MON_DATA_FRIENDSHIP, (u8 *)&steps);
+ }
+ }
+ }
+ return FALSE;
+}
+#else
+__attribute__((naked))
+static bool8 sub_80421B0(struct DayCareData *dayCareData)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tsub sp, 0x8\n"
+ "\tadds r7, r0, 0\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r6, 0\n"
+ "\tadds r5, r7, 0\n"
+ "_080421BC:\n"
+ "\tlsls r4, r6, 2\n"
+ "\tadds r0, r5, 0\n"
+ "\tmovs r1, 0x5\n"
+ "\tstr r2, [sp, 0x4]\n"
+ "\tbl GetBoxMonData\n"
+ "\tldr r2, [sp, 0x4]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080421DE\n"
+ "\tmovs r0, 0x88\n"
+ "\tlsls r0, 1\n"
+ "\tadds r1, r7, r0\n"
+ "\tadds r1, r4\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstr r0, [r1]\n"
+ "\tadds r2, 0x1\n"
+ "_080421DE:\n"
+ "\tadds r5, 0x50\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x1\n"
+ "\tbls _080421BC\n"
+ "\tmovs r1, 0x8C\n"
+ "\tlsls r1, 1\n"
+ "\tadds r0, r7, r1\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08042226\n"
+ "\tcmp r2, 0x2\n"
+ "\tbne _08042226\n"
+ "\tsubs r1, 0x4\n"
+ "\tadds r0, r7, r1\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbne _08042226\n"
+ "\tadds r0, r7, 0\n"
+ "\tbl daycare_relationship_score\n"
+ "\tadds r4, r0, 0\n"
+ "\tlsls r4, 24\n"
+ "\tlsrs r4, 24\n"
+ "\tbl Random\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r0, 16\n"
+ "\tmovs r1, 0x64\n"
+ "\tmuls r0, r1\n"
+ "\tldr r1, _08042240 @ =0x0000ffff\n"
+ "\tbl __udivsi3\n"
+ "\tcmp r4, r0\n"
+ "\tbls _08042226\n"
+ "\tbl sub_8041940\n"
+ "_08042226:\n"
+ "\tmovs r0, 0x8D\n"
+ "\tlsls r0, 1\n"
+ "\tadds r1, r7, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbne _08042290\n"
+ "\tmovs r6, 0\n"
+ "\tb _08042288\n"
+ "\t.align 2, 0\n"
+ "_08042240: .4byte 0x0000ffff\n"
+ "_08042244:\n"
+ "\tmovs r0, 0x64\n"
+ "\tadds r1, r6, 0\n"
+ "\tmuls r1, r0\n"
+ "\tldr r0, _08042270 @ =gPlayerParty\n"
+ "\tadds r4, r1, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x2D\n"
+ "\tbl GetMonData\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08042286\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x20\n"
+ "\tbl GetMonData\n"
+ "\tstr r0, [sp]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _08042278\n"
+ "\tldr r0, _08042274 @ =gSpecialVar_0x8004\n"
+ "\tstrh r6, [r0]\n"
+ "\tmovs r0, 0x1\n"
+ "\tb _08042292\n"
+ "\t.align 2, 0\n"
+ "_08042270: .4byte gPlayerParty\n"
+ "_08042274: .4byte gSpecialVar_0x8004\n"
+ "_08042278:\n"
+ "\tsubs r0, 0x1\n"
+ "\tstr r0, [sp]\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x20\n"
+ "\tmov r2, sp\n"
+ "\tbl SetMonData\n"
+ "_08042286:\n"
+ "\tadds r6, 0x1\n"
+ "_08042288:\n"
+ "\tldr r0, _0804229C @ =gPlayerPartyCount\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tbcc _08042244\n"
+ "_08042290:\n"
+ "\tmovs r0, 0\n"
+ "_08042292:\n"
+ "\tadd sp, 0x8\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1\n"
+ "\t.align 2, 0\n"
+ "_0804229C: .4byte gPlayerPartyCount");
+}
+#endif
+
+bool8 sub_80422A0(void)
+{
+ return sub_80421B0(&gSaveBlock1.daycareData);
+}
+
+static bool8 sub_80422B4(struct DayCareData *dayCareData)
+{
+ return (u32)((-dayCareData->misc.countersEtc.personalityLo) | dayCareData->misc.countersEtc.personalityLo) >> 31;
+}
+
+static void sub_80422C4(struct DayCareData *dayCareData)
+{
+ u8 language;
+ if (GetBoxMonData(&dayCareData->mons[0], MON_DATA_SPECIES) != 0)
+ {
+ GetBoxMonNick(&dayCareData->mons[0], gStringVar1);
+ language = GetBoxMonData(&dayCareData->mons[0], MON_DATA_LANGUAGE);
+ GetBoxMonData(&dayCareData->mons[0], MON_DATA_OT_NAME, gStringVar3);
+ ConvertInternationalString(gStringVar3, language);
+ }
+ if (GetBoxMonData(&dayCareData->mons[1], MON_DATA_SPECIES) != 0)
+ {
+ GetBoxMonNick(&dayCareData->mons[1], gStringVar2);
+ }
+}
+
+u16 sub_8042328(void)
+{
+ GetBoxMonNick(&gPlayerParty[gLastFieldPokeMenuOpened].box, gStringVar1);
+ return GetBoxMonData(&gPlayerParty[gLastFieldPokeMenuOpened].box, MON_DATA_SPECIES);
+}
+
+void sp0B5_daycare(void)
+{
+ sub_80422C4(&gSaveBlock1.daycareData);
+}
+
+u8 sp0B6_daycare(void)
+{
+ u8 monCount;
+ if (sub_80422B4(&gSaveBlock1.daycareData))
+ {
+ return 1;
+ }
+ monCount = Daycare_CountPokemon(&gSaveBlock1.daycareData);
+ if (monCount != 0)
+ {
+ return monCount + 1;
+ }
+ return 0;
+}
+
+#ifdef NONMATCHING
+static
+#endif
+bool8 sub_80423A8(u16 *a, u16 *b)
+{
+ int i, j;
+ u16 *v0, *v1, v2;
+ for (i=0, v0=a; i<2; v0++, i++)
+ {
+ for (j=0, v2=*v0, v1=b; j<2; v1++, j++)
+ {
+ if (v2 == *v1)
+ {
+ return TRUE;
+ }
+ }
+ }
+ return FALSE;
+}
+
+#ifdef NONMATCHING
+static u8 daycare_relationship_score(struct DayCareData *dayCareData)
+{
+ u16 species[2];
+ u32 otIds[2];
+ u32 genders[2];
+ u16 eggGroups[2][2];
+ int i;
+ u16 *spc;
+ u32 *ids;
+ u32 *gnd;
+ u16 *egg1;
+ u16 *egg2;
+ struct BoxPokemon *parent;
+ for (i=0, parent=&dayCareData->mons[0], spc=species, ids=otIds, gnd=genders, egg1=&eggGroups[0][0], egg2=&eggGroups[0][1]; i<2; spc++, egg1+=2, egg2+=2, parent++, i++)
+ {
+ *spc = GetBoxMonData(parent, MON_DATA_SPECIES);
+ *ids++ = GetBoxMonData(parent, MON_DATA_OT_ID);
+ *gnd++ = GetGenderFromSpeciesAndPersonality(*spc, GetBoxMonData(parent, MON_DATA_PERSONALITY));
+ *egg1 = gBaseStats[*spc].eggGroup1;
+ *egg2 = gBaseStats[*spc].eggGroup2;
+ }
+ if (eggGroups[0][0] == 0xf)
+ {
+ return 0;
+ }
+ if (eggGroups[1][0] == 0xf)
+ {
+ return 0;
+ }
+ if (eggGroups[0][0] == 0xd && eggGroups[1][0] == 0xd)
+ {
+ return 0;
+ }
+ else if (eggGroups[0][0] == 0xd || eggGroups[1][0] == 0xd)
+ {
+ if (otIds[0] == otIds[1])
+ {
+ return 20;
+ }
+ return 50;
+ }
+ if (genders[0] == genders[1] || genders[0] == MON_GENDERLESS || genders[1] == MON_GENDERLESS)
+ {
+ return 0;
+ }
+ if (!sub_80423A8(eggGroups[0], eggGroups[1]))
+ {
+ return 0;
+ }
+ if (species[0] == species[1])
+ {
+ if (otIds[0] == otIds[1])
+ {
+ return 50;
+ }
+ return 70;
+ }
+ else
+ {
+ if (otIds[0] != otIds[1])
+ {
+ return 50;
+ }
+ return 20;
+ }
+}
+#else
+__attribute__((naked))
+static u8 daycare_relationship_score(struct DayCareData *dayCareData)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r10\n"
+ "\tmov r6, r9\n"
+ "\tmov r5, r8\n"
+ "\tpush {r5-r7}\n"
+ "\tsub sp, 0x2C\n"
+ "\tmovs r1, 0\n"
+ "\tmov r8, r1\n"
+ "\tmov r2, sp\n"
+ "\tadds r2, 0x8\n"
+ "\tstr r2, [sp, 0x1C]\n"
+ "\tadd r1, sp, 0xC\n"
+ "\tmov r10, r1\n"
+ "\tadds r2, 0xC\n"
+ "\tstr r2, [sp, 0x20]\n"
+ "\tmov r1, sp\n"
+ "\tadds r1, 0x2\n"
+ "\tldr r2, _08042488 @ =gBaseStats\n"
+ "\tmov r9, r2\n"
+ "\tldr r5, [sp, 0x1C]\n"
+ "\tadds r7, r1, 0\n"
+ "\tmov r6, sp\n"
+ "\tldr r1, [sp, 0x20]\n"
+ "\tstr r1, [sp, 0x24]\n"
+ "\tmov r2, r10\n"
+ "\tstr r2, [sp, 0x28]\n"
+ "\tadds r4, r0, 0\n"
+ "_0804240E:\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0xB\n"
+ "\tbl GetBoxMonData\n"
+ "\tstrh r0, [r5]\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl GetBoxMonData\n"
+ "\tldr r1, [sp, 0x28]\n"
+ "\tstm r1!, {r0}\n"
+ "\tstr r1, [sp, 0x28]\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetBoxMonData\n"
+ "\tadds r1, r0, 0\n"
+ "\tldrh r0, [r5]\n"
+ "\tbl GetGenderFromSpeciesAndPersonality\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tldr r2, [sp, 0x24]\n"
+ "\tstm r2!, {r0}\n"
+ "\tstr r2, [sp, 0x24]\n"
+ "\tldrh r1, [r5]\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadd r0, r9\n"
+ "\tldrb r0, [r0, 0x14]\n"
+ "\tstrh r0, [r6]\n"
+ "\tldrh r1, [r5]\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tadd r0, r9\n"
+ "\tldrb r0, [r0, 0x15]\n"
+ "\tstrh r0, [r7]\n"
+ "\tadds r5, 0x2\n"
+ "\tadds r7, 0x4\n"
+ "\tadds r6, 0x4\n"
+ "\tadds r4, 0x50\n"
+ "\tmovs r0, 0x1\n"
+ "\tadd r8, r0\n"
+ "\tmov r1, r8\n"
+ "\tcmp r1, 0x1\n"
+ "\tbls _0804240E\n"
+ "\tmov r0, sp\n"
+ "\tldrh r1, [r0]\n"
+ "\tcmp r1, 0xF\n"
+ "\tbeq _08042484\n"
+ "\tldrh r0, [r0, 0x4]\n"
+ "\tcmp r0, 0xF\n"
+ "\tbeq _08042484\n"
+ "\tcmp r1, 0xD\n"
+ "\tbne _0804248C\n"
+ "\tcmp r0, 0xD\n"
+ "\tbne _08042490\n"
+ "_08042484:\n"
+ "\tmovs r0, 0\n"
+ "\tb _080424E4\n"
+ "\t.align 2, 0\n"
+ "_08042488: .4byte gBaseStats\n"
+ "_0804248C:\n"
+ "\tcmp r0, 0xD\n"
+ "\tbne _0804249C\n"
+ "_08042490:\n"
+ "\tldr r1, [sp, 0xC]\n"
+ "\tmov r2, r10\n"
+ "\tldr r0, [r2, 0x4]\n"
+ "\tcmp r1, r0\n"
+ "\tbeq _080424DE\n"
+ "\tb _080424E2\n"
+ "_0804249C:\n"
+ "\tldr r0, [sp, 0x14]\n"
+ "\tldr r2, [sp, 0x20]\n"
+ "\tldr r1, [r2, 0x4]\n"
+ "\tcmp r0, r1\n"
+ "\tbeq _08042484\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbeq _08042484\n"
+ "\tcmp r1, 0xFF\n"
+ "\tbeq _08042484\n"
+ "\tadd r1, sp, 0x4\n"
+ "\tmov r0, sp\n"
+ "\tbl sub_80423A8\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _08042484\n"
+ "\tldr r0, [sp, 0x1C]\n"
+ "\tldrh r1, [r0, 0x2]\n"
+ "\tldrh r0, [r0]\n"
+ "\tcmp r0, r1\n"
+ "\tbne _080424D4\n"
+ "\tldr r1, [sp, 0xC]\n"
+ "\tmov r2, r10\n"
+ "\tldr r0, [r2, 0x4]\n"
+ "\tcmp r1, r0\n"
+ "\tbeq _080424E2\n"
+ "\tmovs r0, 0x46\n"
+ "\tb _080424E4\n"
+ "_080424D4:\n"
+ "\tldr r1, [sp, 0xC]\n"
+ "\tmov r2, r10\n"
+ "\tldr r0, [r2, 0x4]\n"
+ "\tcmp r1, r0\n"
+ "\tbne _080424E2\n"
+ "_080424DE:\n"
+ "\tmovs r0, 0x14\n"
+ "\tb _080424E4\n"
+ "_080424E2:\n"
+ "\tmovs r0, 0x32\n"
+ "_080424E4:\n"
+ "\tadd sp, 0x2C\n"
+ "\tpop {r3-r5}\n"
+ "\tmov r8, r3\n"
+ "\tmov r9, r4\n"
+ "\tmov r10, r5\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+}
+#endif
+
+u8 daycare_relationship_score_from_savegame(void)
+{
+ return daycare_relationship_score(&gSaveBlock1.daycareData);
+}
+
+void sp0B9_daycare_relationship_comment(void)
+{
+ u8 whichString;
+ u8 relationshipScore;
+
+ relationshipScore = daycare_relationship_score_from_savegame();
+ whichString = 0;
+ if (relationshipScore == 0)
+ whichString = 3;
+ if (relationshipScore == 20)
+ whichString = 2;
+ if (relationshipScore == 50)
+ whichString = 1;
+ if (relationshipScore == 70)
+ whichString = 0;
+ StringCopy(gStringVar4, gUnknown_08209AC4[whichString]);
+}
+
+#ifdef NONMATCHING
+bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio)
+{
+ u8 i;
+ u8 flags[2];
+
+ // This portion is nonmatching
+ flags[1] = 0;
+ flags[0] = 0;
+ for (i = 0; name[i] != EOS; i ++)
+ // End nonmatching portion
+
+ {
+ if (name[i] == CHAR_MALE) flags[0] ++;
+ if (name[i] == CHAR_FEMALE) flags[1] ++;
+ }
+ if (genderRatio == MON_MALE && flags[0] && !flags[1]) return TRUE;
+ if (genderRatio == MON_FEMALE && flags[1] && !flags[0]) return TRUE;
+ return FALSE;
+}
+#else
+__attribute__((naked))
+bool8 NameHasGenderSymbol(const u8 *name, u8 genderRatio)
+{
+ asm_unified("\n"
+ "\tpush {r4,r5,lr}\n"
+ "\tsub sp, 0x4\n"
+ "\tadds r4, r0, 0\n"
+ "\tlsls r1, 24\n"
+ "\tlsrs r5, r1, 24\n"
+ "\tmov r2, sp\n"
+ "\tmov r1, sp\n"
+ "\tmovs r0, 0\n"
+ "\tstrb r0, [r1, 0x1]\n"
+ "\tstrb r0, [r2]\n"
+ "\tmovs r3, 0\n"
+ "\tldrb r0, [r4]\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbeq _0804258C\n"
+ "_08042564:\n"
+ "\tadds r1, r4, r3\n"
+ "\tldrb r0, [r1]\n"
+ "\tcmp r0, 0xB5\n"
+ "\tbne _08042572\n"
+ "\tldrb r0, [r2]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r2]\n"
+ "_08042572:\n"
+ "\tldrb r0, [r1]\n"
+ "\tcmp r0, 0xB6\n"
+ "\tbne _0804257E\n"
+ "\tldrb r0, [r2, 0x1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r2, 0x1]\n"
+ "_0804257E:\n"
+ "\tadds r0, r3, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r3, r0, 24\n"
+ "\tadds r0, r4, r3\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0xFF\n"
+ "\tbne _08042564\n"
+ "_0804258C:\n"
+ "\tcmp r5, 0\n"
+ "\tbne _080425A0\n"
+ "\tmov r0, sp\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080425A0\n"
+ "\tmov r0, sp\n"
+ "\tldrb r0, [r0, 0x1]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080425B4\n"
+ "_080425A0:\n"
+ "\tcmp r5, 0xFE\n"
+ "\tbne _080425B8\n"
+ "\tmov r0, sp\n"
+ "\tldrb r0, [r0, 0x1]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _080425B8\n"
+ "\tmov r0, sp\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _080425B8\n"
+ "_080425B4:\n"
+ "\tmovs r0, 0x1\n"
+ "\tb _080425BA\n"
+ "_080425B8:\n"
+ "\tmovs r0, 0\n"
+ "_080425BA:\n"
+ "\tadd sp, 0x4\n"
+ "\tpop {r4,r5}\n"
+ "\tpop {r1}\n"
+ "\tbx r1");
+}
+#endif
+
+static u8 *AppendGenderSymbol(u8 *name, u8 gender)
+{
+ if (gender == MON_MALE)
+ {
+ if (!NameHasGenderSymbol(name, MON_MALE))
+ return StringAppend(name, gOtherText_MaleSymbol3);
+ }
+
+ else if (gender == MON_FEMALE)
+ {
+ if (!NameHasGenderSymbol(name, MON_FEMALE))
+ return StringAppend(name, gOtherText_FemaleSymbol3);
+ }
+ return StringAppend(name, gOtherText_GenderlessSymbol);
+}
+
+static u8 *MonAppendGenderSymbol(u8 *name, struct BoxPokemon *boxMon)
+{
+ return AppendGenderSymbol(name, GetBoxMonGender(boxMon));
+}
+
+static void DaycareLevelMenuGetText(struct DayCareData *dayCareData, u8 *dest)
+{
+ u8 buffers[2][20];
+ u8 i;
+ *dest = EOS;
+ for (i = 0; i < 2; i ++)
+ {
+ GetBoxMonNick(&dayCareData->mons[i], buffers[i]);
+ MonAppendGenderSymbol(buffers[i], &dayCareData->mons[i]);
+ }
+ StringCopy(dest, buffers[0]);
+ StringAppend(dest, gOtherText_NewLine2);
+ StringAppend(dest, buffers[1]);
+ StringAppend(dest, gOtherText_NewLine2);
+ StringAppend(dest, gOtherText_CancelAndLv);
+}
+
+static void DaycareLevelMenuGetLevelText(struct DayCareData *dayCareData, u8 *dest)
+{
+ u8 i;
+ u8 level;
+ *dest = EOS;
+ for (i = 0; i < 2; i ++)
+ {
+ level = Daycare_GetLevelAfterSteps(&dayCareData->mons[i], dayCareData->misc.countersEtc.steps[i]);
+ dest[0] = 0x34;
+ dest[1] = 0xFC;
+ dest[2] = 0x14;
+ dest[3] = 0x06;
+ dest = ConvertIntToDecimalStringN(dest + 4, level, STR_CONV_MODE_RIGHT_ALIGN, 3);
+ dest[0] = 0xFC;
+ dest[1] = 0x14;
+ dest[2] = 0x00;
+ dest = StringCopy(dest + 3, gOtherText_NewLine2);
+ }
+ *dest = EOS;
+}
+
+static void DaycareLevelMenuProcessKeyInput(u8 taskId)
+{
+ if (gMain.newKeys & DPAD_UP)
+ {
+ if (gTasks[taskId].data[0] != 0)
+ {
+ gTasks[taskId].data[0] --;
+ MoveMenuCursor(-1);
+ PlaySE(SE_SELECT);
+ }
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (gTasks[taskId].data[0] != 2)
+ {
+ gTasks[taskId].data[0] ++;
+ MoveMenuCursor(+1);
+ PlaySE(SE_SELECT);
+ }
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ HandleDestroyMenuCursors();
+ PlaySE(SE_SELECT);
+ gLastFieldPokeMenuOpened = gScriptResult = gTasks[taskId].data[0];
+ DestroyTask(taskId);
+ MenuZeroFillWindowRect(15, 6, 29, 13);
+ EnableBothScriptContexts();
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ HandleDestroyMenuCursors();
+ gLastFieldPokeMenuOpened = gScriptResult = 2;
+ DestroyTask(taskId);
+ MenuZeroFillWindowRect(15, 6, 29, 13);
+ EnableBothScriptContexts();
+ }
+}
+
+void ShowDaycareLevelMenu(void)
+{
+ u8 buffer[100];
+ MenuDrawTextWindow(15, 6, 29, 13);
+ DaycareLevelMenuGetText(&gSaveBlock1.daycareData, buffer);
+ MenuPrint(buffer, 16, 7);
+ DaycareLevelMenuGetLevelText(&gSaveBlock1.daycareData, buffer);
+ MenuPrint_PixelCoords(buffer, 0xce, 0x38, TRUE);
+ InitMenu(0, 16, 7, 3, 0, 13);
+ CreateTask(DaycareLevelMenuProcessKeyInput, 3);
+}
+
+void ChooseSendDaycareMon(void)
+{
+ OpenPartyMenu(6, 0);
+ gMain.savedCallback = c2_exit_to_overworld_2_switch;
+}
diff --git a/src/decoration.c b/src/field/decoration.c
index da33b3ab7..e067191e9 100644
--- a/src/decoration.c
+++ b/src/field/decoration.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "main.h"
#include "map_object_constants.h"
-#include "rom4.h"
+#include "overworld.h"
#include "sound.h"
#include "songs.h"
#include "string_util.h"
@@ -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)
@@ -2322,7 +2322,7 @@ void sub_80FF474(void)
{
if (FlagGet(i + 0xae) == 1)
{
- FlagReset(i + 0xae);
+ FlagClear(i + 0xae);
for (j=0; j<gMapHeader.events->mapObjectCount; j++)
{
if (gMapHeader.events->mapObjects[j].flagId == i + 0xae)
diff --git a/src/decoration_inventory.c b/src/field/decoration_inventory.c
index 35ba7e228..083cb260c 100644
--- a/src/decoration_inventory.c
+++ b/src/field/decoration_inventory.c
@@ -1,5 +1,5 @@
//
-// Created by Scott Norton on 6/5/17.
+
//
#include "global.h"
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 ba7de58aa..27601404c 100644
--- a/src/diploma.c
+++ b/src/field/diploma.c
@@ -4,7 +4,7 @@
#include "menu.h"
#include "palette.h"
#include "pokedex.h"
-#include "rom4.h"
+#include "overworld.h"
#include "sprite.h"
#include "string_util.h"
#include "strings2.h"
@@ -35,7 +35,7 @@ static void VBlankCB(void)
TransferPlttBuffer();
}
-void sub_8145D88(void)
+void CB2_ShowDiploma(void)
{
u32 savedIme;
diff --git a/src/easy_chat.c b/src/field/easy_chat.c
index cca8c1355..6014b3d14 100644
--- a/src/easy_chat.c
+++ b/src/field/easy_chat.c
@@ -19,8 +19,10 @@ extern const u8 gEasyChatGroupSizes[];
extern u16 gSpecialVar_0x8004;
+IWRAM_DATA u8 gUnknown_03000740;
-u8 *sub_80EB3FC(u8 *dst, u16 word)
+// returns the end of the destination buffer text
+u8 *EasyChat_GetWordText(u8 *dst, u16 word)
{
u16 group;
u16 wordIndex;
@@ -32,13 +34,13 @@ u8 *sub_80EB3FC(u8 *dst, u16 word)
if (word == 0xFFFF)
{
- dst[0] = EOS;
+ *dst = EOS;
return dst;
}
else
{
- group = word >> 9;
- wordIndex = word & 0x1FF;
+ group = EC_GROUP(word);
+ wordIndex = EC_INDEX(word);
switch (group)
{
case EC_GROUP_POKEMON: // 0
@@ -59,7 +61,7 @@ u8 *sub_80EB3FC(u8 *dst, u16 word)
dst = StringCopy(dst, src);
break;
}
- dst[0] = EOS;
+ *dst = EOS;
return dst;
}
}
@@ -77,7 +79,7 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3)
for (n = 0; n < i1; n++)
{
- dst = sub_80EB3FC(dst, words[0]);
+ dst = EasyChat_GetWordText(dst, words[0]);
if (words[0] != 0xFFFF)
{
@@ -90,7 +92,7 @@ u8 *ConvertEasyChatWordsToString(u8 *dst, u16 *words, u16 arg2, u16 arg3)
word = words[0];
words++;
- dst = sub_80EB3FC(dst, word);
+ dst = EasyChat_GetWordText(dst, word);
dst[0] = CHAR_NEWLINE;
dst++;
@@ -115,7 +117,7 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3)
for (n = 0; n < i1; n++)
{
- dst = sub_80EB3FC(dst, words[0]);
+ dst = EasyChat_GetWordText(dst, words[0]);
if (words[0] != 0xFFFF)
{
@@ -128,7 +130,7 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3)
word = words[0];
words++;
- dst = sub_80EB3FC(dst, word);
+ dst = EasyChat_GetWordText(dst, word);
// Only difference with ConvertEasyChatWordsToString
dst[0] = (i == 0) ? CHAR_NEWLINE : CHAR_PROMPT_SCROLL;
@@ -144,7 +146,7 @@ u8 *sub_80EB544(u8 *dst, u16 *words, u16 arg2, u16 arg3)
u16 unref_sub_80EB5E0(u16 arg0)
{
- u8 *chars;
+ const u8 *chars;
u16 i;
u16 length;
int group, word;
@@ -153,8 +155,8 @@ u16 unref_sub_80EB5E0(u16 arg0)
if (arg0 == 0xFFFF)
return 0;
- group = arg0 >> 9;
- word = arg0 & 0x1FF;
+ group = EC_GROUP(arg0);
+ word = EC_INDEX(arg0);
switch (group)
{
case EC_GROUP_POKEMON: // 0
@@ -321,7 +323,7 @@ void sub_80EB83C(void)
group = EC_GROUP_LIFESTYLE;
local2 = sub_80EB784(group);
- sub_80EB3FC(gStringVar2, local2);
+ EasyChat_GetWordText(gStringVar2, local2);
}
u8 sub_80EB868(u8 arg0)
@@ -428,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 0484bae02..43d49c417 100644
--- a/src/event_data.c
+++ b/src/field/event_data.c
@@ -36,10 +36,10 @@ void ClearTempFieldEventData(void)
{
memset(gSaveBlock1.flags, 0, TEMP_FLAGS_SIZE);
memset(gSaveBlock1.vars, 0, TEMP_VARS_SIZE);
- FlagReset(SYS_ENC_UP_ITEM);
- FlagReset(SYS_ENC_DOWN_ITEM);
- FlagReset(SYS_USE_STRENGTH);
- FlagReset(SYS_CTRL_OBJ_DELETE);
+ FlagClear(SYS_ENC_UP_ITEM);
+ FlagClear(SYS_ENC_DOWN_ITEM);
+ FlagClear(SYS_USE_STRENGTH);
+ FlagClear(SYS_CTRL_OBJ_DELETE);
}
// probably had different flag splits at one point.
@@ -53,7 +53,7 @@ void DisableNationalPokedex(void)
u16 *nationalDexVar = GetVarPointer(VAR_NATIONAL_DEX);
gSaveBlock2.pokedex.nationalMagic = 0;
*nationalDexVar = 0;
- FlagReset(SYS_NATIONAL_DEX);
+ FlagClear(SYS_NATIONAL_DEX);
}
void EnableNationalPokedex(void)
@@ -77,7 +77,7 @@ bool32 IsNationalPokedexEnabled(void)
void DisableMysteryGift(void)
{
- FlagReset(SYS_EXDATA_ENABLE);
+ FlagClear(SYS_EXDATA_ENABLE);
}
void EnableMysteryGift(void)
@@ -93,7 +93,7 @@ bool32 IsMysteryGiftEnabled(void)
void DisableResetRTC(void)
{
VarSet(VAR_RESET_RTC_ENABLE, 0);
- FlagReset(SYS_RESET_RTC_ENABLE);
+ FlagClear(SYS_RESET_RTC_ENABLE);
}
void EnableResetRTC(void)
@@ -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];
}
@@ -162,7 +160,7 @@ u8 FlagSet(u16 id)
return 0;
}
-u8 FlagReset(u16 id)
+u8 FlagClear(u16 id)
{
u8 *ptr = GetFlagPointer(id);
if (ptr)
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 a8f6b6b9b..ff8e8504c 100644
--- a/src/field_control_avatar.c
+++ b/src/field/field_control_avatar.c
@@ -13,7 +13,7 @@
#include "flags.h"
#include "item_menu.h"
#include "metatile_behavior.h"
-#include "rom4.h"
+#include "overworld.h"
#include "safari_zone.h"
#include "script.h"
#include "secret_base.h"
@@ -57,7 +57,7 @@ extern u8 gUnknown_081A4363[];
extern u8 gUnknown_081C346A[];
extern u8 gUnknown_081616E1[];
extern u8 Event_WorldMap[];
-extern u8 Event_RunningShoesManual[];
+extern u8 S_RunningShoesManual[];
extern u8 PictureBookShelfScript[];
extern u8 BookshelfScript[];
extern u8 PokemonCenterBookshelfScript[];
@@ -70,13 +70,13 @@ extern u8 gUnknown_0815F43A[];
extern u8 gUnknown_0815F523[];
extern u8 gUnknown_0815F528[];
extern u8 UseSurfScript[];
-extern u8 UseWaterfallScript[];
-extern u8 CannotUseWaterfallScript[];
+extern u8 S_UseWaterfall[];
+extern u8 S_CannotUseWaterfall[];
extern u8 UseDiveScript[];
-extern u8 UnderwaterUseDiveScript[];
-extern u8 GraniteCave_B1F_EventScript_1C6BC5[];
+extern u8 S_UseDiveUnderwater[];
+extern u8 S_FallDownHole[];
extern u8 gUnknown_081A14B8[];
-extern u8 Event_EggHatch[];
+extern u8 S_EggHatch[];
extern u8 gUnknown_0815FD0D[];
extern u8 gUnknown_081C6BDE[];
@@ -391,7 +391,7 @@ static u8 *sub_8068500(struct MapPosition *position, u8 b, u8 c)
if (MetatileBehavior_IsRegionMap(b) == TRUE)
return Event_WorldMap;
if (sub_805791C(b) == TRUE)
- return Event_RunningShoesManual;
+ return S_RunningShoesManual;
if (MetatileBehavior_IsPictureBookShelf(b) == TRUE)
return PictureBookShelfScript;
if (MetatileBehavior_IsBookShelf(b) == TRUE)
@@ -428,9 +428,9 @@ static u8 *TryGetFieldMoveScript(struct MapPosition *unused1, u8 b, u8 unused2)
if (MetatileBehavior_IsWaterfall(b) == TRUE)
{
if (FlagGet(BADGE08_GET) == TRUE && IsPlayerSurfingNorth() == TRUE)
- return UseWaterfallScript;
+ return S_UseWaterfall;
else
- return CannotUseWaterfallScript;
+ return S_CannotUseWaterfall;
}
return NULL;
}
@@ -447,9 +447,9 @@ static bool32 sub_8068770(void)
static bool32 sub_80687A4(void)
{
- if (FlagGet(BADGE07_GET) && gMapHeader.mapType == 5 && sub_8068F18() == 1)
+ if (FlagGet(BADGE07_GET) && gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_8068F18() == 1)
{
- ScriptContext1_SetupScript(UnderwaterUseDiveScript);
+ ScriptContext1_SetupScript(S_UseDiveUnderwater);
return TRUE;
}
return FALSE;
@@ -485,7 +485,7 @@ bool8 sub_8068870(u16 a)
{
if (MetatileBehavior_IsCrackedFloorHole(a))
{
- ScriptContext1_SetupScript(GraniteCave_B1F_EventScript_1C6BC5);
+ ScriptContext1_SetupScript(S_FallDownHole);
return TRUE;
}
return FALSE;
@@ -503,7 +503,7 @@ bool8 sub_8068894(void)
if (sub_80422A0())
{
IncrementGameStat(13);
- ScriptContext1_SetupScript(Event_EggHatch);
+ ScriptContext1_SetupScript(S_EggHatch);
return TRUE;
}
if (SafariZoneTakeStep() == TRUE)
@@ -549,14 +549,14 @@ static bool8 overworld_poison_step(void)
{
u16 *ptr;
- if (gMapHeader.mapType != 9)
+ if (gMapHeader.mapType != MAP_TYPE_SECRET_BASE)
{
ptr = GetVarPointer(VAR_POISON_STEP_COUNTER);
(*ptr)++;
(*ptr) %= 4;
if (*ptr == 0)
{
- switch (overworld_poison())
+ switch (DoPoisonFieldEffect())
{
case 0:
return FALSE;
@@ -698,7 +698,7 @@ static void sub_8068C30(struct MapHeader *unused, s8 b, struct MapPosition *posi
warp1_set_2(warpEvent->unk7, warpEvent->mapNum, warpEvent->mapGroup);
sub_80535C4(position->x, position->y);
- mapHeader = get_mapheader_by_bank_and_number(warpEvent->unk7, warpEvent->mapNum);
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(warpEvent->unk7, warpEvent->mapNum);
if (mapHeader->events->warps[warpEvent->mapGroup].mapNum == 0x7F)
saved_warp2_set(mapHeader->events->warps[b].mapGroup, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, b);
}
@@ -730,7 +730,7 @@ static bool8 map_warp_consider_2_to_inside(struct MapPosition *position, u16 b,
return FALSE;
}
-static s8 map_warp_check(struct MapHeader *mapHeader, u16 b, u16 c, u8 d)
+static s8 map_warp_check(struct MapHeader *mapHeader, u16 x, u16 y, u8 warpId)
{
s32 i;
struct WarpEvent *warpEvent = mapHeader->events->warps;
@@ -738,9 +738,9 @@ static s8 map_warp_check(struct MapHeader *mapHeader, u16 b, u16 c, u8 d)
for (i = 0; i < warpCount; i++, warpEvent++)
{
- if ((u16)warpEvent->x == b && (u16)warpEvent->y == c)
+ if ((u16)warpEvent->x == x && (u16)warpEvent->y == y)
{
- if ((u8)warpEvent->warpId == d || (u8)warpEvent->warpId == 0)
+ if ((u8)warpEvent->warpId == warpId || (u8)warpEvent->warpId == 0)
return i;
}
}
@@ -767,7 +767,7 @@ static u8 *trigger_activate(struct CoordEvent *coordEvent)
return NULL;
}
-static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 b, u16 c, u8 d)
+static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 x, u16 y, u8 d)
{
s32 i;
struct CoordEvent *coordEvents = mapHeader->events->coordEvents;
@@ -776,7 +776,7 @@ static u8 *mapheader_trigger_activate_at(struct MapHeader *mapHeader, u16 b, u16
for (i = 0; i < coordEventCount; i++)
{
- if ((u16)coordEvents[i].x == b && (u16)coordEvents[i].y == c)
+ if ((u16)coordEvents[i].x == x && (u16)coordEvents[i].y == y)
{
if (coordEvents[i].unk4 == d || coordEvents[i].unk4 == 0)
{
@@ -813,7 +813,7 @@ static struct BgEvent *FindInvisibleMapObjectByPosition(struct MapHeader *mapHea
int dive_warp(struct MapPosition *position, u16 b)
{
- if (gMapHeader.mapType == 5 && sub_805750C(b) == 0)
+ if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(b) == 0)
{
if (sub_80538B0(position->x - 7, position->y - 7))
{
@@ -843,7 +843,7 @@ u8 sub_8068F18(void)
PlayerGetDestCoords(&x, &y);
r5 = MapGridGetMetatileBehaviorAt(x, y);
- if (gMapHeader.mapType == 5 && sub_805750C(r5) == 0)
+ if (gMapHeader.mapType == MAP_TYPE_UNDERWATER && sub_805750C(r5) == 0)
{
if (sub_80538B0(x - 7, y - 7) == TRUE)
return 1;
diff --git a/src/field_door.c b/src/field/field_door.c
index 791ed4c94..ab46f0696 100644
--- a/src/field_door.c
+++ b/src/field/field_door.c
@@ -3,6 +3,7 @@
#include "field_camera.h"
#include "fieldmap.h"
#include "metatile_behavior.h"
+#include "songs.h"
#include "task.h"
extern struct DoorAnimFrame gDoorOpenAnimFrames[];
@@ -212,10 +213,10 @@ bool8 FieldIsDoorAnimationRunning(void)
return FuncIsActiveTask(Task_AnimateDoor);
}
-u32 sub_8058790(u32 x, u32 y)
+u32 GetDoorSoundEffect(u32 x, u32 y)
{
if (cur_mapdata_get_door_x2_at(gDoorAnimGraphicsTable, x, y) == 0)
- return 8;
+ return SE_DOOR;
else
- return 18;
+ return SE_JIDO_DOA;
}
diff --git a/src/field_effect.c b/src/field/field_effect.c
index 3632d7053..afe020ac7 100644
--- a/src/field_effect.c
+++ b/src/field/field_effect.c
@@ -9,7 +9,7 @@
#include "menu.h"
#include "palette.h"
#include "text.h"
-#include "rom4.h"
+#include "overworld.h"
#include "task.h"
#include "sound.h"
#include "songs.h"
@@ -28,7 +28,7 @@
#define subsprite_table(ptr) {.subsprites = ptr, .subspriteCount = (sizeof ptr) / (sizeof(struct Subsprite))}
-EWRAM_DATA u32 gUnknown_0202FF84[8] = {0};
+EWRAM_DATA u32 gFieldEffectArguments[8] = {0};
const u32 gSpriteImage_839DC14[] = INCBIN_U32("graphics/birch_speech/birch.4bpp");
const u16 gBirchPalette[16] = INCBIN_U16("graphics/birch_speech/birch.gbapal");
@@ -618,13 +618,13 @@ bool8 FieldEffectActiveListContains(u8 id)
return FALSE;
}
-u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer)
+u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer)
{
struct SpriteTemplate spriteTemplate;
- LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[gender], buffer);
- LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[gender], buffer);
- spriteTemplate.tileTag = gTrainerFrontPicTable[gender].tag;
- spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[gender].tag;
+ LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[trainerSpriteID], buffer);
+ LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[trainerSpriteID], buffer);
+ spriteTemplate.tileTag = gTrainerFrontPicTable[trainerSpriteID].tag;
+ spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[trainerSpriteID].tag;
spriteTemplate.oam = &gOamData_839F0F4;
spriteTemplate.anims = gDummySpriteAnimTable;
spriteTemplate.images = NULL;
@@ -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;
@@ -1203,17 +1203,17 @@ void task00_8084310(u8 taskId)
{
return;
}
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- if ((int)gUnknown_0202FF84[0] > 5)
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ if ((int)gFieldEffectArguments[0] > 5)
{
- gUnknown_0202FF84[0] = 0;
+ gFieldEffectArguments[0] = 0;
}
FieldEffectStart(FLDEFF_USE_FLY);
task->data[0]++;
}
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);
@@ -1665,7 +1665,7 @@ bool8 FldEff_UseWaterfall(void)
{
u8 taskId;
taskId = CreateTask(sub_8086F64, 0xff);
- gTasks[taskId].data[1] = gUnknown_0202FF84[0];
+ gTasks[taskId].data[1] = gFieldEffectArguments[0];
sub_8086F64(taskId);
return FALSE;
}
@@ -1689,7 +1689,7 @@ bool8 waterfall_1_do_anim_probably(struct Task *task, struct MapObject *mapObjec
if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject))
{
FieldObjectClearAnimIfSpecialAnimFinished(mapObject);
- gUnknown_0202FF84[0] = task->data[1];
+ gFieldEffectArguments[0] = task->data[1];
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->data[0]++;
}
@@ -1738,8 +1738,8 @@ bool8 FldEff_UseDive(void)
{
u8 taskId;
taskId = CreateTask(Task_Dive, 0xff);
- gTasks[taskId].data[15] = gUnknown_0202FF84[0];
- gTasks[taskId].data[14] = gUnknown_0202FF84[1];
+ gTasks[taskId].data[15] = gFieldEffectArguments[0];
+ gTasks[taskId].data[14] = gFieldEffectArguments[1];
Task_Dive(taskId);
return FALSE;
}
@@ -1759,7 +1759,7 @@ bool8 sub_8087124(struct Task *task)
bool8 dive_2_unknown(struct Task *task)
{
ScriptContext2_Enable();
- gUnknown_0202FF84[0] = task->data[15];
+ gFieldEffectArguments[0] = task->data[15];
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->data[0]++;
return FALSE;
@@ -1820,10 +1820,10 @@ bool8 sub_8087298(struct Task *task, struct MapObject *mapObject, struct Sprite
{
sprite->pos2.y = 0;
task->data[3] = 1;
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
FieldEffectStart(FLDEFF_LAVARIDGE_GYM_WARP);
PlaySE(SE_W153);
task->data[0]++;
@@ -1894,11 +1894,10 @@ bool8 sub_80873F4(struct Task *task, struct MapObject *mapObject, struct Sprite
}
void sub_8087470(u8);
-extern u8 sub_80608A4(u8);
void mapldr_080851BC(void)
{
- sub_8053E90();
+ Overworld_PlaySpecialMapMusic();
pal_fill_for_map_transition();
ScriptContext2_Enable();
gFieldCallback = NULL;
@@ -1924,10 +1923,10 @@ bool8 sub_80874FC(struct Task *task, struct MapObject *mapObject, struct Sprite
{
if (sub_807D770())
{
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
task->data[0]++;
}
@@ -1966,9 +1965,9 @@ extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36]
u8 FldEff_LavaridgeGymWarp(void)
{
u8 spriteId;
- sub_8060470((s16 *)&gUnknown_0202FF84[0], (s16 *)&gUnknown_0202FF84[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]);
- gSprites[spriteId].oam.priority = gUnknown_0202FF84[3];
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[33], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ gSprites[spriteId].oam.priority = gFieldEffectArguments[3];
gSprites[spriteId].coordOffsetEnabled = 1;
return spriteId;
}
@@ -2009,10 +2008,10 @@ bool8 sub_80876F8(struct Task *task, struct MapObject *mapObject, struct Sprite
{
if (task->data[1] > 3)
{
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
task->data[1] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
task->data[0]++;
} else
@@ -2064,9 +2063,9 @@ bool8 sub_80877D4(struct Task *task, struct MapObject *mapObject, struct Sprite
u8 FldEff_PopOutOfAsh(void)
{
u8 spriteId;
- sub_8060470((s16 *)&gUnknown_0202FF84[0], (s16 *)&gUnknown_0202FF84[1], 8, 8);
- spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]);
- gSprites[spriteId].oam.priority = gUnknown_0202FF84[3];
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[32], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ gSprites[spriteId].oam.priority = gFieldEffectArguments[3];
gSprites[spriteId].coordOffsetEnabled = 1;
return spriteId;
}
@@ -2135,7 +2134,7 @@ void sub_8087A74(u8);
void mapldr_080859D4(void)
{
- sub_8053E90();
+ Overworld_PlaySpecialMapMusic();
pal_fill_for_map_transition();
ScriptContext2_Enable();
FreezeMapObjects();
@@ -2267,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;
@@ -2279,7 +2278,7 @@ void sub_8087E1C(u8);
void mapldr_08085D88(void)
{
- sub_8053E90();
+ Overworld_PlaySpecialMapMusic();
pal_fill_for_map_transition();
ScriptContext2_Enable();
FreezeMapObjects();
@@ -2385,26 +2384,26 @@ void sub_8088890(struct Sprite *);
bool8 FldEff_FieldMoveShowMon(void)
{
u8 taskId;
- if (is_light_level_1_2_3_5_or_6(sav1_map_get_light_level()) == TRUE)
+ if (is_map_type_1_2_3_5_or_6(Overworld_GetMapTypeOfSaveblockLocation()) == TRUE)
{
taskId = CreateTask(sub_8088120, 0xff);
} else
{
taskId = CreateTask(sub_808847C, 0xff);
}
- gTasks[taskId].data[15] = sub_8088830(gUnknown_0202FF84[0], gUnknown_0202FF84[1], gUnknown_0202FF84[2]);
+ gTasks[taskId].data[15] = sub_8088830(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
return FALSE;
}
bool8 FldEff_FieldMoveShowMonInit(void)
{
struct Pokemon *pokemon;
- u32 flag = gUnknown_0202FF84[0] & 0x80000000;
- pokemon = &gPlayerParty[(u8)gUnknown_0202FF84[0]];
- gUnknown_0202FF84[0] = GetMonData(pokemon, MON_DATA_SPECIES);
- gUnknown_0202FF84[1] = GetMonData(pokemon, MON_DATA_OT_ID);
- gUnknown_0202FF84[2] = GetMonData(pokemon, MON_DATA_PERSONALITY);
- gUnknown_0202FF84[0] |= flag;
+ u32 flag = gFieldEffectArguments[0] & 0x80000000;
+ pokemon = &gPlayerParty[(u8)gFieldEffectArguments[0]];
+ gFieldEffectArguments[0] = GetMonData(pokemon, MON_DATA_SPECIES);
+ gFieldEffectArguments[1] = GetMonData(pokemon, MON_DATA_OT_ID);
+ gFieldEffectArguments[2] = GetMonData(pokemon, MON_DATA_PERSONALITY);
+ gFieldEffectArguments[0] |= flag;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON);
FieldEffectActiveListRemove(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
return FALSE;
@@ -2879,9 +2878,9 @@ u8 FldEff_UseSurf(void)
{
u8 taskId;
taskId = CreateTask(sub_8088954, 0xff);
- gTasks[taskId].data[15] = gUnknown_0202FF84[0];
- sav1_reset_battle_music_maybe();
- sub_8053FB0(0x016d);
+ gTasks[taskId].data[15] = gFieldEffectArguments[0];
+ Overworld_ClearSavedMusic();
+ Overworld_ChangeMusicTo(0x016d);
return FALSE;
}
@@ -2919,7 +2918,7 @@ void sub_8088A30(struct Task *task)
mapObject = &gMapObjects[gPlayerAvatar.mapObjectId];
if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(mapObject))
{
- gUnknown_0202FF84[0] = task->data[15] | 0x80000000;
+ gFieldEffectArguments[0] = task->data[15] | 0x80000000;
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
task->data[0]++;
}
@@ -2934,9 +2933,9 @@ void sub_8088A78(struct Task *task)
sub_805B980(mapObject, GetPlayerAvatarGraphicsIdByStateId(3));
FieldObjectClearAnimIfSpecialAnimFinished(mapObject);
FieldObjectSetSpecialAnim(mapObject, sub_80608D0(mapObject->placeholder18));
- gUnknown_0202FF84[0] = task->data[1];
- gUnknown_0202FF84[1] = task->data[2];
- gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId;
+ gFieldEffectArguments[0] = task->data[1];
+ gFieldEffectArguments[1] = task->data[2];
+ gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId;
mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_SURF_BLOB);
task->data[0]++;
}
@@ -2970,7 +2969,7 @@ u8 FldEff_NPCFlyOut(void)
sprite->oam.paletteNum = 0;
sprite->oam.priority = 1;
sprite->callback = sub_8088BC4;
- sprite->data1 = gUnknown_0202FF84[0];
+ sprite->data1 = gFieldEffectArguments[0];
PlaySE(SE_W019);
return spriteId;
}
@@ -3009,7 +3008,7 @@ u8 FldEff_UseFly(void)
{
u8 taskId;
taskId = CreateTask(sub_8088C70, 0xfe);
- gTasks[taskId].data[1] = gUnknown_0202FF84[0];
+ gTasks[taskId].data[1] = gFieldEffectArguments[0];
return 0;
}
@@ -3040,7 +3039,7 @@ void sub_8088CF8(struct Task *task)
if (FieldObjectClearAnimIfSpecialAnimFinished(mapObject))
{
task->data[0]++;
- gUnknown_0202FF84[0] = task->data[1];
+ gFieldEffectArguments[0] = task->data[1];
FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
}
}
diff --git a/src/field/field_effect_helpers.c b/src/field/field_effect_helpers.c
new file mode 100644
index 000000000..2ad8bdce3
--- /dev/null
+++ b/src/field/field_effect_helpers.c
@@ -0,0 +1,1632 @@
+#include "global.h"
+#include "sprite.h"
+#include "fieldmap.h"
+#include "metatile_behavior.h"
+#include "songs.h"
+#include "sound.h"
+#include "field_map_obj.h"
+#include "field_camera.h"
+#include "field_map_obj_helpers.h"
+#include "field_weather.h"
+#include "field_effect.h"
+#include "field_ground_effect.h"
+#include "field_effect_helpers.h"
+
+static void sub_81269E0(struct Sprite *);
+static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite);
+static void npc_pal_op_A(struct MapObject *, u8);
+static void npc_pal_op_B(struct MapObject *, u8);
+static void sub_81275A0(struct Sprite *);
+static void sub_81275C4(struct Sprite *);
+static void sub_8127DA0(struct Sprite *);
+static void sub_8127DD0(struct Sprite *);
+static void sub_8127E30(struct Sprite *);
+static void sub_812882C(struct Sprite *, u8, u8);
+static void sub_81278D8(struct Sprite *);
+static void sub_8127FD4(struct MapObject *, struct Sprite *);
+static void sub_812800C(struct MapObject *, struct Sprite *);
+static void sub_81280A0(struct MapObject *, struct Sprite *, struct Sprite *);
+static void sub_8128174(struct Sprite *);
+static u32 ShowDisguiseFieldEffect(u8, u8, u8);
+
+const u8 UnusedEggString_8401E28[] = _("タマゴ");
+
+const u16 gUnknown_08401E2C[] = {
+ 0x0c,
+ 0x1c,
+ 0x2c
+};
+
+const u8 gUnknown_08401E32[] = {
+ 0,
+ 1,
+ 2,
+ 3
+};
+
+const u16 gUnknown_08401E36[] = {
+ 4,
+ 4,
+ 4,
+ 16
+};
+
+void (*const gUnknown_08401E40[])(struct Sprite *) = {
+ sub_81275A0,
+ sub_81275C4
+};
+
+void (*const gUnknown_08401E48[])(struct Sprite *) = {
+ sub_8127DA0,
+ sub_8127DD0,
+ sub_8127E30
+};
+
+const u8 gUnknown_08401E54[] = {
+ 0,
+ 0,
+ 1,
+ 2,
+ 3
+};
+
+const u16 gUnknown_08401E5A[] = {
+ 3,
+ 7
+};
+
+void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag)
+{
+ struct Sprite *newSprite;
+
+ newSprite = &gSprites[obj_unfreeze(sprite, sprite->pos1.x, sprite->pos1.y, 0x98)];
+ newSprite->callback = sub_81269E0;
+ newSprite->oam.priority = 3;
+ newSprite->oam.paletteNum = gUnknown_0830FD14[newSprite->oam.paletteNum];
+ newSprite->usingSheet = TRUE;
+ newSprite->anims = gDummySpriteAnimTable;
+ StartSpriteAnim(newSprite, 0);
+ newSprite->affineAnims = gDummySpriteAffineAnimTable;
+ newSprite->affineAnimBeginning = TRUE;
+ newSprite->subspriteMode = 0;
+ newSprite->data0 = sprite->data0;
+ newSprite->data1 = mapObject->localId;
+ newSprite->data7 = flag;
+ npc_pal_op(mapObject, newSprite);
+ if (!flag)
+ {
+ newSprite->oam.affineMode = 1;
+ }
+}
+
+static s16 sub_81268D0(struct MapObject *mapObject)
+{
+ return GetFieldObjectGraphicsInfo(mapObject->graphicsId)->height - 2;
+}
+
+static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 whichElement;
+ u16 unk_8041e2c[ARRAY_COUNT(gUnknown_08401E2C)];
+
+ memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C);
+ sprite->data2 = 0;
+ if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E))))
+ {
+ sprite->data2 = unk_8041e2c[whichElement - 1];
+ npc_pal_op_A(mapObject, sprite->oam.paletteNum);
+ }
+ else
+ {
+ npc_pal_op_B(mapObject, sprite->oam.paletteNum);
+ }
+}
+
+static void npc_pal_op_B(struct MapObject *mapObject, u8 paletteNum)
+{
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ if (graphicsInfo->paletteTag2 != 0x11ff)
+ {
+ if (graphicsInfo->paletteSlot == 0)
+ {
+ npc_load_two_palettes__no_record(graphicsInfo->paletteTag1, paletteNum);
+ }
+ else if (graphicsInfo->paletteSlot == 10)
+ {
+ npc_load_two_palettes__and_record(graphicsInfo->paletteTag1, paletteNum);
+ }
+ else
+ {
+ pal_patch_for_npc(npc_paltag_by_palslot(paletteNum), paletteNum);
+ }
+ sub_807D78C(paletteNum);
+ }
+}
+
+static void npc_pal_op_A(struct MapObject *mapObject, u8 paletteNum)
+{
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ if (graphicsInfo->paletteTag2 != 0x11ff)
+ {
+ pal_patch_for_npc(graphicsInfo->paletteTag2, paletteNum);
+ sub_807D78C(paletteNum);
+ }
+}
+
+static void sub_81269E0(struct Sprite *sprite)
+{
+ struct MapObject *mapObject;
+ struct Sprite *oldSprite;
+
+ mapObject = &gMapObjects[sprite->data0];
+ oldSprite = &gSprites[mapObject->spriteId];
+ if (!mapObject->active || !mapObject->mapobj_bit_17 || mapObject->localId != sprite->data1)
+ {
+ sprite->inUse = FALSE;
+ }
+ else
+ {
+ sprite->oam.paletteNum = gUnknown_0830FD14[oldSprite->oam.paletteNum];
+ sprite->oam.shape = oldSprite->oam.shape;
+ sprite->oam.size = oldSprite->oam.size;
+ sprite->oam.matrixNum = oldSprite->oam.matrixNum | 0x10;
+ sprite->oam.tileNum = oldSprite->oam.tileNum;
+ sprite->subspriteTables = oldSprite->subspriteTables;
+ sprite->subspriteTableNum = oldSprite->subspriteTableNum;
+ sprite->invisible = oldSprite->invisible;
+ sprite->pos1.x = oldSprite->pos1.x;
+ sprite->pos1.y = oldSprite->pos1.y + sub_81268D0(mapObject) + sprite->data2;
+ sprite->centerToCornerVecX = oldSprite->centerToCornerVecX;
+ sprite->centerToCornerVecY = oldSprite->centerToCornerVecY;
+ sprite->pos2.x = oldSprite->pos2.x;
+ sprite->pos2.y = -oldSprite->pos2.y;
+ sprite->coordOffsetEnabled = oldSprite->coordOffsetEnabled;
+ if (sprite->data7 == FALSE)
+ {
+ sprite->oam.matrixNum = 0;
+ if (oldSprite->oam.matrixNum & 0x8)
+ {
+ sprite->oam.matrixNum = 1;
+ }
+ }
+ }
+}
+
+u8 sub_8126B54(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[8] /*gFieldEffectSpriteTemplate_Arrow*/, 0, 0, 0x52);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->invisible = TRUE;
+ }
+ return spriteId;
+}
+
+void objid_set_invisible(u8 spriteId)
+{
+ gSprites[spriteId].invisible = TRUE;
+}
+
+void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y)
+{
+ s16 x2;
+ s16 y2;
+ struct Sprite *sprite;
+
+ sprite = &gSprites[spriteId];
+ if (sprite->invisible || sprite->data0 != x || sprite->data1 != y)
+ {
+ sub_80603CC(x, y, &x2, &y2);
+ sprite = &gSprites[spriteId];
+ sprite->pos1.x = x2 + 8;
+ sprite->pos1.y = y2 + 8;
+ sprite->invisible = FALSE;
+ sprite->data0 = x;
+ sprite->data1 = y;
+ StartSpriteAnim(sprite, animNum - 1);
+ }
+}
+
+u32 FldEff_Shadow(void)
+{
+ u8 mapObjectId;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ u8 spriteId;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[gUnknown_08401E32[graphicsInfo->shadowSize]], 0, 0, 0x94);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ gSprites[spriteId].data0 = gFieldEffectArguments[0];
+ gSprites[spriteId].data1 = gFieldEffectArguments[1];
+ gSprites[spriteId].data2 = gFieldEffectArguments[2];
+ gSprites[spriteId].data3 = (graphicsInfo->height >> 1) - gUnknown_08401E36[graphicsInfo->shadowSize];
+ }
+ return 0;
+}
+
+void oamc_shadow(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ struct Sprite *linkedSprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId))
+ {
+ FieldEffectStop(sprite, FLDEFF_SHADOW);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sprite->oam.priority = linkedSprite->oam.priority;
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = linkedSprite->pos1.y + sprite->data3;
+ if (!mapObject->active || !mapObject->mapobj_bit_22 || MetatileBehavior_IsPokeGrass(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1E) || MetatileBehavior_IsSurfableWaterOrUnderwater(mapObject->mapobj_unk_1F) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1E) || MetatileBehavior_IsReflective(mapObject->mapobj_unk_1F))
+ {
+ FieldEffectStop(sprite, FLDEFF_SHADOW);
+ }
+ }
+}
+
+u32 FldEff_TallGrass(void)
+{
+ s16 x;
+ s16 y;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ x = gFieldEffectArguments[0];
+ y = gFieldEffectArguments[1];
+ sub_8060470(&x, &y, 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[4], x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = gFieldEffectArguments[0];
+ sprite->data2 = gFieldEffectArguments[1];
+ sprite->data3 = gFieldEffectArguments[4];
+ sprite->data4 = gFieldEffectArguments[5];
+ sprite->data5 = gFieldEffectArguments[6];
+ if (gFieldEffectArguments[7])
+ {
+ SeekSpriteAnim(sprite, 4);
+ }
+ }
+ return 0;
+}
+
+void unc_grass_normal(struct Sprite *sprite)
+{
+ u8 mapNum;
+ u8 mapGroup;
+ u8 metatileBehavior;
+ u8 localId;
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+
+ mapNum = sprite->data5 >> 8;
+ mapGroup = sprite->data5;
+ if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup))
+ {
+ sprite->data1 -= gCamera.x;
+ sprite->data2 -= gCamera.y;
+ sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup;
+ }
+ localId = sprite->data3 >> 8;
+ mapNum = sprite->data3;
+ mapGroup = sprite->data4;
+ metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2);
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsTallGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded))
+ {
+ FieldEffectStop(sprite, FLDEFF_TALL_GRASS);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2))
+ {
+ sprite->data7 = TRUE;
+ }
+ metatileBehavior = 0;
+ if (sprite->animCmdIndex == 0)
+ {
+ metatileBehavior = 4;
+ }
+ sub_806487C(sprite, 0);
+ sub_812882C(sprite, sprite->data0, metatileBehavior);
+ }
+}
+
+u32 FldEff_JumpTallGrass(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[10], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = 12;
+ }
+ return 0;
+}
+
+u8 sub_8126FF0(u8 localId, u8 mapNum, u8 mapGroup, s16 x, s16 y)
+{
+ struct Sprite *sprite;
+ u8 i;
+
+ for (i = 0; i < MAX_SPRITES; i ++)
+ {
+ if (gSprites[i].inUse)
+ {
+ sprite = &gSprites[i];
+ if (sprite->callback == unc_grass_normal && (x == sprite->data1 && y == sprite->data2) && (localId == (u8)(sprite->data3 >> 8) && mapNum == (sprite->data3 & 0xFF) && mapGroup == sprite->data4))
+ {
+ return i;
+ }
+ }
+ }
+ return MAX_SPRITES;
+}
+
+u32 FldEff_LongGrass(void)
+{
+ s16 x;
+ s16 y;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ x = gFieldEffectArguments[0];
+ y = gFieldEffectArguments[1];
+ sub_8060470(&x, &y, 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[15], x, y, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = ZCoordToPriority(gFieldEffectArguments[2]);
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = gFieldEffectArguments[0];
+ sprite->data2 = gFieldEffectArguments[1];
+ sprite->data3 = gFieldEffectArguments[4];
+ sprite->data4 = gFieldEffectArguments[5];
+ sprite->data5 = gFieldEffectArguments[6];
+ if (gFieldEffectArguments[7])
+ {
+ SeekSpriteAnim(sprite, 6);
+ }
+ }
+ return 0;
+}
+
+void unc_grass_tall(struct Sprite *sprite)
+{
+ u8 mapNum;
+ u8 mapGroup;
+ u8 metatileBehavior;
+ u8 localId;
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+
+ mapNum = sprite->data5 >> 8;
+ mapGroup = sprite->data5;
+ if (gCamera.field_0 && (gSaveBlock1.location.mapNum != mapNum || gSaveBlock1.location.mapGroup != mapGroup))
+ {
+ sprite->data1 -= gCamera.x;
+ sprite->data2 -= gCamera.y;
+ sprite->data5 = ((u8)gSaveBlock1.location.mapNum << 8) | (u8)gSaveBlock1.location.mapGroup;
+ }
+ localId = sprite->data3 >> 8;
+ mapNum = sprite->data3;
+ mapGroup = sprite->data4;
+ metatileBehavior = MapGridGetMetatileBehaviorAt(sprite->data1, sprite->data2);
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjectId) || !MetatileBehavior_IsLongGrass(metatileBehavior) || (sprite->data7 && sprite->animEnded))
+ {
+ FieldEffectStop(sprite, FLDEFF_LONG_GRASS);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ if ((mapObject->coords2.x != sprite->data1 || mapObject->coords2.y != sprite->data2) && (mapObject->coords3.x != sprite->data1 || mapObject->coords3.y != sprite->data2))
+ {
+ sprite->data7 = TRUE;
+ }
+ sub_806487C(sprite, 0);
+ sub_812882C(sprite, sprite->data0, 0);
+ }
+}
+
+u32 FldEff_JumpLongGrass(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[16], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = 18;
+ }
+ return 0;
+}
+
+u32 FldEff_ShortGrass(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[30], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &(gSprites[spriteId]);
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->data0 = gFieldEffectArguments[0];
+ sprite->data1 = gFieldEffectArguments[1];
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->data3 = gSprites[mapObject->spriteId].pos1.x;
+ sprite->data4 = gSprites[mapObject->spriteId].pos1.y;
+ }
+ return 0;
+}
+
+void sub_8127334(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ s16 x;
+ s16 y;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *linkedSprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_18)
+ {
+ FieldEffectStop(sprite, FLDEFF_SHORT_GRASS);
+ }
+ else
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
+ linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ y = linkedSprite->pos1.y;
+ x = linkedSprite->pos1.x;
+ if (x != sprite->data3 || y != sprite->data4)
+ {
+ sprite->data3 = x;
+ sprite->data4 = y;
+ if (sprite->animEnded)
+ {
+ StartSpriteAnim(sprite, 0);
+ }
+ }
+ sprite->pos1.x = x;
+ sprite->pos1.y = y;
+ sprite->pos2.y = (graphicsInfo->height >> 1) - 8;
+ sprite->subpriority = linkedSprite->subpriority - 1;
+ sprite->oam.priority = linkedSprite->oam.priority;
+ sub_806487C(sprite, linkedSprite->invisible);
+ }
+}
+
+u32 FldEff_SandFootprints(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[11], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data7 = FLDEFF_SAND_FOOTPRINTS;
+ StartSpriteAnim(sprite, gFieldEffectArguments[4]);
+ }
+ return 0;
+}
+
+u32 FldEff_DeepSandFootprints(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[23], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data7 = FLDEFF_DEEP_SAND_FOOTPRINTS;
+ StartSpriteAnim(sprite, gFieldEffectArguments[4]);
+ }
+ return spriteId;
+}
+
+u32 FldEff_BikeTireTracks(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[27], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data7 = FLDEFF_BIKE_TIRE_TRACKS;
+ StartSpriteAnim(sprite, gFieldEffectArguments[4]);
+ }
+ return spriteId;
+}
+
+void sub_8127584(struct Sprite *sprite)
+{
+ gUnknown_08401E40[sprite->data0](sprite);
+}
+
+static void sub_81275A0(struct Sprite *sprite)
+{
+ if (++sprite->data1 > 40)
+ {
+ sprite->data0 = 1;
+ }
+ sub_806487C(sprite, FALSE);
+}
+
+static void sub_81275C4(struct Sprite *sprite)
+{
+ sprite->invisible ^= 1;
+ sprite->data1 ++;
+ sub_806487C(sprite, sprite->invisible);
+ if (sprite->data1 > 56)
+ {
+ FieldEffectStop(sprite, sprite->data7);
+ }
+}
+
+u32 FldEff_Splash(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *linkedSprite;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sprite->oam.priority = linkedSprite->oam.priority;
+ sprite->data0 = gFieldEffectArguments[0];
+ sprite->data1 = gFieldEffectArguments[1];
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
+ PlaySE(SE_MIZU);
+ }
+ return 0;
+}
+
+void sub_81276B4(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+
+ if (sprite->animEnded || TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId))
+ {
+ FieldEffectStop(sprite, FLDEFF_SPLASH);
+ }
+ else
+ {
+ sprite->pos1.x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x;
+ sprite->pos1.y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y;
+ sub_806487C(sprite, FALSE);
+ }
+}
+
+u32 FldEff_JumpSmallSplash(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[14], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = FLDEFF_JUMP_SMALL_SPLASH;
+ }
+ return 0;
+}
+
+u32 FldEff_JumpBigSplash(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[12], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = FLDEFF_JUMP_BIG_SPLASH;
+ }
+ return 0;
+}
+
+u32 FldEff_FeetInFlowingWater(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[13], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ sprite = &gSprites[spriteId];
+ sprite->callback = sub_81278D8;
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->data0 = gFieldEffectArguments[0];
+ sprite->data1 = gFieldEffectArguments[1];
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->data3 = -1;
+ sprite->data4 = -1;
+ sprite->pos2.y = (graphicsInfo->height >> 1) - 4;
+ StartSpriteAnim(sprite, 1);
+ }
+ return 0;
+}
+
+static void sub_81278D8(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ struct Sprite *linkedSprite;
+ struct MapObject *mapObject;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_19)
+ {
+ FieldEffectStop(sprite, FLDEFF_FEET_IN_FLOWING_WATER);
+ }
+ else
+ {
+ mapObject = &gMapObjects[mapObjectId];
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = linkedSprite->pos1.y;
+ sprite->subpriority = linkedSprite->subpriority;
+ sub_806487C(sprite, FALSE);
+ if (mapObject->coords2.x != sprite->data3 || mapObject->coords2.y != sprite->data4)
+ {
+ sprite->data3 = mapObject->coords2.x;
+ sprite->data4 = mapObject->coords2.y;
+ if (!sprite->invisible)
+ {
+ PlaySE(SE_MIZU);
+ }
+ }
+ }
+}
+
+u32 FldEff_Ripple(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[5], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = FLDEFF_RIPPLE;
+ }
+ return 0;
+}
+
+u32 FldEff_HotSpringsWater(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[31], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->data0 = gFieldEffectArguments[0];
+ sprite->data1 = gFieldEffectArguments[1];
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->data3 = gSprites[mapObject->spriteId].pos1.x;
+ sprite->data4 = gSprites[mapObject->spriteId].pos1.y;
+ }
+ return 0;
+}
+
+void sub_8127A7C(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *linkedSprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_21)
+ {
+ FieldEffectStop(sprite, FLDEFF_HOT_SPRINGS_WATER);
+ }
+ else
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
+ linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 8;
+ sprite->subpriority = linkedSprite->subpriority - 1;
+ sub_806487C(sprite, FALSE);
+ }
+}
+
+u32 FldEff_Unknown19(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[17], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = FLDEFF_UNKNOWN_19;
+ }
+ return 0;
+}
+
+u32 FldEff_Unknown20(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[18], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = FLDEFF_UNKNOWN_20;
+ }
+ return 0;
+}
+
+u32 FldEff_Unknown21(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[19], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = FLDEFF_UNKNOWN_21;
+ }
+ return 0;
+}
+
+u32 FldEff_Unknown22(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[20], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = FLDEFF_UNKNOWN_22;
+ }
+ return 0;
+}
+
+void ash(s16 x, s16 y, u16 c, s16 d)
+{
+ gFieldEffectArguments[0] = x;
+ gFieldEffectArguments[1] = y;
+ gFieldEffectArguments[2] = 0x52;
+ gFieldEffectArguments[3] = 1;
+ gFieldEffectArguments[4] = c;
+ gFieldEffectArguments[5] = d;
+ FieldEffectStart(FLDEFF_ASH);
+}
+
+u32 FldEff_Ash(void)
+{
+ s16 x;
+ s16 y;
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ x = gFieldEffectArguments[0];
+ y = gFieldEffectArguments[1];
+ sub_8060470(&x, &y, 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[6], x, y, gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data1 = gFieldEffectArguments[0];
+ sprite->data2 = gFieldEffectArguments[1];
+ sprite->data3 = gFieldEffectArguments[4];
+ sprite->data4 = gFieldEffectArguments[5];
+ }
+ return 0;
+}
+
+void sub_8127D84(struct Sprite *sprite)
+{
+ gUnknown_08401E48[sprite->data0](sprite);
+}
+
+static void sub_8127DA0(struct Sprite *sprite)
+{
+ sprite->invisible = TRUE;
+ sprite->animPaused = TRUE;
+ if (--sprite->data4 == 0)
+ {
+ sprite->data0 = 1;
+ }
+}
+
+static void sub_8127DD0(struct Sprite *sprite)
+{
+ sprite->invisible = FALSE;
+ sprite->animPaused = FALSE;
+ MapGridSetMetatileIdAt(sprite->data1, sprite->data2, sprite->data3);
+ CurrentMapDrawMetatileAt(sprite->data1, sprite->data2);
+ gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_2 = TRUE;
+ sprite->data0 = 2;
+}
+
+static void sub_8127E30(struct Sprite *sprite)
+{
+ sub_806487C(sprite, FALSE);
+ if (sprite->animEnded)
+ {
+ FieldEffectStop(sprite, FLDEFF_ASH);
+ }
+}
+
+u32 FldEff_SurfBlob(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[7], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x96);
+ if (spriteId !=MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.paletteNum = 0;
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->data3 = -1;
+ sprite->data6 = -1;
+ sprite->data7 = -1;
+ }
+ FieldEffectActiveListRemove(FLDEFF_SURF_BLOB);
+ return spriteId;
+}
+
+void sub_8127ED0(u8 spriteId, u8 value)
+{
+ gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF) | (value & 0xF);
+}
+
+void sub_8127EFC(u8 spriteId, u8 value)
+{
+ gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF0) | ((value & 0xF) << 4);
+}
+
+void sub_8127F28(u8 spriteId, u8 value, s16 data1)
+{
+ gSprites[spriteId].data0 = (gSprites[spriteId].data0 & ~0xF00) | ((value & 0xF) << 8);
+ gSprites[spriteId].data1 = data1;
+}
+
+static u8 sub_8127F5C(struct Sprite *sprite)
+{
+ return sprite->data0 & 0xF;
+}
+
+static u8 sub_8127F64(struct Sprite *sprite)
+{
+ return (sprite->data0 & 0xF0) >> 4;
+}
+
+static u8 sub_8127F70(struct Sprite *sprite)
+{
+ return (sprite->data0 & 0xF00) >> 8;
+}
+
+void sub_8127F7C(struct Sprite *sprite)
+{
+ struct MapObject *mapObject;
+ struct Sprite *linkedSprite;
+
+ mapObject = &gMapObjects[sprite->data2];
+ linkedSprite = &gSprites[mapObject->spriteId];
+ sub_8127FD4(mapObject, sprite);
+ sub_812800C(mapObject, sprite);
+ sub_81280A0(mapObject, linkedSprite, sprite);
+ sprite->oam.priority = linkedSprite->oam.priority;
+}
+
+static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ u8 unk_8041E54[ARRAY_COUNT(gUnknown_08401E54)];
+
+ memcpy(unk_8041E54, gUnknown_08401E54, sizeof gUnknown_08401E54);
+ if (sub_8127F64(sprite) == 0)
+ {
+ StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]);
+ }
+}
+
+#ifdef NONMATCHING
+static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ s16 x;
+ s16 y;
+ u8 i;
+
+ x = mapObject->coords2.x;
+ y = mapObject->coords2.y;
+ if (sprite->pos2.y == 0 && (x != sprite->data6 || y != sprite->data7))
+ {
+ sprite->data5 = sprite->pos2.y;
+ for (sprite->data6 = x, sprite->data7 = y, i = DIR_SOUTH; i <= DIR_EAST; i ++, x = sprite->data6, y = sprite->data7)
+ {
+ MoveCoords(i, &x, &y);
+ if (MapGridGetZCoordAt(x, y) == 3)
+ {
+ sprite->data5 ++;
+ break;
+ }
+ }
+ }
+}
+#else
+__attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, struct Sprite *sprite)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r8\n"
+ "\tpush {r7}\n"
+ "\tsub sp, 0x4\n"
+ "\tadds r4, r1, 0\n"
+ "\tldrh r2, [r0, 0x10]\n"
+ "\tmov r1, sp\n"
+ "\tstrh r2, [r1]\n"
+ "\tldrh r1, [r0, 0x12]\n"
+ "\tmov r0, sp\n"
+ "\tadds r0, 0x2\n"
+ "\tstrh r1, [r0]\n"
+ "\tmovs r2, 0x26\n"
+ "\tldrsh r3, [r4, r2]\n"
+ "\tmov r8, r0\n"
+ "\tcmp r3, 0\n"
+ "\tbne _08128094\n"
+ "\tmov r0, sp\n"
+ "\tmovs r5, 0\n"
+ "\tldrsh r2, [r0, r5]\n"
+ "\tmovs r5, 0x3A\n"
+ "\tldrsh r0, [r4, r5]\n"
+ "\tcmp r2, r0\n"
+ "\tbne _08128048\n"
+ "\tlsls r0, r1, 16\n"
+ "\tasrs r0, 16\n"
+ "\tmovs r5, 0x3C\n"
+ "\tldrsh r1, [r4, r5]\n"
+ "\tcmp r0, r1\n"
+ "\tbeq _08128094\n"
+ "_08128048:\n"
+ "\tstrh r3, [r4, 0x38]\n"
+ "\tstrh r2, [r4, 0x3A]\n"
+ "\tmov r1, r8\n"
+ "\tmovs r2, 0\n"
+ "\tldrsh r0, [r1, r2]\n"
+ "\tstrh r0, [r4, 0x3C]\n"
+ "\tmovs r5, 0x1\n"
+ "\tmov r7, r8\n"
+ "\tmov r6, sp\n"
+ "_0812805A:\n"
+ "\tadds r0, r5, 0\n"
+ "\tmov r1, sp\n"
+ "\tadds r2, r7, 0\n"
+ "\tbl MoveCoords\n"
+ "\tmovs r1, 0\n"
+ "\tldrsh r0, [r6, r1]\n"
+ "\tmovs r2, 0\n"
+ "\tldrsh r1, [r7, r2]\n"
+ "\tbl MapGridGetZCoordAt\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x3\n"
+ "\tbne _08128080\n"
+ "\tldrh r0, [r4, 0x38]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrh r0, [r4, 0x38]\n"
+ "\tb _08128094\n"
+ "_08128080:\n"
+ "\tadds r0, r5, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r5, r0, 24\n"
+ "\tldrh r0, [r4, 0x3A]\n"
+ "\tstrh r0, [r6]\n"
+ "\tldrh r0, [r4, 0x3C]\n"
+ "\tmov r1, r8\n"
+ "\tstrh r0, [r1]\n"
+ "\tcmp r5, 0x4\n"
+ "\tbls _0812805A\n"
+ "_08128094:\n"
+ "\tadd sp, 0x4\n"
+ "\tpop {r3}\n"
+ "\tmov r8, r3\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+#endif
+
+static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite)
+{
+ u16 unk_8401E5A[ARRAY_COUNT(gUnknown_08401E5A)];
+ u8 v0;
+
+ memcpy(unk_8401E5A, gUnknown_08401E5A, sizeof gUnknown_08401E5A);
+ v0 = sub_8127F5C(sprite);
+ if (v0 != 0)
+ {
+ if (((u16)(++ sprite->data4) & unk_8401E5A[sprite->data5]) == 0)
+ {
+ sprite->pos2.y += sprite->data3;
+ }
+ if ((sprite->data4 & 0x0F) == 0)
+ {
+ sprite->data3 = -sprite->data3;
+ }
+ if (v0 != 2)
+ {
+ if (sub_8127F70(sprite) == 0)
+ {
+ linkedSprite->pos2.y = sprite->pos2.y;
+ }
+ else
+ {
+ linkedSprite->pos2.y = sprite->data1 + sprite->pos2.y;
+ }
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = linkedSprite->pos1.y + 8;
+ }
+ }
+}
+
+u8 sub_8128124(u8 oldSpriteId)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ spriteId = CreateSpriteAtEnd(&gDummySpriteTemplate, 0, 0, -1);
+ sprite = &gSprites[spriteId];
+ sprite->callback = sub_8128174;
+ sprite->invisible = TRUE;
+ sprite->data0 = oldSpriteId;
+ sprite->data1 = 1;
+ return spriteId;
+}
+
+static void sub_8128174(struct Sprite *sprite)
+{
+ struct Sprite *oldSprite;
+
+ oldSprite = &gSprites[sprite->data0];
+ if (((sprite->data2++) & 0x03) == 0)
+ {
+ oldSprite->pos2.y += sprite->data1;
+ }
+ if ((sprite->data2 & 0x0F) == 0)
+ {
+ sprite->data1 = -sprite->data1;
+ }
+}
+
+u32 FldEff_Dust(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 12);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[9], gFieldEffectArguments[0], gFieldEffectArguments[1], 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->data0 = gFieldEffectArguments[2];
+ sprite->data1 = 10;
+ }
+ return 0;
+}
+
+u32 FldEff_SandPile(void)
+{
+ u8 mapObjectId;
+ struct MapObject *mapObject;
+ u8 spriteId;
+ struct Sprite *sprite;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+
+ mapObjectId = GetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ mapObject = &gMapObjects[mapObjectId];
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[29], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gSprites[mapObject->spriteId].oam.priority;
+ sprite->data0 = gFieldEffectArguments[0];
+ sprite->data1 = gFieldEffectArguments[1];
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->data3 = gSprites[mapObject->spriteId].pos1.x;
+ sprite->data4 = gSprites[mapObject->spriteId].pos1.y;
+ sprite->pos2.y = (graphicsInfo->height >> 1) - 2;
+ SeekSpriteAnim(sprite, 2);
+ }
+ return 0;
+}
+
+void sub_81282E0(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ s16 x;
+ s16 y;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjectId) || !gMapObjects[mapObjectId].mapobj_bit_20)
+ {
+ FieldEffectStop(sprite, FLDEFF_SAND_PILE);
+ }
+ else
+ {
+ y = gSprites[gMapObjects[mapObjectId].spriteId].pos1.y;
+ x = gSprites[gMapObjects[mapObjectId].spriteId].pos1.x;
+ if (x != sprite->data3 || y != sprite->data4)
+ {
+ sprite->data3 = x;
+ sprite->data4 = y;
+ if (sprite->animEnded)
+ {
+ StartSpriteAnim(sprite, 0);
+ }
+ }
+ sprite->pos1.x = x;
+ sprite->pos1.y = y;
+ sprite->subpriority = gSprites[gMapObjects[mapObjectId].spriteId].subpriority;
+ sub_806487C(sprite, FALSE);
+ }
+}
+
+u32 FldEff_Bubbles(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 0);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[34], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = 1;
+ }
+ return 0;
+}
+
+void sub_8128410(struct Sprite *sprite)
+{
+ sprite->data0 += 0x80;
+ sprite->data0 &= 0x100;
+ sprite->pos1.y -= sprite->data0 >> 8;
+ sub_806487C(sprite, FALSE);
+ if (sprite->invisible || sprite->animEnded)
+ {
+ FieldEffectStop(sprite, FLDEFF_BUBBLES);
+ }
+}
+
+u32 FldEff_BerryTreeGrowthSparkle(void)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 4);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2]);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled = TRUE;
+ sprite->oam.priority = gFieldEffectArguments[3];
+ sprite->oam.paletteNum = 5;
+ sprite->data0 = FLDEFF_BERRY_TREE_GROWTH_SPARKLE;
+ }
+ return 0;
+}
+
+u32 FldEff_TreeDisguise(void)
+{
+ return ShowDisguiseFieldEffect(FLDEFF_TREE_DISGUISE, 0x18, 0x04);
+}
+
+
+u32 FldEff_MountainDisguise(void)
+{
+ return ShowDisguiseFieldEffect(FLDEFF_MOUNTAIN_DISGUISE, 0x19, 0x03);
+}
+
+
+u32 FldEff_SandDisguise(void)
+{
+ return ShowDisguiseFieldEffect(FLDEFF_SAND_DISGUISE, 0x1C, 0x02);
+}
+
+static u32 ShowDisguiseFieldEffect(u8 fldEff, u8 templateIdx, u8 paletteNum)
+{
+ u8 spriteId;
+ struct Sprite *sprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(gFieldEffectArguments[0], gFieldEffectArguments[1], gFieldEffectArguments[2], &spriteId))
+ {
+ FieldEffectActiveListRemove(fldEff);
+ return MAX_SPRITES;
+ }
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[templateIdx], 0, 0, 0);
+ if (spriteId != MAX_SPRITES)
+ {
+ sprite = &gSprites[spriteId];
+ sprite->coordOffsetEnabled ++;
+ sprite->oam.paletteNum = paletteNum;
+ sprite->data1 = fldEff;
+ sprite->data2 = gFieldEffectArguments[0];
+ sprite->data3 = gFieldEffectArguments[1];
+ sprite->data4 = gFieldEffectArguments[2];
+ }
+ return spriteId;
+}
+
+void sub_81285AC(struct Sprite *sprite)
+{
+ u8 mapObjectId;
+ const struct MapObjectGraphicsInfo *graphicsInfo;
+ struct Sprite *linkedSprite;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data2, sprite->data3, sprite->data4, &mapObjectId))
+ {
+ FieldEffectStop(sprite, sprite->data1);
+ }
+ // else {
+ graphicsInfo = GetFieldObjectGraphicsInfo(gMapObjects[mapObjectId].graphicsId);
+ linkedSprite = &gSprites[gMapObjects[mapObjectId].spriteId];
+ sprite->invisible = linkedSprite->invisible;
+ sprite->pos1.x = linkedSprite->pos1.x;
+ sprite->pos1.y = (graphicsInfo->height >> 1) + linkedSprite->pos1.y - 16;
+ sprite->subpriority = linkedSprite->subpriority - 1;
+ if (sprite->data0 == 1)
+ {
+ sprite->data0 ++;
+ StartSpriteAnim(sprite, 1);
+ }
+ if (sprite->data0 == 2 && sprite->animEnded)
+ {
+ sprite->data7 = 1;
+ }
+ if (sprite->data0 == 3)
+ {
+ FieldEffectStop(sprite, sprite->data1);
+ }
+ // }
+}
+
+void sub_812869C(struct MapObject *mapObject)
+{
+ if (mapObject->mapobj_unk_21 == 1)
+ {
+ gSprites[mapObject->mapobj_unk_1A].data0 ++;
+ }
+}
+
+bool8 sub_81286C4(struct MapObject *mapObject)
+{
+ struct Sprite *sprite;
+
+ if (mapObject->mapobj_unk_21 == 2)
+ {
+ return TRUE;
+ }
+ if (mapObject->mapobj_unk_21 == 0)
+ {
+ return TRUE;
+ }
+ sprite = &gSprites[mapObject->mapobj_unk_1A];
+ if (sprite->data7)
+ {
+ mapObject->mapobj_unk_21 = 2;
+ sprite->data0 ++;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+u32 FldEff_Sparkle(void)
+{
+ u8 spriteId;
+
+ gFieldEffectArguments[0] += 7;
+ gFieldEffectArguments[1] += 7;
+ sub_8060470((s16 *)&gFieldEffectArguments[0], (s16 *)&gFieldEffectArguments[1], 8, 8);
+ spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[35], gFieldEffectArguments[0], gFieldEffectArguments[1], 0x52);
+ if (spriteId != MAX_SPRITES)
+ {
+ gSprites[spriteId].oam.priority = gFieldEffectArguments[2];
+ gSprites[spriteId].coordOffsetEnabled = TRUE;
+ }
+ return 0;
+}
+
+void sub_8128774(struct Sprite *sprite)
+{
+ if (sprite->data0 == 0)
+ {
+ if (sprite->animEnded)
+ {
+ sprite->invisible = TRUE;
+ sprite->data0 ++;
+ }
+ if (sprite->data0 == 0)
+ {
+ return;
+ }
+ }
+ if (++ sprite->data1 >= 35)
+ {
+ FieldEffectStop(sprite, FLDEFF_SPARKLE);
+ }
+}
+
+void sub_81287C4(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ FieldEffectStop(sprite, sprite->data1);
+ }
+ else
+ {
+ sub_806487C(sprite, FALSE);
+ SetObjectSubpriorityByZCoord(sprite->data0, sprite, 0);
+ }
+}
+
+void sub_8128800(struct Sprite *sprite)
+{
+ if (sprite->animEnded)
+ {
+ FieldEffectStop(sprite, sprite->data0);
+ }
+ else
+ {
+ sub_806487C(sprite, FALSE);
+ }
+}
+
+#ifdef NONMATCHING
+static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
+{
+ u8 i;
+ s16 xlo;
+ s16 xhi;
+ s16 lx;
+ s16 lyhi;
+ s16 ly;
+ s16 ylo;
+ s16 yhi;
+ struct MapObject *mapObject; // r4
+ const struct MapObjectGraphicsInfo *graphicsInfo; // destroyed
+ struct Sprite *linkedSprite; // r5
+
+ SetObjectSubpriorityByZCoord(z, sprite, offset);
+ for (i = 0; i < 16; i ++)
+ {
+ mapObject = &gMapObjects[i];
+ if (mapObject->active)
+ {
+ graphicsInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
+ linkedSprite = &gSprites[mapObject->spriteId];
+ xhi = sprite->pos1.x + sprite->centerToCornerVecX;
+ xlo = sprite->pos1.x - sprite->centerToCornerVecX;
+ lx = linkedSprite->pos1.x;
+ if (xhi < lx && xlo > lx)
+ {
+ lyhi = linkedSprite->pos1.y + linkedSprite->centerToCornerVecY;
+ ly = linkedSprite->pos1.y;
+ ylo = sprite->pos1.y - sprite->centerToCornerVecY;
+ yhi = ylo + linkedSprite->centerToCornerVecY;
+ if ((lyhi < yhi || lyhi < ylo) && ly > yhi)
+ {
+ if (sprite->subpriority <= linkedSprite->subpriority)
+ {
+ sprite->subpriority = linkedSprite->subpriority + 2;
+ break;
+ }
+ }
+ }
+ }
+ }
+}
+#else
+__attribute__((naked)) static void sub_812882C(struct Sprite *sprite /*r6*/, u8 z, u8 offset)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tadds r6, r0, 0\n"
+ "\tadds r0, r1, 0\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tlsls r2, 24\n"
+ "\tlsrs r2, 24\n"
+ "\tadds r1, r6, 0\n"
+ "\tbl SetObjectSubpriorityByZCoord\n"
+ "\tmovs r7, 0\n"
+ "_08128842:\n"
+ "\tlsls r0, r7, 3\n"
+ "\tadds r0, r7\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _081288DC @ =gMapObjects\n"
+ "\tadds r4, r0, r1\n"
+ "\tldrb r0, [r4]\n"
+ "\tlsls r0, 31\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _081288E4\n"
+ "\tldrb r0, [r4, 0x5]\n"
+ "\tbl GetFieldObjectGraphicsInfo\n"
+ "\tldrb r1, [r4, 0x4]\n"
+ "\tlsls r0, r1, 4\n"
+ "\tadds r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _081288E0 @ =gSprites\n"
+ "\tadds r5, r0, r1\n"
+ "\tadds r0, r6, 0\n"
+ "\tadds r0, 0x28\n"
+ "\tmovs r2, 0\n"
+ "\tldrsb r2, [r0, r2]\n"
+ "\tldrh r0, [r6, 0x20]\n"
+ "\tadds r1, r0, r2\n"
+ "\tsubs r0, r2\n"
+ "\tlsls r0, 16\n"
+ "\tlsrs r4, r0, 16\n"
+ "\tlsls r1, 16\n"
+ "\tasrs r1, 16\n"
+ "\tmovs r0, 0x20\n"
+ "\tldrsh r2, [r5, r0]\n"
+ "\tcmp r1, r2\n"
+ "\tbge _081288E4\n"
+ "\tlsls r0, r4, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r0, r2\n"
+ "\tble _081288E4\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r0, 0x29\n"
+ "\tmovs r3, 0\n"
+ "\tldrsb r3, [r0, r3]\n"
+ "\tldrh r2, [r5, 0x22]\n"
+ "\tadds r2, r3\n"
+ "\tldrh r4, [r5, 0x22]\n"
+ "\tadds r0, r6, 0\n"
+ "\tadds r0, 0x29\n"
+ "\tmovs r1, 0\n"
+ "\tldrsb r1, [r0, r1]\n"
+ "\tldrh r0, [r6, 0x22]\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 16\n"
+ "\tasrs r0, 16\n"
+ "\tadds r3, r0, r3\n"
+ "\tlsls r2, 16\n"
+ "\tasrs r2, 16\n"
+ "\tlsls r3, 16\n"
+ "\tasrs r3, 16\n"
+ "\tcmp r2, r3\n"
+ "\tblt _081288BC\n"
+ "\tcmp r2, r0\n"
+ "\tbge _081288E4\n"
+ "_081288BC:\n"
+ "\tlsls r0, r4, 16\n"
+ "\tasrs r0, 16\n"
+ "\tcmp r0, r3\n"
+ "\tble _081288E4\n"
+ "\tadds r2, r6, 0\n"
+ "\tadds r2, 0x43\n"
+ "\tadds r0, r5, 0\n"
+ "\tadds r0, 0x43\n"
+ "\tldrb r1, [r0]\n"
+ "\tldrb r0, [r2]\n"
+ "\tcmp r0, r1\n"
+ "\tbhi _081288E4\n"
+ "\tadds r0, r1, 0x2\n"
+ "\tstrb r0, [r2]\n"
+ "\tb _081288EE\n"
+ "\t.align 2, 0\n"
+ "_081288DC: .4byte gMapObjects\n"
+ "_081288E0: .4byte gSprites\n"
+ "_081288E4:\n"
+ "\tadds r0, r7, 0x1\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r7, r0, 24\n"
+ "\tcmp r7, 0xF\n"
+ "\tbls _08128842\n"
+ "_081288EE:\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0");
+}
+#endif
diff --git a/src/field/field_fadetransition.c b/src/field/field_fadetransition.c
new file mode 100644
index 000000000..82776d18c
--- /dev/null
+++ b/src/field/field_fadetransition.c
@@ -0,0 +1,626 @@
+#include "global.h"
+#include "cable_club.h"
+#include "fieldmap.h"
+#include "field_door.h"
+#include "field_effect.h"
+#include "field_fadetransition.h"
+#include "field_map_obj.h"
+#include "field_map_obj_helpers.h"
+#include "field_player_avatar.h"
+#include "field_special_scene.h"
+#include "field_weather.h"
+#include "fldeff_flash.h"
+#include "link.h"
+#include "main.h"
+#include "map_obj_lock.h"
+#include "metatile_behavior.h"
+#include "palette.h"
+#include "overworld.h"
+#include "script.h"
+#include "songs.h"
+#include "sound.h"
+#include "start_menu.h"
+#include "task.h"
+
+void sub_8080B9C(u8);
+void task_map_chg_seq_0807E20C(u8);
+void task_map_chg_seq_0807E2CC(u8);
+void task0A_fade_n_map_maybe(u8);
+void sub_808115C(u8);
+
+void palette_bg_fill_white(void)
+{
+ CpuFastFill16(RGB_WHITE, gPlttBufferFaded, PLTT_SIZE);
+}
+
+void palette_bg_fill_black(void)
+{
+ CpuFastFill16(RGB_BLACK, gPlttBufferFaded, PLTT_SIZE);
+}
+
+void pal_fill_for_map_transition(void)
+{
+ u8 map_light = get_map_type_from_warp0();
+ switch (fade_type_for_given_maplight_pair(map_light, Overworld_GetMapTypeOfSaveblockLocation()))
+ {
+ case 0:
+ fade_screen(0, 0);
+ palette_bg_fill_black();
+ break;
+ case 1:
+ fade_screen(2, 0);
+ palette_bg_fill_white();
+ }
+}
+
+void pal_fill_black(void)
+{
+ fade_screen(0, 0);
+ palette_bg_fill_black();
+}
+
+void fade_8080918(void)
+{
+ u8 light_level = Overworld_GetMapTypeOfSaveblockLocation();
+ switch (sub_810CDB8(light_level, warp1_get_mapheader()->mapType))
+ {
+ case 0:
+ fade_screen(1, 0);
+ break;
+ case 1:
+ fade_screen(3, 0);
+ }
+}
+
+void sub_8080958(u8 arg)
+{
+ sub_8059B88(!arg);
+}
+
+void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID)
+{
+ if (sub_8080E70() == TRUE)
+ {
+ DestroyTask(taskID);
+ EnableBothScriptContexts();
+ }
+}
+
+void sub_8080990(void)
+{
+ ScriptContext2_Enable();
+ Overworld_PlaySpecialMapMusic();
+ pal_fill_black();
+ CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10);
+}
+
+void sub_80809B0(void)
+{
+ ScriptContext2_Enable();
+ pal_fill_black();
+ CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10);
+}
+
+void task_mpl_807DD60(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[1] = sub_8083664();
+ task->data[0]++;
+ break;
+ case 1:
+ if (gTasks[task->data[1]].isActive != TRUE)
+ {
+ pal_fill_for_map_transition();
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (sub_8080E70() == TRUE)
+ {
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ }
+}
+
+void sub_8080A3C(void)
+{
+ ScriptContext2_Enable();
+ Overworld_PlaySpecialMapMusic();
+ palette_bg_fill_black();
+ CreateTask(task_mpl_807DD60, 10);
+}
+
+void sub_8080A5C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_80084A4();
+ task->data[0]++;
+ break;
+ case 1:
+ if (sub_8007ECC())
+ {
+ pal_fill_for_map_transition();
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ if (sub_8080E70() == TRUE)
+ {
+ sub_8007B14();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ }
+}
+
+void sub_8080AC4(void)
+{
+ ScriptContext2_Enable();
+ Overworld_PlaySpecialMapMusic();
+ palette_bg_fill_black();
+ CreateTask(sub_8080A5C, 10);
+}
+
+void sub_8080AE4(void)
+{
+ s16 x, y;
+ u8 behavior;
+ TaskFunc func;
+ PlayerGetDestCoords(&x, &y);
+ behavior = MapGridGetMetatileBehaviorAt(x, y);
+ if (MetatileBehavior_IsDoor(behavior) == TRUE)
+ func = sub_8080B9C;
+ else if (MetatileBehavior_IsNonAnimDoor(behavior) == TRUE)
+ func = task_map_chg_seq_0807E20C;
+ else
+ func = task_map_chg_seq_0807E2CC;
+ CreateTask(func, 10);
+}
+
+void mapldr_default(void)
+{
+ Overworld_PlaySpecialMapMusic();
+ pal_fill_for_map_transition();
+ sub_8080AE4();
+ ScriptContext2_Enable();
+}
+
+void sub_8080B60(void)
+{
+ Overworld_PlaySpecialMapMusic();
+ pal_fill_black();
+ sub_8080AE4();
+ ScriptContext2_Enable();
+}
+
+void sub_8080B78(void)
+{
+ Overworld_PlaySpecialMapMusic();
+ pal_fill_for_map_transition();
+ PlaySE(SE_TK_WARPOUT);
+ CreateTask(task_map_chg_seq_0807E2CC, 10);
+ ScriptContext2_Enable();
+}
+
+void sub_8080B9C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s16 *x = &task->data[2];
+ s16 *y = &task->data[3];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_8080958(0);
+ FreezeMapObjects();
+ PlayerGetDestCoords(x, y);
+ FieldSetDoorOpened(*x, *y);
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (sub_8080E70())
+ {
+ u8 mapObjId;
+ sub_8080958(1);
+ mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 8);
+ task->data[0] = 2;
+ }
+ break;
+ case 2:
+ if (walkrun_is_standing_still())
+ {
+ u8 mapObjId;
+ task->data[1] = FieldAnimateDoorClose(*x, *y);
+ mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]);
+ task->data[0] = 3;
+ }
+ break;
+ case 3:
+ if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
+ {
+ UnfreezeMapObjects();
+ task->data[0] = 4;
+ }
+ break;
+ case 4:
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void task_map_chg_seq_0807E20C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s16 *x = &task->data[2];
+ s16 *y = &task->data[3];
+
+ switch (task->data[0])
+ {
+ case 0:
+ sub_8080958(0);
+ FreezeMapObjects();
+ PlayerGetDestCoords(x, y);
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (sub_8080E70())
+ {
+ u8 mapObjId;
+ sub_8080958(1);
+ mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], GetGoSpeed0AnimId(player_get_direction_lower_nybble()));
+ task->data[0] = 2;
+ }
+ break;
+ case 2:
+ if (walkrun_is_standing_still())
+ {
+ UnfreezeMapObjects();
+ task->data[0] = 3;
+ }
+ break;
+ case 3:
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void task_map_chg_seq_0807E2CC(u8 taskId)
+{
+ switch (gTasks[taskId].data[0])
+ {
+ case 0:
+ FreezeMapObjects();
+ ScriptContext2_Enable();
+ gTasks[taskId].data[0]++;
+ break;
+ case 1:
+ if (sub_8080E70())
+ {
+ UnfreezeMapObjects();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_8080DC4(u8 taskId)
+{
+ if (sub_8080E70() == TRUE)
+ {
+ DestroyTask(taskId);
+ CreateTask(sub_80712B4, 80);
+ }
+}
+
+void atk17_seteffectuser(void)
+{
+ pal_fill_black();
+ CreateStartMenuTask(sub_8080DC4);
+ ScriptContext2_Enable();
+}
+
+void task_mpl_807E3C8(u8 taskId)
+{
+ if (sub_8080E70() == 1)
+ {
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+ sub_8064E2C();
+ }
+}
+
+void sub_8080E28(void)
+{
+ ScriptContext2_Enable();
+ pal_fill_black();
+ CreateTask(task_mpl_807E3C8, 10);
+}
+
+void sub_8080E44(void)
+{
+ ScriptContext2_Enable();
+ Overworld_PlaySpecialMapMusic();
+ pal_fill_black();
+ CreateTask(task_mpl_807E3C8, 10);
+}
+
+bool32 sub_8080E64(void)
+{
+ return gPaletteFade.active;
+}
+
+bool32 sub_8080E70(void)
+{
+ if (sub_807D770() == TRUE)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_8080E88(void)
+{
+ ScriptContext2_Enable();
+ sub_8053FF8();
+ fade_8080918();
+ PlayRainSoundEffect();
+ PlaySE(SE_KAIDAN);
+ gFieldCallback = mapldr_default;
+ CreateTask(task0A_fade_n_map_maybe, 10);
+}
+
+void sp13E_warp_to_last_warp(void)
+{
+ ScriptContext2_Enable();
+ sub_8053FF8();
+ fade_8080918();
+ PlayRainSoundEffect();
+ gFieldCallback = mapldr_default;
+ CreateTask(task0A_fade_n_map_maybe, 10);
+}
+
+void sub_8080EF0(void)
+{
+ ScriptContext2_Enable();
+ gFieldCallback = mapldr_default;
+ CreateTask(sub_808115C, 10);
+}
+
+void sp13F_fall_to_last_warp(void)
+{
+ sp13E_warp_to_last_warp();
+ gFieldCallback = sub_8086748;
+}
+
+void sub_8080F2C(u8 metatileBehavior)
+{
+ ScriptContext2_Enable();
+ sub_8086A2C(metatileBehavior, 10);
+}
+
+void sub_8080F48(void)
+{
+ ScriptContext2_Enable();
+ sub_80871B8(10);
+}
+
+void sub_8080F58(void)
+{
+ ScriptContext2_Enable();
+ sub_8087654(10);
+}
+
+void sub_8080F68(void)
+{
+ ScriptContext2_Enable();
+ sub_8053FF8();
+ fade_8080918();
+ PlaySE(SE_TK_WARPIN);
+ CreateTask(task0A_fade_n_map_maybe, 10);
+ gFieldCallback = sub_8080B78;
+}
+
+void sub_8080F9C(void)
+{
+ ScriptContext2_Enable();
+ fade_8080918();
+ CreateTask(task0A_fade_n_map_maybe, 10);
+ gFieldCallback = sub_80C791C;
+}
+
+void sub_8080FC4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ ScriptContext2_Enable();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!sub_8080E64() && sub_8054034())
+ {
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ warp_in();
+ SetMainCallback2(sub_8054588);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void DoCableClubWarp(void)
+{
+ ScriptContext2_Enable();
+ sub_8053FF8();
+ fade_8080918();
+ PlaySE(SE_KAIDAN);
+ CreateTask(sub_8080FC4, 10);
+}
+
+void sub_8081050(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ switch (data[0])
+ {
+ case 0:
+ ClearLinkCallback_2();
+ fade_screen(1, 0);
+ sub_8053FF8();
+ PlaySE(SE_KAIDAN);
+ data[0]++;
+ break;
+ case 1:
+ if (!sub_8080E64() && sub_8054034())
+ {
+ sub_800832C();
+ data[0]++;
+ }
+ break;
+ case 2:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ warp_in();
+ SetMainCallback2(CB2_LoadMap);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+void sub_80810DC(void)
+{
+ CreateTask(sub_8081050, 10);
+}
+
+void task0A_fade_n_map_maybe(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ FreezeMapObjects();
+ ScriptContext2_Enable();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!sub_8080E64() && sub_8054034())
+ {
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ warp_in();
+ SetMainCallback2(CB2_LoadMap);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_808115C(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s16 *x = &task->data[2];
+ s16 *y = &task->data[3];
+
+ switch (task->data[0])
+ {
+ case 0:
+ FreezeMapObjects();
+ PlayerGetDestCoords(x, y);
+ PlaySE(GetDoorSoundEffect(*x, *y - 1));
+ task->data[1] = FieldAnimateDoorOpen(*x, *y - 1);
+ task->data[0] = 1;
+ break;
+ case 1:
+ if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
+ {
+ u8 mapObjId;
+ mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectClearAnimIfSpecialAnimActive(&gMapObjects[mapObjId]);
+ mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], 9);
+ task->data[0] = 2;
+ }
+ break;
+ case 2:
+ if (walkrun_is_standing_still())
+ {
+ u8 mapObjId;
+ task->data[1] = FieldAnimateDoorClose(*x, *y - 1);
+ mapObjId = GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0);
+ FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]);
+ sub_8080958(0);
+ task->data[0] = 3;
+ }
+ break;
+ case 3:
+ if (task->data[1] < 0 || gTasks[task->data[1]].isActive != TRUE)
+ {
+ task->data[0] = 4;
+ }
+ break;
+ case 4:
+ sub_8053FF8();
+ fade_8080918();
+ PlayRainSoundEffect();
+ task->data[0] = 0;
+ task->func = task0A_fade_n_map_maybe;
+ break;
+ }
+}
+
+void sub_80812C8(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->data[0])
+ {
+ case 0:
+ FreezeMapObjects();
+ ScriptContext2_Enable();
+ task->data[0]++;
+ break;
+ case 1:
+ if (!sub_8080E64() && sub_8054034())
+ {
+ task->data[0]++;
+ }
+ break;
+ case 2:
+ warp_in();
+ SetMainCallback2(sub_8054534);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+void sub_8081334(void)
+{
+ ScriptContext2_Enable();
+ sub_8053FF8();
+ fade_8080918();
+ PlayRainSoundEffect();
+ PlaySE(SE_KAIDAN);
+ gFieldCallback = sub_8080B60;
+ CreateTask(sub_80812C8, 10);
+}
diff --git a/src/field/field_ground_effect.c b/src/field/field_ground_effect.c
new file mode 100644
index 000000000..5af8ea3e3
--- /dev/null
+++ b/src/field/field_ground_effect.c
@@ -0,0 +1,796 @@
+#include "global.h"
+#include "field_ground_effect.h"
+#include "field_effect.h"
+#include "field_effect_helpers.h"
+#include "field_map_obj_helpers.h"
+#include "fieldmap.h"
+#include "metatile_behavior.h"
+
+static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8);
+static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8);
+static void DoTracksGroundEffect_BikeTireTracks(
+ struct MapObject *mapObj, struct Sprite *sprite, u8);
+void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite);
+void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite);
+void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite);
+u8 GetReflectionTypeByMetatileBehavior(u32 behavior);
+
+static void GetAllGroundEffectFlags_OnSpawn(struct MapObject *mapObj, u32 *flags)
+{
+ FieldObjectUpdateMetatileBehaviors(mapObj);
+ GetGroundEffectFlags_Reflection(mapObj, flags);
+ GetGroundEffectFlags_TallGrassOnSpawn(mapObj, flags);
+ GetGroundEffectFlags_LongGrassOnSpawn(mapObj, flags);
+ GetGroundEffectFlags_SandPile(mapObj, flags);
+ GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
+ GetGroundEffectFlags_ShortGrass(mapObj, flags);
+ GetGroundEffectFlags_HotSprings(mapObj, flags);
+}
+
+static void GetAllGroundEffectFlags_OnBeginStep(struct MapObject *mapObj, u32 *flags)
+{
+ FieldObjectUpdateMetatileBehaviors(mapObj);
+ GetGroundEffectFlags_Reflection(mapObj, flags);
+ GetGroundEffectFlags_TallGrassOnBeginStep(mapObj, flags);
+ GetGroundEffectFlags_LongGrassOnBeginStep(mapObj, flags);
+ GetGroundEffectFlags_Tracks(mapObj, flags);
+ GetGroundEffectFlags_SandPile(mapObj, flags);
+ GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
+ GetGroundEffectFlags_Puddle(mapObj, flags);
+ GetGroundEffectFlags_ShortGrass(mapObj, flags);
+ GetGroundEffectFlags_HotSprings(mapObj, flags);
+}
+
+static void GetAllGroundEffectFlags_OnFinishStep(struct MapObject *mapObj, u32 *flags)
+{
+ FieldObjectUpdateMetatileBehaviors(mapObj);
+ GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
+ GetGroundEffectFlags_SandPile(mapObj, flags);
+ GetGroundEffectFlags_Puddle(mapObj, flags);
+ GetGroundEffectFlags_Ripple(mapObj, flags);
+ GetGroundEffectFlags_ShortGrass(mapObj, flags);
+ GetGroundEffectFlags_HotSprings(mapObj, flags);
+ GetGroundEffectFlags_Seaweed(mapObj, flags);
+ GetGroundEffectFlags_JumpLanding(mapObj, flags);
+}
+
+void FieldObjectUpdateMetatileBehaviors(struct MapObject *mapObj)
+{
+ mapObj->mapobj_unk_1F = MapGridGetMetatileBehaviorAt(mapObj->coords3.x, mapObj->coords3.y);
+ mapObj->mapobj_unk_1E = MapGridGetMetatileBehaviorAt(mapObj->coords2.x, mapObj->coords2.y);
+}
+
+void GetGroundEffectFlags_Reflection(struct MapObject *mapObj, u32 *flags)
+{
+ u32 reflectionFlags[2] = { 0x00000020, 0x00000010 };
+ u8 type = FieldObjectCheckForReflectiveSurface(mapObj);
+
+ if (type)
+ {
+ if (!mapObj->mapobj_bit_17)
+ {
+ mapObj->mapobj_bit_17 = 0;
+ mapObj->mapobj_bit_17 = 1;
+ *flags |= reflectionFlags[type - 1];
+ }
+ }
+ else
+ {
+ mapObj->mapobj_bit_17 = 0;
+ }
+}
+
+void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E))
+ *flags |= 0x1;
+}
+
+void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E))
+ *flags |= 0x2;
+}
+
+void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
+ *flags |= 0x4;
+}
+
+void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
+ *flags |= 0x8;
+}
+
+void GetGroundEffectFlags_Tracks(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F))
+ {
+ *flags |= 0x100;
+ }
+ else if (MetatileBehavior_IsSandOrDeepSand(mapObj->mapobj_unk_1F)
+ || MetatileBehavior_IsUnusedFootprintMetatile(mapObj->mapobj_unk_1F))
+ {
+ *flags |= 0x80;
+ }
+}
+
+void GetGroundEffectFlags_SandPile(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F))
+ {
+ if (!mapObj->mapobj_bit_20)
+ {
+ mapObj->mapobj_bit_20 = 0;
+ mapObj->mapobj_bit_20 = 1;
+ *flags |= 0x800;
+ }
+ }
+ else
+ {
+ mapObj->mapobj_bit_20 = 0;
+ }
+}
+
+void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *mapObj, u32 *flags)
+{
+ if ((MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1F))
+ || (MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1F)))
+ {
+ if (!mapObj->mapobj_bit_19)
+ {
+ mapObj->mapobj_bit_19 = 0;
+ mapObj->mapobj_bit_19 = 1;
+ *flags |= 0x40;
+ }
+ }
+ else
+ {
+ mapObj->mapobj_bit_19 = 0;
+ }
+}
+
+void GetGroundEffectFlags_Puddle(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1F))
+ {
+ *flags |= 0x400;
+ }
+}
+
+void GetGroundEffectFlags_Ripple(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_HasRipples(mapObj->mapobj_unk_1E))
+ *flags |= 0x200;
+}
+
+void GetGroundEffectFlags_ShortGrass(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1F))
+ {
+ if (!mapObj->mapobj_bit_18)
+ {
+ mapObj->mapobj_bit_18 = 0;
+ mapObj->mapobj_bit_18 = 1;
+ *flags |= 0x20000;
+ }
+ }
+ else
+ {
+ mapObj->mapobj_bit_18 = 0;
+ }
+}
+
+void GetGroundEffectFlags_HotSprings(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1E)
+ && MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1F))
+ {
+ if (!mapObj->mapobj_bit_21)
+ {
+ mapObj->mapobj_bit_21 = 0;
+ mapObj->mapobj_bit_21 = 1;
+ *flags |= 0x40000;
+ }
+ }
+ else
+ {
+ mapObj->mapobj_bit_21 = 0;
+ }
+}
+
+void GetGroundEffectFlags_Seaweed(struct MapObject *mapObj, u32 *flags)
+{
+ if (MetatileBehavior_IsSeaweed(mapObj->mapobj_unk_1E))
+ *flags |= 0x80000;
+}
+
+void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags)
+{
+ typedef bool8 (*MetatileFunc)(u8);
+
+ static const MetatileFunc metatileFuncs[] = {
+ MetatileBehavior_IsTallGrass,
+ MetatileBehavior_IsLongGrass,
+ MetatileBehavior_IsPuddle,
+ MetatileBehavior_IsSurfableWaterOrUnderwater,
+ MetatileBehavior_IsShallowFlowingWater,
+ MetatileBehavior_IsATile,
+ };
+
+ static const u32 jumpLandingFlags[] = {
+ 0x00001000, // Landing in tall grass
+ 0x00002000, // Landing in long grass
+ 0x00004000, // Landing on puddle
+ 0x00008000, // Landing on surfable water or underwater
+ 0x00004000, // Landing on shallow flowing water
+ 0x00010000, // Landing on any other type of ground
+ };
+
+ if (mapObj->mapobj_bit_5 && !mapObj->mapobj_bit_25)
+ {
+ u8 i;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (metatileFuncs[i](mapObj->mapobj_unk_1E))
+ {
+ *flags |= jumpLandingFlags[i];
+ return;
+ }
+ }
+ }
+}
+
+u8 FieldObjectCheckForReflectiveSurface(struct MapObject *mapObj)
+{
+ const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
+
+ // ceil div by tile width?
+ s16 width = (info->width + 8) >> 4;
+ s16 height = (info->height + 8) >> 4;
+ s16 i;
+ s16 j;
+ u8 result;
+ u8 b;
+ s16 one;
+
+#define RETURN_REFLECTION_TYPE_AT(x, y) \
+ b = MapGridGetMetatileBehaviorAt(x, y); \
+ result = GetReflectionTypeByMetatileBehavior(b); \
+ if (result != 0) \
+ return result;
+
+ for (i = 0, one = 1; i < height; i++)
+ {
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x, mapObj->coords2.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x, mapObj->coords3.y + one + i)
+ for (j = 1; j < width; j++)
+ {
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x + j, mapObj->coords2.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords2.x - j, mapObj->coords2.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x + j, mapObj->coords3.y + one + i)
+ RETURN_REFLECTION_TYPE_AT(mapObj->coords3.x - j, mapObj->coords3.y + one + i)
+ }
+ }
+ return 0;
+
+#undef RETURN_REFLECTION_TYPE_AT
+}
+
+u8 GetReflectionTypeByMetatileBehavior(u32 behavior)
+{
+ if (MetatileBehavior_IsIce(behavior))
+ return 1;
+ else if (MetatileBehavior_IsReflective(behavior))
+ return 2;
+ else
+ return 0;
+}
+
+u8 GetLedgeJumpDirection(s16 x, s16 y, u8 z)
+{
+ static bool8 (*const unknown_08376040[])(u8) = {
+ MetatileBehavior_IsJumpSouth,
+ MetatileBehavior_IsJumpNorth,
+ MetatileBehavior_IsJumpWest,
+ MetatileBehavior_IsJumpEast,
+ };
+
+ u8 b;
+ u8 index = z;
+
+ if (index == 0)
+ return 0;
+ else if (index > 4)
+ index -= 4;
+
+ index--;
+ b = MapGridGetMetatileBehaviorAt(x, y);
+
+ if (unknown_08376040[index](b) == 1)
+ return index + 1;
+
+ return 0;
+}
+
+void FieldObjectSetSpriteOamTableForLongGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ if (mapObj->mapobj_bit_4)
+ return;
+
+ if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
+ return;
+
+ if (!MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1F))
+ return;
+
+ sprite->subspriteTableNum = 4;
+
+ if (ZCoordToPriority(mapObj->elevation) == 1)
+ sprite->subspriteTableNum = 5;
+}
+
+bool8 IsZCoordMismatchAt(u8 z, s16 x, s16 y)
+{
+ u8 mapZ;
+
+ if (z == 0)
+ return FALSE;
+
+ mapZ = MapGridGetZCoordAt(x, y);
+
+ if (mapZ == 0 || mapZ == 0xF)
+ return FALSE;
+
+ if (mapZ != z)
+ return TRUE;
+
+ return FALSE;
+}
+
+static const u8 sUnknown_08376050[] = {
+ 0x73, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x73, 0x53, 0x00, 0x00, 0x73
+};
+
+// Each byte corresponds to a sprite priority for a field object.
+// This is directly the inverse of gFieldObjectPriorities_08376070.
+static const u8 sFieldObjectPriorities_08376060[] = {
+ 2, 2, 2, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 2
+};
+
+// Each byte corresponds to a sprite priority for a field object.
+// This is the inverse of gFieldObjectPriorities_08376060.
+// 1 = Above player sprite
+// 2 = Below player sprite
+static const u8 sFieldObjectPriorities_08376070[] = {
+ 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 0, 0, 1,
+};
+
+void FieldObjectUpdateZCoordAndPriority(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ if (mapObj->mapobj_bit_26)
+ return;
+
+ FieldObjectUpdateZCoord(mapObj);
+
+ sprite->subspriteTableNum = sFieldObjectPriorities_08376070[mapObj->elevation];
+ sprite->oam.priority = sFieldObjectPriorities_08376060[mapObj->elevation];
+}
+
+void InitObjectPriorityByZCoord(struct Sprite *sprite, u8 z)
+{
+ sprite->subspriteTableNum = sFieldObjectPriorities_08376070[z];
+ sprite->oam.priority = sFieldObjectPriorities_08376060[z];
+}
+
+u8 ZCoordToPriority(u8 z)
+{
+ return sFieldObjectPriorities_08376060[z];
+}
+
+void FieldObjectUpdateZCoord(struct MapObject *mapObj)
+{
+ u8 z = MapGridGetZCoordAt(mapObj->coords2.x, mapObj->coords2.y);
+ u8 z2 = MapGridGetZCoordAt(mapObj->coords3.x, mapObj->coords3.y);
+
+ if (z == 0xF || z2 == 0xF)
+ return;
+
+ mapObj->mapobj_unk_0B_0 = z;
+
+ if (z != 0 && z != 0xF)
+ mapObj->elevation = z;
+}
+
+void SetObjectSubpriorityByZCoord(u8 a, struct Sprite *sprite, u8 b)
+{
+ s32 tmp = sprite->centerToCornerVecY;
+ u32 tmpa = *(u16 *)&sprite->pos1.y;
+ u32 tmpb = *(u16 *)&gSpriteCoordOffsetY;
+ s32 tmp2 = (tmpa - tmp) + tmpb;
+ u16 tmp3 = (0x10 - ((((u32)tmp2 + 8) & 0xFF) >> 4)) * 2;
+ sprite->subpriority = tmp3 + sUnknown_08376050[a] + b;
+}
+
+void FieldObjectUpdateSubpriority(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ if (mapObj->mapobj_bit_26)
+ return;
+
+ SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1);
+}
+
+bool8 AreZCoordsCompatible(u8 a, u8 b)
+{
+ if (a == 0 || b == 0)
+ return TRUE;
+
+ if (a != b)
+ return FALSE;
+
+ return TRUE;
+}
+
+void GroundEffect_SpawnOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u8 *ptr;
+
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectArguments[5] = mapObj->mapGroup;
+
+ ptr = (u8 *)&gSaveBlock1;
+ gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8)
+ | (u8)gSaveBlock1.location.mapGroup;
+
+ gFieldEffectArguments[7] = 1;
+ FieldEffectStart(FLDEFF_TALL_GRASS);
+}
+
+void sub_8063E94(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u8 *ptr;
+
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectArguments[5] = mapObj->mapGroup;
+
+ ptr = (u8 *)&gSaveBlock1;
+ gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8)
+ | (u8)gSaveBlock1.location.mapGroup;
+
+ gFieldEffectArguments[7] = 0;
+ FieldEffectStart(FLDEFF_TALL_GRASS);
+}
+
+void sub_8063EE0(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u8 *ptr;
+
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectArguments[5] = mapObj->mapGroup;
+
+ ptr = (u8 *)&gSaveBlock1;
+ gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8)
+ | (u8)gSaveBlock1.location.mapGroup;
+
+ gFieldEffectArguments[7] = 1;
+ FieldEffectStart(FLDEFF_LONG_GRASS);
+}
+
+void sub_8063F2C(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u8 *ptr;
+
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = (mapObj->localId << 8) | mapObj->mapNum;
+ gFieldEffectArguments[5] = mapObj->mapGroup;
+
+ ptr = (u8 *)&gSaveBlock1;
+ gFieldEffectArguments[6] = ((u8)gSaveBlock1.location.mapNum << 8)
+ | (u8)gSaveBlock1.location.mapGroup;
+
+ gFieldEffectArguments[7] = 0;
+ FieldEffectStart(FLDEFF_LONG_GRASS);
+}
+
+void GroundEffect_WaterReflection(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ SetUpReflection(mapObj, sprite, 0);
+}
+
+void GroundEffect_IceReflection(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ SetUpReflection(mapObj, sprite, 1);
+}
+
+void GroundEffect_FlowingWater(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_FEET_IN_FLOWING_WATER, mapObj);
+}
+
+static void (*const gUnknown_08376080[])(struct MapObject *mapObj, struct Sprite *sprite, u8 a) = {
+ nullsub, DoTracksGroundEffect_Footprints, DoTracksGroundEffect_BikeTireTracks,
+};
+
+void sub_8063FA0(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
+ gUnknown_08376080[info->tracks](mapObj, sprite, 0);
+}
+
+void sub_8063FCC(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ const struct MapObjectGraphicsInfo *info = GetFieldObjectGraphicsInfo(mapObj->graphicsId);
+ gUnknown_08376080[info->tracks](mapObj, sprite, 1);
+}
+
+static void nullsub(struct MapObject *mapObj, struct Sprite *sprite, u8 a)
+{
+}
+
+static void DoTracksGroundEffect_Footprints(struct MapObject *mapObj, struct Sprite *sprite, u8 a)
+{
+ // First half-word is a Field Effect script id. (gFieldEffectScriptPointers)
+ u16 sandFootprints_FieldEffectData[2] = {
+ FLDEFF_SAND_FOOTPRINTS,
+ FLDEFF_DEEP_SAND_FOOTPRINTS
+ };
+
+ gFieldEffectArguments[0] = mapObj->coords3.x;
+ gFieldEffectArguments[1] = mapObj->coords3.y;
+ gFieldEffectArguments[2] = 149;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] = mapObj->mapobj_unk_18;
+ FieldEffectStart(sandFootprints_FieldEffectData[a]);
+}
+
+static void DoTracksGroundEffect_BikeTireTracks(
+ struct MapObject *mapObj, struct Sprite *sprite, u8 a)
+{
+ // Specifies which bike track shape to show next.
+ // For example, when the bike turns from up to right, it will show
+ // a track that curves to the right.
+ // Each 4-byte row corresponds to the initial direction of the bike, and
+ // each byte in that row is for the next direction of the bike in the order
+ // of down, up, left, right.
+ static const u8 bikeTireTracks_Transitions[4][4] = {
+ 1, 2, 7, 8,
+ 1, 2, 6, 5,
+ 5, 8, 3, 4,
+ 6, 7, 3, 4,
+ };
+
+ if (mapObj->coords2.x != mapObj->coords3.x || mapObj->coords2.y != mapObj->coords3.y)
+ {
+ gFieldEffectArguments[0] = mapObj->coords3.x;
+ gFieldEffectArguments[1] = mapObj->coords3.y;
+ gFieldEffectArguments[2] = 149;
+ gFieldEffectArguments[3] = 2;
+ gFieldEffectArguments[4] =
+ bikeTireTracks_Transitions[mapObj->mapobj_unk_20][mapObj->mapobj_unk_18 - 5];
+ FieldEffectStart(FLDEFF_BIKE_TIRE_TRACKS);
+ }
+}
+
+void GroundEffect_Ripple(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ DoRippleFieldEffect(mapObj, sprite);
+}
+
+void GroundEffect_StepOnPuddle(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_SPLASH, mapObj);
+}
+
+void GroundEffect_SandPile(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_SAND_PILE, mapObj);
+}
+
+void GroundEffect_JumpOnTallGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u8 spriteId;
+
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ FieldEffectStart(FLDEFF_JUMP_TALL_GRASS);
+
+ spriteId = sub_8126FF0(
+ mapObj->localId, mapObj->mapNum, mapObj->mapGroup, mapObj->coords2.x, mapObj->coords2.y);
+
+ if (spriteId == MAX_SPRITES)
+ GroundEffect_SpawnOnTallGrass(mapObj, sprite);
+}
+
+void GroundEffect_JumpOnLongGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = 2;
+ FieldEffectStart(FLDEFF_JUMP_LONG_GRASS);
+}
+
+void GroundEffect_JumpOnShallowWater(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_JUMP_SMALL_SPLASH);
+}
+
+void GroundEffect_JumpOnWater(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_JUMP_BIG_SPLASH);
+}
+
+void GroundEffect_JumpLandingDust(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ gFieldEffectArguments[2] = mapObj->elevation;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_DUST);
+}
+
+void GroundEffect_ShortGrass(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_SHORT_GRASS, mapObj);
+}
+
+void GroundEffect_HotSprings(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ oe_exec_and_other_stuff(FLDEFF_HOT_SPRINGS_WATER, mapObj);
+}
+
+void GroundEffect_Seaweed(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ gFieldEffectArguments[0] = mapObj->coords2.x;
+ gFieldEffectArguments[1] = mapObj->coords2.y;
+ FieldEffectStart(FLDEFF_BUBBLES);
+}
+
+static void (*const gUnknown_083760A0[])(struct MapObject *mapObj, struct Sprite *sprite) = {
+ GroundEffect_SpawnOnTallGrass,
+ sub_8063E94,
+ sub_8063EE0,
+ sub_8063F2C,
+ GroundEffect_WaterReflection,
+ GroundEffect_IceReflection,
+ GroundEffect_FlowingWater,
+ sub_8063FA0,
+ sub_8063FCC,
+ GroundEffect_Ripple,
+ GroundEffect_StepOnPuddle,
+ GroundEffect_SandPile,
+ GroundEffect_JumpOnTallGrass,
+ GroundEffect_JumpOnLongGrass,
+ GroundEffect_JumpOnShallowWater,
+ GroundEffect_JumpOnWater,
+ GroundEffect_JumpLandingDust,
+ GroundEffect_ShortGrass,
+ GroundEffect_HotSprings,
+ GroundEffect_Seaweed
+};
+
+void sub_8064218(struct MapObject *mapObj, struct Sprite *sprite, u32 flags)
+{
+ u8 i;
+ for (i = 0; i < ARRAY_COUNT(gUnknown_083760A0); i++, flags >>= 1)
+ if (flags & 1)
+ gUnknown_083760A0[i](mapObj, sprite);
+}
+
+void filters_out_some_ground_effects(struct MapObject *mapObj, u32 *flags)
+{
+ if (mapObj->mapobj_bit_4)
+ {
+ mapObj->mapobj_bit_18 = 0;
+ mapObj->mapobj_bit_20 = 0;
+ mapObj->mapobj_bit_19 = 0;
+ mapObj->mapobj_bit_21 = 0;
+ *flags &= 0xFFF9F7BD;
+ }
+}
+
+void FilterOutStepOnPuddleGroundEffectIfJumping(struct MapObject *mapObj, u32 *flags)
+{
+ if (mapObj->mapobj_bit_5)
+ *flags &= 0xFFFFFBFF;
+}
+
+void DoGroundEffects_OnSpawn(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u32 flags;
+
+ if (mapObj->mapobj_bit_2)
+ {
+ flags = 0;
+ FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
+ GetAllGroundEffectFlags_OnSpawn(mapObj, &flags);
+ FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
+ sub_8064218(mapObj, sprite, flags);
+ mapObj->mapobj_bit_2 = 0;
+ mapObj->mapobj_bit_4 = 0;
+ }
+}
+
+void DoGroundEffects_OnBeginStep(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u32 flags;
+
+ if (mapObj->mapobj_bit_2)
+ {
+ flags = 0;
+ FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
+ GetAllGroundEffectFlags_OnBeginStep(mapObj, &flags);
+ FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
+ filters_out_some_ground_effects(mapObj, &flags);
+ sub_8064218(mapObj, sprite, flags);
+ mapObj->mapobj_bit_2 = 0;
+ mapObj->mapobj_bit_4 = 0;
+ }
+}
+
+void DoGroundEffects_OnFinishStep(struct MapObject *mapObj, struct Sprite *sprite)
+{
+ u32 flags;
+
+ if (mapObj->mapobj_bit_3)
+ {
+ flags = 0;
+ FieldObjectUpdateZCoordAndPriority(mapObj, sprite);
+ GetAllGroundEffectFlags_OnFinishStep(mapObj, &flags);
+ FieldObjectSetSpriteOamTableForLongGrass(mapObj, sprite);
+ FilterOutStepOnPuddleGroundEffectIfJumping(mapObj, &flags);
+ sub_8064218(mapObj, sprite, flags);
+ mapObj->mapobj_bit_3 = 0;
+ mapObj->mapobj_bit_5 = 0;
+ }
+}
diff --git a/src/field_map_obj.c b/src/field/field_map_obj.c
index f60b1b233..0cba448a9 100644
--- a/src/field_map_obj.c
+++ b/src/field/field_map_obj.c
@@ -11,7 +11,7 @@
#include "fieldmap.h"
#include "palette.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "sprite.h"
#include "metatile_behavior.h"
#include "map_constants.h"
@@ -1901,7 +1901,7 @@ extern void CameraObjectReset1(void);
extern struct LinkPlayerMapObject gLinkPlayerMapObjects[];
extern u8 gReservedSpritePaletteCount;
-extern struct Camera gUnknown_0202E844;
+extern struct Camera gCamera;
static u8 gUnknown_030005A4;
static u16 gUnknown_030005A6;
@@ -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;
}
@@ -2986,24 +2986,21 @@ void UpdateFieldObjectCoordsForCameraUpdate(void)
s16 deltaX;
s16 deltaY;
-#ifndef NONMATCHING
- asm(""::"r"(i)); //makes the compiler store i in r3
-#endif
-
- if (gUnknown_0202E844.field_0)
+ if (gCamera.field_0)
{
- for (i = 0, deltaX = gUnknown_0202E844.x, deltaY = gUnknown_0202E844.y; i < 16; i++)
+ deltaX = gCamera.x;
+ deltaY = gCamera.y;
+ for (i = 0; i < 16; i++)
{
- struct MapObject *mapObject = &gMapObjects[i];
- if (mapObject->active)
+ if (gMapObjects[i].active)
{
- mapObject->coords1.x -= deltaX;
- mapObject->coords1.y -= deltaY;
- mapObject->coords2.x -= deltaX;
- mapObject->coords2.y -= deltaY;
- mapObject->coords3.x -= deltaX;
- mapObject->coords3.y -= deltaY;
+ gMapObjects[i].coords1.x -= deltaX;
+ gMapObjects[i].coords1.y -= deltaY;
+ gMapObjects[i].coords2.x -= deltaX;
+ gMapObjects[i].coords2.y -= deltaY;
+ gMapObjects[i].coords3.x -= deltaX;
+ gMapObjects[i].coords3.y -= deltaY;
}
}
}
@@ -3244,7 +3241,7 @@ struct MapObjectTemplate *GetFieldObjectTemplateByLocalIdAndMap(u8 localId, u8 m
return FindFieldObjectTemplateInArrayByLocalId(localId, gSaveBlock1.mapObjectTemplates, gMapHeader.events->mapObjectCount);
else
{
- struct MapHeader *mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum);
+ struct MapHeader *mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
return FindFieldObjectTemplateInArrayByLocalId(localId, mapHeader->events->mapObjects, mapHeader->events->mapObjectCount);
}
@@ -3895,11 +3892,11 @@ u8 do_berry_tree_growth_sparkle_1(struct MapObject *mapObject, struct Sprite *sp
{
if (!(sprite->data7 & 4) && sprite->animNum == 4)
{
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
- FieldEffectStart(0x17);
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
sprite->animNum = 0;
}
return 0;
@@ -3934,11 +3931,11 @@ u8 do_berry_tree_growth_sparkle_2(struct MapObject *mapObject, struct Sprite *sp
sprite->data1 = 3;
sprite->data2 = 0;
sprite->data7 |= 2;
- gUnknown_0202FF84[0] = mapObject->coords2.x;
- gUnknown_0202FF84[1] = mapObject->coords2.y;
- gUnknown_0202FF84[2] = sprite->subpriority - 1;
- gUnknown_0202FF84[3] = sprite->oam.priority;
- FieldEffectStart(0x17);
+ gFieldEffectArguments[0] = mapObject->coords2.x;
+ gFieldEffectArguments[1] = mapObject->coords2.y;
+ gFieldEffectArguments[2] = sprite->subpriority - 1;
+ gFieldEffectArguments[3] = sprite->oam.priority;
+ FieldEffectStart(FLDEFF_BERRY_TREE_GROWTH_SPARKLE);
return 1;
}
@@ -5030,32 +5027,30 @@ u8 sub_805F3C4(struct MapObject *mapObject, struct Sprite *sprite)
return 0;
}
-#ifdef NONMATCHING
-
-u8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8))
+bool8 sub_805F3EC(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8))
{
return 0;
}
-u8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8))
+bool8 sub_805F3F0(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8))
{
- int direction;
- direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2);
- FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2)));
mapObject->mapobj_bit_1 = 1;
sprite->data1 = 2;
return 1;
}
-u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3(u8))
+bool8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, bool8 a3(u8))
{
+ u32 direction;
s16 x;
s16 y;
- int direction;
- direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, a2);
+
+ direction = a2;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
FieldObjectSetRegularAnim(mapObject, sprite, GetGoSpeed0AnimId(direction));
- if (!npc_block_way(mapObject, x, y, direction) || (a3 != NULL && !a3(MapGridGetMetatileBehaviorAt(x, y))))
+ if (npc_block_way(mapObject, x, y, direction) || (a3 != NULL && !a3(MapGridGetMetatileBehaviorAt(x, y))))
{
FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
}
@@ -5063,9 +5058,115 @@ u8 sub_805F438(struct MapObject *mapObject, struct Sprite *sprite, u8 a2, u8 *a3
sprite->data1 = 2;
return 1;
}
-#endif
-asm(".section .text_fmocb2_c\n");
+bool8 sub_805F4F0(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
+ FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
+ FieldObjectSetRegularAnim(mapObject, sprite, sub_8060744(direction));
+ if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ }
+ mapObject->mapobj_bit_1 = TRUE;
+ sprite->data1 = 2;
+ return TRUE;
+}
+
+bool8 sub_805F5A8(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
+ FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
+ FieldObjectSetRegularAnim(mapObject, sprite, sub_806079C(direction));
+ if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ }
+ mapObject->mapobj_bit_1 = TRUE;
+ sprite->data1 = 2;
+ return TRUE;
+}
+
+bool8 sub_805F660(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
+ FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
+ FieldObjectSetRegularAnim(mapObject, sprite, sub_80607C8(direction));
+ if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ }
+ mapObject->mapobj_bit_1 = TRUE;
+ sprite->data1 = 2;
+ return TRUE;
+}
+
+bool8 cph_IM_DIFFERENT(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+{
+ u32 direction;
+
+ direction = playerDirection;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
+ FieldObjectSetRegularAnim(mapObject, sprite, sub_806084C(direction));
+ mapObject->mapobj_bit_1 = TRUE;
+ sprite->data1 = 2;
+ return TRUE;
+}
+
+bool8 sub_805F760(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
+ FieldObjectMoveDestCoords(mapObject, direction, &x, &y);
+ FieldObjectSetRegularAnim(mapObject, sprite, sub_80608A4(direction));
+ if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ }
+ mapObject->mapobj_bit_1 = TRUE;
+ sprite->data1 = 2;
+ return TRUE;
+}
+
+bool8 oac_hopping(struct MapObject *mapObject, struct Sprite *sprite, u8 playerDirection, bool8 tileCB(u8))
+{
+ u32 direction;
+ s16 x;
+ s16 y;
+
+ direction = playerDirection;
+ direction = state_to_direction(gUnknown_0836DC09[mapObject->animPattern], mapObject->mapobj_unk_21, direction);
+ x = mapObject->coords2.x;
+ y = mapObject->coords2.y;
+ sub_8060320(direction, &x, &y, 2, 2);
+ FieldObjectSetRegularAnim(mapObject, sprite, GetJumpLedgeAnimId(direction));
+ if (npc_block_way(mapObject, x, y, direction) || (tileCB != NULL && !tileCB(MapGridGetMetatileBehaviorAt(x, y))))
+ {
+ FieldObjectSetRegularAnim(mapObject, sprite, GetFaceDirectionAnimId(direction));
+ }
+ mapObject->mapobj_bit_1 = TRUE;
+ sprite->data1 = 2;
+ return TRUE;
+}
fieldmap_object_cb(sub_805F8E0, sub_805F904, gUnknown_083755C0);
@@ -5086,8 +5187,8 @@ void FieldObjectCB_TreeDisguise(struct Sprite *sprite)
mapObject = &gMapObjects[sprite->data0];
if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0))
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
- mapObject->mapobj_unk_1A = FieldEffectStart(0x1c);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_TREE_DISGUISE);
mapObject->mapobj_unk_21 = 1;
sprite->data7 ++;
}
@@ -5106,8 +5207,8 @@ void FieldObjectCB_MountainDisguise(struct Sprite *sprite)
mapObject = &gMapObjects[sprite->data0];
if (mapObject->mapobj_unk_21 == 0 || (mapObject->mapobj_unk_21 == 1 && sprite->data7 == 0))
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
- mapObject->mapobj_unk_1A = FieldEffectStart(0x1d);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ mapObject->mapobj_unk_1A = FieldEffectStart(FLDEFF_MOUNTAIN_DISGUISE);
mapObject->mapobj_unk_21 = 1;
sprite->data7 ++;
}
@@ -5364,53 +5465,38 @@ u8 sub_805FF20(struct MapObject *mapObject, u8 direction)
}
bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y);
-bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y);
+static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y);
bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction);
-u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
+u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u32 dirn)
{
+ u8 direction;
+ direction = dirn;
if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y))
- {
return 1;
- }
- if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction))
- {
+ else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction))
return 2;
- } else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))
- {
+ else if (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))
return 2;
- }
- if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
- {
+ else if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
return 3;
- }
- if (CheckForCollisionBetweenFieldObjects(mapObject, x, y))
- {
+ else if (DoesObjectCollideWithObjectAt(mapObject, x, y))
return 4;
- }
return 0;
}
u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
{
- u8 flags;
- flags = 0;
+ u8 flags = 0;
+
if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y))
- {
flags |= 1;
- }
if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction)))
- {
flags |= 2;
- }
if (IsZCoordMismatchAt(mapObject->mapobj_unk_0B_0, x, y))
- {
flags |= 4;
- }
- if (CheckForCollisionBetweenFieldObjects(mapObject, x, y))
- {
+ if (DoesObjectCollideWithObjectAt(mapObject, x, y))
flags |= 8;
- }
return flags;
}
@@ -5418,25 +5504,22 @@ bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x,
{
s16 minv;
s16 maxv;
+
if (mapObject->mapobj_unk_19 != 0)
{
minv = mapObject->coords1.x - (mapObject->mapobj_unk_19);
maxv = mapObject->coords1.x + (mapObject->mapobj_unk_19);
if (minv > x || maxv < x)
- {
- return 1;
- }
+ return TRUE;
}
if (mapObject->mapobj_unk_19b != 0)
{
minv = mapObject->coords1.y - (mapObject->mapobj_unk_19b);
maxv = mapObject->coords1.y + (mapObject->mapobj_unk_19b);
if (minv > y || maxv < y)
- {
- return 1;
- }
+ return TRUE;
}
- return 0;
+ return FALSE;
}
bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction)
@@ -5448,23 +5531,19 @@ bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16
return 0;
}
-bool8 CheckForCollisionBetweenFieldObjects(struct MapObject *mapObject, s16 x, s16 y)
+static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y)
{
- struct MapObject *mapObject2;
u8 i;
- for (i=0; i<16; i++)
+
+ for (i = 0; i < 16; i++)
{
- mapObject2 = &gMapObjects[i];
+ struct MapObject *mapObject2 = &gMapObjects[i];
+
if (mapObject2->active && mapObject2 != mapObject)
{
- if ((mapObject2->coords2.x != x || mapObject2->coords2.y != y) && (mapObject2->coords3.x != x || mapObject2->coords3.y != y))
- {
- continue;
- }
- if (AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0))
- {
- return 1;
- }
+ if (((mapObject2->coords2.x == x && mapObject2->coords2.y == y) || (mapObject2->coords3.x == x && mapObject2->coords3.y == y))
+ && AreZCoordsCompatible(mapObject->mapobj_unk_0B_0, mapObject2->mapobj_unk_0B_0))
+ return TRUE;
}
}
return 0;
@@ -5504,23 +5583,26 @@ void unref_sub_80602F8(u8 direction, s16 *x, s16 *y)
*y += gDirectionToVector[direction].y << 4;
}
-void sub_8060320(u8 direction, s16 *x, s16 *y, s16 deltaX, s16 deltaY)
+void sub_8060320(u32 dirn, s16 *x, s16 *y, s16 deltaX, s16 deltaY)
{
+ u8 direction = dirn;
+ s16 dx2 = deltaX;
+ s16 dy2 = deltaY;
if (gDirectionToVector[direction].x > 0)
{
- *x += deltaX;
+ *x += dx2;
}
if (gDirectionToVector[direction].x < 0)
{
- *x -= deltaX;
+ *x -= dx2;
}
if (gDirectionToVector[direction].y > 0)
{
- *y += deltaY;
+ *y += dy2;
}
if (gDirectionToVector[direction].y < 0)
{
- *y -= deltaY;
+ *y -= dy2;
}
}
@@ -5587,11 +5669,12 @@ void GetFieldObjectMovingCameraOffset(s16 *x, s16 *y)
}
}
-void FieldObjectMoveDestCoords(struct MapObject *mapObject, u8 direction, s16 *x, s16 *y)
+void FieldObjectMoveDestCoords(struct MapObject *mapObject, u32 direction, s16 *x, s16 *y)
{
+ u8 newDirn = direction;
*x = mapObject->coords2.x;
*y = mapObject->coords2.y;
- MoveCoords(direction, x, y);
+ MoveCoords(newDirn, x, y);
}
bool8 FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(struct MapObject *mapObject)
@@ -5705,193 +5788,34 @@ void meta_step(struct MapObject *mapObject, struct Sprite *sprite, u8 (*callback
FieldObjectUpdateSubpriority(mapObject, sprite);
}
-
-u8 GetFaceDirectionAnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756C8, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetSimpleGoAnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756CD, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetGoSpeed0AnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756D2, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_8060744(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756D7, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 d2s_08064034(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756DC, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_806079C(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756E1, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_80607C8(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756E6, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_80607F4(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756EB, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetJumpLedgeAnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756F0, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_806084C(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756F5, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_8060878(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756FA, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_80608A4(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_083756FF, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 sub_80608D0(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_08375704, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetStepInPlaceDelay32AnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_08375709, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetStepInPlaceDelay16AnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_0837570E, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetStepInPlaceDelay8AnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_08375713, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
-
-u8 GetStepInPlaceDelay4AnimId(u8 index)
-{
- u8 directions[5];
- memcpy(directions, gUnknown_08375718, 5);
- if (index >= 5)
- {
- index = 0;
- }
- return directions[index];
-}
+#define dirn_to_anim(name, table)\
+u8 name(u32 idx)\
+{\
+ u8 direction;\
+ u8 animIds[sizeof(table)];\
+ direction = idx;\
+ memcpy(animIds, (table), sizeof(table));\
+ if (direction > DIR_EAST) direction = 0;\
+ return animIds[direction];\
+}
+
+dirn_to_anim(GetFaceDirectionAnimId, gUnknown_083756C8)
+dirn_to_anim(GetSimpleGoAnimId, gUnknown_083756CD)
+dirn_to_anim(GetGoSpeed0AnimId, gUnknown_083756D2)
+dirn_to_anim(sub_8060744, gUnknown_083756D7)
+dirn_to_anim(d2s_08064034, gUnknown_083756DC)
+dirn_to_anim(sub_806079C, gUnknown_083756E1)
+dirn_to_anim(sub_80607C8, gUnknown_083756E6)
+dirn_to_anim(sub_80607F4, gUnknown_083756EB)
+dirn_to_anim(GetJumpLedgeAnimId, gUnknown_083756F0)
+dirn_to_anim(sub_806084C, gUnknown_083756F5)
+dirn_to_anim(sub_8060878, gUnknown_083756FA)
+dirn_to_anim(sub_80608A4, gUnknown_083756FF)
+dirn_to_anim(sub_80608D0, gUnknown_08375704)
+dirn_to_anim(GetStepInPlaceDelay32AnimId, gUnknown_08375709)
+dirn_to_anim(GetStepInPlaceDelay16AnimId, gUnknown_0837570E)
+dirn_to_anim(GetStepInPlaceDelay8AnimId, gUnknown_08375713)
+dirn_to_anim(GetStepInPlaceDelay4AnimId, gUnknown_08375718)
u8 FieldObjectFaceOppositeDirection(struct MapObject *mapObject, u8 direction)
{
@@ -6019,65 +5943,23 @@ u8 GetOppositeDirection(u8 direction)
return directions[direction - 1];
}
-int zffu_offset_calc(u8 a0, u8 a1)
+u32 zffu_offset_calc(u8 a0, u8 a1)
{
return gUnknown_08375757[a0 - 1][a1 - 1];
}
-#ifdef NONMATCHING
-int state_to_direction(u8 a0, u8 a1, u8 a2)
+u32 state_to_direction(u8 a0, u32 a1, u32 a2)
{
- int zffuOffset;
- asm_comment("For some reason, r2 is being backed up to r3 and restored ahead of the zffu call.");
- if (a1 == 0 || a2 == 0 || a1 > 4 || a2 > 4)
+ u32 zffuOffset;
+ u8 a1_2 = a1;
+ u8 a2_2 = a2;
+ if (a1_2 == 0 || a2_2 == 0 || a1_2 > DIR_EAST || a2_2 > DIR_EAST)
{
return 0;
}
- zffuOffset = zffu_offset_calc(a1, a2);
+ zffuOffset = zffu_offset_calc(a1_2, a2);
return gUnknown_08375767[a0 - 1][zffuOffset - 1];
}
-#else
-__attribute__((naked))
-int state_to_direction(u8 a0, u8 a1, u8 a2)
-{
- asm(".syntax unified\n\
- push {r4,lr}\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- lsls r1, 24\n\
- lsrs r1, 24\n\
- adds r0, r1, 0\n\
- lsls r2, 24\n\
- lsrs r2, 24\n\
- cmp r1, 0\n\
- beq _08060BFC\n\
- cmp r2, 0\n\
- beq _08060BFC\n\
- cmp r1, 0x4\n\
- bhi _08060BFC\n\
- cmp r2, 0x4\n\
- bls _08060C00\n\
-_08060BFC:\n\
- movs r0, 0\n\
- b _08060C12\n\
-_08060C00:\n\
- adds r1, r2, 0\n\
- bl zffu_offset_calc\n\
- ldr r2, _08060C18 @ =gUnknown_08375767\n\
- lsls r1, r4, 2\n\
- subs r1, 0x5\n\
- adds r0, r1\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
-_08060C12:\n\
- pop {r4}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_08060C18: .4byte gUnknown_08375767\n\
-.syntax divided\n");
-}
-#endif
void FieldObjectExecSpecialAnim(struct MapObject *mapObject, struct Sprite *sprite)
{
@@ -7490,24 +7372,24 @@ bool8 sub_8062644(struct MapObject *mapObject, struct Sprite *sprite)
bool8 do_exclamation_mark_bubble_1(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
- FieldEffectStart(0x0);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1);
sprite->data2 = 1;
return TRUE;
}
bool8 do_exclamation_mark_bubble_2(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
- FieldEffectStart(0x21);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_2);
sprite->data2 = 1;
return TRUE;
}
bool8 do_heart_bubble(struct MapObject *mapObject, struct Sprite *sprite)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
- FieldEffectStart(0x2e);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_HEART_ICON);
sprite->data2 = 1;
return TRUE;
}
@@ -8303,12 +8185,12 @@ void sub_80634A0(struct MapObject *mapObject, struct Sprite *sprite)
}
void sub_80634E8(struct MapObject *, struct Sprite *);
-void npc_update_obj_anim_flag(struct MapObject *, struct Sprite *);
+static void UpdateMapObjSpriteVisibility(struct MapObject *, struct Sprite *);
void sub_80634D0(struct MapObject *mapObject, struct Sprite *sprite)
{
sub_80634E8(mapObject, sprite);
- npc_update_obj_anim_flag(mapObject, sprite);
+ UpdateMapObjSpriteVisibility(mapObject, sprite);
}
#ifdef NONMATCHING
@@ -8464,7 +8346,7 @@ _080635C0:\n\
}
#endif
-void npc_update_obj_anim_flag(struct MapObject *mapObject, struct Sprite *sprite)
+void UpdateMapObjSpriteVisibility(struct MapObject *mapObject, struct Sprite *sprite)
{
sprite->invisible = 0;
if (mapObject->mapobj_bit_13 || mapObject->mapobj_bit_14)
diff --git a/src/field_map_obj_helpers.c b/src/field/field_map_obj_helpers.c
index 87be8e011..b453d3794 100644
--- a/src/field_map_obj_helpers.c
+++ b/src/field/field_map_obj_helpers.c
@@ -294,7 +294,7 @@ void sub_8064990(u8 a1, u8 dir)
u32 oe_exec_and_other_stuff(u8 fieldEffectId, struct MapObject *mapObject)
{
- FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
+ FieldObjectGetLocalIdAndMap(mapObject, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
return FieldEffectStart(fieldEffectId);
}
@@ -303,16 +303,16 @@ void DoShadowFieldEffect(struct MapObject *mapObject)
if (!mapObject->mapobj_bit_22)
{
mapObject->mapobj_bit_22 = 1;
- oe_exec_and_other_stuff(3, mapObject);
+ oe_exec_and_other_stuff(FLDEFF_SHADOW, mapObject);
}
}
void DoRippleFieldEffect(struct MapObject *mapObject, struct Sprite *sprite)
{
const struct MapObjectGraphicsInfo *gfxInfo = GetFieldObjectGraphicsInfo(mapObject->graphicsId);
- gUnknown_0202FF84[0] = sprite->pos1.x;
- gUnknown_0202FF84[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
- gUnknown_0202FF84[2] = 151;
- gUnknown_0202FF84[3] = 3;
- FieldEffectStart(5);
+ gFieldEffectArguments[0] = sprite->pos1.x;
+ gFieldEffectArguments[1] = sprite->pos1.y + (gfxInfo->height >> 1) - 2;
+ gFieldEffectArguments[2] = 151;
+ gFieldEffectArguments[3] = 3;
+ FieldEffectStart(FLDEFF_RIPPLE);
}
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 2a7b2f3e0..6c1c9123a 100644
--- a/src/field_player_avatar.c
+++ b/src/field/field_player_avatar.c
@@ -14,7 +14,7 @@
#include "metatile_behavior.h"
#include "party_menu.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rotating_gate.h"
#include "script.h"
#include "songs.h"
@@ -666,10 +666,10 @@ void PlayerAvatarTransition_Surfing(struct MapObject *a)
sub_805B980(a, GetPlayerAvatarGraphicsIdByStateId(3));
FieldObjectTurn(a, a->placeholder18);
SetPlayerAvatarStateMask(8);
- gUnknown_0202FF84[0] = a->coords2.x;
- gUnknown_0202FF84[1] = a->coords2.y;
- gUnknown_0202FF84[2] = gPlayerAvatar.mapObjectId;
- unk = FieldEffectStart(8);
+ gFieldEffectArguments[0] = a->coords2.x;
+ gFieldEffectArguments[1] = a->coords2.y;
+ gFieldEffectArguments[2] = gPlayerAvatar.mapObjectId;
+ unk = FieldEffectStart(FLDEFF_SURF_BLOB);
a->mapobj_unk_1A = unk;
sub_8127ED0(unk, 1);
}
@@ -1224,13 +1224,13 @@ u8 sub_8059EA4(struct Task *task, struct MapObject *b, struct MapObject *c)
{
FieldObjectClearAnimIfSpecialAnimFinished(b);
FieldObjectClearAnimIfSpecialAnimFinished(c);
- FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId(task->data[2]));
- FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId(task->data[2]));
- gUnknown_0202FF84[0] = c->coords2.x;
- gUnknown_0202FF84[1] = c->coords2.y;
- gUnknown_0202FF84[2] = c->elevation;
- gUnknown_0202FF84[3] = gSprites[c->spriteId].oam.priority;
- FieldEffectStart(10);
+ FieldObjectSetSpecialAnim(b, GetStepInPlaceDelay16AnimId((u8)task->data[2]));
+ FieldObjectSetSpecialAnim(c, GetSimpleGoAnimId((u8)task->data[2]));
+ gFieldEffectArguments[0] = c->coords2.x;
+ gFieldEffectArguments[1] = c->coords2.y;
+ gFieldEffectArguments[2] = c->elevation;
+ gFieldEffectArguments[3] = gSprites[c->spriteId].oam.priority;
+ FieldEffectStart(FLDEFF_DUST);
PlaySE(SE_W070);
task->data[0]++;
}
@@ -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;
@@ -1385,7 +1385,7 @@ static void taskFF_0805D1D4(u8 taskId)
return;
}
sub_8127ED0(playerMapObj->mapobj_unk_1A, 2);
- FieldObjectSetSpecialAnim(playerMapObj, sub_80608D0(gTasks[taskId].data[0]));
+ FieldObjectSetSpecialAnim(playerMapObj, sub_80608D0((u8)gTasks[taskId].data[0]));
gTasks[taskId].func = sub_805A2D0;
}
@@ -1406,7 +1406,7 @@ static void sub_805A2D0(u8 taskId)
/* Fishing */
-static u8 (*const gUnknown_0830FCB4[])(struct Task *) =
+static u8 (*const sFishingStateFuncs[])(struct Task *) =
{
Fishing1,
Fishing2,
@@ -1429,17 +1429,33 @@ static u8 (*const gUnknown_0830FCB4[])(struct Task *) =
static void Task_Fishing(u8 taskId);
static void sub_805A954(void);
-void StartFishing(u8 a)
+#define tStep data[0]
+#define tFrameCounter data[1]
+#define tNumDots data[2]
+#define tDotsRequired data[3]
+#define tRoundsPlayed data[12]
+#define tMinRoundsRequired data[13]
+#define tPlayerGfxId data[14]
+#define tFishingRod data[15]
+
+#define FISHING_START_ROUND 3
+#define FISHING_GOT_BITE 6
+#define FISHING_ON_HOOK 9
+#define FISHING_NO_BITE 11
+#define FISHING_GOT_AWAY 12
+#define FISHING_SHOW_RESULT 13
+
+void StartFishing(u8 rod)
{
u8 taskId = CreateTask(Task_Fishing, 0xFF);
- gTasks[taskId].data[15] = a;
+ gTasks[taskId].tFishingRod = rod;
Task_Fishing(taskId);
}
static void Task_Fishing(u8 taskId)
{
- while (gUnknown_0830FCB4[gTasks[taskId].data[0]](&gTasks[taskId]))
+ while (sFishingStateFuncs[gTasks[taskId].tStep](&gTasks[taskId]))
;
}
@@ -1447,7 +1463,7 @@ u8 Fishing1(struct Task *task)
{
ScriptContext2_Enable();
gPlayerAvatar.unk6 = 1;
- task->data[0]++;
+ task->tStep++;
return 0;
}
@@ -1457,23 +1473,25 @@ u8 Fishing2(struct Task *task)
const s16 arr1[] = {1, 1, 1};
const s16 arr2[] = {1, 3, 6};
- task->data[12] = 0;
- task->data[13] = arr1[task->data[15]] + (Random() % arr2[task->data[15]]);
- task->data[14] = gMapObjects[gPlayerAvatar.mapObjectId].graphicsId;
+ task->tRoundsPlayed = 0;
+ task->tMinRoundsRequired = arr1[task->tFishingRod] + (Random() % arr2[task->tFishingRod]);
+ task->tPlayerGfxId = gMapObjects[gPlayerAvatar.mapObjectId].graphicsId;
playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
FieldObjectClearAnimIfSpecialAnimActive(playerMapObj);
playerMapObj->mapobj_bit_11 = 1;
sub_8059C3C(playerMapObj->mapobj_unk_18);
- task->data[0]++;
+ task->tStep++;
return 0;
}
u8 Fishing3(struct Task *task)
{
sub_805A954();
- task->data[1]++;
- if (task->data[1] > 0x3B)
- task->data[0]++;
+
+ // Wait one second before starting dot game
+ task->tFrameCounter++;
+ if (task->tFrameCounter >= 60)
+ task->tStep++;
return 0;
}
@@ -1482,87 +1500,92 @@ u8 Fishing4(struct Task *task)
u32 randVal;
MenuDisplayMessageBox();
- task->data[0]++;
- task->data[1] = 0;
- task->data[2] = 0;
+ task->tStep++;
+ task->tFrameCounter = 0;
+ task->tNumDots = 0;
randVal = Random();
randVal %= 10;
- task->data[3] = randVal + 1;
- if (task->data[12] == 0)
- task->data[3] = randVal + 4;
- if (task->data[3] > 9)
- task->data[3] = 10;
+ task->tDotsRequired = randVal + 1;
+ if (task->tRoundsPlayed == 0)
+ task->tDotsRequired = randVal + 4;
+ if (task->tDotsRequired >= 10)
+ task->tDotsRequired = 10;
return 1;
}
+// Play a round of the dot game
u8 Fishing5(struct Task *task)
{
const u8 dot[] = _("·");
sub_805A954();
- task->data[1]++;
+ task->tFrameCounter++;
if (gMain.newKeys & A_BUTTON)
{
- task->data[0] = 11;
- if (task->data[12] != 0)
- task->data[0] = 12;
+ task->tStep = FISHING_NO_BITE;
+ if (task->tRoundsPlayed != 0)
+ task->tStep = FISHING_GOT_AWAY;
return 1;
}
else
{
- if (task->data[1] > 0x13)
+ if (task->tFrameCounter >= 20)
{
- task->data[1] = 0;
- if (task->data[2] >= task->data[3])
+ task->tFrameCounter = 0;
+ if (task->tNumDots >= task->tDotsRequired)
{
- task->data[0]++;
- if (task->data[12] != 0)
- task->data[0]++;
- task->data[12]++;
+ task->tStep++;
+ if (task->tRoundsPlayed != 0)
+ task->tStep++;
+ task->tRoundsPlayed++;
}
else
{
- MenuPrint(dot, task->data[2] + 4, 15);
- task->data[2]++;
+ MenuPrint(dot, task->tNumDots + 4, 15);
+ task->tNumDots++;
}
}
return 0;
}
}
+// Determine if fish bites
u8 Fishing6(struct Task *task)
{
sub_805A954();
- task->data[0]++;
- if (!GetFishingWildMonListHeader() || (Random() & 1))
- task->data[0] = 11;
+ task->tStep++;
+ if (!DoesCurrentMapHaveFishingMons() || (Random() & 1))
+ task->tStep = FISHING_NO_BITE;
else
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FE08(player_get_direction_lower_nybble()));
return 1;
}
+// Oh! A Bite!
u8 Fishing7(struct Task *task)
{
sub_805A954();
MenuPrint(gOtherText_OhABite, 4, 17);
- task->data[0]++;
- task->data[1] = 0;
+ task->tStep++;
+ task->tFrameCounter = 0;
return 0;
}
+// We have a bite. Now, wait for the player to press A, or the timer to expire.
u8 Fishing8(struct Task *task)
{
- const s16 arr[3] = {36, 33, 30};
+ const s16 reelTimeouts[3] = {36, 33, 30};
sub_805A954();
- task->data[1]++;
- if (task->data[1] >= arr[task->data[15]])
- task->data[0] = 12;
+ task->tFrameCounter++;
+ if (task->tFrameCounter >= reelTimeouts[task->tFishingRod])
+ task->tStep = FISHING_GOT_AWAY;
else if (gMain.newKeys & A_BUTTON)
- task->data[0]++;
+ task->tStep++;
return 0;
}
+// Determine if we're going to play the dot game again
u8 Fishing9(struct Task *task)
{
const s16 arr[][2] =
@@ -1573,17 +1596,18 @@ u8 Fishing9(struct Task *task)
};
sub_805A954();
- task->data[0]++;
- if (task->data[12] < task->data[13])
+ task->tStep++;
+ if (task->tRoundsPlayed < task->tMinRoundsRequired)
{
- task->data[0] = 3;
+ task->tStep = FISHING_START_ROUND;
}
- else if (task->data[12] < 2)
+ else if (task->tRoundsPlayed < 2)
{
- s16 randVal = Random() % 100;
+ // probability of having to play another round
+ s16 probability = Random() % 100;
- if (arr[task->data[15]][task->data[12]] > randVal)
- task->data[0] = 3;
+ if (arr[task->tFishingRod][task->tRoundsPlayed] > probability)
+ task->tStep = FISHING_START_ROUND;
}
return 0;
}
@@ -1591,72 +1615,73 @@ u8 Fishing9(struct Task *task)
u8 Fishing10(struct Task *task)
{
sub_805A954();
- sub_8072044(gOtherText_PokeOnHook);
+ MenuPrintMessageDefaultCoords(gOtherText_PokeOnHook);
MenuDisplayMessageBox();
- task->data[0]++;
- task->data[1] = 0;
+ task->tStep++;
+ task->tFrameCounter = 0;
return 0;
}
u8 Fishing11(struct Task *task)
{
- if (task->data[1] == 0)
- {
+ if (task->tFrameCounter == 0)
sub_805A954();
- if (task->data[1] == 0)
+
+ if (task->tFrameCounter == 0)
+ {
+ if (MenuUpdateWindowText())
{
- if (MenuUpdateWindowText())
- {
- struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
- sub_805B980(playerMapObj, task->data[14]);
- FieldObjectTurn(playerMapObj, playerMapObj->placeholder18);
- if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
- sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0);
- gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
- gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
- MenuZeroFillScreen();
- task->data[1]++;
- return 0;
- }
- else
- {
- if (task->data[1] == 0)
- return 0;
- }
+ struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ sub_805B980(playerMapObj, task->tPlayerGfxId);
+ FieldObjectTurn(playerMapObj, playerMapObj->placeholder18);
+ if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
+ sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0);
+ gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
+ gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
+ MenuZeroFillScreen();
+ task->tFrameCounter++;
+ return 0;
}
}
- gPlayerAvatar.unk6 = 0;
- ScriptContext2_Disable();
- FishingWildEncounter(task->data[15]);
- sub_80BE97C(1);
- DestroyTask(FindTaskIdByFunc(Task_Fishing));
+
+ if (task->tFrameCounter != 0)
+ {
+ gPlayerAvatar.unk6 = 0;
+ ScriptContext2_Disable();
+ FishingWildEncounter(task->tFishingRod);
+ sub_80BE97C(1);
+ DestroyTask(FindTaskIdByFunc(Task_Fishing));
+ }
return 0;
}
+// Not even a nibble
u8 Fishing12(struct Task *task)
{
sub_805A954();
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDF8(player_get_direction_lower_nybble()));
- sub_8072044(gOtherText_NotEvenANibble);
- task->data[0] = 13;
+ MenuPrintMessageDefaultCoords(gOtherText_NotEvenANibble);
+ task->tStep = FISHING_SHOW_RESULT;
return 1;
}
+// It got away
u8 Fishing13(struct Task *task)
{
sub_805A954();
StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], sub_805FDF8(player_get_direction_lower_nybble()));
- sub_8072044(gOtherText_ItGotAway);
- task->data[0]++;
+ MenuPrintMessageDefaultCoords(gOtherText_ItGotAway);
+ task->tStep++;
return 1;
}
+// Display the message
u8 Fishing14(struct Task *task)
{
sub_805A954();
MenuDisplayMessageBox();
- task->data[0]++;
+ task->tStep++;
return 0;
}
@@ -1667,13 +1692,13 @@ u8 Fishing15(struct Task *task)
{
struct MapObject *playerMapObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- sub_805B980(playerMapObj, task->data[14]);
+ sub_805B980(playerMapObj, task->tPlayerGfxId);
FieldObjectTurn(playerMapObj, playerMapObj->placeholder18);
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
sub_8127F28(gMapObjects[gPlayerAvatar.mapObjectId].mapobj_unk_1A, 0, 0);
gSprites[gPlayerAvatar.spriteId].pos2.x = 0;
gSprites[gPlayerAvatar.spriteId].pos2.y = 0;
- task->data[0]++;
+ task->tStep++;
}
return 0;
}
@@ -1692,6 +1717,10 @@ u8 Fishing16(struct Task *task)
return 0;
}
+#undef tStep
+#undef tFrameCounter
+#undef tFishingRod
+
static void sub_805A954(void)
{
struct Sprite *playerSprite = &gSprites[gPlayerAvatar.spriteId];
diff --git a/src/field_poison.c b/src/field/field_poison.c
index 8c9e029e1..1244b9c62 100644
--- a/src/field_poison.c
+++ b/src/field/field_poison.c
@@ -108,7 +108,7 @@ void ExecuteWhiteOut(void)
ScriptContext1_Stop();
}
-s32 overworld_poison(void)
+s32 DoPoisonFieldEffect(void)
{
struct Pokemon *pkmn = &gPlayerParty[0];
u32 numPoisoned = 0;
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 79913e1c5..0c76d254d 100644
--- a/src/field_screen_effect.c
+++ b/src/field/field_screen_effect.c
@@ -3,7 +3,7 @@
#include "field_camera.h"
#include "menu.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "task.h"
#include "text.h"
@@ -21,11 +21,11 @@ extern u16 gUnknown_03004DE0[][0x3C0];
const static u16 gUnknown_0839ACDC[] = { 0xC8, 0x48, 0x38, 0x28, 0x18, 0x0 };
-const s32 gUnknown_0839ACE8 = 4;
+const s32 gMaxFlashLevel = 4;
-const static u32 gUnknown_0839ACEC[3] =
+const static struct UnknownTaskStruct gUnknown_0839ACEC =
{
- REG_ADDR_WIN0H,
+ (void *)REG_ADDR_WIN0H,
((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
1
};
@@ -137,11 +137,11 @@ static u8 sub_8081534(s32 a1, s32 a2, s32 a3, s32 a4, s32 a5, u8 a6)
void sub_8081594(u8 a1)
{
- u8 index = sav1_get_flash_used_on_map();
+ u8 flashLevel = Overworld_GetFlashLevel();
u8 value = 0;
if (!a1)
value = 1;
- sub_8081534(120, 80, gUnknown_0839ACDC[index], gUnknown_0839ACDC[a1], value, 1);
+ sub_8081534(120, 80, gUnknown_0839ACDC[flashLevel], gUnknown_0839ACDC[a1], value, 1);
sub_8081510();
ScriptContext2_Enable();
}
@@ -220,7 +220,8 @@ static void sub_80816A8(u8 taskId)
REG_WINOUT = 30;
sub_8081398(&gUnknown_03004DE0[0][0], data[2], data[3], 1);
CpuFastSet(&gUnknown_03004DE0[0], &gUnknown_03004DE0[1], 480);
- sub_80895F8(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]);
+ //sub_80895F8(gUnknown_0839ACEC[0], gUnknown_0839ACEC[1], gUnknown_0839ACEC[2]);
+ sub_80895F8(gUnknown_0839ACEC);
data[0] = 1;
break;
case 1:
@@ -326,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 82a7a13e3..d4b59c8a2 100644
--- a/src/field_special_scene.c
+++ b/src/field/field_special_scene.c
@@ -8,7 +8,7 @@
#include "fieldmap.h"
#include "main.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "script_movement.h"
#include "songs.h"
@@ -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;
}
}
@@ -273,7 +273,7 @@ void Task_HandlePorthole(u8 taskId)
case IDLE_CHECK: // idle and move.
if (gMain.newKeys & A_BUTTON)
data[1] = 1;
- if (!sub_80A212C(0xFF, location->mapNum, location->mapGroup))
+ if (!ScriptMovement_IsObjectMovementFinished(0xFF, location->mapNum, location->mapGroup))
return;
if (CountSSTidalStep(1) == TRUE)
{
@@ -294,18 +294,18 @@ void Task_HandlePorthole(u8 taskId)
// run this once.
if (*var == 2) // which direction?
{
- exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_083D295F);
+ ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_083D295F);
data[0] = IDLE_CHECK; // run case 1.
}
else
{
- exec_movement(0xFF, location->mapNum, location->mapGroup, gUnknown_083D2961);
+ ScriptMovement_StartObjectMovementScript(0xFF, location->mapNum, location->mapGroup, gUnknown_083D2961);
data[0] = IDLE_CHECK; // run case 1.
}
break;
case EXIT_PORTHOLE: // exit porthole.
- FlagReset(0x4001);
- FlagReset(0x4000);
+ FlagClear(0x4001);
+ FlagClear(0x4000);
copy_saved_warp2_bank_and_enter_x_to_warp1(0);
sp13E_warp_to_last_warp();
DestroyTask(taskId);
diff --git a/src/field_specials.c b/src/field/field_specials.c
index 454bd8d96..36362d098 100644
--- a/src/field_specials.c
+++ b/src/field/field_specials.c
@@ -12,7 +12,7 @@
#include "field_player_avatar.h"
#include "main.h"
#include "map_constants.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "songs.h"
#include "string_util.h"
@@ -61,44 +61,44 @@ static void RecordCyclingRoadResults(u32, u8);
static struct ElevatorMenu gUnknown_03000760[20];
-void sub_810D6A4(void) {
- SetMainCallback2(sub_8145D88);
+void ScrSpecial_ShowDiploma(void)
+{
+ SetMainCallback2(CB2_ShowDiploma);
ScriptContext2_Enable();
}
-void sub_810D6B8(void) {
+void ScrSpecial_ViewWallClock(void)
+{
gMain.savedCallback = c2_exit_to_overworld_2_switch;
SetMainCallback2(CB2_ViewWallClock);
ScriptContext2_Enable();
}
-void ResetCyclingRoadChallengeData(void) {
+void ResetCyclingRoadChallengeData(void)
+{
gUnknown_02039250 = 0;
gUnknown_02039251 = 0;
gUnknown_02039254 = 0;
}
-void BeginCyclingRoadChallenge(void) {
+void ScrSpecial_BeginCyclingRoadChallenge(void)
+{
gUnknown_02039250 = 1;
gUnknown_02039251 = 0;
gUnknown_02039254 = gMain.vblankCounter1;
}
-u16 GetPlayerAvatarBike(void) {
+u16 GetPlayerAvatarBike(void)
+{
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_ACRO_BIKE))
- {
return 1;
- }
-
if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_MACH_BIKE))
- {
return 2;
- }
-
return 0;
}
-void DetermineCyclingRoadResults(u32 arg0, u8 arg1) {
+static void DetermineCyclingRoadResults(u32 arg0, u8 arg1)
+{
u8 result;
if (arg1 <= 99)
@@ -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);
}
}
@@ -225,7 +225,7 @@ void SetSSTidalFlag(void)
void ResetSSTidalFlag(void)
{
- FlagReset(SYS_CRUISE_MODE);
+ FlagClear(SYS_CRUISE_MODE);
}
bool32 CountSSTidalStep(u16 delta)
@@ -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);
}
}
@@ -1453,7 +1453,7 @@ void ResetTrickHouseEndRoomFlag(void)
u16 *specVar = &gSpecialVar_0x8004;
u16 flag = 0x259;
*specVar = flag;
- FlagReset(flag);
+ FlagClear(flag);
}
bool8 CheckLeadMonCool(void)
@@ -1868,7 +1868,7 @@ void GivLeadMonEffortRibbon(void)
SetMonData(&gPlayerParty[GetLeadMonIndex()], MON_DATA_EFFORT_RIBBON, &ribbonSet);
}
-bool8 GetLeadMonEVCount(void)
+bool8 ScrSpecial_AreLeadMonEVsMaxedOut(void)
{
if (GetMonEVCount(&gPlayerParty[GetLeadMonIndex()]) >= 510)
{
@@ -1919,7 +1919,7 @@ bool8 IsStarterInParty(void)
u8 i;
u16 starter = GetStarterPokemon(VarGet(VAR_FIRST_POKE));
u8 partyCount = CalculatePlayerPartyCount();
- for (i=0; i<partyCount; i++)
+ for (i = 0; i < partyCount; i++)
{
if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL) == starter)
{
@@ -2005,7 +2005,7 @@ bool8 sub_810F828(void)
void SetRoute119Weather(void)
{
- if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0()) != TRUE)
+ if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()) != TRUE)
{
SetSav1Weather(0x14);
}
@@ -2013,7 +2013,7 @@ void SetRoute119Weather(void)
void SetRoute123Weather(void)
{
- if (is_light_level_1_2_3_5_or_6(get_map_light_from_warp0()) != TRUE)
+ if (is_map_type_1_2_3_5_or_6(get_map_type_from_warp0()) != TRUE)
{
SetSav1Weather(0x15);
}
@@ -2140,10 +2140,10 @@ void sub_810FAA0(void)
sub_810FF48();
sub_810FD80();
gSaveBlock1.vars[0x42] = gSaveBlock2.playTimeHours;
- FlagReset(0x315);
- FlagReset(0x316);
- FlagReset(0x317);
- FlagReset(0x318);
+ FlagClear(0x315);
+ FlagClear(0x316);
+ FlagClear(0x317);
+ FlagClear(0x318);
VarSet(VAR_0x4095, 1);
}
}
diff --git a/src/field_tasks.c b/src/field/field_tasks.c
index caf2ce6b9..da6f162c2 100644
--- a/src/field_tasks.c
+++ b/src/field/field_tasks.c
@@ -1,5 +1,5 @@
//
-// Created by scott on 6/22/2017.
+
//
#include "global.h"
@@ -10,7 +10,7 @@
#include "item.h"
#include "items.h"
#include "event_data.h"
-#include "rom4.h"
+#include "overworld.h"
#include "clock.h"
#include "script.h"
#include "field_special_scene.h"
@@ -48,21 +48,25 @@ void Task_RunPerStepCallback(u8 taskId)
gUnknown_08376364[idx](taskId);
}
-static void RunTimeBasedEvents(s16 *taskData)
+#define tState data[0]
+#define tAmbientCryState data[1]
+#define tAmbientCryDelay data[2]
+
+static void RunTimeBasedEvents(s16 *data)
{
- switch (*taskData)
+ switch (tState)
{
case 0:
if (gMain.vblankCounter1 & 0x1000)
{
DoTimeBasedEvents();
- (*taskData)++;
+ tState++;
}
break;
case 1:
if (!(gMain.vblankCounter1 & 0x1000))
{
- (*taskData)--;
+ tState--;
}
break;
}
@@ -70,14 +74,19 @@ static void RunTimeBasedEvents(s16 *taskData)
void Task_RunTimeBasedEvents(u8 taskId)
{
- s16 *taskData = gTasks[taskId].data;
+ s16 *data = gTasks[taskId].data;
+
if (!ScriptContext2_IsEnabled())
{
- RunTimeBasedEvents(taskData);
- sub_80540D0(taskData + 1, taskData + 2);
+ RunTimeBasedEvents(data);
+ UpdateAmbientCry(&tAmbientCryState, &tAmbientCryDelay);
}
}
+#undef tState
+#undef tAmbientCryState
+#undef tAmbientCryDelay
+
void Task_MuddySlope(u8);
void SetUpFieldTasks(void)
@@ -836,11 +845,11 @@ void Task_MuddySlope(u8 taskId)
}
break;
}
- if (gUnknown_0202E844.field_0 && mapIndices != data[0])
+ if (gCamera.field_0 && mapIndices != data[0])
{
data[0] = mapIndices;
- x2 = gUnknown_0202E844.x;
- y2 = gUnknown_0202E844.y;
+ x2 = gCamera.x;
+ y2 = gCamera.y;
}
else
{
diff --git a/src/field_weather.c b/src/field/field_weather.c
index 5ff2eddf9..443a38357 100644
--- a/src/field_weather.c
+++ b/src/field/field_weather.c
@@ -55,7 +55,7 @@ extern struct Weather gWeather;
extern u8 *gUnknown_083970E8;
extern u8 (*gUnknown_08396FC8[][4])(void);
extern u8 (*gUnknown_083970B8[])(void);
-extern u8 *gUnknown_030006DC;
+IWRAM_DATA u8 *gUnknown_030006DC;
extern u8 gUnknown_083970C8;
extern u8 (*gUnknown_0202FC48)[32];
extern u8 gUnknown_0202F9E8[32];
diff --git a/src/fieldmap.c b/src/field/fieldmap.c
index 0e0ec246c..7a31ae720 100644
--- a/src/fieldmap.c
+++ b/src/field/fieldmap.c
@@ -1,7 +1,7 @@
#include "global.h"
#include "fieldmap.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "secret_base.h"
#include "tv.h"
@@ -22,7 +22,7 @@ struct Coords32
EWRAM_DATA static u16 gUnknown_02029828[0x2800] = {0};
EWRAM_DATA struct MapHeader gMapHeader = {0};
-EWRAM_DATA struct Camera gUnknown_0202E844 = {0};
+EWRAM_DATA struct Camera gCamera = {0};
EWRAM_DATA static struct ConnectionFlags gUnknown_0202E850 = {0};
struct BackupMapData gUnknown_03004870;
@@ -31,7 +31,7 @@ static const struct ConnectionFlags sDummyConnectionFlags = {0};
struct MapHeader *mapconnection_get_mapheader(struct MapConnection *connection)
{
- return get_mapheader_by_bank_and_number(connection->mapGroup, connection->mapNum);
+ return Overworld_GetMapHeaderByGroupAndId(connection->mapGroup, connection->mapNum);
}
void not_trainer_hill_battle_pyramid(void)
@@ -713,7 +713,7 @@ bool8 CameraMove(int x, int y)
unsigned int direction;
struct MapConnection *connection;
int old_x, old_y;
- gUnknown_0202E844.field_0 = FALSE;
+ gCamera.field_0 = FALSE;
direction = GetPostCameraMoveMapBorderId(x, y);
if (direction + 1 <= 1)
{
@@ -728,14 +728,14 @@ bool8 CameraMove(int x, int y)
connection = sub_8056A64(direction, gSaveBlock1.pos.x, gSaveBlock1.pos.y);
sub_8056918(connection, direction, x, y);
sub_80538F0(connection->mapGroup, connection->mapNum);
- gUnknown_0202E844.field_0 = TRUE;
- gUnknown_0202E844.x = old_x - gSaveBlock1.pos.x;
- gUnknown_0202E844.y = old_y - gSaveBlock1.pos.y;
+ gCamera.field_0 = TRUE;
+ gCamera.x = old_x - gSaveBlock1.pos.x;
+ gCamera.y = old_y - gSaveBlock1.pos.y;
gSaveBlock1.pos.x += x;
gSaveBlock1.pos.y += y;
sub_80566F0(direction);
}
- return gUnknown_0202E844.field_0;
+ return gCamera.field_0;
}
struct MapConnection *sub_8056A64(u8 direction, int x, int y)
diff --git a/src/fldeff_cut.c b/src/field/fldeff_cut.c
index b394d1e4c..00643a979 100644
--- a/src/fldeff_cut.c
+++ b/src/field/fldeff_cut.c
@@ -8,7 +8,7 @@
#include "metatile_behavior.h"
#include "metatile_behaviors.h"
#include "pokemon_menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rom6.h"
#include "script.h"
#include "songs.h"
@@ -28,7 +28,7 @@ extern struct MapPosition gUnknown_0203923C;
extern u8 gLastFieldPokeMenuOpened;
-extern u8 UseCutScript;
+extern u8 S_UseCut[];
bool8 SetUpFieldMove_Cut(void)
{
@@ -38,7 +38,7 @@ bool8 SetUpFieldMove_Cut(void)
if(npc_before_player_of_type(0x52) == TRUE) // is in front of tree?
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_80A2634;
return TRUE;
}
@@ -57,7 +57,7 @@ bool8 SetUpFieldMove_Cut(void)
if(MetatileBehavior_IsPokeGrass(tileBehavior) == TRUE
|| MetatileBehavior_IsAshGrass(tileBehavior) == TRUE)
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_80A25E8;
return TRUE;
}
@@ -70,8 +70,8 @@ bool8 SetUpFieldMove_Cut(void)
void sub_80A25E8(void)
{
- FieldEffectStart(1);
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_CUT_ON_GRASS);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
}
bool8 FldEff_UseCutOnGrass(void)
@@ -86,8 +86,8 @@ bool8 FldEff_UseCutOnGrass(void)
void sub_80A2634(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(&UseCutScript);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ ScriptContext1_SetupScript(S_UseCut);
}
bool8 FldEff_UseCutOnTree(void)
@@ -102,8 +102,8 @@ bool8 FldEff_UseCutOnTree(void)
void sub_80A2684(void)
{
- FieldEffectActiveListRemove(1);
- FieldEffectStart(0x3A);
+ FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_GRASS);
+ FieldEffectStart(FLDEFF_CUT_GRASS);
}
bool8 FldEff_CutGrass(void)
@@ -272,19 +272,16 @@ void sub_80A2AB8(void)
{
u8 i;
- for(i = 1; i < 8; i++)
- {
+ for (i = 1; i < 8; i++)
DestroySprite(&gSprites[gCutGrassSpriteArray[i]]);
- }
-
- FieldEffectStop(&gSprites[gCutGrassSpriteArray[0]], 0x3A);
+ FieldEffectStop(&gSprites[gCutGrassSpriteArray[0]], FLDEFF_CUT_GRASS);
sub_8064E2C();
ScriptContext2_Disable();
}
void sub_80A2B00(void)
{
- PlaySE(0x80);
- FieldEffectActiveListRemove(2);
+ PlaySE(SE_W015);
+ FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE);
EnableBothScriptContexts();
}
diff --git a/src/fldeff_flash.c b/src/field/fldeff_flash.c
index 6c2633567..1ee8a8f05 100644
--- a/src/fldeff_flash.c
+++ b/src/field/fldeff_flash.c
@@ -4,7 +4,7 @@
#include "main.h"
#include "palette.h"
#include "pokemon_menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rom6.h"
#include "script.h"
#include "songs.h"
@@ -51,7 +51,7 @@ bool8 SetUpFieldMove_Flash(void)
{
if (gMapHeader.cave == TRUE && !FlagGet(SYS_USE_FLASH))
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_810CBFC;
return TRUE;
}
@@ -62,7 +62,7 @@ bool8 SetUpFieldMove_Flash(void)
void sub_810CBFC(void)
{
u8 taskId = oei_task_add();
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
gTasks[taskId].data[8] = (uintptr_t)sub_810CC34 >> 16;
gTasks[taskId].data[9] = (uintptr_t)sub_810CC34;
}
@@ -123,8 +123,8 @@ void sub_810CC80(void)
bool8 sub_810CD5C(void)
{
u8 i;
- u8 v0 = get_map_light_from_warp0();
- u8 v1 = sav1_map_get_light_level();
+ u8 v0 = get_map_type_from_warp0();
+ u8 v1 = Overworld_GetMapTypeOfSaveblockLocation();
for (i = 0; gUnknown_083F7FC4[i].unk0; i++)
{
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 81f4f63c6..d9603d094 100644
--- a/src/fldeff_strength.c
+++ b/src/field/fldeff_strength.c
@@ -18,14 +18,14 @@ extern u16 gScriptResult;
extern void (*gFieldCallback)(void);
extern void (*gUnknown_03005CE4)(void);
-extern u8 UseStrengthScript[];
+extern u8 S_UseStrength[];
bool8 SetUpFieldMove_Strength(void)
{
if (ShouldDoBrailleStrengthEffect())
{
gScriptResult = gLastFieldPokeMenuOpened;
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_811AA38;
}
else
@@ -33,7 +33,7 @@ bool8 SetUpFieldMove_Strength(void)
if (npc_before_player_of_type(87) != TRUE)
return 0;
gScriptResult = gLastFieldPokeMenuOpened;
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_811AA18;
}
@@ -42,14 +42,14 @@ bool8 SetUpFieldMove_Strength(void)
static void sub_811AA18(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(UseStrengthScript);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ ScriptContext1_SetupScript(S_UseStrength);
}
static void sub_811AA38(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- FieldEffectStart(40);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_STRENGTH);
}
bool8 FldEff_UseStrength(void)
@@ -58,7 +58,7 @@ bool8 FldEff_UseStrength(void)
gTasks[taskId].data[8] = (u32)sub_811AA9C >> 16;
gTasks[taskId].data[9] = (u32)sub_811AA9C;
- GetMonNickname(&gPlayerParty[gUnknown_0202FF84[0]], gStringVar1);
+ GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1);
return FALSE;
}
diff --git a/src/fldeff_sweetscent.c b/src/field/fldeff_sweetscent.c
index 4c3e6bf4a..b9dbf619d 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/field/fldeff_sweetscent.c
@@ -23,15 +23,15 @@ extern u8 SweetScentNothingHereScript[];
bool8 SetUpFieldMove_SweetScent(void)
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_812BFD4;
return TRUE;
}
static void sub_812BFD4(void)
{
- FieldEffectStart(51);
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_SWEET_SCENT);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
}
bool8 FldEff_SweetScent()
@@ -51,7 +51,7 @@ static void sub_812C01C(void)
BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, 0x1F);
taskId = CreateTask(sub_812C084, 0);
gTasks[taskId].data[0] = 0;
- FieldEffectActiveListRemove(51);
+ FieldEffectActiveListRemove(FLDEFF_SWEET_SCENT);
}
static void sub_812C084(u8 taskId)
diff --git a/src/fldeff_teleport.c b/src/field/fldeff_teleport.c
index 74e68df06..af48fb414 100644
--- a/src/fldeff_teleport.c
+++ b/src/field/fldeff_teleport.c
@@ -3,7 +3,7 @@
#include "field_effect.h"
#include "field_player_avatar.h"
#include "pokemon_menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rom6.h"
#include "task.h"
@@ -13,9 +13,9 @@ extern void (*gUnknown_03005CE4)(void);
bool8 SetUpFieldMove_Teleport(void)
{
- if (is_light_level_1_2_3_or_6(gMapHeader.mapType) == TRUE)
+ if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = hm_teleport_run_dp02scr;
return TRUE;
}
@@ -25,9 +25,9 @@ bool8 SetUpFieldMove_Teleport(void)
void hm_teleport_run_dp02scr(void)
{
- new_game();
- FieldEffectStart(63);
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ Overworld_ResetStateAfterTeleport();
+ FieldEffectStart(FLDEFF_USE_TELEPORT);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
}
bool8 FldEff_UseTeleport(void)
@@ -41,6 +41,6 @@ bool8 FldEff_UseTeleport(void)
void sub_814A404(void)
{
- FieldEffectActiveListRemove(63);
+ FieldEffectActiveListRemove(FLDEFF_USE_TELEPORT);
sub_8087BA8();
}
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 4646d171c..267ed4274 100644
--- a/src/hof_pc.c
+++ b/src/field/hof_pc.c
@@ -2,7 +2,7 @@
#include "hall_of_fame.h"
#include "main.h"
#include "palette.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "script_menu.h"
#include "task.h"
@@ -28,10 +28,10 @@ void ReturnFromHallOfFamePC(void)
static void ReshowPCMenuAfterHallOfFamePC(void)
{
ScriptContext2_Enable();
- sub_8053E90();
+ Overworld_PlaySpecialMapMusic();
BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, 0);
- TryCreatePCMenu();
- sub_80B5838();
+ ScrSpecial_CreatePCMenu();
+ ScriptMenu_DisplayPCStartupPrompt();
CreateTask(Task_WaitForPaletteFade, 10);
}
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 350ba3db4..c508bcacf 100644
--- a/src/item_menu.c
+++ b/src/field/item_menu.c
@@ -23,7 +23,7 @@
#include "party_menu.h"
#include "player_pc.h"
#include "pokemon_menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
@@ -56,14 +56,6 @@ extern void sub_804E990(u8);
extern void sub_802E424(u8);
extern void sub_8064E2C(void);
-struct PocketScrollState
-{
- u8 cursorPos;
- u8 scrollTop;
- u8 numSlots;
- u8 cursorMax;
-};
-
struct UnknownStruct2
{
u8 unk0;
@@ -160,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
@@ -2321,164 +2313,164 @@ __attribute__((naked))
static void sub_80A5600(u8 taskId)
{
asm(".syntax unified\n\
- push {r4,r5,lr}\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- movs r5, 0\n\
- ldr r2, _080A563C @ =gMain\n\
- ldrh r0, [r2, 0x30]\n\
- movs r1, 0xF0\n\
- ands r1, r0\n\
- cmp r1, 0x40\n\
- bne _080A5648\n\
- ldr r4, _080A5640 @ =sPopupMenuSelection\n\
- ldrb r0, [r4]\n\
- cmp r0, 0\n\
- bne _080A561E\n\
- b _080A5736\n\
+ push {r4,r5,lr}\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ movs r5, 0\n\
+ ldr r2, _080A563C @ =gMain\n\
+ ldrh r0, [r2, 0x30]\n\
+ movs r1, 0xF0\n\
+ ands r1, r0\n\
+ cmp r1, 0x40\n\
+ bne _080A5648\n\
+ ldr r4, _080A5640 @ =sPopupMenuSelection\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _080A561E\n\
+ b _080A5736\n\
_080A561E:\n\
- adds r1, r0, 0\n\
- ldr r0, _080A5644 @ =sPopupMenuActionList\n\
- ldr r0, [r0]\n\
- adds r1, r0\n\
- subs r1, 0x1\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x8\n\
- bne _080A5630\n\
- b _080A5736\n\
+ adds r1, r0, 0\n\
+ ldr r0, _080A5644 @ =sPopupMenuActionList\n\
+ ldr r0, [r0]\n\
+ adds r1, r0\n\
+ subs r1, 0x1\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x8\n\
+ bne _080A5630\n\
+ b _080A5736\n\
_080A5630:\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r0, 0x1\n\
- negs r0, r0\n\
- b _080A56D2\n\
- .align 2, 0\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x1\n\
+ negs r0, r0\n\
+ b _080A56D2\n\
+ .align 2, 0\n\
_080A563C: .4byte gMain\n\
_080A5640: .4byte sPopupMenuSelection\n\
_080A5644: .4byte sPopupMenuActionList\n\
_080A5648:\n\
- cmp r1, 0x80\n\
- bne _080A5680\n\
- ldr r4, _080A5674 @ =sPopupMenuSelection\n\
- ldrb r1, [r4]\n\
- ldr r0, _080A5678 @ =gUnknown_02038564\n\
- ldrb r0, [r0]\n\
- subs r0, 0x1\n\
- cmp r1, r0\n\
- beq _080A5736\n\
- cmp r1, 0x2\n\
- beq _080A5736\n\
- ldr r0, _080A567C @ =sPopupMenuActionList\n\
- ldr r0, [r0]\n\
- adds r0, r1, r0\n\
- ldrb r0, [r0, 0x1]\n\
- cmp r0, 0x8\n\
- beq _080A5736\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r0, 0x1\n\
- b _080A56D2\n\
- .align 2, 0\n\
+ cmp r1, 0x80\n\
+ bne _080A5680\n\
+ ldr r4, _080A5674 @ =sPopupMenuSelection\n\
+ ldrb r1, [r4]\n\
+ ldr r0, _080A5678 @ =gUnknown_02038564\n\
+ ldrb r0, [r0]\n\
+ subs r0, 0x1\n\
+ cmp r1, r0\n\
+ beq _080A5736\n\
+ cmp r1, 0x2\n\
+ beq _080A5736\n\
+ ldr r0, _080A567C @ =sPopupMenuActionList\n\
+ ldr r0, [r0]\n\
+ adds r0, r1, r0\n\
+ ldrb r0, [r0, 0x1]\n\
+ cmp r0, 0x8\n\
+ beq _080A5736\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x1\n\
+ b _080A56D2\n\
+ .align 2, 0\n\
_080A5674: .4byte sPopupMenuSelection\n\
_080A5678: .4byte gUnknown_02038564\n\
_080A567C: .4byte sPopupMenuActionList\n\
_080A5680:\n\
- cmp r1, 0x20\n\
- bne _080A56B0\n\
- ldr r4, _080A56A8 @ =sPopupMenuSelection\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bls _080A5736\n\
- adds r1, r0, 0\n\
- ldr r0, _080A56AC @ =sPopupMenuActionList\n\
- ldr r0, [r0]\n\
- adds r1, r0\n\
- subs r1, 0x3\n\
- ldrb r0, [r1]\n\
- cmp r0, 0x8\n\
- beq _080A5736\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r0, 0x3\n\
- negs r0, r0\n\
- b _080A56D2\n\
- .align 2, 0\n\
+ cmp r1, 0x20\n\
+ bne _080A56B0\n\
+ ldr r4, _080A56A8 @ =sPopupMenuSelection\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0x2\n\
+ bls _080A5736\n\
+ adds r1, r0, 0\n\
+ ldr r0, _080A56AC @ =sPopupMenuActionList\n\
+ ldr r0, [r0]\n\
+ adds r1, r0\n\
+ subs r1, 0x3\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0x8\n\
+ beq _080A5736\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x3\n\
+ negs r0, r0\n\
+ b _080A56D2\n\
+ .align 2, 0\n\
_080A56A8: .4byte sPopupMenuSelection\n\
_080A56AC: .4byte sPopupMenuActionList\n\
_080A56B0:\n\
- cmp r1, 0x10\n\
- bne _080A56E4\n\
- ldr r4, _080A56DC @ =sPopupMenuSelection\n\
- ldrb r0, [r4]\n\
- cmp r0, 0x2\n\
- bhi _080A5736\n\
- adds r1, r0, 0\n\
- ldr r0, _080A56E0 @ =sPopupMenuActionList\n\
- ldr r0, [r0]\n\
- adds r1, r0\n\
- ldrb r0, [r1, 0x3]\n\
- cmp r0, 0x8\n\
- beq _080A5736\n\
- movs r0, 0x5\n\
- bl PlaySE\n\
- movs r0, 0x3\n\
+ cmp r1, 0x10\n\
+ bne _080A56E4\n\
+ ldr r4, _080A56DC @ =sPopupMenuSelection\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0x2\n\
+ bhi _080A5736\n\
+ adds r1, r0, 0\n\
+ ldr r0, _080A56E0 @ =sPopupMenuActionList\n\
+ ldr r0, [r0]\n\
+ adds r1, r0\n\
+ ldrb r0, [r1, 0x3]\n\
+ cmp r0, 0x8\n\
+ beq _080A5736\n\
+ movs r0, 0x5\n\
+ bl PlaySE\n\
+ movs r0, 0x3\n\
_080A56D2:\n\
- bl MoveMenuCursor3\n\
- strb r0, [r4]\n\
- b _080A5736\n\
- .align 2, 0\n\
+ bl MoveMenuCursor3\n\
+ strb r0, [r4]\n\
+ b _080A5736\n\
+ .align 2, 0\n\
_080A56DC: .4byte sPopupMenuSelection\n\
_080A56E0: .4byte sPopupMenuActionList\n\
_080A56E4:\n\
- ldrh r1, [r2, 0x2E]\n\
- movs r0, 0x1\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _080A5768\n\
- movs r0, 0x2\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- beq _080A5736\n\
- ldr r1, _080A574C @ =gTasks\n\
- lsls r0, r4, 2\n\
- adds r0, r4\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- strh r5, [r0, 0x1C]\n\
- ldr r1, _080A5750 @ =gBagPocketScrollStates\n\
- ldr r0, _080A5754 @ =sCurrentBagPocket\n\
- ldrb r0, [r0]\n\
- lsls r0, 24\n\
- asrs r0, 24\n\
- lsls r0, 2\n\
- adds r0, r1\n\
- ldrb r2, [r0]\n\
- adds r0, r4, 0\n\
- adds r1, r2, 0\n\
- bl sub_80A48E8\n\
- ldr r0, _080A5758 @ =gBGTilemapBuffers + 0x800\n\
- bl sub_80A4DA4\n\
- ldr r1, _080A575C @ =sItemPopupMenuActions\n\
- ldr r0, _080A5760 @ =sPopupMenuActionList\n\
- ldr r0, [r0]\n\
- ldrb r0, [r0, 0x5]\n\
- lsls r0, 3\n\
- adds r1, 0x4\n\
- adds r0, r1\n\
- ldr r5, [r0]\n\
- adds r0, r4, 0\n\
- bl _call_via_r5\n\
+ ldrh r1, [r2, 0x2E]\n\
+ movs r0, 0x1\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _080A5768\n\
+ movs r0, 0x2\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _080A5736\n\
+ ldr r1, _080A574C @ =gTasks\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ strh r5, [r0, 0x1C]\n\
+ ldr r1, _080A5750 @ =gBagPocketScrollStates\n\
+ ldr r0, _080A5754 @ =sCurrentBagPocket\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 24\n\
+ asrs r0, 24\n\
+ lsls r0, 2\n\
+ adds r0, r1\n\
+ ldrb r2, [r0]\n\
+ adds r0, r4, 0\n\
+ adds r1, r2, 0\n\
+ bl sub_80A48E8\n\
+ ldr r0, _080A5758 @ =gBGTilemapBuffers + 0x800\n\
+ bl sub_80A4DA4\n\
+ ldr r1, _080A575C @ =sItemPopupMenuActions\n\
+ ldr r0, _080A5760 @ =sPopupMenuActionList\n\
+ ldr r0, [r0]\n\
+ ldrb r0, [r0, 0x5]\n\
+ lsls r0, 3\n\
+ adds r1, 0x4\n\
+ adds r0, r1\n\
+ ldr r5, [r0]\n\
+ adds r0, r4, 0\n\
+ bl _call_via_r5\n\
_080A5736:\n\
- cmp r5, 0\n\
- bne _080A57BE\n\
- ldr r0, _080A5764 @ =sPopupMenuSelection\n\
- ldrb r0, [r0]\n\
- cmp r0, 0\n\
- bne _080A57AC\n\
- movs r0, 0xC\n\
- bl sub_8072DDC\n\
- b _080A57BE\n\
- .align 2, 0\n\
+ cmp r5, 0\n\
+ bne _080A57BE\n\
+ ldr r0, _080A5764 @ =sPopupMenuSelection\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _080A57AC\n\
+ movs r0, 0xC\n\
+ bl sub_8072DDC\n\
+ b _080A57BE\n\
+ .align 2, 0\n\
_080A574C: .4byte gTasks\n\
_080A5750: .4byte gBagPocketScrollStates\n\
_080A5754: .4byte sCurrentBagPocket\n\
@@ -2487,47 +2479,47 @@ _080A575C: .4byte sItemPopupMenuActions\n\
_080A5760: .4byte sPopupMenuActionList\n\
_080A5764: .4byte sPopupMenuSelection\n\
_080A5768:\n\
- ldr r1, _080A5798 @ =gTasks\n\
- lsls r0, r4, 2\n\
- adds r0, r4\n\
- lsls r0, 3\n\
- adds r0, r1\n\
- strh r5, [r0, 0x1C]\n\
- ldr r0, _080A579C @ =gBGTilemapBuffers + 0x800\n\
- bl sub_80A4DA4\n\
- ldr r1, _080A57A0 @ =sItemPopupMenuActions\n\
- ldr r0, _080A57A4 @ =sPopupMenuSelection\n\
- ldrb r2, [r0]\n\
- ldr r0, _080A57A8 @ =sPopupMenuActionList\n\
- ldr r0, [r0]\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- lsls r0, 3\n\
- adds r1, 0x4\n\
- adds r0, r1\n\
- ldr r5, [r0]\n\
- adds r0, r4, 0\n\
- bl _call_via_r5\n\
- b _080A5736\n\
- .align 2, 0\n\
+ ldr r1, _080A5798 @ =gTasks\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 3\n\
+ adds r0, r1\n\
+ strh r5, [r0, 0x1C]\n\
+ ldr r0, _080A579C @ =gBGTilemapBuffers + 0x800\n\
+ bl sub_80A4DA4\n\
+ ldr r1, _080A57A0 @ =sItemPopupMenuActions\n\
+ ldr r0, _080A57A4 @ =sPopupMenuSelection\n\
+ ldrb r2, [r0]\n\
+ ldr r0, _080A57A8 @ =sPopupMenuActionList\n\
+ ldr r0, [r0]\n\
+ adds r0, r2\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 3\n\
+ adds r1, 0x4\n\
+ adds r0, r1\n\
+ ldr r5, [r0]\n\
+ adds r0, r4, 0\n\
+ bl _call_via_r5\n\
+ b _080A5736\n\
+ .align 2, 0\n\
_080A5798: .4byte gTasks\n\
_080A579C: .4byte gBGTilemapBuffers + 0x800\n\
_080A57A0: .4byte sItemPopupMenuActions\n\
_080A57A4: .4byte sPopupMenuSelection\n\
_080A57A8: .4byte sPopupMenuActionList\n\
_080A57AC:\n\
- cmp r0, 0x2\n\
- bhi _080A57B8\n\
- movs r0, 0x2F\n\
- bl sub_8072DCC\n\
- b _080A57BE\n\
+ cmp r0, 0x2\n\
+ bhi _080A57B8\n\
+ movs r0, 0x2F\n\
+ bl sub_8072DCC\n\
+ b _080A57BE\n\
_080A57B8:\n\
- movs r0, 0x30\n\
- bl sub_8072DCC\n\
+ movs r0, 0x30\n\
+ bl sub_8072DCC\n\
_080A57BE:\n\
- pop {r4,r5}\n\
- pop {r0}\n\
- bx r0\n\
+ pop {r4,r5}\n\
+ pop {r0}\n\
+ bx r0\n\
.syntax divided\n");
}
@@ -2726,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)
@@ -3123,7 +3115,7 @@ static void sub_80A6760(u8 taskId)
static void BuyMenuPrintItemQuantityAndPrice(u8 taskId)
{
sub_80A36B8(gBGTilemapBuffers[1], 0, 0, 31, 31);
- RemoveMoneyLabelObject(0, 0);
+ CloseMoneyWindow(0, 0);
MenuZeroFillWindowRect(0, 4, 13, 13);
MenuZeroFillWindowRect(0, 14, 29, 19);
gTasks[taskId].func = sub_80A6760;
@@ -3131,20 +3123,20 @@ static void BuyMenuPrintItemQuantityAndPrice(u8 taskId)
static void BuyMenuDisplayMessage(u16 itemId, u16 quantity)
{
- sub_80B7A94(ItemId_GetPrice(itemId) / 2 * quantity, 6, 6, 11);
+ PrintMoneyAmount(ItemId_GetPrice(itemId) / 2 * quantity, 6, 6, 11);
ConvertIntToDecimalStringN(gStringVar1, ItemId_GetPrice(itemId) / 2 * quantity, STR_CONV_MODE_LEFT_ALIGN, 6);
}
static void sub_80A683C(void)
{
- sub_80B7C14(gSaveBlock1.money, 0, 0);
+ OpenMoneyWindow(gSaveBlock1.money, 0, 0);
sub_80A4008(gBGTilemapBuffers[1], 1, 1, 12, 2);
}
static void sub_80A6870(u16 itemId, u8 quantity)
{
- sub_80B79B8(&gSaveBlock1.money, ItemId_GetPrice(itemId) / 2 * quantity);
- sub_80B7BEC(gSaveBlock1.money, 0, 0);
+ AddMoney(&gSaveBlock1.money, ItemId_GetPrice(itemId) / 2 * quantity);
+ UpdateMoneyWindow(gSaveBlock1.money, 0, 0);
}
static void sub_80A68A4(void)
@@ -4500,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 1750c1584..68da27fdb 100644
--- a/src/item_use.c
+++ b/src/field/item_use.c
@@ -26,7 +26,7 @@
#include "pokeblock.h"
#include "pokemon_item_effect.h"
#include "pokemon_menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rom_8094928.h"
#include "script.h"
#include "songs.h"
@@ -36,10 +36,10 @@
#include "task.h"
#include "vars.h"
-extern void (* gUnknown_03005D00)(u8);
-extern void (* gFieldCallback)(void);
-extern void (* gUnknown_0300485C)(void);
-extern void (* gUnknown_03004AE4)(u8, u16, TaskFunc);
+extern void (*gFieldItemUseCallback)(u8);
+extern void (*gFieldCallback)(void);
+extern void (*gUnknown_0300485C)(void);
+extern void (*gUnknown_03004AE4)(u8, u16, TaskFunc);
extern u8 gUnknown_02038561;
extern u8 gLastFieldPokeMenuOpened;
@@ -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 (IsBikingAllowedByMap() == 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);
}
@@ -342,7 +344,7 @@ bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId)
sub_80C9720(taskId);
// hidden item detected?
- if(gTasks[taskId].data[2] == TRUE)
+ if (gTasks[taskId].data[2] == TRUE)
return TRUE;
else
return FALSE;
@@ -354,11 +356,11 @@ bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y)
struct BgEvent *bgEvent = events->bgEvents;
int i;
- for(i = 0; i < bgEventCount; i++)
+ for (i = 0; i < bgEventCount; i++)
{
- if(bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed?
+ if (bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed?
{
- if(!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600))
+ if (!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600))
return TRUE;
else
return FALSE;
@@ -376,7 +378,7 @@ bool8 sub_80C9688(struct MapConnection *connection, int x, int y)
mapHeader = mapconnection_get_mapheader(connection);
- switch(connection->direction)
+ switch (connection->direction)
{
// same weird temp variable behavior seen in HiddenItemAtPos
case 2:
@@ -592,7 +594,7 @@ void sub_80C9838(u8 taskId, s16 x, s16 y)
s16 *data = gTasks[taskId].data;
s16 var1, var2, var3, var4;
- if(data[2] == FALSE)
+ if (data[2] == FALSE)
{
data[0] = x;
data[1] = y;
@@ -602,34 +604,34 @@ void sub_80C9838(u8 taskId, s16 x, s16 y)
{
// data[0] and data[1] contain the player's coordinates.
// x and y contain the item's coordinates.
- if(data[0] < 0)
+ if (data[0] < 0)
var1 = data[0] * -1; // item is to the left
else
var1 = data[0]; // item is to the right
- if(data[1] < 0)
+ if (data[1] < 0)
var2 = data[1] * -1; // item is to the north
else
var2 = data[1]; // item is to the south
- if(x < 0)
+ if (x < 0)
var3 = x * -1;
else
var3 = x;
- if(y < 0)
+ if (y < 0)
var4 = y * -1;
else
var4 = y;
- if(var1 + var2 > var3 + var4)
+ if (var1 + var2 > var3 + var4)
{
data[0] = x;
data[1] = y;
}
else
{
- if(var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y)))
+ if (var1 + var2 == var3 + var4 && (var2 > var4 || (var2 == var4 && data[1] < y)))
{
data[0] = x;
data[1] = y;
@@ -642,40 +644,40 @@ u8 GetPlayerDirectionTowardsHiddenItem(s16 itemX, s16 itemY)
{
s16 abX, abY;
- if(itemX == 0 && itemY == 0)
+ if (itemX == 0 && itemY == 0)
return DIR_NONE; // player is standing on the item.
// get absolute X distance.
- if(itemX < 0)
+ if (itemX < 0)
abX = itemX * -1;
else
abX = itemX;
// get absolute Y distance.
- if(itemY < 0)
+ if (itemY < 0)
abY = itemY * -1;
else
abY = itemY;
- if(abX > abY)
+ if (abX > abY)
{
- if(itemX < 0)
+ if (itemX < 0)
return DIR_EAST;
else
return DIR_NORTH;
}
else
{
- if(abX < abY)
+ if (abX < abY)
{
- if(itemY < 0)
+ if (itemY < 0)
return DIR_SOUTH;
else
return DIR_WEST;
}
- if(abX == abY)
+ if (abX == abY)
{
- if(itemY < 0)
+ if (itemY < 0)
return DIR_SOUTH;
else
return DIR_WEST;
@@ -694,7 +696,7 @@ void SetPlayerDirectionTowardsItem(u8 direction)
void DisplayItemRespondingMessageAndExitItemfinder(u8 taskId)
{
- if(FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE)
+ if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE)
DisplayItemMessageOnField(taskId, gOtherText_ItemfinderResponding, ExitItemfinder, 0);
}
@@ -702,7 +704,7 @@ void RotatePlayerAndExitItemfinder(u8 taskId)
{
s16 *data = gTasks[taskId].data;
- if(FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE
+ if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[GetFieldObjectIdByLocalIdAndMap(0xFF, 0, 0)]) == TRUE
|| data[2] == FALSE)
{
SetPlayerDirectionTowardsItem(gItemFinderDirections[data[5]]);
@@ -710,18 +712,18 @@ void RotatePlayerAndExitItemfinder(u8 taskId)
data[5] = (data[5] + 1) & 3;
data[3]++;
- if(data[3] == 4)
+ if (data[3] == 4)
DisplayItemMessageOnField(taskId, gOtherText_ItemfinderItemUnderfoot, ExitItemfinder, 0);
}
}
void ItemUseOutOfBattle_PokeblockCase(u8 taskId)
{
- if(sub_80F9344() == TRUE)
+ if (sub_80F9344() == TRUE)
{
DisplayDadsAdviceCannotUseItemMessage(taskId, gTasks[taskId].data[2]);
}
- else if(gTasks[taskId].data[2] != TRUE)
+ else if (gTasks[taskId].data[2] != TRUE)
{
sub_810BA7C(0);
ItemMenu_ConfirmNormalFade(taskId);
@@ -739,7 +741,7 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
ConvertIntToDecimalStringN(gStringVar1, GetCoins(), 0, 4);
StringExpandPlaceholders(gStringVar4, gOtherText_Coins3);
- if(!gTasks[taskId].data[2])
+ if (!gTasks[taskId].data[2])
{
MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14);
DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1);
@@ -752,20 +754,20 @@ void ItemUseOutOfBattle_CoinCase(u8 taskId)
void sub_80C9BB8(u8 var)
{
- if(gMain.newKeys & A_BUTTON)
+ if (gMain.newKeys & A_BUTTON)
CleanUpItemMenuMessage(var);
}
void sub_80C9BD8(u8 var)
{
- if(gMain.newKeys & A_BUTTON)
+ if (gMain.newKeys & A_BUTTON)
CleanUpOverworldMessage(var);
}
// unused
void ItemUseOutOfBattle_SSTicket(u8 taskId)
{
- if(gTasks[taskId].data[2] == 0)
+ if (gTasks[taskId].data[2] == 0)
{
MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14);
DisplayItemMessageOnField(taskId, gUnknown_083D61DC[ItemId_GetSecondaryId(gScriptItemId)], sub_80C9BB8, 1);
@@ -778,9 +780,9 @@ void ItemUseOutOfBattle_SSTicket(u8 taskId)
void sub_80C9C7C(u8 taskId)
{
- if(IsPlayerFacingPlantedBerryTree() == TRUE)
+ 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;
@@ -803,9 +805,9 @@ void sub_80C9D00(u8 taskId)
void ItemUseOutOfBattle_WailmerPail(u8 taskId)
{
- if(TryToWaterBerryTree() == TRUE)
+ if (TryToWaterBerryTree() == TRUE)
{
- gUnknown_03005D00 = sub_80C9D74;
+ gFieldItemUseCallback = sub_80C9D74;
SetUpItemUseOnFieldCallback(taskId);
}
else
@@ -839,9 +841,9 @@ void ItemUseOutOfBattle_SacredAsh(u8 taskId)
gLastFieldPokeMenuOpened = 0;
- for(i = 0; i < 6; i++)
+ for (i = 0; i < 6; i++)
{
- if(GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES) != 0 && GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
{
gLastFieldPokeMenuOpened = i;
break;
@@ -874,7 +876,7 @@ void ItemUseOutOfBattle_TMHM(u8 taskId)
{
MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14);
- if(gScriptItemId >= ITEM_HM01)
+ if (gScriptItemId >= ITEM_HM01)
DisplayItemMessageOnField(taskId, gOtherText_BootedHM, sub_80C9EE4, 1); // HM
else
DisplayItemMessageOnField(taskId, gOtherText_BootedTM, sub_80C9EE4, 1); // TM
@@ -882,13 +884,13 @@ void ItemUseOutOfBattle_TMHM(u8 taskId)
void sub_80C9EE4(u8 taskId)
{
- PlaySE(2);
+ PlaySE(SE_PC_LOGON);
gTasks[taskId].func = sub_80C9F10;
}
void sub_80C9F10(u8 taskId)
{
- if(gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
{
StringCopy(gStringVar1, gMoveNames[ItemIdToBattleMoveId(gScriptItemId)]);
StringExpandPlaceholders(gStringVar4, gOtherText_ContainsMove);
@@ -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();
@@ -919,10 +921,10 @@ void sub_80C9FDC(void)
void ItemUseOutOfBattle_Repel(u8 var)
{
- if(VarGet(VAR_REPEL_STEP_COUNT) == FALSE)
+ if (VarGet(VAR_REPEL_STEP_COUNT) == FALSE)
{
VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gScriptItemId));
- sub_80C9FDC();
+ PrepareItemUseMessage();
DisplayItemMessageOnField(var, gStringVar4, CleanUpItemMenuMessage, 1);
}
else
@@ -941,26 +943,26 @@ void sub_80CA098(u8 taskId)
{
if(++gTasks[taskId].data[15] > 7)
{
- PlaySE(0x75);
+ PlaySE(SE_BIDORO);
DisplayItemMessageOnField(taskId, gStringVar4, CleanUpItemMenuMessage, 1);
}
}
void ItemUseOutOfBattle_BlackWhiteFlute(u8 taskId)
{
- if(gScriptItemId == 43)
+ if (gScriptItemId == ITEM_WHITE_FLUTE)
{
FlagSet(SYS_ENC_UP_ITEM);
- FlagReset(SYS_ENC_DOWN_ITEM);
+ FlagClear(SYS_ENC_DOWN_ITEM);
sub_80CA07C();
StringExpandPlaceholders(gStringVar4, gOtherText_UsedFlute);
gTasks[taskId].func = sub_80CA098;
gTasks[taskId].data[15] = 0;
}
- else if(gScriptItemId == 42)
+ else if (gScriptItemId == ITEM_BLACK_FLUTE)
{
FlagSet(SYS_ENC_DOWN_ITEM);
- FlagReset(SYS_ENC_UP_ITEM);
+ FlagClear(SYS_ENC_UP_ITEM);
sub_80CA07C();
StringExpandPlaceholders(gStringVar4, gOtherText_UsedRepel);
gTasks[taskId].func = sub_80CA098;
@@ -975,17 +977,17 @@ 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);
}
-bool8 sub_80CA1C8(void)
+bool8 CanUseEscapeRopeOnCurrMap(void)
{
- if(gMapHeader.mapType == MAP_TYPE_UNDERGROUND)
+ if (gMapHeader.mapType == MAP_TYPE_UNDERGROUND)
return TRUE;
else
return FALSE;
@@ -993,9 +995,9 @@ bool8 sub_80CA1C8(void)
void ItemUseOutOfBattle_EscapeRope(u8 taskId)
{
- if(sub_80CA1C8() == TRUE) // is map type an area you can use escape rope?
+ if (CanUseEscapeRopeOnCurrMap() == TRUE)
{
- gUnknown_03005D00 = sub_80CA18C;
+ gFieldItemUseCallback = EscapeRopeCallback;
SetUpItemUseOnFieldCallback(taskId);
}
else
@@ -1012,7 +1014,7 @@ void ItemUseOutOfBattle_EvolutionStone(u8 var)
void ItemUseInBattle_PokeBall(u8 var)
{
- if(PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon?
+ if (PlayerPartyAndPokemonStorageFull() == FALSE) // have room for mon?
{
RemoveBagItem(gScriptItemId, 1);
sub_80A7094(var);
@@ -1026,7 +1028,7 @@ void ItemUseInBattle_PokeBall(u8 var)
void sub_80CA294(u8 var)
{
- if(gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
sub_80A7094(var);
}
@@ -1034,7 +1036,7 @@ void sub_80CA2BC(u8 taskId)
{
if(++gTasks[taskId].data[15] > 7)
{
- PlaySE(1);
+ PlaySE(SE_KAIFUKU);
RemoveBagItem(gScriptItemId, 1);
DisplayItemMessageOnField(taskId, sub_803F378(gScriptItemId), sub_80CA294, 1);
}
@@ -1046,7 +1048,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId)
MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14);
- if(ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gScriptItemId, partyId, 0) != FALSE)
+ if (ExecuteTableBasedItemEffect_(&gPlayerParty[partyId], gScriptItemId, partyId, 0) != FALSE)
{
DisplayItemMessageOnField(taskId, gOtherText_WontHaveAnyEffect, CleanUpItemMenuMessage, 1);
}
@@ -1059,7 +1061,7 @@ void ItemUseInBattle_StatIncrease(u8 taskId)
void sub_80CA394(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
sub_8094E4C();
gpu_pal_allocator_reset__manage_upper_four();
@@ -1095,7 +1097,7 @@ void unref_sub_80CA448(u8 var)
{
MenuZeroFillWindowRect(0, 0xD, 0xD, 0x14);
- if(ExecuteTableBasedItemEffect__(0, gScriptItemId, 0) == FALSE)
+ if (ExecuteTableBasedItemEffect__(0, gScriptItemId, 0) == FALSE)
{
RemoveBagItem(gScriptItemId, 1);
GetMonNickname(&gPlayerParty[0], gStringVar1);
@@ -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
@@ -1125,7 +1127,7 @@ void ItemUseInBattle_Escape(u8 taskId)
void ItemUseOutOfBattle_EnigmaBerry(u8 taskId)
{
- switch(GetItemEffectType(gScriptItemId) - 1)
+ switch (GetItemEffectType(gScriptItemId) - 1)
{
case 1:
case 2:
@@ -1168,7 +1170,7 @@ void ItemUseOutOfBattle_EnigmaBerry(u8 taskId)
void ItemUseInBattle_EnigmaBerry(u8 taskId)
{
- switch(GetItemEffectType(gScriptItemId))
+ switch (GetItemEffectType(gScriptItemId))
{
case 0:
ItemUseInBattle_StatIncrease(taskId);
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 bd40bcacc..2856320b8 100644
--- a/src/map_obj_lock.c
+++ b/src/field/map_obj_lock.c
@@ -75,7 +75,7 @@ bool8 sub_8064DB4(void)
}
}
-void sub_8064DD8(void)
+void LockSelectedMapObject(void)
{
u8 taskId;
FreezeMapObjectsExceptOne(gSelectedMapObject);
diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c
new file mode 100644
index 000000000..33bc39648
--- /dev/null
+++ b/src/field/mauville_man.c
@@ -0,0 +1,1311 @@
+#include "global.h"
+#include "bard_music.h"
+#include "mauville_man.h"
+#include "easy_chat.h"
+#include "event_data.h"
+#include "field_message_box.h"
+#include "m4a.h"
+#include "menu.h"
+#include "overworld.h"
+#include "rng.h"
+#include "script.h"
+#include "songs.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "trader.h"
+
+#define MACRO1(a) (((a) % 4) + (((a) / 8) & 1))
+
+extern struct MusicPlayerInfo gMPlay_SE2;
+
+extern u16 gScriptResult;
+extern u16 gSpecialVar_0x8004;
+
+extern const u8 gTextStoryteller_Story1Title[];
+extern const u8 gTextStoryteller_Story1Action[];
+extern const u8 gTextStoryteller_Story1Text[];
+extern const u8 gTextStoryteller_Story2Title[];
+extern const u8 gTextStoryteller_Story2Action[];
+extern const u8 gTextStoryteller_Story2Text[];
+extern const u8 gTextStoryteller_Story3Title[];
+extern const u8 gTextStoryteller_Story3Action[];
+extern const u8 gTextStoryteller_Story3Text[];
+extern const u8 gTextStoryteller_Story4Title[];
+extern const u8 gTextStoryteller_Story4Action[];
+extern const u8 gTextStoryteller_Story4Text[];
+extern const u8 gTextStoryteller_Story5Title[];
+extern const u8 gTextStoryteller_Story5Action[];
+extern const u8 gTextStoryteller_Story5Text[];
+extern const u8 gTextStoryteller_Story6Title[];
+extern const u8 gTextStoryteller_Story6Action[];
+extern const u8 gTextStoryteller_Story6Text[];
+extern const u8 gTextStoryteller_Story7Title[];
+extern const u8 gTextStoryteller_Story7Action[];
+extern const u8 gTextStoryteller_Story7Text[];
+extern const u8 gTextStoryteller_Story8Title[];
+extern const u8 gTextStoryteller_Story8Action[];
+extern const u8 gTextStoryteller_Story8Text[];
+extern const u8 gTextStoryteller_Story9Title[];
+extern const u8 gTextStoryteller_Story9Action[];
+extern const u8 gTextStoryteller_Story9Text[];
+extern const u8 gTextStoryteller_Story10Title[];
+extern const u8 gTextStoryteller_Story10Action[];
+extern const u8 gTextStoryteller_Story10Text[];
+extern const u8 gTextStoryteller_Story11Title[];
+extern const u8 gTextStoryteller_Story11Action[];
+extern const u8 gTextStoryteller_Story11Text[];
+extern const u8 gTextStoryteller_Story12Title[];
+extern const u8 gTextStoryteller_Story12Action[];
+extern const u8 gTextStoryteller_Story12Text[];
+extern const u8 gTextStoryteller_Story13Title[];
+extern const u8 gTextStoryteller_Story13Action[];
+extern const u8 gTextStoryteller_Story13Text[];
+extern const u8 gTextStoryteller_Story14Title[];
+extern const u8 gTextStoryteller_Story14Action[];
+extern const u8 gTextStoryteller_Story14Text[];
+extern const u8 gTextStoryteller_Story15Title[];
+extern const u8 gTextStoryteller_Story15Action[];
+extern const u8 gTextStoryteller_Story15Text[];
+extern const u8 gTextStoryteller_Story16Title[];
+extern const u8 gTextStoryteller_Story16Action[];
+extern const u8 gTextStoryteller_Story16Text[];
+extern const u8 gTextStoryteller_Story17Title[];
+extern const u8 gTextStoryteller_Story17Action[];
+extern const u8 gTextStoryteller_Story17Text[];
+extern const u8 gTextStoryteller_Story18Title[];
+extern const u8 gTextStoryteller_Story18Action[];
+extern const u8 gTextStoryteller_Story18Text[];
+extern const u8 gTextStoryteller_Story19Title[];
+extern const u8 gTextStoryteller_Story19Action[];
+extern const u8 gTextStoryteller_Story19Text[];
+extern const u8 gTextStoryteller_Story20Title[];
+extern const u8 gTextStoryteller_Story20Action[];
+extern const u8 gTextStoryteller_Story20Text[];
+extern const u8 gTextStoryteller_Story21Title[];
+extern const u8 gTextStoryteller_Story21Action[];
+extern const u8 gTextStoryteller_Story21Text[];
+extern const u8 gTextStoryteller_Story22Title[];
+extern const u8 gTextStoryteller_Story22Action[];
+extern const u8 gTextStoryteller_Story22Text[];
+extern const u8 gTextStoryteller_Story23Title[];
+extern const u8 gTextStoryteller_Story23Action[];
+extern const u8 gTextStoryteller_Story23Text[];
+extern const u8 gTextStoryteller_Story24Title[];
+extern const u8 gTextStoryteller_Story24Action[];
+extern const u8 gTextStoryteller_Story24Text[];
+extern const u8 gTextStoryteller_Story25Title[];
+extern const u8 gTextStoryteller_Story25Action[];
+extern const u8 gTextStoryteller_Story25Text[];
+extern const u8 gTextStoryteller_Story26Title[];
+extern const u8 gTextStoryteller_Story26Action[];
+extern const u8 gTextStoryteller_Story26Text[];
+extern const u8 gTextStoryteller_Story27Title[];
+extern const u8 gTextStoryteller_Story27Action[];
+extern const u8 gTextStoryteller_Story27Text[];
+extern const u8 gTextStoryteller_Story28Title[];
+extern const u8 gTextStoryteller_Story28Action[];
+extern const u8 gTextStoryteller_Story28Text[];
+extern const u8 gTextStoryteller_Story29Title[];
+extern const u8 gTextStoryteller_Story29Action[];
+extern const u8 gTextStoryteller_Story29Text[];
+extern const u8 gTextStoryteller_Story30Title[];
+extern const u8 gTextStoryteller_Story30Action[];
+extern const u8 gTextStoryteller_Story30Text[];
+extern const u8 gTextStoryteller_Story31Title[];
+extern const u8 gTextStoryteller_Story31Action[];
+extern const u8 gTextStoryteller_Story31Text[];
+extern const u8 gTextStoryteller_Story32Title[];
+extern const u8 gTextStoryteller_Story32Action[];
+extern const u8 gTextStoryteller_Story32Text[];
+extern const u8 gTextStoryteller_Story33Title[];
+extern const u8 gTextStoryteller_Story33Action[];
+extern const u8 gTextStoryteller_Story33Text[];
+extern const u8 gTextStoryteller_Story34Title[];
+extern const u8 gTextStoryteller_Story34Action[];
+extern const u8 gTextStoryteller_Story34Text[];
+extern const u8 gTextStoryteller_Story35Title[];
+extern const u8 gTextStoryteller_Story35Action[];
+extern const u8 gTextStoryteller_Story35Text[];
+extern const u8 gTextStoryteller_Story36Title[];
+extern const u8 gTextStoryteller_Story36Action[];
+extern const u8 gTextStoryteller_Story36Text[];
+
+extern struct BardSong gUnknown_03005DA0;
+
+EWRAM_DATA static u16 gUnknown_020388BC = 0; // set but not used?
+
+static const u16 sDefaultBardSongLyrics[] =
+{
+#ifdef ENGLISH
+ EC_WORD_SISTER,
+ EC_WORD_EATS,
+ EC_WORD_SWEETS,
+ EC_WORD_VORACIOUS,
+ EC_WORD_AND,
+ EC_WORD_DROOLING,
+#else
+ EC_WORD_SISTER,
+ EC_WORD_MUST_BE,
+ EC_WORD_SWEETS,
+ EC_WORD_VORACIOUS,
+ EC_WORD_DROOLING,
+ EC_WORD_THICK,
+#endif
+};
+
+static const u8 *const sGiddyAdjectives[] =
+{
+ OtherText_SoPretty,
+ OtherText_SoDarling,
+ OtherText_SoRelaxed,
+ OtherText_SoSunny,
+ OtherText_SoDesirable,
+ OtherText_SoExciting,
+ OtherText_SoAmusing,
+ OtherText_SoMagical,
+};
+
+static const u8 *const sGiddyQuestions[] =
+{
+ OtherText_WantVacationNicePlace,
+ OtherText_BoughtCrayonsIsNice,
+ OtherText_IfWeCouldFloat,
+ OtherText_SandWashesAwayMakeSad,
+ OtherText_WhatsBottomSeaLike,
+ OtherText_SeeSettingSun,
+ OtherText_LyingInGreenGrass,
+ OtherText_SecretBasesWonderful,
+};
+
+static void sub_80F7DC0(void);
+static void Task_BardSong(u8);
+static void StartBardSong(u8);
+static void StorytellerSetup(void);
+static void sub_80F8428(void);
+
+static void SetupBard(void)
+{
+ u16 i;
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+
+ bard->id = MAUVILLE_MAN_BARD;
+ bard->hasChangedSong = FALSE;
+ for (i = 0; i < 6; i++)
+ bard->songLyrics[i] = sDefaultBardSongLyrics[i];
+}
+
+static void SetupHipster(void)
+{
+ struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster;
+
+ hipster->id = MAUVILLE_MAN_HIPSTER;
+ hipster->alreadySpoken = FALSE;
+}
+
+static void SetupStoryteller(void)
+{
+ StorytellerSetup();
+}
+
+static void SetupGiddy(void)
+{
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+
+ giddy->id = MAUVILLE_MAN_GIDDY;
+ giddy->taleCounter = 0;
+}
+
+static void SetupTrader(void)
+{
+ TraderSetup();
+}
+
+void SetupMauvilleOldMan(void)
+{
+ u16 trainerId = (gSaveBlock2.playerTrainerId[1] << 8) | gSaveBlock2.playerTrainerId[0];
+
+ // Determine man based on the last digit of the player's trainer ID.
+ switch ((trainerId % 10) / 2)
+ {
+ case MAUVILLE_MAN_BARD:
+ SetupBard();
+ break;
+ case MAUVILLE_MAN_HIPSTER:
+ SetupHipster();
+ break;
+ case MAUVILLE_MAN_TRADER:
+ SetupTrader();
+ break;
+ case MAUVILLE_MAN_STORYTELLER:
+ SetupStoryteller();
+ break;
+ case MAUVILLE_MAN_GIDDY:
+ SetupGiddy();
+ break;
+ }
+ sub_80F83D0();
+}
+
+static u8 GetCurrentMauvilleOldMan(void)
+{
+ struct MauvilleManCommon *common = &gSaveBlock1.mauvilleMan.common;
+
+ return common->id;
+}
+
+void ScrSpecial_GetCurrentMauvilleMan(void)
+{
+ gScriptResult = GetCurrentMauvilleOldMan();
+}
+
+void ScrSpecial_HasBardSongBeenChanged(void)
+{
+ u16 *scriptResult = &gScriptResult; // why??
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+
+ *scriptResult = bard->hasChangedSong;
+}
+
+void ScrSpecial_SaveBardSongLyrics(void)
+{
+ u16 i;
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+
+ StringCopy(bard->playerName, gSaveBlock2.playerName);
+
+ for (i = 0; i < 4; i++)
+ bard->playerTrainerId[i] = gSaveBlock2.playerTrainerId[i];
+
+ for (i = 0; i < 6; i++)
+ bard->songLyrics[i] = bard->temporaryLyrics[i];
+
+ bard->hasChangedSong = TRUE;
+}
+
+// Copies lyrics into gStringVar4
+void PrepareSongText(void)
+{
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+ u16 specialVar = gSpecialVar_0x8004; // It's a bit odd to use this temp variable, but it seems needed to match.
+ u16 *lyrics;
+ u16 lineNum;
+ u8 *wordEnd;
+ u8 *str;
+
+ lyrics = bard->temporaryLyrics;
+ if (specialVar == 0)
+ lyrics = bard->songLyrics;
+ wordEnd = gStringVar4;
+ str = wordEnd;
+ // Put three words on each line
+ for (lineNum = 0; lineNum < 2; lineNum++)
+ {
+ wordEnd = EasyChat_GetWordText(wordEnd, *(lyrics++));
+ while (wordEnd != str)
+ {
+ if (*str == CHAR_SPACE)
+ *str = CHAR_SONG_WORD_SEPARATOR;
+ str++;
+ }
+
+ str++;
+ *(wordEnd++) = CHAR_SPACE;
+
+ wordEnd = EasyChat_GetWordText(wordEnd, *(lyrics++));
+ while (wordEnd != str)
+ {
+ if (*str == CHAR_SPACE)
+ *str = CHAR_SONG_WORD_SEPARATOR;
+ str++;
+ }
+
+ str++;
+ *(wordEnd++) = CHAR_NEWLINE;
+
+ wordEnd = EasyChat_GetWordText(wordEnd, *(lyrics++));
+ while (wordEnd != str)
+ {
+ if (*str == CHAR_SPACE)
+ *str = CHAR_SONG_WORD_SEPARATOR;
+ str++;
+ }
+
+ if (lineNum == 0)
+ {
+ *(wordEnd++) = EXT_CTRL_CODE_BEGIN;
+ *(wordEnd++) = 15;
+ }
+ }
+}
+
+void ScrSpecial_PlayBardSong(void)
+{
+ StartBardSong(gSpecialVar_0x8004);
+ MenuDisplayMessageBox();
+ ScriptContext1_Stop();
+}
+
+void ScrSpecial_GetHipsterSpokenFlag(void)
+{
+ u16 *scriptResult = &gScriptResult; // again??
+ struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster;
+
+ *scriptResult = hipster->alreadySpoken;
+}
+
+void ScrSpecial_SetHipsterSpokenFlag(void)
+{
+ struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster;
+
+ hipster->alreadySpoken = TRUE;
+}
+
+void ScrSpecial_HipsterTeachWord(void)
+{
+ u16 var = sub_80EB8EC();
+
+ if (var == 0xFFFF)
+ {
+ gScriptResult = FALSE;
+ }
+ else
+ {
+ EasyChat_GetWordText(gStringVar1, var);
+ gScriptResult = TRUE;
+ }
+}
+
+void ScrSpecial_GiddyShouldTellAnotherTale(void)
+{
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+
+ if (giddy->taleCounter == 10)
+ {
+ gScriptResult = FALSE;
+ giddy->taleCounter = 0;
+ }
+ else
+ {
+ gScriptResult = TRUE;
+ }
+}
+
+void ScrSpecial_GenerateGiddyLine(void)
+{
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+
+ if (giddy->taleCounter == 0)
+ sub_80F7DC0();
+
+ if (giddy->randomWords[giddy->taleCounter] != 0xFFFF) // is not the last element of the array?
+ {
+ u8 *stringPtr;
+ u32 adjective = Random();
+
+ adjective %= 8;
+ stringPtr = EasyChat_GetWordText(gStringVar4, giddy->randomWords[giddy->taleCounter]);
+ stringPtr = StringCopy(stringPtr, gOtherText_Is);
+ stringPtr = StringCopy(stringPtr, sGiddyAdjectives[adjective]);
+ StringCopy(stringPtr, gOtherText_DontYouAgree);
+ }
+ else
+ {
+ StringCopy(gStringVar4, sGiddyQuestions[giddy->questionList[giddy->questionNum++]]);
+ }
+
+ if (!(Random() % 10))
+ giddy->taleCounter = 10;
+ else
+ giddy->taleCounter++;
+
+ gScriptResult = TRUE;
+}
+
+#ifdef NONMATCHING
+static void sub_80F7DC0(void)
+{
+ u16 arr[][2] =
+ {
+ { 0x0, 0},
+ { 0xC, 0},
+ { 0xD, 0},
+ {0x12, 0},
+ {0x13, 0},
+ {0x15, 0},
+ };
+ u16 i;
+ u16 r10;
+ u16 r7;
+
+ for (i = 0; i < 8; i++)
+ {
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+
+ //gSaveBlock1.mauvilleMan.giddy.questionList[i] = i;
+ giddy->questionList[i] = i;
+ }
+
+ // Scramble questions
+ for (i = 0; i < 8; i++)
+ {
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+
+ /*
+ u16 r1 = Random() % (i + 1);
+ u8 r7 = gSaveBlock1.mauvilleMan.giddy.questionList[i];
+ gSaveBlock1.mauvilleMan.giddy.questionList[i] = gSaveBlock1.mauvilleMan.giddy.questionList[r1];
+ gSaveBlock1.mauvilleMan.giddy.questionList[r1] = r7;
+ */
+ u16 r1 = Random() % (i + 1);
+ u8 r7 = giddy->questionList[i];
+ giddy->questionList[i] = giddy->questionList[r1];
+ giddy->questionList[r1] = r7;
+ }
+
+ r10 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ arr[i][1] = sub_80EAE88(arr[i][0]);
+ r10 += arr[i][1];
+ }
+
+ {
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+ giddy->questionNum = 0;
+ }
+ //gSaveBlock1.mauvilleMan.giddy.questionNum = 0;
+
+ r7 = 0;
+ for (i = 0; i < 10; i++)
+ {
+ struct MauvilleManGiddy *giddy = &gSaveBlock1.mauvilleMan.giddy;
+
+ u16 var = Random() % 10;
+ if (var < 3 && r7 < 8)
+ {
+ //gSaveBlock1.mauvilleMan.giddy.randomWords[i] = 0xFFFF;
+ giddy->randomWords[i] = 0xFFFF;
+ r7++;
+ }
+ //_080F7E90
+ else
+ {
+ s16 r2 = Random() % r10;
+
+ u16 r1 = 0;
+
+ while (i < 6) // comparing the wrong variable
+ {
+ r2 = arr[r1][1] - r2;
+ if (r2 <= 0)
+ break;
+ r1++;
+ }
+
+ if (r1 == 6)
+ r1 = 0;
+ //gSaveBlock1.mauvilleMan.giddy.randomWords[i] = sub_80EB784(arr[r1][0]);
+ giddy->randomWords[i] = sub_80EB784(arr[r1][0]);
+ }
+ }
+}
+#else
+
+static const u16 gUnknown_083E53C8[][2] =
+{
+ { 0x0, 0},
+ { 0xC, 0},
+ { 0xD, 0},
+ {0x12, 0},
+ {0x13, 0},
+ {0x15, 0},
+};
+
+__attribute__((naked))
+static void sub_80F7DC0(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, 0x18\n\
+ ldr r1, _080F7E84 @ =gUnknown_083E53C8\n\
+ mov r0, sp\n\
+ movs r2, 0x18\n\
+ bl memcpy\n\
+ movs r5, 0\n\
+ movs r0, 0x2\n\
+ add r0, sp\n\
+ mov r8, r0\n\
+ ldr r1, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\
+ adds r1, 0x18\n\
+ adds r3, r1, 0\n\
+_080F7DE4:\n\
+ adds r0, r3, r5\n\
+ strb r5, [r0]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x7\n\
+ bls _080F7DE4\n\
+ movs r5, 0\n\
+ ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\
+ adds r2, 0x4\n\
+ mov r9, r2\n\
+ adds r6, r1, 0\n\
+_080F7DFC:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ adds r4, r5, 0x1\n\
+ adds r1, r4, 0\n\
+ bl __modsi3\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ adds r2, r6, r5\n\
+ ldrb r7, [r2]\n\
+ adds r1, r6, r1\n\
+ ldrb r0, [r1]\n\
+ strb r0, [r2]\n\
+ strb r7, [r1]\n\
+ lsls r4, 16\n\
+ lsrs r5, r4, 16\n\
+ cmp r5, 0x7\n\
+ bls _080F7DFC\n\
+ movs r3, 0\n\
+ mov r10, r3\n\
+ movs r5, 0\n\
+_080F7E2A:\n\
+ lsls r4, r5, 2\n\
+ mov r1, sp\n\
+ adds r0, r1, r4\n\
+ ldrb r0, [r0]\n\
+ bl sub_80EAE88\n\
+ add r4, r8\n\
+ strh r0, [r4]\n\
+ add r0, r10\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r10, r0\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x5\n\
+ bls _080F7E2A\n\
+ movs r0, 0\n\
+ ldr r2, _080F7E88 @ =gSaveBlock1 + 0x2D94\n\
+ strb r0, [r2, 0x2]\n\
+ movs r7, 0\n\
+ movs r5, 0\n\
+_080F7E56:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r1, 0x2\n\
+ bhi _080F7E90\n\
+ cmp r7, 0x7\n\
+ bhi _080F7E90\n\
+ lsls r0, r5, 1\n\
+ add r0, r9\n\
+ ldr r1, _080F7E8C @ =0x0000ffff\n\
+ strh r1, [r0]\n\
+ adds r0, r7, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r7, r0, 16\n\
+ adds r4, r5, 0x1\n\
+ b _080F7EE2\n\
+ .align 2, 0\n\
+_080F7E84: .4byte gUnknown_083E53C8\n\
+_080F7E88: .4byte gSaveBlock1 + 0x2D94\n\
+_080F7E8C: .4byte 0x0000ffff\n\
+_080F7E90:\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r1, r10\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ movs r1, 0\n\
+ adds r4, r5, 0x1\n\
+ lsls r6, r5, 1\n\
+ cmp r5, 0x5\n\
+ bhi _080F7ECC\n\
+ mov r3, r8\n\
+ ldrh r0, [r3]\n\
+ b _080F7EC2\n\
+_080F7EB2:\n\
+ adds r0, r1, 0x1\n\
+ lsls r0, 16\n\
+ lsrs r1, r0, 16\n\
+ cmp r5, 0x5\n\
+ bhi _080F7ECC\n\
+ lsls r0, r1, 2\n\
+ adds r0, r3, r0\n\
+ ldrh r0, [r0]\n\
+_080F7EC2:\n\
+ subs r0, r2, r0\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ cmp r0, 0\n\
+ bgt _080F7EB2\n\
+_080F7ECC:\n\
+ cmp r1, 0x6\n\
+ bne _080F7ED2\n\
+ movs r1, 0\n\
+_080F7ED2:\n\
+ lsls r0, r1, 2\n\
+ add r0, sp\n\
+ ldrh r0, [r0]\n\
+ bl sub_80EB784\n\
+ mov r2, r9\n\
+ adds r1, r2, r6\n\
+ strh r0, [r1]\n\
+_080F7EE2:\n\
+ lsls r0, r4, 16\n\
+ lsrs r5, r0, 16\n\
+ cmp r5, 0x9\n\
+ bls _080F7E56\n\
+ add sp, 0x18\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");
+}
+#endif
+
+static void sub_80F7EFC(void)
+{
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+
+ bard->hasChangedSong = FALSE;
+}
+
+static void sub_80F7F0C(void)
+{
+ struct MauvilleManHipster *hipster = &gSaveBlock1.mauvilleMan.hipster;
+
+ hipster->alreadySpoken = FALSE;
+}
+
+static void sub_80F7F18(void)
+{
+ sub_8109A20();
+}
+
+static void sub_80F7F24(void)
+{
+ sub_80F8428();
+}
+
+void sub_80F7F30(void)
+{
+ switch (GetCurrentMauvilleOldMan())
+ {
+ case MAUVILLE_MAN_BARD:
+ sub_80F7EFC();
+ break;
+ case MAUVILLE_MAN_HIPSTER:
+ sub_80F7F0C();
+ break;
+ case MAUVILLE_MAN_STORYTELLER:
+ sub_80F7F24();
+ break;
+ case MAUVILLE_MAN_TRADER:
+ sub_80F7F18();
+ break;
+ case MAUVILLE_MAN_GIDDY:
+ break;
+ }
+ sub_80F83D0();
+}
+
+#define tState data[0]
+#define tCharIndex data[3]
+#define tCurrWord data[4]
+#define tUseTemporaryLyrics data[5]
+
+static void StartBardSong(bool8 useTemporaryLyrics)
+{
+ u8 taskId = CreateTask(Task_BardSong, 0x50);
+
+ gTasks[taskId].tUseTemporaryLyrics = useTemporaryLyrics;
+}
+
+static void BardSing(struct Task *task, struct BardSong *song)
+{
+ switch (task->tState)
+ {
+ case 0: // Initialize song
+ {
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+ u16 *lyrics;
+ s32 i;
+
+ // Copy lyrics
+ if (gSpecialVar_0x8004 == 0)
+ lyrics = bard->songLyrics;
+ else
+ lyrics = bard->temporaryLyrics;
+ for (i = 0; i < 6; i++)
+ song->lyrics[i] = lyrics[i];
+
+ // Clear phonemes
+ for (i = 0; i < 6; i++)
+ {
+ song->phonemes[i].sound = 0xFFFF;
+ song->phonemes[i].length = 0;
+ song->phonemes[i].pitch = 0;
+ song->phonemes[i].volume = 0;
+ }
+ song->currWord = 0;
+ song->currPhoneme = 0;
+ song->var04 = 0;
+ }
+ break;
+ case 1: // Wait for BGM to end
+ break;
+ case 2: // Initialize word
+ {
+ u16 word = song->lyrics[song->currWord];
+ const struct BardSound *sounds = GetWordSounds(EC_GROUP(word), EC_INDEX(word));
+
+ song->var04 = 0;
+ GetWordPhonemes(song, sounds, MACRO1(word));
+ }
+ break;
+ case 3:
+ case 4:
+ {
+ struct BardPhoneme *phoneme = &song->phonemes[song->currPhoneme];
+
+ switch (song->state)
+ {
+ case 0:
+ if (song->phonemeTimer == 0) // Timer has expired. Move to next phoneme
+ {
+ if (song->currPhoneme == 6 || phoneme->sound == 0xFF)
+ {
+ song->state = 0xFE;
+ break;
+ }
+ song->phonemeTimer = phoneme->length;
+ if (phoneme->sound <= 50)
+ {
+ u16 num = phoneme->sound / 3;
+
+ m4aSongNumStart(249 + num * 3);
+ }
+ song->state = 1;
+ }
+ else
+ {
+ if (song->voiceInflection > 10)
+ song->volume -= 2;
+ if (song->voiceInflection & 1)
+ song->pitch += 64;
+ else
+ song->pitch -= 64;
+ m4aMPlayVolumeControl(&gMPlay_SE2, 0xFFFF, song->volume);
+ m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, song->pitch);
+ song->voiceInflection++;
+ }
+ song->phonemeTimer--;
+ break;
+ case 1:
+ song->currPhoneme++;
+ song->state = 0;
+ if (phoneme->sound <= 50)
+ {
+ song->volume = 0x100 + phoneme->volume * 16;
+ m4aMPlayVolumeControl(&gMPlay_SE2, 0xFFFF, song->volume);
+ song->pitch = 0x200 + phoneme->pitch;
+ m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, song->pitch);
+ }
+ break;
+ case 0xFE:
+ m4aMPlayStop(&gMPlay_SE2);
+ song->state = 0xFF;
+ break;
+ }
+ }
+ break;
+ case 5:
+ break;
+ }
+}
+
+static void Task_BardSong(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId]; // r5
+
+ BardSing(task, &gUnknown_03005DA0);
+ switch (task->tState)
+ {
+ case 0: // Initialize song
+ PrepareSongText();
+ InitWindowFromConfig(gMenuWindowPtr, &gWindowConfig_81E6CE4);
+ sub_8002EB0(gMenuWindowPtr, gStringVar4, 2, 4, 15);
+ task->data[1] = 0;
+ task->data[2] = 0;
+ task->tCharIndex = 0;
+ task->tCurrWord = 0;
+ FadeOutBGMTemporarily(4);
+ task->tState = 1;
+ break;
+ case 1: // Wait for BGM to end
+ if (IsBGMPausedOrStopped())
+ task->tState = 2;
+ break;
+ case 2: // Initialize word
+ {
+ struct MauvilleManBard *bard = &gSaveBlock1.mauvilleMan.bard;
+ u8 *str = gStringVar4 + task->tCharIndex;
+ u16 wordLen = 0;
+ // Can't get it to match without hacking
+ u32 temp;
+ register s16 zero asm("r1");
+
+ while (*str != CHAR_SPACE
+ && *str != CHAR_NEWLINE
+ && *str != EXT_CTRL_CODE_BEGIN
+ && *str != EOS)
+ {
+ str++;
+ wordLen++;
+ }
+ if (!task->tUseTemporaryLyrics)
+ gUnknown_020388BC = MACRO1(bard->songLyrics[task->tCurrWord]);
+ else
+ gUnknown_020388BC = MACRO1(bard->temporaryLyrics[task->tCurrWord]);
+ temp = gUnknown_03005DA0.var04 / wordLen;
+ zero = 0;
+ gUnknown_03005DA0.var04 = temp;
+ if (gUnknown_03005DA0.var04 <= 0)
+ gUnknown_03005DA0.var04 = 1;
+ task->tCurrWord++;
+ if (task->data[2] == 0)
+ task->tState = 3;
+ else
+ task->tState = 5;
+ task->data[1] = zero;
+ }
+ break;
+ case 5:
+ if (task->data[2] == 0)
+ task->tState = 3;
+ else
+ task->data[2]--;
+ break;
+ case 3:
+ if (gStringVar4[task->tCharIndex] == EOS)
+ {
+ FadeInNewBGM(BGM_POKECEN, 6);
+ m4aMPlayFadeOutTemporarily(&gMPlay_SE2, 2);
+ EnableBothScriptContexts();
+ DestroyTask(taskId);
+ }
+ else if (gStringVar4[task->tCharIndex] == CHAR_SPACE)
+ {
+ sub_8003418(gMenuWindowPtr);
+ task->tCharIndex++;
+ task->tState = 2;
+ task->data[2] = 0;
+ }
+ else if (gStringVar4[task->tCharIndex] == CHAR_NEWLINE)
+ {
+ task->tCharIndex++;
+ task->tState = 2;
+ task->data[2] = 0;
+ }
+ else if (gStringVar4[task->tCharIndex] == EXT_CTRL_CODE_BEGIN)
+ {
+ task->tCharIndex += 2; // skip over control codes
+ task->tState = 2;
+ task->data[2] = 8;
+ }
+ else if (gStringVar4[task->tCharIndex] == CHAR_SONG_WORD_SEPARATOR)
+ {
+ gStringVar4[task->tCharIndex] = CHAR_SPACE; // restore it back to a space
+ sub_8003418(gMenuWindowPtr);
+ task->tCharIndex++;
+ task->data[2] = 0;
+ }
+ else
+ {
+ switch (task->data[1])
+ {
+ case 0:
+ sub_8003418(gMenuWindowPtr);
+ task->data[1]++;
+ break;
+ case 1:
+ task->data[1]++;
+ break;
+ case 2:
+ task->tCharIndex++;
+ task->data[1] = 0;
+ task->data[2] = gUnknown_03005DA0.var04;
+ task->tState = 4;
+ break;
+ }
+ }
+ break;
+ case 4:
+ task->data[2]--;
+ if (task->data[2] == 0)
+ task->tState = 3;
+ break;
+ }
+}
+
+void sub_80F83D0(void)
+{
+ VarSet(0x4010, 0x45 + GetCurrentMauvilleOldMan());
+}
+
+struct Story
+{
+ u8 stat;
+ u8 minVal;
+ const u8 *title;
+ const u8 *action;
+ const u8 *fullText;
+};
+
+static const struct Story sStorytellerStories[] =
+{
+ {0x32, 1, gTextStoryteller_Story1Title, gTextStoryteller_Story1Action, gTextStoryteller_Story1Text},
+ {0x02, 1, gTextStoryteller_Story2Title, gTextStoryteller_Story2Action, gTextStoryteller_Story2Text},
+ {0x03, 1, gTextStoryteller_Story3Title, gTextStoryteller_Story3Action, gTextStoryteller_Story3Text},
+ {0x04, 1, gTextStoryteller_Story4Title, gTextStoryteller_Story4Action, gTextStoryteller_Story4Text},
+ {0x06, 1, gTextStoryteller_Story5Title, gTextStoryteller_Story5Action, gTextStoryteller_Story5Text},
+ {0x09, 1, gTextStoryteller_Story6Title, gTextStoryteller_Story6Action, gTextStoryteller_Story6Text},
+ {0x0B, 1, gTextStoryteller_Story7Title, gTextStoryteller_Story7Action, gTextStoryteller_Story7Text},
+ {0x0C, 1, gTextStoryteller_Story8Title, gTextStoryteller_Story8Action, gTextStoryteller_Story8Text},
+ {0x0D, 1, gTextStoryteller_Story9Title, gTextStoryteller_Story9Action, gTextStoryteller_Story9Text},
+ {0x0E, 1, gTextStoryteller_Story10Title, gTextStoryteller_Story10Action, gTextStoryteller_Story10Text},
+ {0x0F, 1, gTextStoryteller_Story11Title, gTextStoryteller_Story11Action, gTextStoryteller_Story11Text},
+ {0x10, 1, gTextStoryteller_Story12Title, gTextStoryteller_Story12Action, gTextStoryteller_Story12Text},
+ {0x11, 1, gTextStoryteller_Story13Title, gTextStoryteller_Story13Action, gTextStoryteller_Story13Text},
+ {0x12, 1, gTextStoryteller_Story14Title, gTextStoryteller_Story14Action, gTextStoryteller_Story14Text},
+ {0x13, 1, gTextStoryteller_Story15Title, gTextStoryteller_Story15Action, gTextStoryteller_Story15Text},
+ {0x14, 1, gTextStoryteller_Story16Title, gTextStoryteller_Story16Action, gTextStoryteller_Story16Text},
+ {0x1A, 1, gTextStoryteller_Story17Title, gTextStoryteller_Story17Action, gTextStoryteller_Story17Text},
+ {0x1B, 1, gTextStoryteller_Story18Title, gTextStoryteller_Story18Action, gTextStoryteller_Story18Text},
+ {0x1C, 1, gTextStoryteller_Story19Title, gTextStoryteller_Story19Action, gTextStoryteller_Story19Text},
+ {0x1D, 2, gTextStoryteller_Story20Title, gTextStoryteller_Story20Action, gTextStoryteller_Story20Text},
+ {0x1E, 1, gTextStoryteller_Story21Title, gTextStoryteller_Story21Action, gTextStoryteller_Story21Text},
+ {0x21, 1, gTextStoryteller_Story22Title, gTextStoryteller_Story22Action, gTextStoryteller_Story22Text},
+ {0x24, 1, gTextStoryteller_Story23Title, gTextStoryteller_Story23Action, gTextStoryteller_Story23Text},
+ {0x25, 1, gTextStoryteller_Story24Title, gTextStoryteller_Story24Action, gTextStoryteller_Story24Text},
+ {0x26, 1, gTextStoryteller_Story25Title, gTextStoryteller_Story25Action, gTextStoryteller_Story25Text},
+ {0x27, 1, gTextStoryteller_Story26Title, gTextStoryteller_Story26Action, gTextStoryteller_Story26Text},
+ {0x28, 1, gTextStoryteller_Story27Title, gTextStoryteller_Story27Action, gTextStoryteller_Story27Text},
+ {0x29, 1, gTextStoryteller_Story28Title, gTextStoryteller_Story28Action, gTextStoryteller_Story28Text},
+ {0x2A, 1, gTextStoryteller_Story29Title, gTextStoryteller_Story29Action, gTextStoryteller_Story29Text},
+ {0x2B, 1, gTextStoryteller_Story30Title, gTextStoryteller_Story30Action, gTextStoryteller_Story30Text},
+ {0x2C, 1, gTextStoryteller_Story31Title, gTextStoryteller_Story31Action, gTextStoryteller_Story31Text},
+ {0x2D, 1, gTextStoryteller_Story32Title, gTextStoryteller_Story32Action, gTextStoryteller_Story32Text},
+ {0x2E, 1, gTextStoryteller_Story33Title, gTextStoryteller_Story33Action, gTextStoryteller_Story33Text},
+ {0x2F, 1, gTextStoryteller_Story34Title, gTextStoryteller_Story34Action, gTextStoryteller_Story34Text},
+ {0x30, 1, gTextStoryteller_Story35Title, gTextStoryteller_Story35Action, gTextStoryteller_Story35Text},
+ {0x31, 1, gTextStoryteller_Story36Title, gTextStoryteller_Story36Action, gTextStoryteller_Story36Text},
+};
+
+static void StorytellerSetup(void)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+ s32 i;
+
+ storyteller->id = MAUVILLE_MAN_STORYTELLER;
+ storyteller->alreadyRecorded = FALSE;
+ for (i = 0; i < 4; i++)
+ {
+ storyteller->gameStatIDs[i] = 0;
+ storyteller->trainerNames[0][i] = EOS; // Maybe they meant storyteller->trainerNames[i][0] instead?
+ }
+}
+
+static void sub_80F8428(void)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+
+ storyteller->id = MAUVILLE_MAN_STORYTELLER;
+ storyteller->alreadyRecorded = FALSE;
+}
+
+static u32 StorytellerGetGameStat(u8 stat)
+{
+ if (stat == NUM_GAME_STATS)
+ stat = 0;
+ return GetGameStat(stat);
+}
+
+static const struct Story *GetStoryByStat(u32 stat)
+{
+ s32 i;
+
+ for (i = 0; i < 36; i++)
+ {
+ if (sStorytellerStories[i].stat == stat)
+ return &sStorytellerStories[i];
+ }
+ return &sStorytellerStories[35];
+}
+
+static const u8 *GetStoryTitleByStat(u32 stat)
+{
+ return GetStoryByStat(stat)->title;
+}
+
+static const u8 *GetStoryTextByStat(u32 stat)
+{
+ return GetStoryByStat(stat)->fullText;
+}
+
+static const u8 *GetStoryActionByStat(u32 stat)
+{
+ return GetStoryByStat(stat)->action;
+}
+
+static u8 GetFreeStorySlot(void)
+{
+ u8 i;
+
+ for (i = 0; i < 4; i++)
+ {
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+
+ if (storyteller->gameStatIDs[i] == 0)
+ break;
+ }
+ return i;
+}
+
+static u32 StorytellerGetRecordedTrainerStat(u32 trainer)
+{
+ u8 *ptr = gSaveBlock1.mauvilleMan.storyteller.statValues[trainer];
+
+ return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24);
+}
+
+static void StorytellerSetRecordedTrainerStat(u32 trainer, u32 val)
+{
+ u8 *ptr = gSaveBlock1.mauvilleMan.storyteller.statValues[trainer];
+
+ ptr[0] = val;
+ ptr[1] = val >> 8;
+ ptr[2] = val >> 16;
+ ptr[3] = val >> 24;
+}
+
+static bool32 HasTrainerStatIncreased(u32 trainer)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+
+ if (StorytellerGetGameStat(storyteller->gameStatIDs[trainer]) > StorytellerGetRecordedTrainerStat(trainer))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static void GetStoryByStattellerPlayerName(u32 player, void *dst)
+{
+ u8 *name = gSaveBlock1.mauvilleMan.storyteller.trainerNames[player];
+
+ memset(dst, EOS, 8);
+ memcpy(dst, name, 7);
+}
+
+static void StorytellerSetPlayerName(u32 player, const u8 *src)
+{
+ u8 *name = gSaveBlock1.mauvilleMan.storyteller.trainerNames[player];
+ u8 len = StringLength(src);
+
+ memset(name, EOS, 7);
+ StringCopyN(name, src, len);
+}
+
+static void StorytellerRecordNewStat(u32 player, u32 stat)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+
+ storyteller->gameStatIDs[player] = stat;
+ StorytellerSetPlayerName(player, gSaveBlock2.playerName);
+ StorytellerSetRecordedTrainerStat(player, StorytellerGetGameStat(stat));
+ ConvertIntToDecimalStringN(gStringVar1, StorytellerGetGameStat(stat), 0, 10);
+ StringCopy(gStringVar2, GetStoryActionByStat(stat));
+}
+
+static void ScrambleStatList(u8 *arr, s32 count)
+{
+ s32 i;
+
+ for (i = 0; i < count; i++)
+ arr[i] = i;
+ for (i = 0; i < count; i++)
+ {
+ u32 a = Random() % count;
+ u32 b = Random() % count;
+ u8 temp = arr[a];
+ arr[a] = arr[b];
+ arr[b] = temp;
+ }
+}
+
+// What purpose does this struct even serve? Only the length field is used.
+static const struct {u32 length; struct MauvilleManStoryteller *unused1; u32 unused2;} sStorytellerStuff =
+{
+ 36,
+ &gSaveBlock1.mauvilleMan.storyteller, // unused
+ 12, // unused
+};
+
+static bool8 StorytellerInitializeRandomStat(void)
+{
+ u8 arr[sStorytellerStuff.length];
+ s32 i;
+ s32 j;
+
+ ScrambleStatList(arr, 36);
+ for (i = 0; i < 36; i++)
+ {
+ u8 stat = sStorytellerStories[arr[i]].stat;
+ u8 minVal = sStorytellerStories[arr[i]].minVal;
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+
+ for (j = 0; j < 4; j++)
+ {
+ if (gSaveBlock1.mauvilleMan.storyteller.gameStatIDs[j] == stat)
+ break;
+ }
+ if (j == 4 && StorytellerGetGameStat(stat) >= minVal)
+ {
+ storyteller->alreadyRecorded = TRUE;
+ StorytellerRecordNewStat(GetFreeStorySlot(), stat);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static void StorytellerDisplayStory(u32 player)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+ u8 stat = storyteller->gameStatIDs[player];
+
+ ConvertIntToDecimalStringN(gStringVar1, StorytellerGetRecordedTrainerStat(player), 0, 10);
+ StringCopy(gStringVar2, GetStoryActionByStat(stat));
+ GetStoryByStattellerPlayerName(player, gStringVar3);
+ ShowFieldMessage(GetStoryTextByStat(stat));
+}
+
+static void PrintStoryList(void)
+{
+ s32 i;
+
+ MenuDrawTextWindow(0, 0, 25, 4 + GetFreeStorySlot() * 2);
+ for (i = 0; i < 4; i++)
+ {
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+ u8 stat = storyteller->gameStatIDs[i];
+
+ if (stat == 0)
+ break;
+ MenuPrint(GetStoryTitleByStat(stat), 1, 2 + i * 2);
+ }
+ MenuPrint(gPCText_Cancel, 1, 2 + i * 2);
+}
+
+static u8 gUnknown_03000748;
+
+static void Task_StoryListMenu(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s32 selection;
+
+ switch (task->data[0])
+ {
+ case 0:
+ PrintStoryList();
+ InitMenu(0, 1, 2, GetFreeStorySlot() + 1, 0, 24);
+ task->data[0]++;
+ break;
+ case 1:
+ selection = ProcessMenuInput();
+ if (selection == -2)
+ break;
+ if (selection == -1 || selection == GetFreeStorySlot())
+ {
+ gScriptResult = 0;
+ }
+ else
+ {
+ gScriptResult = 1;
+ gUnknown_03000748 = selection;
+ }
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(0, 0, 25, 12);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ break;
+ }
+}
+
+// Sets gScriptResult to TRUE if player selected a story
+void ScrSpecial_StorytellerStoryListMenu(void)
+{
+ CreateTask(Task_StoryListMenu, 0x50);
+}
+
+void ScrSpecial_StorytellerDisplayStory(void)
+{
+ StorytellerDisplayStory(gUnknown_03000748);
+}
+
+u8 ScrSpecial_StorytellerGetFreeStorySlot(void)
+{
+ return GetFreeStorySlot();
+}
+
+// Returns TRUE if stat has increased
+bool8 ScrSpecial_StorytellerUpdateStat(void)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+ u8 r4 = storyteller->gameStatIDs[gUnknown_03000748];
+
+ if (HasTrainerStatIncreased(gUnknown_03000748) == TRUE)
+ {
+ StorytellerRecordNewStat(gUnknown_03000748, r4);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 ScrSpecial_HasStorytellerAlreadyRecorded(void)
+{
+ struct MauvilleManStoryteller *storyteller = &gSaveBlock1.mauvilleMan.storyteller;
+
+ if (storyteller->alreadyRecorded == FALSE)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+bool8 ScrSpecial_StorytellerInitializeRandomStat(void)
+{
+ return StorytellerInitializeRandomStat();
+}
diff --git a/src/menu_helpers.c b/src/field/menu_helpers.c
index 9915d67ac..14e823355 100644
--- a/src/menu_helpers.c
+++ b/src/field/menu_helpers.c
@@ -7,7 +7,7 @@
#include "map_constants.h"
#include "menu.h"
#include "menu_helpers.h"
-#include "rom4.h"
+#include "overworld.h"
#include "songs.h"
#include "sound.h"
#include "sprite.h"
@@ -140,7 +140,7 @@ static void PrintMessage(const u8 *str, u16 tile)
{
sub_80A3FA0(&gBGTilemapBuffers[1][0], 2, 15, 26, 4, tile);
}
- sub_8072044(str);
+ MenuPrintMessageDefaultCoords(str);
}
static void sub_80F9090(u8 taskId)
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 5d9d0b689..5d0f0ae8d 100644
--- a/src/money.c
+++ b/src/field/money.c
@@ -25,7 +25,7 @@ bool8 IsEnoughMoney(u32 budget, u32 cost)
return FALSE;
}
-void sub_80B79B8(u32 *arg0, u32 arg1)
+void AddMoney(u32 *arg0, u32 arg1)
{
if (*arg0 > *arg0 + arg1)
{
@@ -40,7 +40,7 @@ void sub_80B79B8(u32 *arg0, u32 arg1)
}
}
-void sub_80B79E0(u32 *arg0, u32 arg1)
+void RemoveMoney(u32 *arg0, u32 arg1)
{
if (*arg0 < arg1)
{
@@ -52,39 +52,25 @@ void sub_80B79E0(u32 *arg0, u32 arg1)
}
}
-void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2)
+void GetMoneyAmountText(u8 *buffer, u32 amount, u8 arg2)
{
u8 width;
u8 i;
- if (arg1 > 999999)
- {
+ if (amount > 999999)
width = 7;
- }
- else if (arg1 > 99999)
- {
+ else if (amount > 99999)
width = 6;
- }
- else if (arg1 > 10000)
- {
+ else if (amount > 10000)
width = 5;
- }
- else if (arg1 > 999)
- {
+ else if (amount > 999)
width = 4;
- }
- else if (arg1 > 99)
- {
+ else if (amount > 99)
width = 3;
- }
- else if (arg1 > 9)
- {
+ else if (amount > 9)
width = 2;
- }
else
- {
width = 1;
- }
buffer[0] = EXT_CTRL_CODE_BEGIN;
buffer[1] = 0x14;
@@ -100,7 +86,7 @@ void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2)
buffer[0] = CHAR_CURRENCY;
buffer += 1;
- buffer = ConvertIntToDecimalString(buffer, arg1);
+ buffer = ConvertIntToDecimalString(buffer, amount);
buffer[0] = EXT_CTRL_CODE_BEGIN;
buffer[1] = 0x14;
@@ -108,16 +94,18 @@ void sub_80B79F8(u8 *buffer, u32 arg1, u8 arg2)
buffer[3] = EOS;
}
-void sub_80B7A94(u32 arg0, u8 size, u8 x, u8 y)
+void PrintMoneyAmount(u32 amount, u8 size, u8 x, u8 y)
{
u8 buffer[16];
u8 stringWidth;
- sub_80B79F8(buffer, arg0, size);
+ GetMoneyAmountText(buffer, amount, size);
stringWidth = sub_8072CA4(buffer);
if (stringWidth >= (size + 1) * 8)
+ {
MenuPrint(buffer, x, y);
+ }
else
{
int xPlusOne = x + 1;
@@ -148,7 +136,7 @@ void sub_80B7AEC(u32 arg0, u8 left, u8 top)
}
__attribute__((naked))
-void sub_80B7B34(void)
+void sub_80B7B34(u8 var1, u8 var2, int var3)
{
asm(".syntax unified\n\
push {r4-r7,lr}\n\
@@ -241,15 +229,15 @@ _080B7BE8: .4byte 0x0600f840\n\
.syntax divided\n");
}
-void sub_80B7BEC(u32 arg0, u8 x, u8 y)
+void UpdateMoneyWindow(u32 amount, u8 x, u8 y)
{
- sub_80B7A94(arg0, 6, x + 6, y + 1);
+ PrintMoneyAmount(amount, 6, x + 6, y + 1);
}
-void sub_80B7C14(u32 arg0, u8 x, u8 y)
+void OpenMoneyWindow(u32 amount, u8 x, u8 y)
{
MenuDrawTextWindow(x, y, x + 13, y + 3);
- sub_80B7BEC(arg0, x, y);
+ UpdateMoneyWindow(amount, x, y);
LoadCompressedObjectPic(&gUnknown_083CF584);
LoadCompressedObjectPalette(&gUnknown_083CF58C);
@@ -257,7 +245,7 @@ void sub_80B7C14(u32 arg0, u8 x, u8 y)
gUnknown_02038734 = CreateSprite(&gSpriteTemplate_83CF56C, x * 8 + 19, y * 8 + 11, 0);
}
-void RemoveMoneyLabelObject(u8 x, u8 y)
+void CloseMoneyWindow(u8 x, u8 y)
{
DestroySpriteAndFreeResources(&gSprites[gUnknown_02038734]);
FreeSpritePaletteByTag(SPRITE_TAG_MONEY);
@@ -271,5 +259,5 @@ bool8 sub_80B7CE8(void)
void sub_80B7D0C(void)
{
- sub_80B79E0(&gSaveBlock1.money, gSpecialVar_0x8005);
+ RemoveMoney(&gSaveBlock1.money, gSpecialVar_0x8005);
}
diff --git a/src/rom4.c b/src/field/overworld.c
index f9006efba..d6f255409 100644
--- a/src/rom4.c
+++ b/src/field/overworld.c
@@ -1,5 +1,5 @@
#include "global.h"
-#include "rom4.h"
+#include "overworld.h"
#include "battle_setup.h"
#include "berry.h"
#include "cable_club.h"
@@ -25,6 +25,7 @@
#include "link.h"
#include "load_save.h"
#include "main.h"
+#include "map_constants.h"
#include "map_name_popup.h"
#include "menu.h"
#include "metatile_behavior.h"
@@ -40,6 +41,7 @@
#include "secret_base.h"
#include "songs.h"
#include "sound.h"
+#include "species.h"
#include "start_menu.h"
#include "task.h"
#include "tileset_anim.h"
@@ -60,28 +62,10 @@ struct UnkTVStruct
u32 tv_field_4;
};
-EWRAM_DATA struct WarpData gUnknown_020297F0 = {0};
-EWRAM_DATA struct WarpData gUnknown_020297F8 = {0};
-EWRAM_DATA struct WarpData gUnknown_02029800 = {0};
-EWRAM_DATA struct WarpData gUnknown_02029808 = {0};
-EWRAM_DATA struct UnkPlayerStruct gUnknown_02029810 = {0};
-EWRAM_DATA u16 gUnknown_02029814 = 0;
-EWRAM_DATA bool8 gUnknown_02029816 = FALSE;
-EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0};
-
-static u8 gUnknown_03000580[4];
-static u16 (*gUnknown_03000584)(u32);
-static u8 gUnknown_03000588;
-
-u16 word_3004858;
-void (*gFieldCallback)(void);
-u8 gUnknown_03004860;
-u8 gFieldLinkPlayerCount;
-
extern u16 gUnknown_03004898;
extern u16 gUnknown_0300489C;
-extern u8 EventScript_LeagueWhiteOut[];
+extern u8 S_WhiteOut[];
extern u8 gUnknown_0819FC9F[];
extern u8 SingleBattleColosseum_EventScript_1A436F[];
extern u8 SingleBattleColosseum_EventScript_1A4379[];
@@ -102,71 +86,165 @@ extern u8 TradeRoom_PromptToCancelLink[];
extern u8 TradeRoom_TerminateLink[];
extern u8 gUnknown_081A4508[];
-extern u8 (*gUnknown_082166A0[])(struct LinkPlayerMapObject *, struct MapObject *, u8);
-extern u8 (*gUnknown_082166AC[])(struct LinkPlayerMapObject *, struct MapObject *, u8);
-extern void (*gUnknown_082166D8[])(struct LinkPlayerMapObject *, struct MapObject *);
-
extern struct MapData * const gMapAttributes[];
extern struct MapHeader * const * const gMapGroups[];
-extern const struct WarpData gDummyWarpData;
-extern s32 gUnknown_0839ACE8;
-extern u32 gUnknown_08216694[];
+extern s32 gMaxFlashLevel;
+
+EWRAM_DATA struct WarpData gUnknown_020297F0 = {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};
+EWRAM_DATA static u16 sAmbientCrySpecies = 0;
+EWRAM_DATA static bool8 sIsAmbientCryWaterMon = FALSE;
+EWRAM_DATA struct LinkPlayerMapObject gLinkPlayerMapObjects[4] = {0};
+
+static u8 gUnknown_03000580[4];
+static u16 (*gUnknown_03000584)(u32);
+static u8 gUnknown_03000588;
+
+u16 word_3004858;
+void (*gFieldCallback)(void);
+u8 gUnknown_03004860;
+u8 gFieldLinkPlayerCount;
+
+static const struct WarpData sDummyWarpData =
+{
+ .mapGroup = -1,
+ .mapNum = -1,
+ .warpId = -1,
+ .x = -1,
+ .y = -1,
+};
+
+static const u8 sUnusedData[] =
+{
+ 0xB0, 0x04, 0x00, 0x00,
+ 0x10, 0x0E, 0x00, 0x00,
+ 0xB0, 0x04, 0x00, 0x00,
+ 0x60, 0x09, 0x00, 0x00,
+ 0x32, 0x00, 0x00, 0x00,
+ 0x50, 0x00, 0x00, 0x00,
+ 0xD4, 0xFF, 0xFF, 0xFF,
+ 0x2C, 0x00, 0x00, 0x00,
+};
+
+const struct UCoords32 gUnknown_0821664C[] =
+{
+ { 0, 0},
+ { 0, 1},
+ { 0, -1},
+ {-1, 0},
+ { 1, 0},
+ {-1, 1},
+ { 1, 1},
+ {-1, -1},
+ { 1, -1},
+};
+
+const struct UnknownTaskStruct gUnknown_08216694 =
+{
+ (void *)REG_ADDR_WIN0H,
+ ((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1,
+ 1,
+ 0,
+};
+
+static u8 sub_8055C68(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8055C88(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8055C8C(struct LinkPlayerMapObject *, struct MapObject *, u8);
-void DoWhiteOut(void)
+static u8 (*const gUnknown_082166A0[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
{
- ScriptContext2_RunNewScript(EventScript_LeagueWhiteOut);
+ sub_8055C68,
+ sub_8055C88,
+ sub_8055C8C,
+};
+
+static u8 sub_8055CAC(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8055CB0(struct LinkPlayerMapObject *, struct MapObject *, u8);
+static u8 sub_8055D18(struct LinkPlayerMapObject *, struct MapObject *, u8);
+
+static u8 (*const gUnknown_082166AC[])(struct LinkPlayerMapObject *, struct MapObject *, u8) =
+{
+ sub_8055CAC,
+ sub_8055CB0,
+ sub_8055CB0,
+ sub_8055CB0,
+ sub_8055CB0,
+ sub_8055CAC,
+ sub_8055CAC,
+ sub_8055D18,
+ sub_8055D18,
+ sub_8055D18,
+ sub_8055D18,
+};
+
+static void sub_8055D30(struct LinkPlayerMapObject *, struct MapObject *);
+static void sub_8055D38(struct LinkPlayerMapObject *, struct MapObject *);
+
+static void (*const gUnknown_082166D8[])(struct LinkPlayerMapObject *, struct MapObject *) =
+{
+ sub_8055D30,
+ sub_8055D38,
+};
+
+
+static void DoWhiteOut(void)
+{
+ ScriptContext2_RunNewScript(S_WhiteOut);
gSaveBlock1.money /= 2;
- HealPlayerParty();
- sub_8053050();
- sub_8053570();
+ ScrSpecial_HealPlayerParty();
+ Overworld_ResetStateAfterWhiteOut();
+ Overworld_SetWarpDestToLastHealLoc();
warp_in();
}
-void flag_var_implications_of_teleport_(void)
+void Overworld_ResetStateAfterFly(void)
{
player_avatar_init_params_reset();
- FlagReset(SYS_CYCLING_ROAD);
- FlagReset(SYS_CRUISE_MODE);
- FlagReset(SYS_SAFARI_MODE);
- FlagReset(SYS_USE_STRENGTH);
- FlagReset(SYS_USE_FLASH);
+ FlagClear(SYS_CYCLING_ROAD);
+ FlagClear(SYS_CRUISE_MODE);
+ FlagClear(SYS_SAFARI_MODE);
+ FlagClear(SYS_USE_STRENGTH);
+ FlagClear(SYS_USE_FLASH);
}
-void new_game(void)
+void Overworld_ResetStateAfterTeleport(void)
{
player_avatar_init_params_reset();
- FlagReset(SYS_CYCLING_ROAD);
- FlagReset(SYS_CRUISE_MODE);
- FlagReset(SYS_SAFARI_MODE);
- FlagReset(SYS_USE_STRENGTH);
- FlagReset(SYS_USE_FLASH);
+ FlagClear(SYS_CYCLING_ROAD);
+ FlagClear(SYS_CRUISE_MODE);
+ FlagClear(SYS_SAFARI_MODE);
+ FlagClear(SYS_USE_STRENGTH);
+ FlagClear(SYS_USE_FLASH);
ScriptContext2_RunNewScript(gUnknown_0819FC9F);
}
-void sub_8053014(void)
+void Overworld_ResetStateAfterDigEscRope(void)
{
player_avatar_init_params_reset();
- FlagReset(SYS_CYCLING_ROAD);
- FlagReset(SYS_CRUISE_MODE);
- FlagReset(SYS_SAFARI_MODE);
- FlagReset(SYS_USE_STRENGTH);
- FlagReset(SYS_USE_FLASH);
+ FlagClear(SYS_CYCLING_ROAD);
+ FlagClear(SYS_CRUISE_MODE);
+ FlagClear(SYS_SAFARI_MODE);
+ FlagClear(SYS_USE_STRENGTH);
+ FlagClear(SYS_USE_FLASH);
}
-void sub_8053050(void)
+void Overworld_ResetStateAfterWhiteOut(void)
{
player_avatar_init_params_reset();
- FlagReset(SYS_CYCLING_ROAD);
- FlagReset(SYS_CRUISE_MODE);
- FlagReset(SYS_SAFARI_MODE);
- FlagReset(SYS_USE_STRENGTH);
- FlagReset(SYS_USE_FLASH);
+ FlagClear(SYS_CYCLING_ROAD);
+ FlagClear(SYS_CRUISE_MODE);
+ FlagClear(SYS_SAFARI_MODE);
+ FlagClear(SYS_USE_STRENGTH);
+ FlagClear(SYS_USE_FLASH);
}
void sub_805308C(void)
{
- FlagReset(SYS_SAFARI_MODE);
- sub_8054164();
+ FlagClear(SYS_SAFARI_MODE);
+ ChooseAmbientCrySpecies();
ResetCyclingRoadChallengeData();
UpdateLocationHistoryForRoamer();
RoamerMoveToOtherLocationSet();
@@ -205,23 +283,27 @@ 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));
}
-void sub_8053198(void)
+static void LoadSaveblockMapObjScripts(void)
{
struct MapObjectTemplate *mapObjectTemplates = gSaveBlock1.mapObjectTemplates;
s32 i;
+
for (i = 0; i < 64; i++)
mapObjectTemplates[i].script = gMapHeader.events->mapObjects[i].script;
}
-void update_saveblock1_field_object_coords(u8 localId, s16 x, s16 y)
+void Overworld_SetMapObjTemplateCoords(u8 localId, s16 x, s16 y)
{
s32 i;
for (i = 0; i < 64; i++)
@@ -231,28 +313,27 @@ void update_saveblock1_field_object_coords(u8 localId, s16 x, s16 y)
{
mapObjectTemplate->x = x;
mapObjectTemplate->y = y;
- break;
+ return;
}
}
}
-void update_saveblock1_field_object_movement_behavior(u8 localId, u8 movementType)
+void Overworld_SetMapObjTemplateMovementType(u8 localId, u8 movementType)
{
- s32 i = 0;
- struct MapObjectTemplate *mapObjectTemplate = gSaveBlock1.mapObjectTemplates;
- do
+ s32 i;
+
+ for (i = 0; i < 64; i++)
{
+ struct MapObjectTemplate *mapObjectTemplate = &gSaveBlock1.mapObjectTemplates[i];
if (mapObjectTemplate->localId == localId)
{
mapObjectTemplate->movementType = movementType;
- break;
+ return;
}
- mapObjectTemplate++;
- i++;
- } while (i < 64);
+ }
}
-void mapdata_load_assets_to_gpu_and_full_redraw(void)
+static void mapdata_load_assets_to_gpu_and_full_redraw(void)
{
move_tilemap_camera_to_upper_left_corner();
copy_map_tileset1_tileset2_to_vram(gMapHeader.mapData);
@@ -261,7 +342,7 @@ void mapdata_load_assets_to_gpu_and_full_redraw(void)
cur_mapheader_run_tileset_funcs_after_some_cpuset();
}
-struct MapData *get_mapdata_header(void)
+static struct MapData *get_mapdata_header(void)
{
u16 mapDataId = gSaveBlock1.mapDataId;
if (mapDataId)
@@ -269,15 +350,15 @@ struct MapData *get_mapdata_header(void)
return NULL;
}
-void warp_shift(void)
+static void ApplyCurrentWarp(void)
{
gUnknown_020297F0 = gSaveBlock1.location;
- gSaveBlock1.location = gUnknown_020297F8;
- gUnknown_02029800 = gDummyWarpData;
- gUnknown_02029808 = gDummyWarpData;
+ gSaveBlock1.location = gWarpDestination;
+ gUnknown_02029800 = sDummyWarpData;
+ gUnknown_02029808 = sDummyWarpData;
}
-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;
@@ -286,7 +367,7 @@ void warp_set(struct WarpData *warp, s8 mapGroup, s8 mapNum, s8 warpId, s8 x, s8
warp->y = y;
}
-bool32 warp_data_is_not_neg_1(struct WarpData *warp)
+static bool32 warp_data_is_not_neg_1(struct WarpData *warp)
{
if (warp->mapGroup != -1)
return FALSE;
@@ -301,31 +382,27 @@ bool32 warp_data_is_not_neg_1(struct WarpData *warp)
return TRUE;
}
-struct MapHeader * const get_mapheader_by_bank_and_number(u16 mapGroup, u16 mapNum)
+struct MapHeader *const Overworld_GetMapHeaderByGroupAndId(u16 mapGroup, u16 mapNum)
{
return gMapGroups[mapGroup][mapNum];
}
-struct MapHeader * const warp1_get_mapheader(void)
+struct MapHeader *const warp1_get_mapheader(void)
{
- return get_mapheader_by_bank_and_number(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum);
+ return Overworld_GetMapHeaderByGroupAndId(gWarpDestination.mapGroup, gWarpDestination.mapNum);
}
-void set_current_map_header_from_sav1_save_old_name(void)
+static void set_current_map_header_from_sav1_save_old_name(void)
{
- struct MapHeader *dest = &gMapHeader;
- struct MapHeader *src = get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
- *dest = *src;
- gSaveBlock1.mapDataId = dest->mapDataId;
- dest->mapData = get_mapdata_header();
+ gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
+ gSaveBlock1.mapDataId = gMapHeader.mapDataId;
+ gMapHeader.mapData = get_mapdata_header();
}
-void sub_805338C(void)
+static void LoadSaveblockMapHeader(void)
{
- struct MapHeader *dest = &gMapHeader;
- struct MapHeader *src = get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
- *dest = *src;
- dest->mapData = get_mapdata_header();
+ gMapHeader = *Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum);
+ gMapHeader.mapData = get_mapdata_header();
}
void sub_80533CC(void)
@@ -349,115 +426,117 @@ 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)
{
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 = sav1_map_get_light_level();
- u8 v5 = get_map_light_level_by_bank_and_number(gUnknown_020297F8.mapGroup, gUnknown_020297F8.mapNum);
- if (is_light_level_1_2_3_5_or_6(v4) && is_light_level_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()
@@ -465,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;
@@ -483,10 +562,11 @@ struct MapConnection *sub_8053818(u8 dir)
bool8 sub_8053850(u8 dir, u16 x, u16 y)
{
- struct MapConnection *connection = sub_8053818(dir);
- if (connection)
+ 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
{
@@ -512,20 +592,20 @@ 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();
sub_8082BD0(mapGroup, mapNum);
DoTimeBasedEvents();
sub_80806E4();
- sub_8054164();
- sub_8053C98();
- sav1_reset_battle_music_maybe();
+ ChooseAmbientCrySpecies();
+ SetDefaultFlashLevel();
+ Overworld_ClearSavedMusic();
mapheader_run_script_with_tag_x3();
not_trainer_hill_battle_pyramid();
sub_8056D38(gMapHeader.mapData);
@@ -549,9 +629,9 @@ void sub_8053994(u32 a1)
bool8 v3;
set_current_map_header_from_sav1_save_old_name();
- sub_8053154();
- v2 = is_light_level_1_2_3_5_or_6(gMapHeader.mapType);
- v3 = is_light_level_8_or_9(gMapHeader.mapType);
+ LoadMapObjTemplatesFromHeader();
+ v2 = is_map_type_1_2_3_5_or_6(gMapHeader.mapType);
+ v3 = Overworld_MapTypeIsIndoors(gMapHeader.mapType);
ClearTempFieldEventData();
ResetCyclingRoadChallengeData();
prev_quest_postbuffer_cursor_backup_reset();
@@ -559,11 +639,11 @@ void sub_8053994(u32 a1)
if (a1 != 1)
DoTimeBasedEvents();
sub_80806E4();
- sub_8054164();
+ ChooseAmbientCrySpecies();
if (v2)
- FlagReset(SYS_USE_FLASH);
- sub_8053C98();
- sav1_reset_battle_music_maybe();
+ FlagClear(SYS_USE_FLASH);
+ SetDefaultFlashLevel();
+ Overworld_ClearSavedMusic();
mapheader_run_script_with_tag_x3();
UpdateLocationHistoryForRoamer();
RoamerMoveToOtherLocationSet();
@@ -600,11 +680,11 @@ void walkrun_find_lowest_active_bit_in_bitfield(void)
struct UnkPlayerStruct *sub_8053AA8(void)
{
struct UnkPlayerStruct playerStruct;
- u8 light = sav1_map_get_light_level();
+ u8 mapType = Overworld_GetMapTypeOfSaveblockLocation();
u16 v2 = cur_mapdata_block_role_at_screen_center_acc_to_sav1();
- u8 v4 = sub_8053B00(&gUnknown_02029810, v2, light);
+ u8 v4 = sub_8053B00(&gUnknown_02029810, v2, mapType);
playerStruct.player_field_0 = v4;
- playerStruct.player_field_1 = sub_8053B60(&gUnknown_02029810, v4, v2, light);
+ playerStruct.player_field_1 = sub_8053B60(&gUnknown_02029810, v4, v2, mapType);
gUnknown_02029810 = playerStruct;
return &gUnknown_02029810;
}
@@ -617,7 +697,7 @@ u8 sub_8053B00(struct UnkPlayerStruct *playerStruct, u16 a2, u8 a3)
return 16;
if (MetatileBehavior_IsSurfableWaterOrUnderwater(a2) == 1)
return 8;
- if (IsBikingAllowedByMap() != TRUE)
+ if (Overworld_IsBikingAllowed() != TRUE)
return 1;
if (playerStruct->player_field_0 == 2)
return 2;
@@ -655,10 +735,12 @@ u16 cur_mapdata_block_role_at_screen_center_acc_to_sav1(void)
return MapGridGetMetatileBehaviorAt(gSaveBlock1.pos.x + 7, gSaveBlock1.pos.y + 7);
}
-bool32 IsBikingAllowedByMap(void)
+bool32 Overworld_IsBikingAllowed(void)
{
// is player in cycling road entrance?
- if (gSaveBlock1.location.mapGroup == 29 && (gSaveBlock1.location.mapNum == 11 || gSaveBlock1.location.mapNum == 12))
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE
+ && (gSaveBlock1.location.mapNum == MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_SOUTH_ENTRANCE
+ || gSaveBlock1.location.mapNum == MAP_ID_ROUTE110_SEASIDE_CYCLING_ROAD_NORTH_ENTRANCE))
return TRUE;
// is player indoor, in a secret base, or underwater?
@@ -669,37 +751,37 @@ bool32 IsBikingAllowedByMap(void)
if (gMapHeader.mapType == MAP_TYPE_UNDERWATER)
return FALSE;
- // is player in SeafloorCavern_Room9?
- if (gSaveBlock1.location.mapGroup == 24 && gSaveBlock1.location.mapNum == 36)
+ // Thou shalt not bike on the sacred resting grounds of Kyogre/Groudon.
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_SEAFLOOR_CAVERN_ROOM9
+ && gSaveBlock1.location.mapNum == MAP_ID_SEAFLOOR_CAVERN_ROOM9)
return FALSE;
-
- // is player in CaveOfOrigin_B4F?
- if (gSaveBlock1.location.mapGroup == 24 && gSaveBlock1.location.mapNum == 42)
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_CAVE_OF_ORIGIN_B4F
+ && gSaveBlock1.location.mapNum == MAP_ID_CAVE_OF_ORIGIN_B4F)
return FALSE;
return TRUE;
}
-void sub_8053C98(void)
+void SetDefaultFlashLevel(void)
{
if (!gMapHeader.cave)
- gSaveBlock1.flashUsed = 0;
+ gSaveBlock1.flashLevel = 0;
else if (FlagGet(SYS_USE_FLASH))
- gSaveBlock1.flashUsed = 1;
+ gSaveBlock1.flashLevel = 1;
else
- gSaveBlock1.flashUsed = gUnknown_0839ACE8;
+ gSaveBlock1.flashLevel = gMaxFlashLevel;
}
-void sub_8053CE4(s32 a1)
+void Overworld_SetFlashLevel(s32 flashLevel)
{
- if (a1 < 0 || a1 > gUnknown_0839ACE8)
- a1 = 0;
- gSaveBlock1.flashUsed = a1;
+ if (flashLevel < 0 || flashLevel > gMaxFlashLevel)
+ flashLevel = 0;
+ gSaveBlock1.flashLevel = flashLevel;
}
-u8 sav1_get_flash_used_on_map(void)
+u8 Overworld_GetFlashLevel(void)
{
- return gSaveBlock1.flashUsed;
+ return gSaveBlock1.flashLevel;
}
void sub_8053D14(u16 mapDataId)
@@ -708,60 +790,63 @@ void sub_8053D14(u16 mapDataId)
gMapHeader.mapData = get_mapdata_header();
}
-bool16 sub_8053D30(struct WarpData *warp)
+static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp)
{
if (!FlagGet(SYS_WEATHER_CTRL))
return FALSE;
- if (warp->mapGroup != 0)
- return FALSE;
- switch (warp->mapNum)
+ if (warp->mapGroup == 0)
{
- case 5:
- case 6:
- case 7:
- case 8:
- return TRUE;
- case 39:
- case 40:
- case 41:
- case 42:
- case 43:
- return TRUE;
+ switch (warp->mapNum)
+ {
+ case MAP_ID_LILYCOVE_CITY:
+ case MAP_ID_MOSSDEEP_CITY:
+ case MAP_ID_SOOTOPOLIS_CITY:
+ case MAP_ID_EVER_GRANDE_CITY:
+ return TRUE;
+ case MAP_ID_ROUTE124:
+ case MAP_ID_ROUTE125:
+ case MAP_ID_ROUTE126:
+ case MAP_ID_ROUTE127:
+ case MAP_ID_ROUTE128:
+ return TRUE;
+ }
}
return FALSE;
}
-bool16 sub_8053D6C(struct WarpData *warp)
+static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp)
{
- if (VarGet(0x40B3))
+ if (VarGet(VAR_WEATHER_INSTITUTE_CLEARED))
return FALSE;
- if (warp->mapGroup != 32)
+ if (warp->mapGroup != MAP_GROUP_ROUTE119_WEATHER_INSTITUTE_1F)
return FALSE;
- if (warp->mapNum == 0 || warp->mapNum == 1)
+ if (warp->mapNum == MAP_ID_ROUTE119_WEATHER_INSTITUTE_1F
+ || warp->mapNum == MAP_ID_ROUTE119_WEATHER_INSTITUTE_2F)
return TRUE;
return FALSE;
}
-u16 sub_8053D9C(struct WarpData *warp)
+static u16 GetLocationMusic(struct WarpData *warp)
{
- if (sub_8053D30(warp) == TRUE)
+ if (ShouldLegendaryMusicPlayAtLocation(warp) == TRUE)
return LEGENDARY_MUSIC;
- else if (sub_8053D6C(warp) == TRUE)
+ else if (IsInfiltratedWeatherInstitute(warp) == TRUE)
return BGM_TOZAN;
else
- return get_mapheader_by_bank_and_number(warp->mapGroup, warp->mapNum)->music;
+ return Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum)->music;
}
-u16 sav1_map_get_music(void)
+u16 GetCurrLocationDefaultMusic(void)
{
u16 music;
- if (gSaveBlock1.location.mapGroup == 0
- && gSaveBlock1.location.mapNum == 26
+ // 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)
return BGM_ASHROAD;
- music = sub_8053D9C(&gSaveBlock1.location);
+ music = GetLocationMusic(&gSaveBlock1.location);
if (music != 0x7FFF)
{
return music;
@@ -775,36 +860,37 @@ u16 sav1_map_get_music(void)
}
}
-u16 warp1_target_get_music(void)
+u16 GetWarpDestinationMusic(void)
{
- u16 music = sub_8053D9C(&gUnknown_020297F8);
+ u16 music = GetLocationMusic(&gWarpDestination);
if (music != 0x7FFF)
{
return music;
}
else
{
- if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 2)
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_MAUVILLE_CITY
+ && gSaveBlock1.location.mapNum == MAP_ID_MAUVILLE_CITY)
return BGM_DOORO_X1;
else
return BGM_GRANROAD;
}
}
-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;
- else if (sav1_map_get_light_level() == 5)
+ if (gSaveBlock1.savedMusic)
+ music = gSaveBlock1.savedMusic;
+ else if (Overworld_GetMapTypeOfSaveblockLocation() == MAP_TYPE_UNDERWATER)
music = BGM_DEEPDEEP;
else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING))
music = BGM_NAMINORI;
@@ -814,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)
{
@@ -847,24 +933,24 @@ 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 sub_8053FB0(u16 music)
+void Overworld_ChangeMusicTo(u16 newMusic)
{
u16 currentMusic = GetCurrentMapMusic();
- if (currentMusic != music && currentMusic != LEGENDARY_MUSIC)
- FadeOutAndPlayNewMapMusic(music, 8);
+ if (currentMusic != newMusic && currentMusic != LEGENDARY_MUSIC)
+ FadeOutAndPlayNewMapMusic(newMusic, 8);
}
-u8 is_warp1_light_level_8_or_9(void)
+u8 GetMapMusicFadeoutSpeed(void)
{
struct MapHeader *mapHeader = warp1_get_mapheader();
- if (is_light_level_8_or_9(mapHeader->mapType) == TRUE)
+ if (Overworld_MapTypeIsIndoors(mapHeader->mapType) == TRUE)
return 2;
else
return 4;
@@ -872,10 +958,10 @@ u8 is_warp1_light_level_8_or_9(void)
void sub_8053FF8(void)
{
- u16 music = warp1_target_get_music();
+ u16 music = GetWarpDestinationMusic();
if (FlagGet(SPECIAL_FLAG_1) != TRUE && music != GetCurrentMapMusic())
{
- u8 speed = is_warp1_light_level_8_or_9();
+ u8 speed = GetMapMusicFadeoutSpeed();
FadeOutMapMusic(speed);
}
}
@@ -885,48 +971,50 @@ bool8 sub_8054034(void)
return IsNotWaitingForBGMStop();
}
-void sub_8054044(void)
+void Overworld_FadeOutMapMusic(void)
{
FadeOutMapMusic(4);
}
-void sub_8054050(void)
+static void PlayAmbientCry(void)
{
s16 x, y;
- PlayerGetDestCoords((u16 *)&x, (u16 *)&y);
- if (gUnknown_02029816 != TRUE
- || MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y)))
- {
- s8 pan = (Random() % 88) + 212;
- s8 volume = (Random() % 30) + 50;
- PlayCry2(gUnknown_02029814, pan, volume, 1);
- }
+ s8 pan;
+ s8 volume;
+
+ PlayerGetDestCoords(&x, &y);
+ if (sIsAmbientCryWaterMon == TRUE
+ && !MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y)))
+ return;
+ pan = (Random() % 88) + 212;
+ volume = (Random() % 30) + 50;
+ PlayCry2(sAmbientCrySpecies, pan, volume, 1);
}
-void sub_80540D0(s16 *a1, u16 *a2)
+void UpdateAmbientCry(s16 *state, u16 *delayCounter)
{
- switch (*a1)
+ switch (*state)
{
case 0:
- if (!gUnknown_02029814)
- *a1 = 4;
+ if (sAmbientCrySpecies == SPECIES_NONE)
+ *state = 4;
else
- *a1 = 1;
+ *state = 1;
break;
case 1:
- *a2 = (Random() % 2400) + 1200;
- *a1 = 3;
+ *delayCounter = (Random() % 2400) + 1200;
+ *state = 3;
break;
case 2:
- *a2 = (Random() % 1200) + 1200;
- *a1 = 3;
+ *delayCounter = (Random() % 1200) + 1200;
+ *state = 3;
break;
case 3:
- (*a2)--;
- if (*a2 == 0)
+ (*delayCounter)--;
+ if (*delayCounter == 0)
{
- sub_8054050();
- *a1 = 2;
+ PlayAmbientCry();
+ *state = 2;
}
break;
case 4:
@@ -934,58 +1022,70 @@ void sub_80540D0(s16 *a1, u16 *a2)
}
}
-void sub_8054164(void)
+void ChooseAmbientCrySpecies(void)
{
- if ((gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 45) && !IsMirageIslandPresent())
+ if ((gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE130
+ && gSaveBlock1.location.mapNum == MAP_ID_ROUTE130)
+ && !IsMirageIslandPresent())
{
- gUnknown_02029816 = TRUE;
- gUnknown_02029814 = GetMirageIslandMon();
+ // Only play water pokemon cries on this route
+ // when Mirage Island is not present
+ sIsAmbientCryWaterMon = TRUE;
+ sAmbientCrySpecies = GetLocalWaterMon();
}
else
{
- gUnknown_02029814 = GetLocalWildMon(&gUnknown_02029816);
+ sAmbientCrySpecies = GetLocalWildMon(&sIsAmbientCryWaterMon);
}
}
-u8 get_map_light_level_by_bank_and_number(s8 mapGroup, s8 mapNum)
+u8 GetMapTypeByGroupAndId(s8 mapGroup, s8 mapNum)
{
- return get_mapheader_by_bank_and_number(mapGroup, mapNum)->mapType;
+ return Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum)->mapType;
}
-u8 get_map_light_level_from_warp(struct WarpData *warp)
+u8 GetMapTypeByWarpData(struct WarpData *warp)
{
- return get_map_light_level_by_bank_and_number(warp->mapGroup, warp->mapNum);
+ return GetMapTypeByGroupAndId(warp->mapGroup, warp->mapNum);
}
-u8 sav1_map_get_light_level(void)
+u8 Overworld_GetMapTypeOfSaveblockLocation(void)
{
- return get_map_light_level_from_warp(&gSaveBlock1.location);
+ return GetMapTypeByWarpData(&gSaveBlock1.location);
}
-u8 get_map_light_from_warp0(void)
+u8 get_map_type_from_warp0(void)
{
- return get_map_light_level_from_warp(&gUnknown_020297F0);
+ return GetMapTypeByWarpData(&gUnknown_020297F0);
}
-bool8 is_light_level_1_2_3_5_or_6(u8 a1)
+bool8 is_map_type_1_2_3_5_or_6(u8 mapType)
{
- if (a1 == 3 || a1 == 1 || a1 == 5 || a1 == 2 || a1 == 6)
+ if (mapType == MAP_TYPE_ROUTE
+ || mapType == MAP_TYPE_TOWN
+ || mapType == MAP_TYPE_UNDERWATER
+ || mapType == MAP_TYPE_CITY
+ || mapType == MAP_TYPE_6)
return TRUE;
else
return FALSE;
}
-bool8 is_light_level_1_2_3_or_6(u8 a1)
+bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType)
{
- if (a1 == 3 || a1 == 1 || a1 == 6 || a1 == 2)
+ if (mapType == MAP_TYPE_ROUTE
+ || mapType == MAP_TYPE_TOWN
+ || mapType == MAP_TYPE_6
+ || mapType == MAP_TYPE_CITY)
return TRUE;
else
return FALSE;
}
-bool8 is_light_level_8_or_9(u8 a1)
+bool8 Overworld_MapTypeIsIndoors(u8 mapType)
{
- if (a1 == 8 || a1 == 9)
+ if (mapType == MAP_TYPE_INDOOR
+ || mapType == MAP_TYPE_SECRET_BASE)
return TRUE;
else
return FALSE;
@@ -993,17 +1093,17 @@ bool8 is_light_level_8_or_9(u8 a1)
u8 unref_sub_8054260(void)
{
- return get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->regionMapSectionId;
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum)->regionMapSectionId;
}
u8 sav1_map_get_name(void)
{
- return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->regionMapSectionId;
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->regionMapSectionId;
}
u8 sav1_map_get_battletype(void)
{
- return get_mapheader_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType;
+ return Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum)->battleType;
}
void ResetSafariZoneFlag_(void)
@@ -1046,7 +1146,7 @@ void c1_overworld(void)
c1_overworld_normal(gMain.newKeys, gMain.heldKeys);
}
-void c2_overworld_basic(void)
+void OverworldBasic(void)
{
ScriptContext2_RunScript();
RunTasks();
@@ -1058,9 +1158,10 @@ void c2_overworld_basic(void)
sub_8072EDC();
}
-void sub_8054398(void)
+// This CB2 is used when starting
+void CB2_OverworldBasic(void)
{
- c2_overworld_basic();
+ OverworldBasic();
}
void c2_overworld(void)
@@ -1068,7 +1169,7 @@ void c2_overworld(void)
int fading = (gPaletteFade.active != 0);
if (fading)
SetVBlankCallback(NULL);
- c2_overworld_basic();
+ OverworldBasic();
if (fading)
SetFieldVBlankCallback();
}
@@ -1085,7 +1186,7 @@ void sub_80543DC(u16 (*a1)(u32))
void sub_80543E8(void)
{
- if (gFieldCallback)
+ if (gFieldCallback != NULL)
gFieldCallback();
else
mapldr_default();
@@ -1265,8 +1366,8 @@ void CB2_ContinueSavedGame(void)
FieldClearVBlankHBlankCallbacks();
StopMapMusic();
ResetSafariZoneFlag_();
- sub_805338C();
- sub_8053198();
+ LoadSaveblockMapHeader();
+ LoadSaveblockMapObjScripts();
UnfreezeMapObjects();
DoTimeBasedEvents();
sub_805308C();
@@ -1317,11 +1418,11 @@ void VBlankCB_Field(void)
void sub_8054814(void)
{
- u8 val = sav1_get_flash_used_on_map();
+ u8 val = Overworld_GetFlashLevel();
if (val)
{
sub_80815E0(val);
- sub_80895F8(gUnknown_08216694[0], gUnknown_08216694[1], gUnknown_08216694[2]);
+ sub_80895F8(gUnknown_08216694);
}
}
@@ -1886,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;
}
@@ -2434,27 +2535,27 @@ void sub_8055BFC(u8 linkPlayerId, u8 a2)
}
}
-u8 sub_8055C68(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055C68(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
return gUnknown_082166AC[a3](linkPlayerMapObj, mapObj, a3);
}
-u8 sub_8055C88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055C88(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
return 1;
}
-u8 sub_8055C8C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055C8C(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
return gUnknown_082166AC[a3](linkPlayerMapObj, mapObj, a3);
}
-u8 sub_8055CAC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055CAC(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
return 0;
}
-u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
s16 x, y;
@@ -2474,18 +2575,18 @@ u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *m
}
}
-u8 sub_8055D18(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
+static u8 sub_8055D18(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3)
{
mapObj->mapobj_unk_19 = npc_something3(a3, mapObj->mapobj_unk_19);
return 0;
}
-void sub_8055D30(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
+static void sub_8055D30(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
{
linkPlayerMapObj->mode = 0;
}
-void sub_8055D38(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
+static void sub_8055D38(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj)
{
mapObj->mapobj_unk_21--;
linkPlayerMapObj->mode = 1;
diff --git a/src/party_menu.c b/src/field/party_menu.c
index 1fcd2cdda..39477e293 100644
--- a/src/party_menu.c
+++ b/src/field/party_menu.c
@@ -33,15 +33,6 @@
#include "species.h"
#include "party_menu.h"
-#define DATA_COUNT (6)
-
-struct Unk2001000
-{
- u8 unk0;
- u8 unk1;
- u8 unk2;
-};
-
struct Unk201C000
{
/*0x00*/ struct Pokemon *pokemon;
@@ -68,8 +59,6 @@ struct UnknownStruct5
u16 *unk4;
};
-extern u8 ewram[];
-#define ewram01000 (*(struct Unk2001000 *)(ewram + 0x01000))
#define ewram1C000 (*(struct Unk201C000 *)(ewram + 0x1C000))
#define ewram1F000 (*(struct Unk201F000 *)(ewram + 0x1F000))
diff --git a/src/player_pc.c b/src/field/player_pc.c
index 6d52c560a..83e6dd221 100644
--- a/src/player_pc.c
+++ b/src/field/player_pc.c
@@ -18,7 +18,7 @@
#include "songs.h"
#include "name_string_util.h"
#include "mail.h"
-#include "rom4.h"
+#include "overworld.h"
#include "player_pc.h"
extern void DisplayItemMessageOnField(u8, const u8*, TaskFunc, u16);
@@ -106,7 +106,7 @@ static const u8 *const gPCText_OptionDescList[] =
gMenuText_GoBackToPrev
};
-static const struct MenuAction2 gPCText_PlayerPCOptionsText[] =
+static const struct MenuAction2 sPlayerPCMenuActions[] =
{
{ SecretBaseText_ItemStorage, PlayerPC_ItemStorage },
{ gPCText_Mailbox, PlayerPC_Mailbox },
@@ -226,7 +226,7 @@ void PlayerPC(void)
static void InitPlayerPCMenu(u8 taskId)
{
MenuDrawTextWindow(0, 0, 10, gPcItemMenuOptionsNum * 2 + 1);
- PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, (struct MenuAction *)gPCText_PlayerPCOptionsText, gPcItemMenuOptionOrder);
+ PrintMenuItemsReordered(1, 1, gPcItemMenuOptionsNum, sPlayerPCMenuActions, gPcItemMenuOptionOrder);
InitMenu(0, 1, 1, gPcItemMenuOptionsNum, 0, 9);
TASK.FUNC = PlayerPCProcessMenuInput;
}
@@ -247,13 +247,13 @@ static void PlayerPCProcessMenuInput(u8 taskId)
{
HandleDestroyMenuCursors();
PlaySE(SE_SELECT);
- gPCText_PlayerPCOptionsText[gPcItemMenuOptionOrder[GetMenuCursorPos()]].func(taskId);
+ sPlayerPCMenuActions[gPcItemMenuOptionOrder[GetMenuCursorPos()]].func(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
HandleDestroyMenuCursors();
PlaySE(SE_SELECT);
- gPCText_PlayerPCOptionsText[gPcItemMenuOptionsNum[gPcItemMenuOptionOrder - 1]].func(taskId); // run EXIT.
+ sPlayerPCMenuActions[gPcItemMenuOptionsNum[gPcItemMenuOptionOrder - 1]].func(taskId); // run EXIT.
}
}
diff --git a/src/pokeblock.c b/src/field/pokeblock.c
index 775280f6e..34f4ffa35 100644
--- a/src/pokeblock.c
+++ b/src/field/pokeblock.c
@@ -1,9 +1,9 @@
//
-// Created by scott on 6/27/2017.
+
//
#include "global.h"
-#include "rom4.h"
+#include "overworld.h"
#include "sprite.h"
#include "script.h"
#include "strings.h"
@@ -25,7 +25,6 @@
#include "sound.h"
#include "songs.h"
#include "safari_zone.h"
-#include "use_pokeblock.h"
#include "event_data.h"
#include "pokeblock.h"
@@ -379,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:
@@ -582,7 +581,7 @@ static void sub_810BDAC(bool8 flag)
v0 = ((i % 3) << 6) + 0x1a1 + (i / 3) * 6;
if (gUnknown_02039248.unk0 + gUnknown_02039248.unk1 != gUnknown_02039248.unk2)
{
- if (sub_810CA9C(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1], i + 1) > 0)
+ if (GetPokeblockData(&gSaveBlock1.pokeblocks[gUnknown_02039248.unk0 + gUnknown_02039248.unk1], i + 1) > 0)
{
gBGTilemapBuffers[2][v0] = (i << 12) + 23;
gBGTilemapBuffers[2][v0 + 32] = (i << 12) + 24;
@@ -817,7 +816,7 @@ static void sub_810C368(u8 taskId)
sub_80F98A4(1);
BasicInitMenuWindow(&gWindowConfig_81E6E50);
MenuDrawTextWindow(7, v0 + 4, 13, 11);
- PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, (const struct MenuAction *)gUnknown_083F7EF4, gUnknown_03000758);
+ PrintMenuItemsReordered(8, v0 + 5, gUnknown_0203924C, gUnknown_083F7EF4, gUnknown_03000758);
InitMenu(0, 8, v0 + 5, gUnknown_0203924C, 0, 5);
gScriptItemId = gUnknown_02039248.unk0 + gUnknown_02039248.unk1;
gTasks[taskId].func = sub_810C40C;
@@ -894,7 +893,7 @@ static void sub_810C5EC(u8 taskId)
static void sub_810C610(u8 taskId)
{
MenuZeroFillWindowRect(7, 6, 13, 11);
- sub_810CA6C((gUnknown_02039248.unk0 + gUnknown_02039248.unk1));
+ PokeblockClearIfExists((gUnknown_02039248.unk0 + gUnknown_02039248.unk1));
StringExpandPlaceholders(gStringVar4, gContestStatsText_WasThrownAway);
DisplayItemMessageOnField(taskId, gStringVar4, sub_810C704, 0);
sub_810BC98();
@@ -942,9 +941,9 @@ static void sub_810C748(u8 taskId)
static void sub_810C788(u8 taskId)
{
- s16 v0 = sub_810CAE4(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]);
+ s16 v0 = PokeblockGetGain(GetNature(&gEnemyParty[0]), &gSaveBlock1.pokeblocks[gScriptItemId]);
StringCopy(gBattleTextBuff1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]);
- sub_810CA6C(gScriptItemId);
+ PokeblockClearIfExists(gScriptItemId);
gScriptItemId = gSaveBlock1.pokeblocks[gScriptItemId].color << 8;
if (v0 == 0)
{
@@ -967,7 +966,7 @@ static void sub_810C854(u8 taskId)
SafariZoneActivatePokeblockFeeder(gScriptItemId);
StringCopy(gStringVar1, gPokeblockNames[gSaveBlock1.pokeblocks[gScriptItemId].color]);
gScriptResult = gScriptItemId;
- sub_810CA6C(gScriptItemId);
+ PokeblockClearIfExists(gScriptItemId);
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
gTasks[taskId].func = sub_810C2C8;
}
@@ -1024,10 +1023,10 @@ u8 sub_810C9B0(struct Pokeblock *pokeblock)
{
u8 contestStat;
u8 maxRating;
- u8 rating = sub_810CA9C(pokeblock, 1);
+ u8 rating = GetPokeblockData(pokeblock, 1);
for (contestStat=1; contestStat<5; contestStat++)
{
- maxRating = sub_810CA9C(pokeblock, contestStat + 1);
+ maxRating = GetPokeblockData(pokeblock, contestStat + 1);
if (rating < maxRating)
{
rating = maxRating;
@@ -1038,7 +1037,7 @@ u8 sub_810C9B0(struct Pokeblock *pokeblock)
u8 sub_810C9E8(struct Pokeblock *pokeblock)
{
- u8 feel = sub_810CA9C(pokeblock, 6);
+ u8 feel = GetPokeblockData(pokeblock, 6);
if (feel > 99)
feel = 99;
return feel;
@@ -1068,7 +1067,7 @@ bool8 sub_810CA34(struct Pokeblock *pokeblock)
return TRUE;
}
-bool8 sub_810CA6C(u8 pokeblockIdx)
+bool8 PokeblockClearIfExists(u8 pokeblockIdx)
{
if (gSaveBlock1.pokeblocks[pokeblockIdx].color == 0)
{
@@ -1078,33 +1077,33 @@ bool8 sub_810CA6C(u8 pokeblockIdx)
return TRUE;
}
-s16 sub_810CA9C(const struct Pokeblock *pokeblock, u8 field)
+s16 GetPokeblockData(const struct Pokeblock *pokeblock, u8 field)
{
- if (field == 0)
+ if (field == PBLOCK_COLOR)
return pokeblock->color;
- if (field == 1)
+ if (field == PBLOCK_SPICY)
return pokeblock->spicy;
- if (field == 2)
+ if (field == PBLOCK_DRY)
return pokeblock->dry;
- if (field == 3)
+ if (field == PBLOCK_SWEET)
return pokeblock->sweet;
- if (field == 4)
+ if (field == PBLOCK_BITTER)
return pokeblock->bitter;
- if (field == 5)
+ if (field == PBLOCK_SOUR)
return pokeblock->sour;
- if (field == 6)
+ if (field == PBLOCK_FEEL)
return pokeblock->feel;
return 0;
}
-s16 sub_810CAE4(u8 nature, const struct Pokeblock *pokeblock)
+s16 PokeblockGetGain(u8 nature, const struct Pokeblock *pokeblock)
{
u8 flavor;
s16 curGain;
s16 totalGain = 0;
for (flavor=0; flavor<5; flavor++)
{
- curGain = sub_810CA9C(pokeblock, flavor + 1);
+ curGain = GetPokeblockData(pokeblock, flavor + 1);
if (curGain > 0)
{
totalGain += curGain * gPokeblockFlavorCompatibilityTable[5 * nature + flavor];
@@ -1113,9 +1112,9 @@ s16 sub_810CAE4(u8 nature, const struct Pokeblock *pokeblock)
return totalGain;
}
-void sub_810CB44(struct Pokeblock *pokeblock, u8 *dest)
+void PokeblockCopyName(struct Pokeblock *pokeblock, u8 *dest)
{
- u8 color = sub_810CA9C(pokeblock, 0);
+ u8 color = GetPokeblockData(pokeblock, PBLOCK_COLOR);
StringCopy(dest, gPokeblockNames[color]);
}
@@ -1124,7 +1123,7 @@ bool8 sub_810CB68(u8 nature, u8 *dest)
u8 flavor;
for (flavor=0; flavor<5; flavor++)
{
- if (sub_810CAE4(nature, &gUnknown_083F7F9C[flavor]) > 0)
+ if (PokeblockGetGain(nature, &gUnknown_083F7F9C[flavor]) > 0)
{
StringCopy(dest, gPokeblockNames[flavor + 1]);
return TRUE;
diff --git a/src/pokenav.c b/src/field/pokenav.c
index 84ed7b14b..21d7bb4e3 100644
--- a/src/pokenav.c
+++ b/src/field/pokenav.c
@@ -38,3 +38,5 @@ void sub_80F700C(u8 *arg0, u16 arg1) {
ptr[2] = 0x80;
ptr[3] = 0xFF;
}
+
+IWRAM_DATA MainCallback gUnknown_03000744;
diff --git a/src/region_map.c b/src/field/region_map.c
index 076dfecec..bfd2729c2 100644
--- a/src/region_map.c
+++ b/src/field/region_map.c
@@ -9,7 +9,7 @@
#include "palette.h"
#include "pokemon_menu.h"
#include "region_map.h"
-#include "rom4.h"
+#include "overworld.h"
#include "secret_base.h"
#include "songs.h"
#include "sprite.h"
@@ -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
@@ -714,7 +714,7 @@ static void InitializeCursorPosition(void)
return;
}
- switch (get_map_light_level_by_bank_and_number(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) - 1)
+ switch (GetMapTypeByGroupAndId(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum) - 1)
{
default:
case 0:
@@ -733,7 +733,7 @@ static void InitializeCursorPosition(void)
break;
case 3:
case 6:
- mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum);
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp4.mapGroup, gSaveBlock1.warp4.mapNum);
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
gRegionMap->playerIsInCave = TRUE;
mapWidth = mapHeader->mapData->width;
@@ -742,7 +742,7 @@ static void InitializeCursorPosition(void)
y = gSaveBlock1.warp4.y;
break;
case 8:
- mapHeader = get_mapheader_by_bank_and_number(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum);
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(gSaveBlock1.warp2.mapGroup, gSaveBlock1.warp2.mapNum);
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
gRegionMap->playerIsInCave = TRUE;
mapWidth = mapHeader->mapData->width;
@@ -758,12 +758,12 @@ static void InitializeCursorPosition(void)
if (gRegionMap->mapSecId != MAPSEC_UNK_0x57)
{
r4 = &gSaveBlock1.warp4;
- mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum);
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum);
}
else
{
r4 = &gSaveBlock1.warp2;
- mapHeader = get_mapheader_by_bank_and_number(r4->mapGroup, r4->mapNum);
+ mapHeader = Overworld_GetMapHeaderByGroupAndId(r4->mapGroup, r4->mapNum);
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
}
gRegionMap->playerIsInCave = FALSE;
@@ -850,7 +850,7 @@ static void sub_80FB600(void)
default:
case 0:
{
- struct MapHeader *mapHeader = get_mapheader_by_bank_and_number(mapGroup, mapNum);
+ struct MapHeader *mapHeader = Overworld_GetMapHeaderByGroupAndId(mapGroup, mapNum);
u16 r1;
gRegionMap->mapSecId = mapHeader->regionMapSectionId;
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 bb3c31dfc..e8ab7e1bf 100644
--- a/src/rotating_gate.c
+++ b/src/field/rotating_gate.c
@@ -12,11 +12,11 @@
#define ROTATING_GATE_PUZZLE_MAX 14
#define GATE_ARM_MAX_LENGTH 2
-#define GATE_ROTATION(rotationDirection, arm, longArm) \
+#define GATE_ROT(rotationDirection, arm, longArm) \
((rotationDirection & 15) << 4) | ((arm & 7) << 1) | (longArm & 1)
-#define GATE_ROTATION_CLOCKWISE(arm, longArm) GATE_ROTATION(ROTATE_CLOCKWISE, arm, longArm)
-#define GATE_ROTATION_ANTICLOCKWISE(arm, longArm) GATE_ROTATION(ROTATE_ANTICLOCKWISE, arm, longArm)
-#define GATE_ROTATION_NONE 255
+#define GATE_ROT_CW(arm, longArm) GATE_ROT(ROTATE_CLOCKWISE, arm, longArm)
+#define GATE_ROT_ACW(arm, longArm) GATE_ROT(ROTATE_ANTICLOCKWISE, arm, longArm)
+#define GATE_ROT_NONE 255
static void SpriteCallback_RotatingGate(struct Sprite *sprite);
static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY);
@@ -181,7 +181,8 @@ enum
struct RotatingGatePuzzle
{
- struct Coords16 pos;
+ s16 x;
+ s16 y;
u8 shape;
u8 orientation;
};
@@ -193,32 +194,34 @@ struct Coords8
};
// Fortree
-static const struct RotatingGatePuzzle sRotatingGate_FortreePuzzleConfig[] = {
- { { 12, 5 }, GATE_SHAPE_L4, GATE_ORIENTATION_0 },
- { { 14, 7 }, GATE_SHAPE_L4, GATE_ORIENTATION_270 },
- { { 16, 4 }, GATE_SHAPE_T2, GATE_ORIENTATION_90 },
- { { 15, 14 }, GATE_SHAPE_L2, GATE_ORIENTATION_0 },
- { { 18, 13 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 },
- { { 8, 20 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 },
- { { 16, 20 }, GATE_SHAPE_T4, GATE_ORIENTATION_90 },
+static const struct RotatingGatePuzzle sRotatingGate_FortreePuzzleConfig[] =
+{
+ {12, 5, GATE_SHAPE_L4, GATE_ORIENTATION_0},
+ {14, 7, GATE_SHAPE_L4, GATE_ORIENTATION_270},
+ {16, 4, GATE_SHAPE_T2, GATE_ORIENTATION_90},
+ {15, 14, GATE_SHAPE_L2, GATE_ORIENTATION_0},
+ {18, 13, GATE_SHAPE_T1, GATE_ORIENTATION_180},
+ { 8, 20, GATE_SHAPE_T1, GATE_ORIENTATION_180},
+ {16, 20, GATE_SHAPE_T4, GATE_ORIENTATION_90},
};
// Trickhouse
-static const struct RotatingGatePuzzle sRotatingGate_TrickHousePuzzleConfig[] = {
- { { 13, 3 }, GATE_SHAPE_T1, GATE_ORIENTATION_270 },
- { { 12, 6 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 },
- { { 3, 6 }, GATE_SHAPE_T1, GATE_ORIENTATION_180 },
- { { 3, 9 }, GATE_SHAPE_T2, GATE_ORIENTATION_270 },
- { { 8, 8 }, GATE_SHAPE_L1, GATE_ORIENTATION_90 },
- { { 2, 12 }, GATE_SHAPE_T3, GATE_ORIENTATION_180 },
- { { 9, 13 }, GATE_SHAPE_L2, GATE_ORIENTATION_0 },
- { { 3, 14 }, GATE_SHAPE_L3, GATE_ORIENTATION_90 },
- { { 9, 15 }, GATE_SHAPE_L4, GATE_ORIENTATION_180 },
- { { 3, 18 }, GATE_SHAPE_T2, GATE_ORIENTATION_180 },
- { { 2, 19 }, GATE_SHAPE_T1, GATE_ORIENTATION_0 },
- { { 5, 21 }, GATE_SHAPE_L1, GATE_ORIENTATION_0 },
- { { 9, 19 }, GATE_SHAPE_L4, GATE_ORIENTATION_270 },
- { { 12, 20 }, GATE_SHAPE_T1, GATE_ORIENTATION_90 },
+static const struct RotatingGatePuzzle sRotatingGate_TrickHousePuzzleConfig[] =
+{
+ {13, 3, GATE_SHAPE_T1, GATE_ORIENTATION_270},
+ {12, 6, GATE_SHAPE_T1, GATE_ORIENTATION_180},
+ { 3, 6, GATE_SHAPE_T1, GATE_ORIENTATION_180},
+ { 3, 9, GATE_SHAPE_T2, GATE_ORIENTATION_270},
+ { 8, 8, GATE_SHAPE_L1, GATE_ORIENTATION_90},
+ { 2, 12, GATE_SHAPE_T3, GATE_ORIENTATION_180},
+ { 9, 13, GATE_SHAPE_L2, GATE_ORIENTATION_0},
+ { 3, 14, GATE_SHAPE_L3, GATE_ORIENTATION_90},
+ { 9, 15, GATE_SHAPE_L4, GATE_ORIENTATION_180},
+ { 3, 18, GATE_SHAPE_T2, GATE_ORIENTATION_180},
+ { 2, 19, GATE_SHAPE_T1, GATE_ORIENTATION_0},
+ { 5, 21, GATE_SHAPE_L1, GATE_ORIENTATION_0},
+ { 9, 19, GATE_SHAPE_L4, GATE_ORIENTATION_270},
+ {12, 20, GATE_SHAPE_T1, GATE_ORIENTATION_90},
};
static const u8 sRotatingGateTiles_1[] = INCBIN_U8("graphics/rotating_gates/1.4bpp");
@@ -230,7 +233,8 @@ static const u8 sRotatingGateTiles_7[] = INCBIN_U8("graphics/rotating_gates/7.4b
static const u8 sRotatingGateTiles_0[] = INCBIN_U8("graphics/rotating_gates/0.4bpp");
static const u8 sRotatingGateTiles_4[] = INCBIN_U8("graphics/rotating_gates/4.4bpp");
-static const struct OamData sOamData_RotatingGateLarge = {
+static const struct OamData sOamData_RotatingGateLarge =
+{
.y = 0,
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = 0,
@@ -246,7 +250,8 @@ static const struct OamData sOamData_RotatingGateLarge = {
.affineParam = 0,
};
-static const struct OamData sOamData_RotatingGateRegular = {
+static const struct OamData sOamData_RotatingGateRegular =
+{
.y = 0,
.affineMode = ST_OAM_AFFINE_NORMAL,
.objMode = 0,
@@ -262,145 +267,178 @@ static const struct OamData sOamData_RotatingGateRegular = {
.affineParam = 0,
};
-static const struct SpriteSheet sRotatingGatesGraphicsTable[] = {
- { sRotatingGateTiles_0, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L1 },
- { sRotatingGateTiles_1, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L2 },
- { sRotatingGateTiles_2, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L3 },
- { sRotatingGateTiles_3, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L4 },
- { sRotatingGateTiles_4, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T1 },
- { sRotatingGateTiles_5, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T2 },
- { sRotatingGateTiles_6, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T3 },
- { sRotatingGateTiles_7, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T4 },
- { NULL },
+static const struct SpriteSheet sRotatingGatesGraphicsTable[] =
+{
+ {sRotatingGateTiles_0, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L1},
+ {sRotatingGateTiles_1, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L2},
+ {sRotatingGateTiles_2, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L3},
+ {sRotatingGateTiles_3, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_L4},
+ {sRotatingGateTiles_4, 0x200, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T1},
+ {sRotatingGateTiles_5, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T2},
+ {sRotatingGateTiles_6, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T3},
+ {sRotatingGateTiles_7, 0x800, ROTATING_GATE_TILE_TAG + GATE_SHAPE_T4},
+ {NULL},
};
-static const union AnimCmd sSpriteAnim_RotatingGateLarge[] = {
- ANIMCMD_FRAME(0, 0), ANIMCMD_END,
+static const union AnimCmd sSpriteAnim_RotatingGateLarge[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END,
};
-static const union AnimCmd sSpriteAnim_RotatingGateRegular[] = {
+static const union AnimCmd sSpriteAnim_RotatingGateRegular[] =
+{
ANIMCMD_FRAME(0, 0), ANIMCMD_END,
};
-static const union AnimCmd *const sSpriteAnimTable_RotatingGateLarge[] = {
+static const union AnimCmd *const sSpriteAnimTable_RotatingGateLarge[] =
+{
sSpriteAnim_RotatingGateLarge,
};
-static const union AnimCmd *const sSpriteAnimTable_RotatingGateRegular[] = {
+static const union AnimCmd *const sSpriteAnimTable_RotatingGateRegular[] =
+{
sSpriteAnim_RotatingGateRegular,
};
-static const union AffineAnimCmd sSpriteAffineAnim_Rotated0[] = {
- AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_JUMP(0),
+static const union AffineAnimCmd sSpriteAffineAnim_Rotated0[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_JUMP(0),
};
-static const union AffineAnimCmd sSpriteAffineAnim_Rotated90[] = {
- AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0), AFFINEANIMCMD_JUMP(0),
+static const union AffineAnimCmd sSpriteAffineAnim_Rotated90[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0),
+ AFFINEANIMCMD_JUMP(0),
};
-static const union AffineAnimCmd sSpriteAffineAnim_Rotated180[] = {
- AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0), AFFINEANIMCMD_JUMP(0),
+static const union AffineAnimCmd sSpriteAffineAnim_Rotated180[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
+ AFFINEANIMCMD_JUMP(0),
};
-static const union AffineAnimCmd sSpriteAffineAnim_Rotated270[] = {
- AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0), AFFINEANIMCMD_JUMP(0),
+static const union AffineAnimCmd sSpriteAffineAnim_Rotated270[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
+ AFFINEANIMCMD_JUMP(0),
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 4, 16),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise0to90Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise90to180Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise180to270Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingClockwise270to360Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270Faster[] = {
- AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0), AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8), AFFINEANIMCMD_END,
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise360to270Faster[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8),
+ AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise270to180Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, 64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise180to90Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -128, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0Faster[] = {
+static const union AffineAnimCmd sSpriteAffineAnim_RotatingAnticlockwise90to0Faster[] =
+{
AFFINEANIMCMD_FRAME(0x100, 0x100, -64, 0),
AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 8),
AFFINEANIMCMD_END,
};
-static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] = {
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] =
+{
sSpriteAffineAnim_Rotated0,
sSpriteAffineAnim_Rotated90,
sSpriteAffineAnim_Rotated180,
@@ -423,7 +461,8 @@ static const union AffineAnimCmd *const sSpriteAffineAnimTable_RotatingGate[] =
sSpriteAffineAnim_RotatingClockwise270to360Faster,
};
-static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = {
+static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge =
+{
.tileTag = ROTATING_GATE_TILE_TAG,
.paletteTag = 0xFFFF,
.oam = &sOamData_RotatingGateLarge,
@@ -433,7 +472,8 @@ static const struct SpriteTemplate sSpriteTemplate_RotatingGateLarge = {
.callback = SpriteCallback_RotatingGate,
};
-static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = {
+static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular =
+{
.tileTag = ROTATING_GATE_TILE_TAG,
.paletteTag = 0xFFFF,
.oam = &sOamData_RotatingGateRegular,
@@ -449,62 +489,36 @@ static const struct SpriteTemplate sSpriteTemplate_RotatingGateRegular = {
// given direction. This information is compared against the gate
// "arm" layout to see if there is an arm at the position in order to
// produce the final rotation.
-static const u8 sRotatingGate_RotationInfoNorth[4][4] = {
- { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE },
- { GATE_ROTATION_CLOCKWISE(GATE_ARM_WEST, 1),
- GATE_ROTATION_CLOCKWISE(GATE_ARM_WEST, 0),
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_EAST, 0),
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_EAST, 1) },
- { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE },
+static const u8 sRotatingGate_RotationInfoNorth[4 * 4] =
+{
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_CW(GATE_ARM_WEST, 1), GATE_ROT_CW(GATE_ARM_WEST, 0), GATE_ROT_ACW(GATE_ARM_EAST, 0), GATE_ROT_ACW(GATE_ARM_EAST, 1),
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE,
};
-static const u8 sRotatingGate_RotationInfoSouth[4][4] = {
- { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE },
- { GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_WEST, 1),
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_WEST, 0),
- GATE_ROTATION_CLOCKWISE(GATE_ARM_EAST, 0),
- GATE_ROTATION_CLOCKWISE(GATE_ARM_EAST, 1) },
- { GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE, GATE_ROTATION_NONE },
+static const u8 sRotatingGate_RotationInfoSouth[4 * 4] =
+{
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_ACW(GATE_ARM_WEST, 1), GATE_ROT_ACW(GATE_ARM_WEST, 0), GATE_ROT_CW(GATE_ARM_EAST, 0), GATE_ROT_CW(GATE_ARM_EAST, 1),
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_NONE,
};
-static const u8 sRotatingGate_RotationInfoWest[4][4] = {
- { GATE_ROTATION_NONE,
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_NORTH, 1),
- GATE_ROTATION_NONE,
- GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE,
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_NORTH, 0),
- GATE_ROTATION_NONE,
- GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE,
- GATE_ROTATION_CLOCKWISE(GATE_ARM_SOUTH, 0),
- GATE_ROTATION_NONE,
- GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE,
- GATE_ROTATION_CLOCKWISE(GATE_ARM_SOUTH, 1),
- GATE_ROTATION_NONE,
- GATE_ROTATION_NONE },
+static const u8 sRotatingGate_RotationInfoWest[4 * 4] =
+{
+ GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_NORTH, 1), GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_NORTH, 0), GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_SOUTH, 0), GATE_ROT_NONE, GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_SOUTH, 1), GATE_ROT_NONE, GATE_ROT_NONE,
};
-static const u8 sRotatingGate_RotationInfoEast[4][4] = {
- { GATE_ROTATION_NONE,
- GATE_ROTATION_NONE,
- GATE_ROTATION_CLOCKWISE(GATE_ARM_NORTH, 1),
- GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE,
- GATE_ROTATION_NONE,
- GATE_ROTATION_CLOCKWISE(GATE_ARM_NORTH, 0),
- GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE,
- GATE_ROTATION_NONE,
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_SOUTH, 0),
- GATE_ROTATION_NONE },
- { GATE_ROTATION_NONE,
- GATE_ROTATION_NONE,
- GATE_ROTATION_ANTICLOCKWISE(GATE_ARM_SOUTH, 1),
- GATE_ROTATION_NONE },
+static const u8 sRotatingGate_RotationInfoEast[4 * 4] =
+{
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_NORTH, 1), GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_CW(GATE_ARM_NORTH, 0), GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_SOUTH, 0), GATE_ROT_NONE,
+ GATE_ROT_NONE, GATE_ROT_NONE, GATE_ROT_ACW(GATE_ARM_SOUTH, 1), GATE_ROT_NONE,
};
// These tables describe the relative coordinate positions the arms
@@ -519,49 +533,86 @@ static const struct Coords8 sRotatingGate_ArmPositionsAntiClockwiseRotation[] =
// Describes where the gates "arms" are in the order north, east, south, west.
// These are adjusted using the current orientation to perform collision checking
-static const u8 sRotatingGate_ArmLayout[][GATE_ARM_WEST + 1][GATE_ARM_MAX_LENGTH] = {
+static const u8 sRotatingGate_ArmLayout[][4 * 2] =
+{
// L-shape gates
{
- { 1, 0 }, { 1, 0 }, { 0, 0 }, { 0, 0 },
+ 1, 0,
+ 1, 0,
+ 0, 0,
+ 0, 0,
},
{
- { 1, 1 }, { 1, 0 }, { 0, 0 }, { 0, 0 },
+ 1, 1,
+ 1, 0,
+ 0, 0,
+ 0, 0,
},
{
- { 1, 0 }, { 1, 1 }, { 0, 0 }, { 0, 0 },
+ 1, 0,
+ 1, 1,
+ 0, 0,
+ 0, 0,
},
{
- { 1, 1 }, { 1, 1 }, { 0, 0 }, { 0, 0 },
+ 1, 1,
+ 1, 1,
+ 0, 0,
+ 0, 0,
},
// T-shape gates
{
- { 1, 0 }, { 1, 0 }, { 1, 0 }, { 0, 0 },
+ 1, 0,
+ 1, 0,
+ 1, 0,
+ 0, 0,
},
{
- { 1, 1 }, { 1, 0 }, { 1, 0 }, { 0, 0 },
+ 1, 1,
+ 1, 0,
+ 1, 0,
+ 0, 0,
},
{
- { 1, 0 }, { 1, 1 }, { 1, 0 }, { 0, 0 },
+ 1, 0,
+ 1, 1,
+ 1, 0,
+ 0, 0,
},
{
- { 1, 0 }, { 1, 0 }, { 1, 1 }, { 0, 0 },
+ 1, 0,
+ 1, 0,
+ 1, 1,
+ 0, 0,
},
// Unused T-shape gates
// These have 2-3 long arms and cannot actually be used anywhere
// since configuration for them is missing from the other tables.
{
- { 1, 1 }, { 1, 1 }, { 1, 0 }, { 0, 0 },
+ 1, 1,
+ 1, 1,
+ 1, 0,
+ 0, 0,
},
{
- { 1, 1 }, { 1, 0 }, { 1, 1 }, { 0, 0 },
+ 1, 1,
+ 1, 0,
+ 1, 1,
+ 0, 0,
},
{
- { 1, 0 }, { 1, 1 }, { 1, 1 }, { 0, 0 },
+ 1, 0,
+ 1, 1,
+ 1, 1,
+ 0, 0,
},
{
- { 1, 1 }, { 1, 1 }, { 1, 1 }, { 0, 0 },
+ 1, 1,
+ 1, 1,
+ 1, 1,
+ 0, 0,
},
};
@@ -675,8 +726,8 @@ static void RotatingGate_CreateGatesWithinViewport(s16 deltaX, s16 deltaY)
for (i = 0; i < gRotatingGate_PuzzleCount; i++)
{
- x3 = gRotatingGate_PuzzleConfig[i].pos.x + 7;
- y3 = gRotatingGate_PuzzleConfig[i].pos.y + 7;
+ x3 = gRotatingGate_PuzzleConfig[i].x + 7;
+ y3 = gRotatingGate_PuzzleConfig[i].y + 7;
if (y <= y3 && y2 >= y3 && x <= x3 && x2 >= x3 &&
gRotatingGate_GateSpriteIds[i] == MAX_SPRITES)
@@ -697,24 +748,18 @@ static u8 RotatingGate_CreateGate(u8 gateId, s16 deltaX, s16 deltaY)
gate = &gRotatingGate_PuzzleConfig[gateId];
if (gate->shape == GATE_SHAPE_L1 || gate->shape == GATE_SHAPE_T1)
- {
template = sSpriteTemplate_RotatingGateRegular;
- }
else
- {
template = sSpriteTemplate_RotatingGateLarge;
- }
template.tileTag = gate->shape + ROTATING_GATE_TILE_TAG;
spriteId = CreateSprite(&template, 0, 0, 0x94);
if (spriteId == MAX_SPRITES)
- {
return MAX_SPRITES;
- }
- x = gate->pos.x + 7;
- y = gate->pos.y + 7;
+ x = gate->x + 7;
+ y = gate->y + 7;
sprite = &gSprites[spriteId];
sprite->data0 = gateId;
@@ -769,7 +814,7 @@ static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite)
u16 y;
s16 y2;
- sprite->invisible = 0;
+ sprite->invisible = FALSE;
x = sprite->pos1.x + sprite->pos2.x + sprite->centerToCornerVecX + gSpriteCoordOffsetX;
y = sprite->pos1.y + sprite->pos2.y + sprite->centerToCornerVecY + gSpriteCoordOffsetY;
@@ -778,12 +823,12 @@ static void RotatingGate_HideGatesOutsideViewport(struct Sprite *sprite)
if ((s16)x > DISPLAY_WIDTH + 0x10 - 1 || x2 < -0x10)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
if ((s16)y > DISPLAY_HEIGHT + 0x10 - 1 || y2 < -0x10)
{
- sprite->invisible = 1;
+ sprite->invisible = TRUE;
}
}
@@ -811,8 +856,8 @@ static void RotatingGate_DestroyGatesOutsideViewport(void)
for (i = 0; i < gRotatingGate_PuzzleCount; i++)
{
- xGate = gRotatingGate_PuzzleConfig[i].pos.x + 7;
- yGate = gRotatingGate_PuzzleConfig[i].pos.y + 7;
+ xGate = gRotatingGate_PuzzleConfig[i].x + 7;
+ yGate = gRotatingGate_PuzzleConfig[i].y + 7;
if (gRotatingGate_GateSpriteIds[i] == MAX_SPRITES)
continue;
@@ -851,8 +896,8 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection)
orientation = RotatingGate_GetGateOrientation(gateId);
shape = gRotatingGate_PuzzleConfig[gateId].shape;
- x = gRotatingGate_PuzzleConfig[gateId].pos.x + 7;
- y = gRotatingGate_PuzzleConfig[gateId].pos.y + 7;
+ x = gRotatingGate_PuzzleConfig[gateId].x + 7;
+ y = gRotatingGate_PuzzleConfig[gateId].y + 7;
// Loop through the gate's "arms" clockwise (north, south, east, west)
for (i = GATE_ARM_NORTH; i <= GATE_ARM_WEST; i++)
@@ -878,118 +923,119 @@ static int RotatingGate_CanRotate(u8 gateId, int rotationDirection)
return 1;
}
#else
-__attribute__((naked)) static int RotatingGate_CanRotate(u8 a, int puzzleType)
+__attribute__((naked))
+static int RotatingGate_CanRotate(u8 a, int puzzleType)
{
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, 0xC\n\
- lsls r0, 24\n\
- lsrs r4, r0, 24\n\
- cmp r1, 0x1\n\
- bne _080C7EAC\n\
- ldr r0, _080C7EA8 @ =sRotatingGate_ArmPositionsAntiClockwiseRotation\n\
- mov r10, r0\n\
- b _080C7EB8\n\
- .align 2, 0\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ sub sp, 0xC\n\
+ lsls r0, 24\n\
+ lsrs r4, r0, 24\n\
+ cmp r1, 0x1\n\
+ bne _080C7EAC\n\
+ ldr r0, _080C7EA8 @ =sRotatingGate_ArmPositionsAntiClockwiseRotation\n\
+ mov r10, r0\n\
+ b _080C7EB8\n\
+ .align 2, 0\n\
_080C7EA8: .4byte sRotatingGate_ArmPositionsAntiClockwiseRotation\n\
_080C7EAC:\n\
- cmp r1, 0x2\n\
- beq _080C7EB4\n\
+ cmp r1, 0x2\n\
+ beq _080C7EB4\n\
_080C7EB0:\n\
- movs r0, 0\n\
- b _080C7F48\n\
+ movs r0, 0\n\
+ b _080C7F48\n\
_080C7EB4:\n\
- ldr r1, _080C7F58 @ =sRotatingGate_ArmPositionsClockwiseRotation\n\
- mov r10, r1\n\
+ ldr r1, _080C7F58 @ =sRotatingGate_ArmPositionsClockwiseRotation\n\
+ mov r10, r1\n\
_080C7EB8:\n\
- adds r0, r4, 0\n\
- bl RotatingGate_GetGateOrientation\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp]\n\
- ldr r0, _080C7F5C @ =gRotatingGate_PuzzleConfig\n\
- ldr r1, [r0]\n\
- lsls r0, r4, 3\n\
- adds r0, r1\n\
- ldrb r2, [r0, 0x4]\n\
- ldrh r1, [r0]\n\
- adds r1, 0x7\n\
- ldrh r0, [r0, 0x2]\n\
- adds r0, 0x7\n\
- movs r3, 0\n\
- lsls r2, 3\n\
- str r2, [sp, 0x4]\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- mov r9, r1\n\
- lsls r0, 16\n\
- asrs r0, 16\n\
- mov r8, r0\n\
+ adds r0, r4, 0\n\
+ bl RotatingGate_GetGateOrientation\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp]\n\
+ ldr r0, _080C7F5C @ =gRotatingGate_PuzzleConfig\n\
+ ldr r1, [r0]\n\
+ lsls r0, r4, 3\n\
+ adds r0, r1\n\
+ ldrb r2, [r0, 0x4]\n\
+ ldrh r1, [r0]\n\
+ adds r1, 0x7\n\
+ ldrh r0, [r0, 0x2]\n\
+ adds r0, 0x7\n\
+ movs r3, 0\n\
+ lsls r2, 3\n\
+ str r2, [sp, 0x4]\n\
+ lsls r1, 16\n\
+ asrs r1, 16\n\
+ mov r9, r1\n\
+ lsls r0, 16\n\
+ asrs r0, 16\n\
+ mov r8, r0\n\
_080C7EE8:\n\
- movs r6, 0\n\
- ldr r2, [sp]\n\
- adds r7, r2, r3\n\
- lsls r0, r3, 1\n\
- adds r5, r7, 0\n\
- ldr r1, [sp, 0x4]\n\
- adds r0, r1\n\
- ldr r2, _080C7F60 @ =sRotatingGate_ArmLayout\n\
- adds r4, r0, r2\n\
+ movs r6, 0\n\
+ ldr r2, [sp]\n\
+ adds r7, r2, r3\n\
+ lsls r0, r3, 1\n\
+ adds r5, r7, 0\n\
+ ldr r1, [sp, 0x4]\n\
+ adds r0, r1\n\
+ ldr r2, _080C7F60 @ =sRotatingGate_ArmLayout\n\
+ adds r4, r0, r2\n\
_080C7EFA:\n\
- adds r0, r5, 0\n\
- cmp r5, 0\n\
- bge _080C7F02\n\
- adds r0, r7, 0x3\n\
+ adds r0, r5, 0\n\
+ cmp r5, 0\n\
+ bge _080C7F02\n\
+ adds r0, r7, 0x3\n\
_080C7F02:\n\
- asrs r0, 2\n\
- lsls r0, 2\n\
- subs r0, r5, r0\n\
- lsls r0, 1\n\
- adds r0, r6\n\
- lsls r0, 24\n\
- lsrs r1, r0, 24\n\
- ldrb r0, [r4]\n\
- cmp r0, 0\n\
- beq _080C7F38\n\
- lsls r1, 2\n\
- add r1, r10\n\
- movs r0, 0\n\
- ldrsb r0, [r1, r0]\n\
- add r0, r9\n\
- ldrb r1, [r1, 0x1]\n\
- lsls r1, 24\n\
- asrs r1, 24\n\
- add r1, r8\n\
- str r3, [sp, 0x8]\n\
- bl MapGridIsImpassableAt\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- ldr r3, [sp, 0x8]\n\
- cmp r0, 0x1\n\
- beq _080C7EB0\n\
+ asrs r0, 2\n\
+ lsls r0, 2\n\
+ subs r0, r5, r0\n\
+ lsls r0, 1\n\
+ adds r0, r6\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ beq _080C7F38\n\
+ lsls r1, 2\n\
+ add r1, r10\n\
+ movs r0, 0\n\
+ ldrsb r0, [r1, r0]\n\
+ add r0, r9\n\
+ ldrb r1, [r1, 0x1]\n\
+ lsls r1, 24\n\
+ asrs r1, 24\n\
+ add r1, r8\n\
+ str r3, [sp, 0x8]\n\
+ bl MapGridIsImpassableAt\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ ldr r3, [sp, 0x8]\n\
+ cmp r0, 0x1\n\
+ beq _080C7EB0\n\
_080C7F38:\n\
- adds r4, 0x1\n\
- adds r6, 0x1\n\
- cmp r6, 0x1\n\
- ble _080C7EFA\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _080C7EE8\n\
- movs r0, 0x1\n\
+ adds r4, 0x1\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x1\n\
+ ble _080C7EFA\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x3\n\
+ ble _080C7EE8\n\
+ movs r0, 0x1\n\
_080C7F48:\n\
- add sp, 0xC\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\
+ add sp, 0xC\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\
_080C7F58: .4byte sRotatingGate_ArmPositionsClockwiseRotation\n\
_080C7F5C: .4byte gRotatingGate_PuzzleConfig\n\
_080C7F60: .4byte sRotatingGate_ArmLayout\n\
@@ -997,7 +1043,6 @@ _080C7F60: .4byte sRotatingGate_ArmLayout\n\
}
#endif
-#ifdef NONMATCHING
static int RotatingGate_HasArm(u8 gateId, u8 armInfo)
{
int isLongArm;
@@ -1010,56 +1055,8 @@ static int RotatingGate_HasArm(u8 gateId, u8 armInfo)
armOrientation = (arm - RotatingGate_GetGateOrientation(gateId) + 4) % 4;
shape = gRotatingGate_PuzzleConfig[gateId].shape;
- return sRotatingGate_ArmLayout[shape][armOrientation][isLongArm];
+ return sRotatingGate_ArmLayout[shape][armOrientation * 2 + isLongArm];
}
-#else
-__attribute__((naked)) static int RotatingGate_HasArm(u8 a, u8 b)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- adds r4, r1, 0\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r6, r0, 0\n\
- lsls r4, 24\n\
- lsrs r5, r4, 24\n\
- lsrs r4, 25\n\
- movs r0, 0x1\n\
- ands r5, r0\n\
- adds r0, r6, 0\n\
- bl RotatingGate_GetGateOrientation\n\
- subs r4, r0\n\
- adds r1, r4, 0x4\n\
- adds r0, r1, 0\n\
- cmp r1, 0\n\
- bge _080C7F8A\n\
- adds r0, r4, 0x7\n\
-_080C7F8A:\n\
- asrs r0, 2\n\
- lsls r0, 2\n\
- subs r0, r1, r0\n\
- ldr r1, _080C7FB0 @ =gRotatingGate_PuzzleConfig\n\
- ldr r2, [r1]\n\
- lsls r1, r6, 3\n\
- adds r1, r2\n\
- ldrb r1, [r1, 0x4]\n\
- ldr r2, _080C7FB4 @ =sRotatingGate_ArmLayout\n\
- lsls r0, 24\n\
- asrs r0, 23\n\
- adds r0, r5\n\
- lsls r1, 3\n\
- adds r0, r1\n\
- adds r0, r2\n\
- ldrb r0, [r0]\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080C7FB0: .4byte gRotatingGate_PuzzleConfig\n\
-_080C7FB4: .4byte sRotatingGate_ArmLayout\n\
-.syntax divided\n");
-}
-#endif
static void RotatingGate_TriggerRotationAnimation(u8 gateId, int rotationDirection)
{
@@ -1073,79 +1070,23 @@ static void RotatingGate_TriggerRotationAnimation(u8 gateId, int rotationDirecti
}
}
-#ifdef NONMATCHING
static u8 RotatingGate_GetRotationInfo(u8 direction, s16 x, s16 y)
{
- register const u8(*ptr)[][4] asm("r3");
+ register const u8 *ptr;
if (direction == DIR_NORTH)
- ptr = &sRotatingGate_RotationInfoNorth;
+ ptr = sRotatingGate_RotationInfoNorth;
else if (direction == DIR_SOUTH)
- ptr = &sRotatingGate_RotationInfoSouth;
+ ptr = sRotatingGate_RotationInfoSouth;
else if (direction == DIR_WEST)
- ptr = &sRotatingGate_RotationInfoWest;
+ ptr = sRotatingGate_RotationInfoWest;
else if (direction == DIR_EAST)
- ptr = &sRotatingGate_RotationInfoEast;
+ ptr = sRotatingGate_RotationInfoEast;
else
- return GATE_ROTATION_NONE;
+ return GATE_ROT_NONE;
- return (*ptr)[y][x];
-}
-#else
-__attribute__((naked)) static u8 RotatingGate_GetRotationInfo(u8 a, s16 b, s16 c)
-{
- asm(".syntax unified\n\
- push {lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- adds r3, r0, 0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- lsls r2, 16\n\
- lsrs r2, 16\n\
- cmp r0, 0x2\n\
- bne _080C8008\n\
- ldr r3, _080C8004 @ =sRotatingGate_RotationInfoNorth\n\
- b _080C802A\n\
- .align 2, 0\n\
-_080C8004: .4byte sRotatingGate_RotationInfoNorth\n\
-_080C8008:\n\
- cmp r0, 0x1\n\
- bne _080C8014\n\
- ldr r3, _080C8010 @ =sRotatingGate_RotationInfoSouth\n\
- b _080C802A\n\
- .align 2, 0\n\
-_080C8010: .4byte sRotatingGate_RotationInfoSouth\n\
-_080C8014:\n\
- cmp r0, 0x3\n\
- bne _080C8020\n\
- ldr r3, _080C801C @ =sRotatingGate_RotationInfoWest\n\
- b _080C802A\n\
- .align 2, 0\n\
-_080C801C: .4byte sRotatingGate_RotationInfoWest\n\
-_080C8020:\n\
- cmp r3, 0x4\n\
- beq _080C8028\n\
- movs r0, 0xFF\n\
- b _080C8038\n\
-_080C8028:\n\
- ldr r3, _080C803C @ =sRotatingGate_RotationInfoEast\n\
-_080C802A:\n\
- lsls r0, r2, 16\n\
- lsls r1, 16\n\
- asrs r1, 16\n\
- asrs r0, 14\n\
- adds r0, r1\n\
- adds r0, r3, r0\n\
- ldrb r0, [r0]\n\
-_080C8038:\n\
- pop {r1}\n\
- bx r1\n\
- .align 2, 0\n\
-_080C803C: .4byte sRotatingGate_RotationInfoEast\n\
-.syntax divided\n");
+ return ptr[y * 4 + x];
}
-#endif
void RotatingGate_InitPuzzle(void)
{
@@ -1178,36 +1119,24 @@ void RotatingGate_InitPuzzleAndGraphics(void)
bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y)
{
int i;
- s16 gateX;
- s16 gateY;
- register u32 rotationInfo asm("r0");
- int rotationDirection;
- int armInfo;
- s16 centerX;
- s16 centerY;
if (!GetCurrentMapRotatingGatePuzzleType())
- {
- return 0;
- }
-
+ return FALSE;
for (i = 0; i < gRotatingGate_PuzzleCount; i++)
{
- gateX = gRotatingGate_PuzzleConfig[i].pos.x + 7;
- gateY = gRotatingGate_PuzzleConfig[i].pos.y + 7;
+ s16 gateX = gRotatingGate_PuzzleConfig[i].x + 7;
+ s16 gateY = gRotatingGate_PuzzleConfig[i].y + 7;
if (gateX - 2 <= x && x <= gateX + 1 && gateY - 2 <= y && y <= gateY + 1)
{
- centerX = x - gateX + 2;
- centerY = y - gateY + 2;
- rotationInfo = RotatingGate_GetRotationInfo(direction, centerX, centerY);
+ s16 centerX = x - gateX + 2;
+ s16 centerY = y - gateY + 2;
+ u8 rotationInfo = RotatingGate_GetRotationInfo(direction, centerX, centerY);
- if (rotationInfo != GATE_ROTATION_NONE)
+ if (rotationInfo != GATE_ROT_NONE)
{
- rotationDirection = rotationInfo >> 4;
- armInfo = rotationInfo & 0xF;
-
- asm("" ::"r"(armInfo));
+ u8 rotationDirection = ((rotationInfo & 0xF0) >> 4);
+ u8 armInfo = rotationInfo & 0xF;
if (RotatingGate_HasArm(i, armInfo))
{
@@ -1215,14 +1144,12 @@ bool8 CheckForRotatingGatePuzzleCollision(u8 direction, s16 x, s16 y)
{
RotatingGate_TriggerRotationAnimation(i, rotationDirection);
RotatingGate_RotateInDirection(i, rotationDirection);
- return 0;
+ return FALSE;
}
-
- return 1;
+ return TRUE;
}
}
}
}
-
- return 0;
+ return FALSE;
}
diff --git a/src/safari_zone.c b/src/field/safari_zone.c
index a47c8e951..14fd1ddc4 100644
--- a/src/safari_zone.c
+++ b/src/field/safari_zone.c
@@ -4,7 +4,7 @@
#include "field_fadetransition.h"
#include "field_player_avatar.h"
#include "main.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "string_util.h"
#include "text.h"
@@ -51,7 +51,7 @@ void SetSafariZoneFlag(void)
void ResetSafariZoneFlag(void)
{
- FlagReset(SYS_SAFARI_MODE);
+ FlagClear(SYS_SAFARI_MODE);
}
void EnterSafariMode(void)
diff --git a/src/scrcmd.c b/src/field/scrcmd.c
index 7d719371e..28584d4d0 100644
--- a/src/scrcmd.c
+++ b/src/field/scrcmd.c
@@ -31,7 +31,7 @@
#include "party_menu.h"
#include "pokemon.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "script.h"
#include "script_menu.h"
@@ -50,11 +50,11 @@ typedef void (*NativeFunc)(void);
extern u32 gUnknown_0202E8AC;
static EWRAM_DATA u32 gUnknown_0202E8B0 = 0;
-static EWRAM_DATA u16 gUnknown_0202E8B4 = 0;
-static EWRAM_DATA u16 gUnknown_0202E8B6 = 0;
-static EWRAM_DATA u16 gUnknown_0202E8B8 = 0;
-static EWRAM_DATA u16 gUnknown_0202E8BA = 0;
-static EWRAM_DATA u16 gUnknown_0202E8BC = 0;
+static EWRAM_DATA u16 sPauseCounter = 0;
+static EWRAM_DATA u16 sMovingNpcId = 0;
+static EWRAM_DATA u16 sMovingNpcMapBank = 0;
+static EWRAM_DATA u16 sMovingNpcMapId = 0;
+static EWRAM_DATA u16 sFieldEffectScriptId = 0;
extern u16 gSpecialVar_0x8000;
extern u16 gSpecialVar_0x8001;
@@ -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,30 +107,34 @@ bool8 ScrCmd_end(struct ScriptContext *ctx)
return FALSE;
}
-bool8 ScrCmd_jumpasm(struct ScriptContext *ctx)
+bool8 ScrCmd_gotonative(struct ScriptContext *ctx)
{
- u32 addr = ScriptReadWord(ctx);
- SetupNativeScript(ctx, (void *)addr);
+ bool8 (*addr)(void) = (bool8 (*)(void))ScriptReadWord(ctx);
+
+ SetupNativeScript(ctx, addr);
return TRUE;
}
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);
- sub_8126160(value);
+
+ 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;
}
@@ -542,7 +585,7 @@ bool8 ScrCmd_setflag(struct ScriptContext *ctx)
bool8 ScrCmd_clearflag(struct ScriptContext *ctx)
{
- FlagReset(ScriptReadHalfword(ctx));
+ FlagClear(ScriptReadHalfword(ctx));
return FALSE;
}
@@ -552,23 +595,24 @@ 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 value = VarGet(ScriptReadHalfword(ctx));
- sub_8053CE4(value);
+ 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;
@@ -598,36 +643,37 @@ bool8 ScrCmd_fadescreendelay(struct ScriptContext *ctx)
bool8 s28_pause_asm()
{
- gUnknown_0202E8B4--;
+ sPauseCounter--;
- if (gUnknown_0202E8B4 == 0)
+ if (sPauseCounter == 0)
return TRUE;
else
return FALSE;
}
-bool8 ScrCmd_pause(struct ScriptContext *ctx)
+bool8 ScrCmd_delay(struct ScriptContext *ctx)
{
- gUnknown_0202E8B4 = ScriptReadHalfword(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,13 +865,13 @@ 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;
}
-bool8 s30_music_check_asm()
+static bool8 WaitForSoundEffectFinish()
{
if (!IsSEPlaying())
return TRUE;
@@ -823,222 +879,238 @@ bool8 s30_music_check_asm()
return FALSE;
}
-bool8 ScrCmd_checksound(struct ScriptContext *ctx)
+bool8 ScrCmd_waitse(struct ScriptContext *ctx)
{
- SetupNativeScript(ctx, s30_music_check_asm);
+ SetupNativeScript(ctx, WaitForSoundEffectFinish);
return TRUE;
}
-bool8 ScrCmd_fanfare(struct ScriptContext *ctx)
+bool8 ScrCmd_playfanfare(struct ScriptContext *ctx)
{
PlayFanfare(ScriptReadHalfword(ctx));
return FALSE;
}
-bool8 s32_fanfare_wait_asm()
+static bool8 WaitForFanfareFinish()
{
return IsFanfareTaskInactive();
}
bool8 ScrCmd_waitfanfare(struct ScriptContext *ctx)
{
- SetupNativeScript(ctx, s32_fanfare_wait_asm);
+ SetupNativeScript(ctx, WaitForFanfareFinish);
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)
{
- sub_8053FB0(ScriptReadHalfword(ctx));
+ Overworld_ChangeMusicTo(ScriptReadHalfword(ctx));
return FALSE;
}
-bool8 ScrCmd_fadeout(struct ScriptContext *ctx)
+bool8 ScrCmd_fadeoutbgm(struct ScriptContext *ctx)
{
- u8 val = ScriptReadByte(ctx);
- if (val)
- FadeOutBGMTemporarily(4 * val);
+ u8 speed = ScriptReadByte(ctx);
+
+ if (speed != 0)
+ FadeOutBGMTemporarily(4 * speed);
else
FadeOutBGMTemporarily(4);
SetupNativeScript(ctx, IsBGMPausedOrStopped);
return TRUE;
}
-bool8 ScrCmd_fadein(struct ScriptContext *ctx)
+bool8 ScrCmd_fadeinbgm(struct ScriptContext *ctx)
{
- u8 val = ScriptReadByte(ctx);
- if (val)
- FadeInBGM(4 * val);
+ u8 speed = ScriptReadByte(ctx);
+
+ if (speed != 0)
+ FadeInBGM(4 * speed);
else
FadeInBGM(4);
return FALSE;
}
-bool8 ScrCmd_move(struct ScriptContext *ctx)
+bool8 ScrCmd_applymovement(struct ScriptContext *ctx)
{
- u16 v1 = VarGet(ScriptReadHalfword(ctx));
- void *v2 = (void *)ScriptReadWord(ctx);
- exec_movement(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2);
- gUnknown_0202E8B6 = v1;
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ void *movementScript = (void *)ScriptReadWord(ctx);
+
+ ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, movementScript);
+ sMovingNpcId = localId;
return FALSE;
}
-bool8 ScrCmd_movecoords(struct ScriptContext *ctx)
+bool8 ScrCmd_applymovement_at(struct ScriptContext *ctx)
{
- u16 v1 = VarGet(ScriptReadHalfword(ctx));
- void *v2 = (void *)ScriptReadWord(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- exec_movement(v1, v4, v3, v2);
- gUnknown_0202E8B6 = v1;
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ void *movementScript = (void *)ScriptReadWord(ctx);
+ u8 mapGroup = ScriptReadByte(ctx);
+ u8 mapNum = ScriptReadByte(ctx);
+
+ ScriptMovement_StartObjectMovementScript(localId, mapNum, mapGroup, movementScript);
+ sMovingNpcId = localId;
return FALSE;
}
-bool8 s51a_0806B288(void)
+static bool8 WaitForMovementFinish(void)
{
- return sub_80A212C(gUnknown_0202E8B6, gUnknown_0202E8BA, gUnknown_0202E8B8);
+ return ScriptMovement_IsObjectMovementFinished(sMovingNpcId, sMovingNpcMapId, sMovingNpcMapBank);
}
-bool8 ScrCmd_waitmove(struct ScriptContext *ctx)
+bool8 ScrCmd_waitmovement(struct ScriptContext *ctx)
{
- u16 v1 = VarGet(ScriptReadHalfword(ctx));
- if (v1)
- gUnknown_0202E8B6 = v1;
- gUnknown_0202E8B8 = gSaveBlock1.location.mapGroup;
- gUnknown_0202E8BA = gSaveBlock1.location.mapNum;
- SetupNativeScript(ctx, s51a_0806B288);
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+
+ if (localId != 0)
+ sMovingNpcId = localId;
+ sMovingNpcMapBank = gSaveBlock1.location.mapGroup;
+ sMovingNpcMapId = gSaveBlock1.location.mapNum;
+ SetupNativeScript(ctx, WaitForMovementFinish);
return TRUE;
}
-bool8 ScrCmd_waitmovexy(struct ScriptContext *ctx)
+bool8 ScrCmd_waitmovement_at(struct ScriptContext *ctx)
{
- u16 v1 = VarGet(ScriptReadHalfword(ctx));
- u8 v2;
- u8 v3;
+ u16 localId = VarGet(ScriptReadHalfword(ctx));
+ u8 mapBank;
+ u8 mapId;
- if (v1)
- gUnknown_0202E8B6 = v1;
-
- v2 = ScriptReadByte(ctx);
- v3 = ScriptReadByte(ctx);
- gUnknown_0202E8B8 = v2;
- gUnknown_0202E8BA = v3;
- SetupNativeScript(ctx, s51a_0806B288);
+ if (localId != 0)
+ sMovingNpcId = localId;
+ mapBank = ScriptReadByte(ctx);
+ mapId = ScriptReadByte(ctx);
+ sMovingNpcMapBank = mapBank;
+ sMovingNpcMapId = mapId;
+ SetupNativeScript(ctx, WaitForMovementFinish);
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));
- update_saveblock1_field_object_coords(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;
}
@@ -1052,39 +1124,43 @@ bool8 ScrCmd_faceplayer(struct ScriptContext *ctx)
return FALSE;
}
-bool8 ScrCmd_spriteface(struct ScriptContext *ctx)
+bool8 ScrCmd_turnobject(struct ScriptContext *ctx)
{
- u16 v1 = VarGet(ScriptReadHalfword(ctx));
- u8 v2 = ScriptReadByte(ctx);
- FieldObjectTurnByLocalIdAndMap(v1, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, v2);
+ 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);
- update_saveblock1_field_object_movement_behavior(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;
}
@@ -1112,7 +1188,7 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx)
{
if (gMapObjects[gSelectedMapObject].active)
{
- sub_8064DD8();
+ LockSelectedMapObject();
SetupNativeScript(ctx, sub_8064DB4);
}
else
@@ -1120,7 +1196,6 @@ bool8 ScrCmd_lock(struct ScriptContext *ctx)
ScriptFreezeMapObjects();
SetupNativeScript(ctx, sub_8064CFC);
}
-
return TRUE;
}
}
@@ -1154,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;
@@ -1198,9 +1275,10 @@ bool8 ScrCmd_waitbutton(struct ScriptContext *ctx)
bool8 ScrCmd_yesnobox(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- if (yes_no_box(v1, v2) == 1)
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+
+ if (ScriptMenu_YesNo(left, top) == TRUE)
{
ScriptContext1_Stop();
return TRUE;
@@ -1213,11 +1291,12 @@ bool8 ScrCmd_yesnobox(struct ScriptContext *ctx)
bool8 ScrCmd_multichoice(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- if (sub_80B5054(v1, v2, v3, v4) == 1)
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 multichoiceId = ScriptReadByte(ctx);
+ u8 ignoreBPress = ScriptReadByte(ctx);
+
+ if (ScriptMenu_Multichoice(left, top, multichoiceId, ignoreBPress) == TRUE)
{
ScriptContext1_Stop();
return TRUE;
@@ -1228,14 +1307,15 @@ bool8 ScrCmd_multichoice(struct ScriptContext *ctx)
}
}
-bool8 ScrCmd_multichoicedef(struct ScriptContext *ctx)
+bool8 ScrCmd_multichoicedefault(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- u8 v5 = ScriptReadByte(ctx);
- if (sub_80B50B0(v1, v2, v3, v5, v4) == 1)
+ 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();
return TRUE;
@@ -1246,24 +1326,26 @@ bool8 ScrCmd_multichoicedef(struct ScriptContext *ctx)
}
}
-bool8 ScrCmd_showbox(struct ScriptContext *ctx)
+bool8 ScrCmd_drawbox(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- MenuDrawTextWindow(v1, v2, v3, v4);
+ 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 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- u8 v5 = ScriptReadByte(ctx);
- if (sub_80B5578(v1, v2, v3, v5, v4) == 1)
+ 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();
return TRUE;
@@ -1274,23 +1356,26 @@ bool8 ScrCmd_multichoicerow(struct ScriptContext *ctx)
}
}
-bool8 ScrCmd_hidebox(struct ScriptContext *ctx)
+bool8 ScrCmd_erasebox(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- MenuZeroFillWindowRect(v1, v2, v3, v4);
+ u8 left = ScriptReadByte(ctx);
+ u8 top = ScriptReadByte(ctx);
+ u8 right = ScriptReadByte(ctx);
+ u8 bottom = ScriptReadByte(ctx);
+
+ MenuZeroFillWindowRect(left, top, right, bottom);
return FALSE;
}
-bool8 ScrCmd_clearbox(struct ScriptContext *ctx)
+// unused
+bool8 ScrCmd_drawboxtext(struct ScriptContext *ctx)
{
- u8 v1 = ScriptReadByte(ctx);
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- if (Multichoice(v1, v2, v3, v4) == 1)
+ 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();
return TRUE;
@@ -1301,28 +1386,30 @@ bool8 ScrCmd_clearbox(struct ScriptContext *ctx)
}
}
-bool8 ScrCmd_showpokepic(struct ScriptContext *ctx)
+bool8 ScrCmd_drawpokepic(struct ScriptContext *ctx)
{
- u16 v1 = VarGet(ScriptReadHalfword(ctx));
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- sub_80B58C4(v1, v2, v3);
+ 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)
{
- void *func = picbox_close();
- if (!func)
- return FALSE;
+ bool8 (*func)(void) = ScriptMenu_GetPicboxWaitFunc();
+ if (func == NULL)
+ return FALSE;
SetupNativeScript(ctx, func);
return TRUE;
}
-bool8 ScrCmd_showcontestwinner(struct ScriptContext *ctx)
+bool8 ScrCmd_drawcontestwinner(struct ScriptContext *ctx)
{
u8 v1 = ScriptReadByte(ctx);
+
if (v1)
sub_8106630(v1);
ShowContestWinner();
@@ -1330,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];
@@ -1345,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);
@@ -1370,113 +1461,126 @@ 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 v3 = VarGet(ScriptReadHalfword(ctx));
- u8 v5 = ScriptReadByte(ctx);
- u16 v7 = VarGet(ScriptReadHalfword(ctx));
- u32 v8 = ScriptReadWord(ctx);
- u32 v9 = ScriptReadWord(ctx);
- u8 v10 = ScriptReadByte(ctx);
- gScriptResult = ScriptGiveMon(v3, v5, v7, v8, v9, v10);
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+ u8 level = ScriptReadByte(ctx);
+ u16 item = VarGet(ScriptReadHalfword(ctx));
+ u32 unkParam1 = ScriptReadWord(ctx);
+ u32 unkParam2 = ScriptReadWord(ctx);
+ u8 unkParam3 = ScriptReadByte(ctx);
+
+ gScriptResult = ScriptGiveMon(species, level, item, unkParam1, unkParam2, unkParam3);
return FALSE;
}
bool8 ScrCmd_giveegg(struct ScriptContext *ctx)
{
- u16 value = VarGet(ScriptReadHalfword(ctx));
- gScriptResult = ScriptGiveEgg(value);
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+
+ gScriptResult = ScriptGiveEgg(species);
return FALSE;
}
bool8 ScrCmd_setpokemove(struct ScriptContext *ctx)
{
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u16 v4 = ScriptReadHalfword(ctx);
- ScriptSetMonMoveSlot(v2, v4, v3);
+ 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++)
{
@@ -1498,17 +1602,19 @@ bool8 ScrCmd_givemoney(struct ScriptContext *ctx)
{
u32 amount = ScriptReadWord(ctx);
u8 ignore = ScriptReadByte(ctx);
+
if (!ignore)
- sub_80B79B8(&gSaveBlock1.money, amount);
+ 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)
- sub_80B79E0(&gSaveBlock1.money, amount);
+ RemoveMoney(&gSaveBlock1.money, amount);
return FALSE;
}
@@ -1516,120 +1622,131 @@ 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 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
+ u8 x = ScriptReadByte(ctx);
+ u8 y = ScriptReadByte(ctx);
u8 ignore = ScriptReadByte(ctx);
+
if (!ignore)
- sub_80B7C14(gSaveBlock1.money, v2, v3);
+ OpenMoneyWindow(gSaveBlock1.money, x, y);
return FALSE;
}
-bool8 ScrCmd_hidemoney(struct ScriptContext *ctx)
+bool8 ScrCmd_hidemoneybox(struct ScriptContext *ctx)
{
- u8 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- RemoveMoneyLabelObject(v2, v3);
+ 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)
- sub_80B7BEC(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;
}
bool8 ScrCmd_trainerbattle(struct ScriptContext *ctx)
{
- ctx->scriptPtr = TrainerBattleConfigure(ctx->scriptPtr);
+ ctx->scriptPtr = BattleSetup_ConfigureTrainerBattle(ctx->scriptPtr);
return FALSE;
}
-bool8 ScrCmd_reptrainerbattle(struct ScriptContext *ctx)
+bool8 ScrCmd_battlebegin(struct ScriptContext *ctx)
{
- sub_80825E4();
+ BattleSetup_StartTrainerBattle();
return TRUE;
}
-bool8 ScrCmd_endtrainerbattle(struct ScriptContext *ctx)
+bool8 ScrCmd_ontrainerbattleend(struct ScriptContext *ctx)
{
- ctx->scriptPtr = sub_80826E8();
+ ctx->scriptPtr = BattleSetup_GetScriptAddrAfterBattle();
return FALSE;
}
-bool8 ScrCmd_endtrainerbattle2(struct ScriptContext *ctx)
+bool8 ScrCmd_ontrainerbattleendgoto(struct ScriptContext *ctx)
{
- ctx->scriptPtr = sub_8082700();
+ ctx->scriptPtr = BattleSetup_GetTrainerPostBattleScript();
return FALSE;
}
bool8 ScrCmd_checktrainerflag(struct ScriptContext *ctx)
{
u16 index = VarGet(ScriptReadHalfword(ctx));
- ctx->comparisonResult = trainer_flag_check(index);
+
+ 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;
}
bool8 ScrCmd_setwildbattle(struct ScriptContext *ctx)
{
- u16 v2 = ScriptReadHalfword(ctx);
- u8 v4 = ScriptReadByte(ctx);
- u16 v5 = ScriptReadHalfword(ctx);
- ScriptWildBattle(v2, v4, v5);
+ u16 species = ScriptReadHalfword(ctx);
+ u8 level = ScriptReadByte(ctx);
+ u16 item = ScriptReadHalfword(ctx);
+
+ CreateScriptedWildMon(species, level, item);
return FALSE;
}
bool8 ScrCmd_dowildbattle(struct ScriptContext *ctx)
{
- StartBattle_ScriptedWild();
+ BattleSetup_StartScriptedWildBattle();
ScriptContext1_Stop();
return TRUE;
}
@@ -1637,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;
@@ -1645,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;
@@ -1653,34 +1772,38 @@ 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 v2 = ScriptReadByte(ctx);
- u8 v3 = ScriptReadByte(ctx);
- u8 v4 = ScriptReadByte(ctx);
- if (!v3)
- PlantBerryTree(v2, 0, v4, FALSE);
+ u8 treeId = ScriptReadByte(ctx);
+ u8 berry = ScriptReadByte(ctx);
+ u8 growthStage = ScriptReadByte(ctx);
+
+ if (berry == 0)
+ PlantBerryTree(treeId, 0, growthStage, FALSE);
else
- PlantBerryTree(v2, v3, v4, FALSE);
+ PlantBerryTree(treeId, berry, growthStage, FALSE);
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;
}
@@ -1713,54 +1836,58 @@ 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));
- gUnknown_0202E8BC = effectId;
- FieldEffectStart(gUnknown_0202E8BC);
+
+ sFieldEffectScriptId = effectId;
+ FieldEffectStart(sFieldEffectScriptId);
return FALSE;
}
-bool8 ScrCmd_setanimation(struct ScriptContext *ctx)
+bool8 ScrCmd_setfieldeffect(struct ScriptContext *ctx)
{
- u8 v2 = ScriptReadByte(ctx);
- gUnknown_0202FF84[v2] = (s16)VarGet(ScriptReadHalfword(ctx));
+ u8 argNum = ScriptReadByte(ctx);
+
+ gFieldEffectArguments[argNum] = (s16)VarGet(ScriptReadHalfword(ctx));
return FALSE;
}
static bool8 sub_8067B48()
{
- if (!FieldEffectActiveListContains(gUnknown_0202E8BC))
+ if (!FieldEffectActiveListContains(sFieldEffectScriptId))
return TRUE;
else
return FALSE;
}
-bool8 ScrCmd_checkanimation(struct ScriptContext *ctx)
+bool8 ScrCmd_waitfieldeffect(struct ScriptContext *ctx)
{
- gUnknown_0202E8BC = VarGet(ScriptReadHalfword(ctx));
+ sFieldEffectScriptId = VarGet(ScriptReadHalfword(ctx));
SetupNativeScript(ctx, sub_8067B48);
return TRUE;
}
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 v3 = VarGet(ScriptReadHalfword(ctx));
- u16 v5 = VarGet(ScriptReadHalfword(ctx));
- PlayCry5(v3, v5);
+ u16 species = VarGet(ScriptReadHalfword(ctx));
+ u16 mode = VarGet(ScriptReadHalfword(ctx));
+
+ PlayCry5(species, mode);
return FALSE;
}
@@ -1772,34 +1899,37 @@ bool8 ScrCmd_waitpokecry(struct ScriptContext *ctx)
bool8 ScrCmd_setmaptile(struct ScriptContext *ctx)
{
- u16 v3 = VarGet(ScriptReadHalfword(ctx));
- u16 v5 = VarGet(ScriptReadHalfword(ctx));
- u16 v7 = VarGet(ScriptReadHalfword(ctx));
+ u16 x = VarGet(ScriptReadHalfword(ctx));
+ u16 y = VarGet(ScriptReadHalfword(ctx));
+ u16 tileId = VarGet(ScriptReadHalfword(ctx));
u16 v8 = VarGet(ScriptReadHalfword(ctx));
- v3 += 7;
- v5 += 7;
+
+ x += 7;
+ y += 7;
if (!v8)
- MapGridSetMetatileIdAt(v3, v5, v7);
+ MapGridSetMetatileIdAt(x, y, tileId);
else
- MapGridSetMetatileIdAt(v3, v5, v7 | 0xC00);
+ MapGridSetMetatileIdAt(x, y, tileId | 0xC00);
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(sub_8058790(x, y));
+ PlaySE(GetDoorSoundEffect(x, y));
FieldAnimateDoorOpen(x, y);
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);
@@ -1814,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();
@@ -1867,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/field/script_menu.c b/src/field/script_menu.c
new file mode 100644
index 000000000..e25e74d8c
--- /dev/null
+++ b/src/field/script_menu.c
@@ -0,0 +1,1178 @@
+#include "global.h"
+#include "script.h"
+#include "script_menu.h"
+#include "event_data.h"
+#include "field_effect.h"
+#include "menu.h"
+#include "palette.h"
+#include "script.h"
+#include "songs.h"
+#include "sound.h"
+#include "sprite.h"
+#include "strings.h"
+#include "task.h"
+
+// multichoice lists
+const struct MenuAction MultichoiceList_00[] =
+{
+ {OtherText_Petalburg, NULL},
+ {OtherText_Slateport, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_02[] =
+{
+ {OtherText_Enter, NULL},
+ {OtherText_Info3, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_03[] =
+{
+ {OtherText_WhatsAContest, NULL},
+ {OtherText_TypesOfContest, NULL},
+ {OtherText_Ranks, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_04[] =
+{
+ {OtherText_CoolContest, NULL},
+ {OtherText_BeautyContest, NULL},
+ {OtherText_CuteContest, NULL},
+ {OtherText_SmartContest, NULL},
+ {OtherText_ToughContest, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_06[] =
+{
+ {OtherText_Decoration, NULL},
+ {OtherText_PackUp, NULL},
+ {OtherText_Registry, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_05[] =
+{
+ {OtherText_Decoration, NULL},
+ {OtherText_PackUp, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_07[] =
+{
+ {OtherText_Register, NULL},
+ {OtherText_Registry, NULL},
+ {OtherText_Information, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_12[] =
+{
+ {OtherText_Mach, NULL},
+ {OtherText_Acro, NULL},
+};
+
+const struct MenuAction MultichoiceList_13[] =
+{
+ {OtherText_Poison, NULL},
+ {OtherText_Paralysis, NULL},
+ {OtherText_Sleep, NULL},
+ {OtherText_Burn, NULL},
+ {OtherText_Frozen, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_14[] =
+{
+ {OtherText_Dewford, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_16[] =
+{
+ {OtherText_SawIt, NULL},
+ {OtherText_NotYet, NULL},
+};
+
+const struct MenuAction MultichoiceList_17[] =
+{
+ {OtherText_Yes, NULL},
+ {OtherText_No, NULL},
+ {OtherText_Info3, NULL},
+};
+
+const struct MenuAction MultichoiceList_18[] =
+{
+ {OtherText_SingleBattle, NULL},
+ {OtherText_DoubleBattle, NULL},
+ {OtherText_MultiBattle, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_19[] =
+{
+ {OtherText_Littleroot, NULL},
+ {OtherText_Slateport, NULL},
+ {OtherText_Lilycove, NULL},
+};
+
+const struct MenuAction MultichoiceList_20[] =
+{
+ {OtherText_Yes, NULL},
+ {OtherText_No, NULL},
+ {OtherText_Info3, NULL},
+};
+
+const struct MenuAction MultichoiceList_23[] =
+{
+ {OtherText_MakeAChallenge, NULL},
+ {OtherText_ObtainInformation, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_24[] =
+{
+ {OtherText_Lv50_2, NULL},
+ {OtherText_Lv100_2, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_25[] =
+{
+ {OtherText_Zigzagoon, NULL},
+ {OtherText_Nincada, NULL},
+ {OtherText_Poochyena, NULL},
+};
+
+const struct MenuAction MultichoiceList_26[] =
+{
+ {OtherText_Nincada2, NULL},
+ {OtherText_Lotad, NULL},
+ {OtherText_Roselia, NULL},
+};
+
+const struct MenuAction MultichoiceList_27[] =
+{
+ {OtherText_Shroomish, NULL},
+ {OtherText_Nincada3, NULL},
+ {OtherText_Surskit, NULL},
+};
+
+const struct MenuAction MultichoiceList_28[] =
+{
+ {OtherText_Treecko, NULL},
+ {OtherText_Torchic, NULL},
+ {OtherText_Mudkip, NULL},
+};
+
+const struct MenuAction MultichoiceList_29[] =
+{
+ {OtherText_Seedot, NULL},
+ {OtherText_Shroomish2, NULL},
+ {OtherText_Spinda, NULL},
+};
+
+const struct MenuAction MultichoiceList_30[] =
+{
+ {OtherText_Shroomish3, NULL},
+ {OtherText_Zigzagoon2, NULL},
+ {OtherText_Wurmple, NULL},
+};
+
+const struct MenuAction MultichoiceList_31[] =
+{
+ {OtherText_PokeBall, NULL},
+ {OtherText_SuperPotion, NULL},
+ {OtherText_SamePrice, NULL},
+};
+
+const struct MenuAction MultichoiceList_32[] =
+{
+ {OtherText_Yen135, NULL},
+ {OtherText_Yen155, NULL},
+ {OtherText_Yen175, NULL},
+};
+
+const struct MenuAction MultichoiceList_33[] =
+{
+ {OtherText_CostMore, NULL},
+ {OtherText_CostLess, NULL},
+ {OtherText_SamePrice2, NULL},
+};
+
+const struct MenuAction MultichoiceList_34[] =
+{
+ {OtherText_MaleSymbol, NULL},
+ {OtherText_FemaleSymbol, NULL},
+ {OtherText_Neither, NULL},
+};
+
+const struct MenuAction MultichoiceList_35[] =
+{
+ {OtherText_Males, NULL},
+ {OtherText_Females, NULL},
+ {OtherText_SameNumber, NULL},
+};
+
+const struct MenuAction MultichoiceList_36[] =
+{
+ {OtherText_Male, NULL},
+ {OtherText_Female, NULL},
+ {OtherText_ItDepends, NULL},
+};
+
+const struct MenuAction MultichoiceList_37[] =
+{
+ {OtherText_Six2, NULL},
+ {OtherText_Eight2, NULL},
+ {OtherText_Ten, NULL},
+};
+
+const struct MenuAction MultichoiceList_38[] =
+{
+ {OtherText_One, NULL},
+ {OtherText_Two, NULL},
+ {OtherText_Three, NULL},
+};
+
+const struct MenuAction MultichoiceList_39[] =
+{
+ {OtherText_Six, NULL},
+ {OtherText_Seven, NULL},
+ {OtherText_Eight, NULL},
+};
+
+const struct MenuAction MultichoiceList_42[] =
+{
+ {OtherText_FreshWater, NULL},
+ {OtherText_SodaPop, NULL},
+ {OtherText_Lemonade, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_43[] =
+{
+ {OtherText_HowToRide, NULL},
+ {OtherText_HowToTurn, NULL},
+ {OtherText_SandySlopes, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_44[] =
+{
+ {OtherText_Wheelies, NULL},
+ {OtherText_BunnyHops, NULL},
+ {OtherText_Jumping, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_45[] =
+{
+ {OtherText_Satisfied, NULL},
+ {OtherText_Dissatisfied, NULL},
+};
+
+const struct MenuAction MultichoiceList_46[] =
+{
+ {OtherText_Deepseatooth, NULL},
+ {OtherText_Deepseascale, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_47[] =
+{
+ {OtherText_BlueFlute2, NULL},
+ {OtherText_YellowFlute2, NULL},
+ {OtherText_RedFlute2, NULL},
+ {OtherText_WhiteFlute2, NULL},
+ {OtherText_BlackFlute2, NULL},
+ {OtherText_GlassChair, NULL},
+ {OtherText_GlassDesk, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_48[] =
+{
+ {OtherText_TreeckoDoll, NULL},
+ {OtherText_TorchicDoll, NULL},
+ {OtherText_MudkipDoll, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_55[] =
+{
+ {OtherText_TM32, NULL},
+ {OtherText_TM29, NULL},
+ {OtherText_TM35, NULL},
+ {OtherText_TM24, NULL},
+ {OtherText_TM13, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_49[] =
+{
+ {OtherText_50Coins, NULL},
+ {OtherText_500Coins, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_50[] =
+{
+ {OtherText_Excellent, NULL},
+ {OtherText_NotSoHot, NULL},
+};
+
+const struct MenuAction MultichoiceList_52[] =
+{
+ {OtherText_Lilycove, NULL},
+ {OtherText_BattleTower, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_53[] =
+{
+ {OtherText_Slateport, NULL},
+ {OtherText_Lilycove, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_54[] =
+{
+ {OtherText_Right, NULL},
+ {OtherText_Left, NULL},
+};
+
+const struct MenuAction MultichoiceList_56[] =
+{
+ {OtherText_Slateport, NULL},
+ {OtherText_BattleTower, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_57[] =
+{
+ {OtherText_1F_2, NULL},
+ {OtherText_2F_2, NULL},
+ {OtherText_3F_2, NULL},
+ {OtherText_4F_2, NULL},
+ {OtherText_5F_2, NULL},
+};
+
+const struct MenuAction MultichoiceList_58[] =
+{
+ {OtherText_RedShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_59[] =
+{
+ {OtherText_YellowShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_60[] =
+{
+ {OtherText_RedShard, NULL},
+ {OtherText_YellowShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_61[] =
+{
+ {OtherText_BlueShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_62[] =
+{
+ {OtherText_RedShard, NULL},
+ {OtherText_BlueShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_63[] =
+{
+ {OtherText_YellowShard, NULL},
+ {OtherText_BlueShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_64[] =
+{
+ {OtherText_RedShard, NULL},
+ {OtherText_YellowShard, NULL},
+ {OtherText_BlueShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_65[] =
+{
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_66[] =
+{
+ {OtherText_RedShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_67[] =
+{
+ {OtherText_YellowShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_68[] =
+{
+ {OtherText_RedShard, NULL},
+ {OtherText_YellowShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_69[] =
+{
+ {OtherText_BlueShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_70[] =
+{
+ {OtherText_RedShard, NULL},
+ {OtherText_BlueShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_71[] =
+{
+ {OtherText_YellowShard, NULL},
+ {OtherText_BlueShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_72[] =
+{
+ {OtherText_RedShard, NULL},
+ {OtherText_YellowShard, NULL},
+ {OtherText_BlueShard, NULL},
+ {OtherText_GreenShard, NULL},
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+const struct MenuAction MultichoiceList_01[] =
+{
+ {gOtherText_CancelNoTerminator, NULL},
+};
+
+struct MultichoiceListStruct
+{
+ const struct MenuAction *list;
+ u8 count;
+};
+
+const struct MultichoiceListStruct gMultichoiceLists[] =
+{
+ {MultichoiceList_00, ARRAY_COUNT(MultichoiceList_00)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_02, ARRAY_COUNT(MultichoiceList_02)},
+ {MultichoiceList_03, ARRAY_COUNT(MultichoiceList_03)},
+ {MultichoiceList_04, ARRAY_COUNT(MultichoiceList_04)},
+ {MultichoiceList_05, ARRAY_COUNT(MultichoiceList_05)},
+ {MultichoiceList_06, ARRAY_COUNT(MultichoiceList_06)},
+ {MultichoiceList_07, ARRAY_COUNT(MultichoiceList_07)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_12, ARRAY_COUNT(MultichoiceList_12)},
+ {MultichoiceList_13, ARRAY_COUNT(MultichoiceList_13)},
+ {MultichoiceList_14, ARRAY_COUNT(MultichoiceList_14)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_16, ARRAY_COUNT(MultichoiceList_16)},
+ {MultichoiceList_17, ARRAY_COUNT(MultichoiceList_17)},
+ {MultichoiceList_18, ARRAY_COUNT(MultichoiceList_18)},
+ {MultichoiceList_19, ARRAY_COUNT(MultichoiceList_19)},
+ {MultichoiceList_20, ARRAY_COUNT(MultichoiceList_20)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_23, ARRAY_COUNT(MultichoiceList_23)},
+ {MultichoiceList_24, ARRAY_COUNT(MultichoiceList_24)},
+ {MultichoiceList_25, ARRAY_COUNT(MultichoiceList_25)},
+ {MultichoiceList_26, ARRAY_COUNT(MultichoiceList_26)},
+ {MultichoiceList_27, ARRAY_COUNT(MultichoiceList_27)},
+ {MultichoiceList_28, ARRAY_COUNT(MultichoiceList_28)},
+ {MultichoiceList_29, ARRAY_COUNT(MultichoiceList_29)},
+ {MultichoiceList_30, ARRAY_COUNT(MultichoiceList_30)},
+ {MultichoiceList_31, ARRAY_COUNT(MultichoiceList_31)},
+ {MultichoiceList_32, ARRAY_COUNT(MultichoiceList_32)},
+ {MultichoiceList_33, ARRAY_COUNT(MultichoiceList_33)},
+ {MultichoiceList_34, ARRAY_COUNT(MultichoiceList_34)},
+ {MultichoiceList_35, ARRAY_COUNT(MultichoiceList_35)},
+ {MultichoiceList_36, ARRAY_COUNT(MultichoiceList_36)},
+ {MultichoiceList_37, ARRAY_COUNT(MultichoiceList_37)},
+ {MultichoiceList_38, ARRAY_COUNT(MultichoiceList_38)},
+ {MultichoiceList_39, ARRAY_COUNT(MultichoiceList_39)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_42, ARRAY_COUNT(MultichoiceList_42)},
+ {MultichoiceList_43, ARRAY_COUNT(MultichoiceList_43)},
+ {MultichoiceList_44, ARRAY_COUNT(MultichoiceList_44)},
+ {MultichoiceList_45, ARRAY_COUNT(MultichoiceList_45)},
+ {MultichoiceList_46, ARRAY_COUNT(MultichoiceList_46)},
+ {MultichoiceList_47, ARRAY_COUNT(MultichoiceList_47)},
+ {MultichoiceList_48, ARRAY_COUNT(MultichoiceList_48)},
+ {MultichoiceList_49, ARRAY_COUNT(MultichoiceList_49)},
+ {MultichoiceList_50, ARRAY_COUNT(MultichoiceList_50)},
+ {MultichoiceList_01, ARRAY_COUNT(MultichoiceList_01)},
+ {MultichoiceList_52, ARRAY_COUNT(MultichoiceList_52)},
+ {MultichoiceList_53, ARRAY_COUNT(MultichoiceList_53)},
+ {MultichoiceList_54, ARRAY_COUNT(MultichoiceList_54)},
+ {MultichoiceList_55, ARRAY_COUNT(MultichoiceList_55)},
+ {MultichoiceList_56, ARRAY_COUNT(MultichoiceList_56)},
+ {MultichoiceList_57, ARRAY_COUNT(MultichoiceList_57)},
+ {MultichoiceList_58, ARRAY_COUNT(MultichoiceList_58)},
+ {MultichoiceList_59, ARRAY_COUNT(MultichoiceList_59)},
+ {MultichoiceList_60, ARRAY_COUNT(MultichoiceList_60)},
+ {MultichoiceList_61, ARRAY_COUNT(MultichoiceList_61)},
+ {MultichoiceList_62, ARRAY_COUNT(MultichoiceList_62)},
+ {MultichoiceList_63, ARRAY_COUNT(MultichoiceList_63)},
+ {MultichoiceList_64, ARRAY_COUNT(MultichoiceList_64)},
+ {MultichoiceList_65, ARRAY_COUNT(MultichoiceList_65)},
+ {MultichoiceList_66, ARRAY_COUNT(MultichoiceList_66)},
+ {MultichoiceList_67, ARRAY_COUNT(MultichoiceList_67)},
+ {MultichoiceList_68, ARRAY_COUNT(MultichoiceList_68)},
+ {MultichoiceList_69, ARRAY_COUNT(MultichoiceList_69)},
+ {MultichoiceList_70, ARRAY_COUNT(MultichoiceList_70)},
+ {MultichoiceList_71, ARRAY_COUNT(MultichoiceList_71)},
+ {MultichoiceList_72, ARRAY_COUNT(MultichoiceList_72)},
+};
+
+const u8 *const gUnknown_083CE048[] =
+{
+ OtherText_Cool2,
+ OtherText_Beauty3,
+ OtherText_Cute2,
+ OtherText_Smart2,
+ OtherText_Tough2,
+ OtherText_Normal,
+ OtherText_Super,
+ OtherText_Hyper,
+ OtherText_Master,
+ OtherText_Cool3,
+ OtherText_Beauty4,
+ OtherText_Cute3,
+ OtherText_Smart3,
+ OtherText_Tough3,
+ OtherText_Items,
+ OtherText_KeyItems,
+ OtherText_Balls,
+ OtherText_TMsHMs,
+ OtherText_Berries,
+};
+
+extern u8 gPCText_WhichPCShouldBeAccessed[];
+
+extern u16 gScriptResult;
+
+static void Task_HandleMultichoiceInput(u8);
+static void Task_HandleYesNoInput(u8);
+static void Task_HandleMultichoiceGridInput(u8);
+static u16 GetStringWidthInTilesForScriptMenu(const u8 *str);
+static void DrawMultichoiceMenu(u8, u8, u8, const struct MenuAction *list, u8, u8);
+static void StartScriptMenuTask(u8, u8, u8, u8, u8, u8);
+static void sub_80B53B4(u8, u8, u8, const struct MenuAction *list, u8);
+static bool8 IsPicboxClosed(void);
+
+bool8 ScriptMenu_Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress)
+{
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gScriptResult = 0xFF;
+ DrawMultichoiceMenu(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress, 0);
+ return TRUE;
+ }
+}
+
+bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 defaultChoice)
+{
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gScriptResult = 0xFF;
+ DrawMultichoiceMenu(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress, defaultChoice);
+ return TRUE;
+ }
+}
+
+static u16 GetStringWidthInTilesForScriptMenu(const u8 *str)
+{
+ // each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8.
+ return (GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6CE4, str) + 7) / 8;
+}
+
+static void DrawMultichoiceMenu(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress, u8 cursorPos)
+{
+ u16 width = GetStringWidthInTilesForScriptMenu(list[0].text);
+ u16 newWidth;
+ u8 i;
+ u8 right;
+ u8 bottom;
+
+ for (i = 1; i < count; i++)
+ {
+ newWidth = GetStringWidthInTilesForScriptMenu(list[i].text);
+ if (width < newWidth)
+ width = newWidth;
+ }
+
+ right = width;
+ right = (right + left) + 1;
+
+ if (right > 29)
+ {
+ left = left + (29 - right);
+ right = 29;
+ }
+
+ bottom = top + (2 * count + 1);
+
+ MenuDrawTextWindow(left, top, right, bottom);
+ PrintMenuItems(left + 1, top + 1, count, list);
+ InitMenu(0, left + 1, top + 1, count, cursorPos, right - left - 1);
+ StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count);
+}
+
+#define tLeft data[0]
+#define tTop data[1]
+#define tRight data[2]
+#define tBottom data[3]
+#define tIgnoreBPress data[4]
+#define tDoWrap data[5]
+
+static void StartScriptMenuTask(u8 left, u8 top, u8 right, u8 bottom, u8 ignoreBPress, u8 count)
+{
+ u8 taskId = CreateTask(Task_HandleMultichoiceInput, 80);
+
+ gTasks[taskId].tLeft = left;
+ gTasks[taskId].tTop = top;
+ gTasks[taskId].tRight = right;
+ gTasks[taskId].tBottom = bottom;
+ gTasks[taskId].tIgnoreBPress = ignoreBPress;
+
+ if (count > 3)
+ gTasks[taskId].tDoWrap = TRUE;
+ else
+ gTasks[taskId].tDoWrap = FALSE;
+}
+
+static void Task_HandleMultichoiceInput(u8 taskId)
+{
+ s8 selection;
+
+ if (!gPaletteFade.active)
+ {
+ if (!gTasks[taskId].tDoWrap)
+ selection = ProcessMenuInputNoWrap();
+ else
+ selection = ProcessMenuInput();
+
+ if (selection != -2)
+ {
+ if (selection == -1)
+ {
+ if (gTasks[taskId].tIgnoreBPress)
+ return;
+ PlaySE(SE_SELECT);
+ gScriptResult = 127;
+ }
+ else
+ {
+ gScriptResult = selection;
+ }
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+ }
+}
+
+bool8 Multichoice(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress)
+{
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gScriptResult = 0xFF;
+ sub_80B53B4(left, top, gMultichoiceLists[multichoiceId].count, gMultichoiceLists[multichoiceId].list, ignoreBPress);
+ return TRUE;
+ }
+}
+
+static void sub_80B53B4(u8 left, u8 top, u8 count, const struct MenuAction *list, u8 ignoreBPress)
+{
+ u16 width = GetStringWidthInTilesForScriptMenu(list[0].text);
+ u16 newWidth;
+ u8 i;
+ u8 right;
+ u8 bottom;
+
+ for (i = 1; i < count; i++)
+ {
+ newWidth = GetStringWidthInTilesForScriptMenu(list[i].text);
+ if (width < newWidth)
+ width = newWidth;
+ }
+
+ right = width;
+ right = (right + left) + 2;
+ bottom = top + (2 * count + 1);
+
+ PrintMenuItems(left, top, count, list);
+ InitMenu(0, left, top, count, 0, right - left - 1);
+ StartScriptMenuTask(left, top, right, bottom, ignoreBPress, count);
+}
+
+bool8 ScriptMenu_YesNo(u8 left, u8 top)
+{
+ u8 taskId;
+
+ if (FuncIsActiveTask(Task_HandleYesNoInput) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gScriptResult = 0xFF;
+ DisplayYesNoMenu(left, top, 1);
+ taskId = CreateTask(Task_HandleYesNoInput, 0x50);
+ gTasks[taskId].tLeft = left;
+ gTasks[taskId].tTop = top;
+ return TRUE;
+ }
+}
+
+// unused
+bool8 IsScriptActive(void)
+{
+ if (gScriptResult == 0xFF)
+ return FALSE;
+ else
+ return TRUE;
+}
+
+static void Task_HandleYesNoInput(u8 taskId)
+{
+ u8 left, top;
+
+ if (gTasks[taskId].tRight < 5)
+ {
+ gTasks[taskId].tRight++;
+ return;
+ }
+
+ switch (ProcessMenuInputNoWrap())
+ {
+ case -2:
+ return;
+ case -1:
+ case 1:
+ PlaySE(SE_SELECT);
+ gScriptResult = 0;
+ break;
+ case 0:
+ gScriptResult = 1;
+ break;
+ }
+
+ left = gTasks[taskId].tLeft;
+ top = gTasks[taskId].tTop;
+
+ MenuZeroFillWindowRect(left, top, left + 6, top + 5);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+}
+
+bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 ignoreBPress, u8 columnCount)
+{
+ u8 bottom = 0;
+
+ if (FuncIsActiveTask(Task_HandleMultichoiceGridInput) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ u8 taskId;
+ u8 width;
+
+ gScriptResult = 0xFF;
+
+ sub_807274C(left, top, gMultichoiceLists[multichoiceId].count, 0, gMultichoiceLists[multichoiceId].list, columnCount, 0);
+
+ taskId = CreateTask(Task_HandleMultichoiceGridInput, 80);
+
+ if (!((gMultichoiceLists[multichoiceId].count >> 1) < columnCount || (gMultichoiceLists[multichoiceId].count & 1))
+ || columnCount == 1 || gMultichoiceLists[multichoiceId].count == columnCount)
+ {
+ bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 1 + top;
+ }
+ else
+ {
+ bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 3 + top;
+ }
+
+ width = sub_807288C(columnCount);
+ gTasks[taskId].tLeft = left;
+ gTasks[taskId].tTop = top;
+ gTasks[taskId].tRight = width + left + 2;
+ gTasks[taskId].tBottom = bottom;
+ gTasks[taskId].tIgnoreBPress = ignoreBPress;
+ return TRUE;
+ }
+}
+
+static void Task_HandleMultichoiceGridInput(u8 taskId)
+{
+ s8 selection = sub_80727CC();
+
+ if (selection != -2)
+ {
+ if (selection == -1)
+ {
+ if (gTasks[taskId].tIgnoreBPress)
+ return;
+ PlaySE(SE_SELECT);
+ gScriptResult = 127;
+ }
+ else
+ {
+ gScriptResult = selection;
+ }
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(gTasks[taskId].tLeft, gTasks[taskId].tTop, gTasks[taskId].tRight, gTasks[taskId].tBottom);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+ }
+}
+
+#undef tLeft
+#undef tTop
+#undef tRight
+#undef tBottom
+#undef tIgnoreBPress
+#undef tDoWrap
+
+bool8 ScrSpecial_CreatePCMenu(void)
+{
+ if (FuncIsActiveTask(Task_HandleMultichoiceInput) == TRUE)
+ {
+ return FALSE;
+ }
+ else
+ {
+ gScriptResult = 0xFF;
+ ScriptMenu_CreatePCMenu();
+ return TRUE;
+ }
+}
+
+#if ENGLISH
+void ScriptMenu_CreatePCMenu(void)
+{
+ u16 playersPCWidth = GetStringWidthInTilesForScriptMenu(gPCText_PlayersPC);
+ u8 width;
+ u8 numChoices;
+
+ if (playersPCWidth > GetStringWidthInTilesForScriptMenu(gPCText_SomeonesPC))
+ width = playersPCWidth;
+ else
+ width = 8;
+
+ if (FlagGet(SYS_GAME_CLEAR)) // player has cleared game?
+ {
+ numChoices = 4;
+ MenuDrawTextWindow(0, 0, width + 2, 9);
+ MenuPrint(gPCText_HallOfFame, 1, 5);
+ MenuPrint(gPCText_LogOff, 1, 7);
+ }
+ else
+ {
+ numChoices = 3;
+ MenuDrawTextWindow(0, 0, width + 2, 7);
+ MenuPrint(gPCText_LogOff, 1, 5);
+ }
+
+ if (FlagGet(SYS_PC_LANETTE)) // player met lanette?
+ MenuPrint(gPCText_LanettesPC, 1, 1);
+ else
+ MenuPrint(gPCText_SomeonesPC, 1, 1);
+
+ MenuPrint(gPCText_PlayersPC, 1, 3);
+ InitMenu(0, 1, 1, numChoices, 0, width + 1);
+ StartScriptMenuTask(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices);
+}
+#elif GERMAN
+__attribute__((naked))
+void ScriptMenu_CreatePCMenu(void) {
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ sub sp, 0x18\n\
+ ldr r0, _080B5748 @ =0x0000084b\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080B5750\n\
+ ldr r0, _080B574C @ =gPCText_LanettesPC\n\
+ b _080B5752\n\
+ .align 2, 0\n\
+_080B5748: .4byte 0x0000084b\n\
+_080B574C: .4byte gPCText_LanettesPC\n\
+_080B5750:\n\
+ ldr r0, _080B57E8 @ =gPCText_SomeonesPC\n\
+_080B5752:\n\
+ bl GetStringWidthInTilesForScriptMenu\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x8]\n\
+ movs r4, 0x1\n\
+ ldr r0, _080B57EC @ =gPCText_PlayersPC\n\
+ bl GetStringWidthInTilesForScriptMenu\n\
+ lsls r1, r4, 2\n\
+ add r1, sp\n\
+ adds r1, 0x8\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [r1]\n\
+ ldr r0, _080B57F0 @ =gPCText_LogOff\n\
+ bl GetStringWidthInTilesForScriptMenu\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x10]\n\
+ movs r4, 0x3\n\
+ ldr r0, _080B57F4 @ =0x00000804\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080B5798\n\
+ ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\
+ bl GetStringWidthInTilesForScriptMenu\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x14]\n\
+ movs r4, 0x4\n\
+_080B5798:\n\
+ movs r5, 0\n\
+ cmp r5, r4\n\
+ bge _080B57B4\n\
+ add r2, sp, 0x8\n\
+ adds r1, r4, 0\n\
+_080B57A2:\n\
+ ldr r0, [r2]\n\
+ cmp r5, r0\n\
+ bge _080B57AC\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+_080B57AC:\n\
+ adds r2, 0x4\n\
+ subs r1, 0x1\n\
+ cmp r1, 0\n\
+ bne _080B57A2\n\
+_080B57B4:\n\
+ ldr r0, _080B57F4 @ =0x00000804\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080B57FC\n\
+ movs r7, 0x4\n\
+ adds r4, r5, 0x2\n\
+ lsls r2, r4, 24\n\
+ lsrs r2, 24\n\
+ movs r0, 0\n\
+ movs r1, 0\n\
+ movs r3, 0x9\n\
+ bl MenuDrawTextWindow\n\
+ ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\
+ movs r1, 0x1\n\
+ movs r2, 0x5\n\
+ bl MenuPrint\n\
+ ldr r0, _080B57F0 @ =gPCText_LogOff\n\
+ movs r1, 0x1\n\
+ movs r2, 0x7\n\
+ bl MenuPrint\n\
+ b _080B5818\n\
+ .align 2, 0\n\
+_080B57E8: .4byte gPCText_SomeonesPC\n\
+_080B57EC: .4byte gPCText_PlayersPC\n\
+_080B57F0: .4byte gPCText_LogOff\n\
+_080B57F4: .4byte 0x00000804\n\
+_080B57F8: .4byte gPCText_HallOfFame\n\
+_080B57FC:\n\
+ movs r7, 0x3\n\
+ adds r4, r5, 0x2\n\
+ lsls r2, r4, 24\n\
+ lsrs r2, 24\n\
+ movs r0, 0\n\
+ movs r1, 0\n\
+ movs r3, 0x7\n\
+ bl MenuDrawTextWindow\n\
+ ldr r0, _080B5834 @ =gPCText_LogOff\n\
+ movs r1, 0x1\n\
+ movs r2, 0x5\n\
+ bl MenuPrint\n\
+_080B5818:\n\
+ adds r6, r4, 0\n\
+ ldr r0, _080B5838 @ =0x0000084b\n\
+ bl FlagGet\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _080B5840\n\
+ ldr r0, _080B583C @ =gPCText_LanettesPC\n\
+ movs r1, 0x1\n\
+ movs r2, 0x1\n\
+ bl MenuPrint\n\
+ b _080B584A\n\
+ .align 2, 0\n\
+_080B5834: .4byte gPCText_LogOff\n\
+_080B5838: .4byte 0x0000084b\n\
+_080B583C: .4byte gPCText_LanettesPC\n\
+_080B5840:\n\
+ ldr r0, _080B5888 @ =gPCText_SomeonesPC\n\
+ movs r1, 0x1\n\
+ movs r2, 0x1\n\
+ bl MenuPrint\n\
+_080B584A:\n\
+ ldr r0, _080B588C @ =gPCText_PlayersPC\n\
+ movs r1, 0x1\n\
+ movs r2, 0x3\n\
+ bl MenuPrint\n\
+ movs r4, 0\n\
+ str r4, [sp]\n\
+ adds r0, r5, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ str r0, [sp, 0x4]\n\
+ movs r0, 0\n\
+ movs r1, 0x1\n\
+ movs r2, 0x1\n\
+ adds r3, r7, 0\n\
+ bl InitMenu\n\
+ lsls r2, r6, 24\n\
+ lsrs r2, 24\n\
+ lsls r3, r7, 1\n\
+ adds r3, 0x1\n\
+ str r4, [sp]\n\
+ str r7, [sp, 0x4]\n\
+ movs r0, 0\n\
+ movs r1, 0\n\
+ bl StartScriptMenuTask\n\
+ add sp, 0x18\n\
+ pop {r4-r7}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_080B5888: .4byte gPCText_SomeonesPC\n\
+_080B588C: .4byte gPCText_PlayersPC\n\
+ .syntax divided\n");
+}
+#endif
+
+void ScriptMenu_DisplayPCStartupPrompt(void)
+{
+ MenuDisplayMessageBox();
+ MenuPrint(gPCText_WhichPCShouldBeAccessed, 2, 15);
+}
+
+#define tState data[0]
+#define tMonSpecies data[1]
+#define tMonSpriteId data[2]
+#define tWindowX data[3]
+#define tWindowY data[4]
+
+static void Task_PokemonPicWindow(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+
+ switch (task->tState)
+ {
+ case 0:
+ task->tState++;
+ break;
+ case 1:
+ break;
+ case 2:
+ FreeResourcesAndDestroySprite(&gSprites[task->tMonSpriteId]);
+ task->tState++;
+ break;
+ case 3:
+ MenuZeroFillWindowRect(task->tWindowX, task->tWindowY, task->tWindowX + 9, task->tWindowY + 10);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y)
+{
+ u8 taskId;
+ u8 spriteId;
+
+ if (FindTaskIdByFunc(Task_PokemonPicWindow) != 0xFF)
+ {
+ return FALSE;
+ }
+ else
+ {
+ MenuDrawTextWindow(x, y, x + 9, y + 10);
+ taskId = CreateTask(Task_PokemonPicWindow, 0x50);
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tMonSpecies = species;
+ spriteId = CreateMonSprite_PicBox(species, x * 8 + 40, y * 8 + 40, 0);
+ gTasks[taskId].tMonSpriteId = spriteId;
+ gTasks[taskId].tWindowX = x;
+ gTasks[taskId].tWindowY = y;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[spriteId].oam.priority = 0;
+ return TRUE;
+ }
+}
+
+bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void)
+{
+ u8 taskId = FindTaskIdByFunc(Task_PokemonPicWindow);
+
+ if (taskId == 0xFF)
+ return NULL;
+ gTasks[taskId].tState++;
+ return IsPicboxClosed;
+}
+
+static bool8 IsPicboxClosed(void)
+{
+ if (FindTaskIdByFunc(Task_PokemonPicWindow) == 0xFF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+#undef tState
+#undef tMonSpecies
+#undef tMonSpriteId
+#undef tWindowX
+#undef tWindowY
diff --git a/src/script_movement.c b/src/field/script_movement.c
index e25b60a3c..30e10b451 100644
--- a/src/script_movement.c
+++ b/src/field/script_movement.c
@@ -13,33 +13,33 @@ static bool8 sub_80A21F4(u8, u8, u8 *);
static u8 sub_80A2260(u8, u8);
static bool8 sub_80A2370(u8, u8);
static void sub_80A23C8(u8, u8, u8, u8 *);
-static void sub_80A2408(u8);
+static void UnfreezeObjects(u8);
static void Task_80A244C(u8);
static void sub_80A2490(u8, u8, u8, u8 *);
-bool8 exec_movement(u8 a, u8 b, u8 c, u8 *d)
+bool8 ScriptMovement_StartObjectMovementScript(u8 localId, u8 mapNum, u8 mapGroup, u8 *movementScript)
{
u8 mapObjId;
- if (TryGetFieldObjectIdByLocalIdAndMap(a, b, c, &mapObjId))
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapGroup, &mapObjId))
return TRUE;
if (!FuncIsActiveTask(Task_80A244C))
sub_80A2198(50);
- return sub_80A21F4(sub_80A21E0(), mapObjId, d);
+ return sub_80A21F4(sub_80A21E0(), mapObjId, movementScript);
}
-bool8 sub_80A212C(u8 a, u8 b, u8 c)
+bool8 ScriptMovement_IsObjectMovementFinished(u8 localId, u8 mapNum, u8 mapBank)
{
u8 mapObjId;
u8 r4;
u8 r1;
- if (TryGetFieldObjectIdByLocalIdAndMap(a, b, c, &mapObjId))
- return 1;
+ if (TryGetFieldObjectIdByLocalIdAndMap(localId, mapNum, mapBank, &mapObjId))
+ return TRUE;
r4 = sub_80A21E0();
r1 = sub_80A2260(r4, mapObjId);
if (r1 == 16)
- return 1;
+ return TRUE;
return sub_80A2370(r4, r1);
}
@@ -50,7 +50,7 @@ void sub_80A2178(void)
taskId = sub_80A21E0();
if (taskId != 0xFF)
{
- sub_80A2408(taskId);
+ UnfreezeObjects(taskId);
DestroyTask(taskId);
}
}
@@ -70,27 +70,31 @@ static u8 sub_80A21E0(void)
return FindTaskIdByFunc(Task_80A244C);
}
-static bool8 sub_80A21F4(u8 taskId, u8 b, u8 *c)
+static bool8 sub_80A21F4(u8 taskId, u8 mapObjId, u8 *movementScript)
{
u8 r4;
- r4 = sub_80A2260(taskId, b);
+ r4 = sub_80A2260(taskId, mapObjId);
if (r4 != 16)
{
if (sub_80A2370(taskId, r4) == 0)
+ {
return TRUE;
+ }
else
{
- sub_80A23C8(taskId, r4, b, c);
+ sub_80A23C8(taskId, r4, mapObjId, movementScript);
return FALSE;
}
}
r4 = sub_80A2260(taskId, 0xFF);
if (r4 == 16)
+ {
return TRUE;
+ }
else
{
- sub_80A23C8(taskId, r4, b, c);
+ sub_80A23C8(taskId, r4, mapObjId, movementScript);
return FALSE;
}
}
@@ -156,9 +160,9 @@ static bool8 sub_80A2370(u8 taskId, u8 b)
return FALSE;
}
-static void npc_obj_offscreen_culling_and_flag_update(u8 a, u8 *b)
+static void npc_obj_offscreen_culling_and_flag_update(u8 a, u8 *movementScript)
{
- gUnknown_020384F8[a] = b;
+ gUnknown_020384F8[a] = movementScript;
}
static u8 *sub_80A23B8(u8 a)
@@ -166,23 +170,23 @@ static u8 *sub_80A23B8(u8 a)
return gUnknown_020384F8[a];
}
-static void sub_80A23C8(u8 taskId, u8 b, u8 c, u8 *d)
+static void sub_80A23C8(u8 taskId, u8 b, u8 mapObjId, u8 *movementScript)
{
sub_80A2318(taskId, b);
- npc_obj_offscreen_culling_and_flag_update(b, d);
- sub_80A22D0(taskId, b, c);
+ npc_obj_offscreen_culling_and_flag_update(b, movementScript);
+ sub_80A22D0(taskId, b, mapObjId);
}
-static void sub_80A2408(u8 a)
+static void UnfreezeObjects(u8 taskId)
{
- u8 *ptr;
+ u8 *pMapObjId;
u8 i;
- ptr = (u8 *)&gTasks[a].data[1];
- for (i = 0; i < 16; i++, ptr++)
+ pMapObjId = (u8 *)&gTasks[taskId].data[1];
+ for (i = 0; i < 16; i++, pMapObjId++)
{
- if (*ptr != 0xFF)
- UnfreezeMapObject(&gMapObjects[*ptr]);
+ if (*pMapObjId != 0xFF)
+ UnfreezeMapObject(&gMapObjects[*pMapObjId]);
}
}
@@ -199,23 +203,23 @@ static void Task_80A244C(u8 taskId)
}
}
-static void sub_80A2490(u8 taskId, u8 b, u8 c, u8 *d)
+static void sub_80A2490(u8 taskId, u8 b, u8 mapObjId, u8 *d)
{
u8 var;
- if (FieldObjectIsSpecialAnimActive(&gMapObjects[c])
- && !FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[c]))
+ if (FieldObjectIsSpecialAnimActive(&gMapObjects[mapObjId])
+ && !FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]))
return;
var = *d;
if (var == 0xFE)
{
sub_80A2348(taskId, b);
- FreezeMapObject(&gMapObjects[c]);
+ FreezeMapObject(&gMapObjects[mapObjId]);
}
else
{
- if (!FieldObjectSetSpecialAnim(&gMapObjects[c], var))
+ if (!FieldObjectSetSpecialAnim(&gMapObjects[mapObjId], var))
{
d++;
npc_obj_offscreen_culling_and_flag_update(b, d);
diff --git a/src/secret_base.c b/src/field/secret_base.c
index 4e8331f5c..f221d7f16 100644
--- a/src/secret_base.c
+++ b/src/field/secret_base.c
@@ -14,7 +14,7 @@
#include "metatile_behavior.h"
#include "palette.h"
#include "pokemon.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "string_util.h"
#include "strings.h"
@@ -270,7 +270,7 @@ void sub_80BBAF0(void)
bool8 sub_80BBB24(void)
{
- if (gMapHeader.mapType == 9 && VarGet(VAR_0x4097) == 0)
+ if (gMapHeader.mapType == MAP_TYPE_SECRET_BASE && VarGet(VAR_0x4097) == 0)
return FALSE;
return TRUE;
}
@@ -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);
@@ -380,7 +380,7 @@ void sub_80BBDD0(void)
gScriptResult = gMapHeader.events->mapObjects[objid].graphicsId + 0x3f20;
VarSet(gScriptResult, gDecorations[roomdecor[decidx]].tiles[0]);
gScriptResult = gMapHeader.events->mapObjects[objid].localId;
- FlagReset(gSpecialVar_0x8004 + 0xAE);
+ FlagClear(gSpecialVar_0x8004 + 0xAE);
show_sprite(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
sub_805C0F8(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
sub_805C78C(gScriptResult, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
@@ -690,7 +690,7 @@ _080BBEDA:\n\
adds r0, 0xAE\n\
lsls r0, 16\n\
lsrs r0, 16\n\
- bl FlagReset\n\
+ bl FlagClear\n\
ldr r3, _080BBF9C @ =gScriptResult\n\
ldrb r0, [r3]\n\
mov r4, r10\n\
diff --git a/src/field/shop.c b/src/field/shop.c
new file mode 100644
index 000000000..375205935
--- /dev/null
+++ b/src/field/shop.c
@@ -0,0 +1,1351 @@
+#include "global.h"
+#include "shop.h"
+#include "decompress.h"
+#include "field_fadetransition.h"
+#include "field_weather.h"
+#include "item_menu.h"
+#include "main.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "money.h"
+#include "palette.h"
+#include "script.h"
+#include "sound.h"
+#include "sprite.h"
+#include "strings.h"
+#include "task.h"
+#include "tv.h"
+#include "unknown_task.h"
+#include "field_map_obj.h"
+#include "field_player_avatar.h"
+#include "fieldmap.h"
+#include "item.h"
+#include "decoration.h"
+#include "items.h"
+#include "songs.h"
+#include "overworld.h"
+#include "decoration_inventory.h"
+#include "field_camera.h"
+
+#define ewram18000 ((u16 *)(ewram + 0x18000))
+#define ewram18300 ((u16 *)(ewram + 0x18300))
+
+extern bool8 sub_80A52C4(u8, u8);
+
+extern u8 ewram[];
+extern u8 gBuyMenuFrame_Gfx[];
+extern u16 gBuyMenuFrame_Tilemap[];
+extern u16 gMenuMoneyPal[16];
+
+void sub_80B39D0(int var1, int var2, bool32 hasControlCode);
+void sub_80B3A70(void);
+void sub_80B4378(u8);
+void sub_80B43F0(u8);
+void Task_ExitBuyMenu(u8);
+void sub_80B4470(u8);
+void sub_80B2EFC(u8 taskId);
+void sub_80B2F30(u8 taskId);
+void HandleShopMenuQuit(u8 taskId);
+void sub_80B3BF4(u8 taskId);
+void sub_80B3D7C(u8 taskId);
+
+// iwram
+static struct MartInfo gMartInfo;
+
+// ewram
+EWRAM_DATA u32 gMartTotalCost = 0;
+EWRAM_DATA s16 gUnknown_020386A4[16][4] = {0}; // game freak barely uses 2d arrays wtf?
+EWRAM_DATA struct ItemSlot gUnknown_02038724[3] = {0}; // tv.c uses this, so it cant be static
+EWRAM_DATA u8 gUnknown_02038730 = 0;
+EWRAM_DATA u8 gUnknown_02038731 = 0;
+
+// rodata
+static const struct MenuAction2 sBuySellQuitMenuActions[] =
+{
+ { MartText_Buy, sub_80B2EFC },
+ { MartText_Sell, sub_80B2F30 },
+ { MartText_Quit2, HandleShopMenuQuit },
+};
+
+static const u8 gUnknown_083CC6E8[] = {0, 1, 2}; // BUY SELL EXIT
+static const u8 gUnknown_083CC6EB[] = {0, 2}; // BUY EXIT
+
+static const u16 gUnusedMartArray[] = {0x2, 0x3, 0x4, 0xD, 0x121, 0xE, 0xE, 0xE, 0xE, 0xE, 0xE, 0x0, 0x0};
+
+static const struct YesNoFuncTable gUnknown_083CC708[] =
+{
+ sub_80B3BF4,
+ sub_80B3D7C
+};
+
+u8 CreateShopMenu(u8 martType)
+{
+ ScriptContext2_Enable();
+ gMartInfo.martType = martType;
+ gMartInfo.cursor = 0;
+
+ if (martType == MART_TYPE_0)
+ {
+ gMartInfo.numChoices = 2;
+ MenuDrawTextWindow(0, 0, 10, 7);
+ PrintMenuItemsReordered(1, 1, 3, sBuySellQuitMenuActions, gUnknown_083CC6E8);
+ }
+ else
+ {
+ gMartInfo.numChoices = 1;
+ MenuDrawTextWindow(0, 0, 10, 5);
+ PrintMenuItemsReordered(1, 1, 2, sBuySellQuitMenuActions, gUnknown_083CC6EB);
+ }
+ InitMenu(0, 1, 1, gMartInfo.numChoices + 1, 0, 9); // add 1 for cancel
+
+ return CreateTask(sub_80B2E38, 8);
+}
+
+void SetShopMenuCallback(void *callbackPtr)
+{
+ gMartInfo.callback = callbackPtr;
+}
+
+void SetShopItemsForSale(u16 *items)
+{
+ u16 i = 0;
+
+ gMartInfo.itemList = items;
+ gMartInfo.itemCount = 0;
+
+ while (gMartInfo.itemList[i])
+ {
+ gMartInfo.itemCount++;
+ i++;
+ }
+}
+
+void sub_80B2E38(u8 var)
+{
+ const u8 local = var;
+
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ if (gMartInfo.cursor) // can move cursor up?
+ {
+ PlaySE(SE_SELECT);
+ gMartInfo.cursor = MoveMenuCursor(-1);
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ if (gMartInfo.cursor != gMartInfo.numChoices) // can move cursor down?
+ {
+ PlaySE(SE_SELECT);
+ gMartInfo.cursor = MoveMenuCursor(1);
+ }
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (gMartInfo.martType == MART_TYPE_0)
+ {
+ sBuySellQuitMenuActions[gUnknown_083CC6E8[gMartInfo.cursor]].func(local);
+ }
+ else
+ {
+ sBuySellQuitMenuActions[gUnknown_083CC6EB[gMartInfo.cursor]].func(local);
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ HandleShopMenuQuit(local);
+ }
+}
+
+void sub_80B2EFC(u8 taskId)
+{
+ gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16;
+ gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics;
+ gTasks[taskId].func = sub_80B2FA0;
+ fade_screen(1, 0);
+}
+
+void sub_80B2F30(u8 taskId)
+{
+ gTasks[taskId].data[8] = (u32)sub_80A6300 >> 16;
+ gTasks[taskId].data[9] = (u32)sub_80A6300;
+ gTasks[taskId].func = sub_80B2FA0;
+ fade_screen(1, 0);
+}
+
+void HandleShopMenuQuit(u8 taskId)
+{
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(0, 0, 11, 8);
+ sub_80BE3BC();
+ ScriptContext2_Disable();
+ DestroyTask(taskId);
+
+ if (gMartInfo.callback)
+ gMartInfo.callback(); // run the callback if it exists.
+}
+
+void sub_80B2FA0(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2((void *)((u16)gTasks[taskId].data[8] << 16 | (u16)gTasks[taskId].data[9]));
+ DestroyTask(taskId);
+ }
+}
+
+void ReturnToShopMenuAfterExitingSellMenu(u8 taskId)
+{
+ CreateShopMenu(gMartInfo.martType);
+ DestroyTask(taskId);
+}
+
+void Task_ExitSellMenu(u8 taskId)
+{
+ if (sub_807D770() == 1)
+ {
+ if (gMartInfo.martType == MART_TYPE_2)
+ DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0);
+ else
+ DisplayItemMessageOnField(taskId, gOtherText_AnythingElse, ReturnToShopMenuAfterExitingSellMenu, 0);
+ }
+}
+
+void sub_80B3050(void)
+{
+ pal_fill_black();
+ CreateTask(Task_ExitSellMenu, 0x8);
+}
+
+void sub_80B3068(u8 taskId)
+{
+ Task_ExitSellMenu(taskId);
+}
+
+void unref_sub_80B3078(u8 taskId)
+{
+ gTasks[taskId].func = Task_ExitSellMenu;
+}
+
+void sub_80B3094(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTasks();
+ UpdatePaletteFade();
+}
+
+void sub_80B30AC(void)
+{
+ void *addr;
+ void *addr2;
+ void *addr3;
+ u16 *tempArr;
+ u16 *tempArr2;
+ u16 *tempArr3;
+
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+
+ // temp vars needed to match for some dumb reason
+ tempArr = gBGTilemapBuffers[1];
+ addr = (void *)(VRAM + 0xE800);
+ DmaCopy16(3, tempArr, addr, 0x800);
+ tempArr2 = gBGTilemapBuffers[2];
+ addr2 = (void *)(VRAM + 0xE000);
+ DmaCopy16(3, tempArr2, addr2, 0x800);
+ tempArr3 = gBGTilemapBuffers[3];
+ addr3 = (void *)(VRAM + 0xF000);
+ DmaCopy16(3, tempArr3, addr3, 0x800);
+}
+
+// this function is fugly. pls fix
+void BuyMenuDrawGraphics(void)
+{
+ void *addr;
+ register u16 zero2 asm("r5");
+
+ sub_80F9438();
+ remove_some_task();
+ REG_BG1HOFS = (zero2 = 0);
+ REG_BG1VOFS = zero2;
+ REG_BG2HOFS = zero2;
+ REG_BG2VOFS = zero2;
+ REG_BG3HOFS = zero2;
+ REG_BG3VOFS = zero2;
+ gPaletteFade.bufferTransferDisabled = 1;
+ addr = (void*)OAM;
+ {
+ register const u32 zero asm("r6") = 0;
+ DmaFill32(3, zero, addr, OAM_SIZE);
+ LZDecompressVram(gBuyMenuFrame_Gfx, (void*)(VRAM + 0x7C00));
+ LZDecompressWram(gBuyMenuFrame_Tilemap, (void *)0x02018000);
+ LoadCompressedPalette(gMenuMoneyPal, 0xC0, sizeof(gMenuMoneyPal));
+ FreeAllSpritePalettes();
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ SetUpWindowConfig(&gWindowConfig_81E6DFC);
+ InitMenuWindow(&gWindowConfig_81E6DFC);
+ BuyMenuDrawMapGraphics();
+ gMartInfo.cursor = zero;
+ gMartInfo.choicesAbove = zero2;
+ MenuZeroFillWindowRect(0, 0, 0x20, 0x20);
+ OpenMoneyWindow(gSaveBlock1.money, 0, 0);
+ sub_80B3764(0, 7);
+ sub_80B37EC();
+ sub_80B3270();
+ CreateTask(sub_80B40E8, 0x8);
+ sub_80B3240();
+ asm("":::"r4"); // what??
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, zero);
+ gPaletteFade.bufferTransferDisabled = 0;
+ SetVBlankCallback(sub_80B30AC);
+ SetMainCallback2(sub_80B3094);
+ }
+}
+
+void sub_80B3240(void)
+{
+ u16 tempArr[2] = {0x41EE, 0x7FFF};
+
+ LoadPalette(&tempArr[1], 0xD1, 2);
+ LoadPalette(&tempArr[0], 0xD8, 2);
+}
+
+void sub_80B3270(void)
+{
+ sub_80F944C();
+
+ if (gMartInfo.itemCount > 7)
+ {
+ CreateVerticalScrollIndicators(0, 172, 12);
+ CreateVerticalScrollIndicators(1, 172, 148);
+ sub_80F979C(0, 1);
+ }
+}
+
+void sub_80B32A4(void)
+{
+ if (gMartInfo.choicesAbove == 0)
+ sub_80F979C(0, 1);
+ else
+ sub_80F979C(0, 0);
+
+ if (gMartInfo.choicesAbove + 7 >= gMartInfo.itemCount)
+ sub_80F979C(1, 1);
+ else
+ sub_80F979C(1, 0);
+}
+
+void sub_80B32EC(u16 *array, s16 offset1, s16 offset2)
+{
+ array[offset1 + offset2] = 0xC3E1;
+ array[offset1 + offset2 + 1] = 0xC3E1;
+}
+
+void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2)
+{
+ array[offset1 + offset2] = array2[0];
+ array[offset1 + offset2 + 1] = array2[1];
+ array[offset1 + offset2 + 32] = array2[2];
+ array[offset1 + offset2 + 33] = array2[3];
+}
+
+void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s32 var4)
+{
+ u8 tempVar4 = var4;
+ s16 offset1 = var1 * 2;
+ s16 offset2 = (var2 * 0x40) + 0x40;
+
+ switch (tempVar4)
+ {
+ case 0: // _080B335C
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3);
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4);
+ break;
+ case 1: // _080B3364
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4);
+ break;
+ case 2: // _080B3398
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4);
+ break;
+ }
+}
+
+void sub_80B33D0(s16 var1, int var2, u16 *var3)
+{
+ s16 offset1 = var1 * 2;
+ s16 offset2 = (var2 * 0x40) + 0x40;
+
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
+ BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4);
+}
+
+void sub_80B3420(void)
+{
+ s16 facingX;
+ s16 facingY;
+ s16 x;
+ s16 y;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY);
+ facingX -= 3;
+ facingY -= 3;
+
+ for (y = 0; y < 6; y++)
+ {
+ for (x = 0; x < 7; x++)
+ {
+ u16 metatileId = MapGridGetMetatileIdAt(facingX + x, facingY + y);
+
+ if (y != 5 && x != 6)
+ {
+ s32 r3 = MapGridGetMetatileLayerTypeAt(facingX + x, facingY + y);
+
+ if (metatileId < 512)
+ BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8, r3);
+ else
+ BuyMenuDrawMapMetatile(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8, r3);
+ }
+ else
+ {
+ if (metatileId < 512)
+ sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->primaryTileset->metatiles + metatileId * 8);
+ else
+ sub_80B33D0(x, y, (u16 *)gMapHeader.mapData->secondaryTileset->metatiles + (metatileId - 512) * 8);
+ }
+
+ if (y == 0 && x != 0 && x != 6)
+ sub_80B32EC(gBGTilemapBuffers[1], x * 2, 64);
+ }
+ }
+}
+
+void BuyMenuDrawMapGraphics(void)
+{
+ sub_80F9020();
+ sub_80B356C();
+ sub_80B368C();
+ sub_80B3420();
+}
+
+void sub_80B356C(void)
+{
+ s16 facingX;
+ s16 facingY;
+ u8 playerHeight;
+ u8 y;
+ u8 x;
+ u8 r8 = 0;
+
+ GetXYCoordsOneStepInFrontOfPlayer(&facingX, &facingY);
+ playerHeight = PlayerGetZCoord();
+ for (y = 0; y < 16; y++)
+ gUnknown_020386A4[y][MAP_OBJ_ID] = 16;
+ for (y = 0; y < 5; y++)
+ {
+ for (x = 0; x < 7; x++)
+ {
+ u8 mapObjId = GetFieldObjectIdByXYZ(facingX - 3 + x, facingY - 2 + y, playerHeight);
+
+ if (mapObjId != 16)
+ {
+ gUnknown_020386A4[r8][MAP_OBJ_ID] = mapObjId;
+ gUnknown_020386A4[r8][X_COORD] = x;
+ gUnknown_020386A4[r8][Y_COORD] = y;
+ if (gMapObjects[mapObjId].mapobj_unk_18 == 1)
+ gUnknown_020386A4[r8][ANIM_NUM] = 0;
+ if (gMapObjects[mapObjId].mapobj_unk_18 == 2)
+ gUnknown_020386A4[r8][ANIM_NUM] = 1;
+ if (gMapObjects[mapObjId].mapobj_unk_18 == 3)
+ gUnknown_020386A4[r8][ANIM_NUM] = 2;
+ if (gMapObjects[mapObjId].mapobj_unk_18 == 4)
+ gUnknown_020386A4[r8][ANIM_NUM] = 3;
+ r8++;
+ }
+ }
+ }
+}
+
+void sub_80B368C(void)
+{
+ u8 i;
+
+ for (i = 0; i < 16; i++) // max objects?
+ {
+ if (gUnknown_020386A4[i][MAP_OBJ_ID] == 16)
+ continue;
+
+ StartSpriteAnim(&gSprites[AddPseudoFieldObject(
+ gMapObjects[gUnknown_020386A4[i][MAP_OBJ_ID]].graphicsId,
+ SpriteCallbackDummy,
+ (u16)gUnknown_020386A4[i][X_COORD] * 16 + 8,
+ (u16)gUnknown_020386A4[i][Y_COORD] * 16 + 32,
+ 2)],
+ gUnknown_020386A4[i][ANIM_NUM]);
+ }
+}
+
+void sub_80B3720(void)
+{
+ s16 i;
+
+ for (i = 0; i < 0x400; i++)
+ {
+ if (ewram18000[i] != 0)
+ gBGTilemapBuffers[1][i] = ewram18000[i] + 0xC3E0;
+ }
+}
+
+void sub_80B3764(int var1, int var2)
+{
+ sub_80B3720();
+ sub_80B39D0(var1, var2, 0);
+ InitMenu(0, 0xE, 0x2, 0x8, gMartInfo.cursor, 0xF);
+}
+
+void sub_80B379C(void)
+{
+ u16 i, j;
+
+ for (i = 0; i < 8; i++)
+ for (j = 0; j < 14; j++)
+ gBGTilemapBuffers[1][32 * (i + 12) + j] = ewram18300[32 * i + j] + 0xC3E0;
+}
+
+void sub_80B37EC(void)
+{
+ sub_80B3A70();
+}
+
+void sub_80B37F8(u8 taskId)
+{
+ u16 itemListIndex = gMartInfo.choicesAbove + gMartInfo.cursor;
+ u16 itemId = gMartInfo.itemList[itemListIndex];
+ u32 price = (ItemId_GetPrice(itemId) >> GetPriceReduction(1));
+
+ PrintMoneyAmount(gTasks[taskId].data[1] * price, 6, 6, 11);
+ gStringVar1[0] = EXT_CTRL_CODE_BEGIN;
+ gStringVar1[1] = 0x14;
+ gStringVar1[2] = 0x6;
+ ConvertIntToDecimalStringN(&gStringVar1[3], gTasks[taskId].data[1], 1, 2);
+ MenuPrint(gOtherText_xString1, 1, 11);
+ sub_80A3FA0(gBGTilemapBuffers[1], 1, 11, 12, 2, 0xC3E1);
+}
+
+void sub_80B389C(u16 itemId, u8 var2, bool32 hasControlCode)
+{
+ u8 *stringPtr = gStringVar1;
+
+ if (hasControlCode != FALSE)
+ {
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x1;
+ stringPtr[2] = 0x2;
+ stringPtr += 3;
+ }
+
+ CopyItemName(itemId, stringPtr);
+
+ sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1);
+ stringPtr = gStringVar1;
+
+ if (hasControlCode != FALSE)
+ stringPtr = &gStringVar1[3];
+
+ GetMoneyAmountText(stringPtr, (ItemId_GetPrice(itemId) >> GetPriceReduction(1)), 0x4);
+ MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 1);
+}
+
+void sub_80B3930(u16 itemId, u8 var2, bool32 hasControlCode)
+{
+ u8 *stringPtr = gStringVar1;
+
+ if (hasControlCode != FALSE)
+ {
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x1;
+ stringPtr[2] = 0x2;
+ stringPtr += 3;
+ }
+
+ StringCopy(stringPtr, gDecorations[itemId].name);
+ sub_8072A18(&gStringVar1[0], 0x70, var2 << 3, 0x58, 0x1);
+ stringPtr = gStringVar1;
+
+ if (hasControlCode != FALSE)
+ stringPtr = &gStringVar1[3];
+
+ if (gDecorations[itemId].price == 10000)
+ {
+ sub_80B7B34(0x19, var2, hasControlCode); // huh???
+ }
+ else
+ {
+ GetMoneyAmountText(stringPtr, gDecorations[itemId].price, 0x4);
+ MenuPrint_PixelCoords(&gStringVar1[0], 0xCA, var2 << 3, 0x1);
+ }
+}
+
+void sub_80B39D0(int var1, int var2, bool32 hasControlCode)
+{
+ u8 i;
+
+ for (i = var1; i <= var2 && gMartInfo.choicesAbove + i < gMartInfo.itemCount; i++)
+ {
+ if (gMartInfo.martType == MART_TYPE_0)
+ sub_80B389C(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode);
+ else
+ sub_80B3930(gMartInfo.itemList[gMartInfo.choicesAbove + i], (i << 1) + 2, hasControlCode);
+ }
+
+ if (i != 8 && gMartInfo.choicesAbove + i == gMartInfo.itemCount)
+ {
+ MenuFillWindowRectWithBlankTile(0xE, (i << 1) + 2, 0x1C, (i << 1) + 3);
+ MenuPrint(gOtherText_CancelNoTerminator, 0xE, (i << 1) + 2);
+ }
+}
+
+void sub_80B3A70(void)
+{
+ if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount)
+ {
+ if (gMartInfo.martType == MART_TYPE_0)
+ {
+ sub_8072AB0(ItemId_GetDescription(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]),
+ 0x4, 0x68, 0x68, 0x30, 0);
+ }
+ else
+ sub_8072AB0(gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].description,
+ 0x4, 0x68, 0x68, 0x30, 0);
+ }
+ else
+ {
+ sub_8072AB0(gOtherText_QuitShopping, 0x4, 0x68, 0x68, 0x30, 0);
+ }
+}
+
+void sub_80B3AEC(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // huh???
+ PlaySE(SE_SELECT);
+
+ if (gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor] == ITEM_POKE_BALL && gTasks[taskId].data[1] >= 10 && AddBagItem(ITEM_PREMIER_BALL, 1) == TRUE)
+ DisplayItemMessageOnField(taskId, gOtherText_FreePremierBall, sub_80B4378, 0xC3E1);
+ else
+ sub_80B4378(taskId);
+ }
+}
+
+void sub_80B3B80(u8 taskId)
+{
+ IncrementGameStat(0x26);
+ RemoveMoney(&gSaveBlock1.money, gMartTotalCost);
+ PlaySE(SE_REGI);
+ UpdateMoneyWindow(gSaveBlock1.money, 0, 0);
+ gTasks[taskId].func = sub_80B3AEC;
+}
+
+void sub_80B3BD0(u8 taskId)
+{
+ sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0); // same thing as above?
+ sub_80B4378(taskId);
+}
+
+void sub_80B3BF4(u8 taskId)
+{
+ MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD);
+ sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0);
+ sub_80B379C();
+ sub_80B3420();
+
+ if (IsEnoughMoney(gSaveBlock1.money, gMartTotalCost))
+ {
+ if (gMartInfo.martType == MART_TYPE_0)
+ {
+ if (AddBagItem(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gTasks[taskId].data[1]))
+ {
+ DisplayItemMessageOnField(taskId, gOtherText_HereYouGo, sub_80B3B80, 0xC3E1);
+ sub_80B4470(taskId);
+ }
+ else
+ DisplayItemMessageOnField(taskId, gOtherText_NoRoomFor, sub_80B3BD0, 0xC3E1);
+ }
+ else // a normal mart is only type 0, so types 1 and 2 are decoration marts.
+ {
+ if (IsThereStorageSpaceForDecoration(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]))
+ {
+ if (gMartInfo.martType == MART_TYPE_1)
+ DisplayItemMessageOnField(taskId, gOtherText_HereYouGo2, sub_80B3B80, 0xC3E1);
+ else
+ DisplayItemMessageOnField(taskId, gOtherText_HereYouGo3, sub_80B3B80, 0xC3E1);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_SpaceForIsFull);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3BD0, 0xC3E1);
+ }
+ }
+ }
+ else
+ DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1);
+}
+
+void sub_80B3D38(u8 taskId)
+{
+ DisplayYesNoMenu(7, 8, 1);
+ sub_80A3FA0(gBGTilemapBuffers[1], 8, 9, 4, 4, 0xC3E1);
+ DoYesNoFuncWithChoice(taskId, gUnknown_083CC708);
+}
+
+void sub_80B3D7C(u8 taskId)
+{
+ sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0);
+ MenuZeroFillWindowRect(0x7, 0x8, 0xD, 0xD);
+ sub_80A3FA0(gBGTilemapBuffers[1], 0x8, 0x9, 0x4, 0x4, 0);
+ sub_80B4378(taskId);
+}
+
+void sub_80B3DC8(u8 taskId)
+{
+ if (sub_80A52C4(taskId, gMartInfo.curItemCount) == TRUE)
+ sub_80B37F8(taskId);
+
+ if (gMain.newKeys & A_BUTTON)
+ {
+ gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)) * gTasks[taskId].data[1]; // set total cost of your purchase.
+ MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD);
+ sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0);
+ sub_80B379C();
+ sub_80B3420();
+ CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1);
+ ConvertIntToDecimalStringN(gStringVar2, gTasks[taskId].data[1], 0, 0x2);
+ ConvertIntToDecimalStringN(gStringVar3, gMartTotalCost, 0, 0x8);
+ StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 0);
+ sub_80B4378(taskId);
+ }
+}
+
+void sub_80B3EFC(u8 taskId)
+{
+ u16 var;
+
+ gTasks[taskId].data[1] = 1;
+ MenuDrawTextWindow(0, 0xA, 0xD, 0xD);
+ sub_80B37F8(taskId);
+
+ var = gSaveBlock1.money / (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1));
+ if (var > 99)
+ gMartInfo.curItemCount = 99;
+ else
+ gMartInfo.curItemCount = var;
+
+ gTasks[taskId].func = sub_80B3DC8;
+}
+
+#ifdef NONMATCHING
+void sub_80B3F88(void)
+{
+ u16 *r1;
+ u16 *r2;
+ register u8 *r10 asm("r10");
+ s32 i;
+ s32 j;
+ struct Window *r8 = &gMenuWindow;
+
+ r1 = r8->tilemap;
+ r1 += 0x1EF;
+ r2 = r1;
+ r2 += 64;
+ r10 = r8->tileData;
+
+ for (i = 0; i < 14; i++)
+ {
+ for (j = 0; j < 15; j++)
+ {
+ if ((r1[j] & 0x3FF) <= r8->tileDataStartOffset + 1)
+ r2[j] = r8->tileDataStartOffset + 1;
+ else
+ r2[j] = r1[j] + 0x3C;
+ }
+
+ r1 -= 32;
+ r2 -= 32;
+ }
+
+ {
+ u8 *r1 = r10 + 0x3A20;
+ u8 *r2 = r1 + 0x780;
+ for (i = 0; i < 14; i++)
+ {
+ DmaCopy16(3, r1, r2, 0x1E0);
+ r2 -= 0x3C0;
+ r1 -= 0x3C0;
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_80B3F88(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, _080B4020 @ =gMenuWindow\n\
+ mov r8, r0\n\
+ ldr r1, [r0, 0x28]\n\
+ ldr r3, _080B4024 @ =0x000003de\n\
+ adds r1, r3\n\
+ adds r2, r1, 0\n\
+ adds r2, 0x80\n\
+ ldr r7, [r0, 0x24]\n\
+ mov r10, r7\n\
+ ldr r0, _080B4028 @ =0x000003ff\n\
+ mov r9, r0\n\
+ movs r6, 0xD\n\
+_080B3FAC:\n\
+ adds r3, r2, 0\n\
+ subs r3, 0x40\n\
+ str r3, [sp]\n\
+ movs r7, 0x40\n\
+ negs r7, r7\n\
+ adds r7, r1\n\
+ mov r12, r7\n\
+ adds r3, r2, 0\n\
+ adds r4, r1, 0\n\
+ movs r5, 0xE\n\
+_080B3FC0:\n\
+ ldrh r2, [r4]\n\
+ mov r1, r9\n\
+ ands r1, r2\n\
+ mov r7, r8\n\
+ ldrh r0, [r7, 0x1A]\n\
+ adds r0, 0x1\n\
+ cmp r1, r0\n\
+ ble _080B3FD4\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x3C\n\
+_080B3FD4:\n\
+ strh r0, [r3]\n\
+ adds r3, 0x2\n\
+ adds r4, 0x2\n\
+ subs r5, 0x1\n\
+ cmp r5, 0\n\
+ bge _080B3FC0\n\
+ ldr r2, [sp]\n\
+ mov r1, r12\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080B3FAC\n\
+ ldr r1, _080B402C @ =0x00003a20\n\
+ add r1, r10\n\
+ movs r0, 0xF0\n\
+ lsls r0, 3\n\
+ adds r2, r1, r0\n\
+ ldr r3, _080B4030 @ =0x040000d4\n\
+ ldr r5, _080B4034 @ =0x800000f0\n\
+ ldr r4, _080B4038 @ =0xfffffc40\n\
+ movs r6, 0xD\n\
+_080B3FFC:\n\
+ str r1, [r3]\n\
+ str r2, [r3, 0x4]\n\
+ str r5, [r3, 0x8]\n\
+ ldr r0, [r3, 0x8]\n\
+ adds r2, r4\n\
+ adds r1, r4\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080B3FFC\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\
+ .align 2, 0\n\
+_080B4020: .4byte gMenuWindow\n\
+_080B4024: .4byte 0x000003de\n\
+_080B4028: .4byte 0x000003ff\n\
+_080B402C: .4byte 0x00003a20\n\
+_080B4030: .4byte 0x040000d4\n\
+_080B4034: .4byte 0x800000f0\n\
+_080B4038: .4byte 0xfffffc40\n\
+ .syntax divided");
+}
+#endif
+
+#ifdef NONMATCHING
+void sub_80B403C(void)
+{
+ u16 *r1;
+ u16 *r2;
+ u8 *r10;
+ s32 i;
+ s32 j;
+ struct Window *r8 = &gMenuWindow;
+
+ r1 = r8->tilemap;
+ r1 += 0x4F;
+ r2 = r1;
+ r2 += 64;
+ r10 = r8->tileData;
+
+ for (i = 0; i < 14; i++)
+ {
+ for (j = 0; j < 15; j++)
+ {
+ if ((r1[j] & 0x3FF) <= r8->tileDataStartOffset + 1)
+ r2[j] = r8->tileDataStartOffset + 1;
+ else
+ r2[j] = r1[j] + 0x3C;
+ }
+
+ r1 += 32;
+ r2 += 32;
+ }
+
+ {
+ register u8 *r1 asm("r1") = r10 + 0x960;
+ register u8 *r2 asm("r2") = r1;
+
+ r1 += 0x780;
+ for (i = 0; i < 14; i++)
+ {
+ DmaCopy16(3, r1, r2, 0x1E0);
+ r1 += 0x3C0;
+ r2 += 0x3C0;
+ }
+ }
+}
+#else
+__attribute__((naked))
+void sub_80B403C(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, _080B40D8 @ =gMenuWindow\n\
+ mov r8, r0\n\
+ ldr r2, [r0, 0x28]\n\
+ adds r1, r2, 0\n\
+ adds r1, 0x9E\n\
+ adds r2, r1, 0\n\
+ adds r1, 0x80\n\
+ ldr r3, [r0, 0x24]\n\
+ mov r10, r3\n\
+ ldr r7, _080B40DC @ =0x000003ff\n\
+ mov r9, r7\n\
+ movs r6, 0xD\n\
+_080B4060:\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x40\n\
+ str r0, [sp]\n\
+ movs r3, 0x40\n\
+ adds r3, r1\n\
+ mov r12, r3\n\
+ adds r3, r2, 0\n\
+ adds r4, r1, 0\n\
+ movs r5, 0xE\n\
+_080B4072:\n\
+ ldrh r2, [r4]\n\
+ mov r1, r9\n\
+ ands r1, r2\n\
+ mov r7, r8\n\
+ ldrh r0, [r7, 0x1A]\n\
+ adds r0, 0x1\n\
+ cmp r1, r0\n\
+ ble _080B4086\n\
+ adds r0, r2, 0\n\
+ subs r0, 0x3C\n\
+_080B4086:\n\
+ strh r0, [r3]\n\
+ adds r3, 0x2\n\
+ adds r4, 0x2\n\
+ subs r5, 0x1\n\
+ cmp r5, 0\n\
+ bge _080B4072\n\
+ ldr r2, [sp]\n\
+ mov r1, r12\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080B4060\n\
+ movs r1, 0x96\n\
+ lsls r1, 4\n\
+ add r1, r10\n\
+ adds r2, r1, 0\n\
+ movs r0, 0xF0\n\
+ lsls r0, 3\n\
+ adds r1, r0\n\
+ ldr r3, _080B40E0 @ =0x040000d4\n\
+ ldr r5, _080B40E4 @ =0x800000f0\n\
+ movs r4, 0xF0\n\
+ lsls r4, 2\n\
+ movs r6, 0xD\n\
+_080B40B4:\n\
+ str r1, [r3]\n\
+ str r2, [r3, 0x4]\n\
+ str r5, [r3, 0x8]\n\
+ ldr r0, [r3, 0x8]\n\
+ adds r2, r4\n\
+ adds r1, r4\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080B40B4\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\
+ .align 2, 0\n\
+_080B40D8: .4byte gMenuWindow\n\
+_080B40DC: .4byte 0x000003ff\n\
+_080B40E0: .4byte 0x040000d4\n\
+_080B40E4: .4byte 0x800000f0\n\
+ .syntax divided");
+}
+#endif
+
+void sub_80B40E8(u8 taskId) // Mart_DoCursorAction
+{
+ if (!gPaletteFade.active)
+ {
+ if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) // only up can be pressed
+ {
+ if (gMartInfo.cursor == 0)
+ {
+ if (gMartInfo.choicesAbove == 0) // if there are no choices above, dont bother
+ return;
+
+ PlaySE(SE_SELECT);
+ gMartInfo.choicesAbove--; // since cursor is at the top and there are choices above the top, scroll the menu up by updating choicesAbove.
+ sub_80B3F88();
+ sub_80B39D0(0, 0, 0);
+ sub_80B3A70();
+ sub_80B32A4();
+ }
+ else // if the cursor is not 0, choicesAbove cannot be updated yet since the cursor is at the top of the menu, so update cursor.
+ {
+ PlaySE(SE_SELECT);
+ gMartInfo.cursor = MoveMenuCursor(-1); // move cursor up
+ sub_80B3A70();
+ }
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) // only down can be pressed
+ {
+ if (gMartInfo.cursor == 7) // are you at the bottom of the menu?
+ {
+ if (gMartInfo.choicesAbove + gMartInfo.cursor == gMartInfo.itemCount) // are you at cancel?
+ return;
+
+ PlaySE(SE_SELECT);
+ gMartInfo.choicesAbove++;
+ sub_80B403C();
+ sub_80B39D0(7, 7, 0);
+ sub_80B3A70();
+ sub_80B32A4();
+ }
+ else if (gMartInfo.cursor != gMartInfo.itemCount)
+ {
+ PlaySE(SE_SELECT);
+ gMartInfo.cursor = MoveMenuCursor(1);
+ sub_80B3A70();
+ }
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+
+ if (gMartInfo.choicesAbove + gMartInfo.cursor != gMartInfo.itemCount) // did you not hit CANCEL?
+ {
+ PauseVerticalScrollIndicator(0);
+ PauseVerticalScrollIndicator(1);
+ sub_80F979C(1, 1);
+ sub_80B39D0(gMartInfo.cursor, gMartInfo.cursor, 1);
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(0, 0xC, 0xD, 0x13);
+
+ if (gMartInfo.martType == MART_TYPE_0)
+ {
+ gMartTotalCost = (ItemId_GetPrice(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]) >> GetPriceReduction(1)); // set 1x price
+ if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost))
+ {
+ DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge
+ }
+ else // _080B42BA
+ {
+ CopyItemName(gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_HowManyYouWant);
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3EFC, 0xC3E1);
+ }
+ }
+ else // _080B428C
+ {
+ gMartTotalCost = gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].price;
+
+ if (!IsEnoughMoney(gSaveBlock1.money, gMartTotalCost))
+ {
+ DisplayItemMessageOnField(taskId, gOtherText_NotEnoughMoney, sub_80B3BD0, 0xC3E1); // tail merge
+ }
+ else
+ {
+ StringCopy(gStringVar1, gDecorations[gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]].name);
+ ConvertIntToDecimalStringN(gStringVar2, gMartTotalCost, 0, 0x8);
+
+ if (gMartInfo.martType == MART_TYPE_1)
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe2);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_ThatWillBe3);
+ }
+ DisplayItemMessageOnField(taskId, gStringVar4, sub_80B3D38, 0xC3E1);
+ }
+ }
+ }
+ else
+ sub_80B43F0(taskId);
+ }
+ else if (gMain.newKeys & B_BUTTON) // go back to buy/sell/exit menu
+ {
+ PlaySE(SE_SELECT);
+ sub_80B43F0(taskId);
+ }
+ }
+}
+
+void sub_80B4378(u8 taskId)
+{
+ MenuZeroFillWindowRect(0, 0xE, 0x1D, 0x13);
+ MenuZeroFillWindowRect(0, 0xA, 0xD, 0xD);
+ sub_80A3FA0(gBGTilemapBuffers[1], 0x1, 0xB, 0xC, 0x2, 0);
+ sub_80B3420();
+ sub_80B3764(6, 7);
+ sub_80B37EC();
+ StartVerticalScrollIndicators(0);
+ StartVerticalScrollIndicators(1);
+ sub_80B32A4();
+ gTasks[taskId].func = sub_80B40E8;
+}
+
+void sub_80B43F0(u8 taskId)
+{
+ gFieldCallback = sub_80B3050;
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskId].func = Task_ExitBuyMenu;
+}
+
+void Task_ExitBuyMenu(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ CloseMoneyWindow(0, 0);
+ BuyMenuFreeMemory();
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ DestroyTask(taskId);
+ }
+}
+
+void sub_80B4470(u8 taskId)
+{
+ u16 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (gUnknown_02038724[i].itemId == gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor]
+ && gUnknown_02038724[i].quantity != 0)
+ {
+ if (gUnknown_02038724[i].quantity + gTasks[taskId].data[1] > 255)
+ gUnknown_02038724[i].quantity = 255;
+ else
+ gUnknown_02038724[i].quantity += gTasks[taskId].data[1];
+ return;
+ }
+ }
+
+ if (gUnknown_02038730 < 3)
+ {
+ gUnknown_02038724[gUnknown_02038730].itemId = gMartInfo.itemList[gMartInfo.choicesAbove + gMartInfo.cursor];
+ gUnknown_02038724[gUnknown_02038730].quantity = gTasks[taskId].data[1];
+ gUnknown_02038730++;
+ }
+}
+
+void ClearItemPurchases(void)
+{
+ gUnknown_02038730 = 0;
+ ClearItemSlots(gUnknown_02038724, 3);
+}
+
+void CreatePokemartMenu(u16 *itemList)
+{
+ CreateShopMenu(MART_TYPE_0);
+ SetShopItemsForSale(itemList);
+ ClearItemPurchases();
+ SetShopMenuCallback(EnableBothScriptContexts);
+}
+
+void CreateDecorationShop1Menu(u16 *itemList)
+{
+ CreateShopMenu(MART_TYPE_1);
+ SetShopItemsForSale(itemList);
+ SetShopMenuCallback(EnableBothScriptContexts);
+}
+
+void CreateDecorationShop2Menu(u16 *itemList)
+{
+ CreateShopMenu(MART_TYPE_2);
+ SetShopItemsForSale(itemList);
+ SetShopMenuCallback(EnableBothScriptContexts);
+}
+
+void sub_80B45B4(u8 taskId, const s16 *list, u16 c)
+{
+ s16 r5 = gTasks[taskId].data[4] - 1;
+ s16 r3 = gTasks[taskId].data[5] - 1;
+ s16 r4 = gTasks[taskId].data[1];
+ s16 y;
+ s16 x;
+
+ if (gTasks[taskId].data[2] == 0)
+ {
+ for (y = 0; y < 3; y++)
+ {
+ for (x = 0; x < 3; x++)
+ {
+ s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y);
+
+ if (list[r4] == metatileId)
+ {
+ if (r4 != 2)
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[r4 + 1]);
+ else
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[0]);
+ }
+ }
+ }
+ }
+ else
+ {
+ for (y = 0; y < 3; y++)
+ {
+ for (x = 0; x < 3; x++)
+ {
+ s16 metatileId = MapGridGetMetatileIdAt(r5 + x, r3 + y);
+
+ if (list[2 - r4] == metatileId)
+ {
+ if (r4 != 2)
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[1 - r4]);
+ else
+ MapGridSetMetatileIdAt(r5 + x, r3 + y, c | list[2]);
+ }
+ }
+ }
+ }
+}
+
+static const u16 gUnknown_083CC714[] = {0x284, 0x282, 0x280};
+static const u16 gUnknown_083CC71A[] = {0x285, 0x283, 0x281};
+static const u16 gUnknown_083CC720[] = {0x28C, 0x28A, 0x288};
+static const u16 gUnknown_083CC726[] = {0x28D, 0x28B, 0x289};
+static const u16 gUnknown_083CC72C[] = {0x2A0, 0x2A2, 0x2A4};
+static const u16 gUnknown_083CC732[] = {0x2A1, 0x2A3, 0x2A5};
+static const u16 gUnknown_083CC738[] = {0x2A8, 0x2AA, 0x2AC};
+
+void sub_80B4710(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ data[3] = 1;
+
+ switch (data[0])
+ {
+ case 0:
+ sub_80B45B4(taskId, gUnknown_083CC714, 0);
+ break;
+ case 1:
+ sub_80B45B4(taskId, gUnknown_083CC71A, 0);
+ break;
+ case 2:
+ sub_80B45B4(taskId, gUnknown_083CC720, 0xC00);
+ break;
+ case 3:
+ sub_80B45B4(taskId, gUnknown_083CC726, 0);
+ break;
+ case 4:
+ sub_80B45B4(taskId, gUnknown_083CC72C, 0xC00);
+ break;
+ case 5:
+ sub_80B45B4(taskId, gUnknown_083CC732, 0);
+ break;
+ case 6:
+ sub_80B45B4(taskId, gUnknown_083CC738, 0);
+ break;
+ }
+
+ data[0] = (data[0] + 1) & 7;
+ if (!data[0])
+ {
+ DrawWholeMapView();
+ data[1] = (data[1] + 1) % 3;
+ data[3] = 0;
+ }
+}
+
+u8 sub_80B47D8(u16 var)
+{
+ u8 taskId = CreateTask(sub_80B4710, 0);
+ s16 *data = gTasks[taskId].data;
+
+ PlayerGetDestCoords(&data[4], &data[5]);
+ data[0] = 0;
+ data[1] = 0;
+ data[2] = var;
+ sub_80B4710(taskId);
+ return taskId;
+}
+
+void sub_80B4824(u8 var)
+{
+ gUnknown_02038731 = sub_80B47D8(var);
+}
+
+void sub_80B483C(void)
+{
+ DestroyTask(gUnknown_02038731);
+}
+
+bool8 sub_80B4850(void)
+{
+ if (gTasks[gUnknown_02038731].data[3] == 0 && gTasks[gUnknown_02038731].data[1] == 2)
+ return FALSE;
+ else
+ return TRUE;
+}
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 411690aff..6e44090df 100644
--- a/src/start_menu.c
+++ b/src/field/start_menu.c
@@ -15,7 +15,7 @@
#include "pokedex.h"
#include "pokemon_menu.h"
#include "pokenav.h"
-#include "rom4.h"
+#include "overworld.h"
#include "safari_zone.h"
#include "save.h"
#include "save_menu_util.h"
@@ -505,7 +505,7 @@ static u8 RunSaveDialogCallback(void)
return saveDialogCallback();
}
-void InitSaveDialog(void)
+void ScrSpecial_DoSaveDialog(void)
{
sub_807160C();
CreateTask(Task_SaveDialog, 0x50);
@@ -515,7 +515,7 @@ static void DisplaySaveMessageWithCallback(const u8 *ptr, u8 (*func)(void))
{
StringExpandPlaceholders(gStringVar4, ptr);
MenuDisplayMessageBox();
- sub_8072044(gStringVar4);
+ MenuPrintMessageDefaultCoords(gStringVar4);
savingComplete = TRUE;
saveDialogCallback = func;
}
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 ea06058e9..61f48fad8 100644
--- a/src/trader.c
+++ b/src/field/trader.c
@@ -3,6 +3,7 @@
#include "decoration_inventory.h"
#include "event_data.h"
#include "main.h"
+#include "mauville_man.h"
#include "menu.h"
#include "menu_helpers.h"
#include "script.h"
@@ -36,7 +37,7 @@ void sub_810993C(void)
{
u8 i, j;
u8 buffer[12];
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
for (i = 0; i < 3; i++)
{
@@ -55,13 +56,13 @@ void sub_810993C(void)
}
}
-void sub_81099CC(void)
+void TraderSetup(void)
{
u8 i;
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
- trader->unk0 = 2;
- trader->unk31 = 0;
+ trader->id = MAUVILLE_MAN_TRADER;
+ trader->alreadyTraded = FALSE;
for (i = 0; i < 4; i++)
{
@@ -74,8 +75,8 @@ void sub_81099CC(void)
void sub_8109A20(void)
{
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
- trader->unk31 = 0;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
+ trader->alreadyTraded = FALSE;
}
void sub_8109A30(u8 value)
@@ -83,12 +84,12 @@ void sub_8109A30(u8 value)
VarSet(VAR_RECYCLE_GOODS, value);
}
-void sub_8109A48(u8 taskId)
+void CreateAvailableDecorationsMenu(u8 taskId)
{
u8 i;
u8 numChoices = 1;
u8 numDecorations = 0;
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
for (i = 0; i < 4; i++)
{
@@ -139,9 +140,9 @@ void sub_8109B34(u8 taskId, u8 decorationId)
EnableBothScriptContexts();
}
-void sub_8109B7C(u8 taskId)
+void Task_HandleGetDecorationMenuInput(u8 taskId)
{
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
if (gMain.newKeys & DPAD_UP)
{
@@ -174,13 +175,13 @@ void sub_8109B7C(u8 taskId)
}
}
-void sub_8109C44(void)
+void ScrSpecial_GetTraderTradedFlag(void)
{
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
- gScriptResult = trader->unk31;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
+ gScriptResult = trader->alreadyTraded;
}
-void sub_8109C58(void)
+void ScrSpecial_DoesPlayerHaveNoDecorations(void)
{
u8 i;
@@ -195,7 +196,7 @@ void sub_8109C58(void)
gScriptResult = TRUE;
}
-void sub_8109C90(void)
+void ScrSpecial_IsDecorationFull(void)
{
gScriptResult = FALSE;
if (gDecorations[gSpecialVar_0x8004].category != gDecorations[gSpecialVar_0x8006].category
@@ -206,7 +207,7 @@ void sub_8109C90(void)
}
}
-void sub_8109CF0(void)
+void ScrSpecial_TraderMenuGiveDecoration(void)
{
CreateTask(sub_80FE7A8, 0);
}
@@ -242,20 +243,20 @@ void sub_8109DAC(u8 taskId)
EnableBothScriptContexts();
}
-void sub_8109DE0(void)
+void ScrSpecial_TraderDoDecorationTrade(void)
{
- struct MauvilleOldManTrader *trader = &gSaveBlock1.oldMan.trader;
+ struct MauvilleManTrader *trader = &gSaveBlock1.mauvilleMan.trader;
sub_81340A8(gSpecialVar_0x8006);
IsThereStorageSpaceForDecoration(gSpecialVar_0x8004);
StringCopy(trader->unk5[gSpecialVar_0x8005], gSaveBlock2.playerName);
trader->unk1[gSpecialVar_0x8005] = gSpecialVar_0x8006;
sub_810993C();
- trader->unk31 = 1;
+ trader->alreadyTraded = TRUE;
}
-void sub_8109E34(void)
+void ScrSpecial_TraderMenuGetDecoration(void)
{
- u8 taskId = CreateTask(sub_8109B7C, 0);
- sub_8109A48(taskId);
+ u8 taskId = CreateTask(Task_HandleGetDecorationMenuInput, 0);
+ CreateAvailableDecorationsMenu(taskId);
}
diff --git a/src/field/trainer_see.c b/src/field/trainer_see.c
new file mode 100644
index 000000000..5a8ebbafc
--- /dev/null
+++ b/src/field/trainer_see.c
@@ -0,0 +1,519 @@
+#include "global.h"
+#include "trainer_see.h"
+#include "battle_setup.h"
+#include "field_effect.h"
+#include "field_map_obj.h"
+#include "field_player_avatar.h"
+#include "script.h"
+#include "sprite.h"
+#include "task.h"
+#include "util.h"
+
+const u8 gSpriteImage_839B308[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/0.4bpp");
+const u8 gSpriteImage_839B388[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/1.4bpp");
+const u8 gSpriteImage_839B408[] = INCBIN_U8("graphics/unknown_sprites/839B408.4bpp");
+
+u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y);
+
+static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *, s16, s16, s16) =
+{
+ GetTrainerApproachDistanceSouth,
+ GetTrainerApproachDistanceNorth,
+ GetTrainerApproachDistanceWest,
+ GetTrainerApproachDistanceEast,
+};
+
+extern struct SpriteTemplate gSpriteTemplate_839B510;
+extern struct SpriteTemplate gSpriteTemplate_839B528;
+
+bool8 CheckTrainers(void)
+{
+ u8 mapObjId;
+
+ for (mapObjId = 0; mapObjId < 16; mapObjId++)
+ {
+ if (gMapObjects[mapObjId].active
+ && (gMapObjects[mapObjId].trainerType == 1 || gMapObjects[mapObjId].trainerType == 3)
+ && CheckTrainer(mapObjId))
+ return TRUE;
+ }
+ return FALSE;
+}
+
+bool8 CheckTrainer(u8 mapObjId)
+{
+ u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(mapObjId);
+
+ if (GetTrainerFlagFromScriptPointer(scriptPtr))
+ {
+ return FALSE;
+ }
+ else
+ {
+ struct MapObject *trainerObj = &gMapObjects[mapObjId];
+ bool8 canApproach = TrainerCanApproachPlayer(trainerObj);
+
+ if (canApproach)
+ {
+ TrainerWantsBattle(mapObjId, scriptPtr);
+ sub_80842C8(trainerObj, (canApproach - 1));
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+ }
+}
+
+bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
+{
+ s16 x, y;
+ u8 i;
+ u8 approachDistance;
+
+ PlayerGetDestCoords(&x, &y);
+ if (trainerObj->trainerType == 1) // can only see in one direction
+ {
+ approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
+ return CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, trainerObj->mapobj_unk_18);
+ }
+ else // can see in all directions
+ {
+ for (i = 0; i < 4; i++)
+ {
+ approachDistance = sDirectionalApproachDistanceFuncs[i](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
+ if (CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, i + 1)) // directions are 1-4 instead of 0-3. south north west east
+ return approachDistance;
+ }
+ }
+ return FALSE;
+}
+
+// Returns how far south the player is from trainer. 0 if out of trainer's sight.
+u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+{
+ if (trainerObj->coords2.x == x
+ && y > trainerObj->coords2.y
+ && y <= trainerObj->coords2.y + range)
+ return (y - trainerObj->coords2.y);
+ else
+ return 0;
+}
+
+// Returns how far north the player is from trainer. 0 if out of trainer's sight.
+u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+{
+ if (trainerObj->coords2.x == x
+ && y < trainerObj->coords2.y
+ && y >= trainerObj->coords2.y - range)
+ return (trainerObj->coords2.y - y);
+ else
+ return 0;
+}
+
+// Returns how far west the player is from trainer. 0 if out of trainer's sight.
+u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+{
+ if (trainerObj->coords2.y == y
+ && x < trainerObj->coords2.x
+ && x >= trainerObj->coords2.x - range)
+ return (trainerObj->coords2.x - x);
+ else
+ return 0;
+}
+
+// Returns how far east the player is from trainer. 0 if out of trainer's sight.
+u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y)
+{
+ if (trainerObj->coords2.y == y
+ && x > trainerObj->coords2.x
+ && x <= trainerObj->coords2.x + range)
+ return (x - trainerObj->coords2.x);
+ else
+ return 0;
+}
+
+#ifdef BUGFIX_TRAINERAPPROACH
+#define COLLISION_MASK ~1
+#else
+#define COLLISION_MASK 1
+#endif
+
+bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approachDistance, u8 direction)
+{
+ s16 x, y;
+ u8 unk19_temp;
+ u8 unk19b_temp;
+ u8 i;
+ u8 collision;
+
+ if (approachDistance == 0)
+ return FALSE;
+
+ x = trainerObj->coords2.x;
+ y = trainerObj->coords2.y;
+
+ for (i = 0; i <= approachDistance - 1; i++, MoveCoords(direction, &x, &y))
+ {
+ collision = sub_8060024((struct MapObject *)trainerObj, x, y, direction);
+ if (collision != 0 && (collision & COLLISION_MASK))
+ return FALSE;
+ }
+
+ // preserve mapobj_unk_19 before clearing.
+ unk19_temp = trainerObj->mapobj_unk_19;
+ unk19b_temp = trainerObj->mapobj_unk_19b;
+ trainerObj->mapobj_unk_19 = 0;
+ trainerObj->mapobj_unk_19b = 0;
+
+ collision = npc_block_way((struct MapObject *)trainerObj, x, y, direction);
+
+ trainerObj->mapobj_unk_19 = unk19_temp;
+ trainerObj->mapobj_unk_19b = unk19b_temp;
+ if (collision == 4)
+ return approachDistance;
+
+ return FALSE;
+}
+
+#define tTrainerObjHi data[1]
+#define tTrainerObjLo data[2]
+
+void sub_80842C8(struct MapObject *trainerObj, u8 b)
+{
+ u8 taskId = CreateTask(RunTrainerSeeFuncList, 0x50);
+ struct Task *task = &gTasks[taskId];
+
+ task->tTrainerObjHi = (u32)(trainerObj) >> 16;
+ task->tTrainerObjLo = (u32)(trainerObj);
+ task->data[3] = b;
+}
+
+void sub_80842FC(TaskFunc followupFunc)
+{
+ TaskFunc taskFunc = RunTrainerSeeFuncList;
+ u8 taskId = FindTaskIdByFunc(taskFunc);
+
+ SetTaskFuncWithFollowupFunc(taskId, taskFunc, followupFunc);
+ gTasks[taskId].data[0] = 1;
+ taskFunc(taskId);
+}
+
+static bool8 sub_8084394(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+static bool8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj);
+
+static bool8 (*const gTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct MapObject *trainerObj) =
+{
+ sub_8084394,
+ sub_8084398,
+ sub_80843DC,
+ sub_808441C,
+ sub_8084478,
+ sub_8084534,
+ sub_8084578,
+ sub_80845AC,
+ sub_80845C8,
+ sub_80845FC,
+ sub_8084654,
+ sub_80846C8,
+};
+
+void RunTrainerSeeFuncList(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ struct MapObject *trainerObj = (struct MapObject *)((task->tTrainerObjHi << 16) | (task->tTrainerObjLo));
+
+ if (!trainerObj->active)
+ {
+ SwitchTaskToFollowupFunc(taskId);
+ }
+ else
+ {
+ while (gTrainerSeeFuncList[task->data[0]](taskId, task, trainerObj))
+ ;
+ }
+}
+
+static bool8 sub_8084394(u8 taskId, struct Task *task, struct MapObject *trainerObj) // cant be void because it is called with RunTrainerSeeFuncList with arguments.
+{
+ return FALSE;
+}
+
+static bool8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+{
+ u8 direction;
+
+ FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gFieldEffectArguments[0], (u8 *)&gFieldEffectArguments[1], (u8 *)&gFieldEffectArguments[2]);
+ FieldEffectStart(FLDEFF_EXCLAMATION_MARK_ICON_1);
+ direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18);
+ FieldObjectSetSpecialAnim(trainerObj, direction);
+ task->data[0]++;
+ return TRUE;
+}
+
+static bool8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+{
+ if (FieldEffectActiveListContains(0))
+ {
+ return FALSE;
+ }
+ else
+ {
+ task->data[0]++;
+ if (trainerObj->animPattern == 57 || trainerObj->animPattern == 58)
+ task->data[0] = 6;
+ if (trainerObj->animPattern == 63)
+ task->data[0] = 8;
+ return TRUE;
+ }
+}
+
+static bool8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+{
+ if (!(FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)) || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ {
+ if (task->data[3])
+ {
+ FieldObjectSetSpecialAnim(trainerObj, GetGoSpeed0AnimId(trainerObj->mapobj_unk_18));
+ task->data[3]--;
+ }
+ else
+ {
+ FieldObjectSetSpecialAnim(trainerObj, 0x3E);
+ task->data[0]++;
+ }
+ }
+ return FALSE;
+}
+
+static bool8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+{
+ struct MapObject *playerObj;
+
+ if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ return FALSE;
+
+ npc_set_running_behaviour_etc(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18));
+ sub_805C774(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18));
+ sub_805C754(trainerObj);
+
+ playerObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+ if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(playerObj))
+ return FALSE;
+
+ sub_80597E8();
+ FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], GetFaceDirectionAnimId(GetOppositeDirection(trainerObj->mapobj_unk_18)));
+ task->data[0]++;
+ return FALSE;
+}
+
+static bool8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj) // technically only 1 parameter, but needs all 3 for TrainerSeeFuncList call.
+{
+ struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId];
+
+ if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj)
+ || FieldObjectClearAnimIfSpecialAnimFinished(playerObj))
+ SwitchTaskToFollowupFunc(taskId);
+ return FALSE;
+}
+
+static bool8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+{
+ if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
+ || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ {
+ FieldObjectSetSpecialAnim(trainerObj, 0x59);
+ task->data[0]++;
+ }
+ return FALSE;
+}
+
+static bool8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+{
+ if (FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ task->data[0] = 3;
+
+ return FALSE;
+}
+
+static bool8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+{
+ if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
+ || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
+ {
+ FieldObjectSetSpecialAnim(trainerObj, 0x3E);
+ task->data[0]++;
+ }
+ return FALSE;
+}
+
+static bool8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+{
+ if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj))
+ {
+ gFieldEffectArguments[0] = trainerObj->coords2.x;
+ gFieldEffectArguments[1] = trainerObj->coords2.y;
+ gFieldEffectArguments[2] = gSprites[trainerObj->spriteId].subpriority - 1;
+ gFieldEffectArguments[3] = 2;
+ task->data[4] = FieldEffectStart(FLDEFF_POP_OUT_OF_ASH);
+ task->data[0]++;
+ }
+ return FALSE;
+}
+
+static bool8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+{
+ struct Sprite *sprite;
+
+ if (gSprites[task->data[4]].animCmdIndex == 2)
+ {
+ trainerObj->mapobj_bit_26 = 0;
+ trainerObj->mapobj_bit_2 = 1;
+
+ sprite = &gSprites[trainerObj->spriteId];
+ sprite->oam.priority = 2;
+ FieldObjectClearAnimIfSpecialAnimFinished(trainerObj);
+ FieldObjectSetSpecialAnim(trainerObj, sub_806084C(trainerObj->mapobj_unk_18));
+ task->data[0]++;
+ }
+ return FALSE;
+}
+
+static bool8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
+{
+ if (!FieldEffectActiveListContains(49))
+ task->data[0] = 3;
+
+ return FALSE;
+}
+
+static bool8 (*const gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *) =
+{
+ sub_80845C8,
+ sub_80845FC,
+ sub_8084654,
+ sub_80846C8,
+};
+
+void sub_80846E4(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ struct MapObject *mapObj;
+
+ // another mapObj loaded into by loadword?
+ LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&mapObj);
+ if (!task->data[7])
+ {
+ FieldObjectClearAnim(mapObj);
+ task->data[7]++;
+ }
+ gTrainerSeeFuncList2[task->data[0]](taskId, task, mapObj);
+ if (task->data[0] == 3 && !FieldEffectActiveListContains(49))
+ {
+ npc_set_running_behaviour_etc(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18));
+ sub_805C774(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18));
+ DestroyTask(taskId);
+ }
+ else
+ mapObj->mapobj_bit_7 = 0;
+}
+
+void sub_8084794(struct MapObject *var)
+{
+ StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80846E4, 0)].data[1], (u32)var);
+}
+
+static void Task_DestroyTrainerApproachTask(u8);
+
+void ScrSpecial_EndTrainerApproach(void)
+{
+ sub_80842FC(Task_DestroyTrainerApproachTask);
+}
+
+static void Task_DestroyTrainerApproachTask(u8 taskId)
+{
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+}
+
+u8 FldEff_ExclamationMarkIcon1(void)
+{
+ u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x53);
+
+ if (spriteId != 64)
+ sub_8084894(&gSprites[spriteId], 0, 0);
+
+ return 0;
+}
+
+u8 FldEff_ExclamationMarkIcon2(void)
+{
+ u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x52);
+
+ if (spriteId != 64)
+ sub_8084894(&gSprites[spriteId], 33, 1);
+
+ return 0;
+}
+
+u8 FldEff_HeartIcon(void)
+{
+ u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B528, 0, 0, 0x52);
+
+ if (spriteId != 64)
+ sub_8084894(&gSprites[spriteId], 46, 0);
+
+ return 0;
+}
+
+void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3)
+{
+ sprite->oam.priority = 1;
+ sprite->coordOffsetEnabled = 1;
+
+ sprite->data0 = gFieldEffectArguments[0];
+ sprite->data1 = gFieldEffectArguments[1];
+ sprite->data2 = gFieldEffectArguments[2];
+ sprite->data3 = -5;
+ sprite->data7 = a2;
+
+ StartSpriteAnim(sprite, a3);
+}
+
+void objc_exclamation_mark_probably(struct Sprite *sprite)
+{
+ u8 mapObjId;
+
+ if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjId)
+ || sprite->animEnded)
+ {
+ FieldEffectStop(sprite, (u8)sprite->data7);
+ }
+ else
+ {
+ struct Sprite *mapObjSprite = &gSprites[gMapObjects[mapObjId].spriteId];
+ sprite->data4 += sprite->data3;
+ sprite->pos1.x = mapObjSprite->pos1.x;
+ sprite->pos1.y = mapObjSprite->pos1.y - 16;
+ sprite->pos2.x = mapObjSprite->pos2.x;
+ sprite->pos2.y = mapObjSprite->pos2.y + sprite->data4;
+ if (sprite->data4)
+ sprite->data3++;
+ else
+ sprite->data3 = 0;
+ }
+}
diff --git a/src/tv.c b/src/field/tv.c
index c5b47cdae..e9b5e850d 100644
--- a/src/tv.c
+++ b/src/field/tv.c
@@ -15,7 +15,7 @@
#include "species.h"
#include "pokedex.h"
#include "naming_screen.h"
-#include "rom4.h"
+#include "overworld.h"
#include "map_constants.h"
#include "strings.h"
#include "battle.h"
@@ -31,7 +31,7 @@
#include "pokedex.h"
#include "region_map.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "script_menu.h"
#include "species.h"
@@ -235,7 +235,7 @@ void UpdateTVScreensOnMap(int width, int height)
}
else if (FlagGet(SYS_TV_START) && (sub_80BD8B8() != 0xff || sub_80BECA0() != 0xff || IsTVShowInSearchOfTrainersAiring()))
{
- FlagReset(SYS_TV_WATCH);
+ FlagClear(SYS_TV_WATCH);
SetTVMetatilesOnMap(width, height, 0x3);
}
break;
@@ -316,14 +316,14 @@ void GabbyAndTyBeforeInterview(void)
{
u8 i;
- gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.Poke1Species;
- gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.OpponentSpecies;
- gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.LastUsedMove;
+ gSaveBlock1.gabbyAndTyData.mon1 = gBattleResults.poke1Species;
+ gSaveBlock1.gabbyAndTyData.mon2 = gBattleResults.opponentSpecies;
+ gSaveBlock1.gabbyAndTyData.lastMove = gBattleResults.lastUsedMove;
if (gSaveBlock1.gabbyAndTyData.battleNum != 0xff)
gSaveBlock1.gabbyAndTyData.battleNum ++;
gSaveBlock1.gabbyAndTyData.valA_0 = gBattleResults.unk5_0;
- if (gBattleResults.PlayerFaintCounter)
+ if (gBattleResults.playerFaintCounter)
gSaveBlock1.gabbyAndTyData.valA_1 = 1;
else
gSaveBlock1.gabbyAndTyData.valA_1 = 0;
@@ -388,7 +388,7 @@ bool8 GabbyAndTyGetLastQuote(void)
if (gSaveBlock1.gabbyAndTyData.quote == 0xffff)
return FALSE;
- sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote);
+ EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote);
gSaveBlock1.gabbyAndTyData.quote |= 0xffff;
return TRUE;
}
@@ -489,14 +489,14 @@ void sub_80BDEC8(void)
sub_80BEB20();
sub_80BE778();
- if (gBattleResults.CaughtPoke == 0)
+ if (gBattleResults.caughtPoke == 0)
{
sub_80BE074();
}
else
{
sub_80BE028();
- if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.CaughtPoke], gBattleResults.CaughtNick) != 0)
+ if (sub_80BF77C(0xffff) == 0 && StringCompareWithoutExtCtrlCodes(gSpeciesNames[gBattleResults.caughtPoke], gBattleResults.caughtNick) != 0)
{
gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows);
if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_POKEMON_TODAY_CAUGHT) != 1)
@@ -527,8 +527,8 @@ void sub_80BDEC8(void)
pokemonToday->var12 = total;
pokemonToday->ball = item;
StringCopy(pokemonToday->playerName, gSaveBlock2.playerName);
- StringCopy(pokemonToday->nickname, gBattleResults.CaughtNick);
- pokemonToday->species = gBattleResults.CaughtPoke;
+ StringCopy(pokemonToday->nickname, gBattleResults.caughtNick);
+ pokemonToday->species = gBattleResults.caughtPoke;
sub_80BE138((TVShow *)pokemonToday);
pokemonToday->language = GAME_LANGUAGE;
pokemonToday->language2 = sub_80BDEAC(pokemonToday->nickname);
@@ -550,8 +550,8 @@ void sub_80BE028(void)
worldOfMasters->var00 = TVSHOW_WORLD_OF_MASTERS;
}
worldOfMasters->var02++;
- worldOfMasters->var04 = gBattleResults.CaughtPoke;
- worldOfMasters->var08 = gBattleResults.Poke1Species;
+ worldOfMasters->var04 = gBattleResults.caughtPoke;
+ worldOfMasters->var08 = gBattleResults.poke1Species;
worldOfMasters->var0a = gMapHeader.regionMapSectionId;
}
@@ -577,8 +577,8 @@ void sub_80BE074(void)
zero = 0;
pokemonTodayFailed->var00 = TVSHOW_POKEMON_TODAY_FAILED;
pokemonTodayFailed->var01 = zero;
- pokemonTodayFailed->species = gBattleResults.Poke1Species;
- pokemonTodayFailed->species2 = gBattleResults.LastOpponentSpecies;
+ pokemonTodayFailed->species = gBattleResults.poke1Species;
+ pokemonTodayFailed->species2 = gBattleResults.lastOpponentSpecies;
pokemonTodayFailed->var10 = total;
pokemonTodayFailed->var11 = gBattleOutcome;
pokemonTodayFailed->var12 = gMapHeader.regionMapSectionId;
@@ -942,7 +942,6 @@ void sub_80BE97C(bool8 flag)
void sub_80BE9D4(void)
{
- //TVShow *show;
gUnknown_03005D38.var0 = sub_80BF74C(gSaveBlock1.tvShows);
if (gUnknown_03005D38.var0 != -1 && sub_80BF1B4(TVSHOW_FISHING_ADVICE) != 1)
{
@@ -1556,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;
@@ -1624,7 +1623,7 @@ void sub_80BF79C(TVShow *arg0)
break;
i++;
}
- sub_80EB3FC(gStringVar3, arg0->recentHappenings.var04[i]);
+ EasyChat_GetWordText(gStringVar3, arg0->recentHappenings.var04[i]);
}
u8 sub_80BF7E8(struct TVShowNameRaterShow *arg0)
@@ -2320,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;
}
@@ -2575,20 +2574,20 @@ void DoTVShowBravoTrainerPokemonProfile(void)
break;
case 3:
TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
- sub_80EB3FC(gStringVar2, bravoTrainer->var04[0]);
+ EasyChat_GetWordText(gStringVar2, bravoTrainer->var04[0]);
sub_80BF088(2, bravoTrainer->contestResult + 1);
gUnknown_020387E8 = 5;
break;
case 4:
TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
- sub_80EB3FC(gStringVar2, bravoTrainer->var04[0]);
+ EasyChat_GetWordText(gStringVar2, bravoTrainer->var04[0]);
sub_80BF088(2, bravoTrainer->contestResult + 1);
gUnknown_020387E8 = 5;
break;
case 5:
TVShowConvertInternationalString(gStringVar1, bravoTrainer->playerName, bravoTrainer->language);
CopyContestCategoryToStringVar(1, bravoTrainer->contestCategory);
- sub_80EB3FC(gStringVar3, bravoTrainer->var04[1]);
+ EasyChat_GetWordText(gStringVar3, bravoTrainer->var04[1]);
if (bravoTrainer->var14)
gUnknown_020387E8 = 6;
else
@@ -2597,7 +2596,7 @@ void DoTVShowBravoTrainerPokemonProfile(void)
case 6:
StringCopy(gStringVar1, gSpeciesNames[bravoTrainer->species]);
StringCopy(gStringVar2, gMoveNames[bravoTrainer->var14]);
- sub_80EB3FC(gStringVar3, bravoTrainer->var04[1]);
+ EasyChat_GetWordText(gStringVar3, bravoTrainer->var04[1]);
gUnknown_020387E8 = 7;
break;
case 7:
@@ -2680,7 +2679,7 @@ void DoTVShowBravoTrainerBattleTowerProfile(void)
gUnknown_020387E8 = 11;
break;
case 11:
- sub_80EB3FC(gStringVar1, bravoTrainerTower->var18[0]);
+ EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]);
if (bravoTrainerTower->var1b == 0)
gUnknown_020387E8 = 12;
else
@@ -2688,7 +2687,7 @@ void DoTVShowBravoTrainerBattleTowerProfile(void)
break;
case 12:
case 13:
- sub_80EB3FC(gStringVar1, bravoTrainerTower->var18[0]);
+ EasyChat_GetWordText(gStringVar1, bravoTrainerTower->var18[0]);
TVShowConvertInternationalString(gStringVar2, bravoTrainerTower->trainerName, bravoTrainerTower->language);
TVShowConvertInternationalString(gStringVar3, bravoTrainerTower->pokemonName, bravoTrainerTower->language);
gUnknown_020387E8 = 14;
@@ -3106,12 +3105,12 @@ void DoTVShowPokemonFanClubOpinions(void)
case 3:
TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language);
StringCopy(gStringVar2, gSpeciesNames[fanclubOpinions->var02]);
- sub_80EB3FC(gStringVar3, fanclubOpinions->var1C[0]);
+ EasyChat_GetWordText(gStringVar3, fanclubOpinions->var1C[0]);
gUnknown_020387E8 = 4;
break;
case 4:
TVShowConvertInternationalString(gStringVar1, fanclubOpinions->playerName, fanclubOpinions->language);
- sub_80EB3FC(gStringVar3, fanclubOpinions->var1C[1]);
+ EasyChat_GetWordText(gStringVar3, fanclubOpinions->var1C[1]);
TVShowDone();
break;
}
@@ -3176,7 +3175,7 @@ void DoTVShowInSearchOfTrainers(void)
gUnknown_020387E8 = 8;
break;
case 8:
- sub_80EB3FC(gStringVar1, gSaveBlock1.gabbyAndTyData.quote);
+ EasyChat_GetWordText(gStringVar1, gSaveBlock1.gabbyAndTyData.quote);
StringCopy(gStringVar2, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon1]);
StringCopy(gStringVar3, gSpeciesNames[gSaveBlock1.gabbyAndTyData.mon2]);
gScriptResult = 1;
diff --git a/src/use_pokeblock.c b/src/field/use_pokeblock.c
index 3aa2f1fa5..e946a9cfc 100644
--- a/src/use_pokeblock.c
+++ b/src/field/use_pokeblock.c
@@ -1,10 +1,11 @@
//
-// Created by Scott Norton on 5/31/17.
+
+// Modified by Dizzy Egg on 8/15/17.
//
#include "global.h"
#include "main.h"
-#include "rom4.h"
+#include "overworld.h"
#include "string_util.h"
#include "strings.h"
#include "sprite.h"
@@ -16,8 +17,6 @@
#include "sound.h"
#include "songs.h"
#include "pokeblock.h"
-#include "pokeblock_feed.h"
-#include "use_pokeblock.h"
#define GFX_TAG_CONDITIONUPDOWN 0
@@ -29,7 +28,7 @@ const u16 ConditionUpDownPalette[] = INCBIN_U16("graphics/misc/condition_up_down
const u32 ConditionUpDownTiles[] = INCBIN_U32("graphics/misc/condition_up_down.4bpp");
#endif
-const u32 gUnknown_08406118[] = {
+static const u32 sContestStatsMonData[] = {
MON_DATA_COOL,
MON_DATA_TOUGH,
MON_DATA_SMART,
@@ -37,11 +36,11 @@ const u32 gUnknown_08406118[] = {
MON_DATA_BEAUTY
};
-const u8 gUnknown_0840612C[] = {
+static const u8 gUnknown_0840612C[] = {
0, 4, 3, 2, 1
};
-const u8 *const gUnknown_08406134[] = {
+static const u8 *const sContextStatNames[] = {
OtherText_Coolness,
OtherText_Toughness,
OtherText_Smartness,
@@ -49,18 +48,18 @@ const u8 *const gUnknown_08406134[] = {
OtherText_Beauty
};
-const struct SpriteSheet gSpriteSheet_ConditionUpDown = {
+static const struct SpriteSheet gSpriteSheet_ConditionUpDown = {
(u8 *)ConditionUpDownTiles,
sizeof ConditionUpDownTiles,
GFX_TAG_CONDITIONUPDOWN
};
-const struct SpritePalette gSpritePalette_ConditionUpDown = {
+static const struct SpritePalette gSpritePalette_ConditionUpDown = {
ConditionUpDownPalette,
GFX_TAG_CONDITIONUPDOWN
};
-const s16 gUnknown_08406158[][2] = {
+static const s16 gUnknown_08406158[][2] = {
{0x9c, 0x1e},
{0x75, 0x35},
{0x75, 0x70},
@@ -68,28 +67,28 @@ const s16 gUnknown_08406158[][2] = {
{0xc5, 0x35}
};
-const struct OamData gOamData_840616C = {
+static const struct OamData gOamData_840616C = {
.shape = 1,
.size = 2,
.priority = 1
};
-const union AnimCmd gSpriteAnim_8406174[] = {
+static const union AnimCmd gSpriteAnim_8406174[] = {
ANIMCMD_FRAME(0, 5),
ANIMCMD_END
};
-const union AnimCmd gSpriteAnim_840617C[] = {
+static const union AnimCmd gSpriteAnim_840617C[] = {
ANIMCMD_FRAME(8, 5),
ANIMCMD_END
};
-const union AnimCmd *const gSpriteAnimTable_8406184[] = {
+static const union AnimCmd *const gSpriteAnimTable_8406184[] = {
gSpriteAnim_8406174,
gSpriteAnim_840617C
};
-const struct SpriteTemplate gSpriteTemplate_840618C = {
+static const struct SpriteTemplate gSpriteTemplate_840618C = {
GFX_TAG_CONDITIONUPDOWN,
GFX_TAG_CONDITIONUPDOWN,
&gOamData_840616C,
@@ -99,47 +98,44 @@ const struct SpriteTemplate gSpriteTemplate_840618C = {
SpriteCallbackDummy
};
-asm(".text\n"
- ".include \"constants/gba_constants.inc\"");
-
static EWRAM_DATA struct UnkPokenavStruct_Sub1 *gUnknown_02039304 = NULL;
static EWRAM_DATA MainCallback gUnknown_02039308 = NULL;
static EWRAM_DATA struct Pokeblock *gUnknown_0203930C = NULL;
-EWRAM_DATA u8 gUnknown_02039310 = 0;
-EWRAM_DATA s16 gUnknown_02039312 = 0;
+EWRAM_DATA u8 gPokeblockMonID = 0;
+EWRAM_DATA s16 gPokeblockGain = 0;
extern u16 gKeyRepeatStartDelay;
extern u16 gScriptItemId; // FIXME: remove after merge of #349 Pokeblock
-void launch_c3_walk_stairs_and_run_once(void (*const)(void));
-void sub_81361E4(void);
-void sub_813622C(void);
-void sub_8136244(void);
-void sub_8136264(void);
-void sub_8136294(void);
-void sub_81365A0(void);
-void sub_81365C8(void);
-void sub_8136638(void);
-void sub_81368A4(void);
+static void launch_c3_walk_stairs_and_run_once(void (*const)(void));
+static void sub_81361E4(void);
+static void sub_813622C(void);
+static void sub_8136244(void);
+static void sub_8136264(void);
+static void sub_8136294(void);
+static void sub_81365A0(void);
+static void sub_81365C8(void);
+static void sub_8136638(void);
+static void sub_81368A4(void);
void sub_8089668(void);
-void sub_8136B44(void);
-u8 sub_81370E4(u8);
-void sub_8136BB8(void);
-s8 sub_8136C40(void);
-bool8 sub_8137058(void);
-void sub_8136D60(void);
-void sub_8136808(void);
-void sub_8136D8C(void);
-u8 sub_81370A4(u8);
-void sub_81369CC(void);
-void sub_8136EF0(void);
-void sub_8137138(void);
-void sub_8136C6C(void);
-bool8 sub_8136D00(void);
-void sub_8136DC0(u8 *, u8, s16);
-void sub_8136DA0(const u8 *);
-void sub_8136F74(struct Pokeblock *, struct Pokemon *);
-void sub_81371DC(struct Sprite *);
+static void sub_8136B44(void);
+static u8 sub_81370E4(u8);
+static void sub_8136BB8(void);
+static s8 sub_8136C40(void);
+static bool8 sub_8137058(void);
+static void sub_8136D60(void);
+static void sub_8136808(void);
+static void sub_8136D8C(void);
+static u8 sub_81370A4(u8);
+static void sub_81369CC(void);
+static void sub_8136EF0(void);
+static void sub_8137138(void);
+static void sub_8136C6C(void);
+static bool8 sub_8136D00(void);
+static void Pokeblock_BufferEnhancedStatText(u8 *, u8, s16);
+static void Pokeblock_MenuWindowTextPrint(const u8 *);
+static void sub_8136F74(struct Pokeblock *, struct Pokemon *);
+static void sub_81371DC(struct Sprite *);
void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback)
{
@@ -151,18 +147,18 @@ void sub_8136130(struct Pokeblock *pokeblock, MainCallback callback)
SetMainCallback2(sub_8136244);
}
-void sub_8136174(void)
+static void sub_8136174(void)
{
gUnknown_02039304->pokeblock = gUnknown_0203930C;
gUnknown_02039304->callback = gUnknown_02039308;
- gUnknown_02039310 = sub_81370E4(gUnknown_02039310);
- gUnknown_02039304->unk56 = gUnknown_02039310 < 4 ? 0 : 1;
+ gPokeblockMonID = sub_81370E4(gPokeblockMonID);
+ gUnknown_02039304->unk56 = gPokeblockMonID < 4 ? 0 : 1;
gUnknown_083DFEC4->unkD162[0] = 2;
launch_c3_walk_stairs_and_run_once(sub_8136294);
SetMainCallback2(sub_81361E4);
}
-void sub_81361E4(void)
+static void sub_81361E4(void)
{
gUnknown_02039304->unk0();
AnimateSprites();
@@ -176,7 +172,7 @@ void sub_81361E4(void)
}
}
-void sub_813622C(void)
+static void sub_813622C(void)
{
sub_81368A4();
AnimateSprites();
@@ -184,7 +180,7 @@ void sub_813622C(void)
UpdatePaletteFade();
}
-void sub_8136244(void)
+static void sub_8136244(void)
{
gUnknown_02039304->unk0();
AnimateSprites();
@@ -192,7 +188,7 @@ void sub_8136244(void)
UpdatePaletteFade();
}
-void sub_8136264(void)
+static void sub_8136264(void)
{
LoadOam();
ProcessSpriteCopyRequests();
@@ -201,13 +197,13 @@ void sub_8136264(void)
sub_8089668();
}
-void launch_c3_walk_stairs_and_run_once(void (*const func)(void))
+static void launch_c3_walk_stairs_and_run_once(void (*const func)(void))
{
gUnknown_02039304->unk0 = func;
gUnknown_02039304->unk50 = 0;
}
-void sub_8136294(void)
+static void sub_8136294(void)
{
bool32 c1LinkRelatedActive;
switch (gUnknown_02039304->unk50)
@@ -346,7 +342,7 @@ void sub_8136294(void)
}
}
-void sub_81365A0(void)
+static void sub_81365A0(void)
{
while (!gUnknown_02039304->unk55)
{
@@ -354,7 +350,7 @@ void sub_81365A0(void)
}
}
-void sub_81365C8(void)
+static void sub_81365C8(void)
{
switch (gUnknown_02039304->unk50)
{
@@ -374,7 +370,7 @@ void sub_81365C8(void)
}
}
-void sub_8136638(void)
+static void sub_8136638(void)
{
switch (gUnknown_02039304->unk50)
{
@@ -464,12 +460,12 @@ void sub_8136638(void)
}
}
-void sub_8136808(void)
+static void sub_8136808(void)
{
switch (gUnknown_02039304->unk50)
{
case 0:
- gUnknown_02039310 = sub_81370A4(gUnknown_083DFEC4->unk87DC);
+ gPokeblockMonID = sub_81370A4(gUnknown_083DFEC4->unk87DC);
gUnknown_02039308 = gUnknown_02039304->callback;
gUnknown_0203930C = gUnknown_02039304->pokeblock;
BeginNormalPaletteFade(-1, 0, 0, 16, 0);
@@ -479,18 +475,18 @@ void sub_8136808(void)
if (!gPaletteFade.active)
{
gMain.savedCallback = sub_8136174;
- SetMainCallback2(sub_8147ADC);
+ SetMainCallback2(CB2_PreparePokeblockFeedScene);
}
break;
}
}
-void sub_81368A4(void)
+static void sub_81368A4(void)
{
switch (gUnknown_02039304->unk50)
{
case 0:
- if (gUnknown_083DFEC4->unk87DC != gUnknown_02039310)
+ if (gUnknown_083DFEC4->unk87DC != gPokeblockMonID)
{
sub_80F5060(gUnknown_02039304->unk56);
gUnknown_02039304->unk50++;
@@ -538,7 +534,7 @@ void sub_81368A4(void)
}
}
-void sub_81369CC(void)
+static void sub_81369CC(void)
{
switch (gUnknown_02039304->unk50)
{
@@ -578,14 +574,14 @@ void sub_81369CC(void)
case 5:
if (gMain.newKeys & (A_BUTTON | B_BUTTON) && !sub_8136D00())
{
- sub_810CA6C((u8)gScriptItemId);
+ PokeblockClearIfExists((u8)gScriptItemId);
launch_c3_walk_stairs_and_run_once(sub_8136B44);
}
break;
}
}
-void sub_8136B44(void)
+static void sub_8136B44(void)
{
switch (gUnknown_02039304->unk50)
{
@@ -609,7 +605,7 @@ void sub_8136B44(void)
}
}
-void sub_8136BB8(void)
+static void sub_8136BB8(void)
{
GetMonData(&gPlayerParty[sub_81370A4(gUnknown_083DFEC4->unk87DC)], MON_DATA_NICKNAME, gUnknown_02039304->stringBuffer);
StringGetEnd10(gUnknown_02039304->stringBuffer);
@@ -621,7 +617,7 @@ void sub_8136BB8(void)
MoveMenuCursor(0);
}
-s8 sub_8136C40(void)
+static s8 sub_8136C40(void)
{
s8 retval = ProcessMenuInputNoWrap();
if ((u8)(retval + 1) < 3)
@@ -632,124 +628,68 @@ s8 sub_8136C40(void)
return retval;
}
-void sub_8136C6C(void)
+static void sub_8136C6C(void)
{
BasicInitMenuWindow(&gWindowConfig_81E709C);
MenuDrawTextWindow(0, 16, 29, 19);
for (gUnknown_02039304->unk53 = 0; gUnknown_02039304->unk53 < 5 && gUnknown_02039304->unk61[gUnknown_02039304->unk53] == 0; gUnknown_02039304->unk53++);
if (gUnknown_02039304->unk53 < 5)
{
- sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]);
+ Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]);
}
else
{
- sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0);
+ Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, 0);
}
- sub_8136DA0(gUnknown_02039304->stringBuffer);
+ Pokeblock_MenuWindowTextPrint(gUnknown_02039304->stringBuffer);
}
-#ifdef NONMATCHING
-bool8 sub_8136D00(void)
+static bool8 sub_8136D00(void)
{
while (1)
{
- if (++gUnknown_02039304->unk53 >= 5)
+ gUnknown_02039304->unk53++;
+ if (gUnknown_02039304->unk53 < 5)
{
- break;
+ if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0)
+ break;
}
- if (gUnknown_02039304->unk61[gUnknown_02039304->unk53] != 0)
+ else
{
- sub_8136DC0(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]);
- sub_8136DA0(gUnknown_02039304->stringBuffer);
- return TRUE;
+ gUnknown_02039304->unk53 = 5;
+ return FALSE;
}
}
- gUnknown_02039304->unk53 = 5;
- return FALSE;
-}
-#else
-__attribute__((naked))
-bool8 sub_8136D00(void)
-{
- asm_unified("\tpush {r4,r5,lr}\n"
- "\tldr r4, _08136D30 @ =gUnknown_02039304\n"
- "\tadds r3, r4, 0\n"
- "\tmovs r5, 0x5\n"
- "_08136D08:\n"
- "\tldr r0, [r3]\n"
- "\tadds r0, 0x53\n"
- "\tldrb r1, [r0]\n"
- "\tadds r1, 0x1\n"
- "\tstrb r1, [r0]\n"
- "\tldr r2, [r3]\n"
- "\tadds r1, r2, 0\n"
- "\tadds r1, 0x53\n"
- "\tldrb r0, [r1]\n"
- "\tcmp r0, 0x4\n"
- "\tbhi _08136D34\n"
- "\tadds r0, r2, 0\n"
- "\tadds r0, 0x61\n"
- "\tldrb r1, [r1]\n"
- "\tadds r0, r1\n"
- "\tldrb r0, [r0]\n"
- "\tcmp r0, 0\n"
- "\tbne _08136D3A\n"
- "\tb _08136D08\n"
- "\t.align 2, 0\n"
- "_08136D30: .4byte gUnknown_02039304\n"
- "_08136D34:\n"
- "\tstrb r5, [r1]\n"
- "\tmovs r0, 0\n"
- "\tb _08136D5A\n"
- "_08136D3A:\n"
- "\tldr r2, [r4]\n"
- "\tadds r0, r2, 0\n"
- "\tadds r0, 0x10\n"
- "\tadds r1, r2, 0\n"
- "\tadds r1, 0x53\n"
- "\tldrb r1, [r1]\n"
- "\tadds r2, 0x61\n"
- "\tadds r2, r1\n"
- "\tldrb r2, [r2]\n"
- "\tbl sub_8136DC0\n"
- "\tldr r0, [r4]\n"
- "\tadds r0, 0x10\n"
- "\tbl sub_8136DA0\n"
- "\tmovs r0, 0x1\n"
- "_08136D5A:\n"
- "\tpop {r4,r5}\n"
- "\tpop {r1}\n"
- "\tbx r1");
+ Pokeblock_BufferEnhancedStatText(gUnknown_02039304->stringBuffer, gUnknown_02039304->unk53, gUnknown_02039304->unk61[gUnknown_02039304->unk53]);
+ Pokeblock_MenuWindowTextPrint(gUnknown_02039304->stringBuffer);
+ return TRUE;
}
-#endif
-void sub_8136D60(void)
+static void sub_8136D60(void)
{
BasicInitMenuWindow(&gWindowConfig_81E709C);
MenuDrawTextWindow(0, 16, 29, 19);
MenuPrint(gOtherText_WontEat, 1, 17);
}
-void sub_8136D8C(void)
+static void sub_8136D8C(void)
{
MenuZeroFillScreen();
BasicInitMenuWindow(&gWindowConfig_81E7080);
}
-void sub_8136DA0(const u8 *message)
+static void Pokeblock_MenuWindowTextPrint(const u8 *message)
{
MenuDrawTextWindow(0, 16, 29, 19);
MenuPrint(message, 1, 17);
}
#ifdef NONMATCHING
-void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
+static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 statID, s16 a2)
{
- u16 v0 = a2;
if (a2 != 0)
{
- if ((v0 = max(a2, 0)) == 0);
- StringCopy(dest, gUnknown_08406134[a1]);
+ StringCopy(dest, sContextStatNames[statID]);
StringAppend(dest, gOtherText_WasEnhanced);
}
else
@@ -759,7 +699,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
}
#else
__attribute__((naked))
-void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
+static void Pokeblock_BufferEnhancedStatText(u8 *dest, u8 a1, s16 a2)
{
asm_unified("\tpush {r4,lr}\n"
"\tadds r4, r0, 0\n"
@@ -775,7 +715,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
"\tmovs r0, 0\n"
"_08136DD8:\n"
"\tlsls r0, 16\n"
- "\tldr r1, _08136DF4 @ =gUnknown_08406134\n"
+ "\tldr r1, _08136DF4 @ =sContextStatNames\n"
"\tlsls r0, r3, 2\n"
"\tadds r0, r1\n"
"\tldr r1, [r0]\n"
@@ -786,7 +726,7 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
"\tbl StringAppend\n"
"\tb _08136E04\n"
"\t.align 2, 0\n"
- "_08136DF4: .4byte gUnknown_08406134\n"
+ "_08136DF4: .4byte sContextStatNames\n"
"_08136DF8: .4byte gOtherText_WasEnhanced\n"
"_08136DFC:\n"
"\tldr r1, _08136E0C @ =gOtherText_NothingChanged\n"
@@ -801,16 +741,16 @@ void sub_8136DC0(u8 *dest, u8 a1, s16 a2)
}
#endif
-void sub_8136E10(struct Pokemon *pokemon, u8 *data)
+static void Pokeblock_GetMonContestStats(struct Pokemon *pokemon, u8 *data)
{
u16 i;
for (i=0; i<5; i++)
{
- data[i] = GetMonData(pokemon, gUnknown_08406118[i]);
+ data[i] = GetMonData(pokemon, sContestStatsMonData[i]);
}
}
-void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
+static void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
{
u16 i;
s16 cstat;
@@ -820,14 +760,14 @@ void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
sub_8136F74(pokeblock, pokemon);
for (i=0; i<5; i++)
{
- data = GetMonData(pokemon, gUnknown_08406118[i]);
+ data = GetMonData(pokemon, sContestStatsMonData[i]);
cstat = data + gUnknown_02039304->unk66[i];
if (cstat < 0)
cstat = 0;
if (cstat > 255)
cstat = 255;
data = cstat;
- SetMonData(pokemon, gUnknown_08406118[i], &data);
+ SetMonData(pokemon, sContestStatsMonData[i], &data);
}
cstat = (u8)GetMonData(pokemon, MON_DATA_SHEEN);
cstat = cstat + pokeblock->feel;
@@ -838,21 +778,21 @@ void sub_8136E40(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
}
}
-void sub_8136EF0(void)
+static void sub_8136EF0(void)
{
u16 i;
struct Pokemon *pokemon = gPlayerParty;
pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx;
- sub_8136E10(pokemon, gUnknown_02039304->unk57);
+ Pokeblock_GetMonContestStats(pokemon, gUnknown_02039304->unk57);
sub_8136E40(gUnknown_02039304->pokeblock, pokemon);
- sub_8136E10(pokemon, gUnknown_02039304->unk5c);
+ Pokeblock_GetMonContestStats(pokemon, gUnknown_02039304->unk5c);
for (i=0; i<5; i++)
{
gUnknown_02039304->unk61[i] = gUnknown_02039304->unk5c[i] - gUnknown_02039304->unk57[i];
}
}
-void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
+static void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
{
s8 direction;
s8 i;
@@ -864,9 +804,9 @@ void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
gUnknown_02039304->unk66[2] = pokeblock->bitter;
gUnknown_02039304->unk66[3] = pokeblock->sweet;
gUnknown_02039304->unk66[4] = pokeblock->dry;
- if (gUnknown_02039312 > 0)
+ if (gPokeblockGain > 0)
direction = 1;
- else if (gUnknown_02039312 < 0)
+ else if (gPokeblockGain < 0)
direction = -1;
else
return;
@@ -884,7 +824,7 @@ void sub_8136F74(struct Pokeblock *pokeblock, struct Pokemon *pokemon)
}
}
-bool8 sub_8137058(void)
+static bool8 sub_8137058(void)
{
struct Pokemon *pokemon = gPlayerParty;
pokemon += gUnknown_083DFEC4->unk893c[gUnknown_083DFEC4->unk87DC].partyIdx;
@@ -893,7 +833,7 @@ bool8 sub_8137058(void)
return FALSE;
}
-u8 sub_81370A4(u8 a0)
+static u8 sub_81370A4(u8 a0)
{
u8 i;
for (i=0; i<PARTY_SIZE; i++)
@@ -908,7 +848,7 @@ u8 sub_81370A4(u8 a0)
return 0;
}
-u8 sub_81370E4(u8 a0)
+static u8 sub_81370E4(u8 a0)
{
u8 ct;
u8 i;
@@ -927,7 +867,7 @@ u8 sub_8137124(u8 a0)
return sub_81370A4(a0);
}
-void sub_8137138(void)
+static void sub_8137138(void)
{
u16 flavor;
u8 spriteidx;
@@ -951,7 +891,7 @@ void sub_8137138(void)
}
}
-void sub_81371DC(struct Sprite *sprite)
+static void sub_81371DC(struct Sprite *sprite)
{
if (sprite->data0 <= 5)
sprite->pos2.y -= 2;
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 96f47c067..390898917 100644
--- a/src/wild_encounter.c
+++ b/src/field/wild_encounter.c
@@ -5,11 +5,12 @@
#include "event_data.h"
#include "field_player_avatar.h"
#include "fieldmap.h"
+#include "map_constants.h"
#include "metatile_behavior.h"
#include "pokeblock.h"
#include "rng.h"
#include "roamer.h"
-#include "rom4.h"
+#include "overworld.h"
#include "safari_zone.h"
#include "script.h"
#include "species.h"
@@ -2901,7 +2902,7 @@ const struct WildPokemonInfo Underwater2_WaterMonsInfo = {4, Underwater2_WaterMo
extern u16 gRoute119WaterTileData[];
extern u16 gScriptResult;
extern struct WildPokemon gWildFeebasRoute119Data;
-extern u8 Event_RepelWoreOff[];
+extern u8 S_RepelWoreOff[];
EWRAM_DATA static u8 sWildEncountersDisabled = 0;
EWRAM_DATA static u32 sFeebasRngValue = 0;
@@ -2911,7 +2912,7 @@ EWRAM_DATA static u32 sFeebasRngValue = 0;
static u16 FeebasRandom(void);
static void FeebasSeedRng(u16 seed);
-static bool8 RepelCheck(u8 level);
+static bool8 IsWildLevelAllowedByRepel(u8 level);
static void ApplyFluteEncounterRateMod(u32 *encRate);
static void ApplyCleanseTagEncounterRateMod(u32 *encRate);
@@ -2952,7 +2953,8 @@ static bool8 CheckFeebas(void)
u8 route119section = 0;
u16 waterTileNum;
- if (gSaveBlock1.location.mapGroup == 0 && gSaveBlock1.location.mapNum == 0x22)
+ if (gSaveBlock1.location.mapGroup == MAP_GROUP_ROUTE119
+ && gSaveBlock1.location.mapNum == MAP_ID_ROUTE119)
{
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
x -= 7;
@@ -3161,7 +3163,7 @@ static u8 PickWildMonNature(void)
}
for (i = 0; i < 25; i++)
{
- if (sub_810CAE4(natures[i], safariPokeblock) > 0)
+ if (PokeblockGetGain(natures[i], safariPokeblock) > 0)
return natures[i];
}
}
@@ -3193,7 +3195,7 @@ static bool8 GenerateWildMon(struct WildPokemonInfo *wildMonInfo, u8 area, bool8
break;
}
level = ChooseWildMonLevel(&wildMonInfo->wildPokemon[wildMonIndex]);
- if (checkRepel == TRUE && RepelCheck(level) == FALSE)
+ if (checkRepel == TRUE && IsWildLevelAllowedByRepel(level) == FALSE)
return FALSE;
else
{
@@ -3215,7 +3217,7 @@ static bool8 SetUpMassOutbreakEncounter(bool8 checkRepel)
{
u16 i;
- if (checkRepel == TRUE && RepelCheck(gSaveBlock1.outbreakPokemonLevel) == 0)
+ if (checkRepel == TRUE && IsWildLevelAllowedByRepel(gSaveBlock1.outbreakPokemonLevel) == FALSE)
return FALSE;
else
{
@@ -3302,9 +3304,9 @@ bool8 StandardWildEncounter(u16 a, u16 b)
if (TryStartRoamerEncounter() == TRUE)
{
roamer = &gSaveBlock1.roamer;
- if (RepelCheck(roamer->level))
+ if (IsWildLevelAllowedByRepel(roamer->level))
{
- StartBattle_Roamer();
+ BattleSetup_StartRoamerBattle();
return 1;
}
}
@@ -3312,7 +3314,7 @@ bool8 StandardWildEncounter(u16 a, u16 b)
{
if (DoMassOutbreakEncounterTest() == TRUE && SetUpMassOutbreakEncounter(1) == TRUE)
{
- CheckForSafariZoneAndProceed();
+ BattleSetup_StartWildBattle();
return 1;
}
if (GenerateWildMon(gWildMonHeaders[headerNum].landMonsInfo, 0, TRUE) == TRUE)
@@ -3336,9 +3338,9 @@ bool8 StandardWildEncounter(u16 a, u16 b)
if (TryStartRoamerEncounter() == TRUE)
{
roamer = &gSaveBlock1.roamer;
- if (RepelCheck(roamer->level))
+ if (IsWildLevelAllowedByRepel(roamer->level))
{
- StartBattle_Roamer();
+ BattleSetup_StartRoamerBattle();
return 1;
}
}
@@ -3349,7 +3351,7 @@ bool8 StandardWildEncounter(u16 a, u16 b)
{
label:
//_0808527A
- CheckForSafariZoneAndProceed();
+ BattleSetup_StartWildBattle();
return 1;
}
}
@@ -3361,7 +3363,7 @@ bool8 StandardWildEncounter(u16 a, u16 b)
return 0;
}
-void RockSmashWildEncounter(void)
+void ScrSpecial_RockSmashWildEncounter(void)
{
u16 headerNum = GetCurrentMapWildMonHeader();
@@ -3377,7 +3379,7 @@ void RockSmashWildEncounter(void)
else if (DoWildEncounterTest(wildPokemonInfo->encounterRate, 1) == TRUE
&& GenerateWildMon(wildPokemonInfo, 2, TRUE) == TRUE)
{
- CheckForSafariZoneAndProceed();
+ BattleSetup_StartWildBattle();
gScriptResult = 1;
return;
}
@@ -3403,14 +3405,14 @@ bool8 SweetScentWildEncounter(void)
return FALSE;
if (TryStartRoamerEncounter() == TRUE)
{
- StartBattle_Roamer();
+ BattleSetup_StartRoamerBattle();
return TRUE;
}
if (DoMassOutbreakEncounterTest() == TRUE)
- SetUpMassOutbreakEncounter(0);
+ SetUpMassOutbreakEncounter(FALSE);
else
GenerateWildMon(wildPokemonInfo, 0, FALSE);
- CheckForSafariZoneAndProceed();
+ BattleSetup_StartWildBattle();
return TRUE;
}
else if (MetatileBehavior_IsWaterWildEncounter(MapGridGetMetatileBehaviorAt(x, y)) == 1)
@@ -3420,18 +3422,18 @@ bool8 SweetScentWildEncounter(void)
return FALSE;
if (TryStartRoamerEncounter() == TRUE)
{
- StartBattle_Roamer();
+ BattleSetup_StartRoamerBattle();
return TRUE;
}
GenerateWildMon(wildPokemonInfo, 1, FALSE);
- CheckForSafariZoneAndProceed();
+ BattleSetup_StartWildBattle();
return TRUE;
}
}
return FALSE;
}
-bool8 GetFishingWildMonListHeader(void)
+bool8 DoesCurrentMapHaveFishingMons(void)
{
u16 headerNum = GetCurrentMapWildMonHeader();
@@ -3460,7 +3462,7 @@ void FishingWildEncounter(u8 rod)
}
IncrementGameStat(12);
sub_80BEA50(species);
- CheckForSafariZoneAndProceed();
+ BattleSetup_StartWildBattle();
}
u16 GetLocalWildMon(bool8 *isWaterMon)
@@ -3497,7 +3499,7 @@ u16 GetLocalWildMon(bool8 *isWaterMon)
}
}
-u16 GetMirageIslandMon(void)
+u16 GetLocalWaterMon(void)
{
u16 headerNum = GetCurrentMapWildMonHeader();
@@ -3521,20 +3523,21 @@ bool8 UpdateRepelCounter(void)
VarSet(VAR_REPEL_STEP_COUNT, steps);
if (steps == 0)
{
- ScriptContext1_SetupScript(Event_RepelWoreOff);
+ ScriptContext1_SetupScript(S_RepelWoreOff);
return TRUE;
}
}
return FALSE;
}
-//Returns FALSE if Repel prevents wild Pokemon at the specified level from appearing
-static bool8 RepelCheck(u8 level)
+static bool8 IsWildLevelAllowedByRepel(u8 wildLevel)
{
u8 i;
if (!VarGet(VAR_REPEL_STEP_COUNT))
+ {
return TRUE;
+ }
else
{
for (i = 0; i < 6; i++)
@@ -3542,7 +3545,9 @@ static bool8 RepelCheck(u8 level)
// UB: Too few arguments for function 'GetMonData'
if (GetMonData(&gPlayerParty[i], MON_DATA_HP) && !GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{
- if (level < (u8)GetMonData(&gPlayerParty[i], MON_DATA_LEVEL))
+ u8 ourLevel = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+
+ if (wildLevel < ourLevel)
return FALSE;
else
return TRUE;
diff --git a/src/field_fadetransition.c b/src/field_fadetransition.c
deleted file mode 100644
index 364d55e51..000000000
--- a/src/field_fadetransition.c
+++ /dev/null
@@ -1,87 +0,0 @@
-#include "global.h"
-#include "gba/syscall.h"
-#include "field_fadetransition.h"
-#include "field_player_avatar.h"
-#include "field_weather.h"
-#include "fldeff_flash.h"
-#include "global.fieldmap.h"
-#include "rom4.h"
-#include "script.h"
-#include "task.h"
-
-extern u16 gPlttBufferFaded[];
-
-void palette_bg_fill_white(void)
-{
- u32 source_color = 0x7fff7fff;
- CpuFastSet(&source_color, gPlttBufferFaded, 0x100 | (1 << 24));
-}
-
-void palette_bg_fill_black(void)
-{
- u32 source_color = 0;
- CpuFastSet(&source_color, gPlttBufferFaded, 0x100 | (1 << 24));
-}
-
-void pal_fill_for_map_transition(void)
-{
- u8 map_light = get_map_light_from_warp0();
- switch (fade_type_for_given_maplight_pair(map_light, sav1_map_get_light_level()))
- {
- case 0:
- fade_screen(0, 0);
- palette_bg_fill_black();
- break;
- case 1:
- fade_screen(2, 0);
- palette_bg_fill_white();
- }
-}
-
-void pal_fill_black(void)
-{
- fade_screen(0, 0);
- palette_bg_fill_black();
-}
-
-void fade_8080918(void)
-{
- u8 light_level = sav1_map_get_light_level();
- switch (sub_810CDB8(light_level, warp1_get_mapheader()->mapType))
- {
- case 0:
- fade_screen(1, 0);
- break;
- case 1:
- fade_screen(3, 0);
- }
-}
-
-void sub_8080958(u8 arg)
-{
- sub_8059B88(!arg);
-}
-
-void task0A_asap_script_env_2_enable_and_set_ctx_running(u8 taskID)
-{
- if (sub_8080E70() == 1)
- {
- DestroyTask(taskID);
- EnableBothScriptContexts();
- }
-}
-
-void sub_8080990(void)
-{
- ScriptContext2_Enable();
- sub_8053E90();
- pal_fill_black();
- CreateTask(&task0A_asap_script_env_2_enable_and_set_ctx_running, 0x0a);
-}
-
-void sub_80809B0(void)
-{
- ScriptContext2_Enable();
- pal_fill_black();
- CreateTask(&task0A_asap_script_env_2_enable_and_set_ctx_running, 0x0a);
-}
diff --git a/src/field_ground_effect.c b/src/field_ground_effect.c
deleted file mode 100644
index 42862d0ff..000000000
--- a/src/field_ground_effect.c
+++ /dev/null
@@ -1,240 +0,0 @@
-#include "global.h"
-#include "field_ground_effect.h"
-#include "fieldmap.h"
-#include "metatile_behavior.h"
-
-extern u32 gUnknown_08376008[];
-
-void GetAllGroundEffectFlags_OnSpawn(struct MapObject *mapObj, u32 *flags)
-{
- FieldObjectUpdateMetatileBehaviors(mapObj);
- GetGroundEffectFlags_Reflection(mapObj, flags);
- GetGroundEffectFlags_TallGrassOnSpawn(mapObj, flags);
- GetGroundEffectFlags_LongGrassOnSpawn(mapObj, flags);
- GetGroundEffectFlags_SandPile(mapObj, flags);
- GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
- GetGroundEffectFlags_ShortGrass(mapObj, flags);
- GetGroundEffectFlags_HotSprings(mapObj, flags);
-}
-
-void GetAllGroundEffectFlags_OnBeginStep(struct MapObject *mapObj, u32 *flags)
-{
- FieldObjectUpdateMetatileBehaviors(mapObj);
- GetGroundEffectFlags_Reflection(mapObj, flags);
- GetGroundEffectFlags_TallGrassOnBeginStep(mapObj, flags);
- GetGroundEffectFlags_LongGrassOnBeginStep(mapObj, flags);
- GetGroundEffectFlags_Tracks(mapObj, flags);
- GetGroundEffectFlags_SandPile(mapObj, flags);
- GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
- GetGroundEffectFlags_Puddle(mapObj, flags);
- GetGroundEffectFlags_ShortGrass(mapObj, flags);
- GetGroundEffectFlags_HotSprings(mapObj, flags);
-}
-
-void GetAllGroundEffectFlags_OnFinishStep(struct MapObject *mapObj, u32 *flags)
-{
- FieldObjectUpdateMetatileBehaviors(mapObj);
- GetGroundEffectFlags_ShallowFlowingWater(mapObj, flags);
- GetGroundEffectFlags_SandPile(mapObj, flags);
- GetGroundEffectFlags_Puddle(mapObj, flags);
- GetGroundEffectFlags_Ripple(mapObj, flags);
- GetGroundEffectFlags_ShortGrass(mapObj, flags);
- GetGroundEffectFlags_HotSprings(mapObj, flags);
- GetGroundEffectFlags_Seaweed(mapObj, flags);
- GetGroundEffectFlags_JumpLanding(mapObj, flags);
-}
-
-void FieldObjectUpdateMetatileBehaviors(struct MapObject *mapObj)
-{
- mapObj->mapobj_unk_1F = MapGridGetMetatileBehaviorAt(mapObj->coords3.x, mapObj->coords3.y);
- mapObj->mapobj_unk_1E = MapGridGetMetatileBehaviorAt(mapObj->coords2.x, mapObj->coords2.y);
-}
-
-void GetGroundEffectFlags_Reflection(struct MapObject *mapObj, u32 *flags)
-{
- u32 reflectionFlags[2] = { 0x00000020, 0x00000010 };
- u8 type = FieldObjectCheckForReflectiveSurface(mapObj);
-
- if (type)
- {
- if (!mapObj->mapobj_bit_17)
- {
- mapObj->mapobj_bit_17 = 0;
- mapObj->mapobj_bit_17 = 1;
- *flags |= reflectionFlags[type - 1];
- }
- }
- else
- {
- mapObj->mapobj_bit_17 = 0;
- }
-}
-
-void GetGroundEffectFlags_TallGrassOnSpawn(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E))
- *flags |= 0x1;
-}
-
-void GetGroundEffectFlags_TallGrassOnBeginStep(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsTallGrass(mapObj->mapobj_unk_1E))
- *flags |= 0x2;
-}
-
-void GetGroundEffectFlags_LongGrassOnSpawn(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
- *flags |= 0x4;
-}
-
-void GetGroundEffectFlags_LongGrassOnBeginStep(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsLongGrass(mapObj->mapobj_unk_1E))
- *flags |= 0x8;
-}
-
-void GetGroundEffectFlags_Tracks(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F))
- {
- *flags |= 0x100;
- }
- else if (MetatileBehavior_IsSandOrDeepSand(mapObj->mapobj_unk_1F)
- || MetatileBehavior_IsUnusedFootprintMetatile(mapObj->mapobj_unk_1F))
- {
- *flags |= 0x80;
- }
-}
-
-void GetGroundEffectFlags_SandPile(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsDeepSand(mapObj->mapobj_unk_1F))
- {
- if (!mapObj->mapobj_bit_20)
- {
- mapObj->mapobj_bit_20 = 0;
- mapObj->mapobj_bit_20 = 1;
- *flags |= 0x800;
- }
- }
- else
- {
- mapObj->mapobj_bit_20 = 0;
- }
-}
-
-void GetGroundEffectFlags_ShallowFlowingWater(struct MapObject *mapObj, u32 *flags)
-{
- if ((MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1E) && MetatileBehavior_IsShallowFlowingWater(mapObj->mapobj_unk_1F))
- || (MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1E) && MetatileBehavior_IsPacifidlogLog(mapObj->mapobj_unk_1F)))
- {
- if (!mapObj->mapobj_bit_19)
- {
- mapObj->mapobj_bit_19 = 0;
- mapObj->mapobj_bit_19 = 1;
- *flags |= 0x40;
- }
- }
- else
- {
- mapObj->mapobj_bit_19 = 0;
- }
-}
-
-void GetGroundEffectFlags_Puddle(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsPuddle(mapObj->mapobj_unk_1F))
- {
- *flags |= 0x400;
- }
-}
-
-void GetGroundEffectFlags_Ripple(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_HasRipples(mapObj->mapobj_unk_1E))
- *flags |= 0x200;
-}
-
-void GetGroundEffectFlags_ShortGrass(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsShortGrass(mapObj->mapobj_unk_1F))
- {
- if (!mapObj->mapobj_bit_18)
- {
- mapObj->mapobj_bit_18 = 0;
- mapObj->mapobj_bit_18 = 1;
- *flags |= 0x20000;
- }
- }
- else
- {
- mapObj->mapobj_bit_18 = 0;
- }
-}
-
-void GetGroundEffectFlags_HotSprings(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1E)
- && MetatileBehavior_IsHotSprings(mapObj->mapobj_unk_1F))
- {
- if (!mapObj->mapobj_bit_21)
- {
- mapObj->mapobj_bit_21 = 0;
- mapObj->mapobj_bit_21 = 1;
- *flags |= 0x40000;
- }
- }
- else
- {
- mapObj->mapobj_bit_21 = 0;
- }
-}
-
-void GetGroundEffectFlags_Seaweed(struct MapObject *mapObj, u32 *flags)
-{
- if (MetatileBehavior_IsSeaweed(mapObj->mapobj_unk_1E))
- *flags |= 0x80000;
-}
-
-void GetGroundEffectFlags_JumpLanding(struct MapObject *mapObj, u32 *flags)
-{
- typedef bool8 (*MetatileFunc)(u8);
-
- static const MetatileFunc metatileFuncs[] =
- {
- MetatileBehavior_IsTallGrass,
- MetatileBehavior_IsLongGrass,
- MetatileBehavior_IsPuddle,
- MetatileBehavior_IsSurfableWaterOrUnderwater,
- MetatileBehavior_IsShallowFlowingWater,
- MetatileBehavior_IsATile,
- };
-
- static const u32 jumpLandingFlags[] =
- {
- 0x00001000, // Landing in tall grass
- 0x00002000, // Landing in long grass
- 0x00004000, // Landing on puddle
- 0x00008000, // Landing on surfable water or underwater
- 0x00004000, // Landing on shallow flowing water
- 0x00010000, // Landing on any other type of ground
- };
-
- if (mapObj->mapobj_bit_5 && !mapObj->mapobj_bit_25)
- {
- u8 i;
-
- for (i = 0; i < 6; i++)
- {
- if (metatileFuncs[i](mapObj->mapobj_unk_1E))
- {
- *flags |= jumpLandingFlags[i];
- return;
- }
- }
- }
-}
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 99195ec00..2e1d140b4 100644
--- a/src/m4a_4.c
+++ b/src/libs/m4a_4.c
@@ -45,7 +45,7 @@ void m4aMPlayVolumeControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16
mplayInfo->ident = ID_NUMBER;
}
-void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, u16 pitch)
+void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch)
{
s32 i;
u32 bit;
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/mauville_old_man.c b/src/mauville_old_man.c
deleted file mode 100644
index 93684fc60..000000000
--- a/src/mauville_old_man.c
+++ /dev/null
@@ -1,247 +0,0 @@
-#include "global.h"
-#include "mauville_old_man.h"
-#include "easy_chat.h"
-#include "menu.h"
-#include "rng.h"
-#include "script.h"
-#include "string_util.h"
-#include "strings.h"
-#include "trader.h"
-
-extern u16 gScriptResult;
-extern u16 gSpecialVar_0x8004;
-
-extern u32 gUnknown_083E5388[];
-extern u32 gUnknown_083E53A8[];
-
-extern u16 gUnknown_083E537C[];
-
-void sub_80F7A34(void)
-{
- u16 i;
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- oldMan->oldMan1.unk_2D94 = 0;
- oldMan->oldMan1.unk_2DBD = 0;
-
- for(i = 0; i < 6; i++)
- oldMan->oldMan1.mauvilleOldMan_ecArray[i] = gUnknown_083E537C[i];
-}
-
-void sub_80F7A6C(void)
-{
- struct UnkMauvilleOldManStruct *bard = &gSaveBlock1.oldMan.oldMan1;
-
- bard->unk_2D94 = 1;
- bard->unk_2D95 = 0;
-}
-
-void sub_80F7A7C(void)
-{
- sub_80F83F8();
-}
-
-void sub_80F7A88(void)
-{
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- oldMan->oldMan1.unk_2D94 = 4;
- oldMan->oldMan1.unk_2D95 = 0;
-}
-
-void sub_80F7A98(void)
-{
- sub_81099CC();
-}
-
-void SetMauvilleOldMan(void)
-{
- u32 var = ((u16)((gSaveBlock2.playerTrainerId[1] << 8 | gSaveBlock2.playerTrainerId[0])) % 10) / 2;
-
- switch(var)
- {
- case 0:
- sub_80F7A34();
- break;
- case 1:
- sub_80F7A6C();
- break;
- case 2:
- sub_80F7A98();
- break;
- case 3:
- sub_80F7A7C();
- break;
- case 4:
- sub_80F7A88();
- break;
- }
- sub_80F83D0();
-}
-
-u8 GetCurrentMauvilleOldMan(void)
-{
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- return oldMan->oldMan1.unk_2D94;
-}
-
-void sub_80F7B14(void)
-{
- gScriptResult = GetCurrentMauvilleOldMan();
-}
-
-void sub_80F7B2C(void)
-{
- u16 *scriptPtr = &gScriptResult; // why??
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- *scriptPtr = oldMan->oldMan1.unk_2DBD;
-}
-
-void sub_80F7B40(void)
-{
- u16 i;
- OldMan *oldMan = &gSaveBlock1.oldMan;
- //struct UnkMauvilleOldManStruct *oldManStruct = &gSaveBlock1.oldManStruct;
-
- StringCopy(oldMan->oldMan1.playerName, gSaveBlock2.playerName);
-
- for(i = 0; i < 4; i++)
- oldMan->oldMan1.playerTrainerId[i] = gSaveBlock2.playerTrainerId[i];
-
- for(i = 0; i < 6; i++)
- oldMan->oldMan1.mauvilleOldMan_ecArray[i] = oldMan->oldMan1.mauvilleOldMan_ecArray2[i];
-
- oldMan->oldMan1.unk_2DBD = 1;
-}
-
-void sub_80F7BA0(void)
-{
- struct UnkMauvilleOldManStruct *oldMan = &gSaveBlock1.oldMan.oldMan1;
- u16 specialVar = gSpecialVar_0x8004; // It's a bit odd to use this temp variable, but it seems needed to match.
- u16 *r5;
- u16 i;
- u8 *ptr;
- u8 *r4;
-
- r5 = oldMan->mauvilleOldMan_ecArray2;
- if (specialVar == 0)
- r5 = oldMan->mauvilleOldMan_ecArray;
- ptr = gStringVar4;
- r4 = ptr;
- for (i = 0; i < 2; i++)
- {
- ptr = sub_80EB3FC(ptr, *(r5++));
- while (ptr != r4)
- {
- if (*r4 == 0)
- *r4 = 0x37;
- r4++;
- }
- r4++;
- *(ptr++) = 0;
- ptr = sub_80EB3FC(ptr, *(r5++));
- while (ptr != r4)
- {
- if (*r4 == 0)
- *r4 = 0x37;
- r4++;
- }
- r4++;
- *(ptr++) = 0xFE;
- ptr = sub_80EB3FC(ptr, *(r5++));
- while (ptr != r4)
- {
- if (*r4 == 0)
- *r4 = 0x37;
- r4++;
- }
- //_080F7C2A
- if (i == 0)
- {
- *(ptr++) = EXT_CTRL_CODE_BEGIN;
- *(ptr++) = 0xF;
- }
- }
-}
-
-void sub_80F7C54(void)
-{
- sub_80F7F80(gSpecialVar_0x8004);
- MenuDisplayMessageBox();
- ScriptContext1_Stop();
-}
-
-void sub_80F7C70(void)
-{
- u16 *scriptPtr = &gScriptResult; // again??
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- *scriptPtr = oldMan->oldMan1.unk_2D95;
-}
-
-void sub_80F7C84(void)
-{
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- oldMan->oldMan1.unk_2D95 = 1;
-}
-
-void sub_80F7C90(void)
-{
- u16 var = sub_80EB8EC();
-
- if(var == 0xFFFF)
- {
- gScriptResult = FALSE;
- }
- else
- {
- sub_80EB3FC(gStringVar1, var);
- gScriptResult = TRUE;
- }
-}
-
-void sub_80F7CC8(void)
-{
- OldMan *oldMan = &gSaveBlock1.oldMan;
-
- if(oldMan->oldMan1.unk_2D95 == 10)
- {
- gScriptResult = FALSE;
- oldMan->oldMan1.unk_2D95 = 0;
- }
- else
- gScriptResult = TRUE;
-}
-
-void sub_80F7CF4(void)
-{
- struct UnkMauvilleOldManStruct2 *oldMan = &gSaveBlock1.oldMan.oldMan2;
-
- if(oldMan->unk1 == 0)
- sub_80F7DC0();
-
- if(oldMan->mauvilleOldMan_ecArray[oldMan->unk1] != 0xFFFF) // is not the last element of the array?
- {
- u8 *stringPtr;
- u32 random = Random();
-
- random %= 8;
- stringPtr = sub_80EB3FC(gStringVar4, oldMan->mauvilleOldMan_ecArray[oldMan->unk1]);
- stringPtr = StringCopy(stringPtr, gOtherText_Is);
- stringPtr = StringCopy(stringPtr, (u8 *)gUnknown_083E5388[random]);
- StringCopy(stringPtr, gOtherText_DontYouAgree);
- }
- else
- {
- StringCopy(gStringVar4, (u8 *)gUnknown_083E53A8[oldMan->mauvilleOldMan_ecArray2[oldMan->unk2++]]);
- }
- if(!(Random() % 10))
- oldMan->unk1 = 10;
- else
- oldMan->unk1++;
-
- gScriptResult = TRUE;
-}
diff --git a/src/mystery_event_script.c b/src/mystery_event_script.c
deleted file mode 100644
index f7a1b633d..000000000
--- a/src/mystery_event_script.c
+++ /dev/null
@@ -1,103 +0,0 @@
-#include "global.h"
-#include "mystery_event_script.h"
-#include "script.h"
-#include "string_util.h"
-#include "text.h"
-
-#if ENGLISH
-#define UNK_MASK_1 0x2
-#elif GERMAN
-#define UNK_MASK_1 0x4
-#endif
-
-#ifdef SAPPHIRE
-#define UNK_MASK_2 0x100
-#else
-#define UNK_MASK_2 0x80
-#endif
-
-extern ScrCmdFunc gScriptFuncs[];
-extern ScrCmdFunc gScriptFuncs_End[];
-
-extern u8 gOtherText_DataCannotUseVersion[];
-
-static EWRAM_DATA struct ScriptContext gUnknown_02039288 = {0};
-
-bool32 sub_8126098(u16 a1, u32 a2, u16 a3, u32 a4)
-{
- if (!(a1 & UNK_MASK_1))
- return FALSE;
-
- if (!(a2 & UNK_MASK_1))
- return FALSE;
-
- if (!(a3 & 0x4))
- return FALSE;
-
- if (!(a4 & UNK_MASK_2))
- return FALSE;
-
- return TRUE;
-}
-
-void sub_81260D0(void)
-{
- StringExpandPlaceholders(gStringVar4, gOtherText_DataCannotUseVersion);
- sub_8126160(3);
-}
-
-void sub_81260EC(struct ScriptContext *ctx, u8 *ptr)
-{
- InitScriptContext(ctx, gScriptFuncs, gScriptFuncs_End);
- SetupBytecodeScript(ctx, ptr);
- ctx->data[0] = (u32)ptr;
- ctx->data[1] = 0;
- ctx->data[2] = 0;
- ctx->data[3] = 0;
-}
-
-bool32 sub_812611C(struct ScriptContext *ctx)
-{
- if (RunScript(ctx) && ctx->data[3])
- return TRUE;
- else
- return FALSE;
-}
-
-u32 sub_812613C(u8 *ptr)
-{
- struct ScriptContext *ctx = &gUnknown_02039288;
- sub_81260EC(ctx, ptr);
- while (sub_812611C(ctx))
- ;
- return ctx->data[2];
-}
-
-void sub_8126160(u32 val)
-{
- gUnknown_02039288.data[2] = val;
-}
-
-int sub_812616C(u8 *a1, int a2)
-{
- unsigned int i;
- int sum = 0;
-
- for (i = 0; i < a2; i++)
- sum += a1[i];
-
- return sum;
-}
-
-u32 sub_812618C(u8 *ptr)
-{
- return ptr[0] | (ptr[1] << 8) | (ptr[2] << 16) | (ptr[3] << 24);
-}
-
-void sub_81261A4(u8 *ptr, u32 val)
-{
- ptr[0] = val;
- ptr[1] = val >> 8;
- ptr[2] = val >> 16;
- ptr[3] = val >> 24;
-}
diff --git a/src/pokemon/learn_move.c b/src/pokemon/learn_move.c
new file mode 100644
index 000000000..33252c66b
--- /dev/null
+++ b/src/pokemon/learn_move.c
@@ -0,0 +1,1081 @@
+#include "global.h"
+#include "data2.h"
+#include "field_fadetransition.h"
+#include "main.h"
+#include "menu.h"
+#include "menu_cursor.h"
+#include "palette.h"
+#include "pokemon.h"
+#include "overworld.h"
+#include "script.h"
+#include "songs.h"
+#include "sound.h"
+#include "sprite.h"
+#include "string_util.h"
+#include "strings.h"
+#include "strings2.h"
+#include "task.h"
+#include "trig.h"
+
+extern u8 ewram[];
+extern u16 gSpecialVar_0x8004;
+extern u16 gSpecialVar_0x8005;
+extern u8 gTileBuffer[];
+
+struct ContestMove
+{
+ u8 effect;
+ u8 contestCategory:3;
+ u8 comboStarterId;
+ u8 comboMoves[4];
+};
+
+struct ContestEffect
+{
+ u8 effectType;
+ u8 appeal;
+ u8 jam;
+};
+
+extern const struct ContestMove gContestMoves[];
+extern const struct ContestEffect gContestEffects[];
+extern const struct WindowConfig gWindowConfig_81E6CE4;
+extern const struct WindowConfig gWindowConfig_81E7240;
+extern const u8 *const gUnknown_083CADD4[];
+extern const u8 *const gMoveDescriptions[];
+extern const u8 gTypeNames[][7];
+extern const u8 *const gUnknown_083CAF70[];
+
+#ifdef GERMAN
+extern const u8 deuOtherText_ForgotAndLearned[];
+#endif
+
+extern void sub_809D9F0(struct Pokemon *, u8, u8, void *, u32);
+
+struct LearnMoveStruct
+{
+ u8 state;
+ u8 filler1;
+ u8 unk2;
+ u8 spriteIDs[20];
+ u8 filler17[1];
+ u8 unk18;
+ u8 unk19;
+ u8 numMenuChoices;
+ u8 menuSelection;
+ u8 unk1C;
+ bool8 unk1D;
+ u8 unk1E;
+ u8 filler1F;
+ /*0x020*/ u16 movesToLearn[20];
+ u8 filler48[0x52-0x48];
+ u8 moveNames[6][0x19];
+ u8 fillerE8[0x2C3-0xE8];
+ bool8 unk2C3;
+ bool8 showContestInfo;
+ /*0x2C5*/ u8 partyMon;
+ u8 unk2C6;
+};
+
+static struct LearnMoveStruct *sLearnMoveStruct;
+
+const u16 gDexArrows_Pal[] = INCBIN_U16("graphics/pokedex/arrows.gbapal");
+
+const u8 gDexArrows_Gfx[] = INCBIN_U8("graphics/pokedex/arrows.4bpp");
+
+const u8 gUnknown_08402CF8[][4] =
+{
+ { 0, 0, 9, 13},
+ {10, 0, 29, 7},
+ { 2, 14, 27, 19},
+ {10, 8, 29, 13},
+};
+
+struct UnknownStruct1
+{
+ const u8 *unk0;
+ u8 unk4;
+ u8 unk5;
+ u8 unk6;
+};
+
+const struct UnknownStruct1 gUnknown_08402D08[][4] =
+{
+ {
+ {OtherText_Battle, 1, 1, 0},
+ {OtherText_Power, 1, 4, 1},
+ {OtherText_Accuracy, 1, 9, 2},
+ {NULL, 0, 0, 0},
+ },
+ {
+ {OtherText_Contest, 1, 1, 0},
+ {OtherText_Appeal, 1, 4, 1},
+ {OtherText_Jam, 1, 9, 2},
+ {NULL, 0, 0, 0},
+ },
+};
+
+// XXX: What are these for?
+const u32 unkDataFF00FFEF = 0xFF00FFEF;
+const u8 *const gTileBuffer_ = gTileBuffer;
+
+const struct OamData gOamData_8402D50 = {.shape = 0};
+const struct OamData gOamData_8402D58 = {.shape = 2};
+const struct OamData gOamData_8402D60 = {.shape = 1};
+
+const union AnimCmd gSpriteAnim_8402D68[] =
+{
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402D70[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_8402D78[] =
+{
+ gSpriteAnim_8402D68,
+ gSpriteAnim_8402D70,
+};
+
+const struct SpriteSheet gUnknown_08402D80 = {gDexArrows_Gfx, sizeof(gDexArrows_Gfx), 5525};
+const struct SpritePalette gUnknown_08402D88 = {gDexArrows_Pal, 5526};
+
+void sub_8133300(struct Sprite *);
+const struct SpriteTemplate gSpriteTemplate_8402D90 =
+{
+ .tileTag = 5525,
+ .paletteTag = 5526,
+ .oam = &gOamData_8402D58,
+ .anims = gSpriteAnimTable_8402D78,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8133300,
+};
+
+const union AnimCmd gSpriteAnim_8402DA8[] =
+{
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402DB0[] =
+{
+ ANIMCMD_FRAME(6, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_8402DB8[] =
+{
+ gSpriteAnim_8402DA8,
+ gSpriteAnim_8402DB0,
+};
+
+const struct SpriteTemplate gSpriteTemplate_8402DC0 =
+{
+ .tileTag = 5525,
+ .paletteTag = 5526,
+ .oam = &gOamData_8402D60,
+ .anims = gSpriteAnimTable_8402DB8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8133300,
+};
+
+const union AnimCmd gSpriteAnim_8402DD8[] =
+{
+ ANIMCMD_FRAME(8, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402DE0[] =
+{
+ ANIMCMD_FRAME(9, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402DE8[] =
+{
+ ANIMCMD_FRAME(10, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd gSpriteAnim_8402DF0[] =
+{
+ ANIMCMD_FRAME(11, 5),
+ ANIMCMD_END,
+};
+
+const union AnimCmd *const gSpriteAnimTable_8402DF8[] =
+{
+ gSpriteAnim_8402DD8,
+ gSpriteAnim_8402DE0,
+ gSpriteAnim_8402DE8,
+ gSpriteAnim_8402DF0,
+};
+
+const struct SpriteTemplate gSpriteTemplate_8402E08 =
+{
+ .tileTag = 5525,
+ .paletteTag = 5526,
+ .oam = &gOamData_8402D50,
+ .anims = gSpriteAnimTable_8402DF8,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8133300,
+};
+
+const u8 gString_AkitoMori[] = _("あきと"); // programmer Akito Mori?
+
+void sub_813269C(u8);
+void CB2_InitLearnMove(void);
+void CB2_LearnMove(void);
+void LearnMoveMain(void);
+void DrawLearnMoveMenuWindow(void);
+void sub_8133030(bool8);
+u8 sub_81330E8(void);
+void sub_8133140(u8);
+u8 sub_8133248(void);
+void ClearLearnMoveVars(void);
+void sub_8133358(void);
+void sub_8133558(void);
+void sub_813362C(void);
+void sub_8133800(void);
+void sub_8133AEC(bool8, int);
+void sub_8133CA4(void);
+
+void VBlankCB_LearnMove(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_8132670(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(sub_813269C, 10);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+}
+
+void sub_813269C(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_InitLearnMove);
+ gFieldCallback = sub_8080990;
+ DestroyTask(taskId);
+ }
+}
+
+void CB2_InitLearnMove(void)
+{
+ REG_DISPCNT = 0;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ sLearnMoveStruct = (struct LearnMoveStruct *)(ewram + 0x17000);
+ ClearLearnMoveVars();
+ sLearnMoveStruct->partyMon = gSpecialVar_0x8004;
+ sub_8133558();
+ SetVBlankCallback(VBlankCB_LearnMove);
+
+ SetUpWindowConfig(&gWindowConfig_81E7240);
+ InitMenuWindow(&gWindowConfig_81E7240);
+ MenuZeroFillScreen();
+
+ SetUpWindowConfig(&gWindowConfig_81E6CE4);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ MenuZeroFillScreen();
+
+ REG_BG0VOFS = 0;
+ REG_BG0VOFS = 0; // huh?
+ REG_BG1HOFS = 0;
+ REG_BG1HOFS = 0; // huh?
+
+ LoadSpriteSheet(&gUnknown_08402D80);
+ LoadSpritePalette(&gUnknown_08402D88);
+ sub_8133358();
+ FillPalette(0, 0, 2);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ SetMainCallback2(CB2_LearnMove);
+}
+
+void sub_81327A4(void)
+{
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ sLearnMoveStruct = (struct LearnMoveStruct *)(ewram + 0x17000);
+ sub_8133558();
+ sLearnMoveStruct->unk2C6 = gSpecialVar_0x8005;
+ SetVBlankCallback(VBlankCB_LearnMove);
+
+ SetUpWindowConfig(&gWindowConfig_81E7240);
+ InitMenuWindow(&gWindowConfig_81E7240);
+ MenuZeroFillScreen();
+
+ SetUpWindowConfig(&gWindowConfig_81E6CE4);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ MenuZeroFillScreen();
+
+ REG_DISPCNT = 0x1340;
+ REG_BG0VOFS = 0;
+ REG_BG0HOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1HOFS = 0; // huh?
+
+ LoadSpriteSheet(&gUnknown_08402D80);
+ LoadSpritePalette(&gUnknown_08402D88);
+ sub_8133358();
+ FillPalette(0, 0, 2);
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ SetMainCallback2(CB2_LearnMove);
+}
+
+void CB2_LearnMove(void)
+{
+ LearnMoveMain();
+ if (sLearnMoveStruct->unk1D)
+ {
+ sLearnMoveStruct->unk1D = FALSE;
+ sub_814AD7C(0x58, (sLearnMoveStruct->unk18 * 2 + 1) * 8);
+ }
+ if (sLearnMoveStruct->unk1E != 0)
+ {
+ sLearnMoveStruct->unk1E = 0;
+ sub_8133800();
+ }
+ if (sLearnMoveStruct->unk2C3)
+ {
+ sub_8133AEC(sLearnMoveStruct->showContestInfo, 1);
+ sLearnMoveStruct->unk2C3 = FALSE;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_81328E8(const u8 *a)
+{
+ StringExpandPlaceholders(gStringVar4, a);
+ MenuPrintMessage(gStringVar4, 3, 15);
+}
+
+void LearnMoveMain(void)
+{
+ switch (sLearnMoveStruct->state)
+ {
+ case 0:
+ sLearnMoveStruct->state++;
+ DrawLearnMoveMenuWindow();
+ sub_8133030(FALSE);
+ sub_8133800();
+ gSprites[1].pos1.x = 0x48;
+ sLearnMoveStruct->unk2C3 = TRUE;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ REG_DISPCNT = 0x1340;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ sLearnMoveStruct->state = 4;
+ break;
+ case 2:
+ sLearnMoveStruct->state++;
+ break;
+ case 3:
+ sub_8133030(FALSE);
+ sub_8133800();
+ sLearnMoveStruct->unk2C3 = TRUE;
+ sLearnMoveStruct->state++;
+ gSprites[1].pos1.x = 0x48;
+ break;
+ case 4:
+ if (sub_81330E8() == 0)
+ sub_813362C();
+ return;
+ case 5:
+ sub_8133140(0);
+ sub_8133800();
+ sLearnMoveStruct->unk2C3 = TRUE;
+ gSprites[1].pos1.x = 0x48;
+ sLearnMoveStruct->state++;
+ break;
+ case 6:
+ if (sub_8133248() == 0)
+ sub_813362C();
+ break;
+ case 8:
+ if (MenuUpdateWindowText())
+ {
+ DisplayYesNoMenu(21, 7, 1);
+ sLearnMoveStruct->state++;
+ }
+ break;
+ case 9:
+ {
+ s8 selection = ProcessMenuInputNoWrap_();
+
+ if (selection == 0)
+ {
+ sub_8133CA4();
+ if (GiveMoveToMon(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]) != 0xFFFF)
+ {
+ sub_81328E8(gOtherText_PokeLearnedMove);
+ gSpecialVar_0x8004 = 1;
+ sLearnMoveStruct->state = 31;
+ }
+ else
+ {
+ sLearnMoveStruct->state = 16;
+ }
+ }
+ else if (selection == -1 || selection == 1)
+ {
+ sub_8133CA4();
+ if (sLearnMoveStruct->showContestInfo == FALSE)
+ sLearnMoveStruct->state = 3;
+ if (sLearnMoveStruct->showContestInfo == TRUE)
+ sLearnMoveStruct->state = 5;
+ }
+ }
+ break;
+ case 12:
+ if (MenuUpdateWindowText())
+ {
+ DisplayYesNoMenu(21, 7, 1);
+ sLearnMoveStruct->state++;
+ }
+ break;
+ case 13:
+ {
+ s8 selection = ProcessMenuInputNoWrap_();
+
+ if (selection == 0)
+ {
+ sub_8133CA4();
+ gSpecialVar_0x8004 = selection;
+ sLearnMoveStruct->state = 14;
+ }
+ else if (selection == -1 || selection == 1)
+ {
+ sub_8133CA4();
+ if (sLearnMoveStruct->showContestInfo == FALSE)
+ sLearnMoveStruct->state = 3;
+ if (sLearnMoveStruct->showContestInfo == TRUE)
+ sLearnMoveStruct->state = 5;
+ }
+ }
+ break;
+ case 16:
+ sub_81328E8(gOtherText_DeleteOlderMove);
+ sLearnMoveStruct->state++;
+ break;
+ case 17:
+ if (MenuUpdateWindowText())
+ {
+ DisplayYesNoMenu(21, 7, 1);
+ sLearnMoveStruct->state = 18;
+ }
+ break;
+ case 18:
+ {
+ s8 var = ProcessMenuInputNoWrap_();
+
+ if (var == 0)
+ {
+ sub_8133CA4();
+ sub_81328E8(gOtherText_WhichMoveToForget);
+ sLearnMoveStruct->state = 19;
+ }
+ else if (var == -1 || var == 1)
+ {
+ sub_8133CA4();
+ sLearnMoveStruct->state = 24;
+ }
+ }
+ break;
+ case 24:
+ sub_81328E8(gOtherText_StopLearningMove);
+ sLearnMoveStruct->state++;
+ break;
+ case 25:
+ if (MenuUpdateWindowText())
+ {
+ sLearnMoveStruct->state = 26;
+ DisplayYesNoMenu(21, 7, 1);
+ }
+ break;
+ case 26:
+ {
+ s8 var = ProcessMenuInputNoWrap_();
+
+ if (var == 0)
+ {
+ sub_8133CA4();
+ sLearnMoveStruct->state = 27;
+ }
+ else if (var == -1 || var == 1)
+ {
+ sub_8133CA4();
+
+ // What's the point? It gets set to 16, anyway.
+ if (sLearnMoveStruct->showContestInfo == FALSE)
+ sLearnMoveStruct->state = 3;
+ if (sLearnMoveStruct->showContestInfo == TRUE)
+ sLearnMoveStruct->state = 5;
+ sLearnMoveStruct->state = 16;
+ }
+ }
+ break;
+ case 27:
+ if (MenuUpdateWindowText())
+ {
+ if (sLearnMoveStruct->showContestInfo == FALSE)
+ sLearnMoveStruct->state = 3;
+ if (sLearnMoveStruct->showContestInfo == TRUE)
+ sLearnMoveStruct->state = 5;
+ }
+ break;
+ case 19:
+ if (MenuUpdateWindowText())
+ {
+ sLearnMoveStruct->state = 20;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ }
+ break;
+ case 20:
+ if (!gPaletteFade.active)
+ {
+ sub_809D9F0(gPlayerParty, sLearnMoveStruct->partyMon, gPlayerPartyCount - 1, sub_81327A4, sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]);
+ sLearnMoveStruct->state = 28;
+ }
+ break;
+ case 21:
+ if (MenuUpdateWindowText())
+ sLearnMoveStruct->state = 14;
+ break;
+ case 22:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ break;
+ case 14:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ sLearnMoveStruct->state++;
+ break;
+ case 15:
+ if (!gPaletteFade.active)
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ break;
+ case 28:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0);
+ sLearnMoveStruct->state++;
+ DrawLearnMoveMenuWindow();
+ sub_8133800();
+ if (sLearnMoveStruct->showContestInfo == FALSE)
+ sub_8133030(TRUE);
+ if (sLearnMoveStruct->showContestInfo == TRUE)
+ {
+ gSprites[1].pos1.x = 0x48;
+ sub_8133140(1);
+ }
+ sub_8133AEC(sLearnMoveStruct->showContestInfo, 1);
+ break;
+ case 29:
+ if (!gPaletteFade.active)
+ {
+ if (sLearnMoveStruct->unk2C6 == 4)
+ {
+ sLearnMoveStruct->state = 24;
+ }
+ else
+ {
+ u16 moveId = GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_MOVE1 + sLearnMoveStruct->unk2C6);
+
+ StringCopy(gStringVar3, gMoveNames[moveId]);
+ RemoveMonPPBonus(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->unk2C6);
+ SetMonMoveSlot(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection], sLearnMoveStruct->unk2C6);
+ StringCopy(gStringVar2, gMoveNames[sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection]]);
+ sub_81328E8(gOtherText_ForgotMove123);
+ sLearnMoveStruct->state = 30;
+ gSpecialVar_0x8004 = 1;
+ }
+ }
+ break;
+ case 30:
+ if (MenuUpdateWindowText())
+ {
+#ifdef ENGLISH
+ sub_81328E8(gOtherText_ForgotOrDidNotLearnMove);
+#else
+ sub_81328E8(deuOtherText_ForgotAndLearned);
+#endif
+ sLearnMoveStruct->state = 31;
+ PlayFanfare(BGM_FANFA1);
+ }
+ break;
+ case 31:
+ if (MenuUpdateWindowText())
+ {
+ PlayFanfare(BGM_FANFA1);
+ sLearnMoveStruct->state = 32;
+ }
+ break;
+ case 32:
+ if (IsFanfareTaskInactive())
+ sLearnMoveStruct->state = 33;
+ break;
+ case 33:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->state = 14;
+ }
+ break;
+ }
+}
+
+void DrawLearnMoveMenuWindow(void)
+{
+ u32 i;
+
+ BasicInitMenuWindow(&gWindowConfig_81E7240);
+ for (i = 0; i < 4; i++)
+ {
+ MenuDrawTextWindow(
+ gUnknown_08402CF8[i][0],
+ gUnknown_08402CF8[i][1],
+ gUnknown_08402CF8[i][2],
+ gUnknown_08402CF8[i][3]);
+ }
+ BasicInitMenuWindow(&gWindowConfig_81E6CE4);
+}
+
+void sub_8133030(bool8 a)
+{
+ s32 i;
+
+ gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE;
+ gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE;
+
+ for (i = 0; i < 16; i++)
+ gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE;
+
+ for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++)
+ {
+ sub_8072C74(gTileBuffer, gUnknown_08402D08[0][i].unk0, 64, 2);
+ MenuPrint(gTileBuffer, gUnknown_08402D08[0][i].unk4, gUnknown_08402D08[0][i].unk5);
+ }
+
+ if (!a)
+ sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1);
+}
+
+u8 sub_81330E8(void)
+{
+ u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT);
+
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR
+ && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON)))
+ result++;
+
+ if (result != 0)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->state = 5;
+ sLearnMoveStruct->showContestInfo = TRUE;
+ }
+
+ return result;
+}
+
+void sub_8133140(bool8 a)
+{
+ s32 i;
+
+ gSprites[sLearnMoveStruct->spriteIDs[0]].invisible = FALSE;
+ gSprites[sLearnMoveStruct->spriteIDs[1]].invisible = FALSE;
+
+ for (i = 0; i < 16; i++)
+ gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE;
+
+ for (i = 0; gUnknown_08402D08[0][i].unk0 != NULL; i++)
+ {
+ sub_8072C74(gTileBuffer, gUnknown_08402D08[1][i].unk0, 64, 2);
+ MenuPrint(gTileBuffer, gUnknown_08402D08[1][i].unk4, gUnknown_08402D08[1][i].unk5);
+ if (i != 0)
+ {
+ MenuZeroFillWindowRect(
+ gUnknown_08402D08[1][i].unk4,
+ gUnknown_08402D08[1][i].unk5 + 2,
+ gUnknown_08402D08[1][i].unk4 + 7,
+ gUnknown_08402D08[1][i].unk5 + 3);
+ }
+ }
+
+ if (!a)
+ sub_8072AB0(gOtherText_TeachWhichMove, 24, 120, 192, 32, 1);
+}
+
+u8 sub_8133248(void)
+{
+ u32 result = (gMain.newKeys & DPAD_LEFT) || (gMain.newKeys & DPAD_RIGHT);
+
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_LR
+ && ((gMain.newKeys & L_BUTTON) || (gMain.newKeys & R_BUTTON)))
+ result++;
+
+ if (result != 0)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->state = 3;
+ sLearnMoveStruct->showContestInfo = FALSE;
+ }
+
+ return result;
+}
+
+void ClearLearnMoveVars(void)
+{
+ s32 i;
+
+ sLearnMoveStruct->state = 0;
+ sLearnMoveStruct->unk2 = 0;
+ sLearnMoveStruct->unk19 = 0;
+ sLearnMoveStruct->unk18 = 0;
+ sLearnMoveStruct->unk1C = 0;
+ sLearnMoveStruct->numMenuChoices = 0;
+ sLearnMoveStruct->menuSelection = 0;
+ sLearnMoveStruct->unk1D = FALSE;
+ sLearnMoveStruct->unk1E = 0;
+ sLearnMoveStruct->unk2C3 = FALSE;
+ sLearnMoveStruct->showContestInfo = FALSE;
+ for (i = 0; i < 20; i++)
+ sLearnMoveStruct->movesToLearn[i] = 0;
+}
+
+void sub_8133300(struct Sprite *sprite)
+{
+ s16 var = (sprite->data1 * 10) & 0xFF;
+
+ switch (sprite->data0)
+ {
+ case 0:
+ break;
+ case 1:
+ sprite->pos2.x = Sin(var, 3) * sprite->data2;
+ break;
+ case 2:
+ sprite->pos2.y = Sin(var, 1) * sprite->data2;
+ break;
+ }
+ sprite->data1++;
+}
+
+void sub_8133358(void)
+{
+ s32 i;
+
+ sLearnMoveStruct->spriteIDs[0] = CreateSprite(&gSpriteTemplate_8402D90, 8, 16, 0);
+ gSprites[sLearnMoveStruct->spriteIDs[0]].data0 = 1;
+ gSprites[sLearnMoveStruct->spriteIDs[0]].data2 = -1;
+
+ sLearnMoveStruct->spriteIDs[1] = CreateSprite(&gSpriteTemplate_8402D90, 72, 16, 0);
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[1]], 1);
+ gSprites[sLearnMoveStruct->spriteIDs[1]].data0 = 1;
+ gSprites[sLearnMoveStruct->spriteIDs[1]].data2 = 1;
+
+ sLearnMoveStruct->spriteIDs[2] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 4, 0);
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[2]], 1);
+ gSprites[sLearnMoveStruct->spriteIDs[2]].data0 = 2;
+ gSprites[sLearnMoveStruct->spriteIDs[2]].data2 = -1;
+
+ sLearnMoveStruct->spriteIDs[3] = CreateSprite(&gSpriteTemplate_8402DC0, 160, 60, 0);
+ gSprites[sLearnMoveStruct->spriteIDs[3]].data0 = 2;
+ gSprites[sLearnMoveStruct->spriteIDs[3]].data2 = 1;
+
+ for (i = 0; i < 8; i++)
+ {
+ sLearnMoveStruct->spriteIDs[i + 4] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x34, 0);
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 2);
+ }
+
+ for (i = 0; i < 8; i++)
+ {
+ sLearnMoveStruct->spriteIDs[i + 12] = CreateSprite(&gSpriteTemplate_8402E08, (i - (i / 4) * 4) * 8 + 0x1C, (i / 4) * 8 + 0x5C, 0);
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2);
+ }
+
+ for (i = 0; i < 20; i++)
+ gSprites[sLearnMoveStruct->spriteIDs[i]].invisible = TRUE;
+
+ CreateBlendedOutlineCursor(16, 0xFFFF, 12, 0x2D9F, 18);
+}
+
+void sub_8133558(void)
+{
+ s32 i;
+ u8 nickname[POKEMON_NAME_LENGTH + 1];
+
+ sLearnMoveStruct->numMenuChoices = GetMoveRelearnerMoves(&gPlayerParty[sLearnMoveStruct->partyMon], sLearnMoveStruct->movesToLearn);
+ for (i = 0; i < sLearnMoveStruct->numMenuChoices; i++)
+ StringCopy(sLearnMoveStruct->moveNames[i], gMoveNames[sLearnMoveStruct->movesToLearn[i]]);
+ GetMonData(&gPlayerParty[sLearnMoveStruct->partyMon], MON_DATA_NICKNAME, nickname);
+ StringCopy10(gStringVar1, nickname);
+ StringCopy(sLearnMoveStruct->moveNames[sLearnMoveStruct->numMenuChoices], gUnknownText_Exit);
+ sLearnMoveStruct->numMenuChoices++;
+}
+
+void sub_813360C(s8 delta)
+{
+ sLearnMoveStruct->unk1C = sLearnMoveStruct->unk18;
+ sLearnMoveStruct->unk18 += delta;
+ sLearnMoveStruct->unk1D = TRUE;
+}
+
+void sub_813362C(void)
+{
+ if (gMain.newAndRepeatedKeys & DPAD_UP)
+ {
+ if (sLearnMoveStruct->menuSelection != 0)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->menuSelection--;
+ sLearnMoveStruct->unk2C3 = TRUE;
+ if (sLearnMoveStruct->unk18 != 0)
+ {
+ sub_813360C(-1);
+ }
+ else if (sLearnMoveStruct->unk19 != 0)
+ {
+ sLearnMoveStruct->unk19--;
+ sLearnMoveStruct->unk1E++;
+ }
+ }
+ }
+ else if (gMain.newAndRepeatedKeys & DPAD_DOWN)
+ {
+ if (sLearnMoveStruct->menuSelection < sLearnMoveStruct->numMenuChoices - 1)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->menuSelection++;
+ sLearnMoveStruct->unk2C3 = TRUE;
+ if (sLearnMoveStruct->unk18 != 2)
+ {
+ sub_813360C(1);
+ }
+ else if (sLearnMoveStruct->unk19 != sLearnMoveStruct->numMenuChoices - 3)
+ {
+ sLearnMoveStruct->unk19++;
+ sLearnMoveStruct->unk1E++;
+ }
+ }
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1)
+ {
+ sLearnMoveStruct->state = 8;
+ StringCopy(gStringVar2, sLearnMoveStruct->moveNames[sLearnMoveStruct->menuSelection]);
+ StringExpandPlaceholders(gStringVar4, gOtherText_TeachSpecificMove);
+ MenuPrintMessage(gStringVar4, 3, 15);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove);
+ MenuPrintMessage(gStringVar4, 3, 15);
+ sLearnMoveStruct->state = 12;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sLearnMoveStruct->state = 12;
+ StringExpandPlaceholders(gStringVar4, gOtherText_GiveUpTeachingMove);
+ MenuPrintMessage(gStringVar4, 3, 15);
+ }
+ if (sLearnMoveStruct->numMenuChoices > 3)
+ {
+ gSprites[2].invisible = FALSE;
+ gSprites[3].invisible = FALSE;
+ if (sLearnMoveStruct->unk19 == 0)
+ gSprites[2].invisible = TRUE;
+ else if (sLearnMoveStruct->unk19 == sLearnMoveStruct->numMenuChoices - 3)
+ gSprites[3].invisible = TRUE;
+ }
+}
+
+void sub_8133800(void)
+{
+ u8 r6 = sLearnMoveStruct->unk19;
+ u8 *str = gTileBuffer;
+ s32 i;
+
+ for (i = 0; i < 3; i++)
+ {
+ if (r6 >= sLearnMoveStruct->numMenuChoices)
+ {
+ str = sub_8072C74(str, gEmptyString_81E72B0, 0x90, 0);
+ }
+ else if (r6 == sLearnMoveStruct->numMenuChoices - 1)
+ {
+ str = sub_8072C74(str, gUnknownText_Exit, 0x90, 0);
+ }
+ else
+ {
+ u16 moveId = sLearnMoveStruct->movesToLearn[r6];
+
+ if (sLearnMoveStruct->showContestInfo)
+ str = sub_8072C74(str, gUnknown_083CAF70[gContestMoves[moveId].contestCategory], 0x27, 0);
+ else
+ str = sub_8072C74(str, gTypeNames[gBattleMoves[moveId].type], 0x27, 0);
+
+ str = sub_8072C74(str, sLearnMoveStruct->moveNames[r6], 0x72, 0);
+
+ str[0] = CHAR_P;
+ str[1] = CHAR_P;
+ str[2] = CHAR_SLASH;
+ str += 3;
+
+ str = sub_8072C14(str, gBattleMoves[moveId].pp, 0x90, 0);
+ }
+ *str++ = CHAR_NEWLINE;
+ r6++;
+ }
+ *str = EOS;
+ MenuPrint(gTileBuffer, 11, 1);
+ sub_813360C(0);
+}
+
+const u8 gUnknown_08402E24[7][3] =
+{
+ {11, 1, 1},
+ { 3, 6, 2},
+ {24, 1, 3},
+ { 3, 11, 4},
+ { 5, 4, 5},
+ { 3, 6, 6},
+ { 3, 11, 7},
+};
+
+const u8 gUnknown_08402E39[] = {0, 1, 2, 3};
+const u8 gUnknown_08402E3D[] = {4, 5, 6};
+
+void PrintMoveInfo(u16 moveId, const u8 *b)
+{
+ u8 str[0x34];
+ u8 numHearts;
+ u8 i;
+
+ StringCopy(str, gExpandedPlaceholder_Empty);
+ switch (b[2])
+ {
+ case 1:
+ break;
+ case 2:
+ if (gBattleMoves[moveId].power < 2)
+ sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2);
+ else
+ sub_8072C14(str, gBattleMoves[moveId].power, 32, 2);
+ MenuPrint(str, b[0], b[1]);
+ break;
+ case 4:
+ if (gBattleMoves[moveId].accuracy == 0)
+ sub_8072C74(str, gOtherText_ThreeDashes2, 32, 2);
+ else
+ sub_8072C14(str, gBattleMoves[moveId].accuracy, 32, 2);
+ MenuPrint(str, b[0], b[1]);
+ break;
+ case 6:
+ MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1);
+ numHearts = gContestEffects[gContestMoves[moveId].effect].appeal / 10;
+ if (numHearts == 255)
+ numHearts = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (i < numHearts)
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 1);
+ else
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 4]], 0);
+ }
+ break;
+ case 7:
+ MenuZeroFillWindowRect(b[0], b[1], b[0], b[1] + 1);
+ numHearts = gContestEffects[gContestMoves[moveId].effect].jam / 10;
+ if (numHearts == 255)
+ numHearts = 0;
+ for (i = 0; i < 8; i++)
+ {
+ if (i < numHearts)
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 3);
+ else
+ StartSpriteAnim(&gSprites[sLearnMoveStruct->spriteIDs[i + 12]], 2);
+ }
+ break;
+ }
+}
+
+void sub_8133AEC(bool8 contestInfo, int unused)
+{
+ u16 i;
+
+ if (sLearnMoveStruct->menuSelection != sLearnMoveStruct->numMenuChoices - 1)
+ {
+ u16 moveId = sLearnMoveStruct->movesToLearn[sLearnMoveStruct->menuSelection];
+
+ if (contestInfo)
+ {
+ for (i = 0; i < 16; i++)
+ gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = FALSE;
+ for (i = 0; i < 3; i++)
+ PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E3D[i]]);
+ sub_8072AB0(gUnknown_083CADD4[gContestMoves[moveId].effect], 0x58, 0x48, 0x90, 32, 1);
+ }
+ else
+ {
+ u8 var;
+
+ for (i = 0; i < 4; i++)
+ PrintMoveInfo(moveId, gUnknown_08402E24[gUnknown_08402E39[i]]);
+ var = sub_8072A18(gMoveDescriptions[moveId - 1], 0x58, 0x48, 0x90, 1);
+ if (var < 2)
+ {
+ u8 r1 = var * 2 + 9;
+
+ MenuFillWindowRectWithBlankTile(11, r1, 28, 12);
+ }
+ }
+ }
+ else
+ {
+ if (contestInfo)
+ {
+ MenuZeroFillWindowRect(gUnknown_08402E24[5][0], gUnknown_08402E24[5][1], gUnknown_08402E24[5][0], gUnknown_08402E24[5][1] + 1);
+ MenuZeroFillWindowRect(gUnknown_08402E24[6][0], gUnknown_08402E24[6][1], gUnknown_08402E24[6][0], gUnknown_08402E24[6][1] + 1);
+ for (i = 0; i < 16; i++)
+ gSprites[sLearnMoveStruct->spriteIDs[i + 4]].invisible = TRUE;
+ }
+ else
+ {
+ MenuZeroFillWindowRect(gUnknown_08402E24[1][0], gUnknown_08402E24[1][1], gUnknown_08402E24[1][0] + 3, gUnknown_08402E24[1][1] + 1);
+ MenuZeroFillWindowRect(gUnknown_08402E24[3][0], gUnknown_08402E24[3][1], gUnknown_08402E24[3][0] + 3, gUnknown_08402E24[3][1] + 1);
+ }
+ MenuZeroFillWindowRect(11, 9, 28, 12);
+ }
+}
+
+void sub_8133CA4(void)
+{
+ MenuZeroFillWindowRect(21, 7, 27, 12);
+ sub_8133AEC(sLearnMoveStruct->showContestInfo, 0);
+}
diff --git a/src/mail.c b/src/pokemon/mail.c
index 658d37976..c5dd119e3 100644
--- a/src/mail.c
+++ b/src/pokemon/mail.c
@@ -8,7 +8,7 @@
#include "name_string_util.h"
#include "palette.h"
#include "pokemon_icon.h"
-#include "rom4.h"
+#include "overworld.h"
#include "sprite.h"
#include "string_util.h"
#include "strings2.h"
@@ -92,7 +92,7 @@ void HandleReadMail(struct MailStruct *arg0, MainCallback arg1, bool8 arg2)
ewram0.varFF = GAME_LANGUAGE;
ewram0.var100 = 1;
- ewram0.var104 = (MainCallback)sub_80EB3FC;
+ ewram0.var104 = (MainCallback)EasyChat_GetWordText;
ewram0.var108 = (MainCallback)ConvertEasyChatWordsToString;
mailDesign = arg0->itemId - ITEM_ORANGE_MAIL;
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/pokemon/pokeblock_feed.c b/src/pokemon/pokeblock_feed.c
new file mode 100644
index 000000000..5d6b215cd
--- /dev/null
+++ b/src/pokemon/pokeblock_feed.c
@@ -0,0 +1,1015 @@
+#include "global.h"
+#include "task.h"
+#include "palette.h"
+#include "main.h"
+#include "menu_helpers.h"
+#include "text.h"
+#include "text_window.h"
+#include "menu.h"
+#include "overworld.h"
+#include "decompress.h"
+#include "data2.h"
+#include "sprite.h"
+#include "item_use.h"
+#include "pokeblock.h"
+#include "party_menu.h"
+#include "strings.h"
+#include "string_util.h"
+#include "m4a.h"
+#include "field_effect.h"
+#include "sound.h"
+#include "trig.h"
+
+extern u8 ewram[];
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern u8 gPokeblockMonID;
+extern s16 gPokeblockGain;
+
+extern const u8 gPokeblockRed_Pal[];
+extern const u8 gPokeblockBlue_Pal[];
+extern const u8 gPokeblockPink_Pal[];
+extern const u8 gPokeblockGreen_Pal[];
+extern const u8 gPokeblockYellow_Pal[];
+extern const u8 gPokeblockPurple_Pal[];
+extern const u8 gPokeblockIndigo_Pal[];
+extern const u8 gPokeblockBrown_Pal[];
+extern const u8 gPokeblockLiteBlue_Pal[];
+extern const u8 gPokeblockOlive_Pal[];
+extern const u8 gPokeblockGray_Pal[];
+extern const u8 gPokeblockBlack_Pal[];
+extern const u8 gPokeblockWhite_Pal[];
+extern const u8 gPokeblockGold_Pal[];
+extern const u8 gPokeblock_Gfx[];
+extern const u8 gBattleTerrainTiles_Building[];
+extern const u8 gUnknown_08E782FC[];
+extern const u8 gBattleTerrainPalette_BattleTower[];
+extern const struct CompressedSpriteSheet gUnknown_083F7F74;
+extern const struct CompressedSpritePalette gUnknown_083F7F7C;
+
+bool8 IsPokeSpriteNotFlipped(u16 species);
+
+// this file's functions
+static void sub_8147B04(void);
+static void sub_81481DC(void);
+static void sub_814825C(void);
+static u8 sub_81480B4(void);
+static u8 CreatePokeblockSprite(void);
+static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon);
+static bool8 sub_8147B20(struct Pokemon* mon);
+static void LaunchPokeblockFeedTask(u8);
+static void sub_8148044(u8);
+static void sub_8148078(struct Sprite* sprite);
+static void Task_PrintAtePokeblockText(u8 taskID);
+static void Task_PaletteFadeToReturn(u8 taskID);
+static void SetPokeblockFeedSpritePal(u8);
+static void sub_8148108(u8, bool8);
+static bool8 sub_8148540(void);
+static bool8 sub_81485CC(void);
+static bool8 FreePokeSpriteMatrix(void);
+void sub_8148710(void);
+static void SpriteCB_ThrownPokeblock(struct Sprite* sprite);
+static void sub_814862C(void);
+
+// EWRAM
+EWRAM_DATA static struct CompressedSpritePalette sPokeblockFeedSpritePal = {0};
+
+// IWRAM common
+struct Sprite* gPokeblockFeedPokeSprite;
+u16 gPokeblockFeedMonSpecies;
+bool8 gPokeblockMonNotFlipped;
+u8 gPokeblockFeedMonSpriteID;
+u8 gPokeblockFeedMonNature;
+u16 gUnknown_03005F34;
+u8 gPokeblockFeedUnused0;
+u8 gUnknown_03005F3C;
+u8 gUnknown_03005F40;
+struct Sprite gPokeblockFeedPokeSpriteCopy;
+u16 gUnknown_03005F94;
+s16 gUnknown_03005FA0[24];
+
+// rodata
+
+static const u8 sNatureToMonPokeblockAnim[][2] =
+{
+ { 0, 0 }, // HARDY
+ { 3, 0 }, // LONELY
+ { 4, 1 }, // BRAVE
+ { 5, 0 }, // ADAMANT
+ { 10, 0 }, // NAUGHTY
+ { 13, 0 }, // BOLD
+ { 15, 0 }, // DOCILE
+ { 16, 2 }, // RELAXED
+ { 18, 0 }, // IMPISH
+ { 19, 0 }, // LAX
+ { 20, 0 }, // TIMID
+ { 25, 0 }, // HASTY
+ { 27, 3 }, // SERIOUS
+ { 28, 0 }, // JOLLY
+ { 29, 0 }, // NAIVE
+ { 33, 4 }, // MODEST
+ { 36, 0 }, // MILD
+ { 37, 0 }, // QUIET
+ { 39, 0 }, // BASHFUL
+ { 42, 0 }, // RASH
+ { 45, 0 }, // CALM
+ { 46, 5 }, // GENTLE
+ { 47, 6 }, // SASSY
+ { 48, 0 }, // CAREFUL
+ { 53, 0 }, // QUIRKY
+};
+
+static const s16 sMonPokeblockAnims[][10] =
+{
+ // HARDY
+ { 0, 4, 0, 8, 24, 0, 0, 0, 12, 0},
+ { 0, 4, 0, 16, 24, 0, 0, 0, 12, 0},
+ { 0, 4, 0, 32, 32, 0, 0, 0, 16, 1},
+
+ // LONELY
+ { 0, 3, 6, 0, 48, 0, 0, 0, 24, 1},
+
+ // BRAVE
+ { 64, 16, -24, 0, 32, 0, 0, 0, 0, 1},
+
+ // ADAMANT
+ { 0, 4, 8, 0, 16, 0, -8, 0, 0, 0},
+ { 0, 0, 0, 0, 16, 0, 0, 0, 0, 0},
+ { 0, 4, 8, 0, 16, 0, -8, 0, 0, 0},
+ { 0, 0, 0, 0, 16, 0, 0, 0, 0, 0},
+ { 0, 4, -16, 0, 4, 0, 16, 0, 0, 1},
+
+ // NAUGHTY
+ { 0, 3, 6, 0, 12, 0, 0, 0, 6, 0},
+ { 0, 3, -6, 0, 12, 0, 0, 0, 6, 0},
+ { 0, 16, 16, 0, 45, 1, 0, 0, 0, 1},
+
+ // BOLD
+ { 0, 16, 0, 24, 32, 0, 0, 0, 16, 0},
+ { 0, 16, 0, 23, 32, 0, 0, 0, 16, 1},
+
+ // DOCILE
+ { 0, 0, 0, 0, 80, 0, 0, 0, 0, 1},
+
+ // RELAXED
+ { 0, 2, 8, 0, 32, 0, 0, 0, 0, 0},
+ { 0, 2, -8, 0, 32, 0, 0, 0, 0, 1},
+
+ // IMPISH
+ { 0, 32, 2, 1, 48, 1, 0, 0, 24, 1},
+
+ // LAX
+ { 0, 2, 16, 16, 128, 0, 0, 0, 0, 1},
+
+ // TIMID
+ { 0, 2, -8, 0, 48, 0, -24, 0, 0, 0},
+ { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0},
+ { 64, 32, 2, 0, 36, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0},
+ { 0, 2, 8, 0, 48, 0, 24, 0, 0, 1},
+
+ // HASTY
+ { 64, 24, 16, 0, 32, 0, 0, 0, 0, 0},
+ { 0, 28, 2, 1, 32, 1, 0, 0, 16, 1},
+
+ // SERIOUS
+ { 0, 0, 0, 0, 32, 0, 0, 0, 0, 1},
+
+ // JOLLY
+ { 64, 16, -16, 2, 48, 0, 0, 0, 32, 1},
+
+ // NAIVE
+ { 0, 12, -8, 4, 24, 0, 8, 0, 12, 0},
+ { 0, 12, 8, 8, 24, 0, -16, 0, 12, 0},
+ { 0, 12, -8, 16, 24, 0, 16, 0, 12, 0},
+ { 0, 12, 8, 28, 24, 0, -8, 0, 12, 1},
+
+ // MODEST
+ { 0, 0, 0, 0, 8, 0, 0, 0, 0, 0},
+ { 64, 16, -4, 0, 32, 0, 0, 0, 0, 0},
+ { 0, 0, 0, 0, 8, 0, 0, 0, 0, 1},
+
+ // MILD
+ { 128, 4, 0, 8, 64, 0, 0, 0, 0, 1},
+
+ // QUIET
+ { 0, 2, 16, 0, 48, 0, 0, 0, 0, 0},
+ { 128, 2, 16, 0, 48, 0, 0, 0, 0, 1},
+
+ // BASHFUL
+ { 0, 2, -4, 0, 48, 0, -48, 0, 0, 0},
+ { 0, 0, 0, 0, 80, 0, 0, 0, 0, 0},
+ { 0, 2, 8, 0, 24, 0, 48, 0, 0, 1},
+
+ // RASH
+ { 64, 4, 64, 58, 52, 0, -88, 0, 0, 0},
+ { 0, 0, 0, 0, 80, 0, 0, 0, 0, 0},
+ { 0, 24, 80, 0, 32, 0, 88, 0, 0, 1},
+
+ // CALM
+ { 0, 2, 16, 4, 64, 0, 0, 0, 0, 1},
+
+ // GENTLE
+ { 0, 0, 0, 0, 32, 0, 0, 0, 0, 1},
+
+ // SASSY
+ { 0, 0, 0, 0, 42, 0, 0, 0, 0, 1},
+
+ // CAREFUL
+ { 0, 4, 0, 8, 24, 0, 0, 0, 12, 0},
+ { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0},
+ { 0, 4, 0, 12, 24, 0, 0, 0, 12, 0},
+ { 0, 0, 0, 0, 12, 0, 0, 0, 0, 0},
+ { 0, 4, 0, 4, 24, 0, 0, 0, 12, 1},
+
+ // QUIRKY
+ { 0, 4, 16, 12, 64, 0, 0, 0, 0, 0},
+ { 0, -4, 16, 12, 64, 0, 0, 0, 0, 1},
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411E90[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411EA0[] =
+{
+ AFFINEANIMCMD_FRAME(0, 0, 12, 1),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 30),
+ AFFINEANIMCMD_FRAME(0, 0, -12, 1),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411EC0[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 12, 1),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 28),
+ AFFINEANIMCMD_FRAME(0, 0, -4, 3),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411EE8[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 32),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411F08[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 32),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 16),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411F30[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411F50[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411F78[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411F98[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 8),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 32),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 8),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411FC0[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 24),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 4),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8411FE0[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -1, 4),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 24),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 4),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8412008[] =
+{
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 2),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8412028[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 1, 24),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 16),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -12, 2),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_8412050[] =
+{
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411EA0,
+ sSpriteAffineAnim_8411EE8,
+ sSpriteAffineAnim_8411F30,
+ sSpriteAffineAnim_8411F78,
+ sSpriteAffineAnim_8411FC0,
+ sSpriteAffineAnim_8412008,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411EC0,
+ sSpriteAffineAnim_8411F08,
+ sSpriteAffineAnim_8411F50,
+ sSpriteAffineAnim_8411F98,
+ sSpriteAffineAnim_8411FE0,
+ sSpriteAffineAnim_8412028,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411E90,
+ sSpriteAffineAnim_8411E90,
+};
+
+static const u8* const sPokeblocksPals[] =
+{
+ gPokeblockRed_Pal,
+ gPokeblockBlue_Pal,
+ gPokeblockPink_Pal,
+ gPokeblockGreen_Pal,
+ gPokeblockYellow_Pal,
+ gPokeblockPurple_Pal,
+ gPokeblockIndigo_Pal,
+ gPokeblockBrown_Pal,
+ gPokeblockLiteBlue_Pal,
+ gPokeblockOlive_Pal,
+ gPokeblockGray_Pal,
+ gPokeblockBlack_Pal,
+ gPokeblockWhite_Pal,
+ gPokeblockGold_Pal
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_84120DC[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_84120EC[] =
+{
+ sSpriteAffineAnim_84120DC
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_84120F0[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 16, 1),
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_8412148[] =
+{
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 8, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, 0, 8),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1),
+ AFFINEANIMCMD_FRAME(0x0, 0x0, -16, 1),
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A0[] =
+{
+ sSpriteAffineAnim_84120DC
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A4[] =
+{
+ sSpriteAffineAnim_84120F0
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_84121A8[] =
+{
+ sSpriteAffineAnim_8412148
+};
+
+static const struct OamData sThrownPokeblockOamData =
+{
+ .y = 0,
+ .affineMode = 3,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sThrownPokeblockSpriteAnim[] =
+{
+ ANIMCMD_FRAME(0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sThrownPokeblockAnimTable[] =
+{
+ sThrownPokeblockSpriteAnim,
+};
+
+static const union AffineAnimCmd sSpriteAffineAnim_84121C0[] =
+{
+ AFFINEANIMCMD_FRAME(0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_FRAME(-8, -8, 0, 1),
+ AFFINEANIMCMD_JUMP(1)
+};
+
+static const union AffineAnimCmd *const sThrownPokeblockAffineAnimTable[] =
+{
+ sSpriteAffineAnim_84121C0
+};
+
+static const struct CompressedSpriteSheet sUnknown_084121DC =
+{
+ gPokeblock_Gfx, 0x20, 14818
+};
+
+static const struct SpriteTemplate sThrownPokeblockSpriteTemplate =
+{
+ .tileTag = 14818,
+ .paletteTag = 14818,
+ .oam = &sThrownPokeblockOamData,
+ .anims = sThrownPokeblockAnimTable,
+ .images = NULL,
+ .affineAnims = sThrownPokeblockAffineAnimTable,
+ .callback = SpriteCB_ThrownPokeblock
+};
+
+// code
+
+static void CB2_PokeblockFeed(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ RunTasks();
+ UpdatePaletteFade();
+}
+
+static void VBlankCB_PokeblockFeed(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static bool8 TransitionToPokeblockFeedScene(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ sub_80F9438();
+ sub_80F9368();
+ sub_8147B04();
+ gMain.state++;
+ break;
+ case 1:
+ ResetPaletteFade();
+ gPaletteFade.bufferTransferDisabled = 1;
+ gMain.state++;
+ break;
+ case 2:
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 3:
+ FreeAllSpritePalettes();
+ gMain.state++;
+ break;
+ case 4:
+ SetUpWindowConfig(&gWindowConfig_81E6E50);
+ gMain.state++;
+ break;
+ case 5:
+ MultistepInitMenuWindowBegin(&gWindowConfig_81E6E50);
+ gMain.state++;
+ break;
+ case 6:
+ if (MultistepInitMenuWindowContinue())
+ {
+ ewram[0x1FFFF] = 0;
+ gMain.state++;
+ }
+ break;
+ case 7:
+ if (sub_8147B20(&gPlayerParty[gPokeblockMonID]))
+ {
+ gMain.state++;
+ }
+ break;
+ case 8:
+ ewram[0x1FFFD] = sub_81480B4();
+ gMain.state++;
+ break;
+ case 9:
+ ewram[0x1FFFE] = PokeblockFeed_CreatePokeSprite(&gPlayerParty[gPokeblockMonID]);
+ gMain.state++;
+ break;
+ case 10:
+ MenuDrawTextWindow(0, 14, 29, 19);
+ gMain.state++;
+ break;
+ case 11:
+ if (sub_8055870() != 1)
+ {
+ gMain.state++;
+ }
+ break;
+ case 12:
+ {
+ u16 savedIME = REG_IME;
+ REG_IME = 0;
+ REG_IE |= 1;
+ REG_IME = savedIME;
+ REG_DISPSTAT |= 8;
+ SetVBlankCallback(VBlankCB_PokeblockFeed);
+ gMain.state++;
+ }
+ case 13:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gPaletteFade.bufferTransferDisabled = 0;
+ SetMainCallback2(CB2_PokeblockFeed);
+ return TRUE;
+ }
+ return FALSE;
+}
+
+void CB2_PreparePokeblockFeedScene(void)
+{
+ while (1)
+ {
+ if (TransitionToPokeblockFeedScene() == 1)
+ {
+ LaunchPokeblockFeedTask(1);
+ break;
+ }
+ if (sub_80F9344() == 1)
+ break;
+ }
+}
+
+static void sub_8147B04(void)
+{
+ REG_BG1CNT = 0x1D02l;
+ REG_DISPCNT = 0x1340;
+}
+
+static bool8 sub_8147B20(struct Pokemon* mon)
+{
+ u16 species;
+ u32 PiD, TiD;
+ switch (ewram[0x1FFFF])
+ {
+ case 0:
+ species = GetMonData(mon, MON_DATA_SPECIES2);
+ PiD = GetMonData(mon, MON_DATA_PERSONALITY);
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_081FAF4C[1], species, PiD);
+ ewram[0x1FFFF]++;
+ break;
+ case 1:
+ {
+ const struct CompressedSpritePalette* palette;
+
+ species = GetMonData(mon, MON_DATA_SPECIES2);
+ PiD = GetMonData(mon, MON_DATA_PERSONALITY);
+ TiD = GetMonData(mon, MON_DATA_OT_ID);
+ palette = GetMonSpritePalStructFromOtIdPersonality(species, TiD, PiD);
+ LoadCompressedObjectPalette(palette);
+ GetMonSpriteTemplate_803C56C(palette->tag, 1);
+ ewram[0x1FFFF]++;
+ }
+ break;
+ case 2:
+ LoadCompressedObjectPic(&gUnknown_083F7F74);
+ ewram[0x1FFFF]++;
+ break;
+ case 3:
+ LoadCompressedObjectPalette(&gUnknown_083F7F7C);
+ ewram[0x1FFFF]++;
+ break;
+ case 4:
+ LoadCompressedObjectPic(&sUnknown_084121DC);
+ ewram[0x1FFFF]++;
+ break;
+ case 5:
+ SetPokeblockFeedSpritePal(gScriptItemId);
+ LoadCompressedObjectPalette(&sPokeblockFeedSpritePal);
+ ewram[0x1FFFF]++;
+ break;
+ case 6:
+ LZDecompressVram(gBattleTerrainTiles_Building, (void*)(VRAM));
+ ewram[0x1FFFF]++;
+ break;
+ case 7:
+ LZDecompressVram(gUnknown_08E782FC, (void*)(VRAM + 0xE800));
+ ewram[0x1FFFF]++;
+ break;
+ case 8:
+ LoadCompressedPalette(gBattleTerrainPalette_BattleTower, 0x20, 0x60);
+ ewram[0x1FFFF] = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void SetPokeblockFeedSpritePal(u8 pkbID)
+{
+ u8 color = GetPokeblockData(&gSaveBlock1.pokeblocks[pkbID], PBLOCK_COLOR);
+ sPokeblockFeedSpritePal.data = sPokeblocksPals[color - 1];
+ sPokeblockFeedSpritePal.tag = 0x39E2;
+}
+
+static void sub_8147CC8(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ switch (gTasks[taskID].data[0])
+ {
+ case 0:
+ gUnknown_03005F3C = 0;
+ gUnknown_03005F94 = 0;
+ sub_81481DC();
+ break;
+ case 255:
+ sub_8148108(ewram[0x1FFFD], gTasks[taskID].data[1]);
+ break;
+ case 269:
+ ewram[0x1FFFC] = CreatePokeblockSprite();
+ break;
+ case 281:
+ sub_8148044(ewram[0x1FFFE]);
+ break;
+ case 297:
+ gTasks[taskID].func = Task_PrintAtePokeblockText;
+ return;
+ }
+ if (gUnknown_03005F94 < gUnknown_03005F34)
+ sub_814825C();
+ else if (gUnknown_03005F94 == gUnknown_03005F34)
+ gTasks[taskID].data[0] = 254;
+
+ gUnknown_03005F94++;
+ gTasks[taskID].data[0]++;
+ }
+}
+
+static void LaunchPokeblockFeedTask(u8 a0)
+{
+ u8 taskID = CreateTask(sub_8147CC8, 0);
+ gTasks[taskID].data[0] = 0;
+ gTasks[taskID].data[1] = a0;
+}
+
+static void Task_WaitForAtePokeblockText(u8 taskID)
+{
+ if (MenuUpdateWindowText() == 1)
+ gTasks[taskID].func = Task_PaletteFadeToReturn;
+}
+
+static void Task_PrintAtePokeblockText(u8 taskID)
+{
+ struct Pokemon* mon = &gPlayerParty[gPokeblockMonID];
+ struct Pokeblock* pokeblock = &gSaveBlock1.pokeblocks[gScriptItemId];
+
+ gPokeblockGain = PokeblockGetGain(GetNature(mon), pokeblock);
+ GetMonNickname(mon, gStringVar1);
+ PokeblockCopyName(pokeblock, gStringVar2);
+
+ if (gPokeblockGain == 0)
+ StringExpandPlaceholders(gStringVar4, gContestStatsText_NormallyAte);
+ else if (gPokeblockGain > 0)
+ StringExpandPlaceholders(gStringVar4, gContestStatsText_HappilyAte);
+ else
+ StringExpandPlaceholders(gStringVar4, gContestStatsText_DisdainfullyAte);
+
+ MenuPrintMessage(gStringVar4, 1, 15);
+ gTasks[taskID].func = Task_WaitForAtePokeblockText;
+}
+
+static void Task_ReturnAfterPaletteFade(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ m4aMPlayVolumeControl(&gMPlay_BGM, -1, 256);
+ SetMainCallback2(gMain.savedCallback);
+ DestroyTask(taskID);
+ }
+}
+
+static void Task_PaletteFadeToReturn(u8 taskID)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = Task_ReturnAfterPaletteFade;
+}
+
+static u8 PokeblockFeed_CreatePokeSprite(struct Pokemon* mon)
+{
+ u16 species = GetMonData(mon, MON_DATA_SPECIES2);
+ u8 spriteID = CreateSprite(&gUnknown_02024E8C, 48, 80, 2);
+
+ gPokeblockFeedMonSpecies = species;
+ gPokeblockFeedMonSpriteID = spriteID;
+ gPokeblockFeedMonNature = GetNature(mon);
+ gSprites[spriteID].data2 = species;
+ gSprites[spriteID].callback = SpriteCallbackDummy;
+ gPokeblockMonNotFlipped = 1;
+ if (!IsPokeSpriteNotFlipped(species))
+ {
+ gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84120EC;
+ gSprites[spriteID].oam.affineMode = 3;
+ CalcCenterToCornerVec(&gSprites[spriteID], gSprites[spriteID].oam.shape, gSprites[spriteID].oam.size, gSprites[spriteID].oam.affineMode);
+ gPokeblockMonNotFlipped = 0;
+ }
+ return spriteID;
+}
+
+static void sub_8148044(u8 spriteID)
+{
+ gSprites[spriteID].pos1.x = 48;
+ gSprites[spriteID].pos1.y = 80;
+ gSprites[spriteID].data0 = -8;
+ gSprites[spriteID].data1 = 1;
+ gSprites[spriteID].callback = sub_8148078;
+}
+
+static void sub_8148078(struct Sprite* sprite)
+{
+ sprite->pos1.x += 4;
+ sprite->pos1.y += sprite->data0;
+ sprite->data0 += sprite->data1;
+ if (sprite->data0 == 0)
+ PlayCry1(sprite->data2, 0);
+ if (sprite->data0 == 9)
+ sprite->callback = SpriteCallbackDummy;
+}
+
+static u8 sub_81480B4(void)
+{
+ u8 spriteID = sub_810BA50(188, 100, 2);
+ gSprites[spriteID].oam.affineMode = 1;
+ gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A0;
+ gSprites[spriteID].callback = SpriteCallbackDummy;
+ InitSpriteAffineAnim(&gSprites[spriteID]);
+ return spriteID;
+}
+
+static void sub_8148108(u8 spriteID, bool8 a1)
+{
+ FreeOamMatrix(gSprites[spriteID].oam.matrixNum);
+ gSprites[spriteID].oam.affineMode = 3;
+ if (!a1)
+ gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A4;
+ else
+ gSprites[spriteID].affineAnims = sSpriteAffineAnimTable_84121A8;
+ InitSpriteAffineAnim(&gSprites[spriteID]);
+}
+
+static u8 CreatePokeblockSprite(void)
+{
+ u8 spriteID = CreateSprite(&sThrownPokeblockSpriteTemplate, 174, 84, 1);
+ gSprites[spriteID].data0 = -12;
+ gSprites[spriteID].data1 = 1;
+ return spriteID;
+}
+
+static void SpriteCB_ThrownPokeblock(struct Sprite* sprite)
+{
+ sprite->pos1.x -= 4;
+ sprite->pos1.y += sprite->data0;
+ sprite->data0 += sprite->data1;
+ if (sprite->data0 == 10)
+ DestroySprite(sprite);
+}
+
+static void sub_81481DC(void)
+{
+ u8 animID, i;
+
+ gUnknown_03005F34 = 1;
+ animID = sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][0];
+ for (i = 0; i < 8; i++, animID++)
+ {
+ gUnknown_03005F34 += sMonPokeblockAnims[animID][4];
+ if (sMonPokeblockAnims[animID][9] == 1)
+ break;
+ }
+}
+
+static void sub_814825C(void)
+{
+ switch (gUnknown_03005F3C)
+ {
+ case 0:
+ gUnknown_03005F40 = sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][0];
+ gPokeblockFeedPokeSprite = &gSprites[gPokeblockFeedMonSpriteID];
+ gPokeblockFeedPokeSpriteCopy = *gPokeblockFeedPokeSprite;
+ gUnknown_03005F3C = 10;
+ break;
+ case 1 ... 9:
+ break;
+ case 10:
+ sub_8148540();
+ if (sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] != 0)
+ {
+ gPokeblockFeedPokeSprite->oam.affineMode = 3;
+ gPokeblockFeedPokeSprite->oam.matrixNum = 0;
+ gPokeblockFeedPokeSprite->affineAnims = sSpriteAffineAnimTable_8412050;
+ InitSpriteAffineAnim(gPokeblockFeedPokeSprite);
+ }
+ gUnknown_03005F3C = 50;
+ case 50:
+ if (sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] != 0)
+ {
+ if (gPokeblockMonNotFlipped == 0)
+ StartSpriteAffineAnim(gPokeblockFeedPokeSprite, sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1] + 10);
+ else
+ StartSpriteAffineAnim(gPokeblockFeedPokeSprite, sNatureToMonPokeblockAnim[gPokeblockFeedMonNature][1]);
+ }
+ gUnknown_03005F3C = 60;
+ break;
+ case 60:
+ if (sub_81485CC() == 1)
+ {
+ if (gUnknown_03005FA0[9] == 0)
+ {
+ gUnknown_03005F40++;
+ sub_8148540();
+ gUnknown_03005F3C = 60;
+ }
+ else
+ {
+ FreeOamMatrix(gPokeblockFeedPokeSprite->oam.matrixNum);
+ gUnknown_03005F3C = 70;
+ }
+ }
+ break;
+ case 70:
+ FreePokeSpriteMatrix();
+ gUnknown_03005F40 = 0;
+ gUnknown_03005F3C = 0;
+ break;
+ case 71 ... 90:
+ break;
+ }
+}
+
+static bool8 sub_8148540(void)
+{
+ u8 i;
+ for (i = 0; i < 10; i++)
+ gUnknown_03005FA0[i] = sMonPokeblockAnims[gUnknown_03005F40][i];
+ if (gUnknown_03005FA0[4] == 0)
+ return TRUE;
+ else
+ {
+ gUnknown_03005FA0[10] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2]);
+ gUnknown_03005FA0[11] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3]);
+ gUnknown_03005FA0[12] = gUnknown_03005FA0[4];
+ gUnknown_03005FA0[13] = gPokeblockFeedPokeSprite->pos2.x;
+ gUnknown_03005FA0[14] = gPokeblockFeedPokeSprite->pos2.y;
+ sub_8148710();
+ gUnknown_03005FA0[4] = gUnknown_03005FA0[12];
+ sub_814862C();
+ gUnknown_03005FA0[4] = gUnknown_03005FA0[12];
+ return FALSE;
+ }
+}
+
+#define ewram1D000 ((u16 *)(ewram + 0x1D000))
+#define ewram1D400 ((u16 *)(ewram + 0x1D400))
+
+static bool8 sub_81485CC(void)
+{
+ u16 var = gUnknown_03005FA0[12] - gUnknown_03005FA0[4];
+
+ gPokeblockFeedPokeSprite->pos2.x = ewram1D000[var];
+ gPokeblockFeedPokeSprite->pos2.y = ewram1D400[var];
+
+ if (--gUnknown_03005FA0[4] == 0)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+static bool8 FreePokeSpriteMatrix(void)
+{
+ FreeSpriteOamMatrix(gPokeblockFeedPokeSprite);
+ return FALSE;
+}
+
+static void sub_814862C(void)
+{
+ u16 i;
+ u16 r8 = gUnknown_03005FA0[8];
+ u16 r7 = gUnknown_03005FA0[12] - r8;
+ s16 var3 = gUnknown_03005FA0[13] + gUnknown_03005FA0[6];
+ s16 r9 = gUnknown_03005FA0[14] + gUnknown_03005FA0[7];
+
+ for (i = 0; i < r7 - 1; i++)
+ {
+ s16* r3 = &ewram1D000[r8 + i];
+ s16 r1 = *r3 - (var3);
+
+ s16* r5 = &ewram1D400[r8 + i];
+ s16 r4 = *r5 - r9;
+
+ *r3 -= r1 * (i + 1) / r7;
+ *r5 -= r4 * (i + 1) / r7;
+ }
+
+ ewram1D000[(r8 + r7) - 1] = var3;
+ ewram1D400[(r8 + r7) - 1] = r9;
+}
+
+void sub_8148710(void)
+{
+ bool8 var_24 = FALSE;
+ s16 r8 = gUnknown_03005FA0[13] - gUnknown_03005FA0[10];
+ s16 r7 = gUnknown_03005FA0[14] - gUnknown_03005FA0[11];
+ while (1)
+ {
+ u16 r5;
+ u16 r4;
+ u16 var;
+
+ var = abs(gUnknown_03005FA0[5]);
+ r5 = var + gUnknown_03005FA0[3];
+ gUnknown_03005FA0[3] = r5;
+
+ if (gUnknown_03005FA0[2] < 0)
+ var_24 = TRUE;
+
+ r4 = gUnknown_03005FA0[12] - gUnknown_03005FA0[4];
+
+ if (gUnknown_03005FA0[4] == 0)
+ break;
+
+ if (!var_24)
+ {
+ ewram1D000[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] + r5 / 256) + r8;
+ ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] + r5 / 256) + r7;
+ }
+ else
+ {
+ ewram1D000[r4] = Sin(gUnknown_03005FA0[0], gUnknown_03005FA0[2] - r5 / 256) + r8;
+ ewram1D400[r4] = Cos(gUnknown_03005FA0[0], gUnknown_03005FA0[3] - r5 / 256) + r7;
+ }
+
+ gUnknown_03005FA0[0] += gUnknown_03005FA0[1];
+ gUnknown_03005FA0[0] &= 0xFF;
+ gUnknown_03005FA0[4]--;
+ }
+}
diff --git a/src/pokedex.c b/src/pokemon/pokedex.c
index c132635cb..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"
@@ -16,7 +15,7 @@
#include "pokedex_cry_screen.h"
#include "pokemon.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "songs.h"
#include "sound.h"
#include "species.h"
@@ -150,7 +149,6 @@ extern const u8 gUnknown_08E96738[];
extern const u8 gUnknown_08E96888[];
extern const u8 gUnknown_08E96994[];
extern const u8 gUnknown_08E9C6DC[];
-extern const u8 gUnknown_08D00524[];
extern const u8 gUnknown_08E96BD4[];
extern const u8 gUnknown_08E96ACC[];
extern const u8 gUnknown_08E96B58[];
@@ -186,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,
@@ -515,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[] =
@@ -1320,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;
}
}
@@ -2030,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;
}
@@ -2045,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++;
@@ -2065,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++;
}
}
@@ -2079,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;
@@ -2093,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;
@@ -2107,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;
@@ -2121,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;
@@ -3946,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);
}
@@ -4008,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;
}
@@ -4088,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;
}
@@ -4116,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;
@@ -4128,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 c65bfa185..1d597cb17 100644
--- a/src/pokemon_1.c
+++ b/src/pokemon/pokemon_1.c
@@ -4,7 +4,7 @@
#include "main.h"
#include "pokemon.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "species.h"
#include "sprite.h"
#include "string_util.h"
@@ -17,9 +17,9 @@
#define LOHALF(n) ((n) & 0xFFFF)
extern u8 unk_2000000[];
-extern u16 word_2024E82;
+extern u16 gMoveToLearn;
-static EWRAM_DATA u8 byte_2024E88 = 0;
+static EWRAM_DATA u8 sLearningMoveTableID = 0;
u8 gPlayerPartyCount;
struct Pokemon gPlayerParty[6];
@@ -69,6 +69,7 @@ void ZeroEnemyPartyMons(void)
void CreateMon(struct Pokemon *mon, u16 species, u8 level, u8 fixedIV, u8 hasFixedPersonality, u32 fixedPersonality, u8 otIdType, u32 fixedOtId)
{
u32 arg;
+
ZeroMonData(mon);
CreateBoxMon(&mon->box, species, level, fixedIV, hasFixedPersonality, fixedPersonality, otIdType, fixedOtId);
SetMonData(mon, MON_DATA_LEVEL, &level);
@@ -467,10 +468,10 @@ void CalculateMonStats(struct Pokemon *mon)
SetMonData(mon, MON_DATA_HP, (u8 *)&currentHP);
}
-void sub_803B4B4(struct Pokemon *src, struct Pokemon *dest)
+void sub_803B4B4(const struct BoxPokemon *src, struct Pokemon *dest)
{
u32 value = 0;
- memcpy(&dest->box, &src->box, sizeof(struct BoxPokemon));
+ dest->box = *src;
SetMonData(dest, MON_DATA_STATUS, (u8 *)&value);
SetMonData(dest, MON_DATA_HP, (u8 *)&value);
SetMonData(dest, MON_DATA_MAX_HP, (u8 *)&value);
@@ -583,29 +584,33 @@ void GiveBoxMonInitialMoveset(struct BoxPokemon *boxMon)
}
}
-u16 sub_803B7C8(struct Pokemon *mon, u8 a2)
+u16 MonTryLearningNewMove(struct Pokemon *mon, bool8 firstMove)
{
u32 retVal = 0;
u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
u8 level = GetMonData(mon, MON_DATA_LEVEL, NULL);
- if (a2)
+ // since you can learn more than one move per level
+ // the game needs to know whether you decided to
+ // learn it or keep the old set to avoid asking
+ // you to learn the same move over and over again
+ if (firstMove)
{
- byte_2024E88 = retVal;
+ sLearningMoveTableID = 0;
- while ((gLevelUpLearnsets[species][byte_2024E88] & 0xFE00) != (level << 9))
+ while ((gLevelUpLearnsets[species][sLearningMoveTableID] & 0xFE00) != (level << 9))
{
- byte_2024E88++;
- if (gLevelUpLearnsets[species][byte_2024E88] == (u16)-1)
+ sLearningMoveTableID++;
+ if (gLevelUpLearnsets[species][sLearningMoveTableID] == 0xFFFF)
return 0;
}
}
- if ((gLevelUpLearnsets[species][byte_2024E88] & 0xFE00) == (level << 9))
+ if ((gLevelUpLearnsets[species][sLearningMoveTableID] & 0xFE00) == (level << 9))
{
- word_2024E82 = (gLevelUpLearnsets[species][byte_2024E88] & 0x1FF);
- byte_2024E88++;
- retVal = GiveMoveToMon(mon, word_2024E82);
+ gMoveToLearn = (gLevelUpLearnsets[species][sLearningMoveTableID] & 0x1FF);
+ sLearningMoveTableID++;
+ retVal = GiveMoveToMon(mon, gMoveToLearn);
}
return retVal;
diff --git a/src/pokemon_2.c b/src/pokemon/pokemon_2.c
index a77edbdb2..f02ce6170 100644
--- a/src/pokemon_2.c
+++ b/src/pokemon/pokemon_2.c
@@ -80,125 +80,31 @@ u8 CountAliveMons(u8 a1)
return retVal;
}
-#ifdef NONMATCHING
u8 sub_803C434(u8 a1)
{
- u32 status0 = GetBankIdentity(a1);
- register u8 status_ asm("r4");
- u8 status;
- register u32 mask1 asm("r1") = 1;
- register u32 mask2 asm("r6") = 1;
-
- status_ = mask2;
- status_ &= status0;
- status = status_ ^ mask1;
-
- {
- register u16 val_ asm("r1") = gBattleTypeFlags;
- u32 val = mask2;
- val &= val_;
- if (!val)
- {
- return GetBankByPlayerAI(status);
- }
- }
+ u8 status = GetBankIdentity(a1) & 1;
+ status ^= 1;
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ return GetBankByPlayerAI(status);
if (CountAliveMons(0) > 1)
{
- u16 r = Random();
- register u32 val asm("r1") = mask2;
- val &= r;
- if (!val)
- {
- u32 status2 = 2;
- status2 ^= status;
- return GetBankByPlayerAI(status2);
- }
+ u8 val;
+
+ if ((Random() & 1) == 0)
+ val = status ^ 2;
else
- {
- return GetBankByPlayerAI(status);
- }
+ val = status;
+ return GetBankByPlayerAI(val);
}
else
{
- if (gAbsentBankFlags & gBitTable[status])
+ if ((gAbsentBankFlags & gBitTable[status]))
return GetBankByPlayerAI(status ^ 2);
else
return GetBankByPlayerAI(status);
}
}
-#else
-__attribute__((naked))
-u8 sub_803C434(u8 a1)
-{
- asm(".syntax unified\n\
- push {r4-r6,lr}\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- bl GetBankIdentity\n\
- movs r1, 0x1\n\
- movs r6, 0x1\n\
- adds r4, r6, 0\n\
- ands r4, r0\n\
- eors r4, r1\n\
- adds r5, r4, 0\n\
- ldr r0, _0803C45C\n\
- ldrh r1, [r0]\n\
- adds r0, r6, 0\n\
- ands r0, r1\n\
- cmp r0, 0\n\
- bne _0803C460\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
- .align 2, 0\n\
-_0803C45C: .4byte gBattleTypeFlags\n\
-_0803C460:\n\
- movs r0, 0\n\
- bl CountAliveMons\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- cmp r0, 0x1\n\
- bls _0803C484\n\
- bl Random\n\
- adds r1, r6, 0\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _0803C480\n\
- movs r0, 0x2\n\
- eors r0, r4\n\
- b _0803C4AA\n\
-_0803C480:\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
-_0803C484:\n\
- ldr r0, _0803C49C\n\
- ldrb r1, [r0]\n\
- ldr r2, _0803C4A0\n\
- lsls r0, r4, 2\n\
- adds r0, r2\n\
- ldr r0, [r0]\n\
- ands r1, r0\n\
- cmp r1, 0\n\
- bne _0803C4A4\n\
- adds r0, r4, 0\n\
- b _0803C4AA\n\
- .align 2, 0\n\
-_0803C49C: .4byte gAbsentBankFlags\n\
-_0803C4A0: .4byte gBitTable\n\
-_0803C4A4:\n\
- movs r0, 0x2\n\
- eors r5, r0\n\
- adds r0, r5, 0\n\
-_0803C4AA:\n\
- bl GetBankByPlayerAI\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- pop {r4-r6}\n\
- pop {r1}\n\
- bx r1\n\
- .syntax divided\n");
-}
-#endif
u8 GetMonGender(struct Pokemon *mon)
{
diff --git a/src/pokemon_3.c b/src/pokemon/pokemon_3.c
index 3d85a1c8f..1eff9b83c 100644
--- a/src/pokemon_3.c
+++ b/src/pokemon/pokemon_3.c
@@ -11,7 +11,7 @@
#include "main.h"
#include "pokemon.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rom_8077ABC.h"
#include "rom_8094928.h"
#include "rtc.h"
@@ -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)
@@ -457,7 +457,7 @@ u16 HoennToNationalOrder(u16 hoennNum)
return gHoennToNationalOrder[hoennNum - 1];
}
-u32 SpeciesToCryId(u16 species)
+u16 SpeciesToCryId(u16 species)
{
if (species <= 250)
return species;
@@ -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;
@@ -1197,7 +1197,7 @@ const struct CompressedSpritePalette *sub_80409C8(u16 species, u32 otId , u32 pe
return &gMonPaletteTable[species];
}
-bool8 IsHMMove2(u16 move)
+bool32 IsHMMove2(u16 move)
{
int i = 0;
while (gHMMoves[i] != 0xFFFF)
@@ -1208,9 +1208,9 @@ bool8 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)
@@ -1219,7 +1219,7 @@ s8 sub_8040A54(struct Pokemon *mon, u8 a2)
return gPokeblockFlavorCompatibilityTable[nature * 5 + a2];
}
-s8 sub_8040A7C(u32 personality, u8 a2)
+s8 GetPokeFlavourRelation(u32 personality, u8 a2)
{
u8 nature = GetNatureFromPersonality(personality);
return gPokeblockFlavorCompatibilityTable[nature * 5 + 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 8994ea49e..9bb3386e1 100644
--- a/src/pokemon_icon.c
+++ b/src/pokemon/pokemon_icon.c
@@ -1024,17 +1024,17 @@ void sub_809D7E8(struct Sprite *);
u8 unref_sub_809D26C(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
{
u8 spriteId;
- struct MonIconSpriteTemplate iconTemplate;
- struct MonIconSpriteTemplate *iconTemplatePtr = &iconTemplate; // needed to match
-
- iconTemplatePtr->oam = &sMonIconOamData;
- iconTemplatePtr->image = gMonIconTable[species];
- iconTemplatePtr->anims = sMonIconAnims;
- iconTemplatePtr->affineAnims = sMonIconAffineAnims;
- iconTemplatePtr->callback = callback;
- iconTemplatePtr->paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species];
+ struct MonIconSpriteTemplate iconTemplate =
+ {
+ .oam = &sMonIconOamData,
+ .image = gMonIconTable[species],
+ .anims = sMonIconAnims,
+ .affineAnims = sMonIconAffineAnims,
+ .callback = callback,
+ .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species],
+ };
- spriteId = CreateMonIconSprite(iconTemplatePtr, x, y, subpriority);
+ spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority);
UpdateMonIconFrame(&gSprites[spriteId]);
@@ -1067,17 +1067,17 @@ u8 CreateMonIcon(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u
u8 sub_809D3A4(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority)
{
u8 spriteId;
- struct MonIconSpriteTemplate iconTemplate;
- struct MonIconSpriteTemplate *iconTemplatePtr = &iconTemplate; // needed to match
-
- iconTemplatePtr->oam = &sMonIconOamData;
- iconTemplatePtr->image = gMonIconTable[species];
- iconTemplatePtr->anims = sMonIconAnims;
- iconTemplatePtr->affineAnims = sMonIconAffineAnims;
- iconTemplatePtr->callback = callback;
- iconTemplatePtr->paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species];
+ struct MonIconSpriteTemplate iconTemplate =
+ {
+ .oam = &sMonIconOamData,
+ .image = gMonIconTable[species],
+ .anims = sMonIconAnims,
+ .affineAnims = sMonIconAffineAnims,
+ .callback = callback,
+ .paletteTag = POKE_ICON_BASE_PAL_TAG + gMonIconPaletteIndices[species],
+ };
- spriteId = CreateMonIconSprite(iconTemplatePtr, x, y, subpriority);
+ spriteId = CreateMonIconSprite(&iconTemplate, x, y, subpriority);
UpdateMonIconFrame(&gSprites[spriteId]);
@@ -1197,7 +1197,7 @@ void sub_809D62C(struct Sprite *sprite)
UpdateMonIconFrame(sprite);
}
-// TODO: try to find a way to avoid using goto and asm statement
+// TODO: try to find a way to avoid using asm statement
u8 UpdateMonIconFrame(struct Sprite *sprite)
{
u8 result = 0;
@@ -1206,34 +1206,31 @@ u8 UpdateMonIconFrame(struct Sprite *sprite)
{
s16 frame = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.imageValue;
- if (frame != -2)
- {
- if (frame != -1)
- goto copy;
- goto end;
- }
-
- sprite->animCmdIndex = 0;
- goto end;
-
- copy:
- RequestSpriteCopy(
- (u8 *)sprite->images + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame,
- (u8 *)OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP,
- sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]);
+ switch (frame)
{
- register u8 duration asm("r0") = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration;
- sprite->animDelayCounter = duration;
+ case -1:
+ break;
+ case -2:
+ sprite->animCmdIndex = 0;
+ break;
+ default:
+ RequestSpriteCopy(
+ (u8 *)sprite->images + sSpriteImageSizes[sprite->oam.shape][sprite->oam.size] * frame,
+ (u8 *)OBJ_VRAM0 + sprite->oam.tileNum * TILE_SIZE_4BPP,
+ sSpriteImageSizes[sprite->oam.shape][sprite->oam.size]);
+ {
+ register u8 duration asm("r0") = sprite->anims[sprite->animNum][sprite->animCmdIndex].frame.duration;
+ sprite->animDelayCounter = duration;
+ }
+ sprite->animCmdIndex++;
+ result = sprite->animCmdIndex;
+ break;
}
- sprite->animCmdIndex++;
- result = sprite->animCmdIndex;
}
else
{
sprite->animDelayCounter--;
}
-
-end:
return result;
}
diff --git a/src/pokemon/pokemon_menu.c b/src/pokemon/pokemon_menu.c
new file mode 100644
index 000000000..bc5150a16
--- /dev/null
+++ b/src/pokemon/pokemon_menu.c
@@ -0,0 +1,1200 @@
+#include "global.h"
+#include "pokemon.h"
+#include "pokemon_menu.h"
+#include "party_menu.h"
+#include "palette.h"
+#include "menu.h"
+#include "mail_data.h"
+#include "songs.h"
+#include "sound.h"
+#include "main.h"
+#include "overworld.h"
+#include "menu_helpers.h"
+#include "pokemon_summary_screen.h"
+#include "moves.h"
+#include "data2.h"
+#include "strings.h"
+#include "item_use.h"
+#include "item.h"
+#include "event_data.h"
+#include "mail.h"
+#include "field_player_avatar.h"
+#include "fldeff_softboiled.h"
+#include "braille_puzzles.h"
+#include "field_fadetransition.h"
+#include "field_weather.h"
+#include "field_effect.h"
+#include "field_control_avatar.h"
+#include "metatile_behavior.h"
+#include "fieldmap.h"
+#include "item_menu.h"
+#include "player_pc.h"
+
+/*
+Pokemon menu:
+ The menu that appears when you
+ click on a pokemon in
+ overworld 'pokemon' menu
+*/
+
+struct PokeMenuFieldMoveFunc
+{
+ bool8 (*func)(void);
+ u8 field_1;
+};
+
+extern u8 gUnknown_020384F0;
+extern u8 gUnknown_0202E8F4;
+extern u8 gUnknown_0202E8F5;
+extern u8 gUnknown_0202E8F6;
+extern u8 gUnknown_02038561;
+extern u16 gUnknown_0202E8F8;
+extern u8 ewram[];
+extern void (*gUnknown_03004AE4)(u8 taskID, u16 itemID, TaskFunc func);
+extern TaskFunc gUnknown_03005CF0;
+
+void sub_80E62A0(u8 arg0, struct MailStruct* arg1, void* arg2, u8 arg3);
+void sub_808A520(void);
+void sub_80A61D0(void);
+void CB2_InitFlyRegionMap(void);
+u16 GetEvolutionTargetSpecies(struct Pokemon *mon, u8 type, u16 evolutionItem);
+bool8 SetUpFieldMove_Cut(void);
+bool8 SetUpFieldMove_Flash(void);
+bool8 SetUpFieldMove_RockSmash(void);
+bool8 SetUpFieldMove_Strength(void);
+bool8 SetUpFieldMove_Teleport(void);
+bool8 SetUpFieldMove_Dig(void);
+bool8 SetUpFieldMove_SecretPower(void);
+bool8 SetUpFieldMove_SoftBoiled(void);
+bool8 SetUpFieldMove_SoftBoiled(void);
+bool8 SetUpFieldMove_SweetScent(void);
+
+#define sFieldMovesTerminator 0xFF // note: should be changed to 0xFFFF, because currently it makes it impossible to add a field move with 0xFF index
+
+// this file's functions
+static void sub_808A8A8(void);
+static void sub_808B3EC(void);
+static void sub_8089D94(u8 taskID);
+static void sub_8089E4C(u8 taskID);
+static void sub_808A5BC(u8 taskID);
+static void sub_808A8D4(u8 taskID);
+static void sub_808A73C(u8 taskID);
+static void sub_808A848(u8 taskID);
+static void sub_808AAF0(u8 taskID);
+static void sub_808ABF4(u8 taskID);
+static void sub_808AB34(u8 taskID);
+static void sub_808ABA8(u8 taskID);
+static void sub_808B224(u8 taskID);
+static void sub_808B2EC(u8 taskID);
+static void sub_808B2B4(u8 taskID);
+static void sub_808B25C(u8 taskID);
+static void sub_808B1EC(u8 taskID);
+static void sub_808B338(u8 taskID);
+static void sub_808B4A4(u8 taskID);
+static void sub_808B4EC(u8 taskID);
+static void sub_808B5E4(u8 taskID);
+static void PokemonMenu_Summary(u8 taskID);
+static void PokemonMenu_Switch(u8 taskID);
+static void PokemonMenu_Item(u8 taskID);
+static void PokemonMenu_Cancel(u8 taskID);
+static void PokemonMenu_GiveItem(u8 taskID);
+static void PokemonMenu_TakeItem(u8 taskID);
+static void PokemonMenu_TakeMail(u8 taskID);
+static void PokemonMenu_Mail(u8 taskID);
+static void PokemonMenu_ReadMail(u8 taskID);
+static void PokemonMenu_CancelSubmenu(u8 taskID);
+static void PokemonMenu_FieldMove(u8 taskID);
+static bool8 SetUpFieldMove_Waterfall(void);
+static bool8 SetUpFieldMove_Surf(void);
+static bool8 SetUpFieldMove_Fly(void);
+static bool8 SetUpFieldMove_Dive(void);
+
+// ewram data
+
+EWRAM_DATA static u8 sPokeMenuCursorPos = 0;
+EWRAM_DATA static u8 sPokeMenuOptionsNo = 0;
+EWRAM_DATA static u8 sPokeMenuOptionsOrder[8] = {0}; // 4 possible field moves and 4 default options
+
+// iwram common
+u8 gLastFieldPokeMenuOpened;
+void (*gUnknown_03005CE4)(void);
+
+// const data
+
+static const struct MenuAction2 sPokemonMenuActions[] =
+{
+ {OtherText_Summary, PokemonMenu_Summary},
+ {OtherText_Switch2, PokemonMenu_Switch},
+ {OtherText_Item, PokemonMenu_Item},
+ {gOtherText_CancelNoTerminator, PokemonMenu_Cancel},
+ {OtherText_Give2, PokemonMenu_GiveItem},
+ {OtherText_Take2, PokemonMenu_TakeItem},
+ {OtherText_Take, PokemonMenu_TakeMail},
+ {OtherText_Mail, PokemonMenu_Mail},
+ {OtherText_Read2, PokemonMenu_ReadMail},
+ {gOtherText_CancelNoTerminator, PokemonMenu_CancelSubmenu},
+ {gMoveNames[MOVE_CUT], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_FLASH], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_ROCK_SMASH], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_STRENGTH], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_SURF], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_FLY], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_DIVE], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_WATERFALL], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_TELEPORT], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_DIG], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_SECRET_POWER], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_MILK_DRINK], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_SOFT_BOILED], PokemonMenu_FieldMove},
+ {gMoveNames[MOVE_SWEET_SCENT], PokemonMenu_FieldMove},
+};
+
+static const u16 sPokeMenuFieldMoves[] =
+{
+ MOVE_CUT, MOVE_FLASH, MOVE_ROCK_SMASH, MOVE_STRENGTH,
+ MOVE_SURF, MOVE_FLY, MOVE_DIVE, MOVE_WATERFALL,
+ MOVE_TELEPORT, MOVE_DIG, MOVE_SECRET_POWER, MOVE_MILK_DRINK,
+ MOVE_SOFT_BOILED, MOVE_SWEET_SCENT, sFieldMovesTerminator,
+};
+
+static const u8 sUnknown_39F572[] = {4, 5, 9, 0};
+static const struct PartyPopupMenu sUnknown_0839F578 = {3, 6, sUnknown_39F572};
+
+static const u8 sUnknown_39F580[] = {8, 6, 9, 0};
+static const struct PartyPopupMenu sUnknown_0839F584 = {3, 9, sUnknown_39F580};
+
+static const struct PokeMenuFieldMoveFunc sFieldMoveFuncs[] =
+{
+ {SetUpFieldMove_Cut, 0x6},
+ {SetUpFieldMove_Flash, 0x9},
+ {SetUpFieldMove_RockSmash, 0x9},
+ {SetUpFieldMove_Strength, 0x9},
+ {SetUpFieldMove_Surf, 0x7},
+ {SetUpFieldMove_Fly, 0x9},
+ {SetUpFieldMove_Dive, 0x9},
+ {SetUpFieldMove_Waterfall, 0x9},
+ {SetUpFieldMove_Teleport, 0x9},
+ {SetUpFieldMove_Dig, 0x9},
+ {SetUpFieldMove_SecretPower, 0x9},
+ {SetUpFieldMove_SoftBoiled, 0x10},
+ {SetUpFieldMove_SoftBoiled, 0x10},
+ {SetUpFieldMove_SweetScent, 0x9},
+};
+
+void sub_8089A70(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ OpenPartyMenu(0, 0);
+}
+
+static void sub_8089A8C(void)
+{
+ sPokeMenuOptionsNo = 0;
+ // if checking pokemon is an egg, we can't give it an item and it doesn't know any move
+ if (GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_IS_EGG))
+ {
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SUMMARY);
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SWITCH);
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_CANCEL);
+ }
+ else
+ {
+ u16 moveID, tableID;
+ for (moveID = 0; moveID < 4; moveID++) // 4, max number of possible field moves
+ {
+ for (tableID = 0; sPokeMenuFieldMoves[tableID] != sFieldMovesTerminator; tableID++)
+ {
+ if (GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_MOVE1 + moveID) == sPokeMenuFieldMoves[tableID])
+ {
+ u8 fieldID = tableID + POKEMENU_FIRST_FIELD_MOVE_ID;
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, fieldID);
+ break;
+ }
+ }
+ }
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SUMMARY);
+
+ // can't switch a pokemon if it's the only one in the party
+ if (GetMonData(&gPlayerParty[1], MON_DATA_SPECIES) != 0)
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_SWITCH);
+
+ if (ItemIsMail(GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM)))
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_MAIL);
+ else
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_ITEM);
+
+ AppendToList(sPokeMenuOptionsOrder, &sPokeMenuOptionsNo, POKEMENU_CANCEL);
+ }
+}
+
+static void sub_8089BDC(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order, u8 arg6)
+{
+ sub_806D538(5, arg6);
+ MenuDrawTextWindow(arg0, arg1, arg0 + arg2, (noOfOptions * 2) + arg1 + 1);
+ PrintMenuItemsReordered(arg0 + 1, arg1 + 1, noOfOptions, menuActions, order);
+}
+
+void sub_8089C50(u8 arg0, u8 arg1, u8 arg2, u8 noOfOptions, const struct MenuAction2 *menuActions, const u8 *order)
+{
+ sub_8089BDC(arg0, arg1, arg2, noOfOptions, menuActions, order, 1);
+}
+
+static void sub_8089C7C(u8 arg0)
+{
+ u32 r4 = (u8)(18 - (sPokeMenuOptionsNo << 1));
+
+ sub_8089BDC(19, r4, 10, sPokeMenuOptionsNo, sPokemonMenuActions, sPokeMenuOptionsOrder, 3);
+ r4 |= 1;
+ InitMenu(0, 20, r4, sPokeMenuOptionsNo, arg0, 9);
+}
+
+void sub_8089CD4(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ switch (sub_806BD80(taskID))
+ {
+ case 1:
+ PlaySE(SE_SELECT);
+ gLastFieldPokeMenuOpened = sub_806CA38(taskID);
+ GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1);
+ sub_8089A8C();
+ sPokeMenuCursorPos = 0;
+ sub_8089C7C(0);
+ gTasks[taskID].func = sub_8089D94;
+ sub_808B5B4(taskID);
+ break;
+ case 2:
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_8089E4C;
+ break;
+ }
+ }
+}
+
+static void sub_8089D94(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ sPokeMenuCursorPos = MoveMenuCursor(-1);
+ sub_808B5B4(taskID);
+ }
+ else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ sPokeMenuCursorPos = MoveMenuCursor(1);
+ sub_808B5B4(taskID);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ sPokemonMenuActions[sPokeMenuOptionsOrder[sPokeMenuCursorPos]].func(taskID);
+ sub_808B5B4(taskID);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PokemonMenu_Cancel(taskID);
+ sub_808B5B4(taskID);
+ }
+ }
+}
+
+static void sub_8089E4C(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ gLastFieldPokeMenuOpened = 0;
+ SetMainCallback2(sub_805469C);
+ DestroyTask(taskID);
+ }
+}
+
+static void sub_8089E84(void)
+{
+ GetMonNickname(&gPlayerParty[gLastFieldPokeMenuOpened], gStringVar1);
+ sub_8089A8C();
+ sPokeMenuCursorPos = 0;
+ sub_8089C7C(0);
+}
+
+static void sub_8089EBC(void)
+{
+ do
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gUnknown_020384F0);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ gLastFieldPokeMenuOpened = gUnknown_020384F0;
+ sub_8089E84();
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ } while (sub_80F9344() != TRUE);
+}
+
+static void sub_8089F14(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ sub_806AF4C(0, 0xFF, sub_8089D94, 5);
+ SetMainCallback2(sub_8089EBC);
+}
+
+static void sub_8089F44(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 spriteID = gSprites[gTasks[taskID].data[3] >> 8].data0;
+ DestroyTask(taskID);
+ ewram1B000_alt.unk262 = 1;
+ ShowPokemonSummaryScreen(gPlayerParty, spriteID, gPlayerPartyCount - 1, sub_8089F14, 0);
+ }
+}
+
+static void PokemonMenu_Summary(u8 taskID)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_8089F44;
+}
+
+void sub_808A004(u8 taskID)
+{
+ SetTaskFuncWithFollowupFunc(taskID, sub_806CA60, sub_8089CD4);
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+}
+
+static void PokemonMenu_Switch(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ ewram01000.unkC = sub_806CD5C;
+ ewram01000.array[53553] = 1;
+ sub_808A004(taskID);
+}
+
+static void sub_808A060(u8 taskID)
+{
+ if (gMain.newKeys == DPAD_UP && sPokeMenuCursorPos != 0)
+ {
+ sPokeMenuCursorPos = MoveMenuCursor(-1);
+ PlaySE(SE_SELECT);
+ }
+ if (gMain.newKeys == DPAD_DOWN && sPokeMenuCursorPos != 2)
+ {
+ sPokeMenuCursorPos = MoveMenuCursor(1);
+ PlaySE(SE_SELECT);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ PartyMenuGetPopupMenuFunc(0, &sUnknown_0839F578, (void *)sPokemonMenuActions, sPokeMenuCursorPos)(taskID);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ sub_806E7D0(0, &sUnknown_0839F578);
+ PokemonMenu_CancelSubmenu(taskID);
+ }
+}
+
+static void sub_808A100(u8 taskID)
+{
+ sub_806E750(0, &sUnknown_0839F578, (void*)(sPokemonMenuActions), 0);
+ sub_806D538(0xD, 2);
+ gTasks[taskID].func = sub_808A060;
+}
+
+static void PokemonMenu_Item(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ sPokeMenuCursorPos = 0;
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ gTasks[taskID].func = sub_808A100;
+}
+
+static void sub_808A180(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL);
+ DestroyTask(taskID);
+ sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808A520, 3);
+ }
+}
+
+static void sub_808A1E0(u8 taskID)
+{
+ if (gUnknown_0202E8F6 != 1)
+ {
+ SetHeldItemIconVisibility(taskID, sub_806CA38(taskID));
+ sub_806D538(0, 0);
+ gTasks[taskID].func = sub_8089CD4;
+ }
+}
+
+static void sub_808A228(u8 taskID)
+{
+ if (ItemIsMail(gScriptItemId) && gUnknown_0202E8F4 != 0)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_808A180;
+ }
+ else
+ {
+ MenuZeroFillWindowRect(0, 0, 29, 19);
+ sub_806D538(0, 0);
+ gTasks[taskID].func = sub_8089CD4;
+ }
+}
+
+static void sub_808A2AC(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808A228);
+}
+
+static void sub_808A2DC(u8 taskID)
+{
+ u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL);
+ DestroyTask(taskID);
+ sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808A520, 3);
+}
+
+static void sub_808A330(u8 taskID)
+{
+ PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808A2DC);
+}
+
+static void sub_808A34C(void)
+{
+ RunTasks();
+}
+
+static void sub_808A358(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+static void sub_808A3A4(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ EWRAM_1B000.unk262 = 3;
+ sub_8089E84();
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+void sub_808A3F8(void)
+{
+ if (ItemIsMail(gScriptItemId))
+ {
+ u8 taskID = CreateTask(sub_808A330, 0);
+ gPaletteFade.bufferTransferDisabled = 1;
+ sub_806BD58(taskID, 0);
+ sub_806C994(taskID, gLastFieldPokeMenuOpened);
+ sub_806BF74(taskID, 0);
+ if (!(bool8)(GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_HELD_ITEM)))
+ {
+ SetMainCallback2(sub_808A34C);
+ return;
+ }
+ else
+ DestroyTask(taskID);
+ }
+ gPaletteFade.bufferTransferDisabled = 1;
+ if (gScriptItemId)
+ {
+ sub_806AF4C(0, 0xFF, sub_808A2AC, 0xFF);
+ SetMainCallback2(sub_808A358);
+ }
+ else
+ {
+ sub_806AF4C(0, 0xFF, sub_8089D94, 5);
+ SetMainCallback2(sub_808A3A4);
+ }
+}
+
+static void sub_808A4D4(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+void sub_808A520(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ if (gScriptResult == 0)
+ {
+ if (gUnknown_0202E8F8)
+ RemoveBagItem(gUnknown_0202E8F8, 1);
+ AddBagItem(GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM), 1);
+ TakeMailFromMon(&gPlayerParty[gLastFieldPokeMenuOpened]);
+ SetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM, (void*) &gUnknown_0202E8F8);
+ sub_806AF4C(0, 0xFF, sub_8089CD4, 0);
+ }
+ else
+ sub_806AF4C(0, 0xFF, sub_808A5BC, 0xFF);
+ SetMainCallback2(sub_808A4D4);
+}
+
+static void sub_808A5BC(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ DisplayGiveHeldItemMessage(gLastFieldPokeMenuOpened, gScriptItemId, 0);
+ gTasks[taskID].func = sub_808A1E0;
+ }
+}
+
+static void sub_808A604(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sub_80A61D0);
+ DestroyTask(taskID);
+ }
+}
+
+static void PokemonMenu_GiveItem(u8 taskID)
+{
+ gUnknown_0202E8F5 = sub_806CA38(taskID);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_808A604;
+}
+
+static void sub_808A678(u8 taskID)
+{
+ sub_808A8D4(taskID);
+}
+
+static void PokemonMenu_TakeItem(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ sub_806D5A4();
+ PartyMenuTryGiveMonHeldItem_806ECE8(taskID, sub_808A678);
+}
+
+static void PokemonMenu_TakeMail(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ sub_806D5A4();
+ DoTakeMail(taskID, sub_808A678);
+}
+
+static void PokemonMenu_Mail(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ sPokeMenuCursorPos = 0;
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ sub_806E750(0, &sUnknown_0839F584, (void*) sPokemonMenuActions, 0);
+ gTasks[taskID].func = sub_808A73C;
+}
+
+static void sub_808A73C(u8 taskID)
+{
+ if (gMain.newAndRepeatedKeys == DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ if (sPokeMenuCursorPos == 0)
+ sPokeMenuCursorPos = MoveMenuCursor(sUnknown_0839F584.unk0 - 1);
+ else
+ sPokeMenuCursorPos = MoveMenuCursor(-1);
+ }
+ if (gMain.newAndRepeatedKeys == DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ if (sPokeMenuCursorPos == sUnknown_0839F584.unk0 - 1)
+ sPokeMenuCursorPos = MoveMenuCursor(1 - sUnknown_0839F584.unk0);
+ else
+ sPokeMenuCursorPos = MoveMenuCursor(1);
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ PartyMenuGetPopupMenuFunc(0, &sUnknown_0839F584, (void*) sPokemonMenuActions, sPokeMenuCursorPos)(taskID);
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ sub_806E7D0(0, &sUnknown_0839F584);
+ PokemonMenu_Cancel(taskID);
+ }
+}
+
+static void PokemonMenu_ReadMail(u8 taskID)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_808A848;
+}
+
+static void sub_808A848(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 mailID = GetMonData(&gPlayerParty[sub_806CA38(taskID)], MON_DATA_MAIL);
+ DestroyTask(taskID);
+ HandleReadMail(&gSaveBlock1.mail[mailID], sub_808A8A8, 1);
+ }
+}
+
+static void sub_808A8A8(void)
+{
+ gUnknown_020384F0 = gLastFieldPokeMenuOpened;
+ ewram1B000.unk262 = 4;
+ sub_8089F14();
+}
+
+static void sub_808A8D4(u8 taskID)
+{
+ sPokeMenuCursorPos = 0;
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ sub_806D538(0, 0);
+ gTasks[taskID].func = sub_8089CD4;
+}
+
+static void PokemonMenu_Cancel(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ PlaySE(SE_SELECT);
+ sub_808A8D4(taskID);
+}
+
+static void PokemonMenu_CancelSubmenu(u8 taskID)
+{
+ HandleDestroyMenuCursors();
+ PlaySE(SE_SELECT);
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ sub_806D5A4();
+ sub_8089C7C(sPokeMenuCursorPos);
+ gTasks[taskID].func = sub_8089D94;
+}
+
+#define IS_SOFTBOILED_MILKDRINK(ID)((ID == (POKEMENU_MILK_DRINK - POKEMENU_FIRST_FIELD_MOVE_ID) || ID == (POKEMENU_SOFT_BOILED - POKEMENU_FIRST_FIELD_MOVE_ID)))
+#define IS_SURF(ID)((ID == (POKEMENU_SURF - POKEMENU_FIRST_FIELD_MOVE_ID)))
+#define IS_FLY(ID)((ID == (POKEMENU_FLY - POKEMENU_FIRST_FIELD_MOVE_ID)))
+
+#define tFieldMoveId data[11]
+
+static void PokemonMenu_FieldMove(u8 taskID)
+{
+ s16* data = gTasks[taskID].data;
+
+ HandleDestroyMenuCursors();
+ tFieldMoveId = sPokeMenuOptionsOrder[sPokeMenuCursorPos] - POKEMENU_FIRST_FIELD_MOVE_ID;
+ if (sub_80F9344() == TRUE)
+ {
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ if (IS_SOFTBOILED_MILKDRINK(tFieldMoveId))
+ sub_806D538(9, 0);
+ else
+ sub_806D538(sFieldMoveFuncs[tFieldMoveId].field_1, 0);
+ gTasks[taskID].func = sub_808ABF4;
+ }
+ else if (tFieldMoveId <= 7 && FlagGet(BADGE01_GET + tFieldMoveId) != TRUE)
+ {
+ // can't use a field HM move without a proper badge
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ sub_806D5A4();
+ sub_806E834(gOtherText_CantBeUsedBadge, 1);
+ gTasks[taskID].func = sub_808AAF0;
+ }
+ else
+ {
+ if (sFieldMoveFuncs[tFieldMoveId].func() == TRUE)
+ {
+ sPokeMenuCursorPos = 0;
+ if (!IS_SOFTBOILED_MILKDRINK(tFieldMoveId))
+ {
+ gTasks[taskID].func = sub_808AB34;
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ }
+ else
+ sub_8133D28(taskID);
+ }
+ else
+ {
+ MenuZeroFillWindowRect(19, 0, 29, 19);
+ if (IS_SURF(tFieldMoveId) && TestPlayerAvatarFlags(8))
+ sub_806D538(8, 0);
+ else
+ sub_806D538(sFieldMoveFuncs[tFieldMoveId].field_1, 0);
+ gTasks[taskID].func = sub_808ABF4;
+ }
+ }
+}
+
+static void sub_808AAF0(u8 taskID)
+{
+ if (gUnknown_0202E8F6 != 1 && (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON))
+ {
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ PokemonMenu_Cancel(taskID);
+ }
+}
+
+static void sub_808AB34(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ if (!IS_FLY(gTasks[taskID].tFieldMoveId) || ShouldDoBrailleFlyEffect())
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ else
+ SetMainCallback2(CB2_InitFlyRegionMap);
+ DestroyTask(taskID);
+ }
+}
+
+#undef tFieldMoveId
+
+void FieldCallback_Teleport(void)
+{
+ pal_fill_black();
+ CreateTask(sub_808ABA8, 8);
+}
+
+static void sub_808ABA8(u8 taskID)
+{
+ if (sub_807D770() == TRUE)
+ {
+ gFieldEffectArguments[0] = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES);
+ gUnknown_03005CE4();
+ DestroyTask(taskID);
+ }
+}
+
+static void sub_808ABF4(u8 taskID)
+{
+ if (gMain.newKeys & A_BUTTON || gMain.newKeys & B_BUTTON)
+ {
+ MenuZeroFillWindowRect(1, 17, 28, 18);
+ PokemonMenu_Cancel(taskID);
+ }
+}
+
+static void sub_808AC2C(void)
+{
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_SURF);
+}
+
+static bool8 SetUpFieldMove_Surf(void)
+{
+ if (PartyHasMonWithSurf() == TRUE && IsPlayerFacingSurfableFishableWater() == TRUE)
+ {
+ gFieldCallback = FieldCallback_Teleport;
+ gUnknown_03005CE4 = sub_808AC2C;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void sub_808AC8C(void)
+{
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_FLY);
+}
+
+static bool8 SetUpFieldMove_Fly(void)
+{
+ if (ShouldDoBrailleFlyEffect())
+ {
+ gFieldCallback = FieldCallback_Teleport;
+ gUnknown_03005CE4 = DoBrailleFlyEffect;
+ return TRUE;
+ }
+ if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE)
+ {
+ gFieldCallback = FieldCallback_Teleport;
+ gUnknown_03005CE4 = sub_808AC8C;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_808AD0C(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+void sub_808AD58(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ sub_806AF4C(0, 0xFF, sub_8089CD4, 0);
+ SetMainCallback2(sub_808AD0C);
+}
+
+u16 unref_sub_808AD88(void)
+{
+ return GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES);
+}
+
+static void sub_808ADAC(void)
+{
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_DIVE);
+}
+
+static bool8 SetUpFieldMove_Dive(void)
+{
+ gFieldEffectArguments[1] = sub_8068F18();
+ if (gFieldEffectArguments[1])
+ {
+ gFieldCallback = FieldCallback_Teleport;
+ gUnknown_03005CE4 = sub_808ADAC;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void sub_808AE08(void)
+{
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ FieldEffectStart(FLDEFF_USE_WATERFALL);
+}
+
+static bool8 SetUpFieldMove_Waterfall(void)
+{
+ s16 x, y;
+ GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
+ if (MetatileBehavior_IsWaterfall(MapGridGetMetatileBehaviorAt(x, y)) == TRUE
+ && IsPlayerSurfingNorth() == TRUE)
+ {
+ gFieldCallback = FieldCallback_Teleport;
+ gUnknown_03005CE4 = sub_808AE08;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void sub_808AE8C(void)
+{
+ u8 i;
+ u8 arg = gScriptItemId - 33;
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES))
+ {
+ sub_806D668(i);
+ if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !CanMonLearnTMHM(&gPlayerParty[i], arg))
+ sub_806BC3C(i, 0x9A);
+ else if (pokemon_has_move(&gPlayerParty[i], ItemIdToBattleMoveId(gScriptItemId)))
+ sub_806BC3C(i, 0xA8);
+ else
+ sub_806BC3C(i, 0x8C);
+ }
+ }
+}
+
+static void sub_808AF20(void)
+{
+ u8 i;
+ for (i = 0; i < 6; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES))
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) || !GetEvolutionTargetSpecies(&gPlayerParty[i], 3, gScriptItemId))
+ {
+ sub_806D668(i);
+ sub_806BC3C(i, 0);
+ }
+ }
+ }
+}
+
+static void sub_808AF80(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ if (gUnknown_02038561 == 0)
+ {
+ switch (CheckIfItemIsTMHMOrEvolutionStone(gScriptItemId))
+ {
+ case 1:
+ sub_808AE8C();
+ break;
+ case 2:
+ sub_808AF20();
+ break;
+ }
+ }
+ if (gLastFieldPokeMenuOpened > 5 || !GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_SPECIES))
+ gLastFieldPokeMenuOpened = 0;
+ sub_806C994(ewram1B000.unk260, gLastFieldPokeMenuOpened);
+ sub_806BF74(ewram1B000.unk260, 0);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+void sub_808B020(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ switch (gUnknown_02038561)
+ {
+ case 0:
+ if (CheckIfItemIsTMHMOrEvolutionStone(gScriptItemId) == 1)
+ sub_806AF4C(0, 0, sub_808B0C0, 20);
+ else
+ sub_806AF4C(0, 0, sub_808B0C0, 3);
+ break;
+ case 4:
+ sub_806AF4C(0, 0, sub_808B1EC, 0xFF);
+ break;
+ case 1:
+ case 3:
+ sub_806AF4C(0, 0, sub_808B0C0, 4);
+ break;
+ }
+ SetMainCallback2(sub_808AF80);
+}
+
+void sub_808B0C0(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ switch (sub_806BD80(taskID))
+ {
+ case 1:
+ gLastFieldPokeMenuOpened = sub_806CA38(taskID);
+ if (GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_IS_EGG))
+ PlaySE(SE_HAZURE);
+ else
+ {
+ sub_806D5A4();
+ if (gUnknown_02038561 == 0)
+ gUnknown_03004AE4(taskID, gScriptItemId, sub_808B224);
+ if (gUnknown_02038561 == 1)
+ {
+ PlaySE(SE_SELECT);
+ PartyMenuTryGiveMonHeldItem(taskID, gScriptItemId, sub_808B2EC);
+ }
+ if (gUnknown_02038561 == 3)
+ {
+ PlaySE(SE_SELECT);
+ PartyMenuTryGiveMonMail(taskID, sub_808B2B4);
+ }
+ }
+ break;
+ case 2:
+ gLastFieldPokeMenuOpened = sub_806CA38(taskID);
+ PlaySE(SE_SELECT);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ if (gUnknown_02038561 == 0 || gUnknown_02038561 == 1)
+ gTasks[taskID].func = sub_808B25C;
+ if (gUnknown_02038561 == 3)
+ gTasks[taskID].func = sub_808B2B4;
+ break;
+ }
+ }
+}
+
+static void sub_808B1EC(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ gUnknown_03004AE4(taskID, gScriptItemId, sub_808B224);
+}
+
+static void sub_808B224(u8 taskID)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_808B25C;
+}
+
+static void sub_808B25C(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sub_80A5B40);
+ DestroyTask(taskID);
+ }
+}
+
+static void sub_808B288(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(Mailbox_ReturnToMailListAfterDeposit);
+ DestroyTask(taskID);
+ }
+}
+
+static void sub_808B2B4(u8 taskID)
+{
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_808B288;
+}
+
+static void sub_808B2EC(u8 taskID)
+{
+ if (gUnknown_0202E8F4 == 2)
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].func = sub_808B338;
+ }
+ else
+ sub_808B224(taskID);
+}
+
+static void sub_808B338(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ u8 mailID;
+
+ gLastFieldPokeMenuOpened = sub_806CA38(taskID);
+ mailID = GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_MAIL);
+ DestroyTask(taskID);
+ sub_80E62A0(4, &gSaveBlock1.mail[mailID], sub_808B3EC, 3);
+ }
+}
+
+static void sub_808B3A0(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gLastFieldPokeMenuOpened);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+static void sub_808B3EC(void)
+{
+ IntrCallback callback;
+
+ gPaletteFade.bufferTransferDisabled = 1;
+ if (gScriptResult == 0)
+ {
+ if (gUnknown_0202E8F8)
+ RemoveBagItem(gUnknown_0202E8F8, 1);
+ AddBagItem(GetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM), 1);
+ TakeMailFromMon(&gPlayerParty[gLastFieldPokeMenuOpened]);
+ SetMonData(&gPlayerParty[gLastFieldPokeMenuOpened], MON_DATA_HELD_ITEM, (void*) &gUnknown_0202E8F8);
+ CreateTask(sub_808B25C, 5);
+ gPaletteFade.bufferTransferDisabled = 0;
+ callback = sub_806AEDC;
+ }
+ else
+ {
+ sub_806AF4C(0, 0, sub_808B4A4, 0xFF);
+ callback = sub_808B3A0;
+ }
+ SetMainCallback2(callback);
+}
+
+static void sub_808B4A4(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ DisplayGiveHeldItemMessage(gLastFieldPokeMenuOpened, gScriptItemId, 1);
+ gTasks[taskID].func = sub_808B4EC;
+ }
+}
+
+static void sub_808B4EC(u8 taskID)
+{
+ if (gUnknown_0202E8F6 != 1)
+ sub_808B224(taskID);
+}
+
+void sub_808B508(u8 taskID)
+{
+ sub_808B224(taskID);
+}
+
+static void sub_808B518(void)
+{
+ while (1)
+ {
+ if (sub_806B124() == TRUE)
+ {
+ sub_806C994(EWRAM_1B000.unk260, gUnknown_020384F0);
+ sub_806BF74(EWRAM_1B000.unk260, 0);
+ SetMainCallback2(sub_806AEDC);
+ break;
+ }
+ if (sub_80F9344() == TRUE)
+ break;
+ }
+}
+
+void sub_808B564(void)
+{
+ gPaletteFade.bufferTransferDisabled = 1;
+ if (sub_809FA30() != 4)
+ sub_806AF4C(0, 0, TaughtMove, 0xFF);
+ else
+ sub_806AF4C(0, 0, StopTryingToTeachMove_806F588, 0xFF);
+ SetMainCallback2(sub_808B518);
+}
+
+void sub_808B5B4(u32 taskID)
+{
+ gUnknown_03005CF0 = gTasks[taskID].func;
+ gTasks[taskID].func = sub_808B5E4;
+ sub_808B5E4(taskID);
+}
+
+static void sub_808B5E4(u8 taskID)
+{
+ if (sub_8055870() != TRUE)
+ gTasks[taskID].func = gUnknown_03005CF0;
+}
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/rom3.c b/src/rom3.c
index 02def5dfa..3f4860ecc 100644
--- a/src/rom3.c
+++ b/src/rom3.c
@@ -1,5 +1,4 @@
#include "global.h"
-#include "rom3.h"
#include "battle.h"
#include "battle_811DA74.h"
#include "battle_ai.h"
@@ -10,10 +9,13 @@
#include "items.h"
#include "link.h"
#include "pokemon.h"
+#include "rom3.h"
#include "rom_8094928.h"
#include "species.h"
#include "task.h"
#include "util.h"
+#include "battle_message.h"
+#include "data2.h"
extern u8 unk_2000000[];
@@ -343,30 +345,30 @@ void sub_800BD54(void)
}
}
-void dp01_prepare_buffer(u8 a, u8 *b, u16 c)
+void PrepareBufferDataTransfer(u8 a, u8 *data, u16 size)
{
int i;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
- dp01_prepare_buffer_wireless_probably(a, c, b);
+ PrepareBufferDataTransferLink(a, size, data);
}
else
{
switch (a)
{
case 0:
- for (i = 0; i < c; i++)
+ for (i = 0; i < size; i++)
{
- gBattleBufferA[gActiveBank][i] = *b;
- b++;
+ gBattleBufferA[gActiveBank][i] = *data;
+ data++;
}
break;
case 1:
- for (i = 0; i < c; i++)
+ for (i = 0; i < size; i++)
{
- gBattleBufferB[gActiveBank][i] = *b;
- b++;
+ gBattleBufferB[gActiveBank][i] = *data;
+ data++;
}
break;
}
@@ -390,12 +392,12 @@ void sub_800BF28(void)
CpuFill16(0, EWRAM_14000, 0x2000);
}
-void dp01_prepare_buffer_wireless_probably(u8 a, u16 b, u8 *c)
+void PrepareBufferDataTransferLink(u8 a, u16 size, u8 *data)
{
s32 r9;
int i;
- r9 = b - b % 4 + 4;
+ r9 = size - size % 4 + 4;
if (gTasks[gUnknown_020238C4].data[14] + r9 + 9 > 0x1000)
{
gTasks[gUnknown_020238C4].data[12] = gTasks[gUnknown_020238C4].data[14];
@@ -409,8 +411,8 @@ void dp01_prepare_buffer_wireless_probably(u8 a, u16 b, u8 *c)
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14005] = (r9 & 0x0000FF00) >> 8;
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14006] = gAbsentBankFlags;
unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14007] = gEffectBank;
- for (i = 0; i < b; i++)
- unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14008 + i] = c[i];
+ for (i = 0; i < size; i++)
+ unk_2000000[gTasks[gUnknown_020238C4].data[14] + 0x14008 + i] = data[i];
gTasks[gUnknown_020238C4].data[14] = gTasks[gUnknown_020238C4].data[14] + r9 + 8;
}
@@ -570,19 +572,19 @@ void EmitGetAttributes(u8 a, u8 b, u8 c)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x01_a_b_0(u8 a, u8 b, u8 c)
+void Emitcmd1(u8 a, u8 b, u8 c)
{
gBattleBuffersTransferData[0] = 1;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e)
+void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, void *e)
{
int i;
@@ -590,11 +592,11 @@ void EmitSetAttributes(u8 a, u8 b, u8 c, u8 d, u8 *e)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
for (i = 0; i < d; i++)
- gBattleBuffersTransferData[3 + i] = *(e++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, d + 3);
+ gBattleBuffersTransferData[3 + i] = *(u8*)(e++);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, d + 3);
}
-void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d)
+void Emitcmd3(u8 a, u8 b, u8 c, u8 *d)
{
int i;
@@ -603,96 +605,96 @@ void unref_sub_800C6A4(u8 a, u8 b, u8 c, u8 *d)
gBattleBuffersTransferData[2] = c;
for (i = 0; i < c; i++)
gBattleBuffersTransferData[3 + i] = *(d++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, c + 3);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 3);
}
-void dp01_build_cmdbuf_x04_4_4_4(u8 a)
+void EmitLoadPokeSprite(u8 a)
{
gBattleBuffersTransferData[0] = 4;
gBattleBuffersTransferData[1] = 4;
gBattleBuffersTransferData[2] = 4;
gBattleBuffersTransferData[3] = 4;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void sub_800C704(u8 a, u8 b, u8 c)
+void EmitSendOutPoke(u8 a, u8 b, u8 c)
{
gBattleBuffersTransferData[0] = 5;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = 5;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x06_a(u8 a, u8 b)
+void EmitReturnPokeToBall(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 6;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x07_7_7_7(u8 a)
+void EmitTrainerThrow(u8 a)
{
gBattleBuffersTransferData[0] = 7;
gBattleBuffersTransferData[1] = 7;
gBattleBuffersTransferData[2] = 7;
gBattleBuffersTransferData[3] = 7;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x08_8_8_8(u8 a)
+void EmitTrainerSlide(u8 a)
{
gBattleBuffersTransferData[0] = 8;
gBattleBuffersTransferData[1] = 8;
gBattleBuffersTransferData[2] = 8;
gBattleBuffersTransferData[3] = 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x09_9_9_9(u8 a)
+void EmitTrainerSlideBack(u8 a)
{
gBattleBuffersTransferData[0] = 9;
gBattleBuffersTransferData[1] = 9;
gBattleBuffersTransferData[2] = 9;
gBattleBuffersTransferData[3] = 9;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitFaintAnimation(u8 a)
+void Emitcmd10(u8 a)
{
gBattleBuffersTransferData[0] = 10;
gBattleBuffersTransferData[1] = 10;
gBattleBuffersTransferData[2] = 10;
gBattleBuffersTransferData[3] = 10;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x0B_B_B_B(u8 a)
+void Emitcmd11(u8 a)
{
gBattleBuffersTransferData[0] = 11;
gBattleBuffersTransferData[1] = 11;
gBattleBuffersTransferData[2] = 11;
gBattleBuffersTransferData[3] = 11;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x0C_C_C_C(u8 a)
+void Emitcmd12(u8 a)
{
gBattleBuffersTransferData[0] = 12;
gBattleBuffersTransferData[1] = 12;
gBattleBuffersTransferData[2] = 12;
gBattleBuffersTransferData[3] = 12;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x0D_a(u8 a, u8 b)
+void EmitBallThrow(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 13;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void unref_sub_800C828(u8 a, u8 b, u8 *c)
+void EmitPuase(u8 a, u8 b, u8 *c)
{
int i;
@@ -700,10 +702,10 @@ void unref_sub_800C828(u8 a, u8 b, u8 *c)
gBattleBuffersTransferData[1] = b;
for (i = 0; i < b * 3; i++)
gBattleBuffersTransferData[2 + i] = *(c++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, b * 3 + 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b * 3 + 2);
}
-void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g)
+void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, struct DisableStruct *g)
{
gBattleBuffersTransferData[0] = 15;
gBattleBuffersTransferData[1] = b;
@@ -729,315 +731,88 @@ void EmitMoveAnimation(u8 a, u16 b, u8 c, u16 d, s32 e, u8 f, u8 *g)
}
gBattleBuffersTransferData[14] = 0;
gBattleBuffersTransferData[15] = 0;
- memcpy(&gBattleBuffersTransferData[16], g, 0x1C);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 0x2C);
+ memcpy(&gBattleBuffersTransferData[16], g, sizeof(*g));
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 0x2C);
}
-#ifdef NONMATCHING
-void EmitPrintString(u8 a, u16 b)
+void EmitPrintString(u8 a, u16 stringID)
{
- int i;
- //u16 *r12;
+ s32 i;
+ struct StringInfoBattle* stringInfo;
gBattleBuffersTransferData[0] = 16;
gBattleBuffersTransferData[1] = gBattleOutcome;
- gBattleBuffersTransferData[2] = b;
- gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8;
-
- *((u16 *)&gBattleBuffersTransferData[4]) = gCurrentMove;
- *((u16 *)&gBattleBuffersTransferData[6]) = gUnknown_02024BE8;
- *((u16 *)&gBattleBuffersTransferData[8]) = gLastUsedItem;
+ gBattleBuffersTransferData[2] = stringID;
+ gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
+
+ stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
+ stringInfo->currentMove = gCurrentMove;
+ stringInfo->lastMove = gUnknown_02024BE8;
+ stringInfo->lastItem = gLastUsedItem;
+ stringInfo->lastAbility = gLastUsedAbility;
+ stringInfo->scrActive = BATTLE_STRUCT->scriptingActive;
+ stringInfo->unk1605E = BATTLE_STRUCT->unk1605E;
+ stringInfo->hpScale = BATTLE_STRUCT->hpScale;
+ stringInfo->StringBank = gStringBank;
+ stringInfo->moveType = gBattleMoves[gCurrentMove].type;
- gBattleBuffersTransferData[10] = gLastUsedAbility;
- gBattleBuffersTransferData[11] = unk_2000000[0x16000 + 3];
- gBattleBuffersTransferData[12] = unk_2000000[0x16000 + 0x5E];
- gBattleBuffersTransferData[13] = unk_2000000[0x16000 + 0xC1];
- gBattleBuffersTransferData[14] = gStringBank;
- gBattleBuffersTransferData[15] = gBattleMoves[gCurrentMove].type;
for (i = 0; i < 4; i++)
+ stringInfo->abilities[i] = gBattleMons[i].ability;
+ for (i = 0; i < 0x10; i++)
{
- gBattleBuffersTransferData[16 + i] = gBattleMons[i].ability;
+ stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
+ stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
+ stringInfo->textBuffs[2][i] = gBattleTextBuff3[i];
}
- for (i = 0; i < 16; i++)
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
+}
+
+void EmitPrintStringPlayerOnly(u8 a, u16 stringID)
+{
+ s32 i;
+ struct StringInfoBattle* stringInfo;
+
+ gBattleBuffersTransferData[0] = 17;
+ gBattleBuffersTransferData[1] = 17;
+ gBattleBuffersTransferData[2] = stringID;
+ gBattleBuffersTransferData[3] = (stringID & 0xFF00) >> 8;
+
+ stringInfo = (struct StringInfoBattle*)(&gBattleBuffersTransferData[4]);
+ stringInfo->currentMove = gCurrentMove;
+ stringInfo->lastMove = gUnknown_02024BE8;
+ stringInfo->lastItem = gLastUsedItem;
+ stringInfo->lastAbility = gLastUsedAbility;
+ stringInfo->scrActive = BATTLE_STRUCT->scriptingActive;
+ stringInfo->unk1605E = BATTLE_STRUCT->unk1605E;
+
+ for (i = 0; i < 4; i++)
+ stringInfo->abilities[i] = gBattleMons[i].ability;
+ for (i = 0; i < 0x10; i++)
{
- gBattleBuffersTransferData[20 + i] = gBattleTextBuff1[i];
- gBattleBuffersTransferData[36 + i] = gBattleTextBuff2[i];
- gBattleBuffersTransferData[52 + i] = gBattleTextBuff3[i];
+ stringInfo->textBuffs[0][i] = gBattleTextBuff1[i];
+ stringInfo->textBuffs[1][i] = gBattleTextBuff2[i];
+ stringInfo->textBuffs[2][i] = gBattleTextBuff3[i];
}
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 0x44);
-}
-#else
-__attribute__((naked))
-void EmitPrintString(u8 a, u16 b)
-{
- 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\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- ldr r2, _0800CA2C @ =gBattleBuffersTransferData\n\
- movs r0, 0x10\n\
- strb r0, [r2]\n\
- ldr r0, _0800CA30 @ =gBattleOutcome\n\
- ldrb r0, [r0]\n\
- strb r0, [r2, 0x1]\n\
- strb r1, [r2, 0x2]\n\
- lsrs r1, 8\n\
- strb r1, [r2, 0x3]\n\
- adds r0, r2, 0x4\n\
- mov r12, r0\n\
- ldr r4, _0800CA34 @ =gCurrentMove\n\
- ldrh r0, [r4]\n\
- strh r0, [r2, 0x4]\n\
- ldr r0, _0800CA38 @ =gUnknown_02024BE8\n\
- ldrh r0, [r0]\n\
- mov r1, r12\n\
- strh r0, [r1, 0x2]\n\
- ldr r0, _0800CA3C @ =gLastUsedItem\n\
- ldrh r0, [r0]\n\
- strh r0, [r1, 0x4]\n\
- ldr r0, _0800CA40 @ =gLastUsedAbility\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x6]\n\
- ldr r1, _0800CA44 @ =0x02000000\n\
- ldr r3, _0800CA48 @ =0x00016003\n\
- adds r0, r1, r3\n\
- ldrb r0, [r0]\n\
- mov r7, r12\n\
- strb r0, [r7, 0x7]\n\
- adds r3, 0x5B\n\
- adds r0, r1, r3\n\
- ldrb r0, [r0]\n\
- strb r0, [r7, 0x8]\n\
- ldr r7, _0800CA4C @ =0x000160c1\n\
- adds r1, r7\n\
- ldrb r0, [r1]\n\
- mov r1, r12\n\
- strb r0, [r1, 0x9]\n\
- ldr r0, _0800CA50 @ =gStringBank\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0xA]\n\
- ldr r3, _0800CA54 @ =gBattleMoves\n\
- ldrh r1, [r4]\n\
- lsls r0, r1, 1\n\
- adds r0, r1\n\
- lsls r0, 2\n\
- adds r0, r3\n\
- ldrb r0, [r0, 0x2]\n\
- mov r3, r12\n\
- strb r0, [r3, 0xB]\n\
- movs r3, 0\n\
- mov r9, r2\n\
- ldr r7, _0800CA58 @ =gBattleTextBuff3\n\
- mov r8, r7\n\
- adds r2, 0x10\n\
- ldr r0, _0800CA5C @ =gBattleMons\n\
- adds r4, r0, 0\n\
- adds r4, 0x20\n\
-_0800C9D2:\n\
- adds r1, r2, r3\n\
- ldrb r0, [r4]\n\
- strb r0, [r1]\n\
- adds r4, 0x58\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _0800C9D2\n\
- movs r3, 0\n\
- mov r5, r12\n\
- adds r5, 0x10\n\
- mov r4, r12\n\
- adds r4, 0x20\n\
- ldr r6, _0800CA60 @ =gBattleTextBuff2\n\
- mov r2, r12\n\
- adds r2, 0x30\n\
-_0800C9F0:\n\
- adds r1, r5, r3\n\
- ldr r7, _0800CA64 @ =gBattleTextBuff1\n\
- adds r0, r3, r7\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r1, r4, r3\n\
- adds r0, r3, r6\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r1, r2, r3\n\
- mov r7, r8\n\
- adds r0, r3, r7\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r3, 0x1\n\
- cmp r3, 0xF\n\
- ble _0800C9F0\n\
- mov r0, r10\n\
- mov r1, r9\n\
- movs r2, 0x44\n\
- bl dp01_prepare_buffer\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\
-_0800CA2C: .4byte gBattleBuffersTransferData\n\
-_0800CA30: .4byte gBattleOutcome\n\
-_0800CA34: .4byte gCurrentMove\n\
-_0800CA38: .4byte gUnknown_02024BE8\n\
-_0800CA3C: .4byte gLastUsedItem\n\
-_0800CA40: .4byte gLastUsedAbility\n\
-_0800CA44: .4byte 0x02000000\n\
-_0800CA48: .4byte 0x00016003\n\
-_0800CA4C: .4byte 0x000160c1\n\
-_0800CA50: .4byte gStringBank\n\
-_0800CA54: .4byte gBattleMoves\n\
-_0800CA58: .4byte gBattleTextBuff3\n\
-_0800CA5C: .4byte gBattleMons\n\
-_0800CA60: .4byte gBattleTextBuff2\n\
-_0800CA64: .4byte gBattleTextBuff1\n\
- .syntax divided\n");
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, sizeof(struct StringInfoBattle) + 4);
}
-#endif
-__attribute__((naked))
-void EmitPrintStringPlayerOnly()
-{
- 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\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- mov r10, r0\n\
- lsls r1, 16\n\
- lsrs r1, 16\n\
- ldr r2, _0800CB28 @ =gBattleBuffersTransferData\n\
- movs r0, 0x11\n\
- strb r0, [r2]\n\
- strb r0, [r2, 0x1]\n\
- strb r1, [r2, 0x2]\n\
- lsrs r1, 8\n\
- strb r1, [r2, 0x3]\n\
- adds r0, r2, 0x4\n\
- mov r12, r0\n\
- ldr r0, _0800CB2C @ =gCurrentMove\n\
- ldrh r0, [r0]\n\
- strh r0, [r2, 0x4]\n\
- ldr r0, _0800CB30 @ =gUnknown_02024BE8\n\
- ldrh r0, [r0]\n\
- mov r1, r12\n\
- strh r0, [r1, 0x2]\n\
- ldr r0, _0800CB34 @ =gLastUsedItem\n\
- ldrh r0, [r0]\n\
- strh r0, [r1, 0x4]\n\
- ldr r0, _0800CB38 @ =gLastUsedAbility\n\
- ldrb r0, [r0]\n\
- strb r0, [r1, 0x6]\n\
- ldr r0, _0800CB3C @ =0x02000000\n\
- ldr r3, _0800CB40 @ =0x00016003\n\
- adds r1, r0, r3\n\
- ldrb r1, [r1]\n\
- mov r7, r12\n\
- strb r1, [r7, 0x7]\n\
- ldr r1, _0800CB44 @ =0x0001605e\n\
- adds r0, r1\n\
- ldrb r0, [r0]\n\
- strb r0, [r7, 0x8]\n\
- movs r3, 0\n\
- mov r9, r2\n\
- ldr r7, _0800CB48 @ =gBattleTextBuff3\n\
- mov r8, r7\n\
- mov r4, r9\n\
- adds r4, 0x10\n\
- ldr r0, _0800CB4C @ =gBattleMons\n\
- adds r2, r0, 0\n\
- adds r2, 0x20\n\
-_0800CACE:\n\
- adds r1, r4, r3\n\
- ldrb r0, [r2]\n\
- strb r0, [r1]\n\
- adds r2, 0x58\n\
- adds r3, 0x1\n\
- cmp r3, 0x3\n\
- ble _0800CACE\n\
- movs r3, 0\n\
- mov r5, r12\n\
- adds r5, 0x10\n\
- mov r4, r12\n\
- adds r4, 0x20\n\
- ldr r6, _0800CB50 @ =gBattleTextBuff2\n\
- mov r2, r12\n\
- adds r2, 0x30\n\
-_0800CAEC:\n\
- adds r1, r5, r3\n\
- ldr r7, _0800CB54 @ =gBattleTextBuff1\n\
- adds r0, r3, r7\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r1, r4, r3\n\
- adds r0, r3, r6\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r1, r2, r3\n\
- mov r7, r8\n\
- adds r0, r3, r7\n\
- ldrb r0, [r0]\n\
- strb r0, [r1]\n\
- adds r3, 0x1\n\
- cmp r3, 0xF\n\
- ble _0800CAEC\n\
- mov r0, r10\n\
- mov r1, r9\n\
- movs r2, 0x44\n\
- bl dp01_prepare_buffer\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\
-_0800CB28: .4byte gBattleBuffersTransferData\n\
-_0800CB2C: .4byte gCurrentMove\n\
-_0800CB30: .4byte gUnknown_02024BE8\n\
-_0800CB34: .4byte gLastUsedItem\n\
-_0800CB38: .4byte gLastUsedAbility\n\
-_0800CB3C: .4byte 0x02000000\n\
-_0800CB40: .4byte 0x00016003\n\
-_0800CB44: .4byte 0x0001605e\n\
-_0800CB48: .4byte gBattleTextBuff3\n\
-_0800CB4C: .4byte gBattleMons\n\
-_0800CB50: .4byte gBattleTextBuff2\n\
-_0800CB54: .4byte gBattleTextBuff1\n\
- .syntax divided\n");
-}
-
-void dp01_build_cmdbuf_x12_a_bb(u8 a, u8 b, u16 c)
+void Emitcmd18(u8 a, u8 b, u16 c)
{
gBattleBuffersTransferData[0] = 18;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void unref_sub_800CB84(u8 a, u8 b)
+void Emitcmd19(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 19;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d)
+void Emitcmd20(u8 a, u8 b, u8 c, u8 *d)
{
u32 i;
@@ -1047,20 +822,20 @@ void sub_800CBA4(u8 a, u8 b, u8 c, u8 *d)
gBattleBuffersTransferData[3] = 0;
for (i = 0; i < 20; i++)
gBattleBuffersTransferData[4 + i] = d[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 24);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 24);
}
-void sub_800CBE0(u8 a, u8 *b)
+void EmitOpenBag(u8 a, u8 *b)
{
int i;
gBattleBuffersTransferData[0] = 21;
for (i = 0; i < 3; i++)
gBattleBuffersTransferData[1 + i] = b[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e)
+void EmitChoosePokemon(u8 a, u8 b, u8 c, u8 d, u8 *e)
{
int i;
@@ -1070,34 +845,38 @@ void dp01_build_cmdbuf_x16_a_b_c_ptr_d_e_f(u8 a, u8 b, u8 c, u8 d, u8 *e)
gBattleBuffersTransferData[3] = d;
for (i = 0; i < 3; i++)
gBattleBuffersTransferData[4 + i] = e[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 8); //but only 7 bytes were written
}
-void dp01_build_cmdbuf_x17_17_17_17(u8 a)
+void Emitcmd23(u8 a)
{
gBattleBuffersTransferData[0] = 23;
gBattleBuffersTransferData[1] = 23;
gBattleBuffersTransferData[2] = 23;
gBattleBuffersTransferData[3] = 23;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitHealthBarUpdate(u8 a, s16 b)
+// FIXME: I think this function is supposed to take s16 as its second argument,
+// but battle_4.c expects u16
+void EmitHealthBarUpdate(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 24;
gBattleBuffersTransferData[1] = 0;
- gBattleBuffersTransferData[2] = b;
- gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ gBattleBuffersTransferData[2] = (s16)b;
+ gBattleBuffersTransferData[3] = ((s16)b & 0xFF00) >> 8;
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitExpBarUpdate(u8 a, u8 b, s16 c)
+// FIXME: I think this function is supposed to take s16 as its third argument,
+// but battle_4.c expects u16
+void EmitExpBarUpdate(u8 a, u8 b, u16 c)
{
gBattleBuffersTransferData[0] = 25;
gBattleBuffersTransferData[1] = b;
- gBattleBuffersTransferData[2] = c;
- gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ gBattleBuffersTransferData[2] = (s16)c;
+ gBattleBuffersTransferData[3] = ((s16)c & 0xFF00) >> 8;
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitStatusIconUpdate(u8 a, u32 b, u32 c)
@@ -1111,7 +890,7 @@ void EmitStatusIconUpdate(u8 a, u32 b, u32 c)
gBattleBuffersTransferData[6] = (c & 0x0000FF00) >> 8;
gBattleBuffersTransferData[7] = (c & 0x00FF0000) >> 16;
gBattleBuffersTransferData[8] = (c & 0xFF000000) >> 24;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 9);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 9);
}
void EmitStatusAnimation(u8 a, u8 b, u32 c)
@@ -1122,17 +901,17 @@ void EmitStatusAnimation(u8 a, u8 b, u32 c)
gBattleBuffersTransferData[3] = (c & 0x0000FF00) >> 8;
gBattleBuffersTransferData[4] = (c & 0x00FF0000) >> 16;
gBattleBuffersTransferData[5] = (c & 0xFF000000) >> 24;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 6);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 6);
}
void EmitStatusXor(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 28;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8 a, u16 b, u8 *c)
+void Emitcmd29(u8 a, u16 b, u8 *c)
{
int i;
@@ -1142,10 +921,10 @@ void dp01_build_cmdbuf_x1D_1D_numargs_varargs(u8 a, u16 b, u8 *c)
gBattleBuffersTransferData[3] = (b & 0xFF00) >> 8;
for (i = 0; i < b; i++)
gBattleBuffersTransferData[4 + i] = *(c++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 4);
}
-void unref_sub_800CDD4(u8 a, u32 b, u16 c, u8 *d)
+void EmitDMATransfer(u8 a, u32 b, u16 c, u8 *d)
{
int i;
@@ -1158,10 +937,10 @@ void unref_sub_800CDD4(u8 a, u32 b, u16 c, u8 *d)
gBattleBuffersTransferData[6] = (c & 0xFF00) >> 8;
for (i = 0; i < c; i++)
gBattleBuffersTransferData[7 + i] = *(d++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, c + 7);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, c + 7);
}
-void unref_sub_800CE3C(u8 a, u16 b, u8 *c)
+void Emitcmd31(u8 a, u16 b, u8 *c)
{
int i;
@@ -1170,10 +949,10 @@ void unref_sub_800CE3C(u8 a, u16 b, u8 *c)
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
for (i = 0; i < b; i++)
gBattleBuffersTransferData[3 + i] = *(c++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 3);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3);
}
-void unref_sub_800CE84(u8 a, u16 b, u8 *c)
+void Emitcmd32(u8 a, u16 b, u8 *c)
{
int i;
@@ -1182,19 +961,19 @@ void unref_sub_800CE84(u8 a, u16 b, u8 *c)
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
for (i = 0; i < b; i++)
gBattleBuffersTransferData[3 + i] = *(c++);
- dp01_prepare_buffer(a, gBattleBuffersTransferData, b + 3);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, b + 3);
}
-void dp01_build_cmdbuf_x21_a_bb(u8 a, u8 b, u16 c)
+void Emitcmd33(u8 a, u8 b, u16 c)
{
gBattleBuffersTransferData[0] = 33;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c)
+void Emitcmd34(u8 a, u8 b, u8 *c)
{
int i;
@@ -1202,59 +981,59 @@ void dp01_build_cmdbuf_x22_a_three_bytes(u8 a, u8 b, u8 *c)
gBattleBuffersTransferData[1] = b;
for (i = 0; i < 3; i++)
gBattleBuffersTransferData[2 + i] = c[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 5);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 5);
}
-void dp01_build_cmdbuf_x23_aa_0(u8 a, u16 b)
+void Emitcmd35(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 35;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x24_aa_0(u8 a, u16 b)
+void Emitcmd36(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 36;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x25_25_25_25(u8 a)
+void Emitcmd37(u8 a)
{
gBattleBuffersTransferData[0] = 37;
gBattleBuffersTransferData[1] = 37;
gBattleBuffersTransferData[2] = 37;
gBattleBuffersTransferData[3] = 37;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x26_a(u8 a, u8 b)
+void Emitcmd38(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 38;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x27_27_27_27(u8 a)
+void Emitcmd39(u8 a)
{
gBattleBuffersTransferData[0] = 39;
gBattleBuffersTransferData[1] = 39;
gBattleBuffersTransferData[2] = 39;
gBattleBuffersTransferData[3] = 39;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x28_28_28_28(u8 a)
+void Emitcmd40(u8 a)
{
gBattleBuffersTransferData[0] = 40;
gBattleBuffersTransferData[1] = 40;
gBattleBuffersTransferData[2] = 40;
gBattleBuffersTransferData[3] = 40;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitHitAnimation(u8 a)
@@ -1263,16 +1042,16 @@ void EmitHitAnimation(u8 a)
gBattleBuffersTransferData[1] = 41;
gBattleBuffersTransferData[2] = 41;
gBattleBuffersTransferData[3] = 41;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x2A_2A_2A_2A(u8 a)
+void Emitcmd42(u8 a)
{
gBattleBuffersTransferData[0] = 42;
gBattleBuffersTransferData[1] = 42;
gBattleBuffersTransferData[2] = 42;
gBattleBuffersTransferData[3] = 42;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitEffectivenessSound(u8 a, u16 b)
@@ -1281,16 +1060,16 @@ void EmitEffectivenessSound(u8 a, u16 b)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void sub_800D074(u8 a, u16 b)
+void Emitcmd44(u8 a, u16 b)
{
gBattleBuffersTransferData[0] = 44;
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = (b & 0xFF00) >> 8;
gBattleBuffersTransferData[3] = 0;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitFaintingCry(u8 a)
@@ -1299,26 +1078,26 @@ void EmitFaintingCry(u8 a)
gBattleBuffersTransferData[1] = 45;
gBattleBuffersTransferData[2] = 45;
gBattleBuffersTransferData[3] = 45;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void EmitBattleIntroSlide(u8 a, u8 b)
+void EmitIntroSlide(u8 a, u8 battleTerrain)
{
gBattleBuffersTransferData[0] = 46;
- gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ gBattleBuffersTransferData[1] = battleTerrain;
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x2F_2F_2F_2F(u8 a)
+void EmitTrainerBallThrow(u8 a)
{
gBattleBuffersTransferData[0] = 47;
gBattleBuffersTransferData[1] = 47;
gBattleBuffersTransferData[2] = 47;
gBattleBuffersTransferData[3] = 47;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c)
+void Emitcmd48(u8 a, u8 *b, u8 c)
{
int i;
@@ -1328,25 +1107,25 @@ void dp01_build_cmdbuf_x30_TODO(u8 a, u8 *b, u8 c)
gBattleBuffersTransferData[3] = 48;
for (i = 0; i < 48; i++)
gBattleBuffersTransferData[4 + i] = b[i];
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 52);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 52);
}
-void dp01_build_cmdbuf_x31_31_31_31(u8 a)
+void Emitcmd49(u8 a)
{
gBattleBuffersTransferData[0] = 49;
gBattleBuffersTransferData[1] = 49;
gBattleBuffersTransferData[2] = 49;
gBattleBuffersTransferData[3] = 49;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
-void dp01_build_cmdbuf_x32_32_32_32(u8 a)
+void Emitcmd50(u8 a)
{
gBattleBuffersTransferData[0] = 50;
gBattleBuffersTransferData[1] = 50;
gBattleBuffersTransferData[2] = 50;
gBattleBuffersTransferData[3] = 50;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitSpriteInvisibility(u8 a, u8 b)
@@ -1355,7 +1134,7 @@ void EmitSpriteInvisibility(u8 a, u8 b)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = 51;
gBattleBuffersTransferData[3] = 51;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitBattleAnimation(u8 a, u8 b, u16 c)
@@ -1364,26 +1143,26 @@ void EmitBattleAnimation(u8 a, u8 b, u16 c)
gBattleBuffersTransferData[1] = b;
gBattleBuffersTransferData[2] = c;
gBattleBuffersTransferData[3] = (c & 0xFF00) >> 8;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 4);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 4);
}
void EmitLinkStandbyMsg(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 53;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
void EmitResetActionMoveSelection(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 54;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
-void dp01_build_cmdbuf_x37_a(u8 a, u8 b)
+void Emitcmd55(u8 a, u8 b)
{
gBattleBuffersTransferData[0] = 55;
gBattleBuffersTransferData[1] = b;
- dp01_prepare_buffer(a, gBattleBuffersTransferData, 2);
+ PrepareBufferDataTransfer(a, gBattleBuffersTransferData, 2);
}
diff --git a/src/rom6.c b/src/rom6.c
index ff032b6c2..b91a9b2c0 100644
--- a/src/rom6.c
+++ b/src/rom6.c
@@ -6,7 +6,7 @@
#include "field_player_avatar.h"
#include "item_use.h"
#include "pokemon_menu.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "songs.h"
#include "sound.h"
@@ -17,7 +17,7 @@ extern u16 gScriptLastTalked;
extern void (*gFieldCallback)(void);
extern u8 gLastFieldPokeMenuOpened;
extern void (*gUnknown_03005CE4)(void);
-extern u8 UseRockSmashScript[];
+extern u8 S_UseRockSmash[];
EWRAM_DATA struct MapPosition gUnknown_0203923C = {0};
@@ -64,9 +64,9 @@ static void task08_080C9820(u8 taskId)
if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(&gMapObjects[mapObjId])
|| FieldObjectClearAnimIfSpecialAnimFinished(&gMapObjects[mapObjId]))
{
- if (gMapHeader.mapType == 5)
+ if (gMapHeader.mapType == MAP_TYPE_UNDERWATER)
{
- FieldEffectStart(0x3B);
+ FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
gTasks[taskId].func = sub_810B428;
}
else
@@ -82,7 +82,7 @@ static void sub_810B3DC(u8 taskId)
{
if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(&gMapObjects[gPlayerAvatar.mapObjectId]) == TRUE)
{
- FieldEffectStart(0x3B);
+ FieldEffectStart(FLDEFF_FIELD_MOVE_SHOW_MON_INIT);
gTasks[taskId].func = sub_810B428;
}
}
@@ -91,17 +91,17 @@ static void sub_810B428(u8 taskId)
{
if (!FieldEffectActiveListContains(6))
{
- gUnknown_0202FF84[1] = player_get_direction_lower_nybble();
- if (gUnknown_0202FF84[1] == 1)
- gUnknown_0202FF84[2] = 0;
- if (gUnknown_0202FF84[1] == 2)
- gUnknown_0202FF84[2] = 1;
- if (gUnknown_0202FF84[1] == 3)
- gUnknown_0202FF84[2] = 2;
- if (gUnknown_0202FF84[1] == 4)
- gUnknown_0202FF84[2] = 3;
+ gFieldEffectArguments[1] = player_get_direction_lower_nybble();
+ if (gFieldEffectArguments[1] == 1)
+ gFieldEffectArguments[2] = 0;
+ if (gFieldEffectArguments[1] == 2)
+ gFieldEffectArguments[2] = 1;
+ if (gFieldEffectArguments[1] == 3)
+ gFieldEffectArguments[2] = 2;
+ if (gFieldEffectArguments[1] == 4)
+ gFieldEffectArguments[2] = 3;
sub_805B980(&gMapObjects[gPlayerAvatar.mapObjectId], GetPlayerAvatarGraphicsIdByCurrentState());
- StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gUnknown_0202FF84[2]);
+ StartSpriteAnim(&gSprites[gPlayerAvatar.spriteId], gFieldEffectArguments[2]);
FieldEffectActiveListRemove(6);
gTasks[taskId].func = sub_810B4CC;
}
@@ -120,7 +120,7 @@ bool8 SetUpFieldMove_RockSmash(void)
{
if (npc_before_player_of_type(0x56) == TRUE)
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_810B53C;
return TRUE;
}
@@ -132,8 +132,8 @@ bool8 SetUpFieldMove_RockSmash(void)
static void sub_810B53C(void)
{
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
- ScriptContext1_SetupScript(UseRockSmashScript);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
+ ScriptContext1_SetupScript(S_UseRockSmash);
}
int FldEff_RockSmash(void)
@@ -149,15 +149,15 @@ int FldEff_RockSmash(void)
static void sub_810B58C(void)
{
PlaySE(SE_W088);
- FieldEffectActiveListRemove(0x25);
+ FieldEffectActiveListRemove(FLDEFF_USE_ROCK_SMASH);
EnableBothScriptContexts();
}
int SetUpFieldMove_Dig(void)
{
- if (sub_80CA1C8() == TRUE)
+ if (CanUseEscapeRopeOnCurrMap() == TRUE)
{
- gFieldCallback = sub_808AB90;
+ gFieldCallback = FieldCallback_Teleport;
gUnknown_03005CE4 = sub_810B5D8;
return TRUE;
}
@@ -169,9 +169,9 @@ int SetUpFieldMove_Dig(void)
static void sub_810B5D8(void)
{
- sub_8053014();
- FieldEffectStart(0x26);
- gUnknown_0202FF84[0] = gLastFieldPokeMenuOpened;
+ Overworld_ResetStateAfterDigEscRope();
+ FieldEffectStart(FLDEFF_USE_DIG);
+ gFieldEffectArguments[0] = gLastFieldPokeMenuOpened;
}
int FldEff_UseDig(void)
@@ -189,7 +189,7 @@ static void sub_810B634(void)
{
u8 taskId;
- FieldEffectActiveListRemove(0x26);
+ FieldEffectActiveListRemove(FLDEFF_USE_DIG);
if (ShouldDoBrailleDigEffect())
{
DoBrailleDigEffect();
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/scene/berry_blender.c b/src/scene/berry_blender.c
new file mode 100644
index 000000000..7ffcc5185
--- /dev/null
+++ b/src/scene/berry_blender.c
@@ -0,0 +1,3884 @@
+#include "global.h"
+#include "decompress.h"
+#include "palette.h"
+#include "event_data.h"
+#include "main.h"
+#include "text_window.h"
+#include "menu.h"
+#include "strings2.h"
+#include "sound.h"
+#include "songs.h"
+#include "berry.h"
+#include "string_util.h"
+#include "link.h"
+#include "task.h"
+#include "overworld.h"
+#include "item.h"
+#include "items.h"
+#include "rng.h"
+#include "save.h"
+#include "menu_cursor.h"
+#include "trig.h"
+#include "pokeblock.h"
+
+//needed to match Blender_ControlHitPitch
+struct MusicPlayerInfo
+{
+ struct SongHeader *songHeader;
+ u32 status;
+ u8 trackCount;
+ u8 priority;
+ u8 cmd;
+ u8 unk_B;
+ u32 clock;
+ u8 gap[8];
+ u8 *memAccArea;
+ u16 tempoD;
+ u16 tempoU;
+ u16 tempoI;
+ u16 tempoC;
+ u16 fadeOI;
+ u16 fadeOC;
+ u16 fadeOV;
+ struct MusicPlayerTrack *tracks;
+ struct ToneData *tone;
+ u32 ident;
+ u32 func;
+ u32 intp;
+};
+
+#define BLENDER_SCORE_BEST 0
+#define BLENDER_SCORE_GOOD 1
+#define BLENDER_SCORE_MISS 2
+
+#define BLENDER_MAX_PLAYERS 4
+#define BLENDER_SCORES_NO 3
+
+#define FLAVOUR_SPICY 0
+#define FLAVOUR_DRY 1
+#define FLAVOUR_SWEET 2
+#define FLAVOUR_BITTER 3
+#define FLAVOUR_SOUR 4
+
+struct BlenderBerry
+{
+ u16 itemID;
+ u8 name[7];
+ u8 flavours[5];
+ u8 smoothness;
+};
+
+struct BerryBlenderData
+{
+ u8 field_0;
+ u8 field_1;
+ struct Window field_4;
+ u8 field_35;
+ u8 field_36;
+ u8 field_37;
+ u8 field_38;
+ u8 field_39;
+ u8 field_3A;
+ u8 field_3B;
+ u8 field_3C;
+ u8 field_3D;
+ u8 field_3E;
+ u8 field_3F;
+ u8 field_40;
+ u8 field_41;
+ u8 field_42;
+ u8 field_43;
+ u8 field_44;
+ u8 field_45;
+ u8 field_46;
+ u8 field_47;
+ u8 field_48;
+ u8 field_49;
+ u8 field_4A;
+ u8 field_4B;
+ u8 field_4C;
+ u8 field_4D;
+ u16 field_4E;
+ u8 scoreIconIDs[3];
+ u16 arrowPos;
+ s16 field_56;
+ s16 field_58;
+ u16 max_RPM;
+ u8 SyncArrowSpriteID[BLENDER_MAX_PLAYERS];
+ u8 SyncArrowSprite2ID[BLENDER_MAX_PLAYERS];
+ u8 field_64;
+ u8 field_65;
+ u8 field_66;
+ u8 field_67;
+ u8 field_68;
+ u8 field_69;
+ u8 field_6A;
+ u8 field_6B;
+ u8 field_6C;
+ u8 field_6D;
+ u8 field_6E;
+ u8 field_6F;
+ u16 field_70[BLENDER_MAX_PLAYERS];
+ u16 field_78;
+ u16 field_7A;
+ u16 field_7C;
+ u8 field_7E;
+ u8 field_7F;
+ u16 chosenItemID[BLENDER_MAX_PLAYERS];
+ u8 playersNo;
+ u8 field_89;
+ u8 field_8A;
+ u8 field_8B;
+ u8 field_8C;
+ u8 field_8D;
+ u8 field_8E;
+ u8 field_8F;
+ u8 field_90;
+ u8 field_91;
+ u8 field_92;
+ u8 field_93;
+ u16 field_94;
+ u8 field_96;
+ u8 field_97;
+ u8 field_98;
+ u8 field_99;
+ u16 field_9A[BLENDER_MAX_PLAYERS];
+ u16 field_A2[BLENDER_MAX_PLAYERS];
+ u8 field_AA;
+ u8 stringVar[129];
+ u32 gameFrameTime;
+ s32 framesToWait;
+ u32 field_134;
+ u8 field_138;
+ u8 field_139;
+ u8 field_13A;
+ u8 field_13B;
+ u8 field_13C;
+ u8 field_13D;
+ u16 field_13E;
+ u16 field_140;
+ u16 field_142;
+ s16 field_144;
+ s16 field_146;
+ u8 field_148[3];
+ u8 field_14B;
+ u16 scores[BLENDER_MAX_PLAYERS][3];
+ u8 playerPlaces[BLENDER_MAX_PLAYERS];
+ struct BgAffineDstData field_168;
+ u16 field_178;
+ struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS];
+ u32 field_1BC;
+ u16 field_1C0;
+ u16 field_1C2;
+ u32 field_1C4;
+};
+
+struct BlenderDebug
+{
+ s8 cursorPos;
+ s8 berries[4];
+ struct Pokeblock pokeblock;
+ u8 field_10;
+ u8 spicy;
+ u8 dry;
+ u8 sweet;
+ u8 bitter;
+ u8 sour;
+ u8 feel;
+ s8 field_17;
+ s8 field_18;
+ s8 field_19;
+ s16 BPM;
+};
+
+// other files functions
+void m4aMPlayPitchControl(struct MusicPlayerInfo *mplayInfo, u16 trackBits, s16 pitch);
+void m4aMPlayTempoControl(struct MusicPlayerInfo *mplayInfo, u16 tempo);
+void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo);
+void sub_80A6978(void);
+u8 sub_80A7DEC(u8 berryId, u8 x, u8 y, bool8 animate);
+void sub_814A880(u8 a1, u8 a2);
+u8 sub_814A5C0(u8 a1, u16 a2, u8 a3, u16 a4, u8 a5);
+s8 sub_810CA00(void);
+bool8 sub_810CA34(struct Pokeblock *pokeblock);
+#ifdef GERMAN
+extern void de_sub_8073110();
+#endif
+
+extern struct MusicPlayerInfo gMPlay_SE2;
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern u8 ewram[];
+extern u16 gScriptItemId;
+extern u8 gUnknown_020297ED;
+extern u8 byte_3002A68;
+
+extern const u8 gUnknown_08E6C100[];
+extern const u8 gUnknown_08E6C920[];
+extern const u8 gUnknown_08E6D354[];
+extern const struct WindowConfig gWindowConfig_81E6F68;
+extern const u8 *const gPokeblockNames[];
+extern const struct Berry gBerries[];
+
+extern const u8 gBerryBlenderArrowTiles[];
+extern const u8 gBerryBlenderMarubatsuTiles[];
+extern const u8 gBerryBlenderParticlesTiles[];
+extern const u8 gBerryBlenderCountdownNumbersTiles[];
+extern const u8 gBerryBlenderStartTiles[];
+extern const u16 gBerryBlenderMiscPalette[];
+extern const u16 gBerryBlenderArrowPalette[];
+
+// ewram
+static EWRAM_DATA u8 gUnknown_020297DC = 0;
+static EWRAM_DATA u32 gUnknown_020297E0 = 0;
+static EWRAM_DATA u32 gUnknown_020297E4 = 0;
+static EWRAM_DATA u8 gUnknown_020297E8 = 0;
+
+// iwram common
+u16 gUnknown_03004830;
+u8 gInGameOpponentsNo;
+u16 gUnknown_03004840[10];
+struct BerryBlenderData* gBerryBlenderData;
+
+// iwram bss
+IWRAM_DATA s16 gUnknown_03000510[8];
+IWRAM_DATA s16 gUnknown_03000520[6];
+IWRAM_DATA s16 gUnknown_0300052C;
+IWRAM_DATA s16 gUnknown_0300052E;
+IWRAM_DATA s32 gUnknown_03000530[6];
+IWRAM_DATA s32 gUnknown_03000548[5];
+IWRAM_DATA u32 gUnknown_0300055C;
+IWRAM_DATA struct BlenderDebug sBlenderDebug;
+
+// this file's functions
+void Blender_SetBankBerryData(u8 bank, u16 itemID);
+
+static void sub_80514A4(void);
+static void sub_80514F0(void);
+static void sub_804E56C(void);
+static void Blender_SetPlayerNamesLocal(u8 NoOfOpponents);
+static void sub_8051474(void);
+static void sub_804E9F8(void);
+static void sub_804F378(void);
+static void sub_8051414(struct BgAffineDstData *dest);
+static void sub_804F238(void);
+static void sub_80501FC(void);
+static bool8 sub_8051B8C(void);
+static void sub_804F2A8(void);
+static void sub_804F81C(void);
+static void sub_805156C(void);
+void sub_8051684(struct Sprite* sprite);
+static void sub_8051AC8(s16* a0, u16 a1);
+static void sub_805194C(u16 a0, u16 a1);
+static void sub_8051A3C(u16 a0);
+static void sub_8051B18(void);
+static void sub_805123C(void);
+static void sub_8050954(void);
+static bool8 Blender_PrintBlendingRanking(void);
+static bool8 Blender_PrintBlendingResults(void);
+static void sub_80510E8(void);
+static void sub_8050E30(void);
+static void sub_805197C(u16 a0, u16 a1);
+static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst);
+static void sub_8052BD0(u8 taskID);
+static void sub_8052AF8(void);
+static void sub_804F8C8(u8 taskID);
+static void sub_804F9F4(u8 taskID);
+static void sub_804FB1C(u8 taskID);
+static void sub_8051C04(struct Sprite* sprite);
+static void sub_8051650(struct Sprite* sprite);
+static void sub_805181C(struct Sprite* sprite);
+static void sub_80518CC(struct Sprite* sprite);
+
+// const data
+static const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal");
+static const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin");
+static const u16 sBlenderOuterPal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal");
+
+// unreferenced pals?
+static const u16 sUnknownPal_0[] = INCBIN_U16("graphics/unused/unknown/821604C.gbapal");
+static const u16 sUnknownArray_1[224] = {0};
+
+// unreferenced Japanese strings
+static const u8 sUnknownJpnString0[] = _("▶");
+static const u8 sUnknownJpnString1[] = _(" ");
+static const u8 sUnknownJpnString2[] = _("カッコイ"); // "cool" (missing an イ at the end)
+static const u8 sUnknownJpnString3[] = _("カワイイ"); // "cute"
+static const u8 sUnknownJpnString4[] = _("ウツクシ"); // "beautiful" (missing an イ at the end)
+static const u8 sUnknownJpnString5[] = _("カシコイ"); // "smart"
+static const u8 sUnknownJpnString6[] = _("タクマシ"); // "tough" (missing an イ at the end)
+
+static const u8 gUnknown_08216249[] = _("\p");
+
+// unreferenced; These appear to be the first names of four people who worked on the game.
+static const u8 sUnknownJpnString7[10] = _("てつじ"); // Tetsuji (Ohta)
+static const u8 sUnknownJpnString8[10] = _("あきと"); // Akito (Mori)
+static const u8 sUnknownJpnString9[10] = _("シゲル"); // Shigeru (Ohmori)
+static const u8 sUnknownJpnString10[10] = _("ヨシノリ"); // Yoshinori (Matsuda)
+
+static const u8 sUnknownText_2Pok[] = _("2Pok");
+static const u8 sUnknownText_3Pok[] = _("3Pok");
+static const u8 sUnknownText_4Pok[] = _("4Pok");
+static const u8* const gUnknown_08216284[] =
+{
+ sUnknownText_2Pok, sUnknownText_3Pok, sUnknownText_4Pok
+};
+
+// unreferenced player strings
+static const u8 sUnknown1PString[4] = _("1P");
+static const u8 sUnknown2PString[4] = _("2P");
+static const u8 sUnknown3PString[4] = _("3P");
+static const u8 sUnknown4PString[4] = _("4P");
+
+#ifdef ENGLISH
+static const u8 sBlenderOpponentName1[] = _("MISTER");
+static const u8 sBlenderOpponentName2[] = _("LADDIE");
+static const u8 sBlenderOpponentName3[] = _("LASSIE");
+#else // GERMAN
+static const u8 sBlenderOpponentName1[] = _("OPI");
+static const u8 sBlenderOpponentName2[] = _("KUMPEL");
+static const u8 sBlenderOpponentName3[] = _("TUSSI");
+#endif // ENGLISH
+static const u8* const sBlenderOpponentsNames[] =
+{
+ sBlenderOpponentName1, sBlenderOpponentName2, sBlenderOpponentName3
+};
+
+static const u8 sRedColorString[] = _("{COLOR RED}");
+static const u8 sNewLineString_0[] = _("\n");
+static const u8 sSpaceString_0[] = _(" ");
+
+static const s8 gUnknown_082162CC[][2] =
+{
+ {-1, -1}, {1, -1}, {-1, 1}, {1, 1}
+};
+
+static const u8 gUnknown_082162D4[][2] =
+{
+ {2, 6}, {23, 6}, {2, 12}, {23, 12}, {1, 6}, {22, 6}, {1, 12}, {22, 12}
+};
+
+static const u8 sBlenderSyncArrowsPos[][2] =
+{
+ {72, 32}, {168, 32}, {72, 128}, {168, 128}
+};
+
+static const u8 gUnknown_082162EC[3][4] =
+{
+ {-1, 0, 1, -1}, {-1, 0, 1, 2}, {0, 1, 2, 3}
+};
+
+static const u16 gUnknown_082162F8[] = {0, 0xC000, 0x4000, 0x8000};
+static const u8 gUnknown_08216300[] = {1, 1, 0};
+static const u8 gUnknown_08216303[] = {32, 224, 96, 160, 0};
+
+static const TaskFunc gUnknown_08216308[] =
+{
+ sub_804F8C8, sub_804F9F4, sub_804FB1C
+};
+
+static const struct OamData sOamData_8216314 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_821631C[] =
+{
+ ANIMCMD_FRAME(16, 5, 1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216324[] =
+{
+ ANIMCMD_FRAME(16, 5, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821632C[] =
+{
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216334[] =
+{
+ ANIMCMD_FRAME(16, 5, 0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821633C[] =
+{
+ ANIMCMD_FRAME(48, 2, 1, 1),
+ ANIMCMD_FRAME(32, 5, 1, 1),
+ ANIMCMD_FRAME(48, 3, 1, 1),
+ ANIMCMD_FRAME(16, 5, 1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216350[] =
+{
+ ANIMCMD_FRAME(48, 2, .vFlip = TRUE),
+ ANIMCMD_FRAME(32, 5, .vFlip = TRUE),
+ ANIMCMD_FRAME(48, 3, .vFlip = TRUE),
+ ANIMCMD_FRAME(16, 5, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216364[] =
+{
+ ANIMCMD_FRAME(48, 2, .hFlip = TRUE),
+ ANIMCMD_FRAME(32, 5, .hFlip = TRUE),
+ ANIMCMD_FRAME(48, 3, .hFlip = TRUE),
+ ANIMCMD_FRAME(16, 5, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216378[] =
+{
+ ANIMCMD_FRAME(48, 2, 0, 0),
+ ANIMCMD_FRAME(32, 5, 0, 0),
+ ANIMCMD_FRAME(48, 3, 0, 0),
+ ANIMCMD_FRAME(16, 5, 0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821638C[] =
+{
+ ANIMCMD_FRAME(0, 5, 1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216394[] =
+{
+ ANIMCMD_FRAME(0, 5, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821639C[] =
+{
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82163A4[] =
+{
+ ANIMCMD_FRAME(0, 5, 0, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82163AC[] =
+{
+ sSpriteAnim_821631C,
+ sSpriteAnim_8216324,
+ sSpriteAnim_821632C,
+ sSpriteAnim_8216334,
+ sSpriteAnim_821633C,
+ sSpriteAnim_8216350,
+ sSpriteAnim_8216364,
+ sSpriteAnim_8216378,
+ sSpriteAnim_821638C,
+ sSpriteAnim_8216394,
+ sSpriteAnim_821639C,
+ sSpriteAnim_82163A4
+};
+
+static const struct SpriteSheet gUnknown_082163DC =
+{
+ gBerryBlenderArrowTiles, 0x800, 46545
+};
+
+static const struct SpritePalette gUnknown_082163E4 =
+{
+ gBerryBlenderMiscPalette, 46546
+};
+
+static const struct SpritePalette gUnknown_082163EC =
+{
+ gBerryBlenderArrowPalette, 12312
+};
+
+static const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate =
+{
+ .tileTag = 46545,
+ .paletteTag = 12312,
+ .oam = &sOamData_8216314,
+ .anims = sSpriteAnimTable_82163AC,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8051C04
+};
+
+static const struct OamData sOamData_821640C =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 1,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_8216414[] =
+{
+ ANIMCMD_FRAME(0, 20),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821641C[] =
+{
+ ANIMCMD_FRAME(4, 20, 1, 0),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216424[] =
+{
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_FRAME(12, 4),
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821643C[] =
+{
+ ANIMCMD_FRAME(8, 4),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_8216444[] =
+{
+ sSpriteAnim_8216414,
+ sSpriteAnim_821641C,
+ sSpriteAnim_8216424,
+ sSpriteAnim_821643C,
+};
+
+static const struct SpriteSheet gUnknown_08216454 =
+{
+ gBerryBlenderMarubatsuTiles, 0x200, 48888
+};
+
+static const struct SpriteTemplate sSpriteTemplate_821645C =
+{
+ .tileTag = 48888,
+ .paletteTag = 46546,
+ .oam = &sOamData_821640C,
+ .anims = sSpriteAnimTable_8216444,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_8051650
+};
+
+static const struct OamData sOamData_8216474 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_821647C[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_FRAME(1, 4),
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216494[] =
+{
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(4, 5),
+ ANIMCMD_FRAME(2, 4),
+ ANIMCMD_FRAME(0, 3),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82164AC[] =
+{
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_FRAME(2, 2),
+ ANIMCMD_FRAME(4, 4),
+ ANIMCMD_FRAME(3, 3),
+ ANIMCMD_FRAME(2, 2),
+ ANIMCMD_FRAME(1, 2),
+ ANIMCMD_FRAME(0, 2),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82164D0[] =
+{
+ ANIMCMD_FRAME(5, 5, 1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_82164D8[] =
+{
+ ANIMCMD_FRAME(6, 5, 1, 1),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_82164E0[] =
+{
+ sSpriteAnim_821647C,
+ sSpriteAnim_8216494,
+ sSpriteAnim_82164AC,
+ sSpriteAnim_82164D0,
+ sSpriteAnim_82164D8,
+};
+
+static const struct SpriteSheet gUnknown_082164F4 =
+{
+ gBerryBlenderParticlesTiles, 0xE0, 23456
+};
+
+static const struct SpriteTemplate sSpriteTemplate_82164FC =
+{
+ .tileTag = 23456,
+ .paletteTag = 46546,
+ .oam = &sOamData_8216474,
+ .anims = sSpriteAnimTable_82164E0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct OamData sOamData_8216514 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_821651C[] =
+{
+ ANIMCMD_FRAME(32, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_8216524[] =
+{
+ ANIMCMD_FRAME(16, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_821652C[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_8216534[] =
+{
+ sSpriteAnim_821651C,
+ sSpriteAnim_8216524,
+ sSpriteAnim_821652C,
+};
+
+static const struct SpriteSheet gUnknown_08216540 =
+{
+ gBerryBlenderCountdownNumbersTiles, 0x600, 12345
+};
+
+static const struct SpriteTemplate sSpriteTemplate_8216548 =
+{
+ .tileTag = 12345,
+ .paletteTag = 46546,
+ .oam = &sOamData_8216514,
+ .anims = sSpriteAnimTable_8216534,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_805181C
+};
+
+static const struct OamData sOamData_8216560 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 1,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_8216568[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_8216570[] =
+{
+ sSpriteAnim_8216568,
+};
+
+static const struct SpriteSheet gUnknown_08216574 =
+{
+ gBerryBlenderStartTiles, 0x400, 12346
+};
+
+static const struct SpriteTemplate sSpriteTemplate_821657C =
+{
+ .tileTag = 12346,
+ .paletteTag = 46546,
+ .oam = &sOamData_8216560,
+ .anims = sSpriteAnimTable_8216570,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_80518CC
+};
+
+static const s16 gUnknown_08216594[][5] =
+{
+ {-10, 20, 10, 2, 1},
+ {250, 20, 10, -2, 1},
+ {-10, 140, 10, 2, -1},
+ {250, 140, 10, -2, -1},
+};
+
+static const u8 gUnknown_082165BC[][3] =
+{
+ {4, 3, 2}, {0, 4, 3}, {1, 0, 4}, {2, 1, 0}, {3, 2, 1}, {0, 2, 3}, {1, 3, 4}, {2, 4, 0}, {3, 0, 1}, {4, 1, 2},
+};
+
+static const u8 gUnknown_082165DA[] = {1, 1, 2, 3, 4};
+static const u8 gUnknown_082165DF[] = {0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15};
+static const u8 gUnknown_082165E9[] = {6, 6, 6, 6, 5};
+static const u8 gUnknown_082165EE[] = {3, 3, 3, 2, 2};
+static const u8 gUnknown_082165F3[] = {3, 3, 3, 3, 2};
+
+static const u8 sText_Space[] = _(" ");
+static const u8 sText_BPM[] = _("BPM");
+static const u8 sText_Dash[] = _("-");
+static const u8 sNewLineString_1[] = _("\n");
+static const u8 sNewLineString_2[] = _("\n");
+
+static void Blender_ControlHitPitch(void)
+{
+ m4aMPlayPitchControl(&gMPlay_SE2, 0xFFFF, (gBerryBlenderData->field_56 - 128) * 2);
+}
+
+static void VBlankCB0_BerryBlender(void)
+{
+ sub_80514A4();
+ sub_80514F0();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void VBlankCB1_BerryBlender(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static bool8 sub_804E2EC(void)
+{
+ switch (gBerryBlenderData->field_1)
+ {
+ case 0:
+ LZDecompressWram(gUnknown_08E6C100, &ewram[0x10000]);
+ gBerryBlenderData->field_1++;
+ break;
+ case 1:
+ {
+ const void* offsetRead = sBlenderCenterMap;
+ void* offsetWrite = (void*)(VRAM + 0x4000);
+
+ DmaCopy16(3, offsetRead, offsetWrite, 0x400);
+ LoadPalette(sBlenderCenterPal, 0, 0x100);
+ gBerryBlenderData->field_1++;
+ }
+ break;
+ case 2:
+ {
+ void* offsetRead = &ewram[0x10000];
+ void* offsetWrite = (void*)(VRAM);
+ u32 size = 0x2000;
+ while (TRUE)
+ {
+ DmaCopy16(3, offsetRead, offsetWrite, 0x1000);
+ offsetRead += 0x1000;
+ offsetWrite += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaCopy16(3, offsetRead, offsetWrite, size);
+ break;
+ }
+ }
+ gBerryBlenderData->field_1++;
+ }
+ break;
+ case 3:
+ LZDecompressWram(gUnknown_08E6C920, &ewram[0x10000]);
+ gBerryBlenderData->field_1++;
+ break;
+ case 4:
+ LZDecompressWram(gUnknown_08E6D354, &ewram[0x13000]);
+ gBerryBlenderData->field_1++;
+ break;
+ case 5:
+ {
+ void* offsetRead = &ewram[0x10000];
+ void* offsetWrite = (void*)(VRAM + 0xE000);
+
+ DmaCopy16(3, offsetRead, offsetWrite, 0x1000);
+ gBerryBlenderData->field_1++;
+ }
+ break;
+ case 6:
+ {
+ void* offsetRead = &ewram[0x11000];
+ void* offsetWrite = (void*)(VRAM + 0xF000);
+
+ DmaCopy16(3, offsetRead, offsetWrite, 0x1000);
+ gBerryBlenderData->field_1++;
+ }
+ break;
+ case 7:
+ {
+ u16 i;
+ u16* palStore = (u16*)(&ewram[0x13000]);
+ void* offsetRead;
+ void* offsetWrite;
+
+ for (i = 0; i < 640; i++)
+ {
+ *(palStore + i) |= 0x100;
+ }
+ offsetRead = &ewram[0x13000];
+ offsetWrite = (void*)(VRAM + 0x6000);
+ DmaCopy16(3, offsetRead, offsetWrite, 0x500);
+ LoadPalette(sBlenderOuterPal, 0x80, 0x20);
+ gBerryBlenderData->field_1++;
+ }
+ break;
+ case 8:
+ LoadSpriteSheet(&gUnknown_082163DC);
+ LoadSpriteSheet(&gUnknown_082164F4);
+ LoadSpriteSheet(&gUnknown_08216454);
+ gBerryBlenderData->field_1++;
+ break;
+ case 9:
+ LoadSpriteSheet(&gUnknown_08216540);
+ LoadSpriteSheet(&gUnknown_08216574);
+ LoadSpritePalette(&gUnknown_082163EC);
+ LoadSpritePalette(&gUnknown_082163E4);
+ gBerryBlenderData->field_1 = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void sub_804E4FC(void)
+{
+ REG_DISPCNT = 0x1341;
+ REG_BG2CNT = 0x4880;
+ REG_BG1CNT = 0xC0D;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+}
+
+void sub_804E538(void)
+{
+ u8* field6F; //this temp value is needed to match
+
+ gBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]);
+
+ field6F = &gBerryBlenderData->field_6F;
+ gBerryBlenderData->field_0 = 0;
+ *field6F = 0;
+
+ Blender_SetPlayerNamesLocal(gSpecialVar_0x8004);
+ SetMainCallback2(sub_804E56C);
+}
+
+static void sub_804E56C(void)
+{
+ s32 i;
+ switch (gBerryBlenderData->field_0)
+ {
+ case 0:
+ REG_DISPCNT = 0;
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetVBlankCallback(NULL);
+ SetUpWindowConfig(&gWindowConfig_81E6F68);
+ InitMenuWindow(&gWindowConfig_81E6F68);
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_140 = 0;
+ gBerryBlenderData->field_13E = 0;
+ gBerryBlenderData->field_142 = 0x50;
+ gBerryBlenderData->field_144 = 0;
+ gBerryBlenderData->field_146 = 0;
+ gBerryBlenderData->field_1 = 0;
+ sub_8051474();
+ break;
+ case 1:
+ if (sub_804E2EC())
+ {
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->SyncArrowSpriteID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1);
+ StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[i]], i + 8);
+ }
+ SetVBlankCallback(VBlankCB0_BerryBlender);
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 2:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ sub_8051474();
+ gBerryBlenderData->field_0++;
+ break;
+ case 3:
+ sub_804E4FC();
+ if (!gPaletteFade.active)
+ {
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 4:
+ MenuDrawTextWindow(0, 14, 29, 19);
+ MenuPrintMessage(gOtherText_BlenderChooseBerry, 1, 15);
+ gBerryBlenderData->field_0++;
+ break;
+ case 5:
+ if (MenuUpdateWindowText())
+ {
+ gBerryBlenderData->field_0++;
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ }
+ break;
+ case 6:
+ if (!gPaletteFade.active)
+ {
+ sub_80A6978();
+ gBerryBlenderData->field_0 = 0;
+ }
+ break;
+ }
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_804E738(struct Sprite* sprite)
+{
+ sprite->data1 += sprite->data6;
+ sprite->data2 -= sprite->data4;
+ sprite->data2 += sprite->data7;
+ sprite->data0 += sprite->data7;
+ sprite->data4--;
+
+ if (sprite->data0 < sprite->data2)
+ {
+ sprite->data3 = sprite->data4 = sprite->data3 - 1;
+ if (++sprite->data5 > 3)
+ DestroySprite(sprite);
+ else
+ PlaySE(SE_TB_KARA);
+ }
+ sprite->pos1.x = sprite->data1;
+ sprite->pos1.y = sprite->data2;
+}
+
+void sub_804E794(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6)
+{
+ sprite->data0 = a3;
+ sprite->data1 = a2;
+ sprite->data2 = a3;
+ sprite->data3 = a4;
+ sprite->data4 = 10;
+ sprite->data5 = 0;
+ sprite->data6 = a5;
+ sprite->data7 = a6;
+ sprite->callback = sub_804E738;
+}
+
+static void sub_804E7C0(u16 a0, u8 a1)
+{
+ u8 spriteID = sub_80A7DEC(a0 + 123, 0, 80, a1 & 1);
+ sub_804E794(&gSprites[spriteID], gUnknown_08216594[a1][0], gUnknown_08216594[a1][1], gUnknown_08216594[a1][2], gUnknown_08216594[a1][3], gUnknown_08216594[a1][4]);
+}
+
+static void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemID)
+{
+ const struct Berry *berryInfo = GetBerryInfo(itemID + 124);
+ berry->itemID = itemID;
+ StringCopy(berry->name, berryInfo->name);
+ berry->flavours[FLAVOUR_SPICY] = berryInfo->spicy;
+ berry->flavours[FLAVOUR_DRY] = berryInfo->dry;
+ berry->flavours[FLAVOUR_SWEET] = berryInfo->sweet;
+ berry->flavours[FLAVOUR_BITTER] = berryInfo->bitter;
+ berry->flavours[FLAVOUR_SOUR] = berryInfo->sour;
+ berry->smoothness = berryInfo->smoothness;
+}
+
+static void Blender_SetPlayerNamesLocal(u8 NoOfOpponents)
+{
+ int i;
+ if (NoOfOpponents)
+ {
+ for (i = 0; i < 4; i++)
+ gLinkPlayers[i].language = GAME_LANGUAGE;
+ }
+ switch (NoOfOpponents)
+ {
+ case 0:
+ gInGameOpponentsNo = 0;
+ break;
+ case 1:
+ gInGameOpponentsNo = 1;
+ gBerryBlenderData->playersNo = 2;
+ StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName);
+ StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]);
+ break;
+ case 2:
+ gInGameOpponentsNo = 2;
+ gBerryBlenderData->playersNo = 3;
+ StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName);
+ StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]);
+ StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[1]);
+ break;
+ case 3:
+ gInGameOpponentsNo = 3;
+ gBerryBlenderData->playersNo = 4;
+ StringCopy(gLinkPlayers[0].name, gSaveBlock2.playerName);
+ StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[0]);
+ StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[1]);
+ StringCopy(gLinkPlayers[3].name, sBlenderOpponentsNames[2]);
+ break;
+ }
+}
+
+void sub_804E990(void)
+{
+ s32 i;
+
+ REG_DISPCNT = 0;
+ gBerryBlenderData = (struct BerryBlenderData*)(&ewram[0x18000]);
+ gBerryBlenderData->field_0 = 0;
+ gBerryBlenderData->field_134 = 0;
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->chosenItemID[i] = 0;
+ }
+ Blender_SetPlayerNamesLocal(gSpecialVar_0x8004);
+ if (gSpecialVar_0x8004 == 0)
+ SetMainCallback2(sub_804E9F8);
+ else
+ SetMainCallback2(sub_804F378);
+}
+
+static void sub_804E9F8(void)
+{
+ int i, j;
+ switch (gBerryBlenderData->field_0)
+ {
+ case 0:
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ SetVBlankCallback(VBlankCB0_BerryBlender);
+ SetUpWindowConfig(&gWindowConfig_81E6F68);
+ InitMenuWindow(&gWindowConfig_81E6F68);
+ gLinkType = 0x4422;
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_4E = 0;
+ gBerryBlenderData->field_7E = 0;
+ gBerryBlenderData->field_144 = 0;
+ gBerryBlenderData->field_146 = 0;
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->field_70[i] = 0;
+ for (j = 0; j < 3; j++)
+ {
+ gBerryBlenderData->scores[i][j] = 0;
+ }
+ }
+ gBerryBlenderData->field_7C = 0;
+ gBerryBlenderData->field_56 = 0;
+ gBerryBlenderData->arrowPos = 0;
+ gBerryBlenderData->max_RPM = 0;
+ gBerryBlenderData->field_1 = 0;
+ break;
+ case 1:
+ if (sub_804E2EC())
+ {
+ gBerryBlenderData->field_0++;
+ sub_8051474();
+ }
+ break;
+ case 2:
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1);
+ StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSprite2ID[i]], i + 8);
+ }
+ gBerryBlenderData->field_0++;
+ break;
+ case 3:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gBerryBlenderData->field_0++;
+ break;
+ case 4:
+ sub_804E4FC();
+ if (!gPaletteFade.active)
+ {
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 5:
+ MenuDrawTextWindow(0, 13, 29, 19);
+ MenuPrint(gOtherText_LinkStandby3, 1, 14);
+ gBerryBlenderData->field_0 = 8;
+ gBerryBlenderData->framesToWait = 0;
+ break;
+ case 8:
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_13C = 0;
+ Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId);
+ memcpy(gBlockSendBuffer, &gBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry));
+ sub_80084A4();
+ gBerryBlenderData->framesToWait = 0;
+ break;
+ case 9:
+ if (sub_8007ECC())
+ {
+ ResetBlockReceivedFlags();
+ if (GetMultiplayerId() == 0)
+ sub_8007E9C(4);
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 10:
+ if (++gBerryBlenderData->framesToWait > 20)
+ {
+ MenuZeroFillScreen();
+ if (GetBlockReceivedStatus() == sub_8008198())
+ {
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ memcpy(&gBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry));
+ gBerryBlenderData->chosenItemID[i] = gBerryBlenderData->blendedBerries[i].itemID;
+ }
+ ResetBlockReceivedFlags();
+ gBerryBlenderData->field_0++;
+ }
+ }
+ break;
+ case 11:
+ gBerryBlenderData->playersNo = GetLinkPlayerCount();
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ if (gBerryBlenderData->field_13C == gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i])
+ {
+ sub_804E7C0(gBerryBlenderData->chosenItemID[gBerryBlenderData->field_13C], i);
+ break;
+ }
+ }
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_13C++;
+ break;
+ case 12:
+ if (++gBerryBlenderData->framesToWait > 60)
+ {
+ if (gBerryBlenderData->field_13C >= gBerryBlenderData->playersNo)
+ {
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]] - 22528;
+ }
+ else
+ gBerryBlenderData->field_0--;
+ gBerryBlenderData->framesToWait = 0;
+ }
+ break;
+ case 13:
+ if (sub_8007ECC())
+ {
+ gBerryBlenderData->field_0++;
+ sub_8051414(&gBerryBlenderData->field_168);
+ }
+ break;
+ case 14:
+ REG_DISPCNT |= 0x400;
+ gBerryBlenderData->arrowPos += 0x200;
+ gBerryBlenderData->field_142 += 4;
+ if (gBerryBlenderData->field_142 > 255)
+ {
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_142 = 256;
+ gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]];
+ REG_BG2CNT = 0x4882;
+ gBerryBlenderData->framesToWait = 0;
+ sub_804F238();
+ sub_804F2A8();
+ }
+ sub_8051414(&gBerryBlenderData->field_168);
+ break;
+ case 15:
+ if (sub_8051B8C())
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ }
+ sub_8051414(&gBerryBlenderData->field_168);
+ break;
+ case 16:
+ CreateSprite(&sSpriteTemplate_8216548, 120, -16, 3);
+ gBerryBlenderData->field_0++;
+ break;
+ case 18:
+ gBerryBlenderData->field_0++;
+ break;
+ case 19:
+ sub_80084A4();
+ gBerryBlenderData->field_0++;
+ break;
+ case 20:
+ if (sub_8007ECC())
+ {
+ sub_8007E24();
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 21:
+ gBerryBlenderData->field_56 = 128;
+ gBerryBlenderData->gameFrameTime = 0;
+ SetMainCallback2(sub_80501FC);
+ if (GetCurrentMapMusic() != 403)
+ {
+ gBerryBlenderData->field_178 = GetCurrentMapMusic();
+ }
+ PlayBGM(BGM_CYCLING);
+ break;
+ case 100:
+ MenuDrawTextWindow(0, 13, 29, 19);
+ MenuPrintMessage(gOtherText_LinkNotFound, 1, 15);
+ gBerryBlenderData->field_0++;
+ break;
+ case 101:
+ if (MenuUpdateWindowText())
+ gBerryBlenderData->field_0++;
+ break;
+ case 102:
+ if (!gPaletteFade.active)
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ break;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_804F0F4(void)
+{
+ REG_DISPCNT = 0;
+
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+
+ SetVBlankCallback(VBlankCB0_BerryBlender);
+
+ SetUpWindowConfig(&gWindowConfig_81E6F68);
+ InitMenuWindow(&gWindowConfig_81E6F68);
+
+ gLinkType = 0x4422;
+
+ gBerryBlenderData->field_4E = 0;
+ gBerryBlenderData->field_56 = 0;
+ gBerryBlenderData->arrowPos = 0;
+ gBerryBlenderData->max_RPM = 0;
+ gBerryBlenderData->field_144 = 0;
+ gBerryBlenderData->field_146 = 0;
+ gBerryBlenderData->field_0++;
+}
+
+static u8 sub_804F16C(u16 arrowPos, u8 a1)
+{
+ u32 var1 = (arrowPos / 256) + 24;
+ u8 arrID = gBerryBlenderData->field_A2[a1];
+ u32 var2 = gUnknown_08216303[arrID];
+
+ if (var1 >= var2 && var1 < var2 + 48)
+ {
+ if (var1 >= var2 + 20 && var1 < var2 + 28)
+ return 2;
+ else
+ return 1;
+ }
+ else
+ return 0;
+}
+
+static void sub_804F1BC(u16 itemID, u8 a1, struct BlenderBerry* berry)
+{
+ u16 r4 = 0;
+ u16 i;
+ if (itemID == ITEM_ENIGMA_BERRY)
+ {
+ for (i = 0; i < 5; i++)
+ {
+ if (berry->flavours[r4] > berry->flavours[i])
+ r4 = i;
+ }
+ r4 += 5;
+ }
+ else
+ {
+ r4 = itemID - 133;
+ if (r4 >= 5)
+ r4 = (r4 % 5) + 5;
+ }
+ for (i = 0; i < a1 - 1; i++)
+ {
+ Blender_SetBankBerryData(i + 1, gUnknown_082165BC[r4][i] + 133);
+ }
+}
+
+static void sub_804F238(void)
+{
+ s32 i, j;
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->field_A2[i] = 0xFF;
+ gBerryBlenderData->field_9A[i] = gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i];
+ }
+ for (j = 0; j < BLENDER_MAX_PLAYERS; j++)
+ {
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ if (gBerryBlenderData->field_9A[i] == j)
+ gBerryBlenderData->field_A2[j] = i;
+ }
+ }
+}
+
+static void sub_804F2A8(void)
+{
+ int i;
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ if (gBerryBlenderData->field_9A[i] != 0xFF)
+ {
+ u8* stringPtr = gStringVar1;
+
+ gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]] = gBerryBlenderData->SyncArrowSprite2ID[i];
+ StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[i]]], i);
+ if (GetMultiplayerId() == gBerryBlenderData->field_9A[i])
+ stringPtr = StringCopy(stringPtr, sRedColorString);
+ StringCopy(stringPtr, gLinkPlayers[gBerryBlenderData->field_9A[i]].name);
+ MenuPrint_PixelCoords(gStringVar1, gUnknown_082162D4[i][0] * 8 + 1, gUnknown_082162D4[i][1] * 8, 1);
+ }
+ }
+}
+
+static void sub_804F378(void)
+{
+ s32 i, j;
+ switch (gBerryBlenderData->field_0)
+ {
+ case 0:
+ sub_804F0F4();
+ Blender_SetBankBerryData(0, gScriptItemId);
+ Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[0], gScriptItemId);
+ sub_804F1BC(gScriptItemId, gBerryBlenderData->playersNo, &gBerryBlenderData->blendedBerries[0]);
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->field_70[i] = 0;
+ for (j = 0; j < 3; j++)
+ {
+ gBerryBlenderData->scores[i][j] = 0;
+ }
+ }
+ gBerryBlenderData->field_7C = 0;
+ gBerryBlenderData->field_1 = 0;
+ break;
+ case 1:
+ if (sub_804E2EC())
+ {
+ gBerryBlenderData->field_0++;
+ sub_8051474();
+ }
+ break;
+ case 2:
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ gBerryBlenderData->SyncArrowSprite2ID[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1);
+ StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSprite2ID[i]], i + 8);
+ }
+ gBerryBlenderData->field_0++;
+ break;
+ case 3:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->framesToWait = 0;
+ break;
+ case 4:
+ if (++gBerryBlenderData->framesToWait == 2)
+ sub_804E4FC();
+ if (!gPaletteFade.active)
+ gBerryBlenderData->field_0 = 8;
+ break;
+ case 8:
+ gBerryBlenderData->field_0 = 11;
+ gBerryBlenderData->field_13C = 0;
+ break;
+ case 11:
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ u32 var = gUnknown_082162EC[gBerryBlenderData->playersNo - 2][i];
+ if (gBerryBlenderData->field_13C == var)
+ {
+ sub_804E7C0(gBerryBlenderData->chosenItemID[gBerryBlenderData->field_13C], i);
+ break;
+ }
+ }
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_13C++;
+ break;
+ case 12:
+ if (++gBerryBlenderData->framesToWait > 60)
+ {
+ if (gBerryBlenderData->field_13C >= gBerryBlenderData->playersNo)
+ {
+ gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]] - 22528;
+ gBerryBlenderData->field_0++;
+ }
+ else
+ gBerryBlenderData->field_0--;
+ gBerryBlenderData->framesToWait = 0;
+ }
+ break;
+ case 13:
+ gBerryBlenderData->field_0++;
+ sub_804F238();
+ PlaySE(SE_RU_HYUU);
+ sub_8051414(&gBerryBlenderData->field_168);
+ break;
+ case 14:
+ REG_DISPCNT |= 0x400;
+ gBerryBlenderData->arrowPos += 0x200;
+ gBerryBlenderData->field_142 += 4;
+ if (gBerryBlenderData->field_142 > 255)
+ {
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->field_142 = 256;
+ gBerryBlenderData->arrowPos = gUnknown_082162F8[gUnknown_08216300[gBerryBlenderData->playersNo - 2]];
+ REG_BG2CNT = 0x4882;
+ gBerryBlenderData->framesToWait = 0;
+ PlaySE(SE_TRACK_DOOR);;
+ sub_804F2A8();
+ }
+ sub_8051414(&gBerryBlenderData->field_168);
+ break;
+ case 15:
+ if (sub_8051B8C())
+ {
+ gBerryBlenderData->field_0++;
+ }
+ sub_8051414(&gBerryBlenderData->field_168);
+ break;
+ case 16:
+ CreateSprite(&sSpriteTemplate_8216548, 120, -16, 3);
+ gBerryBlenderData->field_0++;
+ break;
+ case 18:
+ gBerryBlenderData->field_0++;
+ break;
+ case 19:
+ gBerryBlenderData->field_0++;
+ break;
+ case 20:
+ gBerryBlenderData->field_0++;
+ break;
+ case 21:
+ sub_804F81C();
+ gBerryBlenderData->field_56 = 128;
+ gBerryBlenderData->gameFrameTime = 0;
+ gBerryBlenderData->field_14B = 0;
+ gBerryBlenderData->field_7E = 0;
+ SetMainCallback2(sub_80501FC);
+
+ for (i = 0; i < gSpecialVar_0x8004; i++)
+ {
+ gBerryBlenderData->field_148[i] = CreateTask(gUnknown_08216308[i], 10 + i);
+ }
+
+ if (GetCurrentMapMusic() != 403)
+ {
+ gBerryBlenderData->field_178 = GetCurrentMapMusic();
+ }
+ PlayBGM(BGM_CYCLING);
+ PlaySE(SE_MOTER);
+ Blender_ControlHitPitch();
+ break;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_804F81C(void)
+{
+ s32 i;
+ for (i = 0; i < 4; i++)
+ {
+ gSendCmd[0] = 0;
+ gSendCmd[2] = 0;
+ gRecvCmds[0][i] = 0;
+ gRecvCmds[2][i] = 0;
+ }
+}
+
+static void sub_804F844(u8 taskID)
+{
+ if(++gTasks[taskID].data[0] > gTasks[taskID].data[1])
+ {
+ gRecvCmds[2][gTasks[taskID].data[2]] = 0x2345;
+ DestroyTask(taskID);
+ }
+}
+
+static void sub_804F890(u8 a0, u8 a1)
+{
+ u8 taskID = CreateTask(sub_804F844, 80);
+ gTasks[taskID].data[1] = a1;
+ gTasks[taskID].data[2] = a0;
+}
+
+static void sub_804F8C8(u8 taskID)
+{
+ if (sub_804F16C(gBerryBlenderData->arrowPos, 1) == 2)
+ {
+ if (gTasks[taskID].data[0] == 0)
+ {
+ if (gBerryBlenderData->field_14B == 0)
+ {
+ u8 rand = Random() / 655;
+ if (gBerryBlenderData->field_56 < 500)
+ {
+ if (rand > 75)
+ gRecvCmds[2][1] = 0x4523;
+ else
+ gRecvCmds[2][1] = 0x5432;
+ gRecvCmds[2][1] = 0x5432; // ???
+ }
+ else if (gBerryBlenderData->field_56 < 1500)
+ {
+ if (rand > 80)
+ gRecvCmds[2][1] = 0x4523;
+ else
+ {
+ u8 value = rand - 21;
+ if (value < 60)
+ gRecvCmds[2][1] = 0x5432;
+ else if (rand < 10)
+ sub_804F890(1, 5);
+ }
+ }
+ else if (rand <= 90)
+ {
+ u8 value = rand - 71;
+ if (value < 20)
+ gRecvCmds[2][1] = 0x5432;
+ else if (rand < 30)
+ sub_804F890(1, 5);
+ }
+ else
+ gRecvCmds[2][1] = 0x4523;
+ }
+ else
+ gRecvCmds[2][1] = 0x4523;
+
+ gTasks[taskID].data[0] = 1;
+ }
+ }
+ else
+ gTasks[taskID].data[0] = 0;
+}
+
+static void sub_804F9F4(u8 taskID)
+{
+ u32 var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF;
+ u32 var2 = gBerryBlenderData->field_A2[2] & 0xFF;
+ if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40)
+ {
+ if (gTasks[taskID].data[0] == 0)
+ {
+ if (gBerryBlenderData->field_14B == 0)
+ {
+ u8 rand = Random() / 655;
+ if (gBerryBlenderData->field_56 < 500)
+ {
+ if (rand > 66)
+ gRecvCmds[2][2] = 0x4523;
+ else
+ gRecvCmds[2][2] = 0x5432;
+ }
+ else
+ {
+ u8 value;
+ if (rand > 65)
+ gRecvCmds[2][2] = 0x4523;
+ value = rand - 41;
+ if (value < 25)
+ gRecvCmds[2][2] = 0x5432;
+ if (rand < 10)
+ sub_804F890(2, 5);
+ }
+
+ gTasks[taskID].data[0] = 1;
+ }
+ else
+ {
+ gRecvCmds[2][2] = 0x4523;
+ gTasks[taskID].data[0] = 1;
+ }
+ }
+ }
+ else
+ gTasks[taskID].data[0] = 0;
+}
+
+static void sub_804FB1C(u8 taskID)
+{
+ u32 var1, var2;
+
+ var1 = (gBerryBlenderData->arrowPos + 0x1800) & 0xFFFF;
+ var2 = gBerryBlenderData->field_A2[3] & 0xFF;
+ if ((var1 >> 8) > gUnknown_08216303[var2] + 20 && (var1 >> 8) < gUnknown_08216303[var2] + 40)
+ {
+ if (gTasks[taskID].data[0] == 0)
+ {
+ if (gBerryBlenderData->field_14B == 0)
+ {
+ u8 rand = (Random() / 655);
+ if (gBerryBlenderData->field_56 < 500)
+ {
+ if (rand > 88)
+ gRecvCmds[2][3] = 0x4523;
+ else
+ gRecvCmds[2][3] = 0x5432;
+ }
+ else
+ {
+ if (rand > 60)
+ gRecvCmds[2][3] = 0x4523;
+ else
+ {
+ s8 value = rand - 56; // makes me wonder what the original code was
+ u8 value2 = value;
+ if (value2 < 5)
+ gRecvCmds[2][3] = 0x5432;
+ }
+ if (rand < 5)
+ sub_804F890(3, 5);
+ }
+ gTasks[taskID].data[0] = 1;
+ }
+ else
+ {
+ gRecvCmds[2][3] = 0x4523;
+ gTasks[taskID].data[0] = 1;
+ }
+ }
+ }
+ else
+ gTasks[taskID].data[0] = 0;
+}
+
+static void sub_804FC48(u16 a0, u8 a1)
+{
+ u8 spriteID;
+
+ spriteID = CreateSprite(&sSpriteTemplate_821645C,
+ sBlenderSyncArrowsPos[a1][0] - (10 * gUnknown_082162CC[a1][0]),
+ sBlenderSyncArrowsPos[a1][1] - (10 * gUnknown_082162CC[a1][1]),
+ 1);
+ if (a0 == 0x4523)
+ {
+ StartSpriteAnim(&gSprites[spriteID], 2);
+ gSprites[spriteID].callback = sub_8051684;
+ PlaySE(SE_RU_GASHIN);
+ }
+ else if (a0 == 0x5432)
+ {
+ StartSpriteAnim(&gSprites[spriteID], 0);
+ PlaySE(SE_SEIKAI);
+ }
+ else if (a0 == 0x2345)
+ {
+ StartSpriteAnim(&gSprites[spriteID], 1);
+ PlaySE(SE_HAZURE);
+ }
+ sub_805156C();
+}
+
+static void sub_804FD30(u16 a0)
+{
+ Blender_ControlHitPitch();
+ switch (a0)
+ {
+ case 0x4523:
+ if (gBerryBlenderData->field_56 < 1500)
+ gBerryBlenderData->field_56 += (384 / gUnknown_082165DA[gBerryBlenderData->playersNo]);
+ else
+ {
+ gBerryBlenderData->field_56 += (128 / gUnknown_082165DA[gBerryBlenderData->playersNo]);
+ sub_8051AC8(&gBerryBlenderData->field_144, (gBerryBlenderData->field_56 / 100) - 10);
+ sub_8051AC8(&gBerryBlenderData->field_146, (gBerryBlenderData->field_56 / 100) - 10);
+ }
+ break;
+ case 0x5432:
+ if (gBerryBlenderData->field_56 < 1500)
+ gBerryBlenderData->field_56 += (256 / gUnknown_082165DA[gBerryBlenderData->playersNo]);
+ break;
+ case 0x2345:
+ gBerryBlenderData->field_56 -= (256 / gUnknown_082165DA[gBerryBlenderData->playersNo]);
+ if (gBerryBlenderData->field_56 < 128)
+ gBerryBlenderData->field_56 = 128;
+ break;
+ }
+}
+
+static void sub_804FE70(void)
+{
+ s32 i;
+
+ if (gSpecialVar_0x8004 != 0)
+ {
+ if (gSendCmd[2] != 0)
+ {
+ gRecvCmds[2][0] = gSendCmd[2];
+ gRecvCmds[0][0] = 0x4444;
+ gSendCmd[2] = 0;
+ }
+ for (i = 1; i < 4; i++)
+ {
+ if (gRecvCmds[2][i] != 0)
+ gRecvCmds[0][i] = 0x4444;
+ }
+ }
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ {
+ if (gRecvCmds[0][i] == 0x4444)
+ {
+ u32 var = gBerryBlenderData->field_A2[i];
+ if (gRecvCmds[2][i] == 0x4523)
+ {
+ sub_804FD30(0x4523);
+ gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 55);
+ if (gBerryBlenderData->field_13E >= 1000)
+ gBerryBlenderData->field_13E = 1000;
+ sub_804FC48(0x4523, var);
+ gBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++;
+ }
+ else if (gRecvCmds[2][i] == 0x5432)
+ {
+ sub_804FD30(0x5432);
+ gBerryBlenderData->field_13E += (gBerryBlenderData->field_56 / 70);
+ sub_804FC48(0x5432, var);
+ gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++;
+ }
+ else if (gRecvCmds[2][i] == 0x2345)
+ {
+ sub_804FC48(0x2345, var);
+ sub_804FD30(0x2345);
+ if (gBerryBlenderData->field_4.win_field_F > 1000)
+ gBerryBlenderData->field_13E = 1000;
+ if (gBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999)
+ gBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++;
+ }
+ if (gRecvCmds[2][i] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432)
+ {
+ if (gBerryBlenderData->field_56 > 1500)
+ m4aMPlayTempoControl(&gMPlay_BGM, ((gBerryBlenderData->field_56 - 750) / 20) + 256);
+ else
+ m4aMPlayTempoControl(&gMPlay_BGM, 256);
+ }
+ }
+ }
+ if (gSpecialVar_0x8004 != 0)
+ {
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ {
+ gRecvCmds[0][i] = 0;
+ gRecvCmds[2][i] = 0;
+ }
+ }
+}
+
+static void sub_80500A8(void)
+{
+ bool8 A_pressed = 0;
+ u8 var2 = gBerryBlenderData->field_A2[GetMultiplayerId()];
+ if (gBerryBlenderData->field_6F == 0)
+ {
+ if (gSaveBlock2.optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A && gMain.newKeys & A_BUTTON)
+ A_pressed = ((gMain.heldKeysRaw & (A_BUTTON | L_BUTTON)) != (A_BUTTON | L_BUTTON));
+ else if (gMain.newKeys & A_BUTTON)
+ A_pressed = 1;
+ if (A_pressed)
+ {
+ u8 var3;
+ StartSpriteAnim(&gSprites[gBerryBlenderData->SyncArrowSpriteID[gBerryBlenderData->field_9A[var2]]], var2 + 4);
+ var3 = sub_804F16C(gBerryBlenderData->arrowPos, GetMultiplayerId());
+ if (var3 == 2)
+ gSendCmd[2] = 0x4523;
+ else if (var3 == 1)
+ gSendCmd[2] = 0x5432;
+ else
+ gSendCmd[2] = 0x2345;
+ }
+ }
+ if (++gBerryBlenderData->field_7E > 5)
+ {
+ if (gBerryBlenderData->field_56 > 128)
+ gBerryBlenderData->field_56--;
+ gBerryBlenderData->field_7E = 0;
+ }
+ if (gUnknown_020297ED && gMain.newKeys & L_BUTTON)
+ gBerryBlenderData->field_14B ^= 1;
+}
+
+static void sub_80501FC(void)
+{
+ sub_8051474();
+ if (gBerryBlenderData->gameFrameTime < (99 * 60 * 60) + (59 * 60)) // game time can't be longer than 99 minutes and 59 seconds, can't print 3 digits
+ gBerryBlenderData->gameFrameTime++;
+ sub_80500A8();
+ SetLinkDebugValues((u16)(gBerryBlenderData->field_56), gBerryBlenderData->field_13E);
+ sub_804FE70();
+ sub_805194C(gBerryBlenderData->field_13E, 1000);
+ sub_8051A3C(gBerryBlenderData->field_56);
+ sub_8051B18();
+ sub_805123C();
+ if (gBerryBlenderData->field_6F == 0 && gBerryBlenderData->field_140 >= 1000)
+ {
+ gBerryBlenderData->field_13E = 1000;
+ gBerryBlenderData->field_6F = 1;
+ SetMainCallback2(sub_8050954);
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static bool8 sub_80502A4(struct BlenderBerry* berries, u8 index1, u8 index2)
+{
+ if (berries[index1].itemID != berries[index2].itemID
+ || (StringCompare(berries[index1].name, berries[index2].name) == 0
+ && (berries[index1].flavours[0] == berries[index2].flavours[0]
+ && berries[index1].flavours[1] == berries[index2].flavours[1]
+ && berries[index1].flavours[2] == berries[index2].flavours[2]
+ && berries[index1].flavours[3] == berries[index2].flavours[3]
+ && berries[index1].flavours[4] == berries[index2].flavours[4]
+ && berries[index1].smoothness == berries[index2].smoothness)))
+ return TRUE;
+ else
+ return FALSE;
+}
+
+u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersNo, u8 a3)
+{
+ s16 vars[5];
+ s32 i;
+ s32 r6;
+ u8 r2;
+
+ for (i = 0; i <= 5; i++) // bug, writing one index too far
+ vars[i] = a1[i];
+ r6 = 0;
+ for (i = 0; i < 5; i++)
+ {
+ if (vars[i] == 0)
+ r6++;
+ }
+ if (r6 == 5 || a3 > 3)
+ return 12;
+ for (i = 0; i < playersNo; i++)
+ {
+ for (r6 = 0; r6 < playersNo; r6++)
+ {
+ if (berries[i].itemID == berries[r6].itemID && i != r6
+ && (berries[i].itemID != ITEM_ENIGMA_BERRY || sub_80502A4(berries, i, r6)))
+ return 12;
+ }
+ }
+ r2 = 0;
+ for (r2 = 0, i = 0; i < 5; i++)
+ {
+ if (vars[i] > 0)
+ r2++;
+ }
+ if (r2 > 3)
+ return 13;
+ if (r2 == 3)
+ return 11;
+ for (i = 0; i < 5; i++)
+ {
+ if (vars[i] > 50)
+ return 14;
+ }
+ if (r2 == 1 && vars[0] > 0)
+ return 1;
+ if (r2 == 1 && vars[1] > 0)
+ return 2;
+ if (r2 == 1 && vars[2] > 0)
+ return 3;
+ if (r2 == 1 && vars[3] > 0)
+ return 4;
+ if (r2 == 1 && vars[4] > 0)
+ return 5;
+ if (r2 == 2)
+ {
+ s32 var = 0;
+ for (i = 0; i < 5; i++)
+ {
+ if (vars[i] > 0)
+ gUnknown_03000520[var++] = i;
+ }
+ if (vars[gUnknown_03000520[0]] >= vars[gUnknown_03000520[1]])
+ {
+ if (gUnknown_03000520[0] == 0)
+ return (gUnknown_03000520[1] << 16) | 6;
+ if (gUnknown_03000520[0] == 1)
+ return (gUnknown_03000520[1] << 16) | 7;
+ if (gUnknown_03000520[0] == 2)
+ return (gUnknown_03000520[1] << 16) | 8;
+ if (gUnknown_03000520[0] == 3)
+ return (gUnknown_03000520[1] << 16) | 9;
+ if (gUnknown_03000520[0] == 4)
+ return (gUnknown_03000520[1] << 16) | 10;
+ }
+ else
+ {
+ if (gUnknown_03000520[1] == 0)
+ return (gUnknown_03000520[0] << 16) | 6;
+ if (gUnknown_03000520[1] == 1)
+ return (gUnknown_03000520[0] << 16) | 7;
+ if (gUnknown_03000520[1] == 2)
+ return (gUnknown_03000520[0] << 16) | 8;
+ if (gUnknown_03000520[1] == 3)
+ return (gUnknown_03000520[0] << 16) | 9;
+ if (gUnknown_03000520[1] == 4)
+ return (gUnknown_03000520[0] << 16) | 10;
+ }
+ }
+ return 0;
+}
+
+static void sub_80504F0(s16 value)
+{
+ gUnknown_0300052C = value;
+}
+
+s16 unref_sub_80504FC(void)
+{
+ return gUnknown_0300052C;
+}
+
+static void sub_8050508(s16 value)
+{
+ gUnknown_0300052E = value;
+}
+
+s16 unref_sub_8050514(void)
+{
+ return gUnknown_0300052E;
+}
+
+#ifdef NONMATCHING
+
+static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 maxRPM)
+{
+ s32 i;
+ s32 j;
+ s32 savedEntry;
+ s32 var3;
+ s32 var4;
+ u32 var6;
+ s32 var11;
+ u16 rand;
+
+ for (i = 0; i < 6; i++)
+ gUnknown_03000510[i] = 0;
+ for (i = 0; i < playersNo; i++)
+ {
+ for (j = 0; j < 5; j++)
+ gUnknown_03000510[j] += berries[i].flavours[j];
+ }
+
+ savedEntry = gUnknown_03000510[0];
+ gUnknown_03000510[0] -= gUnknown_03000510[1];
+ gUnknown_03000510[1] -= gUnknown_03000510[2];
+ gUnknown_03000510[2] -= gUnknown_03000510[3];
+ gUnknown_03000510[3] -= gUnknown_03000510[4];
+ gUnknown_03000510[4] -= savedEntry;
+
+ var6 = 0;
+ for (i = 0; i < 6; i++)
+ {
+ if (gUnknown_03000510[i] < 0)
+ {
+ gUnknown_03000510[i] = 0;
+ var6++;
+ }
+ }
+ for (i = 0; i < 5; i++)
+ {
+ if (gUnknown_03000510[i] > 0)
+ {
+ if (gUnknown_03000510[i] < var6)
+ gUnknown_03000510[i] = 0;
+ else
+ gUnknown_03000510[i] -= var6;
+ }
+ }
+ for (i = 0; i < 5; i++)
+ {
+ gUnknown_03000530[i] = gUnknown_03000510[i];
+ }
+
+ var11 = maxRPM / 333 + 100;
+ gUnknown_0300055C = ((var11));
+
+ for (i = 0; i < 5; i++)
+ {
+ var3 = gUnknown_03000510[i];
+ var3 = ((var11) * var3) / 10;
+ var4 = var3 % 10;
+ var3 /= 10;
+ if (var4 > 4)
+ var3++;
+ gUnknown_03000510[i] = var3;
+ }
+ for (i = 0; i < 5; i++)
+ {
+ gUnknown_03000548[i] = gUnknown_03000510[i];
+ }
+ pokeblock->color = Blender_GetPokeblockColor(berries, &gUnknown_03000510[0], playersNo, var6);
+ gUnknown_03000510[5] = (gUnknown_03000510[5] / playersNo) - playersNo;
+ if (gUnknown_03000510[5] < 0)
+ gUnknown_03000510[5] = 0;
+ if (pokeblock->color == 12)
+ {
+ rand = Random() % 10;
+ for (i = 0; i < 6; i++)
+ {
+ if ((gUnknown_082165DF[rand] >> i) & 1)
+ gUnknown_03000510[i] = 2;
+ else
+ gUnknown_03000510[i] = 0;
+ }
+ }
+ for (i = 0; i < 6; i++)
+ {
+ if (gUnknown_03000510[i] > 255)
+ gUnknown_03000510[i] = 255;
+ }
+ pokeblock->spicy = gUnknown_03000510[0];
+ pokeblock->dry = gUnknown_03000510[1];
+ pokeblock->sweet = gUnknown_03000510[2];
+ pokeblock->bitter = gUnknown_03000510[3];
+ pokeblock->sour = gUnknown_03000510[4];
+ pokeblock->feel = gUnknown_03000510[5];
+ for (i = 0; i < 6; i++)
+ {
+ flavours[i] = gUnknown_03000510[i];
+ }
+}
+
+#else
+__attribute__((naked))
+static void Blender_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 a2, u8* flavours, u16 a4)
+{
+ 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, 0x10\n\
+ str r0, [sp]\n\
+ mov r8, r1\n\
+ str r3, [sp, 0x4]\n\
+ ldr r0, [sp, 0x30]\n\
+ lsls r2, 24\n\
+ lsrs r2, 24\n\
+ mov r9, r2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ str r0, [sp, 0x8]\n\
+ ldr r7, _080505DC @ =gUnknown_03000510\n\
+ adds r2, r7, 0\n\
+ movs r1, 0\n\
+ adds r0, r7, 0\n\
+ adds r0, 0xA\n\
+_0805054A:\n\
+ strh r1, [r0]\n\
+ subs r0, 0x2\n\
+ cmp r0, r2\n\
+ bge _0805054A\n\
+ movs r6, 0\n\
+ cmp r6, r9\n\
+ bge _08050580\n\
+ ldr r0, _080505DC @ =gUnknown_03000510\n\
+ mov r12, r0\n\
+ ldr r5, [sp]\n\
+ adds r5, 0x9\n\
+_08050560:\n\
+ movs r3, 0\n\
+ adds r4, r5, 0\n\
+ mov r2, r12\n\
+_08050566:\n\
+ adds r1, r4, r3\n\
+ ldrh r0, [r2]\n\
+ ldrb r1, [r1]\n\
+ adds r0, r1\n\
+ strh r0, [r2]\n\
+ adds r2, 0x2\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x5\n\
+ ble _08050566\n\
+ adds r5, 0x10\n\
+ adds r6, 0x1\n\
+ cmp r6, r9\n\
+ blt _08050560\n\
+_08050580:\n\
+ movs r1, 0\n\
+ ldrsh r3, [r7, r1]\n\
+ ldrh r0, [r7]\n\
+ ldrh r1, [r7, 0x2]\n\
+ subs r0, r1\n\
+ strh r0, [r7]\n\
+ ldrh r0, [r7, 0x4]\n\
+ subs r1, r0\n\
+ strh r1, [r7, 0x2]\n\
+ ldrh r1, [r7, 0x6]\n\
+ subs r0, r1\n\
+ strh r0, [r7, 0x4]\n\
+ ldrh r0, [r7, 0x8]\n\
+ subs r1, r0\n\
+ strh r1, [r7, 0x6]\n\
+ subs r0, r3\n\
+ strh r0, [r7, 0x8]\n\
+ movs r3, 0\n\
+ movs r2, 0\n\
+ adds r1, r7, 0\n\
+ movs r6, 0x4\n\
+_080505AA:\n\
+ movs r4, 0\n\
+ ldrsh r0, [r1, r4]\n\
+ cmp r0, 0\n\
+ bge _080505B6\n\
+ strh r2, [r1]\n\
+ adds r3, 0x1\n\
+_080505B6:\n\
+ adds r1, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080505AA\n\
+ lsls r0, r3, 24\n\
+ lsrs r0, 24\n\
+ mov r10, r0\n\
+ movs r4, 0\n\
+ ldr r1, _080505DC @ =gUnknown_03000510\n\
+ movs r6, 0x4\n\
+_080505CA:\n\
+ ldrh r2, [r1]\n\
+ movs r5, 0\n\
+ ldrsh r0, [r1, r5]\n\
+ cmp r0, 0\n\
+ ble _080505E4\n\
+ cmp r0, r3\n\
+ bge _080505E0\n\
+ strh r4, [r1]\n\
+ b _080505E4\n\
+ .align 2, 0\n\
+_080505DC: .4byte gUnknown_03000510\n\
+_080505E0:\n\
+ subs r0, r2, r3\n\
+ strh r0, [r1]\n\
+_080505E4:\n\
+ adds r1, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080505CA\n\
+ ldr r1, _080506C4 @ =gUnknown_03000510\n\
+ ldr r2, _080506C8 @ =gUnknown_03000530\n\
+ movs r6, 0x4\n\
+_080505F2:\n\
+ movs r3, 0\n\
+ ldrsh r0, [r1, r3]\n\
+ stm r2!, {r0}\n\
+ adds r1, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080505F2\n\
+ ldr r1, _080506CC @ =0x0000014d\n\
+ ldr r0, [sp, 0x8]\n\
+ bl __udivsi3\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ adds r3, r0, 0\n\
+ adds r3, 0x64\n\
+ ldr r4, _080506D0 @ =gUnknown_0300055C\n\
+ str r3, [r4]\n\
+ movs r6, 0x4\n\
+_08050616:\n\
+ movs r0, 0\n\
+ ldrsh r5, [r7, r0]\n\
+ adds r0, r5, 0\n\
+ muls r0, r3\n\
+ movs r1, 0xA\n\
+ str r3, [sp, 0xC]\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ movs r1, 0xA\n\
+ bl __modsi3\n\
+ adds r4, r0, 0\n\
+ adds r0, r5, 0\n\
+ movs r1, 0xA\n\
+ bl __divsi3\n\
+ adds r5, r0, 0\n\
+ ldr r3, [sp, 0xC]\n\
+ cmp r4, 0x4\n\
+ ble _08050642\n\
+ adds r5, 0x1\n\
+_08050642:\n\
+ strh r5, [r7]\n\
+ adds r7, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _08050616\n\
+ ldr r1, _080506C4 @ =gUnknown_03000510\n\
+ ldr r2, _080506D4 @ =gUnknown_03000548\n\
+ movs r6, 0x4\n\
+_08050652:\n\
+ movs r3, 0\n\
+ ldrsh r0, [r1, r3]\n\
+ stm r2!, {r0}\n\
+ adds r1, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _08050652\n\
+ ldr r4, _080506C4 @ =gUnknown_03000510\n\
+ ldr r0, [sp]\n\
+ adds r1, r4, 0\n\
+ mov r2, r9\n\
+ mov r3, r10\n\
+ bl Blender_GetPokeblockColor\n\
+ mov r5, r8\n\
+ strb r0, [r5]\n\
+ movs r1, 0xA\n\
+ ldrsh r0, [r4, r1]\n\
+ mov r1, r9\n\
+ bl __divsi3\n\
+ mov r3, r9\n\
+ subs r0, r3\n\
+ strh r0, [r4, 0xA]\n\
+ lsls r0, 16\n\
+ cmp r0, 0\n\
+ bge _0805068C\n\
+ movs r0, 0\n\
+ strh r0, [r4, 0xA]\n\
+_0805068C:\n\
+ mov r5, r8\n\
+ ldrb r0, [r5]\n\
+ cmp r0, 0xC\n\
+ bne _080506E6\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ movs r1, 0xA\n\
+ bl __umodsi3\n\
+ lsls r0, 16\n\
+ lsrs r3, r0, 16\n\
+ movs r6, 0\n\
+ ldr r0, _080506D8 @ =gUnknown_082165DF\n\
+ adds r0, r3, r0\n\
+ ldrb r0, [r0]\n\
+ adds r1, r4, 0\n\
+ movs r4, 0x1\n\
+ movs r3, 0x2\n\
+_080506B4:\n\
+ adds r2, r0, 0\n\
+ asrs r2, r6\n\
+ ands r2, r4\n\
+ cmp r2, 0\n\
+ beq _080506DC\n\
+ strh r3, [r1]\n\
+ b _080506DE\n\
+ .align 2, 0\n\
+_080506C4: .4byte gUnknown_03000510\n\
+_080506C8: .4byte gUnknown_03000530\n\
+_080506CC: .4byte 0x0000014d\n\
+_080506D0: .4byte gUnknown_0300055C\n\
+_080506D4: .4byte gUnknown_03000548\n\
+_080506D8: .4byte gUnknown_082165DF\n\
+_080506DC:\n\
+ strh r2, [r1]\n\
+_080506DE:\n\
+ adds r1, 0x2\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x4\n\
+ ble _080506B4\n\
+_080506E6:\n\
+ ldr r7, _08050740 @ =gUnknown_03000510\n\
+ movs r2, 0xFF\n\
+ adds r1, r7, 0\n\
+ movs r6, 0x5\n\
+_080506EE:\n\
+ movs r3, 0\n\
+ ldrsh r0, [r1, r3]\n\
+ cmp r0, 0xFF\n\
+ ble _080506F8\n\
+ strh r2, [r1]\n\
+_080506F8:\n\
+ adds r1, 0x2\n\
+ subs r6, 0x1\n\
+ cmp r6, 0\n\
+ bge _080506EE\n\
+ ldrh r0, [r7]\n\
+ mov r4, r8\n\
+ strb r0, [r4, 0x1]\n\
+ ldrh r0, [r7, 0x2]\n\
+ strb r0, [r4, 0x2]\n\
+ ldrh r0, [r7, 0x4]\n\
+ strb r0, [r4, 0x3]\n\
+ ldrh r0, [r7, 0x6]\n\
+ strb r0, [r4, 0x4]\n\
+ ldrh r0, [r7, 0x8]\n\
+ strb r0, [r4, 0x5]\n\
+ ldrh r0, [r7, 0xA]\n\
+ strb r0, [r4, 0x6]\n\
+ movs r6, 0\n\
+ adds r2, r7, 0\n\
+_0805071E:\n\
+ ldr r5, [sp, 0x4]\n\
+ adds r1, r5, r6\n\
+ ldrh r0, [r2]\n\
+ strb r0, [r1]\n\
+ adds r2, 0x2\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x5\n\
+ ble _0805071E\n\
+ add sp, 0x10\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\
+_08050740: .4byte gUnknown_03000510\n\
+ .syntax divided");
+}
+
+#endif // NONMATCHING
+
+static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavours, u16 a4)
+{
+ Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavours, a4);
+}
+
+static void sub_8050760(void)
+{
+ u32 frames = (u16)(gBerryBlenderData->gameFrameTime);
+ u16 max_RPM = gBerryBlenderData->max_RPM;
+ s16 var = 0;
+
+ if (frames < 900)
+ var = 5;
+ else if ((u16)(frames - 900) < 600)
+ var = 4;
+ else if ((u16)(frames - 1500) < 600)
+ var = 3;
+ else if ((u16)(frames - 2100) < 900)
+ var = 2;
+ else if ((u16)(frames - 3300) < 300)
+ var = 1;
+ sub_8050508(var);
+
+ var = 0;
+ if (max_RPM <= 64)
+ {
+ if (max_RPM >= 50 && max_RPM < 100)
+ var = -1;
+ else if (max_RPM >= 100 && max_RPM < 150)
+ var = -2;
+ else if (max_RPM >= 150 && max_RPM < 200)
+ var = -3;
+ else if (max_RPM >= 200 && max_RPM < 250)
+ var = -4;
+ else if (max_RPM >= 250 && max_RPM < 300)
+ var = -5;
+ else if (max_RPM >= 350 && max_RPM < 400)
+ var = -6;
+ else if (max_RPM >= 400 && max_RPM < 450)
+ var = -7;
+ else if (max_RPM >= 500 && max_RPM < 550)
+ var = -8;
+ else if (max_RPM >= 550 && max_RPM < 600)
+ var = -9;
+ else if (max_RPM >= 600)
+ var = -10;
+ }
+ sub_80504F0(var);
+}
+
+static void sub_80508D4(u8 value)
+{
+ gBerryBlenderData->field_AA = value;
+ sub_814A880(192, (gBerryBlenderData->field_AA * 16) + 72);
+}
+
+static void sub_80508FC(void)
+{
+ gBerryBlenderData->field_AA = 0;
+ MenuDrawTextWindow(23, 8, 28, 13);
+ sub_814A5C0(0, -1, 12, 0x2D9F, 32);
+ MenuPrint(gOtherText_YesNoTerminating, 24, 9);
+ sub_80508D4(gBerryBlenderData->field_AA);
+}
+
+static void sub_8050954(void)
+{
+ u8 i;
+ u8 multiplayerID; // unused
+
+ sub_8051474();
+ multiplayerID = GetMultiplayerId();
+ switch (gBerryBlenderData->field_6F)
+ {
+ case 1:
+ ClearLinkCallback();
+ m4aMPlayTempoControl(&gMPlay_BGM, 256);
+ for (i = 0; i < gSpecialVar_0x8004; i++)
+ {
+ DestroyTask(gBerryBlenderData->field_148[i]);
+ }
+ gBerryBlenderData->field_6F++;
+ break;
+ case 2:
+ gBerryBlenderData->field_56 -= 32;
+ if (gBerryBlenderData->field_56 <= 0)
+ {
+ gBerryBlenderData->field_56 = 0;
+ if (gReceivedRemoteLinkPlayers != 0)
+ gBerryBlenderData->field_6F++;
+ else
+ gBerryBlenderData->field_6F = 5;
+ gBerryBlenderData->field_0 = 0;
+ m4aMPlayStop(&gMPlay_SE2);
+ }
+ Blender_ControlHitPitch();
+ break;
+ case 3:
+ if (/*multiplayerID != 0*/ GetMultiplayerId() != 0)
+ gBerryBlenderData->field_6F++;
+ else if (sub_8007ECC())
+ {
+ gBerryBlenderData->field_1BC = gBerryBlenderData->gameFrameTime;
+ gBerryBlenderData->field_1C0 = gBerryBlenderData->max_RPM;
+ SendBlock(0, &gBerryBlenderData->field_1BC, 40);
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 4:
+ if (GetBlockReceivedStatus())
+ {
+ u32* ptr = ((u32*)(&gBlockRecvBuffer[0][0]));
+ gBerryBlenderData->max_RPM = gBlockRecvBuffer[0][2];
+ gBerryBlenderData->gameFrameTime = *ptr;
+ gBerryBlenderData->field_6F++;
+ ResetBlockReceivedFlags();
+ }
+ break;
+ case 5:
+ if (Blender_PrintBlendingRanking())
+ gBerryBlenderData->field_6F++;
+ break;
+ case 6:
+ if (Blender_PrintBlendingResults())
+ {
+ if (gInGameOpponentsNo == 0)
+ IncrementGameStat(34);
+ else
+ IncrementGameStat(33);
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 7:
+ gBerryBlenderData->field_6F++;
+ MenuDrawTextWindow(0, 14, 29, 19);
+ MenuPrintMessage(gOtherText_BlendAnotherBerryPrompt, 1, 15);
+ break;
+ case 8:
+ if (MenuUpdateWindowText())
+ gBerryBlenderData->field_6F++;
+ break;
+ case 9:
+ gBerryBlenderData->field_AA = 0;
+ sub_80508FC();
+ gBerryBlenderData->field_6F++;
+ break;
+ case 10:
+ if (gMain.newKeys & DPAD_UP)
+ {
+ if (gBerryBlenderData->field_AA != 0)
+ PlaySE(SE_SELECT);
+ sub_80508D4(0);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (gBerryBlenderData->field_AA != 1)
+ PlaySE(SE_SELECT);
+ sub_80508D4(1);
+ }
+ else if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBerryBlenderData->field_6F++;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBerryBlenderData->field_6F++;
+ sub_80508D4(1);
+ }
+ break;
+ case 11:
+ gSendCmd[0] = 0x2FFF;
+ if (gBerryBlenderData->field_AA == 0)
+ {
+ if (IsBagPocketNonEmpty(BAG_BERRIES) == FALSE) // is empty
+ {
+ gBerryBlenderData->field_7C = 2;
+ gSendCmd[1] = 0x9999;
+ }
+ else if (sub_810CA00() == -1)
+ {
+ gBerryBlenderData->field_7C = 3;
+ gSendCmd[1] = 0xAAAA;
+ }
+ else
+ {
+ gBerryBlenderData->field_7C = 0;
+ gSendCmd[1] = 0x7779;
+ }
+ gBerryBlenderData->field_6F++;
+ }
+ else
+ {
+ gBerryBlenderData->field_7C = 1;
+ gSendCmd[1] = 0x8888;
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 12:
+ if (gInGameOpponentsNo)
+ {
+ SetMainCallback2(sub_80510E8);
+ gBerryBlenderData->field_6F = 0;
+ gBerryBlenderData->field_0 = 0;
+ }
+ else
+ {
+ MenuPrintMessage(gOtherText_LinkStandby3, 1, 15);
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 13:
+ if (MenuUpdateWindowText())
+ {
+ SetMainCallback2(sub_8050E30);
+ gBerryBlenderData->field_6F = 0;
+ gBerryBlenderData->field_0 = 0;
+ }
+ break;
+ }
+ sub_8051B18();
+ sub_8051A3C(gBerryBlenderData->field_56);
+ sub_805123C();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+bool8 sub_8050CE8(void)
+{
+ switch (gBerryBlenderData->field_1C4)
+ {
+ case 0:
+ sub_80084A4();
+ gBerryBlenderData->field_1C4 = 1;
+ gBerryBlenderData->framesToWait = 0;
+ break;
+ case 1:
+ if (sub_8007ECC())
+ {
+ gBerryBlenderData->field_1C4++;
+ gSoftResetDisabled = TRUE;
+ }
+ break;
+ case 2:
+ sub_8125E2C();
+ gBerryBlenderData->field_1C4++;
+ gBerryBlenderData->framesToWait = 0;
+ break;
+ case 3:
+ if (++gBerryBlenderData->framesToWait == 10)
+ {
+ sub_80084A4();
+ gBerryBlenderData->field_1C4++;
+ }
+ break;
+ case 4:
+ if (sub_8007ECC())
+ {
+ if (sub_8125E6C())
+ gBerryBlenderData->field_1C4 = 5;
+ else
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_1C4 = 3;
+ }
+ }
+ break;
+ case 5:
+ gBerryBlenderData->field_1C4++;
+ gBerryBlenderData->framesToWait = 0;
+ break;
+ case 6:
+ if (++gBerryBlenderData->framesToWait > 5)
+ {
+ gSoftResetDisabled = FALSE;
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static void sub_8050E30(void)
+{
+ switch (gBerryBlenderData->field_6F)
+ {
+ case 0:
+ if (gBerryBlenderData->field_70[0] == 0x2222)
+ gBerryBlenderData->field_6F = 5;
+ else if (gBerryBlenderData->field_70[0] == 0x1111)
+ {
+ if (gBerryBlenderData->field_78 == 0x9999)
+ gBerryBlenderData->field_6F = 2;
+ else if (gBerryBlenderData->field_78 == 0xAAAA)
+ gBerryBlenderData->field_6F = 1;
+ else
+ gBerryBlenderData->field_6F = 5;
+ }
+ break;
+ case 1:
+ gBerryBlenderData->field_6F = 3;
+ DestroyMenuCursor();
+ MenuZeroFillWindowRect(23, 8, 28, 13);
+#ifdef ENGLISH
+ StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name);
+ StringAppend(gStringVar4, gOtherText_OtherCaseIsFull);
+#else
+ StringCopy(gStringVar4, gOtherText_OtherCaseIsFull);
+ de_sub_8073110(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name);
+#endif
+ MenuPrintMessage(gStringVar4, 1, 15);
+ break;
+ case 2:
+ gBerryBlenderData->field_6F++;
+ DestroyMenuCursor();
+ MenuZeroFillWindowRect(23, 8, 28, 13);
+#ifdef ENGLISH
+ StringCopy(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name);
+ StringAppend(gStringVar4, gOtherText_NoBerriesForBlend);
+#else
+ StringCopy(gStringVar4, gOtherText_NoBerriesForBlend);
+ de_sub_8073110(gStringVar4, gLinkPlayers[gBerryBlenderData->field_7A].name);
+#endif
+ MenuPrintMessage(gStringVar4, 1, 15);
+ break;
+ case 3:
+ if (MenuUpdateWindowText())
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 4:
+ if (++gBerryBlenderData->framesToWait > 60)
+ gBerryBlenderData->field_6F = 5;
+ break;
+ case 5:
+ MenuDrawTextWindow(0, 14, 29, 19);
+ MenuPrint(gMultiText_Saving, 2, 15);
+ sub_80084A4();
+ gBerryBlenderData->field_6F++;
+ break;
+ case 6:
+ if (sub_8007ECC())
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_6F++;
+ gBerryBlenderData->field_1C4 = 0;
+ }
+ break;
+ case 7:
+ if (sub_8050CE8())
+ {
+ PlaySE(SE_SAVE);
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 8:
+ gBerryBlenderData->field_6F++;
+ sub_80084A4();
+ break;
+ case 9:
+ if (sub_8007ECC())
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 10:
+ if (!gPaletteFade.active)
+ {
+ if (gBerryBlenderData->field_70[0] == 0x2222)
+ SetMainCallback2(sub_804E538);
+ else
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_6F++;
+ }
+ }
+ break;
+ case 11:
+ if (++gBerryBlenderData->framesToWait > 30)
+ {
+ sub_800832C();
+ gBerryBlenderData->field_6F++;
+ }
+ break;
+ case 12:
+ if (gReceivedRemoteLinkPlayers == 0)
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ break;
+ }
+
+ sub_805123C();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_80510E8(void)
+{
+ switch (gBerryBlenderData->field_6F)
+ {
+ case 0:
+ if (gBerryBlenderData->field_7C < 2)
+ gBerryBlenderData->field_6F = 9;
+ if (gBerryBlenderData->field_7C == 2)
+ gBerryBlenderData->field_6F = 2;
+ if (gBerryBlenderData->field_7C == 3)
+ gBerryBlenderData->field_6F =1;
+ break;
+ case 1:
+ gBerryBlenderData->field_6F = 3;
+ DestroyMenuCursor();
+ MenuZeroFillWindowRect(23, 8, 28, 13);
+ MenuPrintMessage(gOtherText_CaseIsFull, 1, 15);
+ break;
+ case 2:
+ gBerryBlenderData->field_6F++;
+ DestroyMenuCursor();
+ MenuZeroFillWindowRect(23, 8, 28, 13);
+ MenuPrintMessage(gOtherText_OutOfBerries, 1, 15);
+ break;
+ case 3:
+ if (MenuUpdateWindowText())
+ gBerryBlenderData->field_6F = 9;
+ break;
+ case 9:
+ BeginFastPaletteFade(3);
+ gBerryBlenderData->field_6F++;
+ break;
+ case 10:
+ if (!gPaletteFade.active)
+ {
+ if (gBerryBlenderData->field_7C == 0)
+ SetMainCallback2(sub_804E538);
+ else
+ SetMainCallback2(c2_exit_to_overworld_1_continue_scripts_restart_music);
+ }
+ break;
+ }
+
+ sub_805123C();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_805123C(void)
+{
+ if (gReceivedRemoteLinkPlayers)
+ {
+ if (gRecvCmds[0][0] == 0x2FFF)
+ {
+ if (gRecvCmds[1][0] == 0x1111)
+ {
+ switch (gRecvCmds[2][0])
+ {
+ case 0x8888:
+ gBerryBlenderData->field_78 = 0x8888;
+ gBerryBlenderData->field_7A = gRecvCmds[3][0];
+ break;
+ case 0x9999:
+ gBerryBlenderData->field_78 = 0x9999;
+ gBerryBlenderData->field_7A = gRecvCmds[3][0];
+ break;
+ case 0xAAAA:
+ gBerryBlenderData->field_78 = 0xAAAA;
+ gBerryBlenderData->field_7A = gRecvCmds[3][0];
+ break;
+ }
+ gBerryBlenderData->field_70[0] = 0x1111;
+ }
+ else if (gRecvCmds[1][0] == 0x2222)
+ gBerryBlenderData->field_70[0] = 0x2222;
+ }
+ if (GetMultiplayerId() == 0 && gBerryBlenderData->field_70[0] != 0x1111 && gBerryBlenderData->field_70[0] != 0x2222)
+ {
+ u8 i;
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ if (gRecvCmds[0][i] == 0x2FFF)
+ {
+ switch (gRecvCmds[1][i])
+ {
+ case 0x8888:
+ gBerryBlenderData->field_70[i] = 0x8888;
+ break;
+ case 0x7779:
+ gBerryBlenderData->field_70[i] = 0x7779;
+ break;
+ case 0x9999:
+ gBerryBlenderData->field_70[i] = 0x9999;
+ break;
+ case 0xAAAA:
+ gBerryBlenderData->field_70[i] = 0xAAAA;
+ break;
+ }
+ }
+ }
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ if (gBerryBlenderData->field_70[i] == 0)
+ break;
+ }
+ if (i == GetLinkPlayerCount())
+ {
+ for (i = 0; i < GetLinkPlayerCount(); i++)
+ {
+ if (gBerryBlenderData->field_70[i] != 0x7779)
+ break;
+ }
+ gSendCmd[0] = 0x2FFF;
+ if (i == GetLinkPlayerCount())
+ gSendCmd[1] = 0x2222;
+ else
+ {
+ gSendCmd[1] = 0x1111;
+ gSendCmd[2] = gBerryBlenderData->field_70[i];
+ gSendCmd[3] = i;
+ }
+ }
+ }
+ }
+}
+
+static void sub_8051414(struct BgAffineDstData *dest)
+{
+ struct BgAffineSrcData affineSrc;
+ affineSrc.texX = 30720;
+ affineSrc.texY = 20480;
+ affineSrc.scrX = 120 - gBerryBlenderData->field_144;
+ affineSrc.scrY = 80 - gBerryBlenderData->field_146;
+ affineSrc.sx = gBerryBlenderData->field_142;
+ affineSrc.sy = gBerryBlenderData->field_142;
+ affineSrc.alpha = gBerryBlenderData->arrowPos;
+ BgAffineSet(&affineSrc, dest, 1);
+}
+
+static void sub_8051474(void)
+{
+ gBerryBlenderData->field_58 = gBerryBlenderData->arrowPos;
+ gBerryBlenderData->arrowPos += gBerryBlenderData->field_56;
+ sub_8051414(&gBerryBlenderData->field_168);
+}
+
+static void sub_80514A4(void)
+{
+ REG_BG2PA = gBerryBlenderData->field_168.pa;
+ REG_BG2PB = gBerryBlenderData->field_168.pb;
+ REG_BG2PC = gBerryBlenderData->field_168.pc;
+ REG_BG2PD = gBerryBlenderData->field_168.pd;
+ REG_BG2X = gBerryBlenderData->field_168.dx;
+ REG_BG2Y = gBerryBlenderData->field_168.dy;
+}
+
+static void sub_80514F0(void)
+{
+ REG_BG1HOFS = gBerryBlenderData->field_144;
+ REG_BG1VOFS = gBerryBlenderData->field_146;
+ REG_BG0HOFS = gBerryBlenderData->field_144;
+ REG_BG0VOFS = gBerryBlenderData->field_146;
+}
+
+void sub_8051524(struct Sprite* sprite)
+{
+ sprite->data2 += sprite->data0;
+ sprite->data3 += sprite->data1;
+ sprite->pos2.x = sprite->data2 / 8;
+ sprite->pos2.y = sprite->data3 / 8;
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
+
+static void sub_805156C(void)
+{
+ s32 limit = (Random() % 2) + 1;
+ s32 i;
+
+ for (i = 0; i < limit; i++)
+ {
+ u16 rand;
+ s32 x, y;
+ u8 spriteID;
+
+ rand = gBerryBlenderData->arrowPos + (Random() % 20);
+
+ x = gSineTable[(rand & 0xFF) + 64] / 4;
+ y = gSineTable[(rand & 0xFF)] / 4;
+
+ spriteID = CreateSprite(&sSpriteTemplate_82164FC, x + 120, y + 80, 1);
+ gSprites[spriteID].data0 = 16 - (Random() % 32);
+ gSprites[spriteID].data1 = 16 - (Random() % 32);
+
+ gSprites[spriteID].callback = sub_8051524;
+ }
+}
+
+static void sub_8051650(struct Sprite* sprite)
+{
+ sprite->data0++;
+ sprite->pos2.y = -(sprite->data0 / 3);
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
+
+void sub_8051684(struct Sprite* sprite)
+{
+ sprite->data0++;
+ sprite->pos2.y = -(sprite->data0 * 2);
+ if (sprite->pos2.y < -12)
+ sprite->pos2.y = -12;
+ if (sprite->animEnded)
+ DestroySprite(sprite);
+}
+
+void Blender_SetBankBerryData(u8 bank, u16 itemID)
+{
+ gBerryBlenderData->chosenItemID[bank] = itemID;
+ Blender_CopyBerryData(&gBerryBlenderData->blendedBerries[bank], itemID);
+}
+
+void unref_sub_80516F8(u8 taskID)
+{
+ struct Task* task = &gTasks[taskID];
+ if (gReceivedRemoteLinkPlayers)
+ {
+ s32 i;
+ if (GetMultiplayerId() == 0)
+ {
+ if (++task->data[0] > 120)
+ task->data[0] = 0;
+ if (task->data[0] == 100)
+ {
+ ZeroFillWindowRect(&gBerryBlenderData->field_4, 0, 0, 16, 20);
+ MenuDrawTextWindow(4, 4, 10, 12);
+ for (i = 0; i < 3; i++)
+ {
+ if (gLinkPlayers[i + 1].trainerId != 0)
+ MenuPrint(gUnknown_08216284[i], 5, (2 * i) + 5);
+ MenuDrawTextWindow(0, 13, 29, 19);
+ MenuPrint(gOtherText_PressAToStart, 1, 15);
+ }
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ sub_8007E4C();
+ DestroyTask(taskID);
+ }
+ }
+ else
+ {
+ if (task->data[0] == 10)
+ MenuPrint(gOtherText_PleaseWait, 3, 10);
+ if (++task->data[0] > 120)
+ task->data[0] = 0;
+ if (byte_3002A68 > 4 && gReceivedRemoteLinkPlayers == 1)
+ DestroyTask(taskID);
+ }
+ }
+}
+
+static void sub_805181C(struct Sprite* sprite)
+{
+ switch (sprite->data0)
+ {
+ case 0:
+ sprite->data1 += 8;
+ if (sprite->data1 > 88)
+ {
+ sprite->data1 = 88;
+ sprite->data0++;
+ PlaySE(SE_KON);
+ }
+ break;
+ case 1:
+ sprite->data2 += 1;
+ if (sprite->data2 > 20)
+ {
+ sprite->data0++;
+ sprite->data2 = 0;
+ }
+ break;
+ case 2:
+ sprite->data1 += 4;
+ if (sprite->data1 > 176)
+ {
+ if (++sprite->data3 == 3)
+ {
+ DestroySprite(sprite);
+ CreateSprite(&sSpriteTemplate_821657C, 120, -20, 2);
+ }
+ else
+ {
+ sprite->data0 = 0;
+ sprite->data1 = -16;
+ StartSpriteAnim(sprite, sprite->data3);
+ }
+ }
+ break;
+ }
+ sprite->pos2.y = sprite->data1;
+}
+
+static void sub_80518CC(struct Sprite* sprite)
+{
+ switch (sprite->data0)
+ {
+ case 0:
+ sprite->data1 += 8;
+ if (sprite->data1 > 92)
+ {
+ sprite->data1 = 92;
+ sprite->data0++;
+ PlaySE(SE_PIN);
+ }
+ break;
+ case 1:
+ sprite->data2 += 1;
+ if (sprite->data2 > 20)
+ sprite->data0++;
+ break;
+ case 2:
+ sprite->data1 += 4;
+ if (sprite->data1 > 176)
+ {
+ gBerryBlenderData->field_0++;
+ DestroySprite(sprite);
+ }
+ break;
+ }
+ sprite->pos2.y = sprite->data1;
+}
+
+static void sub_805194C(u16 a0, u16 a1)
+{
+ if (gBerryBlenderData->field_140 < a0)
+ {
+ gBerryBlenderData->field_140 += 2;
+ sub_805197C(gBerryBlenderData->field_140, a1);
+ }
+}
+
+static void sub_805197C(u16 a0, u16 a1)
+{
+ s32 var1, var2, var3, var4;
+ u16* vram;
+
+ vram = (u16*)(VRAM + 0x6000);
+ var1 = (a0 * 64) / a1;
+ var2 = var1 / 8;
+ for (var4 = 0; var4 < var2; var4++)
+ {
+ vram[11 + var4] = 0x81E9;
+ vram[43 + var4] = 0x81F9;
+ }
+ var3 = var1 % 8;
+ if (var3 != 0)
+ {
+ vram[11 + var4] = var3 - 32287;
+ vram[43 + var4] = var3 - 32271;
+ var4++;
+ }
+ for (; var4 < 8; var4++)
+ {
+ vram[11 + var4] = 33249;
+ vram[43 + var4] = 33249 + 16;
+ }
+}
+
+static u32 sub_8051A1C(u16 a0)
+{
+ return 360000 * a0 / 0x10000;
+}
+
+static void sub_8051A3C(u16 a0)
+{
+ u8 i;
+ u8 palAdders[5];
+
+ u32 var = sub_8051A1C(a0);
+ if (gBerryBlenderData->max_RPM < var)
+ gBerryBlenderData->max_RPM = var;
+ for (i = 0; i < 5; i++)
+ {
+ palAdders[i] = var % 10;
+ var /= 10;
+ }
+ *((u16*)(VRAM + 0x6458)) = palAdders[4] + 0x8172;
+ *((u16*)(VRAM + 0x645A)) = palAdders[3] + 0x8172;
+ *((u16*)(VRAM + 0x645C)) = palAdders[2] + 0x8172;
+ *((u16*)(VRAM + 0x6460)) = palAdders[1] + 0x8172;
+ *((u16*)(VRAM + 0x6462)) = palAdders[0] + 0x8172;
+}
+
+static void sub_8051AC8(s16* a0, u16 a1)
+{
+ if (*a0 == 0)
+ *a0 = (Random() % a1) - (a1 / 2);
+}
+
+static void sub_8051AF4(s16* a0)
+{
+ if (*a0 < 0 )
+ (*a0)++;
+ if (*a0 > 0 )
+ (*a0)--;
+}
+
+static void sub_8051B18(void)
+{
+ sub_8051AF4(&gBerryBlenderData->field_144);
+ sub_8051AF4(&gBerryBlenderData->field_146);
+}
+
+static void sub_8051B40(s16* a0, u16 a1)
+{
+ s32 var;
+ if (a1 < 10)
+ var = 16;
+ else
+ var = 8;
+ if (*a0 == 0)
+ *a0 = (Random() % var) - (var / 2);
+ else
+ {
+ if (*a0 < 0)
+ (*a0)++;
+ if (*a0 > 0)
+ (*a0)--;
+ }
+}
+
+static bool8 sub_8051B8C(void)
+{
+ if (gBerryBlenderData->framesToWait == 0)
+ {
+ gBerryBlenderData->field_144 = 0;
+ gBerryBlenderData->field_146 = 0;
+ }
+ gBerryBlenderData->framesToWait++;
+ sub_8051B40(&gBerryBlenderData->field_144, gBerryBlenderData->framesToWait);
+ sub_8051B40(&gBerryBlenderData->field_146, gBerryBlenderData->framesToWait);
+ if (gBerryBlenderData->framesToWait == 20)
+ {
+ gBerryBlenderData->field_144 = 0;
+ gBerryBlenderData->field_146 = 0;
+ return TRUE;
+ }
+ else
+ return FALSE;
+}
+
+static void sub_8051C04(struct Sprite* sprite)
+{
+ sprite->pos2.x = -(gBerryBlenderData->field_144);
+ sprite->pos2.y = -(gBerryBlenderData->field_146);
+}
+
+static void Blender_TrySettingRecord(void)
+{
+ if (gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] < gBerryBlenderData->max_RPM)
+ gSaveBlock1.berryBlenderRecords[gBerryBlenderData->playersNo - 2] = gBerryBlenderData->max_RPM;
+}
+
+static bool8 Blender_PrintBlendingResults(void)
+{
+ u16 i;
+
+ struct Pokeblock pokeblock;
+ u8 flavours[6];
+ u8 text[2][10];
+ u16 berryIDs[4]; // unused
+
+ switch (gBerryBlenderData->field_0)
+ {
+ case 0:
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->framesToWait = 17;
+ break;
+ case 1:
+ gBerryBlenderData->framesToWait -= 10;
+ if (gBerryBlenderData->framesToWait < 0)
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 2:
+ if (++gBerryBlenderData->framesToWait > 20)
+ {
+ for (i = 0; i < 3; i++)
+ DestroySprite(&gSprites[gBerryBlenderData->scoreIconIDs[i]]);
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 3:
+ {
+ u8* textPtr;
+ u16 secondsPassed, minutes, seconds;
+
+ MenuDrawTextWindow(4, 2, 25, 17);
+ sub_8072BD8(gOtherText_ResultsOfBlending, 5, 3, 160);
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ {
+ u8 place = gBerryBlenderData->playerPlaces[i];
+ textPtr = text[0];
+
+ StringCopy(textPtr, gBerryBlenderData->blendedBerries[place].name);
+ ConvertInternationalString(textPtr, gLinkPlayers[place].language);
+#ifdef ENGLISH
+ StringAppend(textPtr, gOtherText_Berry);
+#else
+ de_sub_8073174(textPtr, gOtherText_Berry);
+#endif
+ textPtr = gBerryBlenderData->stringVar;
+ textPtr = ConvertIntToDecimalString(textPtr, i + 1);
+ textPtr[0] = CHAR_SPACE;
+ textPtr[1] = CHAR_PERIOD;
+ textPtr[2] = CHAR_SPACE;
+ textPtr += 3;
+ textPtr = sub_8072C74(textPtr, gLinkPlayers[place].name, 88, 0);
+ sub_8072C74(textPtr, text[0], 157, 0);
+ MenuPrint(gBerryBlenderData->stringVar, 5, gUnknown_082165E9[gBerryBlenderData->playersNo] + (i * gUnknown_082165EE[gBerryBlenderData->playersNo]));
+ }
+ ConvertIntToDecimalStringN(text[0], gBerryBlenderData->max_RPM % 100, 2, 2);
+ textPtr = gBerryBlenderData->stringVar;
+ textPtr = StringCopy(textPtr, gOtherText_MaxSpeed);
+ textPtr = sub_8072C14(textPtr, gBerryBlenderData->max_RPM / 100, 121, 1);
+
+#ifdef ENGLISH
+ textPtr[0] = CHAR_SPACE;
+ textPtr[1] = CHAR_PERIOD;
+ textPtr[2] = CHAR_SPACE;
+ textPtr += 3;
+ textPtr = sub_8072C74(textPtr, text[0], 142, 1);
+#else
+ *textPtr++ = CHAR_COMMA;
+ textPtr = sub_8072C74(textPtr, text[0], 136, 1);
+#endif
+ StringCopy(textPtr, gOtherText_RPM);
+ MenuPrint(gBerryBlenderData->stringVar, 5, 13);
+
+ secondsPassed = gBerryBlenderData->gameFrameTime / 60;
+ seconds = secondsPassed % 60;
+ minutes = secondsPassed / 60;
+ ConvertIntToDecimalStringN(text[0], minutes, 2, 2);
+ ConvertIntToDecimalStringN(text[1], seconds, 2, 2);
+ textPtr = gBerryBlenderData->stringVar;
+ textPtr = StringCopy(textPtr, gOtherText_RequiredTime);
+
+#ifdef ENGLISH
+ textPtr = sub_8072C74(textPtr, text[0], 102, 1);
+#else
+ textPtr = sub_8072C74(textPtr, text[0], 99, 1);
+#endif
+ textPtr = StringAppend(textPtr, gOtherText_Min);
+
+ textPtr = sub_8072C74(textPtr, text[1], 136, 1);
+ StringCopy(textPtr, gOtherText_Sec);
+
+ MenuPrint(gBerryBlenderData->stringVar, 5, 15);
+
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 4:
+ if (gMain.newKeys & A_BUTTON)
+ gBerryBlenderData->field_0++;
+ break;
+ case 5:
+ MenuZeroFillScreen();
+ MenuDrawTextWindow(0, 14, 29, 19);
+ for (i = 0; i < BLENDER_MAX_PLAYERS; i++)
+ {
+ if (gBerryBlenderData->chosenItemID[i] != 0)
+ berryIDs[i] = gBerryBlenderData->chosenItemID[i] - 133;
+ }
+ sub_8050760();
+ Blender_CalculatePokeblock(gBerryBlenderData->blendedBerries, &pokeblock, gBerryBlenderData->playersNo, flavours, gBerryBlenderData->max_RPM);
+ Blender_PrintMadePokeblockString(&pokeblock, gBerryBlenderData->stringVar);
+ CreateTask(sub_8052BD0, 6);
+ MenuPrintMessage(gBerryBlenderData->stringVar, 1, 15);
+ RemoveBagItem(gScriptItemId, 1);
+ sub_810CA34(&pokeblock);
+ gBerryBlenderData->field_0++;
+ break;
+ case 6:
+ if (MenuUpdateWindowText())
+ {
+ Blender_TrySettingRecord();
+ return TRUE;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static void Blender_PrintMadePokeblockString(struct Pokeblock* pokeblock, u8* dst)
+{
+ u8 text[12];
+ u8 flavourLvl, feel;
+
+ dst[0] = EOS;
+ StringCopy(dst, gPokeblockNames[pokeblock->color]);
+#ifdef ENGLISH
+ StringAppend(dst, gOtherText_PokeBlockMade);
+#else
+ de_sub_8073174(dst, gOtherText_PokeBlockMade);
+#endif
+ StringAppend(dst, sNewLineString_0);
+
+ flavourLvl = sub_810C9B0(pokeblock);
+ feel = sub_810C9E8(pokeblock);
+
+ StringAppend(dst, gOtherText_BlockLevelIs);
+ ConvertIntToDecimalStringN(text, flavourLvl, 0, 3);
+ StringAppend(dst, text);
+
+ StringAppend(dst, gOtherText_BlockFeelIs);
+ ConvertIntToDecimalStringN(text, feel, 0, 3);
+ StringAppend(dst, text);
+
+ StringAppend(dst, gOtherText_Period);
+ StringAppend(dst, gUnknown_08216249);
+}
+
+static void Blender_SortBasedOnPoints(u8* places, u8 playersNum, u32* scores)
+{
+ s32 i, j;
+ for (i = 0; i < playersNum; i++)
+ {
+ for (j = 0; j < playersNum; j++)
+ {
+ if (scores[places[i]] > scores[places[j]])
+ {
+ u8 temp = places[i];
+ places[i] = places[j];
+ places[j] = temp;
+ }
+ }
+ }
+}
+
+static void Blender_SortScores(void)
+{
+ u8 i;
+ u8 places[4];
+ u32 points[4];
+
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ places[i] = i;
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ {
+ points[i] = 1000000 * gBerryBlenderData->scores[i][BLENDER_SCORE_BEST];
+ points[i] += 1000 * gBerryBlenderData->scores[i][BLENDER_SCORE_GOOD];
+ points[i] += 1000 - gBerryBlenderData->scores[i][BLENDER_SCORE_MISS];
+ }
+ Blender_SortBasedOnPoints(places, gBerryBlenderData->playersNo, points);
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ gBerryBlenderData->playerPlaces[i] = places[i];
+}
+
+static bool8 Blender_PrintBlendingRanking(void)
+{
+ u16 i;
+ switch (gBerryBlenderData->field_0)
+ {
+ case 0:
+ gBerryBlenderData->field_0++;
+ gBerryBlenderData->framesToWait = 255;
+ break;
+ case 1:
+ gBerryBlenderData->framesToWait -= 10;
+ if (gBerryBlenderData->framesToWait < 0)
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 2:
+ if (++gBerryBlenderData->framesToWait > 20)
+ {
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 3:
+ MenuDrawTextWindow(4, 2, 25, 17);
+ sub_8072BD8(gOtherText_Ranking, 5, 3, 160);
+
+ gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST] = CreateSprite(&sSpriteTemplate_821645C, 140, 52, 0);
+ gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]].callback = SpriteCallbackDummy;
+ StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_BEST]], 3);
+
+ gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD] = CreateSprite(&sSpriteTemplate_821645C, 164, 52, 0);
+ gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_GOOD]].callback = SpriteCallbackDummy;
+
+ gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS] = CreateSprite(&sSpriteTemplate_821645C, 188, 52, 0);
+ gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]].callback = SpriteCallbackDummy;
+ StartSpriteAnim(&gSprites[gBerryBlenderData->scoreIconIDs[BLENDER_SCORE_MISS]], 1);
+
+ Blender_SortScores();
+
+ for (i = 0; i < gBerryBlenderData->playersNo; i++)
+ {
+ u8 place = gBerryBlenderData->playerPlaces[i];
+ u8* txtPtr = gBerryBlenderData->stringVar;
+
+ txtPtr[0] = EXT_CTRL_CODE_BEGIN;
+ txtPtr[1] = 0x13;
+ txtPtr[2] = 4;
+ txtPtr += 3;
+
+ txtPtr = ConvertIntToDecimalString(txtPtr, i + 1);
+
+ txtPtr[0] = CHAR_SPACE;
+ txtPtr[1] = CHAR_PERIOD;
+ txtPtr[2] = CHAR_SPACE;
+ txtPtr += 3;
+
+ txtPtr = StringCopy(txtPtr, gLinkPlayers[place].name);
+
+ txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_BEST], 108, 1);
+ txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], 132, 1);
+ txtPtr = sub_8072C14(txtPtr, gBerryBlenderData->scores[place][BLENDER_SCORE_MISS], 156, 1);
+
+ MenuPrint(gBerryBlenderData->stringVar, 5, i * gUnknown_082165F3[gBerryBlenderData->playersNo] + 8);
+ }
+ gBerryBlenderData->framesToWait = 0;
+ gBerryBlenderData->field_0++;
+ break;
+ case 4:
+ if (++gBerryBlenderData->framesToWait > 20)
+ gBerryBlenderData->field_0++;
+ break;
+ case 5:
+ if (gMain.newKeys & A_BUTTON)
+ {
+ PlaySE(SE_SELECT);
+ gBerryBlenderData->field_0++;
+ }
+ break;
+ case 6:
+ gBerryBlenderData->field_0 = 0;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+// debug menu goes here
+
+void unref_sub_80524BC(void)
+{
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ SetVBlankCallback(VBlankCB1_BerryBlender);
+ SetUpWindowConfig(&gWindowConfig_81E6CE4);
+ InitMenuWindow(&gWindowConfig_81E6CE4);
+ SeedRng(gMain.vblankCounter1);
+ REG_DISPCNT = 0x1540;
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ sBlenderDebug.BPM = 8000;
+ sBlenderDebug.field_10++;
+ SetMainCallback2(sub_8052AF8);
+}
+
+static void BlenderDebug_PrintBerryData(void)
+{
+ u8 text[128];
+ u8 i;
+
+ StringCopy(text, sText_BPM);
+ MenuPrint(text, 2, 0);
+
+ ConvertIntToDecimalStringN(text, sBlenderDebug.BPM / 100, 2, 3);
+ MenuPrint(text, 6, 0);
+
+ for (i = 0; i < 4; i++)
+ {
+ u8 var;
+
+ if (sBlenderDebug.cursorPos == i)
+ {
+ text[0] = 0xEF;
+ CopyItemName(sBlenderDebug.berries[i] + 133, &text[1]);
+ }
+ else
+ {
+ CopyItemName(sBlenderDebug.berries[i] + 133, &text[0]);
+ text[6] = CHAR_SPACE;
+ text[7] = EOS;
+ }
+ var = (i * 3) + 3;
+ MenuPrint(text, 2, var);
+
+ ConvertIntToDecimalStringN(&text[0], gBerries[sBlenderDebug.berries[i]].spicy, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToDecimalStringN(&text[3], gBerries[sBlenderDebug.berries[i]].dry, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToDecimalStringN(&text[6], gBerries[sBlenderDebug.berries[i]].sweet, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToDecimalStringN(&text[9], gBerries[sBlenderDebug.berries[i]].bitter, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToDecimalStringN(&text[12], gBerries[sBlenderDebug.berries[i]].sour, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToDecimalStringN(&text[15], gBerries[sBlenderDebug.berries[i]].smoothness, 2, 2);
+
+ text[17] = EOS;
+ MenuPrint(text, 7, var);
+ }
+ if (sBlenderDebug.pokeblock.color != 0)
+ {
+ StringCopy(text, gPokeblockNames[sBlenderDebug.pokeblock.color]);
+ MenuPrint(text, 2, 15);
+
+ ConvertIntToHexStringN(&text[0], sBlenderDebug.spicy, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToHexStringN(&text[3], sBlenderDebug.dry, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToHexStringN(&text[6], sBlenderDebug.sweet, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToHexStringN(&text[9], sBlenderDebug.bitter, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToHexStringN(&text[12], sBlenderDebug.sour, 2, 2);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToHexStringN(&text[15], sBlenderDebug.feel, 2, 2);
+
+ text[17] = EOS;
+ MenuPrint(text, 7, 17);
+ }
+}
+
+static void sub_80527BC(void)
+{
+ u8 text[70];
+ u8 buffer[10];
+ u16 i;
+
+ if (gUnknown_020297DC == 1)
+ {
+ u16 j;
+ for (j = 0; j < 10; j++)
+ gUnknown_03004840[j] = 0;
+ gUnknown_03004830 = Random();
+ gUnknown_020297E0 = 0;
+ gUnknown_020297DC = 2;
+ for (i = 0; i < 200; i++)
+ ewram[i] = 0;
+ gUnknown_020297E8 = 0;
+ }
+ for (i = 0; i < 100; i++)
+ {
+ if (((Random() >> 15) & 1) == gUnknown_020297E8)
+ gUnknown_020297E0++;
+ else
+ {
+ u16* ewramPtr = ((u16*)(ewram));
+ ewramPtr[gUnknown_020297E4] = gUnknown_020297E0;
+ gUnknown_020297E4++;
+ gUnknown_020297E0 = 0;
+ gUnknown_020297E8 ^= 1;
+ }
+ }
+ text[0] = EOS;
+
+ ConvertIntToHexStringN(buffer, gUnknown_03004830, 2, 8);
+ StringAppend(text, buffer);
+ StringAppend(text, sText_Space);
+
+ ConvertIntToHexStringN(buffer, gUnknown_020297E0, 2, 8);
+ StringAppend(text, buffer);
+ StringAppend(text, sNewLineString_1);
+
+ if (gUnknown_020297DC == 3)
+ {
+ ConvertIntToHexStringN(buffer, gUnknown_020297E4, 2, 16);
+ StringAppend(text, buffer);
+ gUnknown_020297DC = 0;
+ }
+
+ MenuPrint(text, 2, 15);
+}
+
+static void sub_8052918(void)
+{
+ if (gMain.newKeys & R_BUTTON)
+ {
+ sBlenderDebug.BPM += 1000;
+ if (sBlenderDebug.BPM > 30000)
+ sBlenderDebug.BPM = 1000;
+ sBlenderDebug.field_10++;
+ }
+ if (gMain.newKeys & L_BUTTON)
+ {
+ sBlenderDebug.BPM -= 1000;
+ if (sBlenderDebug.BPM < 0)
+ sBlenderDebug.BPM = 30000;
+ sBlenderDebug.field_10++;
+ }
+ if (gMain.newKeys & DPAD_UP)
+ {
+ sBlenderDebug.cursorPos -= 1;
+ if (sBlenderDebug.cursorPos < 0)
+ sBlenderDebug.cursorPos = 3;
+ sBlenderDebug.field_10++;
+ }
+ if (gMain.newKeys & DPAD_DOWN)
+ {
+ sBlenderDebug.cursorPos += 1;
+ if (sBlenderDebug.cursorPos > 3)
+ sBlenderDebug.cursorPos = 0;
+ sBlenderDebug.field_10++;
+ }
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (--sBlenderDebug.berries[sBlenderDebug.cursorPos] < 0)
+ sBlenderDebug.berries[sBlenderDebug.cursorPos] = 42;
+ sBlenderDebug.field_10++;
+ }
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (++sBlenderDebug.berries[sBlenderDebug.cursorPos] > 42)
+ sBlenderDebug.berries[sBlenderDebug.cursorPos] = 0;
+ sBlenderDebug.field_10++;
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ u16 berryIDs[4];
+ struct BlenderBerry berries[4];
+
+ u16 i, notEnigma = 0;
+ for (i = 0; i < 4; i++)
+ {
+ if (sBlenderDebug.berries[i] != 42)
+ {
+ notEnigma++;
+ berryIDs[i] = sBlenderDebug.berries[i];
+ Blender_CopyBerryData(&berries[i], sBlenderDebug.berries[i] + 133);
+ }
+ else
+ break;
+ }
+ if (notEnigma > 1)
+ {
+ BlenderDebug_CalculatePokeblock(berries, &sBlenderDebug.pokeblock, notEnigma, &sBlenderDebug.spicy, sBlenderDebug.BPM);
+ sBlenderDebug.field_10++;
+ }
+ else
+ sBlenderDebug.pokeblock.color = 0xFF;
+ }
+ if (sBlenderDebug.field_10)
+ {
+ BlenderDebug_PrintBerryData();
+ sBlenderDebug.field_10 = 0;
+ }
+ if (gMain.newKeys & SELECT_BUTTON && gUnknown_020297DC == 0)
+ {
+ gUnknown_020297DC++;
+ gUnknown_020297E0 = 0;
+ SeedRng(gMain.vblankCounter1);
+ }
+ if (gUnknown_020297DC != 0)
+ sub_80527BC();
+}
+
+static void sub_8052AF8(void)
+{
+ sub_8052918();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+// debug menu ends
+// blender record window begins
+
+void ShowBerryBlenderRecordWindow(void)
+{
+ u8 text[30];
+ s32 i;
+
+ MenuDrawTextWindow(6, 3, 23, 16);
+ MenuPrint(gMultiText_BerryBlenderMaxSpeedRecord, 8, 4);
+ MenuPrint(gMultiText_2P3P4P, 8, 9);
+
+ for (i = 0; i < 3; i++)
+ {
+ u32 record = gSaveBlock1.berryBlenderRecords[i];
+ u8* txtPtr = sub_8072C14(text, record / 100, 18, 1);
+
+#ifdef ENGLISH
+ txtPtr[0] = CHAR_SPACE;
+ txtPtr[1] = CHAR_PERIOD;
+ txtPtr[2] = CHAR_SPACE;
+ txtPtr += 3;
+#else
+ *txtPtr++ = CHAR_COMMA;
+#endif
+
+ txtPtr = ConvertIntToDecimalStringN(txtPtr, record % 100, 2, 2);
+ StringAppend(txtPtr, gOtherText_RPM);
+ MenuPrint(text, 15, i * 2 + 9);
+ }
+}
+
+static void sub_8052BD0(u8 taskID)
+{
+ if (gTasks[taskID].data[0] == 0)
+ {
+ PlayFanfare(BGM_FANFA1);
+ gTasks[taskID].data[0]++;
+ }
+ if (IsFanfareTaskInactive())
+ {
+ PlayBGM(gBerryBlenderData->field_178);
+ DestroyTask(taskID);
+ }
+}
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/scene/cute_sketch.c b/src/scene/cute_sketch.c
new file mode 100644
index 000000000..5317bc334
--- /dev/null
+++ b/src/scene/cute_sketch.c
@@ -0,0 +1,164 @@
+#include "global.h"
+#include "cute_sketch.h"
+#include "contest_painting.h"
+
+extern u16 (*gUnknown_03005DEC)[][32];
+extern u8 gUnknown_03005E00;
+extern u8 gUnknown_03005DFC;
+extern u8 gUnknown_03005DF8;
+extern u8 gUnknown_03005DF0;
+extern u8 gUnknown_03005E04;
+extern u8 gUnknown_03005DF4;
+
+extern u8 gUnknown_03005DE8;
+
+// this file's functions
+void sub_80FCAA4(void);
+void sub_80FCB5C(void);
+void sub_80FCD54(void);
+void sub_80FCEA4(void);
+void sub_80FCCBC(void);
+void sub_80FD06C(void);
+void sub_80FD114(void);
+void sub_80FCF3C(void);
+void sub_80FCAC4(void);
+void sub_80FCC18(u8);
+void sub_80FC92C(u8);
+void sub_80FC9E4(u8);
+void sub_80FD1C8(u16);
+u16 sub_80FD39C(u16*);
+u16 sub_80FD68C(u16*, u16*, u16*);
+
+void sub_80FC7A0(struct Unk03005E20* info)
+{
+ gUnknown_03005DEC = info->var_4;
+ gUnknown_03005E00 = info->var_1F;
+ gUnknown_03005DE8 = info->var_19;
+ gUnknown_03005DFC = info->var_1A;
+ gUnknown_03005DF8 = info->var_1B;
+ gUnknown_03005DF0 = info->var_1C;
+ gUnknown_03005E04 = info->var_1D;
+ gUnknown_03005DF4 = info->var_1E;
+ switch (info->var_0)
+ {
+ case 2:
+ sub_80FCAA4();
+ break;
+ case 8:
+ sub_80FCB5C();
+ break;
+ case 9:
+ sub_80FCD54();
+ sub_80FCC18(gUnknown_03005E00);
+ break;
+ case 10:
+ sub_80FCD54();
+ sub_80FCEA4();
+ sub_80FCCBC();
+ case 31:
+ sub_80FCEA4();
+ break;
+ case 11:
+ sub_80FCD54();
+ sub_80FD06C();
+ sub_80FD06C();
+ sub_80FD114();
+ sub_80FCCBC();
+ break;
+ case 13:
+ sub_80FCF3C();
+ break;
+ case 30:
+ sub_80FCD54();
+ break;
+ case 32:
+ sub_80FD06C();
+ break;
+ case 33:
+ sub_80FD114();
+ break;
+ case 6:
+ sub_80FCAC4();
+ sub_80FC92C(3);
+ break;
+ case 36:
+ sub_80FCD54();
+ sub_80FD06C();
+ sub_80FD114();
+ sub_80FCCBC();
+ sub_80FCB5C();
+ sub_80FCB5C();
+ sub_80FC92C(2);
+ sub_80FC9E4(4);
+ break;
+ }
+}
+
+#define RGB2(r, g, b) (((b) << 10) | ((g) << 5) | (r))
+
+void sub_80FC92C(u8 a0) // it changes palette someway somehow... .__.
+{
+ u8 i, j;
+ for (i = 0; i < gUnknown_03005DF0; i++)
+ {
+ u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
+ u16* pal = &var2[gUnknown_03005DE8];
+ for (j = 0; j < gUnknown_03005DF8; j++, pal++)
+ {
+ if (!(0x8000 & *pal))
+ {
+ u8 val = (31 & *pal);
+ val += a0;
+ if (val > 31)
+ val = 31;
+
+ *pal = RGB2(val, val, val);
+ }
+ }
+ }
+}
+
+void sub_80FC9E4(u8 a0)
+{
+ u8 i, j;
+ for (i = 0; i < gUnknown_03005DF0; i++)
+ {
+ u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
+ u16* pal = &var2[gUnknown_03005DE8];
+ for (j = 0; j < gUnknown_03005DF8; j++, pal++)
+ {
+ if (!(0x8000 & *pal))
+ {
+ u8 val = (31 & *pal);
+ if (val > 31 - a0)
+ val = 31 - (a0 >> 1);
+
+ *pal = RGB2(val, val, val);
+ }
+ }
+ }
+}
+
+void sub_80FCAA4(void)
+{
+ u32 i;
+ for (i = 0; i < 3200; i++)
+ sub_80FD1C8(i);
+}
+
+void sub_80FCAC4(void)
+{
+ u8 i, j;
+ for (i = 0; i < gUnknown_03005DF0; i++)
+ {
+ u16* var2 = &(*gUnknown_03005DEC)[0][(gUnknown_03005DFC + i) * gUnknown_03005E04];
+ u16* pal = &var2[gUnknown_03005DE8];
+ for (j = 0; j < gUnknown_03005DF8; j++, pal++)
+ {
+ if (!(0x8000 & *pal))
+ {
+ *pal = sub_80FD39C(pal);
+ }
+ }
+ }
+}
diff --git a/src/scene/egg_hatch.c b/src/scene/egg_hatch.c
new file mode 100644
index 000000000..032dcd284
--- /dev/null
+++ b/src/scene/egg_hatch.c
@@ -0,0 +1,862 @@
+#include "global.h"
+#include "pokemon.h"
+#include "items.h"
+#include "decompress.h"
+#include "data2.h"
+#include "task.h"
+#include "script.h"
+#include "palette.h"
+#include "overworld.h"
+#include "main.h"
+#include "event_data.h"
+#include "sound.h"
+#include "songs.h"
+#include "text.h"
+#include "text_window.h"
+#include "string_util.h"
+#include "strings2.h"
+#include "menu.h"
+#include "naming_screen.h"
+#include "trig.h"
+#include "rng.h"
+#include "trade.h"
+
+extern u8 ewram[];
+extern struct SpriteTemplate gUnknown_02024E8C;
+
+struct EggHatchData
+{
+ u8 eggSpriteID;
+ u8 pokeSpriteID;
+ u8 CB2_state;
+ u8 CB2_PalCounter;
+ u8 eggPartyID;
+ struct Window window;
+ u8 tileDataStartOffset;
+ u8 unused_39;
+ u8 eggShardVelocityID;
+};
+
+struct EggHatchData* gEggHatchData;
+
+extern const u32 gUnknown_08D00000[];
+extern const u32 gUnknown_08D00524[];
+extern const u16 gUnknown_08D004E0[]; //palette
+extern const struct SpriteSheet sUnknown_0820A3B0;
+extern const struct SpriteSheet sUnknown_0820A3B8;
+extern const struct SpritePalette sUnknown_0820A3C0;
+
+bool8 GetSetPokedexFlag(u16 nationalNum, u8 caseID);
+u8* GetMonNick(struct Pokemon* mon, u8* dst);
+u8 sav1_map_get_name(void);
+const struct CompressedSpritePalette* GetMonSpritePalStruct(struct Pokemon* mon); //gets pokemon palette address
+void sub_8080990(void);
+
+static void Task_EggHatch(u8 taskID);
+static void CB2_EggHatch_0(void);
+static void CB2_EggHatch_1(void);
+static void SpriteCB_Egg_0(struct Sprite* sprite);
+static void SpriteCB_Egg_1(struct Sprite* sprite);
+static void SpriteCB_Egg_2(struct Sprite* sprite);
+static void SpriteCB_Egg_3(struct Sprite* sprite);
+static void SpriteCB_Egg_4(struct Sprite* sprite);
+static void SpriteCB_Egg_5(struct Sprite* sprite);
+static void SpriteCB_EggShard(struct Sprite* sprite);
+static void EggHatchPrintMessage2(u8* src);
+static void EggHatchPrintMessage1(u8* src);
+static bool8 EggHatchUpdateWindowText(void);
+static void CreateRandomEggShardSprite(void);
+static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex);
+
+// graphics
+
+static const u16 sEggPalette[] = INCBIN_U16("graphics/pokemon/egg/palette.gbapal");
+static const u8 sEggHatchTiles[] = INCBIN_U8("graphics/misc/egg_hatch.4bpp");
+static const u8 sEggShardTiles[] = INCBIN_U8("graphics/misc/egg_shard.4bpp");
+
+static const struct OamData sOamData_820A378 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 2,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_820A380[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_820A388[] =
+{
+ ANIMCMD_FRAME(16, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_820A390[] =
+{
+ ANIMCMD_FRAME(32, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_820A398[] =
+{
+ ANIMCMD_FRAME(48, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_820A3A0[] =
+{
+ sSpriteAnim_820A380,
+ sSpriteAnim_820A388,
+ sSpriteAnim_820A390,
+ sSpriteAnim_820A398,
+};
+
+static const struct SpriteSheet sUnknown_0820A3B0 =
+{
+ .data = sEggHatchTiles,
+ .size = 2048,
+ .tag = 12345,
+};
+
+static const struct SpriteSheet sUnknown_0820A3B8 =
+{
+ .data = sEggShardTiles,
+ .size = 128,
+ .tag = 23456,
+};
+
+static const struct SpritePalette sUnknown_0820A3C0 =
+{
+ .data = sEggPalette,
+ .tag = 54321
+};
+
+static const struct SpriteTemplate sSpriteTemplate_820A3C8 =
+{
+ .tileTag = 12345,
+ .paletteTag = 54321,
+ .oam = &sOamData_820A378,
+ .anims = sSpriteAnimTable_820A3A0,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+
+static const struct OamData sOamData_820A3E0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 2,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_820A3E8[] =
+{
+ ANIMCMD_FRAME(0, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_820A3F0[] =
+{
+ ANIMCMD_FRAME(1, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_820A3F8[] =
+{
+ ANIMCMD_FRAME(2, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_820A400[] =
+{
+ ANIMCMD_FRAME(3, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_820A408[] =
+{
+ sSpriteAnim_820A3E8,
+ sSpriteAnim_820A3F0,
+ sSpriteAnim_820A3F8,
+ sSpriteAnim_820A400,
+};
+
+static const struct SpriteTemplate sSpriteTemplate_820A418 =
+{
+ .tileTag = 23456,
+ .paletteTag = 54321,
+ .oam = &sOamData_820A3E0,
+ .anims = sSpriteAnimTable_820A408,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_EggShard
+};
+
+// actual code
+
+static void CreatedHatchedMon(struct Pokemon *egg, struct Pokemon *temp)
+{
+ u16 species;
+ u32 personality, pokerus;
+ u8 i, friendship, language, gameMet, markings;
+ u16 moves[4];
+ u32 ivs[6];
+
+
+ species = GetMonData(egg, MON_DATA_SPECIES);
+
+ for (i = 0; i < 4; i++)
+ {
+ moves[i] = GetMonData(egg, MON_DATA_MOVE1 + i);
+ }
+
+ personality = GetMonData(egg, MON_DATA_PERSONALITY);
+
+ for (i = 0; i < 6; i++)
+ {
+ ivs[i] = GetMonData(egg, MON_DATA_HP_IV + i);
+ }
+
+ gameMet = GetMonData(egg, MON_DATA_MET_GAME);
+ markings = GetMonData(egg, MON_DATA_MARKINGS);
+ pokerus = GetMonData(egg, MON_DATA_POKERUS);
+
+ CreateMon(temp, species, 5, 32, TRUE, personality, 0, 0);
+
+ for (i = 0; i < 4; i++)
+ {
+ SetMonData(temp, MON_DATA_MOVE1 + i, (const u8 *) &moves[i]);
+ }
+
+ for (i = 0; i < 6; i++)
+ {
+ SetMonData(temp, MON_DATA_HP_IV + i, (const u8 *) &ivs[i]);
+ }
+
+ language = GAME_LANGUAGE;
+ SetMonData(temp, MON_DATA_LANGUAGE, &language);
+ SetMonData(temp, MON_DATA_MET_GAME, &gameMet);
+ SetMonData(temp, MON_DATA_MARKINGS, &markings);
+
+ friendship = 120;
+ SetMonData(temp, MON_DATA_FRIENDSHIP, &friendship);
+ SetMonData(temp, MON_DATA_POKERUS, (const u8 *) &pokerus);
+
+ *egg = *temp;
+}
+
+static void AddHatchedMonToParty(u8 id)
+{
+ u8 isEgg;
+ u16 pokeNum;
+ u8 name[12];
+ u16 ball;
+ u16 caughtLvl;
+ u8 mapNameID;
+ struct Pokemon* mon = &gPlayerParty[id];
+
+ CreatedHatchedMon(mon, &gEnemyParty[0]);
+ isEgg = 0;
+ SetMonData(mon, MON_DATA_IS_EGG, &isEgg);
+
+ pokeNum = GetMonData(mon, MON_DATA_SPECIES);
+ GetSpeciesName(name, pokeNum);
+ SetMonData(mon, MON_DATA_NICKNAME, name);
+
+ pokeNum = SpeciesToNationalPokedexNum(pokeNum);
+ GetSetPokedexFlag(pokeNum, 2);
+ GetSetPokedexFlag(pokeNum, 3);
+
+ GetMonNick(mon, gStringVar1);
+
+ ball = ITEM_POKE_BALL;
+ SetMonData(mon, MON_DATA_POKEBALL, (const u8*) &ball);
+
+ caughtLvl = 0;
+ SetMonData(mon, MON_DATA_MET_LEVEL, (const u8*) &caughtLvl);
+
+ mapNameID = sav1_map_get_name();
+ SetMonData(mon, MON_DATA_MET_LOCATION, &mapNameID);
+
+ MonRestorePP(mon);
+ CalculateMonStats(mon);
+}
+
+void ScriptHatchMon(void)
+{
+ AddHatchedMonToParty(gSpecialVar_0x8004);
+}
+
+#ifdef NONMATCHING
+static bool8 sub_8042ABC(void* a, u8 b)
+{
+
+}
+
+#else
+__attribute__((naked))
+static bool8 sub_8042ABC(void* a, u8 b)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ sub sp, 0x20\n\
+ adds r5, r0, 0\n\
+ lsls r4, r1, 24\n\
+ lsrs r4, 24\n\
+ lsls r0, r4, 2\n\
+ adds r0, r4\n\
+ lsls r0, 4\n\
+ adds r0, r5, r0\n\
+ mov r1, sp\n\
+ bl GetBoxMonNick\n\
+ lsls r0, r4, 3\n\
+ subs r0, r4\n\
+ lsls r1, r0, 3\n\
+ adds r0, r5, r1\n\
+ adds r0, 0xC0\n\
+ ldrh r0, [r0]\n\
+ cmp r0, 0\n\
+ beq _08042B40\n\
+ adds r0, r1, 0\n\
+ adds r0, 0xA0\n\
+ adds r5, r0\n\
+ adds r6, r5, 0\n\
+ adds r6, 0x2C\n\
+ mov r0, sp\n\
+ adds r1, r6, 0\n\
+ bl StringCompareWithoutExtCtrlCodes\n\
+ cmp r0, 0\n\
+ bne _08042B08\n\
+ ldr r0, _08042B30 @ =gSaveBlock2\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x24\n\
+ bl StringCompareWithoutExtCtrlCodes\n\
+ cmp r0, 0\n\
+ beq _08042B40\n\
+_08042B08:\n\
+ ldr r0, _08042B34 @ =gStringVar1\n\
+ mov r1, sp\n\
+ bl StringCopy\n\
+ ldr r4, _08042B38 @ =gStringVar2\n\
+ adds r1, r5, 0\n\
+ adds r1, 0x24\n\
+ adds r0, r4, 0\n\
+ bl StringCopy\n\
+ ldr r0, _08042B3C @ =gStringVar3\n\
+ adds r1, r6, 0\n\
+ bl StringCopy\n\
+ adds r0, r4, 0\n\
+ bl SanitizeNameString\n\
+ movs r0, 0x1\n\
+ b _08042B42\n\
+ .align 2, 0\n\
+_08042B30: .4byte gSaveBlock2\n\
+_08042B34: .4byte gStringVar1\n\
+_08042B38: .4byte gStringVar2\n\
+_08042B3C: .4byte gStringVar3\n\
+_08042B40:\n\
+ movs r0, 0\n\
+_08042B42:\n\
+ add sp, 0x20\n\
+ pop {r4-r6}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided");
+}
+
+#endif // NONMATCHING
+
+bool8 sub_8042B4C(void)
+{
+ return sub_8042ABC(&gSaveBlock1.daycareData, gSpecialVar_0x8004);
+}
+
+static u8 EggHatchCreateMonSprite(u8 a0, u8 switchID, u8 pokeID)
+{
+ u8 r5 = 0;
+ u8 spriteID = 0;
+ struct Pokemon* mon = NULL;
+
+ if (a0 == 0)
+ {
+ mon = &gPlayerParty[pokeID];
+ r5 = 1;
+ }
+ if (a0 == 1)
+ {
+ mon = &gPlayerParty[pokeID];
+ r5 = 3;
+ }
+ switch (switchID)
+ {
+ case 0:
+ {
+ 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(GetMonSpritePalStruct(mon));
+ }
+ break;
+ case 1:
+ GetMonSpriteTemplate_803C56C(GetMonSpritePalStruct(mon)->tag, r5);
+ spriteID = CreateSprite(&gUnknown_02024E8C, 120, 70, 6);
+ gSprites[spriteID].invisible = 1;
+ gSprites[spriteID].callback = SpriteCallbackDummy;
+ break;
+ }
+ return spriteID;
+}
+
+static void VBlankCB_EggHatch(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void EggHatch(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(Task_EggHatch, 10);
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+}
+
+static void Task_EggHatch(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_EggHatch_0);
+ gFieldCallback = sub_8080990;
+ DestroyTask(taskID);
+ }
+}
+
+static void CB2_EggHatch_0(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ REG_DISPCNT = 0;
+ gEggHatchData = (struct EggHatchData*)(&ewram[0x18000]);
+ gEggHatchData->eggPartyID = gSpecialVar_0x8004;
+ gEggHatchData->eggShardVelocityID = 0;
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetVBlankCallback(VBlankCB_EggHatch);
+ gMain.state++;
+ gSpecialVar_0x8005 = GetCurrentMapMusic();
+ break;
+ case 1:
+ SetUpWindowConfig(&gWindowConfig_81E6F84);
+ InitWindowFromConfig(&gEggHatchData->window, &gWindowConfig_81E6F84);
+ gEggHatchData->tileDataStartOffset = SetTextWindowBaseTileNum(20);
+ LoadTextWindowGraphics(&gEggHatchData->window);
+ gMain.state++;
+ break;
+ case 2:
+ LZDecompressVram(&gUnknown_08D00000, (void*)(VRAM));
+ CpuSet(&gUnknown_08D00524, &ewram[0], 0x800);
+ DmaCopy16(3, &ewram[0], (void*)(VRAM + 0x2800), 0x500);
+ LoadCompressedPalette(&gUnknown_08D004E0, 0, 0x20);
+ gMain.state++;
+ break;
+ case 3:
+ LoadSpriteSheet(&sUnknown_0820A3B0);
+ LoadSpriteSheet(&sUnknown_0820A3B8);
+ LoadSpritePalette(&sUnknown_0820A3C0);
+ gMain.state++;
+ break;
+ case 4:
+ gEggHatchData->eggSpriteID = CreateSprite(&sSpriteTemplate_820A3C8, 0x78, 0x4B, 5);
+ AddHatchedMonToParty(gEggHatchData->eggPartyID);
+ gMain.state++;
+ break;
+ case 5:
+ EggHatchCreateMonSprite(0, 0, gEggHatchData->eggPartyID);
+ gMain.state++;
+ break;
+ case 6:
+ gEggHatchData->pokeSpriteID = EggHatchCreateMonSprite(0, 1, gEggHatchData->eggPartyID);
+ gMain.state++;
+ break;
+ case 7:
+ {
+ u32 offsetRead, offsetWrite;
+ u32 offsetRead2, offsetWrite2;
+ u32 size;
+
+ REG_BG2CNT = 0x4C06;
+ LoadPalette(gUnknown_0820C9F8, 0x10, 0xA0);
+
+ offsetRead = (u32)(&gUnknown_0820CA98);
+ offsetWrite = (VRAM + 0x4000);
+ size = 0x1300;
+ while (TRUE)
+ {
+ DmaCopy16(3, offsetRead, (void *) (offsetWrite), 0x1000);
+ offsetRead += 0x1000;
+ offsetWrite += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaCopy16(3, offsetRead, (void *) (offsetWrite), size);
+ break;
+ }
+ }
+
+ offsetRead2 = (u32)(&gUnknown_0820F798);
+ offsetWrite2 = (u32)(VRAM + 0x6000);
+ DmaCopy16(3, offsetRead2, (void*)(offsetWrite2), 0x1000);
+ gMain.state++;
+ }
+ break;
+ case 8:
+ REG_BG1CNT = 0x501;
+
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+
+ SetMainCallback2(CB2_EggHatch_1);
+ gEggHatchData->CB2_state = 0;
+ break;
+ }
+}
+
+static void EggHatchSetMonNickname(void)
+{
+ SetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_NICKNAME, gStringVar3);
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+}
+
+static void Task_EggHatchPlayBGM(u8 taskID)
+{
+ if (gTasks[taskID].data[0] == 0)
+ StopMapMusic();
+ if (gTasks[taskID].data[0] == 1)
+ PlayBGM(376);
+ if (gTasks[taskID].data[0] > 60)
+ {
+ PlayBGM(377);
+ DestroyTask(taskID);
+ //return; task is destroyed, yet you increment the value?
+ }
+ gTasks[taskID].data[0]++;
+}
+
+static void CB2_EggHatch_1(void)
+{
+ switch (gEggHatchData->CB2_state)
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ REG_DISPCNT = 0x1740;
+ gEggHatchData->CB2_state++;
+ CreateTask(Task_EggHatchPlayBGM, 5);
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ gEggHatchData->CB2_PalCounter = 0;
+ gEggHatchData->CB2_state++;
+ }
+ break;
+ case 2:
+ if (++gEggHatchData->CB2_PalCounter > 30)
+ {
+ gEggHatchData->CB2_state++;
+ gSprites[gEggHatchData->eggSpriteID].callback = SpriteCB_Egg_0;
+ }
+ break;
+ case 3:
+ if (gSprites[gEggHatchData->eggSpriteID].callback == SpriteCallbackDummy)
+ gEggHatchData->CB2_state++;
+ break;
+ case 4:
+ GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_HatchedFromEgg);
+ EggHatchPrintMessage2(gStringVar4);
+ PlayFanfare(371);
+ gEggHatchData->CB2_state++;
+ break;
+ case 5:
+ if (IsFanfareTaskInactive())
+ gEggHatchData->CB2_state++;
+ break;
+ case 6:
+ if (IsFanfareTaskInactive())
+ gEggHatchData->CB2_state++;
+ break;
+ case 7:
+ GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_NickHatchPrompt);
+ EggHatchPrintMessage1(gStringVar4);
+ gEggHatchData->CB2_state++;
+ break;
+ case 8:
+ if (EggHatchUpdateWindowText())
+ {
+ MenuDrawTextWindow(22, 8, 27, 13);
+ InitYesNoMenu(22, 8, 4);
+ gEggHatchData->CB2_state++;
+ }
+ break;
+ case 9:
+ {
+ s8 menuInput;
+ if ((menuInput = ProcessMenuInputNoWrap_()) != -2)
+ {
+ if (menuInput != -1 && menuInput != 1)
+ {
+ u16 species;
+ u8 gender;
+ u32 personality;
+
+ GetMonNick(&gPlayerParty[gEggHatchData->eggPartyID], gStringVar3);
+ species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES);
+ gender = GetMonGender(&gPlayerParty[gEggHatchData->eggPartyID]);
+ personality = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_PERSONALITY, 0);
+ DoNamingScreen(3, gStringVar3, species, gender, personality, EggHatchSetMonNickname);
+ }
+ else
+ gEggHatchData->CB2_state++;
+ }
+ }
+ break;
+ case 10:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gEggHatchData->CB2_state++;
+ break;
+ case 11:
+ if (!gPaletteFade.active)
+ SetMainCallback2(c2_exit_to_overworld_2_switch);
+ break;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void SpriteCB_Egg_0(struct Sprite* sprite)
+{
+ if (++sprite->data0 > 20)
+ {
+ sprite->callback = SpriteCB_Egg_1;
+ sprite->data0 = 0;
+ }
+ else
+ {
+ sprite->data1 = (sprite->data1 + 20) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data1, 1);
+ if (sprite->data0 == 15)
+ {
+ PlaySE(SE_BOWA);
+ StartSpriteAnim(sprite, 1);
+ CreateRandomEggShardSprite();
+ }
+ }
+}
+
+static void SpriteCB_Egg_1(struct Sprite* sprite)
+{
+ if (++sprite->data2 > 30)
+ {
+ if (++sprite->data0 > 20)
+ {
+ sprite->callback = SpriteCB_Egg_2;
+ sprite->data0 = 0;
+ sprite->data2 = 0;
+ }
+ else
+ {
+ sprite->data1 = (sprite->data1 + 20) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data1, 2);
+ if (sprite->data0 == 15)
+ {
+ PlaySE(SE_BOWA);
+ StartSpriteAnim(sprite, 2);
+ }
+ }
+ }
+}
+
+static void SpriteCB_Egg_2(struct Sprite* sprite)
+{
+ if (++sprite->data2 > 30)
+ {
+ if (++sprite->data0 > 38)
+ {
+ u16 species;
+
+ sprite->callback = SpriteCB_Egg_3;
+ sprite->data0 = 0;
+ species = GetMonData(&gPlayerParty[gEggHatchData->eggPartyID], MON_DATA_SPECIES);
+ gSprites[gEggHatchData->pokeSpriteID].pos2.x = 0;
+ gSprites[gEggHatchData->pokeSpriteID].pos2.y = gMonFrontPicCoords[species].y_offset;
+ }
+ else
+ {
+ sprite->data1 = (sprite->data1 + 20) & 0xFF;
+ sprite->pos2.x = Sin(sprite->data1, 2);
+ if (sprite->data0 == 15)
+ {
+ PlaySE(SE_BOWA);
+ StartSpriteAnim(sprite, 2);
+ CreateRandomEggShardSprite();
+ CreateRandomEggShardSprite();
+ }
+ if (sprite->data0 == 30)
+ PlaySE(SE_BOWA);
+ }
+ }
+}
+
+static void SpriteCB_Egg_3(struct Sprite* sprite)
+{
+ if (++sprite->data0 > 50)
+ {
+ sprite->callback = SpriteCB_Egg_4;
+ sprite->data0 = 0;
+ }
+}
+
+static void SpriteCB_Egg_4(struct Sprite* sprite)
+{
+ s16 i;
+ if (sprite->data0 == 0)
+ BeginNormalPaletteFade(-1, -1, 0, 0x10, 0xFFFF);
+ if (sprite->data0 < 4u)
+ {
+ for (i = 0; i <= 3; i++)
+ CreateRandomEggShardSprite();
+ }
+ sprite->data0++;
+ if (!gPaletteFade.active)
+ {
+ PlaySE(SE_TAMAGO);
+ sprite->invisible = 1;
+ sprite->callback = SpriteCB_Egg_5;
+ sprite->data0 = 0;
+ }
+}
+
+static void SpriteCB_Egg_5(struct Sprite* sprite)
+{
+ if (sprite->data0 == 0)
+ {
+ gSprites[gEggHatchData->pokeSpriteID].invisible = 0;
+ StartSpriteAffineAnim(&gSprites[gEggHatchData->pokeSpriteID], 1);
+ }
+ if (sprite->data0 == 8)
+ BeginNormalPaletteFade(-1, -1, 0x10, 0, 0xFFFF);
+ if (sprite->data0 <= 9)
+ gSprites[gEggHatchData->pokeSpriteID].pos1.y -= 1;
+ if (sprite->data0 > 40)
+ sprite->callback = SpriteCallbackDummy;
+ sprite->data0++;
+}
+
+static void SpriteCB_EggShard(struct Sprite* sprite)
+{
+ sprite->data4 += sprite->data1;
+ sprite->data5 += sprite->data2;
+
+ sprite->pos2.x = sprite->data4 / 256;
+ sprite->pos2.y = sprite->data5 / 256;
+
+ sprite->data2 += sprite->data3;
+
+ if (sprite->pos1.y + sprite->pos2.y > sprite->pos1.y + 20 && sprite->data2 > 0)
+ DestroySprite(sprite);
+}
+
+// Converts a number to Q8.8 fixed-point format
+#define Q_8_8(n) ((s16)((n) * 256))
+
+static const s16 sEggShardVelocities[][2] =
+{
+ {Q_8_8(-1.5), Q_8_8(-3.75)},
+ {Q_8_8(-5), Q_8_8(-3)},
+ {Q_8_8(3.5), Q_8_8(-3)},
+ {Q_8_8(-4), Q_8_8(-3.75)},
+ {Q_8_8(2), Q_8_8(-1.5)},
+ {Q_8_8(-0.5), Q_8_8(-6.75)},
+ {Q_8_8(5), Q_8_8(-2.25)},
+ {Q_8_8(-1.5), Q_8_8(-3.75)},
+ {Q_8_8(4.5), Q_8_8(-1.5)},
+ {Q_8_8(-1), Q_8_8(-6.75)},
+ {Q_8_8(4), Q_8_8(-2.25)},
+ {Q_8_8(-3.5), Q_8_8(-3.75)},
+ {Q_8_8(1), Q_8_8(-1.5)},
+ {Q_8_8(-3.515625), Q_8_8(-6.75)},
+ {Q_8_8(4.5), Q_8_8(-2.25)},
+ {Q_8_8(-0.5), Q_8_8(-7.5)},
+ {Q_8_8(1), Q_8_8(-4.5)},
+ {Q_8_8(-2.5), Q_8_8(-2.25)},
+ {Q_8_8(2.5), Q_8_8(-7.5)},
+};
+
+static void CreateRandomEggShardSprite(void)
+{
+ u16 spriteAnimIndex;
+
+ s16 velocity1 = sEggShardVelocities[gEggHatchData->eggShardVelocityID][0];
+ s16 velocity2 = sEggShardVelocities[gEggHatchData->eggShardVelocityID][1];
+ gEggHatchData->eggShardVelocityID++;
+ spriteAnimIndex = Random() % 4;
+ CreateEggShardSprite(120, 60, velocity1, velocity2, 100, spriteAnimIndex);
+}
+
+static void CreateEggShardSprite(u8 x, u8 y, s16 data1, s16 data2, s16 data3, u8 spriteAnimIndex)
+{
+ u8 spriteID = CreateSprite(&sSpriteTemplate_820A418, x, y, 4);
+ gSprites[spriteID].data1 = data1;
+ gSprites[spriteID].data2 = data2;
+ gSprites[spriteID].data3 = data3;
+ StartSpriteAnim(&gSprites[spriteID], spriteAnimIndex);
+}
+
+static void EggHatchPrintMessage1(u8* src)
+{
+ sub_8002EB0(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15);
+}
+
+static void EggHatchPrintMessage2(u8* src)
+{
+ sub_8003460(&gEggHatchData->window, src, gEggHatchData->tileDataStartOffset, 3, 15);
+}
+
+static bool8 EggHatchUpdateWindowText(void)
+{
+ return sub_80035AC(&gEggHatchData->window);
+}
diff --git a/src/scene/evolution_graphics.c b/src/scene/evolution_graphics.c
new file mode 100644
index 000000000..1fd5bf8fa
--- /dev/null
+++ b/src/scene/evolution_graphics.c
@@ -0,0 +1,614 @@
+#include "global.h"
+#include "evolution_graphics.h"
+#include "sprite.h"
+#include "trig.h"
+#include "rng.h"
+#include "decompress.h"
+#include "task.h"
+#include "sound.h"
+#include "songs.h"
+#include "palette.h"
+
+// this file's functions
+static void EvoSparkle_DummySpriteCb(struct Sprite* sprite);
+static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID);
+static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID);
+static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskID);
+static void EvoTask_BeginPreSparklesSet2(u8 taskID);
+static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID);
+static void EvoTask_DestroyPreSet2Task(u8 taskID);
+static void EvoTask_BeginPostSparklesSet1(u8 taskID);
+static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID);
+static void EvoTask_DestroyPostSet1Task(u8 taskID);
+static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID);
+static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID);
+static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID);
+static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID);
+static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID);
+
+static void sub_8149FC8(u8 taskID);
+static void sub_8149FEC(u8 taskID);
+static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID);
+static void PreEvoInVisible_PostEvoVisible_KillTask(u8 taskID);
+static void sub_814A03C(u8 taskID);
+
+// const data
+static const u16 sEvoSparklePalette[] = INCBIN_U16("graphics/misc/evo_sparkle.gbapal");
+static const u8 sEvoSparkleTiles[] = INCBIN_U8("graphics/misc/evo_sparkle.4bpp.lz");
+
+static const struct CompressedSpriteSheet sEvoSparkleSpriteSheets[] =
+{
+ {sEvoSparkleTiles, 0x20, 1001},
+ {NULL, 0, 0}
+};
+static const struct SpritePalette sEvoSparkleSpritePals[] =
+{
+ {sEvoSparklePalette, 1001},
+ {NULL, 0}
+};
+
+static const struct OamData sOamData_EvoSparkle =
+{
+ .y = 160,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 1,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_EvoSparkle[] =
+{
+ ANIMCMD_FRAME(0, 8),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpriteAnimTable_EvoSparkle[] =
+{
+ sSpriteAnim_EvoSparkle,
+};
+
+static const struct SpriteTemplate sEvoSparkleSpriteTemplate =
+{
+ .tileTag = 1001,
+ .paletteTag = 1001,
+ .oam = &sOamData_EvoSparkle,
+ .anims = sSpriteAnimTable_EvoSparkle,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = EvoSparkle_DummySpriteCb
+};
+
+static const s16 sEvoSparkleMatricies[] =
+{
+ 0x3C0, 0x380, 0x340, 0x300, 0x2C0, 0x280, 0x240, 0x200, 0x1C0,
+ 0x180, 0x140, 0x100, -4, 0x10, -3, 0x30, -2, 0x50,
+ -1, 0x70, 0x1, 0x70, 0x2, 0x50, 0x3, 0x30, 0x4, 0x10
+};
+
+// code
+
+static void EvoSparkle_DummySpriteCb(struct Sprite* sprite)
+{
+
+}
+
+static void SetEvoSparklesMatrices(void)
+{
+ u16 i;
+ for (i = 0; i < 12; i++)
+ {
+ SetOamMatrix(20 + i, sEvoSparkleMatricies[i], 0, 0, sEvoSparkleMatricies[i]);
+ }
+}
+
+static void SpriteCB_PreEvoSparkleSet1(struct Sprite* sprite)
+{
+ if (sprite->pos1.y > 8)
+ {
+ u8 matrixNum;
+
+ sprite->pos1.y = 88 - (sprite->data7 * sprite->data7) / 80;
+ sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5) / 4;
+ sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5);
+ sprite->data6 += 4;
+ if (sprite->data7 & 1)
+ sprite->data5--;
+ sprite->data7++;
+ if (sprite->pos2.y > 0)
+ sprite->subpriority = 1;
+ else
+ sprite->subpriority = 20;
+ matrixNum = sprite->data5 / 4 + 20;
+ if (matrixNum > 31)
+ matrixNum = 31;
+ sprite->oam.matrixNum = matrixNum;
+ }
+ else
+ DestroySprite(sprite);
+}
+
+static void CreatePreEvoSparkleSet1(u8 arg0)
+{
+ u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 88, 0);
+ if (spriteID != MAX_SPRITES)
+ {
+ gSprites[spriteID].data5 = 48;
+ gSprites[spriteID].data6 = arg0;
+ gSprites[spriteID].data7 = 0;
+ gSprites[spriteID].oam.affineMode = 1;
+ gSprites[spriteID].oam.matrixNum = 31;
+ gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet1;
+ }
+}
+
+static void SpriteCB_PreEvoSparkleSet2(struct Sprite* sprite)
+{
+ if (sprite->pos1.y < 88)
+ {
+ sprite->pos1.y = 8 + (sprite->data7 * sprite->data7) / 5;
+ sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5) / 4;
+ sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5);
+ sprite->data5 = 8 + Sin((u8)(sprite->data7 * 4), 40);
+ sprite->data7++;
+ }
+ else
+ DestroySprite(sprite);
+}
+
+static void CreatePreEvoSparkleSet2(u8 arg0)
+{
+ u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 8, 0);
+ if (spriteID != MAX_SPRITES)
+ {
+ gSprites[spriteID].data5 = 8;
+ gSprites[spriteID].data6 = arg0;
+ gSprites[spriteID].data7 = 0;
+ gSprites[spriteID].oam.affineMode = 1;
+ gSprites[spriteID].oam.matrixNum = 25;
+ gSprites[spriteID].subpriority = 1;
+ gSprites[spriteID].callback = SpriteCB_PreEvoSparkleSet2;
+ }
+}
+
+static void SpriteCB_PostEvoSparkleSet1(struct Sprite* sprite)
+{
+ if (sprite->data5 > 8)
+ {
+ sprite->pos2.y = Sin((u8)(sprite->data6), sprite->data5);
+ sprite->pos2.x = Cos((u8)(sprite->data6), sprite->data5);
+ sprite->data5 -= sprite->data3;
+ sprite->data6 += 4;
+ }
+ else
+ DestroySprite(sprite);
+}
+
+static void CreatePostEvoSparkleSet1(u8 arg0, u8 arg1)
+{
+ u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0);
+ if (spriteID != MAX_SPRITES)
+ {
+ gSprites[spriteID].data3 = arg1;
+ gSprites[spriteID].data5 = 120;
+ gSprites[spriteID].data6 = arg0;
+ gSprites[spriteID].data7 = 0;
+ gSprites[spriteID].oam.affineMode = 1;
+ gSprites[spriteID].oam.matrixNum = 31;
+ gSprites[spriteID].subpriority = 1;
+ gSprites[spriteID].callback = SpriteCB_PostEvoSparkleSet1;
+ }
+}
+
+static void SpriteCB_PostEvoSparkleSet2(struct Sprite* sprite)
+{
+ if (!(sprite->data7 & 3))
+ sprite->pos1.y++;
+ if (sprite->data6 < 128)
+ {
+ u8 matrixNum;
+
+ sprite->pos2.y = -Sin((u8)(sprite->data6), sprite->data5);
+ sprite->pos1.x = 120 + (sprite->data3 * sprite->data7) / 3;
+ sprite->data6++;
+ matrixNum = 31 - (sprite->data6 * 12 / 128);
+ if (sprite->data6 > 64)
+ sprite->subpriority = 1;
+ else
+ {
+ sprite->invisible = 0;
+ sprite->subpriority = 20;
+ if (sprite->data6 > 112 && sprite->data6 & 1)
+ sprite->invisible = 1;
+ }
+ if (matrixNum < 20)
+ matrixNum = 20;
+ sprite->oam.matrixNum = matrixNum;
+ sprite->data7++;
+ }
+ else
+ DestroySprite(sprite);
+}
+
+static void CreatePostEvoSparkleSet2(u8 arg0)
+{
+ u8 spriteID = CreateSprite(&sEvoSparkleSpriteTemplate, 120, 56, 0);
+ if (spriteID != MAX_SPRITES)
+ {
+ gSprites[spriteID].data3 = 3 - (Random() % 7);
+ gSprites[spriteID].data5 = 48 + (Random() & 0x3F);
+ gSprites[spriteID].data7 = 0;
+ gSprites[spriteID].oam.affineMode = 1;
+ gSprites[spriteID].oam.matrixNum = 31;
+ gSprites[spriteID].subpriority = 20;
+ gSprites[spriteID].callback = SpriteCB_PostEvoSparkleSet2;
+ }
+}
+
+void LoadEvoSparkleSpriteAndPal(void)
+{
+ LoadCompressedObjectPic(&sEvoSparkleSpriteSheets[0]);
+ LoadSpritePalettes(sEvoSparkleSpritePals);
+}
+
+#define tFrameCounter data[15]
+
+u8 LaunchTask_PreEvoSparklesSet1(u16 arg0)
+{
+ u8 taskID = CreateTask(EvoTask_BeginPreSet1_FadeAndPlaySE, 0);
+ gTasks[taskID].data[1] = arg0;
+ return taskID;
+}
+
+static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID)
+{
+ SetEvoSparklesMatrices();
+ gTasks[taskID].tFrameCounter = 0;
+ BeginNormalPaletteFade(3 << gTasks[taskID].data[1], 0xA, 0, 0x10, 0x7FFF);
+ gTasks[taskID].func = EvoTask_CreatePreEvoSparkleSet1;
+ PlaySE(SE_W025);
+}
+
+static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCounter < 64)
+ {
+ if (!(gTasks[taskID].tFrameCounter & 7))
+ {
+ u8 i;
+ for (i = 0; i < 4; i++)
+ CreatePreEvoSparkleSet1((0x78 & gTasks[taskID].tFrameCounter) * 2 + i * 64);
+ }
+ gTasks[taskID].tFrameCounter++;
+ }
+ else
+ {
+ gTasks[taskID].tFrameCounter = 96;
+ gTasks[taskID].func = EvoTask_WaitForPre1SparklesToGoUp;
+ }
+}
+
+static void EvoTask_WaitForPre1SparklesToGoUp(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCounter != 0)
+ gTasks[taskID].tFrameCounter--;
+ else
+ DestroyTask(taskID);
+}
+
+u8 LaunchTask_PreEvoSparklesSet2(void)
+{
+ return CreateTask(EvoTask_BeginPreSparklesSet2, 0);
+}
+
+static void EvoTask_BeginPreSparklesSet2(u8 taskID)
+{
+ SetEvoSparklesMatrices();
+ gTasks[taskID].tFrameCounter = 0;
+ gTasks[taskID].func = EvoTask_CreatePreEvoSparklesSet2;
+ PlaySE(SE_W062B);
+}
+
+static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCounter < 96)
+ {
+ if (gTasks[taskID].tFrameCounter < 6)
+ {
+ u8 i;
+ for (i = 0; i < 9; i++)
+ CreatePreEvoSparkleSet2(i * 16);
+ }
+ gTasks[taskID].tFrameCounter++;
+ }
+ else
+ gTasks[taskID].func = EvoTask_DestroyPreSet2Task;
+}
+
+static void EvoTask_DestroyPreSet2Task(u8 taskID)
+{
+ DestroyTask(taskID);
+}
+
+u8 LaunchTask_PostEvoSparklesSet1(void)
+{
+ return CreateTask(EvoTask_BeginPostSparklesSet1, 0);
+}
+
+static void EvoTask_BeginPostSparklesSet1(u8 taskID)
+{
+ SetEvoSparklesMatrices();
+ gTasks[taskID].tFrameCounter = 0;
+ gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet1;
+ PlaySE(SE_REAPOKE);
+}
+
+static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCounter < 48)
+ {
+ if (gTasks[taskID].tFrameCounter == 0)
+ {
+ u8 i;
+ for (i = 0; i < 16; i++)
+ CreatePostEvoSparkleSet1(i * 16, 4);
+ }
+ if (gTasks[taskID].tFrameCounter == 32)
+ {
+ u8 i;
+ for (i = 0; i < 16; i++)
+ CreatePostEvoSparkleSet1(i * 16, 8);
+ }
+ gTasks[taskID].tFrameCounter++;
+ }
+ else
+ gTasks[taskID].func = EvoTask_DestroyPostSet1Task;
+}
+
+static void EvoTask_DestroyPostSet1Task(u8 taskID)
+{
+ DestroyTask(taskID);
+}
+
+u8 LaunchTask_PostEvoSparklesSet2AndFlash(u16 species)
+{
+ u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash, 0);
+ gTasks[taskID].data[2] = species;
+ return taskID;
+}
+
+static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID)
+{
+ SetEvoSparklesMatrices();
+ gTasks[taskID].tFrameCounter = 0;
+ CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30);
+ BeginNormalPaletteFade(0xFFF9001C, 0, 0, 0x10, 0x7FFF);
+ gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash;
+ PlaySE(SE_W080);
+}
+
+static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCounter < 128)
+ {
+ u8 i;
+ switch (gTasks[taskID].tFrameCounter)
+ {
+ default:
+ if (gTasks[taskID].tFrameCounter < 50)
+ CreatePostEvoSparkleSet2(Random() & 7);
+ break;
+ case 0:
+ for (i = 0; i < 8; i++)
+ CreatePostEvoSparkleSet2(i);
+ break;
+ case 32:
+ BeginNormalPaletteFade(0xFFFF001C, 0x10, 0x10, 0, 0x7FFF);
+ break;
+ }
+ gTasks[taskID].tFrameCounter++;
+ }
+ else
+ gTasks[taskID].func = EvoTask_DestroyPostSet2AndFlashTask;
+}
+
+static void EvoTask_DestroyPostSet2AndFlashTask(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ DestroyTask(taskID);
+}
+
+u8 LaunchTask_PostEvoSparklesSet2AndFlash_Trade(u16 species)
+{
+ u8 taskID = CreateTask(EvoTask_BeginPostSparklesSet2_AndFlash_Trade, 0);
+ gTasks[taskID].data[2] = species;
+ return taskID;
+}
+
+static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID)
+{
+ SetEvoSparklesMatrices();
+ gTasks[taskID].tFrameCounter = 0;
+ CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30);
+ BeginNormalPaletteFade(0xFFF90001, 0, 0, 0x10, 0x7FFF);
+ gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade;
+ PlaySE(SE_W080);
+}
+
+static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCounter < 128)
+ {
+ u8 i;
+ switch (gTasks[taskID].tFrameCounter)
+ {
+ default:
+ if (gTasks[taskID].tFrameCounter < 50)
+ CreatePostEvoSparkleSet2(Random() & 7);
+ break;
+ case 0:
+ for (i = 0; i < 8; i++)
+ CreatePostEvoSparkleSet2(i);
+ break;
+ case 32:
+ BeginNormalPaletteFade(0xFFFF0001, 0x10, 0x10, 0, 0x7FFF);
+ break;
+ }
+ gTasks[taskID].tFrameCounter++;
+ }
+ else
+ gTasks[taskID].func = EvoTask_DestroyPostSet2AndFlashTask;
+}
+
+#undef tFrameCounter
+
+static void PokeEvoSprite_DummySpriteCB(struct Sprite* sprite)
+{
+
+}
+
+#define tPreEvoSpriteID data[1]
+#define tPostEvoSpriteID data[2]
+#define tEvoStopped data[8]
+
+u8 sub_8149E7C(u8 preEvoSpriteID, u8 postEvoSpriteID)
+{
+ u16 i;
+ u16 stack[16];
+ u8 taskID;
+ s32 toDiv;
+
+ for (i = 0; i < 16; i++)
+ stack[i] = 0x7FFF;
+
+ taskID = CreateTask(sub_8149FC8, 0);
+ gTasks[taskID].tPreEvoSpriteID = preEvoSpriteID;
+ gTasks[taskID].tPostEvoSpriteID = postEvoSpriteID;
+ gTasks[taskID].data[3] = 256;
+ gTasks[taskID].data[4] = 16;
+
+ toDiv = 65536;
+ SetOamMatrix(30, 256, 0, 0, 256);
+ SetOamMatrix(31, toDiv / gTasks[taskID].data[4], 0, 0, toDiv / gTasks[taskID].data[4]);
+
+ gSprites[preEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB;
+ gSprites[preEvoSpriteID].oam.affineMode = 1;
+ gSprites[preEvoSpriteID].oam.matrixNum = 30;
+ gSprites[preEvoSpriteID].invisible = 0;
+ CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[preEvoSpriteID].oam.paletteNum * 16)], 16);
+
+ gSprites[postEvoSpriteID].callback = PokeEvoSprite_DummySpriteCB;
+ gSprites[postEvoSpriteID].oam.affineMode = 1;
+ gSprites[postEvoSpriteID].oam.matrixNum = 31;
+ gSprites[postEvoSpriteID].invisible = 0;
+ CpuSet(stack, &gPlttBufferFaded[0x100 + (gSprites[postEvoSpriteID].oam.paletteNum * 16)], 16);
+
+ gTasks[taskID].tEvoStopped = FALSE;
+ return taskID;
+}
+
+static void sub_8149FC8(u8 taskID)
+{
+ gTasks[taskID].data[5] = 0;
+ gTasks[taskID].data[6] = 8;
+ gTasks[taskID].func = sub_8149FEC;
+}
+
+static void sub_8149FEC(u8 taskID)
+{
+ if (gTasks[taskID].tEvoStopped)
+ PreEvoVisible_PostEvoInvisible_KillTask(taskID);
+ else if (gTasks[taskID].data[6] == 128)
+ PreEvoInVisible_PostEvoVisible_KillTask(taskID);
+ else
+ {
+ gTasks[taskID].data[6] += 2;
+ gTasks[taskID].data[5] ^= 1;
+ gTasks[taskID].func = sub_814A03C;
+ }
+}
+
+static void sub_814A03C(u8 taskID)
+{
+ if (gTasks[taskID].tEvoStopped)
+ gTasks[taskID].func = PreEvoVisible_PostEvoInvisible_KillTask;
+ else
+ {
+ u16 oamMatrixArg;
+ u8 r6 = 0;
+ if (gTasks[taskID].data[5] == 0)
+ {
+ if (gTasks[taskID].data[3] < 256 - gTasks[taskID].data[6])
+ gTasks[taskID].data[3] += gTasks[taskID].data[6];
+ else
+ {
+ gTasks[taskID].data[3] = 256;
+ r6++;
+ }
+ if (gTasks[taskID].data[4] > 16 + gTasks[taskID].data[6])
+ gTasks[taskID].data[4] -= gTasks[taskID].data[6];
+ else
+ {
+ gTasks[taskID].data[4] = 16;
+ r6++;
+ }
+ }
+ else
+ {
+ if (gTasks[taskID].data[4] < 256 - gTasks[taskID].data[6])
+ gTasks[taskID].data[4] += gTasks[taskID].data[6];
+ else
+ {
+ gTasks[taskID].data[4] = 256;
+ r6++;
+ }
+ if (gTasks[taskID].data[3] > 16 + gTasks[taskID].data[6])
+ gTasks[taskID].data[3] -= gTasks[taskID].data[6];
+ else
+ {
+ gTasks[taskID].data[3] = 16;
+ r6++;
+ }
+ }
+ oamMatrixArg = 65536 / gTasks[taskID].data[3];
+ SetOamMatrix(30, oamMatrixArg, 0, 0, oamMatrixArg);
+
+ oamMatrixArg = 65536 / gTasks[taskID].data[4];
+ SetOamMatrix(31, oamMatrixArg, 0, 0, oamMatrixArg);
+ if (r6 == 2)
+ gTasks[taskID].func = sub_8149FEC;
+ }
+}
+
+static void PreEvoInVisible_PostEvoVisible_KillTask(u8 taskID)
+{
+ gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = 0;
+ gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0;
+ gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = 1;
+
+ gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = 0;
+ gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0;
+ gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = 0;
+
+ DestroyTask(taskID);
+}
+
+static void PreEvoVisible_PostEvoInvisible_KillTask(u8 taskID)
+{
+ gSprites[gTasks[taskID].tPreEvoSpriteID].oam.affineMode = 0;
+ gSprites[gTasks[taskID].tPreEvoSpriteID].oam.matrixNum = 0;
+ gSprites[gTasks[taskID].tPreEvoSpriteID].invisible = 0;
+
+ gSprites[gTasks[taskID].tPostEvoSpriteID].oam.affineMode = 0;
+ gSprites[gTasks[taskID].tPostEvoSpriteID].oam.matrixNum = 0;
+ gSprites[gTasks[taskID].tPostEvoSpriteID].invisible = 1;
+
+ DestroyTask(taskID);
+}
diff --git a/src/scene/evolution_scene.c b/src/scene/evolution_scene.c
new file mode 100644
index 000000000..24168dc56
--- /dev/null
+++ b/src/scene/evolution_scene.c
@@ -0,0 +1,3966 @@
+#include "global.h"
+#include "task.h"
+#include "evolution_scene.h"
+#include "evolution_graphics.h"
+#include "palette.h"
+#include "main.h"
+#include "text.h"
+#include "text_window.h"
+#include "pokemon.h"
+#include "string_util.h"
+#include "battle.h"
+#include "unknown_task.h"
+#include "data2.h"
+#include "decompress.h"
+#include "m4a.h"
+#include "trade.h"
+#include "menu.h"
+#include "pokedex.h"
+#include "species.h"
+#include "sound.h"
+#include "songs.h"
+#include "overworld.h"
+#include "battle_message.h"
+#include "pokemon_summary_screen.h"
+#include "menu_cursor.h"
+#include "strings2.h"
+
+struct EvoInfo
+{
+ u8 preEvoSpriteID;
+ u8 postEvoSpriteID;
+ u8 evoTaskID;
+ u8 field_3;
+
+ u8 unk4[0x40];
+ u8 unk44[0x40];
+ u8 unk84[0x40];
+
+ u8 unkC4[0x40][0x20]; // 0x20148C4
+ u8 unk8C4[0x40][0x20]; // 0x20150C4
+ u8 unk10C4[0x40][0x20]; // 0x20158C4
+ u8 unk18C4[0x40][0x20]; // 0x20160C4
+ u8 unk20C4[0x40][0x20]; // 0x20168C4
+ u8 unk28C4[0x40][0x20]; // 0x20170C4
+ u8 unk30C4[0x40][0x20]; // 0x20178C4
+ u8 unk38C4[0x40][0x20]; // 0x20180C4
+
+ u8 *unk40C4[0x40][0x20]; // 0x20188C4
+
+ u16 unk60C4[0x40][0x20]; // 0x201A8C4
+ u16 unk70C4[0x40][0x20]; // 0x201B8C4
+ u16 unk80C4[0x40][0x20]; // 0x201C8C4
+ u16 unk90C4[0x40][0x20]; // 0x201D8C4
+
+ u8 unkA0C4; // 0x201E8C4
+};
+
+#define sEvoInfo ((*(struct EvoInfo*)(ewram + 0x14800)))
+
+void EvolutionRenameMon(struct Pokemon *mon, u16 oldSpecies, u16 newSpecies);
+void sub_8024CEC(void);
+void sub_8023A80(void);
+void sub_802BC6C(void);
+void sub_8023AD8(void);
+void nullsub_6(void);
+bool32 IsHMMove2(u16 move);
+
+extern struct Window gUnknown_03004210;
+extern u16 gUnknown_030042A4;
+extern u16 gUnknown_030042A0;
+extern u16 gUnknown_030042C0;
+extern u16 gUnknown_030041B4;
+extern u16 gUnknown_03004288;
+extern u16 gUnknown_03004280;
+extern u16 gUnknown_030041B0;
+extern u16 gUnknown_030041B8;
+extern u8 gBattleTerrain;
+extern u8 gReservedSpritePaletteCount;
+extern u16 gMoveToLearn;
+extern struct SpriteTemplate gUnknown_02024E8C;
+extern u8 gUnk_2009000[]; // won't match if I 'ewram' it
+extern bool8 gAffineAnimsDisabled;
+extern u8 gDisplayedStringBattle[];
+extern u8 gBattleTextBuff2[];
+
+extern u8 gBattleCommunication[];
+#define sEvoCursorPos gBattleCommunication[1] // when learning a new move
+#define sEvoGraphicsTaskID gBattleCommunication[2]
+
+extern const u8 gUnknown_08400C4A[];
+extern const u8 gUnknown_08400C60[];
+extern const u8 gUnknown_08400C8D[];
+extern void * const gUnknown_081FAF4C[];
+extern const u8* const gBattleStringsTable[];
+
+// this file's functions
+static void Task_EvolutionScene(u8 taskID);
+static void Task_TradeEvolutionScene(u8 taskID);
+static void CB2_EvolutionSceneUpdate(void);
+static void CB2_TradeEvolutionSceneUpdate(void);
+static void EvoDummyFunc(void);
+static void EvoDummyFunc2(void);
+static void VBlankCB_EvolutionScene(void);
+static void VBlankCB_TradeEvolutionScene(void);
+static void sub_81150D8(void);
+
+// iwram common
+MainCallback gCB2_AfterEvolution;
+
+// const data
+static const u8 sUnknownShedinjaJpnString[] = _("ヌケニン");
+static const u8 sUnusedString0[] = _("{COLOR DARK_GREY}{HIGHLIGHT WHITE2}{SHADOW LIGHT_GREY}");
+static const u8 sUnusedString1[] = _("▶\n ");
+static const u8 sUnusedString2[] = _(" \n▶");
+static const u8 sUnusedString3[] = _(" \n ");
+static const u8 sPadding[9] = {0};
+
+// code
+
+static void CB2_BeginEvolutionScene(void)
+{
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+#define tState data[0]
+#define tMonPtrHI data[1]
+#define tMonPtrLO data[2]
+#define tPreEvoSpecies data[3]
+#define tPostEvoSpecies data[4]
+#define tCanStop data[5] // in first fast data[5] only checks that
+#define tBits data[5] // in the second task, it works as a bitfield
+#define tLearnsFirstMove data[6]
+#define tLearnMoveState data[8]
+#define tData9 data[9]
+#define tData10 data[10]
+#define tEvoWasStopped data[11]
+#define tPartyID data[12]
+
+#define TASK_BIT_CAN_STOP 0x1
+#define TASK_BIT_LEARN_MOVE 0x80
+
+static void Task_BeginEvolutionScene(u8 taskID)
+{
+ struct Pokemon* mon = NULL;
+ switch (gTasks[taskID].tState)
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].tState++;
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ u16 speciesToEvolve;
+ bool8 canStopEvo;
+ u8 partyID;
+
+ mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10));
+ speciesToEvolve = gTasks[taskID].tPostEvoSpecies;
+ canStopEvo = gTasks[taskID].tCanStop;
+ partyID = gTasks[taskID].tPartyID;
+
+ DestroyTask(taskID);
+ EvolutionScene(mon, speciesToEvolve, canStopEvo, partyID);
+ }
+ break;
+ }
+}
+
+void BeginEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID)
+{
+ u8 taskID = CreateTask(Task_BeginEvolutionScene, 0);
+ gTasks[taskID].tState = 0;
+ gTasks[taskID].tMonPtrHI = (u32)(mon);
+ gTasks[taskID].tMonPtrLO = (u32)(mon) >> 0x10;
+ gTasks[taskID].tPostEvoSpecies = speciesToEvolve;
+ gTasks[taskID].tCanStop = canStopEvo;
+ gTasks[taskID].tPartyID = partyID;
+ SetMainCallback2(CB2_BeginEvolutionScene);
+}
+
+void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo, u8 partyID)
+{
+ u8 name[20];
+ u16 currSpecies;
+ u32 TiD, PiD;
+ const struct CompressedSpritePalette** pokePal;
+ u8 ID;
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
+
+ REG_MOSAIC = 0;
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_WININ = 0;
+ REG_WINOUT = 0;
+
+ SetUpWindowConfig(&gWindowConfig_81E6C58);
+ ResetPaletteFade();
+
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ gUnknown_030041B0 = 256;
+ gUnknown_030041B8 = 0;
+
+ InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
+ gBattleTerrain = BATTLE_TERRAIN_PLAIN;
+
+ sub_800D6D4();
+ sub_800DAB8();
+ ResetSpriteData();
+ remove_some_task();
+ ResetTasks();
+ FreeAllSpritePalettes();
+
+ gReservedSpritePaletteCount = 4;
+
+ GetMonData(mon, MON_DATA_NICKNAME, name);
+ StringCopy10(gStringVar1, name);
+ StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]);
+
+ // preEvo sprite
+ currSpecies = GetMonData(mon, MON_DATA_SPECIES);
+ TiD = GetMonData(mon, MON_DATA_OT_ID);
+ PiD = GetMonData(mon, MON_DATA_PERSONALITY);
+ DecompressPicFromTable_2(&gMonFrontPicTable[currSpecies],
+ gMonFrontPicCoords[currSpecies].coords,
+ gMonFrontPicCoords[currSpecies].y_offset,
+ (void*)(0x2000000),
+ gUnknown_081FAF4C[1], currSpecies);
+ pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(currSpecies, TiD, PiD);
+ LoadCompressedPalette(*pokePal, 0x110, 0x20);
+
+ GetMonSpriteTemplate_803C56C(currSpecies, 1);
+ gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.preEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+
+ gSprites[ID].callback = nullsub_37;
+ gSprites[ID].oam.paletteNum = 1;
+ gSprites[ID].invisible = 1;
+
+ // postEvo sprite
+ DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
+ gMonFrontPicCoords[speciesToEvolve].coords,
+ gMonFrontPicCoords[speciesToEvolve].y_offset,
+ (void*)(0x2000000),
+ gUnknown_081FAF4C[3], speciesToEvolve);
+ pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD);
+ LoadCompressedPalette(*pokePal, 0x120, 0x20);
+
+ GetMonSpriteTemplate_803C56C(speciesToEvolve, 3);
+ gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+ gSprites[ID].callback = nullsub_37;
+ gSprites[ID].oam.paletteNum = 2;
+ gSprites[ID].invisible = 1;
+
+ LoadEvoSparkleSpriteAndPal();
+
+ sEvoInfo.evoTaskID = ID = CreateTask(Task_EvolutionScene, 0);
+ gTasks[ID].tState = 0;
+ gTasks[ID].tPreEvoSpecies = currSpecies;
+ gTasks[ID].tPostEvoSpecies = speciesToEvolve;
+ gTasks[ID].tMonPtrHI = (u32)(mon);
+ gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10;
+ gTasks[ID].tCanStop = canStopEvo;
+ gTasks[ID].tLearnsFirstMove = TRUE;
+ gTasks[ID].tEvoWasStopped = FALSE;
+ gTasks[ID].tPartyID = partyID;
+
+ memcpy(gUnk_2009000, &gPlttBufferUnfaded[0x20], 0x60);
+
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP;
+ SetHBlankCallback(EvoDummyFunc);
+ SetVBlankCallback(VBlankCB_EvolutionScene);
+ m4aMPlayAllStop();
+ SetMainCallback2(CB2_EvolutionSceneUpdate);
+}
+
+static void CB2_EvolutionSceneLoadGraphics(void)
+{
+ u8 ID;
+ const struct CompressedSpritePalette** pokePal;
+ u16 postEvoSpecies;
+ u32 TiD, PiD;
+ struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoInfo.evoTaskID].tPartyID];
+
+ postEvoSpecies = gTasks[sEvoInfo.evoTaskID].tPostEvoSpecies;
+ TiD = GetMonData(Mon, MON_DATA_OT_ID);
+ PiD = GetMonData(Mon, MON_DATA_PERSONALITY);
+
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ CpuFill32(0, (void*)(VRAM), VRAM_SIZE);
+
+ REG_MOSAIC = 0;
+ REG_WIN0H = 0;
+ REG_WIN0V = 0;
+ REG_WIN1H = 0;
+ REG_WIN1V = 0;
+ REG_WININ = 0;
+ REG_WINOUT = 0;
+ SetUpWindowConfig(&gWindowConfig_81E6C58);
+ ResetPaletteFade();
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ gUnknown_030041B0 = 256;
+ gUnknown_030041B8 = 0;
+
+ InitWindowFromConfig(&gUnknown_03004210, &gWindowConfig_81E6C58);
+ gBattleTerrain = BATTLE_TERRAIN_PLAIN;
+
+ sub_800D6D4();
+ sub_800DAB8();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+
+ DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
+ gMonFrontPicCoords[postEvoSpecies].coords,
+ gMonFrontPicCoords[postEvoSpecies].y_offset,
+ (void*)(0x2000000),
+ gUnknown_081FAF4C[3], postEvoSpecies);
+ pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD);
+ LoadCompressedPalette(*pokePal, 0x120, 0x20);
+
+ GetMonSpriteTemplate_803C56C(postEvoSpecies, 3);
+ gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+
+ gSprites[ID].callback = nullsub_37;
+ gSprites[ID].oam.paletteNum = 2;
+
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_1D_MAP;
+ SetHBlankCallback(EvoDummyFunc);
+ SetVBlankCallback(VBlankCB_EvolutionScene);
+ SetMainCallback2(CB2_EvolutionSceneUpdate);
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+}
+
+static void CB2_TradeEvolutionSceneLoadGraphics(void)
+{
+ struct Pokemon* Mon = &gPlayerParty[gTasks[sEvoInfo.evoTaskID].tPartyID];
+ u16 postEvoSpecies = gTasks[sEvoInfo.evoTaskID].tPostEvoSpecies;
+
+ switch (gMain.state)
+ {
+ case 0:
+ REG_DISPCNT = 0;
+ SetHBlankCallback(NULL);
+ SetVBlankCallback(NULL);
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 4;
+ gUnknown_030042A4 = 0;
+ gUnknown_030042A0 = 0;
+ gUnknown_030042C0 = 0;
+ gUnknown_030041B4 = 0;
+ gUnknown_03004288 = 0;
+ gUnknown_03004280 = 0;
+ gUnknown_030041B0 = 256;
+ gUnknown_030041B8 = 0;
+ gMain.state++;
+ break;
+ case 1:
+ SetUpWindowConfig(&gWindowConfig_81E6F84);
+ InitWindowFromConfig(&gUnknown_03004828->window, &gWindowConfig_81E6F84);
+ gMain.state++;
+ break;
+ case 2:
+ LoadTextWindowGraphics(&gUnknown_03004828->window);
+ gUnknown_03004828->textWindowBaseTileNum = SetTextWindowBaseTileNum(2);
+ LoadTextWindowGraphics(&gUnknown_03004828->window);
+ MenuZeroFillScreen();
+ ResetPaletteFade();
+ gMain.state++;
+ SetHBlankCallback(EvoDummyFunc);
+ SetVBlankCallback(VBlankCB_TradeEvolutionScene);
+ break;
+ case 3:
+ sub_804E22C();
+ gMain.state++;
+ break;
+ case 4:
+ {
+ const struct CompressedSpritePalette** pokePal;
+ u32 TiD = GetMonData(Mon, MON_DATA_OT_ID);
+ u32 PiD = GetMonData(Mon, MON_DATA_PERSONALITY);
+ DecompressPicFromTable_2(&gMonFrontPicTable[postEvoSpecies],
+ gMonFrontPicCoords[postEvoSpecies].coords,
+ gMonFrontPicCoords[postEvoSpecies].y_offset,
+ (void*)(0x2000000),
+ gUnknown_081FAF4C[3], postEvoSpecies);
+ pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(postEvoSpecies, TiD, PiD);
+ LoadCompressedPalette(*pokePal, 0x120, 0x20);
+ gMain.state++;
+ }
+ break;
+ case 5:
+ {
+ u8 ID;
+
+ GetMonSpriteTemplate_803C56C(postEvoSpecies, 3);
+ gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+
+ gSprites[ID].callback = nullsub_37;
+ gSprites[ID].oam.paletteNum = 2;
+ gMain.state++;
+ }
+ break;
+ case 6:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ SetMainCallback2(CB2_TradeEvolutionSceneUpdate);
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP;
+ break;
+ }
+}
+
+void TradeEvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, u8 preEvoSpriteID, u8 partyID)
+{
+ u8 name[20];
+ u16 currSpecies;
+ u32 TiD, PiD;
+ const struct CompressedSpritePalette** pokePal;
+ u8 ID;
+
+ GetMonData(mon, MON_DATA_NICKNAME, name);
+ StringCopy10(gStringVar1, name);
+ StringCopy(gStringVar2, gSpeciesNames[speciesToEvolve]);
+
+ gAffineAnimsDisabled = TRUE;
+
+ // preEvo sprite
+ currSpecies = GetMonData(mon, MON_DATA_SPECIES);
+ PiD = GetMonData(mon, MON_DATA_PERSONALITY);
+ TiD = GetMonData(mon, MON_DATA_OT_ID);
+ sEvoInfo.preEvoSpriteID = preEvoSpriteID;
+ DecompressPicFromTable_2(&gMonFrontPicTable[speciesToEvolve],
+ gMonFrontPicCoords[speciesToEvolve].coords,
+ gMonFrontPicCoords[speciesToEvolve].y_offset,
+ (void*)(0x2000000),
+ gUnknown_081FAF4C[1], speciesToEvolve);
+ pokePal = (void*) GetMonSpritePalStructFromOtIdPersonality(speciesToEvolve, TiD, PiD);
+ LoadCompressedPalette(*pokePal, 0x120, 0x20);
+
+ GetMonSpriteTemplate_803C56C(speciesToEvolve, 1);
+ gUnknown_02024E8C.affineAnims = gDummySpriteAffineAnimTable;
+ sEvoInfo.postEvoSpriteID = ID = CreateSprite(&gUnknown_02024E8C, 120, 64, 30);
+
+ gSprites[ID].callback = nullsub_37;
+ gSprites[ID].oam.paletteNum = 2;
+ gSprites[ID].invisible = 1;
+
+ LoadEvoSparkleSpriteAndPal();
+
+ sEvoInfo.evoTaskID = ID = CreateTask(Task_TradeEvolutionScene, 0);
+ gTasks[ID].tState = 0;
+ gTasks[ID].tPreEvoSpecies = currSpecies;
+ gTasks[ID].tPostEvoSpecies = speciesToEvolve;
+ gTasks[ID].tMonPtrHI = (u32)(mon);
+ gTasks[ID].tMonPtrLO = (u32)(mon) >> 0x10;
+ gTasks[ID].tLearnsFirstMove = TRUE;
+ gTasks[ID].tEvoWasStopped = FALSE;
+ gTasks[ID].tPartyID = partyID;
+
+ SetMainCallback2(CB2_TradeEvolutionSceneUpdate);
+}
+
+static void CB2_EvolutionSceneUpdate(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ sub_800374C(&gUnknown_03004210);
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+static void CB2_TradeEvolutionSceneUpdate(void)
+{
+ AnimateSprites();
+ BuildOamBuffer();
+ sub_80035AC(&gUnknown_03004828->window);
+ UpdatePaletteFade();
+ RunTasks();
+}
+
+static void CreateShedinja(u16 preEvoSpecies, struct Pokemon* mon)
+{
+ u32 data = 0;
+ if (gEvolutionTable[preEvoSpecies].evolutions[0].method == EVO_LEVEL_NINJASK && gPlayerPartyCount < 6)
+ {
+ s32 i;
+ struct Pokemon* Shedinja = &gPlayerParty[gPlayerPartyCount];
+ const struct EvolutionData* EvoTable;
+ const struct EvolutionData* Evos;
+
+ CopyMon(Shedinja, mon, sizeof(struct Pokemon));
+ SetMonData(Shedinja, MON_DATA_SPECIES, (void*)(&gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies));
+ SetMonData(Shedinja, MON_DATA_NICKNAME, (void*)(gSpeciesNames[gEvolutionTable[preEvoSpecies].evolutions[1].targetSpecies]));
+ SetMonData(Shedinja, MON_DATA_HELD_ITEM, (void*)(&data));
+ SetMonData(Shedinja, MON_DATA_MARKINGS, (void*)(&data));
+ SetMonData(Shedinja, MON_DATA_10, (void*)(&data));
+ for (i = MON_DATA_COOL_RIBBON; i < MON_DATA_COOL_RIBBON + 5; i++)
+ SetMonData(Shedinja, i, (void*)(&data));
+ for (i = MON_DATA_CHAMPION_RIBBON; i <= MON_DATA_FATEFUL_ENCOUNTER; i++)
+ SetMonData(Shedinja, i, (void*)(&data));
+ SetMonData(Shedinja, MON_DATA_STATUS, (void*)(&data));
+ data = 0xFF;
+ SetMonData(Shedinja, MON_DATA_MAIL, (void*)(&data));
+
+ CalculateMonStats(Shedinja);
+ CalculatePlayerPartyCount();
+
+ // can't match it otherwise, ehh
+ EvoTable = gEvolutionTable;
+ Evos = EvoTable + preEvoSpecies;
+ 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
+ && GetMonData(mon, MON_DATA_SPECIES) == SPECIES_NINJASK)
+ SetMonData(Shedinja, MON_DATA_NICKNAME, sUnknownShedinjaJpnString);
+ }
+}
+
+static void Task_EvolutionScene(u8 taskID)
+{
+ u32 var;
+ struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10));
+
+ // check if B Button was held, so the evolution gets stopped
+ if (gMain.heldKeys == B_BUTTON && gTasks[taskID].tState == 8 && gTasks[taskID].tBits & TASK_BIT_CAN_STOP)
+ {
+ gTasks[taskID].tState = 16;
+ if (gTasks[sEvoGraphicsTaskID].isActive)
+ gTasks[sEvoGraphicsTaskID].EvoGraphicsTaskEvoStop = TRUE;
+ }
+ switch (gTasks[taskID].tState)
+ {
+ case 0:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ gSprites[sEvoInfo.preEvoSpriteID].invisible = 0;
+ gTasks[taskID].tState++;
+ break;
+ case 1: // print 'whoa, poke is evolving!!!' msg
+ if (!gPaletteFade.active)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_08400C4A);
+ sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 2: // wait for string, play cry
+ if (gUnknown_03004210.state == 0)
+ {
+ PlayCry1(gTasks[taskID].tPreEvoSpecies, 0);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 3: // wait for cry, play tu du SE
+ if (IsCryFinished())
+ {
+ PlaySE(BGM_ME_SHINKA);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 4: // play evolution music and fade screen black
+ if (!IsSEPlaying())
+ {
+ PlayNewMapMusic(BGM_SHINKA);
+ gTasks[taskID].tState++;
+ BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0);
+ }
+ break;
+ case 5: // after screen fade, preapre evo sparkles
+ if (!gPaletteFade.active)
+ {
+ sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 6: // another set of evo sparkles
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ gTasks[taskID].tState++;
+ sEvoInfo.field_3 = 1;
+ sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2();
+ }
+ break;
+ case 7: // launch task that flashes pre evo with post evo sprites
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ sEvoGraphicsTaskID = sub_8149E7C(sEvoInfo.preEvoSpriteID, sEvoInfo.postEvoSpriteID);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 8: // wait for the above task to finish
+ if (--sEvoInfo.field_3 == 0)
+ {
+ sEvoInfo.field_3 = 3;
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 9: // post evo sparkles
+ sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1();
+ gTasks[taskID].tState++;
+ break;
+ case 10:
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash(gTasks[taskID].tPostEvoSpecies);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 11: // play tu du sound after evolution
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ PlaySE(SE_EXP);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 12: // play poke cry after evolution and return screed to pre-fade state
+ if (IsSEPlaying())
+ {
+ m4aMPlayAllStop();
+ PlayCry1(gTasks[taskID].tPostEvoSpecies, 0);
+ memcpy(&gPlttBufferUnfaded[0x20], gUnk_2009000, 0x60);
+ BeginNormalPaletteFade(0x1C, 0, 0x10, 0, 0);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 13: // congratulations string and rename prompt
+ if (IsCryFinished() && !gPaletteFade.active)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_08400C60);
+ sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
+ PlayBGM(BGM_FANFA5);
+ gTasks[taskID].tState++;
+ SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies));
+ CalculateMonStats(mon);
+ EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3);
+ IncrementGameStat(14);
+ }
+ break;
+ case 14: // check if it wants to learn a new move
+ if (gUnknown_03004210.state == 0)
+ {
+ var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove);
+ if (var != 0 && !gTasks[taskID].tEvoWasStopped)
+ {
+ u8 text[20];
+
+ Overworld_PlaySpecialMapMusic();
+ gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE;
+ gTasks[taskID].tLearnsFirstMove = FALSE;
+ gTasks[taskID].tLearnMoveState = 0;
+ GetMonData(mon, MON_DATA_NICKNAME, text);
+ StringCopy10(gBattleTextBuff1, text);
+ if (var == 0xFFFF) // no place to learn it
+ gTasks[taskID].tState = 21;
+ else if (var == 0xFFFE) // it already knows that move
+ break;
+ else
+ gTasks[taskID].tState = 19; // has less than 4 moves, so it's been learned
+ }
+ else // no move to learn
+ {
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskID].tState++;
+ }
+ }
+ break;
+ case 15: // task has finished, return
+ if (!gPaletteFade.active)
+ {
+ if (!(gTasks[taskID].tBits & TASK_BIT_LEARN_MOVE))
+ Overworld_PlaySpecialMapMusic();
+ if (!gTasks[taskID].tEvoWasStopped)
+ CreateShedinja(gTasks[taskID].tPreEvoSpecies, mon);
+ DestroyTask(taskID);
+ SetMainCallback2(gCB2_AfterEvolution);
+ }
+ break;
+ case 16: // evolution has been canceled, stop music and re-fade palette
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ m4aMPlayAllStop();
+ BeginNormalPaletteFade(0x6001C, 0, 0x10, 0, 0x7FFF);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 17: // play cry of the pokemon trying to evolve again, evolution has been stopped
+ if (!gPaletteFade.active)
+ {
+ PlayCry1(gTasks[taskID].tPreEvoSpecies, 0);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 18: // after the cry, print the string 'WHOA IT DID NOT EVOLVE!!!'
+ if (IsCryFinished())
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_08400C8D);
+ sub_8002EB0(&gUnknown_03004210, gStringVar4, 144, 2, 15);
+ gTasks[taskID].tEvoWasStopped = TRUE;
+ gTasks[taskID].tState = 14;
+ }
+ break;
+ case 19: // pokemon learned a new move, print string and play a fanfare
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ {
+ sub_8024CEC();
+ PlayFanfare(BGM_FANFA1);
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 20: // wait a bit and check if can learn another move
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying() && --gTasks[taskID].tLearnsFirstMove == 0)
+ gTasks[taskID].tState = 14;
+ break;
+ case 21: // try to learn a new move
+ switch (gTasks[taskID].tLearnMoveState)
+ {
+ case 0:
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ {
+ sub_8024CEC();
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 1:
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 2:
+ if (gUnknown_03004210.state != 0)
+ break;
+ if (!IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tData9 = 5;
+ gTasks[taskID].tData10 = 9;
+ gTasks[taskID].tLearnMoveState++;
+ }
+ case 3:
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ {
+ sub_8023A80();
+ gTasks[taskID].tLearnMoveState++;
+ sEvoCursorPos = 0;
+ sub_802BC6C();
+ }
+ break;
+ case 4:
+ if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ sEvoCursorPos = 0;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0)
+ {
+ PlaySE(SE_SELECT);
+ nullsub_6();
+ sEvoCursorPos = 1;
+ sub_802BC6C();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ sub_8023AD8();
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ PlaySE(SE_SELECT);
+ if (sEvoCursorPos != 0)
+ gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10;
+ else
+ {
+ gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9;
+ if (gTasks[taskID].tLearnMoveState == 5)
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ }
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ sub_8023AD8();
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ PlaySE(SE_SELECT);
+ gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10;
+ }
+ break;
+ case 5:
+ if (!gPaletteFade.active)
+ {
+ sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID,
+ gPlayerPartyCount - 1, CB2_EvolutionSceneLoadGraphics,
+ gMoveToLearn);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 6:
+ if (!gPaletteFade.active && gMain.callback2 == CB2_EvolutionSceneUpdate)
+ {
+ var = sub_809FA30(); // moveID
+ if (var == 4)
+ gTasks[taskID].tLearnMoveState = 9;
+ else
+ {
+ u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
+ if (IsHMMove2(move))
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tLearnMoveState = 11;
+ }
+ else
+ {
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 2;
+ gBattleTextBuff2[2] = move;
+ gBattleTextBuff2[3] = (move & 0xFF00) >> 8;
+ gBattleTextBuff2[4] = EOS;
+ RemoveMonPPBonus(mon, var);
+ SetMonMoveSlot(mon, gMoveToLearn, var);
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ }
+ }
+ break;
+ case 7:
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 8:
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tState = 19;
+ }
+ break;
+ case 9:
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tData9 = 10;
+ gTasks[taskID].tData10 = 0;
+ gTasks[taskID].tLearnMoveState = 3;
+ break;
+ case 10:
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]);
+ sub_8002EB0(&gUnknown_03004210, gDisplayedStringBattle, 144, 2, 15);
+ gTasks[taskID].tState = 14;
+ break;
+ case 11:
+ if (gUnknown_03004210.state == 0 && !IsSEPlaying())
+ gTasks[taskID].tLearnMoveState = 5;
+ break;
+ }
+ break;
+ }
+}
+
+static void Task_TradeEvolutionScene(u8 taskID)
+{
+ u32 var;
+ struct Pokemon* mon = (struct Pokemon*)(gTasks[taskID].tMonPtrHI | (gTasks[taskID].tMonPtrLO << 0x10));
+
+ switch (gTasks[taskID].tState)
+ {
+ case 0:
+ StringExpandPlaceholders(gStringVar4, gUnknown_08400C4A);
+ sub_8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gTasks[taskID].tState++;
+ break;
+ case 1:
+ if (gUnknown_03004828->window.state == 0)
+ {
+ PlayCry1(gTasks[taskID].tPreEvoSpecies, 0);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 2:
+ if (IsCryFinished())
+ {
+ m4aSongNumStop(BGM_SHINKA);
+ PlaySE(BGM_ME_SHINKA);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 3:
+ if (!IsSEPlaying())
+ {
+ PlayBGM(BGM_SHINKA);
+ gTasks[taskID].tState++;
+ BeginNormalPaletteFade(0x1C, 4, 0, 0x10, 0);
+ }
+ break;
+ case 4:
+ if (!gPaletteFade.active)
+ {
+ REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_BG0_ON | DISPCNT_BG1_ON | DISPCNT_OBJ_1D_MAP;
+ sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet1(17);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 5:
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ gTasks[taskID].tState++;
+ sEvoInfo.field_3 = 1;
+ sEvoGraphicsTaskID = LaunchTask_PreEvoSparklesSet2();
+ }
+ break;
+ case 6:
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ sEvoGraphicsTaskID = sub_8149E7C(sEvoInfo.preEvoSpriteID, sEvoInfo.postEvoSpriteID);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 7:
+ if (--sEvoInfo.field_3 == 0)
+ {
+ sEvoInfo.field_3 = 3;
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 8:
+ sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet1();
+ gTasks[taskID].tState++;
+ break;
+ case 9:
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ sEvoGraphicsTaskID = LaunchTask_PostEvoSparklesSet2AndFlash_Trade(gTasks[taskID].tPostEvoSpecies);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 10:
+ if (!gTasks[sEvoGraphicsTaskID].isActive)
+ {
+ PlaySE(SE_EXP);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 11:
+ if (IsSEPlaying())
+ {
+ PlayCry1(gTasks[taskID].tPostEvoSpecies, 0);
+ memcpy(&gPlttBufferUnfaded[0x20], gUnk_2009000, 0x60);
+ BeginNormalPaletteFade(1, 0, 0x10, 0, 0);
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 12:
+ if (IsCryFinished() && !gPaletteFade.active)
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_08400C60);
+ sub_8002EB0(&gUnknown_03004828->window, gStringVar4, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ PlayFanfare(BGM_FANFA5);
+ gTasks[taskID].tState++;
+ SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies));
+ CalculateMonStats(mon);
+ EvolutionRenameMon(mon, gTasks[taskID].tPreEvoSpecies, gTasks[taskID].tPostEvoSpecies);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 2);
+ GetSetPokedexFlag(SpeciesToNationalPokedexNum(gTasks[taskID].tPostEvoSpecies), 3);
+ IncrementGameStat(14);
+ }
+ break;
+ case 13:
+ if (gUnknown_03004828->window.state == 0 && IsFanfareTaskInactive() == TRUE)
+ {
+ var = MonTryLearningNewMove(mon, gTasks[taskID].tLearnsFirstMove);
+ if (var != 0 && !gTasks[taskID].tEvoWasStopped)
+ {
+ u8 text[20];
+
+ gTasks[taskID].tBits |= TASK_BIT_LEARN_MOVE;
+ gTasks[taskID].tLearnsFirstMove = FALSE;
+ gTasks[taskID].tLearnMoveState = 0;
+ GetMonData(mon, MON_DATA_NICKNAME, text);
+ StringCopy10(gBattleTextBuff1, text);
+ if (var == 0xFFFF)
+ gTasks[taskID].tState = 17;
+ else if (var == 0xFFFE)
+ break;
+ else
+ gTasks[taskID].tState = 15;
+ }
+ else
+ {
+ PlayBGM(BGM_SHINKA);
+ sub_8002EB0(&gUnknown_03004828->window, gOtherText_LinkStandby2, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gTasks[taskID].tState++;
+ }
+ }
+ break;
+ case 14:
+ if (gUnknown_03004828->window.state == 0)
+ {
+ DestroyTask(taskID);
+ SetMainCallback2(gCB2_AfterEvolution);
+ }
+ break;
+ case 15:
+ if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
+ {
+ sub_8024CEC();
+ PlayFanfare(BGM_FANFA1);
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[3]);
+ sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter
+ gTasks[taskID].tState++;
+ }
+ break;
+ case 16:
+ if (gUnknown_03004828->window.state == 0 && IsFanfareTaskInactive() == TRUE && --gTasks[taskID].tLearnsFirstMove == 0)
+ gTasks[taskID].tState = 13;
+ break;
+ case 17:
+ switch (gTasks[taskID].tLearnMoveState)
+ {
+ case 0:
+ if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
+ {
+ sub_8024CEC();
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[4]);
+ sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 1:
+ if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[5]);
+ sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 2:
+ if (gUnknown_03004828->window.state != 0)
+ break;
+ if (!IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[6]);
+ sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gTasks[taskID].tData9 = 5;
+ gTasks[taskID].tData10 = 9;
+ gTasks[taskID].tLearnMoveState++;
+ }
+ case 3:
+ if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
+ {
+ DrawTextWindow(&gUnknown_03004828->window, 24, 8, 29, 13);
+ sEvoCursorPos = 0;
+ InitWindow(&gUnknown_03004828->window, gOtherText_YesNoAndPlayer, gUnknown_03004828->textWindowBaseTileNum + 128, 25, 9);
+ sub_8002F44(&gUnknown_03004828->window);
+ sub_814A5C0(0, 0xFFFF, 0xC, 0x2D9F, 0x20);
+ sub_81150D8();
+ gTasks[taskID].tLearnMoveState++;
+ sEvoCursorPos = 0;
+ }
+ break;
+ case 4:
+ if (gMain.newKeys & DPAD_UP && sEvoCursorPos != 0)
+ {
+ PlaySE(SE_SELECT);
+ EvoDummyFunc2();
+ sEvoCursorPos = 0;
+ sub_81150D8();
+ }
+ if (gMain.newKeys & DPAD_DOWN && sEvoCursorPos == 0)
+ {
+ PlaySE(SE_SELECT);
+ EvoDummyFunc2();
+ sEvoCursorPos = 1;
+ sub_81150D8();
+ }
+ if (gMain.newKeys & A_BUTTON)
+ {
+ ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD);
+ DestroyMenuCursor();
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]);
+ sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ PlaySE(SE_SELECT);
+ if (sEvoCursorPos != 0)
+ gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10;
+ else
+ {
+ gTasks[taskID].tLearnMoveState = gTasks[taskID].tData9;
+ if (gTasks[taskID].tLearnMoveState == 5)
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ }
+ }
+ if (gMain.newKeys & B_BUTTON)
+ {
+ ZeroFillWindowRect(&gUnknown_03004828->window, 0x18, 8, 0x1D, 0xD);
+ DestroyMenuCursor();
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[292]);
+ sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ PlaySE(SE_SELECT);
+ gTasks[taskID].tLearnMoveState = gTasks[taskID].tData10;
+ }
+ break;
+ case 5:
+ if (!gPaletteFade.active)
+ {
+ sub_809D9F0(gPlayerParty, gTasks[taskID].tPartyID,
+ gPlayerPartyCount - 1, CB2_TradeEvolutionSceneLoadGraphics,
+ gMoveToLearn);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 6:
+ if (!gPaletteFade.active && gMain.callback2 == CB2_TradeEvolutionSceneUpdate)
+ {
+ var = sub_809FA30(); // moveID
+ if (var == 4)
+ gTasks[taskID].tLearnMoveState = 9;
+ else
+ {
+ u16 move = GetMonData(mon, var + MON_DATA_MOVE1);
+ if (IsHMMove2(move))
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[307]);
+ sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gTasks[taskID].tLearnMoveState = 11;
+ }
+ else
+ {
+ gBattleTextBuff2[0] = 0xFD;
+ gBattleTextBuff2[1] = 2;
+ gBattleTextBuff2[2] = move;
+ gBattleTextBuff2[3] = (move & 0xFF00) >> 8;
+ gBattleTextBuff2[4] = EOS;
+ RemoveMonPPBonus(mon, var);
+ SetMonMoveSlot(mon, gMoveToLearn, var);
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[207]);
+ sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ }
+ }
+ break;
+ case 7:
+ if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[7]);
+ sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gTasks[taskID].tLearnMoveState++;
+ }
+ break;
+ case 8:
+ if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
+ {
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[208]);
+ sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gTasks[taskID].tState = 15;
+ }
+ break;
+ case 9:
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[8]);
+ sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gTasks[taskID].tData9 = 10;
+ gTasks[taskID].tData10 = 0;
+ gTasks[taskID].tLearnMoveState = 3;
+ break;
+ case 10:
+ StrCpyDecodeToDisplayedStringBattle(gBattleStringsTable[9]);
+ sub_8002EB0(&gUnknown_03004828->window, gDisplayedStringBattle, gUnknown_03004828->textWindowBaseTileNum, 2, 15);
+ gTasks[taskID].tState = 13;
+ break;
+ case 11:
+ if (gUnknown_03004828->window.state == 0 && !IsSEPlaying())
+ gTasks[taskID].tLearnMoveState = 5;
+ break;
+ }
+ break;
+ }
+}
+
+/*
+DizzyEgg, 27.08.2017
+NOTE:
+ Functions below are all unused.
+ What's more, they do NOT exist in Emerald.
+ That's why I think there is no reason to decompile those,
+ as they probably were prototypes for the evolution
+ functions.
+*/
+
+/*
+void unref_sub_8113B50(u8 *a, u8 *b)
+{
+ //u8 *sp0 = a;
+ //u8 *sp4 = b;
+#define sp0 a
+#define sp4 b
+ s32 sp8;
+ s32 spC = 0;
+ u32 sp10 = 0;
+ s32 sp14;
+ s32 r6;
+ u32 r8;
+
+ for (sp8 = 0; sp8 < 64; sp8++)
+ {
+ sEvoInfo.unk84[sp8] = 0;
+ sEvoInfo.unk4[sp8] = 0;
+ sEvoInfo.unk44[sp8] = 0;
+ for (r6 = 0; r6 < 32; r6++)
+ {
+ sEvoInfo.unk10C4[sp8][r6] = 0;
+ sEvoInfo.unk18C4[sp8][r6] = 0;
+ sEvoInfo.unk20C4[sp8][r6] = 0;
+ sEvoInfo.unk28C4[sp8][r6] = 0;
+ sEvoInfo.unkC4[sp8][r6] = 0;
+ sEvoInfo.unk8C4[sp8][r6] = 0;
+ sEvoInfo.unk30C4[sp8][r6] = 0;
+ sEvoInfo.unk38C4[sp8][r6] = 0;
+
+ sEvoInfo.unk60C4[sp8][r6] = 0;
+ sEvoInfo.unk70C4[sp8][r6] = 0;
+ sEvoInfo.unk80C4[sp8][r6] = 0;
+ sEvoInfo.unk90C4[sp8][r6] = 0;
+ }
+ }
+
+ sEvoInfo.unkA0C4 = 64;
+ r8 = 0;
+ for (sp8 = 0; sp8 < 64; sp8++)
+ {
+ //_08113C32
+ u32 r3 = 0;
+ u8 *r2 = sp0 + r8;
+
+ for (r6 = 0; r6 < 64; r6++)
+ {
+ sEvoInfo.unk40C4[sp8][r6 >> 1] = r2;
+ switch (r3)
+ {
+ case 0:
+ switch (r6 & 1)
+ {
+ case 0:
+ if (*r2 & 0xF)
+ {
+ sEvoInfo.unk10C4[sp8][sEvoInfo.unk4[sp8]] = r6;
+ r3 = 1;
+ }
+ break;
+ case 1:
+ if (*r2 & 0xF0)
+ {
+ sEvoInfo.unk10C4[sp8][sEvoInfo.unk4[sp8]] = r6;
+ r3 = 1;
+ }
+ break;
+ }
+ break;
+ case 1:
+ switch (r6 & r3)
+ {
+ case 0:
+ if (*r2 & 0xF)
+ {
+ sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6 - 1;
+ sEvoInfo.unk4[sp8]++;
+ r3 = 0;
+ }
+ break;
+ case 1:
+ if (*r2 & 0xF0)
+ {
+ sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6 - 1;
+ sEvoInfo.unk4[sp8]++;
+ r3 = 0;
+ }
+ break;
+ }
+ }
+ //if (!((r6 + 1) & 7))
+ if ((r6 + 1) % 8 == 0)
+ r2 += 0x1D;
+ else if (r6 & 1)
+ r2 += 1;
+ }
+ if (r3)
+ {
+ sEvoInfo.unk18C4[sp8][sEvoInfo.unk4[sp8]] = r6;
+ sEvoInfo.unk4[sp8]++;
+ }
+ //_08113D26
+ if (!((sp8 + 1) & 7))
+ r8 += 0xE4;
+ else
+ r8 += 4;
+ }
+ //_08113D4A
+ r8 = 0;
+ for (sp8 = 0; sp8 < 64; sp8++)
+ {
+ //_08113D6A
+ u32 r3 = 0;
+ u8 *r2 = sp4 + r8;
+
+ for (r6 = 0; r6 < 64; r6++)
+ {
+ switch (r3)
+ {
+ case 0:
+ switch (r6 & 1)
+ {
+ case 0:
+ if (*r2 & 0xF)
+ {
+ sEvoInfo.unk20C4[sp8][sEvoInfo.unk44[sp8]] = r6;
+ r3 = 1;
+ }
+ break;
+ case 1:
+ if (*r2 & 0xF0)
+ {
+ sEvoInfo.unk20C4[sp8][sEvoInfo.unk44[sp8]] = r6;
+ r3 = 1;
+ }
+ break;
+ }
+ break;
+ case 1:
+ switch (r6 & r3)
+ {
+ case 0:
+ if (*r2 & 0xF)
+ {
+ sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6 - 1;
+ sEvoInfo.unk44[sp8]++;
+ r3 = 0;
+ }
+ break;
+ case 1:
+ if (*r2 & 0xF0)
+ {
+ sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6 - 1;
+ sEvoInfo.unk44[sp8]++;
+ r3 = 0;
+ }
+ break;
+ }
+ }
+ //_08113DE4
+ if (!((r6 + 1) & 7))
+ r2 += 0x1D;
+ else if (r6 & 1)
+ r2 += 1;
+
+ }
+ if (r3)
+ {
+ sEvoInfo.unk28C4[sp8][sEvoInfo.unk44[sp8]] = r6;
+ sEvoInfo.unk44[sp8]++;
+ }
+ //if (!((sp8 + 1) & 7))
+ if ((sp8 + 1) % 8 == 0)
+ r8 += 0xE4;
+ else
+ r8 += 4;
+ }
+
+ for (sp8 = 0; sp8 < 0x40; sp8++) //_08113E3A
+ {
+ if (sEvoInfo.unk4[sp8] < sEvoInfo.unk44[sp8])
+ {
+ for (spC = 0; spC < sEvoInfo.unk4[sp8]; spC++)
+ {
+ sp14 = 0x100;
+
+ for (r6 = 0; r6 < sEvoInfo.unk44[sp8]; r6++)
+ {
+ s32 r3;
+
+ //_08113EA4
+ if (sEvoInfo.unk10C4[sp8][spC] > sEvoInfo.unk20C4[sp8][r6])
+ r3 = sEvoInfo.unk10C4[sp8][spC] - sEvoInfo.unk20C4[sp8][r6];
+ else
+ r3 = sEvoInfo.unk20C4[sp8][r6] - sEvoInfo.unk10C4[sp8][spC];
+
+ if (sEvoInfo.unk18C4[sp8][spC] > sEvoInfo.unk28C4[sp8][spC])
+ r3 += sEvoInfo.unk18C4[sp8][spC] - sEvoInfo.unk28C4[sp8][spC];
+ else
+ r3 += sEvoInfo.unk28C4[sp8][spC] - sEvoInfo.unk18C4[sp8][spC];
+
+ if (sp14 >= r3 && sEvoInfo.unkC4[sp8][r6] == 0 && sEvoInfo.unk8C4[sp8][r6] == 0)
+ {
+ sp10 = r6;
+ sp14 = r3;
+ }
+ }
+ //_08113F3E
+ sub_81141F0(spC, sp10, sp8);
+ }
+ //_08113F54
+
+ for (r6 = 0; r6 < sEvoInfo.unk44[sp8]; r6++)
+ {
+ if (sEvoInfo.unkC4[sp8][r6] == 0 && sEvoInfo.unk8C4[sp8][r6] == 0)
+ sub_811430C(r6, sp8);
+ }
+ }
+ //_08113F9E
+ if (sEvoInfo.unk4[sp8] == sEvoInfo.unk44[sp8])
+ {
+ for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++)
+ sub_81141F0(r6, r6, sp8);
+ }
+ //_08113FCC
+ if (sEvoInfo.unk4[sp8] > sEvoInfo.unk44[sp8])
+ {
+ for (sp10 = 0; sp10 < sEvoInfo.unk44[sp8]; sp10++)
+ {
+ sp14 = 0x100;
+
+ for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++)
+ {
+ s32 r3;
+
+ if (sEvoInfo.unk10C4[sp8][r6] > sEvoInfo.unk20C4[sp8][sp10])
+ r3 = sEvoInfo.unk10C4[sp8][r6] - sEvoInfo.unk20C4[sp8][sp10];
+ else
+ r3 = sEvoInfo.unk20C4[sp8][sp10] - sEvoInfo.unk10C4[sp8][r6];
+
+ if (sEvoInfo.unk18C4[sp8][r6] > sEvoInfo.unk28C4[sp8][sp10])
+ r3 += sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk28C4[sp8][sp10];
+ else
+ r3 += sEvoInfo.unk28C4[sp8][sp10] - sEvoInfo.unk18C4[sp8][r6];
+
+ //r3 = abs(sEvoInfo.unk10C4[sp8][r6] - sEvoInfo.unk20C4[sp8][sp10]);
+ //r3 += abs(sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk28C4[sp8][sp10]);
+
+ if (sp14 > r3 && sEvoInfo.unkC4[sp8][r6] == 0)
+ {
+ spC = r6;
+ sp14 = r3;
+ }
+ }
+ //_081140C4
+ sEvoInfo.unk30C4[sp8][spC] = sEvoInfo.unk20C4[sp8][sp10];
+ sEvoInfo.unk38C4[sp8][spC] = sEvoInfo.unk28C4[sp8][sp10];
+ sEvoInfo.unkC4[sp8][spC] = 1;
+ }
+ //_08114104
+ for (r6 = 0; r6 < sEvoInfo.unk4[sp8]; r6++)
+ {
+ sEvoInfo.unk20C4[sp8][r6] = sEvoInfo.unk30C4[sp8][r6];
+ sEvoInfo.unk28C4[sp8][r6] = sEvoInfo.unk38C4[sp8][r6];
+ if (sEvoInfo.unkC4[sp8][r6] != 0)
+ {
+ sEvoInfo.unkC4[sp8][r6] = 0;
+ sub_81141F0(r6, r6, sp8);
+ }
+ else
+ {
+ // Ugh, can't get this part right
+ //u8 *ptr1 = &sEvoInfo.unk10C4[sp8][r6];
+ //u8 *ptr2 = &sEvoInfo.unk18C4[sp8][r6];
+ //s32 r2 = *ptr1 + (*ptr2 - *ptr1) / 2;
+
+ //u8 r0_ = sEvoInfo.unk10C4[sp8][r6];
+ //u8 r2_ = sEvoInfo.unk18C4[sp8][r6];
+ //s32 r2 = (r0_ - r2_) / 2;
+
+ s32 r2 = (sEvoInfo.unk18C4[sp8][r6] - sEvoInfo.unk10C4[sp8][r6]);
+ s32 r2_ = sEvoInfo.unk10C4[sp8][r6];
+
+ sEvoInfo.unk20C4[sp8][r6] = sEvoInfo.unk28C4[sp8][r6] = r2_ + r2 / 2;
+ sEvoInfo.unk28C4[sp8][r6]++;
+ sub_81141F0(r6, r6, sp8);
+ }
+ }
+ }
+ //_081141C4
+ }
+#undef sp0
+#undef sp4
+}
+*/
+__attribute__((naked))
+void unref_sub_8113B50()
+{
+ 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, 0x3C\n\
+ str r0, [sp]\n\
+ str r1, [sp, 0x4]\n\
+ movs r0, 0\n\
+ str r0, [sp, 0xC]\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x10]\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x8]\n\
+ ldr r3, _08113C60 @ =0x02014800\n\
+ mov r12, r3\n\
+ ldr r4, _08113C64 @ =0x000018c4\n\
+ add r4, r12\n\
+ mov r10, r4\n\
+ ldr r5, _08113C68 @ =0x000020c4\n\
+ add r5, r12\n\
+ mov r8, r5\n\
+_08113B7C:\n\
+ adds r0, r3, 0\n\
+ adds r0, 0x84\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r0, r1, r0\n\
+ strb r2, [r0]\n\
+ adds r0, r3, 0x4\n\
+ adds r0, r1, r0\n\
+ strb r2, [r0]\n\
+ ldr r4, _08113C6C @ =0x02014844\n\
+ adds r0, r1, r4\n\
+ strb r2, [r0]\n\
+ movs r6, 0\n\
+ lsls r1, 5\n\
+ mov r9, r1\n\
+ ldr r5, [sp, 0x8]\n\
+ lsls r4, r5, 6\n\
+_08113B9C:\n\
+ mov r0, r9\n\
+ adds r1, r6, r0\n\
+ ldr r5, _08113C70 @ =0x020158c4\n\
+ adds r0, r1, r5\n\
+ strb r2, [r0]\n\
+ mov r5, r10\n\
+ adds r0, r1, r5\n\
+ strb r2, [r0]\n\
+ mov r5, r8\n\
+ adds r0, r1, r5\n\
+ strb r2, [r0]\n\
+ ldr r5, _08113C74 @ =0x020170c4\n\
+ adds r0, r1, r5\n\
+ strb r2, [r0]\n\
+ adds r7, r3, 0\n\
+ adds r7, 0xC4\n\
+ adds r0, r1, r7\n\
+ strb r2, [r0]\n\
+ ldr r5, _08113C78 @ =0x000008c4\n\
+ adds r0, r3, r5\n\
+ adds r0, r1, r0\n\
+ strb r2, [r0]\n\
+ ldr r5, _08113C7C @ =0x000030c4\n\
+ adds r0, r3, r5\n\
+ adds r0, r1, r0\n\
+ strb r2, [r0]\n\
+ ldr r5, _08113C80 @ =0x000038c4\n\
+ adds r0, r3, r5\n\
+ adds r1, r0\n\
+ strb r2, [r1]\n\
+ lsls r1, r6, 1\n\
+ adds r1, r4\n\
+ ldr r5, _08113C84 @ =0x000060c4\n\
+ adds r0, r3, r5\n\
+ adds r0, r1, r0\n\
+ strh r2, [r0]\n\
+ ldr r5, _08113C88 @ =0x000070c4\n\
+ adds r0, r3, r5\n\
+ adds r0, r1, r0\n\
+ strh r2, [r0]\n\
+ ldr r5, _08113C8C @ =0x000080c4\n\
+ adds r0, r3, r5\n\
+ adds r0, r1, r0\n\
+ strh r2, [r0]\n\
+ ldr r5, _08113C90 @ =0x000090c4\n\
+ adds r0, r3, r5\n\
+ adds r1, r0\n\
+ strh r2, [r1]\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x1F\n\
+ ble _08113B9C\n\
+ ldr r0, [sp, 0x8]\n\
+ adds r0, 0x1\n\
+ str r0, [sp, 0x8]\n\
+ cmp r0, 0x3F\n\
+ ble _08113B7C\n\
+ ldr r1, _08113C94 @ =0x0000a0c4\n\
+ add r1, r12\n\
+ movs r0, 0x40\n\
+ strb r0, [r1]\n\
+ movs r1, 0\n\
+ mov r8, r1\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x8]\n\
+ movs r3, 0x80\n\
+ lsls r3, 5\n\
+ adds r3, r7\n\
+ mov r12, r3\n\
+ movs r4, 0xC0\n\
+ lsls r4, 5\n\
+ adds r4, r7\n\
+ mov r9, r4\n\
+ movs r5, 0\n\
+ adds r4, r7, 0\n\
+ subs r4, 0xC0\n\
+_08113C32:\n\
+ movs r3, 0\n\
+ ldr r2, [sp]\n\
+ add r2, r8\n\
+ movs r6, 0\n\
+ ldr r0, [sp, 0x8]\n\
+ adds r0, 0x1\n\
+ str r0, [sp, 0x30]\n\
+ ldr r1, [sp, 0x8]\n\
+ lsls r1, 7\n\
+ mov r10, r1\n\
+ movs r7, 0x1\n\
+ negs r7, r7\n\
+_08113C4A:\n\
+ asrs r0, r6, 1\n\
+ lsls r0, 2\n\
+ add r0, r10\n\
+ ldr r1, _08113C98 @ =0x020188c4\n\
+ adds r0, r1\n\
+ str r2, [r0]\n\
+ cmp r3, 0\n\
+ beq _08113C9C\n\
+ cmp r3, 0x1\n\
+ beq _08113CC6\n\
+ b _08113CF4\n\
+ .align 2, 0\n\
+_08113C60: .4byte 0x02014800\n\
+_08113C64: .4byte 0x000018c4\n\
+_08113C68: .4byte 0x000020c4\n\
+_08113C6C: .4byte 0x02014844\n\
+_08113C70: .4byte 0x020158c4\n\
+_08113C74: .4byte 0x020170c4\n\
+_08113C78: .4byte 0x000008c4\n\
+_08113C7C: .4byte 0x000030c4\n\
+_08113C80: .4byte 0x000038c4\n\
+_08113C84: .4byte 0x000060c4\n\
+_08113C88: .4byte 0x000070c4\n\
+_08113C8C: .4byte 0x000080c4\n\
+_08113C90: .4byte 0x000090c4\n\
+_08113C94: .4byte 0x0000a0c4\n\
+_08113C98: .4byte 0x020188c4\n\
+_08113C9C:\n\
+ movs r0, 0x1\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ beq _08113CAA\n\
+ cmp r0, 0x1\n\
+ beq _08113CB0\n\
+ b _08113CF4\n\
+_08113CAA:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF\n\
+ b _08113CB4\n\
+_08113CB0:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF0\n\
+_08113CB4:\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08113CF4\n\
+ ldrb r0, [r4]\n\
+ adds r0, r5\n\
+ add r0, r12\n\
+ strb r6, [r0]\n\
+ movs r3, 0x1\n\
+ b _08113CF4\n\
+_08113CC6:\n\
+ adds r0, r6, 0\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08113CD4\n\
+ cmp r0, 0x1\n\
+ beq _08113CDA\n\
+ b _08113CF4\n\
+_08113CD4:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF\n\
+ b _08113CDE\n\
+_08113CDA:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF0\n\
+_08113CDE:\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08113CF4\n\
+ ldrb r0, [r4]\n\
+ adds r0, r5\n\
+ add r0, r9\n\
+ strb r7, [r0]\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ movs r3, 0\n\
+_08113CF4:\n\
+ adds r0, r6, 0x1\n\
+ movs r1, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08113D02\n\
+ adds r2, 0x1D\n\
+ b _08113D0C\n\
+_08113D02:\n\
+ movs r0, 0x1\n\
+ ands r0, r6\n\
+ cmp r0, 0\n\
+ beq _08113D0C\n\
+ adds r2, 0x1\n\
+_08113D0C:\n\
+ adds r7, 0x1\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x3F\n\
+ ble _08113C4A\n\
+ cmp r3, 0\n\
+ beq _08113D26\n\
+ ldrb r0, [r4]\n\
+ adds r0, r5\n\
+ add r0, r9\n\
+ strb r6, [r0]\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+_08113D26:\n\
+ movs r0, 0x7\n\
+ ldr r2, [sp, 0x30]\n\
+ ands r2, r0\n\
+ cmp r2, 0\n\
+ bne _08113D36\n\
+ movs r3, 0xE4\n\
+ add r8, r3\n\
+ b _08113D3A\n\
+_08113D36:\n\
+ movs r0, 0x4\n\
+ add r8, r0\n\
+_08113D3A:\n\
+ adds r5, 0x20\n\
+ adds r4, 0x1\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r1, 0x1\n\
+ str r1, [sp, 0x8]\n\
+ cmp r1, 0x3F\n\
+ bgt _08113D4A\n\
+ b _08113C32\n\
+_08113D4A:\n\
+ movs r2, 0\n\
+ mov r8, r2\n\
+ movs r3, 0\n\
+ str r3, [sp, 0x8]\n\
+ ldr r0, _08113D84 @ =0x02014844\n\
+ movs r4, 0x82\n\
+ lsls r4, 6\n\
+ adds r4, r0\n\
+ mov r10, r4\n\
+ movs r5, 0xA2\n\
+ lsls r5, 6\n\
+ adds r7, r0, r5\n\
+ movs r5, 0\n\
+ adds r4, r0, 0\n\
+ movs r0, 0x1\n\
+ mov r9, r0\n\
+_08113D6A:\n\
+ movs r3, 0\n\
+ ldr r2, [sp, 0x4]\n\
+ add r2, r8\n\
+ movs r6, 0\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r1, 0x1\n\
+ str r1, [sp, 0x30]\n\
+_08113D78:\n\
+ cmp r3, 0\n\
+ beq _08113D88\n\
+ cmp r3, 0x1\n\
+ beq _08113DB4\n\
+ b _08113DE4\n\
+ .align 2, 0\n\
+_08113D84: .4byte 0x02014844\n\
+_08113D88:\n\
+ adds r0, r6, 0\n\
+ mov r1, r9\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08113D98\n\
+ cmp r0, 0x1\n\
+ beq _08113D9E\n\
+ b _08113DE4\n\
+_08113D98:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF\n\
+ b _08113DA2\n\
+_08113D9E:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF0\n\
+_08113DA2:\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08113DE4\n\
+ ldrb r0, [r4]\n\
+ adds r0, r5\n\
+ add r0, r10\n\
+ strb r6, [r0]\n\
+ movs r3, 0x1\n\
+ b _08113DE4\n\
+_08113DB4:\n\
+ adds r0, r6, 0\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08113DC2\n\
+ cmp r0, 0x1\n\
+ beq _08113DC8\n\
+ b _08113DE4\n\
+_08113DC2:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF\n\
+ b _08113DCC\n\
+_08113DC8:\n\
+ ldrb r1, [r2]\n\
+ movs r0, 0xF0\n\
+_08113DCC:\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08113DE4\n\
+ ldrb r0, [r4]\n\
+ adds r0, r5\n\
+ adds r0, r7\n\
+ subs r1, r6, 0x1\n\
+ strb r1, [r0]\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ movs r3, 0\n\
+_08113DE4:\n\
+ adds r1, r6, 0x1\n\
+ movs r0, 0x7\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08113DF2\n\
+ adds r2, 0x1D\n\
+ b _08113DFC\n\
+_08113DF2:\n\
+ mov r0, r9\n\
+ ands r6, r0\n\
+ cmp r6, 0\n\
+ beq _08113DFC\n\
+ adds r2, 0x1\n\
+_08113DFC:\n\
+ adds r6, r1, 0\n\
+ cmp r6, 0x3F\n\
+ ble _08113D78\n\
+ cmp r3, 0\n\
+ beq _08113E14\n\
+ ldrb r0, [r4]\n\
+ adds r0, r5\n\
+ adds r0, r7\n\
+ strb r6, [r0]\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+_08113E14:\n\
+ movs r0, 0x7\n\
+ ldr r1, [sp, 0x30]\n\
+ ands r1, r0\n\
+ cmp r1, 0\n\
+ bne _08113E24\n\
+ movs r2, 0xE4\n\
+ add r8, r2\n\
+ b _08113E28\n\
+_08113E24:\n\
+ movs r3, 0x4\n\
+ add r8, r3\n\
+_08113E28:\n\
+ adds r5, 0x20\n\
+ adds r4, 0x1\n\
+ ldr r0, [sp, 0x8]\n\
+ adds r0, 0x1\n\
+ str r0, [sp, 0x8]\n\
+ cmp r0, 0x3F\n\
+ ble _08113D6A\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x8]\n\
+_08113E3A:\n\
+ ldr r3, [sp, 0x8]\n\
+ ldr r4, _08113EBC @ =0x02014804\n\
+ adds r2, r3, r4\n\
+ ldr r5, _08113EC0 @ =0x02014844\n\
+ adds r1, r3, r5\n\
+ ldrb r0, [r2]\n\
+ adds r3, 0x1\n\
+ str r3, [sp, 0x30]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bcc _08113E52\n\
+ b _08113F9E\n\
+_08113E52:\n\
+ movs r0, 0\n\
+ str r0, [sp, 0xC]\n\
+ ldrb r2, [r2]\n\
+ cmp r0, r2\n\
+ bge _08113F54\n\
+ ldr r0, _08113EC4 @ =0x02014800\n\
+ adds r0, 0x4\n\
+ ldr r1, [sp, 0x8]\n\
+ adds r0, r1, r0\n\
+ str r0, [sp, 0x18]\n\
+_08113E66:\n\
+ movs r2, 0x80\n\
+ lsls r2, 1\n\
+ str r2, [sp, 0x14]\n\
+ movs r6, 0\n\
+ ldr r3, [sp, 0x8]\n\
+ ldr r4, _08113EC0 @ =0x02014844\n\
+ adds r0, r3, r4\n\
+ ldr r5, [sp, 0xC]\n\
+ adds r5, 0x1\n\
+ str r5, [sp, 0x34]\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ bge _08113F3E\n\
+ ldr r0, _08113EC4 @ =0x02014800\n\
+ mov r10, r0\n\
+ lsls r0, r3, 5\n\
+ ldr r2, [sp, 0xC]\n\
+ adds r1, r2, r0\n\
+ mov r9, r0\n\
+ ldr r0, _08113EC4 @ =0x02014800\n\
+ adds r0, 0xC4\n\
+ mov r3, r9\n\
+ adds r7, r3, r0\n\
+ mov r5, r9\n\
+ ldr r4, _08113EC4 @ =0x02014800\n\
+ ldr r2, _08113EC8 @ =0x000010c4\n\
+ adds r0, r4, r2\n\
+ adds r1, r0\n\
+ mov r8, r1\n\
+ ldrb r3, [r1]\n\
+ str r3, [sp, 0x1C]\n\
+_08113EA4:\n\
+ ldr r0, _08113ECC @ =0x000020c4\n\
+ add r0, r10\n\
+ adds r0, r5, r0\n\
+ ldr r4, [sp, 0x1C]\n\
+ ldrb r1, [r0]\n\
+ cmp r4, r1\n\
+ bls _08113ED0\n\
+ mov r2, r8\n\
+ ldrb r1, [r2]\n\
+ ldrb r0, [r0]\n\
+ b _08113ED6\n\
+ .align 2, 0\n\
+_08113EBC: .4byte 0x02014804\n\
+_08113EC0: .4byte 0x02014844\n\
+_08113EC4: .4byte 0x02014800\n\
+_08113EC8: .4byte 0x000010c4\n\
+_08113ECC: .4byte 0x000020c4\n\
+_08113ED0:\n\
+ ldrb r1, [r0]\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+_08113ED6:\n\
+ subs r3, r1, r0\n\
+ ldr r1, [sp, 0xC]\n\
+ add r1, r9\n\
+ ldr r0, _08113EFC @ =0x000018c4\n\
+ add r0, r10\n\
+ adds r4, r1, r0\n\
+ ldr r0, _08113F00 @ =0x000028c4\n\
+ add r0, r10\n\
+ adds r2, r5, r0\n\
+ ldrb r0, [r4]\n\
+ ldr r1, _08113F04 @ =0x02014800\n\
+ mov r12, r1\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bls _08113F08\n\
+ adds r1, r0, 0\n\
+ ldrb r0, [r2]\n\
+ b _08113F0C\n\
+ .align 2, 0\n\
+_08113EFC: .4byte 0x000018c4\n\
+_08113F00: .4byte 0x000028c4\n\
+_08113F04: .4byte 0x02014800\n\
+_08113F08:\n\
+ ldrb r1, [r2]\n\
+ ldrb r0, [r4]\n\
+_08113F0C:\n\
+ subs r1, r0\n\
+ adds r3, r1\n\
+ ldr r2, [sp, 0x14]\n\
+ cmp r2, r3\n\
+ ble _08113F2C\n\
+ ldrb r0, [r7]\n\
+ cmp r0, 0\n\
+ bne _08113F2C\n\
+ ldr r0, _08114050 @ =0x000008c4\n\
+ add r0, r12\n\
+ adds r0, r5, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08113F2C\n\
+ str r6, [sp, 0x10]\n\
+ str r3, [sp, 0x14]\n\
+_08113F2C:\n\
+ adds r7, 0x1\n\
+ adds r5, 0x1\n\
+ adds r6, 0x1\n\
+ ldr r3, [sp, 0x8]\n\
+ ldr r4, _08114054 @ =0x02014844\n\
+ adds r0, r3, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ blt _08113EA4\n\
+_08113F3E:\n\
+ ldr r0, [sp, 0xC]\n\
+ ldr r1, [sp, 0x10]\n\
+ ldr r2, [sp, 0x8]\n\
+ bl sub_81141F0\n\
+ ldr r5, [sp, 0x34]\n\
+ str r5, [sp, 0xC]\n\
+ ldr r0, [sp, 0x18]\n\
+ ldrb r0, [r0]\n\
+ cmp r5, r0\n\
+ blt _08113E66\n\
+_08113F54:\n\
+ movs r6, 0\n\
+ ldr r2, _08114058 @ =0x02014800\n\
+ ldr r1, [sp, 0x8]\n\
+ ldr r3, _08114054 @ =0x02014844\n\
+ adds r0, r1, r3\n\
+ adds r4, r2, 0\n\
+ mov r12, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ bge _08113F9E\n\
+ mov r0, r12\n\
+ adds r0, 0x44\n\
+ adds r4, r1, r0\n\
+_08113F6E:\n\
+ ldr r5, [sp, 0x8]\n\
+ lsls r0, r5, 5\n\
+ adds r1, r6, r0\n\
+ adds r0, r2, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r1, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08113F94\n\
+ ldr r3, _08114050 @ =0x000008c4\n\
+ adds r0, r2, r3\n\
+ adds r0, r1, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08113F94\n\
+ adds r0, r6, 0\n\
+ adds r1, r5, 0\n\
+ bl sub_811430C\n\
+_08113F94:\n\
+ adds r6, 0x1\n\
+ ldr r2, _08114058 @ =0x02014800\n\
+ ldrb r5, [r4]\n\
+ cmp r6, r5\n\
+ blt _08113F6E\n\
+_08113F9E:\n\
+ ldr r0, [sp, 0x8]\n\
+ ldr r1, _0811405C @ =0x02014804\n\
+ adds r2, r0, r1\n\
+ ldr r3, _08114054 @ =0x02014844\n\
+ adds r1, r0, r3\n\
+ ldrb r0, [r2]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bne _08113FCC\n\
+ movs r6, 0\n\
+ ldrb r4, [r2]\n\
+ cmp r6, r4\n\
+ bge _08113FCC\n\
+ adds r4, r2, 0\n\
+_08113FBA:\n\
+ adds r0, r6, 0\n\
+ adds r1, r6, 0\n\
+ ldr r2, [sp, 0x8]\n\
+ bl sub_81141F0\n\
+ adds r6, 0x1\n\
+ ldrb r5, [r4]\n\
+ cmp r6, r5\n\
+ blt _08113FBA\n\
+_08113FCC:\n\
+ ldr r0, [sp, 0x8]\n\
+ ldr r1, _0811405C @ =0x02014804\n\
+ adds r2, r0, r1\n\
+ ldr r3, _08114054 @ =0x02014844\n\
+ adds r1, r0, r3\n\
+ ldrb r0, [r2]\n\
+ ldr r4, _08114058 @ =0x02014800\n\
+ ldrb r5, [r1]\n\
+ cmp r0, r5\n\
+ bhi _08113FE2\n\
+ b _081141C4\n\
+_08113FE2:\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x10]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ blt _08113FEE\n\
+ b _08114104\n\
+_08113FEE:\n\
+ str r2, [sp, 0x2C]\n\
+ ldr r1, [sp, 0x8]\n\
+ lsls r1, 5\n\
+ mov r9, r1\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x44\n\
+ ldr r2, [sp, 0x8]\n\
+ adds r0, r2, r0\n\
+ str r0, [sp, 0x20]\n\
+ mov r3, r9\n\
+ str r3, [sp, 0x24]\n\
+_08114004:\n\
+ movs r4, 0x80\n\
+ lsls r4, 1\n\
+ str r4, [sp, 0x14]\n\
+ movs r6, 0\n\
+ ldr r5, [sp, 0x10]\n\
+ adds r5, 0x1\n\
+ str r5, [sp, 0x38]\n\
+ ldr r0, [sp, 0x2C]\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ bge _081140C4\n\
+ ldr r1, [sp, 0x10]\n\
+ ldr r2, [sp, 0x24]\n\
+ adds r1, r2\n\
+ mov r10, r1\n\
+ ldr r0, _08114058 @ =0x02014800\n\
+ adds r0, 0xC4\n\
+ adds r2, r0\n\
+ mov r8, r2\n\
+ ldr r7, [sp, 0x24]\n\
+ ldr r3, _08114058 @ =0x02014800\n\
+ ldr r4, _08114060 @ =0x000010c4\n\
+ adds r0, r3, r4\n\
+ adds r5, r7, r0\n\
+ ldr r0, _08114064 @ =0x020168c4\n\
+ add r0, r10\n\
+ mov r12, r0\n\
+ ldrb r1, [r0]\n\
+ str r1, [sp, 0x28]\n\
+_0811403E:\n\
+ ldrb r0, [r5]\n\
+ ldr r2, [sp, 0x28]\n\
+ cmp r0, r2\n\
+ bls _08114068\n\
+ adds r1, r0, 0\n\
+ mov r3, r12\n\
+ ldrb r0, [r3]\n\
+ b _0811406E\n\
+ .align 2, 0\n\
+_08114050: .4byte 0x000008c4\n\
+_08114054: .4byte 0x02014844\n\
+_08114058: .4byte 0x02014800\n\
+_0811405C: .4byte 0x02014804\n\
+_08114060: .4byte 0x000010c4\n\
+_08114064: .4byte 0x020168c4\n\
+_08114068:\n\
+ mov r4, r12\n\
+ ldrb r1, [r4]\n\
+ ldrb r0, [r5]\n\
+_0811406E:\n\
+ subs r3, r1, r0\n\
+ ldr r1, _0811408C @ =0x02014800\n\
+ ldr r2, _08114090 @ =0x000018c4\n\
+ adds r0, r1, r2\n\
+ adds r4, r7, r0\n\
+ ldr r2, _08114094 @ =0x020170c4\n\
+ add r2, r10\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bls _08114098\n\
+ adds r1, r0, 0\n\
+ ldrb r0, [r2]\n\
+ b _0811409C\n\
+ .align 2, 0\n\
+_0811408C: .4byte 0x02014800\n\
+_08114090: .4byte 0x000018c4\n\
+_08114094: .4byte 0x020170c4\n\
+_08114098:\n\
+ ldrb r1, [r2]\n\
+ ldrb r0, [r4]\n\
+_0811409C:\n\
+ subs r1, r0\n\
+ adds r3, r1\n\
+ ldr r2, [sp, 0x14]\n\
+ cmp r2, r3\n\
+ ble _081140B2\n\
+ mov r4, r8\n\
+ ldrb r0, [r4]\n\
+ cmp r0, 0\n\
+ bne _081140B2\n\
+ str r6, [sp, 0xC]\n\
+ str r3, [sp, 0x14]\n\
+_081140B2:\n\
+ movs r0, 0x1\n\
+ add r8, r0\n\
+ adds r7, 0x1\n\
+ adds r5, 0x1\n\
+ adds r6, 0x1\n\
+ ldr r1, [sp, 0x2C]\n\
+ ldrb r1, [r1]\n\
+ cmp r6, r1\n\
+ blt _0811403E\n\
+_081140C4:\n\
+ ldr r3, [sp, 0xC]\n\
+ add r3, r9\n\
+ ldr r2, _08114164 @ =0x02014800\n\
+ ldr r4, _08114168 @ =0x000030c4\n\
+ adds r1, r2, r4\n\
+ adds r1, r3, r1\n\
+ ldr r2, [sp, 0x10]\n\
+ add r2, r9\n\
+ ldr r5, _0811416C @ =0x020168c4\n\
+ adds r0, r2, r5\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r1]\n\
+ ldr r0, _08114164 @ =0x02014800\n\
+ ldr r4, _08114170 @ =0x000038c4\n\
+ adds r1, r0, r4\n\
+ adds r1, r3, r1\n\
+ ldr r5, _08114174 @ =0x020170c4\n\
+ adds r2, r5\n\
+ ldrb r0, [r2]\n\
+ strb r0, [r1]\n\
+ ldr r0, _08114164 @ =0x02014800\n\
+ adds r0, 0xC4\n\
+ adds r3, r0\n\
+ movs r0, 0x1\n\
+ strb r0, [r3]\n\
+ ldr r0, [sp, 0x38]\n\
+ str r0, [sp, 0x10]\n\
+ ldr r1, [sp, 0x20]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ bge _08114104\n\
+ b _08114004\n\
+_08114104:\n\
+ movs r6, 0\n\
+ ldr r4, _08114164 @ =0x02014800\n\
+ ldr r2, [sp, 0x8]\n\
+ ldr r3, _08114178 @ =0x02014804\n\
+ adds r0, r2, r3\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ bge _081141C4\n\
+ adds r7, r4, 0\n\
+ mov r9, r6\n\
+ movs r5, 0xC4\n\
+ adds r5, r7\n\
+ mov r8, r5\n\
+_0811411E:\n\
+ ldr r1, [sp, 0x8]\n\
+ lsls r0, r1, 5\n\
+ adds r2, r6, r0\n\
+ ldr r3, _0811417C @ =0x000020c4\n\
+ adds r0, r7, r3\n\
+ adds r0, r2\n\
+ mov r10, r0\n\
+ ldr r5, _08114168 @ =0x000030c4\n\
+ adds r0, r7, r5\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ mov r1, r10\n\
+ strb r0, [r1]\n\
+ ldr r3, _08114180 @ =0x000028c4\n\
+ adds r0, r7, r3\n\
+ adds r3, r2, r0\n\
+ ldr r5, _08114170 @ =0x000038c4\n\
+ adds r0, r7, r5\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ strb r0, [r3]\n\
+ mov r0, r8\n\
+ adds r1, r2, r0\n\
+ ldrb r0, [r1]\n\
+ cmp r0, 0\n\
+ beq _08114184\n\
+ mov r2, r9\n\
+ strb r2, [r1]\n\
+ adds r0, r6, 0\n\
+ adds r1, r6, 0\n\
+ ldr r2, [sp, 0x8]\n\
+ bl sub_81141F0\n\
+ b _081141B4\n\
+ .align 2, 0\n\
+_08114164: .4byte 0x02014800\n\
+_08114168: .4byte 0x000030c4\n\
+_0811416C: .4byte 0x020168c4\n\
+_08114170: .4byte 0x000038c4\n\
+_08114174: .4byte 0x020170c4\n\
+_08114178: .4byte 0x02014804\n\
+_0811417C: .4byte 0x000020c4\n\
+_08114180: .4byte 0x000028c4\n\
+_08114184:\n\
+ ldr r5, _081141E0 @ =0x000010c4\n\
+ adds r1, r4, r5\n\
+ adds r1, r2, r1\n\
+ ldr r5, _081141E4 @ =0x000018c4\n\
+ adds r0, r4, r5\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ ldrb r2, [r1]\n\
+ subs r0, r2\n\
+ lsrs r1, r0, 31\n\
+ adds r0, r1\n\
+ asrs r0, 1\n\
+ adds r2, r0\n\
+ strb r2, [r3]\n\
+ mov r0, r10\n\
+ strb r2, [r0]\n\
+ ldrb r0, [r3]\n\
+ subs r0, 0x1\n\
+ strb r0, [r3]\n\
+ adds r0, r6, 0\n\
+ adds r1, r6, 0\n\
+ ldr r2, [sp, 0x8]\n\
+ bl sub_81141F0\n\
+_081141B4:\n\
+ adds r6, 0x1\n\
+ ldr r4, _081141E8 @ =0x02014800\n\
+ ldr r1, [sp, 0x8]\n\
+ ldr r2, _081141EC @ =0x02014804\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ cmp r6, r0\n\
+ blt _0811411E\n\
+_081141C4:\n\
+ ldr r3, [sp, 0x30]\n\
+ str r3, [sp, 0x8]\n\
+ cmp r3, 0x3F\n\
+ bgt _081141CE\n\
+ b _08113E3A\n\
+_081141CE:\n\
+ add sp, 0x3C\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\
+_081141E0: .4byte 0x000010c4\n\
+_081141E4: .4byte 0x000018c4\n\
+_081141E8: .4byte 0x02014800\n\
+_081141EC: .4byte 0x02014804\n\
+ .syntax divided");
+}
+
+void sub_81141F0(s32 a, s32 b, s32 c)
+{
+ u32 r7;
+
+ sEvoInfo.unk30C4[c][b] = sEvoInfo.unk10C4[c][a];
+ sEvoInfo.unk38C4[c][b] = sEvoInfo.unk18C4[c][a];
+
+ r7 = 0;
+ if (sEvoInfo.unk10C4[c][a] < sEvoInfo.unk20C4[c][b])
+ {
+ sEvoInfo.unkC4[c][b] = 4;
+ r7 = sEvoInfo.unk20C4[c][b] - sEvoInfo.unk10C4[c][a];
+ }
+ else if (sEvoInfo.unk10C4[c][a] > sEvoInfo.unk20C4[c][b])
+ {
+ sEvoInfo.unkC4[c][b] = 1;
+ r7 = sEvoInfo.unk10C4[c][a] - sEvoInfo.unk20C4[c][b];
+ }
+ sEvoInfo.unk80C4[c][b] = r7 * 16;
+
+ r7 = 0;
+ if (sEvoInfo.unk18C4[c][a] < sEvoInfo.unk28C4[c][b])
+ {
+ sEvoInfo.unk8C4[c][b] = 3;
+ r7 = sEvoInfo.unk28C4[c][b] - sEvoInfo.unk18C4[c][a];
+ }
+ else if (sEvoInfo.unk18C4[c][a] > sEvoInfo.unk28C4[c][b])
+ {
+ sEvoInfo.unk8C4[c][b] = 2;
+ r7 = sEvoInfo.unk18C4[c][a] - sEvoInfo.unk28C4[c][b];
+ }
+ sEvoInfo.unk90C4[c][b] = r7 * 16;
+
+ sEvoInfo.unk84[c]++;
+}
+
+void sub_811430C(u32 a, u32 b)
+{
+ u8 r2 = sEvoInfo.unk28C4[b][a];
+ u8 r3 = sEvoInfo.unk20C4[b][a];
+ s32 r7 = r2 - r3;
+
+ sEvoInfo.unk30C4[b][a] = sEvoInfo.unk38C4[b][a] = r3 + r7 / 2;
+ sEvoInfo.unkC4[b][a] = 5;
+ sEvoInfo.unk8C4[b][a] = 7;
+ sEvoInfo.unk84[b]++;
+ r7 = sEvoInfo.unk30C4[b][a] - sEvoInfo.unk20C4[b][a];
+ sEvoInfo.unk80C4[b][a] = r7 * 16;
+ r7 = sEvoInfo.unk28C4[b][a] - sEvoInfo.unk38C4[b][a];
+ sEvoInfo.unk90C4[b][a] = r7 * 16;
+}
+
+__attribute__((naked))
+void unref_sub_81143CC()
+{
+ 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\
+ movs r0, 0x1\n\
+ str r0, [sp, 0x4]\n\
+ ldr r0, _08114408 @ =0x02014800\n\
+ ldr r2, _0811440C @ =0x0000a0c4\n\
+ adds r1, r0, r2\n\
+ ldrb r3, [r1]\n\
+ adds r4, r0, 0\n\
+ cmp r3, 0\n\
+ beq _081143EE\n\
+ subs r0, r3, 0x1\n\
+ strb r0, [r1]\n\
+_081143EE:\n\
+ movs r5, 0\n\
+ str r5, [sp]\n\
+_081143F2:\n\
+ movs r3, 0\n\
+ adds r2, r4, 0\n\
+ adds r0, r4, 0\n\
+ adds r0, 0x84\n\
+ ldr r1, [sp]\n\
+ adds r0, r1, r0\n\
+ adds r1, 0x1\n\
+ str r1, [sp, 0x8]\n\
+ bl _08114D84\n\
+ .align 2, 0\n\
+_08114408: .4byte 0x02014800\n\
+_0811440C: .4byte 0x0000a0c4\n\
+_08114410:\n\
+ ldr r5, [sp]\n\
+ lsls r0, r5, 5\n\
+ adds r1, r3, r0\n\
+ adds r2, 0xC4\n\
+ adds r1, r2\n\
+ ldrb r2, [r1]\n\
+ mov r8, r0\n\
+ adds r0, r3, 0x1\n\
+ mov r10, r0\n\
+ cmp r2, 0xC\n\
+ bls _08114428\n\
+ b _081148D2\n\
+_08114428:\n\
+ lsls r0, r2, 2\n\
+ ldr r1, _08114434 @ =_08114438\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_08114434: .4byte _08114438\n\
+ .align 2, 0\n\
+_08114438:\n\
+ .4byte _081148D2\n\
+ .4byte _0811446C\n\
+ .4byte _081144F0\n\
+ .4byte _0811457C\n\
+ .4byte _08114600\n\
+ .4byte _0811468C\n\
+ .4byte _081146C8\n\
+ .4byte _08114704\n\
+ .4byte _08114740\n\
+ .4byte _0811477C\n\
+ .4byte _081147D0\n\
+ .4byte _08114810\n\
+ .4byte _08114858\n\
+_0811446C:\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x4]\n\
+ lsls r0, r3, 1\n\
+ ldr r2, [sp]\n\
+ lsls r1, r2, 6\n\
+ adds r0, r1\n\
+ ldr r5, _081144E0 @ =0x000060c4\n\
+ adds r2, r4, r5\n\
+ adds r2, r0, r2\n\
+ ldr r5, _081144E4 @ =0x000080c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ adds r1, r3, 0x1\n\
+ mov r10, r1\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r2, r5\n\
+ blt _081144A6\n\
+ b _081148D2\n\
+_081144A6:\n\
+ mov r9, r4\n\
+ mov r4, r8\n\
+ adds r7, r3, r4\n\
+ ldr r0, _081144E8 @ =0x000030c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ ldr r0, _081144EC @ =0x000020c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_081144B8:\n\
+ ldrb r0, [r4]\n\
+ subs r0, 0x1\n\
+ strb r0, [r4]\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DB4\n\
+ ldrb r0, [r4]\n\
+ ldr r2, [sp, 0xC]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _081144D8\n\
+ b _081148A0\n\
+_081144D8:\n\
+ adds r6, 0x1\n\
+ cmp r6, r5\n\
+ blt _081144B8\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_081144E0: .4byte 0x000060c4\n\
+_081144E4: .4byte 0x000080c4\n\
+_081144E8: .4byte 0x000030c4\n\
+_081144EC: .4byte 0x000020c4\n\
+_081144F0:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r4, _08114568 @ =0x02014800\n\
+ lsls r0, r3, 1\n\
+ ldr r5, [sp]\n\
+ lsls r1, r5, 6\n\
+ adds r0, r1\n\
+ ldr r1, _0811456C @ =0x000060c4\n\
+ adds r2, r4, r1\n\
+ adds r2, r0, r2\n\
+ ldr r5, _08114570 @ =0x000080c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ adds r1, r3, 0x1\n\
+ mov r10, r1\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r2, r5\n\
+ blt _0811452C\n\
+ b _081148D2\n\
+_0811452C:\n\
+ mov r9, r4\n\
+ mov r4, r8\n\
+ adds r7, r3, r4\n\
+ ldr r0, _08114574 @ =0x000030c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ ldr r0, _08114578 @ =0x000020c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_0811453E:\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _08114548\n\
+ b _081148B8\n\
+_08114548:\n\
+ adds r1, r0, 0\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DF0\n\
+ ldrb r0, [r4]\n\
+ subs r0, 0x1\n\
+ strb r0, [r4]\n\
+ adds r6, 0x1\n\
+ ldr r2, [sp, 0xC]\n\
+ ldr r3, [sp, 0x10]\n\
+ cmp r6, r5\n\
+ blt _0811453E\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_08114568: .4byte 0x02014800\n\
+_0811456C: .4byte 0x000060c4\n\
+_08114570: .4byte 0x000080c4\n\
+_08114574: .4byte 0x000030c4\n\
+_08114578: .4byte 0x000020c4\n\
+_0811457C:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ lsls r0, r3, 1\n\
+ ldr r5, [sp]\n\
+ lsls r1, r5, 6\n\
+ adds r0, r1\n\
+ ldr r1, _081145F0 @ =0x000060c4\n\
+ adds r2, r4, r1\n\
+ adds r2, r0, r2\n\
+ ldr r5, _081145F4 @ =0x000080c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ adds r1, r3, 0x1\n\
+ mov r10, r1\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r2, r5\n\
+ blt _081145B6\n\
+ b _081148D2\n\
+_081145B6:\n\
+ mov r9, r4\n\
+ mov r4, r8\n\
+ adds r7, r3, r4\n\
+ ldr r0, _081145F8 @ =0x000030c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ ldr r0, _081145FC @ =0x000020c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_081145C8:\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DB4\n\
+ ldrb r0, [r4]\n\
+ ldr r2, [sp, 0xC]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _081145E8\n\
+ b _081148AC\n\
+_081145E8:\n\
+ adds r6, 0x1\n\
+ cmp r6, r5\n\
+ blt _081145C8\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_081145F0: .4byte 0x000060c4\n\
+_081145F4: .4byte 0x000080c4\n\
+_081145F8: .4byte 0x000030c4\n\
+_081145FC: .4byte 0x000020c4\n\
+_08114600:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r4, _08114678 @ =0x02014800\n\
+ lsls r0, r3, 1\n\
+ ldr r5, [sp]\n\
+ lsls r1, r5, 6\n\
+ adds r0, r1\n\
+ ldr r1, _0811467C @ =0x000060c4\n\
+ adds r2, r4, r1\n\
+ adds r2, r0, r2\n\
+ ldr r5, _08114680 @ =0x000080c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ adds r1, r3, 0x1\n\
+ mov r10, r1\n\
+ ldr r2, [sp, 0x4]\n\
+ cmp r2, r5\n\
+ blt _0811463C\n\
+ b _081148D2\n\
+_0811463C:\n\
+ mov r9, r4\n\
+ mov r4, r8\n\
+ adds r7, r3, r4\n\
+ ldr r0, _08114684 @ =0x000030c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ ldr r0, _08114688 @ =0x000020c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_0811464E:\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _08114658\n\
+ b _081148B8\n\
+_08114658:\n\
+ adds r1, r0, 0\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DF0\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ adds r6, 0x1\n\
+ ldr r2, [sp, 0xC]\n\
+ ldr r3, [sp, 0x10]\n\
+ cmp r6, r5\n\
+ blt _0811464E\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_08114678: .4byte 0x02014800\n\
+_0811467C: .4byte 0x000060c4\n\
+_08114680: .4byte 0x000080c4\n\
+_08114684: .4byte 0x000030c4\n\
+_08114688: .4byte 0x000020c4\n\
+_0811468C:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r5, _081146C0 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _081146C4 @ =0x000030c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ ldr r3, [sp, 0x10]\n\
+ adds r2, r3, 0x1\n\
+ mov r10, r2\n\
+ cmp r0, 0\n\
+ bne _081146B4\n\
+ b _081148D2\n\
+_081146B4:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r4, r0\n\
+ movs r1, 0x9\n\
+ strb r1, [r0]\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_081146C0: .4byte 0x02014800\n\
+_081146C4: .4byte 0x000030c4\n\
+_081146C8:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r5, _081146FC @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _08114700 @ =0x000030c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ ldr r3, [sp, 0x10]\n\
+ adds r2, r3, 0x1\n\
+ mov r10, r2\n\
+ cmp r0, 0\n\
+ bne _081146F0\n\
+ b _081148D2\n\
+_081146F0:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xA\n\
+ strb r1, [r0]\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_081146FC: .4byte 0x02014800\n\
+_08114700: .4byte 0x000030c4\n\
+_08114704:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r5, _08114738 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _0811473C @ =0x000030c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ ldr r3, [sp, 0x10]\n\
+ adds r2, r3, 0x1\n\
+ mov r10, r2\n\
+ cmp r0, 0\n\
+ bne _0811472C\n\
+ b _081148D2\n\
+_0811472C:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xB\n\
+ strb r1, [r0]\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_08114738: .4byte 0x02014800\n\
+_0811473C: .4byte 0x000030c4\n\
+_08114740:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r5, _08114774 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _08114778 @ =0x000030c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ ldr r3, [sp, 0x10]\n\
+ adds r2, r3, 0x1\n\
+ mov r10, r2\n\
+ cmp r0, 0\n\
+ bne _08114768\n\
+ b _081148D2\n\
+_08114768:\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xC\n\
+ strb r1, [r0]\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_08114774: .4byte 0x02014800\n\
+_08114778: .4byte 0x000030c4\n\
+_0811477C:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r6, _081147B4 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r5, r3, r0\n\
+ ldr r1, _081147B8 @ =0x000030c4\n\
+ adds r4, r6, r1\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DB4\n\
+ ldr r2, _081147BC @ =0x000020c4\n\
+ adds r0, r6, r2\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _081147C0\n\
+ adds r0, r6, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r5, r0\n\
+ mov r4, sp\n\
+ ldrb r4, [r4, 0x4]\n\
+ strb r4, [r0]\n\
+ b _08114844\n\
+ .align 2, 0\n\
+_081147B4: .4byte 0x02014800\n\
+_081147B8: .4byte 0x000030c4\n\
+_081147BC: .4byte 0x000020c4\n\
+_081147C0:\n\
+ adds r0, r6, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x1\n\
+ strb r1, [r0]\n\
+ adds r0, r3, 0x1\n\
+ mov r10, r0\n\
+ b _081148D2\n\
+_081147D0:\n\
+ movs r1, 0\n\
+ str r1, [sp, 0x4]\n\
+ ldr r6, _08114804 @ =0x02014800\n\
+ mov r2, r8\n\
+ adds r5, r3, r2\n\
+ ldr r0, _08114808 @ =0x000030c4\n\
+ adds r4, r6, r0\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DF0\n\
+ ldr r1, _0811480C @ =0x000020c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ beq _08114882\n\
+ adds r0, r6, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x2\n\
+ b _08114842\n\
+ .align 2, 0\n\
+_08114804: .4byte 0x02014800\n\
+_08114808: .4byte 0x000030c4\n\
+_0811480C: .4byte 0x000020c4\n\
+_08114810:\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x4]\n\
+ ldr r6, _0811484C @ =0x02014800\n\
+ mov r1, r8\n\
+ adds r5, r3, r1\n\
+ ldr r2, _08114850 @ =0x000030c4\n\
+ adds r4, r6, r2\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DB4\n\
+ ldr r1, _08114854 @ =0x000020c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ beq _08114882\n\
+ adds r0, r6, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x3\n\
+_08114842:\n\
+ strb r1, [r0]\n\
+_08114844:\n\
+ adds r5, r3, 0x1\n\
+ mov r10, r5\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_0811484C: .4byte 0x02014800\n\
+_08114850: .4byte 0x000030c4\n\
+_08114854: .4byte 0x000020c4\n\
+_08114858:\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x4]\n\
+ ldr r6, _08114894 @ =0x02014800\n\
+ mov r1, r8\n\
+ adds r5, r3, r1\n\
+ ldr r2, _08114898 @ =0x000030c4\n\
+ adds r4, r6, r2\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DF0\n\
+ ldr r1, _0811489C @ =0x000020c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _081148C4\n\
+_08114882:\n\
+ adds r0, r6, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r5, r0\n\
+ mov r2, sp\n\
+ ldrb r2, [r2, 0x4]\n\
+ strb r2, [r0]\n\
+ adds r4, r3, 0x1\n\
+ mov r10, r4\n\
+ b _081148D2\n\
+ .align 2, 0\n\
+_08114894: .4byte 0x02014800\n\
+_08114898: .4byte 0x000030c4\n\
+_0811489C: .4byte 0x000020c4\n\
+_081148A0:\n\
+ mov r0, r9\n\
+ adds r0, 0xC4\n\
+ adds r0, r7, r0\n\
+ movs r5, 0\n\
+ strb r5, [r0]\n\
+ b _081148D2\n\
+_081148AC:\n\
+ mov r0, r9\n\
+ adds r0, 0xC4\n\
+ adds r0, r7, r0\n\
+ movs r1, 0\n\
+ strb r1, [r0]\n\
+ b _081148D2\n\
+_081148B8:\n\
+ mov r0, r9\n\
+ adds r0, 0xC4\n\
+ adds r0, r7, r0\n\
+ movs r1, 0\n\
+ strb r1, [r0]\n\
+ b _081148D2\n\
+_081148C4:\n\
+ adds r0, r6, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x4\n\
+ strb r1, [r0]\n\
+ adds r2, r3, 0x1\n\
+ mov r10, r2\n\
+_081148D2:\n\
+ ldr r0, _081148F4 @ =0x02014800\n\
+ mov r4, r8\n\
+ adds r1, r3, r4\n\
+ ldr r5, _081148F8 @ =0x000008c4\n\
+ adds r2, r0, r5\n\
+ adds r1, r2\n\
+ ldrb r1, [r1]\n\
+ adds r4, r0, 0\n\
+ cmp r1, 0xC\n\
+ bls _081148E8\n\
+ b _08114D76\n\
+_081148E8:\n\
+ lsls r0, r1, 2\n\
+ ldr r1, _081148FC @ =_08114900\n\
+ adds r0, r1\n\
+ ldr r0, [r0]\n\
+ mov pc, r0\n\
+ .align 2, 0\n\
+_081148F4: .4byte 0x02014800\n\
+_081148F8: .4byte 0x000008c4\n\
+_081148FC: .4byte _08114900\n\
+ .align 2, 0\n\
+_08114900:\n\
+ .4byte _08114D76\n\
+ .4byte _08114934\n\
+ .4byte _081149B8\n\
+ .4byte _08114A3C\n\
+ .4byte _08114AC0\n\
+ .4byte _08114B44\n\
+ .4byte _08114B7C\n\
+ .4byte _08114BB4\n\
+ .4byte _08114BEC\n\
+ .4byte _08114C24\n\
+ .4byte _08114C78\n\
+ .4byte _08114CB8\n\
+ .4byte _08114CF8\n\
+_08114934:\n\
+ movs r0, 0\n\
+ str r0, [sp, 0x4]\n\
+ lsls r0, r3, 1\n\
+ ldr r2, [sp]\n\
+ lsls r1, r2, 6\n\
+ adds r0, r1\n\
+ ldr r5, _081149A8 @ =0x000070c4\n\
+ adds r2, r4, r5\n\
+ adds r2, r0, r2\n\
+ ldr r5, _081149AC @ =0x000090c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ ldr r1, [sp, 0x4]\n\
+ cmp r1, r5\n\
+ blt _0811496A\n\
+ b _08114D76\n\
+_0811496A:\n\
+ mov r9, r4\n\
+ mov r2, r8\n\
+ adds r7, r3, r2\n\
+ ldr r0, _081149B0 @ =0x000038c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ movs r3, 0\n\
+ ldr r0, _081149B4 @ =0x000028c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_0811497E:\n\
+ ldrb r0, [r4]\n\
+ subs r0, 0x1\n\
+ strb r0, [r4]\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DB4\n\
+ ldrb r0, [r4]\n\
+ ldr r2, [sp, 0xC]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _0811499E\n\
+ b _08114D4C\n\
+_0811499E:\n\
+ adds r6, 0x1\n\
+ cmp r6, r5\n\
+ blt _0811497E\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_081149A8: .4byte 0x000070c4\n\
+_081149AC: .4byte 0x000090c4\n\
+_081149B0: .4byte 0x000038c4\n\
+_081149B4: .4byte 0x000028c4\n\
+_081149B8:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r4, _08114A28 @ =0x02014800\n\
+ lsls r0, r3, 1\n\
+ ldr r5, [sp]\n\
+ lsls r1, r5, 6\n\
+ adds r0, r1\n\
+ ldr r1, _08114A2C @ =0x000070c4\n\
+ adds r2, r4, r1\n\
+ adds r2, r0, r2\n\
+ ldr r5, _08114A30 @ =0x000090c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ ldr r1, [sp, 0x4]\n\
+ cmp r1, r5\n\
+ blt _081149F0\n\
+ b _08114D76\n\
+_081149F0:\n\
+ mov r9, r4\n\
+ mov r2, r8\n\
+ adds r7, r3, r2\n\
+ ldr r0, _08114A34 @ =0x000038c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ ldr r0, _08114A38 @ =0x000028c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_08114A02:\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _08114A0C\n\
+ b _08114D3C\n\
+_08114A0C:\n\
+ adds r1, r0, 0\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ bl sub_8114DF0\n\
+ ldrb r0, [r4]\n\
+ subs r0, 0x1\n\
+ strb r0, [r4]\n\
+ adds r6, 0x1\n\
+ ldr r2, [sp, 0xC]\n\
+ cmp r6, r5\n\
+ blt _08114A02\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_08114A28: .4byte 0x02014800\n\
+_08114A2C: .4byte 0x000070c4\n\
+_08114A30: .4byte 0x000090c4\n\
+_08114A34: .4byte 0x000038c4\n\
+_08114A38: .4byte 0x000028c4\n\
+_08114A3C:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ lsls r0, r3, 1\n\
+ ldr r5, [sp]\n\
+ lsls r1, r5, 6\n\
+ adds r0, r1\n\
+ ldr r1, _08114AB0 @ =0x000070c4\n\
+ adds r2, r4, r1\n\
+ adds r2, r0, r2\n\
+ ldr r5, _08114AB4 @ =0x000090c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ ldr r1, [sp, 0x4]\n\
+ cmp r1, r5\n\
+ blt _08114A72\n\
+ b _08114D76\n\
+_08114A72:\n\
+ mov r9, r4\n\
+ mov r2, r8\n\
+ adds r7, r3, r2\n\
+ ldr r0, _08114AB8 @ =0x000038c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ movs r3, 0\n\
+ ldr r0, _08114ABC @ =0x000028c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_08114A86:\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ str r3, [sp, 0x10]\n\
+ bl sub_8114DB4\n\
+ ldrb r0, [r4]\n\
+ ldr r2, [sp, 0xC]\n\
+ ldr r3, [sp, 0x10]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _08114AA6\n\
+ b _08114D4C\n\
+_08114AA6:\n\
+ adds r6, 0x1\n\
+ cmp r6, r5\n\
+ blt _08114A86\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_08114AB0: .4byte 0x000070c4\n\
+_08114AB4: .4byte 0x000090c4\n\
+_08114AB8: .4byte 0x000038c4\n\
+_08114ABC: .4byte 0x000028c4\n\
+_08114AC0:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r4, _08114B30 @ =0x02014800\n\
+ lsls r0, r3, 1\n\
+ ldr r5, [sp]\n\
+ lsls r1, r5, 6\n\
+ adds r0, r1\n\
+ ldr r1, _08114B34 @ =0x000070c4\n\
+ adds r2, r4, r1\n\
+ adds r2, r0, r2\n\
+ ldr r5, _08114B38 @ =0x000090c4\n\
+ adds r1, r4, r5\n\
+ adds r0, r1\n\
+ ldrh r1, [r0]\n\
+ ldrh r0, [r2]\n\
+ adds r1, r0\n\
+ movs r0, 0xFF\n\
+ lsls r0, 8\n\
+ ands r0, r1\n\
+ lsrs r5, r0, 8\n\
+ movs r0, 0xFF\n\
+ ands r1, r0\n\
+ strh r1, [r2]\n\
+ movs r6, 0\n\
+ ldr r1, [sp, 0x4]\n\
+ cmp r1, r5\n\
+ blt _08114AF8\n\
+ b _08114D76\n\
+_08114AF8:\n\
+ mov r9, r4\n\
+ mov r2, r8\n\
+ adds r7, r3, r2\n\
+ ldr r0, _08114B3C @ =0x000038c4\n\
+ add r0, r9\n\
+ adds r4, r7, r0\n\
+ ldr r0, _08114B40 @ =0x000028c4\n\
+ add r0, r9\n\
+ adds r2, r7, r0\n\
+_08114B0A:\n\
+ ldrb r0, [r4]\n\
+ ldrb r1, [r2]\n\
+ cmp r0, r1\n\
+ bne _08114B14\n\
+ b _08114D5C\n\
+_08114B14:\n\
+ adds r1, r0, 0\n\
+ ldr r0, [sp]\n\
+ str r2, [sp, 0xC]\n\
+ bl sub_8114DF0\n\
+ ldrb r0, [r4]\n\
+ adds r0, 0x1\n\
+ strb r0, [r4]\n\
+ adds r6, 0x1\n\
+ ldr r2, [sp, 0xC]\n\
+ cmp r6, r5\n\
+ blt _08114B0A\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_08114B30: .4byte 0x02014800\n\
+_08114B34: .4byte 0x000070c4\n\
+_08114B38: .4byte 0x000090c4\n\
+_08114B3C: .4byte 0x000038c4\n\
+_08114B40: .4byte 0x000028c4\n\
+_08114B44:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r5, _08114B70 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _08114B74 @ =0x000038c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08114B64\n\
+ b _08114D76\n\
+_08114B64:\n\
+ ldr r2, _08114B78 @ =0x000008c4\n\
+ adds r0, r5, r2\n\
+ adds r0, r4, r0\n\
+ movs r1, 0x9\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114B70: .4byte 0x02014800\n\
+_08114B74: .4byte 0x000038c4\n\
+_08114B78: .4byte 0x000008c4\n\
+_08114B7C:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r5, _08114BA8 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _08114BAC @ =0x000038c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08114B9C\n\
+ b _08114D76\n\
+_08114B9C:\n\
+ ldr r2, _08114BB0 @ =0x000008c4\n\
+ adds r0, r5, r2\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xA\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114BA8: .4byte 0x02014800\n\
+_08114BAC: .4byte 0x000038c4\n\
+_08114BB0: .4byte 0x000008c4\n\
+_08114BB4:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r5, _08114BE0 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _08114BE4 @ =0x000038c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08114BD4\n\
+ b _08114D76\n\
+_08114BD4:\n\
+ ldr r2, _08114BE8 @ =0x000008c4\n\
+ adds r0, r5, r2\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xB\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114BE0: .4byte 0x02014800\n\
+_08114BE4: .4byte 0x000038c4\n\
+_08114BE8: .4byte 0x000008c4\n\
+_08114BEC:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r5, _08114C18 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r4, r3, r0\n\
+ ldr r1, _08114C1C @ =0x000038c4\n\
+ adds r0, r5, r1\n\
+ adds r0, r4, r0\n\
+ ldrb r1, [r0]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114E48\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ bne _08114C0C\n\
+ b _08114D76\n\
+_08114C0C:\n\
+ ldr r2, _08114C20 @ =0x000008c4\n\
+ adds r0, r5, r2\n\
+ adds r0, r4, r0\n\
+ movs r1, 0xC\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114C18: .4byte 0x02014800\n\
+_08114C1C: .4byte 0x000038c4\n\
+_08114C20: .4byte 0x000008c4\n\
+_08114C24:\n\
+ movs r4, 0\n\
+ str r4, [sp, 0x4]\n\
+ ldr r6, _08114C58 @ =0x02014800\n\
+ mov r0, r8\n\
+ adds r5, r3, r0\n\
+ ldr r1, _08114C5C @ =0x000038c4\n\
+ adds r4, r6, r1\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114DB4\n\
+ ldr r2, _08114C60 @ =0x000028c4\n\
+ adds r0, r6, r2\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _08114C68\n\
+ ldr r4, _08114C64 @ =0x000008c4\n\
+ adds r0, r6, r4\n\
+ adds r0, r5, r0\n\
+ mov r5, sp\n\
+ ldrb r5, [r5, 0x4]\n\
+ strb r5, [r0]\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_08114C58: .4byte 0x02014800\n\
+_08114C5C: .4byte 0x000038c4\n\
+_08114C60: .4byte 0x000028c4\n\
+_08114C64: .4byte 0x000008c4\n\
+_08114C68:\n\
+ ldr r1, _08114C74 @ =0x000008c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x1\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114C74: .4byte 0x000008c4\n\
+_08114C78:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r6, _08114CA8 @ =0x02014800\n\
+ mov r4, r8\n\
+ adds r5, r3, r4\n\
+ ldr r0, _08114CAC @ =0x000038c4\n\
+ adds r4, r6, r0\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114DF0\n\
+ ldr r1, _08114CB0 @ =0x000028c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ beq _08114D1E\n\
+ ldr r1, _08114CB4 @ =0x000008c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x2\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114CA8: .4byte 0x02014800\n\
+_08114CAC: .4byte 0x000038c4\n\
+_08114CB0: .4byte 0x000028c4\n\
+_08114CB4: .4byte 0x000008c4\n\
+_08114CB8:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r6, _08114CE8 @ =0x02014800\n\
+ mov r4, r8\n\
+ adds r5, r3, r4\n\
+ ldr r0, _08114CEC @ =0x000038c4\n\
+ adds r4, r6, r0\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114DB4\n\
+ ldr r1, _08114CF0 @ =0x000028c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ beq _08114D1E\n\
+ ldr r1, _08114CF4 @ =0x000008c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x3\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114CE8: .4byte 0x02014800\n\
+_08114CEC: .4byte 0x000038c4\n\
+_08114CF0: .4byte 0x000028c4\n\
+_08114CF4: .4byte 0x000008c4\n\
+_08114CF8:\n\
+ movs r2, 0\n\
+ str r2, [sp, 0x4]\n\
+ ldr r6, _08114D2C @ =0x02014800\n\
+ mov r4, r8\n\
+ adds r5, r3, r4\n\
+ ldr r0, _08114D30 @ =0x000038c4\n\
+ adds r4, r6, r0\n\
+ adds r4, r5, r4\n\
+ ldrb r1, [r4]\n\
+ ldr r0, [sp]\n\
+ bl sub_8114DF0\n\
+ ldr r1, _08114D34 @ =0x000028c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ ldrb r1, [r4]\n\
+ ldrb r0, [r0]\n\
+ cmp r1, r0\n\
+ bne _08114D6C\n\
+_08114D1E:\n\
+ ldr r2, _08114D38 @ =0x000008c4\n\
+ adds r0, r6, r2\n\
+ adds r0, r5, r0\n\
+ mov r4, sp\n\
+ ldrb r4, [r4, 0x4]\n\
+ strb r4, [r0]\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_08114D2C: .4byte 0x02014800\n\
+_08114D30: .4byte 0x000038c4\n\
+_08114D34: .4byte 0x000028c4\n\
+_08114D38: .4byte 0x000008c4\n\
+_08114D3C:\n\
+ ldr r0, _08114D48 @ =0x000008c4\n\
+ add r0, r9\n\
+ adds r0, r7, r0\n\
+ movs r1, 0\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114D48: .4byte 0x000008c4\n\
+_08114D4C:\n\
+ ldr r0, _08114D58 @ =0x000008c4\n\
+ add r0, r9\n\
+ adds r0, r7, r0\n\
+ strb r3, [r0]\n\
+ b _08114D76\n\
+ .align 2, 0\n\
+_08114D58: .4byte 0x000008c4\n\
+_08114D5C:\n\
+ ldr r0, _08114D68 @ =0x000008c4\n\
+ add r0, r9\n\
+ adds r0, r7, r0\n\
+ movs r1, 0\n\
+ b _08114D74\n\
+ .align 2, 0\n\
+_08114D68: .4byte 0x000008c4\n\
+_08114D6C:\n\
+ ldr r1, _08114DAC @ =0x000008c4\n\
+ adds r0, r6, r1\n\
+ adds r0, r5, r0\n\
+ movs r1, 0x4\n\
+_08114D74:\n\
+ strb r1, [r0]\n\
+_08114D76:\n\
+ mov r3, r10\n\
+ ldr r2, _08114DB0 @ =0x02014800\n\
+ adds r0, r2, 0\n\
+ adds r0, 0x84\n\
+ ldr r4, [sp]\n\
+ adds r0, r4, r0\n\
+ adds r4, r2, 0\n\
+_08114D84:\n\
+ ldrb r0, [r0]\n\
+ cmp r3, r0\n\
+ bge _08114D8E\n\
+ bl _08114410\n\
+_08114D8E:\n\
+ ldr r5, [sp, 0x8]\n\
+ str r5, [sp]\n\
+ cmp r5, 0x3F\n\
+ bgt _08114D9A\n\
+ bl _081143F2\n\
+_08114D9A:\n\
+ ldr r0, [sp, 0x4]\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\
+_08114DAC: .4byte 0x000008c4\n\
+_08114DB0: .4byte 0x02014800\n\
+ .syntax divided");
+}
+
+void sub_8114DB4(u32 a, u8 b)
+{
+ u8 *r2 = sEvoInfo.unk40C4[a][b / 2];
+
+ if (b % 2 != 0)
+ *r2 |= 0xF0;
+ else
+ *r2 |= 0x0F;
+}
+
+void sub_8114DF0(u32 a, u8 b)
+{
+ u8 *r2 = sEvoInfo.unk40C4[a][b / 2];
+ u8 *r1 = r2 + 0x6000;
+
+ if (b % 2 != 0)
+ {
+ if (!(*r1 & 0xF0))
+ *r2 &= 0x0F;
+ }
+ else
+ {
+ if (!(*r1 & 0x0F))
+ *r2 &= 0xF0;
+ }
+}
+
+__attribute__((naked))
+void sub_8114E48()
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ adds r4, r0, 0\n\
+ lsls r1, 24\n\
+ lsrs r6, r1, 24\n\
+ ldr r1, _08114E6C @ =0x02014800\n\
+ ldr r2, _08114E70 @ =0x0000a0c4\n\
+ adds r0, r1, r2\n\
+ ldrb r0, [r0]\n\
+ adds r5, r1, 0\n\
+ cmp r0, 0\n\
+ bne _08114E60\n\
+ b _08114F5E\n\
+_08114E60:\n\
+ movs r1, 0\n\
+ movs r3, 0\n\
+ cmp r4, 0\n\
+ bne _08114E74\n\
+ movs r1, 0x1\n\
+ b _08114EA6\n\
+ .align 2, 0\n\
+_08114E6C: .4byte 0x02014800\n\
+_08114E70: .4byte 0x0000a0c4\n\
+_08114E74:\n\
+ subs r0, r4, 0x1\n\
+ lsls r0, 5\n\
+ adds r2, r3, r0\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08114EA6\n\
+ ldr r7, _08114EC4 @ =0x000008c4\n\
+ adds r0, r5, r7\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08114EA6\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x1F\n\
+ bgt _08114EA6\n\
+ cmp r4, 0\n\
+ bne _08114E74\n\
+ lsls r0, r1, 24\n\
+ movs r1, 0x80\n\
+ lsls r1, 17\n\
+ adds r0, r1\n\
+ lsrs r1, r0, 24\n\
+_08114EA6:\n\
+ cmp r3, 0x20\n\
+ bne _08114EB4\n\
+ lsls r0, r1, 24\n\
+ movs r2, 0x80\n\
+ lsls r2, 17\n\
+ adds r0, r2\n\
+ lsrs r1, r0, 24\n\
+_08114EB4:\n\
+ movs r3, 0\n\
+ cmp r4, 0x3F\n\
+ bne _08114EC8\n\
+ lsls r0, r1, 24\n\
+ movs r7, 0x80\n\
+ lsls r7, 17\n\
+ adds r0, r7\n\
+ b _08114EF8\n\
+ .align 2, 0\n\
+_08114EC4: .4byte 0x000008c4\n\
+_08114EC8:\n\
+ adds r0, r4, 0x1\n\
+ lsls r0, 5\n\
+ adds r2, r3, r0\n\
+ adds r0, r5, 0\n\
+ adds r0, 0xC4\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08114EFA\n\
+ ldr r7, _08114F64 @ =0x000008c4\n\
+ adds r0, r5, r7\n\
+ adds r0, r2, r0\n\
+ ldrb r0, [r0]\n\
+ cmp r0, 0\n\
+ bne _08114EFA\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x1F\n\
+ bgt _08114EFA\n\
+ cmp r4, 0x3F\n\
+ bne _08114EC8\n\
+ lsls r0, r1, 24\n\
+ movs r1, 0x80\n\
+ lsls r1, 17\n\
+ adds r0, r1\n\
+_08114EF8:\n\
+ lsrs r1, r0, 24\n\
+_08114EFA:\n\
+ cmp r3, 0x20\n\
+ bne _08114F08\n\
+ lsls r0, r1, 24\n\
+ movs r2, 0x80\n\
+ lsls r2, 17\n\
+ adds r0, r2\n\
+ lsrs r1, r0, 24\n\
+_08114F08:\n\
+ cmp r1, 0x2\n\
+ beq _08114F5E\n\
+ subs r0, r6, 0x2\n\
+ lsls r0, 24\n\
+ lsrs r1, r0, 24\n\
+ cmp r0, 0\n\
+ bge _08114F18\n\
+ movs r1, 0\n\
+_08114F18:\n\
+ adds r0, r6, 0x2\n\
+ lsls r0, 24\n\
+ lsrs r2, r0, 24\n\
+ asrs r0, 24\n\
+ cmp r0, 0x3F\n\
+ ble _08114F26\n\
+ movs r2, 0x3F\n\
+_08114F26:\n\
+ lsls r1, 24\n\
+ asrs r3, r1, 24\n\
+ lsls r0, r2, 24\n\
+ asrs r2, r0, 24\n\
+ adds r6, r1, 0\n\
+ adds r7, r0, 0\n\
+ cmp r3, r2\n\
+ bge _08114F7C\n\
+ cmp r4, 0\n\
+ beq _08114F7C\n\
+ subs r0, r4, 0x1\n\
+ lsls r5, r0, 7\n\
+ ldr r0, _08114F68 @ =0x020188c4\n\
+ mov r12, r0\n\
+_08114F42:\n\
+ asrs r0, r3, 1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ add r0, r12\n\
+ ldr r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08114F6C\n\
+ ldrb r1, [r1]\n\
+ movs r0, 0xF0\n\
+_08114F58:\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08114F72\n\
+_08114F5E:\n\
+ movs r0, 0x1\n\
+ b _08114FCA\n\
+ .align 2, 0\n\
+_08114F64: .4byte 0x000008c4\n\
+_08114F68: .4byte 0x020188c4\n\
+_08114F6C:\n\
+ ldrb r1, [r1]\n\
+ movs r0, 0xF\n\
+ b _08114F58\n\
+_08114F72:\n\
+ adds r3, 0x1\n\
+ cmp r3, r2\n\
+ bge _08114F7C\n\
+ cmp r4, 0\n\
+ bne _08114F42\n\
+_08114F7C:\n\
+ asrs r3, r6, 24\n\
+ asrs r1, r7, 24\n\
+ cmp r3, r1\n\
+ bge _08114FC8\n\
+ cmp r4, 0x3F\n\
+ beq _08114FC8\n\
+ adds r0, r4, 0x1\n\
+ lsls r5, r0, 7\n\
+ ldr r6, _08114FB0 @ =0x020188c4\n\
+ adds r2, r1, 0\n\
+_08114F90:\n\
+ asrs r0, r3, 1\n\
+ lsls r0, 2\n\
+ adds r0, r5\n\
+ adds r0, r6\n\
+ ldr r1, [r0]\n\
+ movs r0, 0x1\n\
+ ands r0, r3\n\
+ cmp r0, 0\n\
+ beq _08114FB4\n\
+ ldrb r1, [r1]\n\
+ movs r0, 0xF0\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ beq _08114FBE\n\
+ b _08114F5E\n\
+ .align 2, 0\n\
+_08114FB0: .4byte 0x020188c4\n\
+_08114FB4:\n\
+ ldrb r1, [r1]\n\
+ movs r0, 0xF\n\
+ ands r0, r1\n\
+ cmp r0, 0\n\
+ bne _08114F5E\n\
+_08114FBE:\n\
+ adds r3, 0x1\n\
+ cmp r3, r2\n\
+ bge _08114FC8\n\
+ cmp r4, 0x3F\n\
+ bne _08114F90\n\
+_08114FC8:\n\
+ movs r0, 0\n\
+_08114FCA:\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .syntax divided");
+}
+
+// Functions below are vblank callbacks and are used
+
+static void EvoDummyFunc(void)
+{
+
+}
+
+static void VBlankCB_EvolutionScene(void)
+{
+ REG_BG0CNT = BGCNT_SCREENBASE(24) | BGCNT_16COLOR | BGCNT_TXT256x256 | BGCNT_AFF512x512 | BGCNT_PRIORITY(3); // 0x9803
+ REG_BG0HOFS = gUnknown_030042A4;
+ REG_BG0VOFS = gUnknown_030042A0;
+ REG_BG1HOFS = gUnknown_030042C0;
+ REG_BG1VOFS = gUnknown_030041B4;
+ REG_BG2HOFS = gUnknown_03004288;
+ REG_BG2VOFS = gUnknown_03004280;
+ REG_BG3HOFS = gUnknown_030041B0;
+ REG_BG3VOFS = gUnknown_030041B8;
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_8089668();
+}
+
+static void VBlankCB_TradeEvolutionScene(void)
+{
+ REG_BG0HOFS = gUnknown_030042A4;
+ REG_BG0VOFS = gUnknown_030042A0;
+ REG_BG1HOFS = gUnknown_030042C0;
+ REG_BG1VOFS = gUnknown_030041B4;
+ REG_BG2HOFS = gUnknown_03004288;
+ REG_BG2VOFS = gUnknown_03004280;
+ REG_BG3HOFS = gUnknown_030041B0;
+ REG_BG3VOFS = gUnknown_030041B8;
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+ sub_8089668();
+}
+
+static void sub_81150D8(void)
+{
+ sub_814A880(200, 72 + (sEvoCursorPos * 16));
+}
+
+static void EvoDummyFunc2(void)
+{
+
+}
diff --git a/src/scene/hall_of_fame.c b/src/scene/hall_of_fame.c
new file mode 100644
index 000000000..6f7df576b
--- /dev/null
+++ b/src/scene/hall_of_fame.c
@@ -0,0 +1,1413 @@
+#include "global.h"
+#include "main.h"
+#include "task.h"
+#include "palette.h"
+#include "sound.h"
+#include "songs.h"
+#include "pokemon.h"
+#include "text.h"
+#include "strings.h"
+#include "string_util.h"
+#include "menu.h"
+#include "save.h"
+#include "species.h"
+#include "overworld.h"
+#include "m4a.h"
+#include "data2.h"
+#include "decompress.h"
+#include "rng.h"
+#include "trig.h"
+
+static EWRAM_DATA u32 sUnknown_0203931C = 0;
+
+extern u8 ewram[];
+extern bool8 gUnknown_02039324; // has hall of fame records
+extern void (*gGameContinueCallback)(void);
+extern struct MusicPlayerInfo gMPlay_BGM;
+extern u8 gReservedSpritePaletteCount;
+extern struct SpriteTemplate gUnknown_02024E8C;
+
+extern const u8 gContestConfetti_Gfx[];
+extern const u8 gContestConfetti_Pal[];
+extern const u8 gHallOfFame_Gfx[];
+extern const u16 gHallOfFame_Pal[];
+
+struct HallofFameMon
+{
+ u32 tid;
+ u32 personality;
+ u16 species : 9;
+ u16 lvl : 7;
+ u8 nick[10];
+};
+
+struct HallofFameMons
+{
+ struct HallofFameMon mons[6];
+};
+
+#define HALL_OF_FAME_MAX_TEAMS 50
+
+static void sub_8141FF8(u8 taskID);
+static void sub_81422E8(u8 taskID);
+static void sub_814217C(u8 taskID);
+static void sub_8142274(u8 taskID);
+static void sub_81422B8(u8 taskID);
+static void sub_8142320(u8 taskID);
+static void sub_8142404(u8 taskID);
+static void sub_8142484(u8 taskID);
+static void sub_8142570(u8 taskID);
+static void sub_8142618(u8 taskID);
+static void sub_81426F8(u8 taskID);
+static void sub_8142738(u8 taskID);
+static void sub_8142794(u8 taskID);
+static void sub_8142818(u8 taskID);
+static void sub_8142850(u8 taskID);
+static void sub_81428A0(u8 taskID);
+static void sub_8142A28(u8 taskID);
+static void sub_8142FEC(u8 taskID);
+static void sub_8142B04(u8 taskID);
+static void sub_8142CC8(u8 taskID);
+static void sub_8142DF4(u8 taskID);
+static void sub_8142F78(u8 taskID);
+static void sub_8142FCC(u8 taskID);
+static void sub_814302C(u8 taskID);
+
+static void sub_81435DC(struct Sprite* sprite);
+static void sub_814386C(struct Sprite* sprite);
+static void SpriteCB_HallOfFame_Dummy(struct Sprite* sprite);
+
+static void sub_8143068(u8 a0, u8 a1);
+static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2);
+static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1);
+static void sub_81433E0(void);
+static void sub_8143570(void);
+static void sub_81435B8(void);
+static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid);
+static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a3);
+static bool8 sub_81438C4(void);
+
+// functions from different files
+void sub_81439D0(void);
+void sub_80C5CD4(void*); // ?
+void sub_80C5E38(void*); // ?
+bool8 sub_80C5DCC(void);
+bool8 sub_80C5F98(void);
+void ReturnFromHallOfFamePC(void);
+u16 SpeciesToPokedexNum(u16 species);
+void remove_some_task(void);
+
+// data and gfx
+
+static const struct CompressedSpriteSheet sHallOfFame_ConfettiSpriteSheet =
+{
+ gContestConfetti_Gfx, 0x220, 1001
+};
+
+static const u8 sUnused0[8] = {};
+
+static const struct CompressedSpritePalette sHallOfFame_ConfettiSpritePalette =
+{
+ gContestConfetti_Pal, 1001
+};
+
+static const u8 sUnused1[8] = {};
+
+static const s16 sHallOfFame_MonsFullTeamPositions[6][4] =
+{
+ {120, 210, 120, 40},
+ {326, 220, 56, 40},
+ {-86, 220, 184, 40},
+ {120, -62, 120, 88},
+ {-25, -62, 200, 88},
+ {265, -62, 40, 88}
+};
+
+static const s16 sHallOfFame_MonsHalfTeamPositions[3][4] =
+{
+ {120, 214, 120, 64},
+ {281, 214, 56, 64},
+ {-41, 214, 184, 64}
+};
+
+static const struct HallofFameMon sDummyFameMon =
+{
+ 0x3EA03EA, 0, 0, 0, {0}
+};
+
+static const u8 sUnused2[6] = {2, 1, 3, 6, 4, 5};
+
+static const struct OamData sOamData_840B598 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 3,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+void* const gUnknown_0840B5A0[] =
+{
+ &ewram[0x08000],
+ &ewram[0x0A000],
+ &ewram[0x0C000],
+ &ewram[0x0E000],
+ &ewram[0x10000],
+ &ewram[0x14000],
+ &ewram[0x18000]
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B5BC[] =
+{
+ {&ewram[0x8000], 0x800},
+ {&ewram[0x8800], 0x800},
+ {&ewram[0x9000], 0x800},
+ {&ewram[0x9800], 0x800}
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B5DC[] =
+{
+ {&ewram[0xA000], 0x800},
+ {&ewram[0xA800], 0x800},
+ {&ewram[0xB000], 0x800},
+ {&ewram[0xB800], 0x800}
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B5FC[] =
+{
+ {&ewram[0xC000], 0x800},
+ {&ewram[0xC800], 0x800},
+ {&ewram[0xD000], 0x800},
+ {&ewram[0xD800], 0x800}
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B61C[] =
+{
+ {&ewram[0xE000], 0x800},
+ {&ewram[0xE800], 0x800},
+ {&ewram[0xF000], 0x800},
+ {&ewram[0xF800], 0x800}
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B63C[] =
+{
+ {&ewram[0x10000], 0x800},
+ {&ewram[0x10800], 0x800},
+ {&ewram[0x11000], 0x800},
+ {&ewram[0x11800], 0x800}
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B65C[] =
+{
+ {&ewram[0x14000], 0x800},
+ {&ewram[0x14800], 0x800},
+ {&ewram[0x15000], 0x800},
+ {&ewram[0x15800], 0x800}
+};
+
+static const struct SpriteFrameImage sSpriteImageTable_840B67C[] =
+{
+ {&ewram[0x18000], 0x800},
+ {&ewram[0x18800], 0x800},
+ {&ewram[0x19000], 0x800},
+ {&ewram[0x19800], 0x800}
+};
+
+static const struct SpriteFrameImage* const sUnknown_0840B69C[7] =
+{
+ sSpriteImageTable_840B5BC,
+ sSpriteImageTable_840B5DC,
+ sSpriteImageTable_840B5FC,
+ sSpriteImageTable_840B61C,
+ sSpriteImageTable_840B63C,
+ sSpriteImageTable_840B65C,
+ sSpriteImageTable_840B67C
+};
+
+static const struct SpriteTemplate sUnknown_0840B6B8 =
+{
+ .tileTag = -1,
+ .paletteTag = -1,
+ .oam = &sOamData_840B598,
+ .anims = NULL,
+ .images = sSpriteImageTable_840B5BC,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_HallOfFame_Dummy
+};
+
+static const struct OamData sOamData_840B6D0 =
+{
+ .y = 0,
+ .affineMode = 0,
+ .objMode = 0,
+ .mosaic = 0,
+ .bpp = 0,
+ .shape = 0,
+ .x = 0,
+ .matrixNum = 0,
+ .size = 0,
+ .tileNum = 0,
+ .priority = 0,
+ .paletteNum = 0,
+ .affineParam = 0,
+};
+
+static const union AnimCmd sSpriteAnim_840B6D8[] =
+{
+ ANIMCMD_FRAME(0, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B6E0[] =
+{
+ ANIMCMD_FRAME(1, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B6E8[] =
+{
+ ANIMCMD_FRAME(2, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B6F0[] =
+{
+ ANIMCMD_FRAME(3, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B6F8[] =
+{
+ ANIMCMD_FRAME(4, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B700[] =
+{
+ ANIMCMD_FRAME(5, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B708[] =
+{
+ ANIMCMD_FRAME(6, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B710[] =
+{
+ ANIMCMD_FRAME(7, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B718[] =
+{
+ ANIMCMD_FRAME(8, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B720[] =
+{
+ ANIMCMD_FRAME(9, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B728[] =
+{
+ ANIMCMD_FRAME(10, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B730[] =
+{
+ ANIMCMD_FRAME(11, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B738[] =
+{
+ ANIMCMD_FRAME(12, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B740[] =
+{
+ ANIMCMD_FRAME(13, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B748[] =
+{
+ ANIMCMD_FRAME(14, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B750[] =
+{
+ ANIMCMD_FRAME(15, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd sSpriteAnim_840B758[] =
+{
+ ANIMCMD_FRAME(16, 30),
+ ANIMCMD_END
+};
+
+static const union AnimCmd* const sSpriteAnimTable_840B760[] =
+{
+ sSpriteAnim_840B6D8,
+ sSpriteAnim_840B6E0,
+ sSpriteAnim_840B6E8,
+ sSpriteAnim_840B6F0,
+ sSpriteAnim_840B6F8,
+ sSpriteAnim_840B700,
+ sSpriteAnim_840B708,
+ sSpriteAnim_840B710,
+ sSpriteAnim_840B718,
+ sSpriteAnim_840B720,
+ sSpriteAnim_840B728,
+ sSpriteAnim_840B730,
+ sSpriteAnim_840B738,
+ sSpriteAnim_840B740,
+ sSpriteAnim_840B748,
+ sSpriteAnim_840B750,
+ sSpriteAnim_840B758
+};
+
+static const struct SpriteTemplate sSpriteTemplate_840B7A4 =
+{
+ .tileTag = 1001,
+ .paletteTag = 1001,
+ .oam = &sOamData_840B6D0,
+ .anims = sSpriteAnimTable_840B760,
+ .images = NULL,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = sub_814386C
+};
+
+// code
+
+#define tDisplayedPoke data[1]
+#define tPokesNumber data[2]
+#define tFrameCount data[3]
+#define tPlayerSpriteID data[4]
+#define tMonSpriteID(i) data[i + 5]
+
+static void VBlankCB_HallOfFame(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void CB2_HallOfFame(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static bool8 sub_8141E64(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+ sub_81433E0();
+ gMain.state = 1;
+ break;
+ case 1:
+ sub_8143570();
+ gMain.state++;
+ break;
+ case 2:
+ {
+ u16 saved_IME;
+
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ SetVBlankCallback(VBlankCB_HallOfFame);
+ saved_IME = REG_IME;
+ REG_IME = 0;
+ REG_IE |= 1;
+ REG_IME = saved_IME;
+ REG_DISPSTAT |= 8;
+ gMain.state++;
+ }
+ break;
+ case 3:
+ REG_BLDCNT = 0x3F42;
+ REG_BLDALPHA = 0x710;
+ REG_BLDY = 0;
+ sub_81435B8();
+ gMain.state++;
+ break;
+ case 4:
+ UpdatePaletteFade();
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_HallOfFame);
+ PlayBGM(BGM_DENDOU);
+ return 0;
+ }
+ break;
+ }
+ return 1;
+}
+
+void sub_8141F90(void)
+{
+ if (sub_8141E64() == 0)
+ {
+ u8 taskID = CreateTask(sub_8141FF8, 0);
+ gTasks[taskID].data[0] = 0;
+ }
+}
+
+static void sub_8141FC4(void)
+{
+ if (sub_8141E64() == 0)
+ {
+ u8 taskID = CreateTask(sub_8141FF8, 0);
+ gTasks[taskID].data[0] = 1;
+ }
+}
+
+static void sub_8141FF8(u8 taskID)
+{
+ u16 i, j;
+ struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+
+ gTasks[taskID].tPokesNumber = 0; // valid pokes
+ for (i = 0; i < 6; i++)
+ {
+ u8 nick[12];
+ if (GetMonData(&gPlayerParty[i], MON_DATA_SPECIES))
+ {
+ fameMons->mons[i].species = GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2);
+ fameMons->mons[i].tid = GetMonData(&gPlayerParty[i], MON_DATA_OT_ID);
+ fameMons->mons[i].personality = GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY);
+ fameMons->mons[i].lvl = GetMonData(&gPlayerParty[i], MON_DATA_LEVEL);
+ GetMonData(&gPlayerParty[i], MON_DATA_NICKNAME, nick);
+ for (j = 0; j < 10; j++)
+ {
+ fameMons->mons[i].nick[j] = nick[j];
+ }
+ gTasks[taskID].tPokesNumber++;
+ }
+ else
+ {
+ fameMons->mons[i].species = 0;
+ fameMons->mons[i].tid = 0;
+ fameMons->mons[i].personality = 0;
+ fameMons->mons[i].lvl = 0;
+ fameMons->mons[i].nick[0] = EOS;
+ }
+ }
+ sUnknown_0203931C = 0;
+ gTasks[taskID].tDisplayedPoke = 0;
+ gTasks[taskID].data[4] = 0xFF;
+ for (i = 0; i < 6; i++)
+ {
+ gTasks[taskID].tMonSpriteID(i) = 0xFF;
+ }
+ if (gTasks[taskID].data[0])
+ gTasks[taskID].func = sub_81422E8;
+ else
+ gTasks[taskID].func = sub_814217C;
+}
+
+static void sub_814217C(u8 taskID)
+{
+ u16 i;
+ struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+ struct HallofFameMons* lastSavedTeam = (struct HallofFameMons*)(&ewram[0x1E000]);
+
+ if (gUnknown_02039324 == FALSE)
+ {
+ for (i = 0; i < 0x2000; i++)
+ ewram[i + 0x1E000] = 0;
+ }
+ else
+ sub_8125EC8(3);
+
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, lastSavedTeam++)
+ {
+ if (lastSavedTeam->mons[0].species == 0)
+ break;
+ }
+ if (i >= HALL_OF_FAME_MAX_TEAMS)
+ {
+ struct HallofFameMons* r5 = (struct HallofFameMons*)(&ewram[0x1E000]);
+ struct HallofFameMons* r6 = (struct HallofFameMons*)(&ewram[0x1E000]);
+ r5++;
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS - 1; i++, r6++, r5++)
+ {
+ *r6 = *r5;
+ }
+ lastSavedTeam--;
+ }
+ *lastSavedTeam = *fameMons;
+ MenuDrawTextWindow(2, 14, 27, 19);
+ MenuPrint(gMenuText_HOFSaving, 3, 15);
+ gTasks[taskID].func = sub_8142274;
+}
+
+static void sub_8142274(u8 taskID)
+{
+ gGameContinueCallback = sub_8141FC4;
+ TrySavingData(3);
+ PlaySE(SE_SAVE);
+ gTasks[taskID].func = sub_81422B8;
+ gTasks[taskID].tFrameCount = 32;
+}
+
+static void sub_81422B8(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCount)
+ gTasks[taskID].tFrameCount--;
+ else
+ gTasks[taskID].func = sub_81422E8;
+}
+
+static void sub_81422E8(u8 taskID)
+{
+ SetUpWindowConfig(&gWindowConfig_81E7198);
+ InitMenuWindow(&gWindowConfig_81E7198);
+ gTasks[taskID].func = sub_8142320;
+}
+
+static void sub_8142320(u8 taskID)
+{
+ u8 spriteID;
+ s16 xPos, yPos, field4, field6;
+
+ struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+ u16 currPokeID = gTasks[taskID].tDisplayedPoke;
+ struct HallofFameMon* currMon = &fameMons->mons[currPokeID];
+
+ if (gTasks[taskID].tPokesNumber > 3)
+ {
+ xPos = sHallOfFame_MonsFullTeamPositions[currPokeID][0];
+ yPos = sHallOfFame_MonsFullTeamPositions[currPokeID][1];
+ field4 = sHallOfFame_MonsFullTeamPositions[currPokeID][2];
+ field6 = sHallOfFame_MonsFullTeamPositions[currPokeID][3];
+ }
+ else
+ {
+ xPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][0];
+ yPos = sHallOfFame_MonsHalfTeamPositions[currPokeID][1];
+ field4 = sHallOfFame_MonsHalfTeamPositions[currPokeID][2];
+ field6 = sHallOfFame_MonsHalfTeamPositions[currPokeID][3];
+ }
+
+ spriteID = HallOfFame_LoadPokemonPic(currMon->species, xPos, yPos, currPokeID, currMon->tid, currMon->personality);
+ gSprites[spriteID].data1 = field4;
+ gSprites[spriteID].data2 = field6;
+ gSprites[spriteID].data0 = 0;
+ gSprites[spriteID].callback = sub_81435DC;
+ gTasks[taskID].tMonSpriteID(currPokeID) = spriteID;
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ gTasks[taskID].func = sub_8142404;
+}
+
+static void sub_8142404(u8 taskID)
+{
+ struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+ u16 currPokeID = gTasks[taskID].tDisplayedPoke;
+ struct HallofFameMon* currMon = &fameMons->mons[currPokeID];
+
+ if (gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].data0 != 0)
+ {
+ if (currMon->species != SPECIES_EGG)
+ PlayCry1(currMon->species, 0);
+ HallOfFame_PrintMonInfo(currMon, 0, 14);
+ gTasks[taskID].tFrameCount = 120;
+ gTasks[taskID].func = sub_8142484;
+ }
+}
+
+static void sub_8142484(u8 taskID)
+{
+ struct HallofFameMons* fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+ u16 currPokeID = gTasks[taskID].tDisplayedPoke;
+ struct HallofFameMon* currMon = &fameMons->mons[currPokeID];
+
+ if (gTasks[taskID].tFrameCount != 0)
+ gTasks[taskID].tFrameCount--;
+ else
+ {
+ sUnknown_0203931C |= (0x10000 << gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].oam.paletteNum);
+ if (gTasks[taskID].tDisplayedPoke <= 4 && currMon[1].species != 0) // there is another pokemon to display
+ {
+ gTasks[taskID].tDisplayedPoke++;
+ BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, 0x735F);
+ gSprites[gTasks[taskID].tMonSpriteID(currPokeID)].oam.priority = 1;
+ gTasks[taskID].func = sub_8142320;
+ }
+ else
+ gTasks[taskID].func = sub_8142570;
+ }
+}
+
+static void sub_8142570(u8 taskID)
+{
+ u16 i;
+
+ BeginNormalPaletteFade(0xFFFF0000, 0, 0, 0, 0);
+ for (i = 0; i < 6; i++)
+ {
+ if (gTasks[taskID].tMonSpriteID(i) != 0xFF)
+ gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 0;
+ }
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ sub_8143068(0, 15);
+ PlaySE(SE_DENDOU);
+ gTasks[taskID].tFrameCount = 400;
+ gTasks[taskID].func = sub_8142618;
+}
+
+static void sub_8142618(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCount != 0)
+ {
+ gTasks[taskID].tFrameCount--;
+ if ((gTasks[taskID].tFrameCount & 3) == 0 && gTasks[taskID].tFrameCount > 110)
+ sub_81438C4();
+ }
+ else
+ {
+ u16 i;
+ for (i = 0; i < 6; i++)
+ {
+ if (gTasks[taskID].tMonSpriteID(i) != 0xFF)
+ gSprites[gTasks[taskID].tMonSpriteID(i)].oam.priority = 1;
+ }
+ BeginNormalPaletteFade(sUnknown_0203931C, 0, 12, 12, 0x735F);
+ MenuZeroFillWindowRect(0, 14, 29, 19);
+ gTasks[taskID].tFrameCount = 7;
+ gTasks[taskID].func = sub_81426F8;
+ }
+}
+
+static void sub_81426F8(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCount >= 16)
+ gTasks[taskID].func = sub_8142738;
+ else
+ {
+ gTasks[taskID].tFrameCount++;
+ REG_BLDALPHA = gTasks[taskID].tFrameCount * 256;
+ }
+}
+
+static void sub_8142738(u8 taskID)
+{
+ REG_DISPCNT = 0x1940;
+ SetUpWindowConfig(&gWindowConfig_81E71B4);
+ InitMenuWindow(&gWindowConfig_81E71B4);
+
+ gTasks[taskID].tPlayerSpriteID = HallOfFame_LoadTrainerPic(gSaveBlock2.playerGender, 120, 72, 6);
+ gTasks[taskID].tFrameCount = 120;
+ gTasks[taskID].func = sub_8142794;
+}
+
+static void sub_8142794(u8 taskID)
+{
+ if (gTasks[taskID].tFrameCount != 0)
+ gTasks[taskID].tFrameCount--;
+ else
+ {
+ if (gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x != 160)
+ gSprites[gTasks[taskID].tPlayerSpriteID].pos1.x++;
+ else
+ {
+ MenuDrawTextWindow(1, 2, 15, 9);
+ HallOfFame_PrintPlayerInfo(1, 2);
+ MenuDrawTextWindow(2, 14, 27, 19);
+ MenuPrint(gMenuText_HOFCongratulations, 4, 15);
+ gTasks[taskID].func = sub_8142818;
+ }
+ }
+}
+
+static void sub_8142818(u8 taskID)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ FadeOutBGM(4);
+ gTasks[taskID].func = sub_8142850;
+ }
+}
+
+static void sub_8142850(u8 taskID)
+{
+ CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200);
+ BeginNormalPaletteFade(-1, 8, 0, 0x10, 0);
+ gTasks[taskID].func = sub_81428A0;
+}
+
+static void sub_81428A0(u8 taskID)
+{
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(taskID);
+ SetMainCallback2(sub_81439D0);
+ }
+}
+
+#undef tDisplayedPoke
+#undef tPokesNumber
+#undef tFrameCount
+#undef tPlayerSpriteID
+#undef tMonSpriteID
+
+void sub_81428CC(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ default:
+ SetVBlankCallback(NULL);
+ sub_81433E0();
+ gMain.state = 1;
+ break;
+ case 1:
+ sub_8143570();
+ gMain.state++;
+ break;
+ case 2:
+ {
+ u16 savedIme;
+
+ SetVBlankCallback(VBlankCB_HallOfFame);
+ savedIme = REG_IME;
+ REG_IME = 0;
+ REG_IE |= 1;
+ REG_IME = savedIme;
+ REG_DISPSTAT |= 8;
+ gMain.state++;
+ }
+ break;
+ case 3:
+ {
+ struct HallofFameMons* fameMons;
+
+ REG_BLDCNT = 0;
+ REG_BLDALPHA = 0;
+ REG_BLDY = 0;
+ sub_81435B8();
+
+ fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+ fameMons->mons[0] = sDummyFameMon;
+
+ sub_80C5CD4(fameMons);
+ gMain.state++;
+ }
+ break;
+ case 4:
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+ if (sub_80C5DCC())
+ gMain.state++;
+ break;
+ case 5:
+ REG_BLDCNT = 0x3F42;
+ REG_BLDALPHA = 0x710;
+ REG_BLDY = 0;
+ CreateTask(sub_8142A28, 0);
+ SetMainCallback2(CB2_HallOfFame);
+ break;
+ }
+}
+
+#define tCurrTeamNo data[0]
+#define tCurrPageNo data[1]
+#define tCurrPokeID data[2]
+#define tPokesNo data[4]
+#define tMonSpriteID(i) data[i + 5]
+
+static void sub_8142A28(u8 taskID)
+{
+ if (sub_8125EC8(3) != 1)
+ gTasks[taskID].func = sub_8142FEC;
+ else
+ {
+ u16 *vram1, *vram2;
+
+ u16 i;
+ struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]);
+ for (i = 0; i < HALL_OF_FAME_MAX_TEAMS; i++, savedTeams++)
+ {
+ if (savedTeams->mons[0].species == 0)
+ break;
+ }
+ if (i < HALL_OF_FAME_MAX_TEAMS)
+ gTasks[taskID].tCurrTeamNo = i - 1;
+ else
+ gTasks[taskID].tCurrTeamNo = HALL_OF_FAME_MAX_TEAMS - 1;
+ gTasks[taskID].tCurrPageNo = GetGameStat(10);
+
+ for (i = 0, vram1 = (u16*)(VRAM + 0x381A), vram2 = (u16*)(VRAM + 0x385A); i <= 16; i++)
+ {
+ *(vram1 + i) = i + 3;
+ *(vram2 + i) = i + 20;
+ }
+ SetUpWindowConfig(&gWindowConfig_81E7198);
+ InitMenuWindow(&gWindowConfig_81E7198);
+ gTasks[taskID].func = sub_8142B04;
+ }
+}
+
+static void sub_8142B04(u8 taskID)
+{
+ struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]);
+ struct HallofFameMon* currMon;
+ u16 i;
+ u8* stringPtr;
+
+ for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++)
+ savedTeams++;
+
+ currMon = &savedTeams->mons[0];
+ sUnknown_0203931C = 0;
+ gTasks[taskID].tCurrPokeID = 0;
+ gTasks[taskID].tPokesNo = 0;
+
+ for (i = 0; i < 6; i++, currMon++)
+ {
+ if (currMon->species != 0)
+ gTasks[taskID].tPokesNo++;
+ }
+
+ currMon = &savedTeams->mons[0];
+
+ for (i = 0; i < 6; i++, currMon++)
+ {
+ if (currMon->species != 0)
+ {
+ u16 spriteID;
+ s16 posX, posY;
+ if (gTasks[taskID].tPokesNo > 3)
+ {
+ posX = sHallOfFame_MonsFullTeamPositions[i][2];
+ posY = sHallOfFame_MonsFullTeamPositions[i][3];
+ }
+ else
+ {
+ posX = sHallOfFame_MonsHalfTeamPositions[i][2];
+ posY = sHallOfFame_MonsHalfTeamPositions[i][3];
+ }
+ spriteID = HallOfFame_LoadPokemonPic(currMon->species, posX, posY, i, currMon->tid, currMon->personality);
+ gSprites[spriteID].oam.priority = 1;
+ gTasks[taskID].tMonSpriteID(i) = spriteID;
+ }
+ else
+ gTasks[taskID].tMonSpriteID(i) = 0xFF;
+ }
+
+ BlendPalettes(0xFFFF0000, 0xC, 0x735F);
+
+ stringPtr = gStringVar1;
+ stringPtr = StringCopy(stringPtr, gMenuText_HOFNumber);
+ stringPtr[0] = 0xFC;
+ stringPtr[1] = 0x14;
+ stringPtr[2] = 0x6;
+ stringPtr += 3;
+ stringPtr = ConvertIntToDecimalString(stringPtr, gTasks[taskID].tCurrPageNo);
+ stringPtr[0] = 0xFC;
+ stringPtr[1] = 0x13;
+ stringPtr[2] = 0xF0;
+ stringPtr[3] = EOS;
+ MenuPrint(gStringVar1, 0, 0);
+
+ gTasks[taskID].func = sub_8142CC8;
+}
+
+static void sub_8142CC8(u8 taskID)
+{
+ struct HallofFameMons* savedTeams = (struct HallofFameMons*)(&ewram[0x1E000]);
+ struct HallofFameMon* currMon;
+ u16 i;
+ u16 currMonID;
+
+ for (i = 0; i < gTasks[taskID].tCurrTeamNo; i++)
+ savedTeams++;
+
+ for (i = 0; i < 6; i++)
+ {
+ u16 spriteID = gTasks[taskID].tMonSpriteID(i);
+ if (spriteID != 0xFF)
+ gSprites[spriteID].oam.priority = 1;
+ }
+
+ currMonID = gTasks[taskID].tMonSpriteID(gTasks[taskID].tCurrPokeID);
+ gSprites[currMonID].oam.priority = 0;
+ sUnknown_0203931C = (0x10000 << gSprites[currMonID].oam.paletteNum) ^ 0xFFFF0000;
+ BlendPalettesUnfaded(sUnknown_0203931C, 0xC, 0x735F);
+
+ currMon = &savedTeams->mons[gTasks[taskID].tCurrPokeID];
+ if (currMon->species != SPECIES_EGG)
+ {
+ StopCryAndClearCrySongs();
+ PlayCry1(currMon->species, 0);
+ }
+ HallOfFame_PrintMonInfo(currMon, 0, 14);
+
+ gTasks[taskID].func = sub_8142DF4;
+}
+
+static void sub_8142DF4(u8 taskID)
+{
+ u16 i;
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (gTasks[taskID].tCurrTeamNo != 0) // prepare another team to view
+ {
+ gTasks[taskID].tCurrTeamNo--;
+ for (i = 0; i < 6; i++)
+ {
+ u8 spriteID = gTasks[taskID].tMonSpriteID(i);
+ if (spriteID != 0xFF)
+ {
+ FreeSpritePaletteByTag(GetSpritePaletteTagByPaletteNum(gSprites[spriteID].oam.paletteNum));
+ DestroySprite(&gSprites[spriteID]);
+ }
+ }
+ if (gTasks[taskID].tCurrPageNo != 0)
+ gTasks[taskID].tCurrPageNo--;
+ gTasks[taskID].func = sub_8142B04;
+ }
+ else // no more teams to view, turn off hall of fame PC
+ {
+ if (IsCryPlayingOrClearCrySongs())
+ {
+ StopCryAndClearCrySongs();
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ }
+ gTasks[taskID].func = sub_8142F78;
+ }
+ }
+ else if (gMain.newKeys & B_BUTTON) // turn off hall of fame PC
+ {
+ if (IsCryPlayingOrClearCrySongs())
+ {
+ StopCryAndClearCrySongs();
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 0x100);
+ }
+ gTasks[taskID].func = sub_8142F78;
+ }
+ else if (gMain.newKeys & DPAD_UP && gTasks[taskID].tCurrPokeID != 0) // change poke -1
+ {
+ gTasks[taskID].tCurrPokeID--;
+ gTasks[taskID].func = sub_8142CC8;
+ }
+ else if (gMain.newKeys & DPAD_DOWN && gTasks[taskID].tCurrPokeID < gTasks[taskID].tPokesNo - 1) // change poke +1
+ {
+ gTasks[taskID].tCurrPokeID++;
+ gTasks[taskID].func = sub_8142CC8;
+ }
+}
+
+static void sub_8142F78(u8 taskID)
+{
+ struct HallofFameMons* fameMons;
+
+ CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x200);
+ fameMons = (struct HallofFameMons*)(&ewram[0x1C000]);
+ fameMons->mons[0] = sDummyFameMon;
+ sub_80C5E38(fameMons);
+ gTasks[taskID].func = sub_8142FCC;
+}
+
+static void sub_8142FCC(u8 taskID)
+{
+ if (sub_80C5F98())
+ {
+ DestroyTask(taskID);
+ ReturnFromHallOfFamePC();
+ }
+}
+
+static void sub_8142FEC(u8 taskID)
+{
+ MenuDrawTextWindow(2, 14, 27, 19);
+ MenuPrintMessage(gMenuText_HOFCorrupt, 3, 15);
+ gTasks[taskID].func = sub_814302C;
+}
+
+static void sub_814302C(u8 taskID)
+{
+ if (MenuUpdateWindowText() && gMain.newKeys & A_BUTTON)
+ gTasks[taskID].func = sub_8142F78;
+}
+
+#undef tCurrTeamNo
+#undef tCurrPageNo
+#undef tCurrPokeID
+#undef tPokesNo
+#undef tMonSpriteID
+
+static void sub_8143068(u8 a0, u8 a1)
+{
+ sub_8072BD8(gMenuText_WelcomeToHOFAndDexRating, 0, a1 + 1, 0xF0);
+}
+
+static void HallOfFame_PrintMonInfo(struct HallofFameMon* currMon, u8 a1, u8 a2)
+{
+ u8* stringPtr;
+ u16 monData;
+ u16 i;
+
+ stringPtr = gStringVar1;
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x13;
+ stringPtr[2] = 0x28;
+ stringPtr[3] = EOS;
+
+ if (currMon->species != SPECIES_EGG)
+ {
+ monData = SpeciesToPokedexNum(currMon->species);
+ if (monData != 0xFFFF)
+ {
+ stringPtr = StringCopy(stringPtr, gOtherText_Number2);
+ ConvertIntToDecimalStringN(stringPtr, monData, 2, 3);
+ }
+ }
+
+ MenuPrint(gStringVar1, a1 + 4, a2 + 1);
+ stringPtr = gStringVar1;
+
+ for (i = 0; i < 10 && currMon->nick[i] != EOS; stringPtr[i] = currMon->nick[i], i++) {}
+ stringPtr += i;
+ stringPtr[0] = EOS;
+
+ if (currMon->species == SPECIES_EGG)
+ {
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x13;
+ stringPtr[2] = 0xA0;
+ stringPtr[3] = EOS;
+ MenuPrint(gStringVar1, a1 + 9, a2 + 1);
+ MenuZeroFillWindowRect(0, a2 + 3, 29, a2 + 4);
+ }
+ else
+ {
+
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x13;
+ stringPtr[2] = 0x3E;
+ stringPtr += 3;
+
+ stringPtr[0] = CHAR_SLASH;
+ stringPtr++;
+
+ for (i = 0; i < 10 && gSpeciesNames[currMon->species][i] != EOS; stringPtr[i] = gSpeciesNames[currMon->species][i], i++) {}
+
+ stringPtr += i;
+ stringPtr[0] = CHAR_SPACE;
+ stringPtr++;
+
+ if (currMon->species != SPECIES_NIDORAN_M && currMon->species != SPECIES_NIDORAN_F)
+ {
+ switch (GetGenderFromSpeciesAndPersonality(currMon->species, currMon->personality))
+ {
+ case MON_MALE:
+ stringPtr[0] = CHAR_MALE;
+ stringPtr++;
+ break;
+ case MON_FEMALE:
+ stringPtr[0] = CHAR_FEMALE;
+ stringPtr++;
+ break;
+ }
+ }
+
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x13;
+ stringPtr[2] = 0xA0;
+ stringPtr[3] = EOS;
+
+ MenuPrint(gStringVar1, a1 + 9, a2 + 1);
+
+ monData = currMon->lvl;
+
+ stringPtr = StringCopy(gStringVar1, gOtherText_Level3);
+
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x14;
+ stringPtr[2] = 6;
+ stringPtr += 3;
+
+ stringPtr = ConvertIntToDecimalStringN(stringPtr, monData, 0, 3);
+
+ stringPtr[0] = EXT_CTRL_CODE_BEGIN;
+ stringPtr[1] = 0x13;
+ stringPtr[2] = 0x30;
+ stringPtr[3] = EOS;
+
+ MenuPrint(gStringVar1, a1 + 7, a2 + 3);
+
+ monData = currMon->tid;
+
+ stringPtr = StringCopy(gStringVar1, gOtherText_IDNumber);
+ ConvertIntToDecimalStringN(stringPtr, monData, 2, 5);
+
+ MenuPrint(gStringVar1, a1 + 13, a2 + 3);
+ }
+}
+
+#define ByteRead16(ptr) ((ptr)[0] | ((ptr)[1] << 8))
+
+static void HallOfFame_PrintPlayerInfo(u8 a0, u8 a1)
+{
+ u8* stringPtr;
+ u16 visibleTid;
+
+ MenuPrint(gOtherText_Name, a0 + 1, a1 + 1);
+ MenuPrint_RightAligned(gSaveBlock2.playerName, a0 + 14, a1 + 1);
+
+ MenuPrint(gOtherText_IDNumber2, a0 + 1, a1 + 3);
+ visibleTid = ByteRead16(gSaveBlock2.playerTrainerId);
+ ConvertIntToDecimalStringN(gStringVar1, visibleTid, 2, 5);
+
+ MenuPrint_RightAligned(gStringVar1, a0 + 14, a1 + 3);
+ MenuPrint(gMainMenuString_Time, a0 + 1, a1 + 5);
+
+ stringPtr = ConvertIntToDecimalString(gStringVar1, gSaveBlock2.playTimeHours);
+ stringPtr[0] = CHAR_SPACE;
+ stringPtr[1] = CHAR_COLON;
+ stringPtr[2] = CHAR_SPACE;
+ stringPtr += 3;
+
+ stringPtr = ConvertIntToDecimalStringN(stringPtr, gSaveBlock2.playTimeMinutes, 2, 2);
+ stringPtr[0] = EOS;
+
+ MenuPrint_RightAligned(gStringVar1, a0 + 14, a1 + 5);
+}
+
+static void sub_81433E0(void)
+{
+ u32 offsetWrite, offsetWrite2, offsetWrite3, offsetWrite4;
+ u32 size, size2, size3, size4;
+ u16 i;
+
+ REG_DISPCNT = 0;
+
+ REG_BG0CNT = 0;
+ REG_BG0HOFS = 0;
+ REG_BG0VOFS = 0;
+
+ REG_BG1CNT = 0;
+ REG_BG1HOFS = 0;
+ REG_BG1VOFS = 0;
+
+ REG_BG2CNT = 0;
+ REG_BG2HOFS = 0;
+ REG_BG2VOFS = 0;
+
+ REG_BG3CNT = 0;
+ REG_BG3HOFS = 0;
+ REG_BG3VOFS = 0;
+
+ offsetWrite = (VRAM);
+ size = 0x18000;
+ while (TRUE)
+ {
+ DmaFill16(3, 0, offsetWrite, 0x1000);
+ offsetWrite += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaFill16(3, 0, offsetWrite, size);
+ break;
+ }
+ }
+
+ offsetWrite2 = OAM;
+ size2 = OAM_SIZE;
+ DmaFill32(3, 0, offsetWrite2, size2);
+
+ offsetWrite3 = PLTT;
+ size3 = PLTT_SIZE;
+ DmaFill16(3, 0, offsetWrite3, size3);
+
+ LZ77UnCompVram(gHallOfFame_Gfx, (void*)(VRAM));
+
+ for (i = 0; i < 64; i++)
+ {
+ *((u16*)(VRAM + 0x3800) + i) = 1;
+ }
+ for (i = 0; i < 192; i++)
+ {
+ *((u16*)(VRAM + 0x3B80) + i) = 1;
+ }
+ for (i = 0; i < 1024; i++)
+ {
+ *((u16*)(VRAM + 0x3000) + i) = 2;
+ }
+
+ offsetWrite4 = (u32)(&ewram[0]);
+ size4 = 0x4000;
+ while (TRUE)
+ {
+ DmaFill16(3, 0, offsetWrite4, 0x1000);
+ offsetWrite4 += 0x1000;
+ size4 -= 0x1000;
+ if (size4 <= 0x1000)
+ {
+ DmaFill16(3, 0, offsetWrite4, size4);
+ break;
+ }
+ }
+
+ ResetPaletteFade();
+ LoadPalette(gHallOfFame_Pal, 0, 0x20);
+}
+
+static void sub_8143570(void)
+{
+ remove_some_task();
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ gReservedSpritePaletteCount = 8;
+ LoadCompressedObjectPic(&sHallOfFame_ConfettiSpriteSheet);
+ LoadCompressedObjectPalette(&sHallOfFame_ConfettiSpritePalette);
+ SetUpWindowConfig(&gWindowConfig_81E71B4);
+ InitMenuWindow(&gWindowConfig_81E71B4);
+}
+
+static void sub_81435B8(void)
+{
+ REG_BG1CNT = 0x700;
+ REG_BG3CNT = 0x603;
+ REG_DISPCNT = 0x1B40;
+}
+
+static void sub_81435DC(struct Sprite* sprite)
+{
+ u32 spritePos = *(u32*)(&sprite->pos1);
+ u32 dataPos = *(u32*)(&sprite->data1);
+ if (spritePos != dataPos)
+ {
+ if (sprite->pos1.x < sprite->data1)
+ sprite->pos1.x += 15;
+ if (sprite->pos1.x > sprite->data1)
+ sprite->pos1.x -= 15;
+
+ if (sprite->pos1.y < sprite->data2)
+ sprite->pos1.y += 10;
+ if (sprite->pos1.y > sprite->data2)
+ sprite->pos1.y -= 10;
+ }
+ else
+ {
+ sprite->data0 = 1;
+ sprite->callback = SpriteCB_HallOfFame_Dummy;
+ }
+}
+
+static void SpriteCB_HallOfFame_Dummy(struct Sprite* sprite)
+{
+
+}
+
+void sub_8143648(u16 paletteTag, u8 animID)
+{
+ gUnknown_02024E8C = sUnknown_0840B6B8;
+ gUnknown_02024E8C.paletteTag = paletteTag;
+ gUnknown_02024E8C.images = sUnknown_0840B69C[animID];
+ gUnknown_02024E8C.anims = gSpriteAnimTable_81E7C64;
+}
+
+void sub_8143680(u16 paletteTag, u8 animID)
+{
+ gUnknown_02024E8C = sUnknown_0840B6B8;
+ gUnknown_02024E8C.paletteTag = paletteTag;
+ gUnknown_02024E8C.images = sUnknown_0840B69C[animID];
+ gUnknown_02024E8C.anims = gUnknown_081EC2A4[0];
+}
+
+static u32 HallOfFame_LoadPokemonPic(u16 species, s16 posX, s16 posY, u16 pokeID, u32 tid, u32 pid)
+{
+ u8 spriteID;
+ const u8* pokePal;
+
+ LoadSpecialPokePic(&gMonFrontPicTable[species], gMonFrontPicCoords[species].coords, gMonFrontPicCoords[species].y_offset, 0x2000000, gUnknown_0840B5A0[pokeID], species, pid, 1);
+
+ pokePal = GetMonSpritePalFromOtIdPersonality(species, tid, pid);
+ LoadCompressedPalette(pokePal, 16 * pokeID + 256, 0x20);
+
+ sub_8143648(pokeID, pokeID);
+ spriteID = CreateSprite(&gUnknown_02024E8C, posX, posY, 10 - pokeID);
+ gSprites[spriteID].oam.paletteNum = pokeID;
+ return spriteID;
+}
+
+static u32 HallOfFame_LoadTrainerPic(u16 trainerPicID, s16 posX, s16 posY, u16 a3)
+{
+ u8 spriteID;
+
+ DecompressPicFromTable_2(&gTrainerFrontPicTable[trainerPicID], gTrainerFrontPicCoords[trainerPicID].coords, gTrainerFrontPicCoords[trainerPicID].y_offset, (void*) 0x2000000, gUnknown_0840B5A0[a3], trainerPicID);
+
+ LoadCompressedPalette(gTrainerFrontPicPaletteTable[trainerPicID].data, 16 * a3 + 256, 0x20);
+ sub_8143680(a3, a3);
+
+ spriteID = CreateSprite(&gUnknown_02024E8C, posX, posY, 1);
+ gSprites[spriteID].oam.paletteNum = a3;
+
+ return spriteID;
+}
+
+static void sub_814386C(struct Sprite* sprite)
+{
+ if (sprite->pos2.y > 120)
+ DestroySprite(sprite);
+ else
+ {
+ u16 rand;
+ u8 tableID;
+
+ sprite->pos2.y++;
+ sprite->pos2.y += sprite->data1;
+
+ tableID = sprite->data0;
+ rand = (Random() % 4) + 8;
+ sprite->pos2.x = rand * gSineTable[tableID] / 256;
+
+ sprite->data0 += 4;
+ }
+}
+
+static bool8 sub_81438C4(void)
+{
+ u8 spriteID;
+ struct Sprite* sprite;
+
+ s16 posX = Random() % 240;
+ s16 posY = -(Random() % 8);
+
+ spriteID = CreateSprite(&sSpriteTemplate_840B7A4, posX, posY, 0);
+ sprite = &gSprites[spriteID];
+
+ StartSpriteAnim(sprite, Random() % 17);
+
+ if (Random() & 3)
+ sprite->data1 = 0;
+ else
+ sprite->data1 = 1;
+
+ return 0;
+}
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/scene/intro_credits_graphics.c b/src/scene/intro_credits_graphics.c
new file mode 100755
index 000000000..cd0589af8
--- /dev/null
+++ b/src/scene/intro_credits_graphics.c
@@ -0,0 +1,532 @@
+#include "global.h"
+#include "gba/m4a_internal.h"
+#include "intro.h"
+#include "data2.h"
+#include "decompress.h"
+#include "hall_of_fame.h"
+#include "intro_credits_graphics.h"
+#include "libgncmultiboot.h"
+#include "link.h"
+#include "m4a.h"
+#include "main.h"
+#include "new_game.h"
+#include "palette.h"
+#include "rng.h"
+#include "save.h"
+#include "songs.h"
+#include "sound.h"
+#include "species.h"
+#include "task.h"
+#include "title_screen.h"
+#include "trig.h"
+#include "unknown_task.h"
+
+// define register constants for the inline asm
+asm(".include \"constants/gba_constants.inc\"\n");
+
+struct UnknownStruct1
+{
+ u8 var0_0:4;
+ u8 var0_4:2;
+ u8 var0_6:2;
+ u8 var1;
+ u8 var2;
+ u8 var3;
+ u16 var4;
+};
+
+extern u8 gUnknown_0841225C;
+extern u8 gUnknown_084126DC;
+extern u8 gUnknown_084121FC;
+extern u8 gUnknown_084128D8;
+extern u8 gUnknown_08412EB4;
+extern u8 gUnknown_08412818;
+extern u8 gUnknown_08413184;
+extern u8 gUnknown_08413340;
+extern u8 gUnknown_084139C8;
+extern u8 gUnknown_08413300;
+extern u8 gUnknown_08413CCC;
+
+extern const struct SpriteTemplate gSpriteTemplate_8416B3C;
+const extern struct CompressedSpriteSheet gUnknown_08416B54;
+const extern struct CompressedSpriteSheet gUnknown_08416BDC;
+
+extern u16 gUnknown_02039358;
+extern s16 gUnknown_0203935A;
+extern s16 gUnknown_0203935C;
+extern u8 gReservedSpritePaletteCount;
+
+void sub_8149248();
+void sub_8149264();
+
+void load_intro_part2_graphics(u8 a)
+{
+ LZ77UnCompVram(&gUnknown_0841225C, (void *)(VRAM + 0x4000));
+ LZ77UnCompVram(&gUnknown_084126DC, (void *)(VRAM + 0x7800));
+ LoadPalette(&gUnknown_084121FC, 240, 32);
+ switch (a)
+ {
+ case 0:
+ default:
+ LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM));
+ LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000));
+ LoadPalette(&gUnknown_08412818, 0, 96);
+ LoadCompressedObjectPic(&gUnknown_08416B54);
+ LoadPalette(&gUnknown_08413184, 256, 32);
+ sub_8149248();
+ break;
+ case 1:
+ LZ77UnCompVram(&gUnknown_08413340, (void *)(VRAM));
+ LZ77UnCompVram(&gUnknown_084139C8, (void *)(VRAM + 0x3000));
+ LoadPalette(&gUnknown_08413300, 0, 32);
+ LoadCompressedObjectPic(&gUnknown_08416BDC);
+ LoadPalette(&gUnknown_08413CCC, 256, 32);
+ sub_8149264();
+ break;
+ }
+ gUnknown_0203935C = 0;
+ gReservedSpritePaletteCount = 8;
+}
+
+void sub_8148C78(u8 a)
+{
+ if (a == 1)
+ {
+ REG_BG3CNT = 0x603;
+ REG_BG2CNT = 0x702;
+ REG_BG1CNT = 0xF05;
+ REG_DISPCNT = 0x1E40;
+ }
+ else
+ {
+ REG_BG3CNT = 0x603;
+ REG_BG2CNT = 0x702;
+ REG_BG1CNT = 0xF05;
+ REG_DISPCNT = 0x1E40;
+ }
+}
+
+extern u8 gUnknown_084131C4;
+extern u8 gUnknown_084131A4;
+extern u8 gUnknown_0841221C;
+extern u8 gUnknown_08412878;
+extern u8 gUnknown_08413320;
+extern u8 gUnknown_0841223C;
+extern u8 gUnknown_08413E78;
+extern u8 gUnknown_08414084;
+extern u8 gUnknown_08413E38;
+const extern struct CompressedSpriteSheet gUnknown_08416C70;
+extern u8 gUnknown_08414064;
+extern struct UnknownStruct1 gUnknown_08416B94;
+extern struct UnknownStruct1 gUnknown_08416C10;
+extern struct UnknownStruct1 gUnknown_08416C8C;
+const extern union AnimCmd *const gSpriteAnimTable_8416B84;
+const extern union AnimCmd *const gSpriteAnimTable_8416C04;
+const extern union AnimCmd *const gSpriteAnimTable_8416C88;
+const extern struct SpriteTemplate gSpriteTemplate_8416CDC;
+const extern struct SpriteTemplate gSpriteTemplate_Brendan;
+const extern struct SpriteTemplate gSpriteTemplate_8416CF4;
+const extern struct SpriteTemplate gSpriteTemplate_May;
+const extern struct SpriteTemplate gSpriteTemplate_8416D7C;
+const extern struct SpriteTemplate gSpriteTemplate_8416D94;
+
+void sub_8149280();
+
+void sub_8148CB0(u8 a)
+{
+ LZ77UnCompVram(&gUnknown_0841225C, (void *)(VRAM + 0x4000));
+ LZ77UnCompVram(&gUnknown_084126DC, (void *)(VRAM + 0x7800));
+ switch (a)
+ {
+ case 0:
+ default:
+ LoadPalette(&gUnknown_084121FC, 240, 32);
+ LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM));
+ LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000));
+ LoadPalette(&gUnknown_08412818, 0, 96);
+ LoadCompressedObjectPic(&gUnknown_08416B54);
+ LZ77UnCompVram(&gUnknown_084131C4, (void *)(VRAM + 0x10000));
+ LoadPalette(&gUnknown_08413184, 256, 32);
+ sub_8149248();
+ break;
+ case 1:
+ LoadPalette(&gUnknown_0841221C, 240, 32);
+ LZ77UnCompVram(&gUnknown_084128D8, (void *)(VRAM));
+ LZ77UnCompVram(&gUnknown_08412EB4, (void *)(VRAM + 0x3000));
+ LoadPalette(&gUnknown_08412878, 0, 96);
+ LoadCompressedObjectPic(&gUnknown_08416B54);
+ LZ77UnCompVram(&gUnknown_084131C4, (void *)(VRAM + 0x10000));
+ LoadPalette(&gUnknown_084131A4, 256, 32);
+ sub_8149248();
+ break;
+ case 2:
+ case 3:
+ LoadPalette(&gUnknown_0841221C, 240, 32);
+ LZ77UnCompVram(&gUnknown_08413340, (void *)(VRAM));
+ LZ77UnCompVram(&gUnknown_084139C8, (void *)(VRAM + 0x3000));
+ LoadPalette(&gUnknown_08413320, 0, 32);
+ LoadCompressedObjectPic(&gUnknown_08416BDC);
+ LoadPalette(&gUnknown_08413320, 256, 32);
+ sub_8149264();
+ break;
+ case 4:
+ LoadPalette(&gUnknown_0841223C, 240, 32);
+ LZ77UnCompVram(&gUnknown_08413E78, (void *)(VRAM));
+ LZ77UnCompVram(&gUnknown_08414084, (void *)(VRAM + 0x3000));
+ LoadPalette(&gUnknown_08413E38, 0, 64);
+ LoadCompressedObjectPic(&gUnknown_08416C70);
+ LoadPalette(&gUnknown_08414064, 256, 32);
+ sub_8149280();
+ break;
+ }
+ gReservedSpritePaletteCount = 8;
+ gUnknown_0203935C = 0;
+}
+
+void sub_8148E90(u8 a)
+{
+ REG_BG3CNT = 0x603;
+ REG_BG2CNT = 0x702;
+ REG_BG1CNT = 0xF05;
+ REG_DISPCNT = 0x1F40;
+}
+
+u8 sub_8148EC0(u8 a, u16 b, u16 c, u16 d)
+{
+ u8 taskId = CreateTask(&sub_8148F3C, 0);
+
+ gTasks[taskId].data[0] = a;
+ gTasks[taskId].data[1] = b;
+ gTasks[taskId].data[2] = 0;
+ gTasks[taskId].data[3] = 0;
+ gTasks[taskId].data[4] = c;
+ gTasks[taskId].data[5] = 0;
+ gTasks[taskId].data[6] = 0;
+ gTasks[taskId].data[7] = d;
+ gTasks[taskId].data[8] = 8;
+ gTasks[taskId].data[9] = 0;
+ sub_8148F3C(taskId);
+ return taskId;
+}
+
+#ifdef NONMATCHING
+void sub_8148F3C(u8 taskId)
+{
+ register u32 r4 asm("r4");
+ s32 r2;
+
+ r4 = (u16)gTasks[taskId].data[1] << 16;
+ if (r4 != 0)
+ {
+ r2 = (gTasks[taskId].data[2] << 16) + (u16)gTasks[taskId].data[3] - (r4 >> 12);
+ gTasks[taskId].data[2] = r2 >> 16;
+ gTasks[taskId].data[3] = r2;
+ REG_BG1HOFS = gTasks[taskId].data[2];
+ REG_BG1VOFS = gUnknown_0203935A + gUnknown_02039358;
+ }
+
+ r4 = (u16)gTasks[taskId].data[4] << 16;
+ if (r4 != 0)
+ {
+ r2 = (gTasks[taskId].data[5] << 16) + (u16)gTasks[taskId].data[6] - (r4 >> 12);
+ gTasks[taskId].data[5] = r2 >> 16;
+ gTasks[taskId].data[3] = r2;
+ REG_BG2HOFS = gTasks[taskId].data[5];
+ if (gTasks[taskId].data[0] != 0)
+ REG_BG2VOFS = gUnknown_0203935A + gUnknown_02039358;
+ else
+ REG_BG2VOFS = gUnknown_02039358;
+ }
+
+ r4 = (u16)gTasks[taskId].data[7] << 16;
+ if (r4 != 0)
+ {
+ r2 = (gTasks[taskId].data[8] << 16) + (u16)gTasks[taskId].data[9] - (r4 >> 12);;
+ gTasks[taskId].data[8] = r2 >> 16;
+ gTasks[taskId].data[9] = r2;
+ REG_BG3HOFS = gTasks[taskId].data[8];
+ REG_BG3VOFS = gUnknown_02039358;
+ }
+}
+#else
+__attribute__((naked))
+void sub_8148F3C(u8 taskId)
+{
+ asm(".syntax unified\n\
+ push {r4-r6,lr}\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ ldr r1, _08148FB4 @ =gTasks\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r3, r0, r1\n\
+ ldrh r0, [r3, 0xA]\n\
+ lsls r4, r0, 16\n\
+ adds r6, r1, 0\n\
+ cmp r4, 0\n\
+ beq _08148F7C\n\
+ movs r1, 0xC\n\
+ ldrsh r0, [r3, r1]\n\
+ lsls r0, 16\n\
+ ldrh r1, [r3, 0xE]\n\
+ adds r2, r0, r1\n\
+ lsrs r0, r4, 12\n\
+ subs r2, r0\n\
+ asrs r1, r2, 16\n\
+ strh r1, [r3, 0xC]\n\
+ strh r2, [r3, 0xE]\n\
+ ldr r0, _08148FB8 @ =REG_BG1HOFS\n\
+ strh r1, [r0]\n\
+ ldr r2, _08148FBC @ =REG_BG1VOFS\n\
+ ldr r1, _08148FC0 @ =gUnknown_02039358\n\
+ ldr r0, _08148FC4 @ =gUnknown_0203935A\n\
+ ldrh r0, [r0]\n\
+ ldrh r1, [r1]\n\
+ adds r0, r1\n\
+ strh r0, [r2]\n\
+_08148F7C:\n\
+ ldrh r0, [r3, 0x10]\n\
+ lsls r4, r0, 16\n\
+ cmp r4, 0\n\
+ beq _08148FD8\n\
+ movs r1, 0x12\n\
+ ldrsh r0, [r3, r1]\n\
+ lsls r0, 16\n\
+ ldrh r1, [r3, 0x14]\n\
+ adds r2, r0, r1\n\
+ lsrs r0, r4, 12\n\
+ subs r2, r0\n\
+ asrs r1, r2, 16\n\
+ strh r1, [r3, 0x12]\n\
+ strh r2, [r3, 0x14]\n\
+ ldr r0, _08148FC8 @ =REG_BG2HOFS\n\
+ strh r1, [r0]\n\
+ movs r1, 0x8\n\
+ ldrsh r0, [r3, r1]\n\
+ cmp r0, 0\n\
+ beq _08148FD0\n\
+ ldr r2, _08148FCC @ =REG_BG2VOFS\n\
+ ldr r1, _08148FC0 @ =gUnknown_02039358\n\
+ ldr r0, _08148FC4 @ =gUnknown_0203935A\n\
+ ldrh r0, [r0]\n\
+ ldrh r1, [r1]\n\
+ adds r0, r1\n\
+ strh r0, [r2]\n\
+ b _08148FD8\n\
+ .align 2, 0\n\
+_08148FB4: .4byte gTasks\n\
+_08148FB8: .4byte REG_BG1HOFS\n\
+_08148FBC: .4byte REG_BG1VOFS\n\
+_08148FC0: .4byte gUnknown_02039358\n\
+_08148FC4: .4byte gUnknown_0203935A\n\
+_08148FC8: .4byte REG_BG2HOFS\n\
+_08148FCC: .4byte REG_BG2VOFS\n\
+_08148FD0:\n\
+ ldr r0, _08149010 @ =REG_BG2VOFS\n\
+ ldr r1, _08149014 @ =gUnknown_02039358\n\
+ ldrh r1, [r1]\n\
+ strh r1, [r0]\n\
+_08148FD8:\n\
+ lsls r0, r5, 2\n\
+ adds r0, r5\n\
+ lsls r0, 3\n\
+ adds r3, r0, r6\n\
+ ldrh r0, [r3, 0x16]\n\
+ lsls r4, r0, 16\n\
+ cmp r4, 0\n\
+ beq _08149008\n\
+ movs r1, 0x18\n\
+ ldrsh r0, [r3, r1]\n\
+ lsls r0, 16\n\
+ ldrh r1, [r3, 0x1A]\n\
+ adds r2, r0, r1\n\
+ lsrs r0, r4, 12\n\
+ subs r2, r0\n\
+ asrs r1, r2, 16\n\
+ strh r1, [r3, 0x18]\n\
+ strh r2, [r3, 0x1A]\n\
+ ldr r0, _08149018 @ =REG_BG3HOFS\n\
+ strh r1, [r0]\n\
+ ldr r1, _0814901C @ =REG_BG3VOFS\n\
+ ldr r0, _08149014 @ =gUnknown_02039358\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r1]\n\
+_08149008:\n\
+ pop {r4-r6}\n\
+ pop {r0}\n\
+ bx r0\n\
+ .align 2, 0\n\
+_08149010: .4byte REG_BG2VOFS\n\
+_08149014: .4byte gUnknown_02039358\n\
+_08149018: .4byte REG_BG3HOFS\n\
+_0814901C: .4byte REG_BG3VOFS\n\
+ .syntax divided\n");
+}
+#endif
+
+void sub_8149020(u8 mode)
+{
+ u16 var1;
+ u16 var2;
+ switch (mode)
+ {
+ case 0:
+ default:
+ /* stuff */
+ if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
+ break;
+ if (gMain.vblankCounter1 & 4)
+ {
+ var1 = gPlttBufferUnfaded[9];
+ var2 = gPlttBufferUnfaded[10];
+ }
+ else
+ {
+ var1 = gPlttBufferUnfaded[10];
+ var2 = gPlttBufferUnfaded[9];
+ }
+ LoadPalette(&var1, 9, 2);
+ LoadPalette(&var2, 10, 2);
+ break;
+ case 2:
+ if (gMain.vblankCounter1 & 3 || gPaletteFade.active)
+ break;
+ if (gMain.vblankCounter1 & 4)
+ {
+ var1 = 0x3D27;
+ var2 = 0x295;
+ }
+ else
+ {
+ var1 = 0x31C;
+ var2 = 0x3D27;
+ }
+ LoadPalette(&var1, 12, 2);
+ LoadPalette(&var2, 13, 2);
+ break;
+ case 1:
+ break;
+ }
+}
+
+void sub_814910C(struct Sprite *sprite)
+{
+ if (gUnknown_0203935C)
+ {
+ DestroySprite(sprite);
+ }
+ else
+ {
+ s32 var = ((sprite->pos1.x << 16) | (u16)sprite->data2) + (u16)sprite->data1;
+ sprite->pos1.x = var >> 16;
+ sprite->data2 = var;
+ if (sprite->pos1.x > 255) sprite->pos1.x = 0xFFE0;
+ if (sprite->data0)
+ {
+ sprite->pos2.y = -(gUnknown_02039358 + gUnknown_0203935A);
+ }
+ else
+ {
+ sprite->pos2.y = -gUnknown_02039358;
+ }
+ }
+}
+
+void sub_8149174(u8 a, struct UnknownStruct1 *b, const union AnimCmd *const *c, u8 d)
+{
+ u8 i;
+
+ for(i = 0; i < d; i++)
+ {
+ u8 sprite = CreateSprite(&gSpriteTemplate_8416B3C, b[i].var1, b[i].var2, b[i].var3);
+ CalcCenterToCornerVec(&gSprites[sprite], b[i].var0_4, b[i].var0_6, 0);
+ gSprites[sprite].oam.priority = 3;
+ gSprites[sprite].oam.shape = b[i].var0_4;
+ gSprites[sprite].oam.size = b[i].var0_6;
+ gSprites[sprite].oam.paletteNum = 0;
+ gSprites[sprite].anims = c;
+ StartSpriteAnim(&gSprites[sprite], b[i].var0_0);
+ gSprites[sprite].data0 = a;
+ gSprites[sprite].data1 = b[i].var4;
+ gSprites[sprite].data2 = 0;
+ }
+}
+
+void sub_8149248()
+{
+ sub_8149174(0, &gUnknown_08416B94, &gSpriteAnimTable_8416B84, 9);
+}
+
+void sub_8149264()
+{
+ sub_8149174(1, &gUnknown_08416C10, &gSpriteAnimTable_8416C04, 12);
+}
+
+void sub_8149280()
+{
+ sub_8149174(1, &gUnknown_08416C8C, &gSpriteAnimTable_8416C88, 6);
+}
+
+void nullsub_82()
+{
+}
+
+void sub_81492A0(struct Sprite* sprite)
+{
+ sprite->invisible = gSprites[sprite->data0].invisible;
+ sprite->pos1.x = gSprites[sprite->data0].pos1.x;
+ sprite->pos1.y = gSprites[sprite->data0].pos1.y + 8;
+ sprite->pos2.x = gSprites[sprite->data0].pos2.x;
+ sprite->pos2.y = gSprites[sprite->data0].pos2.y;
+}
+
+
+
+u8 intro_create_brendan_sprite(s16 a, s16 b)
+{
+ u8 sprite = CreateSprite(&gSpriteTemplate_8416CDC, a, b, 0);
+ u8 brendan = CreateSprite(&gSpriteTemplate_Brendan, a, b + 8, 1);
+ gSprites[brendan].data0 = sprite;
+ return sprite;
+}
+
+u8 intro_create_may_sprite(s16 a, s16 b)
+{
+ u8 sprite = CreateSprite(&gSpriteTemplate_8416CF4, a, b, 0);
+ u8 may = CreateSprite(&gSpriteTemplate_May, a, b + 8, 1);
+ gSprites[may].data0 = sprite;
+ return sprite;
+}
+
+void nullsub_83()
+{
+}
+
+void sub_81493C4(struct Sprite* sprite)
+{
+ sprite->invisible = gSprites[sprite->data0].invisible;
+ sprite->pos1.y = gSprites[sprite->data0].pos1.y;
+ sprite->pos2.x = gSprites[sprite->data0].pos2.x;
+ sprite->pos2.y = gSprites[sprite->data0].pos2.y;
+}
+
+u8 intro_create_latios_sprite(s16 a, s16 b)
+{
+ u8 sprite = CreateSprite(&gSpriteTemplate_8416D7C, a - 32, b, 2);
+ u8 latios = CreateSprite(&gSpriteTemplate_8416D7C, a + 32, b, 2);
+ gSprites[latios].data0 = sprite;
+ StartSpriteAnim(&gSprites[latios], 1);
+ gSprites[latios].callback = &sub_81493C4;
+ return sprite;
+}
+
+u8 intro_create_latias_sprite(s16 a, s16 b)
+{
+ u8 sprite = CreateSprite(&gSpriteTemplate_8416D94, a - 32, b, 2);
+ u8 latios = CreateSprite(&gSpriteTemplate_8416D94, a + 32, b, 2);
+ gSprites[latios].data0 = sprite;
+ StartSpriteAnim(&gSprites[latios], 1);
+ gSprites[latios].callback = &sub_81493C4;
+ return sprite;
+}
diff --git a/src/new_game.c b/src/scene/new_game.c
index 226ac9bb7..6ab21c544 100644
--- a/src/new_game.c
+++ b/src/scene/new_game.c
@@ -11,7 +11,7 @@
#include "item_menu.h"
#include "lottery_corner.h"
#include "mail_data.h"
-#include "mauville_old_man.h"
+#include "mauville_man.h"
#include "play_time.h"
#include "player_pc.h"
#include "pokeblock.h"
@@ -20,7 +20,7 @@
#include "pokemon_storage_system.h"
#include "rng.h"
#include "roamer.h"
-#include "rom4.h"
+#include "overworld.h"
#include "rtc.h"
#include "script.h"
#include "secret_base.h"
@@ -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();
}
@@ -157,7 +157,7 @@ void NewGameInitData(void)
ClearPokeblocks();
ClearDecorationInventories();
InitEasyChatPhrases();
- SetMauvilleOldMan();
+ SetupMauvilleOldMan();
InitDewfordTrend();
ResetFanClub();
ResetLotteryCorner();
diff --git a/src/title_screen.c b/src/scene/title_screen.c
index ab0f1d505..2503b0654 100644
--- a/src/title_screen.c
+++ b/src/scene/title_screen.c
@@ -437,99 +437,99 @@ __attribute__((naked))
static void CreatePressStartBanner(s16 x, s16 y)
{
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\
- lsls r0, 16\n\
- ldr r2, _0807C3AC @ =0xffe00000\n\
- adds r0, r2\n\
- lsrs r0, 16\n\
- movs r6, 0\n\
- lsls r1, 16\n\
- mov r10, r1\n\
- mov r8, r10\n\
+ push {r4-r7,lr}\n\
+ mov r7, r10\n\
+ mov r6, r9\n\
+ mov r5, r8\n\
+ push {r5-r7}\n\
+ lsls r0, 16\n\
+ ldr r2, _0807C3AC @ =0xffe00000\n\
+ adds r0, r2\n\
+ lsrs r0, 16\n\
+ movs r6, 0\n\
+ lsls r1, 16\n\
+ mov r10, r1\n\
+ mov r8, r10\n\
_0807C302:\n\
- lsls r5, r0, 16\n\
- asrs r5, 16\n\
- ldr r0, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\
- adds r1, r5, 0\n\
- mov r3, r8\n\
- asrs r2, r3, 16\n\
- movs r3, 0\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r4, r0, 4\n\
- adds r4, r0\n\
- lsls r4, 2\n\
- ldr r0, _0807C3B4 @ =gSprites\n\
- mov r9, r0\n\
- add r4, r9\n\
- adds r0, r4, 0\n\
- adds r1, r6, 0\n\
- bl StartSpriteAnim\n\
- movs r7, 0x1\n\
- strh r7, [r4, 0x2E]\n\
- adds r0, r6, 0x1\n\
- lsls r0, 24\n\
- lsrs r6, r0, 24\n\
- adds r5, 0x20\n\
- lsls r5, 16\n\
- lsrs r0, r5, 16\n\
- cmp r6, 0x2\n\
- bls _0807C302\n\
- ldr r1, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\
- mov r8, r1\n\
- lsls r5, r0, 16\n\
- asrs r5, 16\n\
- mov r2, r10\n\
- asrs r6, r2, 16\n\
- mov r0, r8\n\
- adds r1, r5, 0\n\
- adds r2, r6, 0\n\
- movs r3, 0\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r4, r0, 4\n\
- adds r4, r0\n\
- lsls r4, 2\n\
- add r4, r9\n\
- adds r0, r4, 0\n\
- movs r1, 0x8\n\
- bl StartSpriteAnim\n\
- strh r7, [r4, 0x2E]\n\
- subs r5, 0x60\n\
- lsls r5, 16\n\
- asrs r5, 16\n\
- subs r6, 0x8\n\
- lsls r6, 16\n\
- asrs r6, 16\n\
- mov r0, r8\n\
- adds r1, r5, 0\n\
- adds r2, r6, 0\n\
- movs r3, 0\n\
- bl CreateSprite\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r4, r0, 4\n\
- adds r4, r0\n\
- lsls r4, 2\n\
- add r4, r9\n\
- adds r0, r4, 0\n\
- movs r1, 0x9\n\
- bl StartSpriteAnim\n\
- strh r7, [r4, 0x2E]\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\
+ lsls r5, r0, 16\n\
+ asrs r5, 16\n\
+ ldr r0, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\
+ adds r1, r5, 0\n\
+ mov r3, r8\n\
+ asrs r2, r3, 16\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r4, r0, 4\n\
+ adds r4, r0\n\
+ lsls r4, 2\n\
+ ldr r0, _0807C3B4 @ =gSprites\n\
+ mov r9, r0\n\
+ add r4, r9\n\
+ adds r0, r4, 0\n\
+ adds r1, r6, 0\n\
+ bl StartSpriteAnim\n\
+ movs r7, 0x1\n\
+ strh r7, [r4, 0x2E]\n\
+ adds r0, r6, 0x1\n\
+ lsls r0, 24\n\
+ lsrs r6, r0, 24\n\
+ adds r5, 0x20\n\
+ lsls r5, 16\n\
+ lsrs r0, r5, 16\n\
+ cmp r6, 0x2\n\
+ bls _0807C302\n\
+ ldr r1, _0807C3B0 @ =sStartCopyrightBannerSpriteTemplate\n\
+ mov r8, r1\n\
+ lsls r5, r0, 16\n\
+ asrs r5, 16\n\
+ mov r2, r10\n\
+ asrs r6, r2, 16\n\
+ mov r0, r8\n\
+ adds r1, r5, 0\n\
+ adds r2, r6, 0\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r4, r0, 4\n\
+ adds r4, r0\n\
+ lsls r4, 2\n\
+ add r4, r9\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x8\n\
+ bl StartSpriteAnim\n\
+ strh r7, [r4, 0x2E]\n\
+ subs r5, 0x60\n\
+ lsls r5, 16\n\
+ asrs r5, 16\n\
+ subs r6, 0x8\n\
+ lsls r6, 16\n\
+ asrs r6, 16\n\
+ mov r0, r8\n\
+ adds r1, r5, 0\n\
+ adds r2, r6, 0\n\
+ movs r3, 0\n\
+ bl CreateSprite\n\
+ lsls r0, 24\n\
+ lsrs r0, 24\n\
+ lsls r4, r0, 4\n\
+ adds r4, r0\n\
+ lsls r4, 2\n\
+ add r4, r9\n\
+ adds r0, r4, 0\n\
+ movs r1, 0x9\n\
+ bl StartSpriteAnim\n\
+ strh r7, [r4, 0x2E]\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\
_0807C3AC: .4byte 0xffe00000\n\
_0807C3B0: .4byte sStartCopyrightBannerSpriteTemplate\n\
_0807C3B4: .4byte gSprites\n\
diff --git a/src/script_menu.c b/src/script_menu.c
deleted file mode 100644
index f4ac55fb9..000000000
--- a/src/script_menu.c
+++ /dev/null
@@ -1,1134 +0,0 @@
-#include "global.h"
-#include "script_menu.h"
-#include "event_data.h"
-#include "field_effect.h"
-#include "menu.h"
-#include "palette.h"
-#include "script.h"
-#include "sound.h"
-#include "sprite.h"
-#include "strings.h"
-#include "task.h"
-
-// multichoice lists
-const struct MenuAction MultichoiceList_00[] =
-{
- {(u8 *)OtherText_Petalburg, 0},
- {(u8 *)OtherText_Slateport, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_02[] =
-{
- {(u8 *)OtherText_Enter, 0},
- {(u8 *)OtherText_Info3, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_03[] =
-{
- {(u8 *)OtherText_WhatsAContest, 0},
- {(u8 *)OtherText_TypesOfContest, 0},
- {(u8 *)OtherText_Ranks, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_04[] =
-{
- {(u8 *)OtherText_CoolContest, 0},
- {(u8 *)OtherText_BeautyContest, 0},
- {(u8 *)OtherText_CuteContest, 0},
- {(u8 *)OtherText_SmartContest, 0},
- {(u8 *)OtherText_ToughContest, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_06[] =
-{
- {(u8 *)OtherText_Decoration, 0},
- {(u8 *)OtherText_PackUp, 0},
- {(u8 *)OtherText_Registry, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_05[] =
-{
- {(u8 *)OtherText_Decoration, 0},
- {(u8 *)OtherText_PackUp, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_07[] =
-{
- {(u8 *)OtherText_Register, 0},
- {(u8 *)OtherText_Registry, 0},
- {(u8 *)OtherText_Information, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_12[] =
-{
- {(u8 *)OtherText_Mach, 0},
- {(u8 *)OtherText_Acro, 0},
-};
-
-const struct MenuAction MultichoiceList_13[] =
-{
- {(u8 *)OtherText_Poison, 0},
- {(u8 *)OtherText_Paralysis, 0},
- {(u8 *)OtherText_Sleep, 0},
- {(u8 *)OtherText_Burn, 0},
- {(u8 *)OtherText_Frozen, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_14[] =
-{
- {(u8 *)OtherText_Dewford, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_16[] =
-{
- {(u8 *)OtherText_SawIt, 0},
- {(u8 *)OtherText_NotYet, 0},
-};
-
-const struct MenuAction MultichoiceList_17[] =
-{
- {(u8 *)OtherText_Yes, 0},
- {(u8 *)OtherText_No, 0},
- {(u8 *)OtherText_Info3, 0},
-};
-
-const struct MenuAction MultichoiceList_18[] =
-{
- {(u8 *)OtherText_SingleBattle, 0},
- {(u8 *)OtherText_DoubleBattle, 0},
- {(u8 *)OtherText_MultiBattle, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_19[] =
-{
- {(u8 *)OtherText_Littleroot, 0},
- {(u8 *)OtherText_Slateport, 0},
- {(u8 *)OtherText_Lilycove, 0},
-};
-
-const struct MenuAction MultichoiceList_20[] =
-{
- {(u8 *)OtherText_Yes, 0},
- {(u8 *)OtherText_No, 0},
- {(u8 *)OtherText_Info3, 0},
-};
-
-const struct MenuAction MultichoiceList_23[] =
-{
- {(u8 *)OtherText_MakeAChallenge, 0},
- {(u8 *)OtherText_ObtainInformation, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_24[] =
-{
- {(u8 *)OtherText_Lv50_2, 0},
- {(u8 *)OtherText_Lv100_2, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_25[] =
-{
- {(u8 *)OtherText_Zigzagoon, 0},
- {(u8 *)OtherText_Nincada, 0},
- {(u8 *)OtherText_Poochyena, 0},
-};
-
-const struct MenuAction MultichoiceList_26[] =
-{
- {(u8 *)OtherText_Nincada2, 0},
- {(u8 *)OtherText_Lotad, 0},
- {(u8 *)OtherText_Roselia, 0},
-};
-
-const struct MenuAction MultichoiceList_27[] =
-{
- {(u8 *)OtherText_Shroomish, 0},
- {(u8 *)OtherText_Nincada3, 0},
- {(u8 *)OtherText_Surskit, 0},
-};
-
-const struct MenuAction MultichoiceList_28[] =
-{
- {(u8 *)OtherText_Treecko, 0},
- {(u8 *)OtherText_Torchic, 0},
- {(u8 *)OtherText_Mudkip, 0},
-};
-
-const struct MenuAction MultichoiceList_29[] =
-{
- {(u8 *)OtherText_Seedot, 0},
- {(u8 *)OtherText_Shroomish2, 0},
- {(u8 *)OtherText_Spinda, 0},
-};
-
-const struct MenuAction MultichoiceList_30[] =
-{
- {(u8 *)OtherText_Shroomish3, 0},
- {(u8 *)OtherText_Zigzagoon2, 0},
- {(u8 *)OtherText_Wurmple, 0},
-};
-
-const struct MenuAction MultichoiceList_31[] =
-{
- {(u8 *)OtherText_PokeBall, 0},
- {(u8 *)OtherText_SuperPotion, 0},
- {(u8 *)OtherText_SamePrice, 0},
-};
-
-const struct MenuAction MultichoiceList_32[] =
-{
- {(u8 *)OtherText_Yen135, 0},
- {(u8 *)OtherText_Yen155, 0},
- {(u8 *)OtherText_Yen175, 0},
-};
-
-const struct MenuAction MultichoiceList_33[] =
-{
- {(u8 *)OtherText_CostMore, 0},
- {(u8 *)OtherText_CostLess, 0},
- {(u8 *)OtherText_SamePrice2, 0},
-};
-
-const struct MenuAction MultichoiceList_34[] =
-{
- {(u8 *)OtherText_MaleSymbol, 0},
- {(u8 *)OtherText_FemaleSymbol, 0},
- {(u8 *)OtherText_Neither, 0},
-};
-
-const struct MenuAction MultichoiceList_35[] =
-{
- {(u8 *)OtherText_Males, 0},
- {(u8 *)OtherText_Females, 0},
- {(u8 *)OtherText_SameNumber, 0},
-};
-
-const struct MenuAction MultichoiceList_36[] =
-{
- {(u8 *)OtherText_Male, 0},
- {(u8 *)OtherText_Female, 0},
- {(u8 *)OtherText_ItDepends, 0},
-};
-
-const struct MenuAction MultichoiceList_37[] =
-{
- {(u8 *)OtherText_Six2, 0},
- {(u8 *)OtherText_Eight2, 0},
- {(u8 *)OtherText_Ten, 0},
-};
-
-const struct MenuAction MultichoiceList_38[] =
-{
- {(u8 *)OtherText_One, 0},
- {(u8 *)OtherText_Two, 0},
- {(u8 *)OtherText_Three, 0},
-};
-
-const struct MenuAction MultichoiceList_39[] =
-{
- {(u8 *)OtherText_Six, 0},
- {(u8 *)OtherText_Seven, 0},
- {(u8 *)OtherText_Eight, 0},
-};
-
-const struct MenuAction MultichoiceList_42[] =
-{
- {(u8 *)OtherText_FreshWater, 0},
- {(u8 *)OtherText_SodaPop, 0},
- {(u8 *)OtherText_Lemonade, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_43[] =
-{
- {(u8 *)OtherText_HowToRide, 0},
- {(u8 *)OtherText_HowToTurn, 0},
- {(u8 *)OtherText_SandySlopes, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_44[] =
-{
- {(u8 *)OtherText_Wheelies, 0},
- {(u8 *)OtherText_BunnyHops, 0},
- {(u8 *)OtherText_Jumping, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_45[] =
-{
- {(u8 *)OtherText_Satisfied, 0},
- {(u8 *)OtherText_Dissatisfied, 0},
-};
-
-const struct MenuAction MultichoiceList_46[] =
-{
- {(u8 *)OtherText_Deepseatooth, 0},
- {(u8 *)OtherText_Deepseascale, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_47[] =
-{
- {(u8 *)OtherText_BlueFlute2, 0},
- {(u8 *)OtherText_YellowFlute2, 0},
- {(u8 *)OtherText_RedFlute2, 0},
- {(u8 *)OtherText_WhiteFlute2, 0},
- {(u8 *)OtherText_BlackFlute2, 0},
- {(u8 *)OtherText_GlassChair, 0},
- {(u8 *)OtherText_GlassDesk, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_48[] =
-{
- {(u8 *)OtherText_TreeckoDoll, 0},
- {(u8 *)OtherText_TorchicDoll, 0},
- {(u8 *)OtherText_MudkipDoll, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_55[] =
-{
- {(u8 *)OtherText_TM32, 0},
- {(u8 *)OtherText_TM29, 0},
- {(u8 *)OtherText_TM35, 0},
- {(u8 *)OtherText_TM24, 0},
- {(u8 *)OtherText_TM13, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_49[] =
-{
- {(u8 *)OtherText_50Coins, 0},
- {(u8 *)OtherText_500Coins, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_50[] =
-{
- {(u8 *)OtherText_Excellent, 0},
- {(u8 *)OtherText_NotSoHot, 0},
-};
-
-const struct MenuAction MultichoiceList_52[] =
-{
- {(u8 *)OtherText_Lilycove, 0},
- {(u8 *)OtherText_BattleTower, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_53[] =
-{
- {(u8 *)OtherText_Slateport, 0},
- {(u8 *)OtherText_Lilycove, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_54[] =
-{
- {(u8 *)OtherText_Right, 0},
- {(u8 *)OtherText_Left, 0},
-};
-
-const struct MenuAction MultichoiceList_56[] =
-{
- {(u8 *)OtherText_Slateport, 0},
- {(u8 *)OtherText_BattleTower, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_57[] =
-{
- {(u8 *)OtherText_1F_2, 0},
- {(u8 *)OtherText_2F_2, 0},
- {(u8 *)OtherText_3F_2, 0},
- {(u8 *)OtherText_4F_2, 0},
- {(u8 *)OtherText_5F_2, 0},
-};
-
-const struct MenuAction MultichoiceList_58[] =
-{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_59[] =
-{
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_60[] =
-{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_61[] =
-{
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_62[] =
-{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_63[] =
-{
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_64[] =
-{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_65[] =
-{
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_66[] =
-{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_67[] =
-{
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_68[] =
-{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_69[] =
-{
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_70[] =
-{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_71[] =
-{
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_72[] =
-{
- {(u8 *)OtherText_RedShard, 0},
- {(u8 *)OtherText_YellowShard, 0},
- {(u8 *)OtherText_BlueShard, 0},
- {(u8 *)OtherText_GreenShard, 0},
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MenuAction MultichoiceList_01[] =
-{
- {(u8 *)gOtherText_CancelNoTerminator, 0},
-};
-
-const struct MultichoiceListStruct gMultichoiceLists[] =
-{
- {(struct MenuAction *)MultichoiceList_00, 3},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_02, 3},
- {(struct MenuAction *)MultichoiceList_03, 4},
- {(struct MenuAction *)MultichoiceList_04, 6},
- {(struct MenuAction *)MultichoiceList_05, 3},
- {(struct MenuAction *)MultichoiceList_06, 4},
- {(struct MenuAction *)MultichoiceList_07, 4},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_12, 2},
- {(struct MenuAction *)MultichoiceList_13, 6},
- {(struct MenuAction *)MultichoiceList_14, 2},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_16, 2},
- {(struct MenuAction *)MultichoiceList_17, 3},
- {(struct MenuAction *)MultichoiceList_18, 4},
- {(struct MenuAction *)MultichoiceList_19, 3},
- {(struct MenuAction *)MultichoiceList_20, 3},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_23, 3},
- {(struct MenuAction *)MultichoiceList_24, 3},
- {(struct MenuAction *)MultichoiceList_25, 3},
- {(struct MenuAction *)MultichoiceList_26, 3},
- {(struct MenuAction *)MultichoiceList_27, 3},
- {(struct MenuAction *)MultichoiceList_28, 3},
- {(struct MenuAction *)MultichoiceList_29, 3},
- {(struct MenuAction *)MultichoiceList_30, 3},
- {(struct MenuAction *)MultichoiceList_31, 3},
- {(struct MenuAction *)MultichoiceList_32, 3},
- {(struct MenuAction *)MultichoiceList_33, 3},
- {(struct MenuAction *)MultichoiceList_34, 3},
- {(struct MenuAction *)MultichoiceList_35, 3},
- {(struct MenuAction *)MultichoiceList_36, 3},
- {(struct MenuAction *)MultichoiceList_37, 3},
- {(struct MenuAction *)MultichoiceList_38, 3},
- {(struct MenuAction *)MultichoiceList_39, 3},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_42, 4},
- {(struct MenuAction *)MultichoiceList_43, 4},
- {(struct MenuAction *)MultichoiceList_44, 4},
- {(struct MenuAction *)MultichoiceList_45, 2},
- {(struct MenuAction *)MultichoiceList_46, 3},
- {(struct MenuAction *)MultichoiceList_47, 8},
- {(struct MenuAction *)MultichoiceList_48, 4},
- {(struct MenuAction *)MultichoiceList_49, 3},
- {(struct MenuAction *)MultichoiceList_50, 2},
- {(struct MenuAction *)MultichoiceList_01, 1},
- {(struct MenuAction *)MultichoiceList_52, 3},
- {(struct MenuAction *)MultichoiceList_53, 3},
- {(struct MenuAction *)MultichoiceList_54, 2},
- {(struct MenuAction *)MultichoiceList_55, 6},
- {(struct MenuAction *)MultichoiceList_56, 3},
- {(struct MenuAction *)MultichoiceList_57, 5},
- {(struct MenuAction *)MultichoiceList_58, 2},
- {(struct MenuAction *)MultichoiceList_59, 2},
- {(struct MenuAction *)MultichoiceList_60, 3},
- {(struct MenuAction *)MultichoiceList_61, 2},
- {(struct MenuAction *)MultichoiceList_62, 3},
- {(struct MenuAction *)MultichoiceList_63, 3},
- {(struct MenuAction *)MultichoiceList_64, 4},
- {(struct MenuAction *)MultichoiceList_65, 2},
- {(struct MenuAction *)MultichoiceList_66, 3},
- {(struct MenuAction *)MultichoiceList_67, 3},
- {(struct MenuAction *)MultichoiceList_68, 4},
- {(struct MenuAction *)MultichoiceList_69, 3},
- {(struct MenuAction *)MultichoiceList_70, 4},
- {(struct MenuAction *)MultichoiceList_71, 4},
- {(struct MenuAction *)MultichoiceList_72, 5}
-};
-
-const u8 *const gUnknown_083CE048[] =
-{
- OtherText_Cool2,
- OtherText_Beauty3,
- OtherText_Cute2,
- OtherText_Smart2,
- OtherText_Tough2,
- OtherText_Normal,
- OtherText_Super,
- OtherText_Hyper,
- OtherText_Master,
- OtherText_Cool3,
- OtherText_Beauty4,
- OtherText_Cute3,
- OtherText_Smart3,
- OtherText_Tough3,
- OtherText_Items,
- OtherText_KeyItems,
- OtherText_Balls,
- OtherText_TMsHMs,
- OtherText_Berries,
-};
-
-extern u8 gPCText_WhichPCShouldBeAccessed[];
-
-extern u16 gScriptResult;
-
-bool8 sub_80B5054(u8 left, u8 top, u8 var3, u8 var4)
-{
- if (FuncIsActiveTask(sub_80B52B4) == 1)
- return FALSE;
- else
- {
- gScriptResult = 0xFF;
- DrawMultichoiceMenu(left, top, gMultichoiceLists[var3].count, gMultichoiceLists[var3].list, var4, 0);
- return TRUE;
- }
-}
-
-bool8 sub_80B50B0(u8 left, u8 top, u8 var3, u8 var4, u8 var5)
-{
- if (FuncIsActiveTask(sub_80B52B4) == 1)
- return FALSE;
- else
- {
- gScriptResult = 0xFF;
- DrawMultichoiceMenu(left, top, gMultichoiceLists[var3].count, gMultichoiceLists[var3].list, var4, var5);
- return TRUE;
- }
-}
-
-u16 GetStringWidthInTilesForScriptMenu(const u8 *str)
-{
- // each tile on screen is 8x8, so it needs the number of tiles and not pixels, hence the division by 8.
- return (GetStringWidthGivenWindowConfig((struct WindowConfig *)&gWindowConfig_81E6CE4, str) + 7) / 8;
-}
-
-void DrawMultichoiceMenu(u8 left, u8 top, u8 count, struct MenuAction *list, u8 var4, u8 cursorPos)
-{
- u16 width = GetStringWidthInTilesForScriptMenu(list[0].text);
- u16 newWidth;
- u8 i;
- u8 right;
- u8 bottom;
-
- for (i = 1; i < count; i++)
- {
- newWidth = GetStringWidthInTilesForScriptMenu(list[i].text);
- if (width < newWidth)
- width = newWidth;
- }
-
- right = width;
- right = (right + left) + 1;
-
- if (right > 29)
- {
- left = left + (29 - right);
- right = 29;
- }
-
- bottom = top + (2 * count + 1);
-
- MenuDrawTextWindow(left, top, right, bottom);
- PrintMenuItems(left + 1, top + 1, count, list);
- InitMenu(0, left + 1, top + 1, count, cursorPos, right - left - 1);
- sub_80B5230(left, top, right, bottom, var4, count);
-}
-
-void sub_80B5230(u8 left, u8 top, u8 right, u8 bottom, u8 unkVar, u8 count)
-{
- u8 taskId = CreateTask(sub_80B52B4, 80);
-
- gTasks[taskId].data[0] = left;
- gTasks[taskId].data[1] = top;
- gTasks[taskId].data[2] = right;
- gTasks[taskId].data[3] = bottom;
- gTasks[taskId].data[4] = unkVar;
-
- if (count > 3)
- gTasks[taskId].data[5] = TRUE;
- else
- gTasks[taskId].data[5] = FALSE;
-}
-
-void sub_80B52B4(u8 taskId)
-{
- s8 var;
-
- if (!gPaletteFade.active)
- {
- if (!gTasks[taskId].data[5])
- var = ProcessMenuInputNoWrap();
- else
- var = ProcessMenuInput();
-
- if (var != -2)
- {
- if (var == -1)
- {
- if (!gTasks[taskId].data[4])
- {
- PlaySE(5);
- gScriptResult = 127;
- }
- else
- {
- return;
- }
- }
- else
- {
- gScriptResult = var;
- }
- HandleDestroyMenuCursors();
- MenuZeroFillWindowRect(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[2], gTasks[taskId].data[3]);
- DestroyTask(taskId);
- EnableBothScriptContexts();
- }
- }
-}
-
-bool8 Multichoice(u8 var1, u8 var2, u8 var3, u8 var4)
-{
- if (FuncIsActiveTask(sub_80B52B4) == 1)
- return FALSE;
- else
- {
- gScriptResult = 0xFF;
- sub_80B53B4(var1, var2, gMultichoiceLists[var3].count, gMultichoiceLists[var3].list, var4);
- return TRUE;
- }
-}
-
-void sub_80B53B4(u8 left, u8 top, u8 count, struct MenuAction *list, u8 var4)
-{
- u16 width = GetStringWidthInTilesForScriptMenu(list[0].text);
- u16 newWidth;
- u8 i;
- u8 right;
- u8 bottom;
-
- for (i = 1; i < count; i++)
- {
- newWidth = GetStringWidthInTilesForScriptMenu(list[i].text);
- if (width < newWidth)
- width = newWidth;
- }
-
- right = width;
- right = (right + left) + 2;
- bottom = top + (2 * count + 1);
-
- PrintMenuItems(left, top, count, list);
- InitMenu(0, left, top, count, 0, right - left - 1);
- sub_80B5230(left, top, right, bottom, var4, count);
-}
-
-bool8 yes_no_box(u8 var1, u8 var2)
-{
- u8 taskId;
-
- if (FuncIsActiveTask(task_yes_no_maybe) == 1)
- return FALSE;
- else
- {
- gScriptResult = 0xFF;
- DisplayYesNoMenu(var1, var2, 1);
- taskId = CreateTask(task_yes_no_maybe, 0x50);
- gTasks[taskId].data[0] = var1;
- gTasks[taskId].data[1] = var2;
- return TRUE;
- }
-}
-
-// unused
-bool8 IsScriptActive(void)
-{
- if (gScriptResult == 0xFF)
- return FALSE;
- else
- return TRUE;
-}
-
-void task_yes_no_maybe(u8 taskId)
-{
- u8 left, top;
-
- if (gTasks[taskId].data[2] < 5)
- {
- gTasks[taskId].data[2]++;
- return;
- }
-
- switch (ProcessMenuInputNoWrap())
- {
- case -2:
- return;
- case -1:
- case 1:
- PlaySE(5);
- gScriptResult = 0;
- break;
- case 0:
- gScriptResult = 1;
- break;
- }
-
- left = gTasks[taskId].data[0];
- top = gTasks[taskId].data[1];
-
- MenuZeroFillWindowRect(left, top, left + 6, top + 5);
- DestroyTask(taskId);
- EnableBothScriptContexts();
-}
-
-bool8 sub_80B5578(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount)
-{
- u8 bottom = 0;
-
- if (FuncIsActiveTask(sub_80B5684) == TRUE)
- {
- return FALSE;
- }
- else
- {
- u8 taskId;
- u8 width;
-
- gScriptResult = 0xFF;
-
- sub_807274C(left, top, gMultichoiceLists[multichoiceId].count, 0, gMultichoiceLists[multichoiceId].list, columnCount, 0);
-
- taskId = CreateTask(sub_80B5684, 80);
-
- if (!((gMultichoiceLists[multichoiceId].count >> 1) < columnCount || (gMultichoiceLists[multichoiceId].count & 1))
- || columnCount == 1 || gMultichoiceLists[multichoiceId].count == columnCount)
- {
- bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 1 + top;
- }
- else
- {
- bottom = (2 * (gMultichoiceLists[multichoiceId].count / columnCount)) + 3 + top;
- }
-
- width = sub_807288C(columnCount);
- gTasks[taskId].data[0] = left;
- gTasks[taskId].data[1] = top;
- gTasks[taskId].data[2] = width + left + 2;
- gTasks[taskId].data[3] = bottom;
- gTasks[taskId].data[4] = a4;
- return TRUE;
- }
-}
-
-void sub_80B5684(u8 taskId)
-{
- s8 var = sub_80727CC();
-
- if (var != -2)
- {
- if (var == -1)
- {
- if (!gTasks[taskId].data[4])
- {
- PlaySE(5);
- gScriptResult = 127;
- }
- else
- {
- return;
- }
- }
- else
- {
- gScriptResult = var;
- }
- HandleDestroyMenuCursors();
- MenuZeroFillWindowRect(gTasks[taskId].data[0], gTasks[taskId].data[1], gTasks[taskId].data[2], gTasks[taskId].data[3]);
- DestroyTask(taskId);
- EnableBothScriptContexts();
- }
-}
-
-bool8 TryCreatePCMenu(void)
-{
- if (FuncIsActiveTask(sub_80B52B4) == 1)
- return FALSE;
- else
- {
- gScriptResult = 0xFF;
- CreatePCMenu();
- return TRUE;
- }
-}
-
-#if ENGLISH
-void CreatePCMenu(void)
-{
- u16 playersPCWidth = GetStringWidthInTilesForScriptMenu(gPCText_PlayersPC);
- u8 width;
- u8 numChoices;
-
- if (playersPCWidth > GetStringWidthInTilesForScriptMenu(gPCText_SomeonesPC))
- width = playersPCWidth;
- else
- width = 8;
-
- if (FlagGet(SYS_GAME_CLEAR)) // player has cleared game?
- {
- numChoices = 4;
- MenuDrawTextWindow(0, 0, width + 2, 9);
- MenuPrint(gPCText_HallOfFame, 1, 5);
- MenuPrint(gPCText_LogOff, 1, 7);
- }
- else
- {
- numChoices = 3;
- MenuDrawTextWindow(0, 0, width + 2, 7);
- MenuPrint(gPCText_LogOff, 1, 5);
- }
-
- if (FlagGet(SYS_PC_LANETTE)) // player met lanette?
- MenuPrint(gPCText_LanettesPC, 1, 1);
- else
- MenuPrint(gPCText_SomeonesPC, 1, 1);
-
- MenuPrint(gPCText_PlayersPC, 1, 3);
- InitMenu(0, 1, 1, numChoices, 0, width + 1);
- sub_80B5230(0, 0, width + 2, 2 * numChoices + 1, 0, numChoices);
-}
-#elif GERMAN
-__attribute__((naked))
-void CreatePCMenu(void) {
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- sub sp, 0x18\n\
- ldr r0, _080B5748 @ =0x0000084b\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080B5750\n\
- ldr r0, _080B574C @ =gPCText_LanettesPC\n\
- b _080B5752\n\
- .align 2, 0\n\
-_080B5748: .4byte 0x0000084b\n\
-_080B574C: .4byte gPCText_LanettesPC\n\
-_080B5750:\n\
- ldr r0, _080B57E8 @ =gPCText_SomeonesPC\n\
-_080B5752:\n\
- bl GetStringWidthInTilesForScriptMenu\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x8]\n\
- movs r4, 0x1\n\
- ldr r0, _080B57EC @ =gPCText_PlayersPC\n\
- bl GetStringWidthInTilesForScriptMenu\n\
- lsls r1, r4, 2\n\
- add r1, sp\n\
- adds r1, 0x8\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [r1]\n\
- ldr r0, _080B57F0 @ =gPCText_LogOff\n\
- bl GetStringWidthInTilesForScriptMenu\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x10]\n\
- movs r4, 0x3\n\
- ldr r0, _080B57F4 @ =0x00000804\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080B5798\n\
- ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\
- bl GetStringWidthInTilesForScriptMenu\n\
- lsls r0, 16\n\
- lsrs r0, 16\n\
- str r0, [sp, 0x14]\n\
- movs r4, 0x4\n\
-_080B5798:\n\
- movs r5, 0\n\
- cmp r5, r4\n\
- bge _080B57B4\n\
- add r2, sp, 0x8\n\
- adds r1, r4, 0\n\
-_080B57A2:\n\
- ldr r0, [r2]\n\
- cmp r5, r0\n\
- bge _080B57AC\n\
- lsls r0, 24\n\
- lsrs r5, r0, 24\n\
-_080B57AC:\n\
- adds r2, 0x4\n\
- subs r1, 0x1\n\
- cmp r1, 0\n\
- bne _080B57A2\n\
-_080B57B4:\n\
- ldr r0, _080B57F4 @ =0x00000804\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080B57FC\n\
- movs r7, 0x4\n\
- adds r4, r5, 0x2\n\
- lsls r2, r4, 24\n\
- lsrs r2, 24\n\
- movs r0, 0\n\
- movs r1, 0\n\
- movs r3, 0x9\n\
- bl MenuDrawTextWindow\n\
- ldr r0, _080B57F8 @ =gPCText_HallOfFame\n\
- movs r1, 0x1\n\
- movs r2, 0x5\n\
- bl MenuPrint\n\
- ldr r0, _080B57F0 @ =gPCText_LogOff\n\
- movs r1, 0x1\n\
- movs r2, 0x7\n\
- bl MenuPrint\n\
- b _080B5818\n\
- .align 2, 0\n\
-_080B57E8: .4byte gPCText_SomeonesPC\n\
-_080B57EC: .4byte gPCText_PlayersPC\n\
-_080B57F0: .4byte gPCText_LogOff\n\
-_080B57F4: .4byte 0x00000804\n\
-_080B57F8: .4byte gPCText_HallOfFame\n\
-_080B57FC:\n\
- movs r7, 0x3\n\
- adds r4, r5, 0x2\n\
- lsls r2, r4, 24\n\
- lsrs r2, 24\n\
- movs r0, 0\n\
- movs r1, 0\n\
- movs r3, 0x7\n\
- bl MenuDrawTextWindow\n\
- ldr r0, _080B5834 @ =gPCText_LogOff\n\
- movs r1, 0x1\n\
- movs r2, 0x5\n\
- bl MenuPrint\n\
-_080B5818:\n\
- adds r6, r4, 0\n\
- ldr r0, _080B5838 @ =0x0000084b\n\
- bl FlagGet\n\
- lsls r0, 24\n\
- cmp r0, 0\n\
- beq _080B5840\n\
- ldr r0, _080B583C @ =gPCText_LanettesPC\n\
- movs r1, 0x1\n\
- movs r2, 0x1\n\
- bl MenuPrint\n\
- b _080B584A\n\
- .align 2, 0\n\
-_080B5834: .4byte gPCText_LogOff\n\
-_080B5838: .4byte 0x0000084b\n\
-_080B583C: .4byte gPCText_LanettesPC\n\
-_080B5840:\n\
- ldr r0, _080B5888 @ =gPCText_SomeonesPC\n\
- movs r1, 0x1\n\
- movs r2, 0x1\n\
- bl MenuPrint\n\
-_080B584A:\n\
- ldr r0, _080B588C @ =gPCText_PlayersPC\n\
- movs r1, 0x1\n\
- movs r2, 0x3\n\
- bl MenuPrint\n\
- movs r4, 0\n\
- str r4, [sp]\n\
- adds r0, r5, 0x1\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- str r0, [sp, 0x4]\n\
- movs r0, 0\n\
- movs r1, 0x1\n\
- movs r2, 0x1\n\
- adds r3, r7, 0\n\
- bl InitMenu\n\
- lsls r2, r6, 24\n\
- lsrs r2, 24\n\
- lsls r3, r7, 1\n\
- adds r3, 0x1\n\
- str r4, [sp]\n\
- str r7, [sp, 0x4]\n\
- movs r0, 0\n\
- movs r1, 0\n\
- bl sub_80B5230\n\
- add sp, 0x18\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_080B5888: .4byte gPCText_SomeonesPC\n\
-_080B588C: .4byte gPCText_PlayersPC\n\
- .syntax divided\n");
-}
-#endif
-
-void sub_80B5838(void)
-{
- MenuDisplayMessageBox();
- MenuPrint(gPCText_WhichPCShouldBeAccessed, 2, 15);
-}
-
-void task_picbox(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
-
- switch (task->data[0])
- {
- case 0:
- task->data[0]++;
- break;
- case 1:
- break;
- case 2:
- FreeResourcesAndDestroySprite(&gSprites[task->data[2]]);
- task->data[0]++;
- break;
- case 3:
- MenuZeroFillWindowRect(task->data[3], task->data[4], task->data[3] + 9, task->data[4] + 10);
- DestroyTask(taskId);
- break;
- }
-}
-
-bool8 sub_80B58C4(u16 var1, u8 var2, u8 var3)
-{
- u8 taskId;
- u8 var;
-
- if (FindTaskIdByFunc(task_picbox) != 0xFF)
- return FALSE;
- else
- {
- MenuDrawTextWindow(var2, var3, var2 + 9, var3 + 10);
- taskId = CreateTask(task_picbox, 0x50);
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = var1;
- var = CreateMonSprite_PicBox(var1, var2 * 8 + 40, var3 * 8 + 40, 0);
- gTasks[taskId].data[2] = var;
- gTasks[taskId].data[3] = var2;
- gTasks[taskId].data[4] = var3;
- gSprites[var].callback = SpriteCallbackDummy;
- gSprites[var].oam.priority = 0;
- return TRUE;
- }
-}
-
-void *picbox_close(void)
-{
- u8 taskId = FindTaskIdByFunc(task_picbox);
-
- if (taskId == 0xFF)
- return NULL;
-
- gTasks[taskId].data[0]++;
- return (void *)sub_80B59AC;
-}
-
-bool8 sub_80B59AC(void)
-{
- if (FindTaskIdByFunc(task_picbox) == 0xFF)
- return TRUE;
- else
- return FALSE;
-}
diff --git a/src/script_pokemon_util_80C4BF0.c b/src/script_pokemon_util_80C4BF0.c
index cbca07011..f98293a90 100644
--- a/src/script_pokemon_util_80C4BF0.c
+++ b/src/script_pokemon_util_80C4BF0.c
@@ -18,7 +18,7 @@
#include "pokedex.h"
#include "pokemon.h"
#include "rng.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script_pokemon_80C4.h"
#include "species.h"
#include "task.h"
@@ -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;
@@ -511,7 +511,7 @@ void ScriptRandom(void)
*scriptPtr = random % *scriptPtr;
}
-void HealPlayerParty(void)
+void ScrSpecial_HealPlayerParty(void)
{
u8 i, j;
u8 ppBonuses;
@@ -542,41 +542,39 @@ void HealPlayerParty(void)
}
}
-u8 ScriptGiveMon(u16 species, u8 var, u16 item, u32 var3, u32 var4, u8 var5)
+u8 ScriptGiveMon(u16 species, u8 level, u16 item, u32 unused1, u32 unused2, u8 unused3)
{
- u16 nationalSpecies;
+ u16 nationalDexNum;
int sentToPc;
- u8 array[2];
+ u8 heldItem[2];
struct Pokemon mon;
- CreateMon(&mon, species, var, 32, 0, 0, 0, 0);
- array[0] = item;
- array[1] = item >> 8;
- SetMonData(&mon, MON_DATA_HELD_ITEM, array);
+ CreateMon(&mon, species, level, 32, 0, 0, 0, 0);
+ heldItem[0] = item;
+ heldItem[1] = item >> 8;
+ SetMonData(&mon, MON_DATA_HELD_ITEM, heldItem);
sentToPc = GiveMonToPlayer(&mon);
- nationalSpecies = SpeciesToNationalPokedexNum(species);
+ nationalDexNum = SpeciesToNationalPokedexNum(species);
- // nested if check to fool compiler
switch(sentToPc)
{
- case 0:
- case 1:
- GetNationalPokedexFlag(nationalSpecies, 2);
- GetNationalPokedexFlag(nationalSpecies, 3);
- return sentToPc;
- default:
- return sentToPc;
+ case 0:
+ case 1:
+ GetSetPokedexFlag(nationalDexNum, 2);
+ GetSetPokedexFlag(nationalDexNum, 3);
+ break;
}
+ return sentToPc;
}
-u8 ScriptGiveEgg(u16 value)
+u8 ScriptGiveEgg(u16 species)
{
struct Pokemon mon;
- u8 data;
+ u8 isEgg;
- sub_8042044(&mon, value, 1);
- data = 1;
- SetMonData(&mon, MON_DATA_IS_EGG, &data);
+ sub_8042044(&mon, species, 1);
+ isEgg = TRUE;
+ SetMonData(&mon, MON_DATA_IS_EGG, &isEgg);
return GiveMonToPlayer(&mon);
}
@@ -622,18 +620,18 @@ bool8 GetNameOfEnigmaBerryInPlayerParty(void)
return hasItem;
}
-void ScriptWildBattle(u16 species, u8 level, u16 item)
+void CreateScriptedWildMon(u16 species, u8 level, u16 item)
{
- u8 data[2];
+ u8 heldItem[2];
ZeroEnemyPartyMons();
CreateMon(&gEnemyParty[0], species, level, 0x20, 0, 0, 0, 0);
if(item)
{
- data[0] = item;
- data[1] = item >> 8;
- SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, data);
+ heldItem[0] = item;
+ heldItem[1] = item >> 8;
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, heldItem);
}
}
diff --git a/src/script_pokemon_util_80F99CC.c b/src/script_pokemon_util_80F99CC.c
index 2b48cc0d8..f930df8e2 100644
--- a/src/script_pokemon_util_80F99CC.c
+++ b/src/script_pokemon_util_80F99CC.c
@@ -9,16 +9,15 @@
#include "party_menu.h"
#include "pokemon.h"
#include "pokemon_summary_screen.h"
-#include "rom4.h"
+#include "overworld.h"
#include "script.h"
#include "script_pokemon_80F9.h"
+#include "songs.h"
#include "sound.h"
#include "string_util.h"
#include "task.h"
#include "text.h"
-
-
extern u8 gPlayerPartyCount;
extern u16 gSpecialVar_0x8004;
extern u16 gSpecialVar_0x8005;
@@ -59,7 +58,7 @@ void sub_80F9A4C(void)
void sub_80F9A8C(u8 taskId)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
gPaletteFade.bufferTransferDisabled = 1;
OpenPartyMenu((u8) gTasks[taskId].data[0], 0);
@@ -69,10 +68,10 @@ void sub_80F9A8C(u8 taskId)
bool8 sub_80F9ACC(void)
{
- switch(EWRAM_1B000.unk264)
+ switch (EWRAM_1B000.unk264)
{
case 0:
- if(EWRAM_1B000.unk266 < gPlayerPartyCount)
+ if (EWRAM_1B000.unk266 < gPlayerPartyCount)
{
TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]);
EWRAM_1B000.unk266++;
@@ -92,7 +91,7 @@ bool8 sub_80F9ACC(void)
EWRAM_1B000.unk264++;
break;
case 3:
- if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
+ if (sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
{
EWRAM_1B000.unk266++;
break;
@@ -116,7 +115,7 @@ bool8 sub_80F9ACC(void)
EWRAM_1B000.unk264++;
break;
case 7: // the only case that can return true.
- if(sub_806B58C(EWRAM_1B000.unk266) != 1)
+ if (sub_806B58C(EWRAM_1B000.unk266) != 1)
{
EWRAM_1B000.unk266++;
break;
@@ -135,9 +134,9 @@ void sub_80F9C00(void)
{
u8 i;
- for(i = 0; i < gPlayerPartyCount; i++)
+ for (i = 0; i < gPlayerPartyCount; i++)
{
- switch(sub_80AE47C(&gPlayerParty[i]))
+ switch (sub_80AE47C(&gPlayerParty[i]))
{
case 0:
case 3:
@@ -154,18 +153,18 @@ void sub_80F9C00(void)
void sub_80F9C6C(u8 var)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- switch(sub_806BD80(var))
+ switch (sub_806BD80(var))
{
case 1:
- PlaySE(5);
+ PlaySE(SE_SELECT);
gUnknown_02038694 = sub_806CA38(var);
gSpecialVar_0x8004 = gUnknown_02038694;
sub_8123138(var);
break;
case 2:
- PlaySE(5);
+ PlaySE(SE_SELECT);
gUnknown_02038694 = 0xFF;
gSpecialVar_0x8004 = 0xFF;
sub_8123138(var);
@@ -176,10 +175,10 @@ void sub_80F9C6C(u8 var)
bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case 6 calls a different function. why
{
- switch(EWRAM_1B000.unk264)
+ switch (EWRAM_1B000.unk264)
{
case 0:
- if(EWRAM_1B000.unk266 < gPlayerPartyCount)
+ if (EWRAM_1B000.unk266 < gPlayerPartyCount)
{
TryCreatePartyMenuMonIcon(EWRAM_1B000.unk260, EWRAM_1B000.unk266, &gPlayerParty[EWRAM_1B000.unk266]);
EWRAM_1B000.unk266++;
@@ -199,7 +198,7 @@ bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case
EWRAM_1B000.unk264++;
break;
case 3:
- if(sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
+ if (sub_806BD58(EWRAM_1B000.unk260, EWRAM_1B000.unk266) != 1)
{
EWRAM_1B000.unk266++;
break;
@@ -223,7 +222,7 @@ bool8 sub_80F9CE8(void) // this is the same function as sub_80F9ACC except case
EWRAM_1B000.unk264++;
break;
case 7: // the only case that can return true.
- if(sub_806B58C(EWRAM_1B000.unk266) != 1)
+ if (sub_806B58C(EWRAM_1B000.unk266) != 1)
{
EWRAM_1B000.unk266++;
break;
@@ -242,9 +241,9 @@ void sub_80F9E1C(void)
{
u8 i;
- for(i = 0; i < gPlayerPartyCount; i++)
+ for (i = 0; i < gPlayerPartyCount; i++)
{
- if(!sub_8040574(&gPlayerParty[i]))
+ if (!sub_8040574(&gPlayerParty[i]))
sub_806BC3C(i, 0x9A);
else
sub_806BC3C(i, 0x8C);
@@ -253,18 +252,18 @@ void sub_80F9E1C(void)
void sub_80F9E64(u8 var)
{
- if(!gPaletteFade.active)
+ if (!gPaletteFade.active)
{
- switch(sub_806BD80(var))
+ switch (sub_806BD80(var))
{
case 1:
- PlaySE(5);
+ PlaySE(SE_SELECT);
gSpecialVar_0x8004 = sub_806CA38(var);
gSpecialVar_0x8005 = sub_8040574(&gPlayerParty[gSpecialVar_0x8004]);
sub_8123138(var);
break;
case 2:
- PlaySE(5);
+ PlaySE(SE_SELECT);
gSpecialVar_0x8004 = 0xFF;
sub_8123138(var);
}
@@ -278,23 +277,23 @@ void sub_80F9EEC(void)
gFieldCallback = sub_8080990;
}
-void sub_80F9F3C(void) // count pokemon moves
+void ScrSpecial_CountPokemonMoves(void) // count pokemon moves
{
u8 i;
gScriptResult = 0;
- for(i = 0; i < 4; i++) // checks MOVE1-MOVE4
- if(GetMonData(&gPlayerParty[gSpecialVar_0x8004], i + 13))
+ for (i = 0; i < 4; i++) // checks MOVE1-MOVE4
+ if (GetMonData(&gPlayerParty[gSpecialVar_0x8004], MON_DATA_MOVE1 + i))
gScriptResult++;
}
-void sub_80F9F84(void)
+void ScrSpecial_GetPokemonNicknameAndMoveName(void)
{
- struct Pokemon *party = &gPlayerParty[gSpecialVar_0x8004];
- u16 data = GetMonData(party, gSpecialVar_0x8005 + 13);
+ struct Pokemon *pkmn = &gPlayerParty[gSpecialVar_0x8004];
+ u16 data = GetMonData(pkmn, MON_DATA_MOVE1 + gSpecialVar_0x8005);
- GetMonNickname(party, gStringVar1);
+ GetMonNickname(pkmn, gStringVar1);
StringCopy(gStringVar2, gMoveNames[data]);
}
@@ -431,7 +430,7 @@ void sub_80FA0DC(void)
SetMonMoveSlot(&gPlayerParty[gSpecialVar_0x8004], 0, gSpecialVar_0x8005);
RemoveMonPPBonus(&gPlayerParty[gSpecialVar_0x8004], gSpecialVar_0x8005);
- for(i = gSpecialVar_0x8005; i < 3; i++)
+ for (i = gSpecialVar_0x8005; i < 3; i++)
sub_80F9FDC(&gPlayerParty[gSpecialVar_0x8004], i, i + 1);
}
@@ -440,6 +439,6 @@ void sub_80FA148(void)
struct Pokemon *party = &gPlayerParty[gSpecialVar_0x8004];
gScriptResult = 0;
- if(GetMonData(party, MON_DATA_IS_EGG))
+ if (GetMonData(party, MON_DATA_IS_EGG))
gScriptResult = 1;
}
diff --git a/src/shop.c b/src/shop.c
deleted file mode 100644
index d53646a88..000000000
--- a/src/shop.c
+++ /dev/null
@@ -1,342 +0,0 @@
-#include "global.h"
-#include "shop.h"
-#include "decompress.h"
-#include "field_fadetransition.h"
-#include "field_weather.h"
-#include "item_menu.h"
-#include "main.h"
-#include "menu.h"
-#include "menu_helpers.h"
-#include "money.h"
-#include "palette.h"
-#include "script.h"
-#include "sound.h"
-#include "sprite.h"
-#include "strings.h"
-#include "task.h"
-#include "tv.h"
-#include "unknown_task.h"
-
-struct UnknownShopStruct
-{
- /* 0x0 */ void (* callback) (void);
- /* 0x4 */ u16 *itemList;
- /* 0x8 */ u8 itemCount;
- /* 0x9 */ u8 unk9;
- /* 0xA */ u8 unkA;
- /* 0xB */ u8 unkB;
- /* 0xC */ bool8 unkC;
- // unknown size
-};
-
-extern struct UnknownShopStruct gUnknown_03000708;
-extern struct MenuAction gUnknown_083CC6D0[];
-
-extern u8 gUnknown_083CC6E8[];
-extern u8 gUnknown_083CC6EB[];
-extern u8 gBuyMenuFrame_Gfx[];
-
-extern u16 gBuyMenuFrame_Tilemap[];
-extern u16 gMenuMoneyPal[16];
-extern u16 gUnknown_083CC710[2];
-
-u8 CreateShopMenu(bool8 var)
-{
- ScriptContext2_Enable();
- gUnknown_03000708.unkC = var;
- gUnknown_03000708.unk9 = 0;
-
- if(var == FALSE)
- {
- gUnknown_03000708.unkA = 2;
- MenuDrawTextWindow(0, 0, 10, 7);
- PrintMenuItemsReordered(1, 1, 3, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6E8);
- }
- else
- {
- gUnknown_03000708.unkA = 1;
- MenuDrawTextWindow(0, 0, 10, 5);
- PrintMenuItemsReordered(1, 1, 2, gUnknown_083CC6D0, (u8 *)gUnknown_083CC6EB);
- }
- InitMenu(0, 1, 1, gUnknown_03000708.unkA + 1, 0, 9);
-
- return CreateTask(sub_80B2E38, 8);
-}
-
-void SetShopMenuCallback(void *callbackPtr)
-{
- gUnknown_03000708.callback = callbackPtr;
-}
-
-void SetShopItemsForSale(u16 *items)
-{
- u16 i = 0;
-
- gUnknown_03000708.itemList = items;
- gUnknown_03000708.itemCount = 0;
-
- while (gUnknown_03000708.itemList[i])
- {
- gUnknown_03000708.itemCount++;
- i++;
- }
-}
-
-void sub_80B2E38(u8 var)
-{
- const u8 local = var;
-
- if(gMain.newAndRepeatedKeys & 0x40)
- {
- if(gUnknown_03000708.unk9)
- {
- PlaySE(0x5);
- gUnknown_03000708.unk9 = MoveMenuCursor(-1);
- }
- }
- else if(gMain.newAndRepeatedKeys & 0x80)
- {
- if(gUnknown_03000708.unk9 != gUnknown_03000708.unkA)
- {
- PlaySE(0x5);
- gUnknown_03000708.unk9 = MoveMenuCursor(1);
- }
- }
- else if (gMain.newKeys & 1)
- {
- PlaySE(0x5);
- if(!gUnknown_03000708.unkC)
- {
- gUnknown_083CC6D0[gUnknown_083CC6E8[gUnknown_03000708.unk9]].func(local);
- }
- else
- {
- gUnknown_083CC6D0[gUnknown_083CC6EB[gUnknown_03000708.unk9]].func(local);
- }
- }
- else if(gMain.newKeys & 2)
- {
- PlaySE(0x5);
- HandleShopMenuQuit(local);
- }
-}
-
-void sub_80B2EFC(u8 taskId)
-{
- gTasks[taskId].data[8] = (u32)BuyMenuDrawGraphics >> 16;
- gTasks[taskId].data[9] = (u32)BuyMenuDrawGraphics;
- gTasks[taskId].func = sub_80B2FA0;
- fade_screen(1, 0);
-}
-
-void sub_80B2F30(u8 taskId)
-{
- gTasks[taskId].data[8] = (u32)sub_80A6300 >> 16;
- gTasks[taskId].data[9] = (u32)sub_80A6300;
- gTasks[taskId].func = sub_80B2FA0;
- fade_screen(1, 0);
-}
-
-void HandleShopMenuQuit(u8 taskId)
-{
- HandleDestroyMenuCursors();
- MenuZeroFillWindowRect(0, 0, 11, 8);
- sub_80BE3BC(); // in tv.s?
- ScriptContext2_Disable();
- DestroyTask(taskId);
-
- if(gUnknown_03000708.callback)
- gUnknown_03000708.callback(); // run the callback if it exists.
-}
-
-void sub_80B2FA0(u8 taskId)
-{
- if(!gPaletteFade.active)
- {
- SetMainCallback2((void *)((u16)gTasks[taskId].data[8] << 16 | (u16)gTasks[taskId].data[9]));
- DestroyTask(taskId);
- }
-}
-
-void ReturnToShopMenuAfterExitingSellMenu(u8 taskId)
-{
- CreateShopMenu(gUnknown_03000708.unkC);
- DestroyTask(taskId);
-}
-
-void Task_ExitSellMenu(u8 taskId)
-{
- if(sub_807D770() == 1)
- {
- if(gUnknown_03000708.unkC == 2)
- DisplayItemMessageOnField(taskId, gOtherText_CanIHelpYou, ReturnToShopMenuAfterExitingSellMenu, 0);
- else
- DisplayItemMessageOnField(taskId, gOtherText_AnythingElse, ReturnToShopMenuAfterExitingSellMenu, 0);
- }
-}
-
-void sub_80B3050(void)
-{
- pal_fill_black();
- CreateTask(Task_ExitSellMenu, 0x8);
-}
-
-void sub_80B3068(u8 taskId)
-{
- Task_ExitSellMenu(taskId);
-}
-
-void unref_sub_80B3078(u8 taskId)
-{
- gTasks[taskId].func = Task_ExitSellMenu;
-}
-
-void sub_80B3094(void)
-{
- AnimateSprites();
- BuildOamBuffer();
- RunTasks();
- UpdatePaletteFade();
-}
-
-void sub_80B30AC(void)
-{
- void *addr;
- void *addr2;
- void *addr3;
- u16 *tempArr;
- u16 *tempArr2;
- u16 *tempArr3;
-
- LoadOam();
- ProcessSpriteCopyRequests();
- TransferPlttBuffer();
-
- // temp vars needed to match for some dumb reason
- tempArr = gBGTilemapBuffers[1];
- addr = (void *)(VRAM + 0xE800);
- DmaCopy16(3, tempArr, addr, 0x800);
- tempArr2 = gBGTilemapBuffers[2];
- addr2 = (void *)(VRAM + 0xE000);
- DmaCopy16(3, tempArr2, addr2, 0x800);
- tempArr3 = gBGTilemapBuffers[3];
- addr3 = (void *)(VRAM + 0xF000);
- DmaCopy16(3, tempArr3, addr3, 0x800);
-}
-
-// this function is fugly. pls fix
-void BuyMenuDrawGraphics(void)
-{
- void *addr;
- register u16 zero2 asm("r5");
-
- sub_80F9438();
- remove_some_task();
- REG_BG1HOFS = (zero2 = 0);
- REG_BG1VOFS = zero2;
- REG_BG2HOFS = zero2;
- REG_BG2VOFS = zero2;
- REG_BG3HOFS = zero2;
- REG_BG3VOFS = zero2;
- gPaletteFade.bufferTransferDisabled = 1;
- addr = (void*)OAM;
- {
- 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);
- LoadCompressedPalette(gMenuMoneyPal, 0xC0, sizeof(gMenuMoneyPal));
- FreeAllSpritePalettes();
- ResetPaletteFade();
- ResetSpriteData();
- ResetTasks();
- SetUpWindowConfig(&gWindowConfig_81E6DFC);
- InitMenuWindow(&gWindowConfig_81E6DFC);
- BuyMenuDrawMapGraphics();
- gUnknown_03000708.unk9 = zero;
- gUnknown_03000708.unkB = zero2;
- MenuZeroFillWindowRect(0, 0, 0x20, 0x20);
- sub_80B7C14(gSaveBlock1.money, 0, 0);
- sub_80B3764(0, 7);
- sub_80B37EC();
- sub_80B3270();
- CreateTask(sub_80B40E8, 0x8);
- sub_80B3240();
- asm("":::"r4"); // what??
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, zero);
- gPaletteFade.bufferTransferDisabled = 0;
- SetVBlankCallback(sub_80B30AC);
- SetMainCallback2(sub_80B3094);
- }
-}
-
-void sub_80B3240(void)
-{
- u16 tempArr[2];
-
- memcpy(tempArr, gUnknown_083CC710, sizeof(tempArr));
- LoadPalette(&tempArr[1], 0xD1, 2);
- LoadPalette(&tempArr[0], 0xD8, 2);
-}
-
-void sub_80B3270(void)
-{
- sub_80F944C();
-
- if(gUnknown_03000708.itemCount > 7)
- {
- CreateVerticalScrollIndicators(0, 172, 12);
- CreateVerticalScrollIndicators(1, 172, 148);
- sub_80F979C(0, 1);
- }
-}
-
-void sub_80B32A4(void)
-{
- if(gUnknown_03000708.unkB == 0)
- sub_80F979C(0, 1);
- else
- sub_80F979C(0, 0);
-
- if(gUnknown_03000708.unkB + 7 >= gUnknown_03000708.itemCount)
- sub_80F979C(1, 1);
- else
- sub_80F979C(1, 0);
-}
-
-void sub_80B32EC(u16 *array, s16 offset1, s16 offset2)
-{
- array[offset1 + offset2] = 0xC3E1;
- array[offset1 + offset2 + 1] = 0xC3E1;
-}
-
-void BuyMenuDrawMapMetatileLayer(u16 *array, s16 offset1, s16 offset2, u16 *array2)
-{
- array[offset1 + offset2] = array2[0];
- array[offset1 + offset2 + 1] = array2[1];
- array[offset1 + offset2 + 32] = array2[2];
- array[offset1 + offset2 + 33] = array2[3];
-}
-
-void BuyMenuDrawMapMetatile(int var1, int var2, u16 *var3, s8 var4)
-{
- u8 tempVar4 = var4;
- s16 offset1 = var1 * 2;
- s16 offset2 = (var2 * 0x40) + 0x40;
-
- switch(tempVar4)
- {
- case 0: // _080B335C
- BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3);
- BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4);
- break;
- case 1: // _080B3364
- BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
- BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[2], offset1, offset2, var3 + 4);
- break;
- case 2: // _080B3398
- BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[3], offset1, offset2, var3);
- BuyMenuDrawMapMetatileLayer(gBGTilemapBuffers[1], offset1, offset2, var3 + 4);
- break;
- }
-}
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/strings.c b/src/strings.c
index 219c5bec1..6c8dce9d6 100644
--- a/src/strings.c
+++ b/src/strings.c
@@ -861,7 +861,7 @@ const u8 gOtherText_AtBattleStart[] = _("At the battle’s start.");
const u8 gOtherText_UponWinningBattle[] = _("Upon winning a battle.");
const u8 gOtherText_UponLosingBattle[] = _("Upon losing a battle.");
-// mauville_old_man?
+// mauville_man?
const u8 gOtherText_TheBardsSong[] = _("The BARD’s Song");
const u8 gOtherText_WhatsHipHappening[] = _("What’s hip and happening?");
const u8 gOtherText_Interview[] = _("Interview");
@@ -1781,7 +1781,7 @@ const u8 gOtherText_AtBattleStart[] = _("Zum Kampfbeginn");
const u8 gOtherText_UponWinningBattle[] = _("Über den Sieg");
const u8 gOtherText_UponLosingBattle[] = _("Über die Niederlage");
-// mauville_old_man?
+// mauville_man?
const u8 gOtherText_TheBardsSong[] = _("Das BARDEN-Lied");
const u8 gOtherText_WhatsHipHappening[] = _("Was ist hip? Was ist top?");
const u8 gOtherText_Interview[] = _("Interview");
diff --git a/src/trade.c b/src/trade.c
deleted file mode 100644
index cb190d194..000000000
--- a/src/trade.c
+++ /dev/null
@@ -1,88 +0,0 @@
-#include "global.h"
-#include "name_string_util.h"
-#include "string_util.h"
-#include "text.h"
-
-struct InGameTrade {
- /*0x00*/ u8 name[11];
- /*0x0C*/ u16 species;
- /*0x0E*/ u8 ivs[6];
- /*0x14*/ bool8 secondAbility;
- /*0x18*/ u32 otId;
- /*0x1C*/ u8 stats[5];
- /*0x24*/ u32 personality;
- /*0x28*/ u16 heldItem;
- /*0x2A*/ u8 mailNum;
- /*0x2B*/ u8 otName[11];
- /*0x36*/ u8 otGender;
- /*0x37*/ u8 sheen;
- /*0x38*/ u16 playerSpecies;
-};
-
-struct UnkStructC {
- /*0x00*/ u16 words[9];
- /*0x10*/ u8 string[8];
- /*0x1A*/ u8 otId[4];
- /*0x1E*/ u16 species;
- /*0x20*/ u16 heldItem;
-};
-
-struct UnkStructD {
- /*0x00*/ u8 pad00[0x10];
- /*0x10*/ u8 var10;
- /*0x11*/ u8 pad11[1];
- /*0x12*/ u16 var12[1];
-};
-
-extern const struct InGameTrade gIngameTrades[];
-extern const u16 gIngameTradeMail[][10];
-
-
-void sub_804A96C(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) {
- int y, x;
-
- for (y = 0; y < height; y++)
- {
-
- for (x = 0; x < width; x++)
- {
- arg0->var12[(top * 32 + left) + y * 32 + x] = tilemap[width * y + x] | sp8;
- }
- }
-
-#if ENGLISH
- arg0->var10 = 1;
-#endif
-}
-
-#if GERMAN
-void sub_804A96C_alt(struct UnkStructD *arg0, u8 left, u8 top, u16 *tilemap, u8 width, u8 height, u16 sp8) {
- sub_804A96C(arg0, left, top, tilemap, width, height, sp8);
-
- arg0->var10 = 1;
-}
-#endif
-
-asm(".section .text.sub_804DAD4");
-
-void sub_804DAD4(struct UnkStructC *arg0, struct InGameTrade *trade) {
- s32 i;
-
- for (i = 0; i < 9; i++)
- {
- arg0->words[i] = gIngameTradeMail[trade->mailNum][i];
- }
-
- StringCopy(arg0->string, trade->otName);
-
-#if GERMAN
- PadNameString(arg0->string, CHAR_SPACE);
-#endif
-
- arg0->otId[0] = trade->otId >> 24;
- arg0->otId[1] = trade->otId >> 16;
- arg0->otId[2] = trade->otId >> 8;
- arg0->otId[3] = trade->otId;
- arg0->species = trade->species;
- arg0->heldItem = trade->heldItem;
-}
diff --git a/src/trainer_see.c b/src/trainer_see.c
deleted file mode 100644
index feb35c67c..000000000
--- a/src/trainer_see.c
+++ /dev/null
@@ -1,455 +0,0 @@
-#include "global.h"
-#include "trainer_see.h"
-#include "battle_setup.h"
-#include "field_effect.h"
-#include "field_map_obj.h"
-#include "field_player_avatar.h"
-#include "script.h"
-#include "sprite.h"
-#include "task.h"
-#include "util.h"
-
-extern bool8 (*gIsTrainerInRange[])(struct MapObject *, u16, s16, s16);
-extern bool8 (*gTrainerSeeFuncList[])(u8, struct Task *, struct MapObject *);
-extern bool8 (*gTrainerSeeFuncList2[])(u8, struct Task *, struct MapObject *);
-
-extern struct SpriteTemplate gSpriteTemplate_839B510;
-extern struct SpriteTemplate gSpriteTemplate_839B528;
-
-bool8 CheckTrainers(void)
-{
- u8 i;
-
- for (i = 0; i < 16; i++)
- {
- if ( gMapObjects[i].active )
- if ( gMapObjects[i].trainerType == 1 || gMapObjects[i].trainerType == 3 )
- if ( CheckTrainer(i) )
- return TRUE;
- }
- return FALSE;
-}
-
-bool8 CheckTrainer(u8 trainer)
-{
- u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(trainer);
-
- if (GetTrainerFlagFromScriptPointer(scriptPtr))
- return FALSE;
- else
- {
- struct MapObject *trainerObj = &gMapObjects[trainer];
- u8 canApproach = TrainerCanApproachPlayer(trainerObj);
-
- if (canApproach != 0)
- {
- TrainerWantsBattle(trainer, scriptPtr);
- sub_80842C8(trainerObj, (canApproach - 1));
- return TRUE;
- }
- else
- {
- return FALSE;
- }
- }
-}
-
-bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj)
-{
- s16 x, y;
- u8 i;
- u8 playerCoord;
-
- PlayerGetDestCoords(&x, &y);
- if ( trainerObj->trainerType == 1 ) // trainers that don't spin
- {
- playerCoord = gIsTrainerInRange[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
- return CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, playerCoord, trainerObj->mapobj_unk_18);
- }
- else // spinners
- {
- for (i = 0; i < 4; i++)
- {
- playerCoord = gIsTrainerInRange[i](trainerObj, trainerObj->trainerRange_berryTreeId, x, y);
- if ( CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, playerCoord, i + 1) ) // directions are 1-4 instead of 0-3. south north west east
- return playerCoord;
- }
- return FALSE;
- }
-}
-
-bool8 IsTrainerInRangeSouth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y)
-{
- if ( trainerObj->coords2.x == x
- && y > trainerObj->coords2.y
- && y <= trainerObj->coords2.y + vision )
- return (y - trainerObj->coords2.y);
- else
- return FALSE;
-}
-
-bool8 IsTrainerInRangeNorth(struct MapObject *trainerObj, s16 vision, s16 x, s16 y)
-{
- if ( trainerObj->coords2.x == x
- && y < trainerObj->coords2.y
- && y >= trainerObj->coords2.y - vision )
- return (trainerObj->coords2.y - y);
- else
- return FALSE;
-}
-
-bool8 IsTrainerInRangeWest(struct MapObject *trainerObj, s16 vision, s16 x, s16 y)
-{
- if ( trainerObj->coords2.y == y
- && x < trainerObj->coords2.x
- && x >= trainerObj->coords2.x - vision )
- return (trainerObj->coords2.x - x);
- else
- return FALSE;
-}
-
-bool8 IsTrainerInRangeEast(struct MapObject *trainerObj, s16 vision, s16 x, s16 y)
-{
- if ( trainerObj->coords2.y == y
- && x > trainerObj->coords2.x
- && x <= trainerObj->coords2.x + vision )
- return (x - trainerObj->coords2.x);
- else
- return FALSE;
-}
-
-#ifdef BUGFIX_TRAINERAPPROACH
-#define COLLISION_MASK ~1
-#else
-#define COLLISION_MASK 1
-#endif
-
-bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 playerCoord, u8 direction)
-{
- s16 x, y;
- u8 unk19_temp;
- u8 unk19b_temp;
- u8 i;
- u8 var;
-
- if (!playerCoord)
- return FALSE;
-
- x = trainerObj->coords2.x;
- y = trainerObj->coords2.y;
-
- for (i = 0; i <= playerCoord - 1; i++, MoveCoords(direction, &x, &y))
- {
- var = sub_8060024((struct MapObject *)trainerObj, x, y, direction);
-
- if (var && (var & COLLISION_MASK))
- return FALSE;
- }
-
- // preserve mapobj_unk_19 before clearing.
- unk19_temp = trainerObj->mapobj_unk_19;
- unk19b_temp = trainerObj->mapobj_unk_19b;
- trainerObj->mapobj_unk_19 = 0;
- trainerObj->mapobj_unk_19b = 0;
-
- var = npc_block_way((struct MapObject *)trainerObj, x, y, direction);
-
- trainerObj->mapobj_unk_19 = unk19_temp;
- trainerObj->mapobj_unk_19b = unk19b_temp;
- if (var == 4)
- return playerCoord;
-
- return FALSE;
-}
-
-void sub_80842C8(struct MapObject *trainerObj, u8 taskId)
-{
- struct Task *task = &gTasks[CreateTask(RunTrainerSeeFuncList, 0x50)];
-
- task->data[1] = (u32)(trainerObj) >> 16;
- task->data[2] = (u32)(trainerObj);
- task->data[3] = taskId;
-}
-
-void sub_80842FC(TaskFunc func)
-{
- TaskFunc func2 = RunTrainerSeeFuncList;
- u8 taskId = FindTaskIdByFunc(func2);
-
- SetTaskFuncWithFollowupFunc(taskId, RunTrainerSeeFuncList, func);
- gTasks[taskId].data[0] = 1;
- func2(taskId);
-}
-
-void RunTrainerSeeFuncList(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- struct MapObject *trainerObj = (struct MapObject *)((task->data[1] << 16) | (task->data[2]));
-
- if (!trainerObj->active)
- SwitchTaskToFollowupFunc(taskId);
- else
- while (gTrainerSeeFuncList[task->data[0]](taskId, task, trainerObj));
-}
-
-u8 sub_8084394() // cant be void because it is called with RunTrainerSeeFuncList with arguments.
-{
- return 0;
-}
-
-s8 sub_8084398(u8 taskId, struct Task *task, struct MapObject *trainerObj)
-{
- u8 direction;
-
- FieldObjectGetLocalIdAndMap(trainerObj, (u8 *)&gUnknown_0202FF84[0], (u8 *)&gUnknown_0202FF84[1], (u8 *)&gUnknown_0202FF84[2]);
- FieldEffectStart(0);
-
- direction = GetFaceDirectionAnimId(trainerObj->mapobj_unk_18);
-
- FieldObjectSetSpecialAnim(trainerObj, direction);
- task->data[0]++;
- return 1;
-}
-
-s8 sub_80843DC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
-{
- if (FieldEffectActiveListContains(0))
- return 0;
- else
- {
- task->data[0]++;
- if ((u8)(trainerObj->animPattern - 57) <= 1)
- task->data[0] = 6;
- if (trainerObj->animPattern == 63)
- task->data[0] = 8;
- return 1;
- }
-}
-
-s8 sub_808441C(u8 taskId, struct Task *task, struct MapObject *trainerObj)
-{
- if (!(FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)) || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
- {
- if (task->data[3])
- {
- FieldObjectSetSpecialAnim(trainerObj, GetGoSpeed0AnimId(trainerObj->mapobj_unk_18));
- task->data[3]--;
- }
- else
- {
- FieldObjectSetSpecialAnim(trainerObj, 0x3E);
- task->data[0]++;
- }
- }
- return 0;
-}
-
-s8 sub_8084478(u8 taskId, struct Task *task, struct MapObject *trainerObj)
-{
- struct MapObject *playerObj;
-
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj) && !FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
- return 0;
-
- npc_set_running_behaviour_etc(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18));
- sub_805C774(trainerObj, npc_running_behaviour_by_direction(trainerObj->mapobj_unk_18));
- sub_805C754(trainerObj);
-
- playerObj = &gMapObjects[gPlayerAvatar.mapObjectId];
- if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj)
- && !FieldObjectClearAnimIfSpecialAnimFinished(playerObj))
- return 0;
-
- sub_80597E8();
- FieldObjectSetSpecialAnim(&gMapObjects[gPlayerAvatar.mapObjectId], GetFaceDirectionAnimId(GetOppositeDirection(trainerObj->mapobj_unk_18)));
- task->data[0]++;
- return 0;
-}
-
-s8 sub_8084534(u8 taskId, struct Task *task, struct MapObject *trainerObj) // technically only 1 parameter, but needs all 3 for TrainerSeeFuncList call.
-{
- struct MapObject *playerObj = &gMapObjects[gPlayerAvatar.mapObjectId];
-
- if ( !FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(playerObj)
- || FieldObjectClearAnimIfSpecialAnimFinished(playerObj) )
- SwitchTaskToFollowupFunc(taskId);
-
- return 0;
-}
-
-s8 sub_8084578(u8 taskId, struct Task *task, struct MapObject *trainerObj)
-{
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
- || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
- {
- FieldObjectSetSpecialAnim(trainerObj, 0x59);
- task->data[0]++;
- }
- return 0;
-}
-
-s8 sub_80845AC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
-{
- if ( FieldObjectClearAnimIfSpecialAnimFinished(trainerObj) )
- task->data[0] = 3;
-
- return 0;
-}
-
-s8 sub_80845C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
-{
- if (!FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(trainerObj)
- || FieldObjectClearAnimIfSpecialAnimFinished(trainerObj))
- {
- FieldObjectSetSpecialAnim(trainerObj, 0x3E);
- task->data[0]++;
- }
- return 0;
-}
-
-s8 sub_80845FC(u8 taskId, struct Task *task, struct MapObject *trainerObj)
-{
- if (FieldObjectCheckIfSpecialAnimFinishedOrInactive(trainerObj))
- {
- gUnknown_0202FF84[0] = trainerObj->coords2.x;
- gUnknown_0202FF84[1] = trainerObj->coords2.y;
- gUnknown_0202FF84[2] = gSprites[trainerObj->spriteId].subpriority - 1;
- gUnknown_0202FF84[3] = 2;
- task->data[4] = FieldEffectStart(49);
- task->data[0]++;
- }
- return 0;
-}
-
-s8 sub_8084654(u8 taskId, struct Task *task, struct MapObject *trainerObj)
-{
- struct Sprite *sprite;
-
- if (gSprites[task->data[4]].animCmdIndex == 2)
- {
- trainerObj->mapobj_bit_26 = 0;
- trainerObj->mapobj_bit_2 = 1;
-
- sprite = &gSprites[trainerObj->spriteId];
- sprite->oam.priority = 2;
- FieldObjectClearAnimIfSpecialAnimFinished(trainerObj);
- FieldObjectSetSpecialAnim(trainerObj, sub_806084C(trainerObj->mapobj_unk_18));
- task->data[0]++;
- }
- return 0;
-}
-
-s8 sub_80846C8(u8 taskId, struct Task *task, struct MapObject *trainerObj)
-{
- if (!FieldEffectActiveListContains(49))
- task->data[0] = 3;
-
- return 0;
-}
-
-void sub_80846E4(u8 taskId)
-{
- struct Task *task = &gTasks[taskId];
- struct MapObject *mapObj;
-
- // another mapObj loaded into by loadword?
- LoadWordFromTwoHalfwords(&task->data[1], (u32 *)&mapObj);
- if (!task->data[7])
- {
- FieldObjectClearAnim(mapObj);
- task->data[7]++;
- }
- gTrainerSeeFuncList2[task->data[0]](taskId, task, mapObj);
- if (task->data[0] == 3 && !FieldEffectActiveListContains(49))
- {
- npc_set_running_behaviour_etc(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18));
- sub_805C774(mapObj, npc_running_behaviour_by_direction(mapObj->mapobj_unk_18));
- DestroyTask(taskId);
- }
- else
- mapObj->mapobj_bit_7 = 0;
-}
-
-void sub_8084794(struct MapObject *var)
-{
- StoreWordInTwoHalfwords(&gTasks[CreateTask(sub_80846E4, 0)].data[1], (u32)var);
-}
-
-void sub_80847C8(void)
-{
- sub_80842FC(sub_80847D8);
-}
-
-void sub_80847D8(u8 taskId)
-{
- DestroyTask(taskId);
- EnableBothScriptContexts();
-}
-
-u8 FldEff_ExclamationMarkIcon1(void)
-{
- u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x53);
-
- if (spriteId != 64)
- sub_8084894(&gSprites[spriteId], 0, 0);
-
- return 0;
-}
-
-u8 FldEff_ExclamationMarkIcon2(void)
-{
- u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x52);
-
- if (spriteId != 64)
- sub_8084894(&gSprites[spriteId], 33, 1);
-
- return 0;
-}
-
-u8 FldEff_HeartIcon(void)
-{
- u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B528, 0, 0, 0x52);
-
- if (spriteId != 64)
- sub_8084894(&gSprites[spriteId], 46, 0);
-
- return 0;
-}
-
-void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3)
-{
- sprite->oam.priority = 1;
- sprite->coordOffsetEnabled = 1;
-
- sprite->data0 = gUnknown_0202FF84[0];
- sprite->data1 = gUnknown_0202FF84[1];
- sprite->data2 = gUnknown_0202FF84[2];
- sprite->data3 = -5;
- sprite->data7 = a2;
-
- StartSpriteAnim(sprite, a3);
-}
-
-void objc_exclamation_mark_probably(struct Sprite *sprite)
-{
- u8 mapObjId;
-
- if (TryGetFieldObjectIdByLocalIdAndMap(sprite->data0, sprite->data1, sprite->data2, &mapObjId)
- || sprite->animEnded)
- {
- FieldEffectStop(sprite, (u8)sprite->data7);
- }
- else
- {
- struct Sprite *mapObjSprite = &gSprites[gMapObjects[mapObjId].spriteId];
- sprite->data4 += sprite->data3;
- sprite->pos1.x = mapObjSprite->pos1.x;
- sprite->pos1.y = mapObjSprite->pos1.y - 16;
- sprite->pos2.x = mapObjSprite->pos2.x;
- sprite->pos2.y = mapObjSprite->pos2.y + sprite->data4;
- if (sprite->data4)
- sprite->data3++;
- else
- sprite->data3 = 0;
- }
-}
diff --git a/src/unknown_task.c b/src/unknown_task.c
index 81b89ef92..5ec7fa6bc 100644
--- a/src/unknown_task.c
+++ b/src/unknown_task.c
@@ -2,11 +2,12 @@
#include "data2.h"
#include "task.h"
#include "trig.h"
+#include "unknown_task.h"
struct UnknownStruct1
{
void *src[2];
- void *dest;
+ volatile void *dest;
u32 unkC;
void (*unk10)(void);
u8 srcBank;
@@ -17,14 +18,6 @@ struct UnknownStruct1
u8 filler19[0x7];
};
-struct UnknownStruct2
-{
- void *dest;
- u32 control;
- u8 unk8;
- u8 unk9;
-};
-
static void sub_80896F4(void);
static void sub_8089714(void);
@@ -68,7 +61,7 @@ void dp12_8087EA4(void)
gUnknown_03004DC0.taskId = 0xFF;
}
-void sub_80895F8(struct UnknownStruct2 unk)
+void sub_80895F8(struct UnknownTaskStruct unk)
{
if (unk.control == (((DMA_ENABLE | DMA_START_HBLANK | DMA_REPEAT | DMA_DEST_RELOAD) << 16) | 1))
{
@@ -214,7 +207,7 @@ u8 sub_8089944(u8 a1, u8 a2, u8 a3, u8 a4, u8 a5, u8 a6, u8 a7)
{
int i;
int offset;
- struct UnknownStruct2 unk;
+ struct UnknownTaskStruct unk;
u8 taskId;
dp12_8087EA4();
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)
diff --git a/sym_bss.txt b/sym_bss.txt
index a6eaeefe1..4f6d9c95b 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -1,138 +1,41 @@
- .include "src/main.o"
- .include "src/sprite.o"
- .include "src/text.o"
- .include "src/string_util.o"
- .include "src/link.o"
- .include "src/rtc.o"
-
-@ daycare
-
- .align 2
-gUnknown_03000470: @ 3000470
- .space 0x68
-
-gUnknown_030004D8: @ 30004D8
- .space 0x8
-
-gUnknown_030004E0: @ 30004E0
- .space 0x8
-
-gUnknown_030004E8: @ 30004E8
- .space 0x18
-
-gUnknown_03000500: @ 3000500
- .space 0x8
-
-@ trade
-
-gUnknown_03000508: @ 3000508
- .space 0x8
-
-@ berry_blender
-
-gUnknown_03000510: @ 3000510
- .space 0x10
-
-gUnknown_03000520: @ 3000520
- .space 0xC
-
-gUnknown_0300052C: @ 300052C
- .space 0x2
-
-gUnknown_0300052E: @ 300052E
- .space 0x2
-
-gUnknown_03000530: @ 3000530
- .space 0x18
-
-gUnknown_03000548: @ 3000548
- .space 0x14
-
-gUnknown_0300055C: @ 300055C
- .space 0x4
-
-gUnknown_03000560: @ 3000560
- .space 0x1C
-
- .include "src/play_time.o"
- .include "src/rom4.o"
-
- @ unused variable?
- .align 2
- .space 0x4
-
- .include "src/field_camera.o"
- .include "src/field_map_obj.o"
- .include "src/field_message_box.o"
- .include "src/text_window.o"
- .include "src/script.o"
- .include "src/start_menu.o"
- .include "src/menu.o"
- .include "src/tileset_anim.o"
- .include "src/sound.o"
-
-@ field_weather
-
-gUnknown_030006DC: @ 30006DC
- .space 0x4
-
- .include "src/field_effect.o"
- .include "src/item_menu.o"
-
-@ shop
-
-gUnknown_03000708: @ 3000708
- .space 0x10
-
- .include "src/record_mixing.o"
- .include "src/tv.o"
-
- @ unused variable?
- .align 2
- .space 0x4
-
-@ battle_anim_80CA710
-
-gUnknown_03000728: @ 3000728
- .space 0x8
-
-gUnknown_03000730: @ 3000730
- .space 0x10
-
-@ easy_chat
-
-gUnknown_03000740: @ 3000740
- .space 0x4
-
-@ pokenav
-
-gUnknown_03000744: @ 3000744
- .space 0x4
-
-@ mauville_old_man
-
-gUnknown_03000748: @ 3000748
- .space 0x4
-
- .include "src/menu_helpers.o"
- .include "src/contest_painting.o"
- .include "src/pokeblock.o"
-
- @ unused variable?
- .align 2
- .space 0x4
-
- .include "src/field_specials.o"
-
-@ learn_move
-
- .align 2
-gUnknown_030007B0: @ 30007B0
- .space 0x4
-
- .include "src/player_pc.o"
+ .include "src/engine/main.o"
+ .include "src/engine/sprite.o"
+ .include "src/engine/text.o"
+ .include "src/engine/string_util.o"
+ .include "src/engine/link.o"
+ .include "src/engine/rtc.o"
+ .include "src/field/daycare.o"
+ .include "src/engine/trade.o"
+ .include "src/scene/berry_blender.o"
+ .include "src/engine/play_time.o"
+ .include "src/field/overworld.o"
+ .include "src/field/field_camera.o"
+ .include "src/field/field_map_obj.o"
+ .include "src/field/field_message_box.o"
+ .include "src/engine/text_window.o"
+ .include "src/engine/script.o"
+ .include "src/field/start_menu.o"
+ .include "src/engine/menu.o"
+ .include "src/engine/tileset_anim.o"
+ .include "src/engine/sound.o"
+ .include "src/field/field_weather.o"
+ .include "src/field/field_effect.o"
+ .include "src/field/item_menu.o"
+ .include "src/field/shop.o"
+ .include "src/engine/record_mixing.o"
+ .include "src/field/tv.o"
+ .include "src/battle/battle_anim_80CA710.o"
+ .include "src/field/easy_chat.o"
+ .include "src/field/pokenav.o"
+ .include "src/field/mauville_man.o"
+ .include "src/field/menu_helpers.o"
+ .include "src/scene/contest_painting.o"
+ .include "src/field/pokeblock.o"
+ .include "src/field/field_specials.o"
+ .include "src/pokemon/learn_move.o"
+ .include "src/field/player_pc.o"
.include "asm/m4a_1.o"
- .include "src/agb_flash.o"
- .include "src/siirtc.o"
+ .include "src/libs/agb_flash.o"
+ .include "src/libs/siirtc.o"
.include "tools/agbcc/lib/libgcc.a:dp-bit.o"
.include "tools/agbcc/lib/libgcc.a:fp-bit.o"
diff --git a/sym_common.txt b/sym_common.txt
index fc729a587..b1d99f58b 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -1,8 +1,8 @@
- .include "main.o"
- .include "sprite.o"
- .include "string_util.o"
- .include "link.o"
- .include "rtc.o"
+ .include "engine/main.o"
+ .include "engine/sprite.o"
+ .include "engine/string_util.o"
+ .include "engine/link.o"
+ .include "engine/rtc.o"
.include "rom3.o"
@ battle
@@ -104,16 +104,10 @@ gUnknown_03004348: @ 3004348
gUnknown_0300434C: @ 300434C
.space 0x4
- .include "pokemon_1.o"
- .include "rng.o"
-
-@ egg_hatch
-
- .align 2
-gUnknown_0300481C: @ 300481C
- .space 0x4
-
- .include "load_save.o"
+ .include "pokemon/pokemon_1.o"
+ .include "engine/rng.o"
+ .include "scene/egg_hatch.o"
+ .include "engine/load_save.o"
@ trade
@@ -123,25 +117,12 @@ gUnknown_03004824: @ 3004824
gUnknown_03004828: @ 3004828
.space 0x8
-@ berry_blender
-
-gUnknown_03004830: @ 3004830
- .space 0x4
-
-gUnknown_03004834: @ 3004834
- .space 0xC
-
-gUnknown_03004840: @ 3004840
- .space 0x14
-
-gUnknown_03004854: @ 3004854
- .space 0x4
-
- .include "rom4.o"
- .include "fieldmap.o"
- .include "field_camera.o"
- .include "field_map_obj.o"
- .include "field_control_avatar.o"
+ .include "scene/berry_blender.o"
+ .include "field/overworld.o"
+ .include "field/fieldmap.o"
+ .include "field/field_camera.o"
+ .include "field/field_map_obj.o"
+ .include "field/field_control_avatar.o"
@ party_menu?
@@ -149,11 +130,11 @@ gUnknown_03004854: @ 3004854
gUnknown_03004AE4: @ 3004AE4
.space 0x4
- .include "start_menu.o"
- .include "sound.o"
- .include "battle_anim.o"
- .include "task.o"
- .include "mori_debug_menu.o"
+ .include "field/start_menu.o"
+ .include "engine/sound.o"
+ .include "battle/battle_anim.o"
+ .include "engine/task.o"
+ .include "debug/mori_debug_menu.o"
@ unknown_task
@@ -179,15 +160,8 @@ gUnknown_03005560: @ 3005560
gUnknown_030056A0: @ 30056A0
.space 0x640
-@ pokemon_menu
-
-gLastFieldPokeMenuOpened: @ 3005CE0
- .space 0x4
-
-gUnknown_03005CE4: @ 3005CE4
- .space 0x4
-
- .include "pokedex.o"
+ .include "pokemon/pokemon_menu.o"
+ .include "pokemon/pokedex.o"
@ pokemon_summary_screen
@@ -198,7 +172,7 @@ gUnknown_03005CF0: @ 3005CF0
@ item_menu
.align 4
-gUnknown_03005D00: @ 3005D00
+gFieldItemUseCallback: @ 3005D00
.space 0x10
gBagPocketScrollStates: @ 3005D10
@@ -213,14 +187,9 @@ gCurrentBagPocketItemSlots: @ 3005D24
gUnknown_03005D28: @ 3005D28
.space 0x4
- .include "record_mixing.o"
- .include "sound_check_menu.o"
-
- .align 2
-gUnknown_03005D34: @ 3005D34
- .space 0x4
-
- .include "tv.o"
+ .include "engine/record_mixing.o"
+ .include "debug/sound_check_menu.o"
+ .include "field/tv.o"
.space 0x64 @ unused variable?
@@ -262,24 +231,19 @@ gUnknown_03005E08: @ 3005E08
gUnknown_03005E0C: @ 3005E0C
.space 0x4
- .include "contest_painting.o"
-
-@ evolution_scene
-
- .align 2
-gUnknown_03005E94: @ 3005E94
- .space 0x4
+ .include "scene/contest_painting.o"
+ .include "scene/evolution_scene.o"
@ pokedex_cry_screen
gUnknown_03005E98: @ 3005E98
.space 0x4
- .include "save.o"
+ .include "engine/save.o"
.space 0x10 @ unused variable?
- .include "intro.o"
+ .include "scene/intro.o"
@ battle_anim_813F0F4
@@ -293,40 +257,6 @@ gUnknown_03005F10: @ 3005F10
gUnknown_03005F14: @ 3005F14
.space 0xC
-@ pokeblock_feed
-
-gUnknown_03005F20: @ 3005F20
- .space 0x4
-
-gUnknown_03005F24: @ 3005F24
- .space 0x4
-
-gUnknown_03005F28: @ 3005F28
- .space 0x4
-
-gUnknown_03005F2C: @ 3005F2C
- .space 0x4
-
-gUnknown_03005F30: @ 3005F30
- .space 0x4
-
-gUnknown_03005F34: @ 3005F34
- .space 0x8
-
-gUnknown_03005F3C: @ 3005F3C
- .space 0x4
-
-gUnknown_03005F40: @ 3005F40
- .space 0x10
-
-gUnknown_03005F50: @ 3005F50
- .space 0x44
-
-gUnknown_03005F94: @ 3005F94
- .space 0xC
-
-gUnknown_03005FA0: @ 3005FA0
- .space 0x30
-
- .include "m4a_2.o"
- .include "agb_flash.o"
+ .include "pokemon/pokeblock_feed.o"
+ .include "libs/m4a_2.o"
+ .include "libs/agb_flash.o"
diff --git a/sym_ewram.txt b/sym_ewram.txt
index ecf74b07c..8289165e9 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1,11 +1,11 @@
- .include "src/main.o"
- .include "src/sprite.o"
- .include "src/text.o"
- .include "src/string_util.o"
+ .include "src/engine/main.o"
+ .include "src/engine/sprite.o"
+ .include "src/engine/text.o"
+ .include "src/engine/string_util.o"
.space 0x2E8
- .include "src/link.o"
+ .include "src/engine/link.o"
.include "src/rom3.o"
@ battle
@@ -113,7 +113,7 @@ gCurrentMove: @ 2024BE6
gUnknown_02024BE8: @ 2024BE8
.space 0x2
-gUnknown_02024BEA: @ 2024BEA
+gRandomMove: @ 2024BEA
.space 0x2
gBattleMoveDamage: @ 2024BEC
@@ -287,15 +287,15 @@ gPID_perBank: @ 2024E70
gBattleMovePower: @ 2024E80
.space 0x2
-word_2024E82: @ 2024E82
+gMoveToLearn: @ 2024E82
.space 0x2
gBattleMonForms: @ 2024E84
.space 0x4
- .include "src/pokemon_1.o"
- .include "src/pokemon_2.o"
- .include "src/load_save.o"
+ .include "src/pokemon/pokemon_1.o"
+ .include "src/pokemon/pokemon_2.o"
+ .include "src/engine/load_save.o"
@ trade
@@ -308,30 +308,17 @@ gUnknown_02029700: @ 2029700
gUnknown_020297D8: @ 20297D8
.space 0x4
-@ berry_blender
-
-gUnknown_020297DC: @ 20297DC
- .space 0x4
-
-gUnknown_020297E0: @ 20297E0
- .space 0x4
-
-gUnknown_020297E4: @ 20297E4
- .space 0x4
-
-gUnknown_020297E8: @ 20297E8
- .space 0x4
-
- .include "src/new_game.o"
- .include "src/rom4.o"
- .include "src/fieldmap.o"
- .include "src/field_camera.o"
- .include "src/field_player_avatar.o"
- .include "src/field_message_box.o"
- .include "src/script.o"
- .include "src/scrcmd.o"
- .include "src/field_control_avatar.o"
- .include "src/event_data.o"
+ .include "src/scene/berry_blender.o"
+ .include "src/scene/new_game.o"
+ .include "src/field/overworld.o"
+ .include "src/field/fieldmap.o"
+ .include "src/field/field_camera.o"
+ .include "src/field/field_player_avatar.o"
+ .include "src/field/field_message_box.o"
+ .include "src/engine/script.o"
+ .include "src/field/scrcmd.o"
+ .include "src/field/field_control_avatar.o"
+ .include "src/field/event_data.o"
@ party_menu
@@ -351,14 +338,14 @@ gUnknown_0202E8F8: @ 202E8F8
gUnknown_0202E8FA: @ 202E8FA
.space 0x2
- .include "src/start_menu.o"
- .include "src/menu.o"
- .include "src/tileset_anim.o"
- .include "src/palette.o"
- .include "src/sound.o"
- .include "src/battle_anim.o"
+ .include "src/field/start_menu.o"
+ .include "src/engine/menu.o"
+ .include "src/engine/tileset_anim.o"
+ .include "src/engine/palette.o"
+ .include "src/engine/sound.o"
+ .include "src/battle/battle_anim.o"
.include "src/rom_8077ABC.o"
- .include "src/title_screen.o"
+ .include "src/scene/title_screen.o"
@ field_weather
@@ -378,29 +365,19 @@ gUnknown_0202FF38: @ 202FF38
gUnknown_0202FF58: @ 202FF58
.space 0x4
- .include "src/battle_setup.o"
- .include "src/wild_encounter.o"
- .include "src/field_effect.o"
+ .include "src/battle/battle_setup.o"
+ .include "src/field/wild_encounter.o"
+ .include "src/field/field_effect.o"
@ unknown_task
gUnknown_0202FFA4: @ 202FFA4
.space 0x4
-@ pokemon_menu
-
-gUnknown_0202FFA8: @ 202FFA8
- .space 0x1
-
-gUnknown_0202FFA9: @ 202FFA9
- .space 0x1
-
-gUnknown_0202FFAA: @ 202FFAA
- .space 0xA
-
- .include "src/pokedex.o"
- .include "src/trainer_card.o"
- .include "src/pokemon_storage_system.o"
+ .include "src/pokemon/pokemon_menu.o"
+ .include "src/pokemon/pokedex.o"
+ .include "src/engine/trainer_card.o"
+ .include "src/pokemon/pokemon_storage_system.o"
@ still pokemon_storage_system
@@ -464,9 +441,9 @@ gUnknown_020384F0: @ 20384F0
gUnknown_020384F4: @ 20384F4
.space 0x4
- .include "src/script_movement.o"
- .include "src/map_name_popup.o"
- .include "src/item_menu.o"
+ .include "src/field/script_movement.o"
+ .include "src/field/map_name_popup.o"
+ .include "src/field/item_menu.o"
@ contest
@@ -523,30 +500,8 @@ gScriptContestCategory: @ 203869C
gScriptContestRank: @ 203869E
.space 0x2
-@ shop
-
-gUnknown_020386A0: @ 20386A0
- .space 0x4
-
-gUnknown_020386A4: @ 20386A4
- .space 0x4
-
-gUnknown_020386A8: @ 20386A8
- .space 0x2
-
-gUnknown_020386AA: @ 20386AA
- .space 0x7A
-
-gUnknown_02038724: @ 2038724
- .space 0xC
-
-gUnknown_02038730: @ 2038730
- .space 0x1
-
-gUnknown_02038731: @ 2038731
- .space 0x3
-
- .include "src/money.o"
+ .include "src/field/shop.o"
+ .include "src/field/money.o"
@ record_mixing
@@ -554,7 +509,7 @@ gUnknown_02038731: @ 2038731
gUnknown_02038738: @ 2038738
.space 0x78
- .include "src/sound_check_menu.o"
+ .include "src/debug/sound_check_menu.o"
@ secret_base
@@ -564,7 +519,7 @@ gUnknown_020387DC: @ 20387DC
@ tv
- .include "src/tv.o"
+ .include "src/field/tv.o"
@ fldeff_80C5CD4
@@ -572,8 +527,8 @@ gUnknown_020387DC: @ 20387DC
gUnknown_020387EC: @ 20387EC
.space 0x4
- .include "src/rotating_gate.o"
- .include "src/safari_zone.o"
+ .include "src/field/rotating_gate.o"
+ .include "src/field/safari_zone.o"
@ easy_chat
@@ -588,21 +543,15 @@ gUnknown_020388B0: @ 20388B0
gUnknown_020388B4: @ 20388B4
.space 0x4
- .include "src/mon_markings.o"
-
-@ mauville_old_man
-
- .align 2
-gUnknown_020388BC: @ 20388BC
- .space 0x4
-
- .include "src/menu_helpers.o"
- .include "src/region_map.o"
- .include "src/decoration.o"
- .include "src/battle_ai.o"
+ .include "src/pokemon/mon_markings.o"
+ .include "src/field/mauville_man.o"
+ .include "src/field/menu_helpers.o"
+ .include "src/field/region_map.o"
+ .include "src/field/decoration.o"
+ .include "src/battle/battle_ai.o"
.include "src/rom6.o"
- .include "src/pokeblock.o"
- .include "src/field_specials.o"
+ .include "src/field/pokeblock.o"
+ .include "src/field/field_specials.o"
@ pokedex_area_screen
@@ -630,7 +579,7 @@ gUnknown_0203926A: @ 203926A
gAbilitiesPerBank: @ 203926C
.space 0x4
- .include "src/choose_party.o"
+ .include "src/field/choose_party.o"
@ cable_car
@@ -656,30 +605,19 @@ gUnknown_0203927C: @ 203927C
gUnknown_0203927D: @ 203927D
.space 0x7
- .include "src/save.o"
- .include "src/mystery_event_script.o"
- .include "src/roamer.o"
- .include "src/use_pokeblock.o"
- .include "src/player_pc.o"
- .include "src/intro.o"
-
-@ hall_of_fame
-
- .align 2
-gUnknown_0203931C: @ 203931C
- .space 0x4
-
- .include "src/credits.o"
- .include "src/lottery_corner.o"
- .include "src/berry_tag_screen.o"
- .include "src/mystery_event_menu.o"
- .include "src/save_failed_screen.o"
-
-@ pokeblock_feed
-
- .align 2
-gUnknown_02039350: @ 2039350
- .space 0x8
+ .include "src/engine/save.o"
+ .include "src/engine/mystery_event_script.o"
+ .include "src/field/roamer.o"
+ .include "src/field/use_pokeblock.o"
+ .include "src/field/player_pc.o"
+ .include "src/scene/intro.o"
+ .include "src/scene/hall_of_fame.o"
+ .include "src/scene/credits.o"
+ .include "src/field/lottery_corner.o"
+ .include "src/field/berry_tag_screen.o"
+ .include "src/engine/mystery_event_menu.o"
+ .include "src/engine/save_failed_screen.o"
+ .include "src/pokemon/pokeblock_feed.o"
@ intro_credits_graphics
@@ -706,4 +644,4 @@ gUnknown_02039760: @ 2039760
gUnknown_0203A360: @ 203A360
.space 0x20
- .include "src/menu_cursor.o"
+ .include "src/engine/menu_cursor.o"
diff --git a/tools/scaninc/asm_file.cpp b/tools/scaninc/asm_file.cpp
index c3d140bb1..6322749e2 100644
--- a/tools/scaninc/asm_file.cpp
+++ b/tools/scaninc/asm_file.cpp
@@ -137,7 +137,7 @@ std::string AsmFile::ReadPath()
FATAL_INPUT_ERROR("path is too long");
}
- return std::string(m_buffer, startPos, length);
+ return std::string(m_buffer + startPos, length);
}
void AsmFile::SkipEndOfLineComment()